"Och nö, nicht noch ein Joystickadapter" - Ich höre schon die Unkenrufe aus dem Hintergrund. Aber diesmal geht es nicht um einen weiteren USB Joystickadapter für den PC, sondern um einen Joystickadapter für alle Heimcomputer mit einer D-SUB9 Schnittstelle, wie sie u.a. bei Atari und Commodore zu finden war. Und für den Commodore gibt es sogar ein Spiel, welches diesen Adapter unterstützt. Denn mit diesem Adapter kann man die Gamepads von der Sony Playstation 2 an den genannten Heimcomputern betreiben.

Einleitung

Vor ein paar Jahren entdeckte ich auf der Homepage von Synthetic Dreams den Schaltplan und die Firmware für einen sehr interessanten Joystickadapter. Mit diesem Adapter kann man ein Spiel namens Shredz64 spielen, das dem von der Playstation 2 bekannten Guitar Hero nachempfunden wurde. Das fand ich persönlich noch nicht mal das interessante daran, sondern vielmehr die Tatsache, dass man damit auch für jedes andere Spiel die bekannten PSX2 Gamepads an den C64 anschließen konnte.

Zusätzlich kann dieses Interface aber noch mit ein paar zusätzlichen Features punkten:

  • Zwei Feuerknöpfe werden unterstützt, welches u.a. bei Shredz64 benötigt wird
  • Der Analogstick kann benutzt werden, wenn natürlich nur digital
  • Da der PSX Controller 4 Feuerknöpfe hat, sind die oben genannten beiden Feuerknöpfe nochmals mit Dauerfeuer belegt.
  • Man kann Makros programmieren. So kann man Sequenzen im Adapter speichern und auf Knopfdruck (mit den Schultertasten) abrufen

Und ein mir persönliches wichtiges Feature war, dass man eben mit den PSX2 Controllern spielen kann, die mir sehr gut in der Hand liegen. 

Der PSX64 kann, bzw. konnte auch als Fertiggerät bei Synthetic Dreams bestellt werden. Allerdings als ziemlich große Platine. Und da die Lieferung aus dem Ausland erfolgt, mit zusätzlichen Gebühren. Was lag da näher, als einfach diesen Adapter nachzubauen. Zumal die Webseite schon seit fast 5 Jahren nicht mehr gepflegt wird und vermutlich auch der Adapter nicht mehr verkauft wird.

Zumal ich den Adapter nun soweit geschrumpft habe, dass er auch Problemlos direkt in einen PSX2 Controller eingebaut werden könnte.

Der Aufbau ist dabei recht Simpel und könnte auch auf einer Streifenrasterplatine oder einem Breadboard schnell aufgebaut werden.

 

Der Aufbau

Di Platine habe ich so kompakt wie möglich, aber so großzügig zum leichtern löten, wie möglich gehalten. Dabei sind die Bauteile recht groß, für SMD Verhältnisse. So das auch ein wenig geübter Bastler diese Platine recht leicht zusammen bauen sollte.

PSX64 Platine unbestückt klein

 

Für den Aufbau werden, neben der Platine, noch folgende Bauteile benötigt:

  • 2x MCP41100 - SOIC-8 (U1, U2)
  • ATMega8-16AU - TQFP-32 (U3)
  • 16MHz Quarz - 5032 (Y1)
  • 4,7µF Tantal Kondensator - Kemet A (C1)
  • 2x 22pF Kondensator - 0805 (C2, C3)
  • 100nF Kondensator - 0805 (C4)
  • 2x 10k Widerstand - 0805 (R1, R2)
  • 2x 1N4004 Diode - SMA (D1, D2)

Eigentlich recht überschaubar und vor allem auch recht günstig. Bis auf die beiden digitalen Potentiometer MCP41100, bekommt man die Teile eigentlich in jedem gut sortierten Elektronikgeschäft. Die beiden MCP41100 sind u.a. über Mouser, Digikey und auch schon mal über eBay zu bekommen.

Zusätzlich wird noch Kabel für die Joystickanschlüsse und die entsprechenden Stecker und Buchsen benötigt. Für den Anschluß des PSX2 Gamepads habe ich eine PSX Verlängerung genommen. Diese gibt es für 2-3 Euro bei eBay und sind wesentlich preiswerter, als die Buchse alleine. Einfach den Stecker abschneiden und an die Platine löten.

Für die Seite zum Computer hin, habe ich ein 10poliges Flachbandkabel benutzt, von dem ich eine Leitung abgetrennt habe. Daran habe ich dann eine Standard D-SUB9 Buchse gelötet. Man könnte hier auch eine Crimpversion benutzen.

Da der PSX2 Controller sehr Stromhungrig ist, kann man leider nicht die 5V an den Controll Buchsen des C64 abgreifen. Ich habe dort einfach eine Litze mit einem USB Stecker angelötet. USB Netzteile hat man mittlerweile eigentlich immer im Haus und kann man auch mal an einem externen "Power Pack", also den Akkus zum Aufladen von Handys, etc. nutzen. 

Die Schaltung habe ich, bis auf den Spannungsregler, 1:1 übernommen. Den Spannungsregler hatte ich weggelassen, weil ich die Schaltung sowieso nur mit 5V betreiben wollte.  Der Aufbau gestaltet sich recht einfach, und sollte mit dem verlöten des ATMega8 beginnen. Dann die beiden MCP41100 und den Quarz. Gefolgt von den beiden Dioden und den noch übrig gebliebenen Kondensatoren und Widerständen ist die Platine recht schnell bestückt.

PSX64 Platine fertig bestück kleint

 

Firmware flashen

Der 6polige Anschluss, unten rechts im Bild zu sehen, ist die ISP Schnittstelle, um die Firmware einzuspielen. Dort kann eine 2reihige Stiftleiste mit 6 Pins eingelötet werden. Die Belegung entspricht dabei der 6poligen ISP Schnittstelle.

Da die Firmware nur einmal geflasht wird, und mit Updates vermutlich nicht mehr zu rechnen ist, habe ich die Stiftleiste nicht eingelötet, sondern nur eingesteckt und beim flashen etwas verkantet fest gehalten. Sicherlich nicht die offizielle Vorgehensweise, aber dafür extra eine Stiftleiste war mir die Sache nicht Wert. Zumal ich die Platine in Schrumpfschlauch packen wollte und dann die Stiftleiste nur gestört hätte.

Ich habe die Firmware wieder mit dem bekannten Tool "avrdude" eingespielt. Auf der Webseite des Herstellers finden sich zwei Versionen, einmal für den ATMega8 und dann für den ATMega168. Da aber keinerlei Features von dem ATMega 168 genutzt werden, lohnt sich dieser Hardware Upgrade nicht,

Ich nutze zum flashen einen AVR ISP MKII, es kann aber auch jeder andere kompatible Programmieradapter genutzt werden. Für meinen Programmieradapter sieht der Aufruf wie folgt aus:

 


avrdude -c avrispmkII -p m8 -U flash:w:atmega8.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "atmega8.hex"
avrdude: input file atmega8.hex auto detected as Intel Hex
avrdude: writing flash (4904 bytes):

Writing | ################################################## | 100% 1.77s

avrdude: 4904 bytes of flash written
avrdude: verifying flash memory against atmega8.hex:
avrdude: load data flash data from input file atmega8.hex:
avrdude: input file atmega8.hex auto detected as Intel Hex
avrdude: input file atmega8.hex contains 4904 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.36s

avrdude: verifying ...
avrdude: 4904 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:D9, L:E1)

avrdude done.  Thank you.


 

Nun noch die Fuses setzen, damit auch der externe 16MHz Quarz genutzt werden kann:

 


avrdude -c avrispmkII -p m8 -U lfuse:w:0xce:m -U hfuse:w:0xc9:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: reading input file "0xce"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xce:
avrdude: load data lfuse data from input file 0xce:
avrdude: input file 0xce contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xc9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xc9:
avrdude: load data hfuse data from input file 0xc9:
avrdude: input file 0xc9 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified

avrdude: safemode: Fuses OK (E:FF, H:C9, L:CE)

avrdude done.  Thank you.


 

Damit ist die Programmierung abgeschlossen und der PSX64 Adapter fertig. 

PSX64 Adapter Stromversorgung klein

 

Ich habe das ganze dann noch komplett in Schrumpfschlauch gepackt. Wer das ähnlich handhaben möchte, sollte immer daran denken, denn Schrumpfschlauf aufzuziehen, bevor die Stecker montiert sind. Ansonsten lässt sich der Schlauch nicht mehr drüber ziehene, weil dieser für die Stecker zu klein wäre.

 

Fertig

Der fertige Adapter sieht bei mir so aus:

PSX64 Adapter Schrumpfschlauch fertig klein

 

Und das ganze noch komplett mit den beiden Anschlüssen:

PSX64 Adapter fertig klein 

Wie schon zu Anfang erwähnt, ist die Platine klein genug, um auch direkt in das PSX2 Gamepad eingebaut zu werden. Da ich meine Gamepads aber noch für die PSX2 nutze, habe ich die externe Variante gewählt. Würde mich aber freuen, falls jemand einen Einbau in Erwägung zieht, einige Bilder davon zu sehen.

Auch Fragen oder Kommentare sind immer gerne willkommen.

Ich habe noch ein Platinen übrig. Falls jemand eine haben möchte, so kann er unter folgendem Link eine anfordern: Platinen

 

Anmelden

An dieser Diskussion teilnehmen.

INFO: Du schreibst diese Nachricht als Gast!

Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 
Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Weitere Informationen Ok Ablehnen