nsd_main_bgm()

定義(Define)

        void    __fastcall__    nsd_main_bgm(void );

引数(Inputs)

無し(no input)

戻り値(Outputs)

無し(no output)

内容(Contents)

音源ドライバーのメインルーチン(BGM)です。
1/60秒毎に呼び出してください。

注意(Notes)

一般的な手法としては、VBlank割り込み(NMI)ルーチンから呼び出します。
本関数では、a,x,yレジスタの保存および、`rti'命令による割り込みの復帰は行っていません。
また、VBlank割り込み(NMI)を用いる場合は、ユーザーアプリケーション側にて、 nsd_init()関数を呼び出し後に、VBlank割り込みを`有効'にPPUを設定してください。

この関数は、BGMのみを再生します。
本関数を呼ぶ前に、ROMは曲データがあるバンクに切り替えて置いてください。

BGMと効果音を同一のバンクに配置する場合は、 nsd_main()関数を用いる事で、関数呼出しのクロック数を1つ削減できます。

nsd_main_bgm(void)関数の呼び出し例

        .import         _nsd_main
.segment        "CODE"
NMI_Start:
        pha
        txa
        pha
        tya
        pha

        ; PPU Control code.
        ; 
        ; to do 垂直同期期間中にVRAMへアクセスするコードを配置してください。
        ;       通常、画面処理は、サウンド処理より先に行います。
        ; 

        ; Bank change for SE. (効果音データをメモリ空間にマッピングします。)
        lda     #SE_bank
        jsr     _bank_change            ;   bank_change(SE_bank);

        ; Play BGM & SE. (効果音の再生。)
        jsr     _nsd_main_se            ;   nsd_main_se();

        ; Bank change for BGM. (曲データをメモリ空間にマッピングします。)
        lda     #BGM_bank
        jsr     _bank_change            ;   bank_change(BGM_bank);

        ; Play BGM. (曲の再生。)
        jsr     _nsd_main_bgm           ;   nsd_main_bgm();

        ; Return the bank number. (バンクを元に戻します。)
        lda     #prog_bank
        jsr     _bank_change            ;   bank_change(prog_bank);

        pla
        tay
        pla
        tax
        pla
        rti