Skip to content

sopoforic/vidua

Repository files navigation

vidua

Vidua can be used to apply (BPS or IPS) patches. It is intended particularly for use with ROM hacks.

Installation

pip install vidua

Usage

A simple script is included to validate or apply patches from the command line:

vidua patch.bps original.rom patched_output.rom

Full usage instructions:

$ vidua --help
usage: vidua [-h] [-v] [-q] PATCH [ORIGINAL] [OUTPUT]

Apply or validate patches.

positional arguments:
  PATCH           the patch file
  ORIGINAL        the file to be patched
  OUTPUT          filename to write patched file

optional arguments:
  -h, --help      show this help message and exit
  -v, --validate  validate the patch only; do not apply it
  -q, --quiet     suppress output except errors

Vidua may also be used as a library, to validate or apply patches from within another program:

from vidua import bps

patch = open('patch.bps', 'rb')
original = open('original.rom', 'rb')

with open('patched.rom', 'wb') as patched:
    patched.write(bps.patch(original, patch).read())

If the file is very large, you may prefer to use shutil.copyfileobj when writing to disk.

Credits

Alcaro's Floating IPS was very useful in working out how to handle BPS files when byuu's documentation was unclear.

Test