EEPROM Programming

9/24/2015: EEPROMS!

    I've recently finished my EEPROM programmer! It's a simple board that connects to an Arduino Mega, and it allows the user to burn / verify EEPROMS. It's currently just soldered onto a protoboard so it's a bit of a rats nest, but it works fine as it is. The specific chips my design is built around are the 39SF0X0 series chips, specifically the 020A and 040 chips. These are:

39SF020A - 256KB 
39SF040 - 512 KB

(A blurry, closeup shot of the 39SF040).

    I decided to create this project so that I could make my own Nintendo games (NES). I've always wanted to make an Earthbound Zero cart, and these EEPROMS allowed me to do it. Below is a picture of the finished product:

    The EEPROM datasheet is available online, but the programming procedure requires writing a few specific bytes and then the desired byte can be programmed. Reading data of course, is much easier, as it's just like reading any other ROM chip. All of this data is stored on an SD card, and as shown in the first photo, I use a microSD card slot with a few resistors connected to the Arduino.

    Here is a link to my Arduino sketch. The hardware configuration is pretty straightforward, each address and data line is clearly defined at the head of the code. The only thing not specifically listed are the 10k pulldown resistors on the data pins.

    Installing the chips into the NES isn't too difficult. You need to acquire a suitable 'donor' cartrige; a platform where you can transfer the new roms to. The main restriction is based on the mapper used by the specific game, but luckily there are lots of very common games that use the same mappers. With these chips, there's a small bit of rewiring that needs to be performed, as the address pins aren't exactly 1:1 on the NES, but once the addresses were wired properly I was able to enjoy Earthbound Zero on my NES hardware. Of course now Nintendo's released Earthbound Zero as "Earthbound Beginnings" on the WiiU Virtual console, so if you want to play this game yourself, go ahead and buy it from them! 

    It's also possible to use donor carts that do not have a battery backup, for games that do. In fact, my Earthbound Zero cart uses a TSROM donor board, which does not by default have a battery backup. It's pretty simple to add a battery to the SRAM, simply attach the battery according to this circuit:

(Click to enlarge)

    Thanks for reading! And now for some important disclaimers. Don't ask me where to obtain NES rom files. Do not sell NES roms. Do not sell NES reproduction carts containing any copyrighted material / intellectual property.