Skip to content

Commit

Permalink
doc(rom_info): add a few notes
Browse files Browse the repository at this point in the history
  • Loading branch information
mroach committed Aug 22, 2021
1 parent d3e9ee7 commit a6bc742
Showing 1 changed file with 56 additions and 6 deletions.
62 changes: 56 additions & 6 deletions rom_info.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
## ROM ID
# ROM Information

A collection of my notes and gathered information about N64 ROM files and headers.


ROM ID / Serial
--------------------------------------------------------------------------------
Each ROM has a four-character ID, such as `NSME` for *Super Mario 64*.
Using that as an example:

Expand All @@ -11,7 +16,7 @@ N SM E
└ Media Type
```

### Media Type
### Media Type - `0x38 - 0x3B` - 4 bytes, NUL-padded

By far the most common is `N` for a standard cartridge.

Expand All @@ -24,7 +29,7 @@ There are a handful of games with `C` such as *Legend of Zelda: Ocarina of Time*
* `E` - 64DD Expansion
* `Z` - Aleck64 Cartridge

### Software ID
### Software ID - `0x3C - 0x3D` - 2 bytes

Each game gets its own two-character alphanumeric ID that is the same across all regions.

Expand All @@ -34,7 +39,7 @@ Examples:
* `FU` - Conker's Bad Fur Day
* `B5` - Biohazard 2

### ROM Regions
### ROM Region IDs - `0x3E` - 1 byte

The final character of the ROM ID is the region.

Expand Down Expand Up @@ -62,11 +67,15 @@ By far the most common are:
* `X` - PAL (Uncommon)
* `Y` - PAL (Uncommon)

## Package Regions

Package Regions
--------------------------------------------------------------------------------

Package regions do not appear in ROM data. These only appear on the cartridge itself
and on the box, perhaps to denote the target market such as box art and language of the manuals.

There's not always a clear mapping to/from ROM region IDs.

| Code | Description |
| ------ | ------------------------------ |
| `ASI` | Singapore, Malaysia, Indonesia |
Expand All @@ -90,7 +99,48 @@ and on the box, perhaps to denote the target market such as box art and language
| `UKV` | United Kingdom |
| `USA` | United States |

## References
Brazilian cartridges don't have package region codes, though it's common to use `BRA`
when referring to a Brazil-specific game or cartridge.


Software Title - `0x20` - 20 bytes, NUL-padded
--------------------------------------------------------------------------------

Each ROM includes up to 20 characters for the software/game title.
Some examples:

* `CONKER BFD`
* `Diddy Kong Racing`
* `F-ZERO X`
* `JET FORCE GEMINI`
* `LEGORacers`
* `THE LEGEND OF ZELDA`
* `MarioParty2`
* `EVANGELION`
* `PAPER MARIO`
* `Perfect Dark`
* `TSUMI TO BATSU`


CRC1 - `0x10 - 0x13` - 4 bytes
--------------------------------------------------------------------------------

Also known as **CRC HI** in the EverDrive 64.

Calculated against `0x100000` bytes starting at `0x1000`

See [http://n64dev.org/n64crc.html](http://n64dev.org/n64crc.html)


CRC2 - `0x14 - 0x18` - 4 bytes
--------------------------------------------------------------------------------

Also known as **CRC LO** in the EverDrive 64.

See [http://n64dev.org/n64crc.html](http://n64dev.org/n64crc.html)


References
--------------------------------------------------------------------------------
* https://github.com/n64dev/cen64/blob/master/device/cart_db.c
* http://en64.shoutwiki.com/wiki/ROM#Cartridge_ROM_Header

0 comments on commit a6bc742

Please sign in to comment.