About 20 years ago I bought a "Circa 1933" pinball machine (made in 1978) at a garage sale in non-working condition. I have always been a pinball fan and I enjoy fixing things as a hobby, so this was perfect for me. After some troubleshooting I discovered that the computer chip was not functioning, damaged by a faulty power supply. There was no hope to replace the faulty chip because the pinball machine manufacturer (Fascination International, Inc.) was out of business, the manufacturer of the faulty chip was out of business, and the failed chip included read-only memory that needed to have the required program custom ordered from the chip manufacturer, so there was no hope to find a replacement chip with the correct program installed. At the time, I got it into semi-operational condition by pulling out all the I/O chips and hard-wiring the switches to the bumpers so that everything functioned, but it didn't keep score (second picture). The rubber was starting to crumble, so I replaced that too.
Recently I decided to try to restore it to its original working condition using an Arduino microcontroller (see arduino.cc), since I was going to be off work for 3 weeks for the Christmas holidays and would have time to work on it. I ordered an Arduino Mega, which has the most I/O pins of any Arduino (70 pins). I also ordered some shift registers to add additional I/O ports, because the pinball machine had a total of 92 digital I/O lines for reading all the switches and actuating the lights and bumpers. The Arduino arrived within a few days, but the shift registers were not going to arrive for another 3 weeks. I was too impatient to wait, and found that I could go ahead with the available 70 pins if I omitted 16 pins used for reading jumper settings (to set replay scores, balls per game, etc.) and just set those values in the software, and omitting some other non-essential items: coin slot switches (since I wasn't going to use coins anyway), door slam detector, play counter, the ball-in-play switch in the launch lane, and some playfield lights that are supposed to turn off during tilt.
The first step was to prepare the wiring harness for the connections between the Arduino and the IC socket pins, which took about a week of soldering (evenings). Then I had to write the program. This was a lot harder than I thought it would be, the program took almost 2000 lines of code and a week of coding. I found it challenging to do the real-time control, because there could be multiple things going on at once (bumpers, chimes, lights, score update, credit button press, tilt switch) and the controller has to continually check every switch while doing the appropriate actions from previous events. I found it quite different from ordinary programs where operations are done in a pre-defined order. But I enjoy a good logical challenge, so it was rather fun. I had to search for play details, since I have never seen the original machine in operation. I got some useful play information from a video posted by B60WizWorld, but he didn't play a complete game so some details were missing. I later found a 30-minute video by "Mark's Basement Arcade" of the machine "Roy Clark" which has different artwork but is otherwise identical to "Circa 1933", this video had enough play to give me all the details I needed.
After finishing the program and uploading it to the Arduino, I anxiously turned on the machine, and... nothing! The first problems were several syntax errors which were not picked up by the compiler but caused the program to run incorrectly. After fixing those, it started to do some things correctly, but there were still dozens of bugs to fix: credits appearing out of nowhere, lights turning on or off at the wrong times, the score display turning to jumbled nonsense. These were mostly easy to fix once discovered. The toughest one was the score display bug; in the end the solution required writing my own serial out routine, because the built-in Arduino serial out function toggles the clock low-high-low but the score display requires high-low-high. So finally after 3 weeks of (part time) effort, it was working! I added a few of my own touches, like playing a "Charge!" tune with the 3 chimes when the credit button is pressed, and some flashing lights and a high score display during attract mode (the original controller had no way to store a high score if the machine was turned off).
I ordered LED bulbs for the computer-controlled lights, because during the project I discovered that the original GE44 bulbs exceed the rated current of the 75492 driver chips on the controller board. The 75492 is intended to drive LED's, not incandescent bulbs. Three of the drivers had failed, requiring repair to make those three lights functional again. Fortunately this was an easy fix because only 4 of the 6 drivers per 75492 chip were in use, so I simply re-wired each failed circuit to use one of the unused drivers. I noticed that in B60WizWorld's video, some lights are not functioning, so this may be a common problem with this machine. The LED bulbs should prevent any further driver failures. The "warm white" LEDs that I ordered are close to the same color as the original incandescent bulbs, as you can see in the final picture, the lit 1's are LED bulbs and the rest of the lit bulbs are the original incandescent.
In conclusion, this was a fun and rewarding project, and I am very happy to have my antique machine working properly again! It was just the right level of difficulty - a newer machine, with music, voices, video display, and other high-tech features would be much more complicated. It was my first Arduino project, and I found the Arduino to be very flexible and easy to use and program, it really is an ideal controller for a project like this.
spicekabay
Pinside member
2y 30,050 98 2 12
I am deeply impressed by your skills! Thank you for sharing your story!