Skip to content
EZ ROM Patcher

UPS patch files

Short answer

A UPS file is a ROM patch that stores the XOR difference between the original and patched ROM, along with CRC32 checksums of both files and of the patch. It was created by byuu to replace IPS, and was itself later replaced by BPS. You still see UPS on GBA and DS hacks from that era.

UPS at a glance
Extension
.ups
Identifier bytes
UPS1
Verifies your ROM
Yes
Can change ROM size
Yes
Create on this site
Yes
Common on
GBA, Nintendo DS, SNES

Limitations

  • Superseded by BPS from the same author.
  • Larger patches than BPS for structural changes.

How the UPS format works

UPS records the XOR of the two files. Runs of zeroes, meaning stretches where nothing changed, are skipped using variable-length offsets, so unchanged regions cost almost nothing.

The header stores the size of both the input and output files, which is how UPS supports ROMs that grow or shrink. The footer stores three CRC32 values: input, output and patch.

Should you use UPS or BPS?

Use BPS. byuu designed it specifically to address UPS’s weakness: because UPS is a pure XOR delta, any change that shifts data produces a patch nearly as large as the ROM itself. BPS understands copies and moves, so it handles ROM expansion in a fraction of the space.

UPS is still worth understanding because plenty of well-known hacks were released in it and never re-released. Applying one is no harder than any other format.

How to apply a UPS patch

Load your ROM and the .ups file into the patcher. Because UPS carries an input checksum, the patcher tells you up front whether your ROM matches. A mismatch on a GBA ROM usually means a different regional release rather than a header problem, since GBA ROMs do not carry copier headers.

Frequently asked questions

What is the difference between UPS and BPS?

Both were made by byuu and both verify checksums, but UPS stores a plain XOR difference while BPS stores copy and move instructions. For hacks that expand or rearrange a ROM, a BPS patch is dramatically smaller. BPS is the recommended format today.

Why is my UPS patch nearly as big as the ROM?

That is expected when the hack shifts data around. XOR encoding cannot express "this block moved", so every shifted byte ends up in the patch. It is the exact limitation BPS was designed to fix.

Does UPS check that I have the right ROM?

Yes. UPS stores a CRC32 of the expected input file, so the patcher can warn you before applying rather than producing a corrupt ROM.

Keep reading

Last reviewed