Teardown: Super NES (PAL) Controller SNSP-005

Um das SNES Gamepad an meinen Arduino anzuschließen, habe ich es neulich auseinander genommen. Und ich war verblüfft darüber, wie simpel der Controller aufgebaut ist. OK, man muss auch dazu sagen, dass die Teile ab 1990 hergestellt wurden…

SNES Controller

Die Schokoladenseite des Controllers

Das Gamepad besteht nur aus 12 Knöpfen, 2 Widerständen, 1 Kondensator und einem IC.

Das Gamepad

Das Gamepad ist ein Modell SNSP-005, made in Japan. Auf der Vorderseite befinden sich die Knöpfe A, B X, Y, Start, Select sowie das digitale Steuerkreuz (Up, Down, Left, Right). Außerdem hat der Controller 2 Schultertasten, L und R. Damit unterscheidet sich das SNES Gamepad schon ein ganzes Stück vom NES Gamepad, welches nur 8 Knöpfe hatte (A, B, Start, Select, Up, Down, Right, Left).

Auf der Rückseite befinden sich nur einige Informationen wie die Modellnummer, der Nintendo Schriftzug etc. Außerdem sind hier die 5 Schrauben (Kreuzschlitz, Pihillips-Kopf) zugänglich, durch die sich das Gamepad öffnen lässt.

Auseinandergenommen: Das Design

Sind die Schrauben gelöst und das Hinterteil abgenommen, wird man vom PCB mit dem Rücken begrüßt. Im Gamepad ist ein single-sided PCB (genauer gesagt 3, dazu später mehr), lediglich der Anschluss für das Kabel, was oben durchs Gehäuse kommt und zur Zugentlastung durch 3 Plastikpfosten gefädelt wird, ist auf der Rückseite verbaut.

SNES Controller geöffnet

So sieht der SNES Controller aus, wenn die Rückseite des Gehäuses entfernt wurde

Das PCB selbst ist nicht verschraubt, es wird durch die Plastikhülle gehalten. Die Vorderseite des PCBs zeigt schließlich, wie das Gamepad funktioniert: Von einem Pin des Anschlusses aus ziehen sich Leiterbahnen über das gesamte Board und enden schließlich an allen 12 Knöpfen. Die Knöpfe bestehen auf dem PCB allesamt aus 2 Pads aus leitendem Material, wahrscheinlich Graphit(?). Wird ein Knopf gedrückt, verbindet ein kleines Pad auf einer Gummimembran die 2 Pads auf dem PCB, so dass der Stromkreis geschlossen wird.

SNES Controller PCB Platine

Die Hauptplatine des SNES Controllers

Daher liegt die Vermutung nahe, dass die Leitung, die zu allen Pads hinführt, 0V/GND ist. Würden an alle Pads +5V angelegt, gäbe es sehr wahrscheinlich Probleme mit dem Input am IC (Stromstärke, Spannungsverluste…). Es ist verlässlicher, wenn durch Pull-Up Widerstände an jedem IC-Pin 5V anliegen. Wird der Stromkreis durch einen Knopf geschlossen, sinkt die Spannung am IC-Pin auf 0V/GND.

Eine Besonderheit stellen die beiden Schultertasten dar: Sie funktionieren zwar genau so wie alle anderen Knöpfe auch, sind aber auf 2 kleinen zusätzlichen PCBs untergebracht. Die Boards sind nur durch 2 kleine Kabel verbunden. Diese sitzen auf der oberen Kante des Haupt-PCBs auf und werden später nur vom 2 hervorstehenden Plastik-Teilen in der Gehäuserückseite „gehalten“. Effizientes Design…

Der IC: Parallel to Serial Shift Register

Da 2 der 5 Anschlussleitungen für +5V und GND belegt sind, bleiben noch 3 Leitungen für die Kommunikation.

Am verbauten IC führt jeder Pin zu einem Knopf, und neben 5V/GND führen 3 weitere Pins direkt zum Anschlusskabel. Meine Vermutung ist also, dass der verbaute IC ein Schieberegister ist. Nach kurzer Online-Recherche stellt sich das als richtig heraus. Das Bauteil ist beschriftet mit TG 9732H V520B. Die Partnummer konnte ich leider nirgends finden.

SNES Controller interner Anschluss

Der interne Anschluss auf dem PCB des SNES Controllers

Doch da ich mich schon etwas mit Serial to Parallel Schieberegistern auseinandergesetzt habe, wusste ich, dass die Teile einen Clock-Pin, einen Latch-Pin und einen Daten-Pin haben. Bei Serial to Parallel Registern kommen die Daten über den Daten-Pin am IC an, die Spannung wird an jeder Rising Edge vom Clock-Puls ausgelesen und im internen Speicher abgelegt. Durch die Rising Edge des Latch-Pulses werden die Daten über die Outputs (parallel) ausgegeben.

Dieser Chip funktioniert offensichtlich anders herum, die parallelen Pins sind Eingänge, es handelt sich um ein Parallel to Serial shift register. Die Funktionsweise ist genau umgekehrt: Durch den Latch-Puls werden die Spannungen an den Input-Pins (parallel) ausgelesen und intern gespeichert, durch den Daten-Pin wird ein Bit nach dem anderen ausgegeben, nach jedem Clock-Puls wird das nächste Bit ausgegeben.

Der IC hat wohl interne Pull-Up Widerstände. Die beiden Widerstände die verbaut sind, dienen als Pull-Ups für 2 der 3 Kommunikations-Pins. Dies werden wohl die Pins für Clock und Latch sein, da Data ein Output ist. Ich vermute dass Clock und Latch eventuell „Active Low“ sind, also auf die Falling Edge der Pulse reagieren. Genau weiß ich das nicht, durch einige Experimente sollte sich das aber einfach herausfinden lassen.

Fazit

SNES Controller Einzelteile

Dies sind alle verbauten Einzelteile des SNES Controllers (ohne Anschlusskabel)

Nintendo hat sehr einfache, robuste Technik im SNSP-005 Super NES (PAL) Controller untergebracht. Ein paar knöpfe, 2 Pull-Up Widerstände, ein Kondensator (Spannungsglättung?) und ein Schieberegister. Ich habe leider keine genauen Preise, wie viel der Controller damals gekostet hat. Aber auch wenn „damals alles günstiger war“, müsste Nintendo einen guten Gewinn mit den Teilen gemacht haben.

Ich persönlich liebe dieses äußerst simple Design. Nach ein paar weiteren Experimenten werde ich eventuell meinen eigenen „SNES Controller“ bauen, ein Super Nintendo Entertainment System habe ich noch hier herumstehen.

Und dadurch, dass alles so simpel gehalten ist, war es ein Kinderspiel den Controller an den Arduino anzuschließen. Außerdem sollte es recht einfach sein, einen Controller-Emulator auf dem Arduino laufen zu lassen. Dieser kann also auch einfach durch 5 Pins an das SNES angeschlossen werden und als Controller dienen. Wer bei Speedruns cheaten will ;)

Sonstiges

Einige Besonderheiten halte ich noch für erwähnenswert:

Im Gehäuse sind die Aussparungen für die 4 einzelnen Buttons (A, B, X, Y) und Schultertasten (L, R) beschriftet. Dabei sind L/R auch mit L/R beschriftet, die 4 einzelnen Buttons allerdings nur mit Farben. Blue, Green, Yellow, Red. So wie wir (Ich) den Controller kennen. Es sind aber noch 2 Zusätzliche Farben angemerkt die darauf hinweisen, dass 2 dieser Knöpfe Lila, 2 „Lavender“-Farben sein sollen. Diese Farben sind für die Nordamerikanische Variante des SNES, da diese ein komplett anderes Design hat. Die NTSC-Version hatte ein komplett anderes Gehäuse und war in Weiß/Lila gehalten.

Zum Schluss noch die Part-Liste. Alle Teile, die in einem (PAL) SNES Controller sind:

Bezeichnung Part-Nummer
Gehäuse Oberschale 56V302 S-3
Gehäuse Unterschale 56V303 S-2
L-Button E10
R-Button E11
2x Splint
Gummi-Membran ABXY
Gummi-Membran digit. Steuerkreuz
2x Gummi-Membran L/R
Gummi-Membran Start/Select
4 Knöpfe (Blau, Grün, Gelb, Rot) C-X, C-Y, C-B, C-A
Steuerkreuz H-2
PCB 56V313D
Anschluss CN1
Widerstand 1,2k R1
Widerstand 3,3k R2
Kondensator ? C1
Schieberegister TG 9732H V520B
2x PCB Schultertaste 56V314

Und natürlich 4 Kabel für die Schultertasten und ein 5-Poliges Kabel zum Steckverbinder.
Der Steckverbinder hat insgesamt 7 Kontakte, aufgeteilt in 3 / 4 Kontakte, damit der Stecker nur richtig herum eingesteckt werden kann. Pins 5 und 6 sind nicht verbunden (N/C).

Das war ein komplettes Auseinandernehmen (Teardown) des SNSP-005 Super NES (PAL) Controllers. Ich hoffe es hat euch gefallen und ihr seid jetzt ein kleines Stückchen schlauer.

Da ich mich zunehmend mit Elektronik beschäftige, werden in Zukunft wohl etwas öfters Einblicke in die Elektronik einiger Geräte gewagt. Falls ihr Vorschläge habt, was ich mir anschauen sollt, hinterlasst bitte einen Kommentar.

MfG
Damon Dransfeld

Bilder

Dieser Eintrag wurde veröffentlicht in Elektronik & Hardware
Bookmarken: Permanent-Link Schreibe einen Kommentar oder hinterlasse einen Trackback: Trackback-URL.
Achtung: Wordpress interpretiert bestimmte Zeichenfolgen als Markup und verändert diese. Nutzt für Programmcode lieber Gist oder PasteBin-Services und verlinkt die Code-Schnipsel.

Post a Comment

Ihre E-Mail wird niemals veröffentlicht oder verteilt. Benötigte Felder sind mit * markiert

*
*

Du kannst diese HTML Tags und Attribute verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>