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を設定してください。
本関数を呼ぶ前に、ROMは曲データ及び効果音データがあるバンクに切り替えて置いてください。
.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