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).
Contents
- 1 Pre-Mega Drive
- 2 Mega Drive
- 3 Saturn
- 3.1 Contents breakdown
- 3.1.1 Hardware identifier
- 3.1.2 Maker ID
- 3.1.3 Product number
- 3.1.4 Version
- 3.1.5 Release date
- 3.1.6 Device information
- 3.1.7 Compatible area symbol
- 3.1.8 Compatible peripherals
- 3.1.9 Game title
- 3.1.10 IP size
- 3.1.11 Stack-M
- 3.1.12 Stack-S
- 3.1.13 1st read address
- 3.1.14 1st read size
- 3.1.15 Reserved
- 3.2 Example
- 3.1 Contents breakdown
- 4 Dreamcast
- 5 Issues
- 6 References
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 |
Virtua Gun | G[8] |
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)[9].
Stack-M
Master-SH2 stack pointer address[9].
Stack-S
Slave-SH2 stack pointer address[9].
1st read address
Transfer destination address of files transferred to the WORK-RAM by the boot system while the Sega logo is being displayed[9].
1st read size
Ignored for CD-ROMs[9]. 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
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
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
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
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 Mega-CD Disc Format Specifications, Ver 2.00 (1992-02-24), page 25
- ↑ 2.0 2.1 2.2 Mega-CD Disc Format Specifications, Ver 2.00 (1992-02-24), page 26
- ↑ File:GenesisTechnicalBulletins.pdf, page 56
- ↑ 4.0 4.1 Disc Format Standards: Specification Sheet Ver. 1.0, Doc #ST-040-R4-051795, page 29
- ↑ 5.0 5.1 5.2 5.3 5.4 Disc Format Standards: Specification Sheet Ver. 1.0, Doc #ST-040-R4-051795, page 30
- ↑ 6.0 6.1 6.2 Disc Format Standards: Specification Sheet Ver. 1.0, Doc #ST-040-R4-051795, page 31
- ↑ 7.0 7.1 Disc Format Standards: Specification Sheet Ver. 1.0, Doc #ST-040-R4-051795, page 32
- ↑ File:ST-TECH.pdf, page 126
- ↑ 9.0 9.1 9.2 9.3 9.4 Disc Format Standards: Specification Sheet Ver. 1.0, Doc #ST-040-R4-051795, page 33