(original version 10-29-2013)
Clay Cowgill, October 29th, 2013
The CPU daughterboard (lovingly referred to in the firmware as the "CPU Brain Parasite") passively sits on the address/databus of the main MC6809 CPU of the Splatterhouse JAMMA circuit board. An old Xilinx XC9572 taps in to all the necessary signals (address, data, r/w, clocks, etc.) and provides numerous latched outputs to an Atmel Mega165 AVR MCU.
After prowling around in the MAME debugger for a while I managed to suss out a variety of memory locations that are interesting-- player health levels, number of lives, game play level, credits available, game 'state' (for lack of a better word), etc. When certain locations are hit, the CPLD latches the values written out to signals picked up by the Mega165.
The Mega165 meanwhile sits in a tight loop and polls the resulting parallel bus (it could easily have been an SPI like interface, but I had the pins-- so might as well use them). The AVR can then perform simple decision making (eg, "did player 1's health go down? If so, do ___") and activate external devices through a series of current sinks.
The '165 has four hardware PWMs connected up which provide dimming capabilities to the various LEDs used as well as an addition nine on/off type digital sinks. Those can of course be software modulated for different effects if necessary.
A serial port from the AVR also streams the status of the in-game variables for debugging.
Due to time constraints I had to scale back the project considerably to get it done with some time before Halloween, but there's reactions to the player being hit, coins inserted, game over, as well as some random flashing and flickering to keep things interesting.