日経ソフトウェアで「PCエンジンで動くゲームを作ろう」という連載が始まりました!せっかくなら、M5Stack で動かしたいと思い、まずは PC エンジンエミュレータを M5Stack に移植しました。
CD-ROM2 / SuperGrafx への対応は無理と思うので、移植元はシンプルにPCエンジン本体のみ対応の xpce を選択しました。xpce は fpce の Windows 移植版です。
xpce 0.11
https://geolog.mydns.jp/www.geocities.co.jp/SiliconValley/7052/FPCE:PC-Engine(TurboGrafx16) Emulator
https://geolog.mydns.jp/www.geocities.co.jp/Playtown/2004/fpce.html
(Geocities 消滅してしまったので、アーカイブページへのリンクです)
PCエンジンで動くゲームを作る前に、まずはPCエンジンエミュレータを移植。画面が出るとこまで来た! pic.twitter.com/H3jQCvs2gp
— Nochi (@shikarunochi) December 14, 2021
エミュレート部分のソースはほぼそのままで行けました。画面描画をM5Stack向けに作成。
画面更新を別スレッドにして、結構速度が出るようになりました!
入力は未実装なので、デモプレイ画面です。
元の描画ロジックが差分更新方式なので、残像が残ってしまいますね。うーん、どうするかな…。
色も、まだ変なところあります。赤が緑になってるのか。 pic.twitter.com/w2SQ3ALufs— Nochi (@shikarunochi) December 15, 2021
エミュレータ側からの描画はスプライトに行っておいて、スプライトからの実画面転送を画面描画用スレッドで行うようにしました。残像は出なくなった!
メモリ足りるか不安でしたが大丈夫でした。あとは色かー。 pic.twitter.com/u5MZiuSWLw— Nochi (@shikarunochi) December 15, 2021
だいぶ動くようになりました。動作速度はこれ以上は難しいかも。画面描画試行錯誤中…。
操作できるようになった! pic.twitter.com/uHUCDU0ant
— Nochi (@shikarunochi) December 15, 2021
操作をジョイパッド + 本体ボタンでできるようにしました。
違った。GRB 333 を順番入れ換えて RGB 333 にするだけで行けました!これぞ R-TYPE!
pushImage に uint8_t 配列で渡してるからかな。 pic.twitter.com/L392uR2K3w— Nochi (@shikarunochi) December 15, 2021
色問題も解決!
そして、当初の目的である、日経ソフトウェア連載のプログラムを M5Stack で動かすところまで到着しました!
PC-Engine で Hello World! pic.twitter.com/u6MMd9gDxg
— Nochi (@shikarunochi) December 16, 2021
PCエンジンさん、「Hello,World!」
PSRAM を使用しているので、プログラムの実行には M5Stack FIRE が必要です。
プログラムはこちらです。Visual Studio Code + PlatformIO でビルドしてください。
PC Engine emulator for M5Stack FIRE
https://github.com/shikarunochi/M5PCE
ビルドした bin ファイルも上げてあります。Lovyan Launcher 等で読み込み・起動してください。
SD カードの /pceROM/ に、pce イメージを入れてください。起動すると最初にイメージファイル選択画面が表示されます。
Aボタン / Cボタンで上下移動、Bボタンで選択です。
操作には、GROVE 接続のジョイスティックユニットが必要です。本体ボタンAがRUN、BとCがボタン、ジョイスティックで上下左右、押し込みで SELECTです。
音は鳴りません。
イメージファイル再選択するときはM5Stackをリセットしてください。
M5Faces GamePad にも対応しました!
いい感じ!カチカチうるさいけどw pic.twitter.com/reaGTLdUmI
— Nochi (@shikarunochi) December 30, 2021
M5Stack FIRE
https://www.switch-science.com/catalog/7364/
M5Stack用ジョイスティックユニット
https://www.switch-science.com/catalog/4050/
M5 Faces II – M5Stack Faces用ボトムベース
https://www.switch-science.com/catalog/6541/
M5Stack Faces用ゲームパッドパネル
https://www.switch-science.com/catalog/6612/