SRAMを大型化して外付けRAMに見立て読み込みデータや書き込みデータの容量を増やす試みを行っていますが、現状ではあまり上手くいっていません。とりあえず武器の個別改造とそれに付随するセーブデータを削除する事でパイロット・機体共に96体まで登録できるようにRAM内容を書き換え、当初の予定にあったインターミッション限定ではなくマップ上でもSRAMを96体まで参照できるように変更(これによって理論上はマップ上に自軍・敵軍を合わせて96体まで展開可能)、更にRAMの読み込みや書き込みの数量制限(64体までの制御)に関わるプログラムを調べられる限り調べて書き換えてみたのですが、主に強制出撃イベントを中心に不具合を起こしてしまいます。
SRAM上には参入した機体やパイロットがきちんと登録されているのですが65体目以降の機体に乗っているパイロットが出撃不能になったり、65人目以降のパイロットが登録されても出撃不能になったりする(インターミッションではパラメーター参照や乗り換え、機体改造やパーツ変更はできるのですが…)他、敵軍のデータをRAMに書き込む際に関しても一部できちんと書き込まれなかったり読み込まれなかったり、設定ルーチン通りの行動をしないなどの異常が見られます。また、外付けRAM領域に書き込まれる内容はどういうわけかメモリビューワーから確認する事ができず、いちいちバイナリエディタや外部のプロセスエディタでSRAMのファイルを見て確認する必要があります(一応SRAMには指定した場所にデータが書き込まれているのが確認できました)。単純にプログラム部分の書き換えミスだと思うのですが、やはり修正・改変しなければならない箇所があまりにも膨大なので厳しい状態であるのは事実です。また、予想通り中断データをセーブした後で最初から、あるいは通常のシナリオセーブデータをロードするとSRAMの内容が上書きされてしまい中断データの内容がおかしくなってしまいます。中断データに関してはエミュレーターであればステートセーブを利用する、実機のプレイであれば中断データのセーブ、または中断データのロードをできないようにする(一応これは解析によって可能となりました)しかないのが現状です。余談ですが三國志英傑伝は戦闘マップ上での中断セーブができない、SUPER三國志は一騎討ちモードでのセーブデータと通常セーブデータがリンクしていて一つしか保持できない(シナリオモードを最初からプレイすると一騎討ちモードのセーブデータが初期化されてしまう)のですが、これらの作品も同じ原理でSRAMを外付けRAM化しているようで、不具合回避のためにそうした処理や仕様を組み込んでいるのだと思います。制作しているデベロッパーは違いますが、こうした作品の処理方法を参考にしてデータの処理方法を研究する必要性を感じています。まだまだ実現への道のりは遠そうです。
コメント
コメントを投稿