ROM-Reader for Super Nintendo / Super Famicom Game Cartridges

skaman:
Whatever wiring diagram that you used should have Address lines labeled A0-A15 and BA0-7 (or maybe A0-A23) on the SNES side.

These are the address lines and tell the cart where to read the data from.

Double-check that each line is connected to the correct pin on the Arduino according to the wiring diagram.

I didn't use a wiring diagram to build the dumper. A friend of mine and I built this without wiring diagrams. Are you suggesting that we put the cart slot in wrong? Because I've been able to dump all other types of carts that I own—including S-DD1 and SA1 chips—just fine. (Admittedly, most of my SA1 chip games are old and stubborn and haven't been dumped successfully, but I have been able to dump one for certain).

For the record, though, I just checked the pins and all the A's match up where necessary along with the pins for nearly everything else. The stuff that should go to the clock generator goes to the clock generator. The only thing the destination of which I couldn't figure out was something labelled TX1.

Try adding the SPC7110 initialization code:

  // Dump SPC7110 High-type ROM
  else if ((romType == HI) && ((romChips == 245) || (romChips == 249))) {
    println_Msg(F("Dumping SPC7110 HiRom"));
    display_Update();

    dataOut();
    controlOut_SNES();
    writeBank_SNES( 0, 0x4831, 0 );
    writeBank_SNES( 0, 0x4832, 1 );
    writeBank_SNES( 0, 0x4833, 2 );
    writeBank_SNES( 0, 0x4834, 0 );
    dataIn();
    controlIn_SNES();

    // 0xC00000-0xDFFFFF
    print_Msg(F(" Part 1"));
    display_Update();
    readHiRomBanks( 192, 224, &myFile );

skaman:
Try adding the SPC7110 initialization code:

  // Dump SPC7110 High-type ROM

else if ((romType == HI) && ((romChips == 245) || (romChips == 249))) {
    println_Msg(F("Dumping SPC7110 HiRom"));
    display_Update();

dataOut();
    controlOut_SNES();
    writeBank_SNES( 0, 0x4831, 0 );
    writeBank_SNES( 0, 0x4832, 1 );
    writeBank_SNES( 0, 0x4833, 2 );
    writeBank_SNES( 0, 0x4834, 0 );
    dataIn();
    controlIn_SNES();

// 0xC00000-0xDFFFFF
    print_Msg(F(" Part 1"));
    display_Update();
    readHiRomBanks( 192, 224, &myFile );

Thanks for the quick reply. Tried entering this into the code. No dice. I got a copy identical to the ones I've been getting. Any other ideas?

I tested the SPC7110 code in sanni's sketch and it works perfectly with Tengai Makyou Zero.

You have a hardware issue or possibly a cart issue.

The swapped sections of your dump would tend to indicate that the address lines are mixed up.

Just received Momotaro Dentetsu Happy and copy&pasted the necessary code for the correct size detection and checksum calculation from skaman's enhanced sketch into my current version and that dumps perfectly too.

@werewolfslayr925 Two weeks ago you posted that you can't dump N64 nor Gameboy games, did you find the issue there? Because if there is an error somewhere on the pcb that affects everything else too.
Also if you shorted something out there is a chance that the Arduino itself took damage and one of the ports is dead now.

sanni:

Ah, yes! I did manage to dump all my Game Boy games just fine. I successfully dumped one N64 game. Sorry for not reporting back about that. It turns out that I accidentally had two pairs of pins soldered together on the GB converter for the GB games. I forget what was wrong with the N64 games besides their being old and stubborn. It may have been that I had the switches in the wrong position or that I was trying to dump them with power going to the dumper through the Arduino instead of through the microUSB port. Something silly like that.

skaman:

Like I mentioned, I've been able to dump everything else just fine (except for some of the more stubborn SA1 carts; I've read somewhere, however, that those may merely take a few tries, and I know that mine are especially difficult to get working even on original hardware). How could it be a hardware issue on the dumper itself if other special chip games (Star Ocean, Kirby Super Star) dump successfully? TMZERO boots up just fine on regular hardware, too. What cart issue are you suggesting? What should I look for specifically on the dumper to see if things are mixed up? Also, are the switches on the dumper supposed to go a particular, unique way when dumping TMZERO? Could it be that the switches aren't in the right position?

The existing sketch with SPC7110 code is fine. The problem is clearly on your end either reader hardware or cart. There's no way I can tell exactly what is wrong from here. Like I said before, recheck all address lines.

DO NOT ASSUME THAT YOUR HARDWARE IS CORRECT. ASSUME THAT EVERYTHING IS CONNECTED WRONG UNTIL YOU VERIFY EACH PIN CONNECTION.

sanni, if I'm not mistaken, this is the diagram against which skaman is saying I should compare my dumper, correct? That's the schematic for the dumper for which you give the instructions on GitHub, right?

skaman:
The existing sketch with SPC7110 code is fine. The problem is clearly on your end either reader hardware or cart. There's no way I can tell exactly what is wrong from here. Like I said before, recheck all address lines.

DO NOT ASSUME THAT YOUR HARDWARE IS CORRECT. ASSUME THAT EVERYTHING IS CONNECTED WRONG UNTIL YOU VERIFY EACH PIN CONNECTION.

Thanks for the help. You don't have to shout, though :3 I already checked to make sure everything was connected like you said. I just remembered that sanni posted a link to the schematics in response to my first inquiry. Assuming that the ones he gave me are for the build he has on his GitHub, I'll check them again, using the schematic as a guide, and report back any abnormalities if they exist.

Sorry, not shouting. Meant to say it with emphasis. Recheck all the pins while you're at it. Even if you were able to read other special chip carts, the addressing to read them is different from reading the SPC7110 carts.

I should have implemented TMZero dump code to sanni’s cart reader. I’m pretty sure that the code I posted while ago will dump TMZERO cart properly by UART though.
By the way, how big is size of your dump werewolfslayr925?

I was curious. If you backup a game or battery save from a reproduction of a patched game (English translation of a JP rom) would work? Or would you get errors because the data wouldn’t match?

Edit: Got my answer. I was able to read the save from a retail JP Star Ocean and write the save back to a English patched repro cart that I made with no issue. Amazing!

I've been on a bit of a Street Fighter 2 run. Got PCE Street Fighter II', Virtual Boy Hyper Fighting, and MD/Gen Super Street Fighter 2 all dumping properly. SF2 and its console variants really pushed the hardware limits.

I'll submit the Super Street Fighter 2 code changes to sanni.

Nice! Are you able to dump virtual boy though? I cannot find any compatible sockets.

Yes, I made a VB Plugin PCB for the Retrode. The connector requires hand assembling header pins into the proper configuration. Pictures of a prototype in this thread: Retrode forum on hold

I modified one of the prototype plugins to work with the Arduino reader. The plugin configured for the Arduino reader supports SRAM and Hyper Fighting. The Retrode is limited to SRAM or Hyper Fighting (ROM only) due to a lack of available control pins.

Hi skaman,

Can you share me Pinout of your PC Engine adapter?
I need to slightly modify hardware of my PCI socket version again.
So I want to rewire it to add compatibility with yours.

By the way, I think adding logic IC to your VB adapter will solve control pins problem.

Modified PCE/TG16 pinout (based on pinout posted on Retrode website):

SNES  - TG16                                SNES  - TG16
===============================             ===============================
PIN5  - PIN18                               PIN36 - PIN18
PIN6  - PIN27                               PIN37 - PIN6
PIN7  - PIN25                               PIN38 - PIN30
PIN8  - PIN28                               PIN39 - PIN31
PIN9  - PIN29                               PIN40 - PIN5
PIN10 - PIN7                                PIN41 - PIN4
PIN11 - PIN8                                PIN42 - PIN32
PIN12 - PIN9                                PIN43 - PIN33
PIN13 - PIN10                               PIN44 - PIN3
PIN14 - PIN11                               PIN45 - PIN24
PIN15 - PIN12                               PIN46 - No Connect
PIN16 - PIN13                               PIN47 - No Connect
PIN17 - PIN14                               PIN48 - No Connect
PIN18 - No Connect                          PIN49 - PIN26
PIN19 - PIN23                               PIN50 - PIN19
PIN20 - PIN22                               PIN51 - PIN17
PIN21 - PIN21                               PIN52 - PIN16
PIN22 - PIN20                               PIN53 - PIN15
PIN23 - No Connect                          PIN54 - PIN34
PIN24 - No Connect                          PIN55 - No Connect
PIN25 - No Connect                          PIN56 - No Connect
PIN26 - No Connect                          PIN57 - No Connect
PIN27 - PIN38 Vcc.                          PIN58 - PIN38 Vcc

Changes to original pinout: swap A18 and A19 (SNES Pins 43 and 44) and connect /WR (SNES Pin 54).

Thanks.
Only difference I found was CE and OE pins.

I also bought one VB cart to play with but surprised about how thin the connector holes are.

The original plugin made for the Retrode by JonY used pins extracted from PCMCIA connectors.

I use pins from a specific 1.27mm header. The pins that I use are 0.4mm square.

Pins from a standard 1.27mm header will work but they will be slightly oversize and a really tight fit.

Thanks.
I’ll try to make another VB adapter for sanni’s by re-aligning pins in link below once I get PC engine adapter finished.

tamanegi_taro:
I should have implemented TMZero dump code to sanni’s cart reader. I’m pretty sure that the code I posted while ago will dump TMZERO cart properly by UART though.
By the way, how big is size of your dump werewolfslayr925?

The size of the dump is appr. 5 MB (5,242,880 bytes)

I'm going through each pin on the board for the SNES cart slot as skaman suggested. So far, all of the A pins match where the board says they should go.

I really don't know how to make heads or tails of the schematic. It doesn't seem to match the names on the board—then again, I really don't know how to read it. So, I'm drafting my own schematic/taking notes based on what I've got. I'll post both my schematic draft, my notes, and pictures of my dumper when I'm done.

Thanks everyone for being willing to help. I'm sorry for being such trouble.