[TUT] $213f-D4-Patching mit dem SuperCIC mit vielen Bildern

  • Bevor es richtig mit dem Tutorial losgeht, will ich ein Paar Fragen klären:


    • Wofür ist dieser Mod?
      Dieser Mod bewirkt, dass die berühmte Meldung "This Gamepak is not designed for [...]" unterdrückt wird, wenn die Region des Spielmoduls nicht zu der des SNES-Modus passt. Beim Auslesen des CPU-Registers $213f liegt am Daten Bus bit 4 die Region des SNES an (Vdd (+5V) für PAL, bzw. Vss (GND) für NTSC - halt das, was ihr über den SuperCIC oder IGR eingestellt habt). Liest das Spiel eine andere Region aus, als erwartet, erscheint die schöne Meldung. Die Umgehung dieser Meldung erfolgt durch einfaches Überbügeln des Zustandes an dem D4-PIN, wenn die Region abgefragt wird.
    • Ich habe den S-CIC (und oder den neuen IGR) verbaut. Warum erscheint die Meldung dann im Allgemeinen nicht?
      Das liegt daran, dass die meisten Spiele die Region nur am Start auslesen. Ist der PIN4 des SuperCIC auf +5V, bzw. beim neuen IGR der verzögerte Start eingestellt, dann startet die Konsole in der Region des Moduls und schaltet erst nach ca. 9Sekunden auf die vom User gewünschte Region um. Es gibt allerdings auch Spiele, die immer mal wieder die Region abfragen - die kann man damit nicht austricksen. Dies sind allerdings nur ein Paar wenige Spiele, die das machen.
    • Woher "weiß" die Schaltung, welche Region das eingelegt Modul erwartet
      Diese Information holt die Schaltung sich vom S-CIC. Die Region des eingelegten Spielmoduls liegt an PIN3 des S-CIC an. Den hatte ich auch bei meiner Modifikation/Erweiterung des IGRs genutzt.
    • Gibt es "Nebenwirkungen"?
      Bisher bekannt: Wer ein sd2snes besitzt, könnte welche haben. Der sd2snes gibt dem S-CIC die Region der ungemoddeten Konsole, in der das sd2snes zuletzt gesteckt hat. Das sd2snes besitzt selbst eine D4-Patch-Schaltung für die ROMs. Ist eure "stärker", kann es sein, dass das ROM eine "falsche" Region bekommt und die lustige Meldung von oben ausgibt.
    • Gibt es ein Work-Around, um die Nebenwirkung zu umgehen?
      Im S-CIC der Konsole und dem S-CIC auf dem sd2snes ist ein Pairmode implementiert. Dieser steht allerdings noch auf der ToDo-Liste von Ikari, dass dieser auch vom uC unterstützt wird. Sobald dieser Par-Mode vorhanden ist, kann man über den sd2snes die Region der Konsole umstellen UND die Region für den PIN3 am S-CIC der Konsole wird automatisch dem ROM angepasst. Momentan heißt es: richtiges ROM benutzten (entsprechend der Region) oder Original-Module.
      Man nehme meinen (inoffiziellen Build) der sd2snes Firmware Version 0.1.6d


    So, wer jetzt noch nicht abgeschreckt ist, für den geht es weiter! Das Tutorial ist in vier Teile gegliedert: Theorie, Materialien mit Linkliste, Vorbereitung der ICs und Einbau der ICs! Also lasst uns loslegen! Die Beschreibung zu einem Bild ist IMMER direkt unter dem Bild und nicht darüber ;)


    1. Theorie


    Hier möchte ich einfach mal Ikari_01 aus'm snesfreaks-Forum zitieren. Ich brauche mir ja nichts ausdenken ;)



    Ich persönlich habe festgestellt, dass man beim 74HC/HCT125 mehrere Gates parallel nutzen muss, um das Videomode-Flag zuverlässig auf den geforderten Pegel zu "zwingen". Aber dazu später mehr ;)


    2. Materialien mit Linkliste


    Diese Sachen benötigt ihr:

    • 74*04 (LS/HC/HCT/F) - ich habe einen 74LS04 genommen
    • 74HC/HCT125 - ich habe einen 74HC125 genommen
    • 74*133 (LS/HC/HCT/F) - ich habe einen 74LS133 genommen (habe noch vier hier, der haben möchte)
    • Das übliche halt noch - Lötausrüstung, Kabel, ggf. Multimeter, Musik, Kaffee, etc.


    Hier ist eine kleine Linkliste, zu nützlichen Seiten:


    Vorschläge, welche Links noch nützlich sind, gerne posten ;)


    Und nun noch zu den Schaltplänen:


    Die Gates eines Bausteines können beliebig getauscht werden... ;)


    3. Vorbereitung der ICs


    Bevor es losgeht, wollen wir die ICs vorbereiten. Diese habe ich genommen.

    Vcc liegt immer am oberen rechten PIN an und GND am unteren linken, also

    • 74LS04 und 74HC125 - Vcc an PIN14 und GND an PIN7
    • 74LS133 - Vcc an PIN16 und GND an PIN8


    Zunächst habe ich an allen ICs die PINs hoch gebogen und etwas "verkürzt". Das habe ich jetzt nicht


    Ich fange mal mit dem 74LS04 an:



    Wir benötigen drei der insgesamt sechs Inverter. Da die restlichen nicht einen "offenen" Eingang haben sollen, legen wir die Eingänge einfach auf GND. Ich habe die Gates (1,2), (3,4) und (5,6) nicht benutzt, weil die auf der Seite des GND-PINs liegen. Dann habe ich einfach eine Brücke rübergelegt. Später nutze ich die Gates (13,12), (11,10) und (9,8). (Bezeichnung immer (Eingang, Ausgang)).


    Der 74HC125:



    Der IC ist etwas "komplizierter". Um alle Gates "parallel" zu nutzen, muss man jeweils Schalter, Eingang und Ausgang zusammen löten, also einmal die PINs

    • 1, 4, 10 und 13 - die Schalter (rot),
    • 2, 5, 9 und 12 - die Eingänge (schwarz), und
    • 3, 6, 8 und 11 - die Ausgänge (braun)


    mit einander verbinden. Hier ist ein ruhiges Händchen gefragt, weil die Kabel so kurz wie möglich sein sollen, damit das Gate möglichst effektiv arbeitet.


    Der 74LS133:



    Der 74LS133 ist ein 13-fach NAND. Die PINs 1-7 und 10-15 sind Eingänge, der Ausgang liegt an PIN9. Da wir nur 9 Eingänge nutzen, müssen 4 auf Vcc (logisch 1) gelegt werden. Sonst läuft gar nichts. Ich habe die PINs 12-15 genommen, weil diese gleich am Vcc-PIN 16 sind.
    (Ich habe im Bild ein PIN vergessen - den habe ich später mit angefügt).


    Nun sind wir fertig und können mit


    4. Einbau der ICs


    beginnen.
    Das erste, womit wir uns beschäftigen, ist die Platzierung der ICs im SNES.



    Hier ist erstmal das SNES-Mainboard von unten. Es handelt sich um eine 2PPU-SNES - unten ist der Anschluss zum Controller-Port, in der Mitte der Cart-Connector und oben das übliche Anschluss-Gedöns :D. Wir bauen die ICs am Cart-Connector ein. In den folgenden Bildern bleibt das Mainboard so liegen.



    Die ganzen PINs am Cart-Connector wirken im Schaltplan noch recht verteilt und "unübersichtlich". Wenn man sich das aber anschaut, ist es doch recht sortiert.

    • Links liegen PA0 - PA5, die direkt am 74LS133 gehören,
    • rechts liegt PA6, PA7 und /PARD, die rein zufällig erst an über den Inverter 74LS04 zum 13-NAND müssen, und
    • in der Mitte ist der D4-PIN vom Datenbus.


    Hat Nintendo also gut für uns "organisiert". Zur Info: auf PIN5 und PIN36 liegt GND an, auf PIN27 und PIN58 Vcc. Wer will, kann mit einem Multimeter andere "erklingeln". Zurück zum Thema: Also habe ich die ICs dorhin gelegt, wo auch die PINs sind.



    Von links nach rechts habe ich die ICs 74LS133, 74HC125 und 74LS04 geklebt; so, dass kein Widerstand und kein Kondensator beklebt wurde. Zur Orientierung liegt bei den ICs PIN1

    • des 74LS133 unten links,
    • des 74HC125 oben links, und
    • des 74LS04 unten links.


    Ich habe schon mal den 74HC125 angeschlossen:

    • Das graue Kabel kommt vom PIN3 des SuperCIC (PIN8 des uIGRs) und liegt an den Eingang-PINs (2, 5, 9 und 12 - schwarz) des 74HC125.
    • Der Ausgang des 74LS133 (PIN9) kommt an die Schalter des 74HC125 (PIN 1, 4, 10 und 13 - rot).
    • Die Ausgangs-PINs (3, 6, 8 und 11) des 74HC125 kommen an den D4-PIN des Datenbusses (PIN50 des Cart-Connectors).


    Weiter geht es mit dem 74LS04:



    Eigentlich recht einfach - ein jeder Eingang des ICs kommt an einen PIN des Cart-Connector, also an PA6 (PIN3), PA7 (PIN34) und /PARD (PIN4). Die Ausgänge kommen an einen Eingang des 74LS133.


    Weiter geht es mit dem 74LS133:



    Wie gesagt, vier Eingänge sind auf Vcc gelegt, drei sind durch den 74LS04 besetzt und die letzten sechs kommen an den Cart-Connector PA0 - PA5 (PINs 28, 29, 30, 59, 60 und 61). Der Ausgang des 13-NAND kommt wie gesagt an den 74HC125.


    Hier sieht man jetzt nochmal alle ICs, wie sie verbunden sind.



    Was jetzt noch fehlt, sind an jedem IC Vcc und GND. Das kann entweder vom Cart-Connector genommen werden (Vcc an PINs 27 und 58; GND an PINs 5 und 36). Man kann auch alternative Punkte mit einem Multimeter durchklingel ;)



    Jetzt sind wir fertig. Wer nur den SuperCIC verbaut hat, bzw. mit den von Ikari originalen IGR verbaut hat, kann jetzt PIN4 des SuperCIC auf GND gelegt werden. Wer den neuen von mir modifiziertem IGR verbaut hat und PIN3 des SuperCIC sowieso schon auf GND hat, kann den verzögerten Start ausschalten (Tastenkombi: L+R+Select+Pfeil nach unten)...


    Viel Spaß beim Selbstbau :D Anmerkungen nehme ich sehr gerne entgegen.

    • Gibt es "Nebenwirkungen"?
      Bisher bekannt: Wer ein sd2snes besitzt, könnte welche haben. Der sd2snes gibt dem S-CIC die Region der ungemoddeten Konsole, in der das sd2snes zuletzt gesteckt hat. Das sd2snes besitzt selbst eine D4-Patch-Schaltung für die ROMs. Ist eure "stärker", kann es sein, dass das ROM eine "falsche" Region bekommt und die lustige Meldung von oben ausgibt.
    • Gibt es ein Work-Around, um die Nebenwirkung zu umgehen?
      Im S-CIC der Konsole und dem S-CIC auf dem sd2snes ist ein Pairmode implementiert. Dieser steht allerdings noch auf der ToDo-Liste von Ikari, dass dieser auch vom uC unterstützt wird. Sobald dieser Par-Mode vorhanden ist, kann man über den sd2snes die Region der Konsole umstellen UND die Region für den PIN3 am S-CIC der Konsole wird automatisch dem ROM angepasst. Momentan heißt es: richtiges ROM benutzten (entsprechend der Region) oder Original-Module.


    Ich habe mich ein wenig damit beschäftigt und die Firmware des sd2snes etwas modifiziert. Ich habe den Pairmode aktiviert und sende jetzt immer, wenn ein ROM geladen wird, die entsprechende Region des ROMs an den S-CIC. Damit wirken der D4-Patch auf dem sd2snes und der eigene D4-Patch am Mainboard nicht mehr gegeneinander, sondern arbeiten zusammen. :) Schöner Nebeneffekt - der Automodus funktioniert auch entsprechend der ROM-Region. Was durch den Pairmode weg fällt, ist das Umschalten per Reset. (Aber ehrlich, wer braucht das, wenn der IGR drinnen ist :P)


    Was mir dabei gleich aufgefallen ist, ist, dass der Long-Reset, wie er durch den IGR ausgelöst wird, im Pairmode so nicht funktioniert. Dies habe ich für meine modifizierte Version des IGRs gefixt. Wer einen Bug-Fix für die alte Version des IGRs haben möchte, kann sich gerne bei mir melden - dann arbeite ich das auch rein. ;)


    Dieser "Bugfix" ist nicht wirklich einer, nur ein workaround, solange es keinen "offiziellen" Pairmode gibt. Dieser Workaround im IGR stört aber später nicht und muss somit nicht nochmals umprogrammiert werden ;)


    So - und nun zu den Links:


  • Ich hab da schon länger danach gesucht, aber für welche Spiele brauch ich denn eigentlich den d4-Patch? es sollen ja angeblich nur sauwenige sein...aber welche sind es denn jetzt? will wissen, wie ich nen eingebauten d4-Patch auf Funktion überprüfen kann.

    • Offizieller Beitrag

    Terranigma, Super Street Fighter 2 zum Beispiel.


    Das Problem ist, dass er die Abfrage nicht nur am Anfang macht, sondern auch mal dazwischen.


    Ergo kannst du trotz SCIC eventuell Terranigma nicht auf 60hz zocken... Außer D4 Patch ist installiert.


    testen kannst du es, wenn du Terranigma auf 60hz stellst und an machst. Wenn du keine Fehlermeldung bekommst "This Game..." sollte alles klappen.


    Gruß


    red