Show HN:我逆向工程了《Test Drive III》(1990年DOS游戏)的世界地图

Hacker News Top 工具

摘要

对1990年DOS游戏《Test Drive III》的地图进行了逆向工程和提取,提供了在线查看器和OBJ导出功能。该项目包含文件格式规范及提取工具。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/03 06:37

s-macke/Test-Drive-3-Maps

来源:https://github.com/s-macke/Test-Drive-3-Maps

Test-Drive-3-Maps

对由 Accolade 开发的 DOS 游戏 Test Drive III: The Passion 的地图进行逆向工程和提取。

小时候,我经常玩 Test Drive III。不是因为竞速,而是单纯为了探索这个世界。

这里有太多风景可看,太多事物可以发现。这个项目试图尽可能精确地重建这些地图。过去五年里,我断断续续地投入工作。现在,借助 AI 的帮助,我接近成功了——除了偶尔出现的飞车和缺失的精灵。

3D 格式本身不算特别奇特,但确实包含一些特殊情况。每个瓦片或对象都是一个小的网格,存储为三个并行的 16 位有符号 X、Y、Z 顶点坐标数组,随后是 8 字节的多边形记录,包含多边形类型、顶点索引和调色板颜色。这些数据前面还有一个 4 或 8 字节的短头部。

地图是一个 32×16 的网格。每个单元格占 2 字节:一个瓦片 ID 选择其中一个网格,加上打包的旋转和高度位。

游戏场景

提取的游戏车辆

在线查看器 (https://s-macke.github.io/Test-Drive-3-Maps/)

提取的图像画廊

Wavefront Object 文件可在 objs 目录中获取。

开发

先决条件

  • Node.js 20.19+(Vite 7 需要)

安装

npm install

运行浏览器查看器

npm run dev

在 http://localhost:5173 打开查看器

构建生产版本

npm run build

输出在 dist/ 目录中。

导出 OBJ 文件

npm run export

将所有地图和对象导出到 objs/ 目录。

导出 PNG 图像

npm run imgextract

将当前有文档记录的 DAT 图像导出为索引色 PNG 到 images/ 目录。

导出场景精灵

npm run spriteextract

从已知的场景渲染描述符库(包括 SCENE02 同族变体)中提取透明场景精灵 PNG。

CLI 工具

# 查看 LST 文件内容
npm run lstview -- public/base/SCENE01.LST

# 从 DAT 文件中提取 VGA 图像
npm run imgview -- public/base/DATAB.DAT 0x151 12083 320

项目结构

src/
├── browser/     # 仅浏览器模块(Three.js 查看器)
├── shared/      # 共享模块(提取逻辑、LZW/RLE 解码器)
└── tools/       # Node.js CLI 工具
    ├── export/      # OBJ 导出器
    ├── imgextract/  # 批量 DAT 图像 → PNG 导出器
    ├── spriteextract/ # 场景精灵提取器
    ├── lstviewer/   # LST 文件查看器
    └── imgviewer/   # VGA 图像提取器
public/
└── base/        # 游戏数据文件(必需)
objs/            # 导出的 Wavefront OBJ 文件
images/          # 提取的 VGA 图像(PNG 格式)
spec/            # 文件格式规范

提取的图像画廊

有关所有提取的 UI 资源、场景精灵、地图调色板和汽车设计的视觉概览和预览,请访问 项目图像画廊索引。每个单独的目录都包含自己生成的视觉画廊:

文件格式规范

spec/ 目录包含 Test Drive III 文件格式的逆向工程文档:

文件描述
3d-object-format.md瓦片和对象中使用的 3D 多边形/顶点格式
dat-file-layouts.mdDAT 文件偏移表和资源布局
map-format.md赛道地图格式:瓦片网格、对象放置块、颜色表和头部参数结构
scene-render-descriptor-bank-format.mdSCENE01.DAT、SCENE02.DAT 和 SCENETT1.DAT 使用的场景渲染描述符库族
lst-file-format.mdLST 资源索引文件(场景和车辆变体)
image-format.mdVGA 图像压缩(LZW + RLE 流水线)
palette-format.mdVGA 调色板处理和颜色选择
color_remap.md用于天空/地平线渐变和道路重映射的对像素查找表
references.md外部逆向工程参考和链接

相似文章

逆向工程 Comanche 地形图

Lobsters Hottest

详细讲解如何逆向工程 NovaLogic 的 Comanche 游戏文件,以解码其 Voxel Space 地形渲染算法所使用的原始高度图和颜色数据,包括编写 ANSI C 程序将这些数据转换为 BMP 图像。

逆向工程游戏:关于游戏反编译、重编译、VR 与网页/3D 移植的全部新闻

The Verge

The Verge 的这期盘点聚焦于逆向工程游戏的热潮:通过反编译和重编译技术,让《塞尔达》《Halo》《Lego Racers》等经典游戏摆脱专有代码和原始硬件的束缚,移植到新设备,或以彻底改变原作的方式进行改造——包括在 Vision Pro 上运行的 Half-Life: Alyx,同时探讨了 AI 辅助开发及法律灰色地带的问题。

Show HN:我把 DOOM 变成了一个 Transformer

Hacker News Top

Show HN:一个将整数神经网络编译成 ZDoom 地图的项目,让 DOOM 的巫毒娃娃和扇区属性来执行运算,并通过 NumPy 进行了逐比特精确验证。虽然速度极慢,但完全可验证,还能让玩家实时手写数字供 DOOM 进行分类。