Go Down

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

skaman

Nice work!

I'm still working on the Retrode version.  It should be simple but it never is with so much going on on the Retrode. :/

Take Care!

sanni

Just finished building and testing my newest V16 cart reader pcb and can confirm that the new SA1 sram write code works perfectly.  :D














I've also designed a new SD module pcb that uses the same schematics and components as the microSD module but has a full-size sd slot.


tamanegi_taro

#467
Mar 14, 2018, 01:41 pm Last Edit: Mar 14, 2018, 02:25 pm by tamanegi_taro
So nice sanni!
It looks like famicom color(Red and white).
I like your new SD card adapter too.

elecrow started 3D printing service.
Do you think your 3D printer file has compatibility with elecrow?

Did you connect 5V constant to new SD card adapter's 3.3V LDO?
I think supplying 3.3V to 3.3V LDO do not work because it can only generate 2.1V.
3.3V - 1.2V = 2.1V
SD cards need least 2.7V to work.


Hi skaman,

Uploaded pinout excel file and Cart_Reader PC Engine dumper source code.

http://fast-uploader.com/file/7076586403288/
http://fast-uploader.com/file/7076586434468/

Be careful. PCE adapter Pinout listed in excel is hardware REV2.
PCE source code is for hardware REV1.
I will update hardware and source code by end of March(Or April) to ask sanni to upload these on github.

These are pin differences between REV1 and REV2
As you can see, I messed up and connected some pins to CIC instead of Arduino for REV1.

REV1:
A23-SNES No connect
A22-SNES No connect
A21-SNES No connect
Reset In-SNES Audio In-PCE
CIC1-SNES HSM -PCE
CIC0-SNES Card Detect-PCE


REV2
A23-SNES Card Detect-PCE
A22-SNES Audio In-PCE
A21-SNES HSM -PCE
Reset In-SNES No connect
CIC1-SNES No connect
CIC0-SNES No connect

And I also know that there is no pin compatibility with Retrode one because I thought it is better to connect HSM and WR to Arduino IO pins. I also left 18th and 19th address pins connected to same address instead of swapping them.

skaman

@tamanegi_taro,

I made some changes to my Retrode code and got SF2 dumping properly with my existing plugin.  It was a timing issue with my original code.  As for the plugin, the extra pins (CARD, AUDIO, HSM, IRQ) remain unconnected as in the original pinout.

Thanks for sharing the files!

Einhandr

Just finished building and testing my newest V16 cart reader pcb and can confirm that the new SA1 sram write code works perfectly.  :D














I've also designed a new SD module pcb that uses the same schematics and components as the microSD module but has a full-size sd slot.


It's so beautiful!!!

tamanegi_taro

#470
Mar 15, 2018, 12:06 pm Last Edit: Mar 15, 2018, 12:35 pm by tamanegi_taro
Hi skaman,

Games arrived.

Cyber dodge - detected as 512KB
B5326B16 CRC matched with database.

Kisoukishi Kaizard - detected as 384KB
1CAB1EE6 CRC matched with database.

By the way, about populus, I think it was just bad dump.
I never heard about hucard with RAM implemented in it.


skaman

Thanks for the confirmation on those HuCards!

Populous and Tennokoe Bank are the only ROMRAM HuCards.  Populous doesn't have a battery so nothing is saved.

tamanegi_taro

#472
Mar 15, 2018, 01:26 pm Last Edit: Mar 15, 2018, 01:38 pm by tamanegi_taro
Welcome skaman.
 Yes Populus has ram on it.
I'm not sure but maybe super system card, arcade card pro, and SF2' might have Ram in them too because card size is thicker.

I found these in mamedev source

Normally address spacebanks 00-F6 are assigned to regular HuCard ROM space. There
are a couple of special situations:
Street Fighter II:
  - address space banks 40-7F switchable by writing to 1FF0-1FF3
    1FF0 - select rom banks 40-7F
    1FF1 - select rom banks 80-BF
    1FF2 - select rom banks C0-FF
    1FF3 - select rom banks 100-13F
Populous:
  - address space banks 40-43 contains 32KB RAM
CDRom units:
  - address space banks 80-87 contains 64KB RAM
Super System Card:
  - address space banks 68-7F contains 192KB RAM

Cyber_Akuma

Just finished building and testing my newest V16 cart reader pcb and can confirm that the new SA1 sram write code works perfectly.  :D
Nice! Is there a hardware changelog BTW of what the differences between revisions are? Main difference I see is that the 3/5v selector has been put on a dedicated switch instead of being part of the power switch, but I don't know if anything else is different.

Does the new SA1 Sram writing code work on all models that support SNES cartridges?

sanni

The difference is that with V15 there was a little pcb on the Arduino Mega that did the 5V/3V supply switching and with V16 all that was integrated back into the cart reader shield pcb, which is more cost effective. The 5V/3V switch and the On/OFF switch are separate again because it's cheaper that way since you only need to order one kind of switch for the whole cart reader.

Functionally all the different cart reader versions are the same. So the new SA1 Sram writing code will work with all versions as long as you have installed the Adafruit Clock Generator.

tamanegi_taro

The difference is that with V15 there was a little pcb on the Arduino Mega that did the 5V/3V supply switching and with V16 all that was integrated back into the cart reader shield pcb, which is more cost effective. The 5V/3V switch and the On/OFF switch are separate again because it's cheaper that way since you only need to order one kind of switch for the whole cart reader.

Functionally all the different cart reader versions are the same. So the new SA1 Sram writing code will work with all versions as long as you have installed the Adafruit Clock Generator.
Hi sanni,

Sorry to bother you. Please let me explain my opinion in detail.

I think you already know well about this though. Did you supply VCC(3.3V/5V switchable) to SD card module's 3.3V LDO? If so, I think you need to change VCC to 5V constant. 3.3V LDO dropout voltage is like 1.2V. So if you supply 3.3V to 3.3V LDO to get 3.3V, you don't get 3.3V. You get 3.3V - 1.2V = 2.1V. According to SD card specification, SD card need 2.7V to operate correctly as minimum voltage. 2.1V obviously will not be enough voltage. So I think you need to change VCC pad of SD card connector to 5V constant pad.

On the other hand, few days ago, I was asking you about adding 3.3V and 5V pads to the clockgen connector and SD card connector, respectively. No need to add those extra pads if you are going to change VCC pad of SD card connector to 5V constant pad. This is because I can get both 3.3V and 5V for clockgen from SD card connector if needed.

sanni

I don't use the LDO on the sd card modules. I supply constant 3.3V to where the output of the LDO would be. The 5V/3V switchable VCC pin is currently not used for anything, I can change it to 5V constant next revision if that will be useful.


werewolfslayr925

Okay, so, if I understand tamanegi_taro correctly, there's an error in the coding for SPC7110 carts in that it isn't reading one of the banks properly. The only thing that I could find that seemed odd, was that it wants to read 0xF00000-0xFFFFFF twice:

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

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

    if (numBanks > 32) {
      dataOut();
      controlOut_SNES();
      // Set 0x4834 to 0xFF
      writeBank_SNES( 0, 0x4834, 0xFF );

      dataIn();
      controlIn_SNES();

      // 0xE00000-0xEFFFFF
      print_Msg(F(" 2"));
      display_Update();
      readHiRomBanks( 224, 240, &myFile );

//first here
      if (numBanks > 48) {
        // 0xF00000-0xFFFFFF
        print_Msg(F(" 3"));
        display_Update();
        readHiRomBanks( 240, 256, &myFile );

        dataOut();
        controlOut_SNES();

        // Set 0x4833 to 3
        writeBank_SNES( 0, 0x4833, 3 );

        dataIn();
        controlIn_SNES();

//then here
        // 0xF00000-0xFFFFFF
        println_Msg(F(" 4"));
        display_Update();
        readHiRomBanks( 240, 256, &myFile );
      }

      // Return mapping registers to initial settings...
      dataOut();
      controlOut_SNES();

      writeBank_SNES( 0, 0x4833, 2 );
      writeBank_SNES( 0, 0x4834, 0 );

      dataIn();
      controlIn_SNES();
    }
  }

  // Close the file:
  myFile.close();
}


Is it supposed to do that? Could that be what's causing the problem? Should I erase one of the  0xF00000-0xFFFFFF readings or replace it with something else?

tamanegi_taro

Maybe code is for other game? Not sure why it's reading it twice.
Did you see "Dumping SPC7110 HiRom" and 1, 2, 3, and 4 on screen when you dump the cart?
Try removing first F00000 read.

Go Up