destin
Destin is a single package that bundles a
collection of asset extractors and converters for a set of PC and console video games. Each game is
a sub-command of one destin command, so every tool is invoked the same way:
destin <game> <subcommand> [ARGS]
Run destin --help to list the games, and destin <game> --help to list a game’s subcommands.
Games
| Sub-command | Game(s) | Publisher / developer |
|---|---|---|
destin amplitude |
Amplitude (PS2) | Harmonix |
destin bit192 |
Tone Sphere | bit192labs |
destin bitrock |
BitRock / InstallBuilder installers | BitRock / VMware |
destin frequency |
FreQuency (PS2) | Harmonix |
destin i76 |
Interstate ‘76 and Interstate ‘82 | Activision |
destin incoming |
Incoming (PC and Dreamcast) | Rage Software / Interplay |
destin marmalade |
Any Marmalade SDK title (Derbh, IwResGroup) | Marmalade / Ideaworks |
destin monopoly08 |
Monopoly (2008, multi-platform) | Electronic Arts |
destin thps2pc |
Tony Hawk’s Pro Skater 2 (PC) | Neversoft / Activision |
destin xg2 |
Extreme-G and Extreme-G 2 (N64 and PC) | Probe Entertainment / Acclaim |
Installation
pip install destin
Incoming
destin incoming extract --output OUTPUT_DIR SOURCE
SOURCE may be a PC disc directory or ISO containing DATA1.CAB (or the DATA1.CAB itself), a
Dreamcast .gdi file, or a directory of already extracted PC or GD-ROM content. Recognised assets
are converted (PVR and PPM to PNG, IAN and *_M.BIN to OBJ and MTL, terrain, saves, and .ctl to
JSON, CDDA .raw and .OSB to WAV, Shift-JIS or ISO-8859-15 .TXT to UTF-8) and every other file
is copied verbatim. The source is never modified.
An installed copy works as the source too — point at the game’s directory, such as the
Incoming 3DFX folder of the
Zoom Platform Incoming Trilogy
(…/Incoming Trilogy/Incoming 3DFX). The Incoming 3DFX, Incoming USA, and Incoming Subversion
(an expansion pack) titles share the original engine and are supported; Incoming Forces is not
supported.
Pass --gdiextract-path, --spvr2png-path, or --unshield-path to point at the native tools when
they are not on PATH, -j/--jobs to set the number of concurrent conversion jobs (defaults to
the CPU count), and --debug for verbose logging.
Two further subcommands convert a single asset without mirroring a whole source tree:
destin incoming ian2obj MODEL OUTDIR— convert one model to Wavefront OBJ and MTL. Both the PC.ianmesh and the Dreamcast*_M.BINmodel pack are accepted (the format is detected from the file name); a Dreamcast pack needs its matching*_ML.BINindex beside it and yields one OBJ and MTL per object. The texture is resolved from the game root, auto-detected fromMODELor set with--game-root, unless--no-textureis given.destin incoming extract-pvr-pack PACK OUTDIR— unpack a Dreamcast*_T.PVRtexture pack, writing each texture as a separate.pvrfile, or as a PNG with--png(which requiresspvr2png).
Native tools
Some Incoming conversions shell out to native helpers, which must be on PATH or supplied with the
matching --*-path option:
- 7z — extracts
DATA1.CABfrom a PC ISO (used whenisodumpis absent). - gdiextract — extracts the ISO 9660 file system from a Dreamcast GDI.
- isodump — extracts
DATA1.CABfrom a PC ISO. - spvr2png — converts Sega Dreamcast PVR images to PNG.
- unshield — unpacks the InstallShield
DATA1.CABcabinet on the PC disc.
Amplitude and FreQuency
destin amplitude unpack DISC -o OUT
destin frequency unpack DISC -o OUT
Amplitude and FreQuency (Harmonix) share one PS2 engine but are separate commands, one per game.
Point either at its disc directory (DISC): every ARK is unpacked mirroring its location, disc
streaming songs are converted to WAV, and assets are converted in place (bitmaps to PNG, DataArray
to JSON, Milo scenes to object folders, meshes to OBJ, audio to WAV). The output directory defaults
to the current directory; set it with -o/--output-dir.
Tone Sphere
destin bit192 extract "Tone Sphere.xapk" -o out/
destin bit192 decrypt-cz gamedata_sub.cz gamedata_sub.dz
destin bit192 save …
Tools for the bit192labs rhythm game Tone Sphere: .cz decryption, full
asset extraction, and save.bin editing. This is the game-specific layer on top of the generic
Marmalade support in destin marmalade.
Marmalade SDK
destin marmalade extract-dz ARCHIVE.dz OUTDIR
destin marmalade extract-group RESOURCES.group.bin OUTDIR
Unpack and decode assets built with the Marmalade SDK: Derbh (.dz) archives, IwResGroup
(.group.bin) resources, and CIwTexture, CIwGxFont, CIwMaterial, and CIwModel resources to
PNG, JSON, and Wavefront OBJ.
BitRock / InstallBuilder
destin bitrock extract INSTALLER OUTDIR
destin bitrock crack INSTALLER
Extract (and, for encrypted installers, brute-force the password of) BitRock / InstallBuilder
installers. Optional cuda and opencl extras accelerate password cracking on a GPU.
Monopoly 2008
destin monopoly08 extract ROOT
Unpack and convert an extracted Monopoly (2008, Electronic Arts) disc for Xbox 360, PS3, PS2, or
Wii. The platform is auto-detected and every output is written next to its source inside ROOT.
Extreme-G, Interstate ‘76, and Tony Hawk’s Pro Skater 2
destin xg2 --help
destin i76 --help
destin thps2pc --help
Asset extractors and converters for Extreme-G / Extreme-G 2 (N64 and PC), Interstate ‘76 and
Interstate ‘82, and the PC version of Tony Hawk’s Pro Skater 2. Run each game’s --help for its
subcommands.
Development
uv sync --all-groups --all-extras
yarn install
Run the formatters and checks:
yarn format
yarn qa