xdelta and VCDIFF patch files
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.
- 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.
xdelta3 -e -S none -s original.z64 modified.z64 patch.xdeltaIf 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.