DOOM wurde auf Wireless-Earbuds portiert
(doombuds.com)- Ein Projekt portiert den Klassiker DOOM von 1993 so, dass er auf den Wireless-Earbuds PineBuds Pro läuft und sich über das Web aus der Ferne spielen lässt
- Es besteht aus vier Komponenten: einem seriellen Server (serial server), der die Earbuds mit dem Webserver verbindet, einem Webserver, einer statischen Webseite und dem DOOM-Port
- Über eine UART-Verbindung werden rund 2,4 Mbit/s Bandbreite erreicht; die Videoausgabe wird als MJPEG-Stream übertragen, was theoretisch bis zu 27 FPS ermöglicht
- Die CPU wurde von 100 MHz auf 300 MHz übertaktet; durch Grenzen bei der JPEG-Kodierung liegt die tatsächliche Leistung bei etwa 18 FPS
- RAM- und FLASH-Beschränkungen wurden durch Optimierungen und die abgespeckte Squashware-WAD-Datei gelöst und zeigen das Potenzial von Hardware-Experimenten auf Basis von Open-Source-Firmware
Projektüberblick
- DOOM aus dem Jahr 1993 wurde so portiert, dass es auf PineBuds Pro-Earbuds läuft
- PineBuds Pro werden als die einzigen Wireless-Earbuds erwähnt, die Open-Source-Firmware unterstützen
- Besucher der Website können sich in eine Warteschlange einreihen und das Spiel aus der Ferne spielen
- Das Projekt besteht aus vier Teilen
- dem DOOM-Port, der auf den Earbuds läuft
- dem seriellen Server, der die Earbuds mit dem Webserver verbindet und den MJPEG-Stream in Twitch umwandelt
- dem Webserver, der Assets bereitstellt, die Warteschlange verwaltet, Tastatureingaben weiterleitet und den Stream anzeigt
- der statischen Webseite, die für die Anzeige im Browser und die Kommunikation mit dem Server zuständig ist
Hardware- und Verbindungsaufbau
- Die Earbuds haben kein Display und senden bzw. empfangen Daten daher über Bluetooth oder UART-Kontaktpads
- Bluetooth ist mit etwa 1 Mbit/s zu langsam, daher eignet sich UART (2,4 Mbit/s) besser
- Der Framebuffer von DOOM hat eine Auflösung von 320×200 bei 8-Bit-Farben und ist etwa 96 KB groß
- Bei UART-Bandbreite wären damit nur etwa 3 FPS übertragbar
- Um das zu verbessern, wurde ein MJPEG-Stream verwendet
- Als JPEG-Encoder kommt bitbank2/JPEGENC zum Einsatz
- Die durchschnittliche JPEG-Framegröße liegt bei 11 bis 13,5 KB
- Theoretisch sind damit maximal 22 bis 27 FPS möglich
Anpassung der CPU-Leistung
- Der CPU-Takt der Standard-Firmware liegt bei 100 MHz, wurde hier aber auf 300 MHz erhöht und der Energiesparmodus deaktiviert
- Ein Cortex-M4F mit 300 MHz reicht für DOOM aus, aber die JPEG-Kodierung wird zum Flaschenhals
- Die tatsächliche Bildrate liegt bei etwa 18 FPS
Speicheroptimierung (RAM)
- Standardmäßig sind 768 KB RAM zugänglich; bei deaktiviertem Hilfsprozessor stehen 992 KB zur Verfügung
- DOOM benötigt 4 MB RAM, daher wurden verschiedene Optimierungen vorgenommen
- Vorabgenerierung von Lookup-Tabellen, Speicherung von
const-Variablen im Flash, Deaktivierung des Caching-Systems, Entfernung unnötiger Variablen usw. sparen Speicher
- Vorabgenerierung von Lookup-Tabellen, Speicherung von
Problem mit der FLASH-Kapazität
- Die Standard-WAD-Datei von DOOM 1 ist 4,2 MB groß und überschreitet damit das 4-MB-Speicherlimit der Earbuds
- Gelöst wurde das mit fragglets abgespeckter Version, der Squashware WAD (1,7 MB)
- Damit passen alle Assets in den Flash-Speicher
Open Source und Zugänglichkeit
- Der Projektcode ist in zwei GitHub-Repositories öffentlich verfügbar
- DOOMBuds: DOOM-Port für die Earbuds
- DOOMBUDS-JS: unterstützt die Interaktion zwischen Browser und Earbuds
- Die Website arbeitet mit einer Warteschlange; ab Platz 5 wird der Twitch-Stream auf einen MJPEG-Stream mit niedriger Latenz umgeschaltet
5 Kommentare
„Es läuft DOOM“
Die DOOM-Meister sind wirklich... beeindruckend.
Wow, das ist schon etwas ... krass.
Ach du meine Güte.
Hacker-News-Kommentare
Jedes Mal, wenn ich sehe, dass DOOM auf irgendeinem simplen Gerät läuft, frage ich mich, ob das ein Sieg der Software ist oder eher ein wirtschaftliches Versagen, weil wir keine billigere spezialisierte Hardware bauen konnten.
ANC-Bluetooth-Ohrhörer sind keine simplen Produkte, und Noise Cancelling muss dauerhaft sehr komplexe Berechnungen ausführen.
Eine schnelle MCU ist kein bloßer Luxus, sondern bringt Vorteile bei niedriger Latenz und effizientem Power-Management.
Statt einen perfekten ASIC zu bauen, ist eine mit universeller MCU aktualisierbare Architektur viel realistischer.
Am Ende ist es deutlich wirtschaftlicher, bewährte MCUs in großen Stückzahlen einzukaufen, als einen kundenspezifischen Chip zu entwickeln.
Arbeitskosten für Design und Produktion kundenspezifischer Chips, Tests, Schulung und Kleinserienfertigung sind am Ende teurer.
Kosten für Geschäftsprozesse machen einen viel größeren Anteil aus als Materialkosten.
Wir leben in einer Welt, in der DOOM auf Ohrhörern läuft — warum sollte man das negativ sehen?
Die Spezifikationen sind übertrieben, aber erstaunlich ist, dass das alles ins Ohr passt.
Ich habe DOOM auf die PineBuds Pro portiert.
Wenn man sich über das Internet verbindet, kann man DOOM auf meinen Ohrhörern spielen.
Mehr Details und den GitHub-Link gibt es auf meiner Website.
Es ist immer ein bisschen schade, dass fast nur DOOM portiert wird.
Früher gab es viele einfache, aber süchtig machende Spiele, heute sind Spiele oft zu groß und komplex, um sie auf kleine Plattformen zu bringen.
Abgesehen von Indies scheint die Branche ein wenig die Richtung verloren zu haben.
Spiele wie das frühere Master of Orion 1 waren simpel, aber man konnte sie immer wieder spielen.
Heutige Spiele wirken eher wie Videos, mit wenig Interaktion und XP-Grind, was sie für mich unattraktiver macht.
Inzwischen hat das schon Tradition.
Heute achten die meisten Nutzer weder besonders auf Speichergröße noch auf Performance.
Weil viele Konsumenten die Haltung haben, dass es „einfach nur laufen muss“, ist der Wert von Optimierung gesunken.
Trotzdem gibt es in der Indie-Szene weiterhin viele kurze, stilvolle Spiele.
Sie sind nur weniger bekannt, weil kurze Spiele wie Filme oft schwerer einen großen Eindruck hinterlassen.
Eine Liste der DOOM-Ports gibt es auf Wikipedia.
Ich finde, das ist ein großartiger Werbeeffekt für die PineBuds Pro.
Ich frage mich, ob so etwas auch mit Fairbuds möglich wäre.
Aber wenn DOOM schon auf so vielen Geräten läuft, warum läuft es dann immer noch nicht flüssig auf einem 386er?
Das erinnert mich daran, wie John Carmack in Interviews nach DOOM 3 sagte, dass die Engine so komplex geworden sei, dass er nicht mehr den gesamten Code allein schreiben konnte.
Ich frage mich, was er im heutigen AI-Zeitalter darüber denken würde.
Persönlich denke ich, dass er AI gegenüber positiv eingestellt wäre.
Und „Masters of Doom“ ist ein wirklich gutes Buch, das ich empfehlen kann.
Ich frage mich, ob hier jemand die PineBuds Pro ausprobiert hat.
Auf dem Pine64-IRC gibt es keinen entsprechenden Kanal, deshalb war es schwer, danach zu fragen.
Über Tragekomfort oder Klangqualität kann ich nichts sagen, aber auf dem Pine64-Discord-Kanal gibt es einen eigenen Raum für PineBuds.
Ich habe absichtlich eine Firmware ohne ANC installiert, aber als Bluetooth-Ohrhörer erfüllen sie ihren Zweck völlig ausreichend.
In ein paar Jahren könnte man mit etwas mehr RAM in Ohrhörern wohl auch einen lokalen Kubernetes-Cluster darauf betreiben.
Ich warte auf den Beitrag: „DOOM auf einen Einweg-Vape-Chip portiert“ 😄
Wenn das Moore’sche Gesetz weiter gilt, könnte es vielleicht in etwa 10 Jahren möglich sein.
Ein direkt mit den Ohrhörern verbundener eigenständiger Viewer funktioniert auch mobil.
Siehe Demo-Video.
Es gibt keine Touch-Steuerung, und es wird nur die Intro-Schleife abgespielt.