実装を始めます。ちなみに、今回からコメント部分の表記の一部(特にアドレス部分)が変更になります。
- SR: $02D807 戦士防御時のダメージ軽減処理
| 略 | |||
|---|---|---|---|
| 02D896 | CPY $2604 | Y==$2604? | |
| 02D899 | BEQ #$02 | if(z==on) goto $02D89D | |
| 02D89B | BCS #$F2 | if(c==on) goto $02D88F | |
| 02D89D | STY $2606 | $2606=Y | |
| 02D8A0 | LDA $2604 | A=$2604 | |
| 02D8A3 | SEC | c=on | |
| 02D8A4 | SBC $2606 | A-=($2606+c) | |
| 02D8A7 | JSL $C2EEA6 | SR: $02EEA6 | 戦士防御時の補正率分子取得 |
| 略 |
- SR: $02EEA6 戦士防御時の補正率分子取得
| 02EEA6 | PHA | Push A | |
|---|---|---|---|
| 02EEA7 | LDY $2606 | Y=$2606 | |
| 02EEAA | LDA $243E,Y | A=$243E+Y | |
| 02EEAD | AND #$00FF | A&=#$00FF | 戦士の戦闘中ID取得 |
| 02EEB0 | STA $2428 | $2428=A | |
| 02EEB3 | JSL $C2C240 | SR: $02C240 引数:1#$0A | 戦士のレベル取得 |
| 02EEB8 | PHA | Push A | |
| 02EEB9 | LDX #$0000 | X=#$0000 | Xは構造体のインデックス |
| 02EEBC | JSL $C903EE | SR: $0903EE 引数:1#$00 引数:2#$000A 引数:3#$C23CB2 引数:4#$0000 | 構造体アクセス 設定値の「レベル」を取得 |
| 02EEC8 | CMP $01,S | A==Stack($01)? | 実際のレベルと比較 |
| 02EECA | BEQ #$09 | if(z==on) goto $02EED5 | |
| 02EECC | BCS #$06 | if(c==on) goto $02EED4 | |
| 02EECE | INX | X++ | |
| 02EECF | CPX #$0004 | X>=#$0004? | |
| 02EED2 | BCC #$E8 | if(c==off) goto $02EEBC | |
| 02EED4 | DEX | X– | |
| 02EED5 | PLA | Pull A | |
| 02EED6 | JSL $C9050D | SR: $09050D 引数:1#$00 引数:2#$000A 引数:3#$C23CB2 引数:4#$30 | 構造体アクセス X番目の先頭アドレスをDP(第4引数)にセット |
| 02EEE1 | PLA | Pull A | 戦士から何人後ろかの値をPull |
| 02EEE2 | ASL | A<<1 | |
| 02EEE3 | INC | A++ | |
| 02EEE4 | INC | A++ | |
| 02EEE5 | TAY | Y=A | |
| 02EEE6 | LDA $30 | A=$(DP[$30])+Y | Indirect Longでアクセス |
| 02EEE8 | RTL | return |
実装自体はこれで終わりです。もともとの実装をちょっと変えるだけなので変更量自体はたいしたことはありません。戦士が該当レベルになったら呪文習得のようなメッセージをだそうかと思っているんですが、どういう文面にしようか迷い中。また、補正値のほうは
| 戦士レベル | 補正率1 | 補正率2 | 補正率3 | 補正率4 |
|---|---|---|---|---|
| 0 | 0100 | 0100 | 0100 | 0100 |
| 20 | 0180 | 0100 | 0100 | 00CC |
| 35 | 0180 | 0100 | 00CC | 00B3 |
| 50 | 0180 | 00CC | 00B3 | 0099 |
というふうにするか、
| 戦士レベル | 補正率1 | 補正率2 | 補正率3 | 補正率4 |
|---|---|---|---|---|
| 0 | 0100 | 0100 | 0100 | 0100 |
| 20 | 0180 | 00CC | 0100 | 0100 |
| 35 | 0180 | 00CC | 00B3 | 0100 |
| 50 | 0180 | 00CC | 00B3 | 0099 |
というふうにしようか迷い中。後者のほうが一番守りたい最後尾に3段階目(レベルはともかく)にならないと効果が届かないので育てる意義があるかなあと。設定値を変えるだけで対応できるのでしばらく寝かせて考えます。


コメント