改造入門 −第1章−


 第0章 【コードの仕組み】
 第1章 【コードの仕組み LV2】
 番外編 【好みの数値に変更する方法】


 さて、第0章に続きこのページでもコードの仕組みについて触れてみたいと思います。
 改造コードによっては1行でなく、2〜4行で掲載されているものもありますが、
 これは意味もなく行数が増えているのではありません。
 例えばRPGの主人公の経験値が3行で掲載されていた場合
 『3行全て入力しないといけないんですか?1行だけじゃダメですか?』
 と、疑問に思われた方も多いと思います。
 結論から言えば、3行全て入力しなくてはいけません。
 コードの行数は改造する数値と常に比例しているからです。詳しくは下記で紹介します。

 1.コードの仕組み LV2

 経験値のアドレスが0001だったとすると、GB用のコードでは
 01xx0100で表記するというのは第0章を読んでいただければわかると思います。
 そこで主人公の経験値が最大○○○だった場合を考えてみたいと思います。
 もし最大値が99だとしたら、16進数では63と表しますよね?
 この数値をxxに代入すると、01630100となり、1行で改造できるわけです。

 01630100

 では、最大値が9999999だった場合はどうでしょうか?
 16進数では98967Fとなりますので、当然1行では収まりません。
 16進数の桁数にあわせてxxも増やしていきます。
 この時、アドレスが1ずつ増えていくことにご注意下さい。

01xx0100
01xx0200
01xx0300
01xxxxxx0100

 2.好みの数値に変更する方法

 経験値などの最大が9999999であっても、その数にあわせる必要はありません。
 所持金を100Gにしたり攻撃力を200にしたり、
 とにかく、改造コードさえわかっていれば自分好みに変更することができます。
 もし経験値を99に変更する場合は、コードも1行ですむわけですから
 残った行数には全て00を代入して下さい。
 【行数は各項目(経験値など)の最大値に比例します。9999999の場合は3行】

 01630100
 01000200
 01000300

 256以上の数値に改造する場合もやり方は同じです。
 なお、代入する数値は各項目の最大値桁数でないと都合が悪いので、
 足りない分は必ず先頭に0を付けるようにして下さい。

   256  100 000100
   999  3E7 0003E7
  9999 270F 00270F
 65535 FFFF 00FFFF

 続けて16進数をxxに代入すればいいのですが、
 その前に一つだけ注意しなくてはいけないことがあります。

 3.リトルエンディアンとビッグエンディアン

 GB用コードのアドレスが逆に表記されているのはすでにご説明しましたが、
 これと似たような感じ?で、コードのxxに代入する数値も全て逆に入力しなくてはいけません。
 どのゲームも基本的にリトルエンディアン方式を採用しているからです。

 エンディアンとは簡単に言うとデータ(代入する数値)をメモリ(アドレス)に配置する方法で、
 リトルエンディアンは下位(Bit)から上位(Bit)へ、
 ビッグエンディアンは上位(Bit)から下位(Bit)へ代入していきます。
 例えば改造したい数値が123456(16進数)だった場合、下記のように表記します。

 ※GB、SFC、PSなどのゲームは全てリトルエンディアン。
リトルエンディアン ビッグエンディアン
01560100 01120100
01340200 01340200
01120300 01560300

 実際に16進数000100、0003E7、00270F、00FFFFを
 リトルエンディアン方式で代入してみたいと思います。

000100 0003E7 00270F 00FFFF
01000100 01E70100 010F0100 01FF0100
01010200 01030200 01270200 01FF0200
01000300 01000300 01000300 01000300