Patching SNES ROMs and the 512-byte header
Most SNES patch failures come from the 512-byte copier header. Old backup devices added it to the front of every dump, shifting all data by 512 bytes. A clean SNES ROM is an exact multiple of 32 KB; a headered one is 512 bytes larger. The patcher detects this and offers to remove or add the header.
What the 512-byte header is
Backup units such as the Super Wild Card, Game Doctor and Super Magicom wrote a 512-byte block ahead of the ROM data describing how to load the cartridge. Dumps from that era carry it. Dumps catalogued by No-Intro, the modern preservation project, do not.
Because a patch addresses data by offset, that 512-byte block moves every target. A patch built against an unheadered ROM writes to the wrong places in a headered one, and the result is a ROM that either fails to boot or glitches badly.
How to tell if your SNES ROM has a header
Divide the file size by 1024. A clean ROM lands on a multiple of 32. A headered one is 0.5 KB over. So 1024 KB is clean, and 1024.5 KB is headered.
| Cartridge size | Unheadered bytes | Headered bytes |
|---|---|---|
| 4 Mbit (512 KB) | 524,288 | 524,800 |
| 8 Mbit (1 MB) | 1,048,576 | 1,049,088 |
| 16 Mbit (2 MB) | 2,097,152 | 2,097,664 |
| 32 Mbit (4 MB) | 4,194,304 | 4,194,816 |
Is .sfc or .smc the headered one?
Neither, reliably. The convention is that .smc means headered and .sfc means not, but it is only a convention and plenty of files are named against it. The file size tells you the truth; the extension does not.
The patcher treats .sfc, .smc, .swc and .fig identically and checks the size rather than trusting the name.
Should the header come off?
Match whatever the patch author used. Modern patches usually expect unheadered ROMs because No-Intro is the reference. Older patches from the copier era often expect the header present.
With BPS you find out instantly, because the embedded checksum either matches or it does not. With IPS there is no checksum, so if the patched game misbehaves, try it the other way.
Frequently asked questions
Why do some SNES patches require unheadered ROMs?
A patch stores offsets into the ROM. The 512-byte copier header pushes all game data forward by 512 bytes, so every offset in the patch would land 512 bytes early. The author picks one and the patch only works against that.
Is a .sfc file always headerless?
No. The .sfc and .smc extensions are only conventions and are frequently applied inconsistently. Check the file size instead: a clean SNES ROM is an exact multiple of 32 KB.
Does removing the header hurt the ROM?
No. The header is copier metadata rather than game data, and removing it produces the raw ROM that modern emulators and preservation databases expect.
My SNES patch still fails after removing the header. What next?
Check region and revision. A USA 1.0 ROM and a USA 1.1 ROM are different files. Compare your ROM’s CRC32 against the exact value in the hack’s readme.