A tool for extracting 3d assets from BLiNX: The Time Sweeper. Information on patterns and format is available in ./docs, which will be updated as research progresses.
This tool is still in early development, contact me directly if you need any help!
Dependencies are managed through pipenv. I recommend using pyenv to manage environment versions.
pip install pipenv
To extract an asset, you will need:
- NTSC-U, "black box" (not Platinum Hits) copy of BLiNX: The Time Sweeper (MS-019 v1.05) default.xbe file
- The object index of the model you wish to extract
pipenv run python run.py [action] [mode]
All geometry is stored in a Tree structure, composed of Nodes, some of which are Chunks. pyBlinx can read the structure of these Trees, parse their geometry, and write it out to .obj files. This behavior is driven by the action argument:
peekreads the tree (only for debug)parsereads the tree and parses its geometry into memory (only for debug)extract(recommended) reads the tree, parses its geometry, and writes it out to file
Blinx stores a list of these Trees as big lists in its code. There are two of these lists. pyBlinx can parse the list given a mode:
map(recommended) can extract maps (stages)- use
--sectionto select the map. exMAP11=> Round 1, Stage 1. Otherwise pyBlinx will attempt to extract all maps.
- use
propcan extract props, such as Trash, Time Crystals, etc.- this is still under construction and doesn't really work currently :(
customcan extract any arbitrary Tree (only for debug)- provide
--chunk_offsetwith (virtual) address of Tree root trunk - optionally provide
--material_list_offsetto extract the material library for the Tree
- provide
Example: Extract Round 1 Stage 1 and put output in a directory ../out
python run.py extract map --section MAP11 -o `../out`
Example: Extract a Tree with materials at given addresses
python run.py extract custom --chunk_offset 0x21fbdc8 --material_list_offset 0x20aa500 --verbose
Use --help for full definitions of arguments. Check ./docs for information on how to find addresses and how to calculate virtual addresses
pyBlinx does not currently support extracting character models or untextured geometry!


