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
Zitat von "Ikari_01"Alles anzeigenDer D4-Ausgang (Pin 3) wird vom SuperCIC auf die tatsächliche Region des erkannten Modul-CIC gesetzt, unabhängig von der Einstellung des Videomodus.
Der Wert des D4-Ausgangs muss immer dann, wenn die CPU Register $213f abfragt, auf Bit 4 des CPU-Datenbus gelegt werden. D.h. wenn PA[7:0]=00111111 und /PARD=0, dann D4 auf den Bus durchschalten.
Das lässt sich durchaus mit diskreter Logik (also 74er-Bausteine) aufbauen. Man braucht 3 Inverter, ein 9-fach-NAND und einen Tristate-Puffer.
Als Inverter kann man z.B. einen 74LS04 oder so nehmen.
9-Fach-NAND gibt es anscheinend so nicht von der Stange, also nimmt man ein 13-fach (74LS133) und legt die unbenutzten Eingänge auf 5V.
Die Typen (LS/HC/HCT/F) sind für Inverter und NAND egal.
Als Buffer z.B. ein 74HC/HCT125. Ein LS hier eher nicht, da sind die Ausgänge evtl. zu schwach, um den PPU-Ausgang "überzubügeln".
Wer noch einen 244 oder 245 hat, kann auch den nehmen.
PA7-0 und /PARD kann man sich von der S-CPU oder vom Modulport holen. Liegt an den Extensionpins an.
Man legt dann PA7, PA6 und /PARD invertiert auf das NAND, und PA5-0 direkt.
Der NAND-Ausgang schaltet dann einen Buffer, der SuperCIC-D4 am Eingang und SNES-D4 am Ausgang hat.
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:
- Projektseite sd2snes.de von Ikari
- Tutorial zum Einbau SuperCIC (2PPU-SNES)
- Einbau SuperCIC in 1PPU-SNES (auf snesfreaks.com)
- Einbau IGR (den von mir modifiziertem)
Vorschläge, welche Links noch nützlich sind, gerne posten
Und nun noch zu den Schaltplänen:
- Schaltplan D4-Patch von Ikari (ein Gate vom 74HC125 genutzt
- Komplettschaltplan $213f-D4-Patching mit SuperCIC und IGR (aus meinem Platinenprojekt für das 1Chip-SNES mit paralleler Nutzung aller Gates vom 74HC125)
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 Anmerkungen nehme ich sehr gerne entgegen.