SNES-Controller am C64
- C64
- SNES-Controller
- USBASP Programmer
- Elektr. Komonenten (Siehe Text)



Ob Joystick oder Joypad, jeder hat seine Vorlieben und jeder hat sein Lieblings-Steuergerät. Der SNES-Controller ist sehr beliebt, auch wegen seiner ergonomischen Bauform. Dieser kann natürlich aber eben nur am Super Nintendo verwendet werden. Nicht so, wenn man einen PadSwitcher64-Adapter besitzt, mit den es nicht nur möglich ist den SNES-Controller am C64 zu verwenden, sondern auch die Tasten nach belieben neu zu belegen. In dieser Anleitung wird beschrieben wie dieser Adapter aufgebaut wird.
Quelle: Original-Anleitung - github.com/Hojo-Norem/PadSwitcher64 (GPL-3.0 License) von Hojo-Norem.

Klicke auf das Bild zum Vergrößern
Bevor es los geht, noch ein paar Hinweise (Wichtig!)
- Arbeite immer im Spannungsfreien Zustand. Stecke den Adapter nie in die Schnittstelle wenn der Rechner eingeschaltet ist.
- Überprüfe die Lötstellen auf Kurzschlüsse. Ein Kurzschluss kann den C64 sowie SNES-Adapter beschädigen.
- Vermeide statische Ladungen durch das Berühren eines geerdeten Objektes, wie beispielsweise einen Heizkörper. Oder verwende ein antistatisches Armband.
- Ich übernehme keine Verantwortung über Schäden die direkt oder indirekt durch diese Anleitung entstanden sind.
Die Komponenten
Als erstes wird die Platine benötigt. Die Gerber-Daten können von oshpark.com runtergeladen oder das PCB direkt bestellt werden. Wer einen anderen Dienstleister bevorzugt kann die Gerber-Daten runterladen und auf dessen Webseite wieder hochladen.

Klicke auf das Bild zum Vergrößern
Folgende Komponenten sowie Zubehör wird außerdem benötigt:
• Widerstand, 330 Ohm x1
• IC-Sockel, 28-polig, schmal x1
• ATMega 88A-PU x1
• Elko, radial, 100µF, 16V x1
• Keramik-Kondensator 100nF x1
• LED 5mm, grün x1
• Stiftleisten 2x3, 2,54mm x1
• D-SUB-Stecker, 9-polig, Printausführung x2
• SNES Controller Buchse x1
Hinweis: Bei den Controllerbuchsen die ich gekauft habe, waren die Pins auf die falsche Seite gebogen. Die Pins sollten wie im folgenden Bild gebogen sein. In meinem Fall konnte ich sie ohne Probleme zurechtbiegen.

Klicke auf das Bild zum Vergrößern
Hinweis: Stelle sicher, dass der 10 zu 6 Pin Adapter vorhanden ist. Diesen werden wir benötigen.

Klicke auf das Bild zum Vergrößern
Hinweis: Stelle sicher, dass am Controller ein SNES Stecker (nicht USB) angebracht ist.

Klicke auf das Bild zum Vergrößern
Der Aufbau
Der Aufbau ist relativ einfach, allerdings ist einiges zu beachten. Zuerst sollten die Komponenten auf der oberen Seite der Platine aufgelötet werden und erst danach die zwei DSUB9-Stecker auf der Rückseite. Denn sonst sind einige Lötpunkte nicht mehr zugänglich.

Klicke auf das Bild zum Vergrößern
Hinweis: Beim Elektrolyt-Kondensator sowie bei der LED muss auf die Polarität geachtet werden. Das längere Beinchen der Komponenten ist der Plus-Pol.
Die Pins der SNES-Buchse sollte man nicht komplett in den dafür vorgesehenen Löt-Punkte schieben, damit ein kleiner Abstand zwischen C64-Gehäuse und Adapter bleibt.

Klicke auf das Bild zum Vergrößern
Im nächsten Schritt können die DSUB9-Stecker angelötet werden. Hier ist es wichtig, dass das Metall-Gehäuse der Stecker keinen Kurzschluss verursachen. Stelle sicher, dass zwischen DSUB9-Stecker und Platine mindestens 2mm Abstand bleiben.

Klicke auf das Bild zum Vergrößern
Zum Abschluss stecken wir den ATmega in den Sockel. Achte auf die Ausrichtung! Die Kerbe des ATmega muss mit der Kerbe auf der Platine übereinstimmen.

Klicke auf das Bild zum Vergrößern
Den ATmega programmieren
Da wir an unserem Adapter die Pins für die Programmierung angelötet haben, kann der ATmega programmiert werden ohne diesen aus den Sockel zu ziehen. Zuerst muss der USBASP Programmer samt 10 zu 6 Pin Adapter angeschlossen werden. Im Normalfall kann der 10 zu 6 Pin Adapter nicht falsch rum an den USBASP angeschlossen werden da eine Kerbe am Stecker dies verhindert.

Klicke auf das Bild zum Vergrößern
Der USBASP Programmer muss anschließend wie folgt an den SNES-Adapter angeschlossen werden. Siehe Bild:

Klicke auf das Bild zum Vergrößern
Als nächstes stecken wir den USBASP Programmer an einen Windows-Rechner. Dieser kann aber ohne geeigneten Treiber nichts damit anfangen. Deshalb laden wir das Programm Zadig runter welches den benötigten Treiber beinhaltet: Download hier zadig.akeo.ie.
Anschließend starten wir Zadig und wählen aus den DropDown-Menü das zu installierende Gerät (USBASP) und dann den Treiber "libusb-win32". Der Treiber wird mit "Install Driver" installiert.

Klicke auf das Bild zum Vergrößern
Jetzt kontrollieren wir ob der Treiber korrekt installiert wurde. Drücke dazu die Windows-Taste, gib "Geräte-Manager" ein und bestätige mit Enter.

In der Liste der installierten Geräte sollte nun der USBASP-Programmer auftauchen.

Weiter geht es mit der Installation der Software. Für die Programmierung eignet sich das Programm AVRDUDE. Allerdings ist dieses recht umständlich zu bedienen da es sich um ein Kommandozeilen-Tool handelt. Mit einer grafischen Oberfläche hingen lässt es sich viel komfortabler arbeiten. "AVRDUDESS" ist das was wir brauchen (Download hier: blog.zakkemble.net). Lade die Windows-Version runter und installiere diese. Eventuell müssen einige weitere Komponenten aus dem Internet geladen werden.
Ist das Programm bereit, müssen einige Einstellungen vorgenommen werden, und zwar folgende:
• Programmer: USBASP, http.fischl.de/usbasp/
• MCU: ATmega88P
• Fuses: L 0xE2, H 0xDF, E 0xF9
• Häkchen bei "Set fuses"
Und natürlich muss die aktuelle Firmware (PadSwitcher64.hex) runtergeladen werden. Diese öffnen laden wir nun in AVRDUDESS bei "Flash".

Klicke auf das Bild zum Vergrößern
Und zu guter Letzt programmieren wir den ATmega mit einen Klick auf "Program!".

Klicke auf das Bild zum Vergrößern
Der Funktionstest
Ist die Programmierung gelungen, dann geht es weiter zum Funktionstest. Dazu schalten wir den C64 aus und schließen den SNES-Controller sowie den SNES-Adapter an den Joystick-Ports an.

Klicke auf das Bild zum Vergrößern
Zum Testen benötigen wir das Programm "PadSwitcher64.prg" das von der Githubseite github.com/Hojo-Norem/PadSwitcher64/releases runtergeladen werden kann. Das PRG-File muss natürlich irgendwie auf den C64 übertragen werden, beispielsweise mit einem SD2IEC. Ist dies erledigt, starten wir das Programm und drücken am SNES-Controller den Feuerbutton (Y).

Klicke auf das Bild zum Vergrößern
Hier können wir testen ob die Tasten des Controllers reagieren. Mit START wird zwischen Port 1 und Port 2 geschaltet. Anschließend verlassen wir das Test-Programm mit RUN/STOP.
Die Tastenbelegung ändern
Ab Werk ist im ATmega eine Standard-Tastenbelegung hinterlegt. Diese sieht wie folgt aus:
DPAD UP = UP
DPAD DOWN = DOWN
DPAD LEFT = LEFT
DPAD RIGHT = RIGHT
Y = FIRE
X = TURBO FIRE
B = UP
A = Special (DOWN + FIRE)
R = KEYBOARD MATRIX LINE (PORT 2 MODE ONLY)
Hinweis: Bei meinen Tests hat sich herausgestellt, dass die aktuelle Version des Programmes PadSwitcher64.prg ein Timing-Problem enthaltet. Zum Zeitpunkt der Tests war dies die Version 1.1111. Sollte eine Fehlermeldung angezeigt werden die besagt, dass der Adapter nicht antwortet, dann lade die ältere Version 1.11 runter. Mit dieser hatte ich (so gut wie) keine Probleme.

Klicke auf das Bild zum Vergrößern
Die vorgegebene Belegung kann nach Wünschen abgeändert werden. Dazu starten wir wieder das Programm PadSwitcher64.prg und drücken zeitlich die Controller-Tasten SELECT und START. Anschließend öffnet wir den Mapping Editor mit Y.
Hier haben wir die Möglichkeit vier verschiedene Tasten-Belegungen abzuspeichern. A, B, X und Y. In diesem Beispiel ändere ich die Belegung für A.

Klicke auf das Bild zum Vergrößern
Im Editor kann nun gewählt werden welche Taste für welche Funktion zuständig ist und das für beide Joystick-Ports. Im folgenden Beispiel habe ich UP auf die Taste X und FIRE auf die Taste B gelegt, mit Turbo Fire.

Klicke auf das Bild zum Vergrößern
Haben wir alle Einstellungen vorgenommen, laden wir die neue Belegung auf den ATmega, mit einem Tasten-Druck auf Y. Anschließend beenden wir den Editor mit X und speichern das Ganze auf das EPROM des ATmegas ab, mit zeitgleichen Drücken der Tasten SELECT und START. Würden wird die neue Belegung nicht auf das EPROM abspeichern, dann gingen die vorgenommenen Einstellungen nach einen Neustart verloren.
Haben wir alles wie gewünscht konfiguriert, starten wir den C64 neu, laden das Programm PadSwitcher64.prg und drücken den Feuerbutton (Y). Jetzt wählen wir die Tastenbelegung die wir vorhin abgeändert haben. Das geschieht mit der Tastenkombination SELECT + A (oder B, X, Y). In meinem Fall wähle ich die Belegung SELECT + A da ich diese geändert habe und teste ob die Einstellungen übernommen wurden.
Autofire und invertiertes Autofire
Die Autofire Funktion kann nicht nur für Fire-Tasten, sondern auch auf die DPad-Belegung verwendet werden. Autofire auf LINKS oder RECHTS, also wiederholtes Drücken einer einzigen Richtungs-Taste, hätte wenig Sinn, aber: Wenn wir beispielsweise Autofire auf LINKS und invertiertes Autofire auf RECHTS legen, ergibt sich ein schneller LINKS/RECHTS Richtungswechsel bei Betätigung der entsprechenden Tasten. Dies ist besonders bei Spielen nützlich wo wiederholte LINKS/RECHTS-Bewegungen gefordert werden. Im folgenden Beispiel wird RECHTS auf X (Autofire) und LINKS auf A (invertiertes Autofire) gelegt.

Klicke auf das Bild zum Vergrößern
