[TuT] Der neue ultimative InGameReset (Version2 mit SuperCIC am Bsp. der 2Chip-SNES)

  • Hallo Community,


    einige von euch haben bestimmt mitbekommen, dass die letzten Tage am Circuit-Board im Bezug auf den InGameReset passiert ist! Das Zusammenspiel zwischen SuperCIC und IGR von Ikari wurde ... nun ja, "bemängelt" ist der falsche Ausdruck, aber es wurde sich halt etwas MEHR an Funktion gewünscht.


    Rückblick:
    Bisher war es so, dass per IGR auf 60Hz, 50Hz und den Modus vom SuperCIC geschaltet werden konnte. Wurde per Controller 60Hz oder 50Hz eingestellt, hatte das Umschalten des Modi per Reset keinen Einfluss mehr. Man musste erst per L+R+select+B auf den SuperCIC umschalten. Zumal viele die Kombo L+R+select+B als "Auto"-Modus verstanden, sowie ich z.B. auch :D. Zudem besaß der "alte" IGR keine Speicherfunktion - beim Start war automatisch wieder die Region des SuperCIC drinnen.


    Ok -das musste geändert werden! Und es wurde geändert 8)


    Gesagt, getan - das neue Programm findet ihr hier zum Download:
    Der neue InGameReset


    Wichtig:

    • Erst Weiterlesen, um zu entscheiden, ob ihr den einbauen wollt!

    • Wer nicht sicher ist, ob sein Programmer für den PIC die Adresse 3FFh löscht, sollte sich bei mir melden oder einen anderen PIC nehmen.



    Nun zur ersten, vielleicht interessantesten Frage: Was kann der neue IGR, was der alte nicht konnte?


    Featureliste:

    • Wechselseitiger Modi-Wechsel per Controller und Reset-Knopf jederzeit möglich!
    • Der IGR besitzt jetzt auch einen "Auto"-Modus, in dem der Modi des Moduls ausgegeben wird.
    • Letzt gewähler Modus wird nun auch vom IGR gespeichert
    • Regionentimeout: kennt ihr vom SuperCIC, wenn dort PIN 4 auf +5V ist; am Anfang wird ca. 9 Sekunden der Modus des eingesteckten Moduls ausgegeben, anschließend der vom User gewählte. So wird auch nach einem Reset und Long-Reset gestartet. Dies kann per Controller ein- und ausgeschaltet werden.
    • Regionenpatching an- und ausschalten: Der sogenannte $213f-D4-Patch (wenn in der Konsole installiert) kann mit dem IGR an- und wieder ausgeschaltet werden.


    Soviel dazu - wenn mir noch was einfällt, werde ich es editieren :D Wer bis hierhin nicht abgeschreckt ist, und (noch) nicht zurückschreckt, will sich den IGR bestimmt einbauen ;). Im Prinzip keine große Sache!

    • PIC 16F630 beschreiben
    • Wie gewohnt einbauen, bloß mit drei kleinen Unterschieden!!!:
      • PIN4 des IGRs wird mit PIN3 des SuperCIC verbunden, wie es in der folgenden Grafik zu sehen ist.
      • PIN7 ist nicht mehr der LED-Typ, sondern wird mit dem D4-Patch verbunden.
        Zu dem D4-Patch gehört ein 13NAND, der 74*133. Da werden normalerweise 4 Inputpins auf +5V gelegt (z.B. PIN12 - PIN15), weil nur 9 benötigt werden. Hier einfach einen der übrigen Inputpins des 133er (z.B.PIN12) mit dem PIN7 des IGRs verbinden und die anderen 3 (z.B. PIN13 - PIN15) auf +5V lassen.
      • PIN8 ist der LED-Typ (vorher PIN7 beim klassischem IGR)


      Wer hier aufmerksam war, hat gemerkt, dass PIN12 des SuperCICs eigentlich mit PIN4 des IGRs verbunden war. Diese Verbindung entfällt ersatzlos!

    • Da der IGR im Bezug auf den Ausgabemodus der Konsole als Master, der SuperCIC "nur" Slave ist, kann PIN 4 des SuperCIC auf GND gelegt werden! Der Sicherheitsstart wird eh vom IGR übernommen ;)


    Also hier die Grafik:




    Da ich momentan keine Konsole zum Umbau zur Verfügung habe, möchte ich hier einfach mal zu dem bebilderten Einbaututorial des "alten" IGRs von Red verweisen. (Link in der Sammlung unten) Nicht die kleine Änderung dabei vergessen :!:


    Und zu guter Letzt - die Steuerung. Nicht erschrecken, es ist ein wenig mehr geworden :D


    • L + R + Select + Start
      -> Reset der Konsole (normal)
    • L + R + Select + X
      -> Long-Reset der Konsole (6s)
    • L + R + Select + Y
      -> Region 50Hz/PAL (LED grün)
    • L + R + Select + A
      -> Region 60Hz/NTSC (LED rot) (default bei Neueinbau)
    • L + R + Select + B
      -> Region des Moduls (LED gelb) (neu)
    • L + R + Select + Pfeil nach links (oder rechts)
      -> Umschalten zum Modus des SCIC (was früher L + R + Select + B war, wichtig für ein kommendes Feature des sd2snes :D)
    • L + R + Select + D-Pad oben
      -> Regionentimeout an- und ausschalten
      LED bestätigt beim Einschalten mit aus -> rot -> gelb -> grün -> aus -> "LED Farbe vom aktuellen Modus" (je Farbe ca. 0.4 Sekunden)
      LED bestätigt beim Ausschalten mit aus -> grün -> gelb -> rot -> aus -> "LED Farbe vom aktuellen Modus" (je Farbe ca. 0.4 Sekunden)
    • L + R + Select + D-Pad unten
      -> Regionenpatching an- und ausschalten
      LED bestätigt beim Einschalten mit aus -> grün -> aus -> grün -> aus -> "LED Farbe vom aktuellen Modus" (je Farbe ca. 0.4 Sekunden)
      LED bestätigt beim Ausschalten mit aus -> rot -> aus -> rot -> aus -> "LED Farbe vom aktuellen Modus" (je Farbe ca. 0.4 Sekunden)


    --> Die ganze Anleitung gibt es auch nochmal als PDF: Downloadlink. Vielen Dank dafür an Breaker-of-Worlds aus'm Circuit-Board :) <--


    WICHTIG:
    Bei ersten Programmieren ist standardmäßig der Regionentimeout ausgeschaltet. Sollte man keinen $213f-D4-Patch nutzen, muss man den Regionentimeout einmal anschalten ;)


    Ich hoffe, ich konnte einige überzeugen, sich den neuen IGR zu installieren :) An dieser Stelle nochmal vielen Dank an n00b aus'm Circuit-Board für's fleißige Testen :D !!!


    Grüße :D


    Wenn es fragen gibt, könnt ihr mich jederzeit kontaktieren - entweder per PM oder auch per Email (Adresse im Kopf des Assembler-Files).


    Nützliche Links

  • Ich bekam gerade die Frage:


    Was bedeutet "Ich habe Ikari um ein Feedback gebeten, um evtl. zukünftig geplante Features des sd2snes mit dem IGR "unmöglich" zu machen" per PM.


    Ich meine, ich habe die Funktionen so implementiert, dass alte Funktionen unverändert sind (bis auf die Combo L+R+sel+B auf L+R+sel+ Pfeil rechts (oder links) umgelegt). Das Verhalten bei den einzelnen Modi zwischenzeitlich, wenn nichts verändert wird, habe ich NICHT verändert. Deswegen sollte auch alles funktionieren, was Ikari so in Zukunft plant! Z.B. soll auch irgendwann der Ausgabemodus über den sd2snes gesteuert werden :). Da ich aber auch mal was übersehen kann oder falsch denke, habe ich Ikari gebeten, den Code "abzusegnen" :D...

  • Am D4-Patch ist ein 13NAND-Gatter (74**133) verbaut, wovon allerdings nur 9 verwendet werden. Der Rest der Eingänge ist bisher auf +5V, damit die Schaltung funktioniert. wenn einer der restlichen vier auf GND liegt, ist der Patch "aus", also tut nichts mehr.


    Also werde ich einen Eingang mit dem IGR ansteuern; so kann ich bestimmen, ob die Schaltung an oder aus ist. Ich werde den PIN 4 des IGRs dazu nutzen, wo bisher der Ausgabemodus des SCIC anliegt. Den kann man aber auch aus dem LED-Status berechnen; also ist diese Verbindung überflüssig ;)


    Das An- und Ausschalten werde ich an den Startmodi koppeln:
    Wenn am Anfang 9 Sekunden gewartet wird, wird der D4-Patch aus sein und anders herum.


    Im circuit-board hatte ich zum D4-patch geschrieben:


    Zitat

    Wegen dem D4-Patch möchte ich folgendes einwerfen:
    Ich weiß nicht, welche Langzeitfolgen der hat. Im Prinzip ist der nur dafür gedacht, Spiele, die wirklich ständig die Region abfragen, die richtige vorzugaukeln. Dabei wird ein Bit, das bei der Abfrage am D-Bus Pin 4 liegt quasi "übergebügelt" - nicht die saubere Art, da man für kurze Zeit n relativ großen Leckstrom erzeugt.


    Beispiel: du zockst n PAL-Spiel auf NTSC-Modus. Wenn das Modul nun die Region abfragt, wird vom Modul n "1", also +5V erwartet. Da du auf NTSC spielst, liegt im entsprechende Register der PPU n "0", also 0V. Die Schaltung des D4-Patches liegt an der Leitung, merkt, dass die Region gefragt ist, und haut +5V rauf. Du hast also für kurze Zeit n Kurzschluß! Es gibt allerdings nur wenige Spiele, die ständig/regelmäßig fragen. Viele checken nur am Start, bzw. nach einem bestimmten Startbildschirm...


    Also, bei Spielen ohne Regionen-Check lieber mit den 9 Sekunden Verzögerung leben, bzw. falls eine Abfrage etwas später kommt (z.B. nach der Sprachauswahl) mal per Hand umschalten... Aber letztlich muss das jeder selber wissen - bei mir werden die SNESen (bisher) "stranguliert" :P

  • Ich habe im Zuge der Entwicklung der SNES-SCIC+uIGR+D4-Patch-Platinen den uIGR noch etwas "verfeinert". Dazu gekommen ist, dass jetzt auch nach einem einfachen Reset (egal, ob über Reset-Knopf oder Controller) gewartet wird, d.h. zunächst ca. 9Sekunden der Modus des Moduls ausgegeben wird. Dies wird natürlich auch mit deaktiviert (start+L+R+Pfeil-nach-unten) bzw. wieder aktiviert (default - start+L+R+Pfeil-nach-oben)... Der Link ist wie oben ;)


    Edit: Code getestet und für gut befunden :thumbup: Anmerkungen/Probleme nach wie vor gerne per PN geben ;)

  • uIGR für den Pairmode von sd2snes und S-CIC gefixt (Longreset) - Link siehe oben ;)


    PS: Der Bug ist auch im eigentlichen IGR drinnen...


    Edit und Richtigstellung Es ist natürlich kein wirklicher Bug, nur wird mit dem Pairmode die Auslösung des Longresets durch den sd2snes umgesetzt. Hätte ich natürlich auch drauf kommen können 8| Manchmal erst denken, dann schreiben...

  • Mal eine Frage an die Community, weil ich eh gerade den uIGR etwas überarbeitet habe:


    Macht es Sinn, diverse Funktionen beim IGR ein-und ausschaltbar zu machen? Konkret denke ich dort an eine Tastenkombination zum Ein- und Ausschalten der restlichen Funktionen außer der einfachen Resetfunktion. Eine solche Tastenkombination sollte allerdings sehr ekelig zu drücken sein, z.b. L+R+Sel+Rechts+B, damit man das nicht aus versehen drückt.


    Idee dafür kommt von rama, der sowas in der Diskussion über die kommenden sd2snes-eigenen IGR-Funktionen geäußert hatte.


    Resonanz ist gewünscht...!!!

  • Da ich keinen neuen Thread aufmachen möchte, poste ich einfach mal hier herein...


    Folgendes habe ich im 'Kundenauftrag' gefertigt ;)



    Ein kleiner PIC, der am Controllerport angelötet wird und eine kleine Litze zum Resetknopf hat. Ein IGR-only für Leute, die nicht gleich ihr SNES großartig modden möchten ;)


    Funktionen:

    • L+R+Start+Select: Reset
    • L+R+Start+X: Doppel-Reset (geht beim sd2snes ins Hauptmenü zurück)
    • L+R+Start+Hoch: 3s Reset (Hauptmenü PowerPak)
    • Links+Hoch+L+R+X+A: Sperre der Funktionen (kann mit gleicher Kombi wieder entsperrt werden, wird für drei Power-Cycles gespeichert)
    • Runter+Links+L+R+A+B: Sperre der Funktionen (kann nur mit einem Power-Cycles wieder entsperrt werden)

    Nach jeder erfolgreich detektierten Kombi erfolgt ein Lesetimeout von 12s.


    Zwar kommt das sd2snes bald mit eigenen IGRs, aber diese führen bei manchen Spielen zu Glitchen, weshalb die auch ausgeschaltet werden können. Deswegen ist der PIC als stiller Zuhörer echt nice :) Von normalen Spielen brauchen wir ja erst gar nicht zu reden :D