In short
- Use Floating IPS (Windows, macOS, Linux) — it applies IPS and BPS, verifies what it can, and is actively maintained via community forks.
- Lunar IPS is the Windows-only classic: IPS only, but dead simple.
- IPS has no checksums — if you feed it the wrong ROM, it patches happily and produces garbage. Verify the ROM yourself first.
- IPS can’t modify data past 16MB — big hacks use BPS, UPS or XDelta instead.
What an IPS patch is (and isn’t)
IPS (International Patching System) stores a list of “write these bytes at this position” records. It was designed in the SNES era for small ROMs, and it shows: offsets are 3 bytes wide, so nothing past 16MB (16,777,216 bytes) can be addressed. There is no checksum of the source or the result anywhere in the format.
That simplicity is also its strength: every patcher supports IPS, every tutorial mentions it, and thousands of classic hacks — especially SNES and GBA — are distributed as .ips. For anything larger or safety-critical, creators moved on to BPS, UPS or XDelta.
Picking an IPS patcher
| Tool | Platforms | Also handles | Best for |
|---|---|---|---|
| Floating IPS | Windows, macOS, Linux | BPS | Everyone — the default choice |
| Lunar IPS | Windows | IPS only | Quick jobs on Windows; also creates IPS patches |
| RomPatcher.js | Any browser | UPS, BPS, APS, PPF… | Patching without installing anything |
| UniPatcher | Android | UPS, BPS, XDelta… | Patching on a phone |
Applying an IPS patch with Floating IPS
-
Verify your base ROM first
This is the step IPS can’t do for you. Confirm the exact game and revision the hack’s readme names and compare checksums. How to verify a source file.
-
Open Floating IPS and choose Apply Patch
The main window offers Apply Patch and Create Patch. Choose Apply Patch.
-
Select the .ips file
Pick the extracted patch. Floating IPS also accepts a patch zipped together with nothing else, but extracting first avoids surprises.
-
Select the base ROM
Choose your verified dump. Remember: Floating IPS will not stop you here if it’s the wrong file — that check was step one.
-
Name the output and apply
Save under a new filename so the clean dump survives. The patch applies in well under a second for most ROMs.
-
Test the result
Load the patched ROM in an emulator. If it behaves oddly, the base ROM was almost certainly wrong — re-verify and re-patch; don’t “fix” the output.
Living with the 16MB limit
If a hack targets a game larger than 16MB — or expands a smaller ROM past that line — IPS physically cannot express the patch, and creators know it. You’ll never legitimately need to force it:
- If the hack ships as
.ips, it fits. Trust the format choice. - If you’re creating a patch that won’t fit, switch formats: BPS via beat is the spiritual successor, and XDelta via Delta Patcher handles anything.
- A “successful” IPS patch on a >16MB ROM that misbehaves usually means the wrong base file, not the limit — IPS fails safe by refusing impossible offsets.
IPS problems and fixes
| Problem | Likely cause | Fix |
|---|---|---|
| Patch applies but game glitches | Wrong base ROM — IPS can’t detect this | Re-verify the dump and re-patch |
| Nothing changes in-game | You loaded the unpatched ROM | Check you opened the output file, not the original |
| Patcher won’t open the file | It isn’t IPS — check the extension | Identify the real format |
| SNES hack fails specifically | Headered vs unheadered mismatch | The SNES header guide |
IPS FAQ
Can IPS patches be undone?
Not from the patch alone — IPS stores no copy of the original bytes it overwrites. Always keep your clean dump; that’s your undo button.
Why do some people call IPS outdated?
Because BPS does everything IPS does plus checksums and larger files. IPS survives on ubiquity: every tool reads it and thousands of classic hacks use it. For new hacks, BPS or XDelta are the better choices.
Floating IPS vs Lunar IPS — which one?
Floating IPS for applying (cross-platform, handles BPS too). Lunar IPS is fine on Windows and can also create IPS patches, but it’s IPS-only and unmaintained.
Creating IPS patches with Lunar IPS
Lunar IPS on Windows both applies and creates IPS patches. To share your own mod: open Lunar IPS, choose Create IPS Patch, select the clean original ROM, then your modified ROM, and save the .ips. Test it yourself by applying it to a fresh copy of the original — if the result matches your modified ROM, the patch is good. Remember the format’s limits: keep the hack under 16MB and consider BPS for anything where checksum safety matters.
IPS beyond the desktop
- Browser: RomPatcher.js applies IPS with no install — paste the ROM and patch, download the result.
- Android: UniPatcher handles IPS on-device; useful for GBA and SNES hacks you’ll play in a mobile emulator.
- Emulator auto-patch: Snes9x, mGBA and VBA-M all auto-apply an IPS that shares the ROM’s filename — handy for testing translations without committing to a patched file.
Verifying an IPS patch before applying
Because IPS has no checksums, a corrupted .ips download fails in confusing ways — the patcher applies garbage and the game glitches. Protect yourself:
- Check the file size. An IPS patch for a real hack is rarely zero bytes or absurdly large; a 0-byte or truncated download is the most common corruption.
- Prefer patches with published checksums. Serious projects list the patch file’s own MD5/SHA-1 next to the download — compare before applying.
- Re-download on any doubt. IPS patches are tiny; a fresh download costs seconds and eliminates an entire class of mystery failures.