Bild und Ton müssen stimmen

Durch die Synchronisation von virtueller und realer Zeit führt der Emulator zwar genauso viele Anweisungen pro Sekunde aus wie ein echter Gameboy. Allerdings legt er dabei kurze Sprintsequenzen hin und macht dann Pause. Das führt dazu, dass Sound und Bilder früher fertig sind als auf der realen Hardware - und auch nicht in gleichmäßigen Abständen.

Stellenmarkt
  1. PostgreSQL Datenbankadministrator (w/m/d)
    parcIT GmbH, Köln
  2. UX/UI Designer (m/w/d)
    Brückner Maschinenbau GmbH & Co. KG, Siegsdorf
Detailsuche

Um zu verstehen, warum das ein Problem ist, müssen wir uns zuerst ansehen, wie Sound- und Bilddaten ausgegeben werden. Der jeweiligen Hardware - Audio-Codec und Grafikkarte - ist jeweils ein Speicherbereich (Puffer genannt) zugeordnet, aus dem sie die auszugebenden Daten entnimmt. Der sorgt dafür, dass nicht jedes Sound-Sample und jedes Pixel zu einer exakten Zeit bereitgestellt werden muss. Die jeweiligen Anwendungen können so schon einmal vorarbeiten. Einen entscheidenden Unterschied gibt es: Bei der Grafik umfasst der Puffer nur ein Bild, da jedes Bild mehrere MByte benötigt, ein Sound-Sample hingegen nur vier Byte.

Beim Sound fängt der vorhandene Puffer die diskontinuierliche Ausführung des Emulators also bereits ab. Wird der Anzeigepuffer zwischen zwei Aktualisierungen des Bildschirms mehrmals geschrieben, wird nur das zuletzt geschriebene Bild dargestellt. Alle anderen gehen verloren - und das macht die Effekte einiger Spiele kaputt.

Für Spezialeffekte ist jedes Bild wichtig

Aufgefallen ist mir das bei Zelda - Link's Awakening. Läuft man hier mit den Pegasusstiefeln gegen ein Hindernis, wackelt das Bild. Beträgt die Bildrate nicht die auf dem Gameboy üblichen knapp 60 Bilder pro Sekunde, ist der Effekt total entstellt. Statt harmonisch zu vibrieren, bewegt sich das Bild ungelenk hin und her.

Golem Karrierewelt
  1. Go für Einsteiger: virtueller Zwei-Tages-Workshop
    25./26.07.2022, Virtuell
  2. CEH Certified Ethical Hacker v11: virtueller Fünf-Tage-Workshop
    01.-05.08.2022, Virtuell
Weitere IT-Trainings

Das ist nur einer von vielen Effekten, die mit der Grafik-Hardware des Gameboy realisiert werden. Oft wird ein 3D-Effekt vorgegaukelt, indem parallaxe Ebenen verwendet oder eine perspektivische Verkürzung nachgebildet werden. Bei parallaxen Ebenen bewegen sich Teile des Bildes langsamer, wodurch sie weiter entfernt erscheinen. Die perspektivische Verkürzung erzeugt den Eindruck, auf eine zweidimensionale Ebene zu blicken. Am bekanntesten ist der Effekt von Mario Cart, auf dem Gameboy nutzt ihn beispielsweise F1 Race.

Nintendo Switch (OLED-Modell) Weiss

Mehr Threads helfen doch

Also habe ich Erzeugung und Darstellung der Bilder getrennt. Für die Darstellung ist ein eigener Thread zuständig - diesmal ein echter Betriebssystem-Thread. Er nutzt einen Timer, um zu festen Zeiten aktiviert zu werden - knapp 60 Mal pro Sekunde. So werden die Einzelbilder exakt mit der gleichen Rate angezeigt wie auf dem Gameboy. Die Bilder bekommt der Anzeige-Thread über eine FIFO (First-In-First-Out-Warteschlange), so dass sie in der korrekten Reihenfolge dargestellt werden und nicht verloren gehen.

Für den Sound habe ich das gleiche gemacht, wenn auch nicht aus einer konkreten Notwendigkeit heraus. Schließlich existiert hier bereits ein Puffer für die auszugebenden Samples. Allerdings kann das Schreiben in diesen Puffer blockieren, wenn er voll ist. Dadurch wird der Prozess automatisch schlafen gelegt, was die Zeitverwaltung durchkreuzen würde - also habe ich dem vorsorglich einen Riegel vorgeschoben. Ein paar Kleinigkeiten fehlen noch, dann ist der Emulator auch schon fertig.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 ZeitsynchronisationLetzte Schritte und Fazit 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


jhi (Golem.de) 14. Jun 2022 / Themenstart

Ja, das ist richtig, aber auf der Ebene dessen, was ich an Code schreibe, findet er nicht...

Kommentieren



Aktuell auf der Startseite von Golem.de
Krypto-Gaming
Spieleentwickler wollen nichts mit NFT zu tun haben

Die Gamesbranche wehrt sich bislang vehement gegen jedes neue Blockchain-Projekt. Manager und Entwickler erklären warum.
Von Daniel Ziegener

Krypto-Gaming: Spieleentwickler wollen nichts mit NFT zu tun haben
Artikel
  1. Mojo Lens: Erster Tragetest mit Augmented-Reality-Kontaktlinse
    Mojo Lens
    Erster Tragetest mit Augmented-Reality-Kontaktlinse

    Ein winziges Micro-LED-Display, ein Funkmodem, ein Akku - und kein Kabel: Der Chef von Mojo Lens hat seine AR-Kontaktlinse im Auge getragen.

  2. Ouca Bikes: E-Lastenrad für eine Viertel Tonne Fracht oder acht Kinder
    Ouca Bikes
    E-Lastenrad für eine Viertel Tonne Fracht oder acht Kinder

    Ouca Bikes hat ein elektrisches Lastenrad vorgestellt, das eine Zuladung von rund 250 kg transportieren kann. Das E-Bike fährt auf drei Rädern.

  3. Bill Nelson: Nasa-Chef warnt vor chinesischem Weltraumprogramm
    Bill Nelson
    Nasa-Chef warnt vor chinesischem Weltraumprogramm

    Gibt es Streit um den Mond? Nasa-Chef Bill Nelson fürchtet, dass China den Trabanten als militärischen Außenposten für sich haben möchte.

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 • MindStar (G.Skill Trident Z Neo 32 GB DDR4-3600 149€ und Patriot P300 512 GB M.2 39€) • Alternate (Acer Nitro QHD/165 Hz 246,89€, Acer Predator X28 UHD/155 Hz 1.105,99€) • Samsung GU75AU7179 699€ • Kingston A400 480 GB 39,99€ • Top-PC mit Ryzen 7 & RTX 3070 Ti für 1.700€ [Werbung]
    •  /