
2026/01/25 21:22
**デウムがイヤホンへポートされました。**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
(主要なポイントをすべて組み込む)**
このプロジェクトは、オープンソースファームウェアでPinebuds Proイヤホンにフラッシュして、クラシックな1993年の一人称シューティングゲームDOOMを実行する方法を示しています。
システムは2つのGitHubリポジトリによって動かされています:DOOMBuds は組み込みハードウェアにゲームを移植し、DOOMBUDS-JS はブラウザベースのUIを提供します。アーキテクチャは4つのコンポーネントに分かれます—(1)DOOMポート自体、(2)UARTトラフィックを転送するシリアルサーバブリッジ、(3)資産、キューイング、およびキー入力を管理するウェブサーバー、そして(4)静的フロントエンドのWebページ。
イヤホンにはディスプレイがないため、ゲームプレイは低遅延MJPEGストリームとしてUART上で2.4 Mbpsで送信されます(通常のBluetoothでは約1 Mbpsです)。320×200フレームバッファー(約96 kB)はJPEGフレームに圧縮され、平均11–13 kBとなり、理論的には22–27 FPSが可能ですが、実際にはCortex‑M4F CPUはJPEGエンコードのため18 fps前後で限界を迎えます。
メモリ制約に対処するため、Shareware DOOM WAD を4.2 MB から「Squashware」版の約1.7 MB に削減し(イヤホンの4 MBフラッシュに収まります)、共プロセッサを無効化してRAM使用量を768 KB から992 KB に抑えました。追加の最適化とルックアップテーブルにより、DOOM の4 MB 要件はこれらの制限内に収めることができます。
ユーザーは今や小さなイヤホンでクラシックゲームをプレイでき、開発者は他の組み込みデバイス向けに低電力・低遅延ストリーミングモデルを得ることができます。
本文
地獄のインターネット接続イヤホン!
WASD キーで移動し、矢印キーで左右を見回します。
Space = 発射、Shift = スプリント。E = ドア/オブジェクトと対話。
数字キーで武器を選択、Esc/Enter でメニューを開きます。
Tab を押すとマップが表示されます。死亡したら E を押してリスポーン――初心者です。
これは何なの?
1993 年のクラシック DOOM を知っていますか? 私はそれをイヤホン上で動作させ、さらにインターネットに接続しました。そうすれば、あなたのような訪問者が列に並び、数時間遠隔でゲームをプレイできます。
DOOM? イヤホンで? 草を踏みましょう。
そうですが、ただ古いイヤホンなら動きません――これは Pinebuds Pro のみ対応です。このイヤホンはオープンソースファームウェア付きの唯一のものです。
Pinebuds でコードを見るか自分で実行できる?
もちろんです! 関連するリポジトリは2つあります:
– あなたのイヤホン上で動く DOOM ポートDOOMBuds
– イヤホンと対話するブラウザインターフェースDOOMBUDS-JS
なぜ Twitch ストリームを見ているの?
これはアウトゴーイング帯域料金を払わないための最適化です。列で5番目に並ぶと、Twitch プレーヤーは低遅延 MJPEG ストリームへ切り替わります。
どうやって動かしたの?
まず読みやすいフォントに切り替えます。
後ほどこの記事/動画でさらに掘り下げる予定ですが、以下はいくつかの情報です:
プロジェクトは4つの部分から構成されています:
- イヤホン上で動く DOOM ポート
- シリアルサーバー – イヤホンとウェブサーバーを橋渡しし、MJPEG ストリームを Twitch に転送
- ウェブサーバー – アセット配信、キュー管理、キー入力転送、MJPEG ストリーム表示
- 静的 Web ページ – ブラウザに何を表示するか、どのように通信するかを指示
ファームウェア制限
-
シリアル接続
- イヤホンにはディスプレイがなく、Bluetooth または UART パッドでデータ転送。
- Bluetooth は遅く(≈1 Mbps)。UART は約 2.4 Mbps。
- DOOM のフレームバッファ:
(8ビット)。320 × 200 = 96 kB - UART では圧縮なしで 秒間3フレーム程度送信可能。
- MJPEG としてストリームを圧縮:高品質 JPEG は約13.5 KB、ほとんどのシーンは約11 KB。
- 理論上 FPS:
- 極力楽観的に:
2,400,000 / (11,000 × 8) ≈ 27.3 fps - 実際には保守的に:
2,400,000 / (13,500 × 8) ≈ 22.2 fps
- 極力楽観的に:
-
CPU
- 標準ファームウェアは 100 MHz。これを 300 MHz に上げ、低電力モードを無効化。
- Cortex‑M4F を 300 MHz で動かせば DOOM は十分に走りますが、JPEG エンコードがボトルネックになり最大約18 fps。
-
RAM
- デフォルト RAM:768 KB。共処理器を無効化すると 992 KB に増加。
- DOOM は 4 MB の RAM を必要とします。最適化(ルックアップテーブルの事前生成、変数を
に、フラッシュから読み込み、キャッシュを無効化、未使用変数の削除)でこの要件は減らせます。const
-
FLASH
- シェアウェア DOOM 1 WAD は 4.2 MB。イヤホンには 4 MB のデータしか保存できません。
- Fragglet の「Squashware」WAD はわずか 1.7 MB、フラッシュに収まります。