Fachschule für Technik und Wirtschaft XXXXXXXXXXXX Projektarbeit Name: Klasse: Datum: XXXXXXXXX XXXXXXXXX 04.02.2005 -2- Thema: Entwicklung und Herstellung eines Arcadecontrollers sowie Anfertigung der für den PC benötigten Interfaceschaltung Spezialisierungsrichtung: Nachrichtentechnik Betreuer: XXXXXXXXXXX -3- „Freestyler“ – von einer Idee zum fertigen Projekt Inhaltsverzeichnis 1/2 Seite 1 Die Idee 5 1.1 Was ist ein Arcadecontroller? 5 1.2 Emulationsmöglichkeiten am PC 7 2 Erste Überlegungen zur technischen Realisierung 7 2.1 Vorhandene Hardware in der Projektumgebung 9 2.2 Wie kommuniziert der Controller mit dem PC? 9 2.3 Allgemeiner Aufbau und Funktion der Tastatur 10 2.4 Anordnung der Bedienelemente und Gehäusedesign 12 2.5 Vergleich mit im Handel erhältlichen Geräten 12 2.6 Materialbeschaffung 13 3 Die Interfaceschaltung 13 3.1 Protokolle für die Datenübertragung zwischen PC und Tastatur 14 3.2 Schaltungsanalyse 15 3.3 Das Layout der Lochrasterplatine 16 3.4 Bestückung der Platine 17 3.5 Erste Funktionstests, Fehlersuche und Problembeseitigung 17 3.6 Einbau ins Gehäuse 18 4 „Tastaturhack“ bzw. „Tastaturreversing“ 19 4.1 Logik des Tastaturprozessors und Ghost - Key - Problem 19 4.2 Erstellung eines Tastenkontaktplanes 20 4.3 Entwicklung der Tastaturmatrix 21 4.4 Verteilung der Controllerfunktionen auf der Matrix 21 -4- Inhaltsverzeichnis 2/2 Seite 5 Bau des Controllers 22 5.1 Das Gehäuse 22 5.2 Montage der Joysticks und Pushbutton 22 5.3 Montage der Tastaturprozessorplatine 22 5.4 Herstellung der elektrischen Verbindungen 23 5.5 Testen aller gewünschten Funktionalitäten 23 Anlagenverzeichnis Anlage 1 Der komplette Tastenkontaktplan 24 Anlage 2 Tastenverteilung auf der 18 Zeilen x 8 Spalten - Matrix 25 Anlage 3 Mikroschalterzuordnung auf der Tastaturmatrix 26 Anlage 4 Übersicht der benötigten Gehäuseteile 27 Anlage 5 Auszug aus dem „Freestyler“ - Konfigurationsfile für MAME 28 Anlage 6 Kleines Arcade - ABC 30 Anlage 7 Professionelle Alternativen 32 -51 Die Idee Durch Zufall habe ich vor einigen Jahren die Möglichkeit der Nachbildung anderer Computersysteme auf dem PC entdeckt. Ein C64 - Emulator, welcher die Software und Hardware aus vergangenen Tagen in absoluter Perfektion wieder aufleben ließ, weckte mein Interesse an diesem Thema. Es war zum Beispiel möglich, das original C64 - Diskettenlaufwerk über ein spezielles Schnittstellenkabel am PC zu betreiben. Nach dem C64 - Emulator testete ich weitere Programme, um beispielsweise den Amiga, den Robotron Z1013, die Rechner der ostdeutschen KC - Serie, aber auch diverse Spielkonsolen am PC zu simulieren. Die benötigte Software kann häufig kostenlos aus dem Internet herunter geladen werden. Vor ca. einem Jahr fand ich eine englische Web - Seite, welche sich mit der Emulation von Spielhallenautomaten beschäftigte. Diese Videospielautomaten werden auch als ARCADE - Maschinen bezeichnet. Es existieren verschiedene Emulationsprogramme für diese Automaten. Als bekannteste Software wird MAME (Multiple Arcade Machine Emulator) kontinuierlich weiterentwickelt. Wie der Name verrät, unterstützt MAME viele verschiedene Arcadesysteme. Momentan ist es mit diesem Emulator möglich, über 5000 Automaten am PC zu simulieren. Für diese Software habe ich meinen Controller entwickelt. 1.1 Was ist ein Arcadecontroller? Bei einem Arcadecontroller handelt es sich um ein robustes Eingabegerät, mit dem schnelle Reaktionsspiele optimal bedient werden können. Man unterscheidet Einbzw. Mehrspielergeräte. Je nach Ausführung ist ein solcher Controller mit mindestens einem 8 - Wege - Arcadejoystick und einer Vielzahl mechanisch sehr belastbarer Taster ausgerüstet. Diese Taster werden auch als „Pushbuttons“ bezeichnet. Jeder Joystick hat vier und jeder Taster hat einen austauschbaren Mikroschalter. Diese Mikroschalter vertragen problemlos über 100.000 Schaltspiele und können bei Verschleiß sehr einfach gewechselt werden. Im Handel sind Controller für Spielkonsolen und Personalcomputer erhältlich. Allerdings ist der Preis dieser Geräte oftmals inakzeptabel, da meist nur hochwertige Einzelteile verbaut wurden. Ein neuer Arcadejoystick kostet je nach Ausführung ca. 50€. Im Internet fand ich viele Anregungen, an denen ich mich bei der Realisierung meines Projektes orientieren konnte. -6Es gab eine Menge negativer Beispiele: Ich wollte ein schöneres Design und benötigte vor allem mehr Funktionen! Ebenso fand ich aber auch die absoluten „Hightech - Controller“: Bei diesen Arcadeboards wurden nur hochwertige elektronische und mechanische Bauteile verwendet. Ein in den Boards eingesetzter Mikrocontroller kommuniziert über eine spezielle Treibersoftware mit dem PC. Der Vorteil dieser Lösungen besteht in der Programmierbarkeit der Eingabegeräte. Man kann diese Controller fast mit jeder Software verwenden. Die Realisierung setzt allerdings ein fundiertes Programmierwissen, handwerkliches Geschick und einen nicht unerheblichen finanziellen Aufwand voraus. Ich hatte mich für einen Mittelweg entschieden. Bei meinem Controller mussten die Kosten vertretbar bleiben. Eine ansprechende Optik mit viel Funktionalität und vor allem eine einfache Konfiguration waren die Hauptziele. -71.2 Emulationsmöglichkeiten am PC Unter dem Begriff Emulation versteht man die Nachbildung bzw. die Simulation von Hardware durch eine spezielle Software. Diese Programme werden umgangssprachlich als Emulatoren bzw. EMUs bezeichnet und sind unter anderem für alte Heimcomputer, alte Spielkonsolen, die bereits erwähnten Arcadeautomaten und Flipperautomaten verfügbar. Grundvoraussetzung für den erfolgreichen Betrieb eines EMUs ist ein leistungsfähiger PC. In vielen Fällen kann man Originalzubehör, wie z.B. Diskettenlaufwerke oder diverse Eingabegeräte am Emulator betreiben. Diese Bilder sollen einige Möglichkeiten aufzeigen: 2 Erste Überlegungen zur technischen Realisierung Nachdem ich viel Zeit mit dem Lesen von Internetforen und Homepages zugebracht hatte, fasste ich den Entschluss, einen Multifunktionscontroller zu bauen. Der Controller sollte über einen Einspieler- und über einen Zweispielermodus verfügen. Zusätzlich plante ich einen 3. Joystick senkrecht in der Gehäusefront, um synchrone Auf- und Abwärtsbewegungen zwischen Monitor und Joystick zu erreichen. Als weitere Anforderung musste durch 2 Pushbuttons in der linken und rechten Gehäuseseite eine optimale Kontrolle von Flipperspielen gewährleistet werden. Alle benannten Faktoren setzten eine ausreichende Größe und ein entsprechendes Controllergewicht voraus. Bei der Entwicklung konzentrierte ich mich hauptsächlich auf die Kompatibilität zum Arcadeemulator MAME. Es existieren wenig Automaten, bei denen beide Spieler zur Steuerung neben einem Joystick gleichzeitig bis zu 6 Pushbuttons betätigen können. Um diese Spiele mit dem Controller zu bedienen, ist -8eine sinnvolle Anordnung der 2 Joysticks und 12 Buttons auf dem Controllergehäuse notwendig. In den meisten Automaten mit komplexen Steuerungen laufen Sportspiele. Durch Capcom`s weltweit populäre „Streetfighter “ - Automatenserie wurden auch für deutsche Spieler asiatische Kampftechniken am Monitor erlebbar. Auf jeder der 6 Tasten liegt eine bestimmte Angriff- oder Verteidigungsfunktion der Spielfigur. Durch geschickte Kombination aus Joystickbewegung und dem Betätigen mehrerer Tasten in bestimmten Reihenfolgen, erreicht man die vom Gegner gefürchteten Spezialtechniken bzw. „Specialmoves“. Bei der Mehrzahl der Videoautomaten stehen jedem Spieler jedoch maximal 3 Pushbutton zur Verfügung. Diese 3 Taster wollte ich zentral erreichbar, auf der Gehäuseoberseite, neben dem jeweiligen Joystick positionieren. Außer den 14 bereits erwähnten Spieltasten wurden noch 2 weitere Funktionstasten für die Spielmoduswahl (1 od. 2 Spieler) und eine Taste für den Münzeinwurf benötigt. Letztere Taste wird auch als Coin - Taste bezeichnet und ist notwendig, weil MAME die originalen Automaten - ROMs verarbeitet. Jeder Spielhallenautomat lässt sich nur durch den Einwurf eines entsprechenden Münzbetrages (Coin) aktivieren. MAME wertet das einmalige Betätigen der Coin - Taste als einen Münzeinwurf aus. Wie bereits erwähnt, ist jeder der 3 Joysticks mit 4 Mikroschaltern bestückt. Zu diesen 12 Mikroschaltern kommen noch die 17 Schalter der Pushbuttons. Dies bedeutet, dass insgesamt 29 Schalter mit dem PC kommunizieren. -9In folgender Tabelle sind alle Funktionen meines Controllers übersichtlich dargestellt: Spieler 1: P1 Joy up P1 Joy down P1 Joy left P1 Joy right P1 Bu1 P1 Bu2 P1 Bu3 P1 Bu4 P1 Bu5 P1 Bu6 Spieler 2: P2 Joy up P2 Joy down P2 Joy left P2 Joy right P2 Bu1 P2 Bu2 P2 Bu3 P2 Bu4 P2 Bu5 P2 Bu6 Frontstick: Front Joy up Front Joy down Front Joy left Front Joy right Zusatzbutton: 1Player 2Player Münzeinwurf Flipper li Flipper re P1 (Player1) =>Spieler 1 P2 (Player2) =>Spieler 2 Joy up, down, left und right =>Richtungen der Joystickbewegung 2.1 Vorhandene Hardware in der Projektumgebung Für alle Funktionstests verwendete ich meinen privaten PC mit folgender Systemausstattung: - AMD Athlon Thunderbird 1000Mhz - CPU - Grafikkarte vom Typ Nvidia Geforce2 Pro - Eingabegeräte: Standard PS2 Tastatur und Standard PS2 Maus - Betriebssystem Windows XP 2.2 Wie kommuniziert der Controller mit dem PC? Ein moderner PC besitzt viele verschiedene Schnittstellen, über die eine Anschaltung des Controllers denkbar wäre. Allerdings haben alle für den Anschluss externer Hardware üblichen Kommunikationsschnittstellen für mein Projekt einen sehr großen Nachteil. Bei Verwendung der seriellen COM-, der parallelen LPT-, aber auch der USB- bzw. Firewireschnittstelle ist eine spezielle Treibersoftware notwendig, welche ins Betriebssystem eingebunden werden muss. Dieser Treiber würde den Datenaustausch zwischen PC - Betriebssystem und Eingabegerät über die gewählte Schnittstelle steuern. Da verschiedene Betriebssysteme die Computerschnittstellen unterschiedlich ansprechen und verwalten, muss folglich unter erheblichem Zeitaufwand für jedes System eine eigene Treibersoftware entwickelt werden. Der Arcadeemulator MAME ist beispielsweise ebenfalls in der LINUX - Version xMAME verfügbar. Bei Erscheinen neuer Betriebssystemversionen muss eine fortlaufende Anpassung bzw. Optimierung der Schnittstellensoftware für den fehlerfreien Betrieb des Controllers durchgeführt werden. Dieser hohe Aufwand brachte mich davon ab, eine der 4 oben benannten Möglichkeiten für das Projekt zu favorisieren. - 10 Stattdessen machte ich mir über die Verwendung der Gameportschnittstelle Gedanken. Der Gameport verbindet gewöhnlich Joysticks und Gamepads mit dem Computer. Ein einfacher Treiber für diese Schnittstelle ist in allen üblichen PC Betriebssystemen vorhanden. Meine Überlegung war es, die Elektronik aus einem multifunktionalen, handelsüblichen Gamepad in dem Arcadecontroller zu betreiben. Leider musste ich feststellen, dass die Möglichkeiten der Gameportschnittstelle nicht ausreichend sind. Maximal 4 digitale und 4 analoge Eingangssignale können vom Gameport ohne größeren Aufwand verarbeitet werden. Die 29 Mikroschalter meines Controllers entsprechen insgesamt 29 digitalen Eingangssignalen. Somit musste ich nach einer weiteren Lösung für das Arcadeboard suchen. Mittels einer Internet - Suchmaschine wurde ich auf die private Homepage von Stephan Hans aufmerksam: http://home-t-online.de/home/Stephan.Hans/tricks.htm. Herr Hans hatte eine elektrische Schaltung entwickelt, mit der die Möglichkeit besteht, gleichzeitig zwei Tastaturen an einem PC zu betreiben. Diese Schaltung wurde auch als Tastatursplitter bezeichnet. Sinnvoll ist die Lösung, weil eine Tastatur als PC - Bedientastatur und die andere für die Controlleranbindung verwendet werden kann. Alle MAME - Funktionen lassen sich frei konfigurieren und über die Tastatur steuern. Da bei einer üblichen Multifunktionstastatur mit 102 Tasten (MF - 102) jeder betätigten Tastaturtaste ein eindeutiger Scancode zugeordnet ist, stehen somit für die Codierung der benötigten Controllertasten theoretisch 102 Möglichkeiten zur Verfügung. Der Tastatursplitter wird über ein angefertigtes PS2 - Kabel mit der PS2 Tastaturschnittstelle des PC verbunden. Am Splitter befinden sich 2 Buchsen für die Bedientastatur und den Arcadecontroller. 2.3 Allgemeiner Aufbau und Funktion der Tastatur Wie bereits beschrieben, verwendete ich zur PC - Anschaltung des Controllers eine zweite Tastatur. Um aufzuzeigen, warum für das Projekt nicht die gesamte Tastatur, sondern nur der integrierte Tastaturprozessor und das Anschlusskabel benötigt wurden, möchte ich nachfolgend die Grundlagen und Funktionalitäten einer Standardtastatur erläutern. Die Tastatur gilt als das wichtigste Eingabegerät am Computer. Prinzipiell besteht eine Tastatur aus den Funktionseinheiten Zifferntastenblock, Funktionstasten, Cursortasten, Sondertasten und dem Schreibmaschinenblock. - 11 Für meine Betrachtungen waren nicht die Aufgaben der Funktionseinheiten maßgeblich. Interessanter sind die innere Verschaltung und das elektronische Funktionsprinzip einer Tastatur. Jede Taste ist einem speziellen Stromkreis der Tastatur zugeordnet. Ein kleiner Mikroprozessor untersucht innerhalb einer Sekunde mehrere hundertmal alle Tastaturstromkreise. Jede Taste besitzt an der Unterseite eine kleine Metallfeder. Bei Betätigung einer Taste verbindet diese Feder zwei Punkte auf einer mit Leiterbahnen überzogenen Folie. Der entsprechende Tastaturstromkreis ist geschlossen. Durch das Kontaktieren ändert sich die Spannung innerhalb des zugehörigen Tastaturstromkreises. Auf diese Spannungsänderung reagiert der Tastaturprozessor und generiert ein, der betätigten Taste eindeutig zugeordnetes elektrisches Signal. Dieses als Scancode bezeichnete Signal gelangt über die serielle PS2 - Schnittstelle vom Tastaturprozessor zum Tastaturcontroller. Der Tastaturcontroller befindet sich auf dem PC - Motherboard und ist für die Auswertung und Weiterverarbeitung des empfangenen elektrischen Signals zuständig. Für die Verbindung meines Controllers mit dem PC benötigte ich demzufolge nur das Tastaturkabel und den Tastaturprozessor, welcher direkt in das Controllergehäuse eingebaut wurde. Der Prozessor ist mit allen 29 Mikroschaltern elektrisch verbunden. Somit werden die Tastaturstromkreise durch das Betätigen der Mikroschalter geschlossen und eine Kommunikation mit dem PC ist möglich. - 12 2.4 Anordnung der Bedienelemente und Gehäusedesign Die Verteilung der Bedienelemente meines quaderförmigen Arcadecontrollers ist auf folgender Abbildung übersichtlich dargestellt: Die Gesamtlänge beträgt 73,5cm. Die Tiefe und die Höhe betragen jeweils 18,5 bzw. 10cm. Das Gehäuse wurde aus mindestens 1cm starkem Sperrholz angefertigt, um ein vernünftiges Gewicht und entsprechende Stabilität zu realisieren. Zur Verschönerung habe ich das Gehäuse mit silberner Metalleffektfolie überzogen und die Kanten mit Aluminiumwinkelprofilen verkleidet. 2.5 Vergleich mit im Handel erhältlichen Geräten In deutschen Geschäften werden wegen zu geringer Nachfrage fast keine Arcadecontroller angeboten. Lediglich für einige ältere Spielkonsolen existieren Einspielerboards mit einem Joystick und bis zu 6 Pushbuttons. Zweispielersysteme oder Boards für den Personalcomputer habe ich in Deutschland noch nicht gesehen. Ist die Anschaffung eines professionell hergestellten Controllers geplant, besteht fast nur die Möglichkeit, direkt in Amerika bzw. England über Internet zu bestellen. Drei verschiedene Systeme haben sich durchgesetzt. Die Arcadeboards HotRod, SlikStik bzw. X - Arcade unterscheiden sich im Preis, Anzahl der möglichen Spieler und im Design. Alle Systeme entsprechen, zumindest in der Zweispielerausführung, annähernd dem Funktionsumfang meines Controllers. Die Profigeräte verfügen über einen Mikrocontroller und eine spezielle Treibersoftware, welche die Kommunikation mit dem PC ermöglicht. Ein großer Nachteil dieser Systeme sind die hohen Kosten, welche ohne Versandgebühr zwischen $99,95 und $694,95 liegen. Bezugsquellen und Abbildungen der Boards können Anlage 7 entnommen werden. - 13 2.6 Materialbeschaffung Die meisten Probleme hatte ich bei der Beschaffung der Bedienelemente. 2 gebrauchte Joysticks und alle 8 runden Pushbuttons sowie diverse Kupferlitzen für die Verdrahtung der Bedienelemente konnte ich bei Ebay für 30 Euro ersteigern. Von einem Bekannten erhielt ich den 3. Joystick. Die fehlenden 9 Taster entstammen einem ausgemusterten Dart - Automat. Das Sperrholz für das Gehäuse hatte mein Vater übrig. Eine alte Cherry -Tastatur fand ich in meinem Schrank. Die elektrischen Bauteile für den Tastatursplitter, inklusive Gehäuse und LochrasterPlatine, kaufte ich bei Conrad Elektronik für etwa 15 Euro. Dazu kamen noch die selbstklebende Metalleffektfolie, die Aluminiumwinkelprofile und diverse Schrauben für 20 Euro. Somit beliefen sich meine Gesamtkosten auf ca. 65 Euro. 3 Die Interfaceschaltung Die ursprüngliche Schaltung von Stephan Hans stammt aus einer Zeit, in der an die serielle PS2 - Schnittstelle im PC noch nicht zu denken war. Damals wurde die Tastatur mit einem DIN - Stecker an den Computer angeschlossen. Ich zeichnete eine neue Schaltung mittels Electronic Workbench, um zwei der drei 5-poligen DIN - Buchsen gegen zwei 6-polige PS2 - Buchsen auszutauschen. Der eingesetzte IC (74HCT4053), aber auch die Schnittstellen waren im EWB nicht vorhanden. Dies machte eine Nachbearbeitung der Schaltung mit einem Grafikprogramm notwendig. - 14 3.1 Protokolle für die Datenübertragung zwischen PC und Tastatur Um die Funktion der Schaltung zu verstehen, müssen die Kommunikationsabläufe zwischen dem PC (Host) und der Tastatur bekannt sein. Bei der stattfindenden seriell bidirektionalen Datenübertragung werden zwei unterschiedliche Protokolle eingesetzt. Damit die Übertragung synchron läuft, ist eine separate Takt- bzw. CLOCK - Leitung notwendig. Das Taktsignal wird von der Tastatur generiert und hat üblicherweise eine Frequenz im Bereich von 20 - 30 kHz. Sende und Empfangsrichtung haben unterschiedliche Wertigkeiten. Die Senderichtung vom PC zur Tastatur wird bevorzugt. Deshalb können jederzeit Befehle vom PC an die Tastatur übertragen werden (auch wenn die Tastatur bereits sendet). Sendeprotokoll der Tastatur: Wie aus dem Bild ersichtlich, kann eine Tastatur nur Daten zum PC senden, wenn vorher sowohl die Leitungen DATA als auch CLOCK den Zustand High (=idle) angenommen haben. Bei jeder fallenden Flanke des CLOCK - Signals kann ein Bit des DATA - Signals ausgelesen werden. Das DATA - Signal besteht für einen zum PC übertragenen Scancode aus einem Startbit, 8 Datenbits, einem Paritätsbit und einem Stopbit. Wurde beispielsweise die Taste „a“ der Tastatur betätigt, wird der Scancode 1Chex (8 Datenbits: 00011100) übertragen. Empfangsprotokoll der Tastatur (PC sendet in Richtung Tastatur): Verwendung findet dieses Protokoll bei der Übertragung von Steuercodes, wie z.B. Aktivierung der NUM- bzw. CAPS LOCK - LED zur Tastatur. - 15 Um das gleichzeitige Senden von der Tastatur in PC - Richtung zu verhindern, muss zuerst für 60 Mikrosekunden die CLOCK - Leitung auf Low gesetzt werden. Nach Ablauf dieser Zeit werden ebenfalls die DATA - Leitung auf Low gezogen und das Taktsignal der Tastatur überlassen. Der Mikrocontroller in der Tastatur befindet sich durch diese Prozedur in Empfangsbereitschaft. Vom PC werden nun die 8 Datenbits, gefolgt von einem Paritätsbit, zur Tastatur übertragen. Nach Ablauf einer weiteren Taktperiode, bei der durch die Tastatur die DATA - Leitung auf High gesetzt wurde, sendet die Tastatur eine Bestätigung (Acknowledge) für den Empfang der neuen Daten, indem sie die DATA - Leitung für die nächste Taktflanke auf Low zieht. 3.2 Schaltungsanalyse Die Schaltung realisiert die gleichzeitige Anbindung von 2 Tastaturen am PC. Der Analog - Multiplexer - IC 4053N verbindet das Taktsignal einer Tastatur mit dem PC, um die Synchronisation der Kommunikationsabläufe zu gewährleisten. Die Schaltung besteht außerdem aus 2 NPN (BC548) bzw. PNP (BC558) Transistoren, welche im Schalterbetrieb eingesetzt werden. Um beide Transistoren einer Stufe zu verkoppeln, wird ein 2,2KOhm Widerstand verwendet. Über zwei aus jeweils einem 47kOhm Widerstand und einem 22nF - Kondensator bestehende RC - Glieder lassen sich in Kombination mit den beiden PNP - Transistoren die verwendeten internen Schalter Y und Z des Multiplexer - IC zurücksetzen. Um die Steuersignale (z.B. Aktivierung der NUM - LED) zur Bedientastatur zu übertragen, wird zusätzlich noch eine Diode vom Typ 1N4148 benötigt. Für die Verbindung der Schaltung mit PC, Arcadecontroller und Bedientatstatur habe ich zwei PS2- und eine 5-polige DIN - Buchse eingesetzt. Die Datenübertragung vom Arcadecontroller zum PC funktioniert wie folgt: Zum Verbindungsaufbau wird über die CLOCK - Leitung (PIN1) das Taktsignal an den Z - Eingang des IC (PIN4) gelegt. Dadurch wird im Schaltkreis der Eingang Z mit dem Ausgang Z0 verbunden und das Taktsignal liegt ebenfalls direkt an der PS2 Buchse (PIN5) des PC. Der Tastaturcontroller im PC registriert, dass ein Scancode zum PC übertragen werden soll. Jetzt wird entsprechend dem vereinbarten Protokoll bitweise und taktsynchron die DATA - Leitung über T3 abgefragt. Ist die DATA Leitung im High - Zustand, schaltet über den Widerstand R3 ebenfalls der Transistor T4 durch. Der bereits aufgeladene Kondensator C2 wird durch T4 kurzgeschlossen und die +5V Betriebsspannung fällt komplett über R4 ab. - 16 Weil der Rücksetzeingang B vom Y - Schalter (verantwortlich für das Weiterleiten des Taktes der Bedientastatur zum PC) des Multiplexers parallel zu R4 liegt, kann es nie vorkommen, dass beide Taktsignale gleichzeitig zum Takteingang vom PC gelangen und dadurch die synchrone Übertragung gefährden. Die Datenübertragung von der Bedientastatur zum PC funktioniert identisch. Allerdings wird für das Taktsignal der Y - Schalter im Multiplexer verwendet. Die Steuerung des Rücksetzeingangs C vom Z - Schalter wird von T2, C1 und R2 realisiert. 3.3 Das Layout der Lochrasterplatine Das Layout der Lochrasterplatine wurde mit der Software Lochmaster erstellt. Lochrasterplatine Bestückungsseite Lochrasterplatine Lötseite - 17 3.4 Bestückung der Platine Bevor ich mit der Bestückung der Tastatursplitterplatine beginnen konnte, hatte ich sie auf die benötigten Maße (74mm x 41mm) zugesägt und mit 4 Bohrungen für den Einbau ins Gehäuse versehen. Im zweiten Schritt wurden alle Bauteile der Bestückungsliste, dem Layoutplan entsprechend, auf die Platine gesetzt und aufgelötet. Wie man dem Layout entnehmen kann, musste ich ebenfalls auf der Bestückungsseite diverse Brücken realisieren. Dazu verwendete ich dünnen isolierten Draht. Dieser wurde durch Zinn auf der Lötseite der Platine befestigt. Im letzten Schritt habe ich alle Bauteile und Brücken mittels Blankdraht und Zinn auf der Lötseite elektrisch leitend verbunden. Bestückungsliste: Widerstand R1/R3 , 2,2k Widerstand R2/R4 , 47k Kondensator C1/C2 , 22nF Transistor T1/T3, BC548 (NPN) Transistor T2/T4, BC558 (PNP) Diode D1, 1N4148 Schaltkreis IC1, CD4053BE Schaltkreisfassung DIL16, IC - Fassung 2 x PS2 - Buchse (6-polig, Mini - DIN geschirmt) 1 x DIN - Buchse (5-polig) Platine: RM 2,54 mm Punktraster 74mm x 41mm 3.5 Erste Funktionstests, Fehlersuche und Problembeseitigung Die ersten Funktionstests der Schaltung führte ich mit einem älteren PC und 2 Standardtastaturen durch. Vor den Versuchen war es notwendig, ein PS2 - Kabel für die Anbindung des Splitters an den PC zu fertigen. Ich verwendete ein kurzes Stück geschirmtes Signalkabel und 2 PS2 - Stecker: Steckverbinder Mini - DIN (6-polig) 1 DATA 2 nicht belegt 3 Ground 4+ 5 V 5 CLOCK 6 nicht belegt - 18 Mit diesem Kabel stellte ich nun die Verbindung zwischen PC und Splitter her. Beide Tastaturen wurden an den Splitter angeschlossen und der PC eingeschaltet. Der erste Test verlief negativ. Mein PC ließ sich nicht starten. Stattdessen erhielt ich eine BIOS - Fehlermeldung. Es wurde auf ein Problem des Tastaturcontrollers hingewiesen. Nach Überprüfung meiner Schaltung mit dem original Schaltplan von Stephan Hans konnte ich den Fehler eingrenzen. Herr Hans hatte statt DIN - Buchsen äquivalente Stecker im Schaltplan eingezeichnet. Weil im Internet auf den Fotos zu seiner Beispielschaltung allerdings Buchsen zu sehen waren, verwendete ich die Pinbelegung einer 5-poligen DIN - Buchse für mein Schaltungslayout bzw. für die Umsetzung DIN auf PS2. Dadurch waren alle 3 Schnittstellen in meinem Layout falsch angeschlossen. Um den Änderungsaufwand der neuen Schaltung gering zu halten, wurde auf der Platine nur die PS2 - Buchse für die Bedientastatur umgelötet. Die Anpassung für die Schnittstellen zum Arcadecontroller und zum PC hatte ich im jeweiligen Stecker der Anbindungskabel ebenfalls durch Umlöten realisiert. Mein zweiter Funktionstest war erfolgreich. Der PC hat vollständig gebootet. In einem Editorfenster konnte ich die fehlerfreie Funktionalität der Platine feststellen. Unabhängig von der verwendeten Tastatur wurde jedes Zeichen zum PC übertragen und auf dem Monitor ausgegeben. 3.6 Einbau ins Gehäuse Zuerst setzte ich die Platine in das untere Gehäuseteil und markierte die benötigten Aussparungen für die Buchsen mit einem Bleistift auf dem Gehäuse. Anschließend wurde das Gehäuse mittels Säge und Feile entsprechend bearbeitet, die Platine in das Gehäuseunterteil geschraubt und das Gehäuse geschlossen. Die Aussparungen bzw. die Montage der Platine sind auf folgenden Fotos gut erkennbar: - 19 4 „Tastaturhack“ bzw. „Tastaturreversing“ Auf die Begriffe bin ich während meiner Recherchen für die Projektarbeit im Internet gestoßen. Beide Formulierungen haben die gleiche Bedeutung. Der Tastatur wird durch komplette Demontage die Aufgabe entzogen, über normale Tastenbetätigungen mit dem PC zu kommunizieren. Man verwendet nur die in der Tastatur eingebaute kleine Platine, auf der sich der Tastaturprozessor befindet, um eine Kommunikation zwischen Hardware (z.B. Arcadecontroller) und PC zu erreichen. Ich habe für mein Projekt ebenfalls eine komplette Tastatur zerlegt. Die Platine mit dem Tastaturprozessor ist die „Schaltzentrale“ in meinem Arcadecontroller. Ein weiteres wichtiges Hauptziel beim Tastaturhack ist das Ermitteln der im Prozessor eingebauten Matrix - Logik. Diese ist herstellerabhängig und für fast jede Tastatur unterschiedlich. 4.1 Logik des Tastaturprozessors und Ghost - Key - Problem Der Tastaturprozessor verwendet eine Matrixschaltung zur Bestimmung des Scancode nach einer Tastenbetätigung. Unter dem Begriff Matrix versteht man in diesem Zusammenhang, dass jeweils eine ganze Reihe bzw. eine Spalte der Tastatur auf einen Anschlusspin des Tastaturprozessors geführt sind. Durch die Betätigung einer Taste verbindet man nun die jeweilige Reihe mit der dazugehörenden Spalte. Eine eindeutige Zuordnung der Taste wird dadurch möglich. Das Foto zeigt die von mir eingesetzte Platine. Die blau markierten Pins entsprechen den Matrixzeilen 1 - 18. Die rot markierten Pins verbinden die Matrixspalten 1 - 8 mit dem Tastaturprozessor. Somit ist auf dieser Platine eine 18 x 8 - Matrix realisiert. Wie ursprünglich die 102 Tasten des Keyboards auf der Matrix verteilt waren, kann der Anlage 2 entnommen werden. Jeder im Arcadecontroller eingebaute Mikroschalter wurde mit einem Reihenpin und einem Spaltenpin der Platine verbunden. Durch Betätigung eines Joysticks oder Pushbutton wird mindestens ein Mikroschalter geschlossen und der entsprechende Scancode generiert. - 20 Wenn die 29 Mikroschalter wahllos auf der Matrix verteilt werden, funktioniert das Arcadeboard definitiv nicht. Es wäre möglich 3, 4 oder vielleicht auch 6 Scancode gleichzeitig zum PC zu übertragen. Mit 6 Signalen ist aber kein 2 - Spielermodus realisierbar. Geht man von 6 gleichzeitigen Signalen aus, könnten 2 Spieler bei diagonaler Bewegung des jeweiligen Joysticks maximal noch jeweils 1 Pushbutton betätigen. Eine Joystickdiagonalbewegung schließt, mechanisch bedingt, immer 2 Schalter. Die meisten Automatenspiele verlangen aber pro Spieler mindestens 4 bis 6 Pushbutton. Ursache für die beschriebene Begrenzung ist die im Tastaturprozessor integrierte Logik, welche zur Abfrage der Tastaturmatrix verwendet wird. Man spricht allgemein vom Ghost - Key - Problem. Die Abtastlogik des Tastaturprozessors lässt sich wie folgt definieren: Bilden die 3 bereits gedrückten Tasten auf der Matrix 3 Eckpunkte eines Rechtecks, kann keine Taste unter, im bzw. über dem Rechteck vom Controller ausgewertet werden. Ein Ghost - Key - Signal wird vom Prozessor generiert und zum PC übertragen. Das gleichzeitige Betätigen der Tasten H, 7 und 0 auf der von mir ermittelten Matrix hat beispielsweise zur Folge, dass alle weiteren Tasten, welche durch die Matrixspalten 1 - 3 und die Matrixzeilen 1 - 18 abgebildet sind, vom Tastaturprozessor nicht ausgewertet werden können. Somit wird nur durch gezieltes, logisches Verteilen aller benötigten Mikroschalter auf der Tastaturmatrix die Anbindung des Arcadecontrollers über den Tastaturprozessor ohne Einschränkungen möglich. 4.2 Erstellung eines Tastenkontaktplanes Um die in Anlage 2 abgebildete und in meiner ursprünglichen Tastatur verwendete Matrix zu erhalten, musste ich für jede Taste die benötigte Pinkombination an der Tastaturprozessorplatine ermitteln. Innerhalb der Tastatur wurden alle Stromkreise über eine mit vielen Leiterbahnen versehene Kunststofffolie an die Prozessorplatine herangeführt. Diese Folie besteht aus einem oberen und einem unteren Teil, welche durch eine mit Kontaktlöchern versehene Metallplatte voneinander getrennt sind. Jede Tastenbetätigung stellt eine elektrisch leitende Verbindung zwischen dem oberen und dem unteren Folienkontakt her. Die Pinkombinationen aller Tasten wurde mittels Durchgangsprüfung zwischen den Foliekontakten und den Platinenpins bestimmt. Als Messgerät verwendete ich ein Digitalmultimeter mit akustischer Durchgangsprüfung. Die Ergebnisse sind im Tastenkontaktplan (Anlage 1) dokumentiert (u = unterer Folienkontakt; o = oberer Folienkontakt). - 21 4.3 Entwicklung der Tastaturmatrix Mit dem Tastenkontaktplan war es mir nun möglich, die komplette Tastaturmatrix zu erstellen. Ich entwickelte eine Tabelle mit 18 Zeilen und 8 Spalten. Die Zeilen und Spalten repräsentieren jeweils die oberen bzw. unteren Folienkontakte. In die Tabelle wurden alle Tasten übertragen. Anlage 2 enthält die vollständige Tastaturmatrix. 4.4 Verteilung der Controllerfunktionen auf der Matrix Um eine möglichst hohe Kompatibilität des Arcadecontrollers mit vielen Programmen zu erreichen, musste ich einige Regeln bei der Verteilung meiner Mikroschalter auf der Tastaturmatrix beachten. Alle Windows - Funktionstasten, wie z.B. Alt, AltGr, Windows li./re., Menü usw., aber auch die NUMPAD - Tasten wurden nicht vergeben. Ich habe diese Tasten in der Anlage 3 schwarz umrahmt. Niemals eintretende Fälle, wie z.B. gleichzeitig „Joy left“ und „Joy right“ oder gleichzeitig „Joy up“ und „Joy down“ konnten auf einer Matrixzeile abgebildet werden. Der Frontstick wird nie in Verbindung mit einem der beiden anderen Joysticks verwendet. Aus diesem Grund befinden sich die Funktionen „Front Joy up“ und „Front Joy down“ neben den Funktionen „P1 Joy up“ und „P1 Joy down“ in der Matrixzeile 2. Die Zusatzbuttons und Flippertasten werden im Joystickbetrieb nicht benötigt, haben somit keinen Einfluss auf das Ghost - Key - Problem und können dadurch wahllos auf der Matrix verteilt werden. Die 12 Aktionstasten für den 2 - Spieler - Betrieb befinden sich in keiner Matrixzeile mit Joystickfunktionalität. Leider bin ich wegen dieser vielen Regeln an die Grenzen meiner Tastaturmatrix gestoßen. Die Button 5 und 6 beider Spieler könnten im 2 - Spieler - Modus Probleme bereiten, da für alle 4 Tasten nur noch 2 Matrixzeilen zur Verfügung standen. Weil diese Tasten allerdings sehr selten gleichzeitig betätigt werden, wird man kaum Fehler feststellen. Die komplette Verteilung aller Mikroschalter auf meiner Matrix kann Anlage 3 entnommen werden. - 22 5 Bau des Controllers In diesem Teil der Projektarbeit möchte ich kurz die Anfertigung und Montagereihenfolge meines Arcadecontrollers darlegen. Auf die Ausführung handwerklicher Tätigkeiten, wie z.B. Bohren, Sägen, Kleben und Verschrauben, wird nicht genauer eingegangen. 5.1 Das Gehäuse Für das Grundgehäuse sägte ich 1cm dickes Sperrholz auf die in der Anlage 4 dokumentierten Maße zu. Nach dem Entgraten der Kanten wurden in alle Teile die benötigten Bohrungen eingebracht. Um die eckigen Pushbutton im Gehäuse zu versenken, mussten die entsprechenden kreisrunden Bohrungen mit einer Feile zu quadratischen Aussparungen gearbeitet werden. Anschließend habe ich alle Teile miteinander verklebt bzw. verschraubt und das entstandene Gehäuse von innen dunkelschwarz lackiert. Zum Schluss wurden die Außenseiten mit selbstklebender Metalleffektfolie überzogen und die Controllerkanten durch Aluminiumprofile verkleidet. Die Unterseite des Controllergehäuses bleibt offen, um defekte Mikroschalter problemlos wechseln zu können. 5.2 Montage der Joysticks und Pushbutton Nach der Gehäusemontage wurden alle 18 Bedienelemente an den vorgesehenen Stellen ins Gehäuse eingesetzt. Jeder Joystick ist mit 4 Schrauben befestigt. Alle Pushbutton besitzen ein Gewinde und werden von einer passenden Kunststoffmutter im Gehäuse gehalten. 5.3 Montage der Tastaturprozessorplatine Für die Montage der Tastaturprozessorplatine verwendete ich einen 4cm breiten und einen 52,5cm langen Sperrholzstreifen. Zuerst befestigte ich 3 Schraubklemmleisten (jeweils 12 Klemmen) mittig auf diesem Streifen. Im zweiten Schritt lötete ich an jeden benötigten PIN der Prozessorplatine einen ausreichend langen Draht. Anschließend montierte ich die Platine mit Kunststoffabstandshaltern ebenfalls auf dem Holzstreifen. Nach dem Ausrichten und Abbinden der Drähte wurde jeweils ein Draht in eine Klemme gelegt und eingeschraubt. Zum Schluss befestigte ich den Sperrholzstreifen an der inneren Gehäuserückseite (siehe Abbildung Seite 6, rechts unten). - 23 5.4 Herstellung der elektrischen Verbindungen Jede Klemme, auf dem im Gehäuse montierten Sperrholzstreifen, hat eine elektrisch leitende Verbindung zu einem PIN der Tastaturprozessorplatine. Ein Mikroschalter besitzt immer mindestens 2 Anschlussmöglichkeiten. Ist ein 3. Kontakt vorhanden, handelt es sich um einen Wechselschalter. In meinen Controller wurden nur Wechsler eingebaut. Ich musste bei der Verdrahtung darauf achten, immer die beiden Schließerkontakte mit den jeweils benötigten Schraubklemmen zu verbinden. Für die elektrische Verdrahtung nutzte ich verschiedenfarbige Kupferlitzen. Für die Mikroschalterkontakte presste ich passende Kabelschuhe und für die Schraubklemmen entsprechende Aderendhülsen auf die Litze. Um beispielsweise den COIN - Button (Geldeinwurf = Taste „4“) mit dem Tastaturprozessor zu verbinden, verwendete ich die Schraubklemmen für die Matrix - Zeile 2 und die Matrix - Spalte 3. Alle anderen Schalter wurden ebenfalls entsprechend der Anlage 3 verdrahtet. Das bereits während der Gehäusemontage in den Controller eingeführte Anschlusskabel wurde auf die Prozessorplatine gesteckt und mit einer Kunststoffschelle auf den Sperrholzstreifen geschraubt. 5.5 Testen aller gewünschten Funktionalitäten Nach der kompletten Montage stellte ich erneut die Verbindungen zwischen Arcadecontroller und PC über den Tastatursplitter her und schrieb für den Arcadeemulator MAME das benötigte „Freestyler“ - Konfigurationsfile (Anlage 5). Ich verwendete meinen Controller bei mehreren Automatenspielen im Einspielermodus. Dabei traten keinerlei Probleme auf. Bei dem Zweispielertest unterstützte mich meine Frau. Auch hier funktionierte der Controller zu meiner vollsten Zufriedenheit. Die Funktion der Flippertasten kontrollierte ich mit der Emulationssoftware PINMAME (Foto Seite 7). Weitere Emulationsprogramme, wie z.B. Winkawaks, Neorage und Zinc, laufen ebenfalls problemlos mit meinem Arcadecontroller. Prinzipiell kann ich den Controller für jede PC - Software benutzen, bei der eine digitale Steuerung benötigt wird. - 24 Anlage 1 Der komplette Tastenkontaktplan - 25 Anlage 2 Tastenverteilung auf der 18 Zeilen x 8 Spalten - Matrix - 26 Anlage 3 Mikroschalterzuordnung auf der Tastaturmatrix - 27 Anlage 4 Übersicht der benötigten Gehäuseteile Alle Zeichnungen wurden im Maßstab 1:5 erstellt. Die Maßangaben entsprechen der Maßeinheit cm. 4,5 8,5 9,5 18,0 2,5 Oberteil 10,5 17,5 21,5 26,5 31,5 46,0 53,0 57,0 62,0 67,0 73,0 2,5 3,0 4,0 5,0 10,0 3,5 Vorderseite 20,0 25,0 30,0 37,0 50,0 55,5 60,5 65,5 73,0 10,0 Rückseite 73,0 9,0 9,0 2,5 2,5 Rechtes Seitenteil Linkes Seitenteil 3,0 3,0 16,0 16,0 - 28 Anlage 5 Auszug aus dem „Freestyler“ - Konfigurationsfile für MAME (die Datei muss ins Mame - Unterverzeichnis: „ctrlr“, z.B. G:\MamePlus0.88\ctrlr\Rene.cfg) <mameconfig version="10"> <system name="default"> <!-Freestyler input customization file Revision 1.0 - 26/01/2005 Rene Stritzke --> <input> <port type="START1"> <newseq type="standard">KEYCODE_1 OR JOYCODE_1_START</newseq> </port> <port type="START2"> <newseq type="standard">KEYCODE_2 OR JOYCODE_2_START</newseq> </port> <port type="COIN1"> <newseq type="standard">KEYCODE_4 OR JOYCODE_1_SELECT</newseq> </port> <port type="P1_JOYSTICK_UP"> <newseq type="standard">KEYCODE_G OR KEYCODE_V OR JOYCODE_1_UP</newseq> </port> <port type="P1_JOYSTICK_DOWN"> <newseq type="standard">KEYCODE_B OR KEYCODE_T OR JOYCODE_1_DOWN</newseq> </port> <port type="P1_JOYSTICK_LEFT"> <newseq type="standard">KEYCODE_C OR KEYCODE_X OR JOYCODE_1_LEFT</newseq> </port> <port type="P1_JOYSTICK_RIGHT"> <newseq type="standard">KEYCODE_D OR KEYCODE_W OR JOYCODE_1_RIGHT</newseq> </port> <port type="P1_BUTTON1"> <newseq type="standard">KEYCODE_O OR JOYCODE_1_BUTTON1 OR MOUSECODE_1_BUTTON1</newseq> </port> <port type="P1_BUTTON2"> <newseq type="standard">KEYCODE_P OR JOYCODE_1_BUTTON2 OR MOUSECODE_1_BUTTON3</newseq> </port> <port type="P1_BUTTON3"> <newseq type="standard">KEYCODE_UP OR JOYCODE_1_BUTTON3 OR MOUSECODE_1_BUTTON2</newseq> </port> - 29 <port type="P1_BUTTON4"> <newseq type="standard">KEYCODE_RIGHT OR JOYCODE_1_BUTTON4</newseq> </port> <port type="P1_BUTTON5"> <newseq type="standard">KEYCODE_RSHIFT OR JOYCODE_1_BUTTON5</newseq> </port> <port type="P1_BUTTON6"> <newseq type="standard">KEYCODE_RCONTROL OR JOYCODE_1_BUTTON6</newseq> </port> <port type="P2_JOYSTICK_UP"> <newseq type="standard">KEYCODE_Y OR JOYCODE_2_UP</newseq> </port> <port type="P2_JOYSTICK_DOWN"> <newseq type="standard">KEYCODE_F OR JOYCODE_2_DOWN</newseq> </port> <port type="P2_JOYSTICK_LEFT"> <newseq type="standard">KEYCODE_H OR JOYCODE_2_LEFT</newseq> </port> <port type="P2_JOYSTICK_RIGHT"> <newseq type="standard">KEYCODE_N OR JOYCODE_2_RIGHT</newseq> </port> <port type="P2_BUTTON1"> <newseq type="standard">KEYCODE_K OR JOYCODE_2_BUTTON1</newseq> </port> <port type="P2_BUTTON2"> <newseq type="standard">KEYCODE_BACKSPACE OR JOYCODE_2_BUTTON2</newseq> </port> <port type="P2_BUTTON3"> <newseq type="standard">KEYCODE_DOWN OR JOYCODE_2_BUTTON3</newseq> </port> <port type="P2_BUTTON4"> <newseq type="standard">KEYCODE_PGDN OR JOYCODE_2_BUTTON4</newseq> </port> <port type="P2_BUTTON5"> <newseq type="standard">KEYCODE_LSHIFT OR JOYCODE_2_BUTTON5</newseq> </port> <port type="P2_BUTTON6"> <newseq type="standard">KEYCODE_RCONTROL OR JOYCODE_2_BUTTON6</newseq> </port> </input> </system> </mameconfig> - 30 Anlage 6 Kleines Arcade - ABC Die folgenden Fachbegriffe findet man oft in diversen Internetforen bzw. auf Internetseiten, welche sich mit der Thematik Arcade- und Videospielautomaten beschäftigen. Arcade Begriff entstammt dem Wortschatz der amerikanischen Jugend aus den 80er Jahren; mit Arcade wurden nicht nur die Videospiele, sondern auch die Spielhallen selbst bezeichnet PCB „Printed Circuit Board“ ist vergleichbar mit einem PC Mainboard; auf dem Board befindet sich das eigentliche Spiel und fast alle für diese Software notwendigen Bauteile (CPU, Eproms, Grafikund Soundchips), PCB ==> Herzstück eines jeden Automaten Jamma "Japanese Arcade Maschine Manufacturer"; ebenfalls in den 80er Jahren haben sich die japanischen Automatenhersteller zusammengeschlossen, um einen gemeinsamen Standard (2x 28 pin JAMMA - Anschluss) für die Anschlussbelegung der Automaten zu vereinbaren Marqee Einschubreklame am Kopf des Automatengehäuses Sideart Bedruckte Folie zur Verschönerung der Automatengehäuseseiten Cabinet Fachbegriff für das Automatengehäuse Upright / Begriffe für die Automatenbauart; Upright sind die typischen Cocktail aufrecht stehenden Automaten; an Cocktailautomaten können bis zu 4 Spieler um den Automaten sitzen und die Bildschirmdarstellung kann im 90°-Winkel wechseln - 31 MAME Software, welche aktuell in der Lage ist, über 5000 Videoautomaten durch Prozessoremulation nachzubilden; entwickelt wurde das Programm von einem Studenten; es existiert eine Vielzahl von Internetseiten, welche sich mit diesem Emulator beschäftigen. Manufacturer Hersteller der Automaten, SEGA, KONAMI, IREM, JALECO, BALLY und WILLIAMS zählen auch heute noch zu den bekanntesten; WILLIAMS und BALLY haben neben Videospielautomaten auch noch viele Flipper produziert. Man könnte an dieser Stelle noch viele weitere Erklärungen dokumentieren, dies würde aber den Rahmen der Projektarbeit sprengen. - 32 Anlage 7 Professionelle Alternativen 1. HotRod http://www.hanaho.com/products/HotRodJoystick Preis $99,95 2. SlikStik http://www.slikstik.com/ Preise zwischen $169,95 und $694,95 Dollar 3. X - Arcade http://www.x-arcade.com/ Preise zwischen $99.95 - $149.95 - 33 - Literaturverzeichnis Es wurden keinerlei Zeitschriften bzw. Bücher für die Erarbeitung der Projektarbeit verwendet. Alle Quellen sind im Internet unter folgenden HTML-Links zu finden: Thematik „Tastatursplitter“ http://home.t-online.de/home/stephan.hans/tricks.htm http://www.st-hans.de/ Thematik „Funktion der Tastatur“ http://shop.tastaturkoenig.de/informationen/wie-funktioniert-eine-tastatur/ http://www4.informatik.uni-erlangen.de/Lehre/WS03/V_BS/oostubs/web/aufgaben/aufgabe1/tastatur.shtml http://homepages.fh-regensburg.de/~grf39054/praktika/sas.doc Thematik „Tastatur- bzw. Keyboardhack“ http://www.mameworld.net/emuadvice/keyhack2.html http://emulated.emusanet.com/kbhack.htm Thematik „Arcadecontroller“ http://www.arcadecontrols.com/arcade.htm http://www.arcadecontrols.com/arcade_examples.php http://www.arcadecontrols.com/arcade_joyofjoys.htm http://www.retrogame.de/ Thematik „Mame, Emulation“ http://www.mame.net/ http://www.mame.net/screenshotsNEW.html http://www.mame.net/mamefaqgerman.html http://www.classicgaming.com/mame32qa/ http://www.classicgaming.com/mame32qa/down.htm http://mame.emu-zone.org/ http://advancemame.sourceforge.net/menu-snapshot.html http://advancemame.sourceforge.net/menu-snapshot.html http://www.arcademania.de/Arcademania/s.allgemein.html http://www.emu-alliance.com/index.php/emulators/mame http://www.emustation.de/ http://www.klov.com/index.php - 34 - Selbstständigkeitserklärung Ich versichere, dass ich die vorliegende Arbeit selbstständig verfasst habe. Es wurden keine anderen Quellen als die angegebenen verwendet. ................................................ (XXXXXXXXXXX)