Tag Archives: MAME

Projekt: Raspberry Pi – Gameboy

RaspiGB-Intro

Original und Raspberry Pi-Gameboy

Heute stelle ich Euch mein neues Projekt vor: den Umbau eines klassischen Gameboys zu einer ultimativen Retro-Game-Konsole mithilfe der Raspberry Pi.

01-Intro

Vorwort

Raspberry Pi Modell B

Raspberry Pi Modell B

Die Raspberry Pi eignet sich als Einplatinen-Minicomputer für eine Vielzahl Anwendungszwecke, sei es als Mediacenter, Web- oder Cloudserver, für die Hausautomatisierung oder dank seiner freiprogrammierbaren GPIO-Schnittstelle für eine Vielzahl weiterer Projekte. Auch ich zähle mich zu den begeisterten Raspberry Pi-Fans und setze meine Raspberry zuhause primär als Mediencenter (Raspbmc) ein. Mehr zur Raspberry Pi auch unter http://raspberrypiguide.de.

Vor einiger Zeit entdeckte ich einen interessanten Artikel über eine auf Raspbian basierenden Distribution namens Retropie, welche eine Vielzahl Emulatoren unter einem grafischen Frontend zusammenfasst. Die Umsetzung ist sehr gut, die Zahl der emulierbaren Systeme beachtlich, hier eine Auswahl (Version 1.9):

Amiga, Apple (II/Mactintosh), Armstrad CPC, Arcade, Atari (800/2600/ST/STE/TT/Falcon), C64, Game Boy (Classic/Advance/Color), Game Gear, MAME, NeoGeo, Sega (Master System/Megadrive/Genesis/Mega-CD/Sega 32X), Nintendo Entertainment System (NES), N64, PC Engine, Playstation 1, ScummVM, Super Nintendo Entertainment System (SNES), Sinclair ZX Spectrum, PC/x86, Z Machine.

Später, genauer im Juli 2014 entdeckte ich ein Posting auf Facebook, was mich auf Anhieb begeisterte: Jemand hatte einen alten Gameboy mittels einer Raspberry Pi und einem 3,5″ LCD-Display umgebaut und mittels Retropie in einen „Super Pi Boy“ verwandelt.

Dieses Projekt inspirierte mich, das wollte ich auch! Die Idee zu meinem Vorhaben war also geboren, an dieser Stelle vielen Dank an „microbyter“ und seinen tollen Umbau, welchen er unter http://superpiboy.wordpress.com dokumentiert hat.

 I. Vorarbeiten

Zunächst ging es an die Planung: Welche Features sollte mein Umbau haben, was sollte gegenüber dem „Super Pi Boy“ verbessert werden? Ich entschied mich für nachfolgende Optimierungen:

  • 4 Buttons auf der Rückseite (statt 2), um mehr Bedienelemente nutzen zu können
  • Seitlicher Knopf zum Beenden der Emulation und Rückkehr zum Hauptmenü
  • Verschraubung des Gehäuses, Verbindung möglichst ohne Klebeband
  • Frontabdeckung für Display (Schutz des LCDs vor Verschmutzung)

Was wird benötigt?

Anschließend ging es an die Beschaffung der Einzelteile, die Liste hat sich im Verlauf des Umbaus mehrfach geändert, deshalb hier die finale Zusammenstellung. Bezugsquellen habe ich beigefügt, wo es möglich war:

Optionale Komponenten:

II. Versuchsaufbau & Ansteuerung GPIO

Eines der ersten Probleme, die zu lösen waren, war die Steuerung. Retropie mittels Tastatur zu bedienen, war ja kein Problem – doch wie lassen sich Steuerkreuz und Drucktaster des Gameboys für die Steuerung verwenden?

Hierzu bietet sich die GPIO-Schnittstelle an, eine gute Anleitung fand ich unter https://learn.adafruit.com/retro-gaming-with-raspberry-pi. Ein kleines C-Programm (Adafruit-Retrogame) setzt die Informationen der abgefragten GPIO-Pins (Taste gedrückt?) in entsprechend konfigurierte Tastaturbefehle um. Die entsprechenden Tastaturbefehle lassen sich im Retropie-Frontend konfigurieren.

Als die ersten Teile eingetroffen waren und ich noch auf Post von Übersee warten musste, ging es an einen ersten Versuchsaufbau, um genau dieses zu testen und die Softwareumsetzung zu realisieren.

Ein altes USB-Gamepad (Logitech Wingman) sollte als Versuchs-Gamepad herhalten, im Prinzip benötigte ich nur die Platine (PCB, printed circuit board) und das Gehäuse mit den Tasten. Also fix den IC ausgelötet

01-Versuchsaufbau Ansteuerung GPIO mit Logitech Wingman

und einzelne Drähte mit den Kontaktpunkten verlötet.

02-Versuchsaufbau Ansteuerung GPIO mit Logitech Wingman

03-Versuchsaufbau Ansteuerung GPIO mit Logitech Wingman

Die Drähte müssen vor dem Zusammenbau entsprechend beschriftet werden, um sie später korrekt anzuschließen. Anschließend erfolgte der Zusammenbau, die einzelnen Drähte habe ich mit einer Experimentierplatine verbunden und jede Taste auf Funktion überprüft. Hierzu kann z.B. eine Widerstandsmessung mittels einem Multimeter vorgenommen werden (unbetätigt = ∞ unendlich großer Widerstand, z.B. Anzeige einer „1“ auf der linken Seite des Displays / betätigt = < ∞ kleiner unendlich).

04-Versuchsaufbau Ansteuerung GPIO mit Logitech Wingman

Hierzu muss man verstehen, was ein Tastendruck eigentlich auf der Platine bewirkt. Die druckempfindlichen Bereiche sind nichts anderes als Schalter, die bei Betätigung geschlossen werden. Jeder Schalter hat seinen eigenen Verbindungsdraht (+), aber alle Schalter eine gemeinsame Masse (common ground, -). Nimmt man nun eine Widerstandsmessung zwischen Masse und z.B. Schalter „A“ vor, ist der Messwert zunächst unendlich groß. Betätigt man nun den A-Knopf, verringert sich der Messwert (kleiner unendlich) – der Schalter ist geschlossen.

Die Verbindung der Experimentierplatine mit den GPIO-Pins der Raspberry PI habe ich mittels Jumperkabeln (männlich/weiblich) vorgenommen, diese lassen sich bequem ohne Löten umstecken.

Zur Planung der Belegung der einzelnen GPIO-Pins habe ich mich an nachfolgender Pinbelegung (gültig für Raspberry Pi Modell B) orientiert:

raspberry-pi-rev2-gpio-pinout

Nun mussten die GPIO-Pins mit den einzelnen Schaltern verbunden werden, dies habe ich zunächst auf dem Papier geplant und anschließend mittels der Jumperkabel umgesetzt.

05-Versuchsaufbau Ansteuerung GPIO mit Logitech Wingman

Wie man sieht, reichten die Tasten das Gamepads nicht ganz – hier musste ich mir mit zwei Drucktastern (für Select + Start) sowie zwei weiteren Tastern aus einem Experimentierset (für die Schultertasten LI/RE) behelfen.

Nun konnte ich die Software und dessen Konfiguration entsprechend anpassen, auf den Einbau des Kitsch Bent PCB sowie der Drucktaster vorbereiten und einen finalen Anschlussplan erstellen, auf diesen komme ich später noch einmal zurück.

2014-08-03-Belegungsmatrix Planung fuer PCB

Finaler Anschlussplan / Belegungsmatrix für Kitsch Bent PCB + Taster

III. Demontage Gameboy

Zur Demontage des Gehäuses wird ein spezieller „Triwing“-Schraubendreher verwendet, welchen ich oben in der Materialliste aufgeführt habe. Nach dem Öffnen des Gehäuses ist zu beachten, das Ober- und Unterseite mit einem Flachbandkabel verbunden sind, welches vorsichtig herausgezogen werden kann.

Da von dem Gameboy selbst „nur“ das Gehäuse, Batteriefachabdeckung sowie Bedienelemente benötigt werden, können die elektrischen Komponenten, sofern noch funktionsfähig, einfach ausgebaut und als Ersatzteile für die Reparatur eines ggf. weiteren Gameboy aufbewahrt werden.

IV. Bearbeitung des Gehäuses

Nach einer Grundreinigung der Gehäuseteile und Bedienelemente ging es an die Bearbeitung. Hierzu eignet sich ein Dremel sehr gut, ich empfehle ein Sägewerkzeug sowie zwei Fräser, insbesondere zur stirnseitigen Bearbeitung. Wer noch nie mit dem Dremel gearbeitet hat, sollte zuvor ein wenig üben – gerade bei Kunststoffen ist schnell etwas zuviel Material entfernt.

Ich habe zuvor die Teile vermessen und Handskizzen erstellt, um so wenig Material wie möglich zu entfernen – dennoch muss gerade an der Unterseite der gesamte Batteriekasten einschließlich der Verrippung entfernt werden, stirnseitig habe ich eine kleine Bohrung für den Anschluss des Netzteils vorgesehen. An der Oberseite ist ein vergrößerter Ausschnitt für das Display erforderlich, sowie eine kleine Aussparung für den Lautsprecher.

Beim Batteriefach-Deckel sind 4 Bohrungen ø12,7 mm erforderlich sowie minimale Materialabtragung um die Bohrungen herum, um die Verschraubung der Taster zu ermöglichen. Hier sieht man das finale Ergebnis (oder was davon übrig geblieben ist):

01-Bearbeitung GehaeuseDie verbliebenen Öffnungen habe ich mittels kleiner Kunststoffzuschnitte und Sekundenkleber verschlossen.

Zur Befestigung habe ich zwei kleine Laschen mit kleinen Muttern M3 angeklebt, um beide Gehäusehälften miteinander verschrauben zu können, da sämtliche der früheren Befestigungspunkte bedingt durch die beengten Platzverhältnisse weichen mussten.

 V. Lötarbeiten und Verkabelung – Steuerung + GPIO

Nach dem Eintreffen des Kitsch Bent Common Ground DMG Control Panels ging es nun daran, die geplante Verkabelung der Steuerung in die Realität umzusetzen. Hierzu greife ich noch einmal meine Belegungsmatrix auf:

Finaler Anschlussplan / Belegungsmatrix für Kitsch Bent PCB + Taster

Finaler Anschlussplan / Belegungsmatrix für Kitsch Bent PCB + Taster

Zunächst führte ich die Lötarbeiten an den Drucktastern durch:

01-Steuerung Anschließend die Anbindung des Kitsch Bent PCBs:

02-Steuerung

03-Steuerung

 

Als zusätzlichen Schalter für die ESCAPE-Sequenz (Abbruch der Emulation und Rückkehr ins Frontpanel) band ich noch einen kleinen Drucktaster an den noch freien Pin 26 / GPIO 7 an und setzte dessen Masse auf Pin 14. Mit ein wenig Sekundenkleber und Heisskleber fixiert passt dieser ideal in die Öffnung des früheren Gameboy-Netzteilanschlusses:

04-Steuerung

VI. Lötarbeiten und Verkabelung – Stromversorgung + Sound

Die Stromversorgung gestaltete sich ein wenig schwieriger als zunächst gedacht. Ich wollte diese zunächst wie beim „Super Pi Boy“ mittels einer 5V-Micro-USB-Schnittstelle lösen, musste dieses Vorhaben aber letztendlich aufgeben (siehe Abschnitt LCD-Display) und mich primär auf die 12V-Schiene beschränken. Um die 5V-Komponenten wie Raspberry Pi und Audio-Verstärker zu versorgen, entschied ich mich für den Einbau eines LM2596 Schaltreglermoduls.

a) LCD-Display

Nachdem ich das Taotronics LCD-Display aus seinem Gehäuse ausgebaut hatte, stellte ich erfreut fest, das die Platine bedeutend kleiner war, als beim verwendeten Modell des „Super Pi Boy“. Doch stellte sich bei der Recherche heraus, das ein Umbau der Stromversorgung von 12V auf 5V bei diesem Modell nicht so ohne weiteres zu realisieren war – mangels tiefergehender Kenntnisse entschied ich mich, keine Lötarbeiten an der Platine durchzuführen und die Stromversorgung auf 12V zu belassen.

01-Kabelverlegung

Rückseite des 3,5″ LCD Displays

Die Anschlussbelegung ist wie folgt:

  • rot: +12V
  • schwarz: GND
  • gelb: AV2
  • weiss: AV1

Da mein Clinch-Stecker für den Videoausgang zu groß für den Einbau ins Gehäuse war, baute ich ihn auf ein Minimum um, die gelbe Ader habe ich an AV2 (gelb) und die schwarze Ader an GND angeschlossen. AV1 (weiss) blieb ungenutzt und wurde abgebunden.

02-Kabelverlegung

 

b) Spannungswandler LM2596 Schaltreglermodul

03-Kabelverlegung

Die Ausgangsspannung des Schaltreglermoduls lässt sich mittels einer Verstellschraube sehr fein regeln; dieser Schritt ist zuerst mittels eines Multimeters vorzunehmen. Ich habe eine Leerlaufspannung von 5,1V eingestellt. An den 12V-Eingang habe ich die Anschlüsse der Netzteilbuchse sowie das LCD-Display angebunden; am 5V-Ausgang das Micro-USB-Kabel für die Stromversorgung des Raspberry Pi sowie die Stromversorgung des Audio-Verstärkerboards.

Wie auf nachfolgendem Bild zu sehen, musste der Stecker für die Stromversorgung des Raspberry Pi mangels Bauraum ebenfalls massiv gekürzt werden.

04-Kabelverlegung

c) Audio + Lautsprecher

Bei der Planung entschied ich mich für Ersatzlautsprecher für den Nintendo DS, da diese zum einen vom Bauraum in das Gehäuse passten und zum anderen laut verschiedener Meinungen einen relativ gute Klangqualität aufweisen.

06-Kabelverlegung

Am Audioausgang der Raspberry Pi nutzte ich einen klassischen, abgewinkelten 3,5 mm Klinkenstecker und schaltete zwischen Ausgang und Lautsprecher einen PAM8403 Audio-Verstärker.

05-Kabelverlegung

Interessanterweise trat bei mir auf dem rechten Kanal ein sehr lautes Rauschen auf, weshalb ich mich dazu entschied, nur den linken Kanal anzubinden. Dieses Problem schien bei mir am Audioausgang der Raspberry Pi zu liegen, welche auch mit normalen Kopfhörern ein Grundrauschen auf dem rechten Kanal aufwies – nach dem Studium diverser Foren scheinen Soundprobleme am Audioausgang der Raspberry Pi keine Seltenheit zu sein. Wie auch immer – für Retrogames benötigt man im Regelfall aber keinen HiFi-Sound.

Ich habe meine elektrische Verkabelung in Form eines Schemas zusammengefasst:

Kabelverlegung

 

VII. Zusammenbau der Komponenten

Viel Platz bietet das Gameboy-Gehäuse nicht – dementsprechend benötigt man beim Zusammenbau Geduld und teilweise starke Nerven. Ich habe mit dem Oberteil des Gehäuses begonnen und zunächst den Lautsprecher mit zwei Klebepunkten Heisskleber fixiert. Anschließend erfolgte der Einbau des Displays, welches ich mittels doppelseitigem Klebeband fixierte. Zuletzt erfolgte der Einbau des Common Ground DMG Control Panel. Sämtliche offenliegende Elektronik habe ich anschließend mittels Isolierband abgedeckt.

01-ZusammenbauDie Unterseite gestaltete sich als Herausforderung – der zur Verfügung stehende Bauraum ist mehr als beengt und knapp, gerade die Kabelverlegung erfordert ein wenig „Ideenreichtum“. Gerade das ursprünglich nicht eingeplante Schaltreglermodul erforderte viel Überlegung – das Modul ist nicht gerade klein. Auf dem nachfolgenden Bild sieht man den finalen Aufbau, kurz vorm endgültigen Zusammenbau.

02-Zusammenbau

Beim Verschrauben stellte ich allerdings heraus, das die beiden Schrauben nicht ausreichend waren und gerade in der Mitte eine Befestigung fehlte – hier zeigte sich ein Spalt zwischen beiden Gehäusehälften. Ohne Klebeband liess sich dort leider nichts machen 🙁

Zum Schluss habe ich noch eine Acrylglas-Abdeckung (1 mm Dicke) zum Schutz des Displays aufgebracht (Fixierung mittels ein paar Punkten Sekundenkleber).

Anbei der finale Aufbau, im Vergleich zum Original von 1989:

04-Zusammenbau

05-Zusammenbau

06-Zusammenbau

 VIII. Schlusswort

Nach dem Zusammenbau und einem ersten Test muss ich sagen: Ich bin begeistert! 😀 Der Umbau selbst hat eine Menge Spaß gemacht und ich habe sehr viel dabei gelernt. Wenn man bedenkt, das ich kein Elektrotechniker bin und zum ersten Mal (wirklich) mit einem Lötkolben gearbeitet habe, war die Lernkurve sicherlich hoch 😀 Im Verlauf des ganzen Projekts habe ich mir einige Kenntnisse und Fähigkeiten aneignen können, das es mich umso mehr freut, das alles so reibungslos geklappt hat und am Ende sogar funktioniert. Und es macht einfach Spaß, mit dieser ultimativen Retro-Game-Konsole zu spielen 😀

An dieser Stelle noch einmal meinen herzlichen Dank für die Anregung, welche mir der Umbau von „microbyter“ unter http://superpiboy.wordpress.com gegeben hat.

So, nun seit Ihr gefragt! Ich freue mich auf Eure Zuschriften, Lob, Kritik, Ideen, Vorschläge und natürlich: Eure eigene Umsetzung Eurer ultimativen Retrogame-Konsole!