Commit Graph
94 Commits
Author SHA1 Message Date
Stefan MaierandClaude Opus 5.5 b6a943f1a6 Merge upstream 2026-10-10: network version 25, touch controls, in-game settings, FOV options, voice chat, votekick
248 OpenCE commits (network version 25): touch controls and touch menus for
phones, single-player in-game Settings, opt-in FOV/viewmodel settings, voice
chat and votes to kick, lens flare culling, memory leak fixes (render
targets, gamepads, the Android audio stream), profiling builds, the
HALO_ANDROID split into HALO_ARM64_GUEST / HALO_GLES / HALO_ANDROID.

Conflicts and how they were resolved:
- README.md: ours kept whole. Upstream's README changes (portable build,
  profiling builds) went into docs/OPENCE_README.md: upstream's new text
  with our header note, links rewritten to ../ and our "made from your own
  copy" wording.
- port/android/README.md: both merged; upstream's touch, WSL and save
  notes taken, with our application id in every adb path; our VR section,
  signing.properties and wording kept; the stale "How it works" list
  dropped as upstream dropped it.
- Launcher icons (mipmap-*/ic_launcher_foreground.png, art/android-icon.png):
  ours (the Ringfall art). Upstream's helmet monochrome layers,
  drawable/ic_launcher_background.xml and its ic_launcher.xml were left out;
  our ic_launcher.xml, values/ic_launcher_background.xml and
  tools/android_icon.py stay. (port/assets/icon and tools/app_icon.py come
  in for the desktop builds' window icon only; do not run app_icon.py, it
  would write the helmet into the Android resources.)
- port/android/host/host_main.c: both config helpers kept, and upstream's
  emulator write tracking (native_bridge_active); upstream's display width
  block dropped in favour of ours (640 in VR) and its display density for
  the touch controls moved into our flat (non-VR) branch.
- port/linux/game/menu_functions.c: platform_text_field(typing, password)
  from upstream; the VR keyboard launch for text fields kept after it.
- port/linux/game/network_distributed.c: upstream's profile_scope wrappers,
  with network_vr_tick and bots_tick kept in their places.
- port/linux/src/dsound_sdl.c: both (our debug.audio_log, upstream's
  audio.output_device).
- port/linux/src/port_config.c: our temp-and-rename config write kept,
  under upstream's HALO_ARM64_GUEST (it is guest file I/O).
- port/linux/src/sdl_platform.c/.h: upstream's (Android menu pointer from
  the touchscreen, Steam keyboard, scoreboard pointer); our quit marker for
  the Steam Frame launcher, clipboard_seen and VR frame hooks kept. Our
  flat-mouse menu pointer (an emulator aid) is replaced by upstream's touch
  pointer, which also drives the menus on the emulator.
- port/linux/src/d3d8_gl.c: halo_ui_pointer_update is upstream's, with the
  VR controller ray taking over while VR is active (the touchscreen then
  is not the pointer); our persistent-buffer writes kept for stream and
  index uploads, now writing upstream's exact length and under HALO_GLES
  like the code around them (stream_reserve, index_upload, mirror_refresh
  too); multiview uniforms stay under HALO_ANDROID, the counter binding
  under HALO_GLES. Visibility counters: ours kept (the snapshot ring with
  multiview views, host_gl_counters_snapshot) over upstream's per-frame
  glCopyBufferSubData into counter_snapshots: ours reads finished frames
  without stalling and counts both eyes' samples once; upstream's
  desktop query batches come in unchanged.
- port/linux/src/xinput_sdl.c: both (VR controllers and touch controls).
  In VR the touch controls neither show nor act (touch_input_gamepad,
  touch_input_controls, touch move/look skipped); rumble goes to the
  controllers in VR, to the phone otherwise.
- source/interface/first_person_weapons.c: both (VR scope pass check and
  display.viewmodel_visible).
- source/interface/ui_widget.c: upstream's reworked menu targets taken
  (ui_mouse_fit_button_targets, merged rows, widened values), which do
  what our icon_x0 key picking and the 12-unit value arrows did; our VR
  label distance (25) kept, and a VR ray counts as a coarse pointer, so it
  gets the taller legend areas and the widened values (not the merged
  rows: a row's label still presses A). Our join code and VR options
  panels kept; their early return now forgets the frame's targets too.
  The on-screen keyboard: upstream's virtual_keyboard_click for taps and
  the mouse, ours (hover highlights the key) for the VR ray only.
- source/main/main.c: both (VR phases around upstream's profile scopes).

VR guards for new upstream features:
- view_fov.c: display.fov, display.viewmodel_fov and
  display.viewmodel_visible do nothing while VR is active (the headset
  gives each eye's frustum; the weapon is in the hand).
- Touch controls: off in VR (xinput_sdl.c), the menus' touch pointer too
  (d3d8_gl.c); the overlay stays hidden as the game never reports a scene.
- Lens flare culling (744040c8, b1a71709) uses global_window_parameters'
  frustum, which in VR is each eye's (per-eye passes) or the union frustum
  of the multiview centre camera: no change needed.
- In-game Settings: VR options still open with Y on the main and pause
  menus (checked flat with debug.vr_options).
- The back button change (enableOnBackInvokedCallback=false) keeps the
  legacy KEYCODE_BACK path, which targetSdk 35 already had: no change on
  Quest or Frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:51:46 +02:00
Milenko 90f3fdf25f Director debug controls: each variable's own hyper scale
The debug camera controls applied the height variable's hyper-scale
setting to every variable. Camera debugging only.

(cherry picked from commit 3db16e4499c7aa8ee9c82f28c3454009f877bccc)

(cherry picked from commit a5074861b2f9682e791adfd587c3a2b43e2f6daf)
2026-10-10 13:59:04 +13:00
Stefan MaierandClaude Opus 5.5 a167de3873 Merge upstream 2026-10-08: network version 24, Custom Edition maps, positional stereo sound, fixes
Conflicts:
- d3d8_gl.c, xgpu.h: upstream's own snapshot ring for the visibility
  counters left out for ours (host_gl_counters_snapshot, the same idea,
  tried on both headsets, which also halves multiview's counts; its copy
  already has the memory barrier upstream added); both declarations kept.
- rasterizer_xbox.c: the mirrored skinning's winding and upstream's
  many-node matrices, both.
- main.c, network_server_manager.c: both (bots' machines and a lone host
  may count down).
- android_build.py: the OpenXR loader and upstream's SDL mouse patch
  (another SDL file than ours), both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 21:01:08 +02:00
MrBruh 8fca9ef427 Mark the short camera track fallback as the port's
#152's fallback gets a port: comment and includes cseries/errors.h, as the rest of source/ does, and clamps t with PIN; a pitch not a number still samples the first point.
2026-10-08 15:04:27 +13:00
justinfilip 8fccabed25 Keep a following camera valid when a track has fewer than four control points. 2026-10-07 11:01:36 -05:00
Stefan MaierandClaude Opus 5.5 fc2b6551ca Merge upstream (OpenCE 13c14df9): online co-op campaign, online split screen, network version 16
Upstream's online co-op (network_actors.c, network_coop.c) ticks beside the
VR port's VR relay and bots; its message types end at 77, below the VR
port's from 240. The look and move flags the action test reads moved into
player_control_action_test_note: the head's turning goes there too. The
vertex shader's screen-space undo is upstream's on every platform now, with
the multiview eye offset after it on Android. The APK carries upstream's
brokers.txt beside the FDM layer stub; the updaters keep the VR port's own
repository (upstream's now points at OpenCommunityEdition/OpenCE).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:22:05 +02:00
MrBruh 7d0e587c51 Co-op review fixes 2026-10-05 21:02:04 +13:00
xshxdex98 8194c5a00b Online co-op: play the campaign together over LAN and the internet
Hosting a co-op level from the Map screen (CO-OP CAMPAIGN, a level and its
difficulty, then Server Setup) makes a network game on the campaign map
with no game engine, which is what co-op is. Only the host runs the
scripts and the AI; port/linux/game/network_coop.c sends clients what the
scripts do (cutscenes, camera, fades, HUD, sounds, devices, named objects,
animations), and network_actors.c drives the host's AI units on every
machine. Players spawn beside each other, respawn beside a safe teammate,
and spectate while dead or waiting. Skipping a cutscene is a vote.
Players can join a game in progress at any time.
2026-10-05 00:31:30 -05:00
eltanschauung fb1abedd8b Keep dead camera target when no living player exists 2026-10-04 20:32:59 -04:00
Stefan MaierandClaude Opus 5.5 02316c7f35 Merge upstream (92 commits) into the VR port
Upstream's own fixes replace two of ours: reclaiming ART's idle large
object space for the guest's fixed ranges (host_memory.c), and the audio
callback's gathering (host_sdl.c). Its consolidated headers take the VR
declarations (model_animation_definitions.h, render/render.h). The
updaters look at this repository's releases: the original's builds, made
without VR, must never replace this one (they share the package name).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:30:05 +02:00
MrBruh 71ae1f47bc Fix seventh netcode review 2026-10-01 12:03:52 +13:00
Stefan MaierandClaude Opus 5.5 8756b1ba22 VR: raise the eyes over a hull by set heights only
The collision model's top lifted the Scorpion's driver onto the turret as
it swung over him (screenshots); it never caught anything the set heights
did not.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:33:14 +02:00
Stefan MaierandClaude Opus 5.5 043f2c6db6 VR: a Warthog's driver sits nearer the windscreen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:28:49 +02:00
Stefan MaierandClaude Opus 5.5 bcc40772f8 VR: the Scorpion's driver sees out over its hull
Like the Ghost's: the driver sits down in the hull (screenshot: the
compartment's inside). The raise applies to a vehicle's driver and gunner
only; riders on a tank's back sit on it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:27:33 +02:00
Stefan MaierandClaude Opus 5.5 f1b9dbeea8 VR: apply the hull's eye raise in the seated camera
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:06:19 +02:00
Stefan MaierandClaude Opus 5.5 57ecc722c3 VR: no own body in a Ghost, a Banshee or a Covenant gun
Their rider bends down into the vehicle, and the eyes at his head looked
into his own shoulders.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 14:59:55 +02:00
Stefan MaierandClaude Opus 5.5 4ab1661ac5 VR: see out over a Ghost's, a Banshee's or a Covenant gun's hull
Their riders sit down in the hull, drawn from behind in the game; from the
rider's head the view met its inside. The eyes now rise to above the hull's
top over the head and up to 50 cm ahead of it (a downward ray against the
vehicle's own collision model), plus vr.enclosed_seat_clearance.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 14:52:35 +02:00
Stefan MaierandClaude Opus 5.5 2c32a7032c VR: own body at the wheel and the gun, gunner view back, clearer glass
Seated as a driver or gunner, the player's body is drawn (its hands on
the wheel or the gun's handles, as the seat animates them), its head
shrunk to nothing out of the eyes' way. A gunner's view is moved back from
the gun's sights (vr.gunner_camera_back). Glass tints and reflects half as
much (vr.glass_strength), which up close hid the view through the
Warthog's windscreen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 12:50:55 +02:00
Stefan MaierandClaude Opus 5.5 59b76697d2 VR: seated camera at the rider's head; X is the action button
Seated, the first-person camera stood where the seat's chase camera turns
about (the vehicle's middle, low); it is now at the rider's head marker.
X now does what the game's prompts say it does (action, reload); B takes
the flashlight (tap) and grenade switch (hold).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 12:29:08 +02:00
Stefan MaierandClaude Opus 5.5 e9e5984e11 VR: vehicles in first person, steered with the right stick
Seated, the view stays behind the player's own eyes (vr.vehicle_first_person)
and turns with the vehicle, smoothly between ticks (its interpolated
heading); the head looks around freely, and recentring faces the vehicle's
forward. A driver who steers by facing (jeep, boat, plane, scout, fighter)
steers with the right stick: aside up to vr.vehicle_steer_degrees off the
heading, up and down for pitch (vr.vehicle_pitch_degrees). Gunners, the
tank's driver and passengers aim with the right controller, and turn in
the seat with the stick. The crosshair and its distance follow the
vehicle's aim. While the vehicle turns the player, the eye images darken
from their edges (vr.comfort_vignette, host_xr_set_vignette).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 11:41:49 +02: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
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 30f71413c1 Restore evidenced physics predicates and observer time powers 2026-09-27 12:42:44 -07:00
MrBruh b0e3bc96e3 Fix framerate-dependent timing 2026-09-27 19:23:44 +13:00
Jonas VolmanandClaude Opus 5.5 b9a8d587a0 Batch 3: admit twelve objects; four exact functions; verified storage and data fixes
Objects admitted (Halo 363 -> 375), each with an independent adversarial review:
units (first-party names incl. the reviewer-corrected unit_vectors_are_valid, 49
static flags, '$'-defect data entry), collision_debug (/Od helper calls),
render_objects (b807f9f6 provider packet), editor_flying_camera
(_editor_camera_set_position_and_roll 432, storage + grouped entry re-pin),
rasterizer_xbox_shadows (shadow_model_draw 688), cache_files_windows
(open_cache_files 752), light_volumes (light_volume_render 912, reviewer-amended
/Od declaration order), actor_firing_position, path, biped_limp_noodle (HCEX file
statics), leaf_map and model_animations (/Od helper calls replace hand expansions).

Zero-credit/data: path_structure_bsp HCEX tables (+200 data), hud_nav_points
storage, first_person_weapons patch A (park re-baselined).

Gate (full ninja, objdiff 3.3.1): stable diff +4 strict / 2,784 padded, 0
regressions; parks 89/0/0; admission 11/0/5/0; fake scan 26 (new lead is the
/Od-attested empty then-arm in the still-parked fpw update); pytest 1157 passed;
diff --check clean. Ledger: docs/object_matching_logs/claude_fifty_objects_20260925.md
(adds the Layer 2 owner-ruling disclosure, tallies and held items).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 23:53:28 -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 5019c1861a camera: recover private editor state and three exact functions 2026-09-23 16:51:11 -07:00
Jonas Volman b0992d0ebe Admit nine verified Halo object closures 2026-09-23 14:25:38 -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 37d513310b Reconcile evidence-backed 10K exact batch 2026-09-19 23:12:42 -07:00
Jonas VolmanandClaude Opus 5 06e5f0e5fa Wave 15: six functions strict exact (hs, animations, stimulus, caches)
- _hs_compile_and_evaluate: calls the real static hs_compile_source_error
  helper with no source file instead of a hand-written copy (January
  inlines the helper here, leaving its dead loop's alignment pad), reuses
  the expression parameter; formerly recorded as unreachable
- _inverse_kinematics_adjust_matrices: named squared upper-arm length and
  consistent basis-row locals (park reopen)
- _actor_stimulus_prop_acknowledged: MAX clamps, DATUM_INDEX_TO_ABSOLUTE_INDEX,
  January's ternary polarity (park reopen)
- _lrar_allocate: found-flag loop allocating inside the fitting arm, as the
  sibling _lra_allocate (park reopen)
- _prop_add: reads the dead field back and binds the actor lookup
- _director_script_camera: real director_set_camera helper call and the
  admitted bare director_get validation (park reopen)

Stable diff: 0 regressions; active parks 213 -> 209.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 20:44:59 -07:00
Jonas VolmanandClaude Opus 5 0e65f0f8be Wave 8: three functions strict exact (main, observer)
- _main_load_last_solo_map: MIN clamp on the terminator index (house rule 18)
- _main_get_window_count: named single-window predicate and a PIN of the
  local player count (reopens its park)
- _observer_update_command: timer/last-timer/flag pointer walk mirroring
  the exact sibling observer_update_velocities (reopens its park)

Rejected: _observer_update_positions (same-value carrier copy of
remaining_time), _main_crash (January writes through a null pointer),
_effect_generate_part (mismatched csprintf varargs).
Stable diff: 0 regressions; parks 236 -> 234.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 15:23:27 -07:00
Jonas VolmanandClaude Opus 5 d83babe7bc director: 1 function(s) strict exact
Wave w2 landing, adversarially verified. park reopens: _director_update_controls. 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 07:39:36 -07:00
Jonas VolmanandClaude Opus 5 1a8ceaf441 editor_flying_camera: 1 function(s) strict exact
Wave w1 landing, adversarially verified. park reopen: _editor_camera_orbiting_update (adds the genuine director.h include). The verifier-accepted split variant (_editor_camera_update reopen and three parked-body refreshes) needs a names-only symbols.json change and is held for the config packet. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0. 1 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:50:54 -07:00
Jonas VolmanandClaude Opus 5 32009865ac observer: name observer tuning tables; write collision_test_differential and reopen six observer functions exact
symbols.json names the observer maximum-acceleration table, sine_region_angle and the parameter / derivative real-count tables (HCEA names, static; separate statics proven by the 2-byte alignment gap). Writes the unwritten collision_test_differential and reopens collision_test_with_t (single result flag), check_penetration, postcheck and the acceleration/velocity/polynomial integrators. 6 parks removed. Adversarially verified in wave D; full build of the combined object_lights + observer set: 0 regressions, parks 391/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 23:11:33 -07:00
Jonas Volman d6250fa794 Reconcile sixth 10K exact source batch 2026-09-12 12:36:44 -07:00
Jonas Volman a7a32f6c75 Reconcile Claude owner packets and add 10K exact bytes 2026-09-08 03:21:09 -07:00
Jonas Volman 3ddb4158e7 Restore natural math helper ownership and verify Observer shared schema 2026-09-05 17:58:32 -07:00
Jonas Volman 8b49dbf795 Reconstruct Director frame update cluster 2026-09-03 05:03:21 -07:00
Jonas Volman 85e9907225 Reconstruct Director camera loading 2026-09-03 04:37:39 -07:00
Jonas Volman 7055eee35a Match and reconcile main loop
Reconstruct _main_loop from the exact Claude packet using semantic helper names, authentic types, and owner-header prototypes. Keep collision timing declarations behind the collision debug/log boundary so units.obj remains exact.
2026-09-01 17:20:02 -07:00
Jonas Volman 52d3d0ca2e Reconstruct particle rendering pipeline 2026-08-31 23:06:04 -07:00
Jonas Volman c63cce99ae Reconcile safe wave with frozen residual rulings 2026-08-31 20:42:11 -07:00
Jonas Volman 1b25a20dde Reconcile safe TIFF, LRUV, camera, and weapon progress 2026-08-31 20:42:06 -07:00
Jonas Volman 9f74e9937f Import 909 authenticated January and HCEA symbol names 2026-08-31 16:11:03 -07:00
Jonas Volman 11ca9bb2f5 Correct thread ownership and recover camera names 2026-08-31 12:46:57 -07:00
Jonas Volman ee62f36f1f Integrate audited Claude small-object recoveries 2026-08-31 06:55:10 -07:00