The Real Punch Out: NES-Klassiker läuft mit Gestensteuerung im Browser
Um das Boxspiel, das er früher so gerne gespielt hat, mit einer ordentlichen Portion Real-Life zu garnieren, programmierte Ian Charnas die NES-Version von Punch-Out um. Was sich zunächst einfach anhörte, hielt einige Hürden für ihn bereit. Dennoch gelang es ihm, die Kosten niedrig zu halten.
Skelett-Tracking von Google
Zunächst war Charnas auf der Suche nach einem Motion-Tracker. Er fand ein System auf Kickstarter, doch über 600 Dollar Backer-Preis hielten ihn ab. Schließlich wurde er bei Google fündig: Der Suchmaschinen-Marktführer hat das Tracking-Modul MoveNet im Portfolio, das über den Browser funktioniert. Darüber konnte er einige Box-Sequenzen anlernen: Schlagen, Blocken und natürlich den Schwinger. Jetzt stand er vor dem nächsten Problem: Wie bekommt er das Nintendospiel in den Browser?
Über Emscripten läuft der Titel über Javascript
Charnas kaufte das Originalspiel, lötete der Original-Konsole ein Extra-Board auf, durch das sie einen USB-Anschluss enthielt und zog es auf einen Computer. Anschließend entschied er für das Konsolensystem eine fertige Emulation zu verwenden. Die Wahl fiel auf FCEUX, einem NES-Simulator, von dem sowohl Windows- als auch SDL-Versionen existieren. FCEUX cross-kompilierte Charnas per Emscripten auf WebAssembly und erhielt so eine Javascript-Version. Sowohl die Haltungssteuerung als auch Spiel und Plattform besaßen nun diesselbe technologische Basis. Es tauchte ein neues Problem auf: Die Kämpfe liefen viel zu schnell ab, da sie auf sehr viel schnellere Controller-Bedienung ausgerichtet waren. Der menschliche Spieler hatte mit seinen Boxschlägen keine Chance, weil sie natürlich viel langsamer ausgeführt wurden, als einfach auf einen Knopf zu drücken.
Alles neu mit Rekompilieren
Charnas machte sich also dran, die Gegner zu verlangsamen. Dazu musste er das Spiel hacken, das naturgemäß bereits kompiliert war und daher im Assemblercode vor lag. Eine ordentliche Portion Disassembling später hatte er den Code zurückentwickelt und angepasst. „Das war crazy-hart. Wenn Du nur ein Byte falsch setzt, spielt das ganze Spiel verrückt,“ erzählt er in seiner Videodokumentation. Er fand heraus, wie er das Spiel sinnvoll verlangsamen konnte, und passte die Gegner entsprechend an. Zum guten Schluss baute er ein Armband, das Elektroschocks verteilen konnte, und würzte „Real Life Punch-Out“ damit. Das Spiel steht online zur Verfügung, das Elektroschock-Armband muss man sich gegebenfalls selber dazu bauen – nötig ist es zum Ausführen nicht.