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