わずか4ドルほどで購入できるESP32-S3を利用して、Game Boyをエミュレーションするユニークな自作プロジェクト「ESP-GameBoy」が公開されました。
一般的な携帯ゲーム機とは異なり、本体側にはゲームを表示するディスプレイを搭載せず、ゲームの映像と音声をWi-Fi経由でスマートフォンのブラウザーにストリーミングするという、いわば“ヘッドレスGame Boy”ともいえる仕組みになっています。
ESP32側でGame Boyを動かし、スマホはディスプレイ兼コントローラーに
今回「ESP-GameBoy」を公開したのは、ArtificialAGE氏です。Game Boyを思わせる小型の3Dプリント製ケースにESP32を組み込み、独立したレトロゲームデバイスとして制作しています。
採用されているのは、16MBのフラッシュメモリと8MBのPSRAMを搭載した「ESP32-S3 N16R8」です。
Game Boyエミュレーターには「Peanut-GB」が使用されており、ESP32-S3のふたつのCPUコアを活用。片方のコアでエミュレーションを処理し、もう片方でWebSocketを利用したストリーミング処理を担当する構成になっています。

ESP-GameBoyを起動すると、本体自身が「ESP-GameBoy」というWi-Fiアクセスポイントになります。
スマートフォンからそこに接続し、ブラウザーで本体のアドレスにアクセスすると、Game Boy風の画面と十字キー、A/B、SELECT、STARTボタンを備えたUIが表示されます。
つまり、実際のゲーム処理はESP32側で行われ、スマートフォンはディスプレイとコントローラーとして利用する仕組みです。Androidなど対応した環境では、画面上のボタンを押したときに短い振動を発生させる機能も用意されています。
映像は160×144ドット、音声もブラウザーにストリーミング
ゲーム映像はオリジナルGame Boyと同じ160×144ドットで処理され、2bit形式でブラウザーへ送信。音声についても8bitモノラルPCMとしてストリーミングされます。
ストリームのバッファーは標準で48msに設定されており、設定画面から調整することも可能です。値を小さくするとレスポンスを重視できる一方、大きくすることで不安定なWi-Fi環境でも映像を滑らかにしやすくなります。
なお、スマートフォンや通信状況によっては帯域が60fpsを維持できない場合があります。その際にはエミュレーションそのものを停止させるのではなく、映像フレームを間引くことでゲームの動作を継続する設計になっています。

ROMはスマホからESP32本体にアップロード可能
ゲームのROMファイルはスマートフォン側ではなく、ESP32本体のフラッシュメモリに保存されます。
約14MBのLittleFS領域がゲームライブラリーとして確保されており、ブラウザーの設定画面から手持ちの「.gb」ファイルをアップロードすることが可能。1ファイルあたり最大2MBまで対応しています。
複数のゲームを登録しておき、ブラウザー上のライブラリーから遊びたいタイトルを選ぶこともできます。
バッテリーバックアップに対応したゲームではセーブデータも保存可能で、変更があった場合は約15秒ごとに自動保存されるほか、ROMの切り替えや再起動前にも保存されます。「.sav」ファイルをスマートフォンへダウンロードしたり、逆にアップロードしたりする機能も用意されています。

プロジェクトファイルや3Dプリント用データも公開
現時点では初代Game Boy(DMG)のエミュレーションが中心となっており、ESP-GameBoyに接続中はスマートフォン側の通常のインターネット接続が利用できなくなるほか、接続できるクライアントも1台に限定されています。
また、将来的な機能としてESP-NOWを利用した無線リンクケーブルの実験も行われています。ただし、こちらは現段階では通信テスト用の機能にとどまっており、『ポケットモンスター』などで実際に通信プレイが行える状態にはなっていません。
プロジェクトのソースコードやファームウェアはGitHubで公開されているほか、Game Boy風ケースを出力するためのSTLデータもMakerWorldから入手可能です。
高性能なディスプレイをESP32に直接接続するのではなく、手元にあるスマートフォンの画面とブラウザーを利用することで、低価格なマイコンだけで携帯型ゲーム環境を構築するという発想が面白いプロジェクトです。
via.Reddit















ダンジョンズ&ドラゴンズ ビジュアル大全 半世紀を超えるその歴史とアート









ゲームコンソール2.0