A script and lookup table for working with WAD files as found in the PSP WipEout games (Pulse and Pure) and their respective DLCs. This can be used to extract, inspect and update files easily.
This is (obviously) not an official utility, and is not related to or associated in any way with the mentioned PSP games.
Download
- Python 3 script: wadutil-1.0.0.zip (24 KiB)
Requirements
This script is written in Python 3. You need a recent version. Windows users can install from www.python.org and macOS and Linux users most likely have it already installed.
- macOS and Linux: Run
python3 wadutil.py --help
in a Terminal - Windows: Run
py wadutil.py --help
in cmd.exe or Windows Terminal
The lzss compression is not the fastest (but might very well be the slowest implementation there is...). You can get a performance boost by using PyPy3 which has a JIT. Of course, there's lots of potential to optimize the algorithm; this reference implementation is mostly about documenting how it works.
This script comes with a filenames.txt
list of file names, which
will be used to build a rainbow table for reversing the file names.
Not all filenames are known (yet). If you find out a filename for
a hash in the official game and DLC files, let me know.
Documentation
The file format has been fully documented already last year in these two blog posts:
Command-Line Help
usage: wadutil.py [-h] [--extract] [--create output.wad] [--zlib-compress] [--align ALIGN] [--no-compress] source List, extract and create WAD files for PSP WipEout games. positional arguments: source Input name (either WAD filename or folder name) optional arguments: -h, --help show this help message and exit --extract, -x Extract a WAD file (to the current directory) --create output.wad, -c output.wad Create a WAD file from a folder --zlib-compress Enable zlib compression (EUR only, for --create) --align ALIGN Align start offsets (default: 128 bytes) --no-compress Do not compress anything (for --create)