I attended the Oculus event at GDC this year where I first heard that Pinball FX2 VR was in the works. I tried the game and after 5 minutes I knew I wanted to build a VR interface for it. The VR component solves my biggest gripe with traditional “virtual” pinball games—you can’t move your head around to get a better read on shots or the ball. Anyway, once the Oculus release date was a week away I made a trip to Walgreens and picked up two sheets of foam core. I already had everything else (I’ve collected and operated real pinball games for years, and I’m a compulsive Adafruit buyer).
I started by measuring the front body dimensions of a real pinball game and then cut a 1:1 replica from the foam core. Then I measured for button placement, cut those, and glued the whole thing together overnight. I measured accurate body height and attached legs using off-the-shelf leg bolt/brackets. The buttons and joystick are pretty generic. It was important that the flipper buttons don’t “click,” so it would feel realistic. I thought I’d have to install real pinball leaf switches, but these silent 30mm translucent ones from Adafruit work great for now. The joystick doesn’t quite say “pinball” but it’s necessary to navigate menus.
Everything ties into a breadboard running a Teensy LC microcontroller connected via USB to the computer. The Teensy has a mode that conveniently fools a computer into thinking it’s a generic gamepad, so the code simply turns grounded pins into emulated gamepad button presses. There’s also an accelerometer that converts X/Y movement into an analog gamepad stick for nudging the table. The start and plunge buttons have lights pre-installed, so I just connected them to the USB 5V line.
The biggest hurdle was getting the game to recognize the gamepad. Unfortunately the Teensy doesn’t support Xinput, and the game only supports Xbox gamepads. Thankfully I found this wonderful open source program called x360ce that intercepts generic gamepad signals and converts them to Xinput. Problem solved!
Next, I want to replace the “launch” button with a real plunger. I have all the parts, I just need to decide on a method for converting the shaft movement to a consistent analog signal. I have bendable resistors, IR distance detectors, and sonar to play with. After that’s finished I’ll try to convince my woodworker friend to help cut the frame from something substantially more beautiful than foam core. It looks like there’s some interest in schematic plans and code too, so I’ll find a way to share all that when it’s done.