BPS patch files
A BPS file is a modern ROM patch format created by byuu as a successor to UPS. It stores a real binary delta rather than a list of overwrites, and embeds CRC32 checksums of the source ROM, the patched result and the patch itself. That means it refuses to apply to the wrong ROM and can change a ROM’s size.
- Extension
- .bps
- Identifier bytes
- BPS1
- Verifies your ROM
- Yes
- Can change ROM size
- Yes
- Create on this site
- Yes
- Common on
- SNES, GBA, NES, Nintendo DS, Genesis, Any ROM under 64 MB
Limitations
- Less universal tool support than IPS in very old communities.
How the BPS format works
Where IPS says "write these bytes at this address", BPS describes how to rebuild the patched ROM from scratch using four actions. Each action copies a run of bytes from somewhere: the source ROM, the patch itself, an earlier point in the source, or an earlier point in the output being built.
| Action | What it does |
|---|---|
| SourceRead | Copy bytes straight from the same position in the original ROM |
| TargetRead | Copy literal bytes stored inside the patch |
| SourceCopy | Copy a run from anywhere in the original ROM |
| TargetCopy | Copy a run from what has been written so far, which also gives run-length encoding for free |
Because a hack usually moves data around rather than replacing it wholesale, SourceCopy and TargetCopy let BPS describe large rearrangements in a handful of bytes. A relocated 200 KB graphics bank costs a few bytes in BPS and 200 KB in IPS.
The file ends with three CRC32 values: the source ROM, the patched output, and the patch itself. Numbers are stored in a variable-length encoding, so small offsets take one byte instead of four.
Why BPS refuses to patch the wrong ROM
The embedded source CRC32 is checked before anything is written. If your ROM does not match what the patch author used, the patcher tells you so instead of quietly producing a broken file. This single feature removes the most common category of "the patch does not work" problems.
The output CRC32 gets checked too, so a truncated download or a corrupted patch is caught rather than silently applied.
Why BPS patches are so much smaller
A ROM expansion that shifts everything after a certain point is the worst case for IPS: every shifted byte becomes patch data. BPS represents the same change as a copy instruction. In practice this is the difference between a 6 MB IPS patch and a 40 KB BPS patch for the same hack.
BPS also carries an optional metadata field, which some tools use to record the hack name and author.
Flips, and applying BPS online
Flips, short for Floating IPS, is the desktop tool most associated with BPS. It handles both IPS and BPS, and it is what many hack authors use to build their releases. If a readme tells you to "use Flips", a browser patcher does the same job on the same file.
Applying a BPS patch online has one practical advantage worth noting: Flips is a Windows program, so Mac, Linux, Chromebook and phone users otherwise need a compatibility layer. Doing it in a browser sidesteps that without sending your ROM anywhere.
How to create a BPS patch
You need both the untouched original ROM and your modified copy. The patch creator compares them and produces a .bps you can distribute. The original ROM is never included in the patch, which is what makes sharing a patch legal to do while sharing a ROM is not.
Frequently asked questions
What is BPS patching?
BPS patching applies a .bps file to a ROM to produce a modified version such as a romhack or translation. BPS stores a delta-encoded description of the differences plus CRC32 checksums, so the patcher can confirm you have the correct base ROM before it writes anything.
How do I apply a BPS patch to a ROM?
Open the patcher, select your original ROM, select the .bps file, then press Apply patch. The patched ROM downloads to your device. BPS verifies your ROM against its stored checksum first, so you find out immediately if the base file is wrong.
What does a .bps file mean?
It is a patch, not a game. A .bps file contains only the differences between an original ROM and a modified one, so it is useless by itself. You supply the original ROM and the patch reconstructs the modified version on your machine.
What is Flips Patcher?
Flips, or Floating IPS, is a desktop patching tool that applies and creates both IPS and BPS patches. It is a Windows program widely used by romhack authors. A browser-based patcher performs the same operation on the same files without an install.
Is BPS better than IPS?
For most purposes yes. BPS verifies the source ROM with a checksum, can change file size in either direction, and produces much smaller patches for large changes. IPS remains useful only because some older tools and communities still expect it.
What does "source checksum mismatch" mean on a BPS patch?
Your ROM is not the exact file the patch was built from. Common causes are a copier header on a SNES ROM, a different regional release, a bad dump, or a ROM that has already been patched. The patch is doing its job by refusing.
Who created the BPS format?
byuu, the developer behind the bsnes and higan emulators, who also created the earlier UPS format. BPS was designed to replace both IPS and UPS.
Can BPS patches shrink a ROM?
Yes. Unlike IPS, BPS describes the output file completely, so the patched ROM can be larger or smaller than the original.