Zum Inhalt springen

Gameboy2VGA – Gameboy Classic VGA-Ausgang

Februar 12, 2011

Vor einiger Zeit kam mir die Idee einen VGA-Converter für den alten Gameboy zu entwickeln. Erst kürzlich bin ich auf der Suche nach neuen Ideen auf die Projekte von Rival-Corp(www.rival-corp.com) gestoßen, die mich sehr inspiriert haben. Unter seinen Projekten finden sich zum Beispiel ein Gameboy Pocket VGA-Adapter, den er schon fertiggestellt hat und ein Gameboy Color VGA-Adapter ist in Arbeit.

Da ich nicht exakt das gleiche machen wollte, habe ich einen Gameboy Classic VGA-Adapter gebaut. Da ich keine Informationen über die Signale vom Gameboy Classic im Internet gefunden hatte, musste ich zwar mit einem Logic Analyzer selbst Hand anlegen und sie Reverse-Engineeren.

Für das Projekt braucht habe ich ein FPGA-Board verwendet. Daran kamen noch ein paar Spannungswandler, da die Logikspannung des Gameboy 5 Volt beträgt und sie auf die Spannung des FPGA reduziert werden musste.

Für alle Interessierten, hier ein paar Links.

Was sind FPGAs eigentlich?
http://de.wikipedia.org/wiki/Fpga
Welche Sprache wurde für dieses Projekt verwendet?
http://de.wikipedia.org/wiki/Very_High_Speed_Integrated_Circuit_Hardware_Description_Language
Gibt es Alternativen zu VHDL?
http://de.wikipedia.org/wiki/Verilog

Für diejenigen unter Euch, die einen VGA-Converter für den Gameboy Classic nachbauen wollen, hier die erforderlichen Signale:

Pixelclock:  Pin 14
Hsync:       Pin 17
Vsync:       Pin 12
Data1:       Pin 15
Data2:       Pin 16

Da ich dem angehängten Bild nach von Rechts nach Links zähle, handelt es sich bei dem braunen Kabel um Vsync. Die Signalzuordnungen gelten nur für den Gameboy Classic. Wer einen Gameboy Pocket VGA-Converter bauen möchte, findet auf RivalCorps Blog (http://www.rival-corp.com/2010/12/02/gameboy-vga-adapter-2/ ) nähere Informationen.

Die Farben des Gameboy lassen sich durch die beiden Signale Data1 und Data2 berechnen:

Data1       Data2       Farbe
0              0              Nichts wird angezeigt
1              0              Grauton1
0              1              Grauton2
1              1              Schwarz

Vor jedem neuen Frame gibt es einen Zustand, in dem die Pixelclock, Hsync und Vsync gleichzeitig einen hohen Pegel haben. Danachmuss man jedes mal, wenn die Pixelclock einen hohen Pegel hat, die beiden Signale Data1 und Data2 abgreifen. Ich habe immer ein ein ganzes Gameboybild in bram geschrieben und bei einem neuen Bild dieses überschrieben.

Wie erzeugt man eigentlich ein VGA-Signal in VHDL?
http://www.pyroelectro.com/tutorials/vhdl_vga/index.html

Vielen Dank an RivalCorp und auch an Kai. Vielen Dank für die Widerstände! 😉

From → Gameboy

4 Kommentare
  1. SACKerl permalink

    Geht das auch mit einem Gameboy Advance?

    • Ja, wäre möglich. Aber das wäre dann ein anderes Projekt, da das Bildsignal völlig unterschiedlich ist.

  2. Alex permalink

    Ich finde Dein Projekt extrem spannend. Ich frag mal als Laie: Meinst Du es gäbe eine Möglichkeit per Hardware, die so klein ist, daß sie in einen GameBoy eingebaut werden kann, das Videosignal so auszugeben, daß es von einem moderneren LCD oder TFT Display genutzt werden kann um den Dot-Matrix Screen damit zu ersetzen?

    • Hallo Alex,
      habe erst jetzt gesehen, dass du mir vor mehreren Monaten hier einen Kommentar hinterlassen hast. Lustig, dass wir uns kennen gelernt haben, bevor ich ihn überhaupt gelesen habe. Meine Meinung über deine Frage kennst du ja mittlerweile auch schon. 🙂

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

<span>%d</span> Bloggern gefällt das: