Tech-Ecke /DOS/Joystick-Adapter im Eigenbau

Joystick-Adapter im Eigenbau

Unter DOS gibt es meines Wissens nach keine Möglichkeit einen USB-Joystick oder Gamepad zu betreiben. Hier steht einem lediglich der Gameport der Soundkarte zu Verfügung. Aber bei Notebooks sucht man diesen leider Vergeblich. Zwar gibt es PCMCIA-Karten um einen Gameport nachrüsten zu können, aber diese waren damals schon rar gesät und heute (2023) quasi gar nicht mehr zu bekommen, auch gebraucht findet man eigentlich nichts mehr. Eine Alternative bietet hier der Joystick-LPT-Adapter, mit dem sich zumindest digitale Joysticks und Gamepads unter DOS betreiben lassen. Der Adapter ist recht einfach selbst anzufertigen und kann unter DOS mit SNESKey von Benji York und unter Windows (Win9x - XP) mit Parallelport-Joystick-Treiber von Deon van der Westhuysen angesprochen werden.

Diese Seite beinhaltet


LPT-Joystick


SNESKey

SNESKey wurde Mitte bis Ende der 90'er Jahre von Benji York entwickelt und verfolgt in erster Linie, wie der Name schon erahnen lässt den Anschluss von SuperNintendo-Gamepads am DOS-PC. Aber aufgrund der flexiblen Konfiguration lassen sich prinzipiell alle digitalen Joysticks einbinden. Lediglich die Anzahl der Feuer- bzw. Funktionsknöpfe ist auf 4 begrenzt (4 Richtungen + 4 Knöpfe belegt alle 8 Eingänge des LPT-Ports). Das Projekt ruht seit 1998 und wird wohl auch nicht mehr aufgenommen. Nichtsdestotrotz läuft die Betaversion 1.63 von 1998 zufriedenstellend und ist für Rechner aus den späten 90'er und anfänglichen 2000'er ja auch durchaus zeitgemäß.
SNESKey emuliert keinen Gameport-Adapter, sondern simuliert für jede Joystickbewegung einen entsprechenden Tastendruck auf dem Keyboard. Da sich quasi alle DOS-Spiele und auch Konsolen-Emulatoren per Tastatur bedienen lassen, ist das ein recht pfiffiger Ansatz, der auch in Vielen Fällen gut funktioniert.

Schaltplan - ATARI & Commodore:

In der Dokumentation zu SNESKey (im Download enthalten) befinden sich mehrere Beispielschaltpläne, jedoch hatte ich bei der ATARI-2600-Schaltung (gleich Commodore) Probleme mit meinem Armada 1750. Im Grunde benötigt der ATARI-Joystick keine Spannungsversorgung. Alle 4 Richtungen und der Feuerknopf werden lediglich gegen Masse geschaltet, weshalb ich Pin 2-4 (+5V) auch zunächst weg lies. Jedoch zeigte mir der Test mittels "GO /X", dass die Betätigungen sehr lange anhielten und erst nach einer weile, unter "Zittern" verschwanden. Zum Teil wurden auch Richtungen angezeigt, die ich gar nicht betätigt hatte. Das Problem lag am sehr langsamen Abbau der Restspannung (-5V) im LPT-Controller. Als Abhilfe habe ich je einen 1 MOhm Widerstand gegen +5V (also letztlich doch Pin 2-4) gehangen, so, dass die Negativ-Spannung direkt nach dem Loslassen "vernichtet" wird, damit läuft alles bestens. Je nach Joystick-Aufbau schafft man es alle 4 Richtungen + Feuerknopf gleichzeitig zu betätigen, dabei fällt der Widerstand  gemäß 1/Rges=1/R1+1/R2+1R3... auf 200 kOhm ab. Hier also bitte nicht mit wesentlich kleineren Werten experimentieren, der LPT-Port ist nicht kurzschlussfest und kann dabei schnell das Zeitliche segnen! Meine finale Schaltung für den ATARI- bzw. Commodore-Joystick sieht wie folgt aus:

SNESKey 2600.PDF     


Installation und Konfiguration:

Die Handhabung von SNESKey ist logisch und clever aufgebaut, aber in der Anwendung leider wenig intuitiv. Zur Installation muss zunächst das Zip-Archiv in einen Ordner auf der Festplatte entpackt werden, beispielsweise "C:\SK163B\". Dann muss dieser Ordner in der Autoexec.bat unter Path mit aufgenommen werden. PATH sollte bereits mindestens für DOS schon definiert sein, durch ein Semikolon kann in der gleichen Zeile ein weiterer Ordner definiert werden. Das würde bei einem reinen DOS-System dann in etwa so aussehen:

   PATH=C:\DOS;C:\SK163B

Rechner jetzt neu Starten. Im Nächsten Schritt schnappt man sich die "2600.ini" aus dem Ordner "Examples" und kopiert diese in den Ordner des Spiels, welches die Joystickunterstützung bekommen soll. Dann Öffnet man die Ini und trägt bei "ProgPath = " den absoluten Pfad zur Startdatei des Spiels ein. Das Spiel soll mal Aladdin sein und befindet sich im Ordner C:\GAMES\ALADDIN, die Exe zum Starten des Spiels heißt ALADDIN:EXE, dann würde die Zeile so aussehen:

   ProgPath = C:\GAMES\ALADDIN\ALADDIN.EXE

Hinter Up =, Down =, Left =, Right = und Fire = stehen aktuell verwendeten Tasten, die entsprechend dem Spiel zu definieren sind. Nach dem Speichern Ini-Datei kann nun das Spiel über die Eingabe "GO", aus dem Spieleordner gestartet werden. "GO" ist eine Batchdatei im SNESKey-Ordner, da dieser in der Autoexec.bat als Path definiert ist, kann "GO" aus jedem beliebigen Verzeichnis heraus gestartet werden. SNESKey schaut nun in der Ini-Datei im Spieleordner nach, welche Anwendung (Spiel) gestartet werden soll und führt dieses mit Joystickunterstützung aus. Um im Vorfeld zu testen ob der Adapter und der Joystick von SNESKey ordnungsgemäß erkannt werden kann folgendes eingegeben werden:

   GO /x

Daraufhin sollte sich ein Fenster zeigen, in dem die aktuelle Joystickposition angezeigt wird. Für alles Weitere bitte die Dokumentation (Ordner Manual) im SNESKey-Ordner zu Rate ziehen.


Download:

  SNESKey_orig.zip (90 kB)

Die Seite vom Autor wurde vom Netz genommen, eine Spiegelung befindet sich hier.



Gehäuse zum Drucken:

Wer einen 3D-Drucker besitzt kann sich hier mein Adaptergehäuse von SUB-D-25-Pol auf SUB-D-9-Pol herunterladen. Es werden noch zwei 2.5x10 mm Kunststoff- bzw. Blech-Schrauben benötigt. Wer sich lieber seinen eigenen Adapter konstruieren möchte kann sich gerne hier bei den SUB-D-Einbaubuchsen als CAD-Modell bedienen.

  Download (als STL, IGS und STP)


Parallelport Joystick-Treiber (PPJoy) für Windows (Win9x und XP/2k)

Auch wenn man unter Windows, zumindest ab Win98 problemlos einen USB-Joystick oder USB-Adapter verwenden kann, so ist es mit dem Treiber von Deon van der Westhuysen auch möglich einen Joystick über den LPT-Port zu betreiben. Dazu kann man 1:1 den selbst gebastelten SNESKey-Adapter verwenden. Eine Anleitung für die Installation (Word-Datei), sowie eine ausführliche Dokumentation (Ordner Docs) befindet sich im Download.
Achtung: Um den Adapter von SNESKey verwenden zu können muss bei "Joystick type" der "SNESkey2600" ausgewählt werden, nicht "LPT JoyStick", sonst passen die Richtungen nicht.
Im Umgekehrten Fall, also hat man bereits einen Adapter mit der PPJoy-Belegung aufgebaut, so kann man unter SNESKey, über die "circuits.ini" die Belegung entsprechend anpassen - sehr flexibel :-)

  Parallelport Joystick.zip



DOSVice Emulator

Nun gut, die Ganze Übung mit SNESKey diente eigentlich nur dem Zweck, einen Joysticksupport für den DOSVice Emulator (v2.1) bereitzustellen. Hätte ich mir allerdings die Einstellungen im Emulator vorher mal etwas genauer angesehen und insbesondere den "TurboGraFX" mal unter die Lupe genommen, dann wäre das Rumalbern mit SNESKey gar nicht notwendig gewesen. Denn Hinter diesem Joystick-Typ verbirgt sich ein ATARI/Commodore kompatibler Joystick, welcher ebenfalls wie SNESKey 2600 einen simplen LPT-Adapter nutzt.
Die Verdrahtung für den TruboGraFX ist dann auch mal wieder einer neue und entspricht weder dem SNESKey 2600 und PPJoy-LPT. Aber SNESKey ist ja sehr flexibel gehalten und auch PPJoy hat den TurboGraFX in der Auswahl, weshalb man dann letztlich doch mit nur einem Adapter auskommt. Hier mal mein Derivat des Adapters:

TurboGraFX.PDF

Auch hier habe ich, wie beim SNESKey 2600-Adapter 1 MOhm Widerstände für die Restspannungsvernichtung eingebracht. Zunächst kann man es mal ohne diese (alles rote) versuchen, ich gehe nicht davon aus, dass dies generell notwendig ist.



Keyboard-Gamepad/Joystick

Hier noch eine Alternative zum LPT-Joystick, das PS/2 Keyboard-Gamepad, wobei mit diesem Ansatz natürlich auch ein 1- oder 2-Button-Joystick problemlos machbar ist.
Der Aufbau ist denkbar einfach: Man nehme eine PS/2 Tastaturplatine und verbinde die Tasten des Gamepads mit den entsprechenden Anschlüssen auf der Platine und schon ist der Fisch geputzt. Die Methode ist besonders interessant für Retro-Notebooks mit DOS und/oder Win95, die weder einen Gameport, noch USB besitzen. Wobei USB unter DOS problematisch aber nicht unmöglich ist. Einen PS/2 Maus und Tastatur Anschluss besitzen jedoch die meisten alten Notebooks. Natürlich ist das Ganze auch mit einer USB-Tastatur, für modernere PC's möglich. Wenn man aber ein Betriebssystem mit USB Unterstützung nutzt, dann kann man auch gleich zu einem fertigen USB-Gamepad greifen.

Als erstes benötigt man eine PS/2 Tastatur zum schlachten, oder man besorgt sich im Netz lediglich die Platine inkl. PS/2 Kabel. Ich hatte mich für letzteres entschieden und war hier mit 5 EUR dabei.

Das Ganze hat den Vorteil, dass man gleich weiß wie groß die Platine ist und kann schon mal abschätzen ob diese in das Zielobjekt passen kann. Der Nachteil ist jedoch, dass man etwas knobeln muss welche Kontakte geschaltet werden müssen, um einen brauchbaren Tastendruck zu erhalten. Das wird mit Sicherheit bei jeder Platine etwas anders gestaltet sein, aber am Ende beiden richtigen kontakte mit einander verbunden werden. Hierbei hilft das Tool Keytest7 am ende des Beitrags. Bei meiner Platine komme ich mit 10 Anschlüssen (Kabel) aus, die mir in Kombination insgesamt 12 brauchbare Tasten liefern. Pin 1 und 2 kommen bei mir auf Masse (geteilt in zwei Bereiche) und die Pins 5-12 an die entsprechenden Gamepad-Kontakte, wobei 5,7,9 und 12 doppelt belegt sind. Das erlaubt mir einen SNES-Gamecontroller-Clone mit 12 Tasten zu betreiben.
Die LED's habe ich aus Platzgründen ausgelötet, sind im Gamepad weder zu sehen, noch würde es irgendeinen Sinn ergeben. Auch habe ich vorsichtshalber die Leiterbahnen rund um den vergossenen USB-Controller-Chip mit einem Cutter durchtrennt.

Ich hatte mich für eine USB-Variante als Basis entschieden. Zum einen war es günstiger als eines mit originalem Anschlusskabel und zum anderen hätte ich es wenigstens per USB nutzen können, falls der Umbau misslungen oder nicht möglich gewesen wäre. Auf der Platine befinden sich am jeden Knopf ein freier Leiterbahnenbereich, der für das Abgreifen bestens geeignet ist. Hier habe ich je ein kleines Löchlein gebohrt, um die Kabel von hinten durchführen und verlöten zu können. Alle rot eigekreisten Knopfanschlüsse schalten gegen Masse M1 (Pin 1 am Keyboard) , alle grünen gegen M2 (Pin 2). Um die beiden Massekreise M1 und M2 zu separieren habe ich die Leiterbahn an einer geeigneten Stelle durchtrennt.

Wie man nun die Tasten aufteilt spielt keine Rolle, da eigentlich jedes DOS-Spiel und auch Emulatoren eine freie Tastenbelegung zulassen. Meine Aufteilung sieht wie folgt aus, wird aber von Tastaturplatine zu Tastaturplatine anders aussehen:

Pin Masse Pin Knopf Taste   Pin Masse Pin Knopf Taste
1 5 R   2 5 E
1 6 T        
1 7 F   2 7 D
1 8 G        
1 9 V   2 9 C
1 10 B        
1 11 5        
1 12 4   2 12 3

 Nachdem dem Anlöten der Verbindunglitzen kommt dann die Gamepad-Platine, zusammen mit der Keyboard-Platine ins zurück ins Gehäuse. An der Keyboard-Platine musste ich etwas rumschnitzen damit sie rein passt, ist mir nicht wirklich schön gelungen aber Deckel drauf und schnell vergessen wie es drunter aussieht :-)

Zum Austesten der Keyboard-Platine habe ich Keytest7 benutzt. Das zeigt einem den aktuellen Tastaturcode der gebrückten Pin-Kombination an. Ich habe darauf geachtet, dass ich die üblichen Steuertasten wie z.B. Cursor, Space, F-Tasten, P nicht verwende. Hat man die Notwendigkeit mehr als 2 Tasten gleichzeitig abfragen zu müssen, so sollte man für die Feuerknöpfe STRG-, Shift- und/oder ALT-Taste verwenden.

Ich würde gerne den Autor des Tools benennen, aber leider weiß ich nicht mehr woher ich es habe und ein Name oder URL ist nicht hinterlegt?

keytest7.zip

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0
[Erstellt 07.01.2023]