遅いはずの電子ペーパーで、ゲームボーイがちゃんと動く——。M5Stackの開発ボード「PaperS3」を使って、白黒のE-ink画面でレトロゲームを遊べるようにした人がいます。作ったのはWenting Zhangさん。ふだんE-ink(電子ペーパー=電子書籍リーダーなどに使われる、電気を切っても表示が残る画面)は、動画のようにパッパッと切り替わる用途には向きません。それを最大60Hzの部分書き換え(画面のうち変わったところだけを描き直すこと)で動かし、ゲームボーイのエミュレーター(別の機械の動きをソフトで再現する仕組み)をそこに載せてしまいました。

「電子ペーパーは遅い」という前提
電子ペーパーは、画面の中にある小さな色の粒を電気で動かして白黒を出しています。この粒が動くのに時間がかかり、1回の書き換えにおよそ0.1秒。単純計算だと毎秒10コマで、ゲームにはまったく足りません。だから電子書籍のように、たまにページをめくる用途には向くけれど、動画やゲームは苦手——というのが電子ペーパーの一般的なイメージです。
Zhangさんはもともと高速に書き換わるE-inkディスプレイを手がけてきた人で、この「遅い」という前提をどこまで崩せるかに挑みました。本人が調べたかぎり、PaperS3でゲームボーイを動かした前例はなかったそうです。
60Hzを実現したからくり
鍵になったのは、PaperS3の画面の配線です。ほかの小型E-inkボードと違い、この画面は行と列を直接たたくタイプの配線(パラレル接続)を持っています。これで通常の書き換え手順を飛ばして画面を駆動でき、高速化の余地が生まれました。
仕組みをかみくだくと、こうです。E-inkは1回の書き換えに0.1秒かかりますが、これは「6コマ分をため込んでから一気に反映する」ような内部のクセによるもので、結果として毎秒10コマに見えていました。Zhangさんはこの“ため込み”を外し、1コマごとに画面を更新することで60Hzを引き出しています。代わりに、それぞれのピクセルが何コマ目まで駆動されたかを1つずつ記録する管理領域が必要になり、そのぶん処理は重くなります。
全画面の960×540をこの方式で回すのは負荷が大きいのですが、ゲームボーイの画面はもともと160×144と小さいのが幸いしました。実際に処理するのは横に3倍した480×144だけで済むため、ESP32-S3の速い方のメモリ(SRAM)に収まり、CPUの半分ほどの余力で回せたそうです。
白黒画面での4階調再現
ゲームボーイの画面は白黒といっても、正確には4段階の濃さ(4階調)で絵を描いていました。E-inkは基本的に白か黒しか出せません。そこでZhangさんは、3つのドットをひとまとまりにして、黒と白の点の混ぜ方(ディザリング)で中間の濃さを表現しています。ついでに画像を3倍に引き伸ばして映しているので、もとの小さな画面が4.7インチのE-inkに大きくくっきり出るという副産物もつきました。
エミュレーターの中身は、一から作らず既存のものを利用しています。3種類を試したうえで、いちばん速く動いた「CrankBoy」を採用。処理が追いつかないときは描画を間引く工夫も入れて、多くのソフトで実機並みの速さ、描画は毎秒30〜60コマで動かしています。
音と操作、セーブまわりの工夫
弱点はやはり音です。PaperS3にはブザーが1個あるだけで、一度に鳴らせる音は1つ。ゲームボーイは4つの音を同時に鳴らす音源を積んでいたので、そのままでは再現できません。Zhangさんは複数の音を高速で切り替えて、疑似的に和音っぽく聞かせる古典的な手を使いました。サウンドカードのない昔のパソコンが、ビープ音1つで曲を鳴らしていたのと同じ発想です。おかげで音楽はちゃんと聞き取れますが、本物とは似ても似つかない、と本人も認めています。
操作はタッチ画面にボタンを表示する形が基本で、Bluetoothコントローラーにも一応対応します。ただしこちらはまだ実験段階で、相性の合う機器は限られます。
セーブは少し厄介でした。PaperS3の電源ボタンはいきなり電源を切る仕様で、「きちんと終了してからデータを書き出す」という動きができません。そこで明示的なセーブボタンを置き、いつでも同じ場面から再開できるクイックセーブ/ロードも足しています。
さらに常時60コマを狙って、ゲームボーイのCPU命令をESP32向けの命令に変換して直接動かす「JIT」という高速化も、友人がAIのコーディング支援ツールを使って試作段階まで作っているとのこと。まだ実験的ですが、組み合わせれば多くのソフトを実機並みの速さで動かせる見通しだといいます。
出来ばえと、入手難という現実
本人の評価は「実用になるレベルの、なかなか良いエミュレーター」。ただし常に60コマ出るわけではなく、ソフトによっては速度が落ちます。ゲームボーイカラーへの対応は、いまの性能ではまだ荷が重いそうです。
そして最大の難点は、肝心のPaperS3がすでに生産終了していること。もとは60ドル前後でしたが、いまは中古が倍以上の値で取引されています。同じことを再現するには、今回のような“生の”画面配線を持つE-inkボードが要るため、簡単に代わりが見つからないのが実情です。ファームウェアはM5Stack用の書き込みツールから導入でき、ソースコードもMITライセンスで公開されています。
「電子ペーパー=遅い」という思い込みを、部分書き換えの工夫でひっくり返してみせた工作です。派手さはありませんが、身近な開発ボード1枚でここまでできるのか、という驚きがあります。今後もこうしたメイカー系の面白い工作を拾って紹介していきます。
出典
60FPS Eink GameBoy Emulator on M5PaperS3(Wenting Zhang/Hackster.io、製作者本人の解説)


コメント