はじめに
以下の記事で、M5StampS3 + 3.2 インチ LCD (ILI9341) の環境を構築することができ、無事「Hello, World!」を表示するポートレイトが完成しました。
ただし、上記記事の状態だと描画速度に難があったのですが、その点については描画に用いていたディスプレイドライバを Adafruit_ILI9341 から LovyanGFX に差し替えてみたところ、実用的な描画速度になりました。
今回は、micro MSX2+という組み込み用途に特化した MSX エミュレータを用いて、この環境で MSX エミュレータを動かしてみたいと思います。
本記事で用いるハードウェア構成や配線構成は、こちらの記事から変更していません。
micro MSX2+ for M5StampS3
micro-msx2p
を git clone
して msx1-m5stamps3
ディレクトリで make
を叩けば、M5StampS3 + 3.2 インチ LCD (ILI9341) の環境で MSX1(※C-BIOS)が動きます。
git clone https://github.com/suzukiplan/micro-msx2p.git
cd micro-msx2p
git checkout 6aa69099af49148448c6e12a0224bd7b2911a22b
cd msx1-m5stamps3
make
2023.07.29 追記
最新のcommitで配線仕様が変わったので、配線を変えずに動かすには commit 6aa6906 への git checkout
が必要です。
このまま起動すると、以下の記事で紹介されている MSX で Hello World が表示されるサンプル ROM が起動します。
...ですが、流石にそろそろ Hello World を見るのも飽きてきたし、画面の表示レスポンスのチェックも行いたいところなので、もっと動き(アニメーション)のある ROM に差し替えてみましょう。
ROM を差し替えてみる
まず msx1-m5stamps3/bios/game.rom
を動かしたい ROM ファイルに置き換えます。
今回は以下の ROM を使ってみることにします。
msx1-m5stamps3 % cp /path/to/rabbit_adventure_trial.rom bios/game.rom
動かす ROM がメガロムの場合、msx1-m5stamps3/src/app.cpp
の msx1.loadRom
を呼び出している箇所のメガロム種別を適切に変更する必要がありますが、今回試す ROM は 32KB 標準 ROM なので、書き換え不要です。
メガロムを動かす時は
MSX1_ROM_TYPE_NORMAL
の箇所を適切なものに変更します。micro-msx2p/msx1-m5stamps3/src/app.cppmsx1.loadRom((void*)rom_game, sizeof(rom_game), MSX1_ROM_TYPE_NORMAL);
あとは、makeを実行するだけです。
make
すると動きます。
やっぱり画面が動くと良いですね。
本当は AY-3-8910 (PSG) の BGM が再生されるのですが、まだ、音声モジュールを搭載していないので、残念ながら音は鳴りません。
という訳で、次はI2SのDACモジュール接続にチャレンジしてみたいところです。