
GM02はステージ表示を行うタスクです。
タスクは実際には何度も実行することが多いのですが、
画面を描画するタスクは一度実行するとすぐに次のタスクへと移ります。
このタスクでは最初に@LOADSTGルーチンを呼び出します。
このルーチンはステージデータをロードします。
ここでのステージデータとはマップデータです。
ロードするデータはプログラムのDATA文に記述されている
文字列のデータです。
この文字列をPRINT文で表示するわけですが。。。
それだけではありません。
一度そのデータを配列に格納しています。
格納される配列変数はMAP$です。
次に@DISPSTGルーチンを呼び出します。
このルーチンはMAP$に格納されているマップデータを
画面に表示しています。
最後に呼び出している@DISPINFOルーチンは
ゲームのデータをコックピットに表示しています。
これでゲームステージの表示ができました。
それにステージ番号の情報を表示しています。
GM_CNT に3×60、要するに3秒程度時間待ちするための
カウント数(このシステムは1秒間に60回実行されます)をいれ
タスクフラグに3を入れ戻ります。
タスクフラグに3を入れた場合次回はGM03が実行されます。
GM03では GM_CNT の内容から1引いて時間待ちします。
カウントが残っていた場合は戻ります。
カウントが0の時次へ進みます。
カウントが0になるともう一度@DISPSTGルーチンを呼び出し、
再度ステージを行います。
え?なんで必要か?
それはステージにステージ番号が表示されているからです。
そしてプレイヤと敵の初期化を行い、
BGM番号2番を演奏し次のタスクへ移行します。