ROM Headers

The headers are the first 16 bytes in any and all nes roms found on the internet and are actually not on any nes carts you would buy in the store. These were put here so emulators and hackers would have more information on the ROM they are looking at.

Below explains what each byte of the header tells us about the ROM.

BytesDescriptionVisual
Byte 0
-
Byte 3
These bytes are constant throughout all ROMs. This help signifies that this is an NES ROM.4E 45 53 1A
Byte 4This byte tells us how many sets of 16k PRGs there are in the ROM.XX
Byte 5This byte tells us how many sets of 8k CHRs there are in the ROM.XX
Byte 6This is known as the 1st control byte. This byte tells many different things about the ROM and to get them, you have to look at its bits.

The Upper 4 bits (the bits to the far left), contain the lower 4 bits to the mapper number of this game (The other 4 bits for the mapper are in the 2nd control byte).
The next bit, to the right of the mapper bits, tells us if there is a 4-screen layout in the game. If the bit is 1, then there is a 4-screen, else there is none.
The next one tells us if there is a 512 byte trainer present.
The one after it tells us if the game has SRAM enabled.
The last bit (the far right bit) what kind of mirroring the game uses. If the bit is 1, then it uses Vertical Mirroring. If its 0, then it uses Horizontal.

MMMMVTSM
Byte 7This is known as the 2nd control byte. This byte tells us the Lower bits for the mapper.
Bit 0 designates a ROM as being VS Unisystem.
Bit 1 designates it as PlayChoice-10.
The rest of the bits should be set 0.
MMMM00PU
Byte 8
-
Byte 9
These bytes are just set to 0.00 00
Byte 11
-
Byte 15
These bytes are just set to 0.00 00 00 00 00