So after I fixed all my lamp matrix problems, I kind of ran into another, luckily I was prepared for this one. See as I use a lamp matrix with 8 columns, any given lamp is only energized 1/8th of the time. For this reason I decided to use 18v to power the lights, to keep them nice and bright. This isn't too bad for the lights - I believe 'real' pinball machines do the same. Problem is, if I stop the program, whatever lights were previously lit will stay lit. This hammers the lights with a full 18v which isn't very good for a 12v globe and will likely burn it out before long.
I'm also expecting to have a similar issue with my coils. If I stop the program or it crashes for whatever reason, a coil may stay stuck on. For a flipper this isn't much of an issue, but for anything else this is a very bad thing, as they can burn out in a short amount of time. This is why i need a watchdog timer. There are a bunch of good resources about this around the place but basically its a circuit that keeps it's output high if it receives a pulse every so often. If the pulses stop (i.e. the program stops or crashes), then the output goes low after a short time (milliseconds).
There are a bunch of circuits around 555 chips that can are mainly used for rebooting an arduino if a program crashes. I tried this but the output actually pulses when the program stops, which is fine if you're rebooting a thing, but not so much if you are using it to drive a relay for high voltages. I found a great example of one from Ben Heck's spooky pinball which I adapted for my own needs. You can check it out from here: http://www.benheck.com/amh/. It's based on a 74HC123 chip and works a treat. There's even a pot on it to adjust the time. I hooked it up to one of my column drives on my lamp matrix and bammo - all good.
After some tidying up of my wiring my boards so far look like this:
The watchdog is the yello perfboard thing. I'm using automotive relays to turn the high voltages on and off.