In short
- Delta Patcher only opens XDelta (.xdelta / VCDIFF) patches. Other formats need a different tool; renaming the file won’t help.
- IPS is simple and old: no checksums, and it can’t address data beyond 16 MB.
- UPS and BPS add CRC32 checksums; BPS also handles inserted and moved data.
- PPF is aimed at CD images. XDelta handles very large files and shifted data, with per-window checksums.
Patch formats at a glance
| Format | Extension | Size limit | Checksums | Inserted or moved data | Typical use | Delta Patcher |
|---|---|---|---|---|---|---|
| IPS | .ips | 16 MB addressable | None | No, overwrites at fixed offsets | Older cartridge ROM hacks | No |
| UPS | .ups | No practical limit | CRC32 of source, target and patch | No, byte-for-byte differences | Cartridge ROM hacks | No |
| BPS | .bps | No practical limit | CRC32 of source, target and patch | Yes, copy instructions | Modern cartridge ROM hacks | No |
| PPF | .ppf | Large files in PPF3 | Optional validation block | No, overwrites at fixed offsets | CD images, especially PlayStation | No |
| XDelta (VCDIFF) | .xdelta, .vcdiff | Very large files (over 4 GB in Delta Patcher 3.1.5+) | Adler-32 per window | Yes, copy instructions | Disc images, large files, general binaries | Yes |
IPS (International Patching System)
IPS is one of the oldest and simplest formats. A patch is a list of records, each saying “write these bytes at this offset.” Offsets are stored in 3 bytes, so it can’t modify data beyond about 16 MB, and there are no checksums. An IPS patch applied to the wrong file silently produces a broken result. It’s still common for older cartridge-era ROM hacks, where files are small.
UPS
UPS was designed as a successor to IPS. It removes the size limit and stores CRC32 checksums of the source file, the result and the patch itself, so a wrong source is detected. It records byte-level differences at fixed positions, so data that shifts produces larger patches. A UPS patch can also be applied in reverse to recover the original.
BPS
BPS, created by the same author as UPS, keeps the CRC32 checksums and adds copy instructions that reference data anywhere in the source or in the output built so far. That lets it handle inserted, removed and moved data efficiently, much like XDelta. It can also carry metadata. BPS is widely used for modern ROM hacks.
PPF (PlayStation Patch Format)
PPF was created for CD images, especially PlayStation games. Like IPS, it overwrites data at fixed offsets. Later versions added support for large images, an optional validation block that checks part of the source image, and optional undo data. It’s associated with the PPF-O-MATIC tools.
XDelta (VCDIFF)
XDelta patches use VCDIFF, a published standard (RFC 3284), as implemented by xdelta3. Copy instructions can reference any part of the source, so shifted data costs little. Output is built in windows with an Adler-32 checksum each, and the format streams through very large files, which is why it’s popular for disc images. It works with any file type. More about XDelta.
Which tool opens which format?
| Tool | Formats | Platforms |
|---|---|---|
| Delta Patcher | XDelta (apply and create) | Windows, macOS, Linux |
| xdelta3 command line | XDelta (apply and create) | Windows, macOS, Linux |
| Rom Patcher JS (opens external site) | IPS, UPS, APS, BPS, RUP, PPF, EBP, BSDiff, VCDIFF/XDelta and more (apply; creates some formats) | Any modern web browser |
| Floating IPS (Flips) | IPS and BPS (apply and create) | Windows, Linux |
| PPF-O-MATIC | PPF | Windows |
Always check a tool’s own documentation for its current feature list, since support changes between versions.
How to tell which format a patch is
The extension is the first clue, but files do get renamed. The first bytes are reliable, and any hex editor shows them:
| Starts with | Format |
|---|---|
PATCH (text) | IPS |
UPS1 (text) | UPS |
BPS1 (text) | BPS |
PPF (text) | PPF |
D6 C3 C4 00 (bytes) | XDelta / VCDIFF |
Which format should you use for your own patch?
- Large files, disc images, or changes that shift data: XDelta. It handles size and movement well and is easy for users to apply with Delta Patcher. How to create an XDelta patch.
- Cartridge ROM hacks: BPS is a popular choice in many ROM hacking communities, with built-in CRC32 checks.
- Avoid IPS for anything new unless your community specifically expects it. Missing checksums mean users can’t tell when they’ve used the wrong file.
- Follow your community’s convention. The best format is often the one your users already have a tool for.
Can you convert a patch to another format?
Not directly: one format can’t simply be rewritten as another. The reliable method is to rebuild the patch:
- Apply the existing patch to the correct original file to get the modified file.
- Create a new patch in the format you want from the original and modified files. For XDelta, use Delta Patcher’s creation mode.
- Test the new patch on a fresh copy of the original.
Only redistribute converted patches if the original author allows it.