テキストで記述されたMMLファイルを、本音源ドライバーNSD.Lib用のデータに変換します。
デフォルトでは、何も出力しません。何か、コマンドラインオプションを指定して下さい。
アセンブリ言語・C言語用のソース(配列変数定義)で出力したファイルは、
単体でオブジェクトファイルに、コンパイル & アセンブル可能となっています(未実装)。
ユーザー・アプリケーションのビルドの際に、そのオブジェクト・ファイルをリンクして下さい。
また、NSFファイルへのコンパイルも可能です。
複数の曲に対応していますが、コンパイラで直接NSFを生成する場合は、
曲データは合計で24kByte以内、凾oCMを使う場合は16kByte以内となります。
現状は、NSFへのコンパイルのみ対応しています。
nsc -option MML-file name
MMLの構文は、`#'で始まる定義命令・疑似命令及び、
データ(エンベロープパターン、シーケンスデータ)を記述する記述ブロックで構成されます。
音色、音量、周波数、音程の推移パターンを定義します。
BGM,SE,サブルーチンの演奏パターンを定義します。
データは、6502のアドレス空間 0x8000 番地を先頭に配置されることを想定しています。
NSFヘッダーをのぞき、ファイル先頭に、以下テーブルの情報がファイル先頭にあります。
Address | 内容 |
---|---|
0x8000 | BGMデータ数 |
0x8001 | SE データ数 |
0x8002〜0x8003 | 儕CM構造体のアドレス() |
0x8004〜0x8005 | BGM(0)番の先頭アドレス |
・・・ | ・・・ |
・・・ | SE(0)番の先頭アドレス |
〜0xBFFF | データ実体 |
0xC000〜0xDFFF | 儕CMデータ実体 |
0xE000〜0xFFFF | 実行コード & 割り込みベクタ |
未実装!
曲データのシンボルは、_nsd_ファイル名_番号となります。
(C言語の場合は、nsd_ファイル名_番号となります。)
このシンボルのポインタを引数に、nsd_play_bgm()関数を呼び出すことで、その曲データが再生されます。
曲データは、6502のメモリ空間にさえ存在していれば(バンクがセレクトされていれば)、どこに配置されていても再生可能です。
例えば、ファイル名がfooで、MMLファイル中の2番目の曲データは、
_nsd_foo_2
と命名され、.export
宣言されます。
ユーザーアプリケーション側からは、このシンボル名を.import
することで、参照が可能になります。