コードってなぁに??


コードという言葉は、聞いたことのない方には馴染みのないものだと思います。
ゲーム機やパソコンのプログラムは、CD-ROMやHDDから読み込んだゲームのデータをRAMと言われているデータ格納部分に読み込んで(ロードと言います)、動作させています。
コードというのは、このRAMの特定の場所(アドレスと言います)にPAR(プロアクションリプレイ)等の道具や同様の働きをするプログラムを使って、強制的に都合の良い数値を書き込み続け、自分に都合の良いようにゲームのデータを変化させることができるものです。
例えば、体力のデータが格納されている場所に999という数字を設定しておけば、減らずにずーっと999のままになります。
じゃぁ、999という数字を入れればよいかというと、そうではありません。
場所を示すアドレスや、ここで使う数字(コード)は16進数で書かなければいけないという決まりがあります。
999を16進数にすると、3E7になるので、ここで打ち込む数字は03E7になります。
桁数が奇数になってしまった場合は、最初に0をつけて偶数の桁数にする必要があります。

例をあげてみましょう。
エラン・プラスの「ナオの体力999」というコードは

80051144 03E7 ナオの体力999

このようになりますが、何のことかよくわかりませんよね?
これはこのような意味になっています。
80:コードの種類(コードの種類に関しては後述します。)
051144:ナオの体力データが格納されているアドレス
03E7:自分の書き換えたい数値(この場合は、999[16進数で3E7])

実際にRAMがどうなっているか見てみましょう。
これは1日目の初期データです。



アドレスが80で始まっているのは、便宜上のことですので気にしないで下さい。
アドレスの最後のhは、16進数でアドレスを表しているからついているだけです。
051144を見てみましょう。(カーソルの矢印が指しているところです。)
64となっているのがわかりますね?
ここに書かれている数字は全部16進数で書かれていますので、64を10進数に直すと100です。
ゲーム上で、ナオの体力を確認すると初期値は100です。
これを最大の999にしてみましょう。(16進数では3E7)
PARかそれに類するツールやソフトを使って
80051144 03E7
と打ち込んでみます。
そうすると、初日にもかかわらず、ナオの体力は999になります。
RAMの方はこのようになっています。



ここで03E7と入れたはずなのに、E703になってる??と思われた方もいらっしゃると思います。
理由を説明すると難しくなってしまいますので、これも決まりだと覚えて下さい。
メモリーマップ上で見た場合は、10の位、1の位、1000の位、100の位のように位が逆転します。
例えば16進数で123456という数字を入力した場合は、メモリーマップ上ではどのように見えるでしょうか?
同様に、10の位、1の位、1000の位、100の位、100000の位、10000の位の順番になりますので
563412のようにメモリーマップ上では表されます。

まだ書きかけなの〜(^^;;
続きはもう少し待ってネ