カートリッジ > HiROM と LoROM の見分け方

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

HiROM と LoROM の見分け方

カートリッジ情報の、

0x1C : ROM チェックサムの逆数 0x1E : ROM チェックサム

を OR すると、結果は常に 0xFFFF になる。 (チェックサムの逆数の値は、チェックサムの値を XOR したものであることから)

この性質を利用し、HiROM 、 LoROM 両方のチェックサムの値が 入っているアドレスの中身を取得し、 どちらの結果が 0xFFFF となるかを確認することで判定する。

どちらも 0xFFFF とならない場合は、ゲームタイトルの部分が 全て大文字で書かれていることから、それらのバイト列が 大文字の範囲に含まれているかを確認することでチェックすることができる。 日本語のタイトルが含まれている場合、この方法はうまくいかない。 (半角カナが書かれているためかと思われます。)

カートリッジ情報の ROM 構造のバイトにも HiROM、LoROM を判定する部分が含まれているが、 これらは ROM ユーティリティによって書き換えられている可能性があるため、 判定には使用しない方が良い。

実際の ROM カートリッジでは、 HiROM・LoROM どちらの場合にも カートリッジ情報は同じ位置に書かれている。 実機で動かす場合は、下位 32K バイト、上位 32K バイト の両方の位置の ROM 構造バイトを取得し、同じ値が書かれている時は LoROM、 値が違えば HiROM という風に判定することができる。 (LoROM の場合は A15 ピンが使われないため、 上位 32K バイト ・ 下位 32K バイト がミラーリングされる)

ROM タイプが取得できない場合は、ほとんどのカートリッジが LoROM であることから、 LoROM として読み込む処理を入れる。