ようやく次回からターンが開始します。前置きが長過ぎる。
- SR: $0263A2 行動順序補正メイン
0263A2 | PHP | Push P Flag | |
---|---|---|---|
0263A3 | PHB | Push DB | |
0263A4 | REP #$30 | m=off(A/M:16b) x=off(X/Y:16b) | |
0263A6 | PEA #$7E7E | Push #$7E7E | |
0263A9 | PLB | Pull DB | |
0263AA | PLB | Pull DB | |
0263AB | LDX #$0000 | X=#$0000 | |
0263AE | TXY | Y=X | |
0263AF | JSR $63C0 | SR: $0263C0 | 行動順序補正等 |
0263B2 | INY | Y++ | |
0263B3 | INY | Y++ | |
0263B4 | INX | X++ | |
0263B5 | CPX #$0018 | X>=#$0018? | 最大キャラクター数分ループ |
0263B8 | BCC #$F5 | if(c==off) goto $0263AF | |
0263BA | JSR $5DAC | SR: $025DAC | ターン中の行動順序設定 |
0263BD | PLB | Pull DB | |
0263BE | PLP | Pull P Flag | |
0263BF | RTL | return |
- SR: $0263C0 行動順序補正等
0263C0 | LDA #$0000 | A=#$0000 | |
---|---|---|---|
0263C3 | STA $2484,Y | $2484+Y=A | |
0263C6 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2050 引数:2#$0002 | 生死判定? |
0263CE | BEQ #$65 | if(z==on) goto $026435 | |
0263D0 | STX $2428 | $2428=X | |
0263D3 | JSL $C2BE8A | SR: $02BE8A 引数:1#$1C | 生死判定? |
0263D8 | BCS #$5B | if(c==on) goto $026435 | |
0263DA | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2034 引数:2#$01FF | 戦闘行動ID取得 |
0263E2 | STA $242A | $242A=A | |
0263E5 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2035 引数:2#$00FE | ターゲット情報取得 |
0263ED | STA $2430 | $2430=A | |
0263F0 | JSR $6436 | SR: $026436 | アストロン詠唱ならターンの最初にする |
0263F3 | JSL $C2CA5B | SR: $02CA5B 引数:1#$2045 | ターン中の素早さ取得 |
0263F9 | CLC | c=off | |
0263FA | ADC $00 | A+=(DP($00)+c) | |
0263FC | INC | A++ | |
0263FD | STA $2484,Y | $2484+Y=A | |
026400 | JSR $6446 | SR: $026446 | 般若の面装備してなければ防御を有効にする |
026403 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2036 引数:2#$01FF | 戦闘行動ID取得 |
02640B | STA $242A | $242A=A | |
02640E | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2037 引数:2#$00FE | ターゲット情報取得 |
026416 | STA $2430 | $2430=A | |
026419 | JSR $6446 | SR: $026446 | |
02641C | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2038 引数:2#$01FF | 戦闘行動ID取得 |
026424 | STA $242A | $242A=A | |
026427 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2039 引数:2#$00FE | ターゲット情報取得 |
02642F | STA $2430 | $2430=A | |
026432 | JSR $6446 | SR: $026446 | 般若の面装備してなければ防御を有効にする |
026435 | RTS | return |
- SR: $025DAC ターン中の行動順決定
025DAC | LDX #$0016 | X=#$0016 | |
---|---|---|---|
025DAF | LDA #$FFFF | A=#$FFFF | 初期化処理 |
025DB2 | STA $23B8,X | $23B8+X=A | |
025DB5 | DEX | X– | |
025DB6 | DEX | X– | |
025DB7 | BPL #$F9 | if(n==off) goto $025DB2 | |
025DB9 | LDY #$0000 | Y=#$0000 | |
025DBC | LDA #$FFFF | A=#$FFFF | |
025DBF | STA $00 | DP($00)=A | |
025DC1 | INC | A++ | |
025DC2 | TAX | X=A | |
025DC3 | CMP $2484,X | A>=$2484+X? | |
025DC6 | BCS #$05 | if(c==on) goto $025DCD | |
025DC8 | LDA $2484,X | A=$2484+X | |
025DCB | STX $00 | DP($00)=X | |
025DCD | INX | X++ | |
025DCE | INX | X++ | |
025DCF | CPX #$0030 | X>=#$0030? | |
025DD2 | BCC #$EF | if(c==off) goto $025DC3 | |
025DD4 | LDX $00 | X=DP($00) | |
025DD6 | CPX #$FFFF | X==#$FFFF? | |
025DD9 | BEQ #$12 | if(z==on) goto $025DED | |
025DDB | STZ $2484,X | $2484+X=#$00 | |
025DDE | TXA | A=X | |
025DDF | LSR | A>>1 | |
025DE0 | SEP #$20 | m=on(A/M:8b) | |
025DE2 | STA $23B8,Y | $23B8+Y=A | |
025DE5 | REP #$20 | m=off(A/M:16b) | |
025DE7 | INY | Y++ | |
025DE8 | CPY #$0018 | Y>=#$0018? | |
025DEB | BCC #$CF | if(c==off) goto $025DBC | |
025DED | RTS | return |
大雑把に言うと補正後ターン中の素早さの早い順から行動順を並べ替えているだけ、だったはず。
コメント