UPS shows up constantly on GBA hacks and on some GameCube and SNES projects that wanted a reversible patch. The magic is UPS1. The header records the source length and the target length, so a file that grew or shrank is described explicitly. The body is a series of skip counts and XOR payloads. A zero byte terminates each XOR run; the final twelve bytes contain the checksum trailer. The trailer, like BPS, holds three CRC32 numbers: source, destination, and the patch. The layout I am using is the one summarized by the File Formats wiki and implemented in the UPS module.
XOR is why people call UPS bidirectional. If every changed byte is stored as the XOR of source and target, running the same patch on the target produces the source again, provided the lengths still match. A patcher that supports reverse UPS application can restore the source from the exact target file. This site’s pinned UPS module validates the forward input only; keep the original dump rather than relying on this button to undo a patch. It is not a license to share the dump. It only means the math is its own inverse. NUPS is the Windows utility associated with creating these files. The browser can apply a UPS and can create one. NUPS the desktop program has a separate guide because its menus are not this page.
A source CRC failure uses the same words you see on BPS: source ROM checksum mismatch. On GBA that usually means you mixed FireRed 1.0 with a patch built for 1.1, or you picked Emerald when the readme said FireRed. The patch CRC fails first if the download was cut off. The target CRC fails if the output is not the file the author hashed. I do not collapse those into one hint. GBA save type is a different problem and lives on the SRAM page. UPS does not rewrite the save chip. It only rebuilds the ROM image.
If the extension is .ups, start on the home patcher with checksum validation enabled. The tool checks the source against the checksum stored in the patch; a pre-listed base-ROM CRC is not required. Related pages are the GBA console guide, the NUPS guide, and the BPS guide if you were handed the other checksum format by mistake.