Difference between revisions of "Gameboy ROM Header Info"

From GbdevWiki
Jump to: navigation, search
Line 658: Line 658:
 
SephirothBCH<br />
 
SephirothBCH<br />
 
http://www.vbcop.com (Editor's note: Dead link)
 
http://www.vbcop.com (Editor's note: Dead link)
 +
 +
= Source =
 +
http://www.zophar.net/tech/files/gbrom.txt

Revision as of 21:23, 10 March 2008

Gameboy ROM Header Info v1.01 by SephirothBCH, 2000/11/28

After the release of this document, I am temporarily leaving the coding and emulation scene. The last few weeks of my life have been especially rough, mainly brought on by the death of my uncle, Roy Colbert. I would like to dedicate this doc, as well as any other progs I make to his memory.

History

  • v1.01 - Added some new licensees, fixed some descriptions.
  • v1.00 - Initial release.

This information was taken and compiled from Martin Korth's NO$GMB emulator. Best viewed in DOS EDIT. (Editor's note: This document has been wikified, and DOS EDIT is no longer the best way to view it. ;) )

Every Gameboy ROM header starts off at the HEX offset 0134.

Title/Name of ROM

The title of a ROM is 15 or 16 bytes long. It seems that if the extension of the ROM is GBC, the 16th byte denotes CGB features. This is then confirmed by reading a HEX value of 80 from that 16th byte. I'm not sure of this yet, but it seems correct. Any title bytes that are unused are filled with NULLs.

New licensee

This is two bytes long. These are two HEX values put together to make a quasi-number value. For example 30h and 31h translate into 01. 31h and 32h become 12, and so on. There are some companies also present in the licensee section, later in this document. Known combos are as follows, in the translated form above.


00 none 01 nintendo 08 capcom
13 electronic arts 18 hudsonsoft 19 b-ai
20 kss 22 pow 24 pcm complete
25 san-x 28 kemco japan 29 seta
30 viacom 31 nintendo 32 bandia
33 ocean/acclaim 34 konami 35 hector
37 taito 38 hudson 39 banpresto
41 ubi soft 42 atlus 44 malibu
46 angel 47 pullet-proof 49 irem
50 absolute 51 acclaim 52 activision
53 american sammy 54 konami 55 hi tech entertainment
56 ljn 57 matchbox 58 mattel
59 milton bradley 60 titus 61 virgin
64 lucasarts 67 ocean 69 electronic arts
70 infogrames 71 interplay 72 broderbund
73 sculptured 75 sci 78 t*hq
79 accolade 80 misawa 83 lozc
86 tokuma shoten i* 87 tsukuda ori* 91 chun soft
92 video system 93 ocean/acclaim 95 varie
96 yonezawa/s'pal 97 kaneko 99 pack in soft

SGB features

Only one byte long. A HEX value of 03 says that the cartridge has added features for Super Gameboy. Any other value, especially HEX 00 denotes a non-SGB cart.

Cartridge type

One byte long. This is one of the bigger values in the cart. This byte indicates which memory mapper the cartridge uses, whether it has Rumble features, RAM, or battery features. Valid values are as follows (in HEX):

00 ROM 01 MBC1 02 MBC1+RAM
03 MBC1+RAM+BATTERY 05 MBC2 06 MBC2+BATTERY
08 ROM+RAM 09 ROM+RAM+BATTERY 0B MMM01
0C MMM01+RAM 0D MMM01+RAM+BATTERY 0F MBC3+TIMER+BATTERY
10 MBC3+TIMER+RAM+BATTERY 11 MBC3 12 MBC3+RAM
13 MBC3+RAM+BATTERY 15 MBC4 16 MBC4+RAM
17 MBC4+RAM+BATTERY 19 MBC5 1A MBC5+RAM
1B MBC5+RAM+BATTERY 1C MBC5+RUMBLE 1D MBC5+RUMBLE+RAM
1E MBC5+RUMBLE+RAM+BATTERY FC POCKET CAMERA FD Bandai TAMA5
FE HuC3 FF HuC1+RAM+BATTERY

The Bandai TAMA5 mapper was designed specifically for Tamagotchi.

ROM size

One byte long, fairly simple. ROM sizes range from 32K to 4MB. Valid HEX values are as follows:

00 32k 01 64k 02 128k 03 256k 04 512k
05 1024k 06 2048k 07 4096k

Save RAM size

One byte also, self-explanitory. Sizes range from no RAM, to 32K. The most common ones used are 8k and 32k. HEX values:

00 0k 01 2k 02 8k 03 32k

Save RAM size

One byte also, self-explanitory. Sizes range from no RAM, to 32K. The most common ones used are 8k and 32k. HEX values: 00- 0k 01- 2k 02- 8k 03- 32k

Country code

Once again, this is only one byte long. Valid HEX values are 00 Japan and 01 Non-Japan.

Licensee

One byte long, this makes up the bulk of the entire document. Some of the names are truncated (*), because they are too long for NO$GMB to display. Anyone who has the full names of the truncated licensees please email me, and you will get credit for them. Here are all of the valid HEX values I found:

00 none 01 nintendo 08 capcom
09 hot-b 0A jaleco 0B coconuts
0C elite systems 13 electronic arts 18 hudsonsoft
19 itc entertainment 1A yanoman 1D clary
1F virgin 24 pcm complete 25 san-x
28 kotobuki systems 29 seta 30 infogrames
31 nintendo 32 bandai 33 GBC - see above
34 konami 35 hector 38 capcom
39 banpresto 3C *entertainment i 3E gremlin
41 ubi soft 42 atlus 44 malibu
46 angel 47 spectrum holoby 49 irem
4A virgin 4D malibu 4F u.s. gold
50 absolute 51 acclaim 52 activision
53 american sammy 54 gametek 55 park place
56 ljn 57 matchbox 59 milton bradley
5A mindscape 5B romstar 5C naxat soft
5D tradewest 60 titus 61 virgin
67 ocean 69 electronic arts 6E elite systems
6F electro brain 70 infogrames 71 interplay
72 broderbund 73 sculptered soft 75 the sales curve
78 t*hq 79 accolade 7A triffix entertainment
7C microprose 7F kemco 80 misawa entertainment
83 lozc 86 *tokuma shoten i 8B bullet-proof software
8C vic tokai 8E ape 8F i'max
91 chun soft 92 video system 93 tsuburava
95 varie 96 yonezawa/s'pal 97 kaneko
99 arc 9A nihon bussan 9B tecmo
9C imagineer 9D banpresto 9F nova
A1 hori electric A2 bandai A4 konami
A6 kawada A7 takara A9 technos japan
AA broderbund AC toei animation AD toho
AF namco B0 acclaim B1 ascii or nexoft
B2 bandai B4 enix B6 hal
B7 snk B9 pony canyon BA *culture brain o
BB sunsoft BD sony imagesoft BF sammy
C0 taito C2 kemco C3 squaresoft
C4 *tokuma shoten i C5 data east C6 tonkin house
C8 koei C9 ufl CA ultra
CB vap CC use CD meldac
CE *pony canyon or CF angel D0 taito
D1 sofel D2 quest D3 sigma enterprises
D4 ask kodansha D6 naxat soft D7 copya systems
D9 banpresto DA tomy DB ljn
DD ncs DE human DF altron
E0 jaleco E1 towachiki E2 uutaka
E3 varie E5 epoch E7 athena
E8 asmik E9 natsume EA king records
EB atlus EC epic/sony records EE igs
F0 a wave F3 extreme entertainment FF ljn

Header Check

One byte long. Not sure how this value is attained or checked. Email me if you know, you'll get credit.

Global Check

Two bytes long. Perhaps this is a checksum of the entire rom. It might not, since it is only a 16-bit value. Email me if you know.

(Editor's note: The algorithms for the checksums are actually well known since long now, and can be attained from the article The Cartridge Header which is part of Pan Docs)

End of document

And so ends this document. If you have anything to add, or know of an error, email me at SephirothBCH@theglobe.com. The next version of this document will have explanations of the global and header check, and information on mappers such as MBC1 and MBC2. Thanks for reading!

SephirothBCH
http://www.vbcop.com (Editor's note: Dead link)

Source

http://www.zophar.net/tech/files/gbrom.txt