The Golden Spike Pinball Machine: 150th Anniversary Edition

How I responded to my Dad's father-son pinball build-off challenge.

Two views of the unfinished cabinet, sans lockdown bar and glass.

Please note: This project is still very much a work in progress.

I still need to do another playfield revision, another driver PCB revision, design a trestle bridge, finish coding, etc.

About Golden Spike

This pinball machine was my big project this year. Similar to the Garden of Eden pinball machine, this was done as a school project. To date, I have logged over 326 hours on the project. This is not a pie-in-the-sky guesstimate, this is a cold, hard, unassailable number. I have designed and built everything seen in the above pictures. Please note, I did not do the artwork, though.

I have built both of my pinball machines with a slightly different purpose in mind than a normal hobbyist. The purpose is to have a singular example of tying together the many different skills within the realm of electronics that I have learned in the past. Since I have learned a crazy amount since I did the Garden of Eden, there are naturally many "new" things on this pinball machine. For example, I have designed my own custom driver PCB to control the coils (up to 24), switches (up to 64), and lights (up to 320, 8 strips of 40 addressable LEDs). I still need to add DMD control and sound. In the Garden of Eden I used a Power Driver 16 board. I have used addressable LEDs instead of a light matrix. I actually used a switch matrix for the very first time in this project. (In the Garden of Eden I had a wire per switch, which led to the need for many Arduinos.) I worked with 3.3 volt logic for the very first time because I chose to use an Arduino DUE for the brains of this pinball machine. As a result, I learned how to design and use level shifters.

Also, in this project, I have decided to use a Pinball DMD rather than 7-segment displays for score. I decided to go this route because I wanted to have animations displayed while modes were happening. Things like Indians Native Americans waving clubs and shouting as they charge at the railway workers crossing their territory, or track workers spiking rails as the pop bumpers are hit. I am also controlling the DMD with an Arduino DUE.

Even in its unfinished state, this project's credentials are pretty impressive. Over 326 logged hours invested. Over 3,600 lines of code written. (That number will probably hit 20,000 before its finished.) Between 350 and 500 feet of wire in the cabinet. Two playfield prototypes. Over 200 custom-designed pieces were 3D printed, using about a kilogram of black filament, and more in various other colors.

How This Project Came About

This project came about as a challenge posed by my Dad after the completion of Garden Of Eden. (GOE for short) The challenge was such: I build a pinball machine, he builds a pinball machine. We have Mom judge between them, and whoever she names victor is the victor.

Now, let's be real here: having my Mom judge between a pinball machine made by her husband and one made by her son isn't a very fair thing to do to her. So, late 2018 / early 2019, when this build-off was in progress, my Dad suggested we have some friends judge between them. That hasn't happened yet, but it probably will soon. We might have my church's Youth Group judge between them.

How I Chose My Theme

I was originally planning on doing a pinball machine themed around Ironclad warships. Unfortunately, there are other unfortunate things that are associated with that era, so we decided it would be best to avoid that kind of theme.

So, I had to choose a new theme. After about a month of throwing out other themes, I couldn't come up with a theme that was beyond mediocre. Then, I suggested that I do something along the lines of the 'age of steam'. Not like steampunk, but things like mills and steamers and trains. My parents loved the idea, so it was full steam ahead. (Sorry, I had to make that pun.) After doing more and more research (because the first step is always research), I came to the conclusion that my pinball machine would have more to do with railroads than with anything else. What better way to do that then to focus on the nailing of the Golden Spike? And thus, Golden Spike was born.

As of right now, my machine is nearing completion. My Dad's machine is still just an empty cabinet. My machine is a widebody machine (the playfield is 46" long by 23.25" wide), and my Dad's machine is halfway between a standard and a widebody machine. (His playfield will be 46" by ~22.25" wide)


As can be inferred from the name, Golden Spike is a pinball machine themed around the United States' First Transcontinental Railroad. In the game, you must complete shots in order to lay tracks, build trestles, blast tunnels, acquire locomotives, and defend against the occasional Indian Native American attack on the railway line. All for 25¢ a game!

More specifically, once finished, this is what the gameplay will look like: At the beginning of the game, you get to choose to play as the Central Pacific Railroad or the Union Pacific Railroad. This choice will affect gameplay missions such as track, trestles, tunnels, locomotives, etc. Next, you have to complete shots to build trestles, tunnels, tracks, etc. Once you complete a set amount of each, a kicker (saucer) hole will light, and shooting it will make the backbox Dot Matrix Display (DMD) do a sequence of the Golden Spike being nailed. Then, you will have the option to continue racking up points as your railway company, or switch to the other and do it all again. This will not be an easy goal. It could take greater than an hour of continuous gameplay to complete this objective. I have not even managed to finish the INDIANS attack multiball on a single ball. It certainly won't be easy to get ~700 and ~1000 hits on Pop Bumpers, Slingshots, and Spinners to lay ~700 and ~1000 miles of track for each Railway Company. (~700 miles for the Central Pacific, ~1000 for the Union Pacific.)

Building It

The very first thing we did in building our pinball machines was design and build the cabinets. Standard pinball cabinets were tilted slightly through the use of their legs, allowing for a smaller cabinet to be used (in the vertical dimension of the playfield box). They did this by mounting the playfield at something like 3 degrees within the cabinet, and then offset the front and back legs to produce the other 3 - 3.5 degrees. My Dad and I didn't like that; we thought it felt like laziness on the part of the designer and manufacturer. We chose not to go this route, instead we made our cabinets to have a playfield that is already at 6.5 degrees, with a bottom that is always parallel to the ground. This design choice made the bottom portion of the cabinets look slightly different than normal, but we were quite pleased with the results in the end.

The bottom box to one of our cabinets.

Using what we had learned from the Garden of Eden, we made a change to how we glued up the cabinet. We used some belt clamps to apply force evenly around the cabinet. We were quite pleased with the results.

My cabinet gluing. You can see my Dad in the background.

Before we glued up my cabinet, my Dad walked me through how to design things for the CNC machine to route out. Some of the first programs I ran over our CNC machine were of simple things: flipper button holes, speaker holes, coin door holes, etc. Unfortunately, I didn't quite get the dimensions right, so I had to do a lot of sanding on the coin door hole.

As you can probably imagine, I was there for several hours...

The cabinets without paint or art. My cabinet is on the right.

After building the cabinets, I had to figure out what I wanted the playfield to look like. In order to do this, I had to do a lot of research about the United States' first Transcontinental Railroad. After taking many notes, I began to write down what modes I wanted the game to have. I then began to lay out parts in Visual Pinball. After many hours of designing the game in Visual pinball, I finally had a layout that I liked. You can see several of my Visual Pinball layout revisions below.

After deciding that the layout was "finished", I got the approval of my Dad, and I started drawing it up in RHINO 6. (Amazing piece of software.) I drew up the footprints of the actual parts in Rhino. Not just holes, but the stuff underneath too. I did this because at the time I wasn't sure if I was going to use 3/4" or 1/2" wood for the playfield. If I used 3/4" wood, I would've needed to flip the playfield over and machine divets in the wood for the bottom pieces of the parts to rest on, because pinball parts were designed for 1/2" thick playfields.

When I had to transfer the locations of parts from Visual Pinball to Rhino, things became tedious. Visual Pinball has a wierd system of units: 50 VP units = 1.0625". For the next several days, I used many sheets of paper and my TI-84+ to convert VP units to inches. Things were really bad when I had to figure out the pegs... Eventually, it got done. Here are pictures of the Rhino file for the first and second playfield revisions.

Revision 1 (Left) & Revision 2 (Right)

Even though the above photos represent a crazy amount of work, the Rhino files are still quite different from a physical playfield. Fortunately, with the help of a CNC machine, that can be changed. For each of the playfields, I had to spend several hours converting the Rhino file into G-Code for the CNC machine. After, it was a matter of holding the shopvac for several hours while the CNC machine cut out the playfield. The results were clearly worth the aches endured.

The first revision playfield! (Before being cut)

After being cut. That piece is about as large as the machine can handle, so we had to move the clamps a lot.

After cutting out the playfield and sanding the edges, I had to populate it with parts. That took awhile. Fortunately, my Dad designed and built some nice playfield rotisseries so it wasn't that difficult. They even had convenient trays to put parts! It took the better part of a week to finish populating it. This was just a proof-of-concept whitewood. After I populated it with parts, it became pretty obvious that I wasn't going to be testing it any time soon. Considering how long it took to wire up #2, I'm glad we didn't. I also didn't have my custom PCB finished yet.

As you can see, I'm ready to be doing this for awhile. I think I was listening to Owl City.

The REV-1 playfield with parts.

The bottom of the playfield. Even though I only needed 4 drop targets,
I used a 5-bank of drop targets because they are cheaper than a 4-bank.

I remember my Dad and I getting into a mock argument after I finished populating this playfield. We had gotten strong and weak flipper coils, and I took the strong coils, leaving him the weak ones. He wanted the strong coils, but I had them, so he was a little jealous. Later, we discovered that the coils were a *little* too strong when driven by 48 volts. The ball would go flying any time it hit a target. Now, neither of us want the strong coils. Golden Spike currently has the weak flipper coils.

Between designing playfield revisions 1 and 2, I finished my driver board design. I spent a long time burning up TIP102s without having a clue why. Well, maybe trying to control current-driven transistors with a TTL chip wasn't the best idea. In the end, I opted for some IRL540s, and those worked just fine. I had Quickturnpcb fabricate my boards for me, and I was quite pleased with the results, again.

Aside from accidentally putting a molex connector a *little* too close to a bank of resistors, there was nothing wrong with the PCB I designed. I plan on doing a second revision board, with space for 3 Arduino DUEs. One for game control, one for the DMD and NVRAM (for storing high scores), and one for sounds. After I put the new driver board in Golden Spike, I'll hopefully get around to completely rewiring Garden Of Eden. It doesn't work anymore, and I don't know what's wrong. It probably has something to do with every wire being unsoldered, which is why I'm planning on rewiring it.

Anyway, after soldering up the driver board, I began the long process of fabricating playfield prototype #2. I made sure to include all the walls and other stuff that would be required in order to make it playable/testable. I also added holes for the lighted inserts. My inserts aren't standard inserts; I designed and 3D printed my own inserts with translucent filament.

I had a pretty respectable pain in my back after
holding the vacuum for several hours.

Before I started populating the second playfield, I painted the cabinet. I did, after all, have to get the cabinet ready to recieve a playfield for testing! This provided a solid background for the vinyl sideart to be applied to.

After doing that, I simply had to put one foot in front of the other in order to finish populating the second playfield. It took much longer than the first playfield. I had lots of parts in odd places, which made the order of assembly a little bit difficult in places. Sometimes it was even frustrating, especially when I had to remove the drop target bank to put some spot targets in behind/beneath it.

A side-by-side comparision of the REV-2 and REV-1 playfields.

Some of the many physical parts that go onto a pinball playfield.

The top of the playfield after mounting almost everything.

After populating the playfield, I had to wire it up. I started with the switch matrix, then I did the coils, and I ended with the addressable LEDs. At each stage of the process, I had to write code to test what I had wired up. I wanted to make sure all of the issues with the playfield wiring were ironed out before I put it into the cabinet. In the case of the switch matrix, there were only one or two wires and a couple of diodes that were in the wrong place. The test program that I wrote made it pretty easy to see which rows and columns had problems. Amazing how a diode that is flipped in the wrong direction will make the entire column look like the switches are pressed...

The wires of columns of the switch matrix.
I had to solder a lot of diodes onto the switches.
This picture was taken before I put in the weak coils.

The setup I used for testing the switches.

I paused after testing the switch matrix to finish up adding the appropriate cabinet hardware for mounting in the playfield. I had to put in brackets to support the playfield, and I also had to drill the holes for the shooter mount. In both of the pinball machines I've built, mounting the shooter has been a very tedious task.

Putting in playfield mounts.

Test fitting the first playfield.

Me drilling holes for the shooter.

The unpopulated REV-1 was used to see if the mounting hardware was in right. All the angles were correct.

Not long after I finished mounting in the playfield brackets and lockdown bar, the artwork arrived. My Dad designed the artwork for me because I'm not very good with that kind of stuff. We had agreed earlier that a sepia color scheme matched the nature of the project, and that using those really old woodcarving-pressed newspaper images would really make the artwork pop. Indeed, it did.

The backbox sideart are mostly just flourishes that were common in the era.
The numbers of the locomotives are on it too: #60 on the left, and #119 on the right.

I love this sideart.

The sides of an assembled cabinet.

Not long after my Dad and I finished applying the artwork, I went back to work on populating the second playfield revision. I designed up and converted the plastics into another CNC file, and we machined those. We broke several bits in the process.

These are some of the plastics that I designed and had cut.
All of the holes lined up perfectly the first time!

The scrap board that was beneath them.

After I finished wiring up the coils, I naturally had to write up a program that would fire the coils when they were hit by the switches. It was very satisfying when I finally got the slingshots and pop bumpers working.

The wires for the switch matrix and the coils.

Me testing my Pop Bumpers. This was before I reduced the fire interval length; it was a *little* long.

Me testing the kickers and their optos. The playfield was not tilted yet.

After verifying that the coils were all well and good, I began on wiring up the lights. I used the SK6812 addressable LEDs to reduce the amount of wires needed (when compared to a lamp matrix). Some sources on the internet recommend against using them for playfield lights on pinball machines due to potential magnetic interference. I've not had any problems with this, so I don't see any problems with continuing to use them. Be warned, though: it is very tedious to solder to them. It's especially tedious when testing reveals that one light is bad and it has to be removed and replaced.

Aside from all that, these LEDs are well worth using. I had to design my own method of securing them to the playfield. I ended up designing a sort of spoon-shaped holder that grasps the LED and its wires and screws onto the playfield. I used about 45 on the second revision playfield.

All of the wires on the bottom of the REV-2 playfield. You can see the two strings of lights on the playfield.

Me testing the lights. I had a couple bugs that had to be fixed.

One of the last things I did before putting everything into the cabinet was figure out the Dot Matrix Display (DMD). Almost nobody on the internet has talked about running a pinball DMD with an Arduino. Looks like I'll be one of the first, then. Even if my explanation is really short.

Running a pinball DMD is actually a lot more straightforward than most people would think. It runs a lot like a standard monitor: left/right top/bottom. After looking at the datasheet for the VISHAY 128 x 32 display (I was using a drop in replacement from Xpin pinball), I just had to write a program that satisfied all of the data and control needs of the display.

Basically, it came down to:

  1. (If the first row) set ROW DATA high so the screen doesn't roll.
  2. (If not the first row) set ROW DATA low so you don't write to the same row.
  3. Write pixel data to SERIAL DATA
  4. Toggle the DOT CLOCK to advance pixel
  5. Repeat steps 3 & 4 127 times
  6. Disable the DISPLAY ENABLE to prevent row blurring
  7. Toggle the COLUMN LATCH to latch in the new row.
  8. Toggle the ROW CLOCK to start drawing the next row.
  9. Re-enable the DISPLAY ENABLE.

Not all of the signals the display needs are active HIGH. I'd recommend reading the datasheet before attempting to program it. Also, feel free to look at my code. If you choose to use it in your code, please say something like "DMD code adapted from Alexander Haley" with a link to my website.

This is something of what will appear on your display if you choose to run my code.
At the time, I hadn't debounced the switch matrix yet, so score was getting added multiple times.
The flashing/strobing is the camera catching the refresh rate.

All of my electronics and wiring had been verified tested and working, so it came time to mount it all into the cabinet. Before I mounted it into the cabinet, I wired up the cabinet switches. After all that was working, I had my Dad help me lift and move the playfield into the cabinet. (Those things get really heavy.)

The cabinet electronics.
About 7 cables connect the driver board to the playfield.

The second playfield before being mounted into the cabinet.
I designed and 3D printed all the inserts with translucent filament.
It works really well.

The playfield mounted in the cabinet.
We hadn't made the metal walls yet.

The backlighting for the marquee was just a 6'
piece of 12v LED striplighting cut into 2' lengths.

And finally, after 326 hours invested over the span of about 6 months, I had Golden Spike. I still have much more work to do on it before I can say its "finished". It looks pretty snazzy in its current state -- even if I do say so myself.

Here it is, all loaded up in a U-haul for transportation to the school exhibition. The school exhibition was on May 10th, 2019 -- the exact 150th anniversary of the completion of the Transcontinental Railroad! The game probably got about 150 plays at the school exhibition.

It was really cute watching the little kindergarteners team up to press the flipper buttons -- their arms weren't long enough to reach them both! Their exited gasps of "Oh?" and "WOW!" when it dissapeared into a VUK and shot back out at the flippers were absolutely priceless.

Lastly, here's a gameplay video my Dad shot of me playing it. The bottom right flipper coil died the game immediately after. I also had the DMD disabled because the DMD arduino would sometimes lose communication with the Master Arduino, and then the DMD would stop and then start throwing out random gibberish.

I still have to finish coding the gameplay and add sounds and DMD animations. This video shows very rough gameplay. The INDIAN ATTACK multiball is the best part of the gameplay that's currently implemented. Unfortunately, I didn't complete R-A-I-L and get the ball in the VUK to start it.

This page was published 8/7/2019

This page was last updated 8/7/2019