スキップしてメイン コンテンツに移動

最新の投稿

第4次スーパーロボット大戦 BGM追加 「ジョジョの奇妙な冒険~激闘~」

 コブラジョジョことSFC版ジョジョの奇妙な冒険といえばコブラチームが世に送り出した事で有名ですが、ゲームデザインとシナリオに関してはコブラチーム(バンダイ)が、実際のゲーム制作に関してはウィンキーソフトが担当していますので当然サウンドドライバはいつものウィンキーソフト仕様となっています。今回はジョジョのサウンドドライバやサンプリングデータなどの解析がてらDIOの館のテレンス・ダービー戦以降のスタンド使いとの戦闘で使われている中ボス用BGM「激闘」をコンバートしてみました。解析内容に関しては時期的な事もあってかヒーロー戦記のサウンドドライバと同一の仕様で各種データや展開先などの管理方法も同しなのですが、ROM内のデータ収納先は全然違う位置でした。ジョジョの場合は無圧縮のグラフィックデータがROMの後ろ側に大量に入れてありますので、その関係かもしれません。  さて、「激闘」にはギター系のサンプリングデータが大量に使われているのですが、例によって第4次側にジョジョ側のサンプリングデータに似たものがあまりなかった事とサンプリングデータの組み合わせ次第ではバッファオーバーフローを起こしてフリーズしたり戦闘中にSEがうまく再生されなかったりするのでかなりアレンジする羽目になってしまいました。ゲスト系のボスクラスBGMとして使ってみると面白いかなと思ったのですが、実際に使ってみると何だかイマイチな気がしなくもありません。  ちなみにこのデータを作成後にもう一度解析を行ったところ、ジョジョに関してはいくつかのサンプリングデータでヘッダやサンプリングデータの一部の記述を工夫すれば第4次でも使える事が判明しました。ひょっとするとジョジョやヒーロー戦記のサンプリングデータはヘッダの仕組みを理解すれば原則として全て第4次で使えるのかもしれません。そうなるとBGMデータのコンバートがかなり楽になるのですが、それはまだ先の話になりそうです。

レナス〜古代機械の記憶〜(Paladin's Quest) 続・戦闘中の気絶状態からの復帰処理追加の計画

 レナスにおけるステータス異常の管理方法ですが、少々複雑な手法を採用していたので調べるのに手こずってしまいました。まず、移動中はRAMの7E160E(キャラごとに+26h)で状態変化を管理しており、戦闘中になるとここを使用せず今度は7E1A8D(キャラごとに+0Eh)で状態変化を管理(戦闘に遷移する際に7E160Eの内容をコピー)します。特に状態異常がない場合は00になっており、キャラクターの現在HPが0になると気絶状態化処理を行いここに01を書き込むのですが、ではこの箇所に00を書き込めば気絶状態から復帰できるのかというと実際にはそうはなりません。混乱や麻痺などの状態異常はこの方法で回復できる(=ダデケスやクリアボトルによる状態回復処理)のですが、仮に気絶状態のキャラの7E1A8Dに00を書き込んだ場合、確かに一瞬だけ気絶から復帰しますがそのまま再び気絶(HPを回復したり現在HPのRAMを書き換えたとしても駄目です)してしまいます。

 これはどういう事かというと、「7E1A8Dと一緒にキャラクターが気絶状態になった事を管理するRAM領域がある」という事を示しており、そこを7E1A8Dと同時に書き換えない限り気絶から復帰できないという事です。具体的にはRAMの7E19EDという箇所で気絶したキャラクターの有無を管理しており、ここをキャラクターが戦線復帰する際に任意の数値に変更する必要があるのです。この部分には戦闘開始時には0Fが入力されており、万が一キャラクターがエネミーに倒されて気絶=戦線離脱した場合は隊列の1人目…01、2人目…02、3人目…04、4人目…08をマイナスして計算しています。そして全員が気絶すると00になり、全滅処理が行われゲームオーバーになるという仕組みになっています。つまり気絶状態になったキャラを復帰させるには、「7E1A8Dに00を書き込む」と同時に「7E19EDに復帰キャラの隊列位置のコードをプラスする」という処理が必要というわけです。意外と面倒な処理を行っていますね。ちなみにHPが0の状態で双方のフラグ処理だけを行う(というかHP回復よりも先にフラグ処理を行う)と、その時点で即座に気絶判定が行われてその場でまた気絶してしまいますので、先にHPの回復処理を行ってからフラグ処理を実行するという変な一手間が必要です。なお、戦闘が終了すると7E1A8Dの内容は麻痺の場合のみが7E160Eにコピーされ、7E19EDの内容はリセットされます。

 さて、こうなると処理的にはダデスやダデケス、クリアボトルによる気絶回復よりもHP回復アイテムで処理する方がはるかに楽なように思えます。単純な方法としては「HP回復アイテム使用時に現在HPをチェック→現在HPが0であればHPを回復しつつ7E1A8Dに00を書き込み」、ついでに「回復したキャラの隊列順位に該当する数値を7E19EDにプラスして戦線離脱処理を解除する」という処理を行えばいいというものが実現性が高そうです。例によってRAMを拡張して新たな処理を組み込む事になりそうですが、それほど時間はかからないのではないでしょうか。

コメント

人気の投稿

第4次スーパーロボット大戦 BGM追加 「バトルロボット烈伝~通常バトル~」&未使用機体グラフィック ヤクト・ドーガ(緑)

第4次スーパーロボット大戦 未使用BGM「THE LAST JUDGEMENT」の不具合修正パッチを公開しました