With a spare SNES cartridge connector I had been kicking around, and a taken apart console I previously had been gutting parts from, I had all the motivation I needed!
I started by lining up a perfboard with the spacings of an original SNES motherboard, and cut holes in the perfboard to line it with the case. I then lined up the spare SNES cartridge connector I had to fit the cartridge opening on the top half of the case, as it’s the one part of the motherboard that absolutely had to line up.
I had also desoldered the back IO plane from the original SNES motherboard as the power connector is a part of the plastic. The standard AV port was also desoldered, and I was pleasantly surprised to find that it’s component pins were spaced the standard 0.1″ apart. So I was able to drop it right into the perfboard. As you could see from the image below, lining these few components was a relative breeze..
To interface the cartridge port to the Raspberry Pi, I had originally decided to use Microchip MCP23S17 SPI-based IO expanders, but I had also bought it’s sister chip, the MCP23017, which is I2C based. Both versions allow the expansion of 16 I/O pins. Expanding the Pi’s GPIO pins are a necessity given the number of I/O pins a standard SNES cart uses; 16 Address, and 8 Bank control pins, along with 8 Data out pins, and at least 4 control pins. Totaling 36 pins needed to read most carts. I would need to use at least three of these expansion chips.
The SPI version of the expander has a 10MHz communications clock, while the I2C version only has a maximum 1.7MHz clock. Also, the Raspberry Pi has had notoriously slow I2C drivers, with a configured clock rate of only 100KHz. Despite the obvious speed advantages of the SPI bus, I found that code examples were lacking. I also realized that I would need to run additional bus wire, on what would be a very populated hand soldered board. On top of that, I had a P82B96PN I2C level translator ready to use, and with SPI I’d have to level translate additional lines, because the Pi uses 3.3v logic, and all the SNES components uses 5v logic.
As you could see above, hand soldering all these pins was not for the faint of heart, and this was only the beginning! It was also around this time that I had the idea of utilizing the unused Ext Port door for USB, thus the USB socket above. The pin headers on the top center were to connect a daughter-board where the Pi was going to rest..
I decided to not go with a PCB daughter-board in the end as I didn’t want a permanent extension of the main PCB as I may need to solder under it. Nor did I have the female headers to make it removable. Plus, it added unnecessary complexity. In the end I went with an Adafruit’s GPIO ribbon cable to connect the Raspberry Pi to the perfboard. I desoldered, and cut up a 40-pin female IDE header from an old motherboard, and dremeled it down to the 26-pins the ribbon cable needed, and made a spot for it.
It was around this I started focusing on powering the system, and a way to safely power down the system with the stock power switch.
Next up, DC-DC converters, Arduinos, and MOSFETs. Oh my!