All I can say is they must’ve done some really good drugs on Borregas Ave back in the 70’s.
The year was 1975 and Atari Breakout emerged as one of the first successful coin-operated video games ever to be mass-produced and unleashed onto the gaming world. Its popularity helped launch Atari and the arcade gaming industry into a decade-long meteoric climb. However this part of Atari’s history was not without its growing pains. The design of this particular game involved a motley alumni of soon-to-be-famous industry giants. It began with Atari founder Nolan Bushnell. He commissioned none other than (pre-Apple) Steve Jobs to build a prototype board based on this new idea for a game. Jobs turned to hardware design veteran and future Apple co-founder Steve Wozniak for help. Legend has it that the duo completed the working breadboard design inside of four days while using only 44 integrated circuits (ICs) total. Most discrete designs of that day used in excess of 150 ICs. Despite their Herculean feat, Bushnell saw potential difficulties in the manufacturing of their design, and decided to scrap their work in favor of a completely re-designed in-house solution. That re-design is what was manufactured and the result is the board you see today. Nonetheless it was a very successful commercial endeavor.
That was four decades ago. Time on the mall arcade gameroom floor and subsequent prolonged storage have taken their toll. I first received this board a couple of years ago with the owner complaining about the paddle behaving erratically. If you’re older than dirt like me, you might remember this little feature from back in the day. You’re diligently playing along, batting that little blip back and forth chipping away at the brick wall when it suddenly makes a wild turn toward the right-side of the screen. You move the paddle and as you get closer to the right side of the screen the paddle begins to jitter uncontrollably. While it’s busy panicking it forgets all about the blip passing by and … BRRRRRRRRT! Lose.
That Pesky Check Engine Light
This particular problem lies with the triple-five (555) timer circuit that controls the paddle’s position on the screen.
If you’re somewhat familiar with the 555 you’ll recognize the canonical, textbook astable timer circuit:
And here’s the version used on Breakout:
They operate similarly, but you can see they are wired much differently. Why, I’m not quite sure. Atari’s version seems quite unstable. Any slight deviations in noise, voltage input or the values of the supporting components translates into distressing amounts of jitter on the PWM output.
The idea of the circuit is for the 555 to time and sample the input paddle voltage and then output a PWM pulse train whose pulse width determines the position of the paddle on the screen. When the PAD_EN* signal resets the 555 timer, the circuit measures the input voltage on pin 6 by charging the capacitor at C21. The higher the voltage on pin 6, the more charge is placed on C21. The more charge on C21, the wider the output PWM pulse width, and the further to the right the paddle is displayed.
That’s about the extent of my understanding of this circuit.
On a good day, Atari’s version of the 555 circuit is only mildly neurotic, jittering and twitching just slightly. But as these boards age over time, their electrolytic capacitors begin to dry out. This causes them to become less-capacitive and more-resistive. The original Breakout design probably lasted long enough for Atari to sell the games to operators, and for them to make a profit before the majority of their failures occurred. That doesn’t help us much now though 40 years later.
The Story Thus Far
This is Breakout’s third visit on the bench. The solution on the first go-around was to replace the old dried-out electrolytic capacitors with new modern ones. That seemed to help somewhat. The paddle was still a bit jittery but not nearly as nervous as it was. For a while the fix was working. But a few weeks later I got the same board back with the same complaint – the paddle was bouncing around like that chattering fourth wheel on a grocery cart. Darn it. Apparently the circuit is quite sensitive to the electrical characteristics of the capacitors used. So much so that simply replacing them with newer versions wasn’t going to solve the problem.
I was gonna fix this thing good. I decided to roll up my sleeves and create a complete drop-in replacement that would circumvent the 555′s need for the capacitors on the board altogether. What I ginned up was a custom pcb with a 556 dual-timer, with one side configured as monostable and the other side astable. On the bench this worked perfectly!
“The Steve” it was named because it kinda looks like that loveable yet pesky little troublemaker from Cloudy with a Chance of Meatballs.
It works similarly to the original design. The first stage uses an astable timer to set the PWM frequency and second stage uses a monostable timer to measure the input voltage and translate that to an output pulse width. The higher the voltage, the further to the right the paddle is displayed. Perfect! Well, sort of.
On the bench it worked smashingly. But as we were integrating the game board back into the actual game we ran into a couple of problems. First, the paddle action was reversed. As the player turned the knob right, the paddle would erroneously go left.
The paddle control knob is attached to a potentiometer (POT) which effectively acts as a variable voltage divider to the input of the paddle control circuit. A simple fix could have been to re-wire the control potentiometer to the opposite side of the voltage divider. This would reverse the sense of the voltage to the custom board and allow the paddle to move correctly. However we also had another problem. It turned out that the paddle control doesn’t output a simple 0 to 5 volts like I was generating on the test bench. Instead it was an odd-ball range from 1.2 to 3.8 volts. So the paddle control wasn’t limited to the area of the play screen. Unfortunately, little Steve was helpless in this situation. Time to go back to the drawing board.
The Swiss Army Solution
I said I was gonna fix this good. What we needed was a complete solution that’s versatile enough to work with any particular board and breakout machine. Indeed it would be the Swiss Army solution:
- Adjustable frequency. The output PWM period needs to be proportional to the period of the PAD_EN* signal. As the PAD_EN* frequency changes, so should the frequency of the output. I don’t expect it to change, but it will be slightly different among different game boards. Plus, if there’s a chance this fix could be used on other Atari boardsets (Super Breakout maybe?), then this parameter certainly needs to be flexible.
- Reversible paddle direction. This would be done by just inverting the sense of the PWM output signal.
- Programmable gain. If the paddle voltage input isn’t quite 0V to 5V then it will need to scale the output PWM width.
- Paddle offset. Need to be able to extend the timing of the output signal so it will sit properly on the play screen.
- Sample edge. This would allow the device to sample on either the rising or falling edge of PAD_EN*.
- Paddle delay. I’m throwing this one in for good measure. Programmable delay from the PAD_EN* event to when the pulse becomes active. Might or might not need it, but it’s easy to implement in case we do.
So with a new set of requirements and a better idea of the game’s electrical environment, it’s time to engineer a better solution.
Make It So!
Bound and determined to come up with a viable solution to the Breakout jitters, and after a few more weeks of design re-spin, coding, testing, swearing, hard-drive failure, and even more swearing, finally the Eagle had landed. Here it is – the working prototype to fix the ails of a failing Breakout board.
Hiding behind all those wires and sporting the eerie Borg glow is REPL555. It’s designed to be small and relatively inexpensive. The 555 on the board was desoldered and an 8-pin DIP socket was put in its place. REPL555 simply slides into the new socket. Power for REPL555 is drawn directly from the board via pins 1 and 8. The brains of REPL555 rests in an Atmel ATtiny84A microcontroller. It has all the necessary equipment inside to get the job done – ADC, internal clock, dedicated timer-counter and PWM generator, and non-volatile EEPROM. Accompanying the micro are a handful of supporting devices.
Looking from the outside, REPL555 seems rather Spartan. On the left side there’s a 4-position DIP switch which controls the programming of operational parameters. Connector J1 is the SPI programming interface for the micro. This is used to download the compiled operating code into the micro’s flash memory. Connector J2 is the 8-pin DIP plug that fits into the 8-pin socket on the Breakout board where the 555 device normally resides. To the right we have a trim POT that’s used to set the programmable parameters. The voltage from the POT is multiplexed with the voltage input from the player’s paddle control. Each are digitized using the internal ADC. At the bottom is the LED which is used as visual feedback as the micro goes into and out of programming modes.
All the cool magic happens with the code inside the micro. The micro handles the user programming and storing of parameters, reading the POT, measuring the input PAD_EN* trigger signal, and generating the output PWM waveform. The code is open-source and can be found on github:
Hopefully this will be Breakout’s last trip to the arcadebench. Not that I mind too much – the project was fun, and some neat technology precipitated that can be used on other projects. Bionic Breakout is once again ready to entertain nostalgic players.
The How-To Guide
As promised here is the full-length video explaining how to adjust the REPL555 for your Breakout board.