ROM-Reader for Super Nintendo / Super Famicom Game Cartridges

Coming back to the NES/FC dumper again. While I have tested TSROM and TKSROM (MMC3) so far I noticed that the CART.nes file does not have an iNES header. Would be nice if you could add that after dumping since you already set the mapper properly for the dumped cart. :wink: If you do plan to add it, perhaps allow the user to set "cart has battery" option, too. :slight_smile:

Regards.

Ok. PRG-RAM read/write support is done for Mappers 19, 80, and 82.

I rechecked NesCartDB looking for carts with battery backed RAM and found the Family Basic carts.

I've ordered a Family Basic cart to test adding SRAM support but it might be a few weeks before it arrives.

I'll release the code changes once the Family Basic stuff is complete.

Hello,

I have a question, where can u get the
Adapters for the pc engine/TG16 and wonderswan? I don’t see them on the GitHub.

As far as I know, the TG16 code is compatible with the Retrode 2 TG 16 plug-in PCB.
The slot for TG16 can be bought here: http://www.tototek.com/store/index.php?main_page=product_info&cPath=22&products_id=210

For Wonderswan splash5 just uploaded a PCB, I don't know where to get the cart slot though: https://github.com/sanni/cartreader/blob/master/pcb/wonderswan_adapter.zip

Hello,

I built and tested the cartridge reader, with V4.0 software released on September 27th. It works very well for all my SNES and GBA cartridges. Thank you Sanni for the hard work!
However, I tried it on Sega Genesis/Megadrive cartridges, and three out of nine are not read correctly: there is a checksum error for:

  • Quackshot (Megadrive version)
  • Indiana Jones and the Last Crusade (Megadrive version)
  • Pitfall The Mayan Adventure (Genesis version).

For Quackshot, I suspected a dirty contact on the address lines, as I saw the same header “SEGA MEGA DRIVE (C)SEGA 1991.SEPI LOVE DONALD DUCK GURUZIA OH NOHIHOU” four times in the dumped file. It is located at these addresses: at 0x100, at 0x40100, at 0x80100, and at 0xc0100. Even when cleaning the cartridge contacts, I get the same checksum and the same checksum error message (and the same dumped file).

For Indiana Jones, I do not understand the checksum error message: I compared the md5 of my dump with the one provided here on the Libreto database and they match:

bc40ee0ea033ba893f4f2ee17368f2b6  TIERTEXDEMO.MD

For Pitfall, I have no clue: the md5 checksum does not match any checksum from the Libreto database.

What would you recommend to solve these two or three problems?

Lionel

Please try out version 3.1 to see if the dumping error is a result of the recent speed-up or not: https://github.com/sanni/cartreader/releases/tag/V3.1
Version 3.1 does not calculate checksums so you have to compare the MD5 again.

Hi Sanni,
Thank you for the prompt reply ! I just uploaded version 3.1 and used it to dump the same cartridges: QuackShot, Indiana Jones and the Last Crusade, and Pitfall The Mayan Adventure.
The binary files are identical to the ones I got with version 4.0.

Moreover, I decided to move to TOSEC as my reference data for the checksums, and I have two pieces of good news:

  1. My Quackshot cartridge is known in the TOSEC database (same MD5, same SHA1).
  2. The Indiana Jones is also known in the TOSEC database (same MD5, same SHA1).

Partial conclusion: both versions 3.1 and 4.0 of your software create perfect dumps for these cartridges. The only problem is the message in version 4.0 about the wrong checksum, even though the binary dump is perfect.

Pitfall is the only cartridge for which I consistently get the very same “unknown” binary file, whether it is with version 3.1 or version 4.0 (I even tested the reader with different power supplies). This binary file has checksums that are unknown in the TOSEC database. However, seeing that there are already seven known US variants of this Pitfall game in the TOSEC database, maybe I own another model not yet listed in the database?
For the record, here are the checksums for my Pitfall cartridge:

md5sum PitfallTheMayan.MD 
44548c9af4f42d5d60176b8f13dbe0c4  PitfallTheMayan.MD
sha1sum PitfallTheMayan.MD 
fb61041a88107f758986c54092f775cab2de7b48  PitfallTheMayan.MD

Based on your feedback, I may submit these checksums to the TOSEC team.

Conclusion: I would not worry about the binary files created by your software and hardware, they seem correct. The only thing that I do not understand yet is the reason why the checksum computed by the reader triggers this checksum error message.

Regards,
Lionel

If I calculate the checksum of Indiana Jones with ESE FixCheckSum I also get an error.

Might just be normal for this game to have a bad checksum. Or the developer used a non-standard way to compute the checksum.

Could you please test the other roms too with ESE to confirm that this is the case, if not I'll have another look at the checksum function in my code, maybe I made an error there.

Hi Sanni,
Here are the results: the three files have incorrect checksums according to ESE.
Lionel

PitfallTheMayan.png

QUACKSHOTSTARRI.png

TIERTEXDEMO.png

No-Intro shows one entry for Pitfall (USA).

File: Pitfall - The Mayan Adventure (USA).md
Size: 2097152
CRC32: F917E34F
MD5: 6A80D2D34CDFAFD03703B0FE76D10399
SHA-1: F2067E7D974F03BF922286241119DAC7C0ECABFF

One of the trusted dumps includes a comment of "2000.09.11.VERSION".

Check your dump if it includes a different date.

Thanks!
I will check the content of my dump and look for the string "2000.09.11.VERSION" next week, when I am back home.
Regards,
Lionel

I checked the No-Intro Pitfall (USA) dump and it doesn't have that "2000.09.11.VERSION" in the ROM.

Sorry, I don't know where that VERSION note in the DAT-o-MATIC entry came from.

Here's what the start of the No-Intro ROM looks like:

I received another Mapper 82 cart for testing and the PRG-RAM is not dumping properly.

I think the available Mapper 82 documentation is incomplete.

I'll have to do more testing to figure out the proper register settings to get it working correctly.

To Skaman post #942:
There is no string similar to "2000." in my dump (the cartridge is the USA version of the game).
The hex dump looks like:

00000000 00 FF FF F0 │ 00 00 02 00 │ 02 3F 12 5E │ 03 3F 12 5E  .........?.^.?.^
00000010 04 3F 12 5E │ 05 3F 12 5E │ 06 3F 12 5E │ 07 3F 12 5E  .?.^.?.^.?.^.?.^
00000020 08 3F 12 5E │ 09 3F 12 5E │ 00 3F 13 22 │ 00 00 07 26  .?.^.?.^.?."...&
00000030 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26  ...&...&...&...&
00000040 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26  ...&...&...&...&
00000050 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26  ...&...&...&...&
00000060 00 00 07 26 │ 00 00 07 2A │ 00 00 07 2A │ 00 00 07 2A  ...&...*...*...*
00000070 00 00 07 2A │ 00 00 07 2A │ 00 13 79 6A │ 00 00 07 2A  ...*...*..yj...*
00000080 00 00 06 C6 │ 00 00 06 CC │ 00 00 06 D2 │ 00 00 06 D8  ................
00000090 00 00 06 DE │ 00 00 06 E4 │ 00 00 06 EA │ 00 00 06 F0  ................
000000A0 00 00 06 F6 │ 00 00 06 FC │ 00 00 07 02 │ 00 00 07 08  ................
000000B0 00 00 07 0E │ 00 00 07 14 │ 00 00 07 1A │ 00 00 07 20  ...............
000000C0 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26  ...&...&...&...&
000000D0 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26  ...&...&...&...&
000000E0 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26  ...&...&...&...&
000000F0 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26 │ 00 00 07 26  ...&...&...&...&
00000100 53 45 47 41 │ 20 47 45 4E │ 45 53 49 53 │ 20 20 20 20  SEGA GENESIS
00000110 28 43 29 54 │ 2D 31 33 30 │ 20 31 39 39 │ 34 2E 30 38  (C)T-130 1994.08
00000120 50 69 74 66 │ 61 6C 6C 20 │ 2D 20 54 68 │ 65 20 4D 61  Pitfall - The Ma
00000130 79 61 6E 20 │ 41 64 76 65 │ 6E 74 75 72 │ 65 20 20 20  yan Adventure
00000140 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20
00000150 50 69 74 66 │ 61 6C 6C 20 │ 2D 20 54 68 │ 65 20 4D 61  Pitfall - The Ma
00000160 79 61 6E 20 │ 41 64 76 65 │ 6E 74 75 72 │ 65 20 20 20  yan Adventure
00000170 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20
00000180 47 4D 20 54 │ 2D 31 33 30 │ 30 33 36 2D │ 30 30 C7 24  GM T-130036-00.$
00000190 4A 36 20 20 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20  J6
000001A0 00 00 00 00 │ 00 1F FF FF │ 00 FF 00 00 │ 00 FF FF FF  ................
000001B0 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20
000001C0 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20
000001D0 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20
000001E0 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20
000001F0 55 20 20 20 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 20 20  U
00000200 4A B9 00 A1 │ 00 08 66 06 │ 4A 79 00 A1 │ 00 0C 66 7C  J.....f.Jy....f|
00000210 4B FA 00 7C │ 4C 9D 00 E0 │ 4C DD 1F 00 │ 10 29 EF 01  K..|L...L....)..
00000220 02 00 00 0F │ 67 08 23 7C │ 53 45 47 41 │ 2F 00 30 14  ....g.#|SEGA/.0.
00000230 70 00 2C 40 │ 4E 66 72 17 │ 1A 1D 38 85 │ DA 47 51 C9  p.,@Nfr...8..GQ.

If it is allowed by the forum rules, I can send (by private message if needed) a link to my dump to someone who already has this cartridge, so as to compare the full dumps.
Regards,
Lionel

Yes, as I mentioned above, I checked the known Pitfall (U) ROM and it doesn't contain the 2000 VERSION text in it. The Version note was in an entry in the No-Intro DAT-o-MATIC. I don't know where that info came from.

The start of your dump matches the start of the known ROM.

Confirm the size of your dump. It should be 2097152 bytes. If the size matches then it is either a bad dump or a previously unknown version.

On a different note, FC/NES Mapper 82 carts might use some type of register initialization to access the PRG-RAM. The first cart that I tested did not use the initialization sequence but the test cart that I recently acquired (SD Keiji Blader) uses the initialization sequence. More testing to do...

The size is 2097152 bytes:

ll
total 2048
-rw-r--r-- 1 lionel lionel 2097152 Jan  1  2000 PitfallTheMayan.MD

Your dump is nearly identical to the known ROM.

There are only two bytes different. The bytes at 0x269D8 and 0x269DB appear to be swapped.

In the known ROM, 0x269D8 is 0x03 and 0x269DB is 0xED.

In your ROM, 0x269D8 is 0xED and 0x269DB is 0x03.

It is rather odd. The swapped bytes don't occur at a point where you would suspect an error in the dumping code. It could be a corrupt ROM chip which is rare but does occur. Only way to confirm is to use another method to dump the cart.

Thank you Skaman for the analysis and the comparison. So far, I have been able to run the first level without issues.

All my other dumps have the correct checksums (11 Megadrive cartridges and 20 SNES compared with the reference MD5 and SHA1 checksums available in TOSEC) so I still trust this great system designed by Sanni.
Lionel

Nice work, sanni!

I ordered a set of the FC-SNES and NES-SNES adapters. Both adapters appear to be working properly on v4.0. Nice job on the conversion!

I like the improvements to the mapper selection screen. I'll have to look at converting that code to my FC reader.

Thanks for testing, it means a lot to me :smiley: 8)

Also if you're using V4.0_Portable.zip be sure to update the *.ino files inside to the latest version from the Github main branch as I wrongly defined the variable "index" as byte instead of int in this release breaking all mappers above I think 70 or something like that. :zipper_mouth_face: