スーパーカセットビジョンでカセットを入れずに電源を入れた時に
表示される風船デモを MSX-BASIC で再現したものです。
……とはいっても、スプライト 32 個を同時に動かしているので、
実機では MSX turbo R の高速モード(R800 モード)でないと遅いです。
エミュレーターでは現在 MSX の実機より高速動作が可能で、
スプライトモードも横に並ぶ数も無制限に設定する事が可能になっているため、
これらの設定変更により、まともに見られる動作になります。
MSXPen では Alt+S でスプライトを Unlimited にし、
Alt+T で CPU Turbo を上げて下さい(最高 x8)
BASIC ではさすがに遅いので、
z88dk を用いて C 言語で作成し、マシン語プログラムにしてみました。
スペースキーでプログラム実行を停止し、BASIC へ戻ります。
風船の数を 31 個に減らしていますが、
乱数の精度上 32 個だと動きが変化しなかったためです。
zcc +msx -lndos -create-app -subtype=disk -bn balldemo balldemo.c
BALLDEMO.MSX が生成したマシン語の実行ファイルです。
BASIC より BLOAD"BALLDEMO.MSX",R で実行します。
MSX1 でも動作可能な事を確認できています。
この場合は「-subtype=disk」を外してコンパイルすると
カセットイメージ BALLDEMO.CAS ができます。BLOAD"CAS:",R で実行します。
一方、VDP アクセスはすべて BIOS を使用して行っているウェイトがあり、
MSX turbo R の高速モード(R800)でも速度はあまり変わりません。
WebMSX (軽量 CBIOS 版) は Alt+S でスプライトを Unlimited にしても良いです。
※ IchigoJam フォント を使っています。CC BY IchigoJam