Jonas VolmanandClaude Fable 5.1 f0b191bc68 Lane B: three exact functions under the owner's all-inlined COMDAT admission (+2,545 meaningful / +2,560 padded)
New strict exact:
  ai/actor_type_flood :: _actor_type_flood_desire_shamble  1296  (object now 2/2)
  units/vehicles      :: _update_human_plane_physics        928
  ai/path_smoothing   :: _find_tangent_point                336  (object now 6/6)

OWNER ADMISSION (2026-09-21), quoted: "Sufficient: admit the class. Require a
genuine shared-header __inline, byte-identical COMDAT, strict-exact caller, full
ownership/build sweep, and zero regressions. No hand expansions."
Each landing newly emits ONE header-inline COMDAT that January's split credits
to another object. Conditions verified per landing by scratch/orch/admit_check.py:
  _real_random_range   32 B  math/real_math.h  January owner ai/action_alert      byte-identical
  _interpolate_scalar  64 B  math/real_math.h  January owner game/player_control  byte-identical
  _set_real_point2d    32 B  math/real_math.h  January owner ai/path_obstacles    byte-identical
All three callers are strict exact; no hand expansion is used anywhere in them.

The evidence the owner accepted:
 (1) Compiler (scratch/orch/inline_lab.py): VC7 13.00.9254 with the campaign's
     real flags (/O2 /Oy- /DDEBUG /Dxbox) emits the out-of-line COMDAT for a
     non-static __inline whose EVERY call site inlined, and emits nothing when
     the inline is unused - so emission implies use in that TU.
 (2) January's own image (scratch/orch/inline_owner_census.py): of 104
     header-inline COMDATs, 65 are owned - per January's PDB section
     contributions - by an object that holds ZERO references to them (e.g.
     _cross_product2d in actor_combat.obj). Owners cluster at the earliest
     link-order TUs, as "folded survivor = first emitter" predicts. The split's
     single definition is therefore a link-fold artifact, not evidence that the
     other TUs did not emit the COMDAT.

Source evidence (all read from the first-party /Od build first, then confirmed
in January's bytes):
- _actor_type_flood_desire_shamble: result/switching flags zeroed at the top, all
  six `result = FALSE` arms, chain-assigned counters, `--timer == 0`, per-arm
  two-argument helper calls, MAX with double evaluation; `< 15.0f` confirmed by
  January's `test ah,5`. real_random_range is byte-REQUIRED (a hand expansion
  measures 1280 != 1296; January shows the inlined parameter temporaries).
- _update_human_plane_physics: uses the real interpolate_scalar helper.
- _find_tangent_point: every call is a real real_math.h helper including
  set_real_point2d; store-by-store spellings are residual and worse than baseline.

Held alongside (NOT landed): _update_alien_fighter_physics_new (1,088, exact in
scratch) - needs a NEW 3D->2D view cast whose site is not /Od-attested; owner:
"keep the fighter held".

Config: config/parked.json - _actor_type_flood_desire_shamble entry removed
(now exact). Parks 173 / 0 / 0. No header, symbols.json, flag or tool change.

Verification: full ninja all_source progress semantic_progress pass (Code
1451421 -> 1453966, 7306 -> 7309). stable_verdicts vs the FROZEN baseline:
gained 18 / 10128 bytes, regressions 0. All 11,060 function and 1,706 section
report rows: 0 lost 100%, 0 missing. Guard, fake scan, line endings and the
new-punning-cast screen clean. git diff --check clean.
Reviewer: independent adversarial agents confirmed each body EXACT and credible
and held them ONLY on the ownership question the owner has now ruled on.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 11:27:15 -07:00
2025-11-27 02:27:27 +00:00
2026-01-03 00:47:17 +00:00
2026-06-29 11:34:11 +01:00

Halo 1 decompilation Build Status Code Progress Data Progress

This is a work-in-progress decompilation of Halo: Combat Evolved build 2342 (cachebeta.exe, sha256 4cc87b45f721270392a96f1674ed2b5cd4a7bb4355faeab4531d1cf1884d9520).

Agent quick references

Build instructions

You must source the Halo 1 PAL debug build and the August 2001 Xbox SDK yourself. You also need ninja-build on your PATH.

Extract the XDK/xbox folder from the installer into the repository root such that xbox/{bin,include} are valid paths. Place cachebeta.exe from the Halo 1 build into your repository root. Navigate to the repository and run configure.py in the terminal.

Then, use ninja build to compile the game and report progress statistics, or open the cachebeta.sln VS2022 project under projects on Windows.

Where's all the type information?

We use debug symbols from later Halo games to help map structures, enums, type definitions, function signatures and some variable names. You should obtain a copy of the Halo CEA beta and run it through pdb-decompiler to obtain debug info for yourself. Note that CEA is based off of Halo PC and has its own modifications which make it not 100% accurate to the original Xbox title.

2026-10-27 19:00:41 +01:00
Languages
C 90.1%
Python 6.7%
JavaScript 1.3%
Java 0.6%
C++ 0.2%
Other 0.8%