Mike_da_Spike Posted October 12, 2022 Posted October 12, 2022 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. 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 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. 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) 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 : 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 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: Should launch (if you have the correct table name ) 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 I removed all the predefined shortcuts in that list (select all and delete) and create a new shortcut to c:\pinball\visual Pinball\vpinmame\roms Now the SendTo will looks like this: 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: 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 … Right click on the Pinball Folder and select Create Task Give it a name (like: empty recycle Bin) 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 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" 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: 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 ‘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 Before on right click a file: After modification and restart of cabinets PC: 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 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 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) @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: 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 2 Quote
Tom Speirs Posted October 23, 2022 Posted October 23, 2022 Good stuff. My only suggestion over this would be anydesk over teamviewer. Quote
Mike_da_Spike Posted October 23, 2022 Author Posted October 23, 2022 5 hours ago, Tom Speirs said: Good stuff. My only suggestion over this would be anydesk over teamviewer. I wasn't aware that anydesk had a free license as well.maybe that will work better than TV. I will give it a try 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.