DQ3戦闘部分解説14

今回からは最重要部分の戦闘行動実行部分を見ていきます。毎回「重要」とかいって詐欺っぽいのですが、ここはRPGであるDQ3のコアといってもいい部分だと思います。この部分が理解できれば戦闘中のギミックの追加はかなり思い通りにできるでしょう。

  • SR: $027939 1キャラクター分の戦闘行動実行処理
027939 JSR $79D5 SR: $0279D5 攻撃ターゲット決定処理
02793C JSR $7BBF SR: $027BBF 戦闘行動がはやぶさのけんに依存する場合ははやぶさのけん装備をチェックし行動回数を確定
02793F STZ $23D8 $23D8=#$00
027942 JSL $C1AE9F SR: $01AE9F
027946 JSL $C2CDAC SR: $02CDAC モンスターアニメーションメイン
02794A JSR $7983 SR: $027983 戦闘行動開始時の効果音を鳴らす
02794D JSR $7BE8 SR: $027BE8 ファーストメッセージ表示のタイミングにあわせてメッセージを表示する
027950 JSR $7C41 SR: $027C41 戦闘行動を実行可能か判定
027953 BCS #$2A if(c==on) goto $02797F
027955 JSR $7D53 SR: $027D53 戦闘行動実行処理メイン
027958 LDX $23E4 X=$23E4
02795B STX $2428 $2428=X
02795E JSL $C2CB2B SR: $02CB2B 引数:1#$2050 引数:2#$0002 戦闘中キャラクター情報取得
027966 BEQ #$17 if(z==on) goto $02797F
027968 JSL $C2BE8A SR: $02BE8A 引数:1#$1C 戦闘中情報取得変更
02796D BCS #$10 if(c==on) goto $02797F
02796F JSR $7A9F SR: $027A9F
027972 BCC #$0B if(c==off) goto $02797F
027974 INC $23D8 $23D8++
027977 LDA $23D8 A=$23D8
02797A CMP $23D6 A>=$23D6?
02797D BCC #$D6 if(c==off) goto $027955
02797F JSR $8D78 SR: $028D78 戦闘中アイテム消費
027982 RTS return

$7E23D8は行動済み回数で、$7E23D6には行動できる回数がセットされます。DQ3では1回の戦闘行動で2回動けるのははやぶさの剣装備時のみなので$7E23D6に2が入るのは他にはありません。

  • SR: $027BBF 戦闘行動がはやぶさのけんに依存する場合ははやぶさのけん装備をチェックし行動回数を確定
027BBF LDA #$0001 A=#$0001 通常の行動回数
027BC2 STA $23D6 $23D6=A
027BC5 LDX $23EE X=$23EE
027BC8 JSL $C2CC47 SR: $02CC47 引数:1#$007A 引数:2#$0080 戦闘行動がはやぶさのけん装備に依存するか
027BD0 BEQ #$15 if(z==on) goto $027BE7
027BD2 LDA $23E4 A=$23E4
027BD5 STA $2428 $2428=A
027BD8 LDA #$0019 A=#$0019 はやぶさのけんのアイテムID
027BDB STA $242C $242C=A
027BDE JSL $C2B87A SR: $02B87A アイテム装備チェック
027BE2 BVC #$03 if(v==off) goto $027BE7
027BE4 ASL $23D6 $23D6<<1 行動回数を2倍にする
027BE7 RTS return