A glove, a drop target, and a matrix, oh my!
Pinball machines operate in a special realm where the normal laws of physics don’t apply. In this realm, complex machinery is working perfectly for a long time, and then three unrelated systems all fail simultaneously. The odds of that are astronomical in the normal world, but in pinball world, it’s par for the course. Race cars also occupy this rarified physics bubble, but that’s a story for another time.
Of course, what’s actually happening is that multiple systems are starting to experience occasional glitches, and our human brains write them off in the moment. Eventually these glitches accumulate sufficient frequency that we decide Now There’s a Problem™. In something as complex as a pinball machine, the perceived odds of this happening to multiple things at once is really down to confirmation bias, selective memory, and our powers of apathy towards fixing things.
Johnny has been overdue for some love, and he was starting to pile up a lot of little problems that I’ve been ignoring for a while. First of all, one of the nine positions in the Cyber Matrix toy was occasionally not detecting balls. Meanwhile, I was playing my favorite mode (NAS Cure), and the drop target (which acts as a gate to control access to the glove) started behaving very strangely. It was consistently in the wrong position- it was preventing access to the glove, when using the glove is the whole point of this mode. Furthermore, it was popping up and down somewhat randomly in other modes. It was acting as though the CPU didn’t know what position the target was in. Then, while investigating that problem, the glove started throwing error messages about “No Y Progress”. This is a pretty common glove error- more on that in a minute.
The point of all this was that it was clearly time to do a bulk repair of some issues. Let’s start with the Cyber Matrix switch, since that’s probably a simple problem (which I turn out to be quite wrong about).
The way pinball machines detect failing switches is actually really clever. The switches tell the CPU where the ball is on the playfield. By definition, if the ball is supposed to hit a switch and doesn’t, the CPU doesn’t know where the ball is, and thus can’t know the switch in question failed to register. It can’t distinguish “ball not there” from “ball there but switch is bad”. The way around this is that the CPU makes the reasonable assumption that every switch in the game is going to get hit fairly regularly. How regularly depends on where it is. Ramp switches get hit a lot, whereas obscure parts of lesser-used toys may get hit very rarely. The game keeps track of how many rounds have been played since each switch was hit. Each switch has a threshold for the worst case of how often it should be hit. If a ramp switch isn’t hit, say, after five rounds, it’s probably not registering. A Cyber Matrix switch like this might not register for 30 or 40 rounds before becoming suspect. In this case, the Cyber Matrix switch has gone many many rounds without being registered, so the CPU flags it as “probably bad”. It’s a very clever statistical solution to an information gap problem.
Other systems report errors in different ways. For the glove, it was throwing the “No Y Progress” error, which means the computer thinks it is moving the glove forward or back, but the sensors say the glove isn’t getting anywhere. There are many possible causes for this, which we’ll get to. In the case of the drop target, there was no error code at all. The only symptom was erratic behavior during play. The computer helps us find problems, but it’s not perfect. Okay, time to put Johnny under the knife. We have three systems we’re going to pull- the Cyber Matrix, the drop target, and the Y-control board for the glove.
The detector boards for the glove have an optosensor on them, and the threaded rods which move the glove have a butterfly-shaped wheel on their ends. These wheels spin inside the optosensors, alternately making and breaking the infrared light. This creates a pulse train that the CPU can use to count the rotations of the shaft. Since the pitch of the thread on that rod is constant, counting rotations tells the machine how far the glove has moved (and whether it’s moving at all).
If you strip out a hole in the wood, there are some repair options. You can fill the hole with a piece of wood toothpick and wood filler (or bondo), then redrill a pilot hole. You can also install a metal threaded insert and replace the lag screw with a machine screw. When doing any such repairs, be incredibly careful not to drill or screw through the playfield, thus destroying the artwork and play surface above. At worst that can ruin the entire machine, or at best leave you with a very difficult and expensive repair.
Let’s start with the drop target, since it’s a very interesting assembly. Drop targets are emblematic of what makes pinball machines so magical. It’s a physical thing that pops up and down, yet can be fully controlled both by ball impacts and software.
The way it works is that a solenoid pushes it up, against a spring wanting to pull it down. It locks in the up position on a detent. The ball hitting the target pushes it back slightly, knocking it off the detent, causing the spring to pull it back down. There’s also a small electromagnet on the side which can pull the target off the detent. That means the computer can decide which position the drop target should be in by raising it with the solenoid or lowering it with the electromagnet. Very cool! Of course, for this to work, the computer also needs to know what state the target is currently in. This is done with a microswitch at the bottom. The switch closes when the target is in the down position.
Here’s a little video demonstrating the drop target’s action:
Our problem is that the target is behaving erratically in different game modes. In NAS Cure mode, the target should be down, but the computer put it up. If I manually knock it down, the computer fires it up again. This suggests the computer is confused about what state the target is in, which suggests the state switch isn’t reading properly.
Almost every pinball switch has a diode across it. This is because the switches are matrixed into rows and columns like a computer keyboard. This is an easy way to greatly reduce the number of inputs required to read the dozens of switches on the playfield. When one of these diodes goes bad, it can cause all manner of issues. This usually creates problems with a whole row or column of switches, but it’s worth testing the switch and diode in isolation, just to be sure.
Pretty much everything on a pinball machine is adjustable, which is a good lesson in mechanical design. Nothing in this world quite matches the drawings or behaves the way the simulations say it should, so make everything adjustable.
Next, let’s tackle the glove sensor board. This is an easy swap of the optosensors. You would think that, being solid state and subject to no thermal stress, that optos would never go bad. However any pinball person knows that somehow they do. Of course, that doesn’t mean you should make the mistake I am making here and jump to said conclusion.
Lastly, I’ll take on what I thought would be the easiest fix- swapping the bad switch on the Cyber Matrix. Pinball machines laugh at the best-laid plans of humans.
The first step is to desolder the old switch and get the new one ready.
Astute readers may have already spotted two significant problems with the new switch in the above photo. I didn’t notice until I was ready to install the new one that the switch is a solder-lug style, not a PCB-mount. It never occurred to me to check for that when ordering the part. Undeterred, I set out to convert this to what I needed.
Marco Specialties very graciously replaced the part for me, although the new one was also the solder-lug type, as they don’t carry the PCB-mount style (which are uncommon in pinball machines). My Dremel trick was employed again, and I was ready to go.
The drop target and the matrix were now working great, but the glove was still having problems. At this point I stopped and put the thought into the problem that I should have originally. The symptom is that the glove, when moving forward (towards the player), would crash into the end of the arm, as though the computer thought the arm was longer than it is. That’s why it throws the “No Y Progress” error- the CPU is signaling the Y-axis motor to turn, but the gantry is physically pinned against the frame, and the optosensor tells it the glove isn’t moving. To understand what’s wrong, we need to understand how the glove travel works.
The glove does not have limit switches on the ends, as you might imagine. Instead, there’s a single switch in the middle of the arm that sets the “zero” or “home” position. The computer assumes that’s the physical center of the range of travel, and it counts turns of the threaded rod to measure relative travel distance from that point. It “knows” how long that rod is, what the pitch of the thread is, and thus how many turns it can get away with before it has to stop. If it’s making that fixed number of turns for full motion, but crashes into the end of the arm before it gets there, what does that really mean? It means the zero position is wrong. Like everything else, this is adjustable. The switch that sets zero is actuated by a metal plate on the moving gantry of the glove, and this plate can be adjusted to control when the zero position is registered. The fact that the glove crashes into the front of the arm but not the back means the zero switch needs to be closed a little sooner.
The L-shaped black plate on top of the gantry activates the zero switch. It has a slotted hole that controls the angle of the plate, and this angle controls when the switch is activated. Moving the plate upwards causes the zero-point to move forwards in the coordinate space of the CPU. The silly thing is, I’ve had this exact problem before, and simply forgot that zero-point-drift is the cause. My optosensor adventure was a wild goose chase brought on by jumping to conclusions.
So why did this get out of adjustment, if I had set it correctly before? Well, recall that the huge electromagnet in the glove pulls the ball upwards and into the mechanism with considerable force. Over time, those repeated upward impacts will tend to cause that L-shaped mounting plate to drift upwards, which causes the zero point to drift forwards. Physics!
With that figured out, all three systems were now working correctly once again. Naturally, I had to play a few hundred games in the name of science. It’s important to verify one’s results. For science. Now if you’ll excuse me, I need to go
play more pinball do more science right now.