2.探し方

では、実際にmtc0 $a0,18の命令を探して見ましょう!っといっても逆アセンブルリストの中から
たった一つの命令を探すというのは、かなり難しいことです。

ですので、mtc0 $a0,18のバイナリデータ、40849000を探すことにします。
PARでこれを探せれば楽なのですがそれはできないので(PARを使えるようにするためのコードを探してるんだからあたりまえ)
エミュレーターを使います。


用意するものは、

です。

あと、必須コードを探すゲームを吸い出しておいて下さい。
ここでは例としてまだ必須コードが見つかっていない
マリオパーティ3」をサーチしてみます。



では、サーチしてみましょう!


例:マリオパーティ3の場合

Project64を起動して、サーチするゲームを開いたらDBxSTANDを起動し、Project64を開きます。



次にサーチ領域を変更します。
すべてのチェックを外し、右クリックメニューの新規追加を選ぶと、
出てきたウィンドウの中の下のほうに、二つ大きさが41943048388608の領域
があると思います。

そのうちの上の方を選択して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つのゲームの必須コードを見つけています。

すべての必須コードをサーチすることは可能だとは思いますが、

私一人でそれをすべて見つけるというのは、(金銭的にとか生活面とかで)無理です。

ですのでみなさんに協力をお願いしたいのです。


詳しいことはこちらの方に書かれています。
協力お願いします!




前へ          TOPへ