Der Speicher

Neben den Prozessorbefehlen ist es wichtig, den Aufbau des Adressraums zu kennen. Der Prozessor arbeitet mit 8-Bit-Werten, nutzt aber einen 16 Bit breiten Adressbus und kann so auf 64 KByte Speicher zugreifen. Im Adressraum finden sich neben Arbeits- und Grafikspeicher auch der ROM des Spielemoduls sowie eventuell auf diesem vorhandener RAM. Auch auf die Register der anderen Hardwarekomponenten kann hierüber zugegriffen werden.

Stellenmarkt
  1. IT-Berater / Fachlicher Lead Digitalstrategie (w/m/d)
    Dataport, verschiedene Standorte
  2. Qualitätsingenieur (m/w/d) Softwarequalität
    Schaeffler Automotive Buehl GmbH & Co. KG, Bühl
Detailsuche

Daneben gibt es noch zwei kleinere Speicher, die im Chip integriert sind. Dabei handelt es sich zum einen um einen ROM, in dem sich eine Firmware befindet. Sie überprüft nach dem Start des Gameboys, ob ein autorisiertes Spielemodul eingesetzt ist und initialisiert die Register. Damit kann ein Spiel beispielsweise prüfen, ob es auf einem klassischen Gameboy oder dem Gameboy Color läuft. Zum anderen sind 127 Byte RAM integriert, die für den Programmstack und spezielle Warteroutinen genutzt werden.

Den größten Teil des Adressraums nimmt der ROM des Spielemoduls ein. Er belegt die untere Hälfte (0x0000 bis 0x7fff) und ist in zwei Segmente mit je 16 KByte aufgeteilt. Am unteren Ende wird nach dem Start des Gameboys der Firmware-ROM eingeblendet. Erkennt er ein legitimes Spiel, startet er es und blendet sich aus.

Speicher mit besonderer Bedeutung

Einige Speicherbereiche haben eine spezielle Funktion und werden von bestimmten Hardwarekomponenten genutzt. Der Grafikhardware stehen gleich zwei spezielle Speicher zur Verfügung: der Grafikspeicher, der als SRAM-Modul auf der Platine sitzt, und der Object Attribute Memory (OAM). Auf beide geht der nächste Abschnitt genauer ein.

Golem Karrierewelt
  1. Hands-on C# Programmierung: virtueller Zwei-Tage-Workshop
    13./14.09.2022, virtuell
  2. ITIL 4® Foundation: virtueller Zwei-Tage-Workshop
    18./19.07.2022, virtuell
Weitere IT-Trainings

Darüber hinaus existiert eine Menge von Hardware-Registern. Über sie kontrolliert das Programm, was beispielsweise Grafik- und Sound-Hardware tun. Auch für die entgegengesetzte Richtung gibt es Register, über die die Hardware mitteilt, was sie gerade macht. Manche der Hardware-Register lösen direkt eine Aktion aus. Das sollte ein Emulator beachten, um das Verhalten des Systems korrekt nachzubilden.

Eine besondere Bedeutung hat auch der Beginn des Adressbereichs. Nach dem Einschalten befindet sich an Adresse 0x0000 der Firmware-ROM. Er erwartet im ROM von Adresse 0x0100 bis 0x014f Informationen über das Spielemodul, unter anderem das Nintendo-Logo, das er nutzt, um zu prüfen, ob das Modul authorisiert ist. Einige der weiteren Informationen werden später noch nützlich sein. Nachdem sich die Firmware ausgeblendet hat, wird der Bereich von 0x0000 bis 0x0067 als Einsprungpunkte zur Interrupt-Behandlung genutzt. Für jeden der dreizehn existierenden Interrupts stehen acht Byte zur Verfügung.

Nintendo Switch (OLED-Modell) Weiss

Wie emuliert man Speicher?

Speicher zu emulieren, klingt zunächst einmal nicht schwer. Einfach ein ausreichend großes Array anlegen, eventuell Daten hineinschreiben, fertig. Praktisch klappt das allerdings aus zwei Gründen nicht. Der erste ist, dass Schreiben in ein Register einer Hardwarekomponente in dieser eine Aktion auslösen kann. Auch liest man bei Hardware-Registern oft nicht das zurück, was hineingeschrieben wurde. Der zweite Grund, weshalb die Emulation der Speicher etwas komplexer ist, liegt im ROM-Bereich. Er wird nämlich nicht nur gelesen, oft wird hier auch geschrieben, den Grund dafür sehen wir später noch.

Um das komplexe Verhalten der verschiedenen Speicher nachzubilden, habe ich eine Klasse geschrieben, die den Zugriff regelt. Sie verfügt über Methoden, um Werte zu lesen und zu schreiben. Besonders elegant ginge das mit C++, indem der Operator für Arrayzugriffe (eckige Klammern) überladen wird; in meiner Java-Implementierung erledigen das zwei Funktionen. Die Klasse an sich delegiert Zugriffe nur an andere Klassen, die den verschiedenen Adressbereichen zugeordnet sind. Sie tun dann, was auch immer die jeweilige Hardware täte - im Fall der RAM-Bereiche bilden sie tatsächlich nur auf ein Array ab.

Nach dem Prozessor ist die Grafikeinheit die zweitwichtigste Komponente. Denn ohne Bild macht kein Spiel Spaß. Also schauen wir uns an, wie die Bilder auf das Display kommen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Einen Prozessor mit Software nachbauenDie Grafikeinheit 
  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
Geforce GTX 1630
Nvidia bringt extralahme Grafikkarte - wegen Intel

Die Geforce GTX 1630 wird unter der Arc A380 positioniert, weshalb Nvidia einen alten Chip in stark beschnittener Form wieder aufleben lässt.

Geforce GTX 1630: Nvidia bringt extralahme Grafikkarte - wegen Intel
Artikel
  1. Directus: Schneller zur Backend-API mit dem Headless CMS
    Directus
    Schneller zur Backend-API mit dem Headless CMS

    Web-, Mobile- oder gar Print-Frontends können sehr verschieden sein. Eine Backend-API mit einem Headless CMS vereinfacht das. Directus zeigt, wie.
    Eine Anleitung von Jonathan Schneider

  2. Displays: Sony baut 4K-Monitor mit KVM-Switch im Playstation-Stil
    Displays
    Sony baut 4K-Monitor mit KVM-Switch im Playstation-Stil

    Sonys Inzone M9 kann mittels HDMI 2.1 und Displayport an PCs und Konsolen angeschlossen werden. Die Kombination aus 4K und 144 Hz ist selten.

  3. Return to Monkey Island: Gameplay-Trailer zeigt neuen Guybrush Threepwood
    Return to Monkey Island
    Gameplay-Trailer zeigt neuen Guybrush Threepwood

    Das dürfte nicht nur für Begeisterung sorgen: Erstmals ist Gameplay aus dem nächsten Monkey Island zu sehen - und die Hauptfigur.

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 • PS5 jetzt bei Amazon bestellbar PNX RTX 3080 12GB günstig wie nie: 929€ • MindStar (MSI RX 6700 XT 499€, G.Skill DDR4-3600 32GB 165€, AMD Ryzen 9 5900X 375€) • Nur noch heute: NBB Black Week • Top-TVs bis 53% Rabatt • Top-Gaming-PC mit AMD Ryzen 7 RTX 3070 Ti 1.700€ • Samsung Galaxy S20 FE 5G 128GB 359€ [Werbung]
    •  /