Pokémon ROM hacks

Patching Pokémon ROM Hacks: The Complete Guide

Pokémon ROM hacks are the most patched games on earth, and most patching failures come from two mistakes: the wrong base ROM version, or the wrong patcher for the patch format. This guide covers the big four formats and the exact base ROM each one usually wants.

  • Updated
  • Checked against Delta Patcher 3.1.6
  • 5 min read
  • Verified against primary sources · how we check

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:

Pokémon patch formats and their tools
FormatTypical usePatch with
.upsModern GBA hacks (the most common today)NUPS, tsukuyomi-based tools, or see the UPS guide
.bpsNewer hacks that want checksum safetyFloating IPS or beat
.ipsOlder GBA hacksFloating IPS or Lunar IPS
.xdeltaLarge hacks, NDS-era games, total conversionsDelta 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:

  1. 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.

  2. Select the .ups patch file

    Choose the extracted .ups file. If the tool reports a checksum for the patch itself, that’s normal — UPS carries checksums by design.

  3. 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.

  4. Choose where to save the result

    Save under a new name, like HackName.gba, in your working folder. Your clean dump stays untouched.

  5. 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.

Pokémon patching failures
SymptomWhat it usually means
Patcher refuses immediately / checksum errorWrong revision or region of the base ROM
Patch applies but the game glitchesIPS 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:

  1. Base ROM: game, region, revision (e.g. “FireRed v1.0 US”).
  2. Checksum: the expected CRC32/MD5/SHA-1 of that base ROM.
  3. Format: UPS, BPS, IPS or XDelta — which decides your tool.
  4. Special steps: some hacks need a post-patch fix (e.g. a save-type setting) — it’ll be here.
  5. 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.

Continue learning