ゲーム

ゲームボーイを一切改造することなくゲーム映像をキャプチャ・配信できる「GB Interceptor」


ゲームボーイ本体を改造することなくゲームの映像をキャプチャしたり配信したりできるようになるツール「GB Interceptor」について、開発者のセバスチャン・スタークス氏が解説しています。

There oughta be a Game Boy capture cartridge.
https://there.oughta.be/a/game-boy-capture-cartridge

スタークス氏がGB Interceptorを開発しようと考えたのは、テトリス愛好家から「ゲームボーイでテトリスをプレイしている様子を配信したい」という連絡があったためだそうです。


記事作成時点では、ゲームボーイから映像をストリーミングすることは難しいことではありません。エミュレーターを使えば簡単にゲームボーイでのゲームプレイの様子を配信することができます。また、AnalogueのPocketのようなゲーム互換機を使い、ゲームボーイの映像をHDMI出力に変換することでも、配信は可能となります。他にも、ゲームボーイにHDMI端子を追加するという改造を行う人もいました。

しかし、スタークス氏に連絡を行ってきたテトリス愛好家は、テトリスのオンライン大会に参加している様子を配信したいと考えていたそうです。テトリスの大会ではプレイヤーが自身の手になじんだハードウェアでテトリスをプレイすることが重要となるため、改造機や互換機などを使用すると、大会の成績に大きな影響を及ぼす可能性があるとのこと。そのため、テトリス愛好家は改造されていないゲームボーイでゲームの様子を配信できないかと、スタークス氏に連絡を取ってきたそうです。

ゲームボーイ本体を改造することなくゲームデータにアクセスすることができるのは、ゲームボーイのカートリッジスロットです。ゲームデータのすべてがカートリッジスロットを通過するため、スタークス氏は「カートリッジスロットからデータを傍受する機能を有したアダプターを作成する」ことに決めたそうです。

ただし、ゲームボーイのカートリッジスロットからデータを傍受するだけでは、ゲームデータに任意のタイミングでアクセスすることができず、ゲームボーイのCPUがゲームカートリッジから受ける命令をまとめたRAM内のデータを見ることもできません。特に、画面に画像を描画するために必要なすべてが含まれているビデオRAMが表示されないため、代わりにVRAMの独自のコピーを作成することにしたそうです。

そこで、スタークス氏はカートリッジメモリバスからデータを供給するためのエミュレーターを作成。さらに、Raspberry Pi Picoのマイクロコントローラーである「rp2040」を使用し、ゲームボーイの2つの主要処理である「CPUをエミュレートしてVRAMのコピーを再作成する処理」と「ゲームボーイのグラフィックユニットであるPPUをエミュレートする処理」を分割して処理させることにしたそうです。


ゲームボーイのCPUエミュレーションは、GB Interceptorの開発における最も難しい部分であったとスタークス氏。最も難しい理由を、スタークス氏は「約1MHzのレートでイベントをプッシュするメモリバスに追いつく必要があるため」と説明しています。PPUエミュレーションが遅れても画面にちらつきのような短いグリッチが発生する程度で済みますが、CPUエミュレーションが遅れると最終的にメモリバス上のイベントを見逃してしまい、RAMのコピーが完全に同期しなくなる可能性があるだけでなく、エミュレーターが次の命令を解釈できなくなるケースもあるそうです。ゲームボーイのCPUはいくつかの命令を実行するのに数サイクルかかるのに対して、他の命令は1サイクルで完了するため、メモリバス上のイベントが常にCPU向けの命令であるとは限りません。そのため、エミュレーターは特定の命令の後、イベントがCPU向けの命令であるとみなされる際には、サイクルを無視する必要があるとのこと。

これらの問題を解決するために、スタークス氏はrp2040の動作周波数をデフォルトの「125MHz」から「225MHz」にオーバークロックしなければいけなくなったそうです。

GB InterceptorはRaspberry Pi Picoがベースとなっており、GPIOポートとカートリッジパスに接続するためのいくつかのバストランシーバーを備えています。バスの32ピンのうち、2つが電力関連、1つがアナログオーディオ、1つがゲームボーイのリセット状態を制御するため使用されており、残りの28個がrp2040と接続されています。これにより、rp2040は16本のアドレスピン、8本のデータピン、4本のバス制御ピンにアクセス可能となっているそうです。このままだと2つのGPIOが未使用のままとなりますが、1つは電圧監視に、もう1つはステータスLEDの制御に使用しています。


スタークス氏はGB Interceptorのファームウェアやプリント基板をGitHub上で公開しており、関連コードはGNU General Public Licenseのバージョン3のもと配布されており、PCBレイアウトおよび3DプリントできるケースのモデルはCC-BY 4.0で配布されています。なお、GB Interceptor利用時には画面にプレイに適さない小さなラグが発生することが注意事項として書かれており、スタークス氏は「遅いゲームでは問題ないかもしれません。GB Interceptorはあくまでキャプチャと配信に重点を置いたツールです」と説明しています。

GitHub - Staacks/gbinterceptor: Capture or stream Game Boy gameplay footage via USB without modifying the Game Boy.
https://github.com/Staacks/gbinterceptor


また、スタークス氏はPCBプリントサービスのJLCPCBを利用してGB Interceptor用のPCB基板を注文し、パーツを実際に組み立てる方法をまとめた動画も公開しています。

How to order and build the GB Interceptor - YouTube

この記事のタイトルとURLをコピーする

・関連記事
1996年発売の「ゲームボーイポケット」を折りたたみ式に魔改造した猛者現る - GIGAZINE

任天堂は20年以上前からゲームボーイカラーにウェブサイトの閲覧やライブストリーミングの導入を計画していた - GIGAZINE

生誕30周年を迎える世界で1億台以上売れた伝説の名機「ゲームボーイ」の歴史 - GIGAZINE

ゲームボーイをデジカメに魔改造してしまった猛者が登場 - GIGAZINE

「ゲームボーイがWi-Fi接続可能になるカートリッジ」を魔改造した猛者が登場 - GIGAZINE

in ソフトウェア,   ハードウェア,   動画,   ゲーム, Posted by logu_ii

You can read the machine translated English article 'GB Interceptor' that can capture and di….