How to Apply a Translation Patch — IPS, PPF, BPS and xdelta Explained
Fan translations of retro games are almost always distributed as a small file that records only what changed, leaving the original ROM untouched. Laying that file over the original is what we call applying a patch.
This article explains why there are several patch formats, how they differ, and how to apply one with the ROM patch tool.
Why a patch file instead of the whole ROM
The end product of a translation project is a finished ROM, but distributing that would mean distributing the copyrighted work in its entirety. So translators release a file containing only the differences between the original and the translation, and each user applies it to a copy they already own.
Taken on its own, a patch file is not game data at all. It is closer to a list of instructions: "change byte number N to this value." That is why patches are tens to hundreds of times smaller than the ROMs they modify.
Patch formats
| Extension | Name | Characteristics |
|---|---|---|
.ips | International Patching System | The oldest and simplest. Safe only for files up to 16 MB |
.ppf | PlayStation Patch Format | Built for CD-based games such as PS1. Some versions can verify the original |
.bps | Beat Patch System | Stores checksums of the source, target and patch, so verification is the strictest |
.xdelta .vcdiff | VCDIFF (RFC 3284) | Handles large files well and compresses efficiently. Common for big disc images |
Which one should you download? It is not really a choice — you get whatever format the author decided to use. All four are handled by the ROM patch tool.
The 16 MB limit of IPS
IPS records positions within a file using three bytes. The largest value three bytes can express is 16,777,215, so it cannot point at anything past roughly 16 MB. Mega Drive and Super Famicom cartridge games usually fit inside that, but disc images for CD games are far larger, which is why IPS is not used for them.
Why BPS is so strict
BPS stores the CRC32 checksum of the source file inside the patch. If the original you are applying it to differs from the author's by even a single byte, it refuses on the spot. That may look inconvenient, but it beats layering a patch onto the wrong original and having the game break halfway through.
How to apply
- Open the ROM patch tool.
- Drop in the original ROM or disc image and the patch file together. They are sorted by extension automatically, so the order does not matter.
- Once both slots are filled, the
Apply patchbutton becomes available. - When it finishes, the result downloads as
originalname (patched).ext.
Everything happens inside your browser. The original file is never sent to a server, so your game files never leave your computer.
For CD games (.cue + .bin)
A .cue is a text file describing the track layout; the actual data lives in the .bin. The .bin is what the patch has to be applied to.
If you upload only a .cue, the tool blocks the operation and explains why. Upload the .cue and .bin together and it patches the .bin while leaving the .cue alone.
For multi-disc games
When there are several original-and-patch pairs — a three-disc game, for instance — upload them all at once. They are matched up in order, applied, and delivered as a single ZIP. You can drag entries in the list to reorder them, so if the automatic pairing came out wrong, fix it before applying.
When it does not work
Errors along the lines of "checksum does not match"
Your original differs from the author's. Even for the same game, files differ by region (Japanese, North American), by revision (rev 1, rev A) and by how the cartridge was dumped. Check which version the patch page says it targets.
It applied, but the text is garbled
The patch may be fine while the runtime environment is not. Set the region in your emulator to match the original, or try a different emulator.
I want to confirm the file is right
Drop the original or the patch into the file inspector and it will show you the format and the internal structure. For IPS it reports the record count and the range of the edits; for PPF, the version and verification options; for BPS, the checksums; for xdelta, the window count and compression method. You can check whether the patch file is sound, and whether it targets an original of the size you expect, before you commit to anything.
Where do I get the original?
Patches are distributed on the assumption that you apply them to a backup of a game you legitimately own. This site provides patch files only; it does not provide game ROMs.
Summary
- A patch is a list of edits to an original, and the procedure is the same whatever the format
- The
.binis the patch target, not the.cue - Failures almost always mean a mismatched original, so check the target version listed by the distributor first
- When in doubt, look inside the patch and the original with the file inspector first
You can browse the available patches by console on the translation patches page.