Commit Graph
124 Commits
Author SHA1 Message Date
MrBruh e233e1c1bb Fix fifth netcode review 2026-10-01 09:12:07 +13:00
MrBruh 4f3ce00a8e Fix third netcode review 2026-10-01 04:57:51 +13:00
MrBruh 0d548798e5 Fix second netcode review 2026-10-01 03:54:02 +13:00
MrBruh aad8719ffc Fix client flags in the second game 2026-10-01 02:37:43 +13:00
MrBruh e7d1ed3a67 Harden and fix the netcode 2026-10-01 01:22:46 +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 fd8fc72693 Count down the respawn timer on clients 2026-09-30 15:13:55 +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
MrBruh 8fcfe9e653 Finish distributed netcode 2026-09-29 00:27:28 +13:00
MrBruh 391e83b11f Add distributed netcode 2026-09-28 22:27:37 +13: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 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
Jonas VolmanandClaude Opus 5.5 eb0c5a26db Port: keep game_engine_get_place's team mask in range
The 128-bit team mask is indexed by team; a player whose team is not
set (NONE) would read and write outside it, where the 32-bit mask only
shifted. Such a player now counts on its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 10:18:07 -07:00
Jonas VolmanandClaude Opus 5.5 6651db882e Port: raise the game engine to 128 players
Native builds (HALO_LINUX) size the multiplayer game engine for
HALO_PORT_MAXIMUM_NETWORK_PLAYERS; the matching build keeps the January
text in #else branches and stays byte-identical.

- game_engine.c: MULTIPLAYER_MAXIMUM_PLAYERS follows the port limit; the
  postgame statistic buffers hold an entry per player; global_goal has a
  slot per player (slayer kill-in-order uses the absolute player index)
  and the goal loops are bounded by the array instead of the address of
  global_variant; game_engine_get_place uses a 128-bit team mask;
  places past the 16th get code-generated English ordinals in the HUD
  score messages, scoreboard and postgame instead of asserting or
  clamping to "16th"; a free-for-all team is the player's absolute index.
- slayer, oddball, king, race: per-team and per-player score arrays follow
  the port limit (oddball's ball arrays stay at 16); January size asserts
  are kept for the matching build. Race reads the lap flags of the player
  rather than of the player's team index.
- game_allegiance.c: a team past the 10-team table is not its own enemy,
  like teams 0..9, so a free-for-all suicide no longer scores as a kill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 10:18:07 -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 bf937aac0f Batch 1: admit files_windows and objects; five exact functions
- files_windows: _file_get_size strict exact from the /Od single-exit
  result and file_error's named GetLastError() local; park retired.
- objects: Layer 1 helper-provider repair (action_charge, player_control,
  bored_camera, path_obstacles, decals use the genuine real_math.h
  inlines instead of hand-written NODUP copies; every provider row
  unchanged, emitted COMDATs byte-identical to January's selected copies,
  pair links pass both orders) plus the pinned objects_update data entry.
- Exact functions: _dead_camera_new, _actor_perception_refresh_danger_zone,
  _actor_look_idle_find_prop, _texture_cache_steal_memory.
- Zero-credit PDB/HCEX ownership corrections: profile, transport endpoint,
  actor_firing_position, game_engine, real_math, model_animations.

Halo objects 361 -> 363, code +2,769 meaningful bytes, data +1,530,
stable diff +5 functions / 0 regressions, parks 94/0/0, pytest green.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 20:42:50 -07:00
Jonas Volman c6ffbffc77 player profile: restore value-return color API 2026-09-23 15:33:14 -07:00
Jonas Volman 37d513310b Reconcile evidence-backed 10K exact batch 2026-09-19 23:12:42 -07:00
Jonas VolmanandClaude Opus 5 e30b1f3584 Wave 2: nine functions strict exact (players, game_engine, aim_assist)
Reviewed source reconstructions, each strict exact in its whole-TU gate
with zero inherited losses, guard passing and no new owners:
- players: single-case powerup switches with the default camo-regrowth
  cause, a short-index powerup loop, set_action_result single-exit flag,
  the byte-proven vehicle re-fetch in examine_nearby_vehicle (cascades
  examine_nearby_objects through the private register convention)
- game_engine: generate_title_string per-arm usnprintf calls (two
  physical calls in January, matching the sibling team arms);
  should_spawn_player applies the respawn-slot gate once after the
  decision chain (reopens its park)
- aim_assist: compute_attenuation is an external inline COMDAT in
  January (storage class 2); compute_target reads the forwarded
  target->distance and binds the unit definition

Rejected in review: _eat_my_shorts (identical-outcome branch).
Stable diff: 0 regressions; parks 263 -> 262.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 11:32:34 -07:00
Jonas VolmanandClaude Opus 5 aa2ada3f52 Complete game_engine title string body (zero credit) and record wave w3c batch 1
_game_engine_generate_title_string was structurally incomplete (1088/70 against
January's 1152/73) and skipped January's common null-termination tail on an
unrecognised win result. The rewritten single-exit body reaches January's size,
relocation count and frame layout with two team-name wchar_t[8] buffers instead
of the union spelling, and 391/391 instructions with one transposed push. It is
still [sha] residual, so it carries ZERO byte credit; the reopen criterion is in
the ledger.

Wave w3c batch 1 (8 groups, 36,384 spendable padded bytes) landed no strict exact
function. The per-object ledgers record the measured blockers, the rejected
_bitmap_2d_smooth reopen (it loses the exact _bitmap_2d_uncompress_from_mipmap
row) and the proposals raised. Full ninja, parks 280/0/0, stable diff vs
scratch/claude250k-start.json: gained 0, regressions 0; fake scan 0 leads.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 16:25:03 -07:00
Jonas VolmanandClaude Opus 5 4916e70a06 game_engine: 3 function(s) strict exact
Wave w1 landing, adversarially verified. exact: _multiplayer_message; park reopens: _game_engine_get_place, _find_closest_player_index. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0. 2 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:50:57 -07:00
Jonas VolmanandClaude Opus 5 5266233aae game_engine: reopen verify_current_map via find_netgame_flag
Criterion met: the game_engine same-TU call graph is complete (180/180 written). netgame_flag_verify_team_exists uses the single-flag lookup January calls. 1 park removed; +1 exact (640 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:08 -07:00
Jonas VolmanandClaude Opus 5 b510b1d58c Match select_players_to_display
+1 strict exact function, 496 padded / 494 meaningful bytes. The hand-lowered
do/while-plus-goto body is replaced by the natural bounded insertion
algorithm (as in HCEA): no long-lived product temporary (January's 0x244
frame), the outer player_count > maximum_count test keeps the gather loop's
own guard, and the move/append happen inside the search loop before break.
Adversarial review accepted; the four game_engine parks are unchanged.
game_engine: 170 exact / 10 residual.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 15:21:30 -07:00
Jonas Volman a565219da1 Reconcile fifth 10K exact source batch 2026-09-09 22:29:33 -07:00
Jonas Volman fc8b19906d Prepare authenticated HUD renderer APIs and reconcile rasterizer callers 2026-09-04 17:33:19 -07:00
Jonas Volman 01a2daac6d Reconcile limp-noodle collision interfaces 2026-09-02 22:04:26 -07:00
Jonas Volman 7ba0bc934e Reconcile Fable Oddball salvage 2026-09-02 14:45:36 -07:00
Jonas Volman 293d9d0c4d Preserve combined game engine exact schedule 2026-09-02 08:48:25 -07:00
Jonas Volman cd5bed5a8b Salvage and admit Fable game_engine wave 2026-09-02 08:41:09 -07:00
Jonas Volman 2b6d109bc4 Use HUD messaging owner declaration in game engine 2026-09-02 05:42:14 -07:00
Jonas Volman ecb25ee0cd game: reconstruct slayer display formatter 2026-09-01 17:52:15 -07:00
Jonas Volman 0c08a88cd7 game: recover Slayer target and player update packet 2026-09-01 17:20:19 -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 9f74e9937f Import 909 authenticated January and HCEA symbol names 2026-08-31 16:11:03 -07:00
Jonas Volman 8335af1092 Admit authenticated weapons zoom and score helper 2026-08-31 11:30:19 -07:00
Jonas Volman b7381ca187 Restore symbol-backed validator and S3TC types 2026-08-31 04:09:55 -07:00
Jonas Volman d655a7e997 Reject fake inline exactness 2026-08-31 03:34:58 -07:00
Jonas Volman 677d098217 Recover Players callers without codegen steering 2026-08-30 23:42:05 -07:00
Jonas Volman f366c3456b Match game engine teleporter with natural scope 2026-08-30 20:38:23 -07:00
Jonas VolmanandClaude Fable 5 fdb6a89979 Match Units shared-interface package
Authorized three-correction interface package: private
unit_ready_desired_weapon, long animation-impulse formals with the natural
tester scratch, boolean game-engine damaged-player damage type. Six January
owners strict exact on the sole 33-TU emission; Units 174/189 code and
128/129 data; zero inherited losses across the closure.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 12:27:59 -07:00
Jonas Volman 8b7a83037d Remove game engine layout aliasing 2026-08-20 15:39:29 -07:00
Jonas Volman fb5c6a09a0 Correct game engine typed access 2026-08-20 15:16:39 -07:00
Jonas Volman 4e5f17ee63 Recover game engine exact checkpoint 2026-08-20 14:02:31 -07:00
Jonas Volman 322beb9af7 Match rasterized game message 2026-07-26 01:12:16 -07:00
Jonas Volman 0e48862072 Match multiple teams alive check 2026-07-26 01:03:56 -07:00
Jonas Volman 981d758b94 Match place name lookup 2026-07-26 00:48:46 -07:00
Jonas Volman 4a33660bbc Match netgame flag search 2026-07-26 00:20:38 -07:00