Skip to content
EZ ROM Patcher

xdelta vs BPS

Short answer

BPS and xdelta both handle large files and verify integrity, and both produce compact patches. BPS is easier to work with because it can be created in a browser and applies everywhere. xdelta is the convention for very large files such as GameCube and Wii images, but requires the xdelta3 tool to create.

Verdict

BPS for cartridge ROMs, xdelta for very large files.

xdelta / VCDIFFBPS
Verifies integrityYes, via checksums in the formatYes, CRC32 of source and output
Practical size limitNone, used on multi-GB imagesNone in practice
Create in a browserNo, needs xdelta3Yes
Apply in a browserYes, with a caveatYes
StandardisedYes, RFC 3284Community format
Typical useN64, GameCube, Wii, disc imagesSNES, GBA, NES, DS cartridges

The xdelta caveat worth knowing

VCDIFF supports an optional secondary compression layer. Browser-based patchers, including this one, implement the core decoder but not those secondary decompressors. A patch built with one fails with "not implemented: secondary decompressor".

Building a browser-compatible xdelta patch
xdelta3 -e -S none -s original.z64 modified.z64 patch.xdelta

If you distribute xdelta patches, that flag makes them work in every browser patcher without changing anything else.

How to choose

  • Patching a cartridge ROM and you get to pick the format: BPS. You can create it here and it applies anywhere.
  • Patching a GameCube, Wii or large disc image: xdelta, which is what those communities use.
  • You want users to patch on a phone with no install: BPS, or xdelta built with -S none.

Frequently asked questions

Is xdelta better than BPS?

Neither is better outright. xdelta is a general binary diff standard proven on very large files; BPS is purpose-built for ROMs and can be created in a browser. For cartridge-sized ROMs, BPS is the more convenient choice.

Why do GameCube and Wii hacks use xdelta?

Those images are gigabytes, and xdelta was already the established tool for large binary diffs. The convention stuck.

Can I convert an xdelta patch to BPS?

Not directly. Apply the xdelta patch to the correct base ROM, then create a BPS patch from the original and the patched result.

Keep reading

Last reviewed