Go Down

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

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.

werewolfslayr925

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.

skaman

Try adding the SPC7110 initialization code:

Code: [Select]

  // 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 );

werewolfslayr925

Try adding the SPC7110 initialization code:

Code: [Select]

  // 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?

skaman

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.

sanni

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.

werewolfslayr925

#486
Mar 19, 2018, 01:00 pm Last Edit: Mar 19, 2018, 02:36 pm by werewolfslayr925
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?

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.

werewolfslayr925

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?

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.

skaman

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.

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?

Einhandr

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!

skaman

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.

tamanegi_taro

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

skaman

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:  http://forum.retrode.org/index.php/topic,392.msg2875.html

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.

Go Up