Troubleshooting Tips

This section is a collection of miscellaneous troubleshooting ideas to help diagnose and (hopefully) fix any problems you run into with PinballY.

General troubleshooting tips

Later in this section, we have a list of the most common problems that people have run into in the past, with specific solutions, so check through the list to see if you can find your particular issue. However, if you can't find any information here on the specific issue you're having, here are a few basic troubleshooting techniques that can be applied to many sorts of problems.

Try reverting to default settings

A few people have run into problems that turned out to be due to unintended settings changes. So an easy first step in troubleshooting is to reset everything to the default "factory settings", to see if the problem goes away with default settings. It's easy to do this, and what's more, it's easy to do it temporarily, as a test, without losing your custom settings.

Here's what makes it easy to revert to defaults (temporarily or permanently): All of PinballY's settings are stored in a file in the PinballY install folder called Settings.txt.

If you want to discard all of your custom settings entirely, simply delete Settings.txt. This is an easy fix if you think you've screwed up the settings beyond repair, or you just don't want to bother going through everything individually to figure out what's wrong. If Settings.txt is missing when PinballY starts up, PinballY will use factory defaults for all settings.

It's also easy to temporarily revert to default settings, without losing all of your custom settings. This lets you do a quick test to see if a problem is related to a settings change, without losing anything and without having to tediously set everything back the way you like it. Here's the procedure to temporarily revert to defaults:

All of PinballY's settings are stored in Settings.txt, so you don't have to worry about hunting around for other files, registry settings, etc. No one can quite believe that when I tell them, because we all know from experience that Windows programs like to scatter their settings far and wide and secret them away in hidden corners of the operating system. But I was very careful in PinballY not to do that, because I know what misery that causes in other programs.

By the way, Settings.txt is a simple text file in human-readable format, so you can easily look at it with Notepad or any other plain-text editor. It even has lots of comments explaining the various settings variables. Don't be afraid to open it in Notepad if you want to see what's inside. It's a good way to see all of the settings in one view, rather than having to page through the different sections of the options dialog.

Check the log file

Many problems can be solved (or at least diagnosed) by checking PinballY's log file. Every time you run PinballY, it creates a log file called PinballY.log in its main program folder. As the program runs, it writes a bunch of miscellaneous status reports to the log file about what it's trying to do. It also records technical details here about any Windows system errors that are encountered. These sorts of technical details are usually omitted from on-screen error messages, since most people find the Windows error codes to be largely useless techno-gibberish, but once in a while it's helpful to know exactly what's going wrong under the covers. So the log file tries to keep track of many of the technical details that are intentionally hidden from the on-screen UI, just in case they're needed.

You've probably experienced situations where too much information is as bad as no information at all. Too much can create a haystack that makes it hard to find the needle. PinballY therefore lets you control the amount of information reported in the log file, via the Log File page in the settings. That page lets you filter the type of actions that PinballY reports in the log. So before you consult the log file, you should go to the Log File options page and make sure that reporting is enabled for the subsystem that you're trying to troubleshoot. You might also want to turn off logging for unrelated areas, to minimize the amount of other reports that you have to sift through.

Asking for help/reporting bugs

If you can't find what you're looking for in this Troubleshooting section or elsewhere in the help files, try asking on the vpforums pin cab forum. I regularly monitor that group, so I should be able to help if someone else doesn't get to your question first.

For any problem that's pretty clearly a program bug, you can raise it on the forum, or you can file a bug report using the PinballY issue tracker on GitHub. Before filing a report, please read How to write a good bug report. Following that advice will improve the chances that I can find and fix the problem.

Some common problems (and suggested solutions)

The topics below list some of the more common problems that I've heard about, with suggestions for fixes or ways to gather more information. Scan through the list to see if you can find anything that sounds similar to any issues you're having.

PinballY doesn't have keyboard focus at system startup

Symptom: You've set up PinballY to start up automatically with Windows, but each time you start up the system, PinballY ignores key presses. You have to click on the PinballY window to give it keyboard focus.

Causes: If you're using Windows 10, this is probably due to a change that Microsoft made in Task Scheduler (which PinballY uses for startup launching). Microsoft changed Task Scheduler in Win 10 so that it doesn't give keyboard focus to the programs it launches. This might sound like a bug, and it kind of is for our purposes, but they did this intentionally because they consider auto-launch programs to be "background" tasks that shouldn't interrupt the user. It would have been nice if they'd provided an option setting one way or the other on that, but they didn't.

The only solution I've found to this issue is to make PinballY force keyboard focus into its own window at some time after it starts up. In the Startup options dialog, try checking the box for "Force keyboard focus to PinballY at startup". If that doesn't help, try increasing the delay time on the focus change.

If all else fails, you can try pressing and holding the Exit Game button for about five seconds. That's something you can do at any time to bring PinballY to the foreground and give it keyboard focus.

If you're using a pre-Windows 10 system, Task Scheduler normally does give focus to newly launched tasks. The most common thing that can interfere with PinballY's keyboard input is another program "stealing focus" by starting up shortly after PinballY does. In most cases, Windows gives focus to the most recently launched program. That means that if another program launches shortly after PinballY during your system startup process, the other program usually gets focus, taking focus away from PinballY. To deal with this, you can try increasing the starting delay parameter in the Startup options dialog ("After logon, pause before starting PinballY"). The idea is to delay PinballY's launch long enough that it's always the last thing launched during system startup.

The PinballY backglass window is blocking the game's backglass

Symptom: When you launch a game, from PinballY, PinballY's backglass window shows up as a blank, black expanse that blocks out the game's live backglass window.

I've heard from a couple of people who experienced this problem using Visual Pinball in a "two-monitor" system, where they have both the backglass and DMD windows placed on the same monitor (in other words, they don't have a separate, third monitor for the DMD window). In this situation, the game's backglass window can sometimes end up behind the PinballY backglass window, which shows nothing but a black background while the game is running.

The reason that the PinballY backglass window is on the screen at all while a game is playing is that it allows for a smoother visual appearance during launch. The PinballY backglass window fills the screen until the game has placed its own window in front of it, so you don't see a bunch of flashes and redraws switching back and forth between PinballY, the Windows desktop, and the new game. This usually works out the right way, with the game's live backglass in the foreground, because Windows by default places a newly launched program's windows in front of any windows that were already on the screen. The problems come in when you start messing with the options in VP to control the layering between the game's DMD and backglass windows, which you might have to do to get the game's DMD window to stay in front of the game's backglass window.

There's a fairly simple solution that you can implement with a little bit of Javascript, which is to hide the PinballY backglass window whenever a game is running. That should get it out of the fight over who's in front that's raging among the VP windows, hopefully letting VP sort out its window layering without the PinballY windows getting in the way. See Hide a Window During Play in the Javascript > Worked Examples section.

PinballY loses keyboard focus after finishing a game

Symptom: PinballY stops responding to button or key presses until you click the mouse in one of its windows.

As I'm sure you know, Windows has a concept called "keyboard focus", where it only sends keyboard input to one application at a time. The window that receives keyboard input is, in most cases, simply the frontmost window on the screen. On a desktop PC, this is usually so intuitive and automatic that you don't have to think about it; you just use the mouse to click on the window you want to work with, and that window comes to the front and gets control over the keyboard. However, with a virtual pin cab, you probably don't want to keep a mouse handy all the time. That removes the usual way that we manually change keyboard focus. To make up for the missing mouse, PinballY tries to manage focus as automatically as it can, by switching focus between itself and the running game as games start and exit. But this isn't always perfect, because other programs you're running might also be trying to manage focus in their own way, so PinballY's idea of where focus should go at any given time might sometimes get overruled by another program or by Windows itself.

If PinballY ever does seem to lose focus - that is, it doesn't respond to key presses even though it's in the foreground - there's a way to restore focus to PinballY without using the mouse. Simply press and hold the EXIT GAME button for about five seconds. (The EXIT GAME button is usually the Escape key, but you can change this in the settings under Buttons.) This should force PinballY back into the foreground and give it keyboard focus again.

One of my monitors goes into sleep mode after PinballY starts

Symptom: One of your monitors goes completely blank, shuts off, or goes into power-save mode or sleep mode, a few second after PinballY starts up.

A couple of people have reported seeing this when they enable the option "Force keyboard focus to PinballY at startup" (in the Startup section of the settings dialog). That option tries to force keyboard focus into the PinballY window by sending a synthetic mouse click to the main PinballY window a few seconds after the program starts. My best guess about why a mouse click could make a monitor go into sleep mode is that there's an interaction with some other program that happens to be installed on the affected systems. There's probably a hidden icon being created by that other program for "power down this monitor" that the synthesized mouse click is hitting. Until someone can identify the specific source of the problem, the simple solution, if you're running into this, is to turn off the "Force keyboard focus" option in the settings.

Errors messages about missing DirectX components

If PinballY shows an error message about missing or outdated DirectX components as soon as you launch the program, it usually means that you have to update to the latest DirectX 11 from Microsoft.

I hear a lot of people say "But I already have DirectX 11!" when they see these messages, which makes them waste a lot of time trying to find some other solution besides updating DirectX. But you should take this message at face value. You might need an update even if you already have DirectX11 installed, because there are multiple versions of DirectX 11. Windows 7 originally came with an early version of DX11 that's not compatible with PinballY, so you're especially likely to run into this on a Windows 7 machine. This really shouldn't be an issue on Windows 8 or 10, since those systems come with a newer DX11 pre-installed, but I wouldn't rule it out; core system components can sometimes get lost or damaged.

Update instructions for DirectX can be found on the Microsoft website:

https://support.microsoft.com/en-gb/help/179113/how-to-install-the-latest-version-of-directx

Error message saying "MFPlat.DLL not found"

This refers to a Windows system file that's normally installed by default as part of the operating system on Windows 7 through 10, but which Microsoft apparently changed to "optional" status in a newer Windows 10 update. Some people have had it disappear from their system as a result. You can add it back by enabling the "Media Feature Pack" in the system settings:

PinballY makes my video card fans run too loudly/too often

By default, PinballY sends updates to the video card as fast as the video card can process them. If you have a high-performance video card, the processing rate can be very fast indeed, perhaps hundreds of frames per second. On some video cards, the chips get very hot when processing peak loads, which triggers the fans.

You can reduce the video card processing load by selecting the option Lock frame rate to monitor refresh rate in the Audio/Video Options section in the settings. This tells PinballY to reduce its video frame rate to match the physical refresh rate of your monitors. If you have a high-end video card, that should reduce the load on the card to a fraction of its full power, which should reduce the amount of heat it generates.

I'm running PinballY in Admin mode (and something's not working)

Simple answer: Don't run PinballY in Admin mode. If you're running PinballY by right-clicking the program file and selecting "Run as Administrator", or you check the box for "Run as Administrator" in the .EXE file's property page, it's likely to cause a bunch of problems. The program isn't designed to run that way. There is a way to run in Admin mode if necessary, but not by using "Run as Administrator". See the help section on Administrator Mode for the right approach.

But more importantly, you ideally shouldn't need to use Admin Mode at all with PinballY. There are two main reasons that most pin cab people who use Admin Mode think they need to use Admin Mode:

PinballY isn't finding my tables

The easiest way to figure out what's wrong when PinballY can't find some or all of your tables is to look at the log file. PinballY creates this file each time it runs, writing lots of extra technical details on what it's doing during the session. This can usually pinpoint what's going wrong during table searches.

To get detailed information on table searches:

Now read through the file for an account of where the program is looking for table files and what it's finding.

For a detailed explanation of exactly where PinballY looks for tables, see Files & Folders.

I just downloaded a new game, but PinballY didn't add it to my XML files

Symptom: You just downloaded a new Visual Pinball ".vpx" table file (or a new game for whatever other system), and you installed it in the correct Tables folder, but the new game isn't appearing anywhere in your XML files.

Explanation: That's as it should be. The XML files don't get updated just because you download a new .vpx file. You have to tell PinballY to add new tables to the XML files.

Does that mean you have to open the XML files in Notepad and patch them up by hand? Absolutely not! It just means that you have to use the Edit Game Details command from the Game Setup menu. What the XML files actually contain is the bibliographic information for your tables (title, manufacturer, year of release, etc). PinballY can't guess at that stuff based on a .vpx file, so to get that information into the XML files, you have to enter the information yourself. The Edit Game Details dialog lets you do that without having to open (or even know about) the XML files.

If you download and install a new table file (.vpx or whatever else), the new game should immediately appear as an "unconfigured" table in the game wheel, using the filename as the title. For example, if you download Funhouse_v2_mod_07.vpx and install it in your Visual Pinball Tables folder, you should see a new wheel entry with the title Funhouse_v2_mod_08 when you return to PinballY. (There's no need to exit out of PinballY and restart it; PinballY scans for new files whenever you bring it back to the foreground after using other Windows applications.) Here's how to add the XML entry for a new game:

If you can't find the new game anywhere in the wheel, after the table file is properly installed in the appropriate Tables folder, check the option setting for Hide unconfigured games in the Game Wheel section of the settings dialog. If you checked that box, PinballY hides games that don't already have XML entries. You can un-check that box to restore the display of games without XML entries. Or, if you prefer not to show unconfigured tables routinely, you can selectively show just the current set of unconfigured tables using a game wheel filter. Bring up the Operator Menu and select Show Unconfigured Games. If you still can't find the new game, try the steps under the topic PinballY isn't finding my tables above.

See Unconfigured Table Files in the Usage Tips section for more on viewing and setting up new games.

PinballY isn't showing media for my tables

As with table search problems, the log file is the first place to look when PinballY isn't finding your media files. If you're having trouble getting most or all of your media files displayed, try this:

Now read through the file for an account of where the program is looking for media files and what it's finding.

If you're having trouble with media for just a few specific games, try the built-in media list viewer:

That will display details on where the system is looking for the game's media, the filename(s) it's looking for, and the full names and locations for all of the matching files. You can check the file names that PinballY expects to find against the actual files on your disk, and likewise check the directory paths to make sure that you're placing the files where the program is looking for them.

For a detailed explanation of exactly where PinballY looks for media, see Files & Folders.

I have a VP X game, but I can only select VP 9 in the Edit Game Details box (not VP X!)

Here's the situation:

The most likely problem (and solution) is described in the topic PinballY thinks my Visual Pinball X tables are Visual Pinball 9 tables below.

PinballY thinks my Visual Pinball X tables are Visual Pinball 9 tables

Did you just migrate to PinballY from PinballX? And did you tell PinballY to use the table databases and media files you already had set up for PinballX? If so, here's what's probably wrong:

Your PinballX table database folder for Visual PinballX was probably called Visual Pinball

That might seem perfectly natural, especially if you only started playing around with VP games recently and mostly use VP X rather than the older VP 9 games. But PinballY doesn't know that! PinballY is set up by default to work with both VP 9 and VP X. In fact, it's set up to work with multiple versions of VP 9, since there are several sub-versions of VP 9 whose games require those specific versions (like VP 9.2 and "PhysMod 5"). To deal with this, the default settings in PinballY (the ones you get when you first install the program) use the following database folder names:

See the problem? When PinballY loads the system databases, it looks at the settings, and it sees that the database folder for Visual Pinball 9 is called Visual Pinball, so it looks at the tables listed there. But you put all of your VP X games there when you were using PinballX. So PinballY thinks that your VP X games are actually VP 9 games.

Here's the solution:

PinballY should now be in sync with your old PinballX settings. There's no need to move or rename any of the PinballX files. It's just a matter of changing the PinballY settings to match the folder names you're using.

Capture doesn't work with "Exclusive Full Screen Mode"

Symptom: When you run a media capture, you just get a blank image or video, or just error messages, if Visual Pinball (or any other game system) is running in Exclusive Full Screen Mode.

Cause: "Exclusive" mode is so named because it means that the game has exclusive access to the video display; in other words, the game is the only program that's allowed to access the display while the game is in the foreground. This prevents PinballY from being able to access the display to take a screen shot of the game in action.

Solution: Disable Exclusive Full Screen mode in the Visual Pinball options (or whichever other game player program you're capturing from) before running the capture.

That's a bit inconvenient, I know! But you can automate it with a little Javascript. See Custom Game Command Line for Media Capture for the script code needed for Visual Pinball. The Javascript code required actually is pretty simple, so you should be able to adapt it for any other game system as well if needed.

The capture screen location is wrong for the playfield/backglass/other window

Symptom: When you use the "Capture" command to capture screenshots or videos of the running game, the captured videos grab the wrong screen area for one or more windows. They're not aligned with the actual Visual Pinball screen area, so they're clipped or just the wrong areas entirely.

Cause: PinballY doesn't actually know where Visual Pinball's windows are. It doesn't want to make assumptions about which windows go where, because that would require too much hard-coded knowledge of particular pinball programs, which would make the Capture feature less likely to work for new pinball programs (and would also make it likely to stop working every time the other programs are updated).

Instead, PinballY simply captures the screen area of the PinballY windows. The assumption is that you have a particular monitor area that you always use for your playfield, in every player program. And another area that you always use for your backglass, etc. And since you're using those areas in every pinball program, PinballY assumes you're going to use those exact same areas for the corresponding PinballY windows. That makes the Capture feature's choice of screen locations super easy:

So if PinballY is capturing the wrong area for a particular player program, simply move the corresponding PinballY window into the right area before you run the capture.

We chose this scheme because the fixed screen locations are practically a given on a pin cab. A pin cab usually has a whole monitor devoted to each function, so naturally you're going to set up both PinballY and every pinball program the same way, to use those exact monitors. This is less of a given for desktop users, though, so you might have to juggle windows around a little bit during capture if you don't always run every pinball program with the exact same window layout.

When I run capture, the backglass/topper/other window isn't offered as an option

Symptom: When you run the capture command, the list of available media types doesn't include the backglass window, or doesn't include some other window you want to include.

Cause: The window you want to capture must be open in PinballY when you run the capture command. As described in the topic above about screen locations for capture, PinballY figures the screen location for each window type according to the corresponding PinballY window's location. In order to have a location at all, the window has to be open! So the list of available media types only includes the windows that you currently have open.

To bring up any of the windows that you've hidden, simply right-click in the main PinballY playfield window, and select Show Backglass or Show Topper, etc., for whichever window you want to bring back from the invisible. Once you make the window visible, it should show up in the list of available media types the next time you run a capture.

PinballY won't save/restore my backglass window position

Symptom: Each time you start a new PinballY session, the backglass window (or one of the other windows) opens at the wrong position. It won't stay where you left it at the end of the last session.

The usual cause of this problem is that you're running some other program that's changing the screen resolution or monitor layout between sessions. For example, you might be using a program that rotates your monitors or changes the desktop resolution each time you run certain programs, or you might be using a remote access program that changes the screen resolution during remote sessions.

The reason PinballY moves the windows around in these situations is that it normally checks all of the restored window positions to make sure they're in the visible desktop area at program startup. If any windows are outside of the visible area, PinballY moves them into the visible area. This is intended to help with rare cases where you permanently change the desktop layout at the hardware level, such as when you add a new monitor or replace an old one with a new one of a different size. But it can be a nuisance if you routinely change your desktop layout at the software level, such as if you need to change the layout every time you run a certain application.

The easy fix that usually works is to tell PinballY to stop forcing windows into the visible desktop area at the start of every session:

If that still doesn't help, and the window that's not "sticking" to its proper position is in full-screen mode, there's a second option setting that might help:

If none of that helps, try turning on logging for Window layout setup (in the Log File section of the settings dialog). The next time you encounter the problem with a saved window position, exit PinballY and check the log file for details about window layout setup. That should explain why PinballY is making the decisions it's making about window placement, which hopefully will suggest an appropriate solution.

The Windows taskbar pops up every time a VP X game finishes

Try this:

What's going on: this checkbox makes VP ask Windows to turn off the feature inside Windows that lets it draw partially transparent transparent window frames and elements. VP lets you disable this because it can slow down your video card slightly; if you have a low-end video card, enabling composition might slow down your video card enough to cause hiccups in VP, so disabling it might make VP run more smoothly. The snag is that Windows automatically turns composition back on when VP exits, which has the annoying side effect of redrawing everything on the screen, which has the even more annoying side effect of bringing the taskbar to the foreground even if it was hidden.

PinballY can't do much about that, since Windows has ultimate control over what's on the screen. This is one of those situations where Windows asserts its authority and overrides whatever the applications would prefer. So the best way to avoid the problem is to tell VP not to make this change in the first place, so that Windows doesn't feel the need to redo the whole screen layout every time VP exits.

If you really need to disable desktop composition in VP for performance reasons, you might have to live with the momentary taskbar appearance after game sessions. It's possible to disable desktop composition across your whole system in the Windows settings, so that Windows isn't constantly switching it on and off when switching programs - but doing so might prevent PinballY from displaying its graphics properly. So I don't recommend that.

Note that if you have Windows 8 or later, you should definitely un-check the option in VP, because it doesn't do anything anyway! Microsoft made desktop composition a core feature of the operating system starting in Windows 8, so applications can't disable it even if they try. VP will still try if you un-check the box, so un-checking the box might still cause the glitchy taskbar redrawing, but it won't have any performance benefit since Windows will otherwise ignore the attempt.

Menu text (or other text) is missing

Symptom: When you press the Start button to bring up a menu, you just see a blank gray box with a blue highlight line, with no text anywhere to be seen. The game titles shown in the game wheel (for games without icon images) might also be missing.

If you're on Windows 7, this can be caused by some system video option settings. Check the following two settings:

The key appears to be that font-smoothing option. Apparently the Windows drawing functions that PinballY uses to construct the menu and other text graphics depend upon it.

Note that some Windows 7 users intentionally disable the Aero theme because of its performance impact, especially if you have a lower-end video card. If you need to disable Aero for acceptable game performance, you might be able to disable it on a game-by-game basis, instead of disabling it for the whole system. Look in the game player programs you're using for option settings. For example, Visual Pinball has an option in its Video/Graphics Options preference dialog called Enable desktop composition, which you can un-check to disable the Aero elements that affect performance.

PinballY keeps taking control a few seconds after I launch a game

Symptom: Shortly after launching a game, PinballY brings itself back to the foreground, as though the game had already ended, even though the game only just started!

If the game in question is a commercial game based on Steam, or it's Future Pinball with BAM, or it uses any other "two-stage" launch procedure, the problem might be in the option settings for the system.

Steam games and FP BAM games use a complicated launch procedure where you launch one .EXE program, which then launches another .EXE program that represents the actual game. For example, with Pinball FX3, PinballY has to launch the main Steam program file Steam.exe to get the ball rolling (as it were), but Steam.exe then launches a separate program called Pinball FX2.exe. Once that's going, Steam.exe quits and lets Pinball FX2.exe take over.

The thing that makes this tricky for PinballY is that PinballY wants to monitor the launched game program, so that it can figure out when the game is over and it's appropriate for PinballY to take over the screen again. With Steam (and BAM, and probably a few others), the program that PinballY actually launches exits after a few seconds, even though the game is still running in that second process. But PinballY doesn't just magically know that! When it sees the directly launched program quit, it thinks that the game is over and it's time to take over again.

The solution is to explicitly tell PinballY about this two-stage launch setup. PinballY has a special provision for this, because it's pretty common, but PinballY can't figure it out on its own; you have to tell it. The way to do this is to go to the settings dialog, navigate to the page for the system in question, and enter the "final" program name in the Process Name box. The "final" program is the one that's actually left running after the multi-stage launch has finished and the game is really going.

The name you enter in the Process Name box must not include a path, but must include the .EXE suffix. For Pinball FX3, for example, you'd enter Pinball FX3.exe.

See Process Name in System Options for more on this topic.

PinUp Player doesn't close when a game ends (or won't restart after the first game)

Symptom: You're using PinUp Player to show topper videos while running a game with VP. When you exit the game, the PinUp window doesn't close. Or the window might appear to close, but it won't open again if you launch a new game that uses PinUp.

Cause: The basic problem here is that when you run a VP game that uses PinUp, you're actually running multiple Windows programs: VP itself, and PinUp. PinUp is a separate program that runs alongside VP. As such, the PinUp process has a lifetime of its own that's separate from VP's, and most importantly, Windows doesn't have any way to automatically end the PinUp process when VP ends, because Windows doesn't know the two are related. So PinUp can be left running after VP exits.

So how is PinUp supposed to know when to exit? It has to be told when to exit. What's supposed to happen is that the VP table script sends a command to PinUp just before VP exits to tell PinUp to exit at the same time. This requires special scripting code in every VP table that uses PinUp. This arrangement is a bit fragile, unfortunately, because there are a couple of obvious things that can go wrong. One is that some table authors don't know that they're supposed to add that special scripting code to tell PinUp to exit. Another is that VP sometimes crashes, and VP scripts sometimes crash, in which case the special scripting code might never run.

Solution: There are two ways to deal with this. The "right" way is to make sure that every VP game that uses PinUp has that special scripting code that tells PinUp when it's time to quit. This is unfortunately something that has to be done separately in every individual game, so the only way to be sure it's there in every game is to look at each game's script. Ideally, table authors would include the necessary scripting before they release their games, so everything would "just work", but if you've ever used a computer, you know that it's kind of a miracle when anything "just works". A lot of table authors don't realize that they're supposed to add the shutdown code, or they just forget. At any rate, if you want to do things the right way, you should go through your PinUp-enabled VP games and check.

To access a VP game's script, open the game in the VP editor, and select View > Script from the menu in VP X, or Edit > Script in VP 9. What you need to do is scan each script for the special shutdown code; if you find it, great, and if you don't, you should add it. The required code looks approximately like this:

Sub Table1_Exit() Controller.Stop End Sub

The exact code needed can be slightly different, because some tables use a different name for the table object. Notice how the Sub (subroutine) is named Table1_Exit. That's the name in most VP tables - but not all! The Table1 prefix corresponds to the name the script uses for the table itself, which is Table1 by default, but which some table authors change to something else, usually the title of the game. For example, the name might end up being Funhouse_Exit instead. How do you find out? The best way is to search the script for a similar Sub xxx_Init() section. Virtually all VP tables include an Init subroutine. The Exit subroutine should be named with the same prefix you find on the Init subroutine. So if you find a Table1_Init() subroutine, the exit routine should be called Table1_Exit(); but if you find Funhouse_Init(), you have to name the exit routine Funhouse_Exit(). Just use the same prefix you find for the Init subroutine, whatever that prefix is.

The other thing you have to be careful about is to make sure that there's not already a Sub xxx_Exit() section in the script. If there is, you can't add another one - there can be only one. If you find one, check it to see if it already has the line saying Controller.Stop; if it's there, you're all set, and if not, you should add that one line somewhere between the Sub and End Sub lines. I'd add it at the very end, just before the End Sub. If the Sub xxx_Exit() section isn't there at all, you can just add the whole new Sub as shown above, with the proviso that you might have to change the name to match the Sub xxx_Init() section you find in the table script.

I said there were two ways to deal with the PinUp-not-exiting problem. The "right" way is to fix each table's script as shown above. You should definitely do that for all of your tables. But there's also a heavy-handed kludge that you can add if you still have problems even after making sure all of your tables have the Controller.Stop instructions, and that's to make PinballY seek and destroy the PinUp process after each VP game exits. That's not as good as fixing the VP table scripts as described above, because killing any process on Windows can have bad side effects that can destabilize the whole Windows system. So definitely try fixing the table scripts first. But some people have found they also need the kill-process approach. That might be because they have something else wrong with their setups, or they didn't get the Controller.Stop scripts right, so there might be a deeper problem they should be fixing instead. Be that as it may, the "kill process" approach is a solution of last resort if you can't get it working the other way.

If you want to add the "kill process" instructions on the PinballY side, here's the procedure:

I should point out that the author of PinUp doesn't think you should use the "kill process" approach at all. He thinks that you should always rely on the VP table scripts. I agree to a point; you should definitely make sure the scripts are doing their job. The problem is that VP scripts aren't always perfectly reliable, so relying entirely on the scripts is a bit too fragile for some people's taste. So you might still want to include the "kill process" instructions as a catch-all, to make absolutely sure that PinUp gets terminated even when VP crashes, the table script crashes, etc. I see the "kill process" scripts as a failsafe - a fallback - to catch those crash cases. They'll have no effect as long as PinUp actually does exit properly, since the PinUp processes that the scripts look for will already be gone; but they'll be there to clean things up in any unusual cases where PinUp does for whatever reason get left stuck open.