In short
- Read the hack’s readme first: it names the exact base ROM (game, region, revision) and the patch format. Everything else follows from that.
- Match the tool to the format: Floating IPS for IPS/BPS, a UPS patcher for UPS, Delta Patcher for XDelta.
- The classic failure is a wrong base ROM version — for example FireRed v1.1 when the hack wants v1.0.
- Never overwrite your clean dump. Patch a copy, so one bad attempt costs you nothing.
The four patch formats you’ll meet
Pokémon hacks are distributed in whichever format suited the creator. The format is always visible in the file extension, and each one needs its own tool:
| Format | Typical use | Patch with |
|---|---|---|
.ups | Modern GBA hacks (the most common today) | NUPS, tsukuyomi-based tools, or see the UPS guide |
.bps | Newer hacks that want checksum safety | Floating IPS or beat |
.ips | Older GBA hacks | Floating IPS or Lunar IPS |
.xdelta | Large hacks, NDS-era games, total conversions | Delta Patcher |
Using the wrong tool fails outright — a UPS patch simply won’t open in Floating IPS, for instance. That safe failure is actually helpful: it tells you to switch tools rather than producing a broken ROM.
Getting the base ROM right
A patch is a set of differences against one specific file. For GBA Pokémon hacks that is almost always a clean dump of the original commercial game the hack modifies — most commonly Pokémon FireRed v1.0 or Pokémon Emerald — dumped from a cartridge you own. The revision matters: v1.0 and v1.1 of the same game are different files, and a patch built for one rejects the other.
Walkthrough: applying a UPS patch (the common case)
Most current GBA Pokémon hacks ship as .ups. The flow with a UPS patcher:
-
Open your UPS patcher
Use NUPS or any tsukuyomi-compatible UPS tool. These are small single-purpose programs: open, pick the patch, pick the ROM, done.
-
Select the .ups patch file
Choose the extracted
.upsfile. If the tool reports a checksum for the patch itself, that’s normal — UPS carries checksums by design. -
Select your clean base ROM
Choose your verified FireRed or Emerald dump. The patcher compares its checksum against what the patch expects and warns you on a mismatch — don’t override that warning.
-
Choose where to save the result
Save under a new name, like
HackName.gba, in your working folder. Your clean dump stays untouched. -
Test the patched ROM
Load it in mGBA or VBA-M. If it boots to the hack’s title screen, you’re done. GBA-specific notes on saves and emulators.
BPS, IPS and XDelta flows
- BPS: open Floating IPS, click Apply Patch, select the
.bps, then the base ROM, then name the output. Floating IPS verifies checksums as it goes. Full BPS walkthrough. - IPS: same flow in Floating IPS (or Lunar IPS on Windows). IPS has no checksum, so double-check the base ROM version yourself — the tool can’t. Full IPS walkthrough.
- XDelta: use Delta Patcher: original file, patch file, tick Backup original file, Apply patch. Follow the Delta Patcher method exactly.
The version trap (and how to escape it)
More than half of all “patch won’t apply” reports in Pokémon communities trace to base ROM revisions. A hack built against FireRed v1.0 sees a v1.1 dump as a different game, because at the byte level it is.
| Symptom | What it usually means |
|---|---|
| Patcher refuses immediately / checksum error | Wrong revision or region of the base ROM |
| Patch applies but the game glitches | IPS applied to the wrong revision — IPS can’t detect this, so verify manually |
| “Not the file this patch was made for” | You selected an already-patched ROM, or a different game entirely |
If the readme doesn’t name a revision, v1.0 of FireRed is the most common requirement across GBA hacks — but treat that as a starting guess, not a rule. When in doubt, the hack’s community (forum thread, Discord, readme) always knows.
Pokémon patching FAQ
Can I patch on my phone?
Yes. UniPatcher on Android applies IPS, UPS, BPS and XDelta patches to ROMs on your device — handy for GBA hacks you’ll play in an Android emulator. See the Android and iOS guide.
The patch is .ups but I only have Floating IPS. What now?
You need a UPS-capable tool — Floating IPS doesn’t read UPS. Grab NUPS or another tsukuyomi-compatible patcher; they’re tiny and free. The UPS guide walks through it.
Can I apply two hacks to the same ROM?
Almost never cleanly. Patches expect the clean base ROM, not another hack’s output. Apply each hack to its own fresh copy of the base dump.
My patched ROM white-screens. Is the patch broken?
Usually it’s the emulator’s save-type detection or a wrong base revision, not the patch. Try mGBA with default settings first, then re-check your base ROM checksum against the readme. More fixes in common errors.
After patching: playing and sharing
A patched Pokémon ROM is an ordinary .gba file. Load it in mGBA on desktop, an Android emulator on your phone, or copy it to a GBA flashcart — it behaves like a retail game. Two habits will save you grief:
- Keep the clean dump forever. When the hack releases v2, you’ll patch a fresh copy. Hackers update; your dump shouldn’t have to be re-found.
- Keep the patch file too. If your patched ROM ever corrupts, re-applying to the clean dump is faster than re-downloading everything.
If you want to share the hack with a friend, share the patch, never your patched ROM — the patch contains only the hacker’s changes, which is what keeps the whole scene legal.
How to read a hack’s readme
Hack readmes look chaotic, but they all answer the same five questions. Skim for these before touching any tool:
- Base ROM: game, region, revision (e.g. “FireRed v1.0 US”).
- Checksum: the expected CRC32/MD5/SHA-1 of that base ROM.
- Format: UPS, BPS, IPS or XDelta — which decides your tool.
- Special steps: some hacks need a post-patch fix (e.g. a save-type setting) — it’ll be here.
- Known issues: what’s broken in this release, so you don’t “fix” intended behaviour.
Get Delta Patcher for XDelta-based hacks
Version 3.1.6 is free and open source, with builds for Windows, macOS and Linux. Downloads come straight from the developer’s official GitHub releases.