n2kd FM Driver
FM sound driver for PC-9800 series and PC/AT compatible computers.
Download: n2kd_v1.0_beta_3b.zip
n2kd は NEC PC-9800 シリーズとその互換機、及び PC/AT 互換機の DOS 上で動作する FM 音源ドライバです。 MML を記述したテキストファイルをコンパイルして曲データを含むバイナリファイルを作成し、その曲データファイルをドライバに与えることで楽曲を演奏します。
対応している FM 音源は OPL3 です。 ドライバと MML コンパイラともに使っている命令は 186 命令です。
対応音源
以下の OPL3 での演奏に対応しています。
- PC-9800 シリーズ
- Creative SB16/98 及び Canopus T64S と同様の IO ポートでアクセスできる OPL3
- Yamaha YMF724/744/754 内蔵の OPL3 ブロック
- PC/AT 互換機
- Sound Blaster の IO ポート(2x0h) でアクセスできる OPL3
- Yamaha YMF724/744/754 内蔵の OPL3 ブロック
本ドライバは音源ボードの OPL3 機能の有効化等の機能は持っていません。 OPL3 を搭載した音源ボード等の設定はユーザが事前に行う必要があります。
その他環境固有の注意点や制約に関する情報は、配布物に同梱のドキュメントを参照してください。
サンプル曲データ
東方風神録より「厄神様の通り道 ~ Dark Road」の OPL3 アレンジを作成しました。 yaku.mml ← こちらのリンクから MML ファイルをダウンロードできます。 曲データ作成の参考にどうぞ。
実装関連記事
- デチューン・LFO 等の実装
- メモリマップ
- タイマ(テンポ管理)
- 曲データファイルフォーマット(執筆予定)
既知の不具合
- 今のところありませんが、全くバグがないことを保証するものではありません。
更新履歴
- 2026/03/13: v1.0 (beta 3b)
- PC/AT 互換機版で SB に常駐すると常駐解除に失敗する不具合を修正
- 2026/03/12: v1.0 (beta 3a)
- LFO の仕様変更(曲データファイルフォーマットも変わっています)
- ポルタメントの仕様調整とバグ修正
- MML で数値を記述する際に2進数での記述を可能にした
- マクロ定義と同じ行に1行コメントを記述可能にした
- 2026/02/26: v1.0 (beta 2e)
- テンポ管理で使う割り込みを指定するプログラム引数追加
- BLASTER 環境変数のパース処理を調整
- 演奏処理に合わせたユーザファンクション呼出機能追加
- ドライバ制御ファンクションの呼出可能条件調整
- PIT 常駐時のテンポ管理処理調整
- 他のタイマに常駐した場合とのテンポの差が小さくなるよう変更
- RR 上書き命令追加
- 2026/02/08: v1.0 (beta 2d)
- 演奏時のテンポ管理に Sound Blaster 16 for PC-9800 の PCM 再生割込を利用する機能を追加
- 2026/01/11: v1.0 (beta 2c)
- キーオン同期しない LFO を開始するとハングする問題を修正
- 2026/01/10: v1.0 (beta 2b)
- #Include 及び複数行コメントが正しく働かない場合があったのを修正
- 2026/01/07: v1.0 (beta 2a)
- 曲データファイルフォーマット調整
- 2026/01/04: v1.0 (beta 1a)
- PC-9800 版のアセンブルでエラーが出るのを修正
- ポルタメントの演奏のバグ修正
- 2026/01/03: v1.0 (beta 1)
- 大改修(機能追加・バグ修正等色々)
- PC/AT 互換機対応
- 2022/06/11: v0.1.2 (beta 2)
- 演奏中に常駐解除すると音が鳴り続ける不具合を修正
- YMF724/744/754 の OPL3 を探す機能を追加
- INT5 で割り込む OPN(A) のタイマを優先して使用するよう変更
- 2021/09/01: v0.1.2 (beta 1)
- 初版