ROM-Reader for Super Nintendo / Super Famicom Game Cartridges

Are there concerns about the Mega getting discontinued or replaced at all? It seems like it has been around forever and I've always wondered if they would ever "retire" it.

I don't think the ATMEGA2560 is going anywhere any time soon with how many Chinese clones there are. There's even a relatively new formfactor for the Arduino Mega that uses the same CPU on a board with a smaller footprint.

Digikey has over 100,000 Atmega2560 chips available, that can make a ton of boards.
https://www.digikey.com/products/en/integrated-circuits-ics/embedded-microcontrollers/685?k=atmega2560&k=&pkeyword=atmega2560&sv=0&pv1291=2491&sf=0&FV=ffe002ad&quantity=&ColumnSort=0&page=1&stock=1&pageSize=25

I even offer boards in a smaller form factor, no 5V regulator or USB interface on board for flexibility.

Hello Sanni,

I saw the update on the github, you added the PCB for the SNES2NES!
Great work, all you need or is a 72 pin cardrige slot, like the one like this ?:

https://nl.aliexpress.com/item/33029711948.html?spm=a2g0o.cart.0.0.776d3c00igd5Jl&mp=1

Nes is 2.5mm pin pitch, like this one: https://www.aliexpress.com/item/32827561164.html

I use TE AMP 5530843-8 on my NES-FC adapters.

Can anyone help me out with this? I'm trying to flash AM29F016D chips either with the 8 bit flash adapter or when soldered to a Game Boy flash cart but my cart reader won't recognize the chips as flashable. They always come up as 04AD so at least it's consistent. The reader works both ways with AM29F016B chips but I was under the impression that if one works, the other should too (assuming the chips themselves are fine). The reader works with none of my AM29F016D chips (six tested) and all but one of my AM29F016B chips (seven tested). Is the solution as simple as adding the ID to the correct table in the firmware?

BTW, the cart in the picture was successfully flashed with a GBxCart RW even though my big reader won't recognize it.

Thank you.

0x01 means AMD, 0x04 means Fujitsu. According to the datasheet both manufactured AM29F016D chips, so the 0x04AD ID makes sense. They should behave identically to the AMD chips.

So in flash.ino below the AMD and ST entrys:

  else if (strcmp(flashid, "01AD") == 0) {
    println_Msg(F("AM29F016B detected"));
    flashSize = 2097152;
    flashromType = 1;
  }
  else if (strcmp(flashid, "20AD") == 0) {
    println_Msg(F("AM29F016D detected"));
    flashSize = 2097152;
    flashromType = 1;
  }

Add a third entry for Fujitsu:

  else if (strcmp(flashid, "04AD") == 0) {
    println_Msg(F("AM29F016D detected"));
    flashSize = 2097152;
    flashromType = 1;
  }

.

Then in GB.ino below:

    else if (strcmp(flashid, "01AD") == 0) {
      println_Msg(F("AM29F016B"));
      print_Msg(F("Banks: "));
      print_Msg(romBanks);
      println_Msg(F("/128"));
      display_Update();
    }

Add:

    else if (strcmp(flashid, "04AD") == 0) {
      println_Msg(F("AM29F016D"));
      print_Msg(F("Banks: "));
      print_Msg(romBanks);
      println_Msg(F("/128"));
      display_Update();
    }

Then test if flashing works, if yes I'll add it to github. :slight_smile:

That works perfectly, thanks again sanni!

Hi Sanni,

I'm working on this now, but if anyone beats me to finishing it, I won't complain.

The GameShark reflashing code for N64 handles SST 29LE010 chips, and the GameSharks were programmed to support those as well as SST 28LF040 chips. You can occasionally find one in the wild with the SST 28LF040's. I've upgraded all of mine to the SST 28LF040's, so the program doesn't currently work for me.

I wanted to make everyone aware of this, and hopefully I'll have a solution soon.

I'm working on a few enhancements.

I added Realtec mapper support to MD.ino. I've got Funny World & Balloon Boy dumping properly. I'm waiting on a Whac-A-Critter cart to test.

I picked up an INL NESmaker board that uses Mapper 30. The board uses a 39SF040 chip. I've worked with carts that use the 39SF010 chip on a related project. I've got the flash chip responding with the Software ID. I'm hoping that adding the rest of the flash commands goes smoothly.

I ordered copies of StarTropics and StarTropics II to look into adding MMC6 PRG-RAM support. Mapper 4 includes both MMC3 and MMC6. Only MMC3 PRG-RAM is currently supported in the code. I'll need to separate the MMC3 and MMC6 as they access PRG-RAM differently.

You rock, Skaman. I'm glad you're working on this project, too. I'm not 100% certain, but it appears the 28LF040's I'm dealing with don't support page writes like the 29LE010's do. I may have to write all bytes individually for that chip. I'm still in the early stages of research, though.

True that. I can't even express how grateful I am for skaman's support over all the years. And ofc all the others that contribute to the project too. 8)

MMC6 PRG-RAM read/write support is working using StarTropics II. The PRG-RAM file is 1K. Some emulators might use an 8K save file to match the MMC3 SRAM size. If your emulator uses an 8K save file, then you'll need to pad out the MMC6 PRG-RAM file with 00s before and after the save data. The PRG-RAM data should start at 0x1000 in an 8K file.

I'll submit the NES code changes after I finish working on the INL NESmaker code.

INL NESmaker cart read/write support is complete. I don't have the INL programmer or software so I have no idea if any manipulation is done to the ROM before writing to the FLASH chip. The documentation on the flash implementation specifies using Sector Erase so I did not implement the Chip Erase command.

I'm waiting on a StarTropics cart to test the MMC6 PRG-RAM code. I'll send the updated NES.ino sketch to sanni after StarTropics is tested.

I dumped the INL NESmaker cart which contained Troll Burner and compared it to the Troll Burner DEMO available online. The dumps differ at 0x60000-0x60FFFF. Looking into it further, it appears that the cart is using that sector of Bank $18 as save data.

I'm not sure if the INL programmer/software stores any configuration info there. Let this serve as a warning to dump your NESmaker cart before attempting to write a new ROM to it. The save data might need to be restored for the cart to function properly.

In other news:
I put up release* V4.0 on Github yesterday.

Compared to the last release V3.1 there are some significant speed improvements. N64 carts, for example, should dump in half the time. Ofc this also comes at a price, currently, it is not guaranteed that everything dumps correctly as the speed-up could let to new bugs, especially with SA-1 carts.

There was also a new discovery made concerning the Cart Reader hardware. A 470uF capacitor needs to be placed across 5V and GND, this makes SA-1 unlock better when the Cart Reader is powered by a USB port.

Two new systems have been added, including their respective adapter PCBs: Sega Master System and NES/Famicom. Here I could only test one game each since I don't own those systems. So there could be bugs hidden too.

One thing to note is that V4.0 will reset your folder number so back-up your SD card in case you got important files on it that you don't want to get overwritten.

The libraries were updated to so don't forget to copy them to your Arduino/libraries folder before flashing the new Cart Reader version.

Finally, the N64 controller test was upgraded to include the benchmark of my portable controller test.

*Releases are just versions of the code where I tried to test each and every function. So releases should be more stable compared to just using the latest code from Github's main branch where often I don't have the time to test much.

Hello sanni

Thank you again for all the hard work you put in this project, same to out to all the other people in this thread.

One question the 470uf cap, doesn’t it go on the 5v that goes to the mega board,
Next to the n64 controller points ?

It's the big capacitor connected to the wires:

I have just redone the way releases will work for the Cart Reader project in the future.

In the releases tab on github you will from now on find a VX.X_Portable.zip file accompanying each release.
This zip does include a preconfigured and tested portable version of the Arduino IDE including all the libraries you need to compile and upload the also included Cart_Reader sketch.

More info: How to flash the Arduino · sanni/cartreader Wiki · GitHub

This makes switching between different releases way easier since you don't have to worry about the Arduino IDE version or the libraries anymore.
The portable versions are completely independent from each other and also the currently installed Arduino IDE and were set-up following this guide: https://www.arduino.cc/en/Guide/PortableIDE