マップパーツの追加(壊れた橋のグラフィック)の影響でラーミアに乗った直後に画像の一部が化けるバグ(下図参照)を修正します。(「バグ修正のために更新が遅れるかも」というエントリを投下すると直後にバグ修正が終わるというジンクスは今回も健在でしたwww)
山のグラフィックをよーく見てみて下さい。グラフィックが化けています。
以前にも「ラーミアに乗ると地上のマップ描画が大幅に化ける」というバグを修正したのですが、不十分だったようです。調査の結果、直接の原因は「グラフィック読み込み数が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のセーブデータを流用した場合はフラグの状態が想定外(ロマリア東部の橋が修復してないのにラーミアを復活させている)になっているのでこの問題は回避できません。仕様ということでご了承ください。
コメント
00F305から00F316までが追加の処理のようですが
PEA $7E7E
PLB
PLB
LDA $35B0
よりも
LDA $7E35B0
の方がコード量も速度でもよろしいかと
その手がありましたね。修正しておきます。ご指摘ありがとうございます。