レトロゲームコミュニティでは、 Rust で書かれ、ウェブブラウザで直接実行できる新しい Game Boy エミュレーター「 retroboy 」が話題になっています。このプロジェクトは、現代のプログラミング言語と WebAssembly が開発者に、クラシックゲーム体験を印象的な精度でウェブ上に提供することを可能にしていることを示しています。
ウェブベースのエミュレーションの課題と進歩
このエミュレーターは、正確なCPUエミュレーション、オーディオサポート、さまざまなメモリバンクコントローラー(MBC)との互換性など、包括的な機能セットで大きな注目を集めています。しかし、コミュニティでの議論によると、オーディオエミュレーションはブラウザベースのエミュレーターにおいて最も困難な側面の一つであることが明らかになっています。多くのユーザーが、オリジナルのゲームには存在しないはずのクリック音やその他のオーディオノイズを報告しています。これは WebAssembly とブラウザでのオーディオに関する一般的な問題のようです。
「今日のブラウザでは、 WASM とオーディオを組み合わせたほぼすべてのものがそのような問題を抱えています。複数のスレッドを活用し、何をしているかを非常に慎重に考えない限りは。主に単一スレッドのコンテキストで、オーディオの再生と他の処理を切り替える必要があるところに問題があると思います。」
コメントの中で開発者たちは、 WebAudio のパフォーマンス制限により、ネイティブアプリケーション(20ms)と比較して、はるかに大きなオーディオバッファ(最低100ms)が必要になることが多いと説明しています。フレームのドロップやパフォーマンスの問題があると、オーディオのグリッチが発生する可能性があります。一部の開発者は、解決策としてオーディオ処理に別のスレッドを使用することを提案していますが、これにより実装の複雑さが大幅に増加します。
retroboy エミュレータの主な特徴:
- すべての JSON CPU テストに合格する正確なサイクル精度の CPU
- 正確なオーディオエミュレーション(ブラウザの制限あり)
- スキャンラインベースのレンダラーを使用したグラフィックスエミュレーション
- MBC1、MBC3、MBC5、および HuC1 のサポート
- MBC3 カートリッジ用の RTC サポート
- ブラウザのローカルストレージを介した永続的なカートリッジ RAM
- GameShark または GameGenie チートのサポート
- フルスクリーンモード、一時停止/再開、およびカスタマイズ可能なコントロールを備えた Web フロントエンド
成長する Rust エミュレーションエコシステム
このプロジェクトは、 Rust ベースのエミュレーターの成長するエコシステムに加わり、複数のコメント投稿者が自分の類似プロジェクトへのリンクを共有しています。 Rust プログラミング言語は、そのパフォーマンス特性とメモリ安全機能により、エミュレーションプロジェクトでますます人気が高まっているようです。 WebAssembly にコンパイルされると、これらのエミュレーターはプラグインやダウンロードなしでブラウザで効率的に実行できます。
コードベースの整理された構成は、それから学ぼうとする複数の開発者から特に称賛を受けました。一部の開発者は、フレームワークやツールに関する不確実性から自分のエミュレーションプロジェクトを始めることに躊躇していたが、この wasm-bindgen と HTML Canvas を使用したプロジェクトのアプローチが魅力的に簡潔だと感じたと述べています。
最も推奨される Game Boy ゲーム(コメントより):
- Pokémon Red/Blue と Gold/Silver
- The Legend of Zelda: Link's Awakening
- Tetris
- Super Mario Land 1 & 2
- Kirby's Dream Land
- Wario Land II & III
- Donkey Kong (1994)
レトロゲームの持続的な魅力
技術的な議論を超えて、コメントからは Game Boy ゲームとハードウェアの持続的な人気が明らかになりました。ユーザーは熱心に自分のお気に入りのタイトルを共有し、 Pokémon 、 Zelda: Link's Awakening 、 Tetris が必須の体験として頻繁に言及されました。また、会話では LSDj のような音楽シーケンサーや最新の Tetris 実装など、クラシックハードウェア向けの新しいゲームを作成している活気あるホームブリューシーンも強調されました。
多くのコメント投稿者は、最近 Anbernic や Miyoo などのメーカーからレトロゲーミングハンドヘルドを購入したと述べており、価格は約50ポンド(約65米ドル)からで、 Game Boy だけでなく PlayStation 1 までのシステムをエミュレートできる能力を持っています。これは、純粋なソフトウェアエミュレーション以外にも、ポータブルなレトロゲーム体験に対する強い市場があることを示唆しています。
プロジェクトの作成者は、自分の小さな趣味のプロジェクトが受けた注目に驚き、 wasm-bindgen が比較的使いやすいと感じたと述べています。このアクセシビリティは、現代のウェブテクノロジーが複雑なエミュレーションプロジェクトへの参入障壁を下げ、より多くの開発者がゲームの歴史を保存しながら、普遍的なプラットフォームであるウェブブラウザを通じてアクセス可能にすることに貢献できることを示しています。
参考: retroboy