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

最新の投稿

第4次スーパーロボット大戦 戦闘アニメーション数拡張パッチの作成計画

 ご無沙汰しております。リアルの生活でかなり忙しい日々が続いており、なかなか各種コンテンツの更新ができず申し訳ございません。正直なところ新たなメンバーを迎えて様々なソフトの解析やパッチ作成などを充実させていきたいのですが、そういう訳にもいかないのが現状です。  さて、本題に入ります。第4次スーパーロボット大戦の戦闘アニメーションは本来512種類、予備のオフセット絶対値を使用すれば最大で1,024種類まで作成できるのですが、恐らくROM容量の関係で本来のオフセット領域にまで戦闘アニメーションのデータを書き込んでしまっています。このため、私は戦闘アニメーションのデータそのものを拡張したROMの空き領域に移して仕様変更しています。また、戦闘アニメーションで使用するSEに必要な波形データ設定のオフセットテーブルも拡張して512種類まで設定できるようにしていますが、これを1,024種類に拡張するにはプログラムそのものを書き換える必要があります。これを書き替えなかった場合、513番目の戦闘アニメーションには1番目の戦闘アニメーションの波形データが、514番目に戦闘アニメーションには2番目の戦闘アニメーションの波形データが…というように適用されていきます。それはそれで同じ内容の色やオブジェクト違いの戦闘アニメーションを量産する際に便利なので敢えて書き換えないという方法もありますが、それはさておきこれらの拡張データを設定できるようにしたパッチを作成しようと検討しています。しかし戦闘アニメーションの拡張や作製に関する関心や研究はSFC版スーパーロボット大戦のロムハック界隈ではほぼ皆無なので、そこまで熱が上がらないのも事実ではあります。実際問題として戦闘アニメーションのスクリプトやアニメパターンコードの調査をしているのは私の知り得る限りTileViewerの作者様、友人が三名、そして私の計5名しか心当たりがありません。これは武器数数拡張パッチがいまひとつだった事から、そもそも武器の種類やアニメーションの数はさほど重要ではないという事実の裏返しなのかもしれませんね。  とりあえず、私が使用しているROMと同じようにオフセット領域の拡張や各種スクリプトデータの移設と仕様変更、そして一部の武器アニメーション(ビームサーベルやビームライフル、ビーム砲など)の色違いアニメーションを組み込んだもの

レナス〜古代機械の記憶〜(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次スーパーロボット大戦 武器数拡張パッチを公開しました

キャプテン翼4 レベル補正変更パッチを公開しました

第4次スーパーロボット大戦 改造コスト&改造数値分岐パッチを公開しました