An internal information area is located at $0100-014F in each cartridge. It contains the following values:
After displaying the Nintendo Logo, the built-in boot procedure jumps to
this address ($0100), which should then jump to the actual main program
in the cartridge. Usually this 4 byte area contains a
followed by a
jp $0150 instruction. But not always.
These bytes define the bitmap of the Nintendo logo that is displayed when the Game Boy gets turned on. The hex dump of this bitmap is:
CE ED 66 66 CC 0D 00 0B 03 73 00 83 00 0C 00 0D 00 08 11 1F 88 89 00 0E DC CC 6E E6 DD DD D9 99 BB BB 67 63 6E 0E EC CC DD DC 99 9F BB B9 33 3E
The Game Boy’s boot procedure verifies the content of this bitmap (after it has displayed it), and LOCKS ITSELF UP if these bytes are incorrect. A CGB verifies only the first half ($18 bytes of) the bitmap, but others (for example a Game Boy pocket) verify all $30 bytes, as does the Game Boy Advance.
Title of the game in UPPER CASE ASCII. If it is less than 16 characters then the remaining bytes are filled with $00 bytes. When inventing the CGB, Nintendo has reduced the length of this area to 15 characters, and some months later they had the fantastic idea to reduce it to 11 characters only. The new meaning of the ex-title bytes is described below.
In older cartridges this area has been part of the Title (see above), in newer cartridges this area contains an 4 character uppercase manufacturer code. Purpose and Deeper Meaning unknown.
In older cartridges this byte has been part of the Title (see above). In CGB cartridges the upper bit is used to enable CGB functions. This is required, otherwise the CGB switches itself into Non-CGB-Mode. Typical values are:
80h - Game supports CGB functions, but also works on old Game Boys. C0h - Game works on CGB only (physically the same as $80).
Values with Bit 7 set, and either Bit 2 or 3 set, will switch the Game Boy into a special non-CGB-mode called “PGB mode”.
TODO: research and document PGB modes…
Specifies a two-character ASCII licensee code, indicating the company or
publisher of the game. These two bytes are used in newer games only
(games that have been released after the SGB has been invented). Older
games are using the header entry at
Sample licensee codes:
|Hi tech entertainment|
|Tokuma Shoten Intermedia|
|Pack in soft|
Specifies whether the game supports SGB functions, common values are:
$00: No SGB functions (Normal Game Boy or CGB only game)
$03: Game supports SGB functions
The SGB disables its SGB functions if this byte is set to a value other than
Specifies which Memory Bank Controller (if any) is used in the cartridge, and if further external hardware exists in the cartridge.
No licensed cartridge makes use of this option. Exact behaviour is unknown.
MBC3 with RAM size 64 KByte refers to MBC30, used only in Pocket Monsters Crystal Version for Japan.
Specifies the ROM Size of the cartridge. Typically calculated as “N such that 32 KiB << N”.
|Code||Size||Amount of banks|
|$00||32 KByte||2 (No ROM banking)|
|$52||1.1 MByte||72 3|
|$53||1.2 MByte||80 3|
|$54||1.5 MByte||96 3|
Only listed in unofficial docs. No cartridges or ROM files using these sizes are known. As the other ROM sizes are all powers of 2, these are likely inaccurate. The source for these values is unknown.
Specifies the size of the external RAM in the cartridge (if any).
|$00||0||No RAM 4|
|$02||8 KB||1 bank|
|$03||32 KB||4 banks of 8 KB each|
|$04||128 KB||16 banks of 8 KB each|
|$05||64 KB||8 banks of 8 KB each|
When using a MBC2 chip, $00 must be specified as the RAM Size, even though the MBC2 includes a built-in RAM of 512 x 4 bits.
Listed in various unofficial docs as 2KB. However, a 2KB RAM chip was never used in a cartridge. The source for this value is unknown.
Various “PD” ROMs (“Public Domain” homebrew ROMs generally tagged “(PD)” in the filename) are known to use the $01 RAM Size tag, but this is believed to have been a mistake with early homebrew tools and the PD ROMs often don’t use cartridge RAM at all.
Specifies if this version of the game is supposed to be sold in Japan, or anywhere else. Only two values are defined.
- $00: Japanese
- $01: Non-Japanese
Specifies the games company/publisher code in range $00-FF. A value of $33 signals that the New Licensee Code (in header bytes $0144-0145) is used instead. (Super Game Boy functions won’t work if <> $33.) A list of licensee codes can be found here.
Specifies the version number of the game. That is usually $00.
Contains an 8 bit checksum across the cartridge header bytes $0134-014C.
The boot ROM computes
x as follows:
x = 0 i = $0134 while i <= $014C x = x - [i] - 1
If the byte at $014D does not match the lower 8 bits of
x, the boot ROM will lock up,
and the cartridge program won’t run.
Contains a 16 bit checksum (upper byte first) across the whole cartridge ROM. Produced by adding all bytes of the cartridge (except for the two checksum bytes). The Game Boy doesn’t verify this checksum.