In short
- The patch format decides the tool. Delta Patcher handles XDelta (
.xdelta) patches on any system; IPS, BPS, UPS and PPF need a different patcher. - Large hacks for NDS and disc-based games usually use XDelta, because it handles inserted and moved data well.
- Most failures are file problems, not tool problems: a trimmed NDS ROM, a headered SNES file, the wrong N64 byte order or a converted disc image.
- Patch a copy of a ROM you dumped yourself, and check its checksum against the hack’s readme first.
Which patcher do you need?
Look at the patch file’s extension, not the game. A ROM hack patcher only has to understand the patch format:
| Patch file | Format | Use |
|---|---|---|
.xdelta, .vcdiff | XDelta (VCDIFF) | Delta Patcher, or the xdelta3 command line |
.ips | IPS | A multi-format patcher such as Floating IPS or a browser patcher |
.bps | BPS | Floating IPS or a browser patcher |
.ups | UPS | A UPS-capable patcher or a browser patcher |
.ppf | PPF | PPF-O-MATIC or a browser patcher |
Delta Patcher deliberately supports one format, XDelta, and does it well, including patches for multi-gigabyte disc images. It can’t open IPS, BPS, UPS or PPF patches, and renaming those files to .xdelta won’t work. How the formats differ.
What each system usually uses
These are conventions, not rules. Always trust the patch you actually downloaded.
| System | Typical files | Common patch formats | The usual gotcha |
|---|---|---|---|
| Game Boy Advance | .gba | IPS, BPS, UPS, sometimes XDelta | Patches made for a specific regional release |
| Nintendo DS | .nds | XDelta, sometimes BPS | Trimmed vs untrimmed ROMs |
| SNES | .sfc, .smc | IPS, BPS | An extra 512-byte copier header |
| Nintendo 64 | .z64, .n64, .v64 | BPS, XDelta | Byte order: patches usually expect .z64 |
| Game Boy / Color | .gb, .gbc | IPS, BPS | Small files, few surprises |
| Genesis / Mega Drive | .bin, .md | IPS, BPS | Region variants |
| PlayStation, Saturn, disc systems | .bin + .cue, .iso | XDelta, PPF | Patch the exact track file the author used |
| GameCube / Wii | .iso | XDelta | Compressed images (RVZ, NKit) must be converted back first |
GBA ROM hacks
Game Boy Advance files are plain .gba dumps with no extra header, which makes them the simplest case. Most GBA hacks are distributed as IPS, BPS or UPS patches, so they need a multi-format patcher rather than Delta Patcher. When a GBA hack does ship as .xdelta, usually because it adds or moves a lot of data, Delta Patcher applies it like any other file:
-
Start from a clean dump
Use an unmodified copy of the exact regional release named in the readme, and keep it somewhere safe.
-
Check the checksum
Compare your file with the CRC32 or SHA-1 the hack lists. How to check a checksum.
-
Apply the patch
Select the
.gbafile as the Original file, the.xdeltaas the XDelta patch, tick Backup original file, then click Apply patch.
If the hack expands the ROM (many do), the patched file will be larger than the original. That’s normal and emulators handle it.
NDS ROM hacks
Nintendo DS hacks are the most common reason people meet XDelta: DS images are large and translations insert data rather than overwrite it, which is exactly what XDelta handles well. The workflow is the standard one, with your .nds file as the Original file and the .xdelta as the patch.
DS dumps also have their own classic failure, the trimmed ROM, where the padding at the end of the file has been removed and the patch no longer fits. Both the full walkthrough and the trimming fix are in the dedicated guide:
NDS ROM patcher: applying xdelta patches to .nds files
SNES: headered vs unheadered
Some SNES dumps carry an extra 512-byte copier header at the start of the file. Because every byte after it is shifted, a patch built for a headered file won’t apply cleanly to an unheadered one, and the other way round. Readmes usually say which is expected, and header tools can add or remove it. Most SNES hacks use IPS or BPS rather than XDelta.
N64: byte order matters
Nintendo 64 dumps exist in different byte orders, usually seen as .z64 (big-endian, the most common target for patches), .n64 and .v64 (byte-swapped). The same game in a different byte order is a different sequence of bytes, so a patch will fail. Convert your dump to the byte order the hack asks for before patching.
Disc-based games
Disc images are where XDelta is strongest, because patches stay small even when the image is gigabytes. Two rules keep it simple:
- Patch the exact file the author used. For
.bin/.cuesets, that’s usually the largest.bintrack, not the.cuetext file. After patching with the backup option on, your.cuemay still point at the old name. How to fix the cue sheet. - Convert compressed images back first. Formats like RVZ, NKit, CHD and CSO store the data differently, so a patch built for a plain
.isowon’t apply. Convert to the original format, patch, then re-compress if you want.
Delta Patcher 3.1.5 and later handles files larger than 4 GB, which matters for dual-layer images. Make sure the destination drive isn’t formatted as FAT32.
How to tell what a patch really is
File extensions get renamed. If a patch won’t load, check its first bytes in a hex editor:
| First bytes | Format |
|---|---|
D6 C3 C4 00 | XDelta / VCDIFF: use Delta Patcher |
PATCH | IPS |
BPS1 | BPS |
UPS1 | UPS |
PPF | PPF |
A file that turns out to be HTML is a failed download. Fetch it again from the author’s page.
Five mistakes that break ROM hack patching
- Patching the wrong regional release. USA, Europe and Japan dumps differ byte for byte.
- Using an already patched file. With backup off, Delta Patcher replaces the original, so a second attempt fails. Fix.
- Leaving files inside archives. Extract both the ROM and the patch first.
- Ignoring the readme. It names the dump, the checksum and the order to apply multiple patches in.
- Skipping verification. Thirty seconds with a checksum saves a long guessing session.
Get Delta Patcher for XDelta 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.