Commit Graph
91 Commits
Author SHA1 Message Date
xshxdex98 f7301fcd06 Weapon HUD: the secondary magazine's overlays and warnings are its own
render_weapon_hud set the secondary magazine's overlay flags into slots 0
and 1, over the primary's, where its states and numbers use 4 and 5: a
weapon of one magazine showed its ammunition overlays as the empty second
magazine's (coldsnap's flamethrower read NO FUEL with a full tank).

A weapon of one magazine also read a second it doesn't have:
weapon_build_weapon_interface_state fills only the weapon's own, into
unset stack memory, so the HUD's secondary flash, reload and fired-empty
warnings followed whatever was there. The state is now cleared first, and
a weapon of one magazine keeps its secondary states and overlays at rest.
2026-10-07 20:51:44 -05:00
MrBruh d7efd3934a Validate map tags before loading 2026-10-07 12:01:09 +13:00
MrBruh 76addf661f Second hardening round 2026-10-07 00:01:28 +13:00
MrBruh 4adc3a87a5 Remove matching tooling and HALO_LINUX ifdefs 2026-09-30 21:49:46 +13:00
MrBruh a17d89c6f1 Merge bnunu/halo-1 main 2026-09-30 18:13:05 +13:00
MrBruh 8f3e7de9ca Play PAL maps as the NTSC maps 2026-09-29 22:07:10 +13:00
Jonas Volman f3aadeab98 Reconcile five Halo functions and approved declaration batches
Integrate coherent B3, P2/K17 prerequisites, completed K1-K16 + S, and the independent profile/effects rulings. Five gains and two explicitly approved B3 debits: net +3 strict functions, +2770 meaningful/+2800 padded bytes (+2774 progress credit). No additional losses; Halo objects 394 to 396 and data unchanged.

Clean rebuild, identical 8252-row stable sweep, 68 valid parks, admission/provider checks, 467-unit warning comparison, unchanged fake scan, and 1318 tests passed. Preserve canonical helper recoveries and unrelated work. Full evidence and disclosures in docs/object_matching_logs/astra_five_function_reconciliation_20260928.md.
2026-09-28 23:17:10 -07:00
Jonas Volman 709bfc3a3c Reconcile approved frontier ownership and admission packets
Import only independently reviewed production changes. Preserve canonical physics and virtual-keyboard repairs; keep B3 and all unresolved holds out.

Record exactly four approved canary debits (6987 meaningful bytes), six Halo admissions and two revocations. Keep vendor ioinit/storage work separate. Full build, 8252-row sweep, 1318 tests, park/admission/fake audits and 621-object binding pass within approved debit bounds.

Do not publish donor research dumps or private assets. README and unrelated user research remain untouched. See frontier_publication_reconciliation_20260927.md for complete evidence limits and accounting.
2026-09-27 17:12:48 -07:00
Jonas Volman 59757f4263 Reconcile approved type ownership, static locals and source disclosures
Independently gate storage + K, OQ-4 P-a/P-b1, four static-local packets and comment-only disclosures. Preserve all 7641 exact owner rows, 71 valid parks and 1161 passing tests; code/data credit unchanged. G and game_engine admission remain held because current canonical loses populate_statistic_buffer. Existing collision static-local repair is not duplicated. No donor tree, held candidate, scorer or private asset imported.
2026-09-27 05:17:27 -07:00
Jonas VolmanandClaude Opus 5.5 1cd5e4ede2 R2 batch 2: reviewed zero-credit ownership/storage packets; two '$'-defect data entries
All packets passed a precedent audit and an independent adversarial review.
No object changes status.
- Storage per cachebeta publics (source static + symbols.json rows):
  - bink_playback: four globals;
  - weapons: 11 rows + weapon_magazine_finish_reload;
  - object_lights: 4 helpers; should_render_lights is the /Od-attested call and
    its prototype leaves the public header;
  - vehicles: _update_turret_physics;
  - weather_particle_systems: one_over_char_max is external (cachebeta public,
    HCEX Global); its globals are static;
  - rasterizer_xbox_debug: 8 D3DINLINE wrapper rows (already Matching: audit
    FAIL(8) -> PASS, pdb 8 -> 0).
- draw_string: the invented external draw_string_globals aggregate (pads, blob,
  #define aliases) becomes four HCEX-attested file statics in /Od declaration
  order with = { 0 } (a595bbc2 precedent); typed multitexture params.
- render_debug: three rule-6 hand expansions become real point_from_line3d
  calls (ruling #1/#2); the opaque vehicle view gives way to struct
  vehicle_datum + vehicle_datum_try_and_get; the six debug_* toggles become
  tentative definitions (COMMON evidence).
- vehicles: the TU-wide REAL_MATH_EXTERNAL_POINT_FROM_LINE3D define is gone and
  the pathfinding hand expansion becomes the genuine call (ruling #1).
- rasterizer_xbox_profile V1R (reviewer-amended): byte-inert /Od parameter
  order, the BUG marker comment, detail_objects via the rasterizer_xbox.h API,
  and a rejection text that keeps the SDK-table policy question open.
- semantic_data_matches.json: single-section '$'-defect entries with
  allow_incomplete_unit for projectiles _projectile_update_section (1,548 B) and
  object_lights _lights_section (1,541 B) (leaf_map / editor_flying_camera /
  race precedents).

Gate (full ninja, objdiff 3.3.1): objects 384 (unchanged), code unchanged,
data +3,089; stable diff 0 regressions; parks 83/0/0; admission 10/0/2/0; fake
scan 26; pytest 1159 passed; diff --check clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 15:12:09 -07:00
Jonas Volman 20dd67c063 Add isolated Xbox link probe and repair private helper ownership 2026-09-24 13:27:04 -07:00
Jonas Volman f21e001f74 weapons: match trigger projectile inline schedule 2026-09-23 15:24:06 -07:00
Jonas Volman b0992d0ebe Admit nine verified Halo object closures 2026-09-23 14:25:38 -07:00
Jonas VolmanandClaude Opus 5.5 70e1a15b69 Return uncompressed vectors by value and match reload/index-buffer code
Structural lane batch 6: +1,632 padded / +1,590 meaningful bytes strict
exact (4 functions), zero stable-verdict regressions across the full
board (the header consumer sweep).

- rasterizer_geometry.h/.c: uncompress_int32_to_real_vector3d returns
  real_vector3d by value. The debug build shows the struct-return copy
  at all 16 call sites, and HCEX lists a single parameter. Callers in
  rasterizer.c, rasterizer_lights.c and rasterizer_xbox_lights.c assign
  the result directly and drop their scratch buffers. Exact:
  _compress_real_vector3d_to_int32 and _clamp. The parked
  _rasterizer_sun_glow_draw is re-measured (same size, fuzzy
  95.815 -> 95.817).
- game/players.h: declare players_debug_render(void), a public players.c
  function that render_debug.c called undeclared (C4013). Disclosure: the
  by-value prototype drops one declared name, which alone flips
  _rasterizer_frame_statistics_draw's field-load order. This genuine
  missing prototype restores that TU's name count. Both edits are
  independently evidenced and landed together; the full build shows no
  regression.
- weapons.c: _weapon_magazine_finish_reload reads magazine->rounds_loaded
  (/Od 0x6a4590).
- rasterizer_xbox_hardware_geometry.c: _rasterizer_triangle_buffer_new
  follows the debug build (0x7eaca0), including the index-buffer Unlock
  with its HRESULT check. This removes the _ReadWriteBarrier/pragma/goto
  steering.
- parked.json: unpark the three newly exact parked functions.

Gate: ninja PASS, parks 109/0/0, admission 0 contradicted/0 revoked,
provider link PASS, casts and fake scan unchanged, pytest 1152 passed /
5 skipped / 26 subtests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 06:36:08 -07:00
Jonas VolmanandClaude Opus 5.5 6099e659e2 Match item and projectile update objects
Lane D refresh packet 1: items and projectiles, +9,856 padded bytes strict
exact (4 functions), zero stable-verdict regressions.

- items.c: _item_update exact. Removes the invented storage unions and
  punning casts; uses real point_from_line3d/dot_product3d helpers and
  scoped locals. January items.obj references _point_from_line3d out of
  line, so the COMDAT emission meets the owner ruling.
- projectiles.c: _projectile_update, _projectile_collision and
  _projectile_collision_test_line exact. Debug-build (/Od) attested shapes:
  the detonation-timer case fall-through, the `(moved = TRUE) &&` condition
  and the duplicate magnitude_squared3d call. January projectiles.obj
  references _point_from_line3d and _collision_test_line out of line; both
  COMDATs are byte-identical to January's folded copies.
- parked.json: unpark _item_update (now exact).

Gate: ninja PASS, parks 150 active / 0 stale / 0 invalid, admission 0
contradicted / 0 revoked, fake scan 0 leads, castcheck clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 01:06:10 -07:00
Jonas Volman 4f4c85021d Reconcile Lane C with canonical house-rule audit
Integrate verified source and data progress; exclude unproven COMMON ownership, held UB/asm forms, and address-named data credit. Stable sweep: 23 exact functions gained, zero lost.
2026-09-22 23:12:40 -07:00
Jonas Volman 6130661c95 Reconcile final Astra campaign (+4073 bytes) 2026-09-20 10:52:50 -07:00
Jonas Volman 389126d5a7 Reconcile Claude two-block exact-match campaign 2026-09-19 13:44:32 -07:00
Jonas VolmanandClaude Opus 5 d6df15102d Wave 1: four functions strict exact (moving, decals, ui_widget, projectiles)
Reviewed reconstructions, each strict exact in its whole-TU gate with
zero inherited losses, guard passing and no new owners:
- _actor_move_initialize: short sense-ray index (as the sibling loop)
  and direct indexed stores instead of per-iteration pointer aliases
- _decal_sprite_get_bounds: edge-relative (0.0f - registration) extents,
  matching the adjacent (x1 - registration - x0) extent spelling
- _search_and_replace: single-exit result instead of an early return
- _projectile_accelerate: rotation axis/magnitude scoped to the spin
  block (reopens its park)

Rejected in review: _render_ui_widgets and _render_ui_widgets_postgame
(exact only with duplicated identical should_render arms).
Stable diff vs 9062b1e96: 23 functions gained, 0 regressions; parks 261.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 11:36:32 -07:00
Jonas VolmanandClaude Opus 5 26601453ef Land the final Tier B wave: three structural park reopens (+477 meaningful)
The owner-authorized final implementation wave worked only the ten Tier B
functions of the research campaign, each a structural defect confirmed by two
independent lenses; census first, five evidence-driven shapes at most, stop at
allocation, scheduling or x87 ties. Three closed, seven did not.

- hud _temporary_hud_draw_reticle: January does a SIGNED `% 16` (`and eax,
  0x8000000f; jns; dec; or -16; inc`) where ours did `and eax,0xf`. NUMBEROF
  yields size_t, so `next_point_index % NUMBEROF(points)` was an unsigned modulo;
  a signed named count NUMBER_OF_TEMPORARY_HUD_RETICLE_POINTS sizes the array and
  bounds the loop. It fixes the type, not a cast. The three point stores become
  one set_real_point3d call (laws_w2 A4).
- weapons _weapon_can_be_fired: single-exit form (A3). It writes `result = FALSE`
  in two arms, which I tested against the identical-fake-branch prohibition: the
  merged `if (age >= 1.0f || chain)` spelling is residual, while January emits a
  SEPARATE physical FALSE exit for the age test (`jne; pop edi; xor al,al; pop esi;
  pop ebp; ret` at 0x35-0x3c) before game_engine_running is ever called. Two
  distinct rejection blocks is laws_w3 A26's admission criterion, unlike the
  rejected _bink_query_analog_controller_buttons, whose edges share one block.
- rasterizer_transparent_geometry _rasterizer_transparent_geometry_initialize:
  single exit `success = success && aux_buffer()`. Semantics are unchanged; the
  error block is the last statement before the call, so the short-circuit sits
  exactly where the early return did.

All three parks removed. Not closed and reported in the wave ledgers:
_path_state_traverse, _flag_update, _bitmap_2d_sharpen, _light_volume_render,
_actor_stimulus_prop_acknowledged, _stack_memory_pool_allocate,
_particle_system_new_particle_jet.

Full ninja, parks 268 active / 0 stale / 0 invalid, stable diff vs
scratch/opus5-next150-before.json: gained 15 / 9,504 padded, regressions 0;
fake_match_scan 0 leads on all three files, matching HEAD.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 08:49:04 -07:00
Jonas VolmanandClaude Opus 5 082f9171b6 units.h/weapons.h: owner prototypes for biped_update callees (bipeds: 1 function strict exact)
Header packet from wave w3 (adversarially verified). bipeds.c called unit_animation_start_action, unit_cause_player_melee_damage, unit_update_animation (units.c owners) and weapon_stop_reload, weapon_prevents_melee_attack (weapons.c owners) through C4013 implicit declarations. Their genuine owner prototypes are added to units.h (with a struct unit_animation_update_data forward declaration) and weapons.h. With them, _biped_update (1120) is strict exact: January's case block order (moving arms before idle), the 0.1f*0.1f throttle literal (3c23d70b), and direct stores to player_melee_ticks / player_melee_attack_tick with a short melee_speedup_ticks. The header and source land in one commit because the header alone moves the parked _biped_update hash (the ninja park check would fail on an intermediate commit).

Consumer blast (76 units compiled H vs P, including units.c, vehicles.c, weapons.c): only bipeds::_biped_update and the non-exact unparked physics::_physics_update_old hash changed. Live tree: full ninja + whole-board stable sweep +1 gained / 0 regressions; park removed; parks 284/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 13:03:31 -07:00
Jonas VolmanandClaude Opus 5 d792053746 projectiles: 1 function(s) strict exact
Wave w3 landing, adversarially verified. park reopens: _projectile_aim_ballistic. Full ninja build and per-function stable_verdicts sweep: 0 regressions. 1 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 13:01:58 -07:00
Jonas VolmanandClaude Opus 5 71e4a5a771 weapons: retain verified credible source at zero credit
Packet P2 dependent: write the previously unwritten _weapon_place (208/4 fuzzy, sha-only residual from weapon_index/EBX liveness) using the scenario_weapon_datum owner type: clamp magazine 0 rounds to the definition maxima, set at-rest / cannot-be-garbage / does-not-accelerate flags, lift a non-at-rest weapon by 0.05. Zero strict credit. Full ninja build and stable sweep: 0 regressions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 09:02:41 -07:00
Jonas VolmanandClaude Opus 5 b929ac2336 weapons: 1 function(s) strict exact
Wave w1 landing, adversarially verified. exact: _animation_update. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:51:05 -07:00
Jonas VolmanandClaude Opus 5 4060ae876b weapons: guard the overheat divide first; weapon_trigger_fire exact
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 21:15:16 -07:00
Jonas VolmanandClaude Opus 5 f94f6d7db8 weapons: restore the trigger/magazine state graph; 22 functions exact, trigger fire graph fuzzy
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:47:37 -07:00
Jonas VolmanandClaude Opus 5 a7d0d43883 Declare the weapon trigger graph's cross-object callees in their owner headers
actor_firing_blindly (actors.h), player_aim_projectile (aim_assist.h), projectile_kill_tracer (projectiles.h), unit_adjust_projectile_ray (units.h) and the remaining weapon datum flag bits. Removes the verbatim duplicate collision_surface_polygon prototype from collision_bsp.h; without that cleanup the two added declarations regress units::_unit_preprocess_node_orientations (declaration-count sensitivity, bisected). Full build with the weapons body: 0 regressions, parks clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:47:36 -07:00
Jonas VolmanandClaude Opus 5 f193dbbc8a weapons: write weapon_aim exact
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:19:54 -07:00
Jonas VolmanandClaude Opus 5 12e2952207 Declare weapon_aim and weapon_estimate_time_to_target in weapons.h
Header prerequisite; zero credit. weapons.h is the genuine owner of both
public weapons.c APIs. weapon_estimate_time_to_target is already defined in
weapons.c; weapon_aim is January's public _weapon_aim. Signatures follow
January's call sites in actor_combat_update (nine-argument weapon_aim pushes
with the linear flag read back; three-argument estimate) and the HCEX DIA
widths recorded in actor_combat_obj_caller_closure_api_boundary_20260905.md.

Consumer audit: 19 direct includers (actors, actor_combat, aim_assist,
game_engine, game_engine_ctf, game_engine_oddball, players, player_control,
first_person_weapons, hud, hud_draw, hud_weapon, interface, weapons, objects,
object_types, bipeds, units, unit_scripting_commands). Full shadow build
passes; strict stable diff against the merged tip: 0 gains / 0 regressions;
parks 465 active / 0 stale.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 17:39:17 -07:00
Jonas VolmanandClaude Opus 5 7b6bbfbb7a Reconstruct the projectile update, collision and detonation graph
+3 strict exact functions / 1,168 padded bytes: _projectile_set_action (32),
_projectile_effect_new (96) and _projectile_detonate (1,040), all previously
unwritten and emitted by their genuine January callers with the static names
from 2364150f9. Three previously unwritten bodies land as zero-credit fuzzy
source: _projectile_update (4064/179 vs 4064/179, allocator/frame-order tie),
_projectile_collision (2928/100, x87 home tie) and
_projectile_collision_test_line (496/10 vs 512/10; January's inline
point_from_line3d expansion would emit a forbidden COMDAT, so explicit math is
used).

The TU-private runtime projectile representation is preserved and no public
projectile_datum field or header changed. TU-local enums carry disclosure
comments, and the unreachable collision default uses match_vassert
(byte-identical). Adversarial review accepted all six; the three parks are
unchanged. projectiles: 24 exact / 6 residual / 0 unwritten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 16:15:44 -07:00
Jonas Volman 5d3444f799 Reconcile eighth 10K exact source batch 2026-09-13 02:47:59 -07:00
Jonas Volman d6250fa794 Reconcile sixth 10K exact source batch 2026-09-12 12:36:44 -07:00
Jonas Volman a565219da1 Reconcile fifth 10K exact source batch 2026-09-09 22:29:33 -07:00
Jonas Volman 7a1d0d91d7 Finalize fourth 10K reconciliation batch 2026-09-09 18:16:10 -07:00
Jonas Volman 9ed58a0190 Reconstruct projectile runtime cache callbacks 2026-09-09 16:05:12 -07:00
Jonas Volman c0673114e4 Match weapon function exports exactly 2026-09-09 11:53:29 -07:00
Jonas Volman 82330421ff ai: reconcile infection ballistic jump owner 2026-09-09 09:40:14 -07:00
Jonas Volman c2561af50c Reconcile Fable inventory pickup and clean hull geometry 2026-09-06 00:33:07 -07:00
Jonas Volman 58618a7909 Complete player control input cluster 2026-09-03 05:46:48 -07:00
Jonas Volman 94de711dc1 Reconstruct remaining actors functions 2026-09-02 21:18:27 -07:00
Jonas Volman b1937646af Use authenticated weapon trigger flag terminator 2026-09-02 04:42:31 -07:00
Jonas Volman dfbbe1f2aa Recover temporary HUD draw exactly 2026-09-02 04:42:30 -07:00
Jonas Volman 34719b84f4 Reconstruct and park complete item update 2026-09-01 22:36:18 -07:00
Jonas Volman c968a9d9dc Match safe weapons reconstruction trio 2026-09-01 17:20:24 -07:00
Jonas Volman 0ff4d41b01 Reject weapon residual with surplus COMDAT owner 2026-08-31 20:42:14 -07:00
Jonas Volman 1b25a20dde Reconcile safe TIFF, LRUV, camera, and weapon progress 2026-08-31 20:42:06 -07:00
Jonas Volman 4277f892c1 Admit audited Claude reconstruction gains
Retain 18 strict exact-function gains across Actions, Actor Combat, Decals, Game Engine, Object Lights, and Bipeds after removing donor bodies that regressed exact objects, emitted unowned code, or violated source-credibility rules. Name authenticated private symbols, move declarations to owner headers, record honest residual parks, and preserve units.obj at 189/189.
2026-08-31 20:42:01 -07:00
Jonas Volman aaff13666f Audit Claude wave and admit provenance-safe progress 2026-08-31 16:48:01 -07:00
Jonas Volman 9f74e9937f Import 909 authenticated January and HCEA symbol names 2026-08-31 16:11:03 -07:00
Jonas Volman 179ea4a366 Recover small actor bitmap biped and weapon owners 2026-08-31 11:53:54 -07:00