- 1993 के क्लासिक गेम DOOM को वायरलेस ईयरबड्स PineBuds Pro पर चलाने के लिए पोर्ट किया गया एक प्रोजेक्ट, जिसे वेब के ज़रिए रिमोट रूप से खेला जा सकता है
- यह serial server, web server, static webpage, और DOOM port — इन चार घटकों से बना है, जो ईयरबड्स और वेब को जोड़ते हैं
- UART कनेक्शन के ज़रिए लगभग 2.4Mbps बैंडविड्थ हासिल की गई, और MJPEG stream के माध्यम से वीडियो भेजकर सैद्धांतिक रूप से अधिकतम 27FPS प्रदर्शन प्राप्त किया गया
- CPU को 100MHz से 300MHz तक overclock किया गया, और JPEG encoding की सीमाओं के बीच वास्तविक प्रदर्शन लगभग 18FPS तक पहुँचा
- RAM·FLASH सीमाओं को optimization और हल्के Squashware WAD file से हल किया गया, जिससे open source firmware आधारित हार्डवेयर प्रयोगों की संभावनाएँ दिखाई गईं
प्रोजेक्ट अवलोकन
- 1993 में रिलीज़ हुए DOOM को PineBuds Pro ईयरबड्स पर चलाने के लिए पोर्ट किया गया
- PineBuds Pro का उल्लेख ऐसे एकमात्र वायरलेस ईयरबड्स के रूप में किया गया है जो open source firmware को सपोर्ट करते हैं
- वेबसाइट विज़िटर queue में शामिल होकर गेम को रिमोट रूप से खेल सकते हैं
- प्रोजेक्ट चार हिस्सों में बना है
- ईयरबड्स पर चलने वाला DOOM port
- ईयरबड्स और वेब सर्वर को जोड़ने वाला, और MJPEG stream को Twitch में बदलने वाला serial server
- assets उपलब्ध कराने, queue प्रबंधन, key input भेजने, और stream दिखाने का काम करने वाला web server
- browser display और server communication संभालने वाली static webpage
हार्डवेयर और कनेक्शन संरचना
- ईयरबड्स में डिस्प्ले नहीं है, इसलिए डेटा का आदान-प्रदान Bluetooth या UART contact pads के ज़रिए होता है
- Bluetooth लगभग 1Mbps पर धीमा है, इसलिए UART(2.4Mbps) अधिक उपयुक्त है
- DOOM का framebuffer 320×200 resolution और 8-bit color में लगभग 96KB का है
- UART बैंडविड्थ के आधार पर लगभग 3FPS ट्रांसमिशन संभव है
- इसे बेहतर बनाने के लिए MJPEG stream तरीका अपनाया गया
- JPEG encoder के रूप में bitbank2/JPEGENC का उपयोग किया गया
- औसत JPEG frame आकार 11~13.5KB
- सैद्धांतिक अधिकतम FPS लगभग 22~27FPS
CPU प्रदर्शन समायोजन
- डिफ़ॉल्ट firmware का CPU clock 100MHz था, जिसे 300MHz तक बढ़ाया गया और low-power mode को बंद किया गया
- Cortex-M4F(300MHz) DOOM चलाने के लिए पर्याप्त है, लेकिन JPEG encoding में bottleneck पैदा होता है
- वास्तविक frame rate लगभग 18FPS के स्तर पर रहा
मेमोरी (RAM) optimization
- डिफ़ॉल्ट रूप से उपलब्ध RAM 768KB है, और सहायक प्रोसेसर को disable करने पर 992KB तक मिलती है
- DOOM को 4MB RAM चाहिए, इसलिए कई optimization किए गए
- lookup table pre-generation, const variables को flash में स्टोर करना, caching system disable करना, अनावश्यक variables हटाना आदि से मेमोरी बचाई गई
फ्लैश (FLASH) क्षमता की समस्या
- DOOM 1 की मूल WAD file 4.2MB की है, जो ईयरबड्स की 4MB स्टोरेज सीमा से अधिक है
- fragglet के हल्के संस्करण Squashware WAD(1.7MB) का उपयोग करके समस्या हल की गई
- सभी assets को flash के भीतर समायोजित किया जा सका
open source और accessibility
- प्रोजेक्ट कोड दो GitHub repositories में सार्वजनिक है
- DOOMBuds: ईयरबड्स के लिए DOOM port
- DOOMBUDS-JS: browser और ईयरबड्स के बीच interaction को सपोर्ट करता है
- वेबसाइट queue-आधारित तरीके से चलती है, और 5वें स्थान से Twitch stream low-latency MJPEG stream में बदल जाता है
अभी कोई टिप्पणी नहीं है.