Skip to content
EZ ROM Patcher

Patching SNES ROMs and the 512-byte header

Short answer

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 a whole number of kilobytes; a headered one carries an extra 512 bytes on top. The patcher checks the size 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

Look for the spare half-kilobyte. A clean dump is a whole number of kilobytes; a headered one is exactly 512 bytes more. So 1,048,576 bytes is a clean 1 MB ROM, and 1,049,088 bytes is the same ROM with a header on the front. That test is the reliable one, and it does not depend on the extension.

You will also see the rule stated as "a clean SNES ROM is a multiple of 32 KB", which is what Flips and most emulators test against. It holds for the overwhelming majority of dumps. This patcher is stricter: it only offers the header checkbox when the file is 512 bytes above a multiple of 256 KB. Every ordinary retail game fits that, but small or unusual cartridges do not, so a headered Game Genie, Pro Action Replay, prototype or homebrew ROM can go undetected. If you have one of those and a patch fails, the header is still worth suspecting even though no checkbox appeared.

Cartridge sizeUnheadered bytesHeadered bytes
4 Mbit (512 KB)524,288524,800
8 Mbit (1 MB)1,048,5761,049,088
16 Mbit (2 MB)2,097,1522,097,664
32 Mbit (4 MB)4,194,3044,194,816
Common SNES ROM sizes

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, and the patcher will not apply the patch until it does. With IPS there is no checksum, so the patch applies either way and you only learn you got it wrong when the patched game misbehaves. If that happens, 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 a whole number of kilobytes, while a headered one is 512 bytes larger than that.

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.

Keep reading

Last reviewed