Skip to content
This repository was archived by the owner on Oct 18, 2026. It is now read-only.

VR upstream sync, repair VR startup - #2

Merged
cmpayc merged 10 commits into
vr-supportfrom
vr_upstream_sync
Sep 9, 2026
Merged

cmpayc merged 10 commits into
vr-supportfrom
vr_upstream_sync

Conversation

@cmpayc

@cmpayc cmpayc commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Summary

Syncs the VR branch with upstream tiltedphoques/TiltedEvolution dev (up to 97dc28ad) and repairs VR startup, which the merge broke. Upstream's SSE 1.7.99 / SKSE work changed two things the VR build cannot take as-is: the SkyrimVM member offsets and the point at which the Script Extender is started. Both are now split by TP_SKYRIMVR, so the SE build keeps upstream behavior unchanged and VR gets its own values and call site.

Highlights

Upstream merge (8 commits)

SkyrimVM offsets are version-specific now

Upstream moved virtualMachine to 0x210 and inactive to 0x690 for 1.6.1179. SkyrimVR predates that update and still uses 0x200 / 0x680, so reading at the SE offsets landed in neighbouring fields. GameVM.h now carries both layouts behind TP_SKYRIMVR, each with its own static_assert, and SkyrimVM64.cpp uses GameVM instead of its private VMContext copy.

SKSE has to start later in VR

Upstream now calls LoadScriptExtender() from RunTiltedInit. SKSEVR 2.0.12 does its full init inside StartSKSE rather than deferring it the way SKSE64 does, so from RunTiltedInit it scans plugins before the game entry point, ahead of the EngineFixes _initterm_e preload hook, and EngineFixes then aborts startup with "plugin did not preload". VR calls it from TiltedOnlineApp::BeginMain, which runs inside game startup after the preloader has had its turn. SE keeps the upstream call site.

Result: the VR client launches again, with the upstream fixes above included.

miredirex and others added 10 commits August 22, 2026 22:10
* Fix address library loading for v5

1.7.99 AL uses v5 packing in the .bin's

* Fix CEG decryption - newest exe has a slightly different DRM header

* Update game structs to support SSE 1.7.99

* Fix SKSE 2.2.7+ startup initialization

Latest SKSE should now load without assertion error
…s#873)

* connect: add local hide-password toggle and checkbox

* connect: left-align hide password checkbox with save password

* fix: align save-password and hide-password side by side

* fix: make checkbox-row width auto to avoid clipping hide-password

* fix: align save-password left and hide-password right in connect

* fix: restore balanced brackets in connect.component.scss

* fix: prevent checkbox text wrapping and fix checkbox-row width

* fix: prevent checkbox input from stretching under global width:100%

* fix: normalize SCSS comments and harden checkbox visibility rules

* fix: align save-password and hide-password side by side on connect form

* fix: prevent checkbox label wrapping via label selector only

* fix: equal-width split checkbox row with left/right alignment

* Fix styling and positioning
…c server trolling (tiltedphoques#874)

* server: prevent auto-join when bAnnounceServer is true

* Compile fix

* server: clarify bAnnounceServer guard comment

* server: guard OnPlayerJoin auto-join with bAnnounceServer

* Move stuff to GameServer.h/.cpp, simplify code
…nduction) so member does not hang (tiltedphoques#855)

* Patch Companions C02 "Brotherhood" (induction) so member does not hang

Patches the single Scene in the quest to fix the hang if a member (not Leader) steps on the ceremony hotspot. The fix is innocuous to the standard game.

It was an obscure bug. There's a hidden (not in the the quest log, a bit of an easter egg) objective to speak to the QuestGiver (Vilkas) before going to the ceremony.

IF the Leader does not talk to Vilkas
AND the member steps on the ceremony hotspot
AND the Leader does not stop on the hotspot

Scene would hang, so the quest would hang with player controls frozen.
The reason is the scene required Vilkas to be present. The hidden objective makes him be present. If the Leader triggered the ceremony (or joins it), Vilkas is told to run to the ceremony.

If Member triggered it, well, Vilkas did nothing because he's controlled by Leader.

Isn't this fun? Anyway, fixed it by only requiring always-present NPCs to speak their last line.

Separate topic: I made this as a separte ESL-flagged ESP. I think now that ESLs exist and are cheap, not burning slots, it makes more senses to keep patches separate rather than bundling them all into one ESP and losing context of what is changing what.

But that's debatable, so if there are strong arguments to merge every patch into one .ESP glob, let's hear them.

* Rename, update i18n, add the .esp to default modlist check

---------

Co-authored-by: Daniil Zakharov <miredirex@gmail.com>
…iltedphoques#842)

* Fix tabulation

* Fix linux ci

* migrate package prepare from playable-build

* Adding release and re-upload artifact logic

* fix job name

* cleanup junk step

* fix re-upload arifact step

* fix

* Fix re-upload logic

* Fix release job

* version in filename artifact

* Fix re-upload zip step

* filename 😕

* directory 😐

* Remove pre-release branch

* Enforce master branch check for tag releases

* Clean-up outdate comment

* Remove outdate fallback

* Use GH cli

* Fallback for testing on fork and checkout step on release

* Clean up fallback on fork x2

* No crashpad

* Improve CI architecture

* --plat=windows

* 2 artifacts, bump xmake

* tiltedcore 0.2.9

---------

Co-authored-by: Daniil <miredirex@gmail.com>
… steady-clock instead of delta-time in the player respawn logic)

This usually happens when the game is stuttering during respawn. Closes tiltedphoques#878
… in (tiltedphoques#875)

* client: refactor respawn overrides into RespawnOverrides helper

* client: call RespawnOverrides::GetRespawnPos before COC fallback

* client: document respawn override fallback comment in PlayerCharacter.cpp

* client: fix Primitives.h include path in RespawnOverrides.cpp

* client: update includes, alphabetize respawn overrides, add cell entries

* client: fix const qualifier on GetRespawnPos

* client: add tested interior respawn overrides for HaltedStream, Korvanjund, Stillborn

* client: add debug logging for IsBleedingOut and knockdownStart after respawn

* client: extend respawn debug log to 2s with normal-path early cancel

* client: cancel debug log when normal knockdown path clears it

* client: respawn debug: 3s timer, edge-case fallback, godmode stop log

* client: respawn debug: 3s timer, edge-case re-arm fallback, knock timer reuse

* client: respawn debug: comment tweak, restore deleted line

* cleanup of logging

* Refactor respawn overrides into configurable lookup table and client side .ini

* Fix respawn override cell lookup const mismatch

* Use full STR config path for RespawnOverrides

* Update Korvanjund02 respawn position

* Remove extra knockdown code because 2e52a70 has fixed it

* Simplify a bunch (mostly INI parsing and creation)
@cmpayc cmpayc changed the title Vr upstream sync VR upstream sync, repair VR startup Sep 3, 2026
@cmpayc
cmpayc merged commit 73ca47b into vr-support Sep 9, 2026
1 check passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants