Hey everyone,
I had some trouble finding current information on setting up Pinball FX3 with Pinup Popper in cabinet mode using my solenoids via DOF, as well as my plunger and KL25Z for analog plunger and nudging, and I wanted to get the information that helped me here in one place to help both my future self and others. This won't be a full step by step, but I will aim to include all the key pieces that you can then find the exact steps to do if you need to via searching. These were pieces that helped me but weren't necessarily obvious coming from using VPX. Hopefully these breadcrumbs will prove useful to others, and if you have any questions please reply and I can update/clarify things. It's been a while since I set this up so it's possible I'm forgetting some things.
I post my full config files as the bottom of this, but will break them down as I go below as far as what does what.
Updated 2024/10/12: Added updates for close script, x360ce, DOFLinx for FullDMD and backglass via Popper.
Requirements
This assumes you already have the following set up and working:
- Pinup Popper frontend
- Visual Pinball X (so you know things are working correctly) with:
- A KL25z board running Pinscape firmware
- DOF configured for solenoids (I use a Sainsmart USB relay for my solenoids)
- Analog plunger via KL25Z
- KL25Z accelerometer configured for analog nudging
Steam
I ran into conflicts with other machines, running games when someone was trying to use the pinball machine, so either create a separate account to use for pinball if you haven't already purchased Pinball FX3, or after installing and configuring things you can set Steam to "Offline mode" to avoid most problems.
Once you have Steam installed and Pinball FX3 purchased (along with any tables you might like) you'll need to go set up cabinet mode. This requires a Personal Activation Code from Zen, which will require filling out a form and taking a picture of your vpin cabinet for them, then waiting for them to get back to you. You can find the instructions here: http://www.pinballfx...7754#end-anchor
Once you have cabinet mode enabled, follow Zen's instructions on that link above for setting up your screen locations.
Open Steam's settings, and go to Controllers. You'll disable everything under "External Gamepad Settings" with the except of "Enable Steam Input for generic controllers".
You should also disable "Steam Cloud Sync" and put Steam into Offline mode if you're going to use the workaround below that deletes save files in order to avoid the "Continue game?" dialog.
Pinup Popper
In Pinup Popper's config, go to emulators and enable Pinball FX3. I had issues with FX3 not having keyboard focus after opening, so that none of my controllers worked. I was able to work around this by editing the Launch Script section of Pinup's emulator settings for FX3 and making sure the line that launches VPXSTARTER.EXE ended in the "3 0 5" values described here: https://www.nailbust...id=focus_issues
START "" "[STARTDIR]Launch\VPXSTARTER.exe" 5 5 20 "Pinball FX3" 3 0 5
Past that, you should be able to go to your Games Manager in Pinup's config and add games as you would to VPX. It's worth mentioning that for me, all tables were listed when adding new games, even ones I hadn't purchased, which would then not launch if I mistakenly added them, so make sure you add just the ones you've purchased.
You can add backglass images in "[Steam install directory]\steamapps\common\Pinball FX3\data\steam\" I used this collection: https://1drv.ms/f/s!...z5oXzf?e=iYO6U1
Alternatively, just use the backglass images in that collection as your backglass media for each table in PinUp Popper, and in table settings set the backglass screen to be left on. This will keep that backglass in place while you play, which I've found better as then the backglass doesn't disappear/reappear when starting a table. If you do this, just turn off "Backglass repositioning" and set the backglass width & height to 0 in your FX3 cabinet settings so it doesn't block PinUp Popper's backglass image once the game starts.
At this point, you should be able to open Pinup Popper and see your FX3 games listed, and they should launch and your buttons work, but not your solenoids, plunger , or nudging.
Use Popper's DMD
The DMD isn't always great looking in FX3, but you can use Popper's instead by following the directions here: https://www.nailbust...p?id=popper_fx3
For me, this meant changing the DMD size on FX3's settings to 520 width and 136 height, with both the vertical and horizontal positions set to 0 to hide the built in DMD under the playfield. Then, in the Pinup config emulator's Launch script section, uncomment the following lines:
rem remove the next two rem lines to setup PUpDMD for FX3 cd /d "%PopperInstDir%\VisualPinball\VPinMAME" start /min "" "PUPDMDControl.exe" FX3 PINUP\[GAMENAME]
You'll also need to close it on exit, so add this line to the bottom of the Close script (you need a timeout of 2 or 3 here to make sure things are closed entirely before killing processes, or PUPs can still be left running, etc.):
timeout 2 taskkill /f /im "PUPDMDCONTROL.exe"
Get rid of "Continue?" Dialog
If you exit FX3 before finishing a game, the next time you open it, it will pop up a dialog asking if you want to continue your previous game or start a new one. You can't easily dismiss it on a cabinet without selecting continue, and I find it pretty annoying as it may have been someone else playing the cabinet before you. There isn't a way to turn this feature off officially in FX3, but you can delete all the save files on start up. Only add this is you really don't care about ever having save files in FX3.
Add the following to the top of your Pinup config's emulator launch script section for FX3, just after the "@echo off" line:
rem remove save files to avoid "continue?" dialog and always start a new game
for /D %%i in ("[DIREMU]\userdata\*") do del /Q "%%i\442120\remote\SAVEGAMES\*.DAT"
No more annoying popup dialog. Yay!
Entering different high score initials
First, be sure to open Pinball FX3's settings and go to UI/Streaming and enable the option "Enter Initials - Classic" so that you can enter initials with the flippers rather than a keyboard.
The first time you get a high score on a table in FX3, it lets enter initials this way as you'd expect. However, the next time you get a high score it (even if it's player 2 and the initials were entered on player 1!) it will auto complete the same initials as last time with only a Save? prompt and no way to enter new initials.
To work around this, I went to my Pinscape configuration and configured the "Shift" key value for my left flipper to be Backspace. My "Shift" key is my Launcher button, so when I get to this initials screen I can hold Launcher and press left flipper a few times to erase the initials and input new ones.
DOFLinx
Next, you'll need to install DOFLinx to allow FX3 to use your DOF setup. You can grab it here: https://www.vpforums...&showfile=12318
I used version 7.46. Since FX3 is 32-bit, I only used the 32-bit version of DOFLinx in my 32-bit DirectOutput configuration. For instance, I had a DirectOutput-x86 directory containing DOF and my configuration I used for VPX. I extracted the contents of the "32 bit" directory from the DOFLinx zip file to the top level of my DirectOutput-x86 directory, so that DOFLinx.exe itself and the others were in there, not in a sub directory. I then extracted the "FX3" directory from the zip file into a sub directory called "DOFLinx_FX3" in my DirectOutput-x86 directory. I also extracted the "FX3_PUPlayer" directory as a directory called "DOFLinx_FX3_PUPlayer" in my in my DirectOutput-x86 directory.
I had to then configure DOFLinx to point to my DOF configuration, as well as map which solenoids were fired when. I have 4 solenoids - one for each flipper, and one for each slingshot. I re-use the slingshot solenoids for any left or right bumpers and any center bumpers I fire both of them. I did this by listing config twice in my DOFLinx.INI file for the center bumpers, pointing at each of the 2 solenoids I wanted to fire together. Here's the entire contents of my DOFLinx.INI file, which should be in the same directory your DOFLinx.exe is in:
#### # System generated DOFLinx.INI file at 10:12:40 AM Monday, January 22, 2024 #### DEBUG=0 DIRECTOUTPUTCONFIG=C:\vPinball\DirectOutput-x86\Config\directoutputconfig40.ini DIRECTOUTPUTGLOBAL=C:\vPinball\DirectOutput-x86\Config\GlobalConfig_b2sServer.xml #PATH_B2S_SERVER=C:\vPinball\VisualPinball\Tables\ PATH_FX3=C:\vPinball\DirectOutput-x86\DOFLinx_FX3\ #PATH_FX3_B2S=\ PROCESSES=Pinball FX3 PROCESS_TO_ACTIVE_TIME=1 # 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 OUTPUT_GAME_NAME=1 #CLOSE_DEVICES_BETWEEN_ACTIVE=1 FX3_FOCUS=1 L_FLIPPER_KEY=A0 R_FLIPPER_KEY=A1 L_FLIPPER_OUTPUT=301 R_FLIPPER_OUTPUT=302 LINK_LF=301,100,10000,255 LINK_RF=302,100,10000,255 LINK_LS=303,100,500,255 LINK_RS=304,100,500,255 LINK_ML=303,100,500,255 LINK_MC=303,100,500,255 LINK_MC=304,100,500,255 LINK_MR=304,100,500,255 LINK_BL=303,100,500,255 LINK_BC=303,100,500,255 LINK_BC=304,100,500,255 LINK_BR=303,100,500,255
If you'd like, you can use PUP packs for the DMD to have an animated FullDMD matching each table. You can grab these here: https://pinballnirva...en-setups.6085/
Copy the directories for any tables you'd like into your PinUpSystem\PUPVideos\ directory. Then, change your DOFLinx.INI file's PATH_FX3 to be: "PATH_FX3=C:\vPinball\DirectOutput-x86\DOFLinx_FX3_PUPlayer\"
Note: If you go this route, when you first play any each FX3 table you'll need to press alt+tab to the "Virtual DMD" window and use your mouse to move and resize the DMD to be the right size in the right location of the PUP animation playing on the DMD, then right click on it and hit "save positive for <table name>".
Next, open Pinup's config and go to emulators, then FX3. In the Launch script section, add the following towards the top of the script, under "@echo off" and under the save game removal lines if you added them above:
rem start DOFLinx cd /d "%PopperInstDir%\DirectOutput-x86" start /min "" "DOFLinx.exe" timeout 10
You may have to play around with the timeout value depending how fast/slow your system is, you just want to give DOFLinx.exe enough time to fully start up before FX3 opens.
Also, add the following line to close DOFLinx.exe on exit by adding this to the bottom of your Close script section:
taskkill /f /im "DOFLinx.exe"
x360ce
This is the controller emulator that will bridge your KL25z plunger/accelerometer inputs to analog controller axis that Steam/FX3 will understand.
I probably found the most out-of-date information about this piece, suggesting using older versions, etc. to get it working with existing instructions. The newer version behaves differently, and so needs to be configured differently to work with FX3.
Grab the latest version from here: https://www.x360ce.com/ (I used version 4.17.15.0 from 2020-11-15).
I unzipped this and put the x360ce.exe file in the top level of my C:\vpinball\ directory, but it shouldn't really matter where it goes, but we'll assume that's where it is for the rest of these instructions.
Double click x360ce.exe to launch it to configure it. Click "Add Game" and add your "Steam.exe".
On the Controller 1 tab, uncheck the "Auto map" checkbox, and click "Add..." to the right of that, and add your Pinscape controller.
On the General tab below, click Clear and then set the left stick X Axis to Axis 1, and Y Axis to Axis 2. Set the right stick's Y Axis to IAxis 3.
On the Options tab, uncheck the box "Allow only one copy of Application at a time". This can sometimes cause x360ce to not reopen when tables have been open/closed a few times, even though the old process has been killed.
On the Left Thumb (used for nudging) tab you'll likely want to adjust things for sensitivity. This will likely vary setup to setup, but as a starting point for both X and Y Axis I have my Anti-Dead Zone set to 50%, my Dead Zone set to 5%, and my Sensitivity set to 100% with the Inverted box checked.
On my Right Thumb (used for plunger) tab, I have everything left at 0. I should probably revisit this at some point and tweak it.
Now, in your Pinup config emulator's FX3 launch script section, add starting x360ce - I put mine just before DOFLinx and its timeout.
rem start x360ce cd /d "%PopperInstDir%" start /min "" "x360ce.exe"
And on the Close script kill it on exit, otherwise it interferes with the plunger working normally on VPX tables if it continues to run:
taskkill /f /im "x360ce.exe"
Open Pinball FX3, enter the Options menu, then Controls. Scroll the top over to Xbox One Controller, and make sure the "Manual Ball Launch" is set to "RS" (Right Stick") and that the "Nudge Table" is set to "LS" ("Left Stick"), then close Pinball FX3 and test launching a table in it via Pinup Popper and make sure your plunger and nudging work as expected.
Full Pinup scripts
Here's the entire versions of my Launch and Close scripts from Pinup Popper's emulators config section for FX3, with everything added from above.
Launch script:
@echo off
rem remove save files to avoid "continue?" dialog and always start a new game
for /D %%i in ("[DIREMU]\userdata\*") do del /Q "%%i\442120\remote\SAVEGAMES\*.DAT"
rem start x360ce
cd /d "%PopperInstDir%"
start /min "" "x360ce.exe"
rem start DOFLinx
cd /d "%PopperInstDir%\DirectOutput-x86"
start /min "" "DOFLinx.exe"
timeout 10
rem remove next two rem to use or setup DMDEXT for FX3
rem cd /d "%PopperInstDir%\VisualPinball\VPinMAME"
rem start /min "" "dmdext.exe" mirror --source=pinballfx3 -q -d auto --virtual-hide-grip --virtual-position=x y w -o PinUP\[GAMENAME]
rem remove the next two rem lines to setup PUpDMD for FX3
cd /d "%PopperInstDir%\VisualPinball\VPinMAME"
start /min "" "PUPDMDControl.exe" FX3 PINUP\[GAMENAME]
SET ALTPARAM=
if "[ALTMODE]"=="classic" (SET ALTPARAM=-class )
if "[ALTMODE]"=="hotseat2" (SET ALTPARAM=-hotseat_2 )
if "[ALTMODE]"=="hotseat3" (SET ALTPARAM=-hotseat_3 )
if "[ALTMODE]"=="hotseat4" (SET ALTPARAM=-hotseat_4 )
START "" "[STARTDIR]Launch\VPXSTARTER.exe" 5 5 20 "Pinball FX3" 3 0 5
START "" "[DIREMU]\steam.exe" -applaunch 442120 %ALTPARAM% -table_[GAMENAME]
Close script:
"[STARTDIR]LAUNCH\PUPCLOSER.EXE" WINTIT "Pinball FX3" 4 1 rem Remove "rem" on the next line to close DMDExt after exiting a table. rem taskkill /f /im "dmdext.exe" timeout 2 taskkill /f /im "PUPDMDCONTROL.exe" taskkill /f /im "DOFLinx.exe" taskkill /f /im "x360ce.exe"
Wrap up
That's all I remember for now about my current setup, I'm sure I've missed some things, but I'll update here as I remember them or as people have questions that I need to fill in. I hope this helps someone else!
Edited by overridex, 12 October 2024 - 07:59 PM.



Top









are all trademarks of VPFORUMS.