Jonas VolmanandClaude Opus 5 2ee8bfefe8 _actor_move_update: fix a proven allow_jump defect - ZERO bytes banked
The function stays residual at [sha]; this is not scoreboard movement. REAL
regions 57 -> 53 with size, relocations and real code end all unchanged.

THE DEFECT, verified from January's bytes before landing. Our source set
allow_jump only when BOTH vehicle->vehicle.hover < 0.7f AND up.k < 0.8f.
January tests hover (fcomp __real@3f333333 at 0x54e, jp 0x5fa), then executes
mov byte ptr [ebp-3], 1 at 0x562 - allow_jump = TRUE - and only then tests
up.k (fcomp __real@3f4ccccd at 0x566, jp 0x5fa). So January sets allow_jump
whenever hover < 0.7, and falls through when up.k >= 0.8. Our source had a
real behaviour difference; the if is now nested accordingly. The escape
direction, crouch and break stay inside the up.k test.

Also: rotation is scaled with the existing scale_vector3d helper instead of
three *= statements.

WHAT WAS NOT LANDED. The wave's primary variant PA also rewrote a negation with
negate_vector3d, which makes actor_moving.obj newly define a _negate_vector3d
COMDAT. January's actor_moving.obj does not define that symbol, so under the
2026-09-20 ownership ruling it cannot be emitted; PA_noNG, landed here, adds no
new symbol. A further variant PB is byte-worse on padded size (+16) and its extra
levers are neutral respellings rather than fixes, so it stays held.

Verified: full ninja green; 11,060 function rows and 1,706 section rows diffed
board-wide, 0 worse; actor_moving 31/5 unchanged; newly defined symbols versus
the floor: none; parks 181 active / 0 stale / 0 invalid; forbid guard exit 0;
fake_match_scan 0 findings.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 23:36:04 -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%