We use the Dynamo Firestorm air hockey tables in our arcades and for the most part they are great. We love them! In spite of that they have one irritating issue that we have to deal with.
Dynamo Firestorm Free Play Mode
The Dynamo Firestorm lacks a “free play” mode. Since our arcades are based on the admissions model (pay a one time pass at the door) and not a pay per play model (insert money, tokens, or cards each play) we have to bypass the payment system of the game.
Most free play hacks/mods (for most games, air hockey or otherwise) involve installing a button on the coin door and then connecting this to the game board’s credit input wires. The credit input wires are generally connected to a microswitch that gets tripped when a quarter or token rolls by, or is pulsed by a bill validator/acceptor when paper currency is put in. The same basics apply to card swipe machines.
Pressing the free play button will then trick the game into thinking money was deposited. Sounds simple right? Not quite.
Enter a Kid – The Dynamo’s Arch Nemesis
The Dynamo Firestorm’s board has some logic built into it to detect coin jams and/or tampering. If the credit input line doesn’t pulse and is rather held down, or it pulses too fast, the game will go into coin jam mode, display an error on the screen and wait for an operator to come reset the game (and presumably remove the jammed coin). That sounds smart! So what’s the issue?
Kids will walk up to the Dynamo Firestorm and tap the free play button not once, but like 20 times in a row. Tap-tap-tap-tap-tap-tap. Everyone who witnesses this behavior is always baffled. No one can figure out what makes these kids do this! But this behavior immediately puts the Dynamo Firestorm into error state and the game is “broken” until someone resets it.
Arduino to the Rescue
An Arduino is a microcontroller platform based on the ATMEGA32P microcontroller chip. It’s a super simple platform that basically anyone can learn to program in a just a couple of hours. It has multiple inputs and outputs (called GPIO or general purpose input/output). And it is the perfect board to fix this problem.
What we do is connect the free play button to one of the Arduino’s inputs. We also connect the LED of the free play button to one of the Arduino’s outputs. Finally we connect another of the Arduino’s outputs to a small 5V relay. We connect the opposite end of the relay to the credit input pins on the Dynamo Firestorm.
We then wrote some custom code on the Arduino that works like this: When the button is pressed the relay will click closed for 200ms. This registers a credit with the Dynamo Firestorm’s main logic board. Then for the next 35 seconds we ignore any any additional presses while we blink the button LED. At the end of 35 seconds the button LED returns to solid and a new press will be allowed.
That’s it! No more error codes thanks to those crazy kids!
So Why 35 Seconds?
35 seconds is mostly an arbitrary number. I was simply looking for a number that was shorter than a game would last, but long enough to get passed any time period of the tap-tap-tap-tap-tap-tap madness. Honestly, 10 seconds would probably work. But I figured that it would basically be impossible to win/lose an air hockey 7 point game in 35 seconds and I knew that would be well passed any button pressing shenanigans.
If you’re interested in building this and want the code, shoot me an email!