DQ3 ゲストキャラクター概念の追加2(戦闘中編2)

前回の解析結果を踏まえると、どうすればいいかという方向性が見えてきます。通常の全滅判定をした後、全滅していなければ特定条件下でのみ発動する追加の全滅判定を行えばいい、ということになります。というわけで今回はまず過去テドン編。「誰か一人が死んでいても全滅扱い」という条件を追加することにします。

  • SR: $02B32F 戦闘終了時フラグセット?
02B356JSR $F320SR: $02F320PC側行動可能チェック

  • SR: $02F230 PC側行動可能チェック(新SR)
02F320JSR $B3C5SR: $02B3C5PC側行動可能チェック
02F323BNE #$01if(z==off) goto $02F326
02F325RTSreturn
02F326JSL $C5D85FSR: $05D85FPC側行動可能チェック(特殊)
02F32ARTSreturn

  • SR: $05D85F PC側行動可能チェック(特殊)(新SR)
05D85FLDA $7E35B6A=$7E35B6
05D863AND #$0080A&=#$0080過去テドンイベント中か
05D866BEQ #$05if(z==on) goto $05D86D
05D868JSR $D87BSR: $05D87B過去テドンイベント中PC側全滅判定
05D86BBRA #$09goto $05D876
05D86DJSL $C5E17FSR: $05E17F傭兵がゲスト扱いか(該当c=on)
05D871BCC #$03if(c==off) goto $05D876
05D873JSR $D8A0SR: $05D8A0幽霊船追加イベント中PC側全滅判定
05D876LDA $00A=DP($00)
05D878ORA $02Aor=DP($02)
05D87ARTLreturn

  • SR: $05D87B 過去テドンイベント中PC側全滅判定(新SR)
05D87BJSL $C2C739SR: $02C739 引数:1#$08行動可能チェック用マスクデータ作成
05D880LDA $02A=DP($02)PC側のビット情報をスタックにプッシュ
05D882PHAPush A
05D883LDA $00A=DP($00)PC側のビット情報をスタックにプッシュ
05D885PHAPush A
05D886JSL $C2C766SR: $02C766 引数:1#$00行動可能フラグセット・死亡キャラクターはフラグをOFFにする
05D88BLDA $02A=DP($02)
05D88DCMP $03,SA==Stack($03)?PC側のビット情報と比較する
05D88FBNE #$08if(z==off) goto $05D899一致していない(誰か死んでいる)場合は全滅扱い
05D891LDA $00A=DP($00)
05D893CMP $01,SA==Stack($01)?PC側のビット情報と比較する
05D895BNE #$02if(z==off) goto $05D899一致していない(誰か死んでいる)場合は全滅扱い
05D897BRA #$04goto $05D89D
05D899STZ $00DP($00)=#$00
05D89BSTZ $02DP($02)=#$00
05D89DPLAPull A
05D89EPLAPull A
05D89FRTSreturn

「誰か一人でも死んだら全滅」ということなので、戦闘に参加しているキャラクターのビット情報とそれを元に死人はビットをOFFにしたビット情報を比較して一致していなければ誰かが死んでいるということになるので全滅とする、とすればいいということになります。

コメント

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