ROM-Reader for Super Nintendo / Super Famicom Game Cartridges

You're welcome, and I'm glad you got it working! Thank you for sharing about Majora's Mask too! Hopefully someone will notice it before getting discouraged themselves.

It is interesting that emulators don't just use the actual data on the SRAM chips (assuming the Sanni Cartridge Reader is faithfully copying exactly from the hardware, which I believe it is, although I haven't read its source code). The fact that the Sanni Cartreader restores these saves too (and would have to have quite a variable function to have such different encodings for each game) while not messing up which encoding is used for both input and output of each type seems impractical. If based simply on the save chip, though, I could see it making sense.

Another possibility may be that they are all different encodings because emulator authors just find a save file online and use it as a basis to work with, but that seems unlikely too.

I'll have to check if I have any cart connectors left.

I'll contact you by PM.

1 Like

Thanks so much for the cartreader@sanni! Been using it for some time now, and it has served me well. Im worried I made a mistake though. For some reason, after some time, the SD card slot stopped reading the SD card and I consistently get an SD error. I'm worried because I used the wrong usb port to dump two N64 games and I don't know if I fried something. I tried swapping out the SD card reader for a brand new one and reformatting the SD card, but still got the same result. I'm using this version of the cartreader. Any idea what might be the issue?

I recently bought and just got done testing Majora's Mask for myself. After the long process of learning, for the first time, how to save progress on it, I was able to create a new mupen64plus save. When I compared the original Sanni Cartridge Reader save content with the new mupen64plus file, they were exactly the same size and looked to be just the same kind of 4-byte endian reversal as Ocarina of Time.

Sure enough, by only using the 4-byte endian reversal program from before, I was able to play the original save content in mupen64plus as well as my new save from mupen64plus on the actual Majora's Mask cartridge.

Despite them being exactly the same size (131,072 bytes), both my cartridge and emulator saves end with only 0xFF bytes (32,640 of them for the cartridge and 32,656 for the new mupen64plus save). They also don't differ in padding, the way you mentioned at their starts for me.

I believe all cartridges of Majora's Mask use the same version 1.00 ROM, which should leave just emulator differences as the reason you may have needed byte padding.

I really don't know, though. Thanks!

Yesterday, I successfully merged my new game started on the emulator (after using my 4-byte endian program to convert it) with one of the games from the original cartridge data, and reloaded it all on to the cartridge, with my game as number 1.

This was quite a useful page on what I needed to copy with a hex editor: https://github.com/cxd4/zs-flash/wiki/File-Format#format-table. But, I think the zs-flash project there, goes further into proving that padding shouldn't be necessary between a cartridge save and emulator (just the endian reversal), as it handles both file formats.

I am very bad at Majora's Mask so far. The time limit hasn't been enough for me to even finish the first temple (Woodfall). Although, since then, I've realized from giving in to trying a walkthrough, that I may want a few other things I missed before I attempt it again, especially something to remove the moths.

Could you tell me what version the firmware was on your Cart Reader?
I noticed a bug in V7.7-V8.1 that enabled SRAM during ROM dumping. Fixed in V8.2/V8.3.

I did update the SD library with V6.0 and newer and some SD cards became incompatible. Could it be that you updated recently and that's when the SD card stopped working?

You can test it by flashing release V5.5 or older found here and seeing if the SD works again.

1 Like

Aha -- I was running V8.0, so that must be why. I'm updating to 8.3 now. Thanks for catching that!

EDIT: Would anyone be willing to share their files for a 3-d printed frame for the v4 cart reader? I searched the thread but didn't find anything for the most recent iteration. I haven't done any 3d printing before, so I figured I'd ask before taking a crack at it.

A simple frame can be downloaded here: cartreader/frame.stl at 5d3999f3dbbabce8d99e838bbd3fa83fad735406 · sanni/cartreader · GitHub

I just finished uploading the 7-slot build option for HW4 to Github: Home · sanni/cartreader Wiki · GitHub

IMG_1215

IMG_1217

IMG_1216

And a sneak peak at the V5 main PCB. It will use the same six-slot adapter as the upgraded V4 in above's post but it will integrate the GBA slot and remove the battery since modern power banks have become cheaper and more powerful.

I hope this isn't a stupid question, but how feasible would it be to convert the older v3 design that had three cartridge ports on the top and one on the front into this? Do I mostly just need the top board with the cartridge slots to slot into the GPIO pins or is the mainboard also different in this design?

And now to something completely different: :wink:

Congratulations, Sanni's Cart Reader is featured in the Linus Tech Tips Video "I am a pirate"! Starting this topic nearly ten years ago with a very basic and tiny version of an open source project to give something back to the Arduino community, I would have never dreamed that it is still active 9+ years later and what amazing things I could see here!

So, huge thanks to all of you - you are absolutely amazing!!! :smiley:

Best regards
Michael

4 Likes

I used a different, much smaller Arduino Mega for V4/V5. So sadly it won't fit.

I really liked the LTT video. You could tell the writer cares about open source and I loved that they showed you can build it yourself too.

I'm actually amazed by that myself, all the stuff the community added is crazy.

I think my favorite part was when we added the Nintendo Power SF memory cartridge flashing support. It felt like an impossible task but somehow almost all the secrets have been lifted. Well all but the reason for the unpopulated 3rd flashchip footprint. I hope someone decaps the mapper chip of the NP cartridge one day.

4 Likes

I dumped a couple FamicomBox carts with my standalone Famicom Dumper (predecessor to the sanni FC/NES addon).

There are a couple modifications needed to dump a FamicomBox cart. On the NES connector, you'll need to connect Pins 69 and 71 (PPU D4 to CIC CLK) and Pins 70 and 36 (CIC +RST to +5V).

Since I only have an FC slot on my dumper, I used an FC-NES adapter and connected the pins on the adapter with some test clips. WARNING: DO NOT USE AN FC-NES ADAPTER THAT CONNECTS THE SOUND EXPANSION PINS.

Hey Sanni, I'm trying to write an N64 repro with a 40 Winks N64 ROM. Everything seems to program fine but the game doesn't boot. I wrote Ocarina of Time to the cartridge and the game boots fine. Do you know what could potentially be causing this issue? The ROMs are the same size.

Sounds like the ultraCIC in the repro is not matching the boot code of your ROM. OoT is 6105 and 40Winks is 6102 if I remember correctly.

Another question for you Sanni as I'm trying to get this all figured out. I'm trying to rewrite the CIC. I've uploaded the sketch to my Arduino Uno, connected all the DuPont pins and when I run the bat file it tries and fails 10 times to read the chip. It says the programmer is not responding and that it's not in sync.

I've made a couple adapters for Intellivision and Colecovision carts. The adapters plug into the SNES slot and are designed to read original carts. Aftermarket/homebrew carts have not been tested and may not be supported.

I'll send the files to sanni once everything is finalized.

1 Like

@sanni Do you have a discord or a way to get in contact with you? I've got some questions about your V5 board.

You can ask them here in the Arduino thread or in the Discussions section on the Github. Sadly I don't have the time for 1:1 support.