mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-23 23:00:30 +02:00
New strict exact (unit :: function, padded bytes): game/player_control :: _player_control_modify_desired_angles 1584 ai/actor_combat :: _actor_aim_projectile 720 memory/stack_memory_pool:: _stack_memory_pool_allocate 640 memory/stack_memory_pool:: _stack_memory_pool_resize_block 192 ai/action_vehicle :: _action_vehicle_setup_impromptu 464 scenario/wind :: _wind_variance_initialize 384 ai/actions :: _actors_searching_same_position 320 ai/action_converse :: _action_converse_perform 256 game/game_engine_race :: _race_engine_get_score 224 Function boards now complete: action_converse 9/9, wind 9/9, stack_memory_pool 33/33, game_engine_race 36/36, player_control 49/49 (objects NOT marked Matching: whole-object data/ownership audit not done; player_control .rdata is owner-held). Method. Every closure started from the SOURCE SHAPE read out of the first-party unoptimised /Od + /RTC build (halo_cache_symbols.exe, scratch/orch/odbuild.py) and was then confirmed against January's own bytes before it was relied on (double attestation); none is a spelling search. - _player_control_modify_desired_angles: both autolevel products are `error * K * magnitude3d(v)`; three lines, no local, cast or parenthesis. - _actor_aim_projectile: weapon_vector is scoped to its own inner block, the dot product is tested directly (no `alignment` local), and the three debug-info stores follow January's order (flag first). Reviewer strip tests: block alone, order alone and alignment-drop alone are each residual; only the combination is exact. - _stack_memory_pool_allocate: result zeroed before the 0x342 assert, ONE return, positive guard with the assert in the else, in-place size arithmetic. The worker's unattested `last_block` pointer local was REMOVED by the reviewer; the /Od arm spelling lands instead. - _stack_memory_pool_resize_block: body untouched. The static helper stack_memory_pool_dispose_block takes (pool, reference), as /Od pushes them and as the callee forwards them to valid_block(pool, reference). - _action_vehicle_setup_impromptu: passes state_data->attempt_distance / ->continue_distance (the fields just stored) instead of the parameters. - _wind_variance_initialize: block-local `word control_point_indices[4]` assigned inside the innermost axis loop; name and size from the /Od RTC descriptor. - _actors_searching_same_position: four pointer locals, result = FALSE after the four calls, if / else-if arms assigning result, one return. Requires actor_get_pursuit_location (baseline exact, STILL exact 64) to read uncover.pursuit_location through its own union member in a second arm, as /Od has it. The evade-direction enum gains its two real middle constants; values are unchanged (_actor_evade_random is still 4). - _action_converse_perform: REMOVES a pre-existing `true_value` dummy local from production. `in_range = TRUE` is assigned in two arms (if / else-if): /Od has two distinct stores, impossible from one `||` statement, and January has `mov ebx,1` with two bl stores each with two in-edges. One return. - _race_engine_get_score: a `score` accumulator assigned on both arms with ONE return (single-exit law); team_index/laps/flags_touched are block locals of the non-team arm. Orchestrator overrides of reviewer-approved text (not landed, zero credit lost beyond what is listed under HELD): - action_vehicle: the reviewer's landing.c also rewrote _find_destination with 16 NEW 3D->2D view casts. Owner ruling 2026-09-21 keeps rule 24 strict for new representation-punning casts, so only the two-line exact closure lands. - actions: _actor_action_try_to_dive (720, exact in scratch) needs ONE new view cast -> HELD. _actor_action_handle_vehicle_entry's fuzzy rewrite introduced an empty `if` arm holding only a `//` comment (new fake_match_scan lead the reviewer missed) -> reverted to production. Config: config/parked.json - six entries REMOVED (now exact): _action_converse_perform, _wind_variance_initialize, _actor_aim_projectile, _actors_searching_same_position, _player_control_modify_desired_angles, _race_engine_get_score. No header, symbols.json, flag or tool change. Verification (tip of the following fuzzy commit): full ninja all_source progress semantic_progress pass, Code 1446706 -> 1451421, 7297 -> 7306 functions. stable_verdicts vs the FROZEN baseline: gained 15 / 7568 bytes, regressions 0. All 11,060 function and 1,706 section report rows: 0 lost 100%, 0 missing. Parks 174 active / 0 stale / 0 invalid. Admission audit 23 / 0 / 8 / 0. Guard, ownership, fake scan, line endings, new-punning-cast screen: clean on every landed file. git diff --check clean. Reviewer: independent adversarial agent per unit, ACCEPT_EXACT for all nine; orchestrator re-gated every file through scratch/orch/land.py. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>