ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編
【第40回】
*今回は、ゲームメインの構造とWAITルーチン。
【割り込みルーチンの特徴】
1.ファミコンのメインルーチンは、VBlank割り込みを使うのが、
一般的です、VBlank割り込みには注意すべきことがあります。
それはファミコンのBG(VRAM)は、アクセスが遅くタイムオーバーに
なる恐れがあるので、全画面表示や大きなウインドウ表示は分割して行う
必要があります。
2.もう一つの特徴として、メインルーチンは常に流れている為、
昔のプログラムとは随分感覚が違います、入力待ちの時でも、
BGM等を止めることはできないので、WAITルーチンには、
工夫が必要です。
【WAITルーチンの構造と考え方】
1.一般的なWAITルーチンは、空ループを使うものですが流れを止めてしまいます
そこで、フラグによって流れを制御しアイドルタイムを作ります。
フラグがスイッチの役目をし、カウンターで長さを調整します。
【実際のコード】
*呼び出す部分
lda #$ff ;カウンター WAIT の長さ
sta wait_ct ;カウンターのセット
lda #$aa ;WAITのID
sta scene ;IDのセット
;*************************************
*mainルーチン内
lda scene
cmp #$aa
bne sk3
jmp wait
sk3:
inc CT
rti
;**************************************************************
*WAIT 本体
wait:
dec wait_ct ;wait_ct のデクリメント
bne ex5 ;カウンター0か?
lda #0
sta scene ;IDを書き換える。
ex5:
jmp sk3
*上記のコードは、TEST用でありID制御は多岐に渡るため、専用の
シーンコントロラーが必要になります。それについては後日扱います。
*次回は、スクリーン消去の予定です。