The Maps of Test Drive III, Finally Extracted
A developer known as s-macke has reverse-engineered and extracted the world maps from the 1990 DOS game Test Drive III: The Passion. The project, hosted on GitHub, took five years of on-and-off work, with AI assistance in the final stages. The result is a browser-based 3D viewer, exported OBJ files, and a complete set of file format specifications.
Technical Breakdown
The game's 3D format stores each tile or object as a small mesh. Three parallel arrays of 16-bit signed X, Y, and Z vertex coordinates define vertices, followed by 8-byte polygon records containing type, vertex indices, and palette color. A short 4- or 8-byte header precedes each mesh.
Maps are 32x16 grids. Each cell is 2 bytes: a tile ID selecting a mesh, plus packed rotation and height bits. This compact format allowed the game to run on early 90s hardware.
The Project Structure
The repository is organized into three main areas:
- src/browser/: Browser-only modules using Three.js for the viewer
- src/shared/: Extraction logic, LZW/RLE decoders
- src/tools/: Node.js CLI tools for exporting OBJ, images, and scene sprites
Prerequisites include Node.js 20.19+ (required by Vite 7). Installation is straightforward:
npm install
npm run dev
This opens the viewer at http://localhost:5173.
What You Can Do
- View maps in your browser:
npm run devlaunches an interactive 3D viewer - Export OBJ files:
npm run exportobjexports all maps and objects to theobjs/directory - Extract images:
npm run exportimagesexports DAT images as indexed-color PNGs - Extract sprites:
npm run exportspriteextracts transparent scene-sprite PNGs from render descriptor banks
CLI tools are also available for inspecting game data:
npm run lstview -- public/base/SCENE01.LST
npm run imgview -- public/base/DATAB.DAT 0x151 12083 320
File Format Documentation
The spec/ directory contains reverse-engineered documentation for multiple file formats:
- 3d-object-format.md: Polygon/vertex format for tiles and objects
- dat-file-layouts.md: DAT file offset tables and resource layouts
- map-format.md: Race-track map format with tile grid, object placement, color table, and header struct
- scene-render-descriptor-bank-format.md: Scene render descriptor bank family
- lst-file-format.md: LST resource index files
- image-format.md: VGA image compression (LZW + RLE pipeline)
- palette-format.md: VGA palette handling
- color_remap.md: Paired-pixel lookup tables for sky/horizon gradient and road remapping
- references.md: External reverse-engineering references
Why This Matters for Developers
This project is a masterclass in reverse-engineering legacy game formats. It demonstrates how to decode proprietary binary formats, handle VGA palettes, and reconstruct 3D geometry from raw vertex data. The documented specs serve as a template for anyone tackling similar retro-engineering tasks.
For game preservationists, this is a goldmine. The extracted data can be imported into modern engines or used for mods. The browser viewer alone is a neat way to explore a piece of gaming history without needing DOSBox.
The AI Angle
The developer notes that AI helped in the final stages. While not specified, AI likely assisted in pattern recognition or code generation for the extraction scripts. This showcases how modern tools can accelerate retro-engineering projects that would otherwise take even longer.
Getting Started
If you want to explore the maps yourself:
- Clone the repo:
git clone https://github.com/s-macke/Test-Drive-3-Maps.git - Install Node.js 20.19+
- Run
npm install - Run
npm run devand open http://localhost:5173
Or, if you prefer offline assets, run npm run exportobj to get Wavefront OBJ files ready for Blender or other 3D software.
Final Thoughts
This is a passion project that delivers concrete, usable results. The code is clean, the documentation is thorough, and the tools work out of the box. If you have any interest in retro gaming, reverse engineering, or 3D file formats, this is worth a look.