Lilith.
⌕
Redaktionelle Illustration: Gemini schrieb einen Game-Boy-Emulator für ein Konferenz-Badge, die härtesten Fehler fanden aber echte Spiele
Illustration von Lilith · redaktioneller Remix

Auf der diesjährigen GitHub Universe spielt das Badge um den Hals Zelda. Steve Francia, der früher bei Google die Programmiersprache Go leitete, hat darauf mithilfe von Gemini einen NES-Emulator zum Laufen gebracht und danach auch Game Boy und Game Boy Color. Simon Willison, der schon im Vorjahr ein ähnliches Badge gehackt hatte, machte auf das Projekt aufmerksam.

Ein Badge mit RP2350 spielt Link's Awakening mit 60 Bildern pro Sekunde

Das Badge heißt Badger. Es hat einen Dual-Core-Chip RP2350 mit 230 MHz, ein Farbdisplay mit 320 × 240 Pixeln, 16 MB Flash und 8 MB PSRAM. Darauf läuft MonaOS 4.0, eine Umgebung auf Basis von MicroPython. Francia bekam seines ein paar Tage vor der Veranstaltung, mit einer Karte, auf der „hack this“ stand.

Am schnellsten wäre es gewesen, einen fertigen Emulator in C aufzuspielen. Laut Francia dauert das etwa zwanzig Minuten, doch das Badge verlöre dann seine Apps, den Kontaktaustausch per Bluetooth und die Infrarot-Schnitzeljagd über das Gelände. Er wollte den Emulator deshalb als gewöhnliche App innerhalb von MicroPython. Normales MicroPython schafft aber nur etwa 100.000 bis 200.000 Befehle pro Sekunde, ein NES braucht ungefähr das Zehnfache.

Abhilfe schuf der Viper-Modus, der typisiertes Python direkt in ARM-Maschinencode übersetzt. Der erste NES-Emulator umfasst rund 1.100 Zeilen und spielt Zelda laut Autor mit etwa 32 Bildern pro Sekunde. Der Game Boy Color war schwieriger: Sein Prozessor SM83 hat 512 Befehle, der des NES nur 56. Trotzdem gibt Francia an, dass die Prozessoremulation unter 12 ms und das Zeichnen unter 3 ms bleibt, sodass die Schleife in 16,6 ms pro Bild bei 60 Hz passt. Gespielt wird mit Touch-Tasten, nachdem man das Badge auf den Kopf gedreht hat.

Das Modell schrieb die Schleifen, der Mensch entschied und maß

Spannender als das Spiel selbst ist die Arbeitsteilung, die Francia ungewöhnlich genau beschreibt. Gemini 4 Argon entwarf nach seinen Worten die inneren Schleifen aus Prompts, die den Prozessor 6502, den Grafikchip und das Umschalten der Speicherbänke beschrieben. Francia legte eine Architektur mit vier Speicherzeigern fest, formte die Viper-Kernel und maß jede Zahl auf echter Hardware über USB. Die übrigen Fehler, schreibt er, sind von der Art, die man erst beim Ausführen findet.

Beim Game Boy galt das wörtlich. Pokémon Crystal startete mit leeren Rahmen, weil das Spiel den Stack-Pointer in den ROM richtet, um Schriften schnell zu kopieren. Francia gibt zu, dass er nicht wusste, dass die Hardware das überhaupt zulässt. Link's Awakening DX zerteilte den Helden beim Gehen nach unten für ein Bild in zwei Hälften, weil der Emulator den doppelten Takt des Game Boy Color nicht berücksichtigte. Ein Versuch, auf 300 MHz zu übertakten, ließ das Badge komplett einfrieren.

Für Entwickler steckt darin ein praktisches Muster. Die KI half jemandem ohne Wissen über Game-Boy-Hardware, in einem Bruchteil der Zeit zu einem funktionierenden Kern zu kommen. Der eigentliche Test waren aber das Budget von 16,6 ms und ein Stapel Module aus den Neunzigern, die jede falsche Annahme gnadenlos offenlegten.

Wie viel Code Gemini schrieb, verrät der Autor nicht

Aus dem Bericht geht nicht hervor, welcher Anteil des Codes vom Modell stammt und wie viel Francia umgeschrieben hat. Es gibt auch keine Übersicht, wie viele Versuche scheiterten, bevor eine Schleife lief. Ohne das ist das Projekt eher eine gelungene Vorführung eines erfahrenen Ingenieurs als ein Beweis, dass ein Modell allein einen Emulator schreibt.

Das Projekt hat auch gewöhnliche Grenzen. Das Badge hat keinen Lautsprecher, der NES-Port läuft also stumm. Der Code ist Open Source, Spiele liefert der Autor aber nicht mit, jeder muss eigene, legal beschaffte ROMs aufspielen. Für ein Konferenz-Badge ist das ein Spielzeug für ein paar Tage, keine Plattform.

Ob sich die Viper-Tricks durchsetzen, zeigen weitere Badge-Hacker

Francia hat das Repository veröffentlicht und fünf Tricks, die er vom Game Boy zurück in den NES-Emulator übertragen hat und die auch diesen beschleunigten. Das erste Signal ist, ob andere Badge-Besitzer oder die MicroPython-Community sie aufgreifen.

Das zweite Signal betrifft die Arbeitsweise. Wenn ähnliche Projekte anfangen, Prompt-Protokolle und den Codeanteil des Modells offenzulegen, wie es Willison im Vorjahr mit Claude Code bei seinem Badge getan hat, lässt sich vergleichen, wo KI wirklich Wochen gespart und wo sie die Arbeit nur ins Debugging verschoben hat.

Liliths Urteil

Gemini schrieb einen Game Boy, der jeden Prompt bestand, und dann kam Professor Eich mit leeren Rahmen. Wer wissen will, ob KI-Code funktioniert, braucht neben dem Modell ein Vierteljahrhundert altes Modul, das keine Dokumentation liest und nichts verzeiht.