nsd_main()

定義(Define)

        void    __fastcall__    nsd_main(void );

引数(Inputs)

無し(no input)

戻り値(Outputs)

無し(no output)

内容(Contents)

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

注意(Notes)

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

この関数は、BGMと効果音を両方再生します。
メモリには、BGMと効果音が両方マッピングされている必要があります。
マッパーLSI無しの場合や、BGMと効果音は同じバンクに配置される場合にご使用ください。

BGMと効果音のバンクが異なる場合は、 nsd_main_bgm()関数及び、 nsd_main_se()関数をご使用ください。

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

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

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

        ; Bank change for sound. (曲データをメモリ空間にマッピングします。)
        ; 曲・効果音データがメモリ空間にマッピングされてない場合に必須です。
        lda     #music_bank
        jsr     _bank_change            ;   bank_change(music_bank);

        ; Play BGM & SE. (曲・効果音の再生。)
        jsr     _nsd_main               ;   nsd_main();

        ; Return the bank number. (バンクを元に戻します。)
        ; 曲・効果音データ用にバンクを切り替えた場合に必須です。
        lda     #prog_bank
        jsr     _bank_change            ;   bank_change(prog_bank);

        pla
        tay
        pla
        tax
        pla
        rti