DQ3戦闘部分解説12

ようやく次回からターンが開始します。前置きが長過ぎる。

  • SR: $0263A2 行動順序補正メイン
0263A2PHPPush P Flag
0263A3PHBPush DB
0263A4REP #$30m=off(A/M:16b) x=off(X/Y:16b)
0263A6PEA #$7E7EPush #$7E7E
0263A9PLBPull DB
0263AAPLBPull DB
0263ABLDX #$0000X=#$0000
0263AETXYY=X
0263AFJSR $63C0SR: $0263C0行動順序補正等
0263B2INYY++
0263B3INYY++
0263B4INXX++
0263B5CPX #$0018X>=#$0018?最大キャラクター数分ループ
0263B8BCC #$F5if(c==off) goto $0263AF
0263BAJSR $5DACSR: $025DACターン中の行動順序設定
0263BDPLBPull DB
0263BEPLPPull P Flag
0263BFRTLreturn

  • SR: $0263C0 行動順序補正等
0263C0LDA #$0000A=#$0000
0263C3STA $2484,Y$2484+Y=A
0263C6JSL $C2CAD9SR: $02CAD9 引数:1#$2050 引数:2#$0002生死判定?
0263CEBEQ #$65if(z==on) goto $026435
0263D0STX $2428$2428=X
0263D3JSL $C2BE8ASR: $02BE8A 引数:1#$1C生死判定?
0263D8BCS #$5Bif(c==on) goto $026435
0263DAJSL $C2CAD9SR: $02CAD9 引数:1#$2034 引数:2#$01FF戦闘行動ID取得
0263E2STA $242A$242A=A
0263E5JSL $C2CAD9SR: $02CAD9 引数:1#$2035 引数:2#$00FEターゲット情報取得
0263EDSTA $2430$2430=A
0263F0JSR $6436SR: $026436アストロン詠唱ならターンの最初にする
0263F3JSL $C2CA5BSR: $02CA5B 引数:1#$2045ターン中の素早さ取得
0263F9CLCc=off
0263FAADC $00A+=(DP($00)+c)
0263FCINCA++
0263FDSTA $2484,Y$2484+Y=A
026400JSR $6446SR: $026446般若の面装備してなければ防御を有効にする
026403JSL $C2CAD9SR: $02CAD9 引数:1#$2036 引数:2#$01FF戦闘行動ID取得
02640BSTA $242A$242A=A
02640EJSL $C2CAD9SR: $02CAD9 引数:1#$2037 引数:2#$00FEターゲット情報取得
026416STA $2430$2430=A
026419JSR $6446SR: $026446
02641CJSL $C2CAD9SR: $02CAD9 引数:1#$2038 引数:2#$01FF戦闘行動ID取得
026424STA $242A$242A=A
026427JSL $C2CAD9SR: $02CAD9 引数:1#$2039 引数:2#$00FEターゲット情報取得
02642FSTA $2430$2430=A
026432JSR $6446SR: $026446般若の面装備してなければ防御を有効にする
026435RTSreturn

  • SR: $025DAC ターン中の行動順決定
025DACLDX #$0016X=#$0016
025DAFLDA #$FFFFA=#$FFFF初期化処理
025DB2STA $23B8,X$23B8+X=A
025DB5DEXX–
025DB6DEXX–
025DB7BPL #$F9if(n==off) goto $025DB2
025DB9LDY #$0000Y=#$0000
025DBCLDA #$FFFFA=#$FFFF
025DBFSTA $00DP($00)=A
025DC1INCA++
025DC2TAXX=A
025DC3CMP $2484,XA>=$2484+X?
025DC6BCS #$05if(c==on) goto $025DCD
025DC8LDA $2484,XA=$2484+X
025DCBSTX $00DP($00)=X
025DCDINXX++
025DCEINXX++
025DCFCPX #$0030X>=#$0030?
025DD2BCC #$EFif(c==off) goto $025DC3
025DD4LDX $00X=DP($00)
025DD6CPX #$FFFFX==#$FFFF?
025DD9BEQ #$12if(z==on) goto $025DED
025DDBSTZ $2484,X$2484+X=#$00
025DDETXAA=X
025DDFLSRA>>1
025DE0SEP #$20m=on(A/M:8b)
025DE2STA $23B8,Y$23B8+Y=A
025DE5REP #$20m=off(A/M:16b)
025DE7INYY++
025DE8CPY #$0018Y>=#$0018?
025DEBBCC #$CFif(c==off) goto $025DBC
025DEDRTSreturn

大雑把に言うと補正後ターン中の素早さの早い順から行動順を並べ替えているだけ、だったはず。

コメント

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