Connects your old SNES console to the new world - adding ambience lighting and controller feedback to improve gaming experience.
Probably this module's cartridge will give a nice for all the electronics in the future, but up to now it also turned out to be a very nice tool to find and verify the correct RAM adresses to monitor for in-game events!
first correction: 0x7e00ca seems to be a more appropriate address in terms of power-loss through hitting walls and other cars.
Although monitoring the lower 16 bit of the address line should be possible by using only the two 8-bit ports PORTC and PORTL of an ATmega2560 and triggering an interrupt with the WRITE-signal, the RAM frequency of around 3MHz is a bit too high to get reliable address-readouts because of the sequential readout (8-bit uC -> 2 8-bit readings of a 16-bit bus).
Therefore, a CPLD will be added to the parts list, which will do the address monitoring until a better implementation has come to my mind.
The well known emulator SNES9X seems to be a great tool to find out game-state related address lines and what values are to be expected on the data bus.
It only took a few minutes monitoring the address range dedicated to the WRAM, hitting the walls while playing F-Zero and filtering them in a way that only the decreasing values will be kept in the address list.
Thanks to the great documentation about the SNES all over the internet, it wasn't that hard to find out everything necessary from pin-outs, address and data lines, RAM organisation etc.
Basically, there are 2 address busses (24-bit and 8-bit) and an 8-bit data bus, whereof until now only the 24-bit address bus and the 8-bit data bus is of interest. Unfortunately, the 24-bit adress bus is not accessible from the expansion port, but both busses are accessible through the cartridge pins.
Monitoring 16 of the 24 address lines of the SNES' address bus with the CPLD and triggering the uC everytime the console does a WRITE on address 3E:0C23 seems to be a precise way of detecting every wall-collision in "F-Zero".