"Vorwort" - Was ist der Switchless Mod?
Da Sega ein japanisches Unternehmen ist und in dieser Region (wie auch in den USA) die NTSC-TV-Norm mit 60Hz verbreitet ist, wurden alle japanischen und amerikanischen Mega Drive / Genesis Spiele für diese Norm programmiert.
In Europa war dagegen bei Erscheinen der Konsole die PAL-TV-Norm mit nur 50Hz Standard.
Die bspw. in Deutschland erschienenen Spiele wurden allerdings nur selten an die europäische Norm angepasst, weshalb in Europa die meisten Spiele etwas langsamer (50/60Hz-Problem) und mit den bekannten "PAL-Balken" am oberen und unteren Bildschirmrand laufen. Um diese Probleme zu beheben, kann jedes Mega Drive gemoddet werden. Führt man den Mod mittels Einbau eines Mikrocontrollers, welcher über den originalen Reset-Button gesteuert wird, durch (verbaut man also keinen zusätzlichen Schalter am Gerät), spricht man von einem sogenannten "Switchless Mod".
Im Netz gibt es bereits mehrere Tutorials zum Einbau eines Switchless Mods in einem Mega Drive / Genesis der 1. Generation. Allerdings existieren in diesem Zusammenhang 2 verschiedene Lösungsansätze (entweder der Code von "seb" oder der Code von "d4s" wird verwendet).
Da aber keines der mir bekannten Tutorials auf beide Umbaumöglichkeiten gleichzeitig und / oder ausführlich eingeht, habe ich mir gedacht, dass ein solches Tutorial doch recht interessant sein könnte und habe daher eines erstellt.
Was wird benötigt:
Und wir beginnen.
Schritt 0 - Welcher Code?:
Zunächst müsst ihr euch entscheiden, welchen Code ihr für den Mod verwenden möchtet. Prinzipiell sind alle 3 Varianten ("seb", "d4s" und @borti4938) zielführend. Allerdings bestehen zwischen den drei Codes (speziell in Bezug auf das Mega Drive 1) folgende Unterschiede:
a) Bei dem Code von "d4s" ist es egal, ob es sich bei eurem Mega Drive um eine "Active-Low-" oder eine "Active-High-Variante" handelt (siehe dazu Schritt 1). Bei dem Code von "seb" muss hingegen bei einer "Active-High-Variante" ein zusätzlicher Hex-Inverter verbaut werden, damit der Mod funktioniert.
b) Der Code von "d4s" besitzt die 3 gebräuchlichen Modi PAL+50Hz, NTSC-US+60Hz und NTSC-JP+60Hz. Der Code von "seb" besitzt hingegen 3 Hauptmodi: PAL+50Hz, NTSC-US+60hz & NTSC-JP+60Hz und 3 "Untermodi"*: PAL+60Hz, NTSC-US+50Hz & NTSC-JP+50Hz (wobei m. E. die "Untermodi" so gut wie nie genutzt werden).
*
Spoiler anzeigen
c) Der Code von "d4s" führt beim Wechseln zwischen den Modi keinen Reset des Spiels durch - der Code von "seb" hingegen beim Wechsel zwischen PAL, NTSC-US und NTSC-JP schon.
d) Der Code von "seb" kann mit einem Mega CD / Sega CD kombiniert werden (ein eingebautes Multibios im Mega CD / Sega CD kann ebenfalls über den PIC16F630 mitgesteuert werden) - beim Code von "d4s" ist diese Kombination hingegen nicht möglich (dies ist wohl auch der wichtigste Punkt hinsichtlich der Entscheidung zwischen beiden Codevarianten).
e) Der Code von "borti4938" kann ebenfalls mit einem Mega CD / Sega CD kombiniert werden (wie bei "seb"), benötigt aber auch keinen Hex-Inverter (wie der Code von "d4s"). Es sind die gleichen 3 Modi wie bei "d4s" implementiert und es kann beim Einbau festgelegt werden, ob beim Umschalten der Modi ein Reset der Konsole stattfinden soll (wie bei "seb") oder nicht (wie bei "d4s"). Zudem kann man auswählen, ob die Duo-LED im NTSC-JP-Modus in orangener und im NTSC-US-Modus in roter Farbe leuchten soll (= Datei "md_switchless_us_red.hex") oder ob die Duo-LED im NTSC-JP-Modus in roter und im NTSC-US-Modus in orangener Farbe leuchten soll (= Datei "md_switchless_jp_red.hex"). Der PAL-Modus wird immer mit einer grünen LED-Farbe angezeigt. Somit stellt diese Codevariante die beste Alternative dar.
Schritt 1 - Mit oder ohne Hex-Inverter?:
Da Öffnen und Zerlegen beim Mega Drive sehr einfach sind, habe ich an dieser Stelle auf eine genaue Dokumentation verzichtet. Denkt aber bitte stets an folgende Punkte:
Hintergrundwissen:
Der Code von "seb" wurde eigentlich für das Sega Saturn geschrieben, funktioniert aber auch im Mega Drive. Allerdings handelt es sich bei allen Saturn-Konsolen um sogenannte "Active-Low-Systeme". Beim Mega Drive gibt es hingegen sowohl "Active-Low-" als auch "Active-High-Systeme". Bei Letzteren wird ein Hex-Inverter benötigt.
Doch was ist der Unterschied zwischen diesen Systemen?
Jedes Mega Drive besitzt einen Reset-Button. Betätigt ihr diesen Button, so wird dem System über eine Spannungsänderung mitgeteilt, dass ihr diesen Knopf gedrückt habt und die Reset-Funktion wird ausgelöst.
"Active-Low-Konsole"
Bei einer "Active-Low-Konsole" liegen 2 Pins des Reset-Buttons im laufenden Betrieb, ohne gedrückten Reset-Button (="Normalzustand"), ständig auf +5V und 2 weitere Pins auf 0V. Wird der Reset-Button aber gedrückt (er ist also aktiv), wird die Spannung an den "+5V-Pins" auf 0V geändert. Daher spricht man hier von einer "Active-Low-Konsole", bzw. einem "Active-Low-Reset".
"Active-High-Konsole"
Bei einer "Active-High-Konsole" liegen ebenfalls 2 Pins des Reset-Buttons im laufenden Betrieb, ohne gedrückten Reset-Button, ständig auf +5V und 2 weitere Pins auf 0V (sind also mit GND verbunden). Wird der Reset-Button aber gedrückt (er ist also aktiv), wird die Spannung an den "0V-Pins" angehoben. Daher spricht man in diesem Fall von einer "Active-High-Konsole", bzw. einem "Active-High-Reset".
Bedeutung für den Mod:
Unser PIC16F630, welcher später bspw. die Region der Konsole umschaltet, wird ebenfalls über den Reset-Button gesteuert. Dies geschieht, indem er am Reset-Button "lauscht", bzw. indem das Reset-Signal nicht mehr direkt vom Reset-Button zum System geschickt wird, sondern über den Mikrocontroller PIC16F630 "in der Mitte umleitet wird".
Wie bereits erwähnt, wurde der Code von "seb" ausschließlich für das Sega Saturn, also "Active-Low-Systeme", bei denen sich bei gedrücktem Reset-Button die Spannung von +5V auf 0V ändert, entwickelt.
Trifft der Code nun auf eine "Active-High-Konsole", so verläuft die Spannungsänderung genau andersherum. Der PIC16F630 "missinterpretiert" daher, dass bei der Konsole permanent der Reset-Button gedrückt wird und leitet diese falsche Information an das System weiter - die Konsole "hängt somit im Dauer-Reset".
Diese Fehlfunktion kann aber mittels eines Hex-Inverters behoben werden.
Wie funktioniert das?
Wird bei einer "Active-High-Konsole" der Reset-Button gedrückt, so wird ein +5V-Signal zuerst zum Hex-Inverter geschickt. Der Hex-Inverter wandelt das Signal in ein 0V-Signal um, welches der PIC16F630 anschließend am Pin "Reset in" bekommt und somit korrekt interpretieren kann.
Nun muss das Signal aber wieder zurück ins System: Der PIC16F630 sendet über den Pin "Reset out" ein 0V-Signal zurück, welches dann der Hex-Inverter wieder in ein +5V-Signal umwandelt und an das System sendet. Somit liegt nun an jedem Bauteil die richtige Spannung an und die eingebaute "Signalumleitung" funktioniert korrekt.
Wie erkennt man nun, ob man eine "Active-Low-oder "Active-High-Konsole" vor sich hat?
a) Bei folgenden Mainboard-Revisionen ist bereits bekannt, dass ein Hex-Inverter benötigt wird:
Sollte sich auf der Unterseite eurer Platine in unmittelbarer Nähe zum Reset-Schalter ein SMD-Widerstand befinden (auf dem unteren Bild das Bauteil mit der "Nummer 511"), ist dies eigentlich ein sicherer Hinweis für eine "Active-High-Konsole" (Hex-Inverter wird benötigt).

c) Spannungsmessung:
Da auf dem Mega Drive Mainboard maximal 5V Gleichstrom anliegen, kann meiner Meinung nach auch von Laien eine Spannungsmessung mit Multimeter (mit den korrekten Einstellungen) im laufenden Betrieb relativ problemlos durchgeführt werden.
Der Reset-Button ist (wie bereits erwähnt) stets über 2 Beinchenpaare mit der Platine verbunden. Ein Paar ist dabei immer mit Masse (GND) in Kontakt und das andere Paar mit +5V. Welches Paar was ist, findet ihr am besten heraus, indem ihr bei nicht gedrücktem Reset-Button die Spannung zwischen den 4 Beinchen des Reset-Buttons (roten Messfühler ansetzen) und einer Massefläche (bspw. das große Wärmeleitblech am Mainboard links oben; schwarzer Messfühler) messt.
Beträgt die Spannung 0V, so habt ihr ein "Masse-Beinchen(paar)" identifiziert.
Beträgt die Spannung hingegen 5V, so habt ihr ein "+5V-Beinchen(paar)" entdeckt.
Merkt euch die Polung und setzt nun den schwarzen Messfühler an einem "Masse-Beinchenund den roten Messfühler an einem "+5V-Beinchen" an (das Multimeter zeigt zunächst 5V an) und drückt dann zusätzlich den Reset-Button.
Zeigt das Multimeter nun 0V an, so handelt es sich um eine "Active-Low-Konsole" (kein Hex-Inverter wird benötigt), ändert sich der Wert auf dem Multimeter hingegen nur leicht in Richtung 0V (zeigt z.B. ca. 2,5V an*), so besitzt ihr eine "Active-High-Konsole" (Hex-Inverter wird benötigt).
*
Spoiler anzeigen
Nun sollte klar sein, ob für den Umbau ein Hex-Inverter benötigt wird oder nicht. Der Einbau des Hex-Inverters erfolgt dann bei Schritt 5.
Schritt 2 - Bedeutung und Funktion der Jumper:
Bei jedem Sega Mega Drive / Genesis der 1. Generation lassen sich auf dem Mainboard die markanten Jumper JP1 bis JP4 finden. Sie sind teilweise unterschiedlich angeordnet, funktionieren aber immer nach dem gleichen Prinzip: JP1 und JP2 legen die Region der Konsole fest (englisch oder japanisch) und JP3 und JP4 sind für den Video-Mode (50Hz oder 60Hz) zuständig. Die Konfiguration der Konsole wird dabei über eine Verbindung der Jumper-Punkte mit +5V oder mit GND (Masse) festgelegt.
Im folgenden Bild ist die "Ausgangskonfiguration" einer jeden Konsole zu sehen. Interessant erscheint dabei, dass die Punkte JP1 und JP2 sowie JP3 und JP4 immer eine Einheit bilden, also miteinander verbunden sind (linke Seite).
Bezüglich der rechten Seite kann ich nicht mit Sicherheit sagen, ob wirklich bei jeder Konsole JP1 und JP3 immer einem "+5V-Punkt", bzw. JP2 und JP4 immer einem "GND-Punkt" gegenüberliegen (daher solltet ihr das stets überprüfen). Wäre dies nicht der Fall, gebt mir bitte Bescheid, damit ich die Info hier aufnehmen kann.

Welcher Regions- und Videomodus bei den Konsolen standardmäßig aktiviert ist, kann folgender Tabelle entnommen werden:
Achtung! Falls bei eurer Konsole ein Elektrolytkondensator mit 47µF/10V bei JP1 verbaut sein sollte, lötet den besser aus. Ich hatte bereits eine Konsole, bei der aufgrund des Elkos die Regionsumschaltung nicht funktionierte.
Hier noch ein paar Beispiele aus der Praxis:
Spoiler anzeigen
Teilweise existieren auch Versionen, bei denen bei JP1 oder JP2 ein Elektrolytkondensator verbaut wurde. Diesen solltet ihr am besten auslöten, damit der anschließende Mod auch definitiv funktioniert.
Schritt 3 - Das Mainboard für den Mod vorbereiten:
Jetzt solltet ihr genau wissen, wie die für den Mod relevanten Punkte auf eurem Board konfiguriert sind, weshalb ihr nun das Board für den Einbau des PIC16F630 (und ggf. für den Hex-Inverter) vorbereiten könnt.
Die "Umleitung" für den Reset-Button:
Zunächst kümmern wir uns um den Reset-Button, bei dem eine Leiterbahn mit einem Skalpell oder Cuttermesser durchtrennt werden muss. Der Cut muss logischerweise immer an dem Beinchenpaar gesetzt werden, bei dem ihr bei Schritt 1 eine Spannungsänderung durch Betätigung des Buttons festgestellt habt.
Überprüft anschließend mit dem Multimeter (Modus Durchgangsprüfung), ob die Verbindung tatsächlich gekappt ist.
Hier die Rück- und Vorderseite einer "Active-Low-Konsole" (siehe Schritt 1). Ich habe auch gleich die Lötpunkte für "Reset in" und "Reset out" eingezeichnet:


Solltet ihr eine "Active-High-Konsole" modden, muss der Cut immer nach dem "Pull-Down-Widerstand" (Bauteil mit der "Nummer 511") gesetzt werden. Auch hier habe ich gleich die Lötpunkte für "Reset in" und "Reset out" (der Leiterbahn folgen oder den grünen Lötstopp-Lack vorsichtig abkratzen) eingezeichnet:


Zwei Jumperverbindungen trennen:
Als nächstes müssen die 2 Jumperverbindungen zu +5V und / oder GND getrennt werden, da wir diese später durch unseren Mod individuell setzen lassen wollen. Schaut euch dazu die Tabelle bei Schritt 2 an und kappt die 2 Verbindungen je nach eurer Konsolenversion (PAL & JAP: 1x +5V und 1x GND; US: 2x +5V). Beachtet dabei, dass es auch Mainboards gibt, bei denen die Jumperverbindungen auf der Rückseite gesetzt sind.
Überprüft auch hier anschließend wieder mit dem Multimeter, ob die Leiterbahnen tatsächlich getrennt sind.
Schritt 4 - Einbau der LED:
Damit ihr später auch erkennt, welcher Modus bei eurer Konsole gerade aktiv ist, solltet ihr die originale rote LED durch eine sogenannte Duo-LED ersetzen. Dremelt oder bohrt dazu vorsichtig die LED-Halterung auf der Innenseite der Gehäuseoberschale auf und entfernt die originale 3mm-LED.
Danach erweitert ihr das Loch solange, bis eure Duo-LED (3mm oder 5mm) gut hineinpasst. Achtet dabei aber darauf, dass ihr das vorhandene Loch nur auf- und nicht durchbohrt, damit die LED-Abdeckung auf der Außenseite nicht beschädigt wird!
Im Bild seht ihr das aufgebohrte Loch für eine 3mm-LED:

Optional: Um Kurzschlüsse zu vermeiden, könnt ihr die Beinchen der LED vor dem Einkleben mit Schrumpfschlauch isolieren.
Danach könnt ihr die LED einsetzen und mit Heißkleber fixieren.
Des Weiteren könnt ihr hier gleich den 220Ω-Widerstand an das mittlere Beinchen der LED anlöten.
Schritt 5 - PIC16F630 (und ggf. den Hex-Inverter) einsetzen und verkabeln:
Nun könnt ihr den beschriebenen PIC16F630 mit Heißkleber auf der Platine fixieren und entsprechend eures gewählten Codes (siehe Schritt 0) verkabeln. Orientiert euch dabei an folgender Grafik (einfach anklicken):

Anmerkung zum Code von @borti4938:
Solltet ihr den Code von "seb" in Verbindung mit einer "Active-High-Konsole" verwenden (siehe Schritt 1), müsst ihr diesem Anschlussplan folgen:

Dabei ist es wichtig, dass bei dem Hex-Inverter an allen Eingängen ein definiter Pegel anliegt, damit das Bauteil stets korrekt arbeitet. Verbindet daher am besten alle ungenutzten Eingänge mit +5V (siehe Grafik).
Optional kann auch hier ein 100nF-Keramikkondensator zwischen GND und +5V gesetzt werden.
Schritt 6 - Finaler Funktionstest:
Schließt nun euer Mega Drive / Genesis mit einem RGB-SCART-Kabel an den TV an. Folgende Modi sollten nun bei euch mittels der Reset-Taste aktiviert werden können:
LED leuchtet grün:
Natürlich hat der Reset-Button auch noch seine ursprüngliche Funktion: Wird die Taste nur kurz gedrückt, wird ein normaler Reset der Konsole ohne Modusänderung durchgeführt.
Der Code von @borti4938 hat hierbei ein nettes Feature: Die LED geht beim Durchschalten der Modi zunächst kurz aus und fängt danach entsprechend der 3 Modi an, durch die Farben zu schalten. Somit weiß man genau, wann man die Reset-Taste loslassen muss, damit tatsächlich auch ein Umschalten der Modi und nicht nur ein einfacher Reset der Konsole erfolgt.
Wenn nach den Testen alles ordnungsgemäß funktioniert, könnt ihr die Konsole wieder zusammensetzen und mit dem Zocken beginnen.
Bei Fragen etc. schreibt einfach ins Forum ...
Da Sega ein japanisches Unternehmen ist und in dieser Region (wie auch in den USA) die NTSC-TV-Norm mit 60Hz verbreitet ist, wurden alle japanischen und amerikanischen Mega Drive / Genesis Spiele für diese Norm programmiert.
In Europa war dagegen bei Erscheinen der Konsole die PAL-TV-Norm mit nur 50Hz Standard.
Die bspw. in Deutschland erschienenen Spiele wurden allerdings nur selten an die europäische Norm angepasst, weshalb in Europa die meisten Spiele etwas langsamer (50/60Hz-Problem) und mit den bekannten "PAL-Balken" am oberen und unteren Bildschirmrand laufen. Um diese Probleme zu beheben, kann jedes Mega Drive gemoddet werden. Führt man den Mod mittels Einbau eines Mikrocontrollers, welcher über den originalen Reset-Button gesteuert wird, durch (verbaut man also keinen zusätzlichen Schalter am Gerät), spricht man von einem sogenannten "Switchless Mod".
Im Netz gibt es bereits mehrere Tutorials zum Einbau eines Switchless Mods in einem Mega Drive / Genesis der 1. Generation. Allerdings existieren in diesem Zusammenhang 2 verschiedene Lösungsansätze (entweder der Code von "seb" oder der Code von "d4s" wird verwendet).
Da aber keines der mir bekannten Tutorials auf beide Umbaumöglichkeiten gleichzeitig und / oder ausführlich eingeht, habe ich mir gedacht, dass ein solches Tutorial doch recht interessant sein könnte und habe daher eines erstellt.
Was wird benötigt:
- ein PIC16F630 mit dem Code für den Switchless Mod; entweder mit dem Code von "seb" (Datei "enemenemuh.hex"; lokale Sicherung im Board: Code seb.zip) oder mit dem Code von "d4s" (Datei "mega_drive_switchless_pic16f630.hex"; lokale Sicherung im Board: Code d4s.zip) oder (ganz neu) mit dem Code von borti4938 (Datei "md_switchless_jp_red.hex" oder "md_switchless_us_red.hex" (siehe dazu Schritt 0); lokale Sicherung im Board: Code borti4938.zip) --> siehe dazu Schritt 0
- ein Hex-Inverter IC (z. B. ein 74HC4049) wenn euer Mega Drive eine "Active-High-Konsole" ist (nur bei Verwendung des Codes von "seb" notwendig (siehe dazu Schritt 1),
- eine Duo-LED mit 3 Beinchen (gemeinsame Kathode; 3mm oder 5mm),
- ein 220Ω-Widerstand für die LED,
- einen Dremel oder eine Bohrmaschine für das Einbauen der LED,
- ein Lötkolben + Lötzinn,
- ein wenig Lötlitze,
- ein Multimeter,
- ein Kreuzschraubendreher,
- eine Heißklebepistole und
- ein Skalpell oder Cuttermesser zum Durchtrennen von Leiterbahnen
- ein 100nF-Keramikkondensator und
- ein wenig Schrumpfschlauch (für die LED-Beinchen)
Und wir beginnen.
Schritt 0 - Welcher Code?:
Zunächst müsst ihr euch entscheiden, welchen Code ihr für den Mod verwenden möchtet. Prinzipiell sind alle 3 Varianten ("seb", "d4s" und @borti4938) zielführend. Allerdings bestehen zwischen den drei Codes (speziell in Bezug auf das Mega Drive 1) folgende Unterschiede:
a) Bei dem Code von "d4s" ist es egal, ob es sich bei eurem Mega Drive um eine "Active-Low-" oder eine "Active-High-Variante" handelt (siehe dazu Schritt 1). Bei dem Code von "seb" muss hingegen bei einer "Active-High-Variante" ein zusätzlicher Hex-Inverter verbaut werden, damit der Mod funktioniert.
b) Der Code von "d4s" besitzt die 3 gebräuchlichen Modi PAL+50Hz, NTSC-US+60Hz und NTSC-JP+60Hz. Der Code von "seb" besitzt hingegen 3 Hauptmodi: PAL+50Hz, NTSC-US+60hz & NTSC-JP+60Hz und 3 "Untermodi"*: PAL+60Hz, NTSC-US+50Hz & NTSC-JP+50Hz (wobei m. E. die "Untermodi" so gut wie nie genutzt werden).
*
Genau genommen sind es tatsächlich nur 3 Hauptmodi. Die "Untermodi" werden wie folgt realisiert:
1.) Im PAL-Modus kann ohne Reset in den NTSC-US-Modus umgeschaltet werden (LED blinkt 3x; Farbe bleibt grün).
2.) Im NTSC-US-Modus kann ohne Reset in den PAL-Modus umgeschaltet werden (LED blinkt 2x; LED-Farbe bleibt orange).
3.) Im NTSC-JP-Modus kann ohne Reset in den PAL-Modus umgeschaltet werden (LED blinkt 2x; LED-Farbe bleibt rot).
1.) Im PAL-Modus kann ohne Reset in den NTSC-US-Modus umgeschaltet werden (LED blinkt 3x; Farbe bleibt grün).
2.) Im NTSC-US-Modus kann ohne Reset in den PAL-Modus umgeschaltet werden (LED blinkt 2x; LED-Farbe bleibt orange).
3.) Im NTSC-JP-Modus kann ohne Reset in den PAL-Modus umgeschaltet werden (LED blinkt 2x; LED-Farbe bleibt rot).
c) Der Code von "d4s" führt beim Wechseln zwischen den Modi keinen Reset des Spiels durch - der Code von "seb" hingegen beim Wechsel zwischen PAL, NTSC-US und NTSC-JP schon.
d) Der Code von "seb" kann mit einem Mega CD / Sega CD kombiniert werden (ein eingebautes Multibios im Mega CD / Sega CD kann ebenfalls über den PIC16F630 mitgesteuert werden) - beim Code von "d4s" ist diese Kombination hingegen nicht möglich (dies ist wohl auch der wichtigste Punkt hinsichtlich der Entscheidung zwischen beiden Codevarianten).
e) Der Code von "borti4938" kann ebenfalls mit einem Mega CD / Sega CD kombiniert werden (wie bei "seb"), benötigt aber auch keinen Hex-Inverter (wie der Code von "d4s"). Es sind die gleichen 3 Modi wie bei "d4s" implementiert und es kann beim Einbau festgelegt werden, ob beim Umschalten der Modi ein Reset der Konsole stattfinden soll (wie bei "seb") oder nicht (wie bei "d4s"). Zudem kann man auswählen, ob die Duo-LED im NTSC-JP-Modus in orangener und im NTSC-US-Modus in roter Farbe leuchten soll (= Datei "md_switchless_us_red.hex") oder ob die Duo-LED im NTSC-JP-Modus in roter und im NTSC-US-Modus in orangener Farbe leuchten soll (= Datei "md_switchless_jp_red.hex"). Der PAL-Modus wird immer mit einer grünen LED-Farbe angezeigt. Somit stellt diese Codevariante die beste Alternative dar.
Schritt 1 - Mit oder ohne Hex-Inverter?:
Da Öffnen und Zerlegen beim Mega Drive sehr einfach sind, habe ich an dieser Stelle auf eine genaue Dokumentation verzichtet. Denkt aber bitte stets an folgende Punkte:
- Konsolen niemals im laufenden Betrieb zerlegen,
- vor dem Öffnen den Netzstecker ziehen,
- um sicherzugehen, dass sich keine Restspannung mehr im System befindet, die Konsole vor dem Öffnen noch mindestens 1x ohne Netzstecker ein- und ausschalten,
- um Kurzschlüsse etc. zu vermeiden, sollte man sich vor dem Zerlegen "erden" (bspw. 1x an den Heizkörper greifen)
Hintergrundwissen:
Der Code von "seb" wurde eigentlich für das Sega Saturn geschrieben, funktioniert aber auch im Mega Drive. Allerdings handelt es sich bei allen Saturn-Konsolen um sogenannte "Active-Low-Systeme". Beim Mega Drive gibt es hingegen sowohl "Active-Low-" als auch "Active-High-Systeme". Bei Letzteren wird ein Hex-Inverter benötigt.
Doch was ist der Unterschied zwischen diesen Systemen?
Jedes Mega Drive besitzt einen Reset-Button. Betätigt ihr diesen Button, so wird dem System über eine Spannungsänderung mitgeteilt, dass ihr diesen Knopf gedrückt habt und die Reset-Funktion wird ausgelöst.
"Active-Low-Konsole"
Bei einer "Active-Low-Konsole" liegen 2 Pins des Reset-Buttons im laufenden Betrieb, ohne gedrückten Reset-Button (="Normalzustand"), ständig auf +5V und 2 weitere Pins auf 0V. Wird der Reset-Button aber gedrückt (er ist also aktiv), wird die Spannung an den "+5V-Pins" auf 0V geändert. Daher spricht man hier von einer "Active-Low-Konsole", bzw. einem "Active-Low-Reset".
"Active-High-Konsole"
Bei einer "Active-High-Konsole" liegen ebenfalls 2 Pins des Reset-Buttons im laufenden Betrieb, ohne gedrückten Reset-Button, ständig auf +5V und 2 weitere Pins auf 0V (sind also mit GND verbunden). Wird der Reset-Button aber gedrückt (er ist also aktiv), wird die Spannung an den "0V-Pins" angehoben. Daher spricht man in diesem Fall von einer "Active-High-Konsole", bzw. einem "Active-High-Reset".
Bedeutung für den Mod:
Unser PIC16F630, welcher später bspw. die Region der Konsole umschaltet, wird ebenfalls über den Reset-Button gesteuert. Dies geschieht, indem er am Reset-Button "lauscht", bzw. indem das Reset-Signal nicht mehr direkt vom Reset-Button zum System geschickt wird, sondern über den Mikrocontroller PIC16F630 "in der Mitte umleitet wird".
Wie bereits erwähnt, wurde der Code von "seb" ausschließlich für das Sega Saturn, also "Active-Low-Systeme", bei denen sich bei gedrücktem Reset-Button die Spannung von +5V auf 0V ändert, entwickelt.
Trifft der Code nun auf eine "Active-High-Konsole", so verläuft die Spannungsänderung genau andersherum. Der PIC16F630 "missinterpretiert" daher, dass bei der Konsole permanent der Reset-Button gedrückt wird und leitet diese falsche Information an das System weiter - die Konsole "hängt somit im Dauer-Reset".
Diese Fehlfunktion kann aber mittels eines Hex-Inverters behoben werden.
Wie funktioniert das?
Wird bei einer "Active-High-Konsole" der Reset-Button gedrückt, so wird ein +5V-Signal zuerst zum Hex-Inverter geschickt. Der Hex-Inverter wandelt das Signal in ein 0V-Signal um, welches der PIC16F630 anschließend am Pin "Reset in" bekommt und somit korrekt interpretieren kann.
Nun muss das Signal aber wieder zurück ins System: Der PIC16F630 sendet über den Pin "Reset out" ein 0V-Signal zurück, welches dann der Hex-Inverter wieder in ein +5V-Signal umwandelt und an das System sendet. Somit liegt nun an jedem Bauteil die richtige Spannung an und die eingebaute "Signalumleitung" funktioniert korrekt.
Wie erkennt man nun, ob man eine "Active-Low-oder "Active-High-Konsole" vor sich hat?
a) Bei folgenden Mainboard-Revisionen ist bereits bekannt, dass ein Hex-Inverter benötigt wird:
- IC BD M5 PAL VA4
- IC BD M5 VA4
- Solltet ihr weitere Boards kennen, könnt ihr diese Infos gerne posten und ich werde sie im Tutorial ergänzen.
Sollte sich auf der Unterseite eurer Platine in unmittelbarer Nähe zum Reset-Schalter ein SMD-Widerstand befinden (auf dem unteren Bild das Bauteil mit der "Nummer 511"), ist dies eigentlich ein sicherer Hinweis für eine "Active-High-Konsole" (Hex-Inverter wird benötigt).
c) Spannungsmessung:
Da auf dem Mega Drive Mainboard maximal 5V Gleichstrom anliegen, kann meiner Meinung nach auch von Laien eine Spannungsmessung mit Multimeter (mit den korrekten Einstellungen) im laufenden Betrieb relativ problemlos durchgeführt werden.
Der Reset-Button ist (wie bereits erwähnt) stets über 2 Beinchenpaare mit der Platine verbunden. Ein Paar ist dabei immer mit Masse (GND) in Kontakt und das andere Paar mit +5V. Welches Paar was ist, findet ihr am besten heraus, indem ihr bei nicht gedrücktem Reset-Button die Spannung zwischen den 4 Beinchen des Reset-Buttons (roten Messfühler ansetzen) und einer Massefläche (bspw. das große Wärmeleitblech am Mainboard links oben; schwarzer Messfühler) messt.
Beträgt die Spannung 0V, so habt ihr ein "Masse-Beinchen(paar)" identifiziert.
Beträgt die Spannung hingegen 5V, so habt ihr ein "+5V-Beinchen(paar)" entdeckt.
Merkt euch die Polung und setzt nun den schwarzen Messfühler an einem "Masse-Beinchenund den roten Messfühler an einem "+5V-Beinchen" an (das Multimeter zeigt zunächst 5V an) und drückt dann zusätzlich den Reset-Button.
Zeigt das Multimeter nun 0V an, so handelt es sich um eine "Active-Low-Konsole" (kein Hex-Inverter wird benötigt), ändert sich der Wert auf dem Multimeter hingegen nur leicht in Richtung 0V (zeigt z.B. ca. 2,5V an*), so besitzt ihr eine "Active-High-Konsole" (Hex-Inverter wird benötigt).
*
Die Spannung verringert sich hier ebenfalls, da am "Masse-Beinchenpaar" die Spannung angehoben wird und somit der Spannungsunterschied zwischen "Masse-Beinchenpaar" und "+5V-Beinchenpaar" kleiner wird.
Nun sollte klar sein, ob für den Umbau ein Hex-Inverter benötigt wird oder nicht. Der Einbau des Hex-Inverters erfolgt dann bei Schritt 5.
Schritt 2 - Bedeutung und Funktion der Jumper:
Bei jedem Sega Mega Drive / Genesis der 1. Generation lassen sich auf dem Mainboard die markanten Jumper JP1 bis JP4 finden. Sie sind teilweise unterschiedlich angeordnet, funktionieren aber immer nach dem gleichen Prinzip: JP1 und JP2 legen die Region der Konsole fest (englisch oder japanisch) und JP3 und JP4 sind für den Video-Mode (50Hz oder 60Hz) zuständig. Die Konfiguration der Konsole wird dabei über eine Verbindung der Jumper-Punkte mit +5V oder mit GND (Masse) festgelegt.
Im folgenden Bild ist die "Ausgangskonfiguration" einer jeden Konsole zu sehen. Interessant erscheint dabei, dass die Punkte JP1 und JP2 sowie JP3 und JP4 immer eine Einheit bilden, also miteinander verbunden sind (linke Seite).
Bezüglich der rechten Seite kann ich nicht mit Sicherheit sagen, ob wirklich bei jeder Konsole JP1 und JP3 immer einem "+5V-Punkt", bzw. JP2 und JP4 immer einem "GND-Punkt" gegenüberliegen (daher solltet ihr das stets überprüfen). Wäre dies nicht der Fall, gebt mir bitte Bescheid, damit ich die Info hier aufnehmen kann.
Welcher Regions- und Videomodus bei den Konsolen standardmäßig aktiviert ist, kann folgender Tabelle entnommen werden:
Konsolenversion | Region | Video-Mode |
JP1 & JP2 | JP3 & JP4 | |
PAL | +5V | GND |
NTSC-US | +5V | +5V |
NTSC-JP | GND | +5V |
Achtung! Falls bei eurer Konsole ein Elektrolytkondensator mit 47µF/10V bei JP1 verbaut sein sollte, lötet den besser aus. Ich hatte bereits eine Konsole, bei der aufgrund des Elkos die Regionsumschaltung nicht funktionierte.
Hier noch ein paar Beispiele aus der Praxis:
Ein "IC BD M5 VA6-Board" aus einem japanischen Mega Drive. Optisch scheint es, als ob gar keine Jumperverbindungen vorhanden wären. Tatsächlich sind aber die Jumperverbindungen auf der Unterseite des Mainboards gesetzt (JP1/JP2 auf GND und JP3/JP4 auf +5V):

Ein "IC BD M5 PAL VA5-Board" - man sieht sehr gut, dass JP1/JP2 auf +5V liegen und JP3/JP4 auf GND (auch wenn die Reihenfolge der Jumper hier anders ist):
Ein "IC BD M5 PAL VA5-Board" - man sieht sehr gut, dass JP1/JP2 auf +5V liegen und JP3/JP4 auf GND (auch wenn die Reihenfolge der Jumper hier anders ist):
Teilweise existieren auch Versionen, bei denen bei JP1 oder JP2 ein Elektrolytkondensator verbaut wurde. Diesen solltet ihr am besten auslöten, damit der anschließende Mod auch definitiv funktioniert.
Schritt 3 - Das Mainboard für den Mod vorbereiten:
Jetzt solltet ihr genau wissen, wie die für den Mod relevanten Punkte auf eurem Board konfiguriert sind, weshalb ihr nun das Board für den Einbau des PIC16F630 (und ggf. für den Hex-Inverter) vorbereiten könnt.
Die "Umleitung" für den Reset-Button:
Zunächst kümmern wir uns um den Reset-Button, bei dem eine Leiterbahn mit einem Skalpell oder Cuttermesser durchtrennt werden muss. Der Cut muss logischerweise immer an dem Beinchenpaar gesetzt werden, bei dem ihr bei Schritt 1 eine Spannungsänderung durch Betätigung des Buttons festgestellt habt.
Überprüft anschließend mit dem Multimeter (Modus Durchgangsprüfung), ob die Verbindung tatsächlich gekappt ist.
Hier die Rück- und Vorderseite einer "Active-Low-Konsole" (siehe Schritt 1). Ich habe auch gleich die Lötpunkte für "Reset in" und "Reset out" eingezeichnet:
Solltet ihr eine "Active-High-Konsole" modden, muss der Cut immer nach dem "Pull-Down-Widerstand" (Bauteil mit der "Nummer 511") gesetzt werden. Auch hier habe ich gleich die Lötpunkte für "Reset in" und "Reset out" (der Leiterbahn folgen oder den grünen Lötstopp-Lack vorsichtig abkratzen) eingezeichnet:
Zwei Jumperverbindungen trennen:
Als nächstes müssen die 2 Jumperverbindungen zu +5V und / oder GND getrennt werden, da wir diese später durch unseren Mod individuell setzen lassen wollen. Schaut euch dazu die Tabelle bei Schritt 2 an und kappt die 2 Verbindungen je nach eurer Konsolenversion (PAL & JAP: 1x +5V und 1x GND; US: 2x +5V). Beachtet dabei, dass es auch Mainboards gibt, bei denen die Jumperverbindungen auf der Rückseite gesetzt sind.
Überprüft auch hier anschließend wieder mit dem Multimeter, ob die Leiterbahnen tatsächlich getrennt sind.
Schritt 4 - Einbau der LED:
Damit ihr später auch erkennt, welcher Modus bei eurer Konsole gerade aktiv ist, solltet ihr die originale rote LED durch eine sogenannte Duo-LED ersetzen. Dremelt oder bohrt dazu vorsichtig die LED-Halterung auf der Innenseite der Gehäuseoberschale auf und entfernt die originale 3mm-LED.
Danach erweitert ihr das Loch solange, bis eure Duo-LED (3mm oder 5mm) gut hineinpasst. Achtet dabei aber darauf, dass ihr das vorhandene Loch nur auf- und nicht durchbohrt, damit die LED-Abdeckung auf der Außenseite nicht beschädigt wird!
Im Bild seht ihr das aufgebohrte Loch für eine 3mm-LED:
Optional: Um Kurzschlüsse zu vermeiden, könnt ihr die Beinchen der LED vor dem Einkleben mit Schrumpfschlauch isolieren.
Danach könnt ihr die LED einsetzen und mit Heißkleber fixieren.
Des Weiteren könnt ihr hier gleich den 220Ω-Widerstand an das mittlere Beinchen der LED anlöten.
Schritt 5 - PIC16F630 (und ggf. den Hex-Inverter) einsetzen und verkabeln:
Nun könnt ihr den beschriebenen PIC16F630 mit Heißkleber auf der Platine fixieren und entsprechend eures gewählten Codes (siehe Schritt 0) verkabeln. Orientiert euch dabei an folgender Grafik (einfach anklicken):
- GND und +5V könnt ihr bei den Jumpern (siehe Schritt 2) abgreifen
- Pin Sprache out wird mit JP1 oder JP2 verbunden (gegenüber dem "+5V-" oder "GND-Lötpunkt")
- Pin 50/60Hz out wird mit JP3 oder JP4 verbunden (gegenüber dem "+5V-" oder "GND-Lötpunkt")
- das mittlere Beinchen der LED (also das mit dem Widerstand; siehe Schritt 4) kann enweder mit dem GND-Pin am PIC16F630 oder mit einer beliebigen Massefläche auf dem Mainboard verbunden werden
- optional kann noch ein 100nF-Keramikkondensator zwischen den GND- und den +5V-Pin des PIC16F630 gelötet werden; eine Begründung dazu kann hier nachgelesen werden
Anmerkung zum Code von @borti4938:
- Es kann eingestellt werden, ob beim Umschalten zwischen den 3 verfügbaren Modi ein Reset der Konsole stattfinden soll (wie bei "seb") oder nicht (wie bei "d4s"). Dies wird gesteuert, indem Pin 4 (/RoMC) mit Pin 14 (GND) verbunden wird (Reset findet statt) oder mit Pin 1 (5V) verbunden wird (kein Reset).
- verwendet man eine Duo-LED mit Common Cathode, muss Pin 7 (LED Typ) mit Pin 14 (GND) verbunden werden
- verwendet man eine Duo-LED mit Common Anode, muss Pin 7 (LED Typ) mit Pin 1 (5V) verbunden werden
Solltet ihr den Code von "seb" in Verbindung mit einer "Active-High-Konsole" verwenden (siehe Schritt 1), müsst ihr diesem Anschlussplan folgen:
Dabei ist es wichtig, dass bei dem Hex-Inverter an allen Eingängen ein definiter Pegel anliegt, damit das Bauteil stets korrekt arbeitet. Verbindet daher am besten alle ungenutzten Eingänge mit +5V (siehe Grafik).
Optional kann auch hier ein 100nF-Keramikkondensator zwischen GND und +5V gesetzt werden.
Schritt 6 - Finaler Funktionstest:
Schließt nun euer Mega Drive / Genesis mit einem RGB-SCART-Kabel an den TV an. Folgende Modi sollten nun bei euch mittels der Reset-Taste aktiviert werden können:
LED leuchtet grün:
- = PAL-Modus
- alle Spiele werden in 50Hz und mit "PAL-Balken" abgespielt
- später erschienene japanische oder amerikanische Spiele mit einem sogenannten "Region-Lock" werden nicht abgespielt
- nur Code von "seb": wird der Reset-Button nochmals kurz betätigt (LED blinkt 3x grün), laufen die Spiele ohne Neustart in 60Hz und ohne "PAL-Balken" (ist eigentlich der NTSC-US-Modus)
- = NTSC-US-Modus (beim Code von @borti4938 (Datei "md_switchless_us_red.hex") ist der NTSC-US-Modus allerdings rot)
- alle Spiele werden in 60Hz und ohne "PAL-Balken" abgespielt
- später erschienene japanische oder europäische Spiele mit einem sogenannten "Region-Lock" werden nicht abgespielt
- nur Code von "seb": wird der Reset-Button nochmals kurz betätigt (LED blinkt 2x orange), laufen die Spiele ohne Neustart in 50Hz und mit "PAL-Balken" (ist eigentlich der PAL-Modus)
- = NTSC-JP-Modus (beim Code von @borti4938 (Datei "md_switchless_us_red.hex") ist der JP-Modus allerdings orange)
- alle Spiele werden in 60Hz und ohne "PAL-Balken" abgespielt
- europäische und amerikanische Spiele, bei denen (teilweise) ein sonst nicht sichtbarer japanischer Text implementiert wurde (bspw. bei Columns), zeigen diesen Test nun an
- später erschienene amerikanische oder europäische Spiele mit einem sogenannten "Region-Lock" werden nicht abgespielt
- nur Code von "seb": wird der Reset-Button nochmals kurz betätigt (LED blinkt 2x rot), laufen die Spiele ohne Neustart in 50Hz und mit "PAL-Balken" (ist eigentlich der PAL-Modus)
Natürlich hat der Reset-Button auch noch seine ursprüngliche Funktion: Wird die Taste nur kurz gedrückt, wird ein normaler Reset der Konsole ohne Modusänderung durchgeführt.
Der Code von @borti4938 hat hierbei ein nettes Feature: Die LED geht beim Durchschalten der Modi zunächst kurz aus und fängt danach entsprechend der 3 Modi an, durch die Farben zu schalten. Somit weiß man genau, wann man die Reset-Taste loslassen muss, damit tatsächlich auch ein Umschalten der Modi und nicht nur ein einfacher Reset der Konsole erfolgt.
Wenn nach den Testen alles ordnungsgemäß funktioniert, könnt ihr die Konsole wieder zusammensetzen und mit dem Zocken beginnen.
Bei Fragen etc. schreibt einfach ins Forum ...

Dieser Beitrag wurde bereits 27 mal editiert, zuletzt von n00b ()

Ich war mit beiden Codes nicht zufrieden und habe deswegen einen eigenen Code geschrieben. Meine Features:
