Add modified rpatool
This commit is contained in:
parent
3f3de59844
commit
d221c2ca67
3 changed files with 618 additions and 0 deletions
124
rpatool/README.md
Normal file
124
rpatool/README.md
Normal file
|
@ -0,0 +1,124 @@
|
|||
rpatool
|
||||
=======
|
||||
|
||||
This is modified version of a [rpatool](https://github.com/shizmob/rpatool) by [shizmob](https://github.com/shizmob).
|
||||
|
||||
This is a simple tool allowing you to create, modify and extract Ren'Py Archive (.rpa/.rpi) files.
|
||||
Currently, only writing to RPAv2/RPAv3 archives is supported.
|
||||
|
||||
Usage
|
||||
-----
|
||||
rpatool [-l|-x|-c|-d|-a] [-o OUTFILE] [-2] [-3] [-k KEY]
|
||||
[-p COUNT] [-h] [-v] [-V]
|
||||
ARCHIVE [FILE [FILE ...]]
|
||||
|
||||
|
||||
positional arguments:
|
||||
ARCHIVE The Ren'py archive file to operate on
|
||||
FILE Zero or more files to operate on
|
||||
|
||||
actions:
|
||||
-l, --list List files in archive ARCHIVE
|
||||
-x, --extract Extract FILEs from ARCHIVE
|
||||
-c, --create Creative ARCHIVE from FILEs
|
||||
-d, --delete Delete FILEs from ARCHIVE
|
||||
-a, --append Append FILEs to ARCHIVE
|
||||
|
||||
optional arguments:
|
||||
-o OUTFILE, --outfile OUTFILE
|
||||
An alternative output archive file when appending to or
|
||||
deleting from archives, or output directory when extracting.
|
||||
-2, --two Use the RPAv2 format for creating/appending to
|
||||
archives
|
||||
-3, --three Use the RPAv3 format for creating/appending to
|
||||
archives (default)
|
||||
-k KEY, --key KEY The obfuscation key used for creating RPAv3 archives
|
||||
(default: 0xDEADBEEF)
|
||||
-p COUNT, --padding COUNT
|
||||
The maximum number of bytes of padding to add between
|
||||
files (default: 0)
|
||||
--all If specified, extracts all .rpa archives in the current directory
|
||||
-h, --help Print this help and exit
|
||||
-v, --verbose Be a bit more verbose while performing operations
|
||||
-V, --version Show version information
|
||||
|
||||
The FILE argument can optionally be in ARCHIVE=REAL format, mapping a file in
|
||||
the archive file system to a file on your real file system. An example of
|
||||
this is: rpatool -x test.rpa script.rpyc=/home/foo/test.rpyc
|
||||
|
||||
Examples
|
||||
--------
|
||||
rpatool -x foo.rpa
|
||||
Will extract every file from `foo.rpa`into the current directory, making subdirectories when necessary.
|
||||
|
||||
rpatool -o output -x foo.rpa script.rpyc ui.png
|
||||
Will extract the files `script.rpyc` and `ui.png` from `foo.rpa` into the directory `output`.
|
||||
|
||||
rpatool -c bar.rpa test.jpg script.rpy sprites
|
||||
Will create the archive `bar.rpa`, containing the files `test.jpg`, `script.rpy` and the directory `sprites`.
|
||||
|
||||
rpatool -p 25 -k 12345 -c bar.rpa movies=C:\projects\vn\movies
|
||||
Will create the archive `bar.rpa` with the obfuscation key `0x12345` and maximum padding of `25`, taking files from `C:\projects\vn\movies` and placing them in the archive folder `movies`.
|
||||
|
||||
rpatool -l baz.rpa
|
||||
Will list all files in the archive `baz.rpa`.
|
||||
|
||||
rpatool -v -a foo.rpa sprites=sprites_new
|
||||
Will add all files from the directory `sprites_new` to the directory `sprites` in the archive, giving more information about what it's doing.
|
||||
|
||||
rpatool -o bar_new.rpa -d bar.rpa foo.jpg
|
||||
Will remove the file `foo.jpg` from the archive `bar.rpa`, storing the result archive in `bar_new.rpa`.
|
||||
|
||||
rpatool -all game/
|
||||
Will extract all the files from all .rpa archives in a `game/` folder.
|
||||
|
||||
API
|
||||
---
|
||||
`rpatool` can also be included in any other project (following the license conditions, of course) to provide the `RenPyArchive` class.
|
||||
A small overview:
|
||||
|
||||
RenPyArchive([file = None], [version = 3], [padlength = 0], [key = 0xDEADBEEF], [verbose = False])
|
||||
The constructor, which will optionally load an archive file.
|
||||
|
||||
`file`: the archive file to open. If None, no archive will be attempted to open.
|
||||
|
||||
`version`: the archive format version used to save the archive when `RenPyArchive.save([file])` is called. Default: 3
|
||||
|
||||
`padlength`: the maximum number of bytes of padding to put between files when saving. Default: 0
|
||||
|
||||
`key`: the obfuscation key used when saving RPAv3 archives. Default: 0xDEADBEEF
|
||||
|
||||
`verbose`: print info on what we are doing to the command line. Default: False
|
||||
|
||||
RenPyArchive.load(filename)
|
||||
Loads an archive file from `filename`. Will raise an `IOError` if the file can't be accessed, or a `ValueError` if the file is not detected as a Ren'Py archive.
|
||||
|
||||
RenPyArchive.save([filename])
|
||||
Save the archive to `filename`. Will raise `ValueError` if the filename isn't given with `filename`, nor previously defined, or an `IOError` if it couldn't save the file.
|
||||
|
||||
RenPyArchive.list()
|
||||
Give a list of all filenames currently in the archive.
|
||||
|
||||
RenPyArchive.has_file(filename)
|
||||
Returns True if `filename` is found in the archive, False otherwhise.
|
||||
|
||||
RenPyArchive.add(filename, content)
|
||||
Add a file to the archive with file `filename` and contents `content`. Will raise a `ValueError` if the filename already exists in the archive.
|
||||
|
||||
RenPyArchive.change(filename, content)
|
||||
Change the contents of a current file in the archive. Will raise an `IOError` if the file isn't known in the archive.
|
||||
|
||||
RenPyArchive.remove(filename)
|
||||
Remove `filename` from the archive. Will raise an `IOError` if the filename isn't known in the archive.
|
||||
|
||||
RenPyArchive.read(filename)
|
||||
Read and return the content of file `filename` in the archive. Will raise an `IOError` if the filename isn't known in the archive.
|
||||
|
||||
Disclaimer
|
||||
----------
|
||||
This tool is intended for use with files on which the authors allowed modification of and/or extraction from ONLY and the unpermitted use on files where such consent was not given is highly discouraged, and most likely a license violation as well.
|
||||
Support requests for help with dealing with such files will not be answered.
|
||||
|
||||
Credits
|
||||
-------
|
||||
Credits for the creation of the Ren'Py archive format and the reference code in Ren'Py go to renpytom.
|
Loading…
Add table
Add a link
Reference in a new issue