# Halo: Combat Evolved：逐步重新实现并修补进原版 Xbox 可执行文件

> 一个以 C 语言逐个函数重新实现初代 Xbox 版 Halo: Combat Evolved 的研究项目。重写的函数编译为独立映像，再修补进使用者自备的原版可执行文件，并从原有实现重定向过去，使这一混合版本能在开发过程中于 xemu 或 Xbox 上运行和调试。项目自述仍处于早期阶段，其来源也未记录与原代码的逐字节比较。

- 类型：案例
- 目标：游戏
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-19
- 收录于：2026-10-28
- 原始资源：<https://github.com/halo-re/halo>
- 一手来源：<https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/halo-ce-xbox-reimplementation-case/>
- 记录 JSON：<https://awesomerea.org/resources/halo-ce-xbox-reimplementation-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/halo-ce-xbox-reimplementation-case/index.md)

## 使用条件与局限

- 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 无关，游戏本身仍受其权利人的条款约束。

## 一手来源

1. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/README.md>
2. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/kb.json>
3. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/CMakeLists.txt>
4. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/tools/patch.py>
5. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/tools/knowledge.py>
6. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/tools/gen-struct-checks.py>
7. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/.github/workflows/main.yml>
8. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/Dockerfile>
9. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/requirements.txt>
10. <https://github.com/halo-re/halo/blob/21bc641df6b8bdd730c23885ff643545423dcc82/src/xboxkrnl.exe.def>
11. <https://blam.info/progress/>

## 同分区更多条目：游戏

- [keen-clone：Commander Keen 1 的 C/SDL2 移植](https://awesomerea.org/zh/resources/keen-clone-rea-commander-keen-case/index.md) · 案例
- [Metroid Dread：进行中的手工反编译](https://awesomerea.org/zh/resources/dreadcomp-case/index.md) · 案例
- [OpenGOAL：恢复 GOAL 代码并重建 Jak 系列游戏](https://awesomerea.org/zh/resources/opengoal-jak-case/index.md) · 案例
- [Paleblood：带自有运行时的 Bloodborne 功能等价反编译](https://awesomerea.org/zh/resources/paleblood-bloodborne-functional-decomp-case/index.md) · 案例
- [R.E.L.I.V.E.：Oddworld: Abe’s Oddysee 与 Abe’s Exoddus 引擎的重新实现](https://awesomerea.org/zh/resources/relive-oddworld-abe-engine-case/index.md) · 案例
- [re-plants-vs-zombies：反编译并现代化改造 Plants vs. Zombies 年度版](https://awesomerea.org/zh/resources/re-plants-vs-zombies-decomp-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
