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だとそうはいきません。








工事中






今回は、こんな感じでした。
次回は、いよいよボス登場です。

[▲トップページへ]