コブラジョジョことSFC版ジョジョの奇妙な冒険といえばコブラチームが世に送り出した事で有名ですが、ゲームデザインとシナリオに関してはコブラチーム(バンダイ)が、実際のゲーム制作に関してはウィンキーソフトが担当していますので当然サウンドドライバはいつものウィンキーソフト仕様となっています。今回はジョジョのサウンドドライバやサンプリングデータなどの解析がてらDIOの館のテレンス・ダービー戦以降のスタンド使いとの戦闘で使われている中ボス用BGM「激闘」をコンバートしてみました。解析内容に関しては時期的な事もあってかヒーロー戦記のサウンドドライバと同一の仕様で各種データや展開先などの管理方法も同しなのですが、ROM内のデータ収納先は全然違う位置でした。ジョジョの場合は無圧縮のグラフィックデータがROMの後ろ側に大量に入れてありますので、その関係かもしれません。 さて、「激闘」にはギター系のサンプリングデータが大量に使われているのですが、例によって第4次側にジョジョ側のサンプリングデータに似たものがあまりなかった事とサンプリングデータの組み合わせ次第ではバッファオーバーフローを起こしてフリーズしたり戦闘中にSEがうまく再生されなかったりするのでかなりアレンジする羽目になってしまいました。ゲスト系のボスクラスBGMとして使ってみると面白いかなと思ったのですが、実際に使ってみると何だかイマイチな気がしなくもありません。 ちなみにこのデータを作成後にもう一度解析を行ったところ、ジョジョに関してはいくつかのサンプリングデータでヘッダやサンプリングデータの一部の記述を工夫すれば第4次でも使える事が判明しました。ひょっとするとジョジョやヒーロー戦記のサンプリングデータはヘッダの仕組みを理解すれば原則として全て第4次で使えるのかもしれません。そうなるとBGMデータのコンバートがかなり楽になるのですが、それはまだ先の話になりそうです。
突然ですが、友人から「変形や合体するユニットに関する質問と解析の依頼が来ているので代わりに解析して解説記事を書いて欲しい」という話がありましたので、今回はその内容を取り上げてみます。 まずは変形ユニットから。友人の資料の記述方法に従って解説します。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ならばジャンプ 00A078 C9 28 CMP #$28 変形パターンチェック:28? 00A07A F0 1E BEQ $1E $00A09A YESならばジャンプ 00A07C C9 29 CMP #$29 変形パター