Patch formats (such as xdelta, vcdiff, bps)

Found an issue with the phpBB system here at NESdev? Use this forum to report problems.

Moderator: Moderators

Post Reply
Posts: 21839
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)

Patch formats (such as xdelta, vcdiff, bps)

Post by tepples » Fri Nov 21, 2014 12:27 pm

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?

Formerly 43110
Posts: 390
Joined: Wed Feb 05, 2014 7:01 am
Location: us-east

Re: Patch formats (such as xdelta, vcdiff, bps)

Post by JRoatch » Fri Nov 21, 2014 1:11 pm

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".

Posts: 9008
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Patch formats (such as xdelta, vcdiff, bps)

Post by lidnariq » Fri Nov 21, 2014 1:28 pm

Bsdiff is the only other one I can think of... but it doesn't seem to have a standard filename suffix.

User avatar
Posts: 965
Joined: Sat Jul 12, 2014 3:04 pm

Re: Patch formats (such as xdelta, vcdiff, bps)

Post by Myask » Fri Nov 21, 2014 5:32 pm

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.
Romhackwiki wrote: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.

Post Reply