NukeFX - Documentation
WIP V 1.7
This is a work-in-progress. I want all feedback, good or bad. Please let me know how it worked for you.
Short version history of Pinball FX2 launcher - NukeFX
Version 1.7 - 2014/10/04: Added support for older offline versions of Pinball FX2. See below "My tables are in a different order, now what?"
Version 1.6 - 2014/10/03: Added new pause and in-game instruction support. Press 'P' to pause, 'I' for info. Press again to return to game.
Version 1.5 - 2014/10/01: New smart exit features added with three different exit options: kill, savekill and saveexit. See "ExitMethod" below.
Version 1.4 - 2014/09/28: Guessing engine improvements based on tester feedback.
Version 1.3 (beta) - 2014/09/20: Small group of testers - thank you for your feedback, guys!
Version 1.1 - 2014/08/15: Optimization and making everything a sub or function; work on making it smarter and faster.
Version 1.0 - 2014/07/3: Alpha version - local testing and debugging (lots and lots of debugging); busting my ass to make something great.
I know this document is kind of long but I want it to be clear. I want you to be able to do this yourself in one sitting with no outside help needed.
Hopefully this program will help you. My email is listed at the top of this page so if you need help, contact me and I will see what I can do.
If someone contacts me I will update the documentation to address their issue so all can benefit from their question(s). If you want to help make NukeFX better or add support for a new feature just send me an email.
This will work for PinballX and HyperSpin, and it should work with HyperPin (soon) and any other system that can pass the table name in quotes along a command line. If you test this with another system and it works, please let me know so I can add instructions for that system.
HyperPin does not support Pinball FX2 tables but if they just added the support it would work the same way as all the other systems. Please, anyone that can put pressure on the guys at HyperPin to support Pinball FX - do so! Write emails, talk about it on the forums, ask loudly and it should happen. Go comment on this post. All they have to do is make HyperPin look at three subfolders instead of two for XML files and give us a place to point to a launcher like this one.
I don't have access to the Xbox Live / Windows 8 app version so I don't know if that works with this. If someone could post some screenshots and path information, that would be helpful.
Tips / Notes
A few tips and notes before we begin:
Thanks for actually reading this file first! You just saved yourself a lot of time. If you just try to run the .EXE straight off, it will fail.
You should disable Windows UAC. PinballX, Pinball FX2, Pinball Emulators, and NukeFX all run better without the extra interference UAC creates. This will help avoid issues created by hidden security warnings and popup windows.
Click "Start" then search for UAC click on it to launch the UAC screen then drag the slider all the way to the bottom and click "OK"
Before you do anything else, open Pinball FX2 (NOT NukeFX), and take a screenshot if you can. This will be helpful if the guessing engine is not successful later on. If you can't take a screenshot that's OK. Just read on and make a few notes for use later in the setup.
Now that you have Pinball FX2 running, make a note of the size of the grid on the table selection screen. Mine is 7x8. Yours might be 7x7 or 6x9 or something else. Select the football table, then select the top left table (it should be "Zen Studios"). Start that table, then back out and exit Pinball FX2
Well, that was easy right? Now move on the Getting Started section.
Let's get down to the business. First make sure you have all the files needed to run NukeLauncher. They are all in the zip file you downloaded from our homepage.
If you don't have them here is another link: Download Nukelauncher ZIP
Make sure you have the files in the correct location. See example paths listed below.
Your NukeFX files must be run from the correct folder.
For the Steam version it's the folder where Steam.exe is located.
For the offline version of Pinball FX2 it's the folder where Pinball FX2.exe is located.
For the Xbox Live App version it's the folder where Pinball FX2.exe is located.
Steam: C:\Program Files (x86)\Steam\
PC/Offline: C:\Program Files (x86)\Microsoft Game Studios\Pinball FX\
Xbox Live: C:\Program Files\WindowsApps\Microsoft.Studios.PinballFx2_1.3 .0.452_x86\
If you are using the Steam version your NukeFX files should be located in the main steam folder where steam.exe is like shown above and in the screen shot. If you place your files here NukeFX will auto detect that you are using Steam and will automatically know to use the proper command line for Steam. This is how the game will be launched - "Steam.exe -applaunch 226980"
Special note to Steam users: Do not put the NukeFX files in this location "C:\Program Files (x86)\Steam\steamapps\common\pinball fx2"
If you don't use the proper path you will get a security warning, Pinball FX2 will crash, or you may get the dreaded "Steam is still running" message. If you just downloaded this and opened it from your downloads folder or desktop, now is a good time to move it to your Pinball FX2 or Steam folder. Move all the files that came in the zip there now and continue with the next step.
Also make a note of this location you will need it later in the setup.
Your file locations may be different but these are the default locations Pinball FX2 installs to.
The Xbox Live Example Path is a hidden folder, so in order to see it you will need to follow some more steps. More Info
Always run apps like PinballX, NukeFX,Pinball FX2. as Administrator.
To do that right-click on each .exe and click on "Properties." Then click the "Compatibility" tab and check the box "Run this program as an Administrator" and click "OK."
See screen shot if you need help.
If you're in a hurry and don't want all the details of each setting, just do the following sections and give it a try.
Read and perform the steps in the following sections: "XMLFile", "GridDimensions", and "How to launch." After you have set those three variables you should be up and running. Then you can come back and do some tweaking. In order for this to work, you must have all of the Pinball FX2 tables in your XML file. If you haven't bought a table or don't want it to show in your front end, edit your XML file and mark the ones you don't want to show as <enabled>False</enabled>.
However, I recommend you read through everything first. You will benefit from having a clearer understating of what everything is and how it all works.
If you run into problems, come back here and look through all of the information including the troubleshooting section.
Edit the "XMLFile" to point to your Pinball FX2.xml database. It will read the PinballX and Hyperspin databases.
Example Path: C:\PinballX\Databases\Pinball FX2\Pinball FX2.xml
Example Path: C:\Hyperspin\Databases\Pinball FX2\Pinball FX2.xml
XML database Pinball FX2.XML ready to drop in place. Tip: right click and (save as)
This very important but at the same time optional. Let me explain in the notes below.
If you point this to your Pinball FX2.xml file it will attempt to parse the XML and extract your unique Pinball FX2 table names. You may have used dashes (-), underscores (_), or removed all the spaces from the file names when you downloaded your media files. This would make your media files list different than mine. Take this table name for example: STARWARS_Episode_4. This is how Zen Studios named that table, but when I went looking for the wheel, backglass, and table images they had names like "STARWARS - Episode 4" or "STARWARS - IV" or "Star Wars - Episode IV A New Hope" or "SWANH." So I settled on my own naming convention and made all of my media files match, then I added that name to my XML file. I wanted to make a program that everyone can use, but I had to know the way they named their files and how they correlate to the menu locations of Pinball FX2. So I went to work writing some code to untangle this mess and I think I found a great solution.
I call it the Guessing Engine. I won't bore you with descriptions of my coding prowess (the code is not really all that complicated), but the bottom line is it works perfectly about 98 to 99 percent of the time. Back to where I started, the XML is OPTIONAL. If you enter it my code will try to work its magic and match up all of your table names with the positions in the menu grid. If you don't add it you will need to manually edit the PinballTables and FootballTables files and add your table name in the proper order. See Section "Manually add your tables" under "Trouble Shooting / FAQ".
Enter the dimensions of the grid of tables displayed on the main menu of you Pinball FX2 game. This will vary depending on your version and screen orientation.
Default: 8x7 assuming you are running Pinball FX2 in Portrait/Vertical in a pinball cabinet. If you are running in Landscape/Horizontal then its probably going to be 7x8.
They will change this over time as they add new tables. You will need to come back and change the grid dimensions when they change.
To find your dimensions open Pinball FX2 and count the number of rows (side to side) and the number of columns (top to bottom) and enter those dimensions on the line called "GridDimensions" in the following format: "Rows"x"Columns".
Example: 8x7 default for Portrait - Vertical (see example image)
Example: 7x8 default for Landscape - Horizontal (see example image)
This was a fun puzzle to work out. Other launchers hard-code the football table to be always selected on start up of Pinball FX2. So they just make the first keystrokes UP and then LEFT five times, which works great if you're playing in landscape mode. If you're playing in portrait mode the tables will be off and it will always pick the wrong one. That's easy to fix, but if you don't know how to do it you end up waiting for someone to release a new launcher. Then let's say Zen Studios adds another table and you're dead again until someone fixes it or you learn to recode it yourself. That all sucks.
So what I did was worked out a system that always knows where the football table is. Then I based all keystrokes from that point. No more waiting for the launcher to move to the top left position and then move back down to the table you want to play. NukeFX just knows that the start position is Football table and then calculates the quickest path to the table you want to play. It's much faster and more flexible than other solutions because if Zen Studios adds another table you just add the name to the beginning of your "PinballTables" variable in the NukeLauncher.ini file, and everything re-adjusts to its new position. No coding or waiting!
Do NOT change this setting at first. Only change it after everything else is working correctly.
If you want NukeFX to use the single player option, leave it set to "1". Default: 1
If you want NukeFX to automatically select multiplayer / Hotseat, change "NumberofPlayers" from "1" to "2", "3", or "4".
Most launchers don't even consider that you might want to play multiplayer. But I wanted you to be able to play alone OR with others (my wife likes Pinball too). I made the default single player but added the ability to alter the way the Launcher carries out the last step of starting the table. Now it will move the pointer to the Hotseat option and select the number of players you want.
Do NOT change this setting at first. Only change this after everything else is working correctly.
Edit "DMDstyle" if you want to alter how the Pinball FX2 DMD displays. More on this below. Default: clean
To use this option you need to do a few things first.
If you are using this on a P2k style cabinet you should click here to see the "P2k" FAQ section.
Getting the X and Y values right for your setup can be tricky. Some lucky people have it easy. Others have had to enter negative numbers and really work to get it to show where they want it to. I hate to do this but Google "Pinball FX2 dotmatrix.cfg" and you will find more help with this.