2024年04月25日
【ゲーム制作】面クリア型アクションゲーム 第25回
面クリア型アクションゲーム 第25回です。
今回は、「BASICで処理すると遅い」処理をマシン語化します。
前回BASICで組んで実行した際、ちょっと待たされ時間が気になった部分をマシン語にしていきます。
・初期画面表示
「ハンド君」や敵を初期位置に表示する。
その時併せて、敵座標を変数に設定する…、最初DATA文で14面9匹分用意し、変数に設定しPUT SPRITEで表示していましたが、バラバラ…と表示されるのでBASICは止め。
そこで、仮想スプライトアトリビュートテーブルに初期値を設定し、一瞬だけ走査線割込み処理を実行。
あら不思議、「ハンド君」と敵が表示されました。
これは仮想スプライトアトリビュートテーブルの設定値を「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」により走査線割込み処理で更新しているから。
特に改めてプログラム組む必要なし。
・面に出現する敵以外のSPRITEを隠す処理
BASICの時は隠してあるSPRITEを表示させる処理でしたが、上記マシン語では9匹分表示されてしまうので、各面出現しない敵(例えば1面は3匹しか出現しないので6匹出現せず)のY座標に&HE0(画面外)を設定し隠します。
面数から隠す数を算出し設定。
・面内のドットの数数え
DATA文で14面分用意し、変数に設定していましたが、マシン語で数えたらあっという間でした。
・速度設定
・面に出現する敵数設定。
面数から計算式で算出し設定。
・全SPRITE消去
32枚全部のSPRITEを隠す。
・タイトルとロゴの表示用に256文字整列。
256文字なのでBASICでも大丈夫かと思ったが、やっぱり遅かった…。
それ以外は、処理の遅さを感じなかったのでBASICで組みます。
BASIC全リストです。
オープニングとエンディングメッセージが含まれてるので、長い…。
次回、「デバッグ」作業です。