DQ6 Extended(拡張ベースパッチ)作成にあたっての考慮点6

前回に引き続きポツポツと見つかったバグをつぶしながらテストプレイを継続していますが、やはりネックとなるのは仲間にできるキャラクター数(24→36)を増やすことによって必要になるメモリ領域のうち、職業熟練度情報、特技呪文習得情報をどこに格納するかがかなり問題となっています。それぞれ30Byte*36Recで1080(#$0438)Byte空き領域が必要なわけですが、見つけた先見つけた先が使われていることが後でわかったりして結構げんなりしています。

DQ6_Extended005

メモリ破壊の無残な状態の例(笑)。下級職をマスターしてないのに上級職をマスターしてたりともうめちゃくちゃです。

現在狭間の世界までテストプレイは進んでいますが(テストとして再プレイすることは確定)、最悪細切れにして数カ所に分割して格納ということになるかもしれません。そのへんaaaa氏のルイーダパッチではどうしてるのかと思ってReadmeを見てみたのですが、「セレクトボタンでSRAMの中を見るように切り替え」とあるので、増やした分のキャラクター情報についてはRAM中には展開してないのでしょう。これも1つの手ですが、これを真面目に実装するとなると仲間を入れ替える際にFC版DQ3のように一度セーブ処理をする必要がある?のではと思います。あくまで推測ですが、スタメンでない(大部分のゲーム中の処理には関係ない)キャラクターの情報をメモリ中に展開しないことで使えるメモリ量を増やそうとしたのではないかと。特にDQ3は過去2作と比較してプレイヤーキャラクターの数がかなり増える(連れて歩けるのは全部で4人ですが)こともあり、ああいう実装になったのではと今となっては思います。36キャラ分というのは別に緻密に計算したわけではなく、単に現状の24キャラで全モンスターを仲間にできないのは気持ち悪い→新しい仲間モンスターを追加した時のことを想定してもうちょっと余裕見とくか程度の浅い考えなのでかなりいい加減な数ではありますが。本当に100人近く仲間にしたいのであればもう冒険の書を1個だけにするとか思い切ったことをする必要があると思いますが、個人的にはやりたい人はどうぞという感じなのでDQ6 Extendedではサポートしません。

と、ここまで書いて結局いろいろ試してみたものの、「ごっそり空いている領域」が見つからないので、邪道な手段というのは百も承知の上で、「SRAMをさらに32KB拡張してそこに展開する」ことにしました。aaaa氏の手法に似ていますが、セーブデータとして扱う領域ではない場所に展開することで、SRAMとしては随時情報が書き換わっていくものの、リセットしても前回冒険の書に記録したところまで巻き戻るという通常の枠組みは変わることはありません。ここならオリジナルのプログラムでは使われていないことは確実なので安心です(作業中は変更漏れのおかげで戦闘するとフロアを移動した先の情報が壊れるために欲望の街に入ったつもりが海底神殿にワープしたりするバグが起きたりしましたがwww)。とりあえず今途中まで進めているテストプレイを初回クリア+はぐれの悟りが見つかることを確認するところまで終わらせてから再度初回からプレイしなおしてダークドレアムまで完走するところまで(一応20ターン以内で倒して別EDまで確認したほうがいいかな…)行ったらRC版をリリースできるかなという見込みです。

スポンサーリンク

コメントを書く

メールアドレスが公開されることはありません。コメントは管理者の承認後表示されます。