EPROM for Nintendo recorder

the current trend in many electronic devices is that they resemble each other every day more to the computers, as televisions last generation (LCD’s, overhead projectors, etc.), televisions, equipment of audio, DVD, digital cameras, players mp3, telephones, etc incorporated into its electronics, memories with the software recorded on the inside… This is how the current appliances includes the EEPROM type memory circuits which mostly handle the 24XX series, 93Cxx but also classic memories memories such as the standard 27C64 and 27C128.

many of the failures that have electronic equipment, where we also include almost all of the ancient games in cartridge format, due to problems in the EEPROM memories that use.

in effect, u na memory can be damaged and cease to function properly, but in the majority of cases, the problem is that has been altered or lost its content or binary information , i.e., data that was taped inside. That is what mostly causes failure of performance in the team that it uses.

interesting thing is that rewriting the original memory content, either in the same or in a new, malfunction of the equipment disappears and the fault is resolved. Also not only us can just copy the content originates, as anticipating one step further even we can even change the original content on the other that we want .

the author of the programmer that we see, Robson Couto , made the decision to manufacture your own cartridge when you bought a console SNES, shortly after discovering that most of the cartridges that are sold currently for this console allegedly “originals” in reality are not because they have changed ROM and sellers seek to cash it to original without of course lacking the rights of original software price.


Couto, annoyed with this attitude, understood that it is not should overestimate rather in essence is not too lawful because software which license, is not owned by very old to be, so he decided to create their own cartridges using your Arduino Mega to program the EEPROM memory, which is actually the memory that stores the game inside every cartridge cannot be sold.

to manage the recording of the EEPROM with the Arduino, chose the Python language to make the recording program of EEPROM memories, which, by the way can be found for a reasonable price on ebay.

Robson has needed to do enough work of programming and reverse engineering to get it, but finally got it and he decided to share them with the community both the diagrams of the circuit as above all software that allows you to make it work.

repro cartridges are made (usually) which are available in the market?

  1. looking for a boring game cartridge (especially sports);
  2. recorded an EPROM with desired ROM file;
  3. changed the cartridge with the programmed ROM ROM.

well, but then why not all are doing their own repros?

as for the price, given that a programmer is not so cheap, longer than even the Chinese neither are (also depending on there that pay taxes, etc)

all has a relationship cost-benefit and manufacturers / hackers are always creating super useful tools with cheap materials. In 2014, are fixed the Mega Drive cartridge using BIOS chips that are found in the scrap. Write flash memory is not trivial, there is a certain algorithm, but is still a relatively simple process, so I write in an EPROM memory should not be more complicated.

a EPROM programmer is also a memory, and is actually even easier to program than flash memories. To write a byte to the EPROM need to follow the following steps:

  1. select the address through the pins A0, A1, A2… and so on
  2. make the byte of data to be written in Q0, Q1, Q2… etc,
  3. give a pulse at least 50ms with a voltage of 13V at the Vpp pin
  4. repeat for all of the memory) (in case of EPROM 27C801 are 8 * 1024 * 1024 = 8388608 address)
  5. also, it should be noted that the Eprom needs to be fed 6V when it is.

to continue, it is very interesting to understand the pinout of a typical memory with the typical control signals: VSS, Enable and GSPP


the 13 volts are provided by a module of reinforcement (boost) which can be already mounted which is basically a to 12V 5V DC-DC converter , but clearly you can use a simple 12 volt source, although this will require external connections to the mount

13V output of the module Boost, thanks to an LM317 regulator and two adjustable 1K resistors and one of 220 ohms, we can get the 6V to feed the circuit in the programming mode, although clearly also could have been a simple 7806 LM controller that as we know, does not need adjustments.

Finally, to switch the programming signal G/VPP that connect to the ZIF socket pin 24 need two circuits of switching whose outputs connect to the pin. Both circuits are based on two transistors of small signal NPN and PNP (e.g. BC557 PNP and an NPN BC547pra) alimentandos 13v and 5V respectively used as control signals signals 3 (13V) and 5 (5v) of the Arduino Uno

A below shows the final diagram of programmer:


see circuit tour around a socket ZIF zero insertion so as not damage the legs of the EPROM, and connect the Arduino UNO 30-pin to 20-bit address bus (are the pins numbered with A0, A1,… A19) and 8-bit data bus (are the pins numbered with q0, q1,…) Q7) EEPROM.

connections used in this circuit are almost all binary outputs of the expansion of the Arduino Mega bus:


the connections between the ZIF socket and the arduino Mega used are as follows:

[-] 22




1-A19 39
2-A16 > 40
3-A15 37
4-A12 34
5-A7 29
6-A6 28
7-A5 27
8-A4 26
9-A3 25
10-A2 24
12-A0 5
13-Q0 5
14-Q1 6
15-Q2 7

17-Q3 8
18-Q4 9
19-Q5 10
20-Q6 [11
21-Q7 12

25-A11 33
26-A9 31
27-A8 30
28-A13 35
29-A14 36
30-A17 41
31-A18 38
31/VDC 5V or 6V

mounting can weld it directly in a prototyping shield for Arduino Mega which we plug up the own Arduino

as we mentioned is very interesting to use a ZIF socket , which will make it more easy connect and remove the Eprom.


obviously circuit mounted without sw can do nothing, so the author has both written a script, as a sketch for reading or recording of the Eeprom using a Python script that reads data from a file and the nvia to the Arduino Mega, which receives the data and writes them to the memory

Python 3 and pyserial-help needed to load data to the eprom because as we see the sw actually consists of two parts:

  • the python script to read the file and send it to the Arduino serial port and also to read the contents of the EEPROM via request to the Arduinoi
  • a sketch to Arduino to allow reading and writing to Eeprom , where as we have discussed, for programming, must be a vpp of 12V and a vcc of 6V to eprom

the project files are available in the author github repository.

now you already know that you can program EPROMS with only an Arduino Mega and some additional components (and don’t worry if you make a mistake,! since you can delete them simply releasing the window and exposing this with UV light!) ()

source here

Be the first to comment

Leave a Reply