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

最新の投稿

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

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

第4次スーパーロボット大戦 自軍メンバー登録限度拡張に関しての考察

 ざっと解析してみたところ、自軍登録メンバーの数を65以上にするにあたっての課題点が見えてきました。以下にその課題点を列挙していきます。

  • 各種データの計算用RAM領域。これに関しては足りない分をコーエーの作品に見られる大容量SRAMや特殊チップ搭載ROMのように「外付けRAM」で増量してそちらに読み込みデータを逃がして展開させればいいが、中断データのセーブ・ロードの際の内容を大幅に変更しないと実現が難しい。外付けRAMがSRAMだった場合はリセットしたり電源を落としてもデータが更新されるまで逃がした展開データが保持され続けるので、中断データがある状態で別データのプレイをするとSRAM領域のデータが更新されてしまい内容が消えてしまう(=中断データが正常に再現されない)。特殊チップに展開する場合はリセットしたり電源を落とすと展開データ自体が消えてしまう。いずれにせよ、中断データにこの展開データを別領域にセーブ・ロードする処理を組み込む必要があり、作業量を考えると現実的ではない。
  • 通常のセーブデータに保持できる内容はRAMでいうところの7E1000〜7E15D5まで。これより下の領域にセーブデータの内容を拡張しようとすると中断データに影響を及ぼし、やはり外部RAMへの展開データ拡張とセーブ・ロードの方式の変更が避けられない。
  • 登録可能数を増やすとその分だけRAM各パラメーターの読み込み領域も増やさないといけない。通常は自軍・敵軍を合計して64体分で、これを超過するとRAMからデータがはみ出して不具合を起こすので一部パラメーターの分を丸ごと外部RAMに移す必要があるが、例によって中断データに影響を及ぼす。
  • MAP上では展開データ領域は自軍・敵軍で共用64体分を使用するが、インターミッションでは同じ領域を自軍のみで64体分を使用する。つまり、逆に言うとそれぞれで使用するRAM領域が違えばインターミッションで使用するRAM領域だけ増やせばいいという事になる(MAP上で自軍・敵軍を合わせて65体以上出現させなければいいだけなので)。
 以上の内容から見えてくるのは「7E1000〜7E152Dまでに登録データ数を保持しつつ不要と思われる内容を整理してセーブデータ領域に空きを作り、この空き容量を使って残りの登録データ容量を拡張。そしてインターミッションでのパラメーター閲覧や機体改造、乗り換えなどの作業実行の際には外付けRAMを指定してデータを展開して処理、対してMAP上では従来の通常メモリマップ内のRAMを使用して展開データを処理する」、つまりインターミッションの時だけ外付けRAMを使って増加させたデータを処理するという方法です。こうする事によって、理論上はセーブデータのSRAMへの書き込みや読み込み処理の大幅な改変をせずとも登録メンバーを増やせるのですが、そのためにはやはりSRAMに保存されるデータを一部減らさなければなりません。そうなると候補になるのが武器の個別改造とパイロットの撃墜スコアです。仮に武器の個別改造を捨ててパイロットやユニットの保持数を引き上げようとした場合、計算上は従来の64体から80~83体(個人的には80体を推奨したいところです)、パイロットの撃墜スコアを削除すればもう少し増やす事が可能になりますが、撃墜スコアはこれを利用した未使用のイベントコードが存在するので削除を避けたいところです。「武器の個別改造を捨てても16体分くらいしか増やせないのか」という見方もありますが、16体分増やせればできる事の幅は色々と広がると思います。

 SRAM容量はROM内のRAM容量の項目を変更すれば最大で256kbiteまで増やせるので容量不足の心配はありませんが、問題はインターミッションの時だけ外付けRAMにアクセスしてデータを書き込み・読み込みできるという処理が実現できるかどうかですね。これによって登録メンバーの拡張ができるかどうかの明暗が分かれますが、できる限り実現への努力をしてみるつもりです。

コメント

人気の投稿

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

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

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