Commit Graph
101 Commits
Author SHA1 Message Date
MrBruh 8fb1647e18 Fix weapon swap crash and log spam 2026-10-01 16:20: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
Jonas Volman 6bfd956737 Reconcile approved Halo fidelity packets and bounded data credit
Recover transparent geometry submit (+1,285 meaningful code, zero exact losses); reconcile COMMON ownership and Q10 85+EXT1 credit, actions/main data, and separately disclosed denominator corrections. Preserve canonical-only repairs and all held research. C09 is ordinary disclosed cleanup, not a claim of proven scaffolding intent. Clean rebuild, 1,663 tests, parks, audits, provider links and independent EXT1 check pass. Local reconciliation only.
2026-09-29 13:52:37 -07: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
MrBruh 1bcd57afe4 Merge branch 'bnunu:main' into main 2026-09-28 14:46:17 +13: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 VolmanandClaude Opus 5.5 646da5e6f7 Reconcile RIFF byte-swap statics without an alignment directive
Approved CH-P1 plus private-storage prerequisite from005f965f/af5c0f7b. Eight later-demo-attested names at January offsets, fourth riff_format_info name disclosed as later only; original riff chunk literal unchanged. Removes invented wrapper, aliases, align directive. Fresh resolved bytes/relocations identical; full build/stable/parks/admission,1318 tests pass. Zero credit.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:36:57 -07:00
Jonas VolmanandClaude Opus 5.5 57591011c5 Reconcile AIFF's six attested private byte-swap objects
Approved CG-P105 plus static prerequisite, from2c6b0292/dac1af35. Later demo PDB names disclosed; January offsets/layout align4 independently checked. All resolved bytes/relocations preserved, alignment8 to4 only. Full build, stable sweep zero losses, parks/admission,1318 tests pass. Zero credit.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:34:21 -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
MrBruh b0e3bc96e3 Fix framerate-dependent timing 2026-09-27 19:23:44 +13:00
MrBruh 193ab12a2f Merge branch 'halo-ce-universal/players-128' of https://github.com/bnunu/halo-1 2026-09-27 17:35:31 +13:00
MrBruh 658211a88f Improve performance by 2x to 3x 2026-09-27 16:40:58 +13:00
Jonas VolmanandClaude Opus 5.5 9a376181f5 Port: grow the game state and object pools for 128 players
The Xbox game state (0x345000 bytes at 0x80061000) ends exactly where the
map-linked tag cache begins and has 948 bytes free, so a 128-player
session cannot even allocate its player datums. The native builds now
place a 16 MB game state (CPU 0xFC0000, GPU 0x40000) at 0x81A00000, above
the tag cache and below everything the Xbox memory window hands out
top-down, and grow the pools that scale with the number of players:

- objects: 2048 -> 8192 headers, 1 MB -> 8 MB pool; the garbage limits
  keep January's proportions (5/10/20 % of the pool, 2.5/5/10 % of the
  headers, 75/50/30 active garbage objects per 16 players)
- cluster partition reference lists 2048 -> 8192 (collideable and
  noncollideable objects, lights); a full list drops objects out of
  rendering, collision and sphere queries
- effects 256 -> 2048, effect locations 512 -> 4096
- particles 1024 -> 8192 (render_particles' visible list, filled without
  a bound check, follows), particle systems 64 -> 256, their particles
  512 -> 4096
- contrails 256 -> 1024, contrail points 1024 -> 8192
  (MAXIMUM_CONTRAIL_POINTS stays the pool size for the same reason)
- lights 896 -> 4096, object looping sounds 1024 -> 4096
- cached object render states and rendered objects 256 -> 1024
- script object-list references 128 -> 1024, objects one explosion can
  damage 64 -> 256

The values live in port/linux/include/halo_port_capacity.h, included by
halo_port_limits.h. With 128 player datums the CPU part holds 14,256,908
bytes (2,258,164 free). Saved games and cores grow to 16 MB. Every change
is under HALO_LINUX; the MSVC objects are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 10:18:07 -07:00
Jonas VolmanandClaude Opus 5.5 b9bd0875c1 game_sound: January typed accessor at the raw datum_get sites (zero credit)
The seven raw datum_get(game_looping_sound_data, i) sites become
game_looping_sound_get(i), January's own name (line-282 assert string). The
debug object is byte-identical, and verbatim retail bodies in Oct-2001 2276P
go from 19 to 28 of 32.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 00:11:37 -07:00
Jonas VolmanandClaude Opus 5.5 f7cd2e722e Batch 4a: admit player_ui and sound_manager with their shared-header packets
player_ui (header prerequisite + admission; reviewer-amended):
- game_engine.h: the opaque game_variant view becomes the recovered January
  layout (universal/ctf/slayer/oddball/king/race variant members, HCEX names
  where January's offsets attest them); member renames across the game
  engine variants, network managers and playlist_profile.
- player_ui.h: player_ui_get_edit_playlist_profile returns struct game_variant *;
  ui_widget_game_data_input_functions adopts it (reviewer patch 07 removes the
  two C4133 warnings the worker's packet introduced).
- player_ui.c drops its partial playlist_profile view; symbols.json names
  player1_profile_path; rejection retired; status Matching.

sound_manager (shared header sound_definitions.h, 18 consumers):
- sound_definition_find_pitch_range_by_pitch takes HCEX `short old_range_index`
  with the /Od 0x877810 single-exit body (prototype and definition together).
- update_channel_for_looping_sound (1360) and sound_set_definition_end (208) are
  exact in the /Od-attested shape; 45 static flags per cachebeta publics; parks
  retired; status Matching.

Gate (full ninja, objdiff 3.3.1): Halo objects 375 -> 377; stable diff +2
strict / 1,568 padded, 0 regressions across both header consumer sets; parks
87/0/0; admission 11/0/4/0; fake scan 26 (unchanged); pytest 1157 passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 02:21:50 -07:00
Jonas VolmanandClaude Opus 5.5 2535f91a79 Close five objects after correcting January symbol ownership
Each of actor_types, recorded_animation_definitions,
model_animation_definitions, sound_classes and object_types had strict
exact functions and a .data section byte-identical to January's: same
payload, flags and resolved relocation destinations. But each also had
private symbols whose storage disagreed with January. cachebeta.pdb
publics are the independent truth: none of the corrected symbols is
public, and no other January object references them.

- actor_types: the address-named accessor and table become
  actor_type_definition_get and actor_type_definitions, both static.
  January's own assert strings name the table, and the Halo CE atlas
  names the accessor at the same 0x140-byte span.
- recorded_animation_definitions: byte_swap_recording is static.
- model_animation_definitions: the seven *_animation_list_entries
  arrays are static beside their public animation_list wrappers.
- sound_classes: _code_001b84c0 is sound_class_datum_get (static). The
  atlas mapping is anchored on six exact sound_classes names.
- object_types: bss_00456e98 is processed_bsp_flags (static), the
  object's only file static in HCEX.pdb.
- items: drop the hand-written NODUP valid_real_matrix4x3 and
  valid_real_vector3d_axes3 copies (bodies identical to real_math.h).
  items genuinely uses them, and all 18 items rows are unchanged. This
  lets object_types' candidate-only copies pair-link. All eight
  object_types helper COMDATs are byte-identical to January's selected
  copies.

Five pinned entries in config/semantic_data_matches.json.
- Canonical scorer (objdiff 3.3.1): credits 6,656 data bytes and clears
  5 more revoked admission rows (9 -> 4).
- Pinned objdiff 3.6.0: already fully matched (verified no-ops).
- No code bytes, no config status change.

Verification: full ninja; stable diff vs frozen 8,245-function
baseline 0 gained / 0 regressions; parks 103/0/0; whole-object audit
PASS, PDB-storage 0 disagreements and provider links PASS for all five;
fake-match scan unchanged (0 -> 0) on all six changed sources; pytest
1154 passed; git diff --check clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 14:42:52 -07:00
Jonas Volman b0992d0ebe Admit nine verified Halo object closures 2026-09-23 14:25:38 -07:00
Jonas VolmanandClaude Opus 5.5 22e62492a8 Match game sound, sound manager and codec functions
Lane D refresh packet 2: sound, +5,088 padded bytes strict exact
(9 functions), zero stable-verdict regressions.

- game_sound.c: _compute_sound_obstruction, _game_sound_update and
  _update_potentially_audible_looping_sound exact. Uses the real
  unattached_looping_sound_stop and vector_from_points3d helpers; the
  duplicated `state = active` store in both refresh-state arms is attested
  by the debug build (strip test fails without it).
- sound_manager.c: _refresh_listener, _sound_find_like_channel,
  _sound_refresh_looping (single exit) and _update_channel_for_impulse_sound
  (sound_scale_value helper) exact. The worker's
  update_channel_for_looping_sound rewrite changed behaviour when a next
  definition exists but the permutation chain continues, and both (word)
  cast removals changed NONE from 65535 to -1; those two functions stay at
  baseline.
- sound_dsound_xbox.c: _channel_queue_packet exact (statement order).
- ima_adpcm.c: _decompress_ima_adpcm_audio_data exact (separate
  remaining-sample counter).
- parked.json: unpark the six newly exact parked functions.

Gate: ninja PASS, parks 144 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:52 -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 VolmanandClaude Opus 5 33985aa2a0 Wave 11: two functions strict exact (dsound, bitmap_extract)
- _dsound_initialize: one final success/dispose block instead of four
  per-arm dsound_dispose calls; create_inanity_channel chained into the
  success flag like the channel loops
- _extract_build_texture_pages_by_sequence: begin the selected texture
  page once after the page-selection if/else (park reopen)

Rejected: _player_control_modify_desired_angles (factor order selected
from a 12-order search - operand permutation steering; owner-ruling
queue), _compute_sound_obstruction (new _vector_from_points3d COMDAT,
pending owner ruling), _update_potentially_audible_looping_sound
(duplicated arm stores), _path_avoid_obstacles and
_render_debug_obstacle_path (unauthenticated .bss label names).
Stable diff: 0 regressions; active parks 223 -> 222.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 18:56:43 -07:00
Jonas VolmanandClaude Opus 5 c2593b885a Wave 3: eight functions strict exact (screen_effect object complete)
Reviewed reconstructions, each strict exact in its whole-TU gate with
zero inherited losses, guard passing and no new owners:
- rasterizer_xbox_screen_effect (13/13): complete per-arm shader setups,
  load-before-call locals, January assert texts, PIN clamp; screen_flash
  projection spelling and the defined inverse-pixel default arm
- hs_compile: _hs_parse_begin (per-branch result type; January's extra
  sprintf name argument kept with a BUG comment), _hs_parse_cond_recursive
  (single exit; January's always-true negation test kept with a BUG
  comment, byte-proven and recorded in HCEA)
- geometry: definitions in January object order (assert lines ascend),
  duplicate prototype removed, _get_edge_vertex single exit
- render_cameras: view_to_screen and build_frustum_bounds simplifications
- sound_manager: _sound_dispose_from_old_map loop-exit flag

Rejected in review: _encounter_test_rule (redundant default stores),
_render_camera_mirror (point_from_line3d COMDAT), _sound_set_definition_end
(prototype contradicting its definition).
Stable diff vs 9062b1e96: 0 regressions; parks 255 -> 250.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 13:06:38 -07:00
Jonas VolmanandClaude Opus 5 927d135ecb Recover a missing fade relocation in the looping-sound refresh (zero credit)
Wave n3a targeted the 43 eligible parked rows that still carry a structural gap,
on the evidence that all five wave n1 landings were parks whose recorded premise
did not survive a census. In already-mined units the hypothesis did not pay: no
strict exact function, and the verifiers rejected reopens in s3tc (3),
motion_sensor, bink_playback (2).

Landed at ZERO credit, both strictly closer and both still parked:
- _sound_refresh_looping: the park text blamed a compiler-merged duplicate fade
  call tail. The relocation census refutes that - it was a source defect. Removing
  the fade_in_time phi local recovers January's fourth _sound_start_fade
  relocation, so relocations are now exact at 43/43, size moves 1088 -> 1120
  against January's 1136, and alndiff regions drop 74 -> 37.
- _update_channel_for_looping_sound: size and relocations now both January-exact
  at 1360/61; the residual is [sha] only.

The verifier removed two defective hunks from the submitted refresh body before
accepting; the corrected body is byte-identical to the submission.

Full ninja, parks 274 active / 0 stale / 0 invalid, stable diff vs
scratch/opus5-next150-before.json: gained 7 / 6,832 padded, regressions 0; fake
scan 0 leads.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 23:40:34 -07:00
Jonas VolmanandClaude Opus 5 85984a463a sound_manager: 1 function(s) strict exact
Wave w1 landing, adversarially verified. exact: _sound_new_impulse. 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:08 -07:00
Jonas VolmanandClaude Opus 5 24bf3dfc6c sound_manager: reopen limit_pitch and looping_sound_new exact
A single-exit pitch limiter and a plain for detail loop (January has no guarded do-while; VC7 unroller law) replace the parked forms. Adversarially verified. 2 parks removed; +2 exact (400 padded). Full build of the combined reopen set: 0 regressions, parks 451/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 21:26:09 -07:00
Jonas VolmanandClaude Opus 5 2885ba82c6 sound_dsound_xbox: coordinate-conversion and epsilon macros stage DirectSound float arguments; listener and channel location exact
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 21:15:15 -07:00
Jonas VolmanandClaude Opus 5 98e10ed97c Match sound_definition_promote and source_audible
+2 strict exact functions / 400 padded bytes. sound_definition_promote uses
a single-exit short result with compound field updates in January store
order; source_audible returns its nearest listener index once, with an
else-if mode chain. sound_manager: 53 exact / 12 residual.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 11:03:12 -07:00
Jonas Volman 5d3444f799 Reconcile eighth 10K exact source batch 2026-09-13 02:47:59 -07:00
Jonas Volman 9c9e2a6dd5 Reconcile HS inspect and sound render loop 2026-09-09 07:05:31 -07:00
Jonas Volman 105d9acaac Reconcile 10K exact-byte Claude batch 2026-09-09 00:07:34 -07:00
Jonas Volman 4ebe0ff6ec Reconcile HUD geometry and sound caller graphs 2026-09-08 20:28:22 -07:00
Jonas Volman 303c1d55a7 Reconcile Bink UI network HS and sound graphs 2026-09-08 12:49:14 -07:00
Jonas Volman 0ac2952646 Reconcile preserved Opus PAS caller cluster with verified owner APIs 2026-09-04 18:32:56 -07:00
Jonas Volman 4795da4089 Recover device, input, HUD and game leaves without exact regressions 2026-09-04 15:43:51 -07:00
Jonas Volman b8afb05150 Reconcile scripted music control cluster 2026-09-04 13:39:13 -07:00
Jonas Volman c673081e22 Reconcile game sound impulses with January ABI 2026-09-04 13:28:06 -07:00
Jonas Volman d29b2ee966 Reconcile game sound lifecycle core 2026-09-04 10:20:39 -07:00
Jonas Volman 44844ea2f5 Match scripted game sound controls 2026-09-04 01:03:05 -07:00
Jonas Volman e481d51429 Reconcile sound_dsound_xbox Opus reconstruction
Admit 32 strict-exact functions (+6558 code bytes, +6832 padded) and 317 exact owned data bytes after semantic naming, owner-header, and anti-fake review. Leave four honest residuals unparked.
2026-09-03 23:56:53 -07:00
Jonas Volman a852cbc6c0 Document January sound distance fallback 2026-09-02 20:51:42 -07:00
Jonas Volman 326e55212e sound: reconstruct impulse creation cluster 2026-09-02 20:43:52 -07:00
Jonas Volman 172b3a0bb3 sound: unify class definition across translation units 2026-09-02 20:21:54 -07:00
Jonas Volman 3db8f7be03 sound: reconstruct sound refresh pipeline 2026-09-02 20:03:16 -07:00
Jonas Volman dfb372e2e7 sound: recover sound manager core clusters 2026-09-02 20:03:16 -07:00
Jonas Volman 435e80783d Recover exact UI widget support wave 2026-09-02 07:17:04 -07:00
Jonas Volman 8269a8c0b6 Complete Xbox sound cache reconstruction 2026-09-01 23:29:46 -07:00
Jonas Volman 9f74e9937f Import 909 authenticated January and HCEA symbol names 2026-08-31 16:11:03 -07:00
Jonas Volman 0eda57d633 Integrate audited Claude exact-match recoveries 2026-08-31 05:43:20 -07:00
Jonas Volman b654ee4f9e Recover exact sound sample-rate getter 2026-08-30 02:36:20 -07:00
Jonas Volman c76f7a2872 Complete motion sensor and attest matching leaves 2026-08-28 16:32:33 -07:00