- 1993 tarihli klasik oyun DOOM'u PineBuds Pro kablosuz kulaklıklarda çalışacak şekilde portlayan bir proje; web üzerinden uzaktan oynanabiliyor
- Seri sunucu (serial server), web sunucusu, statik web sayfası ve DOOM portu olmak üzere dört bileşenden oluşuyor
- UART bağlantısı ile yaklaşık 2.4Mbps bant genişliği sağlanıyor ve görüntü MJPEG akışı olarak iletilerek teoride 27FPS'e kadar performans elde ediliyor
- CPU 100MHz'den 300MHz'e overclock edilerek, JPEG kodlama sınırları nedeniyle pratikte yaklaşık 18FPS düzeyinde performans sağlanıyor
- RAM·FLASH kısıtları, optimizasyonlar ve hafifletilmiş Squashware WAD dosyası ile aşılıyor; bu da açık kaynak firmware tabanlı donanım deneylerinin potansiyelini gösteriyor
Projeye genel bakış
- 1993'te çıkan DOOM, PineBuds Pro kulaklıklarda çalışacak şekilde portlandı
- PineBuds Pro, açık kaynak firmware desteği sunan tek kablosuz kulaklık olarak anılıyor
- Site ziyaretçileri sıraya girerek oyunu uzaktan oynayabiliyor
- Proje dört parçadan oluşuyor
- Kulaklık üzerinde çalışan DOOM portu
- Kulaklık ile web sunucusunu bağlayan ve MJPEG akışını Twitch'e dönüştüren seri sunucu
- Varlıkları sunma, sıra yönetimi, tuş girişini iletme ve akışı gösterme görevlerini üstlenen web sunucusu
- Tarayıcı görüntüleme ve sunucu iletişimini sağlayan statik web sayfası
Donanım ve bağlantı yapısı
- Kulaklıklarda ekran olmadığından veri alışverişi Bluetooth veya UART temas pedleri üzerinden yapılıyor
- Bluetooth yaklaşık 1Mbps ile daha yavaş olduğundan UART(2.4Mbps) daha uygun
- DOOM'un framebuffer'ı 320×200 çözünürlükte, 8 bit renk derinliğinde ve yaklaşık 96KB boyutunda
- UART bant genişliğiyle yaklaşık 3FPS aktarım mümkün
- Bunu iyileştirmek için MJPEG akışı yöntemi benimsenmiş
- JPEG kodlayıcı olarak bitbank2/JPEGENC kullanılmış
- Ortalama JPEG kare boyutu 11~13.5KB
- Teorik azami FPS yaklaşık 22~27FPS
CPU performans ayarı
- Varsayılan firmware'deki CPU saat hızı 100MHz iken, bu değer 300MHz'e çıkarıldı ve düşük güç modu devre dışı bırakıldı
- Cortex-M4F(300MHz), DOOM'u çalıştırmak için yeterli olsa da darboğaz JPEG kodlamada oluşuyor
- Gerçek kare hızı yaklaşık 18FPS seviyesinde
Bellek (RAM) optimizasyonu
- Varsayılan erişilebilir RAM 768KB, yardımcı işlemci devre dışı bırakıldığında ise 992KB
- DOOM 4MB RAM gerektirdiği için çeşitli optimizasyonlar yapıldı
- Lookup table'ların önceden oluşturulması, const değişkenlerin flash'ta saklanması, cache sisteminin devre dışı bırakılması, gereksiz değişkenlerin kaldırılması gibi yöntemlerle bellek tasarrufu sağlandı
Flash (FLASH) kapasite sorunu
- DOOM 1'in varsayılan WAD dosyası 4.2MB boyutunda ve kulaklığın 4MB depolama sınırını aşıyor
- Sorun, fragglet'in hafifletilmiş sürümü Squashware WAD(1.7MB) kullanılarak çözüldü
- Tüm varlıklar flash içine sığdırılabildi
Açık kaynak ve erişilebilirlik
- Proje kodu iki GitHub deposunda açık olarak yayınlanıyor
- DOOMBuds: kulaklık için DOOM portu
- DOOMBUDS-JS: tarayıcı ile kulaklık arasındaki etkileşimi sağlıyor
- Web sitesi sıra tabanlı çalışıyor; 5. sıradan itibaren Twitch akışı, düşük gecikmeli MJPEG akışına geçiyor
5 yorum
"DOOM'u Çalıştırıyor"
DOOM ustaları gerçekten... inanılmazlar.
Vay canına, bu biraz... ürkütücü derecede çılgınca hahaha
Aman tanrım.
Hacker News görüşleri
DOOM'un herhangi bir basit cihazda çalıştığını her gördüğümde, bunun yazılımın bir zaferi mi yoksa daha ucuz özel donanım üretememiş olmamızın ekonomik bir başarısızlığı mı olduğunu düşünüyorum
ANC Bluetooth kulaklıklar basit ürünler değildir ve gürültü engelleme, sürekli olarak çok karmaşık hesaplamalar yürütmek zorundadır
Hızlı bir MCU sadece israf değildir; düşük gecikme ve verimli güç yönetimi gibi avantajlar sunar
Mükemmel bir ASIC üretmeye çalışmaktansa, genel amaçlı bir MCU ile güncellenebilir bir yapı kurmak çok daha gerçektir
Sonuçta, kanıtlanmış MCU'ları büyük miktarda satın almak, özel çip üretmekten çok daha ekonomiktir
Özel çip tasarlayıp üretmenin iş gücü, test, eğitim ve düşük hacimli üretim maliyetleri daha pahalıya geliyor
İş süreçleri maliyeti, malzeme maliyetinden çok daha büyük bir pay tutuyor
DOOM'un kulaklıklarda çalıştığı bir dünyada yaşıyoruz; buna olumsuz bakmak için bir neden yok
Aşırı güçlü bir özellik seti ama bütün bunların kulağınızın içine sığıyor olması şaşırtıcı
DOOM'u PineBuds Pro'ya ben port ettim
İnternet üzerinden bağlanırsanız kulaklıklarımda DOOM oynayabilirsiniz
Ayrıntılar ve GitHub bağlantısı sitemde var
Sürekli sadece DOOM'un port edilmesi biraz üzücü
Eskiden basit ama bağımlılık yapan oyunlar çoktu, ama günümüz oyunları fazla büyük ve karmaşık olduğu için küçük platformlara taşınmaları zor
Sektör, indie'ler dışında yönünü kaybetmiş gibi görünüyor
Eski Master of Orion 1 gibi oyunlar basitti ama tekrar tekrar oynanabiliyordu
Günümüz oyunları videolar gibi; etkileşim az ve XP kasma odaklı oldukları için ilgim azalıyor
Artık neredeyse bir gelenek haline geldi
Artık çoğu kullanıcı depolama ya da performansı çok önemsemiyor
Tüketicilerin “çalışsın yeter” yaklaşımını benimsemesiyle optimizasyonun değeri azaldı
Yine de indie sahnesinde kısa ve stil sahibi oyunlar hâlâ çok
Sadece, film gibi kısa oyunların büyük etki bırakması zor olduğundan fazla tanınmıyorlar
DOOM portları listesine Wikipedia sayfasından bakabilirsiniz
Bence bu PineBuds Pro için harika bir tanıtım etkisi
Acaba Fairbuds ile de böyle bir şey yapılabilir mi
Ama DOOM bu kadar çok cihazda çalışıyorken neden hâlâ 386'da akıcı çalışmıyor
John Carmack'ın DOOM 3 sonrası bir röportajda, motor karmaşıklaştıkça tüm kodu tek başına yazmasının artık mümkün olmadığını söylediğini hatırladım
Bugünün yapay zeka çağında bunun hakkında ne düşünürdü merak ediyorum
Kişisel olarak yapay zekaya olumlu baktığını düşünüyorum
Ayrıca “Masters of Doom” gerçekten çok iyi bir kitap, tavsiye ederim
PineBuds Pro'yu kullanmış biri var mı merak ediyorum
Pine64 IRC'de bununla ilgili bir kanal yoktu, o yüzden sormak zordu
Konforu ya da ses kalitesi hakkında bir şey diyemem ama Pine64 Discord kanalında Pinebuds için özel bir oda var
Bilerek ANC'siz firmware kurdum ama bir Bluetooth kulaklık olarak görevini gayet iyi yapıyor
Birkaç yıl sonra, kulaklıklarda biraz daha fazla RAM olursa yerel bir Kubernetes kümesi bile çalıştırabiliriz gibi geliyor
“DOOM'u tek kullanımlık elektronik sigara çipine port ettim” başlıklı yazıyı bekliyorum 😄
Moore yasası devam ederse, belki yaklaşık 10 yıl sonra mümkün olabilir
Kulaklığa doğrudan bağlı bağımsız görüntüleyici mobilde de çalışıyor
Demo videosuna bakın
Dokunmatik kontroller yok, sadece intro döngüsü oynatılıyor