Skip to content

Releases

Beta 0.40: one app for Meta Quest + PICO

Choose a tag to compare

@SgtBilko76 SgtBilko76 released this 27 Oct 15:43

Visual Pinball X standalone for Meta Quest 3 and PICO headsets (OpenXR, Vulkan), based on vpinball/vpinball 10.8.1.

One APK for both headsets: VPinball-VR-Beta-0.40.apk

What's new in Beta 0.40

🆕 One app for Meta Quest and PICO

There is no separate Quest and PICO download any more. The same VPinball-VR-Beta-0.40.apk runs on both: it uses the Khronos OpenXR loader, so the headset's own OpenXR runtime (Meta or PICO) takes over.

  • PICO: PICO Beta 0.7 closed right after starting. This build is meant to fix that: PICO now gets the same VR main menu as the Quest instead of a flat 2D window (not confirmed on a PICO yet, see below).
  • The VR main menu (curved screen, laser pointer, trigger to select, thumbstick to scroll) now uses only standard OpenXR, so it runs on PICO too. Headsets without curved layers get a flat screen; if the VR menu can't start at all, the app falls back to the normal window.
  • PICO controllers are switched on in the menu and while playing (same button layout as the Meta Quest controllers).
  • Left stick click in the main menu switches between mixed reality and a black VR space on headsets with passthrough for apps (Meta Quest).
  • Includes everything from Quest Beta 0.39: the Table Downloader (+ → Download from Archive.org, ROM, backglass and NVRAM installed with the table, cancel at any time).
  • Smaller download: 122 MB instead of 271 MB (the native libraries no longer carry debug symbols).

PICO is not tested on PICO hardware by me yet, please report how it runs (headset model and PICO OS version) in the issues.

Updating: install over Quest Beta 0.39 or PICO Beta 0.7, settings and tables are kept (same signing key).

Install

  1. Sideload the APK (developer mode on), e.g. adb install -r VPinball-VR-Beta-0.40.apk. The same file works on Meta Quest and PICO.
  2. Start VPinball (Library → Unknown Sources) and get tables with + → Download from Archive.org.
  3. Or copy your own tables, each in its own folder with its ROMs next to it, and select the VPinball/tables folder in the settings:
    VPinball/tables/<Table name>/<table>.vpx
    VPinball/tables/<Table name>/pinmame/roms/<rom>.zip
    

Williams / Bally / Data East tables show "Factory settings restored" on their very first start: quit once through the menu and start again.

VR tables with the VR room disabled in their script

Some VR tables ship with Const VRRoom = 0 in their script (e.g. several VPW tables), which hides their cabinet and backglass. Put a copy of the table script next to the table as <table name>.vbs with VRRoom set to a room (usually "Ultra Minimal" is the lightest), VPX loads it instead of the built-in script.

Menu shortcuts

The first in-game menu entries are quick switches: Mixed Reality: On/Off and VR Room: (tables with a VR Room option).

Controls

Button During play In the in-game menu
Triggers Flippers
Grips Magna save
☰ (left menu) Open menu (hold: next VR room) Back / close
A Start game (hold 1 s while a ball is moving) Select
B Insert coin Back
X (hold) Move away from the table
Y View mode: left stick = left/right & up/down, right stick = horizontal & vertical angle (press again to save). Hold: reset view
Left stick click Size & distance mode: left stick = distance, right stick = size (click again to save)
Right stick click Launch ball Reset page to defaults
Right stick up/down Plunger
Left stick Nudge Navigate

Main menu (table library): point with either controller, trigger = select, thumbstick = scroll, left stick click = mixed reality / VR.

Quit a table through the menu (☰ → Quit).

Changes compared to upstream VPX

  • One APK for Meta Quest and PICO (Khronos OpenXR loader, PICO controller profiles enabled)
  • New: table downloader for the Visual Pinball Collection on archive.org (table, ROM, backglass, NVRAM)
  • New: main menu on a curved screen in VR (standard OpenXR), switchable between mixed reality and a black VR space
  • Fix: black screen on table start in VR (0x0 swapchain, upstream regression)
  • Fix: audio error spam when a table's sound ROMs are missing
  • No gamepad layout prompt for the Quest controllers
  • Quest controller layout above, A/B act as select/back in the menu
  • Persistent Vulkan pipeline cache (less stutter on later starts)
  • Performance defaults: 2048x2048 per eye, no ambient occlusion, ball-only reflections, Fast FXAA
  • Standard VR DMD (profile tinted) and score displays for tables not built for VR, also as a fallback when a table hides its own display
  • Backglass rebuilt from the desktop backdrop (image and EM reels), backglass art relocation
  • ScoreView: generated layout when no provided layout matches the machine's segment displays
  • VR view modes (size/distance, position/angles), view reset, VR room cycling
  • In game UI always pauses the game in VR, accidental Start protection
  • Mixed reality (Quest passthrough) switchable from the menu while playing
  • Automatic leveling of quiet ROM audio on the backglass

Performance

Light tables reach 72 FPS. Large VR tables (e.g. VPW) run around 40 FPS on the Quest 3, use their "Minimal" / "Ultra Minimal" rooms for more performance.

Known issues

  • PICO: untested on hardware. Mixed reality (passthrough) is available on Meta Quest only.
  • Some tables in the collection are large (several hundred MB): use a fast Wi-Fi connection.
  • Desktop backdrops that are room scenes instead of backglass art (e.g. Super Mario Brothers, Wayne's World) give an odd backglass: turn off "Backglass from Desktop Backdrop" for these tables.
  • Backglass lamps of rebuilt backglasses (EM tables) are not lit.

❤️ Enjoying this port? Support further development: Sponsor SgtBilko76 on GitHub