必ず100%回復&スキル使い放題 限られた情報でどこまで深く探れるか PS2の改造はここが一番楽しい部分だと思います 今回の実際の手順で紹介するのは、いくつかの要素の情報を組み合わせ 全く違う要素のコードを探したときのもので シンボルで探した時と同じくらいのレベルのコードです。 また、どちらかと言えば過去の講座も全て読んだ人が対象なので 一部の簡単な説明については省いてある部分があります。 まず、色々な情報の基盤となる所持金を探します 雑誌掲載の前作(プロジェクト・ミネルヴァ)のワークコードでは 05F5E0FFが所持金に書き込まれているので このプロフェッショナルでも同じであると考えられます 早速E0FFで検索した所、怪しい場所が見つかりました05F5E0FFと0020A838からロードした数値を比較しています 最大値(仮)と比較されるこの0020A838は所持金のアドレスと思われます 早速、コード化して使ってみましょう 2020A838 05F5E0FF 〜暗号化〜 1CB72B60 17E9C70C 画面を見ると・・・所持金が最大値になっています 予想通り所持金のワークアドレスでした 次に、この所持金をベースにしてキャラステータスを探します セーブデータ比較や数値サーチプログラムコードなどを使用し アリシアのHPのアドレスが 0020BFCC 0020BFD0 の2個所に書き込まれている事が分かりました 上は現在値、下は最大値が格納されていました 実行ファイルを見てみると、2つ共どこかから参照されています
このHPアドレスの0020BFCCをスペースキーで参照先に設定し F3ボタンでどこから参照されているかを探します すると、多くの個所からこのアドレスの数値をロード&ストアしていて さらに、多くの場合「sw rt, $155c(base)」というように baseに155C+して値を扱っている事が分かりました
何箇所か、上の画像のように参照先は表示されていない 命令だけが表示されている個所でもヒットしました この時点では、味方や敵のアドレスはどうなってるか分かりませんが 少なくともアリシアは+155Cして数値を扱っているようなので この155Cを数値検索で探して、他のプログラムも調べて見ましょう すると、00128250でヒットした所から下方向に ちょっと興味深い処理をしている場所が見つかりました
HP現在値をロードした後に、除算、加算などを繰り返し その結果を再度HPの現在値にストアしています が、その計算結果がa2レジスタの数値より多かった場合は a2レジスタの数値にストアし直しています このa2レジスタにはどんな数値が入っているのか プログラムを少し遡って探してみると 00128238のlw命令でs0+1560のアドレスから a2レジスタに数値をロードしています s0+155Cが現在値のアドレスらしき場所なので この+1560は単純に、最大値のアドレスであると考えられます (現在HPに+4hしたアドレスが最大値のアドレスだからです) という事は、ここは戦闘中の回復スキルを使った時に使われる HP回復プログラムではないかと想像できます 早速、00128274の分岐命令を潰して 必ずa2レジスタがストアされるようにして実験です 戦闘中に、わざと味方を連れて敵の中に特攻し HPをギリギリまで減らして回復スキルを使ってみた所 スキルレベルの回復量などに関係なく アリシアも味方も100%まで回復するようになりました どうやら味方も同じく、s0+155CがHPアドレスのようです。 ここが回復スキル使用時の回復プログラムと特定は出来ましたが どのキャラも、スキルには使用回数制限があるので 使用回数を超えたらせっかくの100%回復も使い難くなってしまいます スキル回数が0では回復が使えないということは このプログラムより上で「スキルを使ったかどうか」や 「残り回数を減らす」などの命令があるハズなので そこを探せばスキル使い放題が作れそうです ちょっと遡ってみると、HPに近いアドレスである s0+15E8から値をロードして、FFFF(−0001)を加算し 同じアドレスにストアしている部分が見つかりました
キャラステータスに非常に近いところから数値をロードし 0001を減算して同じアドレスにストア しかもここは回復スキルを使うと必ず通る場所です 「いかにも」という感じがしますね(笑) このFFFFを0000にして、減算も加算もしないようにして コード化して実際に戦闘中にスキルを使用してみました A01281F4 24420000 〜暗号化〜 9C85021C 3894E7A5 すると、回復スキルでも、サーチスキルでも、バリアスキルでも スキルを使っても使用回数が減らなくなりました これで「いかにも」が「やっぱり」に変わりました(笑) (時間の都合で、実際には他のスキルでは動作確認が取れていません もう1,2箇所、怪しい場所があるのでもしかしたら・・・(汗)) このようにして、最初に所持金のワークコードを探しただけで そこからHPのアドレス、HPのアドレスから回復プログラム 回復プログラムからスキル使用時減算までが見つかりました 所持金がスキル回数、わらしべ長者のような発展の仕方ですね(笑) プログラムの流れや動作が見てすぐ分かる位まで慣れていれば もっとすんなり、もっと複雑な場所も探し出せるようになると思います