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

最新の投稿

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

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

スーパーファミコンのLoROMイメージのHiROMイメージ化について

 キャプテン翼4や紋章の謎などの各種データ拡張のためにROMイメージの大型化を検討していましたが、LoROM特有の面倒な仕様=8000h単位でバンクが切り替えられてしまうため、大きなデータを移設するには色々と不自由していました。そこで、ふとした思い付きからROMイメージの仕様そのものを変更できないかと試みてみました。簡単に言えばLoROM仕様のROMイメージをHiROM化する事によりバンク切り替えの仕様を8000h単位から倍の10000h単位にしてしまおうという訳ですが、各種プログラムを移動させるとアドレスアクセスのためのデータを全て変更しなければならず、さすがにそれは面倒なので試しに元のLoROMの各バンク8000h毎に8000h分の空データ(=全て「00」や「FF」で埋めたダミー)を挿入し、これにより各アクセスアドレスを変更する事なくデータ位置を変更し、なおかつROMヘッダの15h(00FFD5)に+01してHiROM化してみました。これで理論上はアクセスデータのアドレスを変更する必要はない事になります。

 これによりROM容量は元の倍の容量になってしまいましたが、1.5MBのキャプテン翼4(変更後は3.0MB=24メガバイト)や2.0MBのキャプテン翼5(変更後は32メガイト)はLoROMではなくHiROMとして認識され、かつ本来はメモリマップ上の領域が変更されるはずのSRAMも正常に読み書きがされました。なお、変更前に3.0MBだった紋章の謎は6.0MB(=48メガバイト)に拡張したところ残念ながら正常に起動しませんでした。エミュレーターによるのかもしれませんが、どうやら拡大後のROMイメージが4MB=32メガバイトに収まり、そしてSRAMの容量が8KBのように小さければLoROMの状態でもHiROMの状態でも問題は起こらないようで、正常にROMの中身が所定の位置にメモリマッピングされています。そしてこれを実行した後でメモリの状態を調べてみると、どうやらの400000~7DFFFFはROMの中身の常にLoROMの状態=つまり下位アドレス状態で408000から10000h単位で展開されており、上位アドレス(4000000や500000)には何も書き込まれていません(=「00」の状態)でした。ROMの上位アドレスに書き込んだデータはC00000以下のアドレスから読み込む事が可能で、HiROM化してあれば当然バンクの単位は10000h単位として扱う事が可能です。また、各種アドレスのアクセスにもHiROMと同じアドレスが使用できるようになるので作業性は大幅に向上します。

 これから先どんな不具合が発生するのか十分に調査する必要性はありますが、LoROMのソフトの容量拡大を考えておられる方は従来のようなROMイメージの末端を拡大する方式ではなく、この方式を参考に作業をされてみてはいかがでしょうか。実験に使用したキャプテン翼5のROMイメージ用パッチを作成しましたので、ROMイメージやメモリの構造がどのように変化するのか確認してみたい方は以下のURLからダウンロードして下さい。


https://ux.getuploader.com/retrogamelaboratory/download/86

コメント

人気の投稿

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

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

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