By console

ROM Hack Patcher: What to Use for GBA, NDS and Disc Games

Every ROM hack ships as a patch file, and the right patcher depends on the patch format, not the console. This guide shows which tool to use, then covers the quirks of each system: GBA files, NDS trimming, SNES headers, N64 byte order and disc images.

  • Updated
  • Checked against Delta Patcher 3.1.6
  • 5 min read

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 extension to patcher
Patch fileFormatUse
.xdelta, .vcdiffXDelta (VCDIFF)Delta Patcher, or the xdelta3 command line
.ipsIPSA multi-format patcher such as Floating IPS or a browser patcher
.bpsBPSFloating IPS or a browser patcher
.upsUPSA UPS-capable patcher or a browser patcher
.ppfPPFPPF-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.

Patch formats and pitfalls by system
SystemTypical filesCommon patch formatsThe usual gotcha
Game Boy Advance.gbaIPS, BPS, UPS, sometimes XDeltaPatches made for a specific regional release
Nintendo DS.ndsXDelta, sometimes BPSTrimmed vs untrimmed ROMs
SNES.sfc, .smcIPS, BPSAn extra 512-byte copier header
Nintendo 64.z64, .n64, .v64BPS, XDeltaByte order: patches usually expect .z64
Game Boy / Color.gb, .gbcIPS, BPSSmall files, few surprises
Genesis / Mega Drive.bin, .mdIPS, BPSRegion variants
PlayStation, Saturn, disc systems.bin + .cue, .isoXDelta, PPFPatch the exact track file the author used
GameCube / Wii.isoXDeltaCompressed 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:

  1. Start from a clean dump

    Use an unmodified copy of the exact regional release named in the readme, and keep it somewhere safe.

  2. Check the checksum

    Compare your file with the CRC32 or SHA-1 the hack lists. How to check a checksum.

  3. Apply the patch

    Select the .gba file as the Original file, the .xdelta as 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/.cue sets, that’s usually the largest .bin track, not the .cue text file. After patching with the backup option on, your .cue may 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 .iso won’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:

Identifying a patch by its signature
First bytesFormat
D6 C3 C4 00XDelta / VCDIFF: use Delta Patcher
PATCHIPS
BPS1BPS
UPS1UPS
PPFPPF

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

  1. Patching the wrong regional release. USA, Europe and Japan dumps differ byte for byte.
  2. Using an already patched file. With backup off, Delta Patcher replaces the original, so a second attempt fails. Fix.
  3. Leaving files inside archives. Extract both the ROM and the patch first.
  4. Ignoring the readme. It names the dump, the checksum and the order to apply multiple patches in.
  5. 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.

Continue learning

Sources and references