I've been messing around with the Arduino lately. It's an excellent little embedded platform for hobbyists and goofing around, and you can do serious work with it as well.
I decided that it would be pretty spiffy if I were to create an MPU replacement using an Arduino. The interfaces to the other boards (lights, solenoids) and the switch matrix is documented with great detail in the manual for the machine itself. There are full schematics, as well as a number of repair tutorials available on the internet. There was even a project to create an ISA controller card doing just what I want my Arduino to do.
I envision my project progressing as such:
- get a switch matrix scanning routine and associated hardware working. This will permit me to monitor the ball on the playfield from a PC connected to my Arduino via the USB cable.
- get a lamp refreshing routine and associated hardware working. This will permit my controlling PC to set the state of the playfield lights
- get a solenoid triggering routine/hardware working. This will permit my controlling PC to pop bumpers and play chimes, etc.
- get a score display routine/hardware working. This gets me the ability to set the scores on the back-box, and is the last piece of direct interaction.
- write a simple game rule set that runs on the PC that allows me to play the pinball machine
- figure out how to make the Arduino autonomously follow that game rule set (either a library of the hard-coded game rules, or some sort of super-simple byte-code indicating events to watch for and what to do to the score and bumpers and lights, etc)
This would permit me to take off-the-shelf Bally replacement parts and create my own pinball games!
Given the above features as a "version 1.0" of the project, I've already got some "2.0" plans in my head. For instance, the hardware for the controller could act as a man-in-the-middle for an authentic MPU. It could both monitor exactly what the real MPU is doing (and report it to the PC) and it could completely override the MPU. It could trick the MPU by showing fake switch presses.