====== NES Gamepad ====== Das NES wurde standardmäßig mit Gamepads bespielt, die ein digitales Steuerkreuz und die Tasten A, B, Start und Select besaßen. ===== Funktionsprinzip ===== Die acht Tasten des Gamepads sind mit den Eingangsleitungen eines 8-bit Shift-Registers vom Typ 4021 verbunden. Die Eingangsleitungen sind über Pull-Up-Widerstände mit der Versorgungsspannung verbunden, wodurch sie auf HIGH gehalten werden. Wird eine Taste gedrückt, so wird über den Taster eine Verbindung der Eingangsleitung zur Masse hergestellt, wodurch die Eingangsleitung auf LOW gezogen wird. Die Konsole fragt den Controller in regelmäßigen Abständen ab, indem zunächst die //Out-0//-Leitung kurzzeitig auf HIGH gezogen wird. Dadurch wird der Latch des Shift-Registers (Pin 9) aktiviert und der aktuelle Zustand aller Eingangsleitungen im Register zwischengespeichert. Der Zustand der Eingangsleitung D7 steht dabei sofort am Ausgang Q7 (Pin 3) zur Verfügung und wird über die //Data//-Leitung an die Konsole übermittelt. Um den Zustand der weiteren Eingangsleitungen zu übertragen, wird die //Clock//-Leitung, die mit dem Clock-Eingang des Shift-Registers (Pin 10) verbunden ist, fortwährend zwischen HIGH und LOW umgeschaltet. Immer wenn von LOW nach HIGH umgeschaltet wird, werden die Daten im Register um eine Stelle weitergeshiftet. Somit werden in Folge die Zustände der Eingangsleitungen D6, D5, D4, D3, D2, D1 und D0 über die //Data//-Leitung übertragen. Die freien Stellen im Register werden mit Daten aufgefüllt, die über die serielle Eingangsleitung übertragen werden. Diese liegt beim NES-Gamepad jedoch dauerhaft auf Masse, weshalb nach der Übertragung von D0 nur noch LOW-Zustände übertragen werden. Die Ausgangsleitungen Q5 (Pin 2) und Q6 (Pin 12) sind beim NES-Gamepad nicht verbunden. ===== Übertragungsprotokoll ===== Die Tastenzustände werden vom Controller seriell an die Konsole übertragen. Eine gedrückte Taste wird durch ein LOW-Signal repräsentiert. Die Übetragung beginnt bei D7 und endet mit D0. Anschließend werden nur noch LOW-Signale übertragen. | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | DS ||| | Ⓛ A | Ⓛ B | Ⓛ Select | Ⓛ Start | Ⓛ ↑ | Ⓛ ↓ | Ⓛ ← | Ⓛ → | ''LOW'' | ''LOW'' | … | ===== Versionen ===== Die Version für den **nord-amerikanischen Markt** (NTSC-Version) besitzt neben dem IC 4021 keine weiteren, elektrischen Bauteile. Es gibt noch zwei ungenutzte Lötpunkte zwischen Versorgungsspannung und Masse. Laut Aufdruck ist hier ein Kondensator vorgesehen, der aber offenbar nie verbaut wurde. Daneben existiert noch eine leichte Variation dieser Version. Ergänzend befinden sich hierbei auf der Platine zwei weitere ungenutzte Lötpunkte zwischen der Out-0-Leitung und der Versorgungsspannung, deren Abstand darauf schließen lässt, dass hier ein bedrahteter Widerstand verbaut werden könnte. Aufdrucke sind hier nicht vorhanden. Bei der Version für den **europäischen Markt** (PAL-Version) sind die Clock- und Out-0-Leitungen zusätzlich über einen 3,6-kΩ-Pull-Up-Widerstand mit der Versorgungsspannung verbunden. Anfangs wurden bedrahtete Widerstände genutzt, später SMD-Widerstände. Der Hintergrund für diese Ergänzung ist, dass die PAL-Version der Konsole die Leitungen nicht eigenständig auf HIGH halten kann. Entsprechend funktioniert die nord-amerikanische Version des Gamepads nicht an einer PAL-Konsole. Andersherum gibt es keine Probleme. Auch die europäische Version besitzt zwei ungenutzte Lötpunkte, hier allerdings zwischen der Clock-Leitung und Masse. Es gibt keine Aufdrucke. {{:de:controller:schematics:nes:nes-gamepad-schematic.png?direct&600|}}