任天堂が1989年に発売した携帯ゲーム機・ゲームボーイのエミュレーター「Retro Boy」が登場しました。ブラウザ上で動くエミュレーターですが、別途ゲームのROMデータが必要になります。

Retro Boy

https://smparsons.github.io/retroboy/



Retro Boyはプログラミング言語のRustで書かれたゲームボーイエミュレーターです。Rustで書かれたコードをWebAssemblyに変換することで、ウェブ上で利用できるようになっています。

ウェブフロントエンドは、オーディオとグラフィックにWeb Audio APIとHTMLのCanvas要素を採用。ブラウザのローカルストレージを活用することで、バッテリーバックアップMBCカートリッジのカートリッジRAMデータを永続化しているそうです。



実装をWebAssemblyにコンパイルするには、 wasm-packをインストールする必要があります。次に、コアプロジェクトをビルトし、ウェブフロントエンドディレクトリにJavascriptのバインディングコードを生成する必要があるとのこと。

Retro Boyのウェブフロントエンドは、Material UIで設計されたReact・TypeScriptアプリです。UIではROMをロードしたり、エミュレータを再生、一時停止、リセットしたりすることができます。また、フルスクリーンでのゲームプレイも可能です。

なお、プレイするにはプレイするゲームのROMデータが必要となります。



Retro BoyのソースコードはGitHub上で公開されています。

GitHub - smparsons/retroboy: A Game Boy emulator written in Rust.

https://github.com/smparsons/retroboy



なお、ソーシャルニュースサイトのHacker Newsでは「オーディオエミュレーションにいくつか問題があるようですが、とてもよくできている」といったコメントや、Retro Boyでプレイするのにオススメなゲームボーイタイトルを紹介し合うコメントなどが投稿されていました。