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

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

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

をすることになります。

  • SR: $06F463 メルキド追加イベント用戦闘処理(新SR)
06F463 JSL $C68520 SR: $068520 イベントモンスター設定
06F467 JSL $C6F470 SR: $06F470 メルキド追加イベント用戦闘処理
06F46B JSL $C68A85 SR: $068A85 ?
06F46F RTL return

  • SR: $06F467 メルキド追加イベント用戦闘処理(新SR)
06F470 REP #$30 m=off(A/M:16b) x=off(X/Y:16b)
06F472 PEA #$7E7E Push #$7E7E
06F475 PLB Pull DB
06F476 PLB Pull DB
06F477 TSC A=S
06F478 CMP #$06D9 A>=#$06D9?
06F47B BCS #$05 if(c==on) goto $06F482
06F47D CMP #$0500 A>=#$0500?
06F480 BCS #$02 if(c==on) goto $06F484
06F482 BRA #$FE goto $06F482
06F484 JSL $C606D7 SR: $0606D7
06F488 JSL $C68A2B SR: $068A2B
06F48C JSR $8B3A SR: $068B3A
06F48F LDA #$0001 A=#$0001
06F492 STA $7E7F6E $7E7F6E=A
06F496 JSL $C4797F SR: $04797F
06F49A JSL $C4837F SR: $04837F
06F49E JSL $C47D87 SR: $047D87
06F4A2 JSL $C606E9 SR: $0606E9
06F4A6 JSL $C79AF4 SR: $079AF4
06F4AA JSL $C790B5 SR: $0790B5
06F4AE PHD Push D
06F4AF LDA #$18DA A=#$18DA
06F4B2 TCD D=A
06F4B3 LDA #$0001 A=#$0001
06F4B6 PEA #$F802 Push #$F802
06F4B9 PEA #$0003 Push #$0003
06F4BC PEA #$7E00 Push #$7E00
06F4BF JSL $C902E9 SR: $0902E9
06F4C3 JSL $C259F5 SR: $0259F5 戦闘メインループ
06F4C7 LDA #$0000 A=#$0000
06F4CA PEA #$F802 Push #$F802
06F4CD PEA #$0003 Push #$0003
06F4D0 PEA #$7E00 Push #$7E00
06F4D3 JSL $C902E9 SR: $0902E9
06F4D7 PLD Pull DP Register
06F4D8 REP #$30 m=off(A/M:16b) x=off(X/Y:16b)
06F4DA PEA #$7E7E Push #$7E7E
06F4DD PLB Pull DB
06F4DE PLB Pull DB
06F4DF JSR $89E7 SR: $0689E7
06F4E2 LDA #$0001 A=#$0001
06F4E5 JSL $C01056 SR: $001056
06F4E9 STZ $7FF6 $7FF6=#$00
06F4EC RTL return

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

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

  • SR: $02A6AF 戦闘終了時処理SR_SR_0001
02A6AF JSR $DA5B SR: $02DA5B 戦闘終了BGM再生
02A6B2-B4 NOP
02A6E1 JSR $DA68 SR: $02DA68 戦闘終了BGM停止
02A6E4-F2 NOP
  • SR: $02DA5B 戦闘終了BGM再生(新SR)
02DA5B JSL $CCF2CE SR: $0CF2CE メルキド襲撃中かつボス戦でない(c=on)
02DA5F BCS #$06 if(c==on) goto $02DA67
02DA61 JSL $C1E32E SR: $01E32E 引数:1#$0029 BGM再生
02DA67 RTS return

  • SR: $02DA68 戦闘終了BGM停止(新SR)
02DA68 JSL $CCF2CE SR: $0CF2CE メルキド襲撃中かつボス戦でない(c=on)
02DA6C BCS #$12 if(c==on) goto $02DA80
02DA6E JSL $C1E59C SR: $01E59C 引数:1#$0029 BGM停止
02DA74 BCS #$06 if(c==on) goto $02DA7C
02DA76 JSL $C028B4 SR: $0028B4
02DA7A BRA #$F2 goto $02DA6E
02DA7C JSL $C1E264 SR: $01E264
02DA80 RTS return

  • SR: $02A7EC レベルアップ表示処理
02A7EF JSR $DA81 SR: $02DA81 レベルアップBGM再生
02A7F2-4 NOP
02A814 JSR $DA8E SR: $02DA8E レベルアップBGM終了
02A817-29 NOP
  • SR: $02DA81 レベルアップBGM再生(新SR)
02DA81 JSL $CCF2CE SR: $0CF2CE メルキド襲撃中かつボス戦でない(c=on)
02DA85 BCS #$06 if(c==on) goto $02DA8D
02DA87 JSL $C1E32E SR: $01E32E 引数:1#$0028 BGM再生
02DA8D RTS return
  • SR: $02DA8E レベルアップBGM停止(新SR)
02DA8E JSL $CCF2CE SR: $0CF2CE メルキド襲撃中かつボス戦でない(c=on)
02DA92 BCS #$17 if(c==on) goto $02DAAB
02DA94 JSL $C1E59C SR: $01E59C 引数:1#$0028 BGM停止
02DA9A BCS #$06 if(c==on) goto $02DAA2
02DA9C JSL $C028B4 SR: $0028B4
02DAA0 BRA #$F2 goto $02DA94
02DAA2 JSL $C2B977 SR: $02B977 パーティウインドウ再描画
02DAA6 JSL $C1E264 SR: $01E264
02DAAA RTS return
02DAAB JSL $C2B977 SR: $02B977 パーティウインドウ再描画
02DAAF RTS return

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

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

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

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

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

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

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

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

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

コメント

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