STEAM-FRAME.md is ANLEITUNG-STEAM-FRAME.md in English; the two link each
other, the README names both, and the release archive carries both.
install.sh speaks German on a German system and English elsewhere.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
./install.sh <disc image or extracted folder> [--no-movies] extracts the
disc with Dolphin's dolphin-tool (the Flathub Flatpak, put into the user's
installation when missing: the system one asks for a password over SSH),
converts it with the converter the release archive now carries, moves the
result to ~/.local/share/GalaxyQuest/game and adds the program to Steam
with steamos-add-to-steam. Tried on the Frame from RMGR01.iso: 2 minutes
including Dolphin, and the same files as the game data converted on a PC.
The guide starts with it, on the Frame or from a PC over SSH.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SteamOS gives a game RLIMIT_NICE 28 (nice down to -8); the launcher takes
it before any thread starts, so every thread inherits it. On the Frame a
chat client in the same cgroup took two cores, and the frame loop missed
up to 67 refreshes in 10 s with its own work late; with the game's
threads at -8 (tried on the running game) one or none.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Cross-build against the Steam Runtime 4 arm64 SDK (build_linux.sh,
cmake/steamrt4-arm64.cmake): the executable sits at 0x98000000 next to
the game's 32-bit window, with the OpenXR loader and jsoncpp beside it
(RPATH $ORIGIN); build_linux.sh also packs a release archive.
- OpenXR on SteamVR: EGL surfaceless through XR_MNDX_egl_enable, the
Frame controller profile (both names), a flick or a wrist turn as the
Wii Remote's shake, the D-pad as look; the refresh rate goes to 120 Hz
through vrcmd where the runtime offers only its current rate.
- Timewarp in the app: SteamVR shows frames that arrive in time as they
were rendered, so at 120 Hz every game frame stood still for two
refreshes while the head turned. The game frame's eyes now go into a
scene set, and every refresh composites the last finished set turned
to its own head pose (timewarp.h, checked by tools/timewarp_test and
by the simulator's PETARI_XRSIM_WARP); sharpening runs once per game
frame; the pacing changes only after a new display period has held.
- Fixes found on the way: libstdc++'s <cstdio>/<cwchar> against the MSL
renames (compat.h), language archives a disc carries damaged (cook.py
takes another language's), host allocations on the DVD and DSP
threads, quitting without waiting on the game's threads, case of two
include names.
- ANLEITUNG-STEAM-FRAME.md: the player's guide in German.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>