第4次スーパーロボット大戦ではコン・バトラーVダンクーガ、ザンボット3といった合体後に複数パイロットが乗るようになる機体のサブパイロットの台詞を反映させる機能はありませんが、以前作成したゲッターチームの仕様変更のシステムを応用すれば「F」以降のコン・バトラーVのように合体後専用の特殊台詞を反映させる事が可能であると判明しました。 具体的な手法は「特定のパイロットが特定の機体に搭乗している場合はSRAM上のパイロットIDを保持したままRAM上のパイロットIDを入れ替える」というもので、これは以前にも少し触れたハイパーモードや暴走システムの手法と同じものですが、これを応用すれば、例えばバトルジェット搭乗時の豹馬とコン・バトラーV搭乗時の豹馬のパイロットIDを個別に用意する事で異なる台詞パターンを適用できるという事も可能になります。また、同時に複数精神コマンドのサブパイロット適用パターンも変更できるため、非分離型のコン・バトラーVを用意するといった必要もなくなります。但しこの方法には欠点もあり、例えば敗北条件に豹馬の撃墜が設定されている場合にこのパイロットIDが合体前と合体後で別々であると、パイロットIDが合致しなくなってしまった途端に敗北条件を満たしてゲームオーバーとなってしまいます(これはハイパーモードや暴走の再現時にも当てはまる問題です)。そのため、台詞の変更のみに留めるのであれば特殊サブルーチンを組んで特定のパイロットが特定の機体に搭乗している場合は台詞の参照IDを変更(例えば、豹馬がコン・バトラーV搭乗の場合は通常の台詞IDではなく専用の台詞IDを参照)するという手法の方がいいのかもしれません。もっとも、シナリオ上での敗北条件を設定する際にそれら両方のパイロットIDを全て確認できなかった場合にのみ敗北とすれば問題はないので、あくまで好みの問題とも言えそうです。
突然ですが、友人から「変形や合体するユニットに関する質問と解析の依頼が来ているので代わりに解析して解説記事を書いて欲しい」という話がありましたので、今回はその内容を取り上げてみます。 まずは変形ユニットから。友人の資料の記述方式に従って解説します。MAP上でユニットの変形設定を制御しているのは以下のサブルーチン(A057~A099)です。 00A057 BD 65 18 LDA $1865,X ユニットID取得 00A05A 29 FF 01 AND #$01FF 絞り込み:最大値を01FFとする 00A05D 64 2A STZ $2A M=7E002Aをゼロにする 00A05F 85 2C STA $2C AをM=7E002Cに書き込み 00A061 85 2E STA $2E AをM=7E002Eに書き込み 00A063 A0 07 00 LDY #$0007 ユニット定義の7番目(=変形設定)を取得 00A066 22 72 B3 80 JSL $80B372 $00B372 サブルーチン00B372を呼び出し 00A06A E2 20 SEP #$20 8bit化 00A06C 29 7F AND #$7F 絞り込み:最大値を7Fとする 00A06E F0 26 BEQ $26 $00A096 YESならばジャンプ 00A070 C9 08 CMP #$08 変形パターンチェック:08? 00A072 F0 26 BEQ $26 $00A09A YESならばジャンプ 00A074 C9 09 CMP #$09 変形パターンチェック:09? 00A076 F0 28 BEQ $28 $00A0A0 YESならばジャンプ...