ASL(A<<1)2回で4倍になるのが手軽だったのでとりあえず4倍にしてしまいました。思いっきり手抜きです。それと遊び人が先頭にいなくても条件に当てはまるようにしました。
- SR: $03EE64 格闘場共通
略 | |||
---|---|---|---|
03EE73 | JSR $F717 | SR: $03F717 | |
03EE76 | BCS #$07 | if(c==on) goto $03EE7F | |
03EE78 | NOP | ||
略 |
格闘場の処理は全てSR: $03EE64で行われます。これまたうまいこと空きがないので「通常の掛け金計算処理+Lv10以上の遊び人がいる場合に掛け金を4倍にしてメッセージ表示」をセットにして実装することにします。通常の場合は掛け金の計算だけして所定の変数($7E3376)にセットしてリターンし、通常のメッセージ表示(#$09BB)を行います。遊び人がいる場合は掛け金計算+メッセージ表示を行ってリターンし、c=onを返すことで通常のメッセージ表示処理をスキップし、賭けるモンスターのリストを表示する処理まで飛ばします。
- SR: $03F717 Lv10以上の遊び人がパーティにいる場合は掛け金を4倍にしてメッセージ表示(該当c=on)(新SR)
03F717 | PHA | Push A | |
---|---|---|---|
03F718 | PHX | Push X | |
03F719 | JSL $C4297C | SR: $04297C 引数:1#$01 引数:2#$FE | |
03F71F | DEX | X– | |
03F720 | JSL $C46951 | SR: $046951 引数:1#$01 引数:2#$FE 引数:3#$FF | |
03F727 | CMP #$0005 | A==#$0005? | |
03F72A | BNE #$0C | if(z==off) goto $03F738 | |
03F72C | JSL $C42FEB | SR: $042FEB 引数:1#$01 引数:2#$FE 引数:3#$FF | |
03F733 | CMP #$000A | A>=#$000A? | |
03F736 | BCS #$0D | if(c==on) goto $03F745 | |
03F738 | DEX | X– | |
03F739 | BPL #$E5 | if(n==off) goto $03F720 | |
03F73B | PLX | Pull X | |
03F73C | PLA | Pull A | |
03F73D | JSR $EF29 | SR: $03EF29 | |
03F740 | STA $3376 | $3376=A | |
03F743 | CLC | c=off | |
03F744 | RTS | return | |
03F745 | PLX | Pull X | |
03F746 | PLA | Pull A | |
03F747 | ASL | A<<1 | |
03F748 | PHA | Push A | |
03F749 | ASL | A<<1 | |
03F74A | ASL | A<<1 | |
03F74B | ADC $01,S | A+=(Stack($01)+c) | |
03F74D | ASL | A<<1 | |
03F74E | ASL | A<<1 | |
03F74F | STZ $BE82 | $BE82=#$00 | |
03F752 | STA $BE81 | $BE81=A | |
03F755 | PLX | Pull X | |
03F756 | JSL $C1A92E | SR: $01A92E 引数:1#$0FD5 | |
03F75C | STA $3376 | $3376=A | |
03F75F | SEC | c=on | |
03F760 | RTS | return |
処理自体はそれほど複雑ではありません。SR: $04297C…でパーティ人数をXレジスタにセットし0になるまでループします。SR: $046951…で職業IDをAレジスタにセットし、職業IDが遊び人(#$05)であれば、SR: $042FEB…でレベルを取得しLvが10以上かチェックします。条件に該当しなければ通常どおりSR: $03EF29でLv×10の掛け金計算を行い結果を$7E3376にセットしてc=offでリターンします。条件に該当する場合は、Lv×10をしたあと($03F747-4B)、さらに4倍し(03F74D-4E)し、新しく追加したメッセージ(#$0FD5)を表示してc=onにしてリターンします。これで変更は終わりです。
こういうRAMの役割がはっきり判明している部分の修正は比較的楽なんですけどね…。変更の範囲が低レベル(画像の操作とか)になるともうなにがなにやらさっぱりです。
コメント