前回からの続きです。まだ戦闘は始まっていません。
- SR: $02BF22 時の砂使用時処理+戦闘終了判定?
02BF22 | CLC | c=off | |
---|---|---|---|
02BF23 | PHP | Push P Flag | |
02BF24 | REP #$30 | m=off(A/M:16b) x=off(X/Y:16b) | |
02BF26 | PHA | Push A | |
02BF27 | PHX | Push X | |
02BF28 | PHY | Push Y | |
02BF29 | PHB | Push DB | |
02BF2A | PEA #$7E7E | Push #$7E7E | |
02BF2D | PLB | Pull DB | |
02BF2E | PLB | Pull DB | |
02BF2F | LDA $255F | A=$255F | |
02BF32 | CMP #$00CC | A==#$00CC? | 時の砂の戦闘行動ID |
02BF35 | BEQ #$05 | if(z==on) goto $02BF3C | |
02BF37 | CMP #$0143 | A==#$0143? | 時の砂の戦闘行動ID |
02BF3A | BNE #$4C | if(z==off) goto $02BF88 | |
02BF3C | LDA #$0007 | A=#$0007 | 戦闘終了フラグセット(時の砂) |
02BF3F | PEA #$2514 | Push #$2514 | |
02BF42 | PEA #$001E | Push #$001E | |
02BF45 | PEA #$7E00 | Push #$7E00 | |
02BF48 | JSL $C929B0 | SR: $0929B0 | RAM上情報変更 |
02BF4C | JSL $C47ABB | SR: $047ABB | 時の砂使用時に戦闘開始時の状態にリストアする |
02BF50 | LDA $255F | A=$255F | |
02BF53 | CMP #$0143 | A==#$0143? | 時の砂の戦闘行動ID |
02BF56 | BNE #$28 | if(z==off) goto $02BF80 | |
02BF58 | LDX $2555 | X=$2555 | |
02BF5B | JSL $C2EFA7 | SR: $02EFA7 引数:1#$204F 引数:2#$01FF | 戦闘中キャラクター情報取得 インデックス:X |
02BF63 | CMP #$0100 | A>=#$0100? | PC側なら#$100以上 |
02BF66 | BCC #$18 | if(c==off) goto $02BF80 | |
02BF68 | AND #$00FF | A&=#$00FF | |
02BF6B | LDY #$00D9 | Y=#$00D9 | 時の砂のアイテムID |
02BF6E | JSL $C45217 | SR: $045217 引数:1#$FD 引数:2#$07 引数:3#$FF 引数:4#$FE | アイテム装備チェック |
02BF76 | BCS #$08 | if(c==on) goto $02BF80 | |
02BF78 | JSL $C4535C | SR: $04535C 引数:1#$07 引数:2#$FF 引数:3#$FE 引数:4#$40 | アイテムをPCから削除する |
02BF80 | PLB | Pull DB | |
02BF81 | REP #$30 | m=off(A/M:16b) x=off(X/Y:16b) | |
02BF83 | PLY | Pull Y | |
02BF84 | PLX | Pull X | |
02BF85 | PLA | Pull A | |
02BF86 | PLP | Pull P Flag | |
02BF87 | RTL | return | |
02BF88 | PEA #$2514 | Push #$2514 | |
02BF8B | PEA #$001E | Push #$001E | |
02BF8E | PEA #$7E00 | Push #$7E00 | |
02BF91 | JSL $C92965 | SR: $092965 | RAM上情報取得 |
02BF95 | CMP #$0005 | A==#$0005? | |
02BF98 | BEQ #$E6 | if(z==on) goto $02BF80 | |
02BF9A | LDA #$0006 | A=#$0006 | |
02BF9D | JSL $C2E939 | SR: $02E939 引数:1#$02 | ターゲット情報セット |
02BFA2 | JSL $C2E966 | SR: $02E966 引数:1#$04 | ターゲット情報セット |
02BFA7 | JSL $C2E966 | SR: $02E966 引数:1#$00 | ターゲット情報セット |
02BFAC | JSL $C2E9C6 | SR: $02E9C6 引数:1#$28 | ターゲット情報セット |
02BFB1 | JSL $C2E9C6 | SR: $02E9C6 引数:1#$44 | ターゲット情報セット |
02BFB6 | JSL $C2E9C6 | SR: $02E9C6 引数:1#$54 | |
02BFBB | LDA $00 | A=DP($00) | |
02BFBD | ORA $02 | Aor=DP($02) | |
02BFBF | BNE #$62 | if(z==off) goto $02C023 | |
02BFC1 | JSL $C2E939 | SR: $02E939 引数:1#$4E | |
02BFC6 | LDA $00 | A=DP($00) | |
02BFC8 | ORA $02 | Aor=DP($02) | |
02BFCA | BEQ #$20 | if(z==on) goto $02BFEC | |
02BFCC | LDA #$0006 | A=#$0006 | |
02BFCF | JSL $C2E939 | SR: $02E939 引数:1#$02 | |
02BFD4 | JSL $C2E9C6 | SR: $02E9C6 引数:1#$28 | |
02BFD9 | JSL $C2E9C6 | SR: $02E9C6 引数:1#$44 | |
02BFDE | JSL $C2E9C6 | SR: $02E9C6 引数:1#$54 | |
02BFE3 | JSL $C252DF | SR: $0252DF | |
02BFE7 | CMP #$0002 | A>=#$0002? | |
02BFEA | BCS #$65 | if(c==on) goto $02C051 | |
02BFEC | JSL $C2E939 | SR: $02E939 引数:1#$52 | |
02BFF1 | LDA $00 | A=DP($00) | |
02BFF3 | ORA $02 | Aor=DP($02) | |
02BFF5 | BEQ #$27 | if(z==on) goto $02C01E | |
02BFF7 | LDA #$0006 | A=#$0006 | |
02BFFA | JSL $C2E939 | SR: $02E939 引数:1#$02 | |
02BFFF | JSL $C2E966 | SR: $02E966 引数:1#$00 | |
02C004 | JSL $C2E9C6 | SR: $02E9C6 引数:1#$28 | |
02C009 | JSL $C2E9C6 | SR: $02E9C6 引数:1#$44 | |
02C00E | JSL $C2E9C6 | SR: $02E9C6 引数:1#$54 | |
02C013 | LDA $00 | A=DP($00) | |
02C015 | ORA $02 | Aor=DP($02) | |
02C017 | BEQ #$05 | if(z==on) goto $02C01E | |
02C019 | JSR $C096 | SR: $02C096 | 戦闘参加キャラクター生存チェック(z=off生存) |
02C01C | BNE #$33 | if(z==off) goto $02C051 | |
02C01E | JSR $C0A5 | SR: $02C0A5 | 全滅時馬車メンバー戦闘参加処理(参加不可c=on) |
02C021 | BCS #$4C | if(c==on) goto $02C06F | |
02C023 | JSR $C096 | SR: $02C096 | 戦闘参加キャラクター生存チェック(z=off生存) |
02C026 | BNE #$42 | if(z==off) goto $02C06A | |
02C028 | PEA #$2513 | Push #$2513 | |
02C02B | PEA #$00C0 | Push #$00C0 | |
02C02E | PEA #$7E00 | Push #$7E00 | |
02C031 | JSL $C92965 | SR: $092965 | RAM上情報取得 |
02C035 | BEQ #$3D | if(z==on) goto $02C074 | |
02C037 | PEA #$2513 | Push #$2513 | |
02C03A | PEA #$0030 | Push #$0030 | |
02C03D | PEA #$7E00 | Push #$7E00 | |
02C040 | JSL $C92965 | SR: $092965 | RAM上情報取得 |
02C044 | BEQ #$2E | if(z==on) goto $02C074 | |
02C046 | DEC | A– | |
02C047 | BEQ #$30 | if(z==on) goto $02C079 | |
02C049 | DEC | A– | |
02C04A | BEQ #$32 | if(z==on) goto $02C07E | |
02C04C | LDA #$0001 | A=#$0001 | |
02C04F | BRA #$30 | goto $02C081 | |
02C051 | STZ $2547 | $2547=#$00 | |
02C054 | LDA #$0001 | A=#$0001 | |
02C057 | PEA #$2516 | Push #$2516 | |
02C05A | PEA #$0010 | Push #$0010 | |
02C05D | PEA #$7E00 | Push #$7E00 | |
02C060 | JSL $C929B0 | SR: $0929B0 | RAM上情報変更 |
02C064 | LDA #$0002 | A=#$0002 | 戦闘終了フラグ(全消し?) |
02C067 | STA $2545 | $2545=A | |
02C06A | LDA #$0000 | A=#$0000 | 戦闘終了フラグ(フリーズ?) |
02C06D | BRA #$12 | goto $02C081 | |
02C06F | LDA #$0004 | A=#$0004 | 戦闘終了フラグ(全滅) |
02C072 | BRA #$0D | goto $02C081 | |
02C074 | LDA #$0006 | A=#$0006 | 戦闘終了フラグ(モンスター不在) |
02C077 | BRA #$08 | goto $02C081 | |
02C079 | LDA #$0003 | A=#$0003 | 戦闘終了フラグ(モンスター逃走) |
02C07C | BRA #$03 | goto $02C081 | |
02C07E | LDA #$0002 | A=#$0002 | 戦闘終了フラグ(勝利) |
02C081 | PEA #$2514 | Push #$2514 | |
02C084 | PEA #$001E | Push #$001E | |
02C087 | PEA #$7E00 | Push #$7E00 | |
02C08A | JSL $C929B0 | SR: $0929B0 | RAM上情報変更 |
02C08E | PLB | Pull DB | |
02C08F | REP #$30 | m=off(A/M:16b) x=off(X/Y:16b) | |
02C091 | PLY | Pull Y | |
02C092 | PLX | Pull X | |
02C093 | PLA | Pull A | |
02C094 | PLP | Pull P Flag | |
02C095 | RTL | return |
前半は時の砂を使った時の処理です。時の砂を手持ちのアイテムから削除し、退避しておいた戦闘開始直後の状態をりすとあしています。後半はどうやらパーティの状態に応じて戦闘終了フラグをセットしているようです。また、パーティが全滅していたら馬車待機中のキャラクターを戦闘に参加させたりしているようです。
- 全滅時馬車メンバー戦闘参加処理(参加する仲間がいないc=on)
02C0A5 | PHX | Push X | |
---|---|---|---|
02C0A6 | PHY | Push Y | |
02C0A7 | JSL $C2E939 | SR: $02E939 引数:1#$00 | |
02C0AC | JSL $C2E9C6 | SR: $02E9C6 引数:1#$04 | |
02C0B1 | JSL $C2E9C6 | SR: $02E9C6 引数:1#$28 | |
02C0B6 | JSL $C2E9C6 | SR: $02E9C6 引数:1#$44 | |
02C0BB | JSL $C2E9C6 | SR: $02E9C6 引数:1#$54 | |
02C0C0 | LDA $00 | A=DP($00) | |
02C0C2 | ORA $02 | Aor=DP($02) | 馬車にいる仲間がいないor全員死んでいる |
02C0C4 | BEQ #$06 | if(z==on) goto $02C0CC | |
02C0C6 | JSL $C2C6B1 | SR: $02C6B1 | 馬車が使える状態か(使えるz=on) |
02C0CA | BEQ #$04 | if(z==on) goto $02C0D0 | |
02C0CC | PLY | Pull Y | |
02C0CD | PLX | Pull X | |
02C0CE | SEC | c=on | |
02C0CF | RTS | return | |
02C0D0 | JSL $C2CA59 | SR: $02CA59 | |
02C0D4 | JSL $C0268F | SR: $00268F | |
02C0D8 | SEP #$20 | m=on(A/M:8b) | |
02C0DA | LDA #$00 | A=#$00 | |
02C0DC | STA $04 | DP($04)=A | |
02C0DE | STA $05 | DP($05)=A | |
02C0E0 | STA $06 | DP($06)=A | |
02C0E2 | STA $07 | DP($07)=A | |
02C0E4 | REP #$20 | m=off(A/M:16b) | |
02C0E6 | JSL $C42B1C | SR: $042B1C 引数:1#$05 引数:2#$08 | パーティ人数取得? |
02C0EC | LDX #$0000 | X=#$0000 | |
02C0EF | LDY #$0000 | Y=#$0000 | |
02C0F2 | JSL $C42C26 | SR: $042C26 引数:1#$05 引数:2#$FD 引数:3#$FF | キャラクターインデックス取得? |
02C0F9 | STA $2587 | $2587=A | |
02C0FC | PHX | Push X | |
02C0FD | PHY | Push Y | |
02C0FE | JSL $C2C3BA | SR: $02C3BA | 主人公が戦闘に参加しているか(該当c=off) |
02C102 | STX $258B | $258B=X | |
02C105 | PLY | Pull Y | |
02C106 | PLX | Pull X | |
02C107 | BCS #$20 | if(c==on) goto $02C129 | |
02C109 | JSR $C14D | SR: $02C14D | 指定したキャラクターが戦闘に参加できるか(不可c=on) |
02C10C | BCS #$1B | if(c==on) goto $02C129 | |
02C10E | SEP #$20 | m=on(A/M:8b) | |
02C110 | LDA $2587 | A=$2587 | |
02C113 | STA $04,X | DP($04)+X=A | |
02C115 | REP #$20 | m=off(A/M:16b) | |
02C117 | AND #$00FF | A&=#$00FF | |
02C11A | STA $5A24 | $5A24=A | キャラクター名をセット |
02C11D | JSL $C02A16 | SR: $002A16 引数:1#$0173 | 戦闘メッセージ表示「馬車から飛び出した」 |
02C123 | INX | X++ | |
02C124 | CPX #$0004 | X>=#$0004? | |
02C127 | BCS #$0A | if(c==on) goto $02C133 | |
02C129 | INY | Y++ | |
02C12A | CPY $08 | Y>=DP($08)? | |
02C12C | BCC #$C4 | if(c==off) goto $02C0F2 | |
02C12E | CPX #$0001 | X>=#$0001? | |
02C131 | BCC #$99 | if(c==off) goto $02C0CC | |
02C133 | JSL $C42FDC | SR: $042FDC 引数:1#$04 | |
02C138 | JSL $C2C631 | SR: $02C631 | パーティウィンドウ再描画 |
02C13C | JSL $C0268F | SR: $00268F | |
02C140 | LDA #$0000 | A=#$0000 | |
02C143 | STA $255B | $255B=A | |
02C146 | STA $255D | $255D=A | |
02C149 | PLY | Pull Y | |
02C14A | PLX | Pull X | |
02C14B | CLC | c=off | |
02C14C | RTS | return |
ここでは馬車が使える状態で生存者がいれば4人まで駆り出すという処理をしているようです。
コメント