以前、ESP32で白黒コンポジット出力をためしてみたときは「白黒だから可能なんだなー」と思っていたのですが。
M5Stack:白黒コンポジットビデオ出力
http://shikarunochi.matrix.jp/?p=3967
なんと、カラーでビデオ出力しているプログラムがありました。しかも、ATARI/SMS(GameGear)/NES(ファミコン)をエミュレートして、その画面をカラーでビデオ出力してます…!すごすぎる。
rossumur / esp_8_bit
https://github.com/rossumur/esp_8_bit
さっそく、動かしてみました!
マジでカラーで出力されてる…!なんだこれは。すごすぎる。
ATOM Liteでいけました。 pic.twitter.com/uTFSfyNv2E— Nochi (@shikarunochi) June 9, 2020
ほんとにカラーで出てる!
接続は G25 と GND だけです。G25使うので、スピーカーの付いたM5Stackで実行すると、スピーカーが鳴ってしまってうるさいと思います。なので今回はM5 ATOM Liteで。
音声出力するには抵抗とコンデンサで回路組んでやる必要あります。パーツが無かったのでまたいずれやってみたいですね。
プログラムは、Arduino IDEでそのままコンパイルできました。(PlatformIO でコンパイルするには inoファイルの位置移動と、includeのパス追加が必要でした。)
そして、Bluetooth接続のキーボード/コントローラ/Wiiコントローラも使用可能になってるのです…。この部分だけでもすごいですよね…!
起動後、5秒程度 Bluetooth認識モードに入ってるので、その間に Bluetoothキーボード/コントローラ/Wiiコントローラを接続待ち状態にすれば接続可能です。
On boot the software searches for new Bluetooth devices for 5 seconds
とのことで、起動時にBluetoothキーボードをペアリングして入力もできた…! pic.twitter.com/dGwS4kKJ9y— Nochi (@shikarunochi) June 9, 2020
Bluetooth処理、流用も行いやすい作りになっててすばらしいです。
ビデオ出力ロジックは各エミュレータの出力に合わせて結構調整してるみたいです。これも汎用的に使えるか試してみたいですね。
動作確認しようとして、setup()に Serial.begin() を入れてみたのですが、定義がぶつかってしまってコンパイルエラーになりました。Serial.begin しなくてもログがシリアル出力されてるので、標準とは別のロジックでシリアル出力してるみたいです。
オプションではありますが、赤外線レシーバを繋げば赤外線コントローラも使えるとのこと!
IchigoDyhookの画面に出力してみました。
いいですねー。IchigoDyhook本体のキーボードが使えればよいのですが、PS/2 or USB接続なので、そのままだと使えないです。
ひとまずはBluetoothキーボードで。