各.lib/.binの仕様

共通

トラックについて

TR1〜5は、APU(RP2A03)に割り当てられます。

BGM記述ブロック
トラック音源
TR1 APU(2A03) パルス波 ch1
TR2 APU(2A03) パルス波 ch2
TR3 APU(2A03) 三角波
TR4 APU(2A03) ノイズ
TR5 APU(2A03) 凾oCM

効果音は2トラックのみで、APUのパルス波ch2及びノイズに割り当てられます。

SE記述ブロック
トラック音源
TR1 APU(2A03) パルス波 ch2
TR2 APU(2A03) ノイズ

バンク切り替え非対応版の仕様

ユーザーアプリケーション組み込み用のライブラリです。そのため、音源ドライバ本体からはバンク切り替えをしません。
(音源ドライバー *.lib の外部(ユーザーアプリケーション側)でバンク切り替えを行う事は可能です。)
従い、MMLコンパイラ`nec.exe'で直接NSFを生成する場合は、NSFヘッダーの128byteを除き、合計32kbyteまでとなります。
メモリマップは、以下表の通りです。

Memory map
Address Contents
0x8000 〜 不定 音源ドライバ本体(*.bin)
不定 〜 #OffsetPCM 曲データ
(音源ドライバ(*.bin)の直後に配置します)
#OffsetPCM 〜 0xFFF1 凾oCMデータ
#OffsetPCMは、MML中の#OffsetPCMコマンドで設定したアドレスです。)
0xFFFA 〜 0xFFFF TNS-HFC3などが割り込みベクタとして使用します。

バンク切り替え対応版の仕様

NSF専用の.binです。ユーザーアプリケーションへの組み込みに使うことはできません。
これらの.binをリンクする場合は、MML中に予め`#Bank'コマンドを記述して下さい。
(バンク切り替え非対応版とはNSFの構造が異なるため、MMLコンパイラへの通知が必要です。)

MMLコンパイラ`nec.exe'で生成されるNSFは、 NSFヘッダーの128byteを除き合計1024kbyteまでのNSFを作ることができます。
(NSF music formatの仕様が1024kbyteまでとなっております。)
但し、曲データ(シーケンス)は24kbyteまでです(元々が組み込み用のため、演奏ポインタがバンクに対応していません)。
メモリマップは、以下表の通りです。
Memory map
Address Contents
0x6000 〜 0xBFFF 曲データ(24 kbyte)
0xC000 〜 0xDFFF 凾oCMデータ (この領域は再生する儕CMによりバンク切り替えが発生します。)
0xE000 〜 0xFFFF 音源ドライバ本体 & 割り込みベクタ(*.bin)

nsd.lib / nsd.bin

内蔵音源(APU)のみに対応しています。

nsd_fds.lib / nsd_fds.bin

内蔵音源(APU)および、FDS音源に対応しています。

トラック音源
TR6 FDS(ディスクシステム音源)

nsd_vrc6.lib / nsd_vrc6.bin

内蔵音源(APU)および、VRC6の音源部に対応しています。

トラック音源
TR6 VRC6 パルス波 ch1
TR7 VRC6 パルス波 ch2
TR8 VRC6 鋸波

nsd_vrc7.lib / nsd_vrc7.bin

内蔵音源(APU)および、VRC7の音源部に対応しています。

トラック音源
TR6 VRC7(FM音源) ch1
TR7 VRC7(FM音源) ch2
TR8 VRC7(FM音源) ch3
TR9 VRC7(FM音源) ch4
TR10 VRC7(FM音源) ch5
TR11 VRC7(FM音源) ch6

nsd_mmc5.lib / nsd_mmc5.bin

内蔵音源(APU)および、MMC5の音源部に対応しています。

トラック音源
TR6 MMC5 パルス波 ch1
TR7 MMC5 パルス波 ch2

nsd_n163.lib / nsd_n163.bin

内蔵音源(APU)および、n163の音源部に対応しています。

トラック音源
TR6 N163(波形メモリ音源) ch8
TR7 N163(波形メモリ音源) ch7
TR8 N163(波形メモリ音源) ch6
TR9 N163(波形メモリ音源) ch5
TR10 N163(波形メモリ音源) ch4
TR11 N163(波形メモリ音源) ch3
TR12 N163(波形メモリ音源) ch2
TR13 N163(波形メモリ音源) ch1

nsd_s5b.lib / nsd_s5b.bin

内蔵音源(APU)および、n163の音源部に対応しています。

トラック音源
TR6 Sunsoft 5B ch1
TR7 Sunsoft 5B ch2
TR8 Sunsoft 5B ch3

nsd_all.bin (儕CMのバンク切り替え対応)

FDS音源以外の拡張音源に対応した.binです。

※ "nsd_all.bin"は、多くの拡張音源及び、儕CMのバンク切り替えに対応したコードですが、 リソースの多くを音源ドライバーが使ってしまうため、アプリケーション組み込みはできません。
NSF専用になります。

トラック音源
TR6 VRC6 パルス波 ch1
TR7 VRC6 パルス波 ch2
TR8 VRC6 鋸波
TR9 VRC7(FM音源) ch1
TR10 VRC7(FM音源) ch2
TR11 VRC7(FM音源) ch3
TR12 VRC7(FM音源) ch4
TR13 VRC7(FM音源) ch5
TR14 VRC7(FM音源) ch6
TR15 MMC5 パルス波 ch1
TR16 MMC5 パルス波 ch2
TR17 N163(波形メモリ音源) ch8
TR18 N163(波形メモリ音源) ch7
TR19 N163(波形メモリ音源) ch6
TR20 N163(波形メモリ音源) ch5
TR21 N163(波形メモリ音源) ch4
TR22 N163(波形メモリ音源) ch3
TR23 N163(波形メモリ音源) ch2
TR24 N163(波形メモリ音源) ch1
TR25 Sunsoft 5B ch1
TR26 Sunsoft 5B ch2
TR27 Sunsoft 5B ch3
TR28 制御用トラックです(音符は発音しません)。
曲全体のコマンド(テンポや、VRC7, n163の音色設定等)を記述できます。

nsd_all2.bin (儕CMのバンク切り替え対応)

全ての拡張音源に対応した.binです。

※ "nsd_all2.bin"は、多くの拡張音源及び、儕CMのバンク切り替えに対応したコードですが、 リソースの多くを音源ドライバーが使ってしまうため、アプリケーション組み込みはできません。
NSF専用になります。

"nsd_all2.bin"は、VRC6, VRC7, SUNSOFT 5bも同時に仕様する場合に、 0x8000〜0xDFFFがROMとなるプレイヤーで、ご使用ください。
この領域がRAMになっていると、暴走します。

トラック音源
TR6 FDS(ディスクシステム音源)
TR7 VRC6 パルス波 ch1
TR8 VRC6 パルス波 ch2
TR9 VRC6 鋸波
TR10 VRC7(FM音源) ch1
TR11 VRC7(FM音源) ch2
TR12 VRC7(FM音源) ch3
TR13 VRC7(FM音源) ch4
TR14 VRC7(FM音源) ch5
TR15 VRC7(FM音源) ch6
TR16 MMC5 パルス波 ch1
TR17 MMC5 パルス波 ch2
TR18 N163(波形メモリ音源) ch8
TR19 N163(波形メモリ音源) ch7
TR20 N163(波形メモリ音源) ch6
TR21 N163(波形メモリ音源) ch5
TR22 N163(波形メモリ音源) ch4
TR23 N163(波形メモリ音源) ch3
TR24 N163(波形メモリ音源) ch2
TR25 N163(波形メモリ音源) ch1
TR26 Sunsoft 5B ch1
TR27 Sunsoft 5B ch2
TR28 Sunsoft 5B ch3
TR29 制御用トラックです(音符は発音しません)。
曲全体のコマンド(テンポや、VRC7, n163の音色設定等)を記述できます。

nsd_opll.lib / nsd_opll.bin

内蔵音源(APU)および、OPLL(YM2413)に対応しています。

※"nsd_opll.lib" 及び "nsd_opll.bin" は、VRC7をOPLL(YM2413)に換装した、改造拡張音源用の音源ドライバーです。
ファミコン実機でOPLLを鳴らしたい方は、個人の責任にて改造して下さい。

トラック音源
TR6 OPLL FM音源 ch1
TR7 OPLL FM音源 ch2
TR8 OPLL FM音源 ch3
TR9 OPLL FM音源 ch4
TR10 OPLL FM音源 ch5
TR11 OPLL FM音源 ch6
TR12 OPLL FM音源 ch7 (Rhythmが有効な時は、デバイス出力しません)
TR13 OPLL FM音源 ch8 (Rhythmが有効な時は、デバイス出力しません)
TR14 OPLL FM音源 ch9 (Rhythmが有効な時は、デバイス出力しません)
TR15 OPLL Rhythm Bass Drum (Rhythmが無効な時は、デバイス出力しません)
TR16 OPLL Rhythm Snare Drum (Rhythmが無効な時は、デバイス出力しません)
TR17 OPLL Rhythm Hi Hat (Rhythmが無効な時は、デバイス出力しません)
TR18 OPLL Rhythm Top Cymbal (Rhythmが無効な時は、デバイス出力しません)
TR19 OPLL Rhythm Tom Tom (Rhythmが無効な時は、デバイス出力しません)

ch7〜9のFM音源/リズム音源の切り替えは、TR15〜19の`s'コマンドにて設定します。
曲中での切り替えにも対応しており、デフォルトは、FM音源 9ch(s0)です。
s0 … FM音源 9ch (TR15〜19の発音は無効になります。休符を置いてください。)
s1 … FM音源 6ch + リズム音源 5ch (TR12〜14の発音は無効になります。休符を置いてください。)

リズム音源は、以下のディチューン、オクターブ、音程とする事で、データシートに近い音程となります。
又、OPLLのハードウェア的に、Snare DrumとHi Hatは同じ周波数レジスターを使用しており、
Top CymbalとTom Tomも同じ周波数レジスターである点に注意してください。

Bass Drum
D-2 o3 a
Snare Drum
D8 o3 b
Hi Hat
D8 o3 b
Top Cymbal
D8 o2 e
Tom Tom
D8 o2 e

nsd_opll.bin

全ての拡張音源に対応した.binですが、VRC7はOPLLに変わっています。

※ "nsd_all.bin"は、多くの拡張音源に対応したコードですが、 リソースの多くを音源ドライバーが使ってしまうため、アプリケーション組み込みはできません。
NSF専用になります。

※"nsd_opll.lib" 及び "nsd_opll.bin" は、VRC7をOPLL(YM2413)に換装した、改造拡張音源用の音源ドライバーです。
ファミコン実機でOPLLを鳴らしたい方は、個人の責任にて改造して下さい。

トラック音源
TR6 VRC6 パルス波 ch1
TR7 VRC6 パルス波 ch2
TR8 VRC6 鋸波
TR9 OPLL FM音源 ch1
TR10 OPLL FM音源 ch2
TR11 OPLL FM音源 ch3
TR12 OPLL FM音源 ch4
TR13 OPLL FM音源 ch5
TR14 OPLL FM音源 ch6
TR15 OPLL FM音源 ch7 (Rhythmが有効な時は、デバイス出力しません)
TR16 OPLL FM音源 ch8 (Rhythmが有効な時は、デバイス出力しません)
TR17 OPLL FM音源 ch9 (Rhythmが有効な時は、デバイス出力しません)
TR18 OPLL Rhythm Bass Drum (Rhythmが無効な時は、デバイス出力しません)
TR19 OPLL Rhythm Snare Drum (Rhythmが無効な時は、デバイス出力しません)
TR20 OPLL Rhythm Hi Hat (Rhythmが無効な時は、デバイス出力しません)
TR21 OPLL Rhythm Top Cymbal (Rhythmが無効な時は、デバイス出力しません)
TR22 OPLL Rhythm Tom Tom (Rhythmが無効な時は、デバイス出力しません)
TR23 MMC5 パルス波 ch1
TR24 MMC5 パルス波 ch2
TR25 N163(波形メモリ音源) ch8
TR26 N163(波形メモリ音源) ch7
TR27 N163(波形メモリ音源) ch6
TR28 N163(波形メモリ音源) ch5
TR29 N163(波形メモリ音源) ch4
TR30 N163(波形メモリ音源) ch3
TR31 N163(波形メモリ音源) ch2
TR32 N163(波形メモリ音源) ch1
TR33 Sunsoft 5B ch1
TR34 Sunsoft 5B ch2
TR35 Sunsoft 5B ch3
TR36 制御用トラックです(音符は発音しません)。
曲全体のコマンド(テンポや、VRC7, n163の音色設定等)を記述できます。