ゲームボーイカラーで「Bad Apple!!」をリアルタイム再生!異次元ハック🎮

任天堂の携帯ゲーム機「ゲームボーイカラー」が、最新技術との融合で再び脚光を浴びています。YouTuberのChromaLock氏が、ゲームボーイカラーの通信ケーブルポートを活用し、PCから動画データを送信してリアルタイム再生することに成功しました。その映像作品として選ばれたのが、東方Projectの楽曲「Bad Apple!!」の影絵アニメーションです。

ゲームボーイカラーの通信ポートを活用した挑戦

ゲームボーイカラーの通信ポートを活用した挑戦
※画像はイメージです

ゲームボーイシリーズには、他のプレイヤーとデータをやり取りするための通信ケーブルポートが搭載されています。ChromaLock氏は、このポートが初心者でも比較的簡単に改造やハッキングができる点に着目し、PCB基板の設計やマイクロコントローラーのプログラミングを学ぶためのプロジェクトとして、リンクポート経由で動画を再生する試みに挑戦しました。

「Bad Apple!!」の再生に向けた技術的挑戦

再生する動画として選ばれた「Bad Apple!!」は、海外でガジェットをハッキングして流す動画として非常に有名な存在です。過去にもゲームボーイで再生する試みはありましたが、今回は通信ケーブルポートを直接利用するという新たなアプローチが取られました。

プロジェクトの主な課題は以下の3つでした。

  • ゲームボーイの通信ケーブル用ポートの端子を設計すること
    • ゲームボーイの通信プロトコルに合わせてデータを送信できるマイクロコントローラの設計
    • 映像をゲームボーイで再生できるように変換すること
「Bad Apple!!」の再生に向けた技術的挑戦
※画像はイメージです

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

また、初代ゲームボーイではクロック速度が8kHzなのに対し、ゲームボーイカラーでは512kHzまで対応可能です。ChromaLock氏は、今回のプロジェクトでゲームボーイカラーを選んだ理由の一つに、ゲームボーイカラーの方がより高速な通信が可能なことを挙げています。また、「初代ゲームボーイの画面は黄緑が強く、ゲームボーイカラーの方が見た目が良いから」というのもゲームボーイカラーを選んだ理由だそうです。

マイクロコントローラーの選定と試行錯誤

マイクロコントローラーの選定と試行錯誤
※画像はイメージです

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

ゲームボーイカラーでの動画再生の工夫

ゲームボーイカラーでの動画再生の工夫
※画像はイメージです

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

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

参考・引用元