2.探し方
では、実際にmtc0 $a0,18の命令を探して見ましょう!っといっても逆アセンブルリストの中から
たった一つの命令を探すというのは、かなり難しいことです。
ですので、mtc0 $a0,18のバイナリデータ、40849000を探すことにします。
PARでこれを探せれば楽なのですがそれはできないので(PARを使えるようにするためのコードを探してるんだからあたりまえ)
エミュレーターを使います。
用意するものは、
です。
あと、必須コードを探すゲームを吸い出しておいて下さい。
ここでは例としてまだ必須コードが見つかっていない
「マリオパーティ3」をサーチしてみます。
では、サーチしてみましょう!
例:マリオパーティ3の場合
Project64を起動して、サーチするゲームを開いたらDBxSTANDを起動し、Project64を開きます。
次にサーチ領域を変更します。
すべてのチェックを外し、右クリックメニューの新規追加を選ぶと、
出てきたウィンドウの中の下のほうに、二つ大きさが4194304か8388608の領域
があると思います。
そのうちの上の方を選択してOKを押してください。
するとさきほどの領域が、サーチする領域の中に増えていると思います。
それにチェックを入れて下さい。
mtc0 $a0,18のバイナリ、40849000をサーチするのですが、エミュレーターではデータを
リトルエンディアンで管理しているので、それにあわせて、00908440でサーチします。
DBxSTANDで一度、「新規 [N]」ボタンを押した後、00908440でサーチをしてみてください。
一軒だけ該当があるはずです。私の環境では970410にありました。
これをPARのアドレスに変換します。
下のように計算して下さい。領域の開始アドレスはここで設定したものです
DBxSTANDのアドレス-領域の開始アドレス+80000000h
あてはめると、
970410-8F0000+80000000=80080410
最後に、これを必須コードにして、
F1080410 2400
となります。
(アドレスの下一桁を修正する必要はありません)
では、実際に効果があるか試してみましょう。
見事に改造できています!
このアドレスを逆アセンブルしてみると、こちらも見事にmtc0 $a0,18の命令があります。
やはり、この命令を探せば必須コードをサーチ出来るようです。
サーチ完了です。
さて、ほとんどのゲームはこれで必須コードをサーチすることができますが、
一部のゲームでは、これだけでは必須コードをサーチできません。
ポケモンスタジアム金・銀、マリオテニス64、エキサイトバイク64などがそうなのですが
これらのゲームは、改造しにくいプログラムがしてあります。
このようなゲームの必須コードを作るにはN64のプログラムの知識が必要となります。
ですが、サーチできないということはありません。
そのゲームの海外版の必須コードを調べ(海外版は必須コードが見つかっている)、
日本語版へ移植するという方法があります。
必須コードが見つかっていないN64ゲームはほんの少しです。
私は現在5つのゲームの必須コードを見つけています。
すべての必須コードをサーチすることは可能だとは思いますが、
私一人でそれをすべて見つけるというのは、(金銭的にとか生活面とかで)無理です。
ですのでみなさんに協力をお願いしたいのです。
詳しいことはこちらの方に書かれています。
協力お願いします!