>>872
逆アセンブルすることを前提として
Before、Mission、Afterで使えるsyscall関数のアドレスは0x001B2070から並んでます
(0x001B2070+((syscall1の値)&0x7F)*4)にそのsyscall関数のアドレスが入ってます
このsyscall関数はラッパー関数のようなもので、関数内でさらにsyscall1の値を比較し、実際の関数を呼び出しています

例えばAddEnemyの場合は(0x001B2070+(1500&0x7F)*4)=0x001B21E0
0x001B21E0には0x0899D470が格納されているので、それを0x08800000引いて0x0019D470
0x0019D470ではsyscall1の値比較が省略されているので、すぐ下のjalで呼び出している関数が実際のアドレスです
jalの上にあるlwやlwc1が引数です

// 敵を単体追加 アドレス0x000D62B8 $a1=pos $a2=dir $3=pathVob $f12=power $t0=active
int AddEnemy(char *pos,char *dir,char *pathVob,float power,bool active){
 int objectIndex=clGameSystem::CreateSystemObject(pos,dir,pathVob);
 clKksBaseObject *object=clGameSystem::GetObject(objectIndex);
 if(object){
  object->SetPower(power);
  object->sub_121118(1);//オートコントロールフラグの設定?
  object->AddToTeam(1);
  short teamID=object->GetTeamID();
  object->m_E8=sub_11E5F0(teamID);//不明
  unsigned char *resource=object->resource;//ここからVobファイル先頭のClassIDを取得しているが使われていない。デバッグ用の残骸かも
  char classID[9];
  *(unsigned int *)&classID[0]=*(unsigned int *)&resource[0];
  *(unsigned int *)&classID[4]=*(unsigned int *)&resource[4];
  classID[8]=0;
  if(active==1)sub_605F8(*(unsigned int *)0x1BDEB0,object);//アクティブ化
 }
 return objectIndex;
}

// 敵を円状に複数追加 アドレス0x000D63A8 $a1=pos $f12=range $a2=pathVob $f13=power $a3=count $t0=active
void AddEnemyCircle(char *pos,float range,char *pathVob,float power,int count,bool active){
 //※長いので省略
 //天井のないマップ用のアルゴリズムだと思う
}

// 敵を箱状に複数追加 アドレス0x000D6874 $a1=pos $f12=rangeX $f13=rangeY $f14=rangeZ $a2=pathVob $f15=power $a3=count $t0=active
void AddEnemyBox(char *pos,float rangeX,float rangeY,float rangeZ,char *pathVob,float power,int count,bool active){
 //※長いので省略
}

// 敵を球状に複数追加 アドレス0x000D6CF8 $a1=pos $f12=range $a2=pathVob $f13=power $a3=count $t0=active
void AddEnemyCave(char *pos,float range,char *pathVob,float power,int count,bool active){
 //※長いので省略
 //洞窟などの天井のあるマップ用のアルゴリズムだと思う
}

// 敵を連結して複数追加 アドレス0x000D711C $a1=pos $a2=dir $3=pathVob $t0=count $f12=power $t1=active
int AddEnemyCentipede(char *pos,char *dir,char *pathVob,int count,float power,bool active){
 //※長いので省略
 //戻り値は先頭オブジェクトのobjectIndex
}