動画

ゲームボーイカラーに「Bad Apple!」をリアルタイムでストリーミングすることに成功


任天堂の携帯ゲーム機である「ゲームボーイ」や「ゲームボーイカラー」には、他のプレイヤーとデータをやりとりするための通信ケーブルを接続するポートが存在します。YouTuberのChromaLock氏が、ゲームボーイカラーの通信ケーブル用ポート経由でPCから動画データを送信して再生することに成功したと、報告しています。

I Streamed To A Game Boy - YouTube


ChromaLock氏は、「ゲームボーイの通信ケーブル用ポートは初心者でも比較的簡単に改造やハッキングができる点で魅力的」と述べ、PCB基板の設計やマイクロコントローラーのプログラミングを学ぶために、リンクポート経由で動画を再生する試みを行ったそうです。


再生する動画は「Bad Apple!」の影絵アニメーション。海外ではガジェットをハッキングして流す動画として非常に有名な存在です。


過去にもゲームボーイで再生する試みはありましたが、これは「Wi-Fiチップを内蔵したカートリッジを挿してPCから再生する」というものでした。


今回の課題は3つあります。まずは「ゲームボーイの通信ケーブル用ポートの端子を設計する」こと。


次に「ゲームボーイの通信プロトコルに合わせてデータを送信できるマイクロコントローラの設計」


そして、「映像をゲームボーイで再生できるように変換する」ことでした。


ゲームボーイの通信ケーブルは、グランド・5V電源・TX(送信)・クロック・RX(受信)と未使用の合計6ピンで、非常にシンプルな構成となっています。


基本的な仕組みとしては、クロックラインが8回パルスを送るごとに1バイトのデータが交換される形になっています。この際、ゲームボーイ同士が同時にデータを送信しないよう、適切な同期が求められます。通信は極めて単純で、停止ビットやパリティビット、チップセレクトといった複雑な制御が一切ありません。そのため、非常に簡素なシリアル通信プロトコルとして設計されています。


また、初代ゲームボーイではクロック速度が8kHzなのに対し、ゲームボーイカラーでは512kHzまで対応可能です。ChromaLock氏は、今回のプロジェクトでゲームボーイカラーを選んだ理由の一つに、ゲームボーイカラーの方がより高速な通信が可能なことを挙げています。


また、「初代ゲームボーイの画面は黄緑が強く、ゲームボーイカラーの方が見た目が良いから」というのもゲームボーイカラーを選んだ理由だそうです。


PCのUSBからゲームボーイカラーの通信ケーブルに変換するのがマイクロコントローラーと接続端子です。


ゲームボーイカラーへの接続端子になるPCB基板は、初期設計ではデータラインを誤って配置してしまったため、ゲームボーイカラーに過剰な電流が流れて壊れてしまうという失敗を犯してしまったとのこと。


さらに、信号変換用の回路が512kHzに対応できないなど、設計上の課題を何度も修正しながら、チャレンジを重ねた、とChromaLock氏。


マイクロコントローラーについては、当初はESP32を選んでいました。しかし、ESP32の動作速度はゲームボーイカラーの512kHzクロック速度を十分に超える性能を持っているものの、実際の使用ではその性能を十分に活かせず、信号を200kHz程度までしか認識できなかったとのこと。そのため、ChromaLock氏はRaspberry Pi Picoを採用。デュアルコアプロセッサを搭載しているRaspberry Pi Picoであれば、1つのコアをGPIO操作に専念させることが可能であるとのこと。


マイクロコントローラーにRaspberry Pi Picoを採用したことで、512kHzのクロック速度を適切に処理できるようになり、データ転送が可能になったそうです。


ただし、コード設計の段階ではサンプルコードを参考にしながら進めたものの、マイクロコントローラーがあまりにも高速すぎて不具合が生じる場面もあったとのこと。その結果、余計なクロック信号を誤検出する問題が発生し、遅延を挿入して調整する必要があったとChromaLock氏は述べています。


マイクロコントローラーを3Dプリンターで設計したケースに固定。


ゲームボーイカラーと接続します。


動画について、ゲームボーイカラーは画面上に最大32色しか表示できず、さらに各タイルでは4色のパレットしか使えないという厳しい制約があります。ChromaLock氏はこれを踏まえ、エンコードプロセスではまず動画をゲームボーイカラーの解像度である160×144ピクセルにダウンサンプリングし、画面をタイル単位に分割してからそれぞれのタイルに適した4色のパレットを生成しました。


エンコードされたフレームはUSB経由でRaspberry Pi Picoに送られ、そこからゲームボーイに逐次転送されます。タイル単位でのデータ転送が行われるため、全てのデータを転送して1つのフレームを描画するには約5フレーム分の時間がかかります。結果として再生される動画のフレームレートは約11FPSとなり、一部の動画では画面のズレが発生するとのこと。ただし、解像度を犠牲にすれば、60FPSの高フレームレートで再生することは可能だそうです。


そんなわけで、「Bad Apple!」の動画をゲームボーイカラー上で、低解像度・高フレームレートで再生する様子が以下のムービー。ゲームボーイカラーで再生されているのはあくまでも映像のみで、音は再生できないので、流れている楽曲は編集で足されているものです。

Bad Apple but it's streamed to a GameBoy Color - YouTube


また、カラーの「HEYYEYAAEYAAAEYAEYAA」の動画をゲームボーイカラーで再生するとこんな感じ。


ウェブカメラを接続して、リアルタイムでゲームボーイカラーの画面に撮影した風景を映すことにも成功。


ただし、フレームレートはどうしても下がってしまうので、ゲーム画面を映し出してプレイするのはかなり厳しいそうです。

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

・関連記事
ゲームボーイで使えるポケットカメラをウェブカメラとして利用できるようになる「GB Operator」、「史上最悪で最高のウェブカメラ」と開発元は自画自賛 - GIGAZINE

「究極のゲームボーイカラー」をOculus VRの創始者がリリース、「日中の屋外でも視認性良好なディスプレイ」「アルミ合金製の外装」など機能モリモリで当時のカセットもプレイ可能 - GIGAZINE

Apple Vision Proで部屋に浮かぶ巨大な画面を使ってゲームボーイを遊べるエミュレーター「GBA4vOS」が登場 - GIGAZINE

10年以上交換不要な原子力電池を自作して携帯ゲーム機に組み込んだ猛者が登場 - GIGAZINE

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

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

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

You can read the machine translated English article here.