カートリッジ > カートリッジヘッダ

アドレス空間 0100-014F の範囲の ROM 領域に、ヘッダが配置されています。

0100-0103 - 開始位置


任天堂ロゴが表示された後、起動処理によってアドレス 0100h へジャンプします。
この場所から、さらにメインの処理へジャンプします。

0100 から始まる 4 バイトの領域には、通常、次のような処理が書き込まれています。

  • NOP
  • 0150 へのジャンプ

0104-0133 - 任天堂ロゴ


ゲームボーイの電源を入れた直後に表示される、任天堂ロゴの画像が書かれています。
この画像の内容が違っていた場合、ロゴ表示以降の処理がストップします。

ゲームボーイカラーの場合、最初の 18h バイトだけがチェックされます。
他の機種では、 30h バイト全体がチェックされます。

0134-0143 - タイトル


大文字の ASCII 形式で、ゲームのタイトルが入っています。
16 バイトより短い場合、残りのバイトは 00h で埋められます。

ゲームボーイカラーの登場時、この領域の大きさは 15 バイトに削減されました。
さらに数か月後、この領域の大きさは 11 バイトに削減されました。
残りの領域の意味については、次に説明します。

013F-0142 - メーカーコード


上記のように古いカートリッジでは、この領域はタイトルに使用されています。
新しいカートリッジでは、この 4 バイトに大文字でメーカーコードが入っています。

0143 - CGB フラグ


上記のように古いカートリッジでは、この領域はタイトルに使用されています。
ゲームボーイカラーのカートリッジの場合、ゲームボーイカラー対応のフラグとして上位ビットが使われています。

  • 80h: ゲームボーイカラー対応で、古いゲームボーイでも動く
  • C0h: ゲームボーイカラー専用

ビット 7 と、ビット 2 または 3 がセットされている時、特別な「古いゲームボーイのモード」になります (パレットは初期化されていない状態になる)。
ROM 内の特別な場所にある固定パレットを使った、モノクロゲームのカラー化に使われるのでしょうか (用途は不明)。

0144-0145 - 新しいライセンシーコード


ライセンスを受けた会社やパブリッシャーのコードが 2 バイトの ASCII コードで書き込まれています。
スーパーゲームボーイが出た後の、新しいゲームでのみ使用されます。
古いゲームでは、アドレス空間 014B にある値が代わりに使用されます。

0146 - SGB フラグ


スーパーゲームボーイに対応しているかどうかを指定します。

  • 00h = スーパーゲームボーイ非対応 (普通のゲームボーイ、またはゲームボーイカラー専用ゲーム)
  • 03h = スーパーゲームボーイ対応

スーパーゲームボーイから起動した時、このバイトが 03h 以外の場合は、スーパーゲームボーイの機能をオフにします。

0147 - カートリッジタイプ


カートリッジ内のメモリバンクコントローラの種類と、使われている外部ハードウェアを指定します。

内容
00h ROM ONLY
01h MBC1
02h MBC1+RAM
03h MBC1+RAM+BATTERY
04h Unknown
05h MBC2
06h MBC2+BATTERY
07h Unknown
08h ROM+RAM
09h ROM+RAM+BATTERY
0Ah Unknown
0Bh MMM01
0Ch MMM01+RAM
0Dh MMM01+RAM+BATTERY
0Eh Unknown
0Fh MBC3+TIMER+BATTERY
10h MBC3+TIMER+RAM+BATTERY
11h MBC3
12h MBC3+RAM
13h MBC3+RAM+BATTERY
14h Unknown
15h MBC4
16h MBC4+RAM
17h MBC4+RAM+BATTERY
18h Unknown
19h MBC5
1Ah MBC5+RAM
1Bh MBC5+RAM+BATTERY
1Ch MBC5+RUMBLE
1Dh MBC5+RUMBLE+RAM
1Eh MBC5+RUMBLE+RAM+BATTERY
FCh POCKET CAMERA
FDh BANDAI TAMA5
FEh HuC3
FFh HuC1+RAM+BATTERY

0148 - ROM サイズ


カートリッジの ROM サイズを指定します。
通常、 「32KB の N 個左シフト」の値で計算します。

 00h -  32KByte (ROM バンク切り替えなし)
 01h -  64KByte (4 バンク)
 02h - 128KByte (8 バンク)
 03h - 256KByte (16 バンク)
 04h - 512KByte (32 バンク)
 05h -   1MByte (64 バンク)  - MBC1 では 63 バンクのみ使用可能
 06h -   2MByte (128 バンク) - MBC1 では 125 バンクのみ使用可能
 07h -   4MByte (256 バンク)
 52h - 1.1MByte (72 バンク)
 53h - 1.2MByte (80 バンク)
 54h - 1.5MByte (96 バンク)

0149 - RAM サイズ


カートリッジ内の外部 RAM のサイズを指定します。

 00h - なし
 01h - 2 KBytes
 02h - 8 Kbytes
 03h - 32 KBytes (8KB の 4 バンク)

512 x 4 ビットの組み込み RAM が入っている MBC2 チップを使用する場合にも、ここに 00h を指定する必要があります。

014A - 宛先コード


日本で発売されるか、それ以外かを指定します。

 00h - 日本語
 01h - 日本語以外

014B - 古いライセンシーコード


会社またはパブリッシャーのコードを 00-FFh の範囲で指定します。
33h の値は、代わりに 0144-0145 で新しいライセンシーコードを使用することを表します。

33h 以外の場合は、スーパーゲームボーイの機能が使えなくなります。

014C - マスク ROM バージョン番号


ゲームのバージョン番号を指定します。
この値は、通常 00h です。

014D - ヘッダチェックサム


カートリッジヘッダ内の、 0134-014C の範囲の 8 bit のチェックサムが入っています。
チェックサムは次のように計算します。

 x = 0
 FOR i = 0134h TO 014Ch
 x = x - MEM[i] - 1
 NEXT

計算結果の下位 8 bit を、 014D の値と合わせる必要があります。
チェックサムの値が違った場合、ゲームは動作しません。

014E-014F - グローバルチェックサム


カートリッジ ROM 全体の、 16 bit のチェックサムが入っています (上位バイトが最初に来る)。
このチェックサムの値以外の、すべてのバイトを足し合わせることで計算します。
ゲームボーイ本体では、この値をチェックしません。
最終更新:2017年08月31日 02:32