Case study
Halo 2: an agent-assisted matching decompilation of an LTCG Xbox build
A work-in-progress matching decompilation of Halo 2 for the original Xbox: contributors write C and C++ that the period compiler, building the whole program with link-time code generation, must turn back into the retail executable's bytes function by function. The README reports just under half of the game-function bytes matched and leaves a native port for a later stage. It discloses that much of the maintainer's work runs in Claude and Codex coding-agent lanes.
Requirements and limitations
- README targets the retail disc build's default.xbe (internal name halo2ship.exe, linked 2004-09-28, XDK 5849, Visual C++ 7.1 with /LTCG), identified by SHA-256. At the reviewed commit it reports 9,115 of 11,321 game functions matched (46.90% of game-function bytes; 35.59% of all in-scope bytes). Decompilation and readability work are in progress and a native port is a later stage, so the project produces no playable or ported build.
- Supply the retail default.xbe from a copy you are entitled to use, and the XDK 5849 development toolchain, yourself; neither is provided, and the maintainers will not help obtain the SDK. README says byte-for-byte checking currently depends on that original compiler, which no open-source toolchain can yet reproduce; analysis and documentation need neither. The repository holds no game assets, disc images or leaked material.
- The tools are Python (requirements-dev.txt, with capstone for the checker). tools/build.py builds the whole game as one LTCG image with each source file's flags; tools/check.py compares every marked function with the retail bytes apart from relocated address fields, writes matched/near/todo status to config/functions.csv and exits nonzero while any function differs. Public CI runs the Python tests, whose retail and SDK tests skip without those local inputs, and exports the decomp.dev report from the committed CSV.
- Match counts come from the project's checker; tools/masked.py lists differences the address masking can hide, such as nearby float constants and strings. PROVENANCE.md reports that earlier names drew on sources its policy forbids (third-party names derived from unreleased 2003 linker maps, and an internal 2007 debug build); those were removed or renamed with match status unchanged, while the derivation of names that follow the Halo CE decompilation is still under review. This collection ran no checks.
- Contributors' own work is CC0 1.0; LEGAL.md states this places no Halo 2 code, content or trademarks in the public domain, and the project is unaffiliated with Microsoft, Bungie or 343 Industries. README says much of the maintainer's decompilation runs in automated lanes driven by Claude and Codex, with each batch reviewed and checked before it lands, and it offers contributors a prompt for AI coding agents. No REA use is documented 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.
Primary sources
- README.md GitHub · kirklandsig/halo2-decompiled · Revision e25e96f
- LEGAL.md GitHub · kirklandsig/halo2-decompiled · Revision e25e96f
- PROVENANCE.md GitHub · kirklandsig/halo2-decompiled · Revision e25e96f
- docs/PROGRESS.md GitHub · kirklandsig/halo2-decompiled · Revision e25e96f
- tools/check.py GitHub · kirklandsig/halo2-decompiled · Revision e25e96f
- CONTRIBUTING.md GitHub · kirklandsig/halo2-decompiled · Revision e25e96f
- .github/workflows/python-tests.yml GitHub · kirklandsig/halo2-decompiled · Revision e25e96f
- .github/workflows/decomp-dev.yml GitHub · kirklandsig/halo2-decompiled · Revision e25e96f
- LICENSE GitHub · kirklandsig/halo2-decompiled · Revision e25e96f