Chapter.29 ボスを追加する[前編]
[Chapter29 制作物]
今回は、時限タイマーを設置して、ボスが出る直前までを作り込みます。
ついでにボスのグラフィックも作ってしまいます。
■時限タイマー
敵出現ルーチンの頭で、カウントダウンして、ボス出現処理を開始するまでの処理を組み込みます。
修正するソースは、sca_enemy_man.asm です。
この中の enemy_start ルーチンが敵の出現ルーチンです。
最初にある enemy_update_time のデクリメント処理は、10回に 1回を判定するための処理をしています。
enemy_start は、1/60秒に 1回の周期で呼び出されますが、敵はそんなに頻繁に出現する必要がないので
処理を端折って CPU 負荷を軽減しています。10回に 1回しか処理しません。
ボスの出現も、ゲーム開始から二分後くらいでいいので、たまに処理すれば良いです。
ということで、この 10回に 1回処理に便乗することにします。
10回中1回だと判断出来たところが、enemy_update_time を 10 に初期化している部分です。
その直後に、「ボス出現時限タイマー」の処理を挿入します。
挿入するプログラムを、プログラム1 に示します。
プログラム1. ボス出現時限タイマー
; ボス登場/出現中か?
ld hl, (enemy_boss_count)
ld a, l
or h
jp z, enemy_boss
; ボス登場までのカウントダウン
dec hl
ld (enemy_boss_count), hl
|
enemy_boss_count は、下の方に .dw (2byte)のワークエリアとして確保します。
ついでに、初期化処理 enemy_init に、enemy_boss_count の初期値「2分」をセットするコードも追加しましょう。
プログラム2. 初期値2分
; ボス出現カウンタ初期化
ld hl, #(6 * 120) ; 120秒後
ld (enemy_boss_count), hl
|
デクリメントカウンタにしたのは、インクリメントカウンタにして「720になってますか?」と調べるよりも、
デクリメントカウンタにして「0になってますか?」と調べる方が簡単だからです。
0 なら、a レジスタに or していけば、zフラグで判断出来ますからです。720だとそうはいきません。
工事中
今回は、こんな感じでした。
次回は、いよいよボス登場です。
[▲トップページへ]