Nintendo header: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
m (did you really mean almost 4 KiB back?) |
m (boo) |
||
Line 1: | Line 1: | ||
About 33% of licensed Nintendo NES games have an header present at their last bank, at | About 33% of licensed Nintendo NES games have an header present at their last bank, at addresses $ffe0-$fff9, right before the interrupt vectors. | ||
The info in them is frequently incomplete and/or inaccurate. When info on a particular filed is not present, a byte $00 or $ff is used for padding | The info in them is frequently incomplete and/or inaccurate. When info on a particular filed is not present, a byte $00 or $ff is used for padding | ||
* '''$ffe0-$ffef''' : Name of the game, in ASCII, zero terminated (sometimes the name is abbreviated or replaced by Nintendo's code). | * '''$ffe0-$ffef''' : Name of the game, in ASCII, zero terminated (sometimes the name is abbreviated or replaced by Nintendo's code). | ||
* '''$fff0-$fff1''' : PRG | * '''$fff0-$fff1''' : PRG checksum (either the last 16k bank, or the whole PRG-ROM). Clamped sum of all bytes, excluding the two checksum bytes. | ||
* '''$fff2-$fff3''' : CHR | * '''$fff2-$fff3''' : CHR checksum. | ||
* '''$fff4''' : High nybble = prg size (0=64kb, 2=32kb, 3=128kb, 4=256kb 5=512kb) | * '''$fff4''' : High nybble = prg size (0=64kb, 2=32kb, 3=128kb, 4=256kb 5=512kb). | ||
* '''$fff4''' Low nybble = chr size (0 or 8 = 8kb of RAM, 1=16kb, 2=32kb 3=128kb, 4=256kb) | * '''$fff4''' Low nybble = chr size (0 or 8 = 8kb of RAM, 1=16kb, 2=32kb 3=128kb, 4=256kb). | ||
* '''$fff5''' : Mirroring. ($04 = mapper controlled, $02 = hardwired to vertical, $81 or $82 = | * '''$fff5''' : Mirroring. ($04 = mapper controlled, $02 = hardwired to vertical, $81 or $82 = hardwired to horizontal. | ||
* '''$fff6''' : Version ($01 by default, incrementing on revisions) | * '''$fff6''' : Version ($01 by default, incrementing on revisions) | ||
* '''$fff7''' : Unknown | * '''$fff7''' : Unknown. | ||
* '''$fff8''' : | * '''$fff8''' : Maker's code, the same used for the FDS, GB, GBC and SNES headers. $01 = Nintendo, $08 = Capcom, etc. | ||
* '''$fff9''' : Unknown | * '''$fff9''' : Unknown. |
Revision as of 02:07, 12 January 2011
About 33% of licensed Nintendo NES games have an header present at their last bank, at addresses $ffe0-$fff9, right before the interrupt vectors.
The info in them is frequently incomplete and/or inaccurate. When info on a particular filed is not present, a byte $00 or $ff is used for padding
- $ffe0-$ffef : Name of the game, in ASCII, zero terminated (sometimes the name is abbreviated or replaced by Nintendo's code).
- $fff0-$fff1 : PRG checksum (either the last 16k bank, or the whole PRG-ROM). Clamped sum of all bytes, excluding the two checksum bytes.
- $fff2-$fff3 : CHR checksum.
- $fff4 : High nybble = prg size (0=64kb, 2=32kb, 3=128kb, 4=256kb 5=512kb).
- $fff4 Low nybble = chr size (0 or 8 = 8kb of RAM, 1=16kb, 2=32kb 3=128kb, 4=256kb).
- $fff5 : Mirroring. ($04 = mapper controlled, $02 = hardwired to vertical, $81 or $82 = hardwired to horizontal.
- $fff6 : Version ($01 by default, incrementing on revisions)
- $fff7 : Unknown.
- $fff8 : Maker's code, the same used for the FDS, GB, GBC and SNES headers. $01 = Nintendo, $08 = Capcom, etc.
- $fff9 : Unknown.