- 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
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
Noch keine Kommentare.