I am developing a new patcher called dual. The patcher objective is the management of multiple patches in the same target file without the target file corruption.
A patch in dual format register the difference between two files with identical size. When the bytes differ in value for the same position, the bytes value of the two files is stored. A dual patch is effectively the merging of a conventional patch with his anti-patch (undo patch).
The main concept is to use the original bytes and the modified bytes stored in the patches to perform smart operations in the target file. As example, when a new patch is applied to the target file, the target file is checked against the original bytes. The modified bytes will only be applied to the target file if the bytes of the target file correspond to the original bytes in the patch. Otherwise, the patch isn't applied.
Dual can also verify if the patches are already applied to the target file and check the compatibilities between different patches. It allows the user to safely apply or undo the patches without the target file corruption.
I compiled the patcher in my system. It is a ubuntu linux 32-bit. To be honest, I don't have experience about distributable binaries and I don't know how compatible the executable file is with others linux systems. The source files are included with the patcher. They only use the standard c library and should be easily compiled with gcc or other c compilers. It is the theory, anyway. :-)
I am releasing a beta version for this patcher here . I did my own tests and it is working correctly in my system. However, many thing can happen between different systems and architectures. If someone has the interest, please give it a try and post any errors found.
I included a documentation in the file. You can also have a summary of dual commands with 'dual -h'