Sunday, August 18, 2013

Building your own Pinball FX 2 table

Pinball FX table
I've been thinking about this for a while, and I might actually do it. Pinball FX 2 is a great game from Zen that combines modern, hardware-based physics simulation with incredibly well designed tables (see my review of several tables, elsewhere on this blog). I also have friends who are into Raspberry Pi hardware hacking and others who enjoy collecting physical pinball tables, so that gave me some ideas...

What if you picked up a junk pinball table from eBay or Craigslist and then put a TV screen on top of it? A 50 inch TV that's fairly thin should fit well, but you should probably measure the specific table and get something that will fit correctly. The junk table should not cost more than a few hundred dollars, and you'd pay that much for any decent piece of furniture.


Consider a used,
non-functional machine
Rip out the guts of the table and put a PC in it. The glass and play field can probably just be removed entirely and any other mechanical or electronic elements can be removed. The PC should be a mid-tower with an SSD only (no hard drive; this is important). Install Windows and Steam and configure it to launch Pinball FX at boot.

You can configure the PC to display in portrait mode or just do that inside Pinball FX's settings. Lay the TV down over the top of the cabinet to replace the play field. You may want to find a safe spot to put a bolt or two into the TV from the side of the cabinet, just to hold it in place. The other option would be to place an arm mount inside the table so that you can lift the screen up to get at the PC...

Connect the display to the PC and install a 2.1 sound system inside the cabinet. Now you have all of the output handled. Next is the input, and that requires one of two things:

The Easy Route

The easy route is to just hang a wired or wireless 360 controller off of the PC and make a little tray for it in the front of the cabinet. This allows you to do everything, and doesn't limit you in any way. The harder option won't work as well for any other types of games that you might try to run in this cabinet, but will give a more authentic feel.

The Hard Route: Hardware Hacking

Okay, so you want the real pinball experience, complete with real flipper controls and table bumping? Get ready to do some hardware hacking. Start with a simple tear-down of the 360 controller (probably wired at this point, since wireless won't buy you anything). You'll need to connect the two front buttons to the flipper buttons on the cabinet and the "A" button to the "start game" button on the cabinet. You probably need to add a second button somewhere to be the "B" button (which goes back once you've selected a game) as well. For modifying the in-game view, you will also need the "X" button, but you may be able to get away with doing that once for each table via the keyboard that you keep tucked into the cabinet.

Now you need to sense motion for the table bumping. This is possible with a small amount of software hacking combined with some serious (but inexpensive) hardware. Get yourself a Raspberry Pi and follow the instructions on setting up motion sensing with an addon device. You will then need to write a small amount of code (it's a Raspberry Pi, so probably in Python) to put a signal out to the 360 controller's left joystick right and left sensors whenever you detect sufficient movement to the left or right from the motion sensor. In Pinball FX this will bump the table left and right. Place the Pi in the cabinet and calibrate your software so that banging on the flippers doesn't trigger the bump, but actually moving the table does.

This certainly isn't trivial, but it's not a huge headache for anyone who can master basic Python programming and a soldering iron.

In-Game Configuration

Once you start everything up, I suggest leaving Windows in its normal orientation, but launching Pinball FX at boot (you can do this by adding it to the startup programs, or follow this post's instructions for starting Steam Big Picture at boot).

Once in the game, you can hit the settings to select the orientation of the screen. In each individual table, there will be a view mode selectable with the controller's "X" button. You want the top-down fixed view. I think you can also turn off the zooming-in for launch and special table features via the settings.

A shopping list of parts:

  • Old pinball table (needs good, sturdy legs and body)
  • ~50" flat-screen TV.
  • Mid-range PC with a fairly modern graphics card, (the card being probably in the $180-$300 price range) and HDMI out, 2.1 audio out, ethernet or wireless network as suits your home network, SSD main OS storage.
  • At least 5-port external, powered USB hub.
  • Optionally for the harder build:
  • 2.1 speaker setup with small enough speakers to fit in the cabinet or back board (subwoofer could go on the floor)
  • Power strip with a long enough cord for the position of your table and possibly a UPS
  • 360 controller for PC
  • Possibly some kind of printed adhesive label for the back board and sides of the table...

No comments: