アドレス空間 0100-014F の範囲の ROM 領域に、ヘッダが配置されています。
0100-0103 - 開始位置
任天堂ロゴが表示された後、起動処理によってアドレス 0100h へジャンプします。
この場所から、さらにメインの処理へジャンプします。
0100 から始まる 4 バイトの領域には、通常、次のような処理が書き込まれています。
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