In short
- SNES ROMs come in two flavours: headered (512 extra bytes at the start, often
.smc) and unheadered (often.sfc). - A patch built for one flavour fails on the other — this is the number one SNES patching failure.
- Check the hack’s readme for which flavour it wants; when in doubt, try the other flavour before anything else.
- Snes9x auto-applies an IPS with the same filename as the ROM — handy for quick tests.
The 512-byte header, explained
In the 1990s, cartridge copiers added a 512-byte header to the front of every SNES ROM dump so the copier hardware could identify the game. Decades later, roughly half the dumps in circulation still carry that header (commonly named .smc) and half have had it stripped (commonly named .sfc — though the extension is only a convention, not a guarantee).
A patch records byte positions. Shift every position by 512 bytes and nothing lines up, so:
| Situation | Result |
|---|---|
| Headered patch + headered ROM | Works |
| Unheadered patch + unheadered ROM | Works |
| Headered patch + unheadered ROM (or vice versa) | Fails — usually immediately, sometimes with garbage output |
Which flavour does your patch want?
- Read the hack’s readme. Good projects state “headered” or “unheadered” (sometimes “SMC” vs “SFC”) explicitly.
- Compare checksums against the readme’s expected values — but note the checksum is of a specific flavour, so a mismatch can mean the wrong flavour rather than a bad dump. How to calculate checksums.
- Convert if needed. Adding or removing a 512-byte header is a one-click operation in tools like NSRT or in most ROM managers; it doesn’t alter the game data itself.
- Re-patch after converting. Always convert first, then apply the patch to the converted file.
Applying the patch
SNES hacks come as IPS (classics), BPS (modern, checksum-safe) and occasionally XDelta. Match the tool to the extension:
-
Pick the patcher for the format
IPS or BPS → Floating IPS. XDelta → Delta Patcher via the standard method. Format guides: IPS, BPS.
-
Prepare the correctly-headered ROM
Use a verified dump in the flavour the patch expects. Patch a copy, not your only dump.
-
Apply and name the output
Floating IPS: Apply Patch → patch → ROM → save the result. Keep
.smc/.sfcconsistent with what your emulator expects. -
Test in Snes9x
Snes9x is the reference emulator for patched SNES ROMs. Bonus: drop an IPS next to a ROM with the same filename and Snes9x applies it automatically on load — perfect for testing without committing to a patched file.
SNES patching problems and fixes
| Problem | Likely cause | Fix |
|---|---|---|
| Patch fails immediately | Header mismatch | Match the flavour the patch wants |
| Patched game glitches or crashes | IPS applied to the wrong flavour (IPS can’t detect it) | Re-patch the correct flavour from a clean dump |
| Snes9x won’t auto-patch | Filenames don’t match exactly, or it’s a BPS/XDelta patch | Rename to match, or patch manually — auto-patch is IPS-only |
| Checksum mismatch on verify | You checksummed the wrong flavour | Compare against the readme’s value for your flavour |
SNES patching FAQ
How do I add or remove a SNES header?
Use NSRT, a ROM manager, or Floating IPS-adjacent utilities — adding or stripping the 512-byte SMC header is a standard one-click operation. Convert first, then patch the converted file.
Does the header affect gameplay?
No. Emulators ignore the copier header entirely; it exists only for old copier hardware. It matters solely because patches count bytes from the start of the file.
My hack only says “no header”. What does that mean?
It wants an unheadered ROM (often distributed as .sfc). If your dump is headered, strip the 512 bytes and patch the result.
Special chips and MSU-1 hacks
Some SNES hacks target games with enhancement chips (Super FX, SA-1, DSP) or the MSU-1 homebrew audio standard. Patching works exactly the same — the patch format doesn’t care what chip the game uses — but playing the result needs an emulator or flashcart that supports the chip:
- Snes9x supports the common enhancement chips out of the box.
- MSU-1 hacks need the patched ROM plus the accompanying audio/data files in the same folder, exactly as the readme describes; the patch only covers the ROM itself.
- On original hardware, you’ll need a flashcart with chip support (e.g. SD2SNES/FXPpak for the demanding ones).
Creating your own IPS patch
If you’ve modified a ROM and want to share the changes, Lunar IPS on Windows creates IPS patches in a few clicks: open Lunar IPS, choose Create IPS Patch, select the original (clean) ROM, then your modified ROM, and save the .ips. Distribute the patch, never the ROM — the patch contains only your changes. For anything over 16MB or where you want checksum safety, create a BPS or XDelta patch instead.
Fan translations of Japanese exclusives
A large share of SNES patches are English translations of Japan-only games. The flow is identical to any IPS/BPS patch, with one extra check: translations are usually built against a specific regional dump, and header expectations vary by translation team. The readme’s stated base ROM (including header flavour) is law — a translation that expects an unheadered Japanese ROM will fail on a headered one exactly like any other mismatch.
Get Delta Patcher for XDelta-based SNES hacks
Version 3.1.6 is free and open source, with builds for Windows, macOS and Linux. Downloads come straight from the developer’s official GitHub releases.