fc2ブログ
PS2の改造コードを調べてます。
注意事項
当ブログではPlayStation2、Wiiの改造コードをメインとしています。
PlayStation2の改造コードを使用するには
XT(エックスターミネーター)
PAR(プロアクションリプレイ)
などが必要です。なお当方のコードはXP(XT)で復号化した状態でのみ動作確認を行っています。
オンラインではコードを絶対に使用しないでください。
コード使用によって生じた損害等に当方は一切責任を持ちませんので
各自の責任の元で行ってください。
転載は禁止です。
リンクはご自由にどうぞ。

人気ブログランキングへ ブログランキング【くつろぐ】
コード更新履歴


ペルソナ3フェスの後日談でのコードサーチ記事です。
本編では異なるかもしれません。

今回取り上げるのは、バストアップ画像変更コードです。
ペルソナ3ではバストアップ画像がdisc上では
bustup/i_b_xxxx.binというファイルにあります。
画像を抜き出した方はご存知だと思います。

それを踏まえたうえで、ps2disで実行ファイルを開き
ラベルを眺めていくと
"bustup/i_b_%02d%x%1d.bin"
といういかにもバストアップ画像を指していると
思わられるラベルが見つかります。

そのラベルの参照元を調べると
アドレス00106b90、00106be8の2箇所から参照されている
ことがわかります。
今回は2箇所しかないので、特定のアドレスに意図的にフリーズする命令を
書き込みどちらが使われているか調べました。
どうやら後日談のラウンジでは00106be8のほうが使われているようです。

2007y06m27d_152214218.jpg
そこで、アドレス00106be8周辺の処理をみてみます。
するとa1に文字列"bustup/i_b_%02d%x%1d.bin"のアドレスを入れ
a2,a3,t0の値で番号を指定していることがなんとなくわかるかと思います。
試しに、a2,a3,t0の値をプログラムコードを作るなりして調べると
メティスに話しかけバストアップ画像を表示させたときは
a2=1D、a3=0A、t0=01
となっています。
これを"/i_b_%02d%x%1d.bin"に当てはめると
%dが10進数表示
%xが16進数表示なので
"/i_b_29a1.bin"となります。
C言語のprintf関数のフォーマットらしいです。詳しくはぐぐって下さい。
実際に抜き出した"/i_b_29A1.bin"の画像を確認すると同じ画像でした。

さてa2,a3,t0の値で画像を指定し
その値は、抜き出した画像ファイルの番号に対応していることが分ったので
実際に画像を任意の物に変更してみます。
今回表示させたいエリザベスの画像番号は16a2なので
a2=10、a3=0a、t0=02
となります。
これをコードにすると(復号化状態)
20106bec 64060010
20106bf0 6407000a
20106bf4 64080002

実際に確認してみると
fes_0004.jpg
無事変更され、ダンジョンでも使えるようです。
ただこのコードではどのメンバーに話しかけても
変更した画像になってしまいます。
特定のキャラにのみ反映させるには
空き領域にプログラムコードを作るなどして
処理をわける必要があります。

これでこの記事は終わりとなりますが
分りづらい点などありましたら、コメント下さい。
スポンサーサイト