📌 项目地址:HarbourMasters/Lighthouse | ⭐ 198 颗星 | 🔧 C | 📜 未标注
这不是一个游戏,而是一次游戏考古
HarbourMasters/Lighthouse 是一个针对 N64 经典游戏《Banjo-Kazooie》的反编译项目。它的目标不是做模拟器或修改版,而是把原始二进制 ROM 还原成可读、可编译的 C 代码,最终达到“给定原始 ROM,就能 100% 复现同一份二进制”的效果。
项目目前标记为 Banjo-Kazooie (100.0000%),说明已经完成了所有代码和数据的匹配。主要语言是 C,构建过程中还会用到 Rust(用于构建工具),Star 数 198。
它解决了什么痛点?
反编译项目解决的核心问题是:让一款老游戏不再依赖黑盒二进制。有了完整的 C 源码,开发者可以理解游戏内部逻辑、修复 bug、制作 mod、移植到其他平台,甚至学习 N64 时代的编程技巧。
具体到 Lighthouse,它把游戏分成了多个模块(core1、core2、MM、TTC 等,对应游戏的不同关卡或系统),每个模块都能独立编译,方便分段研究。
实际用法:从 ROM 到可执行文件
构建过程并不复杂,但需要准备一个合法来源的原始 ROM 文件。
本地构建(Linux)
首先安装依赖:
sudo apt-get update && sudo apt-get install -y $(cat packages.txt)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
git submodule update --init --recursive
python3 -m pip install -r requirements.txt
然后把美版 v1.0 的 ROM 放到项目根目录,命名为 baserom.us.v10.z64。可选地校验哈希:
sha1sum baserom.us.v10.z64
期望输出:
1fe1632098865f639e22c11b9a81ee8f29c75d7a
最后执行:
make
这会提取并构建全部内容。如果想只构建某个模块,README 中给出的语法是:
make <module>
但原文中尖括号内的内容被 Markdown 吞掉了,实际支持的模块名包括:core1、core2、MM、TTC、CC、BGS、FP、lair、GV、CCW、RBB、MMM、SM、fight、cutscenes。
选择不同版本
项目支持美版 v1.0、v1.1、日版和欧版。把对应 ROM 命名为 baserom.<version>.z64,然后指定版本构建:
make VERSION=us.v11
Docker 构建(Linux/macOS)
如果不想污染本地环境,可以用 Docker。可以拉取 GitLab 镜像(需登录):
docker login registry.gitlab.com
docker pull registry.gitlab.com/banjo.decomp/banjo-kazooie:latest
或者自己构建镜像:
docker build -t banjo-kazooie .
Apple Silicon 等 ARM 用户需要指定平台:
docker build --platform linux/amd64 -t banjo-kazooie .
运行容器:
docker run -it --rm -v $(pwd):/banjo banjo-kazooie
ARM 用户同样要加 --platform linux/amd64。容器内可以执行与本地相同的构建命令。
云构建(GitLab CI)
项目提供 GitLab CI 支持,但需要把加密后的 baserom 放到可下载的远程服务器,用 wget 或 curl 获取。加密算法是 AES-256-CBC,具体流程参考官方仓库说明。
和同类反编译项目相比
类似的 N64 反编译项目还有《塞尔达传说:时之笛》的 Ocarina of Time 等。共同点是都需要原始 ROM 作为“原料”,最终产出可编译的 C 代码。Lighthouse 的独特之处在于:
- 目标是 100% 代码匹配,不是“能运行就行”。
- 模块划分清晰,游戏的不同部分可以独立构建,降低了单次编译的复杂度。
- 容器化支持完善,降低了环境依赖门槛。
对于想深入理解一款 N64 游戏内部架构的人来说,这是一份质量极高的学习材料。
注意事项
- 版权问题:你必须拥有一份合法的游戏 ROM 才能构建。项目只提供反编译脚本,不包含任何游戏数据。
- 磁盘空间和依赖:构建过程需要安装 Rust、Python 工具链,以及若干系统包。Docker 是更省心的选择。
- 平台限制:本地构建仅支持 Ubuntu 18.04+ x86_64。macOS 和 ARM 平台只能通过 Docker 使用。
- 命令细节:README 中
make <module>的模块列表没有被正确渲染,实际编写.z64文件时需注意版本命名规则(如us.v10、jp、pal)。
如果你对游戏逆向工程感兴趣,或者想研究一个大型 C 项目的历史结构,Lighthouse 值得你盯住。