N64改造コードの種類とその説明
ここではN64改造コードの、通常使うコードを除いた、つまり特殊なコードについて説明します。
ただし私なりの解釈であり、実際と違うものもあると思います。
これを書くにあたり、GSCCCに書かれているものを勝手にですが参考にさせてもらいました。
DEaaaaaa 0000
・動作
起動アドレスを80aaaaaaのアドレスに変更する
・説明
大抵のゲームは、ゲームの内部に記録されている、プログラムの開始アドレス(私は起動アドレスと言ってます)
からプログラムを開始するようになっていて、PAR(GS)はそのアドレスをもとに改造をしています。(たぶん)
しかし、一部のゲームでは記録されているアドレスでないところから開始しているものがあります。
ヨッシー、F-ZEROX、ポケモンスタジアムなどがこれにあたります。
このようなゲームだと、PARは本当の起動アドレスを判断することができず、ゲームを起動する事ができません。
ですので、このDEaaaaaa 0000のコードを使って手動(?)で起動アドレスを本当のものに変更するのです。
探し方
例:スマッシュブラザーズ
起動アドレスを調べると、80100400
必須コードにして、DE000400 0000
例:ポケモンスタジアム金・銀
起動アドレスを調べると、80100400
必須コードにして、DE000400 0000
例:マリオストーリー
起動アドレスを調べると、80125C00
必須コードにして、DE025C00 0000(+先頭F1〜のコード)
この3つから推測すると、起動アドレスから、100000h引けばいいのか?う〜む…
CC000000 0000
DD000000 0000
EE000000 0000
・動作
ゲームを強制的に低解像度モードに変更する
・説明
メモリー拡張パックを検出させないようにして強制的に低解像モードに変更するコードです。
3種類ありますが、それぞれ変更させる方法が違うのだそうです。
※DD000000 0000に関しては、入力するとゲームが起動しなくなるので間違いだと思われます。
F0aaaaaa 00xx
F1aaaaaa xxxx
・動作
ゲーム開始時に1度だけ80aaaaaaのアドレスにxxまたはxxxxを書きこむ
F0は8bit、F1は16bit
・説明
いくつかのゲームでは、PARを使って改造する事ができなくなるようなプログラムがしてあります。
そういうときはこのコードで命令を書き換えPARを使えるようにします。
FFaaaaaa 0000
・動作
80aaaaaaのアドレスにGSのプログラムを配置する
・説明
メモリー拡張パック専用ゲームを改造するために必要なコードです。
拡張パックを使用しないゲームでは、GSのプログラムを80400000以降の
拡張パックのアドレスに配置しておけば問題なかったのですが、
専用ゲームだとそうには行かないので、ゲーム毎にアドレスを指定しなければなりません。
また、アドレスを指定するとき、80aaaaaaのアドレスはゲーム中、
一度も書きかえられない空きアドレスを指定しなければなりません。
もし、書きかえられるアドレスを指定するとゲームが起動しなかったり
途中で止まったりしてしまいます。
PAR3では使用する事ができず、GSv3.30以降専用です。