Skip to content
EZ ROM Patcher

UPS vs BPS

Short answer

UPS and BPS were both created by byuu and both embed CRC32 checksums, so either will refuse to patch the wrong ROM. BPS replaced UPS because UPS stores a plain XOR difference, which balloons when a hack shifts data. BPS understands copies and moves, so its patches stay small.

Verdict

BPS, from the same author, replaced UPS for good reasons.

UPSBPS
Verifies your ROMYesYes
EncodingXOR differenceCopy and insert instructions
Handles shifted data wellNoYes
Can resize a ROMYesYes
Carries metadataNoYes, optional
Still recommendedOnly for existing projectsYes

Why byuu replaced his own format

UPS fixed the real problem with IPS: it validates the source ROM. But its encoding is a straight XOR of the two files, and XOR has no concept of data moving. Insert one byte near the start of a ROM and everything after it differs, so the patch becomes nearly as large as the ROM.

BPS addresses exactly that. Its SourceCopy and TargetCopy actions describe relocated data as a reference rather than as literal bytes.

What this means in practice

If you have a UPS patch, apply it and move on; it works fine. If you are creating a patch, choose BPS. The only reason to produce UPS today is consistency with an existing project that already distributes it.

Frequently asked questions

Is UPS obsolete?

For new patches, effectively yes. BPS came from the same author to replace it and is better in every dimension. Existing UPS patches remain perfectly usable.

Why is my UPS patch almost as large as the ROM?

The hack shifted data. XOR encoding cannot express a move, so every displaced byte is stored in the patch. This is the limitation BPS was designed to solve.

Keep reading

Last reviewed