Go Down

Topic: ROM-Reader for Super Nintendo / Super Famicom Game Cartridges (Read 311202 times) previous topic - next topic


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 ?



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: https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino

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


Nice work!

Incorporating the portable version into the project is great.  Since I have so many different projects, it makes it difficult to switch between IDE versions and libraries.  I'll run the portable version when testing code changes.


Hello Sanni,

I have a question, i made a second cardreader, but with this one i get many
checksum errors,

I tried with a gb gba and gbc, with the snes it says no rom header.
And with the Sega megadrive it says it it doesnt have rom or eepron.

What could be wrong?

As far as i know i soldered everything in good without any bridges


Check the GBA slot for a short circuit, it's very easy to bridge the pins there with a tiny amount of solder that is barely visible. Also look for scratches on the PCB.

You can compare a dump of a game with a known good rom file using a hex editor to get a hint at which pins you have to look closer.

Example image with a bad data pin by Modman19:


hey sanni

Thanks for the quick replay, i will check the gba slot.
But it is not dumping any cardridge,

With all the slots it gives me an error

I took the cardreader apart, and checked everything.
Put it back together and now it is working.

I hit it a couple of time an dropped it to see it stopt working.
But it still works.,

I dont know what it was but it is working !

Also are you going to make a 3D printed case for the NES to SNES adapter ?


I hit it a couple of time an dropped it to see it stopt working.
But it still works.,

Haha, I just wanted to say that I thoroughly appreciate the scientific approach you take towards problem solving. :)

Go Up