Last updated on 2021-05-31
We have been working the last 4 Weekends on a cool side project – we built a DIY Super Nintendo development hardware. As a SNES Programmer or SNES Nerd you always want to run your code on the orignal hardware. But this is only possible using old backup stations from the 90ies like the Super Wild Card or Game Doctor. But all these tools lack cool features like SD Card support, USB connection or real time debugging. I own an old Super Wild Card and its a pain in the ass. I can’t get the parallel port connection working and so i have to use the builtin floppy drive 🙂 There are newer projects around, but either not working or not really cool.
So we decided to build our own hardware. Today we got our proof of concept working. Its based on a STK500 setup using a ATmega16 (Ja.. I fried the ATmega32 while setting the fuses..). Attached is a SD Card and a home cooked memory bus driver for one 512k SRAM Chip.
Both the ATmega and the SNES memorybus are connected to this SRAM via busdrivers. The ATmega does the housekeeping and manages the access to the RAM. To save IOpins on the ATmega side, we use shiftregisters and counter to set the adress. On the SNES side its connected to a Snes Multi Cartridge Adapter. One slot holds an orginal game, so we can use the lockout chip from there and solder the data and address from the other slot to our memory interface.
Now we are able to upload a 2Mbit SNES rom. A mario sprite on flashing background. We load this rom image from the SD Card and write it to the attached SRAM. When this is done we switch the busdriver and connect it to the SNES memory bus. Today we got the demo working.
See the video and pics.
We did like 3 other proof of conecpts before to get this working.
- Interface external SRAM with an ATmega8
- Access SD Card with an ATmega8
- Dump an orginal SNES Cartridge with an FTDI based solution
- Put all this together on the STK 500
Watch the Video on vimeo to get HD and see the console output
Right now we are planing the features for version 0.1. Its mainly to get a good hardware design
the cool software features are planed for version 0.2
- ATmega 644
- 4mb SRAM
- Address Counter
- Address SREG
- LO/HI Rom support
- Lockout Chip
- Save game SRAM
- SD Card Support
- Software USB
- USB Upload Client
- Software Mode Switch
- Remote Reset
The Project is hosted at Assembla.com
And the poc code is here
This is really cool. I love the idea of using shift registers to expand the io and buffers to do hirom/lorom switching. I almost designed a cartridge based around this idea, originally. Perhaps I should have, given how much trouble i’m having just soldering these fine pitch components…
The big issue I see here is that when you start moving into larger SRAM, you end up only being able to use surface mount components. You might consider just designing a really simple breakout board for like two 2mbyte chips of SRAM (TSOP-I, i think?). The good thing about these sorts of chips is that the pins are short and very firm, so they are much easier to solder than something like an FPGA.
Anyway– good luck!
Really nice. Can’t wait to see its progress!
That’s fantastic! I found your Assembla page while looking for information on something similar. I considered SD card access through the AVRs SPI interface, but thought I’d never have the time to get the data and still maintain the speeds necessary for FastROM. I’d love to look at your code, but your Assembla pages seems to have disappeared.. Good luck, I’ll be following your progress!
The Assembla page is still around. But since we changed the project name to Quickdev16 we also renamed the Assembla project.
Comments are closed, but trackbacks and pingbacks are open.