![]() |
![]() |
Unter DOS gibt es meines Wissens nach keine fertige Lösung um einen USB-Joystick oder Gamepad zu betreiben. Hier steht einem lediglich der Gameport (Soundkarte) zu Verfügung. Aber bei Notebooks sucht man diesen leider Vergeblich. Zwar gibt es PCMCIA-Karten mit Gameport, aber diese waren damals schon rar gesät und heute (2023) quasi gar nicht mehr zu bekommen. 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.
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
lässt sich damit prinzipiell jeder digitale Joystick betreiben. 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 werden.
Nichtsdestotrotz läuft die Betaversion v1.63 von 1998 recht 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, welcher in vielen Fällen gut funktionieren
wird.
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 mit Commodore) Probleme mit meinem
Armada 1750. Im Grunde
benötigt der ATARI-Joystick keine positive Spannungsversorgung, da alle 4 Richtungen und der
Feuerknopf gegen Masse geschaltet werden. Darum habe ich Pin 2-4 (+5V)
auch zunächst weggelassen. Jedoch zeigte mir ein erster Test mittels "GO /X", dass
sich der Low-Pegel nicht direkt wieder abbaut. 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. Abhilfe schaffte hier je ein 1 MOhm Widerstand gegen +5V.
Somit wird die Negativ-Spannung direkt
nach dem Loslassen "vernichtet". 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:
![]() |
![]() |
|
![]() |
Installation und Konfiguration:
Die Handhabung von SNESKey ist zwar clever und logisch 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 bei "PATH" mit aufgenommen werden.
PATH sollte bereits für DOS definiert sein, durch ein Semikolon
kann in der gleichen Zeile ein weiterer Ordner festgelegt 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 Start-Anwendung 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. Somit würde die Zeile dann so aussehen:
ProgPath = C:\GAMES\ALADDIN\ALADDIN.EXE
Hinter
Up =, Down =, Left =, Right = und Fire = stehen die aktuell definierten Tasten,
die entsprechend dem Spiel anzupassen 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 unter 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
hier
gerne
bei den SUB-D-Einbaubuchsen bedienen.
![]() |
Download (als STL, IGS und STP)
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 befindet sich im Download
(Ordner "Docs").
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 - angenhem flexibel :-)
Parallelport Joystick.zip
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 eine neue und entspricht weder dem SNESKey
2600, noch dem 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:
![]() |
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 (rot dargestellt) versuchen, ich gehe nicht davon aus, dass dies generell notwendig ist.
![]() |
Hier noch eine Alternative zum LPT-Joystick, das PS/2 Keyboard-Gamepad. Mit diesem Ansatz
ist natürlich auch ein 1- oder 2-Button-Joystick problemlos umsetzbar.
Der Aufbau ist denkbar einfach. Man nehme eine PS/2 Tastaturplatine, 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 generell problematisch, aber
nicht komplett unmöglich ist. Einen PS/2 Maus und Tastatur Anschluss besitzen
jedoch die meisten alten Notebooks.
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 wird. 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 sein, aber am Ende müssen lediglich
die 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 Verbindungslitzen kommt die Gamepad-Platine, zusammen mit der Keyboard-Platine zurück ins Gehäuse. An der Keyboard-Platine musste ich etwas rumschnitzen damit sie rein passt, ist mir nicht wirklich gut 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.
![]() |
Keytest7
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