void __fastcall__ nsd_main(void );
無し(no input)
無し(no output)
音源ドライバーのメインルーチンです。
1/60秒毎に呼び出してください。
一般的な手法としては、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()関数をご使用ください。
.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