 So, zum nächsten Speaker. Er ist ein Security Researcher, also ein Forscher in dem Bereich Security, Thomas Roth. Er wurde von Forbes schon vorgeschlagen oder nominiert für den 30 unter 30 Preis und im Bereich Technologie. Hat andere Preise gewonnen, hat auch schon sehr viele Sicherheitslücken gefunden und öffentlich gemacht und insbesondere im Bereich Nintendo oder für Nintendo. Und ja, der Talk wird sehr unterhaltsam. Insbesondere dieses Intro ihr werdet es mögen. Oh, dammit. Hier steht Entschuldigung Hacker, aber euer unserer Kongress ist nach Hamburg umgezogen. Nach unten geht es zum Spiti. Für nicht Berliner, das ist ein Kiosk. Entschuldigung Hacker, aber unser Kongress ist nach Leipzig gezogen. Was für ein Trip. Willkommen zum Vortrag über das Hacking des neuen Nintendo Game & Watch. Und ich bin, also ich bin Thomas Roth und ich bin Sicherheitsforscher und ihr findet mich unter Stacksmashing auf YouTube. Und das ist jetzt der 35. Geburtstag von Mario, unser Lieblings-Plotter. Und deswegen hat Nintendo diese Neuauflage des Super Mario Brothers herausgebracht. Es kommt mit Spielen und dieser animierten Uhr. Es kommt geliefert mit Super Mario Brothers 1 und 2 und einer neuen Elipratation des alten Game & Watch Spiels. Das ist jetzt natürlich nicht die erste Retro-Konsole, die Nintendo rausgebracht hat. 2016 haben sie die NES-Klassik rausgebracht und später noch den SNES-Klassik. Und das war jetzt bei Homebrew Leuten sehr beliebt, weil es sehr einfach war, hier zusätzliche Roms drauf zu laden. Man konnte die Firmware leicht verändern. Und man kann die im Grunde einfach in den Computer einstecken, eine eigene Software installieren und dann machen, was immer man möchte. Der Grund ist, dass sie intern auf Linux aufbauen und einen ziemlich starken ALM-Prozessor haben. Daher ist es ein sehr nettes Gerät, um damit herumzuspielen. Als Nintendo jetzt diese neue Konsole vorgestellt hat oder angekündigt hat, haben viele Leute Hoffnung gehabt, dass es ein ähnlich schönes Gerät für die Homebrew-Community wird. Und als meine größten Interessen möchte ich jetzt mal kurz den Reverse Engineering Hardware Hacking und Retro Computing. Und dieses neue Gerät passt genau in die Mitte, da wo alle drei überlachen. Und als es für den 3. September angekündigt wurde, wusste ich sofort, ich brauche eins davon. Und während, obwohl die anderen beiden eine Weile verfügbar waren, habe ich es gleich auf mehreren Seiten vorbestellt und einige davon wurden auch schon gekänzelt. Ich hatte drei Vorbestellungen. Und ja, daher war ich optimistisch. Als ich am 12. November frühstückte, hat DHL schon einen Tag vor dem offiziellen Release an mich geliefert. Es gab zu der Zeit natürlich keine technischen Informationen über das Gerät. Wenn man also auf Twitter nach Game & Watch sucht, findet man eigentlich nur die Ankündigung und vielleicht ein Bild von jemand, der es offen erhalten hat, aber keine Bilder des Inneren und noch hat es auch niemand gehackt. Und als Hardware Hacker hat es mir diese einzigartige Gelegenheit gegeben, eine der ersten zu sein, die diese neue Konsole hackt. Also habe ich alles andere liegen lassen und angefangen mir dieses Gerät genauer anzuschauen. Jetzt sollte ich natürlich sagen, dass ich normalerweise weit weg bleibe von Neuer Konsolen, hauptsächlich wegen Piraterie. Ich möchte Piraten nicht helfen. Ich möchte mich nicht damit auseinandersetzen. Ich möchte keine Geräte oder Tools, keine Werkzeuge bauen, die anderen Leuten beim Spielpiraterie helfen. Aber nachdem hier keine Spiele für verkauft werden und alle Spiele gute 30 Jahre alt sind, hatte ich eigentlich keine Sorge, dass es hier ein Problem mit Piraterie geben wird. Ich fühle mich ziemlich sicher darin, Werkzeuge dafür weiterzugeben und dieses Ding auf meine Bedürfnisse zuzuschneiden, sollte keine Probleme auf Nachsicht ziehen. Und ja, ich möchte euch jetzt zeigen, wie ihr das selber zuhause mit sehr einfacher Hardware nachmachen könnt und ich hoffe, ihr habt Spaß damit. Also fangen wir damit an uns das Gerät mal genauer direkt anzugucken. Wie ihr wisst, es ist ziemlich leicht und hat ein schönes Gehäuse, also für mich ist es ein schönes 3x20 mit 240 ICD-Display, ein D-Pad, ein P-Knöpfe und 3-Eknöpfe umzuswischen spielen und drücken. Der rechten Seite ist ein Anschalken am Pfund, ein USB-C-Potter. Wenn ihr euch jetzt schon eine USB-Port freut, nein, da kann ich euch erzählen, dass die Datenleitungen von dem Mod nicht angeschlossen sind, also kann man es nur zum Strom-Zufuhr nutzen. Außerdem, da wir natürlich über Nintendo reden, haben sie ihre eigenen 3x-Schrauben und die aufzumachen, muss man also einen speziellen Schraubenzieher haben. Zum Glück haben aber eigentlich alle Hardware-Hacker einen, aber es wäre sicherlich doof, wenn man einen gekauft hat und man kann ihn nicht aufmachen, weil man den Schraubenzieher nicht hat. Wenn man es also aufmacht, das erste, was man sieht ist, der Z-Layout, wenn ihr schon mal einen Joy-Con aufgemacht habt, dann habt ihr den Flex schon mal gesehen, das ist genau der gleiche, wie den Joy-Con. Das ist praktisch, das heißt, wenn man später die Batterie gebildet, dann kann man einfach sich eine Dölker-Batterie kaufen und die man sich dann sehr günstig besorgen kann und dann hier rein packen. Neben die Batterie auf der rechten Seite ist der kleinen Aussprecher, der ist nicht ziemlich gut, aber darunter befindet sich das Hauptort mit dem Speicher und dem CPU. Gucken wir uns die mal genau an. Der Hauptprozessor des Geräts ist ein STM32H7WU, wie so, ist ein Cortex M7 von STM32H7WU mit 1,3 MHz Speicher und 128 MHz Flasche. 180 MHz und der ist ziemlich stark, aber es ist viel, viel schwächer als den Prozessor, der NES. Also das ist wirklich nur ein Micro-Controller, also der kann keinen Linux abspielen, der kann keinem, sondern kompensierter Software abspielen, der wird eigentlich nur programmiert mit einer ziemlich direkten Metallnaht. Rechts davon findet ihr ein Mb-Speicher von SPI, das heißt also wir haben ungefähr 1,1 MHz Speicher aufgeregt. Eigentlich haben alle Micro-Controller ein D-Backport, aber wenn ihr uns das jetzt genau anguckt, hier unten links sind 5 unbestückte Kontakte, wenn wir uns unbestückte Kommentare da auf den Ports angucken, dann ist es ziemlich wahrscheinlich, dass das D-Backport sind und zum Glück sagt der Datenschick für die STM32, der ist offen, das heißt wir können uns die Pinouts vom Datenblatt angucken und dann mit einem Multimeter angucken, ob das tatsächlich die D-Backports sind und das ist tatsächlich so. Also wir können tatsächlich hier die ganzen Horts hier direkt finden und finden. Das bedeutet also wir können D-Backhavi z.B. ein Shielding oder ein Stee-Link nutzen, um uns im Gerät zu verbinden und da die Kontakte relativ leicht zu suchen, müssen wir eigentlich nichts löten, das heißt wir können ja einfach Test-Bins dran klemmen und die erlauben uns dann ganz einfach hier D-Backport zu starten. Das Problem bei den meisten Geräten ist, ist die D-Back-Interface beim Herzschirmsprozess geschlossen. Das ist eben dazu gedacht, damit Leute wie wir eben nicht daran D-Backkommen um uns anhindert, Graphamper runterzuladen, zu reflaschen und so weiter. Deswegen war ich sehr neugierig, ob wir tatsächlich hier zum D-Backport anhängen können. Und wenn ich J-Leaks, stellts mal schnasen, sahen wir, es konnte tatsächlich sich mit der CQ verbinden. Da haben wir genau geguckt, da kommt auch eine Nachricht, dass es gefällt mit Active-Re-Protection. Das ist interessant, weil der Chip der SCM32 hier etwas enthält, das nennt sich IWP Readout Protection, also Laserschutz. Das ist im Grunde die Sicherheits-Setting für das D-Back-Interface. Uns hat drei Leveln. Leveln bedeutet, es ist kein Schutz aktiviert. Level 1 bedeutet, es ist der Flaschweicher und wir können also sozusagen nichts herunterladen auf Flaschweicher. Aber wir können ihn halt vom Rahmen verlegen. Wir können dort auch Code laden. Und Level 2, das bedeutet, dass alle D-Backfunktionen sind deaktiviert. Nur weil der Chip Level 2 so ist, heißt es noch nicht, dass wir jetzt aufgeben müssen. Wenn wir uns zu Level 2 fail, oft macht das als wir. Wir konnten natürlich sehen, obwohl Level 2-Production aktiviert war, bei einem bestimmten Bekontentort und zu eskalieren auf Level 1. Beim Endwatch scheint es nicht zu gehen. Das Interface ist total deaktiviert. Wir können trotzdem den Ohr-Abdampen. Was ein guter Einstiegspunkt ist, obwohl wir natürlich die Firmware-Direkte uns holen. Ich war sehr neugierig zu sehen, was dort ankommt. Als ich mir den Rahmen guckte, dass da einst die Möglichkeit war, vielleicht ist der Immunator, der dort läuft. Vielleicht die ursprünglichen Super Mario-Daffen in den Rammblät. Vielleicht finden wir den Raum tatsächlich an dem Rahmen. Also, halt ich mir den Rahmen und dann mal an und guckt in einem Hacks-Editor. Und ich habe mir auch den Raum im Ursprünglichen Raum anguckt in einem zweiten Hacks-Editor-Fenster und um Teile von dem Original-Rum in dem Rahmen. Ja, und tatsächlich war das so. Der NS-Rum wird tatsächlich in den Ramm geladen. Und es ist immer die Gleichheit der Reste. Das heißt, wahrscheinlich ist es einfach ein Einstieggangskopie im Urbausähnliches. Das ist natürlich gut zu wissen, denn es wird für uns, für ein paar Sachen wird ein erstes, der lieber kaputt ist, aktiviert. Aber leider nur Level 1. Das heißt, wir können den Rahmen runterladen. Wir wissen auch, dass der NS-Rum in den Ramm geladen wird. Das heißt, das System läuft einen richtigen Immunator. Und das sollte das wir eventuell auch den Rahmen einfach ersetzen können. Und dann können wir irgendwas Eigenes draufpacken. Und dann wird es Zeit, den Flash-Chip des Speichers. Dafür habe ich ein Gerät namens Minipro benutzt, das ein SWC-8-Clip benannt hat. Und den kann man einfach auf den Flash-Chip packen und dann den runterladen. Eine Warnung aber, aber der läuft auf 1,8 Watt. Das heißt, es ist wichtig, dass der Entschuldigung 1,8 Watt auch läuft. Wenn man das mit einer anderen Wollzahl beantwortet, dann geht er kaputt und mir ist das schon mal passiert. Achtung, das sollte man nicht machen. Mit dem Flash-Num können wir tatsächlich anfangen, es genauer anzugucken. Das erste, was ich gerne tue, ist die Entropie, also die Zufälligkeit, wenn ich gucke. Da habe ich mir das BINWALK mit dem E-Tag gebrückt. Und dann können wir die Entropie guckern. Wir haben eine sehr, sehr hohe Entropie und das wird fast immer, dass das Ganze verschlüsselt ist. Es kann auch Kompremierung sein. Aber da sieht man vielleicht so kleine Dipps in der Entropie. Und das ist hier jetzt aber nicht der Fall. Aber es ist einfach nur ein sehr, sehr hoher Wert. Auch aus dem sehen wir das ja keine Wiederholung im Zentrum. Das bedeutet uns eigentlich, dass es wahrscheinlich nicht einfach nur eine XORI-Verschüsselung ist, sondern irgendetwas, wie AIS oder irgendwas Ähnliches ist. Aber nur, wenn er flüssig ist, heißt es nicht, dass wir ihn mit aufgeben müssen. Ganz im Gegenteil. Also im Gegenteil, das heißt nur, es ist eine Herausforderung. Es ist nicht einfach nur einsteckend los. Und jetzt die Frage ist, ist dieser Flash-Beiche verifiziert? Also startet das Gerät, auch wenn der Flash verändert wurde? Wenn ja, haben wir nämlich eine Menge Möglichkeiten, wie wir hier weiter vorgehen können. Und das zu überprüfen, habe ich eigentlich einfach nur Nullen in zufällige Stellen in eine Flasche gepackt. Und dann habe ich überprüft, ob das Gerät immer noch startet. Und mit den meisten Veränderungen wird es immer noch, oder startet es immer noch ohne Probleme. Das heißt, es wird hier nicht überprüft. Es gibt keine Prüfsumme oder irgendetwas. Das heißt, wir können das Gerät dazu überreden, veränderte Speicherstände zu laden. Meine nächste Vermutung war, dass das NES-ROM vielleicht sogar vom externen Flash geladen wird. Und um das zu überprüfen, habe ich wieder den Flash genommen und Nullen in verschiedenen Positionen eingefügt, das Reingeladen, das Spiel geladen, den RAM wieder ausgelesen und das dann verglichen, mit dem das sich ursprünglich ausgelesen hatte und überprüft und verglichen, ob das das Gleiche ist. Meine Theorie war nämlich, dass wenn man manche Bytes überschreiben kann, dann müsste ich das hier in der NES-ROM sehen, dass da diese Veränderung passiert ist. Und nach einer halben Stunde etwa hatte ich Glück. Ich habe vier Bytes im Flash verändert und vier Bytes waren dann auch im ROM, das ich auslesen konnte, verändert. Und das ist großartig, denn das heißt, dass die ROM vom Flash in den RAM geladen wird und nicht verifiziert werden. Was auch wichtig ist, ist, wenn wir vier Bytes ändern und dann vier Bytes verändert sind, dann sagt uns das einig ist, wenn wir nämlich uns anschauen, was passieren könnte, wenn wir vier Bytes ändern, da gibt es es mehrere Möglichkeiten. Hier links haben wir den Flash und rechts haben wir den RAM. Und der RAM ist quasi die entschlüsselte Version des Flash-Speichers. Und wenn wir jetzt zum Beispiel diese blau markierten Bytes zu Nullen ändern, was würden wir vermuten, wie sich der RAM verändert? Wenn wir jetzt sehen, dass diese 16 Bytes verändert sind, dann haben wir wahrscheinlich einen Algorithmus wie AES in ECB-Modus. Also wenn wir hier vier Bytes im Input ändern, dann wird sich die Backel, also dann wird sich einfach eine festgelegte Anzahl an Output Bytes ändern. Wenn wir jetzt vier im SPI ändern und alles, was danach kommt, ist geändert im RAM, dann haben wir irgendeine Chaining-Seifer, also eine verkettete Verschlüsselung. Wenn wir aber vier im SPI ändern und nur vier sind im RAM geändert, dann haben wir eine Verschlüsselung, die wahrscheinlich AES im Counter-Mode. Und dann schauen wir jetzt erst mal an, wie genau das funktioniert. AES-CTR funktioniert, vereinfacht gesagt, dass man den Klartext und den Verschlüsselungsstream, der aus einem Schlüssel, einem NONS, also einer Einwegzahl besteht, und die beiden werden mit XO verbunden. Und hier ist es sehr wichtig, dass wenn man AES-CTR benutzt, man wirklich eine neue NONS-Zahl für jede Verschlüsselung benutzt. Wenn man ähnliche Daten mit der gleichen NONS verschlüsselt, werden große Teile des verschlüsselten Textes gleich sein. Also das wird für XO, und dadurch kriegt man den verschlüsselten Text. Wenn wir den Klartext kennen, was wir tun, weil das der RAM-Inhalt ist, den wir reingeladen haben, den verschlüsselten Text, den wir kennen, weil das ja der Inhalt des Flash ist, den wir gerade ausgelesen haben, dann können wir die Operation umdrehen. Und als Ergebnis bekommen wir den AES-CTR Stream, der verwendet wurde, um unsere Daten zu verschüsseln. Und dann können wir jetzt unsere Custom Room nehmen, das mit XO, also diese Operation selber durchführen und damit unser eigenes verschlüsseltes Image erzeugen. Und ich habe jetzt einfach ein paar Python-Skripte geschrieben, um das auszuprobieren und nach einer Weile hatte ich eine gehackte Version von Super Mario Brothers anstatt der original Version. Also, yeah, wir haben dieses Gerät gehackt, einem Tag bevor es veröffentlicht wurde, und wir konnten eigene ROMs installieren. Wir können die Skripte, die ich verwendet habe, auf meinem Github und ich war sehr erfreut und aufgeregt, weil es hieß, dass ich wirklich dieses Gerät einen Tag vor dem Release gehackt hatte. Leider war Tod nicht so aufgeregt wie ich, nicht so begeistert. Er hat mir erzählt, dass die Firmware in einem anderen Schloss ist. Dann habe ich mich mit Konrad Beckmann zusammengeschlossen, ein Hacker aus Schweden. Wir haben ein paar Ideen hin und her geborfen, und schließlich haben wir bemerkt, dass das Gerät ein ITCM-ROM hat. Das ist ein ROM, der eigentlich für sehr leistungsfähige Geräte, wie Interrupt Handlers oder Routine wie Interrupt Handlers verwendet wird. Und wir haben uns diesen ROM niemals angeschaut. Bisher. Das ist ein ROM, der über den Debugging-Code unterstellt sich raus, dass hier Code drin ist, für den AM-Prozessor. Und die Frage ist jetzt, woher kommt dieser Code? Kommt er vielleicht genauso vom SPI? Er ist vom, ja, vom Flash. Und ich habe jetzt im Endeffekt die gleichen Schritte nochmal durchgeführt. Und ich habe einfach nur nullen, ganz an den Anfang des Flash, den ITCM-ROM ausgelesen. Und ich hatte Glück, gleich beim allerersten Versuch hat sich der ITCM Daten sich geändert. Und weil hier Code nicht nur Daten sind, der ROM vorher war nur Daten, aber hier ist jetzt Code, diesmal. Das heißt, dass wir mit dem gleichen X-Ortrick von vorher eigenen ITCM-Code hier injizieren können. Wir laden in den ROM, wenn das Gerät gut ist. Und weil das eine dauerhafte Methode ist, können wir das Gerät neu starten ohne den Debugger und unseren eigenen Code hier reinladen. Und das kann dann tatsächlich den Flash lesen. Wir können also jetzt Code schreiben, der von der Firma irgendwie aufgerufen wird und den internen Flash in den ROM liest, von wo wir es mit dem Debugger retriefen. Das Problem jetzt ist, dass wenn wir so eine Custom oder selbstgeschriebene Payload haben, dann wissen wir nicht genau, welche Adressen dieses Codes ausgeführt werden. Wir wissen nicht, ob die Firma hier ganz am Anfang anfängt oder in der Mitte. Aber es gibt einen ganz echten Trick, um das immer noch funktionieren zu lassen, das heißt no operation. Das ist eine Instruktion, die einfach nichts tut. Und wenn wir fast alles von diesem ROM mit nichts füllen, mit keine Instruktion, dann kriegen wir eine sogenannte Nobslide. Das heißt, Mario geht durch alle durch, geht knock-knock-knock und rutscht dann in den Payload und für den Aus. Wenn Mario irgendwie in die Mitte in die Nobsleien springt, wird am Ende immer bei der Payload ankommen, damit die Slide runterrutscht. Und Konrad hat hier diesen super, super einfachen Payload geschwindet. Das heißt, einfach 10 Instruktionen, einfach nur den gesamten Spalchreinendrahmen probiert, wo wir uns dann über den Debugger holen können. Das ist einfach praktisch. Wir haben einen super einfachen Exploit. Wir haben einen vollstelligen Backupdefirmware, das heißt, wir können jetzt machen und ich habe ein paar Tools ausgegeben, wie ihr das selber machen könnt. Ihr könnt einfach auf die Details gehen und dort das Game & Watch Backup Repository euch runterladen. Das sind Informationen, wie ihr das Backup machen könnt. Ihr könnt checksum machen, ihr könnt darauf achten, dass es nicht einfach euer Gerät bringt. Ihr könnt eure ursprüngliche Werte immer zum Original zurückgehen. Außerdem haben wir eine tolle Support-Community auf Discord und Slack. Wenn ihr immer Hilfe braucht, dann meldet ihr euch bei uns da, findet ihr sicherlich gute Möglichkeiten. Soweit hatten wir kein einziggebricktem Watch. Das heißt, es scheint recht stabil zu sein. Da war ich dann echt glücklich. Und ich habe es vorbei. Oder war es wirklich, wenn man auf dem Internet angebt, dass ihr tatsächlich ein Weltgeweis gehackt habt, dann wird es immer genau eine Antwort geben. Und das ist, läuft du und drauf. Das war auf meinem Twitter, DMs und auf YouTube, bei meinen Kommentaren und auch meinen Freunden haben mich alle so gespammt, macht doch du und da drauf. Aber um umlaufen zu bringen, müssen wir jetzt erstmal und die ganze HUB verstehen. Wir müssen also eine Möglichkeit um wirklich HUB-RUH auf das Gerät zu packen. Und zum Glück waren die meisten Kommunen im Board sehr gut dokumentiert. Das heißt, da ist jetzt kein NDA-Komponent. Das heißt, zum Beispiel der Prozessor hat ein offenes Reference Manual. Der Flash ist ein gut bekannter Flash Chip und so weiter. Das heißt, es gibt ein paar wenige Proprietäre Komponenten, zum Beispiel die das Geräte ist und wir mussten uns ein bisschen Sniffing den Board angucken, um zu schauen, wo die einzelnen Digitalisierung-Routinen für das Display liefen und so weiter. Aber im Grunde hatten wir einen vollständigen Hardware-Support. Wir hatten LCD-Support, Audio-Support, Knöpfe und Flashing-Tools, die ganz einfach über ein SQB-Debate gab, die Flash-Flighter beschreiben können. Und den Hinger findet ihr alle bei uns im Github. Wenn ihr jetzt euer eigenes Game-Flighter-Schritt wollt, braucht ihr mal einen Divender, wie zum Beispiel ein 3-Dollar-ST-Link oder ein J-Link und dann könnt ihr ihr einfach loslegen. Außerdem haben wir ein Bass-Projekt, das macht für jemanden der eigene Projekte für den Game-Port sprachen. Es ist ziemlich einfach, es ist einfach ein Framebarver, auf den ihr machen könnt und dann zusammen haben wir eine sehr gute Community. Jetzt läuft die ganze Hardware und jetzt konnte ich endlich anfangen, DOOM zu portieren. Ich habe angefangen, damit andere Ports von DOOM für den STM angeguckt. Dann fahre ich das Projekt namens ViveLoppist, STM32-DOOM und das ist gedacht für ein Board mit 8 Megabyte Speicher und die Daten verteilen waren auf einem externen USB. Auf unserer Plattform haben wir ein Nr. 1,3 Megabyte RAM. 128 GB Flash und ein Megabyte externen Flash. Wir müssen das gesamte Level, den gesamten Code und so weiter drauf packen. Die DOOM Level die finden sich in WAD-Dateien. Wo sind meine ganzen Daten? Diese Daten enthalten Sprites, die Texturen, die Level. Das heißt für DOOM 1 ist es 4 Megabyte und für DOOM 2 sind total 14 Megabyte groß. Wir haben nur 1,1 Megabyte Speicher. Wir machen das und wir müssen den ganzen Code auch dazu packen. Das heißt, wir müssen eine sehr, sehr kleine Möglichkeit finden. Und färmer aus Runden, es gibt ein Format namens MiniWord. Das hat alle speziellen Möglichkeiten für dieses System. Und es sieht zwar nicht gut aus, aber ich war relativ sicher, dass wir da eine Möglichkeit finden konnten. Und wir konnten es auf 14 Megabit runterpacken. Also zusätzlich gab es eine Menge Möglichkeiten, die in DOOM Port, die wir ändern mussten, wie zum Beispiel alle Filehandling-Sahnen umbauen und eigene Einbauen. Ich hatte Game and Watch LCD, also für den Sprayer Bildschirm und für die Knöpfe Support-Matter. Und ich musste dort Passagen wegmachen, wie zum Beispiel in Sound und den Wipe-Effekt musste ich wegpacken. Und wer als es auch weg war, hatten wir noch ein Problem. Und zwar, als es kompilierte, passt es trotzdem noch, nicht den Speicher und wurde trotzdem kuscheln und hat im Gerät ein bei 1,3 Megabyte an verschiedenen Stellen. Zum Beispiel nur der Framebuffer, den wir hierfür brauchen, braucht schon 154 Kilo weit. Wir haben 160 Kilo weit Initialisierungsdaten, 320 Kilo weit Initialisierte Daten und ganz, ganz viele dynamische Zuweisungen, die alle zu knallen. Und die sind ein Großproblem, denn der Chocolate DOOM Source Code ist eine kleine Allekation, die nur für kurze temporäre Daten wird und die werden später wieder gefragt. Und das heißt, der dynamische Speicher wird sehr, sehr, sehr fragmentiert und sehr, sehr schnell. Das heißt, am Ende haben wir einfach nicht genug Platz um ein paar Sachen zu Initialisieren, wie zum Beispiel das ganze Level. Und das zu lenen, habe ich den Chocolate DOOM Code genommen und habe vieles von den dynamischen Allekationen gelöscht und das hat uns auch geholfen, die viele Meldungen vom Compiler einfach deutlich praktisch zu machen, weil der Compiler dann sagen würde, Achtung, diese Daten passen nicht in den Rahmen rein. Und nach viel Trial and Error und um so viele Assets zu kopieren, wie es möglich war, um in die Private zu packen, hatte ich DOOM am Laufen auf dem Nintendo Game & Watch Super Mario Process. Und die Internet-Götter konnten wir helfen. Und dieser Port ist jetzt nicht an den Prozesse gewonnen. Also es wird jetzt leider nicht möglich sein, das Gerät zu hacken, in dem man so ein Computer einsteckt, aber man kann diese Geräte hier nutzen. Jetzt der wichtigste oder häufigsten nachgefragtes Art von Homebrew Software sind Immulatoren. Und da gibt es schon eine ziemlich große Sachung an Immulatoren. Und das hat alles mit diesem Retro Go Projekt angefangen. Und das ist Software für ein Gerät namens Odroid Go. Und das ist jetzt ein Gerät mit ähnlichen Beschränkungen, wie die Washington Game. Und das heißt, dass die ganze harte Arbeit eigentlich schon gemacht wurde. Retro Go kommt jetzt schon geliefert mit Immulatoren für den Game Boy, Game Boy Color und sogar für den Sega Master System und Game Gear. Und nach ein paar Tagen hatte Konrad schon diese Demo fertig, dass Game & Watch hier Spiele wie Zelda und so weiter abspielen kann. Und das ist schon sehr, sehr cool. Und jetzt anfangs hatten wir Probleme mit Reasing, Scaling also anfangs. Aber jetzt nach ein paar Wochen ist es wirklich ein schönes Gerät und es macht viel Spaß. Wir haben ein Game Boy Immulator. Hier kann man jetzt die besten Game Boy Spiele spielen, z.B. Pokemon, Super Mario Games auf dem Nintendo Game & Watch. Wenn man die Spiele natürlich. Und ja, wir wollen das natürlich das beste Aussehen Bildschirm holen. Und da kann man sehr viel ändern. Man kann die Fahrpalette anpassen und wir haben auch ein schönes Menü, um die Spieler auszuwählen. Das erlaubt es, dass man mehrere Raums auf dem Gerät hat, z.B. man hindert herschalten kann. Wir unterstützen Speicherstände, also wenn man das Spiel, man hat einen Speicherstand und kann zurückkommen an die Stelle, wo man vorher war. Der Source Code, also der Quartext für alles, ist hier auf meinem Github, nicht auf dem Github Account von Konrad. Und es ist wirklich großartig. Andere Leute haben jetzt Sachen gebaut, z.B. das Chip 8 System. Und dieser Immulator kommt mit einer schönen Sammlung an kleinen Arcade Games und es wirklich macht Spaß hierfür zu entwickeln. Und wenn ihr so ein Game & Watch habt und das ausprobieren wollt, macht es. Es macht wirklich Spaß. Und wir arbeiten, hier ist auch Arbeit an dem Immulator für den ursprünglichen Game & Watch Spiele. Also, ihr könnt dann jetzt hier auf dem neuen Game & Watch alle ursprünglichen Game & Watch Spiele spielen. Das ist ein cooles Projekt. Und was ich wirklich toll finde, ist, wie die Community zusammengekommen ist. Die Community hat es auf Twitter gepackt. Und Konrad hat sehr viel auf Twitch gestreamt. Wir haben ein Discord aufgemacht, wo Leute dazukommen konnten, die sich dafür interessieren. Und es war einfach toll zu sehen, was die Community alles geliefert hat. Z.B. haben wir jetzt ein funktionierendes Storage Upgrade, das mit sowohl Homebrew als auch dem Original funktioniert. Und statt einem Megabyte könnt ihr jetzt 16 Megabyte Flasche haben. Indem ihr einfach nur einen Chip austauscht. Das ist relativ einfach zu machen. Dann haben Daniel Cuthbert und Daniel Padilla hochauflösende Gründenbilder zur Verfügung gestellt. Und damit verstehen wir jetzt viel besser, wie die Hardware aufgebaut ist, ohne irgendetwas abzulöten. Dann haben wir hier schöne Schaltbilder. Und er hat alle Verbindungen nachgemessen. Und ja, es ist einfach sehr viel Spaß. Sander Wonderwell z.B. hat eine eigene Rückenplatte erstellt. Und es gibt jetzt sogar Projekte, die Platine auszutauschen und den Prozessor mit einem ESP32 oder ähnlicher Hardware auszustatten. Das habe ich auch Spaß gemacht. Und wenn ihr mitmachen wollt, dann macht gerne mit. Vielen Dank, dass ihr hier wart und zugehört habt. Wow, das war ein sehr beeindruckender Talk-Bortrag. Wir haben am Anfang schon bekannt gegeben. Wir nehmen Fragen entgegen. Und wir haben einige Fragen. Jetzt werden wir uns möge geben, dass wir alle schaffen. Was du die Artikel gelesen, dass Nintendo Hacker überwachen lässt? Und das macht sich Sorgen deswegen. Oh, Luigi hat wohl mit meiner Kamera rumgespielt. Also ich habe diese Artikel gelesen. Aber ich denke, dass in diesem Fall es kein Probleme mit Paratterie gibt. Es kann niemandem die Möglichkeit geben, neue Spiele zu spielen. Diese Spiele sind 30 Jahre alt und es gab sehr viele Möglichkeiten, diese Spiele zu stehlen im Anfangszeichen. Also mache ich da keine Sorgen. Aber die Frage ist, das antwortet für die Frage ganz gut. So, nächste Frage. Es gibt eine Frage in den Grund, warum ein Externe Flash Chip hier verwendet wurde. Ja, ich denke, dass der Externe Flash das Prozess, das sehr klein ist und da haben sie einfach nicht alles unterbekommen. Nur der Frame Buffer für die Bilder ist größer als die interne Flash Speicher. Und das ist wohl der Grund, dass sie es gemacht haben. Ja, ist die Entschlüsselung in Software oder ist es in den Microcontroller eingebaut? Der Microcontroller hat ein eingebautes Feature und der Flash ist direkt gemappt in den interne Speicher und das unterstützt auch die Entschlüsselung. Also das ist alles in Hardware. Man kann sogar die Schlüssel aus der Hardware auslesen. So, nächste Frage hängt damit auch ein bisschen zusammen. In deiner Meinung ist die die Verschlüsselung überhaupt wert, dass sie es gemacht haben. Es fühlt sich so an, es wäre das nur für die Shareholder, für das Management, dass die sich sicherer fühlen. Also ich finde, sie haben alles richtig gemacht. Aber ich denke auch, dass es so ein einfaches Gerät ist und wenn man sich das mal anschaut und sieht, was die Leute darauf aufbauen und daraus machen. Ja, ich denke, sie haben alles richtig gemacht. Aber wahrscheinlich war das einfach nur eine Liste, also ein weiterer Haken auf der Liste, was zu tun ist und ich denke wirklich nicht, dass hier Piraterie ein Thema ist. Das nächste hat mit der Nob-Slide zu tun oder der Nob-Rampe, was sehr schön animiert war. Würden Starts von Subroutinen da nicht auch funktionieren? Die Person, die es fragt, sagt, dass ein großer Push R4 oder R5 Instruktionen sehr leicht zu erkennen sind. Wie ist das damit? Ja, absolut. Die Zeit zwischen Finden der Daten und das zu exploiten war weniger als eine Stunde. Also wenn wir das jetzt uns genauer angeschaut hätten, wäre das mehr Arbeit gewesen. Nicht besonders schwer, aber es einfach mit einer Nob-Slide zu machen hat nur ein paar Minuten gedauert um das schnellste Weg um das herauszufinden. So, und jetzt mehr eine Anmerkung als eine Frage. Die Frage sagt, es ist seltsam, dass dieser Prozessor dass es mehr eine Sache des Prozessors ist, dass die Daten nach der Entschlüsselung organisiert werden. Ja, und ich würde hier zustimmen, denn selbst wenn man JTAC nicht hat die Instruktion ist 2 bis 4 Byte. Also man hat sehr wenig Möglichkeiten auszuprobieren um die Instruktion herauszufinden und das ist sehr teuer von der von den Befehlen her für den Prozessor und das ist daher schwierig das zu machen. Wir haben noch 2 weitere Fragen und dann geht es zurück ins Studio. Es gab eine Frage über die Entschlüsselung. Hast du herausgefunden, wie der genau lautet? Ja, das haben wir. Es gibt eine Exemplication von STG die Schlüssellein bisschen durchwürfelt aber ungefähr 1 Stunde vor dem Tag hat eine Person auf unserem Discord-Channel die gesamte Verschüsselung durch uns zurückzubauen. Ich persönlich war da nicht so interessiert und nachdem man zu ADPCO downgrade hat, kann man einfach den Spannlicher Art drauf zugreifen und dann kriegt man das ganze ohne Entschlüsselt. Dankeschön. Und eine letzte Frage über den STGT Controller. Schreibt der Pixel über SPI oder hatte ein paar extra Features wie Hintergrund und Sprites und so weiter? Also das hat selbst nicht, das er hier wiegt. Es hat einen SPI-Wast um das zu konfigurieren und der Optimum-Expeicherarbeitership selbst hat something, das nennt sich GT10, das ist ein STGTroller der 2 Layer benutzen und das ist der Ending. Alles klar. Gut, dann vielen Dank für den tollen Tag und das Tolentro und damit zurück zu unserem Hauptstudio im Orbit. Vielen Dank und bis zum Orbit.