通常のコードが見付けられる様になった人は次はこれにチャレンジです ワークコードからプログラムを割り出す解析方法です すでに私がワークコードを出しているので それをベースにして作ってみましょう。 今回もFF]インターナショナルを例に書きます 題材は戦闘終了後全員のAP MAXの解析方法ですが 最大値検索でもちょっと触れたように APも最大値で発見出来ます でも別の方法でも発見する事が可能です。 まず、プログラムを割り出したいワークコードを 複合化してPS2DISでそのアドレスへ飛びます 今回は戦闘終了後のAP MAX Tidus(ティーダ) 1CA87B18 1DBC9E0C のコードを使います。 複合化すると2031F8F0 3B9AC9FFになると思います アドレス部分の先頭の2の部分はコードの分類で 通常はここが0です、解析も0の状態で行いますので 0031F8F0が使用するアドレスとなります。 では、アドレス部分の0031F8F0に ツールバーの編集→指定アドレスにジャンプで行きます 0031f8f0についたら、キーボードのスペースキーを押して 参照先アドレスに指定し、F3を押してください 今回もいくつかの候補が出てきますが 最大値検索で登場した最大値が近くにあるアドレスを探します 入手できるAPの上限はギルと同じなので 近くに3B9AC9FFがあるアドレスを探します。 すると、001dcd88の近くには最大値が存在します 後は、前回同様そこから下のストア命令を探します すると001dcda4にストア命令があります このストア命令は v0の数値をs0+0000したアドレスに書き込む という意味です、このv0を書き込む部分を 最大値を書き込むに変えてしまえば 戦闘終了後にAPがMAXになるハズです。 ストア命令の上の方を見ていくと 最大値はa2レジスタに格納されているのが分かります なのでsw a2,$0000(s0)に書き変えればOKです sw a2,$0000(s0)は数値で表すとAE060000になるので 201dcda4 AE060000を暗号化すればOKです 実際に効果を試してみた所 APを入手したキャラ全員が APを大量にゲットする事が出来ました という事で戦闘終了後AP MAXの完成です 実際に変更する部分はAE02をAE06に変えるだけなので 3C8C4ECA 1456E7A3でも出来ますし 4C8C4ECA 145681A3でも出来ます。 しかし、このストア命令が存在する場所が少し不自然です jal命令でストアする前に 別の個所にプログラム処理が飛んでいます しかし、そのプログラムへ飛んでみた所 a2レジスタ自体は数値が変化せず そのまま元のプログラムへ戻っているので問題ありません。