Die Grafikeinheit

Die Grafikeinheit des Gameboys war lange etwas mysteriös. Zwar war bekannt, wie sie prinzipiell funktioniert. Die letzten Details wurden allerdings erst vor wenigen Jahren entschlüsselt, der weiter unten eingebettete Ultimate Gameboy Talk auf dem 33c3 erläutert sie. Auch ich habe versucht, mir einen Reim auf das Bekannte zu machen - wohl wissend, dass meine Lösung niemals in Hardware funktionieren würde.

Stellenmarkt
  1. CSV Experte Qualitätskontrolle (m/w/d)
    BERLIN-CHEMIE AG, Berlin
  2. Auditorin / Auditor (w/m/d) für Informationssicherheit
    Präsidium Technik, Logistik, Service der Polizei, Stuttgart
Detailsuche

Wie der Großteil der auf 2D-Grafik beschränkten Konsolen basiert die Grafik des Gameboys auf Tiles (Kacheln) und Sprites (wörtlich: Geist, Gespenst oder Kobold). Aus den Tiles wird der Bildhintergrund aufgebaut, darüber dürfen sich die Sprites frei bewegen. So lassen sich komplexe Szenerien mit geringem Speicherbedarf aufbauen. Nintendo benutzt statt Sprites den Begriff Objects. Beim Gameboy sind Tiles und Sprites normalerweise 8 x 8 Pixel groß. Für Sprites können allerdings auch zwei solcher Blöcke zusammengefasst werden. Da sie dann 8 x 16 Pixel groß sind, kann mehr Bildschirmfläche mit Sprites bedeckt werden.

Die Bilddaten für Sprites und Tiles werden im Grafikspeicher abgelegt, bis zu 384 Blöcke von 8 x 8 Pixeln sind möglich. Dabei sind Teile des Speichers zwischen Sprites und Tiles geteilt. Insgesamt 40 Sprites kann der Gameboy gleichzeitig darstellen, allerdings dürfen es nicht mehr als zehn pro Bildschirmzeile sein. Ihre Position und andere Parameter werden über den bereits erwähnten OAM konfiguriert.

Der Hintergrund einer Szene wird anhand eines 32-x-32-Rasters aus Tiles aufgebaut. Sie befinden sich also immer an festen Positionen. Damit ist der Hintergrund 256 x 256 Pixel groß, das Display des Gameboys kann allerdings nur 160 x 144 Pixel darstellen. Daher kann über zwei Register der darzustellende Teil des Hintergrunds ausgewählt werden. So kann im unsichtbaren Teil bereits ein neuer Hintergrund vorbereitet werden und die Welt bewegt sich flüssig.

  • Das Mainboard des Gameboys ist übersichtlich: in der Mitte der Prozessor mit Grafik- und Soundeinheit, rechts oben der Grafikspeicher, darunter der normale RAM. Unten befindet sich der Steckverbinder für die Module. (Bild: Johannes Hiltscher/Golem.de)
  • So sieht ein Spielemodul von innen aus: rechts unten der ROM, links unten der RAM. Über dem RAM ist der MBC aufgelötet (hier ein MBC5), rechts oben die Pufferbatterie für den RAM. Sie sorgt dafür, dass dessen Inhalt nach dem Ausschalten erhalten bleibt. (Bild: Johannes Hiltscher/Golem.de)
  • Link und der Gegner bestehen aus je vier 8 x 8 Pixel großen Sprites (rot umrandet), der Hintergrund aus ebenso großen Tiles (grün umrandet). (Bild: Johannes Hiltscher/Golem.de)
Link und der Gegner bestehen aus je vier 8 x 8 Pixel großen Sprites (rot umrandet), der Hintergrund aus ebenso großen Tiles (grün umrandet). (Bild: Johannes Hiltscher/Golem.de)

So kommt das Bild auf den Bildschirm

Golem Karrierewelt
  1. Go für Einsteiger: virtueller Zwei-Tages-Workshop
    25./26.07.2022, Virtuell
  2. Adobe Premiere Pro Grundkurs: virtueller Zwei-Tage-Workshop
    02./03.08.2022, Virtuell
Weitere IT-Trainings

Im Gegensatz zu moderneren Grafikkarten nutzt die Hardware des Gameboys keinen Speicher, in dem das ausgegebene Bild aufgebaut wird (Frame Buffer). Es wird direkt pixelweise auf dem Flüssigkristallbildschirm aufgebaut. Das klingt erst einmal unwichtig, hat allerdings konkrete Auswirkungen auf den Emulator: Die Funktionalität der Hardware muss eins zu eins nachgebaut werden. Ein Spiel kann nämlich zwischen zwei Bildschirmzeilen Parameter der Grafikhardware ändern, wodurch Effekte erzeugt werden. Sie funktionieren nicht, wenn beispielsweise die gesamten Bilddaten einmal pro Bild in einen Anzeigepuffer kopiert werden.

Die Grafikhardware liest beim Aufbau des Bildes aus OAM und Grafikspeicher. In letzterem befindet sich neben den Daten für Tiles und Sprites das Raster für den Hintergrund. Zusätzlich kann auch noch ein Fenster definiert werden, das über dem Hintergrund angezeigt wird. Es wird gern für Textausgaben genutzt, greift ebenfalls auf die Tiles zurück und wird mit einem 32-x-32-Raster aufgebaut.

Bevor Pixeldaten ausgegeben werden, sucht die Grafikhardware sich zuerst die in der aktuellen Zeile aktiven Sprites aus dem OAM. Danach erzeugt sie pixelweise das Bild, für jedes Pixel wird entschieden, ob es die Farbe des Hintergrunds, des Fensters oder eines Sprites bekommt. Die Auswahl des Farbwerts geschieht anhand fester Prioritäten. Die vier möglichen Graustufen sind übrigens nicht in den jeweiligen Bilddaten festgelegt. Sie werden anhand von Farbpaletten ausgewählt, die Werte in den Bilddaten sind Indizes in die aktuelle Palette.

Nintendo Switch (OLED-Modell) Weiss

Für Sprites und Tiles existieren unabhängige Paletten. Die Sprites haben sogar zwei, die anzuwendende wird im OAM-Eintrag des Sprites ausgewählt. Über die Paletten lassen sich wieder leicht Effekte realisieren. So kann beispielsweise das Bild ausgeblendet werden, ohne dass die zugrundeliegenden Bilddaten verändert werden müssen. Genauer wird das alles im folgenden Video erklärt.

Und so habe ich es für moderne Computer emuliert

Der Software-Renderer, den ich für meinen Emulator programmiert habe, setzt den oben beschriebenen Ablauf um. Dabei gibt es noch ein paar Kleinigkeiten zu beachten, beispielsweise die Prioritäten von Hintergrund, Fenster und Sprites. Auch untereinander haben die Sprites noch einmal Prioritäten. Sie hängen von der Position im OAM ab und bestimmen, welches Sprite gezeichnet wird, wenn zwei sich überlappen. Das wird für jedes Pixel entschieden.

Damit wird ein Bild mit vier Graustufen erzeugt - das gefällt mir besser als die Grüntöne des originalen Gameboy. Es wird mit Javas Swing-Bibliothek für graphische Oberflächen in ein Fenster kopiert und dabei skaliert. So füllt es das Fenster vollständig aus und die Emulatorfunktion muss nur ein Format erzeugen können - die 160 x 144 Pixel des Gameboy-Bildschirms. Kommen wir als nächstes zum Sound, denn auch den möchte ich bei den meisten Spielen nicht vermissen. Dem Taltal-Gebirge würde etwas fehlen!

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Der SpeicherDas Soundmodul 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9.  


mipi 06. Jun 2022 / Themenstart

+1 Bin schon auf den Folgeartikel zur Umsetzung der parallel stattfindenden HW-Abläufe...

TarikVaineTree 05. Jun 2022 / Themenstart

Sheep It Up ist für mich ein Musterbeispiel eines Homebrewspiels für den GB. Simpel...

Kakiss 29. Mai 2022 / Themenstart

Ich finde es daher umso erstaunlicher, wie die Leute Cores für den Mister erstellen. Ich...

Olstyle 29. Mai 2022 / Themenstart

Zuerst noch einmal vielen Dank für den Artikel. Bei aller Abkürzung hätte ich mir aber...

Kommentieren



Aktuell auf der Startseite von Golem.de
Franziska Giffey
Deepfake von Klitschko täuscht Berlins Bürgermeisterin

Berlins Regierende Bürgermeisterin Franziska Giffey (SPD) hat per Videokonferenz mit einem Deepfake von Vitali Klitschko gesprochen. Der Betrug flog auf.

Franziska Giffey: Deepfake von Klitschko täuscht Berlins Bürgermeisterin
Artikel
  1. Mond: US-Sonde findet Einschlagstelle des unbekannten Raketenteils
    Mond
    US-Sonde findet Einschlagstelle des unbekannten Raketenteils

    Die Nasa hat die Stelle auf dem Mond gefunden, wo im März ein noch unidentifiziertes Raketenteil abgestürzt ist. Der Krater ist überraschend groß.

  2. Datenpanne: IT-Mitarbeiter verliert USB-Stick mit Meldedaten einer Stadt
    Datenpanne
    IT-Mitarbeiter verliert USB-Stick mit Meldedaten einer Stadt

    Die Tasche mit dem USB-Stick wurde über ein in ihr ebenfalls enthaltenes Smartphone geortet und gefunden.

  3. Logistik: Post will mit Solarschiff Pakete in Berlin verteilen
    Logistik
    Post will mit Solarschiff Pakete in Berlin verteilen

    Die Post will Pakettransporte von der Straße aufs Wasser verlagern. Das erste der Schiffe wird mit Solarstrom betrieben. In Zukunft sollen sie autonom fahren.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • MSI 323CQRDE (WQHD, 165 Hz) 399€ • LG OLED 48C17LB 919€ • Samsung 980 PRO (PS5-komp.) 2 TB 234,45€ • Apple HomePod Mini 84€ • 16.000 Artikel günstiger bei Media Markt • MindStar (u. a. AMD Ryzen 7 5700G 239€, Samsung 970 EVO Plus 250 GB 39€ und Corsair Crystal 680X RGB 159€) [Werbung]
    •  /