There's no denying the excellence of some of the solid state games of the '80s. Despite having relatively simplistic rules, the design and innovative playfield features made them ground breaking games which defined the way pinball was to develop in the years to come.
In some ways, pinball's basics haven't changed that much since those times, but while flippers still flip using a solenoid plunger linked to a flipper bat, the electronics inside the cabinet have come a long way.
So how would it be if the programmable microcontrollers of today we retro-fitted to solid state machines? What improvements could be made to these classic games if the control system was completely rewritten and opened up for anyone to develop?
That's what Chris Eddy has been finding out since he built and programmed his new Pinball Operating System for his Williams System 6 Firepower game. A consultant with a BSEE from the University of Pittsburgh, commercial quality design is his stock in trade, but this personal project allowed him to combine those skills with his passion for pinball, as he told Pinball News.
There are things that people do, not for sound business reasons, or because it is necessary, but because it looks like fun. The Pinball Operating System is no different... it is born of passion, and a desire to share something back with the pinball community. My name is Chris Eddy, and I am sharing my work from Pittsburgh, Pennsylvania.
The project involves some hardware design and some software creation. The basic idea is this: a hard core pinball fanatic (we will refer to the individual as a PinFreak from here on) should be able to fix bugs, add features, complete rules on classic machines that were not fully developed, and in general take control of the operation of their machine.
As it stands, most of the existing machines that have been commercially built in the solid state era have their software hidden away in a company vault somewhere. It is not in the interests of the original manufacturer to share the software. So making a change involves spending a vulgar amount of time reverse engineering machine assembly language, and going blind in the process.
What the PinFreak needs is a solution that can be easily fitted into an existing machine, and the default software can get the machine in operation with no real effort. And for the brave PinFreak, the existing rules can be opened up, read, studied, and after learning a command language, modified. That is the goal of the Pinball Operating System (PBOS), and the Pinball Command Language (PBCL). Not the most creative names, but they clearly explain what it is.
Chris has previous experience of working on pinball solutions, creating LED replacement displays sold through The Pinball Resource and he started a project to build replacement Zaccaria MPU boards before deciding he could create something with a wider application.
He began working on the PBOS project about eight weeks ago and started programming four weeks later. So far, he says, everything has gone smoothly with his first prototype plug-in for the MPU board but after showing his idea works, he now plans to move on and create a new replacement board.
The current prototype of the PBOS hardware is a board with a ribbon that plugs into a 6800 processor socket.
The processor is removed, and the ribbon is plugged in. The processor is a 16 bit embedded processor, with 3.3V to 5V conversion chips around it. There is a USB port on it to accept a flash drive.
This prototype is not going to make it too far, as it is a proof of concept. The first real board that would be of use to the PinFreak will be a board designed to replace the driver board and MPU board in one step.
The current prototype is shown above and in pictures on the web site www.pbos.info. Currently, it is plugged into a Firepower machine, and operating it.
The interface with the existing boards works, and software has control over the scanning of switches, lamps, solenoids (thus sounds), and score displays. On the Firepower MPU board, a lot of the hardware is being ignored. All EPROMS and Sram chips are ignored. The batteries are not necessary. Only the PIA chips are needed, and a divider that generates the blanking signal. The next generation mentioned above would not use the old style PIA's.
On to the software! The processor is a microchip PIC24 part, and to do development, I use Microchip's MPLAB and the PICC30 C compiler. The software is built in layers. Let me describe them separately;
The lowest layer is written as interrupts, which scan the lamps, displays, switches, and solenoids with accurate timing. The interrupts also keep track of basic timers.
Skip up to the top level of the software, were the action is. The game rules are written as threads. So for instance, one thread would watch the left sling for a switch closure, and on closure, it kicks the solenoid. Another thread may mind the target, and if it is closed, flash the lamp, sound some sounds, and keep the state in a player specific area. Remember, when we change players, the player statuses have to be maintained! There are numerous threads running in memory, and the processor runs them each in turn, fast enough that they all appear to be running independently. Each thread is a 'virtual' mini-microprocessor. Each thread has an accumulator, flags such as zero, carry, and borrow, in addition to other registers. The command language will in a way resemble assembly language, but with commands tailored to Pinball. Threads can start or 'spawn' other threads. Threads can kill themselves, or other threads.
In the middle of these two layers of software is some thread interpreter stuff.. essentially the Pinball Operating System. For the curious, it is essentially a cooperative multitasking system, where the threads are not real micro-controller code, but an interpreted list of command codes that are highly specific to a pinball machine.
Here is some food for thought for the PinFreak mind. I am trying to establish a game rule building standard, with the following objectives:
So as you can see, the ultimate goal is to have a system that can be shared by the people in the pinball community. The goal is to have fun, ultimately, and if you are like me, working on them is as much fun as playing them. Please see the web site from time to time, as I try to keep the blog fresh, and will report progress as I make it. And of course, any and all comments are extremely invited. E-mail me at ceddy(at)nb.net.
I have to give credit to some others for their help, whether they knew it or not!
Chris will continue developing both the hardware and software in parallel. Right now he has just finished writing all the game operation threads he wrote about above, eliminating the need for any C code. The PBOS is now sufficiently developed to allow Chris to play a simplified five ball game on his Firepower.
Get the Flash Player to see this video clip.
Next, he is drawing up a list of people to test the system and plans to have a beta test ready for them in around a month's time.
After that - in about six months, once his new combined MPU and driver board is ready - he expects to start wider and extensive "beta plus" testing to make sure any problems are ironed out before making it publicly available. Chris plans to make the beta test boards himself but expects to work with a manufacturer and reseller to bring the hardware to market and provide after-sales support.
He believes the software will take years of work to fully mature as those developers using it come up with ideas for improvements, discover issues and look for new methods to work with specialist hardware and different boardsets.
Although developed on his Firepower which is a Williams System 6 machine, replacement boards can be built to run PBOS on most solid state games.
Chris is yet to investigate if his system could work with the newest operating systems featuring dot matrix displays and custom controller boards, but believes it's compatible with hardware up to the Williams WPC system.
That leaves a large number of games where his Pinball Operating System could given them a new lease of life - not only through the new hardware to replace failed MPU and driver boards, but with the possibility of new, improved or customised rules, lighting and sounds.
As ever, Pinball News will follow Chris's work and keep you updated with the progress of his project. In the meantime, you can follow his development yourself through his blog at blog.pbos.info.