ROM-Reader for Super Nintendo / Super Famicom Game Cartridges

I'm not sure about the MN63F81MPN flashram, I haven't found a cartridge with that chip inside yet myself. Even my Majoras Mask has the standard MX type.

So far I found out:
Animal Crossing
MN63F81MPN
April 2001

Command & Conquer
29L1100KC-15B0
May 1999

Jet Force Gemini
NTSC:29L1100KC-15B0 PAL: 29L1101KC-15B0
October 1999

Ken Griffey Jr's Slugfest
29L1100KC-15B0
May 1999

Zelda Majora's Mask
29L1100KC-15B0 or MN63F81MPN
April 2000

Megaman 64
MN63F81MPN
November 2000

NBA Courtside 2
29L1100KC-15B0
October 1999

Paper Mario
MN63F81MPN or 29L1100KC-15B0
August 2000

Pokémon Puzzle League
29L1100KC-15B0
September 2000

Pokémon Snap
29L1100KC-15B0
March 1999

Pokémon Stadium
29L1100KC-15B0
February 2000

Pokémon Stadium 2
29L1100KC-15B0 or MN63F81MPN
December 2000

Starcraft 64
29L1100KC-15B0
June 2000

Tigger's Honey Hunt
29L1100KC-15B0 or MN63F81MPN
November 2000

WWF: No Mercy
MN63F81MPN or 29L1100KC-15B0
November 2000

So I still need to buy one of the MN63F81MPN games to check it out. Auto detection of flashram type won't work but you should be able to manually choose both of the MX types and dump the save, then send the dumps to me so I can make adjustments to the code.

Ok, thank you very much for your response.

Still, I have not managed to make a reading of a save data from any of my cartridges.

I suspect it may be a problem with the power to the Assembly, but I'm not sure.

I am not sure where I should connect the clock line, I have connected line of clock at two potential sites in PH3 /CS and CPU_CLK in PH1, none of the two sites work for me, I have to look at the signal with oscilloscope and checked power from the circuit.

Of course, there is no problem, as I get to do a Dump, I will send it to you.

If you wish, you do not buy anything, I can send you a cartridge that I have, with the MN63F81MPN chip.

I need a little time, to check and find where I have the error.

I made some detailed instructions here: PCB Build guide · sanni/cartreader Wiki · GitHub

Hello to all:)

Thank you very much sanni, by this instruction manual so large and so detailed. This must have been an impressive and very laborious work for you.

I'm using very well my holidays week :slight_smile:

Three days I've been working on my electronic Assembly and I still don't know why it does not read the save data of any of the cartridges that I have placed in it, only reads the Rom.

I apologize for my stupidity and my ignorance, but I can't find the fault in my assembly.

I've revised it dozens of times, without finding any error, I have checked the wiring, I have changed the power supply several times and then I decided to use a battery, to avoid electrical noise. I have changed the memory card by different each other several times, everything has been useless, I can not get it work and read the save data.

Then I tried to change the version of arduino, without positive result, I'm back up libraries several times, same result, I have uploaded the program arduino card several times, also without result. I'm very frustrated, I don't know what more can I do.

Then I thought, this can be a problem of clock signal or something similar and I have decided to check the clock signal with my oscilloscope in pin 57(PH1) CPU_CLK, this has left me amazed, here is a reading with too much noise and a triangular wave, ranging between 28 Mhz and 32 Mhz. should be here in this pin a perfectly square wave signal is not true? with 1.6 Mhz. I apologize for my ignorance.

Please sanni can you tell me, What signal must be present at this pin 57(PH1) CPU_CLK, thank you.

I must take my Chinese clone of the arduino mega 2560 and delicately let it fall into the dustbin. Ha, ha, ha :slight_smile:

Believe me, I very much regret the inconvenience that I am causing, due to my ignorance and I apologise humbly, thank you to all.

Another photo of the reading of the oscilloscope, because in the previous message I could not upload it, I've exceeded upload limit per message.

I'm not generating a constant clock signal on that pin, it just pulses the clock shortly when it's reading/writing. Also the clock signal is just needed for eeprom save games. So even without it all other save types should still work.
What game(s) are you trying exactly?
What exactly is happening when you try to read save games?
It could be that your wires are just too long, since I never tested the code with anything else than my pcb.

Does the n64.txt get read from the SD card correctly so that it shows the right save type for the game in the oled screen?
Do you run your Arduino with 5V or 3.3V?
Do you have the S_Dat pin(n64 cartslot pinout) connected to pin 7 of the Arduino and with a 1K resistor to VCC? It's needed for eeprom saves.

Sometimes it's good to play the game shortly in a real console before dumping with the cart reader.

I think it's best to wait for the pcb's to arrive, so many thing that could be wrong and at the same time maybe nothing is wrong and you just found a bug in my code :wink:

Thank you very much for your answer so quickly to my question.

OK, I thought there was a constant clock signal, thank you for clarifying my doubt.

I've read successfully the rom of these cartridges:

  • Super Mario 64
  • Zelda OOT
  • Zelda MM
  • F-1 World Grand Prix
  • Paper Mario

Before reading the savedata of these cartridges, the program does not recognize what cartridge is it, and of course, the n64.txt is placed at the root of the sd card, along with the rest of files, snes.txt , cpak.txt, etc.

Then when I try to read the savedata of either of them, it gives me this error: "Savetype error press button" I think that this is better see some pictures.
With Super Mario cartridge inserted in it.

I'm powering the arduino pcb with 5v:

  • Oled Screen directly to 5v. No problem, manufacturer say 3v to 5v
  • The SD card directly to 5v, this is not a problem, because this card has installed an AMS1117-3v3
  • Cartridge has connected the power directly to the Arduino board to 3v3 and gnd pin respectively.
  • If of course S_Dat is connected to pin 7 and with 1k resistor to 3v3
  • The rest of the electronic circuit is connected as shown in the schematic, so I revised everything several times :slight_smile:

Yes, I've also tried playing around with the N64 cartridge, before reading, this is one thing that I also thought.

I think you're right, is better for me to wait for arriving pcb's, what happens is, what I've been so long time waiting for this electronic circuit, what I'm already desperate.

On the other hand I do not think what there is a bug in the program, chances are that I have done something wrong, maybe you're right and the wires are very long.

I'll try to calm my enthusiasm and I wait for the pcb's, thank you very much for all and forgive my impatience :slight_smile:

Greetings to all the members of this community.

more pictures

I am sorry, but the system will not let me upload the photos along with the text, although probably the problem is I don't know how to do it.

It's not reading your cartridges right. The roms you dumped should not work. Try a game you don't like that much and power it with 5V instead of 3.3V and see if you get a valid info screen then. Maybe the 3.3V from the Arduino is not good enough.

See that is how it should look like, it should give you at least the rom name without errors:

Hi, again,

I already thought of that, also I thought what it could be a power supply problem, so I use an external power supply, connected to the 5v from usb using wires and powering the cartridge directly with it. But it didn't work either, look at the picture. But I'll try again.

But I hadn't thought to check the roms written on the sd card, I thought that it was a correct reading, good idea, thanks, in this case I should install an emulator on my PC or I can use the Everdrive to check the roms. I will prove it.

Relative to the powering the cartridge directly with 5v Ummhh, good idea but I had not thought about that, what happens is that I love very much my cartridges and I wouldn't like to see anyone die with 5v, but I think it :slight_smile:

Thank you, until tomorrow, I'm going to bed, I'm very tired.

Hi!

According to https://www.retrode.com/plug-in-adapters/ the N64 cartridges should be 3.3V. I do not own an N64, but is it possible to remove the cover of a cartridge and stick only the PCB in the console? If so, you could measure the "original-voltage" there... Just to avoid the magic blue smoke thing you know... :wink:

I did not have a look at the current sourcecode / the N64 parts, but maybe some output via serial or using e.g. an Atmel ICE (looking at the variables) could also help to debug the steps of cartridge detection?! If you need help there, feel free to PM me.

Truely impressive, what all you guys did here - it is hardly comparable to the tiny project I published three years ago... :slight_smile:

Best regards,
Michael

joseuro:
so I use an external power supply, connected to the 5v from usb using wires and powering the cartridge directly with it.

Ok then it's not a power supply problem either. The N64 carts need a good 3.3V supply, for example I tried with a power supply that only gave me 3.2V and I got errors too. But that external supply you're using looks good enough for the job.

If the info screen isn't correct it can't read the cart at all and it won't dump right, neither rom nor save.

Maybe it really is just that the wires are too long. It is known in the N64 portable scene that long wires on the cartridge port make the N64 malfunctioning. But this will fix itself after you receive my pcb set :slight_smile:

MichlK:
Truely impressive, what all you guys did here - it is hardly comparable to the tiny project I published three years ago

Thanks, open source is a really powerful thing :smiley:

Hello to all :slight_smile:

Hi MichIK, nice to meet you, thank you very much for your offer to help with this assembly. All possible help is welcome.

Today I woke up early and I've been working on my assembly, without positive results.

Thank you Sanni, I also believe what this is a problem of very long wires. I wait for arriving pcb's.

Unfortunately for me, today I can not continue with this project, I have to meet family commitments. If it is possible for me, I retrieve the project this weekend.

Anyway, I've discovered something, which I not had noticed before, and it is: My Paper Mario and my Zelda MM cartridges have not implemented pin 21 S_Dat, something logical because the system of saved is not EEprom, these cartridges use flashRam to savedata, so my question is how would the program reads these cartridges? Please look at the pictures.

Thank you all, I have to go to meet my family commitments, when I can, I retrieve the project.

A greeting to all

Jose

The flashram uses the same pins as the maskrom(=game rom). The Nintendo Cart Reader reads the flashram by sending special commands that the flashram recognizes.

In 2013 I made a little N64 controller tester I did adapt it for the card reader shield some time ago but it seems I never posted it here.

https://github.com/sanni/cartreader/tree/master/extras/controllertest

Hello all,

I have started work on mine. I'm only interested in the SNES side of things. Also this is a test board to make sure i did them right :slight_smile: I found one via in the wrong spot. Once it works fine.. will make another with the propper SNES slot.

I have left off the 3V3 reg and cap. Still waiting on the OLED screens to arrive.

Whats the format on the SD card?? FAT16? FAT32? Size limit? 2GB??

D.

I'm using 4GB and Fat32 but 32GB cards work too.

@joseuro - The N64 reader can dump the MN63F81MPN flashram. I have a Pokemon Stadium 2 with the MN63F81 and it dumps using the current 29L1101 save code. The Autodetect does not work as the current reader code does not have the flash id information for the MN chip.

What we found is that there are two groups of flashram chips used in the N64 carts. They're grouped as OLD_FLASH and NEW_FLASH. The OLD_FLASH group is MX_PROTO_A, MX_A and MX_C (29L1100). The MX_PROTO_A and MX_A are in the code base but whether they actually exist in retail carts is unknown (they are Macronix Device ID 00 and 01). The NEW_FLASH group is MX_B_AND_D (29L1101) and MATSUSHITA (MEI) flash (MN63F81).

The cart flashram list that sanni posted earlier is not a definitive list and it is likely that the mid to late 2000 carts could contain any of the flashram chips - 29L1100 (OLD_FLASH), 29L1101 (NEW_FLASH), or MN63F81 (NEW_FLASH). The best way to check is to open up the cart and read the id printed on the chip. Alternatively, you could use the current Autodetect routine which should sort you out if you have a 29L1100 or 29L1101. If you use the Autodetect and get a "Flashram unknown" with the following bytes - 11, 11, 80, 1, 0, 32, 0, F1 then you have the MN63F81 and you should dump it using the 29L1101 mode.

I believe sanni will be updating the reader code with the MEI (MN63F81) flash id so we'll then be able to Autodetect all of the known flashram chips.

Keep in mind that if you're planning to use the save file in an emulator that you might need to saveswap (use saturnu's Saveswap from KRIKzz's forum).

Good Luck!