このすぐ上のリンク先で紹介している
「5.パッドアドレス特定編」
これはscePadReadが無ければ探す事が出来ませんが
ソフトによってはscePadReadの仕様が独自に変更されていたり
参照先を見ても、カオスレギオンの様に作られておらず
他の関数でもっと複雑に処理している事もあります

今回はちょっと変わった方法を紹介します
場合によっては使えるソフトも限られてしまう時もありますが
scePadReadから探すよりは使いやすい事もあるので
この方法も覚えておいて損はありません。


サモンナイト3を使って実際にその方法を見てみましょう

まず、シンボル残りのソフトからシンボルを移植します
トルネコ3を使うとサモンナイト3にもscePadReadは移植されますが
今回はscePadReadではなく、他のシンボルを使います

関数ラベルの移植が終わったら
ラベル一覧を開いて「pad」と入力します
すると「PadInfo」というラベルが見つかると思います
最近のソフトでは「PadInfo」ですが、昔のソフトはちょっと違い
「PadData」になっているので注意して下さい


このシンボルはscePadReadが移植されないようなソフトでも
ほぼ確実に移植される貴重なシンボルです
見つかったら、そのラベルが貼られているアドレスに移動します
サモンナイト3の場合、0029db50にそのラベルが貼られています。


実は、このPadInfoラベルが貼られているアドレスには
「マイナス形式のパッドアドレスのアドレス値から2hマイナスした数値」
が格納されている事が独自の調査で判明しています
つまり、ゲーム中に0029db50に入ってる数値が調べられれば
それだけでパッドアドレスを求める事が可能なのです


肝心の数値の調べ方ですが

バイトコピー(Ver1.6j以降専用)
5xxxxxxx yyyyyyyy 
zzzzzzzz 00000000
アドレスxxxxからyyyyバイト分を
アドレスzzzzにコピーする
を使用すると効果的なので、これを使います。


実際にバイトコピーを使ってパッドアドレスを求めて見ましょう
バイトコピーは、別ページで説明している通り
「他のアドレスに指定した範囲の数値をコピーする」という物です
コピー先のアドレスは、桁数の大きい物を選びましょう
桁数が少ないとコピーした数値が上手く表示されません
サモンナイト3は所持金のケタ数が大きいのでこれを使ってみましょう
所持金のアドレスは複合状態で00297F64です。
サモンナイト3には0098967Fが最高のアドレスしかないので
仕方なく所持金のアドレスを使用していますが
実際には、最大値が05F5E0FF以上のアドレスがあれば
それを使用した方が確実です


アドレス0029DB50から00297F644バイト分のデータをコピーするので
5029DB50 00000004
00297F64 00000000
〜暗号化〜
8CC05C78 1456E7A1
3CC0008C 1456E7A5

これをPARにマスターコードと一緒に入力して
ゲームを始めて所持金の変化を見てみましょう


データロードをして、MONEY部分を見ると・・・
数値が以前セーブした物と大きく違っています
(せっかくなので確認画面は番外編を使用しています(笑))

PadInfo(PadData)の0029BD50に格納されていた数値が分かった所で
この所持金値を16進数に直して、2hプラスします

3854784→16進数化→003AD1C0→2hプラス→003AD1C2
この003AD1C2を条件判定に使ってみて
ゲーム中にセレクトを押したら所持金MAXを作って
ちゃんと効果が出るか確かめてみましょう

D03AD1C2 0000FFFE
20297F64 0098967F
〜暗号化〜
0CAD52E6 1456B00B
1CC0008C 14BE598C

実際に使ってみると、セレクトを押さない限りは
所持金がMAXになる事はありませんでした
見事にパッドアドレスを特定する事が出来ました。



普段はあまりバイトコピーの出番は無いのですが
この方法でパッドアドレスを探すには大活躍しますね
ちょっと遠回り感のする探し方ですが
どのソフトでもこの方法でパッドが特定できるという利点があります

もっと簡単に、一発で探せる方法もあるのですが
scePadRead同様でソフトによっては一発で探せない事があるので
確実性の高い、バイトコピーで探す方法を紹介しました
その確実性のちょっと低い方法はまた別の機会に。