これらのデバイスは、ROM 上の指定された場所のデータを書き換える動作をします。
コードフォーマット : AAAAAADD (8 文字)
A - アドレス D - データ
コードは 16 進数で指定します。 アドレス値は ROM の場所ではなく、CPU からアクセスする際のアドレスを指定します。
コードフォーマット : AAAAADDDDDDCCW (14 文字)
A - アドレス D - データ C - チェックサム W - 何を変えるか (DRAM か SRAM)
これは ROM コピー機のためのコードで、16 進数で指定します。 アドレスは ROM のアドレスを指します。 データ値は 2 個一組で使用し、3つ分のサイズがあります。 使用されないデータ値は、 "XX" を入れます。
アドレス値はベースアドレスで、最初にデータ値の 1 つ目を入れ、 アドレス値 + 1 に 2 つ目を、 アドレス値 + 2 に 3 つ目を入れます。 XX が入っている場合は使いません。
W値は、ROM イメージと セーブデータの入った SRAM のどちらを 変更するかを指定します。 0 が DRAM、 1 が SRAM です。
コードフォーマット : DDAA-AAAA (8 文字)
A - アドレス D - データ
これは解読が難しいコードです。 まず、コードの値から実際の値をテーブルで引き、変換する必要があります。
Genie Hex | D | F | 4 | 7 | 0 | 9 | 1 | 5 | 6 | B | C | 8 | A | 2 | 3 | E |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Normal Hex | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
次に、値を実際のアドレスに置き換えます。
エンコードされた 24 bit アドレス | ijklqrst opabcduv wxefghmn |
---|---|
デコード済み 24 bit アドレス | abcdefgh ijklmnop qrstuvwx |
8bit encoded data: ABCDEFGH 8bit data: ABCDEFGH
エンコードされたアドレスの 23 ビット目 (デコードされたアドレスの 15 ビット目) は 常に 1 になります。
ROMaddress = (CPUaddress & 0x7FFF) | ((CPUaddress & 0xFF0000) << 1) CPUaddress = (ROMaddress & 0x7FFF) | ((ROMaddress & 0x7F8000) >> 1) | 0x8000