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

さて、イベントの実装の続きです。

  • SR: $BF10D ロマリア東部の橋の修復失敗報告処理(新SR)
0BF10DCOPgoto $00FFE4
0BF10EJSL $CCE1D1SR: $0CE1D1カウンタが2000になるまで待機
0BF112JSL $CDAED1SR: $0DAED1
0BF116JSL $CCD37ESR: $0CD37E
0BF11ABRK $0FE5 ($0B0FE5)goto $00FFE6(メッセージ表示) #$0FE5
0BF11DJSL $CDACD2SR: $0DACD2
0BF121JSL $CDADEDSR: $0DADEDカウンタに3000をセット
0BF125JSL $CDAEF1SR: $0DAEF1カウンタが4000になるまで待機
0BF129BRK $0FE9 ($0B0FE9)goto $00FFE6(メッセージ表示) #$0FE9
0BF12CJSL $CDACD2SR: $0DACD2
0BF130JSL $CDADFBSR: $0DADFBカウンタに5000をセット
0BF134JSL $CDAF11SR: $0DAF11カウンタが6000になるまで待機
0BF138BRK $0FEA ($0B0FEA)goto $00FFE6(メッセージ表示) #$0FEA
0BF13BJSL $CDACD2SR: $0DACD2
0BF13FJSL $CDAE09SR: $0DAE09カウンタに7000をセット
0BF143JSL $CDAF31SR: $0DAF31カウンタが8000になるまで待機
0BF147JSL $CDD65CSR: $0DD65CPC表示
0BF14BJSL $CDAE17SR: $0DAE17カウンタに7000をセット
0BF14FJSL $CDAF51SR: $0DAF51カウンタが10000になるまで待機
0BF153LDA $354AA=$354A
0BF156AND #$0020A&=#$0020ノアニールが開放済みか
0BF159BNE #$05if(z==off) goto $0BF160
0BF15BBRK $0FE7 ($0B0FE7)goto $00FFE6(メッセージ表示) #$0FE7
0BF15EBRA #$03goto $0BF163
0BF160BRK $0FEE ($0B0FEE)goto $00FFE6(メッセージ表示) #$0FEE
0BF163JSL $CDACD2SR: $0DACD2
0BF167JSL $CCD383SR: $0CD383
0BF16BJSL $CCD298SR: $0CD298
0BF16FRTLreturn

  • SR: $0CF1D7 NPC1_MoveSR_056D(兵士のNPC)(新SR)
0CF1D7COPgoto $00FFE4
0CF1D8JSL $CCD392SR: $0CD392
0CF1DCJSL $CDAEE1SR: $0DAEE1カウンタが3000になるまで待機
0CF1E0LDA #$0031A=#$0031
0CF1E3LDX #$0036X=#$0036
0CF1E6JSL $C75305SR: $075305キャラクター出現座標を指定
0CF1EAJSL $CCD857SR: $0CD857キャラクターを上に向かせる
0CF1EELDX #$0031X=#$0031
0CF1F1LDA #$002AA=#$002A
0CF1F4JSL $C75474SR: $075474キャラクター移動先座標を指定
0CF1F8JSL $CCD59DSR: $0CD59D指定座標にY軸→X軸の順でキャラクター移動
0CF1FCJSL $CDADF4SR: $0DADF4カウンタに4000をセット
0CF200JSL $CDAF01SR: $0DAF01カウンタが5000になるまで待機
0CF204JSL $CC73CFSR: $0C73CF
0CF208BRK $0FE6 ($0C0FE6)goto $00FFE6(メッセージ表示) #$0FE6
0CF20BJSL $CDACD2SR: $0DACD2
0CF20FJSL $CDAE02SR: $0DAE02カウンタに6000をセット
0CF213JSL $CDAF21SR: $0DAF21カウンタが7000になるまで待機
0CF217LDX #$0031X=#$0031
0CF21ALDA #$0036A=#$0036
0CF21DJSL $C75474SR: $075474キャラクター移動先座標を指定
0CF221JSL $CCD59DSR: $0CD59D指定座標にY軸→X軸の順でキャラクター移動
0CF225JSL $C75930SR: $075930キャラクター消滅
0CF229JSL $CDAE10SR: $0DAE10カウンタに8000をセット
0CF22DRTLreturn

基本的にはその7で定義したとおりにカウンタのセット/待機を実装していくだけです。しかしここで1点問題があります。報告に来る兵士は階段からまっすぐ($31, $2A)の座標までやってきますが、ロマリア王に話し掛ける直前にパーティがその進路にかかるように立っていた場合、

20090810234621.jpg

「キャラクターがそこにいる」という情報が残っているらしく、兵士が途中で立ち止まってしまいます(緑丸が到達指定座標)。

20090811000235.jpg

こうなると以降のイベントが一切進まなくなり、フリーズしたような状態になってしまいます。この問題を回避するにはキャラクターの座標情報を変更すればいいのですが、まっとうなやり方が結局わからなかったため、所定の場所のRAMを無理矢理書き換えることにします。というわけで続きは次回。

コメント

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