I did build a flash cartridge in 2004 (flash, SRAM and an ispGAL) based on Chnowack work. It is like the tototek board, programmed with a parallel port board.
I'am looking on the internet for documentation in order to build my own "yet another SD card cartridge". Ir differs from your board, I will use flash memory again because it is not expensive and I do not need to reload a game at each boot. I plan to use a cpld because his program is static. And like you an atmega to read the sd card (but i will try to use the SD parallel interface wile wiring the port with SPI in case of a problem).
The concept would be: the snes cpu reads NOPS, MOV, and JUMPS instructions coming from the cpld thus loading a "boot" program in SRAM. Once the program is in SRAM, the snes cpu jumps to the boot program and the cpld becomes configured in HiRom address space, giving only a tiny interface to acces the atmega in order to read the SD card.
The snes checks for an input, if say R buton is pressed it starts the FAT16/Menu/programming routines, else it looks for a lorom header in the flash memory and configures the cpld for lorom/hirom and removes the SD interface. Then the snes cpus clears his sram memory and jumps to the start of the ROM.
I do not know if the snes can execute program from his own sram? Anyone?
Thus no super FX on this, no nothing except maybe a fun DSP-1 simulation. Guess how.
I have indeed questions concerning your design. The fpga needs a "long" time at start to load his configuration. How do you manage the snes cpu read operations during this time? I assmume that the microcontroler controls the level shifter buffers between your board and the console?
Or maybe the micro controller holds reset signal enabled?
Why do you need to access your rom memory between 2 read operations of the snes cpu?
Why did you transfer the data from the avr to the fpga using SPI? You could have used a 8bit port, rd/wr signals and an interrupt pin from the atmega. It could have been faster.
If I understand, the super FX has on one side the snes bus and on the other side the ROM "bus" and therefore can cut the access to the snes?
Thus if this is correct your fpga cuts also the bus and you could send NOPS and JUMPS on the snes bus while loading the SRAM on the ROM side.
However I begin to understand and I find it simpler to load the "ROM" using the snes cpu throug a temporary custom atmega buffered interface at say $30 | $3000. Maybe it is slow?
How do you load your boot program?
Now with the built in SPI interface, do you need the avr?
How much time did you spend on this project? Because It took me a year and half to complete my flash cartridge. And the biggest problem with electronic is when you are stuck with an unexpected problem for month.
In my case it was parallel port glitches and time outs, the other problem is to get 1mm thick boards instead of the standart 1,6mm.
Nice project (but really big because of the SA, fx chip and co).
PS: design fever today....
