• 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 में बदल जाता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.