How to Patch a Pokemon ROM Hack (UPS, IPS, BPS & xdelta)
Updated October 13, 2026 · 5 minutes
Overview
Almost every Pokemon ROM hack is shared as a patch file, not as a playable game. A patch only contains the differences between the original game and the hack, which keeps the download small and lets creators share their work without distributing the original ROM. To play, you apply that patch to your own copy of the base game and get a new file that your emulator can run.
The process is the same for nearly every hack: identify the patch format, find the right base ROM, run a patcher and load the result. It takes a few minutes, works on a phone as well as on a computer, and most problems come from one place — using the wrong version of the base game. This guide covers the four formats you will meet (IPS, UPS, BPS and xdelta), the tools that handle them and how to fix the errors people hit most often.
Step by Step
Check which patch format you have
Look at the extension of the file that came with the hack:
- .ips — the oldest format. No built-in check that you used the right ROM, and limited to 16 MB files. Still used by older GBC and GBA hacks.
- .ups — the most common format for GBA hacks (Radical Red, Unbound and many others). It stores checksums, so it can tell you when the base ROM is wrong.
- .bps — a modern format with checksums, used by many decomp-based and GBC hacks such as Crystal Clear.
- .xdelta (or .vcdiff) — common for Nintendo DS hacks such as Renegade Platinum and Blaze Black 2 Redux, because it handles large files well.
Find the exact base ROM the hack asks for
Open the hack's readme or release post and note the base game and its version and region. Most FireRed hacks need English FireRed version 1.0, Emerald hacks need the English Emerald ROM, and DS hacks usually name a specific region of Platinum, Black 2 or White 2. Use a backup of a cartridge you own, keep an untouched copy, and never patch the same file twice. If your ROM is inside a .zip or .7z archive, extract it first — patchers need the raw .gba, .gbc, .gb or .nds file.
Open a patcher that supports your format
The easiest option on any device is Rom Patcher JS by Marc Robledo, a free web app that runs in the browser on PC, Android and iPhone. It supports IPS, UPS, BPS, APS, PPF and xdelta/VCDIFF patches and shows CRC32, MD5 and SHA-1 checksums of your ROM. On Windows you can also use Floating IPS (Flips) for IPS and BPS, or a desktop xdelta tool such as Delta Patcher for DS hacks.
Load the ROM and the patch, then apply
In Rom Patcher JS, choose your clean ROM in the ROM file field and the patch in the Patch file field, then press Apply patch. The tool saves a new file; give it a clear name like Radical Red.gba. In Flips, pick Apply Patch, select the patch, then the ROM, then where to save. The original ROM is not modified, so you can reuse it for other hacks.
Make sure the output has the right extension
The patched file must keep the base game's extension: .gba for GBA hacks, .gbc or .gb for Game Boy hacks and .nds for DS hacks. Some patchers save as .bin or add (patched) to the name — rename it if your emulator does not recognise the file.
Load the patched game in your emulator
Open the new file in your emulator: mGBA on PC, Pizza Boy GBA or Lemuroid on Android, Delta on iPhone, and melonDS or DeSmuME for DS hacks. If the title screen shows the hack's logo, the patch worked. Make an in-game save and keep a copy of the .sav file before you start a long playthrough.
Troubleshooting Common Errors
"Source ROM checksum mismatch" or "invalid input" — UPS, BPS and xdelta compare your ROM with the one the creator used. The message almost always means the wrong version or region, a ROM that was already patched, or a trimmed DS dump. Compare the CRC32 or SHA-1 shown by Rom Patcher JS with the value in the hack's readme, then try a different copy of the base game.
The game shows a white screen or freezes on start — an IPS patch was applied to the wrong ROM (IPS cannot warn you), or the emulator is too old. Re-patch onto a clean ROM and try mGBA, which handles modern GBA hacks best.
The game runs but has glitched graphics or crashes later — some newer hacks warn against VBA-M and My Boy. Switch to mGBA or an mGBA-based core and load your battery save (.sav), not a save state from another emulator.
The patcher does nothing on iPhone — make sure the ROM is saved in the Files app and not still inside a zip. Safari may download the result to the Downloads folder in Files rather than showing it on screen.
Updating a Hack to a New Version
When a hack updates, apply the new patch to the clean base ROM again, not to your old patched file. Then give the new ROM the same file name as the old one and put your .sav file next to it, so the emulator loads your progress. Read the update notes first: some creators require you to save in a specific place before upgrading, and some updates are not save-compatible at all.
FAQ
What is the difference between IPS, UPS and BPS patches?
IPS is the oldest format, has a 16 MB limit and does not check your ROM. UPS and BPS store checksums, so they warn you if the base ROM is wrong. BPS is the most modern of the three.
Can I patch a ROM hack on my phone?
Yes. Rom Patcher JS runs in Safari on iPhone and in Chrome on Android, so you can patch without a computer and then import the result into your emulator.
Why does the patcher say my ROM is wrong?
The patch was made for a different version or region of the base game, or your ROM was already patched. Check the checksum required in the hack's readme and use a clean copy.
How do I patch an xdelta file for a DS hack?
Use Rom Patcher JS or a desktop tool like Delta Patcher. Select the clean .nds ROM and the .xdelta patch, apply, and save the result as an .nds file.
Do I need to repatch when a hack updates?
Yes. Apply the new patch to the clean base ROM, keep the same file name and copy your .sav file next to the new ROM to continue your save, if the update supports it.