IPS vs BPS
BPS is the better format in almost every respect: it verifies the source ROM with a checksum, can grow or shrink a file, has no size ceiling, and produces dramatically smaller patches. IPS is worth choosing only when a tool or community specifically requires it, and only for ROMs under 16 MB.
Use BPS unless something specifically requires IPS.
| IPS | BPS | |
|---|---|---|
| Verifies your ROM | No | Yes, CRC32 of source and output |
| Maximum ROM size | 16 MB | No practical limit |
| Can grow a ROM | Yes | Yes |
| Can shrink a ROM | No | Yes |
| Patch size for a ROM expansion | Huge, often ROM-sized | Small |
| Carries metadata | No | Yes, optional |
| Tool support | Universal, including very old tools | Wide, anything modern |
| Created here | Yes | Yes |
The fundamental difference
IPS is a list of overwrites: write these bytes at this offset, repeat. BPS describes how to rebuild the patched ROM using copy instructions that can point into the source ROM or into the output so far.
That difference explains everything else. Copy instructions let BPS express "this 200 KB block moved" in a few bytes, where IPS has to write out all 200 KB. It is also why BPS can carry checksums naturally, since it already knows the shape of both files.
When IPS is still the right answer
- A community or toolchain expects it, which is common in long-running NES and SNES projects.
- You are targeting hardware or software with an old built-in patcher that only understands IPS.
- The hack is a handful of byte changes on a small ROM, where the size advantage of BPS is irrelevant.
How much smaller are BPS patches?
For a patch that only changes scattered bytes, the two are comparable. For anything that expands or relocates data, the gap becomes enormous. A ROM expansion that shifts everything past a certain offset makes an IPS patch approach the size of the ROM itself, while the BPS equivalent stays in the tens of kilobytes.
Frequently asked questions
Should I use IPS or BPS for a new romhack?
BPS, unless your community expects IPS. It verifies the base ROM so users cannot silently patch the wrong file, it has no 16 MB ceiling, and the patches are much smaller.
Can I convert an IPS patch to BPS?
Not directly, because an IPS patch does not contain enough information about the source ROM. What you can do is apply the IPS patch to the correct base ROM, then create a BPS patch from the original and the patched result.
Is BPS supported everywhere IPS is?
Nearly. Any current patching tool handles BPS. Very old utilities and some built-in patchers on legacy hardware only understand IPS.