各.lib/.binの仕様

共通

トラックについて

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

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

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

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

5トラックの効果音に対応したバージョンは、以下の通り割り当てられます。
(本音源ドライバーをアセンブラー"ca65.exe"でアセンブルする際に、"-D SE"オプションを付ける事で、 5トラックの効果音が使用可能になります。)

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

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

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

Memory map
Address Contents
0x8000 ~ 不定 音源ドライバ本体(*.bin)
不定 ~ #OffsetPCM 曲データ
(音源ドライバ(*.bin)の直後に配置します)
#OffsetPCM ~ 0xFFF1 ⊿PCMデータ
#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までとなっております。)
但し、曲データ(シーケンス)は64kbyteまでです
MMLコンパイラにて、直接NSFにビルドする際のメモリマップは、以下表の通りです。

注意 これらの⊿PCM-IRQに対応したbinを使用時は、TNS-HFC4へ直接VRC6, VRC7を刺すことはできません。
別途、TNS-HFX4が必要となります。

また、VRC6とVRC7のアドレスの競合をおこすため、 これらのアドレスデコーダ回路の実装された再生環境(TNS-HFX4等)が必要となります。

Memory map
Address Contents
0x0000 ~ 0x07FF 制御用構造体1
0x6000 ~ 0x7FFF 制御用構造体2(本体内RAMの2kbyteでは容量が足りないため、拡張RAMを使っています)
0x8000 ~ 0x9FFF 曲データ(この領域はバンク切り替えが発生します。)
0xA000 ~ 0xBFFF 音源ドライバ本体(データ) & 割り込みベクタ(*.bin)
0xC000 ~ 0xDFFF ⊿PCMデータ (この領域は再生する⊿PCMによりバンク切り替えが発生します。)
0xE000 ~ 0xFFFF 音源ドライバ本体(コード) & 割り込みベクタ(*.bin)

nsd.lib / nsd.bin

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

nsd_pal.lib / nsd_pal.bin

内蔵音源(APU)のみに対応しています。
PALシステム用です。

nsd_se.lib / nsd_se.bin

内蔵音源(APU)のみに対応しています。
BGM、効果音共に5トラック使用可能です。

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)および、n16x(n160,n161,n162,n163)の音源部に対応しています。

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

nsd_s5b.lib / nsd_s5b.bin

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

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

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_all.bin (⊿PCMのバンク切り替え対応)

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

※ "nsd_all.bin"は、多くの拡張音源及び、⊿PCMのバンク切り替えに対応したコードですが、 リソースの多くを音源ドライバーが使ってしまうため、アプリケーション組み込みはできません。
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 n16x(波形メモリ音源) ch8
TR18 n16x(波形メモリ音源) ch7
TR19 n16x(波形メモリ音源) ch6
TR20 n16x(波形メモリ音源) ch5
TR21 n16x(波形メモリ音源) ch4
TR22 n16x(波形メモリ音源) ch3
TR23 n16x(波形メモリ音源) ch2
TR24 n16x(波形メモリ音源) ch1
TR25 Sunsoft 5B ch1
TR26 Sunsoft 5B ch2
TR27 Sunsoft 5B ch3
TR28 制御用トラックです(音符は発音しません)。
曲全体のコマンド(テンポや、VRC7, n16xの音色設定等)を記述できます。

nsd_all2.bin (⊿PCMのバンク切り替え対応)

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

※ "nsd_all2.bin"は、多くの拡張音源及び、⊿PCMのバンク切り替えに対応したコードですが、 リソースの多くを音源ドライバーが使ってしまうため、アプリケーション組み込みはできません。
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 n16x(波形メモリ音源) ch8
TR19 n16x(波形メモリ音源) ch7
TR20 n16x(波形メモリ音源) ch6
TR21 n16x(波形メモリ音源) ch5
TR22 n16x(波形メモリ音源) ch4
TR23 n16x(波形メモリ音源) ch3
TR24 n16x(波形メモリ音源) ch2
TR25 n16x(波形メモリ音源) ch1
TR26 Sunsoft 5B ch1
TR27 Sunsoft 5B ch2
TR28 Sunsoft 5B ch3
TR29 制御用トラックです(音符は発音しません)。
曲全体のコマンド(テンポや、VRC7, n16xの音色設定等)を記述できます。

nsd_oall.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 n16x(波形メモリ音源) ch8
TR26 n16x(波形メモリ音源) ch7
TR27 n16x(波形メモリ音源) ch6
TR28 n16x(波形メモリ音源) ch5
TR29 n16x(波形メモリ音源) ch4
TR30 n16x(波形メモリ音源) ch3
TR31 n16x(波形メモリ音源) ch2
TR32 n16x(波形メモリ音源) ch1
TR33 Sunsoft 5B ch1
TR34 Sunsoft 5B ch2
TR35 Sunsoft 5B ch3
TR36 制御用トラックです(音符は発音しません)。
曲全体のコマンド(テンポや、VRC7, n16xの音色設定等)を記述できます。

nsd_hfx4.bin

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

※ "nsd_hfx4.bin"は、TNS-HFCシリーズ及び、TNS-HFX4に専用のコードです。

トラック音源
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 OPLL FM音源 ch1
TR17 OPLL FM音源 ch2
TR18 OPLL FM音源 ch3
TR19 OPLL FM音源 ch4
TR20 OPLL FM音源 ch5
TR21 OPLL FM音源 ch6
TR22 OPLL FM音源 ch7 (Rhythmが有効な時は、デバイス出力しません)
TR23 OPLL FM音源 ch8 (Rhythmが有効な時は、デバイス出力しません)
TR24 OPLL FM音源 ch9 (Rhythmが有効な時は、デバイス出力しません)
TR25 OPLL Rhythm Bass Drum (Rhythmが無効な時は、デバイス出力しません)
TR26 OPLL Rhythm Snare Drum (Rhythmが無効な時は、デバイス出力しません)
TR27 OPLL Rhythm Hi Hat (Rhythmが無効な時は、デバイス出力しません)
TR28 OPLL Rhythm Top Cymbal (Rhythmが無効な時は、デバイス出力しません)
TR29 OPLL Rhythm Tom Tom (Rhythmが無効な時は、デバイス出力しません)
TR30 MMC5 パルス波 ch1
TR31 MMC5 パルス波 ch2
TR32 n16x(波形メモリ音源) ch8
TR33 n16x(波形メモリ音源) ch7
TR34 n16x(波形メモリ音源) ch6
TR35 n16x(波形メモリ音源) ch5
TR36 n16x(波形メモリ音源) ch4
TR37 n16x(波形メモリ音源) ch3
TR38 n16x(波形メモリ音源) ch2
TR39 n16x(波形メモリ音源) ch1
TR40 Sunsoft 5B ch1
TR41 Sunsoft 5B ch2
TR42 Sunsoft 5B ch3
TR43 制御用トラックです(音符は発音しません)。
曲全体のコマンド(テンポや、n16xの音色設定等)を記述できます。

@VコマンドによるFM音源のユーザー音色の設定は、TR15以前に記述した場合はVRC7へ設定、TR16以降に記述した場合はOPLLへ設定します。