Most video game manufacturers aren’t too keen on homebrew games, or people trying to get more utility out of a video game system than it was designed to have. While some effort is made to keep people from slapping a modchip on an Xbox or from running an emulator for a Playstation, it’s almost completely impossible to stop some of the hardware hacking that is common on older cartridge-based games. The only limit is usually the cost of an EPROM programmer, but [Robson] has that covered now with his Arduino-based SNES EPROM programmer.
Normally this type of hack involves finding any cartridge for the SNES at the lowest possible value, burning an EPROM with the game that you really want, and then swapping the new programmed memory with the one in the worthless cartridge. Even though most programmers are pricey, it’s actually not that difficult to write bits to this type of memory. [Robson] runs us through all of the steps to get an Arduino set up to program these types of memory, and then puts it all together into a Super Nintendo where it looks exactly like the real thing.
If you don’t have an SNES lying around, it’s possible to perform a similar end-around on a Sega Genesis as well. And, if you’re more youthful than those of us that grew up in the 16-bit era, there’s a pretty decent homebrew community that has sprung up around the Nintendo DS and 3DS, too.
Thanks to [Rafael] for the tip!
Nice! But the title should be something like “Program EPROMs with Arduino”.
When i bought my programmer, i was wondering why there were no Arduino/AVR implementations yet, but here we have :)
Great “hack”. but realy just a programmer.
still enjoying my cheap TL866CS tho. So dont start ordering parts to build this. but maybe one could use this hack to build a arduino based NES reprogrammer?
TL866CS is great programmer, it’s cheap, and it can program every chip I’ve found so far, from old windowed EPROMs to modern flash memory chips. Bonus, it can be converted to TL866A via firmware change, you have to solder header too, but you get ISP-enabled programmer for a price of one that doesn’t have it.
UVEPROMs often wanted to programmed at Vcc above 5V (sometimes as high as 6.5V). I don’t actually know what goes wrong if you only give it 5V, though…
The 27Cxx series need 12.5V Vpp and I don’t know why people use UV EPROM for development anyway because of the very long re-program time.
The 37Cxx / 47Cxx FLASH chips are cheep and only need 5 Volts for all signals so there much easier to build an interface for.
Here is my simple FLASH programmer for a Arduino Mega
https://cdn.hackaday.io/images/8911531434191075882.jpg
https://cdn.hackaday.io/images/4701811434191185720.jpg
Hi RÖB. Awesome idea. I can’t find 37Cxx / 47Cxx FLASH chips through a search being this post the first result. I can also program flash memories with my shield(29FXX). But only found 512KB or less chips to buy and they are far from cheap.
Sorry, I meant 29, 39, 49.
There still available in DIP but they are cheaper in PLCC or other formats. SST makes them and SST is either owned by microchip or is licensed by them. They were often used and BIOS chips. These are 32 pin chips so they aren’t real big but there are plenty of alternatives with flash now.
Thanks for the reply.
I see. It is just I don’t have the resources for SMD stuff right now(really). I actually used these flash BIOS chips before: http://hackaday.com/2015/02/19/fixing-sega-cartridges-with-old-bios-chips/ But in DIP format eproms were cheaper.
I buy 5 Volt 4Mb (512kB) 32 Pin DIP FLASH chips often from rs-online they are reasonably cheep. They would probably be even cheaper for you somewhere else. On the SST site there cents at qty 4k. rs-online ship for free here to. I pay a dollar or two each with free shipping.
What size / format do you need? 16 bit data bus is probably only SMD. DIP only goes to around 4Mb. Slow chips (55-70ns) are cheaper and the faster ones (= 100ns.
You can buy PLCC 32 to DIP 32 adapters as well. There are plenty of QFP to DIP adapters around as well. 32 Pin QFP is normally 0.8mm which is easy to solder.
OK, now I get it :)
I am not familiar with SNES
So you need 16 bit chips in a 40 pin DIP?
I have enough eproms for swaping my donors if I wanted.
SNES games can be up to 4MB and are 8 bit. Some people use SMD adapters for 29F320. Also I have seen 16 bit memories on cartridges, but there is some workaround to multiplex the 16bit bus to 8bit.
Thanks for the info :)
AFAICT, no one is using UVEPROMs for development. They’re almost always using them for one-off reproductions. (Especially because no new ones are being manufactured anymore, they’re all used or new-old-stock.)
The SST39SF series is definitely the best option for anything small enough (≤512KiB) to fit in one.
Early EPROMS took fixed 50ms programming time per byte – really slow. So faster programming was designed: program with a short pulse (e.g. 1ms), read back if OK, repeat until OK. To give some margin, the reference of the read amplifiers had to be raised. This was done by increasing the supply voltage.
NEat trick, but it sounds like you’re programming bits on the very edge of a threshold where they have burnt in. Wouldn’t that mean the data would be somewhat volatile and have random bit flips?
The repeated pulse method worked well because a flipped bit is flipped and they gave it more pulses for margin anyway. It may have meant that some bits were faster to erase but erasing was by UV light and the window was covered over to block and light.
There are some reproduction boards available for SNES like the Devolution board:
http://www.woodus.com/forums/?showtopic=28682
http://www.retrostage.net/
If you modify a normal game cartridge you can only run games with the same /Layout/.
You can find a good overview about the available game cartridge layouts here:
http://www.snescentral.com/pcbboards.php?chip=SHVC-1B0N-03
If you are interested in the memory mapping of the cartridges this will become handy:
http://www.gatchan.net/uploads/Consoles/SNES/Flashcard/SNES_MemMap.txt
Some games are using special DSP Chips which are not so simple to clone. The Firmware of this DSPs got dumped the last years, there are several documentations around in the www:
http://users.tpg.com.au/advlink/dsp/
There is also an open source FPGA project SD2SNES which emulates all special chips and loads the game backups from SDcard:
https://sd2snes.de/blog/
https://github.com/mrehkopf/sd2snes
SNES owners should change some capacitors! They leak over the years and damage the mainboard:
https://console5.com/techwiki/index.php?title=SNES#Capacitor_Lists
If your controller buttons don’t work correct any more, have a look on “KONTAKT 218”, you may be able to repair the buttons with the graphite spray.
Hope this information do help some SNES fans :) I refurbished my own PAL SNES last winter and collected some information.
Using reproduction carts should be used rather than ruining an old game. Thanks for these resources.