ドラクエ風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制御は多岐に渡るため、専用の

 シーンコントロラーが必要になります。それについては後日扱います。

f:id:chien1956:20200127193609p:plain

*次回は、スクリーン消去の予定です。