DQ3 K.Mix バグ修正

マップパーツの追加(壊れた橋のグラフィック)の影響でラーミアに乗った直後に画像の一部が化けるバグ(下図参照)を修正します。(「バグ修正のために更新が遅れるかも」というエントリを投下すると直後にバグ修正が終わるというジンクスは今回も健在でしたwww)

20091017120450.jpg

山のグラフィックをよーく見てみて下さい。グラフィックが化けています。

以前にも「ラーミアに乗ると地上のマップ描画が大幅に化ける」というバグを修正したのですが、不十分だったようです。調査の結果、直接の原因は「グラフィック読み込み数が256よりも多いと不具合が発生」ということのようでした。ストーリーの進行上、今回の改造ではロマリア東部の橋が元に戻るのは鳥を復活させる前なので「壊れた橋のグラフィックを読み込むためにグラフィック読み込み数は264でないといけない」と「鳥に乗り込んだときに使用するグラフィック読み込み数は256でないといけない」という両者はバッティングしません。というわけなので、フラグを見てグラフィック読み込み数を動的にコントロールすることで問題を回避することにします。

  • SR: $0067FD マップパーツ群アクセス
00681A JSL $C0F2FF SR: $00F2FF SR: $005DA1から変更

(10/18 14:00修正)

  • SR: $00F2FF グラフィック読み込み数取得(新SR)
00F2FF CPX #$008D X==#$008D? Xが追加した地上のグラフィックインデックスか?
00F302 BNE #$0C if(z==off) goto $00F310
00F304 LDA $7E35B0 A=$7E35B0
00F308 AND #$0020 A&=#$0020 ロマリアの橋を修理しているか
00F30B BEQ #$03 if(z==on) goto $00F310
00F30D LDX #$000F X=#$000F もともとの地上のグラフィックインデックスに差し替える
00F310 JSL $C05DA1 SR: $005DA1
00F314 RTL return

コメントで指摘のあったようにバンクを変えずに3バイト指定でアドレスを指定するようにしたのですっきりしました。マップの展開関連のSRではバンクが7Fに変わっている事が多いので7Eのバンクにアクセスするためにバンクの切り替えを行う必要があります。とりあえずこれで問題は回避できるようです。大事にならなくてよかったです。1点注意ですが、オリジナルのROMのセーブデータを流用した場合はフラグの状態が想定外(ロマリア東部の橋が修復してないのにラーミアを復活させている)になっているのでこの問題は回避できません。仕様ということでご了承ください。

コメント

  1. p より:

    00F305から00F316までが追加の処理のようですが
    PEA $7E7E
    PLB
    PLB
    LDA $35B0
    よりも
    LDA $7E35B0
    の方がコード量も速度でもよろしいかと

    管理者より返信:

    その手がありましたね。修正しておきます。ご指摘ありがとうございます。

タイトルとURLをコピーしました