Go Down

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

sanni

There seem to be two types of cart connectors, the official with 6.8mm vertical spacing and 3rd party clones that have 5mm.

skaman

Just checked the Retron 3 connector and it is the narrow 5mm spacing too.

sanni

I redesigned the cart slot so that both the 5mm china version and the wider official should fit. I used the FreeRouting Autorouter for Eagle:
Github
Forum


AngryHelder

I used the FreeRouting Autorouter for Eagle:
Github
Forum
Any info on how to open FreeRoute? I can't find any site that will open the java program and I tried to run the file freeroute.jnlp offline I get a java program error. This looks like a really cool program I'd like to try on some of my projects, if it's going to be a problem posting such info about it (copyright?) please send me a PM.

Thank you for all the files.

skaman

Found an error in my romType code in getCartInfo().  If the romType is 0x32 (or 0x3A), then the code currently sets it to HiROM.  This works for SDD1 (and SPC7110) carts.

While dumping Nintendo Power carts, I ran across "Super Momotarou Dentetsu 2" which is romType 0x32 but LoROM.  This was the NP game that I was dumping wrong because I had flagged it based on romType as HiROM.

EDIT:  Here's the modified code:
Code: [Select]

void getCartInfo () {
  ...
  // Check if LoROM or HiROM
  romType = dumpByte(0, 0xFFD5 + offsetEx, false);

  // Check RomSpeed
  romSpeed = (dumpByte(0, 0xFFD5 + offsetEx, false) >> 4);

  // Check RomChips
  romChips = dumpByte(0, 0xFFD6 + offsetEx, false);

  // Identify LoROM or HiROM or ExHiROM
  if (romType == 0x35) // ExHiROM
    romType = 2;
  else if (romType == 0x32) {
    if ((romChips == 0x43) || (romChips == 0x45)) // SDD1
      romType = 1;  //HiROM
    else
      romType = 0;
  }
  else if (romType == 0x3A) // SPC7110
    romType = 1;  //HiROM
  else
    romType = romType & 1; // 0xFFD5
  ...
}


I moved the section that modifies the romType to after the romChips check.  We'll use the romChips 0x43 or 0x45 to flag the SDD1 carts as HiROM.

Good Luck!

zzattack

Very awesome stuff in here! I'd like to build one myself now. Could you share the eagle file (or gerbers) for your board sanni? (Assuming that the electrical test really passed of course :))

sanni

There were some problems with my design so I took the files down. Mainly clearance issues that could lead to short circuits. I will refine the design and upload it again.

In other news, I added a MX29L3211 flashrom programmer to my previous post. Now you can program all interesting(in terms of SNES) flashroms with the Arduino. :)

zzattack

Ah, sorry to hear.. Yeah, autorouter strikes again. Good luck on the next generation.  Eagle has some useful drc options, which help run some checks that prevent you from having clearance issues. Oshpark and sseedstudio (and probably many more) provide them, iirc.

sanni

Thanks, I'll try that.

AngryHelder

I've used quite a few manufacturers and have a collection of DRU files from them and most Chinese fabricators teds to use 8mil for spacing where as OSHPark uses 6mil.

Here is my collection for anyone to use and they are accompanied by the fabricators name.

https://www.mediafire.com/?remkbqbjgpb08yb

skaman

Someone asked about reading and writing SRAM for the Nintendo Power carts. 

As I mentioned previously, reading the savegame out of SRAM is possible once a cart is switched out of the menu into game mode.  I've dumped all of the savegames off of my NP carts.

I finally ran some tests writing savegames to SRAM.  Using an NP cart with Super Mario World, I was able to write a new 96* savegame to the SRAM.  After testing the 96* savegame, I then wrote back the original savegame.  Everything works without a problem.

Once the NP cart switches from menu to the selected game, then the cart essentially becomes that game.  The read/write code for ROM and SRAM should work.

I'm still trying to improve the reliability of the menu to game mode switching.  I'll be doing more testing until I figure it out.

Good Luck!

zzattack

That's so awesome skaman! I'm waiting for my parts now, am really excited to build this

sanni

I made some short videos  :smiley-mr-green:


zzattack

Cool!! Did you already receive the revised board or did you patch up the first batch? I should have the boards from the 2nd revision back from oshpark in about a week now. Can't wait :D

sanni

I'm still using the 1st revision, works fine after you carefully bend the pins of the cart slot so it fits the spacing. :)

Remember that the pinout has changed between the perfboard-and-wire version and the pcb shield version, I uploaded skamans enhanced code with those pinout changes already made for the pcb in post #68.

The reason for changing the pinout was that now everything is grouped into the same ports, so that you could use direct port manipulation quite easily instead of digitalwrite to gain a speed boost if needed.

Please post pictures once your build is completed, that purple pcb will surely looks nice  8)

Go Up