カートリッジ > ROM プロテクションスキーム

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

たくさんの SNES ゲームに実装されている、コピー機を使わせないようにするための FastROM、 PAL/NTSC、 SRAMサイズチェックを迂回する方法について書く。

注:必ずしも全ての文字列を置換する必要はない。

目次

SlowROM チェック

新しいカートリッジは、ほとんどがアクセス時間 120ns の ROM を使用しているが、 ROM コピー機では 200ns のものもある。これらの組み合わせでは バックアップした ROM を正しく動作させることができない。

ROM コードの SlowROM チェックを迂回することで、 SlowROM のコピー機でも FastROM のゲームを動作させることができる。 次の文字列を置換することで SlowROM チェックを迂回するようにできる。

検索する値 置換する値
A9 01 8D 0D 42 A9 00 8D 0D 42
A9 01 8E 0D 42 A9 00 8E 0D 42
A2 01 8D 0D 42 A2 00 8D 0D 42
A2 01 8E 0D 42 A2 00 8E 0D 42
A9 01 00 8D 0D 42 A9 00 00 8D 0D 42
A9 01 8F 0D 42 00 A9 00 8F 0D 42 00

PAL/NTSC チェック

まだその国で発売されていないゲームを他の国で買ったりすることができないようにするために、 たくさんのゲームでビデオシステムの組み合わせが正しいかを検出するコードが実装されている。 次の文字列を置換することで PAL/NTSC チェックを迂回することができる。

検索する値 置換する値
3F 21 29 10 C9 10 F0 3F 21 29 10 C9 10 80
3F 21 89 10 C9 10 F0 3F 21 89 10 C9 10 80
3F 21 29 10 F0 3F 21 29 10 80
3F 21 00 89 10 F0 3F 21 00 89 10 80
3F 21 00 29 10 F0 3F 21 00 29 10 80
3F 21 89 10 00 F0 3F 21 89 10 00 80
3F 21 29 10 00 F0 3F 21 29 10 00 80
AD 3F 21 29 10 00 D0 AD 3F 21 29 10 00 80
AF 3F 21 00 29 10 D0 AF 3F 21 00 29 10 80
AF 3F 21 00 29 10 00 D0 AF 3F 21 00 29 10 00 EA EA
AD 3F 21 29 10 D0 AD 3F 21 29 10 EA EA
AD 3F 21 29 10 F0 AD 3F 21 29 10 80
AD 3F 21 89 10 D0 AD 3F 21 89 10 80
AD 3F 21 29 10 C9 00 F0 AD 3F 21 29 10 C9 00 80
AF 3F 21 00 29 10 00 F0 AF 3F 21 00 29 10 00 80
AF 3F 21 00 89 10 00 F0 AF 3F 21 00 89 10 00 80

SRAM サイズチェック

いくつかのゲームは、コピー保護のために SRAM のサイズチェックを入れている。 ほとんどのコピー機は、256kbits の SRAM を積んでいる。 新しいコピー機は、このチェックを回避する。

xx は何が入るか分からない箇所で、 括弧に囲まれた範囲は、どちらか一方の値を取る。

検索する値 (8F, 9F) xx xx 70 (CF, DF) xx xx 70 D0
置換する値 (8F, 9F) xx xx 70 (CF, DF) xx xx 70 EA EA (SRAM サイズ = 64kbit の時)
(8F, 9F) xx xx 70 (CF, DF) xx xx 70 80 (SRAM サイズ <> 64kbit の時)
検索する値 (8F, 9F) xx xx (30, 31, 32, 33) (CF, DF) xx xx (30, 31, 32, 33) D0
置換する値 (8F, 9F) xx xx (30, 31, 32, 33) (CF, DF) xx xx (30, 31, 32, 33) 80
検索する値 (8F, 9F) xx xx (30, 31, 32, 33) (CF, DF) xx xx (30, 31, 32, 33) F0
置換する値 (8F, 9F) xx xx (30, 31, 32, 33) (CF, DF) xx xx (30, 31, 32, 33) EA EA
検索する値 (8F, 9F) xx xx (30, 31, 32, 33) AF xx xx (30, 31, 32, 33) C9 xx xx D0
置換する値 (8F, 9F) xx xx (30, 31, 32, 33) AF xx xx (30, 31, 32, 33) C9 xx xx 80