前回収まりきらなかった戦闘部分の修正を行います。具体的には
- 戦闘開始時に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戦目:ダースドラゴン,かくとうパンサー,ハイデーモン
モンスター間の隙間を小さくする変更を行ってもっと出現数を増やすかもしれません。次回は戦闘終了後のイベントの実装を行ってメルキド襲撃編を終わりにする予定です。
コメント