port/third_party/sfvr is a copy of ~/code/sfvr's include/ and src/ (VERSION
holds its commit, ad2f545), never edited here. The VR guest build compiles
its six .c files for the ILP32 guest with the project's ABI flags (and
-Wall -Wextra, which they pass clean); nothing uses them yet.
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>
configure.py --vr builds com.halo.decomp.vr: the host gains host_xr.c,
which owns the Khronos loader (1.1.63, fetched from Maven Central and
checked by SHA-256), the instance, a GLES session on the game's EGL
context, two eye swapchains and a quad, and controller actions for the
Steam Frame, Touch and Index profiles. The guest drives it through seven
imports (host_imports_vr.list) with fixed-layout structures in
halo_android_abi.h, checked on both ABIs.
vr.probe_seconds shows dim colours in each eye before the game starts.
On the Steam Frame (Lepton) it reaches SYNCHRONIZED and holds 72 frames
a second; the Frame controller profile binds.
SDL3's Java side assumed a clipboard service, which Lepton lacks; a
patch (port/android/patches) applied at configure time checks for it.
The update provider's authority follows the application id, so the
flat and VR apps install side by side.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The NDK's host prebuilts live under darwin-x86_64 on a Mac (universal
binaries), and the case-insensitive file system made StdDef.h include
itself instead of musl's stddef.h; include_next skips this directory.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>