ROM header

From Sega Retro

The ROM header or disc ID[1] is a defined area of a video game cartridge ROM or CD-ROM used to identify software. Sega mandated that software include a header, both so the hardware understood what it was running, and for cataloguing purposes.

Sega's ROM headers were designed to be human readable, so details of compatible software can be understood quickly. The layout of these headers were dictated by Sega, and failure to conform with the company's guidelines could mean software would be rejected by Sega's quality assurance teams and be prevented from going on sale.

Sega's first ROM header scheme came into use with the Sega Mega Drive in late 1988, and were still being mandated for Sega Dreamcast releases twenty years later. Other video game platform holders have adopted different schemes (or indeed no schemes at all).

Pre-Mega Drive

Likely due to smaller cartridge (or card) sizes, no ROM header schemes were ever enforced for Sega's earlier systems (or add-ons), the SG-1000, SC-3000 and Sega Master System. They were also not enforced with Sega Game Gear software, likely for similar reasons, or its technical similarities with the Master System architecture.

Mega Drive

Guidelines for Sega Mega Drive software were the first to mandate the inclusion of ROM headers, and the same system would be used for Sega Mega-CD, Sega 32X and Pico software in the early 1990s.

ROM headers for these systems must occupy 256 bytes of memory in the cartridge (or disc) from 100 to 1FF, laid out as follows[2]:

Offset Contents
0 1 2 3 4 5 6 7 8 9 A B C D E F
100 Hardware designation
110 Company code, date
120 Domestic game title
130
140
150 Overseas game title
160
170
180 Disc type, product no., version Checksum
190 I/O info
1A0 ROM capacity RAM capacity
1B0 External RAM data Modem info
1C0 Modem info SPACE
1D0 SPACE
1E0 SPACE
1F0 Regional compatibility

Contents breakdown

Hardware designation

Hardware Designation Comments
Sega Mega Drive SEGA MEGA DRIVE[1]
Sega Genesis SEGA GENESIS[1]
Sega Mega-CD SEGA MEGA DRIVE No distinction is made between cartridge and CD-based software.
Sega CD SEGA GENESIS No distinction is made between cartridge and CD-based software.
Sega 32X SEGA 32X
Pico SEGA PICO

If software was set to be released across multiple regions where hardware names differed, typically the Japanese hardware name took precedence (e.g. "Mega Drive" rather than "Genesis"). There were seemingly no rules dictating this, however.

Company name/code and date

The text (C) plus four characters to symbolise the company name[1]. This can literally just be the company name (e.g. SEGA), but also a company's T-series code in the form T-XX (where XX is a two-digit number).

The use of T-series numbers here pre-dates the period where Sega had more than a hundred licensed third-party publishers.

Dates were originally of the form NNNN.XXX, where NNNN would be a year, and XXX a three-letter month.

Publishers had to be more creative after a certain point. For example, SeaQuest DSV published by THQ has (C)T-100 1994.12 - a three digit T-series code, and a two-digit month.

Domestic/overseas names

The name of the software for both domestic (Japan) and overseas markets. These had to be filled in even if the software was exclusive to one region, and in most cases were kept the same.

For the Mega Drive at least, JIS kanji characters were permitted. This point is missing from later English revisions of the guidelines, suggesting Sega either started enforcing pure ASCII characters, or were either discouraging JIS outside of Japan.

Software type, product code and version

GM (game; T) or AI (educational) followed by the product code (C) and release version (V) in the form TT CCCCCC-VV[1].

For example GM T-12345-00 is a game with product code T-12345, version 0 (or the first release).

I/O info

Compatible accessories, represented by single characters[1]:

Accessory Code
Master System controller O
Mega Drive Control Pad J
Keyboard (Mega Drive Keyboard) K
Serial I/O (RS232C) R
Printer (4 Color Plotter Printer) P
Tablet (Sega Graphic Board) T
Trackball (Sports Pad) B
Paddle Control V
Analog joystick (XE-1 AP) A
Mouse (Sega Mouse, Mega Mouse) M
FDD (Mega Drive Floppy Disk Drive) F
CD-ROM (Sega Mega-CD) C
Multi-tap (Team Player) 4
Six Button Control Pad 6

Modem info

Details for the Mega Modem[1]. This was generally left unused as the peripheral did not release outside of Japan.

Regional compatiblity

Regions of the world where the software is intended to run. Sega changed its system at some point in 1994.

1988 system

Prior to the change, regions were represented by one or more single characters[2]:

Region Code
NTSC-J J
NTSC-U U
PAL E

"JUE" would mean the game was theoretically region free.

1994 system

Sega adjusted its system in 1994 to account for "Japanese PAL" systems. Now all regions were represented by a single byte, between 0 and F[3]:

Hardware Region Code
0 1 2 3 4 5 6 7 8 9 A B C D E F
Japan, NTSC Japan, South Korea, Taiwan No Yes No Yes No Yes No Yes No Yes No Yes No Yes No Yes
Japan, PAL (none) No No Yes Yes No No Yes Yes No No Yes Yes No No Yes Yes
Overseas, NTSC North America, Brazil No No No No Yes Yes Yes Yes No No No No Yes Yes Yes Yes
Overseas, PAL Europe, Hong Kong No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes

In this example:

  • "0" would mean the game was incompatible with every console.
  • "1" would mean the game was only compatible with NTSC-J consoles.
  • "4" would mean the game was only compatible with NTSC-U consoles.
  • "8" would mean the game was only compatible with PAL consoles.
  • "F" would mean the game was compatible with all consoles.

Theoretically "E" could be mistaken for the older system (i.e. "Europe"/PAL), however this combination is rare, if not nonexistent.

Space

Some areas of the header should not be used, and instead filled with the ASCII space character (20)[2]. It is possible these areas are remants of scrapped hardware plans.

Example

The following header is for the initial release of Sonic the Hedgehog for the Mega Drive:



Offset Contents (hexadecimal) Decoded text
00000100
00000110
00000120
00000130
00000140
00000150
00000160
00000170
00000180
00000190
000001A0
000001B0
000001C0
000001D0
000001E0
000001F0
53 45 47 41 20 4D 45 47 41 20 44 52 49 56 45 20
28 43 29 53 45 47 41 20 31 39 39 31 2E 41 50 52
53 4F 4E 49 43 20 54 48 45 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 48 45 44 47 45 48 4F 47
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
53 4F 4E 49 43 20 54 48 45 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 48 45 44 47 45 48 4F 47
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
47 4D 20 30 30 30 30 31 30 30 39 2D 30 30 26 4A
4A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00 00 00 00 00 07 FF FF 00 FF 00 00 00 FF FF FF
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4A 55 45 20 20 20 20 20 20 20 20 20 20 20 20 20
SEGA MEGA DRIVE 
(C)SEGA 1991.APR
SONIC THE       
        HEDGEHOG
                
SONIC THE       
        HEDGEHOG
                
GM 00001009-00&J
J               
                
                
                
                
                
JUE             

From the header alone, it can be established that:

  • It is Mega Drive software
  • The software was published by Sega
  • The software is dated April 1991
  • The software is known as "Sonic the Hedgehog" both domestically (Japan) and overseas.
  • It is a game (GM) with product code "00001009-00"
  • The software is compatible with the Control Pad (J)
  • The software is designed to run on NTSC-J (J), NTSC-U (U) and PAL (E) systems.

Saturn

With the Sega Saturn, the format was changed, and the official designation was system ID[4].

The system ID must exist at the start of the CD-ROM, occupying 256 bytes of memory, laid out as follows[4]:

Offset Contents
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 Hardware identifier
10 Maker ID
20 Product number Version
30 Release date Device information
40 Compatible area symbols Space
50 Compatible peripherals
60 Game title
70
80
90
A0
B0
C0
D0 Reserved
E0 IP size Reserved Stack-M Stack-S
F0 1st read address 1st read size Reserved Reserved

All ASCII alphanumeric characters can be used in this section, as well as ".", "/", "-", ":" and space (20)[5].

Contents breakdown

Hardware identifier

The name of the hardware. Only SEGA SEGASATURN was allowed[5], though this area may have been intended to cover future upgrades or add-ons.

Maker ID

The publisher responsible for the software. With Sega this was always SEGA ENTERPRISES[5], while third-parties had to use SEGA TP T-XXX (where the XXX is the T-series code)[5].

Product number

The unique product ID assigned by Sega. For first party Sega games this was of the form GS-XXXX while third-parties used T-XXXXXX (the Xs being replaced with the given number).

Version

The software version number. Sega enforced a versioning system in the form of VX.YYY. X could only be 0 (non-final) or 1 (final) while YYY could be a specific version number chosen by the publisher. V1.000 would indicate a final "master" disc[6].

Release date

The creation date of the final master disc, in the form of YYYYMMDD. Sega's definition is misleading, as the mastering date was unlikely to be the physical release date (i.e. the date consumers could buy and play the game).

Device information

A field use for multi-disc software releases. Most software would use CD-1/1 , the first number being the disc number, and the second being the total number of discs[6].

For example, disc 2 of Panzer Dragoon Saga would be CD-2/4 .

Compatible area symbol

Regions of the world where the software is intended to run, represented by single characters[6]. The Saturn added T, not seen with previous systems:

Region Code
NTSC-J (Japan) J
NTSC-J (Taiwan, Philippines and Korea) T
NTSC-U U
PAL E

Compatible peripherals

Compatible accessories, represented by single characters[7]:

Accessory Code
Control Pad J
Analog controller A
Mouse (Shuttle Mouse) M
Keyboard (Saturn Keyboard) K
Steering controller (Arcade Racer) S
Multitap (6Player) T

Game title

The name of the game. Unlike previous systems, all localised names were to be stored in this section. There were no rules as to how to format multiple names, only that they were "[able] to be distinguished easily"[7].

IP size

The size of the Initial Program (IP)[8].

Stack-M

Master-SH2 stack pointer address[8].

Stack-S

Slave-SH2 stack pointer address[8].

1st read address

Transfer destination address of files transferred to the WORK-RAM by the boot system while the Sega logo is being displayed[8].

1st read size

Ignored for CD-ROMs[8]. This is likely a leftover from when cartridge-based games were still being considered for the Saturn platform.

Reserved

Reserved areas of the header should not be used, and instead filled with 0[5]. It is possible these areas are remants of scrapped hardware plans.

Example



Saturn
Offset Contents (hexadecimal) Decoded text
00000000
00000010
00000020
00000030
00000040
00000050
00000060
00000070
00000080
00000090
000000A0
000000B0
000000C0
000000D0
000000E0
000000F0
53 45 47 41 20 53 45 47 41 53 41 54 55 52 4E 20
53 45 47 41 20 54 50 20 54 2D 30 37 39 20 20 20
54 2D 30 37 39 30 34 48 35 30 56 32 2E 30 30 30
31 39 39 36 30 37 31 30 43 44 2D 31 2F 31 20 20
45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4F 4C 59 4D 50 49 43 20 53 4F 43 43 45 52 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00
06 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
SEGA SEGASATURN 
SEGA TP T-079   
T-07904H50V2.000
19960710CD-1/1  
E               
J               
OLYMPIC SOCCER  
                
                
                
                
                
                
                
                
                


Dreamcast

px
This list is incomplete.
The following list has been marked as incomplete. If you can, please complete it.

The Sega Dreamcast changed the scheme again, simplifying some sections and giving more space for the game title.

The header must exist at the start of the GD-ROM, occupying 256 bytes of memory, laid out as follows:

Offset Contents
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 Hardware identifier
10 Maker ID
20 Device information
30 Compatible area symbols Compatible peripherals
40 Product number Version
50 Release date
60 Boot filename
70 Disc manufacturer
80 Game title
90
A0
B0
C0
D0
E0
F0

Content breakdown

Hardware identifier

The name of the hardware. Only SEGA SEGAKATANA was allowed, though this area may have been intended to cover future upgrades or add-ons.

Maker ID

Device information

Compatible area symbols

Compatible peripherals

Product number

Version

Release date

Boot filename

Disc manufacturer

Game title

Example



Dreamcast
Offset Contents (hexadecimal) Decoded text
00000000
00000010
00000020
00000030
00000040
00000050
00000060
00000070
00000080
00000090
000000A0
000000B0
000000C0
000000D0
000000E0
000000F0
53 45 47 41 20 53 45 47 41 4B 41 54 41 4E 41 20
53 45 47 41 20 45 4E 54 45 52 50 52 49 53 45 53
36 31 41 37 20 47 44 2D 52 4F 4D 31 2F 31 20 20
20 55 20 20 20 20 20 20 30 37 39 39 41 31 30 20
54 34 30 32 30 36 4E 20 20 20 56 31 2E 30 30 31
32 30 30 30 30 34 32 30 20 20 20 20 20 20 20 20
31 53 54 5F 52 45 41 44 2E 42 49 4E 20 20 20 20
53 45 47 41 20 4C 43 2D 54 2D 34 30 32 20 20 20
53 55 50 45 52 20 4D 41 47 4E 45 54 49 43 20 4E
45 4F 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
SEGA SEGAKATANA 
SEGA ENTERPRISES
61A7 GD-ROM1/1  
 U      0799A10 
T40206N   V1.001
20000420        
1ST_READ.BIN    
SEGA LC-T-402   
SUPER MAGNETIC N
EO              
                
                
                
                
                
                


Issues

Inaccuracies

While Sega usually policed the layout of ROM headers, they were less likely to moderate the contents, meaning some headers do not accurately describe the software. For most users, the contents of ROM headers did not matter, as they wouldn't be shown when the software was running, however if one wishes to catalogue software based on the internal headers alone, the information can be misleading.

Most ROM headers were written while the software was in development and thus may not reflect the final product. The dates are particularly unreliable for this reason, however if a game changed publisher or gained new features late in development, this may not be reflected in the header's contents. As such, while in theory ROM headers should describe the software well enough for cataloguing, in practise the information can only provide rough guidelines.

Prototypes suggest that information was often added well in advance of software coming to market, with developers filling in the relevant fields to appease Sega's quality control, but not subsequently updating said fields when the product neared completion. This means headers often contain projected information, i.e. what the developers thought the software might look like sometimes months before the project fully took shape.

For example, Sonic the Hedgehog's header claims an April 1991 release and an incorrect product code. The game was originally planned for release around that time, but was delayed into June 1991, with the header not being updated. Furthermore the original ROM claims to be designed for NTSC-J systems, and while the game will indeed boot, Japan actually received a updated revision of the game in July, not the original release.

TradeMark Security System

With the Mega Drive, Sega incorporated the ROM header into its TradeMark Security System (TMSS) license checking system. The first of these checks expects to see the text "SEGA" (or " SEGA") at 100, the start of the hardware designation field. Starting in 1991, software that failed this check would not boot.

Early (and unlicensed) software often have ROM headers stored in the wrong place in memory (for example, Onslaught an unlicensed title by Accolade which infamously was never re-released to be TMSS-compliant, starts its header at 108).

References