|Release Date||08 August 2012|
|Last Modified||31 July 2021|
beat is a full fledged patching program developed for the new BPS patch format. The BPS format was developed to resolve many of the issues encountered by ROM hackers with the UPS and IPS patching formats. The program is open source with a GPLv3 license and has highly portable source code.
Simple Patching Instruction:
- Extract “beat” patcher
- Open the Patching program “beat”
- Click “Apply Patch”
- Click the .bps file, which is the patch file, (once extracted) and then click “open”
- Click on the .rom file, and click open again.
- Type a name for the patch .rom. (Make sure you type the correct “.rom type” at the end of the naming for the file to work)
- File patching complete
Beat: beat is the canonical tool for working with the following file format specifications:
- BPS, a delta-based file differencing tool
- BPM, a directory differencing tool
- BPA, a directory archiving tool
What does the author have to say about beat/BPS:
Portable: beat can be used via the command-line on any platform with a C++11 compiler. It can further be used with a GUI on any platform with Windows, GTK+ or Qt API targets.
Delta-encoding: In addition to modifications, beat patches can detect data insertions and deletions. Patch formats that can only detect modifications will fail completely, producing file sizes equal or larger to the original file sizes in these cases. This allows for substantially smaller patches on non-ROM based systems and certain ROM types (eg Mystic Ark is half the size this way.)
Folder-patching: beat patches can be used to patch either a single file or an entire directory full of files and subfolders, thus allowing the format to handle ROMs, CDs, PC games, etc..
Infinitely sized files: BPS patches have no file size limitations whatsoever. They utilize a variable-length encoding that can handle absolutely any file size, and the offset encodings are relative, which amortizes each offset encoding to a single byte.
Extensible metadata: beat patches allow for optional embedded XML manifests. These can be used for embed authorship information, a description of what the patch is for, documentation on the patch, contact info, website, and even the readme itself, etc. It’s up to you.
Complete verification: As BPS stores checksums, beat verifies the checksum of the game before and after patching. It even verifies the patch itself is undamaged.
No ambiguities: No operation results in undefined behavior. There are no unused commands in the specification. It is impossible to extend beat patches without changing the file format. This ensures that all beat patches made with future patch creators will continue to work with older patch appliers.
Endian free: As a side effect of how integers are stored, beat patches have no such concept as endian. Thus, there is never any worry about patching program incompatibilites between little-endian and big-endian machines.
Small sizes: beat patches, especially when compressed for distribution, frequently beat famous delta patchers such as Xdelta3 -9 in size. Since the delta encoding naturally provides dictionary (and thus, run-length) that have the same effect as basic compression. This prevents needlessly large patches on simple things like file size expansion.
Extreme simplicity: Unlike other delta patchers, the beat patch format is as simple as linear patchers. In fact, one can write a BPS patcher in only a few short lines of code (It’s possible for people to embed soft-patchers with this format) and the same code can apply patches with or without delta encoding. Or one can rely on existing library code or tools to create more sophisticated delta patches. There is no complex compression techniques, so the compression algorithm of choice can be use for distribution after the patch is made (eg ZIP, 7z, etc). The spec itself is many, many times smaller than that of Xdelta or bsdiff.
Visit beat’s Homepage for further information and to download the source code.