Case study

Halo: Combat Evolved: an incremental re-implementation patched into the original Xbox executable

A research project re-implementing the original Xbox Halo: Combat Evolved in C, one function at a time. Rewritten functions are compiled into a separate image and patched into the user’s original executable with redirects from the original implementations, so the hybrid game can be run and debugged in xemu or on an Xbox as work progresses. The project reports an early stage, and its sources document no byte-for-byte comparison with the original code.

Requirements & limits

  • README describes studying and creating a free, open-source re-implementation of the Xbox launch title; its current-state list reports that the patched game runs, the main loop and several more functions are re-implemented, and there is a long way to go. The linked progress page, whose data file was last modified in November 2022, reports 0.37% of the .text section’s game code across 40 functions. The last default-branch commit is dated 2023-07-07.
  • Supply the retail disc’s game files and the original executable version 01.10.12.2276, identified by MD5 in README and kb.json and placed as cachebeta.xbe in a halo-patched directory; tools/patch.py checks that hash. The repository includes no game executable or assets, and README says they must come from your own copy. The build writes a patched default.xbe beside them as the user’s local modified copy; the project distributes no game build.
  • Builds use CMake 3.16+, Python 3 with libclang, pefile and pyxbe, and either 32-bit MSVC on Windows or Clang and LLD targeting i386-pc-win32 on Linux and macOS; a Dockerfile provides an Ubuntu 22.04 build image. The result targets the original Xbox and runs in the xemu emulator or on console hardware, and the build generates a .gdbinit for debugging with GDB through xemu’s GDB server.
  • kb.json declares 323 original functions and 71 data items with addresses, grouped by original object file; tools/knowledge.py generates headers, thunks and an import library from it, and gen-struct-checks.py emits static size checks for types.h. CI builds only the re-implementation image (Debug and Release on Ubuntu, Windows and macOS) without original files, so it checks compilation, not behaviour. The sources document no byte-for-byte or automated gameplay comparison, and this collection ran nothing.
  • The repository has no license file and GitHub detects none, so reuse terms for the project’s code are not stated; src/xboxkrnl.exe.def carries a CC0-1.0 notice (2017, Stefan Schmidt). README presents the work as educational research, the progress page says it is not affiliated with Microsoft or Bungie, and the game keeps its rights holders’ terms. The reviewed sources establish no AI or REA use, and no runtime reproduction is claimed.

About this entry

Type
Case study
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Targets
Game

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

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

More in Games

All 231 entries in GamesGames case studies (189)