前回に引き続き、戦闘行動実行の部分を見ていきます。今回は行動主体が戦闘行動を実行出来るかどうかの判定部分です。ここで条件に該当した場合は戦闘行動が実行されません。
- 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は確率計算の部分が少し異なりますが、基本的にやってることは同じはず。プログラマーの好みの差だったのでは、と思います。基本的にはこれといって特別なことはしていません。
コメント