Virtual Pinball – Setup PinballX and Controllers

This part of the virtual pinball guide will cover the software. A visual pinball table requires a lot of software to work together to give a seamless feel when selecting and switching tables. the front end I’ll be using will be PinballX, which will basically show a list of all available pinball tables across all different games that are installed on your machine. Every platform installation is covered including the configuration of your cabinet special effects, buttons and graphics setup. This will be a large tutorial but I tried to cover all the steps as short as possible so you can just follow along on your own cabinet.


DIY Virtual Pinball
Introduction & Design
Building the cabinet
Installing computer, controls, special effects
Adding games & tables
Setup PinballX & Controllers
Photo Album


This is the basic working principle, we use PinballX as our “menu”, pinballX will run on startup and will show all tables available across all the games that are installed. By launching a table, pinballX will use the corresponding configuration to launch any game directly into the table you selected. since these games are all from different developers and requires different parameters to start correctly. every game needs its own little setup tutorial.

[su_spoiler title=”Required Files” style=”fancy”]

Downloading Files

I Recommend downloading these files upfront, most of the sites require registration.

  • PinballX (Registration Required)
  • Visual Pinball X/10 (Registration Required)(10.5 Beta latest)
  • Visual Pinball Fonts (Required)
  • DOFLinx (6.23 at time of writing) (for controlling all your LEDs, flashers…)
  • DOF b3 (DirectOutputFramework Docs )
  • Future Pinball (Pinball Engine)
  • BAM (Better Arcade Mode – Better camera, settings for Future Pinball)
  • SAM (SAM Build – allows to play vp10 tables or something like that)
  • X360ce (32bit) – Convert controller to Xbox controller input


[su_spoiler title=”Prepare Windows” style=”fancy”]

I will be to using windows 10 for my build, I recommend keeping the software on this computer as minimal as possible.

Disable windows UAC

  • Windows 10: Control Panel -> User Accounts -> Settings for UAC -> drag the slider down and apply


I recommend updating to the latest version, then install all your software and turn off windows update completely. You don’t want windows to update to randomly ruin your setup with no clue to start looking. I also advise staying away from updates as long as you are not having troubles with your current version. A few solutions to disable windows 10 updates are described on This website.

⚠️ Remember the “October 2018” update which randomly deleted important files for no reason. it eventually took Microsoft over 5 months for this update to be re-released. gotta love Microsoft! but since the software only works on windows, no use for Mac or Linux here 🙁

Empty desktop

I recommend using a black wallpaper without any icons on your desktop and autohiding the start menu. This will make the machine look more professional during startup.

 Anti Virus

I don’t recommend using an antivirus, I used AVG in my first setup which managed to destroy my complete setup due to removing false positive files. the preinstalled windows defender seems to have less of a problem with these programs but I still disabled the “real-time scanning/protection” option. the last thing you want is it to delete necessary files corrupting your setup


[su_spoiler title=”Create Folder Structure” style=”fancy”]

To start, this is my folder structure when I installed everything. I did install some parts on a second HDD since my SSD was only 120gb. I will still show the folder structure as 1 drive to keep it as simple as possible. feel free to change this structure but the guides will have everything linked for this structure. I will only add the files we will have to edit manually or replace during the guide so keep in mind your folders will contain more files than I show here.

  • C:/.
    • 📂Program Files/Steam/../../../FX2/FX3/TPa
    • 📂DirectOutput
      • 📂DOF_CabinetConfig
        • 📃CabinetConfig.xml
      • 📂DOF_GlobalConfig
        • 📃directoutputconfig.ini
        • 📃directoutputconfig30.ini
        • 📃directoutputconfig40.ini
        • 📃tablemapping.xml
      • 📂DOF_INI
      • 📂DOFLinx_FX2
      • 📂DOFLinx_FX3
      • 📃Doflinx.exe
    • 📂 Pinball
      • 📂DMDExt
        • 📃dmdext.exe
        • 📃startPinballArcade.bat
        • 📃startFX2.bat
        • 📃startFX3.bat
        • 📃testDMD.bat
      • 📂PinballX
        • 📂Config
          • 📃PinballX.ini
          • 📃backupConfig.bat
        • 📂Databases
          • *Game*
            • 📃*Game*.xml
        • 📂Media
          • *All media are shown in the UI*
      • 📂Scripts
        • 📃KillAll.bat
        • 📃KillDofLinx.bat
        • 📃KillFX2.bat
        • 📃KillFX3.bat
        • 📃KillTPA.bat
        • 📃KillAndRestartDoflinx.bat
      • 📂Games
        • Future Pinball
        • Visual Pinball
        • MAME
      • 📂Tools – Extract my package here?
      • 📂Backup – I recommend keeping a backup folder to store (Installers, backups, configurations, media, tables….)

This is the tree of all the important files and folders you will have after you installed everything using this guide


[su_spoiler title=”Setup Pinball X – Front end” style=”fancy”]

First, we will install the front-end, which is pinballX. We will skip the configuration of our games for now and only configure the front-end. The latest pinballX installer can be downloaded from Gameex. Once downloaded extract and run the PinballX installer, go through all steps:

When done, uncheck setup for now, since our other files are not yet in place.

When installed, right-click the pinballX executable en make sure to run it as administrator every time. we will do this with most of our apps further on.

Then DoubleClick the settingns.exe, choose advanced settings. This is my setup (my INI file can be downloaded HERE)

Save and exit the settings app, now run the pinballX.exe and your front-end should appear on your main monitor. the backbox monitor should just be black for now as pinballX has no tables/content yet to display. For now, PinballX is done


[su_spoiler title=”Installing DOF & DofLinx” style=”fancy”]

DOF – DirectOutputFramework

DOF requires no installation, just download and extract the files to C:/DirectOutput. The official instructions can be found here. I would still use my guide but you can always double-check the official instructions if something is not completely clear.

When extracted you should end up with the following files

Unblock DLL Files, since windows 7. Windows has the ability to block DLL files you downloaded from the internet. There is no real way to see if a DLL is blocked or not other than checking the properties of each individual DLL file in the Directoutput folder. Then follow the following instructions

  • Right-click the DLL file and select Properties in the context menu.
  • Select the General tab in the properties window.
  • If you find the text _”This file came from another computer and might be blocked to help protect this computer” or something similar on this tab, click the Unblock button. This should fix the issue.

When you are sure you unblocked all blocked files, run the “RegisterDirectOutputComObject.exe”, this will register some runtime DLL’s in your registry so they can be used by other applications


DOFLinx makes DOF work in Future Pinball and Pinball FX2/FX3 and can be downloaded from VPForums (Link). Extract and copy all files in the same folder as DOF ( C:/DirectOutput)

again make sure all the files are unblocked or it will not work.

Ddoflinx is installed. the configuration will be covered later


To install x360ce, download the 32bit executable from the official website (Link). Extract and run the file in your C:/DirectOutput folder. Before starting also make sure you have all the required software installed:

Then on the first start of x360ce, you will get an error “not found” xinput1_3.dll file. Click create to install the file in the same directory.

On the next screen, x360ce will try to download the best mapping for your device but, since we wired them ourselves, the mapping will differ for each build so click Cancel to skip this.

The mapping will be done later but if the program opens up, you are done for now.


The configuration of DOF and DOFLinx is rather complicated and will be different for every build. Take your time and do some extra research on the official websites and forums to make sure you get your setup working correctly.

[su_spoiler title=”Setup DOF” style=”fancy”]

To configure all your “toys” in DOF, open the DOF Config Tool website (Link), create a new account and login. Then open the account page and configure all to match your pinball cabinet:

Click save to save your settings, then open the port assignment’s tab, in here you will find your devices configured earlier. For each device, select the corresponding button in the list, if the button is not in the list, leave it empty. Eventually, your LEDwiz and Saintsmart should be configured something like this:

Click “save config” and generate config to download your configuration. this may take some time as the files will be generated on the server but be patient and your download should start. The downloaded zip archive contains the following files (leave for now)

  • directoutputconfig.ini
  • directoutputconfig40.ini
  • DirectOutputShapes.png
  • DirectOutputShapes.xml
  • tablemappings.xml

now create a  C:/DirectOutput/Config folder and create a new file called “GlobalConfig_PinballX.xml”. Paste the following content in the file save and exit the editor.

<?xml version="1.0" encoding="utf-8"?>
<TableConfigFilePatterns />

Then create a new folder in the C/DirectOutput folder called “DOF3_INI”. Open the folder and copy the content of the zip we downloaded from the DOF config tool in here. Also copy the Directoutputshapes.png and directoutputshapes.png in the root of your direct output installation (C:/DirectouOutput)

Now we need a cabinet config for our cabinet, this is an XML file with all controls available for use. I recommend reading the official information/setup guide (Link). My cabinetconfig.xml is posted below, this is not perfect but it got the job done. I recommend to start with an empty file and doing some research yourself on getting the corect configuration for your cabinet


[su_spoiler title=”Setup DOFLinx” style=”fancy”]

This part is very hard to explain in text so I recommend watching “MAME IN A BOXES” VIDEO

The latest versions of DOFLinx includes a few sample config files, you can use and modify one of those or use mine as a starting point, I recommend at least checking out some of these sample files to understand what every line somewhat does. The config file should be called DOFLinx.ini in C:/DirectOutput my file looks like this

DOFlinx link parameters


  • 117 – device 1, port 17
  • 50 – default on time in milliseconds, if a link was to not specify an on time, or set a shorter on time that this, then this value is used.  That value is really dependant on your toy, if you turn some thing on / off to quickly, then the solenoid / contactor cannot “thump”
  • 10000 – maximum on time in milliseconds
  • 255 – the intensity of the output when triggered between 0 and 255.  For a SainSmart board only one value makes any sense and that is 255 – fully on.  A device partially on is relevant to Pinscape, LEDWiz, Ultimate IO, PACLed64
# The config file for DOFLinx
# A mad idea by DDH69 to have some flipper sounds, RGB display and turn buttons on when playing Pinball FX2 via Steam
# Its grown a lot since that silly start!
# Note - this works with LEDWiz, PacLed64, Pinscape, Ultimate I/O and Sainsmart (FTDI devices)
# Edit this file as you see fit, lines that start with a hash (#) or are blank are not processed. This blurb and comments can be cut out if you want.
# Output devices outputs are entered in the format of
# device (D) and output number (#) in the format D##, so controller device 1 and output 3 is "103" without the quotes, controller board 2 output 23 is "223" without quotes

# location of your standard DOF outut configuration file. Keep this as the first item in the file

# If you want to list the processes that will wake up DOFLinx, comment it out if you just want Pinball FX2
PROCESSES=PinballX,Pinball FX2,Pinball FX3,Future Pinball

# If you are using flag files, comment the line below out or set to 2000 as the default.
# If you need to use the Pinball FX2 grid to select games you will want this at around 30000 - I recommend not using the FX2 grid

# Which DOF Controller output for the flipper solenoids / contactors
# The keyboard hex code for the key that is used for each flipper from
# Left Shift = A0, Right Shift = A1
# Just in case things go wrong (ie no keyup signal is detected, flipper held down for a long time), what is the maximum time a flipper solenoid / contactor can be in in milliseconds
# What LEDWiz output(s) are used for RGB devices. Just enter the Red output number. Multiples can be entered seperated by a comma
# Rainbow - cycle through the colours, Random - pick a random next colour, A colour name as it appears in the DirectOutputConfig.ini file
# What changes the colour? Time - set time period, Flipper = flipper press after the RGB_TRIGGER minimum time (to stop rapid colour changes)
# Dependent on trigger selection the period between changes or the minimum time for change between flipper flips
# The button(s) to turn on when DOFLinx starts, ie the exit button LED
BUTTONS_ON=101 102 104 105 106 107 108 109 110 111 112 131 132 217 218
# Make the "1" (31) key (Start in VP) pulse LEDWiz 120 and "4" (34) to pulse controller/output 121
#KEY_TO_OUTPUT=32 101 35 106 36 105
# Set a key to turn on a specific colour for your RGB. The line below makes the Left Control (A2) and the Right Control (A3) turn my undercab RGB strip red.
# In Pinball FX2 this means when I nudge it all goes red.
#KEY_TO_COLOUR=A2 109 Red A3 109 Red
# Setting FORCE_ACTIVE=1 will cause DOFFX2 to not listen for processes and just run until you kill the process. Handy for using it for things other than PinBall FX2
# If you want the program to stop when your named process stops then set this to 1. If you want it to run in the background all the time leave it as 0
# Set to 1 to output the game name to the log regardless of the DEBUG flag setting. Set to 0 to simply follow the DEBUG flag.
# Quite useful when you trying to get the FX2 window game name for setting game specific colours

# Sample setup to enable the Future Pinball Link. Edit the LINK_ items to be your ports and settings.
# Use the line below if you need to extend the wait time for a FP table to load
#LF = Left flipper
#RF = Right flipper
#LS = Left slingshot
#RS= Right slingshot
#ML = Mid field left solenoid
#MC = Mid field centre solenoid
#MR = Mid field right solenoid
#BL = Back left solenoid
#BC = Back centre solenoid
#BR = Back right solenoid
#SH = Shaker motor
#GR = Gear motor
#KN = Knocker
#FN = Fan
#FLOL = Flasher outer left
#FLIL = Flasher Inner Left
#FLCN = Flasher Centre
#FLOR = Flasher Outer Right
#FLIR = Flasher Inner Right
#SR = Strobe
#BK = Beacon
#ST = Start button
#EB = Extra Ball button
#EX = Exit button
#CN = Coin button
#LB = Launch Ball button
#FR = Fire Button
LINK_SR=131 132

# 0 = OFF (normal operation), 1 = ON - When ON a window will appear and a log file will be created in the EXE directory.


[su_spoiler title=”Personal mapping – LEDWIZ ssaintsmart mapping tables pesonall” style=”fancy”]

LEDWiz #1

Port Effect
101 Coin Door Left
102 Coin Door Right
104 Blue Round Button
105 Orange Rectangel Button
106 Yellow Rectangle Button
107 Green Rectangle Button
108 Red Rectangle Button
109 Launch Button
110 Blue Rectangle Button
111 White Rectangle Button
112 Green Round Button
117 RGB Strip Left Bottom – Red
118 RGB Strip Left Bottom – Green
119 RGB Strip Left Bottom – Blue
120 RGB Strip Right Bottom – Red
121 RGB Strip Right Bottom – Green
122 RGB Strip Right Bottom – Blue
123 RGB Strip Right Rear – Red
124 RGB Strip Right Rear – Green
125 RGB Strip Right Rear – Blue
126 RGB Strip Left Rear – Red
127 RGB Strip Left Rear – Green
128 RGB Strip Left Rear – Blue
131 Flasher Backbox Top Right
132 Flasher Backbox Top Left

LEDWiz #2

Port Effect
201 Flasher 1 – Red
202 Flasher 1 – Green
203 Flasher 1 – Blue
204 Flasher 2 – Red
205 Flasher 2 – Green
206 Flasher 2 – Blue
207 Flasher 3 – Red
208 Flasher 3 – Green
209 Flasher 3 – Blue
210 Flasher 4 – Red
211 Flasher 4 – Green
212 Flasher 4 – Blue
213 Flasher 5 – Red
214 Flasher 5 – Green
215 Flasher 5 – Blue
217 Strobe Right
218 Strobe Left





Police Rotary Light


Front Left Relay


Front Right Relay


Rear Right Relay


Rear Left Relay


Your control software is now correctly setup, the last part will cover the installation of games and tables.

Photo Album


Share on facebook
Share on twitter
Share on pinterest
Share on linkedin

Leave a Reply

Your email address will not be published. Required fields are marked *

On Key

Related Posts

%d bloggers like this: