xdelta

From GameBrew
xdelta
Xdelta2.png
General
AuthorJoshua MacDonald
TypeROM Patchers
Version3.1.0 + 3.0.11
LicenseApache-2.0
Last Updated2016/01/08
Links
3.1.0 + 3.0.11 Download
Website
Source

Xdelta is a utility which is used to generate a file of differences between two binary files. This effectively means only modifications made between the two binary files are saved; the resulting file is easily shared to another user, who can use it to generate a modified file from the original file. This is especially useful if the original file contains copyrighted material (e.g. game executable, rom) or the original file's filesize is huge.

It was first released in 1997 by Joshua MacDonald. The algorithm of xdelta1 was based on the algorithm of rsync, developed by Andrew Tridgell, though it uses a smaller block size. Xdelta3 can generate standardized VCDIFF format, and it realized the compatibility among other delta encoding software which supports the VCDIFF format. It runs on Unix-like operating systems and Microsoft Windows.

Installation

Download contains the following versions (released on 2016/01/08):

  • v3.0.11 - Bug-fix release addressing a performance bug and several crashes in the decoder (discovered by afl-fuzz).
  • v3.1.0 - A beta release from the 64bithash branch, supports source-window buffer values (-B) greater than 2GB.

The 3.1.0 release uses a 64-bit hash function, currently performs 3-5% slower and has 1-2% worse compression.

User guide

General use

Examples below are for Windows executables (.exe). Open command line and navigate to Xdelta path:

  • To apply Xdelta patch, use the following while replacing filenames xdelta -d -s old_file delta_file decoded_new_file
  • To generate Xdelta patch, use the following while replacing filenames xdelta3.exe -e -s old_file new_file delta_file
  • For more options, use xdelta -h

See xdelta documentation for command-line usage and wiki directory.

Graphical user interface

  • xdelta UI - Includes basic patch applying and creation. Really small filesize makes it easy to bundle with Xdelta patches.
  • Delta Patcher - Supports more options than the most front ends, like compression level, source window size, patch descriptions and checksum verification.
  • Xdelta3 GUI - Only for Xdelta patch creation. Includes advanced options, including patching batch of files and automatic windows batch file creation for end user.

Screenshots

3.0.11
xdelta3.png

3.1.0
xdelta4.png

Changelog

v3.1.0 beta

  • First release of the 3.1.x series. This is taken from the "64bithash" branch.
    • Adds support for -B values greater than 2GB, enabled by -DXD3_USE_LARGESIZET=1 variable.
    • Adds new performance and speed regression test (written in #Golang).

v3.0.11

  • Fixes and one major bug.
    • Decoder block cache poor cache performance (source buffer was effectively half-sized).
  • And a number of minor and non-critical bugs:
    • Number of decoder crashes discovered by American Fuzzy Lop.
    • Lingering XD3_TOOFARBACK issues.
    • Improved testing & portability.

External links

Advertising: