12/01/2014 at 22:33 •
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.
08/20/2014 at 13:20 •
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.
08/20/2014 at 13:15 •
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.
08/20/2014 at 13:12 •
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.
08/20/2014 at 12:45 •
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".