DQ3 ストーリー変更(メルキド襲撃7)

前回収まりきらなかった戦闘部分の修正を行います。具体的には

  • 戦闘開始時にBGMを切り替えない
  • 戦闘勝利時にレベルアップ、戦闘終了SEを再生しない

をすることになります。

  • SR: $06F463 メルキド追加イベント用戦闘処理(新SR)
06F463JSL $C68520SR: $068520イベントモンスター設定
06F467JSL $C6F470SR: $06F470メルキド追加イベント用戦闘処理
06F46BJSL $C68A85SR: $068A85?
06F46FRTLreturn

  • SR: $06F467 メルキド追加イベント用戦闘処理(新SR)
06F470REP #$30m=off(A/M:16b) x=off(X/Y:16b)
06F472PEA #$7E7EPush #$7E7E
06F475PLBPull DB
06F476PLBPull DB
06F477TSCA=S
06F478CMP #$06D9A>=#$06D9?
06F47BBCS #$05if(c==on) goto $06F482
06F47DCMP #$0500A>=#$0500?
06F480BCS #$02if(c==on) goto $06F484
06F482BRA #$FEgoto $06F482
06F484JSL $C606D7SR: $0606D7
06F488JSL $C68A2BSR: $068A2B
06F48CJSR $8B3ASR: $068B3A
06F48FLDA #$0001A=#$0001
06F492STA $7E7F6E$7E7F6E=A
06F496JSL $C4797FSR: $04797F
06F49AJSL $C4837FSR: $04837F
06F49EJSL $C47D87SR: $047D87
06F4A2JSL $C606E9SR: $0606E9
06F4A6JSL $C79AF4SR: $079AF4
06F4AAJSL $C790B5SR: $0790B5
06F4AEPHDPush D
06F4AFLDA #$18DAA=#$18DA
06F4B2TCDD=A
06F4B3LDA #$0001A=#$0001
06F4B6PEA #$F802Push #$F802
06F4B9PEA #$0003Push #$0003
06F4BCPEA #$7E00Push #$7E00
06F4BFJSL $C902E9SR: $0902E9
06F4C3JSL $C259F5SR: $0259F5戦闘メインループ
06F4C7LDA #$0000A=#$0000
06F4CAPEA #$F802Push #$F802
06F4CDPEA #$0003Push #$0003
06F4D0PEA #$7E00Push #$7E00
06F4D3JSL $C902E9SR: $0902E9
06F4D7PLDPull DP Register
06F4D8REP #$30m=off(A/M:16b) x=off(X/Y:16b)
06F4DAPEA #$7E7EPush #$7E7E
06F4DDPLBPull DB
06F4DEPLBPull DB
06F4DFJSR $89E7SR: $0689E7
06F4E2LDA #$0001A=#$0001
06F4E5JSL $C01056SR: $001056
06F4E9STZ $7FF6$7FF6=#$00
06F4ECRTLreturn

それぞれ、SR: $687A0 イベント戦闘処理、SR: $0688E4 戦闘処理と比較してみてください。戦闘開始関連のSE、BGMを再生しないようにしただけで、後はただコピーしただけです。

次に戦闘終了時のSE、BGMの再生のスキップを実装します。

  • SR: $02A6AF 戦闘終了時処理SR_SR_0001
02A6AFJSR $DA5BSR: $02DA5B 戦闘終了BGM再生
02A6B2-B4NOP
02A6E1JSR $DA68SR: $02DA68戦闘終了BGM停止
02A6E4-F2NOP
  • SR: $02DA5B 戦闘終了BGM再生(新SR)
02DA5BJSL $CCF2CESR: $0CF2CEメルキド襲撃中かつボス戦でない(c=on)
02DA5FBCS #$06if(c==on) goto $02DA67
02DA61JSL $C1E32ESR: $01E32E 引数:1#$0029BGM再生
02DA67RTSreturn

  • SR: $02DA68 戦闘終了BGM停止(新SR)
02DA68JSL $CCF2CESR: $0CF2CEメルキド襲撃中かつボス戦でない(c=on)
02DA6CBCS #$12if(c==on) goto $02DA80
02DA6EJSL $C1E59CSR: $01E59C 引数:1#$0029BGM停止
02DA74BCS #$06if(c==on) goto $02DA7C
02DA76JSL $C028B4SR: $0028B4
02DA7ABRA #$F2goto $02DA6E
02DA7CJSL $C1E264SR: $01E264
02DA80RTSreturn

  • SR: $02A7EC レベルアップ表示処理
02A7EFJSR $DA81SR: $02DA81レベルアップBGM再生
02A7F2-4NOP
02A814JSR $DA8ESR: $02DA8EレベルアップBGM終了
02A817-29NOP
  • SR: $02DA81 レベルアップBGM再生(新SR)
02DA81JSL $CCF2CESR: $0CF2CEメルキド襲撃中かつボス戦でない(c=on)
02DA85BCS #$06if(c==on) goto $02DA8D
02DA87JSL $C1E32ESR: $01E32E 引数:1#$0028BGM再生
02DA8DRTSreturn
  • SR: $02DA8E レベルアップBGM停止(新SR)
02DA8EJSL $CCF2CESR: $0CF2CEメルキド襲撃中かつボス戦でない(c=on)
02DA92BCS #$17if(c==on) goto $02DAAB
02DA94JSL $C1E59CSR: $01E59C 引数:1#$0028BGM停止
02DA9ABCS #$06if(c==on) goto $02DAA2
02DA9CJSL $C028B4SR: $0028B4
02DAA0BRA #$F2goto $02DA94
02DAA2JSL $C2B977SR: $02B977パーティウインドウ再描画
02DAA6JSL $C1E264SR: $01E264
02DAAARTSreturn
02DAABJSL $C2B977SR: $02B977パーティウインドウ再描画
02DAAFRTSreturn

やってることは単純でメルキドイベント連戦中(ボスを除く)場合にはBGMの再生/停止を行わない、というだけです。1点注意するべきはSR: $02DA8E レベルアップBGM停止のパーティウィンドウ再描画の部分ですが、BGMは再生しなくてもパーティウィンドウ再描画を行わないとレベルアップしたキャラクターのレベルの数字が変化しません。

そういえば、連戦中の対戦相手の顔ぶれを書いていませんでした。

1戦目:スターキメラx2,メイジキメラ,キメラ

2戦目:キースドラゴン,マドハンドx2,ブラッドハンドx2,メタルハンドx2

3戦目:ダースドラゴン,キースドラゴン,ヒドラ

4戦目:トロルキング,バグログ,アークマージ

5戦目:ブラッドハンドx2,ダースリカント,だいまじん,マドハンドx2

6戦目:ダースドラゴン,かくとうパンサー,ハイデーモン

モンスター間の隙間を小さくする変更を行ってもっと出現数を増やすかもしれません。次回は戦闘終了後のイベントの実装を行ってメルキド襲撃編を終わりにする予定です。

コメント

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