Patch formats (such as xdelta, vcdiff, bps)

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Patch formats (such as xdelta, vcdiff, bps)
by on (#136741)
VCDIFF/xdelta and BPS are modern binary patch formats that remain efficient even when moving things around while expanding a ROM, unlike IPS. But in this post someone had to rename a patch to get phpBB to accept it.

I'm ready to add some patch formats to our copy of phpBB. What patch formats should I add, and what are their filename extensions?
Re: Patch formats (such as xdelta, vcdiff, bps)
by on (#136745)
The only other binary patch format I can think of is bsdiff with I suppose a file extension of "bsdiff". (Historical note, xdelta previous to version 3 did produce an now obsolete format that is not vcdiff).

The rest I know are internal diff data in rsync, git, and chrome, with hard to find self contained tools and is a bit overkill for small rom patches.

Also textual diffs with a extension of "patch".
Re: Patch formats (such as xdelta, vcdiff, bps)
by on (#136746)
Bsdiff is the only other one I can think of... but it doesn't seem to have a standard filename suffix.
Re: Patch formats (such as xdelta, vcdiff, bps)
by on (#136754)
tepples wrote:
Is there a way to expand the ROM without making the IPS so big?

43110 wrote:
I'm guessing if the expanded blank space is at the end of the ROM then the IPS would result in a series of RLE block.

The "truncation" extension MIGHT allow it...or might not.
Lunar IPS implements the truncation extension, and might be the first implementation, but we are not sure. Snes9x also implements this extension.

At the end of the patch after the "EOF", the truncation extension appends a big-endian integer of three bytes, to give the length of the patched file. An IPS patcher that implements this extension must truncate the patched file to the given length. The extension does not specify whether this can extend a file.