NSDL(NES Sound Driver Library)

MMLコンパイラ(nsc.exe)

コマンドラインオプション(Command line option)

テキストで記述されたMMLファイルを、本音源ドライバーNSD.Lib用のデータに変換します。
デフォルトでは、何も出力しません。何か、コマンドラインオプションを指定して下さい。

アセンブリ言語・C言語用のソース(配列変数定義)で出力したファイルは、 単体でオブジェクトファイルに、コンパイル & アセンブル可能となっています(未実装)
ユーザー・アプリケーションのビルドの際に、そのオブジェクト・ファイルをリンクして下さい。

また、NSFファイルへのコンパイルも可能です。
複数の曲に対応していますが、コンパイラで直接NSFを生成する場合は、 曲データは合計で24kByte以内、凾oCMを使う場合は16kByte以内となります。
現状は、NSFへのコンパイルのみ対応しています。

	nsc -option MML-file name
-h
Print the help.
-n
Output the NSF. (*.nsf)
-c
Output the C language source file for cc65. (*.c)未実装
-s
Output the assembly language source file for ca65. (*.s) (default)未実装
-b
Output the Binary file. (*.bin)
-fnfilename
Set the file name of NSF.
-fcfilename
Set the file name of C language source file.
-fsfilename
Set the file name of assembly language source file.
-fbfilename
Set the file name of binary file.

MML文法(Syntax of MML)

全体の構文

MMLの構文は、`#'で始まる定義命令・疑似命令及び、
データ(エンベロープパターン、シーケンスデータ)を記述する記述ブロックで構成されます。

エンベロープパターン

音色、音量、周波数、音程の推移パターンを定義します。

シーケンスデータ

BGM,SE,サブルーチンの演奏パターンを定義します。

バイナリファイル・NSFの配置仕様

データは、6502のアドレス空間 0x8000 番地を先頭に配置されることを想定しています。
NSFヘッダーをのぞき、ファイル先頭に、以下テーブルの情報がファイル先頭にあります。

Address 内容
0x8000 BGMデータ数
0x8001 SE データ数
0x8002〜0x8003 儕CM構造体のアドレス()
0x8004〜0x8005 BGM(0)番の先頭アドレス
・・・ ・・・
・・・ SE(0)番の先頭アドレス
〜0xBFFF データ実体
0xC000〜0xDFFF 儕CMデータ実体
0xE000〜0xFFFF 実行コード & 割り込みベクタ

C言語・アセンブリ言語ソースの仕様

未実装!

曲データのシンボル(ラベル)

曲データのシンボルは、_nsd_ファイル名_番号となります。
(C言語の場合は、nsd_ファイル名_番号となります。)
このシンボルのポインタを引数に、nsd_play_bgm()関数を呼び出すことで、その曲データが再生されます。
曲データは、6502のメモリ空間にさえ存在していれば(バンクがセレクトされていれば)、どこに配置されていても再生可能です。

例えば、ファイル名がfooで、MMLファイル中の2番目の曲データは、 _nsd_foo_2と命名され、.export宣言されます。
ユーザーアプリケーション側からは、このシンボル名を.importすることで、参照が可能になります。