Commit Graph
12 Commits
Author SHA1 Message Date
Madison f3773cb04d Fix LAN host slots and OpenXR loader for paired Android builds 2026-10-11 14:18:03 +09:00
Madison 4fb7428b9e Frame map test and VR_ARCHITECTURE.md: right stick Y unbound, D-pad weapons and laser, flat screen view as a setting, the menu tile (dev only) 2026-10-05 16:48:03 +09:00
Madison aacf6e5a0f Frame diagnostics: layer poses of the menu laser in the dump, composite_menu.py; status after the Steam-in-place, laser and 120 Hz runs (dev only) 2026-10-05 16:47:07 +09:00
Madison 77150eeb57 Frame diagnostics: thread CPU and waits in [vr-perf], load and exit_seconds keys, perf_run.sh (dev only)
[vr-perf] now has the game thread's own CPU time per frame (CLOCK_THREAD_CPUTIME_ID), the
time in xrWaitFrame and in acquiring the swapchain image (with its wait), and the eye size, so
the split between work and waiting is there (lessons 39, 50, 62). The load key loads a save
instead of starting a map, exit_seconds leaves after that many seconds of rendering.
perf_run.sh does one run and adds the Adreno's time at each frequency over it.
2026-10-05 16:47:07 +09:00
Madison 7552d2c312 deploy.sh: don't launch while the headset isn't in standby, and say Steam is used in place (dev only)
SteamVR logs standby; with nobody wearing it, it goes to standby a few seconds after an app
closes. If it doesn't within two minutes the script refuses to launch (FRAME_SKIP_WORN_CHECK=1
overrides). The --data help says the copy is only for when Half-Life isn't in Steam.
2026-10-05 16:47:07 +09:00
Madison 3372d5af6e Frame diagnostics: aim the synthetic hands, show the pointer in the dump, level-HUD analysis (dev only)
diag_hand_yaw and diag_hand_pitch turn the synthetic hands' aim from the head's,
so the menu laser can be pointed. vr-state.txt says where the cursor is (u, v and
the pixel in the screen image). analyze_roll.py compares HUD-on and HUD-off dumps at
different rolls and says how far the world and the HUD turned. Host test for the
laser maths (ray against the quad, beam and dot poses).
2026-10-05 16:47:07 +09:00
Madison a5c1c07503 Frame diagnostics: diag_roll, diag_press, diag_gap and a log line per button (dev only)
diag_roll tilts the synthetic head, to check the HUD stays level. diag_press
holds buttons down for a while ("A@300+30, LG@400+20", frames after the
map starts) so the controller map can run with nobody holding controllers:
the map code runs when there are presses to come, with the runtime's own
inputs under them. diag_gap sets how far apart the synthetic hands are, for
the two-handed hold against the grab. The map logs each press and what it
made of it. A host test builds the effective map table for both hands and
every context and fails on an input doing two things, an unlisted alias or an
action nothing reaches.
2026-10-05 16:47:07 +09:00
Madison ee43034963 Frame diagnostics: eye poses and traced depth probes in the dump, cmd key (dev only)
vr-state.txt now has each eye's position and rotation in head space,
and a grid of probes: rays from the left eye through pixels of the
image, traced into the world, with the depth along the view axis and the
disparity a correct stereo pair should show there. analyze_stereo.py
block-matches the right eye at those points and prints predicted against
measured (numpy and pillow in a venv). A new cmd key runs console commands
about five seconds after the map starts, for cheats, cvars, giving the
suit to get a HUD.
2026-10-05 16:47:07 +09:00
Madison ad16b48b1f Fetch the git-ignored models and sounds from the v1.7.4 release (dev only)
The repo ignores *.mdl, *.wav and the loading backgrounds, so a build from
source had no hands or replacement weapons. The script copies only the
missing, ignored files out of Team Beef's release APK, hash pinned.
2026-10-05 16:47:07 +09:00
Madison 208cb7d1c7 Frame diagnostics: read the eyes with the driver's GL, more state in the dump (dev only)
The readback used gl4es's glReadPixels, which doesn't know the swapchain's
framebuffers. It uses the driver's now. The dump logs the driver's
framebuffer bindings, viewport and scissor, the share of pixels that
aren't black and the connection state, and vr-state.txt says whether a map
is running. New probe key: clear each eye to a flat colour before the dump,
to tell a broken readback from a broken picture. [vr-perf] shows game=active
once a map is running.

VR_ARCHITECTURE.md has what the first unattended runs found.
2026-10-05 16:46:58 +09:00
Madison bd8d932baf Add deploy script and host tests for the Frame build (dev only)
deploy.sh builds nothing, it installs over adb to Lepton Development,
registers the persistent Steam title, copies the game data, sets the
vr-diag.ini keys, pulls the dumps and the log. It checks the Frame
booking first and won't install or launch unless the holder is the name
passed with --lock-holder.

The host tests check the binding tables against each profile's
component list, that the action names are unique, the ini parser, the
BMP writer and the booking check.
2026-10-05 16:46:57 +09:00
Madison e6b3e26003 Frame: make the menu tile with the Frame's button help at build time
make_frame_tile.py reads the release tile from the git-ignored
assets/background, takes the Quest help off it, draws the Frame's, and
writes it into build/frame-assets. The frame build type's assets override
the release tile with it, a gradle task runs it before mergeFrameAssets.
Quest and Pico builds are untouched. If the tile or Pillow and numpy are
missing, the Frame build goes on with the release tile and a warning.
2026-10-05 16:46:57 +09:00