今回から実作業を行います。全ステータスについて同様の作業を書くのはアレなので最大HPを代表して紹介することにします(実際の作業は全てのステータスにおいて同様の作業をしています)。
- SR: $04306F 最大HP取得
04306F | JSR $F938 | SR: $04F938 | 最大HPをシステム最大値でクリップする |
---|---|---|---|
043072 | RTL | return |
- SR: $043073 最大HP変更
043073 | JSL $C5FD31 | SR: $05FD31 | 最大HPをシステム最大値でクリップする |
---|---|---|---|
略 |
- SR: $04307F すごろく場・種使用時の最大HPのステータスアップ処理
略 | |||
---|---|---|---|
0430A4 | JSL $C4FF63 | SR: $04FF63 | 最大HP加算+加算後のステータスを返す |
略 |
- SR: $04FF63 最大HP加算+加算後のステータスを返す(新SR)
04FF63 | PHA | Push A | |
---|---|---|---|
04FF64 | JSL $C5FEDA | SR: $05FEDA | 最大HP職業別最大値取得 |
04FF68 | PHA | Push A | |
04FF69 | JSL $C4306F | SR: $04306F | 最大HP取得 |
04FF6D | CMP $01,S | A==or>=Stack($01)? | |
04FF6F | PLA | Pull A | |
04FF70 | PLA | Pull A | |
04FF71 | BCS #$05 | if(c==on) goto $04FF78 | |
04FF73 | JSL $C430AE | SR: $0430AE | 最大HP加算+加算後のステータスを返す |
04FF77 | RTL | return | |
04FF78 | JSL $C4306F | SR: $04306F | 最大HP取得 |
04FF7C | RTL | return |
- SR: $043C83 レベルアップ時のステータスアップ、呪文拾得処理?
略 | |||
---|---|---|---|
043E37 | JSL $C4FF63 | SR: $04FF63 | 最大HP加算+加算後のステータスを返す |
略 |
これで一応仕様通りの動作をするはずです。ステータス取得時に職業最大値でクリップするのをやめているので、オリジナルのセーブデータを引き継いだ場合にステータス表示が職業最大値以上になる場合があります。というわけで、テストを簡単に行うためにデバッグメニューの「やけくそにつよい」を変え、全てのステータスを現職業の最大値にするようにしまいた。作業量は多いわりに大事な箇所は1行しかないので詳細は省略します。興味がある人はSR: $0DD5F9と$07C87A-07CB3CのSR群を見てみてください。
パッチの修正自体は終わりました。簡単なテストもOKっぽかったので、もう少しテストをして、数日中に修正したパッチをろだにうpします。
コメント