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

最新の投稿

ファミコン版天地を喰らう 軍師キャラの隊列変更阻止について

 天地を喰らうシリーズは策略を使うにあたって「軍師」に任命された武将がいないと使用不能になるのですが、軍師に任命された武将は戦闘が開始されると隊列の一番後ろに配置され、隊列が6人以上になると直接戦闘に参加できなくなるというシステムになっています。これがいわゆる文官タイプ(武力や兵士数が低く知力が高い傾向の武将)であればまだいいのですが、劉備や馬謖や姜維のように文武両道の武将を軍師に任命する必要がある場合は事情が変わってきます。そこで、軍師に任命した武将がどのような処理で隊列の一番後ろに回されてしまうのか調べてみました。その結果、大まかに言うと「戦闘開始時にまず隊列の人数をチェックし、6人未満である場合は各武将の状態をチェックし、正常であれば隊列の位置そのまま、それ以外の状態の武将は隊列の最後尾に変更する。6人以上の場合は軍師を隊列の最後尾に移動させるが、負傷中の武将がいる場合は更に軍師の後ろに配置する」という処理内容でした。ここで言う武将の状態は「00=負傷中(戦闘不能)、40=軍師、80=正常、C0=正常かつ軍師」の4種類で、この処理内容を変更すれば軍師に任命した武将も隊列の変更がないまま戦闘に参加できそうです。つまり「隊列が6人以上でも6人未満でも武将が正常な状態であれば隊列の位置そのままを維持し、負傷中の武将のみ隊列の最後尾に変更する」とすればよいのではないでしょうか。この仮説を基に改変を行い、成功すればパッチとして公開する予定です。

第4次スーパーロボット大戦 ゲッターチームの仕様変更不具合の修正完了


 少々手間取りましたが、何とかゲッターチームの仕様変更に伴う不具合を修正できました。不具合の内容は「ゲッター2系やゲッター3系の状態でレベルアップした場合、WRAMのパイロットIDがSRAM側の内容に書き換えられて竜馬の状態に戻ってしまったり(変形を実行すると隼人や弁慶に戻る)、SRAMのデータ上ではレベルアップしているがWRAMにその内容が反映されずシナリオ終了まで上昇したパラメーターが反映されない事があるがシナリオが終了するとレベルアップ後のパラメーターになる」というものでした。これは一時データを保存する際に使用するRAM領域の選定がまずかったり、レベルアップ時にパラメーターを再計算する際に使用するサブルーチンの組み立て内容に起因するものでした。


 今回は一時データの取得方法自体を見直し、「戦闘後に経験値を取得できた場合はその戦闘で戦ったパイロットのWRAM側のIDを保存し、レベルアップの際に読み込んだSRAM側のパイロットIDがWRAM側に書き込まれた直後にそのデータを参照、IDが竜馬であると判定された場合は直前の戦闘で経験値を取得したWRAM側のパイロットIDで再度上書きする」という方法に改めてみました。ゲッターチームの場合はSRAMのパイロットIDは竜馬で固定のため、レベルアップの都度WRAM側のパイロットIDを現在のゲッターロボの状態に合わせたパイロットIDに変更する必要があるのですが、よく考えてみればSRAMでのIDが竜馬で固定されているとなればそれ自体を判定基準にすればよいという事にようやく気が付いた次第です。これにより判定の精度が向上し不具合が発生しなくたった…と思いたいところです。

コメント

人気の投稿

キャプテン翼4 ファンベルグの「光るシュート」とオルミーガの「吹っ飛ばし補正」について

第4次スーパーロボット大戦 初期型ROMと後期型ROMの物理的な見分け方と入手方法