Standalone Quest parity on PC
- Ported the portable gameplay and rendering fixes from the current public
standalone Quest source kit while retaining the PC renderer, OpenXR runtime,
DLAA/FSR paths, and the newer PC cutscene presentation safeguards. - Added the experimental immersive HUD preset: the minimap, player status and
clock can live on real stereo wrist panels with independent hand, side,
on-foot/car/bike placement and scale calibration. The Classic head-locked HUD
remains the default, and every panel fails open to its Classic copy if its
render target or tracked-hand anchor is unavailable. - Shipped the maintainer-tested Immersive HUD placements as the fresh preset
defaults. Motorcycle panels now have a shared global layout plus optional
per-model overrides created only when calibration is changed while seated;
resetting a model returns it to global inheritance. - Immersive motorcycles now accelerate with the right trigger by default. The
advanced physical wrist-twist throttle remains available through a strongly
highlighted Vehicle Settings row, avoiding the appearance of broken controls
for players who do not know the gesture. - Updated Modern vehicle and motorcycle view/handle baselines, including the
PCJ600 and Sanchez, without replacing the PC one-hand steering solver. - Head-relative locomotion now applies the requested lateral direction without
the original 50-degree movement gate, and Tommy's body aligns before the
animation group is selected. - Physical bat and other melee swings keep publishing their short follow-through
after the fast trigger sample, so a standing swing can connect instead of
requiring the player to walk into the target. - Stereo occlusion now tests all eight transformed entity bounds against exact
authored world volumes from both physical eyes. It no longer depends on a
rolled or asymmetric 2D eye projection, reducing mid-view geometry cuts. - A full transparent-object list no longer makes a fading object disappear for
the frame; it falls back to the normal opaque path. - Modern wheels bind while their verified wheel TXD is current, avoiding white
dummy textures caused by load-order collisions. - Bullet-trace visibility and fly-by audio use a last-valid physical headset
view basis even when the simulation emits a trace before the next stereo
frame, instead of silently falling back to Tommy's body-facing camera. - Rain emission is normalized to the original 30 Hz authored rate. Fountain
particles gain Original, Optimized, Low and Off modes; Optimized is the fresh
default and Original remains the exact-behaviour fallback. - Save loading now rejects malformed or oversized blocks before alignment or
buffer reads and reports read failures instead of continuing with partial
data. - SWAT rope spawning now fails safely when the population pool cannot allocate
the descending officer instead of dereferencing a null ped. - Added a one-click PC Modern-model preparation script. It asks for the legal
Vice City installation, caches and verifies the two external source packs,
excludes the known-heavy replacement palms, builds into staging, validates
the result and only then replacesmodelsets\\modern. - Fresh model-category defaults match the tested standalone profile: Modern
World / Buildings and Weapons, with Classic Vehicles, Pedestrians and
Vegetation / Palms. A missing overlay falls back to Classic for the session
without erasing the requested Modern preference. - Occlusion Culling now exposes Off, Stereo Safe, Authored and Aggressive modes.
The default Authored path uses the union of both tracked-eye frustums before
applying exact dual-eye authored-volume occlusion; Off remains the exact
full-360 fallback. - Locomotion Settings now exposes a direct
RECENTER VIEWaction; the obsolete
no-op teleport/movement row is no longer shown.
SteamVR: cutscenes and menus at full frame rate
- Fixed cutscenes, loading screens, and menus dropping to ~15 fps on SteamVR
after the first moment of gameplay. SteamVR deliberately throttles sessions
that stop submitting stereo frames; flat content on the theater screen
qualified. The game now renders the theater screen into a real stereo
projection pass during flat content, so the session is never throttled.
Confirmed fixed by the reporting player: full-rate cutscenes, menus, and
saves on SteamVR. - The screen keeps its world-anchored position, size, and the VR settings
overlay; other runtimes (Oculus, VDXR) keep their existing proven path. - Opt out with
[VR] CinemaProjection=0invr_settings.ini(returns to the
0.5.0 behavior including the SteamVR throttle). The experimental
CinemaKeepAlivekey from interim test builds is retired and ignored.
Crash and freeze fixes
- An IMG archive that exists but cannot be opened (an antivirus still
scanning a freshly built Modern overlay, or an incomplete build) no longer
crashes the game with an assertion. The session falls back to Classic
assets and logs the file and error code. - Fixed a crash when raising Render Scale to very high values (the
post-effects buffer exceeded the D3D12 texture size limit); the effect now
skips and retries instead. - Fixed a startup crash window during the intro movie state when the VR
runtime shuffled window focus. - The game now refuses to start a second instance (previously invisible
duplicate processes fought over the headset). - Fixed a GPU memory spiral on 8 GB cards with Modern assets: the streaming
cache is now sized from actual adapter VRAM, and GPU allocation failures
shrink it further instead of escalating into paging and a DEVICE_HUNG
device removal. - Added
[VR] StreamlineEnabled=0to bypass DLSS/Streamline initialization
on machines where the interposer delivers black frames (some VDXR setups);
DLAA is unavailable in that mode.
Memory leaks
A full audit of the D3D12 backend found and fixed nine leaks and lifetime
bugs, including a use-after-free in deferred resource release (the root of
several DEVICE_HUNG and wrong-texture reports), post-effect buffers leaking
on pause-menu exit, texture heap pages that were never returned, an upload
pool that only grew, and stale queues surviving a device reset. Long
sessions no longer grow GPU or system memory to their peak forever.
Saves
- A save that cannot be written now reports failure honestly. Previously a
blocked save folder showed "saved successfully" with an empty slot list
(stock bug, typically triggered by installs in write-protected folders). - If the game folder refuses writes, saves automatically go to
Documents\GTA Vice City User Filesinstead of silently going nowhere. - The save folder is resolved absolutely from the executable location, so
launchers with a different working directory can no longer scatter saves. - The log now records the active save folder and every save with its path.
Movement and input
- Fixed movement drifting or walking sideways for the whole session when the
game was launched with the headset on the desk: the gameplay-space anchor
is now latched only while the headset is actually worn, and re-latches
after the headset has been set down for 30+ seconds. - Added a proper stick deadzone (12% radial with rescale, plus cross-axis
filtering) to VR locomotion; worn sticks no longer pull the player. - Legacy DirectInput gamepads are ignored by default: phantom HID devices
(RGB controllers, wheels) fed constant input under the VR sticks. Real
pads and wheels can opt back in with[VR] LegacyGamepad=1.
Cutscene stability on all runtimes
- Fixed the headset view slamming between the theater screen and the world
when scripted sequences flickered their cutscene flags between stages. - Fixed the theater screen re-centering onto the player's head several times
within one scripted scene. - Fixed visible shaking during DLAA warm-up frames after cutscene
transitions. - Render Scale and Temporal AA menu rows no longer trigger a full render
target rebuild when the effective resolution did not change, and the
graphics menu warns about the per-eye GPU cost above 100%.
Diagnostics
- A failed presentation now writes
d3d12_device_removed.logwith the exact
device-removal reason. - The OpenXR log gained: cinema pacing telemetry (separates content judder,
head-locked fallback, and anchor jumps), movement-input telemetry, a step
trace for the first cinema frames, the resolved user-files folder, save
results, and the cinema projection mode state. - All
vr_settings.inireads now resolve the file relative to the
executable; launching via a launcher or "Run as administrator" previously
made some settings silently read from a nonexistent file.