5.大容量のものを吸い出す
さて、実際にROMを吸い出してみると、ある問題が発生しました。
ゲームの容量の大きさに関わらず、強制的に128Mbit吸い出すようになっているのです。
これでは、ゼルダ、カービィ、ロックマンDASH、バイオハザード等、
容量の大きな物を吸い出すことが出来ません。
これらの大容量のゲームに対応できるように、さらにプログラムを改造してみます。
解析には「DBxSTAND」、「dsassm02」を使用し、いろいろがんばって解析してみた結果、
:00407470 33DB xor ebx, ebx
:00407472 E8A9100000 call 00408520
:00407477 6800000001 push 01000000 ←@
:0040747C E89F100000 call 00408520
:00407481 8B742424 mov esi, dword[esp+24]
:00407485 8B3D7C234100 mov edi, dword[0041237C]
:0040748B 83C408 add esp, 00000008
:0040748E BD00004000 mov ebp, 00400000 ←A
どうやら@、Aの値を書き替えればよいことがわかりました。
これの書き替えにはバイナリエディタ、ここではSFX typeBを使います。
吸い出し容量に合せていくつかコードを用意しましたので
吸い出す容量にあわせて使って下さい。
「32Mbit用」、「128」Mbit用」、「256Mbit用」など、この吸い出し専用というように
いくつかファイルを作っておくと、いちいち書き換えをしなくて済むので便利です。
この書き替えは、ダウンロードした場所に関わらず同じコードですることが出来ます。
#SFX_CODE_TEXT
#対象ファイル= "N64 Utils.exe"
32Mbit吸い出し用
747A-4000
7491-1000
64Mbit吸い出し用
747A-8000
7491-2000
96Mbit吸い出し用
747A-C000
7491-3000
128Mbit吸い出し用
747A-0001
7491-4000
256Mbit吸い出し用
747A-0002
7491-8000
320Mbit吸い出し用
747A-8002
7491-A000
512Mbit吸い出し用
747A-0004
7491-0001
とまぁ、たくさんのコードがあるのですが、いちいちこれを使って書き替えるのはめんどうです。
と言うわけで、パッチを用意しておきました〜!。ここからダウンロードしてって下さい。
これを使えば、「eXeScope、SFX typeBを使って〜」、という作業をすすべてることなくパッチを
実行するだけで書き替えをする事ができるうえ、日本語化されます。
「じゃあ、今まで説明してきた書き替えは何だったんだ!」
とかは勘弁です。
ちゃんと説明することに意味があるんです(^^;
書き替えが済んだらあとは先ほどと同じように吸い出しをして見てください。
大容量のものも、ちゃんと吸い出しが出来きるはずです。
これで、256M、512Mはもちろん、コードは書いてありませんが
それ以上のもの(そんなゲーム無いですが)も吸い出しが出来るはずです。
改造ツール側が対応していない(改造コードを使うことが出来ない)ソフトも、
改造ツールのメニュー画面まで起動できれば吸い出しをする事が出来ます!
なお、一つ注意する事があるとするなら、吸い出しが完了するまでに時間がかかることでしょうか?
128Mbitで16分、256Mbitで32分、512Mbitになると64分(!)もかかります。気長にまって下さい。
ついでに、このユーティリティーを使ってのバックアップでは
ゲームがどの大きさなのか自動判別する機能はありません。
昔のゲームは128Mbitで、後期に発売されたものは256Mbitで吸い出し、
ちょっと大きめに吸い出した場合は、吸い出しすぎた部分を切り取るなど
すればいいと思います。まぁがんばって下さい(笑)