KITAQ ENTWICKLUNGSSYSTEM
BENUTZERHANDBUCH 2026.09

KITAQ SERIES • REFERENZAUSGABE

PRÜFUNG

Aufnahme der Ausführung

Von der ersten Codezeile zur Ausführung, Beobachtung und erneuten Prüfung.
Quellenstand: 14. September 2026 · Englische Referenzausgabe: 14. September 2026

Prüfung des nativen Compilers

Native Builds und Ausführungsprüfungen waren unter Windows, Linux, macOS ARM und macOS Intel erfolgreich. KITAQGB bestand pro Umgebung 48 Tests und 395 Werkzeugprüfungen, KITAQFC 55 und 401. Rust 1.85 wurde ebenfalls getestet. PUBLIC_DISTRIBUTION.json enthält die Hashwerte der installierten Programme und die Herkunft der Prüfergebnisse. Die öffentlichen GitHub-Actions-Workflows bauen und testen diese Quellen unabhängig.

Gespeicherte Referenzausgaben prüfen ROM-Bytes, Diagnosen und Werkzeugformate. Frühere C#-Emulatorprüfungen bleiben historische Nachweise mit ihren ursprünglichen Quellfingerabdrücken. Sie belegen nicht automatisch sämtliche Rust-APIs, echte Hardware oder einen vollständigen Spielstart über das FDS-BIOS. Das nicht verfügbare ursprüngliche PNG-Skript wurde nach seiner Spezifikation neu implementiert; Bytegleichheit mit ihm kann nicht bestätigt werden.

KITAQGB · SHA-256 · KITAQFC · SHA-256

Lokale Bibliothek: Änderungen und Prüfung vom 2026-10-03

Die Quellen aus C:/kitaqgb_project/lib wurden mit der öffentlichen Revision 2de7f4b verglichen. Zeitstempel allein bestimmen nicht die neuere Version. Die lokale Fassung enthält Ergänzungen; die öffentliche enthält andere Ergänzungen und Korrekturen. Dieser Abschnitt beschreibt die gesicherten lokalen Quellen getrennt von bisherigen Nachweisen der öffentlichen API.

physics2d.c behält die Kontakt-API bei und ergänzt zwischengespeicherte Kontakt- und Geschwindigkeitsbegrenzung unter KQ2D_CACHE_SURFACE. Reservieren Sie dabei ROM-Bank 13. Bei KQ2D_EXTERNAL_SCALE_Q8, KQ2D_EXTERNAL_REST_COMPONENT oder KQ2D_EXTERNAL_SURFACE muss der Aufrufer die jeweilige Implementierung liefern. Die folgenden 8.872 Fälle prüfen den Standardpfad ohne diese Definitionen.

KQ3D_BODY_SPHERE=0x04 wählt Kugel–Quader-Kontakte. Der Kugelradius ist half_x. kq3d_overlap_sphere_aabb(sphere, box) schließt Berührung ein und liefert bei NULL-Zeigern oder nichtpositivem Radius 0. Einen speziellen Kugel–Kugel-Löser gibt es nicht. Differenzen, Produkte und Quadratsummen müssen in ihren 16-Bit-Bereichen bleiben.

Ein aktiver body mit KQ3D_BODY_KINEMATIC=0x02 aktualisiert in kq3d_step X/Y-Geschwindigkeit und Position auch bei inverser Masse 0. Z-Position und Z-Geschwindigkeit bleiben unverändert. Kontakte verschieben einen body mit inverser Masse 0 nicht. kq3d_integrate_body überspringt weiterhin statische bodies. break_speed und KQ3D_BODY_BROKEN lösen keine automatische Zerstörung aus.

Lokales bank_switch schreibt kq_bank_current und Adresse 0x2000. Anders als der öffentliche __bankswitch-Pfad aktualisiert es die Bankverfolgung des Compilers nicht. Wechseln Sie aus der festen Bank; verwenden Sie __bankswitch, wenn auch der Wiederherstellungszustand gepflegt werden muss.

Lokales cgb_bg_color/cgb_obj_color und die RGB-Hüllen für einzelne Farben aktivieren die automatische Indexerhöhung nicht. Die CGB-Ausführung bestätigt: Das untere Byte von 0x1234 wird durch 0x12 überschrieben. Verwenden Sie die öffentliche Korrektur oder eine colors-Array-API. Auf DMG erfolgt kein Schreibzugriff.

Lokales metasprite_draw erhöht den Belegungszähler erst nach vollständigem Abschluss auf first_id+count. Bei vorzeitiger Rückkehr an der Grenze von 40 Sprites bleibt er unverändert. Bei first_id=39 und count=2 war der Rückgabewert 1, Platz 39 aktiv und der Zähler 0. Die öffentliche Version aktualisiert ihn für jeden bearbeiteten Platz.

Die lokale Version bietet vram_get_queue_used und vram_get_queue_free, jedoch nicht das öffentliche vram_get_queue_capacity. Die Kapazität ist VRAM_QUEUE_MAX, standardmäßig 32. Nach einem Auftrag waren used=1 und free=31.

wire3d_dmg.h deklariert DrawRect2D nur für das Profil mit 96 Zeilen. DrawBoxEdges2D ist in beiden Profilen deklariert, DrawIndexedEdges nur bei 120 Zeilen. Wählen Sie eine zum Profil passende Quelle. Die Darstellung dieser Funktionen wurde diesmal nicht erneut geprüft. In den gesicherten lib-Quellen wurde keine Implementierung von DrawRect2D oder DrawBoxEdges2D gefunden. Es sind nur Deklarationen; für Aufrufe ist eine eigene Implementierung nötig.

Lokales audio_vblank enthält weder die öffentlichen AudioVBlank_QueueReset/QueueRefill/QueuePlay-APIs noch audio_vblank_queue.inc. Auch ZX0 gibt es nur öffentlich. Diese Ergänzungen zählen nicht zu den nachgewiesenen lokalen Funktionen.

kq3d_overlap_sphere_aabb
u8 kq3d_overlap_sphere_aabb(const KQBody3D* sphere, const KQBody3D* box);

KQ3D_BODY_SPHERE=0x04 wählt Kugel–Quader-Kontakte. Der Kugelradius ist half_x. kq3d_overlap_sphere_aabb(sphere, box) schließt Berührung ein und liefert bei NULL-Zeigern oder nichtpositivem Radius 0. Einen speziellen Kugel–Kugel-Löser gibt es nicht. Differenzen, Produkte und Quadratsummen müssen in ihren 16-Bit-Bereichen bleiben.

physics3d.c / physics3d.h

Ausgeführte Prüfungen

2D-Standardpfad: 8.872 erfolgreiche Fälle über die KOKURA-C-API mit automatischer Hardwarewahl. Geprüft wurden Geschwindigkeitsbegrenzung, Kontakte, vorzeichenbehaftete Q8-Multiplikation und Kontaktzeit. Dies war keine getrennte Prüfung mit expliziter DMG/CGB-Wahl.

Physikgrenzen: 19 Fälle jeweils auf DMG und CGB, alle 38 Läufe erfolgreich. Getrennte 3D-Erweiterungs- und Sprite/VRAM/Paletten-Reproduktionen entsprachen in beiden Modi den Erwartungen. Palette und Sprites reproduzieren Fehler; sie bestätigen keine korrekte Funktion.

Dies sind Emulatorprüfungen von ROMs des C#-Compilers. Sie belegen weder Rust-Gleichwertigkeit, reale Hardware, Audio, Darstellung noch die Korrektheit aller APIs. Vorhandene Bilder und Prüfungen bleiben historische Ergebnisse, gebunden an die Quellfingerabdrücke ihrer Aufzeichnungen.

Quellfingerabdrücke, Eingaben, erwartete und gemessene Werte sowie Wiederholungsschritte · evidence.tar.gz · verify_rom_cases.py · verify_surface.py

Bildschirmaufnahmen

Aufnahmen aus dem Emulator stehen neben den Beispielerklärungen. Vergleichen Sie die Ausgabe mit dem angegebenen erwarteten Ergebnis. Ein Bildschirmfoto allein prüft weder Ton noch Controllereingaben, Peripheriegeräte oder echte Hardware.

Den mitgelieferten Zeichensatz anzeigen gb_font

Zweck: Zeigt, welche Buchstaben, Ziffern und Satzzeichen die mitgelieferte eigens erstellte Schrift enthält und wie sie gezeichnet werden.

Funktionsweise: m_init bereitet Anzeige und Schrift vor. m_text zeichnet jede Zeile; m_put zeichnet das doppelte Anführungszeichen mit Zeichencode 34.

Bedienung und erwartetes Ergebnis: Prüfen Sie, ob 26 Großbuchstaben, 26 Kleinbuchstaben, 10 Ziffern und 30 Satzzeichen erscheinen und alle Zeichen gut lesbar sind. Es ist keine Eingabe erforderlich.

Den mitgelieferten Zeichensatz anzeigen: Prüfen Sie, ob 26 Großbuchstaben, 26 Kleinbuchstaben, 10 Ziffern und 30 Satzzeichen erscheinen und alle Zeichen gut lesbar sind. Es ist keine Eingabe erforderlich.
Anzeigebeispiel: Prüfen Sie, ob 26 Großbuchstaben, 26 Kleinbuchstaben, 10 Ziffern und 30 Satzzeichen erscheinen und alle Zeichen gut lesbar sind. Es ist keine Eingabe erforderlich.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Die erste Textausgabe gb_hello

Zweck: Zeigt den grundlegenden Ablauf zum Starten einer ROM und zum Zeichnen von Text und einer Zahl im Hintergrund.

Funktionsweise: Nach m_init zeichnet m_text die Begrüßung und m_number formatiert 42. Die abschließende Schleife wartet auf Frames und lässt das Bild sichtbar.

Bedienung und erwartetes Ergebnis: Der Bildschirm zeigt HELLO WORLD und 042. Die führende Null entsteht durch die Dezimaldarstellung mit drei Stellen.

Die erste Textausgabe: Der Bildschirm zeigt HELLO WORLD und 042. Die führende Null entsteht durch die Dezimaldarstellung mit drei Stellen.
Anzeigebeispiel: Der Bildschirm zeigt HELLO WORLD und 042. Die führende Null entsteht durch die Dezimaldarstellung mit drei Stellen.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Mit breiterem Zwischentyp rechnen gb_arithmetic

Zweck: Zeigt, wie ein Zwischenergebnis gespeichert wird, das nicht in acht Bit passt.

Funktionsweise: (u16)200 + 100 ergibt 300. Das Programm teilt das Ergebnis durch 10 und wandelt es anschließend zur Anzeige in u8 um. Beachten Sie, dass die Typverbreiterung vor der Addition erfolgt.

Bedienung und erwartetes Ergebnis: 030 steht für das berechnete Ergebnis 30.

Mit breiterem Zwischentyp rechnen: 030 steht für das berechnete Ergebnis 30.
Anzeigebeispiel: 030 steht für das berechnete Ergebnis 30.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Verzweigungen und Schleifen gb_control

Zweck: Erprobt for, continue, while, do/while und switch in einer kleinen Berechnung.

Funktionsweise: Die Summe von 0 bis 7 ohne 3 ergibt 25. Die while-Schleife erhöht auf 30, do/while auf 32, und switch wählt case 32, um 42 zuzuweisen.

Bedienung und erwartetes Ergebnis: 042 ist das Endergebnis dieser Schleifen und Verzweigungen.

Verzweigungen und Schleifen: 042 ist das Endergebnis dieser Schleifen und Verzweigungen.
Anzeigebeispiel: 042 ist das Endergebnis dieser Schleifen und Verzweigungen.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Funktionen, Arrays, Strukturen und Zeiger gb_aggregate

Zweck: Zeigt, wie Werte gruppiert und über Funktionen und Zeiger angesprochen werden.

Funktionsweise: Das Programm kopiert einen Point mit (10,20) und schreibt dann über einen Zeiger 1 bis 4 in ein Array. Es addiert das Funktionsergebnis 30, die Arraywerte 1, 2 und 4 sowie die Konstante 5.

Bedienung und erwartetes Ergebnis: Die Summe wird als 042 angezeigt. Verfolgen Sie die Strukturkopie, die Schreibzugriffe auf ptr[i] und den Rückgabewert der Funktion.

Funktionen, Arrays, Strukturen und Zeiger: Die Summe wird als 042 angezeigt. Verfolgen Sie die Strukturkopie, die Schreibzugriffe auf ptr[i] und den Rückgabewert der Funktion.
Anzeigebeispiel: Die Summe wird als 042 angezeigt. Verfolgen Sie die Strukturkopie, die Schreibzugriffe auf ptr[i] und den Rückgabewert der Funktion.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Bitflags und Pufferkopie gb_bits_memory

Zweck: Packt Flags in ein Byte und kopiert einen Puffer in einen getrennten Speicherbereich.

Funktionsweise: __memset löscht vier Bytes. Das Programm setzt Bit 3, invertiert Bit 1 und kopiert anschließend alle vier Bytes mit __memcpy.

Bedienung und erwartetes Ergebnis: Das erste Zielbyte wird als 010 angezeigt; Bit 3 trägt 8 und Bit 1 trägt 2 bei.

Bitflags und Pufferkopie: Das erste Zielbyte wird als 010 angezeigt; Bit 3 trägt 8 und Bit 1 trägt 2 bei.
Anzeigebeispiel: Das erste Zielbyte wird als 010 angezeigt; Bit 3 trägt 8 und Bit 1 trägt 2 bei.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Neue Tastendrücke zählen gb_input

Zweck: Unterscheidet einen neuen Tastendruck von einer weiterhin gedrückten Taste.

Funktionsweise: In jedem Frame wird input_update aufgerufen. Der Zähler steigt nur, wenn input_pressed(BTN_A) wahr ist.

Bedienung und erwartetes Ergebnis: Der Anfangswert ist 000. Drücken Sie A, um 001 zu erhalten; Gedrückthalten erhöht den Zähler nicht weiter. Loslassen und erneut drücken ergibt 002. Der Bytezähler springt nach 255 auf 000 zurück.

Neue Tastendrücke zählen: Der Anfangswert ist 000. Drücken Sie A, um 001 zu erhalten; Gedrückthalten erhöht den Zähler nicht weiter. Loslassen und erneut drücken ergibt 002. Der Bytezähler springt nach 255 auf 000 zurück.
Anzeigebeispiel: Der Anfangswert ist 000. Drücken Sie A, um 001 zu erhalten; Gedrückthalten erhöht den Zähler nicht weiter. Loslassen und erneut drücken ergibt 002. Der Bytezähler springt nach 255 auf 000 zurück.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Q8.8-Festkommawerte multiplizieren gb_fixed

Zweck: Zeigt die Umwandlung von Ganzzahlen in Q8.8, die Multiplikation und die Rückwandlung in eine Ganzzahl.

Funktionsweise: fix_from_int wandelt 3 und 4 in Q8.8 um. fix_mul multipliziert sie, und fix_to_int wandelt das Produkt wieder in eine Ganzzahl um.

Bedienung und erwartetes Ergebnis: 012 bedeutet 3 × 4 = 12. Es ist die umgewandelte Ganzzahl, nicht der intern mit 256 skalierte Wert.

Q8.8-Festkommawerte multiplizieren: 012 bedeutet 3 × 4 = 12. Es ist die umgewandelte Ganzzahl, nicht der intern mit 256 skalierte Wert.
Anzeigebeispiel: 012 bedeutet 3 × 4 = 12. Es ist die umgewandelte Ganzzahl, nicht der intern mit 256 skalierte Wert.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Aus einem festen Objektpool zuweisen gb_entity

Zweck: Erzeugt ein Objekt aus einer festen Menge von Speicherplätzen, ohne dynamische Speicherzuweisung.

Funktionsweise: entity_init setzt den Pool zurück. entity_create erzeugt Typ 1 bei (20,30); das Programm prüft auf die Fehler-ID 0xFF, bevor es vx auf 2 setzt.

Bedienung und erwartetes Ergebnis: 001 ist die Anzahl aktiver Objekte, keine ID oder Koordinate. Das Beispiel aktualisiert und zeichnet das Objekt nicht; daher erscheint keine bewegte Figur.

Aus einem festen Objektpool zuweisen: 001 ist die Anzahl aktiver Objekte, keine ID oder Koordinate. Das Beispiel aktualisiert und zeichnet das Objekt nicht; daher erscheint keine bewegte Figur.
Anzeigebeispiel: 001 ist die Anzahl aktiver Objekte, keine ID oder Koordinate. Das Beispiel aktualisiert und zeichnet das Objekt nicht; daher erscheint keine bewegte Figur.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Einen Diagnosewert im RAM aufzeichnen gb_debug

Zweck: Speichert einen benannten Spielwert getrennt von der Bildschirmanzeige in einem Diagnosepuffer.

Funktionsweise: Das Programm initialisiert die Diagnose, setzt die Framekennung auf 1 und zeichnet den Wert 42 unter dem Namen HP auf.

Bedienung und erwartetes Ergebnis: 001 ist die Anzahl der Trace-Einträge. HP=42 liegt im Diagnosepuffer; der Bildschirm allein zeigt oder bestätigt diesen Inhalt nicht.

Einen Diagnosewert im RAM aufzeichnen: 001 ist die Anzahl der Trace-Einträge. HP=42 liegt im Diagnosepuffer; der Bildschirm allein zeigt oder bestätigt diesen Inhalt nicht.
Anzeigebeispiel: 001 ist die Anzahl der Trace-Einträge. HP=42 liegt im Diagnosepuffer; der Bildschirm allein zeigt oder bestätigt diesen Inhalt nicht.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Einen Positionsverlauf speichern gb_chain

Zweck: Zeigt, wie ein Positionsverlauf in einem Ringpuffer gespeichert wird.

Funktionsweise: chain_init bindet ein Array mit Platz für vier Punkte ein. Anschließend zeichnet chain_push_head (20,30) auf.

Bedienung und erwartetes Ergebnis: 042 ist eine feste Abschlussmarkierung, keine Koordinate oder Anzahl. Prüfen Sie trail und points für den gespeicherten Verlauf. Dieses Programm zeichnet keinen nachfolgenden Körper.

Einen Positionsverlauf speichern: 042 ist eine feste Abschlussmarkierung, keine Koordinate oder Anzahl. Prüfen Sie trail und points für den gespeicherten Verlauf. Dieses Programm zeichnet keinen nachfolgenden Körper.
Anzeigebeispiel: 042 ist eine feste Abschlussmarkierung, keine Koordinate oder Anzahl. Prüfen Sie trail und points für den gespeicherten Verlauf. Dieses Programm zeichnet keinen nachfolgenden Körper.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Den Framezähler der Bibliothek lesen gb_system

Zweck: Zeigt, wie Wartezeiten in Frames den Framezähler der Bibliothek beeinflussen.

Funktionsweise: Nach system_init ruft das Programm system_wait_vblank zweimal auf und zeigt system_get_frame8 an.

Bedienung und erwartetes Ergebnis: Das Ergebnis ist 002. Die Warteschleife verwendet die Handbuch-Hilfsfunktion m_wait; der angezeigte Wert steigt daher nicht weiter.

Den Framezähler der Bibliothek lesen: Das Ergebnis ist 002. Die Warteschleife verwendet die Handbuch-Hilfsfunktion m_wait; der angezeigte Wert steigt daher nicht weiter.
Anzeigebeispiel: Das Ergebnis ist 002. Die Warteschleife verwendet die Handbuch-Hilfsfunktion m_wait; der angezeigte Wert steigt daher nicht weiter.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Die aktuelle Szenen-ID wählen gb_scene

Zweck: Zeigt, wie eine ID zur Unterscheidung von Szenen wie Titelbildschirm und Spiel gewählt wird.

Funktionsweise: Das Programm registriert zwei mit null initialisierte SceneDef-Einträge und wählt mit scene_change die ID 1.

Bedienung und erwartetes Ergebnis: 001 ist die aktuelle von scene_get_current gelieferte ID. In diesem Beispiel sind weder Szenen-Callbacks noch Übergangszeichnungen registriert.

Die aktuelle Szenen-ID wählen: 001 ist die aktuelle von scene_get_current gelieferte ID. In diesem Beispiel sind weder Szenen-Callbacks noch Übergangszeichnungen registriert.
Anzeigebeispiel: 001 ist die aktuelle von scene_get_current gelieferte ID. In diesem Beispiel sind weder Szenen-Callbacks noch Übergangszeichnungen registriert.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Den mitgelieferten Zeichensatz anzeigen fc_font

Zweck: Zeigt, welche Buchstaben, Ziffern und Satzzeichen die mitgelieferte eigens erstellte Schrift enthält und wie sie gezeichnet werden.

Funktionsweise: m_init bereitet Anzeige und Schrift vor. m_text zeichnet jede Zeile; m_put zeichnet das doppelte Anführungszeichen mit Zeichencode 34.

Bedienung und erwartetes Ergebnis: Prüfen Sie, ob 26 Großbuchstaben, 26 Kleinbuchstaben, 10 Ziffern und 30 Satzzeichen erscheinen und alle Zeichen gut lesbar sind. Es ist keine Eingabe erforderlich.

Den mitgelieferten Zeichensatz anzeigen: Prüfen Sie, ob 26 Großbuchstaben, 26 Kleinbuchstaben, 10 Ziffern und 30 Satzzeichen erscheinen und alle Zeichen gut lesbar sind. Es ist keine Eingabe erforderlich.
Anzeigebeispiel: Prüfen Sie, ob 26 Großbuchstaben, 26 Kleinbuchstaben, 10 Ziffern und 30 Satzzeichen erscheinen und alle Zeichen gut lesbar sind. Es ist keine Eingabe erforderlich.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Die erste Textausgabe fc_hello

Zweck: Zeigt den grundlegenden Ablauf zum Starten einer ROM und zum Zeichnen von Text und einer Zahl im Hintergrund.

Funktionsweise: Nach m_init zeichnet m_text die Begrüßung und m_number formatiert 42. Die abschließende Schleife wartet auf Frames und lässt das Bild sichtbar.

Bedienung und erwartetes Ergebnis: Der Bildschirm zeigt HELLO WORLD und 042. Die führende Null entsteht durch die Dezimaldarstellung mit drei Stellen.

Die erste Textausgabe: Der Bildschirm zeigt HELLO WORLD und 042. Die führende Null entsteht durch die Dezimaldarstellung mit drei Stellen.
Anzeigebeispiel: Der Bildschirm zeigt HELLO WORLD und 042. Die führende Null entsteht durch die Dezimaldarstellung mit drei Stellen.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Mit breiterem Zwischentyp rechnen fc_arithmetic

Zweck: Zeigt, wie ein Zwischenergebnis gespeichert wird, das nicht in acht Bit passt.

Funktionsweise: (u16)200 + 100 ergibt 300. Das Programm teilt das Ergebnis durch 10 und wandelt es anschließend zur Anzeige in u8 um. Beachten Sie, dass die Typverbreiterung vor der Addition erfolgt.

Bedienung und erwartetes Ergebnis: 030 steht für das berechnete Ergebnis 30.

Mit breiterem Zwischentyp rechnen: 030 steht für das berechnete Ergebnis 30.
Anzeigebeispiel: 030 steht für das berechnete Ergebnis 30.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Verzweigungen und Schleifen fc_control

Zweck: Erprobt for, continue, while und if/else in einer kleinen Berechnung.

Funktionsweise: Die for-Schleife addiert 0 bis 7, überspringt dabei 3 und erhält 25. Die while-Schleife zählt bis 32 weiter; das folgende if weist bei Übereinstimmung den Wert 42 zu.

Bedienung und erwartetes Ergebnis: 042 ist das Endergebnis. Das Programm verwendet eine if/else-Verzweigung.

Verzweigungen und Schleifen: Das Endergebnis ist 042. Dieses Programm verwendet eine if/else-Verzweigung.
Anzeigebeispiel: 042 ist das Endergebnis. Das Programm verwendet eine if/else-Verzweigung.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Funktionen, Arrays, Strukturen und Zeiger fc_aggregate

Zweck: Zeigt, wie Werte gruppiert und über Funktionen und Zeiger angesprochen werden.

Funktionsweise: Das Programm kopiert einen Point mit (10,20) und schreibt dann über einen Zeiger 1 bis 4 in ein Array. Es addiert das Funktionsergebnis 30, die Arraywerte 1, 2 und 4 sowie die Konstante 5.

Bedienung und erwartetes Ergebnis: Die Summe wird als 042 angezeigt. Verfolgen Sie die Strukturkopie, die Schreibzugriffe auf ptr[i] und den Rückgabewert der Funktion.

Funktionen, Arrays, Strukturen und Zeiger: Die Summe wird als 042 angezeigt. Verfolgen Sie die Strukturkopie, die Schreibzugriffe auf ptr[i] und den Rückgabewert der Funktion.
Anzeigebeispiel: Die Summe wird als 042 angezeigt. Verfolgen Sie die Strukturkopie, die Schreibzugriffe auf ptr[i] und den Rückgabewert der Funktion.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Bitflags und Pufferkopie fc_bits_memory

Zweck: Packt Flags in ein Byte und kopiert einen Puffer in einen getrennten Speicherbereich.

Funktionsweise: __memset löscht vier Bytes. Das Programm setzt Bit 3, invertiert Bit 1 und kopiert anschließend alle vier Bytes mit __memcpy.

Bedienung und erwartetes Ergebnis: Das erste Zielbyte wird als 010 angezeigt; Bit 3 trägt 8 und Bit 1 trägt 2 bei.

Bitflags und Pufferkopie: Das erste Zielbyte wird als 010 angezeigt; Bit 3 trägt 8 und Bit 1 trägt 2 bei.
Anzeigebeispiel: Das erste Zielbyte wird als 010 angezeigt; Bit 3 trägt 8 und Bit 1 trägt 2 bei.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Neue Tastendrücke zählen fc_input

Zweck: Unterscheidet einen neuen Tastendruck von einer weiterhin gedrückten Taste.

Funktionsweise: In jedem Frame wird input_update aufgerufen. Der Zähler steigt nur, wenn input_pressed(BTN_A) wahr ist.

Bedienung und erwartetes Ergebnis: Der Anfangswert ist 000. Drücken Sie A, um 001 zu erhalten; Gedrückthalten erhöht den Zähler nicht weiter. Loslassen und erneut drücken ergibt 002. Der Bytezähler springt nach 255 auf 000 zurück.

Neue Tastendrücke zählen: Der Anfangswert ist 000. Drücken Sie A, um 001 zu erhalten; Gedrückthalten erhöht den Zähler nicht weiter. Loslassen und erneut drücken ergibt 002. Der Bytezähler springt nach 255 auf 000 zurück.
Anzeigebeispiel: Der Anfangswert ist 000. Drücken Sie A, um 001 zu erhalten; Gedrückthalten erhöht den Zähler nicht weiter. Loslassen und erneut drücken ergibt 002. Der Bytezähler springt nach 255 auf 000 zurück.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Q8.8-Festkommawerte multiplizieren fc_fixed

Zweck: Zeigt die Umwandlung von Ganzzahlen in Q8.8, die Multiplikation und die Rückwandlung in eine Ganzzahl.

Funktionsweise: fix_from_int wandelt 3 und 4 in Q8.8 um. fix_mul multipliziert sie, und fix_to_int wandelt das Produkt wieder in eine Ganzzahl um.

Bedienung und erwartetes Ergebnis: 012 bedeutet 3 × 4 = 12. Es ist die umgewandelte Ganzzahl, nicht der intern mit 256 skalierte Wert.

Q8.8-Festkommawerte multiplizieren: 012 bedeutet 3 × 4 = 12. Es ist die umgewandelte Ganzzahl, nicht der intern mit 256 skalierte Wert.
Anzeigebeispiel: 012 bedeutet 3 × 4 = 12. Es ist die umgewandelte Ganzzahl, nicht der intern mit 256 skalierte Wert.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Aus einem festen Objektpool zuweisen fc_entity

Zweck: Erzeugt ein Objekt aus einer festen Menge von Speicherplätzen, ohne dynamische Speicherzuweisung.

Funktionsweise: entity_init setzt den Pool zurück. entity_create erzeugt Typ 1 bei (20,30); das Programm prüft auf die Fehler-ID 0xFF, bevor es vx auf 2 setzt.

Bedienung und erwartetes Ergebnis: 001 ist die Anzahl aktiver Objekte, keine ID oder Koordinate. Das Beispiel aktualisiert und zeichnet das Objekt nicht; daher erscheint keine bewegte Figur.

Aus einem festen Objektpool zuweisen: 001 ist die Anzahl aktiver Objekte, keine ID oder Koordinate. Das Beispiel aktualisiert und zeichnet das Objekt nicht; daher erscheint keine bewegte Figur.
Anzeigebeispiel: 001 ist die Anzahl aktiver Objekte, keine ID oder Koordinate. Das Beispiel aktualisiert und zeichnet das Objekt nicht; daher erscheint keine bewegte Figur.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Einen Diagnosewert im RAM aufzeichnen fc_debug

Zweck: Speichert einen benannten Spielwert getrennt von der Bildschirmanzeige in einem Diagnosepuffer.

Funktionsweise: Das Programm initialisiert die Diagnose, setzt die Framekennung auf 1 und zeichnet den Wert 42 unter dem Namen HP auf.

Bedienung und erwartetes Ergebnis: 001 ist die Anzahl der Trace-Einträge. HP=42 liegt im Diagnosepuffer; der Bildschirm allein zeigt oder bestätigt diesen Inhalt nicht.

Einen Diagnosewert im RAM aufzeichnen: 001 ist die Anzahl der Trace-Einträge. HP=42 liegt im Diagnosepuffer; der Bildschirm allein zeigt oder bestätigt diesen Inhalt nicht.
Anzeigebeispiel: 001 ist die Anzahl der Trace-Einträge. HP=42 liegt im Diagnosepuffer; der Bildschirm allein zeigt oder bestätigt diesen Inhalt nicht.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Einen Positionsverlauf speichern fc_chain

Zweck: Zeigt, wie ein Positionsverlauf in einem Ringpuffer gespeichert wird.

Funktionsweise: chain_init bindet ein Array mit Platz für vier Punkte ein. Anschließend zeichnet chain_push_head (20,30) auf.

Bedienung und erwartetes Ergebnis: 042 ist eine feste Abschlussmarkierung, keine Koordinate oder Anzahl. Prüfen Sie trail und points für den gespeicherten Verlauf. Dieses Programm zeichnet keinen nachfolgenden Körper.

Einen Positionsverlauf speichern: 042 ist eine feste Abschlussmarkierung, keine Koordinate oder Anzahl. Prüfen Sie trail und points für den gespeicherten Verlauf. Dieses Programm zeichnet keinen nachfolgenden Körper.
Anzeigebeispiel: 042 ist eine feste Abschlussmarkierung, keine Koordinate oder Anzahl. Prüfen Sie trail und points für den gespeicherten Verlauf. Dieses Programm zeichnet keinen nachfolgenden Körper.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Den Framezähler der Bibliothek lesen fc_system

Zweck: Zeigt, wie Wartezeiten in Frames den Framezähler der Bibliothek beeinflussen.

Funktionsweise: Nach system_init ruft das Programm system_wait_vblank zweimal auf und zeigt system_get_frame8 an.

Bedienung und erwartetes Ergebnis: Das Ergebnis ist 002. Die Warteschleife verwendet die Handbuch-Hilfsfunktion m_wait; der angezeigte Wert steigt daher nicht weiter.

Den Framezähler der Bibliothek lesen: Das Ergebnis ist 002. Die Warteschleife verwendet die Handbuch-Hilfsfunktion m_wait; der angezeigte Wert steigt daher nicht weiter.
Anzeigebeispiel: Das Ergebnis ist 002. Die Warteschleife verwendet die Handbuch-Hilfsfunktion m_wait; der angezeigte Wert steigt daher nicht weiter.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Die aktuelle Szenen-ID wählen fc_scene

Zweck: Zeigt, wie eine ID zur Unterscheidung von Szenen wie Titelbildschirm und Spiel gewählt wird.

Funktionsweise: Das Programm registriert zwei mit null initialisierte SceneDef-Einträge und wählt mit scene_change die ID 1.

Bedienung und erwartetes Ergebnis: 001 ist die aktuelle von scene_get_current gelieferte ID. In diesem Beispiel sind weder Szenen-Callbacks noch Übergangszeichnungen registriert.

Die aktuelle Szenen-ID wählen: 001 ist die aktuelle von scene_get_current gelieferte ID. In diesem Beispiel sind weder Szenen-Callbacks noch Übergangszeichnungen registriert.
Anzeigebeispiel: 001 ist die aktuelle von scene_get_current gelieferte ID. In diesem Beispiel sind weder Szenen-Callbacks noch Übergangszeichnungen registriert.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Weltkoordinaten in Bildschirmkoordinaten umwandeln gb_camera

Zweck: Zieht die Kameraposition ab, um die Bildschirmposition eines Weltpunkts zu bestimmen.

Funktionsweise: Camera_Set erhält den Q8.8-Wert 2560, also X=10 Pixel. Anschließend wandelt Camera_WorldToScreenX die Weltkoordinate X=52 um.

Bedienung und erwartetes Ergebnis: 052 minus 010 ergibt die angezeigte 042. Dies ist eine Koordinatenberechnung; der Hintergrund wird nicht gescrollt.

Weltkoordinaten in Bildschirmkoordinaten umwandeln: 052 minus 010 ergibt die angezeigte 042. Dies ist eine Koordinatenberechnung; der Hintergrund wird nicht gescrollt.
Anzeigebeispiel: 052 minus 010 ergibt die angezeigte 042. Dies ist eine Koordinatenberechnung; der Hintergrund wird nicht gescrollt.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

RLE-Daten in den RAM entpacken gb_rle

Zweck: Erprobt eine kompakte Darstellung wiederholter Bytes als Anzahl und Wert.

Funktionsweise: Die gepackten Bytes {3,42,0} bedeuten drei Kopien von 42, gefolgt von einer Nullanzahl als Endmarke. rle_decode schreibt in einen drei Byte großen Zielpuffer.

Bedienung und erwartetes Ergebnis: Das letzte Byte, out[2], wird als 042 angezeigt. Alle drei entpackten Bytes sollen den Wert 42 enthalten.

RLE-Daten in den RAM entpacken: Das letzte Byte, out[2], wird als 042 angezeigt. Alle drei entpackten Bytes sollen den Wert 42 enthalten.
Anzeigebeispiel: Das letzte Byte, out[2], wird als 042 angezeigt. Alle drei entpackten Bytes sollen den Wert 42 enthalten.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Ein Brettfeld lesen und schreiben gb_board

Zweck: Zeigt, wie Rasterkoordinaten eines Brettspiels auf Speicherpositionen abgebildet werden.

Funktionsweise: Ein 16-Byte-Array speichert ein 4×4-Brett. Das Programm löscht es, schreibt 42 in Zelle (2,1) und liest dieselbe Zelle wieder.

Bedienung und erwartetes Ergebnis: 042 ist der zurückgelesene Wert. Das Programm zeichnet das 4×4-Brett selbst nicht.

Ein Brettfeld lesen und schreiben: 042 ist der zurückgelesene Wert. Das Programm zeichnet das 4×4-Brett selbst nicht.
Anzeigebeispiel: 042 ist der zurückgelesene Wert. Das Programm zeichnet das 4×4-Brett selbst nicht.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Eine Box um einen Physikschritt bewegen gb_physics

Zweck: Initialisiert eine Welt und einen rechteckigen Körper und aktualisiert dann die Position anhand der Geschwindigkeit.

Funktionsweise: Der Körper startet bei (40,40) mit Geschwindigkeit (2,0) und Schwerkraft null. Das Programm ruft kq2d_step einmal auf.

Bedienung und erwartetes Ergebnis: 042 ist die resultierende X-Koordinate, hier in ganzen Pixeln. Es werden weder eine Boxform noch eine fortlaufende Animation gezeichnet.

Eine Box um einen Physikschritt bewegen: 042 ist die resultierende X-Koordinate, hier in ganzen Pixeln. Es werden weder eine Boxform noch eine fortlaufende Animation gezeichnet.
Anzeigebeispiel: 042 ist die resultierende X-Koordinate, hier in ganzen Pixeln. Es werden weder eine Boxform noch eine fortlaufende Animation gezeichnet.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

ROM-Daten mit einem Bankargument lesen gb_bank

Zweck: Erklärt die Argumente zum Kopieren von ROM-Daten in den RAM.

Funktionsweise: far_data_read kopiert die beiden Bytes 7 und 42 mit Bankargument 0 und Länge 2 nach copied.

Bedienung und erwartetes Ergebnis: Das zweite Zielbyte wird als 042 angezeigt. Dieses Beispiel liest aus fest eingeblendetem ROM; es zeigt keine Übertragung zwischen verschiedenen umschaltbaren Banken.

ROM-Daten mit einem Bankargument lesen: Das zweite Zielbyte wird als 042 angezeigt. Dieses Beispiel liest aus fest eingeblendetem ROM; es zeigt keine Übertragung zwischen verschiedenen umschaltbaren Banken.
Anzeigebeispiel: Das zweite Zielbyte wird als 042 angezeigt. Dieses Beispiel liest aus fest eingeblendetem ROM; es zeigt keine Übertragung zwischen verschiedenen umschaltbaren Banken.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Daten anhand der Asset-ID laden gb_asset

Zweck: Registriert Position und Länge eines Assets und ruft anschließend seine Bytes anhand der ID ab.

Funktionsweise: Asset 0 hat Typ RAW, Bank 0, einen Zeiger auf {7,42} und Länge 2. asset_load_raw kopiert es in einen Zwei-Byte-RAM-Puffer.

Bedienung und erwartetes Ergebnis: Das zweite Byte wird als 042 angezeigt. Das Beispiel demonstriert das Auffinden und Kopieren von Assets, keine Bilddarstellung.

Daten anhand der Asset-ID laden: Das zweite Byte wird als 042 angezeigt. Das Beispiel demonstriert das Auffinden und Kopieren von Assets, keine Bilddarstellung.
Anzeigebeispiel: Das zweite Byte wird als 042 angezeigt. Das Beispiel demonstriert das Auffinden und Kopieren von Assets, keine Bilddarstellung.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Ein Geschoss zuweisen gb_danmaku

Zweck: Initialisiert den Geschosspool und prüft seine Belegung nach dem Erzeugen eines Geschosses.

Funktionsweise: Nach danmaku_reset ruft das Programm danmaku_spawn(40,40,16,0) auf und zeigt dm_count an.

Bedienung und erwartetes Ergebnis: 001 ist die Anzahl zugewiesener Geschosse. Es gibt hier weder eine Geschoss-Aktualisierungsschleife noch eine Hintergrundkomposition; bewegte Geschosse werden nicht gezeichnet.

Ein Geschoss zuweisen: 001 ist die Anzahl zugewiesener Geschosse. Es gibt hier weder eine Geschoss-Aktualisierungsschleife noch eine Hintergrundkomposition; bewegte Geschosse werden nicht gezeichnet.
Anzeigebeispiel: 001 ist die Anzahl zugewiesener Geschosse. Es gibt hier weder eine Geschoss-Aktualisierungsschleife noch eine Hintergrundkomposition; bewegte Geschosse werden nicht gezeichnet.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Gebrochene Q5.3-Bewegung aufsummieren fc_subpixel

Zweck: Behält Subpixelbewegungen als Rest bei und überträgt ganze Pixel auf die Position.

Funktionsweise: Ausgehend von X=40 addiert die Schleife achtmal 2/8 Pixel. Eine Rechtsverschiebung liefert die ganzen Pixel; eine Maske behält den Rest bei.

Bedienung und erwartetes Ergebnis: Die Gesamtbewegung beträgt zwei Pixel; deshalb erscheint X=42 als 042. Dieses Beispiel manueller Integration behandelt positive Bewegung; negative Bewegung benötigt einen entsprechenden Übertrag beim Subtrahieren.

Gebrochene Q5.3-Bewegung aufsummieren: Die Gesamtbewegung beträgt zwei Pixel; deshalb erscheint X=42 als 042. Dieses Beispiel manueller Integration behandelt positive Bewegung; negative Bewegung benötigt einen entsprechenden Übertrag beim Subtrahieren.
Anzeigebeispiel: Die Gesamtbewegung beträgt zwei Pixel; deshalb erscheint X=42 als 042. Dieses Beispiel manueller Integration behandelt positive Bewegung; negative Bewegung benötigt einen entsprechenden Übertrag beim Subtrahieren.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Eine CGB-Hintergrundpalette einstellen gb_cgb_palette

Zweck: Wählt Hintergrund- und Textfarben anhand der RGB-Komponenten des Game Boy Color.

Funktionsweise: Das Programm schaltet das LCD im VBlank aus, setzt Farbe 0 der Palette 0 auf Weiß (31,31,31) und Farbe 3 auf Violett (12,0,22) und aktiviert dann die Anzeige.

Bedienung und erwartetes Ergebnis: Führen Sie das Programm im CGB-Modus aus, um violetten Text und 042 auf weißem Hintergrund zu sehen. Die monochrome DMG-Ausgabe kann diese Farben nicht darstellen.

Eine CGB-Hintergrundpalette einstellen: Führen Sie das Programm im CGB-Modus aus, um violetten Text und 042 auf weißem Hintergrund zu sehen. Die monochrome DMG-Ausgabe kann diese Farben nicht darstellen.
Anzeigebeispiel: Führen Sie das Programm im CGB-Modus aus, um violetten Text und 042 auf weißem Hintergrund zu sehen. Die monochrome DMG-Ausgabe kann diese Farben nicht darstellen.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Den Hintergrund horizontal scrollen gb_scroll

Zweck: Verschiebt die Ansicht, ohne den Hintergrundinhalt neu zu zeichnen.

Funktionsweise: Jeder Frame erhöht phase und übergibt den Wert an Scroll_SetBg. Die Acht-Bit-Position springt nach 255 auf null zurück.

Bedienung und erwartetes Ergebnis: Das Wort SCROLL bewegt sich nach links. Beobachten Sie seine Position über die Zeit; eine einzelne Aufnahme kann die Bewegung nicht zeigen.

Den Hintergrund horizontal scrollen: Das Wort SCROLL bewegt sich nach links. Beobachten Sie seine Position über die Zeit; eine einzelne Aufnahme kann die Bewegung nicht zeigen.
Anzeigebeispiel: Das Wort SCROLL bewegt sich nach links. Beobachten Sie seine Position über die Zeit; eine einzelne Aufnahme kann die Bewegung nicht zeigen.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Eine Tile-Aktualisierung einreihen gb_vram_queue

Zweck: Trennt eine Zeichenanforderung von der VRAM-Übertragung, die sie umsetzt.

Funktionsweise: vram_queue_bg_tile reiht Tile 52 für Tile-Koordinate (3,8) ein, und vram_flush überträgt es. In der mitgelieferten Schrift ist Tile 52 die Ziffer 4.

Bedienung und erwartetes Ergebnis: Achten Sie auf eine einzelne 4 bei Hintergrund-Tile-Koordinate (3,8). Dies ist eine Tile-Aktualisierung, kein Zahlenzähler.

Eine Tile-Aktualisierung einreihen: Achten Sie auf eine einzelne 4 bei Hintergrund-Tile-Koordinate (3,8). Dies ist eine Tile-Aktualisierung, kein Zahlenzähler.
Anzeigebeispiel: Achten Sie auf eine einzelne 4 bei Hintergrund-Tile-Koordinate (3,8). Dies ist eine Tile-Aktualisierung, kein Zahlenzähler.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Ein Sprite per OAM-DMA anzeigen gb_sprite

Zweck: Weist ein Sprite zu und zeigt es unabhängig vom Hintergrund an.

Funktionsweise: Der neu initialisierte Pool liefert Platz 0. Das Programm wählt Tile 65, setzt Position (70,80), aktiviert die OBJ-Anzeige und überträgt das Schatten-OAM in jedem Frame.

Bedienung und erwartetes Ergebnis: An der angegebenen Sprite-Position erscheint ein unbewegtes A. Prüfen Sie im Spiel vor Verwendung der zurückgegebenen ID, ob die Zuweisung fehlgeschlagen ist.

Ein Sprite per OAM-DMA anzeigen: An der angegebenen Spriteposition erscheint ein unbewegliches A. Prüfen Sie im Spiel, ob die Zuweisung fehlgeschlagen ist, bevor Sie die zurückgegebene ID verwenden.
Anzeigebeispiel: An der angegebenen Sprite-Position erscheint ein unbewegtes A. Prüfen Sie im Spiel vor Verwendung der zurückgegebenen ID, ob die Zuweisung fehlgeschlagen ist.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Einen reproduzierbaren Zufallswert erzeugen gb_rng

Zweck: Verwendet einen Startwert, um eine Pseudozufallsfolge zu reproduzieren.

Funktionsweise: rng_seed(1234) initialisiert den Generator; danach wird rng_range(10) einmal aufgerufen. Die Obergrenze 10 ist ausgeschlossen.

Bedienung und erwartetes Ergebnis: Der Bildschirm zeigt einen Wert von 000 bis 009. Ein Neustart desselben Programms mit demselben Startwert erzeugt ihn erneut; er ändert sich nicht in jedem Frame.

Einen reproduzierbaren Zufallswert erzeugen: Der Bildschirm zeigt einen Wert von 000 bis 009. Ein Neustart desselben Programms mit demselben Startwert erzeugt ihn erneut; er ändert sich nicht in jedem Frame.
Anzeigebeispiel: Der Bildschirm zeigt einen Wert von 000 bis 009. Ein Neustart desselben Programms mit demselben Startwert erzeugt ihn erneut; er ändert sich nicht in jedem Frame.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Ein Spielzustandsflag speichern gb_flags

Zweck: Stellt einen booleschen Zustand, etwa den Abschluss eines Ereignisses, durch eine Flagnummer dar.

Funktionsweise: Das Programm löscht Flag 12, setzt es und liest es mit flag_get zurück.

Bedienung und erwartetes Ergebnis: 001 bedeutet, dass Flag 12 wahr ist. Das Beispiel arbeitet mit RAM-Flags und erhält sie nicht über Aus- und Einschalten hinweg.

Ein Spielzustandsflag speichern: 001 bedeutet, dass Flag 12 wahr ist. Das Beispiel arbeitet mit RAM-Flags und erhält sie nicht über Aus- und Einschalten hinweg.
Anzeigebeispiel: 001 bedeutet, dass Flag 12 wahr ist. Das Beispiel arbeitet mit RAM-Flags und erhält sie nicht über Aus- und Einschalten hinweg.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Einen Kreis um einen Physikschritt bewegen gb_circle

Zweck: Richtet einen kreisförmigen Körper ein und aktualisiert seine Position anhand der Geschwindigkeit.

Funktionsweise: Der aktive Kreis hat Radius 4, Position (40,40) und Geschwindigkeit (2,0). Die Schwerkraft ist null und linear_damping_q8 ist 255; kq2dc_step wird einmal ausgeführt.

Bedienung und erwartetes Ergebnis: 042 ist die resultierende ganzzahlige X-Koordinate. Das Beispiel zeichnet weder einen Kreisumriss noch eine Kollisionsanimation.

Einen Kreis um einen Physikschritt bewegen: 042 ist die resultierende ganzzahlige X-Koordinate. Das Beispiel zeichnet weder einen Kreisumriss noch eine Kollisionsanimation.
Anzeigebeispiel: 042 ist die resultierende ganzzahlige X-Koordinate. Das Beispiel zeichnet weder einen Kreisumriss noch eine Kollisionsanimation.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Den NES-Hintergrund scrollen fc_scroll

Zweck: Verschiebt den Hintergrund durch Aktualisieren der PPU-Scrollposition.

Funktionsweise: Nach __scroll_set(0,0) erhöht das Programm phase einmal pro Frame und verwendet den Wert als horizontale Position.

Bedienung und erwartetes Ergebnis: Das Wort SCROLL ändert seine horizontale Position. phase springt von 255 auf 0 zurück. Dies ist kein Beispiel für eine breite Karte über mehrere Nametables.

Den NES-Hintergrund scrollen: Das Wort SCROLL ändert seine horizontale Position. phase springt von 255 auf 0 zurück. Dies ist kein Beispiel für eine breite Karte über mehrere Nametables.
Anzeigebeispiel: Das Wort SCROLL ändert seine horizontale Position. phase springt von 255 auf 0 zurück. Dies ist kein Beispiel für eine breite Karte über mehrere Nametables.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Eine Tile-Aktualisierung über NMI anwenden fc_vram_queue

Zweck: Reicht aus dem Hauptprogramm eine PPU-Aktualisierung ein, die anschließend im NMI-Ablauf angewendet wird.

Funktionsweise: __vramq_put reiht Tile 52 für Nametable-Adresse 0x2103 ein; __vramq_commit reicht die Aktualisierung ein. Diese Adresse entspricht Tile-Koordinate (3,8).

Bedienung und erwartetes Ergebnis: Bei Hintergrundkoordinate (3,8) erscheint eine einzelne 4. Tile 52 ist in der mitgelieferten Schrift die Ziffer 4.

Eine Tile-Aktualisierung über NMI anwenden: Bei Hintergrundkoordinate (3,8) erscheint eine einzelne 4. Tile 52 ist in der mitgelieferten Schrift die Ziffer 4.
Anzeigebeispiel: Bei Hintergrundkoordinate (3,8) erscheint eine einzelne 4. Tile 52 ist in der mitgelieferten Schrift die Ziffer 4.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Ein NES-OAM-Sprite anzeigen fc_sprite

Zweck: Bereitet Spritefarben und OAM-Daten vor, um ein Bild unabhängig vom Hintergrund zu zeichnen.

Funktionsweise: Das Programm lädt die Spritepalette, setzt Eintrag 0 auf Position (70,80), Tile 65 und Attribute 0, aktiviert die Darstellung und wiederholt den OAM-DMA.

Bedienung und erwartetes Ergebnis: Ein unbewegtes A erscheint als Sprite. Das Beispiel zeigt OAM-Einrichtung und -Übertragung, keine Animation.

Ein NES-OAM-Sprite anzeigen: Ein unbewegliches A erscheint als Sprite. Das Beispiel zeigt Einrichtung und Übertragung des OAM, keine Animation.
Anzeigebeispiel: Ein unbewegtes A erscheint als Sprite. Das Beispiel zeigt OAM-Einrichtung und -Übertragung, keine Animation.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Einen APU-Pulston abspielen fc_sound

Zweck: Stellt Steuer-, Timer- und Längenwerte des eingebauten NES-Pulskanals ein.

Funktionsweise: Nach nes_apu_init ruft das Programm nes_sfx_square1(0xBF,400,20) auf. Steuerwert 0xBF wählt konstante Lautstärke und hält den Längenzähler an, sodass der Ton anhält. 20 ist ein Index der Längentabelle, keine Dauer von 20 Frames.

Bedienung und erwartetes Ergebnis: Während 042 angezeigt wird, erklingt ein anhaltender Pulston. Beenden Sie ihn mit nes_apu_silence_all. Die Bildschirmanzeige allein bestätigt keine Tonausgabe.

Einen APU-Pulston abspielen: Während 042 angezeigt wird, erklingt ein anhaltender Pulston. Beenden Sie ihn mit nes_apu_silence_all. Die Bildschirmanzeige allein bestätigt keine Tonausgabe.
Anzeigebeispiel: Während 042 angezeigt wird, erklingt ein anhaltender Pulston. Beenden Sie ihn mit nes_apu_silence_all. Die Bildschirmanzeige allein bestätigt keine Tonausgabe.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren

Einen Soundeffekt in jedem Frame verarbeiten gb_sound

Zweck: Startet einen Soundeffekt-Datenstrom und lässt ihn durch regelmäßige Frameaktualisierungen fortschreiten.

Funktionsweise: Nach Audio_Init startet Audio_PlaySFX tone auf Kanal-ID 1. Die Hauptschleife ruft Audio_Update einmal pro Frame auf.

Bedienung und erwartetes Ergebnis: Ein kurzer Pulseffekt erklingt, während 042 sichtbar bleibt. Die Zahl ist eine feste Markierung, weder Lautstärke noch Wiedergabeposition. Beurteilen Sie den Klang über die Audioausgabe oder eine Aufnahme.

Einen Soundeffekt in jedem Frame verarbeiten: Ein kurzer Pulseffekt erklingt, während 042 sichtbar bleibt. Die Zahl ist eine feste Markierung, weder Lautstärke noch Wiedergabeposition. Beurteilen Sie den Klang über die Audioausgabe oder eine Aufnahme.
Anzeigebeispiel: Ein kurzer Pulseffekt erklingt, während 042 sichtbar bleibt. Die Zahl ist eine feste Markierung, weder Lautstärke noch Wiedergabeposition. Beurteilen Sie den Klang über die Audioausgabe oder eine Aufnahme.

Zum Beispiel im Compilerhandbuch zurückkehren / Zum Beispiel im Bibliothekshandbuch zurückkehren