This is an old revision of the document!


This article needs some TLC. Read at your own risk.

Visual Pinball X

The Visual Pinball X is a pinball developed by Randy Davis. It was released in 2000.

This system scrapes metadata for the “vpinball” group(s) and loads the vpinball set from the currently selected theme, if available.

Before version 40, vpinball on Batocera is not for creating pincab configurations with multiple screens.

Before version 40, the goal is to create a pleasant and easy experience of a “Desktop” pinball where everything (the table, the scoring DMD system, the backglass recreation,…) is on one screen. It supports some accessories though (starting from v39), such as PixelCade and ZeDMD.

No Visual Pinball X emulator in Batocera needs a BIOS file to run.

But many tables recreations require the original pinball rom to run.

The current version of Visual Pinball supports version 10 (.vpx extension) tables.

Community based tables for can be downloaded from https://www.vpforums.org or https://vpuniverse.com

Place your VPX tables in the .vpx format in /userdata/roms/vpinball/<table_name>/ (eg: /userdata/roms/vpinball/Haunted House (Gottlieb 1982)/Haunted House (Gottlieb 1982) VPW 2.1.vpx)

Many historical tables require the original rom file extracted from the pinball machine to run. To play these tables, you need to put the proper rom in .zip format in the

  • /userdata/system/configs/vpinball/pinmame/roms (v38)
  • /userdata/roms/vpinball/<table_name>/roms (v39+) (Eg: /userdata/roms/vpinball/Phantom Of The Opera (Data East 1990)/roms/poto_a32.zip

A few tables also require a nvram .nv file placed in:

  • /userdata/system/configs/vpinball/pinmame/nvram (v38)
  • /userdata/roms/vpinball/<table_name>/nvram (v39+)

Visual Pinball uses VBScript as the scripting engine for tables. Due to incomplete support in Wine, some tables will open briefly, then close.

These tables may run with a modified .vbs script which can be found here: https://github.com/jsm174/vpx-standalone-scripts

Put the .vbs file in /userdata/roms/vpinball/<table_name> folder, next to your vpx table. Only the .vbs file is required (not the .vbs.original, nor the .vbs.patch files). The name must match the exact name of the table (eg: /userdata/roms/vpinball/Guns N Roses (Data East 1994)/Guns N Roses (Data East 1994) VPW v1.1.vbs)

folder content description
/userdata/roms/vpinball Your .vpx & and any associated .directb2s or .vbs files. Any associated .UltraDMD folders should also be in the vpinball roms folders. Note: .directb2s files should match the .vpx file name.
/userdata/system/configs/vpinball VPinball configuration & log files
/userdata/system/configs/vpinball/user VPinball user directory
/userdata/system/configs/vpinball/pinmame VPinball generated PinMAME settings, ex. sound, cheat, dmd_red
/userdata/system/configs/vpinball/pinmame/roms PinMAME ROMs directory
/userdata/system/configs/vpinball/pinmame/nvram PinMAME NVRAM directory
/userdata/system/configs/vpinball/pinmame/altcolor Serum colorizations directory <rom_name>/<rom.cRZ> (ex: trn_174h/trn_174h.cRZ for Tron Legacy)
/userdata/system/configs/vpinball/pinmame/altsound Alternative sound packages directory <rom_name>/<sound files> (ex: stwr_107 for the Data East Star Wars table)
/userdata/system/configs/vpinball/pinmame/vpinball VPinball PinMAME settings directory
/userdata/system/configs/vpinball/music VPinball music directory, put your music here, or in the same folder as your vpx file in it's own 'music' folder. The music folder, should be lowercase - i.e. /userdata/roms/vpinball/Kiss/music

Due to the huge amount of files per table, it is recommended to opt for a folder per table organisation (default starting from v39):

  1. open the /userdata/system/configs/vpinball/VPinballX.ini file.
  2. Change PinMAMEPath = to PinMAMEPath = ./

Starting from v39, each table folder will contain all the necessary files to launch the table.

folder content description
/userdata/roms/vpinball/<table_name> Your .vpx & and any associated .directb2s or .vbs files. Any associated .UltraDMD folders should also be in this folder. Note: all file names (.directb2s, .vbs) should match the .vpx file name exactly.
/userdata/roms/vpinball/<table_name>/roms The PinMAME rom of your table (in .zip format). (eg: userdata/roms/vpinball/AC-DC LUCI Premium (Stern 2013)/roms/acd_170h.zip)
/userdata/roms/vpinball/<table_name>/altcolor Serum colorizations directory <rom_name>/<rom.cRZ> (eg: userdata/roms/vpinball/AC-DC LUCI Premium (Stern 2013)/altcolor/acd_170h/acd_170h.cRZ)
/userdata/roms/vpinball/<table_name>/altsound Alternative sound packages directory <rom_name>/<sound files> (eg: userdata/roms/vpinball/Batman (Data East 1991)/altsound/btmn_106)
/userdata/roms/vpinball/<table_name>/music put your music here (required by some tables). The music folder, should be lowercase
/userdata/roms/vpinball/<table_name>/nvram PinMAME NVRAM
/userdata/roms/vpinball/<table_name>/pupvideos Pup Pack directory <rom_name> (eg: userdata/roms/vpinball/Tron Legacy (Stern 2011)/pupvideos/trn_174h)
/userdata/system/configs/vpinball VPinballX.ini configuration file & log files

Another possibility is to create a pinmame folder inside your table folder, containing the sub-folders roms,nvram,altsound… eg: /userdata/roms/vpinball/Haunted House (Gottlieb 1982)/pinmame/roms/hh.zip, /userdata/roms/vpinball/Haunted House (Gottlieb 1982)/pinmame/nvram/hh.nv,…

Visual Pinball Standalone is a modified version of VPinballX that is designed to run on non-Windows platforms. It is an open source cross platform pinball table simulator. It targets Desktop users, but also Pincab users and has a lot of options and components to create complete Pincabs.

vpinball configuration

Standardized features available to all cores of this emulator: vpinball.videomode, vpinball.padtokeyboard, vpinball.videomode, vpinball.bezel, vpinball.bezel_stretch, vpinball.hud, vpinball.hud_corner, vpinball.bezel.tattoo, vpinball.bezel.tattoo_corner, vpinball.bezel.tattoo_file, vpinball.bezel.resize_tattoo

key action
1 start game / add player
2 buy extraball at the end of the game (judge dredd, indiana jones tpa…)
5 insert coin 1
4 insert coin 2
Enter launch ball
L Shift left flipper
R Shift right flipper
L Ctrl left magna save
R Ctrl right magna save
L Alt lockbar fire button (ac/dc, terminator 2…)
Q quit
T mechanical tilt
Space nudge forward
Z nudge from left
/ nudge from right
Esc contextual menu to pause emulator / launch webserver / adjust camera
F11 display stats (press twice to have graphical stats)

Very useful to access and manipulate the service menu of the pinball, in order to change the volume, or the number of balls in play (and many other parameters)

key action
3,4,5 insert coin 1, 2 , 3
7 back
8 minus
9 plus
0 select / access to the menus
home slam tilt

Here are the default Visual Pinball X's controls shown on a Batocera RetroPad:

Due to the extreme variety of hardware, no generic procedure exists to change the volume or the number of balls. But an excellent topic on this subject is here: https://www.vpforums.org/index.php?showtopic=38669#entry388038

Example: you want to replace the AddCreditKey by I keypress:

You should have a look at the Pad2Key system as modifications of /userdata/system/configs/vpinball/VPinballX.ini for the joystick are not taken into account.

In v40+, you can control the plunger with the right stick by editing your VPinballX.ini:

[Player]
; Plunger
PlungerAxis = 5

Default gamepad layout:

Change the Point of View and Lighting

  1. Press Esc then choose Adjust Camera
  2. Use:
    1. Flippers (shift keys by default) to increase/decrease value
    2. Magnasaves (ctrl keys by default) to select previous/next item
    3. Credit (5 key by default) to reset to table's defaults
    4. Start (1 key by default) to save your changes in an pov file

In v38, this creates a .pov file next to your table .vpx file, with the same name (in /userdata/roms/vpinball). Note that Environment Emission is not saved in this .pov file and must be set in your table's .ini file

The .pov files are deprecated in v39 (following evolutions of vpinball). The customisation process remains exactly the same (press Esc then choose Adjust Camera), but it now creates a .ini file. It's recommended to remove the old .pov files to use the new .ini files, and also to choose the Camera view instead of the Legacy view.

Display a ball trail (to better see it)

It'll help keep track of your ball in fast moments or with dark tables.

  • v38: in the VPinballX.ini file, put these values
[Player]
; Ball options
BallTrail = 1
BallTrailStrength = 0.8
  • v39: you can configure this directly in the Advanced Options of the emulator

Reduce the visual nudge effect

This setting won't change the real nudge intensity, just the visual effect. If you want a more subtle visual effect when nudging:

  • v38: in the VPinballX.ini file, put these values:
[Player]
; Visual nudge strength
NudgeStrength = 0.01
  • v39: you can configure this directly in the Advanced Options of the emulator

Change the Sound Volumes

  1. If a particular table has a low music volume, you should first check if the volume is adjustable by accessing its service menu (or try pressing 8, or 9, or 7). Note that for some tables, it'll be impossible to adjust it.
  2. If you want to balance the volumes between mechanical sounds of music sounds, you can do it globally (by editing the VPinballX.ini file), or on a table basis (by editing the table's .ini file, located next to its .vpx). Look for this section:
[Player]
MusicVolume = 100
SoundVolume = 5
  • v39+: you can also configure this directly in the Advanced Options of the emulator

Altsound packages

(starting in v39 of Batocera)

The sounds included in the rom can be totally replaced. You can find some packages at https://vpuniverse.com/files/category/113-altsound/ or http://altsound.vpin24.com/

  1. Download the .zip file
  2. Extract it in /userdata/roms/vpinball/<table_folder>/pinmame/altsound/<rom_name> (example: /userdata/roms/vpinball/Guns_n_Roses_1994/altsound/gnr_300 for the Data East Guns N' Roses table)

Data East tables are notorious for having a very bad sound quality. You can find altsound packages which can be simply a better version of the original sounds, or a very different version.

Only the Serum colorization system is supported (https://vpuniverse.com/files/category/173-serum-dmd-colorizations/) at the moment (with Batocera 39+)

  1. Download the corresponding .cRZ file for the pinmame ROM and copy it into /userdata/roms/vpinball/<table_folder>/pinmame/altcolor/<rom_name>/<rom.cRZ> (ex: /userdata/roms/vpinball/Tron_Legacy/pinmame/altcolor/trn_174h/trn_174h.cRZ for Tron Legacy).
  2. Check on jsm174's GitHub page if a pre-existing updated script for Serum colored DMD .vbs.dmdcolored file exists. If it does, you can download it and copy it into the table directory and rename it with a .vbs extension, letting it sit next to the .vpx file, with the same filename (ex: /userdata/roms/vpinball/Tron_Legacy/Tron Legacy (Stern 2011) VPW Mod v1.1.vbs (from the original .vbs.dmdcolored on jsm174's Github repo).
  3. If no .vbs.dmdcolored script is available and the DMD is not colorized, you can try and set it by yourself:
    1. first, extract the .vbs script from the .vpx table file using a tool like the VPX-VBS extractor;
    2. In the .vbs file, replace the UseVPMDMD parameter by UseVPMColoredDMD;
    3. Save the table, and keep the same filename as the .vpx table, just with the extension changed to .vbs. It's not necessary to import the .vbs file back into the .vpx file, if a .vbs file exists in the folder, it takes priority.

Animated backglasses are files with .directb2s extension and should be placed next to your .vpx file. The support was added for v39+. The extension .directb2s must be lower case and the name has to be identical to your table's name (eg: Transporter the Rescue (Midway 1989) VPW v1.05.directb2s for Transporter the Rescue (Midway 1989) VPW v1.05.vpx).

In v40+, there's initial support. In VPinballX.ini, there are new settings. If you want to activate pup support:

[Standalone]
B2SPlugins = 1
PUPCapture = 1
PUPPlugin = 1

Download the corresponding PUP Pack and copy it into /userdata/roms/vpinball/<table_folder>/pupvideos/<rom_name>/ (eg: /userdata/roms/vpinball/Lord of the Rings (Stern 2003)/pupvideos/lotr).

You need to be patient: don't expect everything to work as it's a WIP (eg: musics don't work yet).

If it's not working as expected, you can check if you have the correct (ie: adapted to desktop or 2 screens, or 3 screens…) playlists.pup, screens.pup and triggers.pup files in /userdata/roms/vpinball/<table_folder>/pupvideos/<rom_name>/. Most of the time, you have a PuP-Pack_Options folder with some preconfigured ready-to-use files. Eg: for Batman 66 Stern Tribute (2021), you need to replace the 3 .pup files in /userdata/roms/vpinball/Batman 66 Stern Tribute (2021)/pupvideos/b66_orig/ by the ones from /userdata/roms/vpinball/Batman 66 Stern Tribute (2021)/pupvideos/b66_orig/PuP-Pack_Options/Option 3 - Desktop.

Starting with Batocera 40, you can use Batocera as the OS for a VPX-based pincab. Here are the configuration steps:

  • First, define if you want the primary screen for ES to be the playfield or the backglass (assuming you have at least 2 screens for your pincab).
  • Let's assume that you choose the backglass as the primary ES screen. You need to define it with its identifier and resolution in EmulationStation (SYSTEM SETTINGSVIDEO OUTPUT). Don't keep the AUTO value. If necessary, you can tweak the resolution in SYSTEM SETTINGSADVANCED FRONTEND OPTIONS)
  • Then, in SYSTEM SETTINGSMULTISCREEN you need to define the output for your secondary ES screen. In our example here, this would be the playfield for VPX, and the information screen for EmulationStation.
  • Now, for the DMD, you have two options here:
    • Either you use another screen for DMD, and then you need to define it as the DMD SCREEN in this MULTISCREEN menu;
    • Or you have a physical LED-based DMD like a Pixelcade or a ZeDMD and you need to configure it in SYSTEM SETTINGSDMD.
  • If you use a 3rd screen as the DMD, go to SYSTEM SETTINGSDMD and set the server to DMDSIMULATOR. If you have a physical LED-based DMD, set this option to DMDSERVER (FOR REAL DMDs).
  • When you launch a VPX table, Batocera will try and detect which screen is the backglass, which screen is the playfield (independently from the selection that has been made for EmulationStation). If it gets inverted, you can swap the screens for the playfield and the backglass with the option INVERSE PLAYFIELD AND B2S in the advanced settings of Virtual Pinball.
  • When using Batocera in a pincab, in the same advanced settings for the Virtual Pinball system, set the PLAYFIELD MODE to FULLSCREEN.
  • If you launch a table, and the playfield is not set up correctly, like it is in single-screen mode and not the right playfield view you expect, you can fix it from the VPX menu:
    • Plug a keyboard to your Batocera machine and press ESC to enter the VPX menus
    • Go to table options, then Page 2/3 Point of View
    • Use left and right CTRL keys to browse the menu options, and use left and right SHIFT key to change values
    • Set View layout mode to Window.
    • Press the key 1 on your keyboard to save the setting.

As of now, not everything is supported on Batocera 40, but things move fast. In particular what is missing compared to traditional Windows-based pincabs:

  • DOFlink to control toys (addressable LEDs, shakers…)
  • SFF and multi-output sound systems

For earlier versions of Batocera, this is not supported, and requires some manual work with many steps. A pinball & batocera fan shared information about how to tweak Batocera 39 for pincabs at this location.

[Player]
; Nudge
PBWEnabled = 0

If your table is not playing smoothly:

  1. Press F11 to display the fps.
  2. Easy fix: use a lower resolution: go to Options> Advanced System Options > Video Mode.
  3. Another easy fix: starting with v39, the Advanced Options have presets to match your hardware.
  4. More advanced fix: fine tuning the settings in VPinballX.ini may allow you to play at a higher resolution (4k 60fps for example), by sacrifying a few less visible visual effects. For example, a table will look much nicer at 4k without dynamic ambient occlusion than at 1080p with dynamic ambient occlusion (which can bring your gpu to its knees…). You could start with:
[Player]
; Video options
SyncMode = 2
MaxFramerate = 60
MaxPrerenderedFrames = 0
FXAA = 0
Sharpen = 0
ScaleFXDMD = 0
DisableAO = 1
DynamicAO = 0
SSRefl = 
PFReflection = 4

Note: Some settings in the VPinballX.ini file only apply to specific systems (windows for eg). Eg: UseNVidiaAPI has no effect on standalone version.

For further troubleshooting, refer to the generic support pages.

  • systems/vpinball.1716867362.txt.gz
  • Last modified: 2 years ago
  • by lbrpdx