跳到正文
发现
其他开发者工具

racers:乐高赛车反编译工程

LEGO Racers(1999)的反编译项目,把原版游戏还原为可编译、可研究的 C++ 代码。

admin
发布于 2026-10-30
浏览
2
访问
0
下载
0
版本
vcontinuous
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

racers 是 1999 年游戏 LEGO Racers 的反编译(decompilation)工程,思路参照同组的 LEGO Island 反编译项目。目标是把原版游戏的机器码尽可能精确地还原成可编译的 C++ 代码,让重编译后的指令与原版可执行文件尽量逐条对应,从而得到一个可修改、可改进、日后可移植到其他平台的代码库。

需要强调:本仓库只做反编译,代码忠于原版实现,只能在 32 位 Windows 目标下编译。如果需要面向现代平台和 Web 的原生兼容版本,应改用作者提到的 racers-portable 项目。

主要功能

  • 反编译 LEGORacers.exe:目前已接近完整。
  • 反编译 GolDP.dll:大部分已完成。
  • 重编译后的游戏已经可以实际游玩,但软件渲染器(software renderer)尚不可用。
  • 内置 reccmp 校验流程,可把自编译产物与原版二进制逐函数比对,并生成进度 SVG 报告。
  • 目录划分清晰:LEGORacers/ 对应主程序,GolDP/ 对应 DLL,util/ 为反编译辅助头文件,cmake/ 为构建模块,tools/ 为 Python 工具。

安装与使用

项目使用 CMake 构建。为了获得最精确的匹配结果,推荐使用与原版游戏相同的编译器 Microsoft Visual C++ 6.0(另有便携版本可快速下载使用),并配合 CMake 使用。

在 cmd 中先运行 VC98\Bin\VCVARS32.BAT 设置环境变量,然后进入 build 目录配置并编译:

cmake <path-to-source> -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo
nmake && nmake

编译完成后,build 目录中会得到重编译的 LEGORacers.exe 与 GolDP.dll。某些情况下 nmake 需要执行两次,因此建议始终用 nmake && nmake 重新编译。

Linux / macOS 用户可以使用官方 Docker 镜像编译,无需自行配置 Wine 环境:

docker run -d -e CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=RelWithDebInfo" -v <path-to-source>:/racers:rw -v <build-folder>:/build:rw ghcr.io/isledecomp/racers:latest

如果需要校验编译结果,可安装 reccmp 工具:

pip install -r tools/requirements.txt

然后在项目根目录创建 reccmp-user.yml,指向原版二进制:

targets:
  LEGORACERS:
    path: path/to/LEGORacers.exe
  GOLDP:
    path: path/to/GolDP.dll

随后运行 reccmp-reccmp --target LEGORACERS -S LEGORACERSPROGRESS.SVG 等命令即可生成比对报告。

注意事项

  • Visual C++ 6.0 对含空格的路径支持不佳:CMake、仓库目录和编译器路径都不要包含空格,否则可能出现配置或编译错误。
  • 使用其他编译器可以尝试,但不在指南覆盖范围内,后果自负。
  • 校验用的原版二进制为 1999 年 7 月 22 日的版本:LEGORacers.exe 为 802,816 字节,GolDP.dll 为 425,984 字节。
  • 欢迎贡献代码:使用 reccmp 注解(FUNCTION:、STUB:、GLOBAL:),函数按地址升序排列,遵循 clang-format 配置与 NCC 命名约定(如 FUN_XXXXXXXX),并保持 PR 小而聚焦。
  • 项目以 LGPL-3.0 许可证发布。

本作品整理自 GitHub 开源项目 isledecomp/racers,原作者 @isledecomp,许可证 LGPL-3.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. vcontinuous当前版本

    Continuous build

评论