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


コメント