Custom OS for Williams System 3-6 Pinball Machines

Many older games from the dawn of computer based ('solid state') pinball have some pretty basic rules, and I've often pondered hacking the roms to improve them, but reverse engineering assembly from scratch isn't really my idea of fun so I never really got into it. Driving home one night though, I got to thinking: the hardware for these machines is pretty simple, the schematics are available (and even have memory addresses!), would it really be that hard to just write a brand new rom from scratch? Sure, I didn't know assembly or anything, but it couldn't be that hard!

So I sat down with a copy of the Motorola 6800 reference manual, some data sheets, the schematics, and a copy of PinMAME to debug my code in, found where the entry point/address was, and started coding.

Long story short, it actually was pretty easy! The williams hardware was designed for simplicity from a programming standpoint (though that ended up making the boards overly complicated and unreliable), all the I/O was easy to work with and within a few days I had simple drivers written for all the different peripherals and a basic 'OS' for a game that could control lights, display scores, and jump into a callback table when a switch was hit by the ball.

Programming a game itself using this would prove a bit more complicated of course, due mostly to timing/threading issues (of course, I just had to write a custom threading system for this 1MHz processor), but nothing extreme. A few months later, and I had a brand new rom for my Hot Tip, with many fancy new features which I showed off in a video here

I didn't document the whole process very much, but if you'd like to know more, or would like to try to write your own new game rom using this as a basis, drop me a line!

The full source code and roms are available at http://github.com/zacaj/williams-sys-3-6

Posted Sunday, April 01, 2018
at 07:00 PM


Tags: Blog Post, Pinball, System 3-6 OS,

Arduino Pinball Restoration


I found a pinball machine sitting disassembled on the floor of a leaky shed and brought it home to tinker with. The mechanisms and electronics inside were all rusted solid, as was most of the metal on the outside. The backglass had lost half its paint, and one entire side of the machine was covered in mold.

the body after arriving in my garage

I'd originally planned to disassemble the machine for parts, but after I got the glass off I found that the playfield itself was in amazing condition. With the glass to protect it and no light, it had survived unscathed, and I couldn't bring myself to tear it up. Instead, I decided to teach myself some electrical engineering and wire it all up to an Arduino.

This picture was taken later, but all I did for the playfield was wipe it down, clean the clear plastic parts, and replace the rubber bumpers

I took out one of the score reels to divine its inner workings

The circuits I cobbled together to control the 25V solenoids from my puny 5V Arduino

The Arduino couldn't handle the machine's incandescent bulbs, so I replaced them with LEDs

The score system, rewired

The original innards, still inside

The solenoid and LED control circuits

The same board, after being hooked to 100+ wires

I managed to clean off the mold and dirt using a combination of extremely toxic solutions. The door and plunger needed to be sand-blasted and repainted. Luckily, the rails along the edges were stainless steel, so they only needed a quick cleaning.

post cleaning



If you've got any questions, feel free to email or tweet me; I'll be happy to elaborate

Posted Sunday, April 01, 2018
at 06:06 PM


Tags: Blog Post, Pinball, Stock Car, Arduino, Electronics, Project,

Arduino Pinball Repair, Pt. 1

I got a hold of an old EM Stock Car pinball machine a few weeks ago with the hopes of repairing it, but my first attempt ended in failure. The machine had been sitting in a damp, moldy garage against a wall, under a leaky window for at least twenty years, and it was beyond repair. About a third of the inside was covered in mold, all the moving parts were stuck, all the metal was rusted, and the back glass was damaged beyond repair.

So instead I realized that this would be a good way to use an Arduino. I could just plug one into all the inputs and outputs of the machine and then program it to react in the same way all those complicated and broken electronics would have. I ordered an Arduino Mega, which has 54 I/O ports, and then got to work investigating how complicated it would be to interface it with the pinball machine.

Some quick testing revealed that all the moving parts of the pinball machine ran off 25V AC, which posed my first problem, as the Arduino runs off 5V DC. Asking about how to fix this online wasn't much help; the experts couldn't even agree on whether an AC coil would work with DC. Being the pragmatic and cautious individual that I am, I of course took the rational route, and hooked two old car batteries up (12V DC each x2=24V DC) to a solenoid to see if it would work. (It did). Of course, this still left the big problem, which is that even if the coils would work off DC, they still needed 25V.

The answer, of course, was to use a transistor, or a MOSFET to be precise (I still haven't figured out the difference), to switch the high power current with a low power current from the Arduino. Three burned out husks of transistors later, I'd figured out how they worked, and rigged up this insane hodgepodge of circuitry to control the eight solenoids in the machine.

After an arduous day soldering wires to all the components and hooking them up, I now have control of all the moving parts of the machine from my Arduino.

Tomorrow, I get to start working on wiring all the rollovers to the Arduino so it can begin actually scoring points

Posted Sunday, April 01, 2018
at 06:06 PM


Tags: Blog Post, Pinball, Stock Car, Arduino, Electronics, Project,

Pinball, pt 2: Cabinet, Playfield Experiments

Some ugly Spring Break artwork wouldn't do, so I spray-painted the cabinet black:


The same went for the head:



I've never understood pinball machines that couldn't think of a use for more buttons, so I put a second set in:

A video posted by zacaj (@zacaj) on





I picked up a sheet of 0.5" MDF at Home Depot, and lightly drew out my layout



I also used leftover scraps from cutting it to the right size to experiment with mounting components

A video posted by zacaj (@zacaj) on


Using a small router and an 1/8" bit, I found that, as long as you go slowly, it can produce workable light insert holes

Since I couldn't find any launchers, I made one myself by welding a scoop to a piece of 0.5" iron stock and attaching some plastic to the front to guide it

When you power the coil, it pulls the iron stock in, and the plastic guides it through

Posted Sunday, April 01, 2018
at 05:44 PM


Tags: Blog Post, Pinball, Archive, P1,

Pinball, pt 1: Parts

After two trips to the Allentown PinFest, I've managed to get together pretty much all the components I'll need for the build.

I got two boxes of assorted used parts for $20, and a ruined, half populated Spiderman playfield for $30, yielding an assortment of playfield parts:



I also bought a head from a mysterious 4 player EM for $20:



I really wasn't looking forward to the thought of trying to assemble a cabinet from scratch that would work with regular parts, but luckily I found this slightly beaten Spring Break cabinet for $15

(the legs were separate, another $20)

It even came with a working power supply, so I didn't need to worry about finding a 25-50V power supply. I was able to find a combination of taps that put out 28VDC after recification. Most non-EM pinball aficionados seem to think that 50V+ is the way to go, but honestly the flippers seem just as strong on my 25V games as my 50V.

Posted Sunday, April 01, 2018
at 05:43 PM


Tags: Blog Post, Pinball, Archive, P1,

< Newer Posts
Older Posts >

Posts per page: 5 10 25 50 100