void __fastcall__ nsd_main_se(void );
無し(no input)
無し(no output)
音源ドライバーのメインルーチン(効果音)です。
1/60秒毎に呼び出してください。
一般的な手法としては、VBlank割り込み(NMI)ルーチンから呼び出します。
本関数では、a,x,yレジスタの保存および、`rti'命令による割り込みの復帰は行っていません。
また、VBlank割り込み(NMI)を用いる場合は、ユーザーアプリケーション側にて、
nsd_init()
関数を呼び出し後に、VBlank割り込みを`有効'にPPUを設定してください。
この関数は、効果音のみを再生します。
本関数を呼ぶ前に、ROMは効果音データがあるバンクに切り替えて置いてください。
BGMと効果音を同一のバンクに配置する場合は、
nsd_main()関数を用いる事で、関数呼出しのクロック数を1つ削減できます。
本関数をnsd_main_bgm()関数より先に呼び出すことにより、
SE発音終了後、無音期間無しにBGM処理に復帰できます。
.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