Commit Graph
1773 Commits
Author SHA1 Message Date
Madison 0b636ed5b6 Show the body in vehicles, its hands on the controls (headset-unverified)
In a seat seen from it (vr.vehicle_view "first_person"), vr.body now draws
the player's body as the game seats it, with only the head and neck taken
away: its own animation has the hands on the Warthog's wheel (turning with
the steering), on the turret's handles, on the Banshee's controls. The
view rides at its head, so its shoulders sat inside the near plane, cut
into flat shards across the view: the chest and all on it go back 12 cm
and down 4 cm (along the way the body faces, from its shoulders, so a
gunner's follows the turret), each arm reaches from its moved shoulder to
where the animation had its hand, elbow bent as before, and the hands are
put back as animated.

Dumps on the device, driver and gunner of a Warthog (b30) and a Banshee's
pilot (b40), looking down: the arms reach the wheel, handles and controls,
the chest and legs below, the shoulder shards gone but for a small flap at
the view's lower corner.
2026-10-04 00:06:47 +09:00
Madison 6eaf8e92e5 Mask each eye's hidden area, and time the GPU's frame from timestamps
At 1.5x the GPU needed 11.5 ms a frame (timestamps, vr.timing_gpu_stamps),
over 90 Hz's 11.1, almost all of it the eyes' pixels. The runtime's
visibility mask (XR_KHR_visibility_mask, 15.6% of each eye's image on the
Frame) is now drawn first in each eye's pass at the near plane, black, so
the scene is not shaded there (vr.visibility_mask, on). Two things it took:
the device binds its target and viewport lazily, so the mask binds the
eye's first (halo_vr_bind_current_target); and its depth goes through the
position, not gl_FragDepth, which turned Adreno's early depth culling off
for the rest of the pass (it saved 0.3 ms that way, 1.5 ms this way).

On the device in a30 at 1.5x: the GPU's frame from 11.5 to 10.0 ms (the
eyes 4.4/5.1 to 3.6/4.1), 85.5 fps with 45 misses in 10 s to 89.4 with 2
to 5. Cutscenes (the 3D screen, not masked) hold 78 to 89.

Also: vr.timing_gpu_passes (each pass waited for; Zink's glFinish costs
too much for it to mean much), glQueryCounterEXT and
glGetQueryObjectui64vEXT for the guest, the mask's share logged.
2026-10-03 21:49:13 +09:00
Madison a93462a29e Offer the body as legs or torso, chosen in the VR settings (headset-unverified)
vr.body is now "off", "legs" (the hips down: all above the spine scaled
away, set 5 cm behind the eyes) or "torso" (the chest down, 10 cm behind
and 15 cm below, as before), and BODY on the VR settings' second page sets
it, taking effect at once. Looking down, the legs alone have nothing near
the eyes (no shards, no collar), though from above the hips' top hides
much of the legs; the torso shows the chest armour and a dark collar.
Dumps only: which reads better worn is for the player.
2026-10-03 20:33:01 +09:00
Madison abad4d7352 Draw the player's own legs and torso in VR, behind vr.body (headset-unverified)
Halo draws no body of the player's own in first person. With vr.body
"legs" (off by default) the eyes' passes draw the player's unit, on foot
and outside cutscenes, from a copy of its bones' matrices: the head, neck
and upper arms (and all under them) scaled away, the body turned to the
head's yaw (as the first-person shoulders now are) and moved under the
head, 12 cm behind the eyes. What the unit carries (its third-person
weapon) is not drawn with it, nor is its shadow. The body's bone names are
logged once, with which are hidden. The head-yaw direction is now shared
with the shoulders (vr_head_yaw_forward). Built only; not yet run.
2026-10-03 20:04:06 +09:00
Madison 3cfa297bde Put both eyes and the quad in one swapchain, acquired once a frame
SteamVR's GL binding makes its own context current for every swapchain
acquire, wait and release (and the game's again after), each a flush,
fences and trace markers in Zink: on the device they were a fifth of the
game thread's cycles. The eyes and the quad (HUD or flat screen) are now
parts of one atlas swapchain, acquired by whichever part comes first and
released as the frame ends; the layers take their parts' rectangles
(halo_xr_info.x, .y). Every layer shown is still drawn the frame it is
shown, as a new image of the atlas is each frame's.

On the device at 90 Hz and 1.0x: a30 play from 10.3 to 7.8-9.9 ms of CPU
a frame, 84-90 to 87-90 fps; a10's opening cutscene at 89-90 fps. Dumps of
a stereo frame (eyes, HUD) and a cutscene frame (the 3D screen's eyes)
show each part where it belongs.
2026-10-03 13:46:09 +09:00
Madison e3a9ce6248 Document sfvr, the turn settings, the settings pages and the perf line (headset-unverified) 2026-10-02 18:17:14 +09:00
Madison 6c031d3024 Document the system layer, quit, settings version and the 72 Hz fallback (headset-unverified)
docs/VR_ARCHITECTURE.md: the View system layer (short press, 1 s, 3 s) and
what a recentre does, the Touch and Index fallbacks, QUIT TO STEAM, the
settings file's version, migration and ranges, the display rate request and
its automatic fall back to 72 Hz (which the doc did not mention), the nine
host imports, and status rows for each of these marked not yet run on the
device, with the standard's items still to do.
2026-10-02 18:07:10 +09:00
Madison 7bbb9ccdc1 Add vr.hud_mode: far, near and leash HUD panels (headset-unverified)
far keeps the HUD as it was (15 m, 10 m wide, head-locked, drawn from the
head). near brings it to 1.5 m, 1.1 m wide (40 degrees), in LOCAL space at
the head's place turned by its yaw and pitch but not its roll. leash holds
that panel level in the room, following the head's position, and eases it
(about 0.3 s) to the head's yaw only once the head is 25 degrees off it;
a recentre or a return from a flat screen puts it ahead again.

vr.hud_distance and vr.hud_width now default to 0, the mode's own, and
override it when above 0. The HUD pass is drawn from the head's place
turned as the panel is (vr_hud_view), with bounds from the same distance
and width in every mode, and the menus' pointer meets the panel where it
is. Documented in docs/VR_ARCHITECTURE.md.
2026-10-02 18:02:18 +09:00
MadisonandClaude Opus 5.5 cff675537d VR settings in the pause menu (untested on device)
When a level's tags load, the VR build adds widget tags cloned from the
solo pause menu's (same font, colours, buttons and boxes): a fifth item,
VR SETTINGS, in the pause list (its button hints move under the mission
objectives to make room), and a screen of nine settings in two columns -
controls, aim, gun hand, turning, room-scale, scope, vehicle view,
steering and cutscenes. A or right steps a setting on, left back, B
returns to the pause menu; the laser pointer clicks them too.

Changes are written into config.toml (config_write_real/_string join
config_write_boolean) and the VR layer takes them up at once
(vr_reload_settings). cache_file_add_tag adds tags made in memory after
a map's own; the buttons' text and changes come through a new game data
input function and two event handler functions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 17:03:30 +09:00
MadisonandClaude Opus 5.5 b5c6ae2a9b Walk the player by walking the room (untested on device)
vr.roomscale (off by default, after the PC mod HaloCEVR's) moves the
player's collision pill each tick by how far the head walked from where
they stand, through collision_move_pill so walls stop or slide it as
walking does. The eyes lean from that standing place blended between its
last two ticks, as the game's camera is, so walking adds no latency and
no judder at the 30 Hz ticks. Vehicles, cutscenes, scripted holds,
death and network games pause it; a jump of over 0.5 m in a tick is
taken up without moving. vr.diag_walk_speed walks the synthetic head for
unattended checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:48:28 +09:00
MadisonandClaude Opus 5.5 e45cf2a637 Point at the menus with the weapon hand (untested on device)
The hand's aim drives the menus' mouse pointer (halo_ui_pointer_update),
on the flat screen or, for the pause menu in stereo, the HUD's panel.
The trigger clicks, the right B goes back, and a dot on the reticle's
layer marks the spot. After the PC mod HaloCEVR's menu pointer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:35:31 +09:00
MadisonandClaude Opus 5.5 b3fd4c345f Float the HUD far off, drawn from the head (untested on device)
The HUD panel defaults to 15 m away and 10 m wide (about 37 degrees, as
the PC mod HaloCEVR's), so the eyes need not refocus between it and the
world. Its pass is drawn from the head's camera with frustum bounds
matching the panel, so nav points and friends' names sit over what they
mark rather than following the hand's aim. The motion sensor turns with
the head too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:33:32 +09:00
MadisonandClaude Opus 5.5 b70ff4cfca Show a zoom in a scope held at the gun (untested on device)
While a hand-aimed weapon is zoomed, a pass between the eyes and the HUD
renders the view along the gun into a corner of the back buffer, sized
to the scope's 768x768 image. It goes through a sight mask (round, or
the sniper rifle's wide one) onto a layer held at the gun, at the PC
mod HaloCEVR's per-weapon offsets. The eyes never zoom: the first-person
gun stays in the hand and the HUD layer drops the zoom mask.

vr.scope and vr.scope_size are the settings; vr.diag_zoom_seconds zooms
unattended for dumps (vr-scope.bmp). The docs now cover the VR controls,
gestures, weapon feel and scope, and credit LivingFray's HaloCEVR for
their designs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:31:34 +09:00
MadisonandClaude Opus 5.5 7c0adfc6d0 Vehicles in first person, steered by the stick (untested on device)
vr.vehicle_view "first_person" (the default) has the director treat every
seat as first person, which hides the player's body, and puts the eyes at
the player's head in the seat (a seat's camera marker is where the chase
camera sits). The view turns with the vehicle's yaw only, the horizon
kept level; a passenger seat facing aside keeps its turn from the
vehicle. The player's own gun is put away in driver and gunner seats.

vr.vehicle_steering "stick" (the default) leaves a driver's facing to the
game, so the right stick steers (and pitches the Banshee) as on a flat
screen while the head only looks; "head" and "hand" steer where you look
or point. Gunners aim with the head relative to the vehicle, so a turret
follows the head without turning the view.

vr.diag_drive_seconds seats the player as the nearest vehicle's driver,
for unattended checks (after cheat_all_vehicles). The headset went
offline before the first vehicle test ran; the build is warning-clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:25:19 +09:00
MadisonandClaude Opus 5.5 972e17d78b Launch from the Steam library; the refresh rate follows the headset
The build is registered on the Frame as a Lepton devkit title, HaloCEVR,
which deploy.sh keeps up to date, so the game starts from the Steam
library without the Mac. SteamVR offers an app only the rate its display
setting is on, so vr.refresh_rate takes the highest offered at or below
it; the docs say where to set 90 Hz.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:49:08 +09:00
MadisonandClaude Opus 5.5 deeba33887 Bring the VR status and measuring notes up to date
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:41:03 +09:00
MadisonandClaude Opus 5.5 ff7365b5d5 Package the OpenXR loader with the VR build only
It is staged in build/android/jniLibs-vr, which only the vr flavour
packages, instead of beside the flat build's libraries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:35:43 +09:00
MadisonandClaude Opus 5.5 c928948b05 Document the VR build's architecture and status
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:29:29 +09:00
MrBruh 4adc3a87a5 Remove matching tooling and HALO_LINUX ifdefs 2026-09-30 21:49:46 +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 51cd4d8b67 Reconcile exact AI actor talk-weight chain (+904 bytes) 2026-09-28 13:41:27 -07:00
Jonas Volman 5a83a7234a Reconcile exact flag update and multiplayer directions with zero losses 2026-09-27 22:29:15 -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 VolmanandClaude Opus 5.5 ef3ec0606c Credit independently verified HS data under approved Q11 model
PD2 from e3c053cd, HS-only append. +53122 raw data+1658 padding=54780, no code/functions/objects. Current provider seals and negative tests pass; full build, stable sweep, parks, admission, 1318 tools tests pass. No scorer upgrade or actions credit.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:29:49 -07:00
Jonas VolmanandClaude Opus 5.5 632bebab28 Reconcile approved main_crash command against canonical
Source from Claude donor d18a7cee; independent stock and W3 builds, full build and stable sweep: +11 meaningful /16 padded Halo code, +1796 data, zero exact losses. 1161 tools tests pass. No declaration-batch or general UB exception.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:15:02 -07:00
Jonas Volman e3aea795e8 Recover private virtual-keyboard helper use and storage 2026-09-27 13:14:25 -07:00
Jonas Volman 25da8a5e32 Restore January water-depth predicate selection in physics 2026-09-27 13:04:02 -07:00
Jonas Volman 30f71413c1 Restore evidenced physics predicates and observer time powers 2026-09-27 12:42:44 -07:00
Jonas Volman 9e851ed4e5 Recover January lift absolute-value operations in physics 2026-09-27 12:25:27 -07:00
Jonas Volman a659684885 Restore two January public BSS definitions with proven owner storage 2026-09-27 12:00:52 -07:00
Jonas Volman ebd24ae1e7 Recover source-backed vector avoidance timer statement without exact credit 2026-09-27 11:44:36 -07:00
Jonas Volman cea8606242 Disclose approved original bitmap pixel bugs without changing matching code
Reconcile frozen donor 1ed5d16d after independent RF-BP evidence review. Correct NUL accounting and unreachable-read wording; keep the historical safe correction preserved but unapplied. All 34 bitmaps functions and 137 nondebug sections unchanged; whole-board 8252 rows/7641 exact identical; 1161 tests pass. No new credit or broader UB exception.
2026-09-27 10:57:22 -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 Volman a2c73dd899 Record object_lights selection proof limits before admission 2026-09-27 04:36:49 -07:00
Jonas Volman a8b2512d63 Admit path_obstacle_avoidance after independent ownership audit 2026-09-27 04:32:47 -07:00
Jonas Volman a567739bfc Restore attested collision_fix_pill static local without exact losses 2026-09-27 04:28:12 -07:00
Jonas Volman ef79aedaba Restore shared plane validator and match collision_move_point 2026-09-27 03:57:22 -07:00
Jonas Volman 3ea3ba1f31 Recover private weapon HUD resolver linkage and exact code 2026-09-27 03:29:51 -07:00
Jonas Volman ecf6572578 Admit hardware bitmaps after source and ownership reconciliation 2026-09-27 03:02:02 -07:00
Jonas Volman 27c9736126 Reconcile hardware bitmap table ownership and structured upload loops 2026-09-27 03:00:10 -07:00
Jonas Volman 7b51e0bac5 Reconcile approved private player API correction and exact debit 2026-09-27 02:50:59 -07:00
Jonas Volman fdf76bd0ca docs: record independently verified bitmap and autoaim closures
Archives 714 meaningful bytes of new strict code, fresh full-board gates, source evidence and failed controls. Qualifies cross-build source inference and blanket Od claims. Whole-object hardware-bitmap admission remains pending; no holds lifted or push performed.
2026-09-26 20:40:39 -07:00
Jonas Volman d946958ec1 docs: archive independent widget and impulse reconciliation
Records 2 canonical gains, 1481 meaningful / 1504 padded bytes, zero regressions, unchanged data and object counts, source-provenance limits and preserved holds. Archives selected donor evidence and fresh canonical verification pins. No publication performed.
2026-09-26 19:35:52 -07:00
Jonas Volman cdf1c42ba6 docs: record independently verified frontier reconciliation
Archive bounded source evidence and canonical section, warning, test and regression checks for actor_path_refresh and display_scenario_help. Distinguish 2024 non-tail-padding bytes from 2048 padded bytes and the frozen scorer delta2029: linear decoding of the actor jump table includes five trailing NOP bytes. No scorer change or new admission exception. Donor remains untouched; nothing pushed.
2026-09-26 15:19:24 -07:00
Jonas Volman 8cda1f91f3 Archive compiler-application evidence and scope the next Opus verifier lane 2026-09-26 12:06:46 -07:00
Jonas Volman 7c0af5f029 Reconcile approved compiler-application code, data and owner repairs 2026-09-26 12:02:50 -07:00
Jonas Volman d890c2db28 physics: reconcile exact vehicle collision helper reconstruction 2026-09-26 01:20:10 -07:00
Jonas Volman 07fa92af69 main: reconcile exact update-time field assignment
Independently reconcile W7 from 26684ca8: +1440 credited/padded bytes, 117 relocations, no new helpers or runtime owners. Retire only main_update_time's park in the same commit. Full build, stable board sweep with zero regressions, ownership/admission, warnings, fake scan and 1161 tests pass. No scorer or header changes.
2026-09-26 01:07:41 -07:00
Jonas Volman a885494045 ai: reconcile actor destination helper recovery and batch proofs
Independently reconcile the +968-byte landing from 455dffad. All seven target-only view casts strip without changing runtime sections; both new helper copies match January and link with selected providers in both orders. Batch: +3 functions, +4208 canonical credited code bytes, +4224 padded, zero regressions; 1161 tests pass. No whole-object or data credit changes.
2026-09-26 00:38:14 -07:00