{"slug": "show-hn-i-reverse-engineered-the-world-maps-of-test-drive-iii-1990-dos-game", "title": "Show HN: I reverse-engineered the world maps of Test Drive III (1990 DOS game)", "summary": "A developer reverse-engineered the world maps from the 1990 DOS game Test Drive III: The Passion after five years of work, using AI to reconstruct the game's 3D tile-based terrain as accurately as possible. The project extracts the game's 32×16 grid map data, mesh objects, and sprites into modern formats like Wavefront OBJ files and PNG images, making the game's hidden world explorable outside its original engine. The open-source toolset includes a Three.js viewer and CLI utilities for exporting maps, images, and scene sprites from the game's proprietary DAT files.", "body_md": "Reverse engineered and extracted maps of the DOS Game *Test Drive III: The Passion* by Accolade\n\nAs a kid, I played Test Drive III a lot. Not because of the racing, but simply to explore the world.\n\nThere was so much to see, so much to discover. This project is an attempt to reconstruct those maps as accurately as possible. Over the past five years, I have worked on it on and off. Now, with the help of AI, I am close to success. Apart from the occasional flying car and missing sprites.\n\nThe 3D format itself is nothing too exotic, but it does contain a few special cases. Each tile or object is a small mesh stored as three parallel arrays of 16-bit signed X, Y, and Z vertex coordinates, followed by 8-byte polygon records containing the polygon type, vertex indices, and palette color. These are preceded by a short 4- or 8-byte header.\n\nA map is a 32×16 grid. Each cell is 2 bytes: a tile ID selecting one of those meshes, plus packed rotation and height bits.\n\nWavefront Object files are available in the objs directory.\n\n- Node.js 20.19+ (required by Vite 7)\n\n```\nnpm install\nnpm run dev\n```\n\nOpens the viewer at [http://localhost:5173](http://localhost:5173)\n\n```\nnpm run build\n```\n\nOutput is in the `dist/`\n\ndirectory.\n\n```\nnpm run export\n```\n\nExports all maps and objects to the `objs/`\n\ndirectory.\n\n```\nnpm run imgextract\n```\n\nExports the currently documented DAT images as indexed-color PNGs to the `images/`\n\ndirectory.\n\n```\nnpm run spriteextract\n```\n\nExtracts transparent scene-sprite PNGs from the known scene render descriptor banks, including the `SCENE02`\n\nsame-family variant.\n\n```\n# View LST file contents\nnpm run lstview -- public/base/SCENE01.LST\n\n# Extract VGA image from DAT file\nnpm run imgview -- public/base/DATAB.DAT 0x151 12083 320\nsrc/\n├── browser/     # Browser-only modules (Three.js viewer)\n├── shared/      # Shared modules (extraction logic, LZW/RLE decoders)\n└── tools/       # Node.js CLI tools\n    ├── export/      # OBJ exporter\n    ├── imgextract/  # Batch DAT image → PNG exporter\n    ├── spriteextract/ # Scene sprite extractor\n    ├── lstviewer/   # LST file viewer\n    └── imgviewer/   # VGA image extractor\npublic/\n└── base/        # Game data files (required)\nobjs/            # Exported Wavefront OBJ files\nimages/          # Extracted VGA images (PNG format)\nspec/            # File format specifications\n```\n\nFor a visual overview and previews of all extracted UI assets, scene sprites, map palettes, and car designs, visit the ** Project Images Gallery Index**. Each individual directory contains its own generated visual gallery:\n\n[📁 Corvette ZR-1 Asset Gallery](/s-macke/Test-Drive-3-Maps/blob/master/images/CCERV/README.md)[📁 Honda NSX Asset Gallery](/s-macke/Test-Drive-3-Maps/blob/master/images/CCNSX/README.md)[📁 Lamborghini Diablo Asset Gallery](/s-macke/Test-Drive-3-Maps/blob/master/images/CDIAB/README.md)[📁 Mythos Asset Gallery](/s-macke/Test-Drive-3-Maps/blob/master/images/CMYTH/README.md)[📁 Chevrolet Corvette Stelvio Asset Gallery](/s-macke/Test-Drive-3-Maps/blob/master/images/CSTEL/README.md)[📁 Scenery Sprites Galleries](/s-macke/Test-Drive-3-Maps/blob/master/images/SCENE01_SPRITES/README.md)\n\nThe `spec/`\n\ndirectory contains reverse-engineered documentation for Test Drive III file formats:\n\n| File | Description |\n|---|---|\n|\n\n[dat-file-layouts.md](/s-macke/Test-Drive-3-Maps/blob/master/spec/dat-file-layouts.md)[map-format.md](/s-macke/Test-Drive-3-Maps/blob/master/spec/map-format.md)[scene-render-descriptor-bank-format.md](/s-macke/Test-Drive-3-Maps/blob/master/spec/scene-render-descriptor-bank-format.md)`SCENE01.DAT`\n\n, `SCENE02.DAT`\n\n, and `SCENETT1.DAT`", "url": "https://wpnews.pro/news/show-hn-i-reverse-engineered-the-world-maps-of-test-drive-iii-1990-dos-game", "canonical_source": "https://github.com/s-macke/Test-Drive-3-Maps", "published_at": "2026-05-31 09:45:45+00:00", "updated_at": "2026-05-31 10:16:31.273658+00:00", "lang": "en", "topics": ["ai-tools", "computer-vision", "ai-research"], "entities": ["Test Drive III", "Accolade", "Node.js", "Vite"], "alternates": {"html": "https://wpnews.pro/news/show-hn-i-reverse-engineered-the-world-maps-of-test-drive-iii-1990-dos-game", "markdown": "https://wpnews.pro/news/show-hn-i-reverse-engineered-the-world-maps-of-test-drive-iii-1990-dos-game.md", "text": "https://wpnews.pro/news/show-hn-i-reverse-engineered-the-world-maps-of-test-drive-iii-1990-dos-game.txt", "jsonld": "https://wpnews.pro/news/show-hn-i-reverse-engineered-the-world-maps-of-test-drive-iii-1990-dos-game.jsonld"}}