チートコード

Game Shark 、 Gamegenie という、本体とカートリッジの間に付ける、カートリッジアダプタ型のチートデバイスがあります。
ゲームごとに対応した 16 進数のコードを入力することで、レベルを最大にしたり、弾数を無限にしたりします。

Gamegenie (ROM パッチ)


Gamegenie のコードは 9 桁の 16 進数で入力します。
ABC-DEF-GHI の並びで、次のようなフォーマットになっています。

  • AB: 新しく入れ替えるデータ
  • FCDE: メモリアドレスを 0F000h で XOR した値
  • GI: 古い値を 0BAh で XOR した後、左に 2 回、回転シフトした値
  • H: 不明。チェックサム等の値

アドレスの値は 0000h-7FFFh にある ROM 領域を指定します。
ゲーム起動中、常にアダプタがアドレスと古い値をチェックし、マッチしたら新しい値に書き換えます。
アドレスと一緒に古い値を比較することで、違うバンクのデータが書き変わらないようにしています。
新しいデバイスでは、最初の 6 桁のみ指定することもできるようです。
同時に 3 つか 4 つのコードが指定できたと思います。

Game Shark (RAM パッチ)


Game Shark のコードは 8 桁の 16 進数で入力します。
ABCDEFGH の並びで、次のようなフォーマットになっています。

  • AB: 外部 RAM バンク番号
  • CD: 新しいデータ
  • GHEF: メモリアドレス (内部または外部 RAM A000-DFFF)

パッチの処理は、 VBlank 割り込みのフックによって独自に実装されていて、
毎フレーム、 RAM の値が上書きされていたと思います。

この方法の欠点としては、 CPU 時間を奪ってしまうことと、
ROM 内のプログラムに対してパッチが当てられないことが挙げられます。

同時に 10 から 25 個のコードが指定できたと思います。
最終更新:2017年08月28日 08:34