Jump to content

All my products and services are free. All my costs are met by donations I receive from my users. If you enjoy using any of my products, please donate to support me. Thank you for your support. Tom Speirs

Patreon

[GUIDE]How I setup my ‘Awesome looking Pinball Cabinet’ with PinballX


Recommended Posts

Recently I reinstalled my Pinball cabinet because I swapped my PC and my TV.
As I needed to reinstall and setup almost everything, I wanted to share how I setup my Pinball Cabinet.


This doesn't explain how you need to setup and configer a program like Visual Pinball/Future Pinball etc, but just some tips and tricks to setup your PC to launch PinballX automaticly, etc
 

This is not how to build a pinball Cabinet, but how I setup the PC with a default Windows 11 pro installation and PinballX as a front end.

Installing Operating system

I’m not going to explain how a windows installation needs to be installed on a PC.
I just used the official Microsoft ISO and installed it with a valid Pro key that I bought.
Install the drivers etc that is needed to run the PC smooth

I installed the NVIDIA GeForce experience as well, as I used the record function to record the playfield (see https://forums.gameex.com/forums/topic/25055-guide-how-to-setup-gpu-driver-capture-nvidia-only/ ) 

With a tool called Brutal Removal Tool (BRU - https://github.com/arcadesdude/BRU), I removed the bloatware on the OS that I did not want to use in the operating system.

 

image.png.5bb793cb7e44b17e61d24048779b47b7.png

Be carefully that you don’t delete apps/software that is needed for the operating system !

Set windows to Auto logon

 As the Cabinet needs to be logged on automaticlly, I use the windows auto logon feature.
It is maybe not recommended, but I use my Microsoft account to logon to the system. Its properly better to use a local account (not admin), but that’s what you prefer

Here’s an article that shows different ways how to turn on auto logon : https://windowsreport.com/windows-11-auto-login/

Note : One thing that I didn’t want is to sync my theme across my PC’s as the cabinet is setup with a background from PinballX : loading.png

Here’s a small instruction:

Go to Settings > Accounts > Windows Backup

image.png.62c85148a36dafcd85f039404157d5aa.png image.png.d2b296714608c0193538eefd19430fcd.png

 

Expand Remember my preferences and uncheck Other Windows settings
I also turned off Remember my apps


Restore AC Power Loss
 

This is a very imported option.
You must enter your bios of the computer and enable this feature.
Why ? Most of the cabinets doesn’t have a computer switch on the outside of the cabinet. Just the PC is inside.

This option let the computer turn on, when you completely power off your cabinet and restore the power again.
 

In my cab I made a switch that complete turn off (and on) the cabinets plug extension boxes (and devices attach to it)

Disadvantage of this, is that you create a large power peak when turning all the devices at once.
Advantage is that you can turn on your complete cabinet with just 1 switch.

 

Here are 2 different BIOS version screenshots to power on the pc after AC power loss.

image.png.3a22faf518e78487e1f123d2524dc0ee.pngimage.png.13f8c09937015f17031e61fdc815950a.png

Check your motherboard manual how to setup it for your device.

Managing the PC

As my cabinet has an Ethernet connection on the back, I manage my cabinet software (and pinball updates) remotely.
I use the free version of Team Viewer for it. This is because TV can show all the monitor as a separate screen, and shows the screens 1:1 (resized to the client your running from).
Microsoft RDP is possible as well, but the RDP window isn’t the actual screen size.

On the cabinet I use Teamviewer host that only allows local connections (not from the internet)
image.png.ba82aa149bb03b079b0104c8ad20fc1a.png
Set Incoming Lan Connections to Accept exclusively to only allow LAN connections and no Internet connections

Windows Screen Setup


The screen setup should be configured correctly to show the front end and the emulators in the correct positions.

PinballX can be setup in portrait mode and in landscape mode. Within the settings.exe the rotation can be set, to show the screen correctly.

For years, the recommended setup is to setup all screens in windows in landscape mode :

I use this setup :

image.png.84973f63faabe642b6a7eb09100b331d.png

As I have a real DMD (pinDMDv3), my screen2 is just an HDMI dongle that simulates a screen.
This virtual screen is most of the time disabled in the config.
I enable this (via command line) for Emulators that shows a virtual DMD and I want to mirror it on my real DMD (like Visual Pinball Proc tables, Pinball Wicked etc)

To create different profiles for the screen setup, I use DC2.exe from 12 noon (free version). It can be found here: https://12noon.com/?page_id=641

With dc2.exe, you can export the current display config to an XML file.

First, set your entire displays configuration correctly. This includes resolutions on all screens and the refresh rate of the screens.
Make sure you use the scale & layout settings to 100%.
If the config is fine, run the command to export.
For example you have setup your displays for 4k, landscape and only 2 screen enabled:

DC2.exe –create=Landscape_4k_2Screens.xml



Do this for all the configs you need to use (you can always create afterwards also the config)
I like to start my system in Portrait mode, so when the cabinet starts, the operation system shows correctly when I’m standing in front of my cabinet.
But when doing administration on the cab (updating tables), it is better for me to do it in landscape mode.


Directory Structure

To keep every program/app/tool together for pinball, I use a simple directory structure.
all is placed into my C:\Pinball directory.
The advantage is that I only have to backup this directory to have a complete copy of my system

image.png.51f8c67824ae8a9f1d9cea862cadbbfc.png

As I use a 2TB ssd, I’ve not set my PinupPlayer to the c:\Pinball

All my  pupvideos are on d:\ drive (As they packages can be pretty large)

So my steps to install the software :

  • Create c:\Pinball directory
  • Create a sub directory c:\Pinball\Tools
  • Install VPX (fullpackage) to c:\Pinball\Visual Pinball
  • Install Future Pinball to c:\Pinball\Future Pinball
  • Install PinballX to c:\Pinball\Pinballx
  • Install DBM to c:\pinball\PinballX Database Manager
  • Install DOF & DOFLINX to c:\Pinball\directOutput
  • Install PinemHi to c:\Pinball\PinemHI
  • I’ve created my own P-roc Installation that install all to c:\Pinball\P-roc
  • Install Steam to c:\Pinball\Steam (login and download all the pinball games)
  • Install Epic to c:\Pinball\Steam (login and download all the pinball games)

Software can be found anywhere on the internet, and also how to setup and configure this.

Recommended software updates:

  • B2SBackglassServer
  • VpinMame
  • If you want to create your own videos within PinballX, download ffmpeg.exe and copy it to the c:\Pinball\PinballX directory
  • FlexDMD

 

Small tools/ to keep your cabinet (automated) up to date, can be placed n the c:\Pinball\Tools directory:

  • B2S Designer
  • DMDext (for mirroring a virtual DMD to my real PinDMD3)
  • Display Tools (to change display resolutions).
    Note: Make a sub dir Profiles in the display tools directory where you save all your different display profiles (XML’s)
  • FX3Launcher, Zaccaria launcher & Pinball Wicked Launcher (by Joyrider)
  • Joystick Gremlin and X360CE for simulating joystick for Steam and Epic Games

Off course, I have more tools in this directory, but above are the most important ones to begin with.

Software/Emulator testing

Make sure that your software/emulator is working fine in Windows.
PinballX is powerful, but doesn’t fix any issue with your setup!
So make sure you play pinball with all your buttons/plunger/dof etc in Windows, before importing it in PinballX.
Another Important notice: If you want direct table launch for a pinball emulator/program, test this from the command line. If this is working you can ‘convert’ this to a system within PinballX.

For example a Visual Pinball command:

image.png.a60482d6857a47f4a3bd99c58315afdf.png

Should launch (if you have the correct table name :D )

image.png.7f37de88d9145f8084d4948bd96c19d3.png

Extra Windows changes

 

I’ve made some small modifications to my windows setup, to make it easier to manage my cabinet :

Use SendTo to easily copy files to a directory

Add the VpinMame ROMS directory to the ‘Send to’ dialog, to copy easier roms to the correct folder
Hit WindowsKey+R icon on your system to open the Run dialog
Type: shell:SendTo and hit OK

image.png.5815bb81763dfa913ef00058f63c84b4.png

I removed all the predefined shortcuts in that list (select all and delete)
image.png.e11eef762716d153f5491ab712b146d5.png
and create a new shortcut to c:\pinball\visual Pinball\vpinmame\roms

image.png.6b1d6ca15bdf7ae7847114d20bd8d7cf.png image.png.e6aab1d728a9a34760d2946595fd6fb8.png

 

Now the SendTo will looks like this:

image.png.d29a73d20dfe9237e9f35673c10c8911.png

 

This makes it easier for me to save the roms to the correct location.
if you want, you can do this for multiple other folders as well

 

Clear recycle bin on startup

As administrator of your cabinet, you will properly do many changes on your cabinet. Add/remove tables etc.
I noticed that my Recycle Bin become full every time.
So I setup a scheduled task that will empty the recycle bin during start of the cabinets PC.
open Task scheduler:

image.png.eed3e25112665e87556008fed94b80a6.png

I created a folder Pinball In the root of the task scheduler, so all my pinball tasks can be located on one place.

Right click on Task Scheduler Library and select New Folder …

image.png.12a912b7996c68fc1b318d54881b7daa.png

Right click on the Pinball Folder and select Create Task

image.png.67165d63204ae8ee76903c2fb790091d.png

Give it a name (like: empty recycle Bin)

image.png.076b2456bb4621ba25b8c0c1973c0094.png

Select ‘Run whether user is logged on or not’
Select ‘Do not store password’
Select ‘Run with highest privileges’

On the triggers tab, select New, choose ‘At startup’ and check the ‘Enabled’ checkbox

image.png.14ed18a38bafb1c1ed51f54c412d5c25.png

On the actions tab, click New…

Action: Start a program
Program/script: CMD.exe
Add arguments (optional): /min /c "echo Y|PowerShell.exe -NoProfile -Command Clear-RecycleBin"

image.png.ba13e51698e907f5f1577c368a5cc9dc.png

Click OK until the new schedule task is closed.

NOTE: DO NOT ENABLE STORAGE SENSE on your cabinet. This will clears also your temp directory and causes that PinballX would take a long time to start

 

Turn off windows notifications:

To avoid any popup within window, I turned off windows notifications:

image.png.f22f96c16d9a1ec90967a8b915043f33.png

 

Turning off Widgets in Windows:
Another annoying thing in windows are widgets. Especially on the cabinet.
I turned them off as well the chat and task view

image.thumb.png.20a2e92bdaf4b7f2bca20bc8d1df1201.png

‘Old’ right click options in W11

As I do a lot of copy/paste, and other stuff on a file, I’m faster to have the old right click menu on a file/directory.
Even WindowsKey+f10 isn’t workable for me
Create the following reg key :

Windows Registry Editor Version 5.00
 

[HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32]
@=""

(save about in a text file with the extension .reg and double click to import it)
And reboot the cabinet PC

image.png.1b48aab0514274b34bdd2049c26d5b61.png

Before on right click a file:

image.png.5e308a26d20d3996399da23d95b1218f.png

After modification and restart of cabinets PC:

image.png.b9a0768cdceb75b54d88cc98321b2e92.png

Hardware capture videos

For capturing playfield videos within PinballX, I setup my GeForce hardware capturing.
This will give a better experience as the framerate of the PinballX will be max 30fps and for GeForce capturing it will be 60fps (smoother videos)

I set it up with the following manual: https://forums.gameex.com/forums/topic/25055-guide-how-to-setup-gpu-driver-capture-nvidia-only/

Adding all together

Now we setup and configure the PC, we want to have n experience where we turn on the cab, and it starts PinballX and have all set correctly.
A good option is to use the ‘Run PinballX when Windows starts’ in settings.exe of PinballX

image.png.486b41569d36ff97d88127e2033289b0.png
This will add a shortcut to the startup folder that will run PinballX

To easily go to the startup folder, type WindowsKey+r : Shell:startup

image.png.591725bc66f3bb0250d43b7f77914112.png

image.png.6bb09de2dc07c7a5d8fbe7ef8d3ebe5b.png

But to set everything correct during launch of PinballX, you can define a program on launch within settings.exe.

I have all my PinballX scripts located in C:\Pinball\Tools\PBX Commands
My PinballX start command is called PinballXstart.cmd

This command file controls everything I want to do during launch of PinballX

  • Check if DOFLinx is running. If not, run it
    Doflinx location: C:\Pinball\DirectOutput\DOFLinx.exe
  • Check if Steam is running
    Steam location : C:\Pinball\steam\Steam.exe
  • Kill PinemHi monitoring and relaunch it (this is to avoid any 5 min challenge mode that is sarted)
    PinemHi location : C:\Pinball\PinemHI\pinemhi_rom_monitor.exe
  • Set the correct screen profile with DC2.exe. If this fails, wait 5 seconds and retry
    DC2.exe location : C:\Pinball\Tools\DisplayTools\DC2\dc2.exe
    XML profiles location : C:\Pinball\Tools\DisplayTools\DC2\Profiles
  • ** Optional **
    PinballX location : C:\Pinball\Pinballx\PinballX.exe
    Checks if PinballX process is running, if not, launch PinballX
    This is because I use a shortcut to this command file on my desktop as well (so not to pinball.exe).
    Sometimes I double click on it and launches PBX twice. This will avoid it

Here is my batch file :

@echo off
tasklist /FI "IMAGENAME eq DOFLinx.exe" 2>NUL | find /I /N "DOFLinx.exe">NUL
if "%ERRORLEVEL%"=="0" goto SKIPDofLinx
cd C:\Pinball\DirectOutput
start C:\Pinball\DirectOutput\DOFLinx.exe PINSCAPE=NO 
timeout 3
:SKIPDofLinx

tasklist /FI "IMAGENAME eq steam.exe" 2>NUL | find /I /N "steam.exe">NUL
if "%ERRORLEVEL%"=="0" goto SKIPSteam
start C:\Pinball\steam\Steam.exe -silent
:SKIPSteam

taskkill /FI "IMAGENAME eq pinemhi_rom_monitor.exe" /f
cd C:\Pinball\PinemHI\
start C:\Pinball\PinemHI\pinemhi_rom_monitor.exe
:SKIPPINEMHI

:retry
C:\Pinball\Tools\DisplayTools\DC2\dc2.exe -configure=C:\Pinball\Tools\DisplayTools\DC2\profiles\4kdisplay_landscape_60p.xml -clipboard
IF ERRORLEVEL 0 goto :end
timeout 5s
goto retry

C:\Pinball\Tools\MinimizeAllWindows\MinimizeAllWindows.exe

tasklist /FI "IMAGENAME eq Pinballx.exe" 2>NUL | find /I /N "Pinballx.exe">NUL
if "%ERRORLEVEL%"=="0" goto SKIPPBX
cd C:\Pinball\PinballX
start C:\Pinball\PinballX\PinballX.exe
:SKIPPBX

:End

 

 When quitting PinballX, I also run a command file, that sets the screen correct (portrait mode)

image.png.a0e00d98abc68e9238e230083162bbed.png

 

@echo off
C:\Pinball\tools\DisplayTools\dc2\dc2.exe -configure=C:\Pinball\Tools\DisplayTools\DC2\Profiles\4kdisplay_portrait_60p.xml


 

With just these 2 command files, I always set the screen correct during launch and exit the front end.

Also the programs I want to launch are checked if they are running and will be launched.

 

PinballX itself can be configured in many ways to show exactly what you want.

Check the full user documentation on https://forums.gameex.com/forums/topic/27395-the-complete-pinballx-documentation/ to setup PinballX as you want.

 

Maintaining my PinballX systems

PinballX can use a lot of systems.
A system is a program that could launch a program/emulator that will start your Pinball program (and hopefully with a direct table launch)
To maintain all the systems, I use PinballX Database Manager https://forums.gameex.com/forums/files/file/2499-pinballx-database-manager/
This program has 2 documents included in the installation file, and will explain exactly how you can use this program.

To make advantage of some programs I made myself, I will show you how I update my VPX tables

When I maintain my pinball cabinet, I mostly update VPX tables (And maybe in the near future VPE)
To make life easier, If setup a batch file, that I launch during the start of Databasemanager, that will open 3 folders that I often use :

·         The location of my VPX folder (c:\pinball\Visual pinball\Tables\VPX)

·         Location where I put my backup zip files I downloaded

·         Network location where I put the new software on that I download from my normal PC.

 

The 3 folders will be opened, and set on the correct spot in my desktop that I want:
image.png.326f5e2b4331b89367d65afe2e0536cf.png

Now I can easily updates my files from my Exchange folder (right upper window) and paste it in my VPX tables folder (left upper window).
if I’m done, I always put the files in a folder so I have a lot of backup files of that table (right under folder)

Here’s the command file (it starts off course to set the screen to landscape for better visibility)

<# :
@echo off
C:\Pinball\tools\DisplayTools\DC2\dc2.exe -configure=C:\Pinball\tools\DisplayTools\DC2\profiles\4kdisplay_landscape_60p.xml

setlocal
taskkill /FI "imagename eq explorer.exe"
set "POWERSHELL_BAT_ARGS=%*"
if defined POWERSHELL_BAT_ARGS set "POWERSHELL_BAT_ARGS=%POWERSHELL_BAT_ARGS:"=\"%"
endlocal & powershell -NoLogo -NoProfile -Command "$_ = $input; Invoke-Expression $( '$input = $_; $_ = \"\"; $args = @( &{ $args } %POWERSHELL_BAT_ARGS% );' + [String]::Join( [char]10, $( Get-Content \"%~f0\" ) ) )"

#>

# Create an instance of the Win32 API object to handle and manipulate windows
Add-Type @"
  using System;
  using System.Runtime.InteropServices;

  public class Win32 {
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
  }
"@

# Get a list of existing Explorer Windows
$previous_array = @()
$shell_object = New-Object -COM 'Shell.Application'

foreach($old_window in $shell_object.Windows())
{
    $previous_array += $old_window.HWND
}

# Open three more Explorer Windows in the current directory
explorer "C:\Pinball\Visual pinball\Tables\VPX"
# Pause for 1 second so that the windows have time to finish opening
sleep 1
explorer "\\nasi\Pinball\Exchange"
# Pause for 1 second so that the windows have time to finish opening
sleep 1
explorer "D:\Pinball_install\Tables\VPX_DONE"
# Pause for 1 second so that the windows have time to finish opening
sleep 1

# Get the list of new Explorer Windows
$new_array = @()
foreach($new_window in $shell_object.Windows())
{
    $new_array += $new_window.HWND
}

# Compare the two arrays and only process the new windows
$only_new = Compare-Object -ReferenceObject $previous_array -DifferenceObject $new_array -PassThru

# MoveWindow takes HWND value, X-position on screen, Y-position on screen, window width, and window height
# I've just hard-coded the values, adjust them to suit your needs
[Win32]::MoveWindow($only_new[0],0,0,960,520,$true)
[Win32]::MoveWindow($only_new[1],960,0,960,520,$true)
[Win32]::MoveWindow($only_new[2],0,522,960,520,$true)

This can be modified to whatever you want to launch, but I think it is very handy

 

DBM exit Script

I also have a Database Manager Exit script defined, that will set the screen to portrait mode again (I mostly close my PC after creating videos and let the computer shutdown automaticlly when video creation is fiunished).

It will also run a couple of files, that will create Loading video’s, DMD/topper videos and an old program that will create ‘Most recently’ list in PinballX, but Tom implemented this as well in PinballX itself (but my version is a bit different J)

And for safety, I export my Pinmame and PinballX registry keys and saves it to a backup directory

@Echo off
C:\Pinball\tools\DisplayTools\dc2\dc2.exe -configure=C:\Pinball\Tools\DisplayTools\DC2\Profiles\4kdisplay_portrait_60p.xml
echo Creating reg backup Pinmame
SET DateName=%DATE:~-4%%DATE:~4,2%%DATE:~7,2%
MD C:\Pinball\Tools\Backup\Regbackup 2>nul
reg export HKCU\Software\Freeware C:\Pinball\Tools\Backup\Regbackup\%DateName%_PinMame.reg /y 2>&1 >nul
reg export HKCU\Software\pinballx C:\Pinball\Tools\Backup\Regbackup\%DateName%_Pinballx.reg /y 2>&1 >nul

pushd c:\pinball\pinballx\media
attrib /s -r -h -s Thumbs.db 2>&1 >nul
del Thumbs.db /f /q /s 2>nul
popd
Echo Creating recently updated
"C:\Pinball\Tools\GenerateupdatedXMLs\GenerateUpdatedTables.exe"
C:\Pinball\tools\DisplayTools\dc\dc64cmd.exe -rotate=right

echo Creating real DMD Videos
"C:\Pinball\tools\Create Real DMDvideos\CreateVideos.exe"
echo Creating Loading Video's
"C:\Pinball\Tools\CreateLoadingVideos\CreateLoadingVideos.exe"

 

Here's a video when I power on my cabinet, launch a game and power off again :

 

As you can see, DofLinx is starting (I changed the DOFLINX letters to Pinball and changed the fontsize)
I use multiple plugins from @scutters
The DMD videos are created automatically and are available on the FTP of gameEx
Loading videos are created automatically as well and showed the correct one with the de-randomize plugin of scutters

 

 I hope you like it and can help you to setup your cabinet

 

 

 

 

  • Like 2
Link to comment
Share on other sites

  • Mike_da_Spike changed the title to [GUIDE]How I setup my ‘Awesome looking Pinball Cabinet’ with PinballX
  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...