Das Soundmodul

Verglichen mit anderen Konsolen ist das Soundmodul des Gameboys spartanisch. Von den Fähigkeiten beispielsweise des SID-Chips im C64 ist es so weit entfernt wie ein Kochtopf von einem Schlagzeug. Es wurde abgespeckt vom NES übernommen und verfügt über vier Soundkanäle: Zwei erzeugen Rechteckwellen, einer Rauschen, der vierte gibt gesampelte Sounds wieder. Die Lautstärke der einzelnen Kanäle kann in 16 Schritten geregelt werden.

Aufgrund der geringen Auflösung und der Nutzung von Rechteckwellen würden die erzeugten Sounds normalerweise schrecklich klingen. Speziell Rechteckwellen sind eine Tortur für die Ohren. Um einen angenehmen Klang zu erreichen, wird das erzeugte Soundsignal hochpassgefiltert. Das geschieht analog - durch einen Kondensator. Das Ergebnis ist ein charakteristischer Sound, der durchaus seine Liebhaber hat. In der Chiptune-Szene erfreut sich der Gameboy großer Beliebtheit.

Mit den beiden Kanälen für Rechteckwellen wird der größte Teil der Musik erzeugt. Über jeweils einen eigenen Teiler erzeugen sie aus dem Systemtakt den Takt der Rechteckwellen - woraus sich die Frequenz des entstehenden Tons ergibt. Um die Charakteristik des Tons zu variieren, ist noch eine einfache Pulsweitenmodulation implementiert. Die Welle kann ein Achtel, ein Viertel, die Hälfte oder drei Viertel der Periodendauer auf hohem Spannungspegel sein. Für gesampelte Sounds kann die Wiedergabegeschwindigkeit eingestellt werden.

Soundeffekte

Die Soundkanäle bringen ein paar Features mit, die für prozessorunabhängige Soundeffekte genutzt werden können. Das erste Feature ist der Envelope, in diesem Fall kein Briefumschlag, sondern die Hüllkurve. Damit kann die Lautstärke des Signals in festen Zeitschritten erhöht oder gesenkt werden. Die zweite ist der Sweep (die korrekte Übersetzung ist wobbeln), der automatisch die Tonfrequenz ändert.

Die Soundkanäle können zudem kontinuierlich ein Signal erzeugen oder nach einer definierten Zeit die Ausgabe beenden. Nicht alle Soundkanäle verfügen über alle zuvor genannten Features, so dass jeder seine eigene Klasse benötigt. Auch unterscheidet sich die Realisierung des Sampling- und Rauschkanals von denen der Rechteckkanäle. Das Rauschen wird übrigens mittels eines linear rückgekoppelten Schieberegisters erzeugt. Es wird beispielsweise für Schlagzeugsounds genutzt.

Unerwartete Herausforderungen bei der Emulation

Die Beschreibung der Soundhardware klingt erst einmal nicht besonders herausfordernd - ein paar Register und den Speicher für die Samples implementieren, dazu ein wenig Programmlogik, die anhand der Werte ein Tonsignal erzeugt. Die Signale der einzelnen Kanäle werden lediglich addiert. Trotzdem gibt es zwei Dinge, die mich lange aufgehalten haben.

Zuerst der Kondensator. Wie in aller Welt baut man den in einem Programm nach? Im Physikunterricht habe ich zwar gelernt, wie man die zeitabhängige Spannung eines Kondensators berechnet. Allerdings nur für eine konstant anliegende Spannung. Zum Glück fand ich irgendwann im Internet eine Lösung, deren Herleitung ich zwar nicht verstand, sie aber umsetzte - und sie funktionierte. Der Kondensator bildet einen Hochpassfilter, dessen Verhalten das Programm nachbilden muss.

Das zweite Problem war weniger offensichtlich und hat mich Wochen beschäftigt. Die Soundausgabe klirrte unangenehm. Der Grund dafür ist die feste Abtastrate der Soundhardware des Computers. Die vom Gameboy erzeugten Signale passen nicht zu dieser Abtastrate, sie wechseln irgendwo zwischen zwei Abtastpunkten. Das bedeutet, dass über mehrere Wellenzyklen das erzeugte Signal nicht gleich ist.

Dadurch entstehen unerwünschte Signalkomponenten. Die Lösung für dieses Problem heißt Abtastratenkonvertierung. Ich habe das, als ich den Emulator programmiert habe, etwas hemdsärmelig mit Oversampling gelöst. Wechselt die Ausgabe des Gameboys zwischen zwei Samples, werden diese zwischen 0 und aktueller Lautstärke des Kanals interpoliert.

Um den Aufwand zu reduzieren, habe ich das allerdings nur für eine Schwingung der Welle gemacht und diese immer wieder ausgegeben. Das funktioniert - und klingt - ganz gut, ist allerdings nicht ganz richtig. Und manchmal fällt es auf, hier sollten also professionellere Ansätze zum Einsatz kommen. Jetzt ist zwar die Hardware komplett, aber etwas fehlt noch: die Spiele.

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


mipi 06. Jun 2022

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

TarikVaineTree 05. Jun 2022

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

Kakiss 29. Mai 2022

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

Olstyle 29. Mai 2022

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



Aktuell auf der Startseite von Golem.de
Whistleblower
USA sollen intaktes außerirdisches Fluggerät besitzen

Klingt schräg, aber der Whistleblower ist ungewöhnlich glaubwürdig: Die USA sollen mehrere außerirdische Fluggeräte haben.

Whistleblower: USA sollen intaktes außerirdisches Fluggerät besitzen
Artikel
  1. Landkreis Lüneburg: Telekom pausiert Sendemastbau nach Protesten zeitweise
    Landkreis Lüneburg
    Telekom pausiert Sendemastbau nach Protesten zeitweise

    Deutsch Evern will nicht mit einer Antenne von Deutsche Funkturm versorgt werden. Die Telekom hat das Anliegen der Anwohner geprüft und baut nun weiter.

  2. Game Porting Toolkit: Wie Apple Windows-Spiele auf MacOS bringen will
    Game Porting Toolkit
    Wie Apple Windows-Spiele auf MacOS bringen will

    Wenige Stunden nach Bereitstellung der Werkzeuge laufen Diablo 4 und Cyberpunk auf MacOS. Apple zeigt, dass Ports schneller gehen könnten, als viele erwarten.
    Von Sebastian Grüner

  3. Freelancer in der IT: Schön, lukrativ, aber alles andere als easy
    Freelancer in der IT
    Schön, lukrativ, aber alles andere als easy

    Viele junge Entwickler wollen lieber Freelancer sein als angestellt. Doch das hat mehr Haken, als man denkt. Wir haben Tipps für den Einstieg.
    Ein Ratgebertext von Rene Koch

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 • Samsung SSD 8TB 368,99€ • MindStar: Gigabyte RTX 4090 1.599€, Crucial 4TB 169€ • Acer Curved 31,5" WQHD 165Hz 259€ • PS5-Spiele & Zubehör bis -75% • Samsung 990 Pro 1TB (PS5) 94€ • Chromebooks bis 32% günstiger • Bis 50% auf Gaming-Produkte bei NBB • PS5 mit Spiel 549€ [Werbung]
    •  /