ふとMSXで自作ゲームを作りたいと思い、開発環境を整えて作ってみました。
BASICではつまらないと思い、C言語のクロス開発環境を色々試してみた結果、z88dkにしました。他の環境はそれぞれ独特の癖があったりしましたが、z88dkはANSI Cに準拠した形で書いていけば一番素直に動く印象でした。
どこかで2次元配列は使えないようなことを書いてあるサイトを見ましたが、現在のバージョンでは問題無く使えます。プログラム中で4次元配列まで使いましたが、特に問題はありませんでした。
z88dk
こちらから最新版をダウンロードしました。
環境変数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版があったりと様々な環境で作ってます。
せっかくなので、フロッピー版とROM版を作りました。
フロッピー版はMSX-DOSのディスクへnu.comを入れて、autoexec.batで自動実行するようにしました。
ROM版はMSXで遊ぶ! Mega Flash ROMで作り方を紹介したフラッシュROMを停止スイッチ無しで作ってそこに入れました。
OPFで出力されたROMファイルを書き込むことができます。
無事に出力されたROMファイルを書き込むことができました。
ラベルまで作るといい感じになります。
COMファイルはともかく、ROMファイルで出力されたものも結構素直に動作しました。
パラメータを変えるだけでROMファイルまで簡単に出力できるのは他の環境では中々ないので、z88dkはお勧めできます。