Releases: GameOrDie007/Star-Wars-Episode-I-Racer-PCVR
Release list
Star Wars Episode I Racer PCVR v1.1
Three fixes from player reports on v1.0, plus controller haptics.
If you already play v1.0, one control moved — see Controls that changed below.
Full setup, controls and known limitations are in PCVR_README.md. Requirements are unchanged: a 32-bit OpenXR runtime (Virtual Desktop works, SteamVR does not), and your own copy of the game.
Controls that changed
| v1.0 | v1.1 | |
|---|---|---|
| B | Slide | Back / pause — everywhere |
| Slide | B | Right thumbstick click |
| Look back | Right thumbstick click | X |
| X | nothing at all (see below) | Look back |
B is now a proper Back button. Two players reported having no way out of a race or a menu without reaching for the keyboard, or switching to flat mode to click Back with the mouse. B now backs out of every menu, and pauses during a race.
Slide moved to the right thumbstick click, which is the one thing to relearn. Look back moved to X.
X did nothing at all in v1.0. Two controller actions had been given the same display name, OpenXR rejected the second, and the button had been silently dead since the first release — it looked correctly bound in the source and simply was not. It is a real button now, and it is where Look back lives, so nothing else had to move to make room.
This is deliberately a fixed mapping rather than a context-sensitive one. The game exposes no reliable way to tell "a menu is open" from "you are racing", and two attempts to infer it both produced buttons that did the wrong thing in the wrong place. A button that always means the same thing is better than a clever one that is occasionally wrong.
Menu navigation
Either thumbstick now moves the selection, in both directions. Previously up and down only responded to the left stick, so reaching for the right one did nothing — reported as "trouble moving the selection to where I wanted".
Controller haptics
The Touch controllers now vibrate on impact, scaled by how hard:
- bumping another racer
- scraping walls and terrain
- crashing
- a short kick when boost engages
Both strength curves were calibrated from real sessions rather than guessed, so a light scrape feels different from a full crash. Tune or disable them under VR in the F5 panel: Controller haptics on impact, Haptic strength, and separate impact and wall scales.
About the game's Force Feedback screen: it reports NO FORCE FEEDBACK DEVICE DETECTED, and that is correct and unrelated. That screen enumerates DirectInput devices — steering wheels and joysticks with motors — and a headset is not one. It says the same on an unmodded install. Controller haptics are a separate path and do not depend on it.
Also in this release
A control that fails to bind now says so in hook.log. The X bug above was invisible because a failed binding was created silently; that cannot happen again.
Environment variables may not reach the game, so the switches now live in the ini too. The game usually launches elevated, and Windows gives an elevated process a fresh environment — so SWE1R_NO_VR=1 set in a shell or shortcut was being silently discarded. Both switches now also work as keys in the [vr] block of SW_RACER_RE.ini, which elevation cannot strip:
[vr]
no_vr=1 ; run flat, skip VR entirely
verbose=1 ; per-frame diagnostics
Prefer the ini keys.
Unchanged and still known
Overhead place numbers are still suppressed; HUD and menus still share one panel; frame rate is still mid-to-high 80s on a 90 Hz headset, limited by CPU draw-call submission in a single-threaded 1999 engine rendered twice; analog steering is still experimental and off by default; physics is still framerate-coupled.
Reporting problems
Grab hook.log from the game folder before relaunching — it is overwritten each launch. If it crashed, include the timestamped report from crashes/.
Licence
AGPL-3.0, inherited from SW_RACER_RE by tim-tim707 and contributors, on whose decompilation and OpenGL renderer this is built. Complete corresponding source is the pcvr branch of this repository. openxr_loader.dll is the Khronos Group's OpenXR loader, redistributed unmodified under Apache-2.0. The original game is the property of LucasArts / Lucasfilm.
Star Wars Episode I Racer PCVR v1.0
Star Wars Episode I: Racer in VR — stereo rendering with true per-eye projection, head tracking, a world-locked panel for HUD and menus, and full Quest controller support. On a 1999 game with no available source, via a hook DLL.
Built on SW_RACER_RE by tim-tim707 and contributors. Full setup, controls, settings and known limitations are in PCVR_README.md.
Before you download
You need a 32-bit OpenXR runtime. This is the one hard requirement and it rules some setups out:
| Runtime | Works? |
|---|---|
| Virtual Desktop (VDXR) | Yes — ships and registers a 32-bit runtime |
| SteamVR | No — its OpenXR loader is 64-bit only |
| Meta / Oculus PC runtime | Probably — documented as supporting 32-bit apps, untested here |
The game is a 32-bit executable, so the runtime must be too. If yours has no 32-bit half, the game launches normally and runs flat, with the reason written to hook.log. To check: HKLM\SOFTWARE\WOW6432Node\Khronos\OpenXR\1\ActiveRuntime must exist and point at a 32-bit DLL.
You also need a legitimate copy of the game (GOG or Steam; developed against Steam). No game data is included in this download.
Installing
Unzip and drop dinput.dll, openxr_loader.dll and assets/ into the game folder next to SWEP1RCR.EXE. Start Virtual Desktop and connect your headset before launching.
Nothing else needs installing — dinput.dll is statically linked and imports only Windows system libraries. No Visual C++ redistributable, no MinGW runtime.
This also fixes the Steam release's launch crash. Verified on a clean machine: fresh Steam install crashed on launch vanilla; dropping these files in made it start and run. You do not need the dinput.dll that circulates on the Steam forums — this one takes the same slot.
What's in the box
Shaders and HD fonts only, about 440 KB. The community mod's assets/custom_tracks/ folder (~217 MB of user-made courses) is not included — it has nothing to do with VR. If you want it, take it from the SW_RACER_RE releases and drop it in beside the others; the two sets merge.
Known limitations
- Overhead place numbers are suppressed. The game stamps them as a screen-space effect during the HUD pass, which in VR is a flat panel, so they cannot anchor to the world. Drifting numbers are worse than no numbers.
- HUD and menus share one layer, so a size that suits racing can leave menus oversized. Separating them needs a second layer.
- Frame rate is mid-to-high 80s on a 90 Hz headset with strong hardware. The limit is CPU draw-call submission in a single-threaded 1999 engine rendered twice, not your GPU. 72 Hz is rock solid.
- Analog steering is experimental and off by default.
- Physics is framerate-coupled — the engine advances its simulation with the frame rate, which is why the community traditionally caps it at 24–30 fps. Higher rates work but change handling.
Lens flares are redrawn correctly as world-space geometry, fogged and depth-occluded per eye.
Reporting problems
Grab hook.log from the game folder before relaunching — it is overwritten each launch and opens with an environment block that answers most questions on its own. If it crashed, include the timestamped report from crashes/ too; those carry a symbolised stack. For anything obscure, set SWE1R_VR_VERBOSE=1.
Licence
AGPL-3.0, inherited from SW_RACER_RE. Complete corresponding source, including the VR layer, is the pcvr branch of this repository. openxr_loader.dll is the Khronos Group's OpenXR loader, redistributed unmodified under Apache-2.0. The original game is the property of LucasArts / Lucasfilm.