NSDL(NES Sound Driver Library)

MMLコンパイラ(nsc.exe)

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

テキストで記述されたMMLファイルを、本音源ドライバーNSD.Lib用のデータに変換します。
デフォルトでは、cc65に付属のクロスアセンブラ`ca65'用のアセンブリ言語ソースを出力します(未実装)
出力するアセンブリ言語ソースは、単体でオブジェクトファイルにアセンブル可能となっていますので、 ユーザーアプリケーションのビルドの際に、当該オブジェクトファイルをリンクして下さい(未実装)

また、NSFファイルの簡易生成も可能です。
複数の曲に対応していますが、コンパイラにてNSFを生成する場合は、 曲データは合計で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,サブルーチンの演奏パターンを定義します。

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

未実装!

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

曲データのシンボルは、_nsd_ファイル名_番号となります。
(C言語から参照する場合は、nsd_ファイル名_番号となります。)
このシンボルのアドレスを引数に、nsd_play_bgm()関数を呼び出すことで、 その曲データが再生されます。

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

曲データのセグメント

.rodataセグメントに配置されます。
曲データ、効果音データ共にROM中に配置されていても再生可能ですので、 別途、RAM領域に転送したり、.dataセグメントに書き換える必要はありません。