電子ガジェットいろいろ

電子系のガジェットやアプリ開発等の話題を書いてます

MSXで遊ぶ! z88dk(C言語)でゲームを作ってみました

ふとMSXで自作ゲームを作りたいと思い、開発環境を整えて作ってみました。

BASICではつまらないと思い、C言語のクロス開発環境を色々試してみた結果、z88dkにしました。他の環境はそれぞれ独特の癖があったりしましたが、z88dkはANSI Cに準拠した形で書いていけば一番素直に動く印象でした。

どこかで2次元配列は使えないようなことを書いてあるサイトを見ましたが、現在のバージョンでは問題無く使えます。プログラム中で4次元配列まで使いましたが、特に問題はありませんでした。

z88dk

 ダウンロードサイト

http://nightly.z88dk.org/

こちらから最新版をダウンロードしました。

環境変数PATHへz88dkのルートフォルダ以下のbinフォルダを追加してください

環境変数ZCCCFGへz88dkのルートフォルダ以下のLib\Configフォルダを追加してください

コンパイルはbinフォルダ中にあるzccコマンドでできます。

zccコマンドのパラメータ-subtype=msxdosでmsx-dos実行用comファイルで出力され、-subtype=romでROMイメージのromファイルが出力されます。

他の環境変数まで書き換えるのが嫌なので、以下のようなバッチファイルを作り、コンパイルを実行してました。

MSX-DOS実行用comファイル作成
(ソースファイル名:test.c, 出力ファイル名 test.com)
set PATH=<z88dkのルートフォルダ>\bin
set ZCCCFG=<z88dkのルートフォルダ>\Lib\Config
zcc +msx -DNODELAY -lm -subtype=msxdos test.c -o test.com
ROMイメージ用romファイル作成
(ソースファイル名:test.c, 出力ファイル名 test.rom)
set PATH=<z88dkのルートフォルダ>\bin
set ZCCCFG=<z88dkのルートフォルダ>\Lib\Config
zcc +msx -DNODELAY -lm -create-app -subtype=rom test.c -o test.rom

パラメータの細かい意味は調べてませんが、以上のような組み合わせでコンパイルできました。

実際にゲームを作ってみました

 TI-Nspire でパズルゲームでもグラフ電卓用に作ったパズルゲームをMSX用に作ってみました。

このパズルゲームは自分のチュートリアルの意味で新しい環境で開発する際の題材にしているので、実はGB版があったりと様々な環境で作ってます。

f:id:uosoft:20180818235648j:plain f:id:uosoft:20180818235702j:plain

せっかくなので、フロッピー版とROM版を作りました。

フロッピー版はMSX-DOSのディスクへnu.comを入れて、autoexec.batで自動実行するようにしました。

ROM版は

MSXで遊ぶ! Mega Flash ROMで作り方を紹介したフラッシュROMを停止スイッチ無しで作ってそこに入れました。

OPFで出力されたROMファイルを書き込むことができます。

f:id:uosoft:20180818235904j:plain

無事に出力されたROMファイルを書き込むことができました。

ラベルまで作るといい感じになります。

f:id:uosoft:20180820001330j:plain

 

COMファイルはともかく、ROMファイルで出力されたものも結構素直に動作しました。

パラメータを変えるだけでROMファイルまで簡単に出力できるのは他の環境では中々ないので、z88dkはお勧めできます。