DQ3 ストーリー変更(ロマリア~ノアニール10)

先日ちらっとふれたDQ3SFCEditorの追加機能でモンスター画像のスプライトの2枚目以降を表示する機能の実装を始めましたが、いままでそこそこ動いていると思い込んでいたスプライトのデコード部分のコードが全然不完全だったことがわかったのには笑いました。やはりdqviewerは偉大です。ただ、dqviewerの表示も完全ではないというのは当たりだったようで、アニメーションは単にパラパラ漫画の連続ということで確定してよさそうです。また、SNES4BPPのデータ量を減らすために、変化の少ない部分は使いまわして動きの多い部分をその上に乗せるというような手法を使っていると思われますが、この部分のデコードがまだ完全にトレースできていません。

「キャラクターイベント中移動フラグ」をONにすることによって通行情報を無視することができるようです。

今回はPC*1の座標および通行構成情報(?)を無理矢理書き換えることにします。手法はキャラクターを1or2座標ずらした状態でメモリのダンプを取り、stirlingで比較する、という非常に原始的なものです。バイナリの比較が容易にできるstirling様様というべきでしょう。

変更するのは

  • PCの実座標($7EC5E5-,$7EC625-)?
  • PCの相対座標($7EC725-,$7EC765-)?
  • 兵士の通行ルート上のPCの通行情報?

です。実座標と相対座標(実座標からマップのtop,leftを引いたもの)は連動しているらしく、同時に変更する必要があるようです。マップ上のキャラクターやその座標情報は7Exxx5-に存在していることが多いようで、それぞれ何を表しているのかは調べるのが大変です。通行情報は7F1000-以降のようですが、マップによって存在する場所が大きく違うようです。

  • SR: $0CF300 NPC1_MoveSR_56E イベント時のPC1人目のNPC
0CF300COPgoto $00FFE4
0CF301JSL $CCD392SR: $0CD392 キャラクターイベント中移動フラグON?
0CF336LDX #$09A8X=#$09A8
0CF339STX $C5E5$C5E5=X実座標(X座標)を強制変更
0CF33CLDA #$0928A=#$0928
0CF33FSTA $C625$C625=A実座標(Y座標)を強制変更
0CF342LDX #$0024X=#$0024
0CF345STX $C725$C725=X相対座標(X座標)を強制変更
0CF348LDA #$0011A=#$0011
0CF34BSTA $C765$C765=A相対座標(Y座標)を強制変更
0CF34ESTZ $CFA5$CFA5=#$00
0CF351JSL $CDADE6SR: $0DADE6
0CF355JSL $CDAF41SR: $0DAF41
0CF359JSL $C75930SR: $075930
0CF35DJSL $CDAE1ESR: $0DAE1E
0CF361RTLreturn

  • SR $0CF390 NPC1_MoveSR_56E イベント時のPC2人目のNPC
0CF3B3LDX #$09A8X=#$09A8
0CF3B6STX $C5E7$C5E7=X実座標(X座標)を強制変更
0CF3B9LDA #$0938A=#$0938
0CF3BCSTA $C627$C627=A実座標(Y座標)を強制変更
0CF3BFLDX #$0024X=#$0024
0CF3C2STX $C727$C727=X相対座標(X座標)を強制変更
0CF3C5LDA #$0013A=#$0013
0CF3C8STA #$C767$C767=A相対座標(Y座標)を強制変更
  • SR: $0CF400 NPC1_MoveSR_056F(新SR) イベント時のPC3人目のNPC(省略)
  • SR: $0CF480 NPC1_MoveSR_0570(新SR) イベント時のPC4人目のNPC(省略)

何パターンかテストしてみましたが、今のところこれでイベントが止まることなく進むようです。次回はようやくノアニールの変更を行います。

*1:プレイヤーキャラクター

コメント

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