DQ3戦闘部分解説15

前回に引き続き、戦闘行動実行の部分を見ていきます。今回は行動主体が戦闘行動を実行出来るかどうかの判定部分です。ここで条件に該当した場合は戦闘行動が実行されません。

  • SR: $027C41 戦闘行動を実行可能か判定
027C41 JSR $7C68 SR: $027C68 MP切れ・マホトーン・呪いで行動できないか決定する
027C44 BCS #$12 if(c==on) goto $027C58
027C46 LDA #$0001 A=#$0001
027C49 PEA #$23AE Push #$23AE
027C4C PEA #$0001 Push #$0001
027C4F PEA #$7E00 Push #$7E00
027C52 JSL $C902E9 SR: $0902E9 RAM上情報変更
027C56 CLC c=off
027C57 RTS return
027C58 LDX $23E4 X=$23E4
027C5B LDA #$0001 A=#$0001
027C5E JSL $C2CB70 SR: $02CB70 引数:1#$2052 引数:2#$0004 戦闘中キャラクター情報変更
027C66 SEC c=on
027C67 RTS return
  • SR: $027C68 MP切れ・マホトーン・呪いで行動できないか決定する
027C68 LDX $23EE X=$23EE
027C6B STX $242A $242A=X
027C6E LDY $23E4 Y=$23E4
027C71 STY $2428 $2428=Y
027C74 LDA #$0052 A=#$0052
027C77 PHA Push A
027C78 JSL $C2B466 SR: $02B466 現MPが選択呪文の消費MPより上か?
027C7C BCC #$45 if(c==off) goto $027CC3
027C7E STA $23FC $23FC=A
027C81 JSR $7D30 SR: $027D30 理力の杖装備時の直接攻撃消費MP計算
027C84 LDA $23FC A=$23FC
027C87 STA $00 DP($00)=A
027C89 JSL $C2BE8A SR: $02BE8A 引数:1#$0E MP減算処理
027C8E JSL $C2B977 SR: $02B977
027C92 JSL $C2CC47 SR: $02CC47 引数:1#$0078 引数:2#$0040 戦闘行動がマホトーンに依存するか
027C9A BEQ #$1A if(z==on) goto $027CB6
027C9C LDA #$0054 A=#$0054 戦闘メッセージID:しかし じゅもんは ふうじこめられている!
027C9F STA $01,S Stack($01)=A
027CA1 JSL $C2CB32 SR: $02CB32 引数:1#$2051 引数:2#$0002 行動主体がマホトーン中か調べる?
027CA9 BNE #$23 if(z==off) goto $027CCE
027CAB LDA #$0053 A=#$0053 戦闘メッセージID:しかし じゅもんは かきけされた!
027CAE STA $01,S Stack($01)=A
027CB0 JSL $C2B3F7 SR: $02B3F7 戦闘中呪文無効環境チェック(無効c=on)
027CB4 BCS #$18 if(c==on) goto $027CCE
027CB6 LDA #$0050 A=#$0050 戦闘メッセージID:のろいで からだが うごかない!
027CB9 STA $01,S Stack($01)=A
027CBB JSR $7CD5 SR: $027CD5 呪いで行動不能になるか決定する
027CBE BCS #$0E if(c==on) goto $027CCE
027CC0 PLA Pull A
027CC1 CLC c=off
027CC2 RTS return
027CC3 LDA #$0001 A=#$0001
027CC6 JSL $C2CB79 SR: $02CB79 引数:1#$2052 引数:2#$0040
027CCE PLA Pull A
027CCF JSL $C1A87A SR: $01A87A 上記#51,53,54の戦闘メッセージ表示
027CD3 SEC c=on
027CD4 RTS return
  • SR: $027CD5 呪いで行動不能になるか決定する
027CD5 LDA $23F2 A=$23F2
027CD8 CLC c=off
027CD9 BNE #$16 if(z==off) goto $027CF1
027CDB LDY $23EE Y=$23EE
027CDE JSL $C2CC4E SR: $02CC4E 引数:1#$007A 引数:2#$0008 まじんのオノで空振りする行動か?
027CE6 CLC c=off
027CE7 BEQ #$08 if(z==on) goto $027CF1
027CE9 JSR $7CF2 SR: $027CF2 はかいのつるぎ装備時に行動不能になるかを決定する
027CEC BCS #$03 if(c==on) goto $027CF1
027CEE JSR $7D11 SR: $027D11 じごくのよろい装備時に行動不能になるかを決定する
027CF1 RTS return
  • SR: $027CF2 はかいのつるぎ装備時に行動不能になるかを決定する(行動不能c=on)
027CF2 LDA $23E4 A=$23E4
027CF5 STA $2428 $2428=A
027CF8 LDA #$0014 A=#$0014 はかいのつるぎのアイテムID
027CFB STA $242C $242C=A
027CFE JSL $C2B87A SR: $02B87A アイテム装備チェック
027D02 CLC c=off
027D03 BVC #$0B if(v==off) goto $027D10
027D05 JSL $C012D1 SR: $0012D1 乱数発生 $00-FF
027D09 AND #$0003 A&=#$0003 1/4の確率
027D0C CLC c=off
027D0D BNE #$01 if(z==off) goto $027D10
027D0F SEC c=on
027D10 RTS return
  • SR: $027D11 じごくのよろい装備時に行動不能になるかを決定する(行動不能c=on)
027D11 LDA $23E4 A=$23E4
027D14 STA $2428 $2428=A
027D17 LDA #$004A A=#$004A じごくのよろいのアイテムID
027D1A STA $242C $242C=A
027D1D JSL $C2B87A SR: $02B87A アイテム装備チェック
027D21 CLC c=off
027D22 BVC #$0B if(v==off) goto $027D2F
027D24 LDA #$0002 A=#$0002 1/3の確率
027D27 JSL $C0133E SR: $00133E 乱数発生 00-A A(1B)
027D2B CLC c=off
027D2C BNE #$01 if(z==off) goto $027D2F
027D2E SEC c=on
027D2F RTS return

$027CF2, $027D11は確率計算の部分が少し異なりますが、基本的にやってることは同じはず。プログラマーの好みの差だったのでは、と思います。基本的にはこれといって特別なことはしていません。