Wednesday 13 February 2019

Arduino Mega Eprom Programmer

Versão em Português aqui.

Intro

Recently I acquired a SNES. But it only came with a bootleg Mortal Kombat cartridge. Searching for
 games I found a lot of repro cartridges (Cartridges with the ROM swapped) being sold at local second
hand selling websites. The problem is that they are sold usually at prices comparing to those of original
untouched cartridges.  People should not overprice something they are stealing anyway.
So what? I made this post to prove anyone with an Arduino Mega and some spare components can burn
a EPROM for cheap.

schematic

How are repro cartridges made ?(usually)

  • Find a boring game cartridge (sports specially);
  • Burn a EPROM with the desired ROM file;
  • Swap the cartridge ROM with the programmed ROM.
Okay, but then why is not everyone making their own repros? Because a programmer is not so cheap. 
EPROM programmers can be pricey. Even the Chinese ones (It actually depends on the place, here 
you can pay overpriced from some scumbag or try to import and probably be taxed).
Everything has a cost-benefit ratio and Makers/Hackers are always creating super useful tools with cheap
 materials. In 2014, I fixed Mega Drive cartridge using a BIOS chips found in scrap. Write flash 
memory is not trivial, there is a certain algorithm, but still is a relatively simple process.
 Maybe write EPROM was not complicated.

The Programmer

An EPROM also is a memory. And it’s actually even easier to program than flash memories. 
To write a byte in EPROM simply select the address via pins A0, A1, A2 … and so on; put the 
byte to be written in Q0 pins, Q1, Q2 … etc, and give a pulse with a high voltage (13V
in the Vpp pin. The problem is just to do this for 8 * 1024 * 1024 = 8388608 addresses. More 
information can be found on the  27C801 eprom datasheet.
I’ve used Arduino to program other kinds of memory. Why not also try EPROMs? Also, Arduinos 
are super cheap (Ebay/Ali express). However, I did not buy an Arduino only to program memories
I have some here at home I use to all kinds of things.
Below is a schematic I came up with for the programmer:
Schematic for the EPROM burner with Arduino.
Also, it should be noted the Eprom needs to be fed 6V when being programmed. Hence the switch in
 the schematic above. I used a simple jumper and manually change Vcc when needed.
I soldered the circuit on a prototyping shield with a ZIF socket. This makes it eadsy to attach 

and remove the Eprom. The 13 volts are provided by a boost module, but possibly a 12 volt supply 
can be used (I did not test, may be you can;). I used a boost so everything is powered by USB.
img_20160828_173037268EPROM burner shield (Incomplete, still lacked the transistors)

Cool, but in this case, hardware without software is nothing. Python for the win. A Python scriptreads 

the data from a file and sends over serial to the Arduino Mega, which receives the data and writes
 in memory, all very simple.

The project files are available in my github.
The memories I have here I bought on Ebay, about $ 2 each.
Now you know that you can program EPROMS with just a Arduino Mega and some additional 

components ;). Below are some pictures of the project.

Pics

img_20160906_153952614Cartridge with a Eprom programed.
img_20160911_163622728Shield finished. I adapted the code to write flash memories as well. But it still has some problems. 
The code is also in my github anyway.
zZelda running on the cartridge above.
hm
Harvest Moon.
eraser
The EPROM eraser I use
behind
The other side of the board.

Final points

  • Please do not use this work for commercial stuff
  • Dragão sem Chama does not share ROMS
  • Have fun!

No comments: