案例
Halo: Combat Evolved:逐步重新实现并修补进原版 Xbox 可执行文件
一个以 C 语言逐个函数重新实现初代 Xbox 版 Halo: Combat Evolved 的研究项目。重写的函数编译为独立映像,再修补进使用者自备的原版可执行文件,并从原有实现重定向过去,使这一混合版本能在开发过程中于 xemu 或 Xbox 上运行和调试。项目自述仍处于早期阶段,其来源也未记录与原代码的逐字节比较。
使用条件与局限
- README 介绍项目旨在研究并为这款 Xbox 首发游戏打造自由、开源的重新实现;其“当前状态”列表报告修补后的游戏可以运行,主循环和另外若干函数已重新实现,但仍有很长的路要走。README 链接的进度页面(其数据文件最后修改于 2022 年 11 月)报告 .text 段游戏代码已重新实现 0.37%,共 40 个函数。默认分支最后一次提交日期为 2023-07-07。
- 需自备零售光盘的游戏文件,以及版本为 01.10.12.2276 的原版可执行文件(README 和 kb.json 以 MD5 标识),并以 cachebeta.xbe 为名放入 halo-patched 目录;tools/patch.py 会校验该哈希。仓库不含游戏可执行文件或素材,README 说明须来自使用者自己的副本。构建会在同一目录写出修补后的 default.xbe,作为使用者本地的修改副本;项目不分发任何游戏构建。
- 构建需要 CMake 3.16 及以上、带 libclang、pefile 与 pyxbe 的 Python 3,以及 Windows 上的 32 位 MSVC,或 Linux 和 macOS 上以 i386-pc-win32 为目标的 Clang 与 LLD;Dockerfile 提供 Ubuntu 22.04 构建镜像。产物面向初代 Xbox,可在 xemu 模拟器或主机硬件上运行;构建过程会生成 .gdbinit,便于通过 xemu 的 GDB 服务器用 GDB 调试。
- kb.json 按原始目标文件分组,声明了 323 个原有函数和 71 个数据项及其地址;tools/knowledge.py 据此生成头文件、跳转桩和导入库,gen-struct-checks.py 为 types.h 生成静态大小检查。CI 只构建重新实现的映像(在 Ubuntu、Windows 和 macOS 上分别构建 Debug 与 Release),不使用原版文件,因此只检验能否编译,不检验行为。来源未记录逐字节比较或自动化的游戏行为比较,本合集也未运行任何内容。
- 仓库没有许可证文件,GitHub 也未检测到许可证,因此项目代码的再利用条款未作说明;src/xboxkrnl.exe.def 带有 CC0-1.0 声明(2017,Stefan Schmidt)。README 将该工作定位为教育研究,进度页面说明项目与 Microsoft 或 Bungie 无关,游戏本身仍受其权利人的条款约束。所审来源未确立 AI 或 REA 使用,也不主张运行复现。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · halo-re/halo · 修订 21bc641
- kb.json GitHub · halo-re/halo · 修订 21bc641
- CMakeLists.txt GitHub · halo-re/halo · 修订 21bc641
- tools/patch.py GitHub · halo-re/halo · 修订 21bc641
- tools/knowledge.py GitHub · halo-re/halo · 修订 21bc641
- tools/gen-struct-checks.py GitHub · halo-re/halo · 修订 21bc641
- .github/workflows/main.yml GitHub · halo-re/halo · 修订 21bc641
- Dockerfile GitHub · halo-re/halo · 修订 21bc641
- requirements.txt GitHub · halo-re/halo · 修订 21bc641
- src/xboxkrnl.exe.def GitHub · halo-re/halo · 修订 21bc641
- https://blam.info/progress/