Skip to content
EZ ROM Patcher

xdelta and VCDIFF patch files

Short answer

An .xdelta file is a VCDIFF patch as defined by RFC 3284, usually produced by the xdelta3 tool. It is a general-purpose binary delta format, not a ROM-specific one, which is why large romhacks favour it. You can apply xdelta patches here in your browser with no install.

xdelta / VCDIFF at a glance
Extension
.xdelta, .vcdiff, .xdelta3
Identifier bytes
0xD6 0xC3 0xC4
Verifies your ROM
No
Can change ROM size
Yes
Create on this site
Apply only
Common on
Nintendo 64, GameCube, Wii, PlayStation, Large romhacks

Limitations

  • This site can apply xdelta patches but cannot create them.
  • Patches built with secondary compression are not supported.
  • Carries no checksum of the source ROM, so it applies to the wrong file without complaint.

How VCDIFF works

VCDIFF encodes a target file as a series of instructions: COPY a run from earlier data, ADD these literal bytes, RUN this single byte repeatedly. A COPY can reach into the source file or back into the output already built, which is what lets it describe relocated data cheaply. It is a general binary diff standard, used well outside romhacking, and it handles very large files efficiently.

Because the format is not tied to any console, it works equally on a 64 MB N64 ROM and a multi-gigabyte disc image. That generality is why it became the default for large projects. It also means VCDIFF carries no checksum of the ROM it expects, so an xdelta patch applied to the wrong file behaves like IPS: it produces a corrupt result and says nothing. There is nothing for this site to check either, so where a BPS patch would be refused, an xdelta patch applies to whatever you load.

Why some xdelta patches fail to apply

VCDIFF allows an optional secondary compressor layered on top of the delta data. The engine behind this site implements the core VCDIFF decoder but not those secondary decompressors, so a patch built with one fails with a clear error rather than producing a bad ROM.

Creating a browser-compatible xdelta patch
xdelta3 -e -S none -s original.z64 modified.z64 patch.xdelta

If you distribute xdelta patches and want them to work in browser patchers, that -S none flag is the one thing to remember.

Creating xdelta patches

This site applies xdelta patches but does not create them. For creating, use the official xdelta3 command line tool. If you only need to distribute a patch and are not tied to xdelta, BPS is a good alternative you can create right here.

Frequently asked questions

What does "not implemented: secondary decompressor" mean?

The patch was created with xdelta3’s optional secondary compression. The browser engine decodes standard VCDIFF but not those extra compression layers. Ask the author for a patch made with -S none, or use the xdelta3 command line tool.

Can I create an xdelta patch on this site?

No. You can apply xdelta patches here, but creating them requires the xdelta3 tool. If you are choosing a format for a new release, BPS can be created here and applies just as widely.

What is the difference between xdelta and VCDIFF?

VCDIFF is the file format defined in RFC 3284. xdelta3 is the program that produces it. People say "an xdelta patch" and "a VCDIFF patch" to mean the same file.

Why do big romhacks use xdelta instead of IPS?

IPS cannot address past 16 MB, which excludes N64, GameCube and disc-based games entirely. xdelta has no such limit and produces compact patches for large files.

Keep reading

Last reviewed