Releases: Shaw02/nsdlib
Releases · Shaw02/nsdlib
Version 1.30
音源ドライバ本体
- エミュレータmesenで再生できない現象を修正した。
MMLコンパイラ
- オプションスイッチ
-x
により、Extended NSF (NSFe)へのコンパイルに対応した。 - オプションスイッチ
-v
により、NSFのヴァージョン指定に対応した。
従来のNSF Version 1以外にNSF Version 2へのコンパイルに対応し、デフォルトのコンパイルをNSF version 2に変更した。 - 各種メタデータに対応し、メタデータ用のコマンドを実装した(以下)。
#maker
:制作者の名前を記述できます。#text
:テキストを記述できます。#Mix
:NSFプレイヤーに、各拡張音源の音量バランスを指定できます#plst
:NSFプレイヤーでの、再生順番を指定できます#psfx
:NSFプレイヤーでの、効果音の再生順番を指定できます#VRC7
:NSFプレイヤーに、VRC7が別の音源(OPLL)に換装されている事を設定します。#label
:曲毎の曲名を指定します(MMLシーケンス記述ブロックにて)。#author
:曲毎の作曲者を指定します(MMLシーケンス記述ブロックにて)。#time
:各曲の再生時間を設定します(MMLシーケンス記述ブロックにて)。#fade
:各曲のフェードアウト時間を設定します(MMLシーケンス記述ブロックにて)。
#title
,#composer
,#copyright
,#maker
,#text
,#label
,#author
コマンドは、以下のエスケープシーケンスに対応した。
記述 | 意味 |
---|---|
\a | ベル文字(アラート) |
\b | 1文字分戻る |
\f | ページ送り(クリア) |
\n | 改行、復帰 |
\r | 同じ行の先頭に戻る |
\t | 水平タブ |
\v | 垂直タブ |
\\ | \を表示 |
\? | ?を表示 |
\' | シングルクォーテーション(')を表示 |
\" | ダブルクォーテーション(")を表示 |
\N | 8進定数(Nは8進数の定数) |
\xN | 16進定数(Nは16進数の定数) |
Version 1.29
音源ドライバ本体
- PALシステム用のヴァージョン
nsd_pal.lib
を追加しました。
MMLコンパイラ
- マクロ定義において、マクロ定義終了の"}"をコメントアウトできなかったバグを修正。
- Version 1.23より、相対ディチューン機能を実装していたものの、取説に相対ディチューンコマンドの説明が無かった点を修正。
- 使用されていないサブルーチンがある場合、最適化の過程で異常終了することがあるバグを修正。
(Visual C++ 2019でビルドしたMMLコンパイラを使うと、発生しました。) - 最適化の仕組みを改善し、より高度な最適化をするようにした。
関連して、シーケンス(BGM、効果音、サブルーチン)データの最適化の有無をオプションにて設定できるようにした。 - Windows 64bit用のMMLコンパイラ
nsc64.exe
を新設した。
Version 1.28
音源ドライバ本体
- 開発環境「CC65」のV2.17に対応しました。
- 効果音終了からBGMに復帰する際に、1フレームの無音期間が出来てしまっていた現象を改善しました。
MMLコンパイラ
- リピートコマンド展開時における最適化処理にて、省いてはいけないコマンドを重複コマンドと誤認識して省いてしまうバグをFix しました。
その他
\sample\ca65\
フォルダのアセンブリ原語での組み込みサンプルにて、演奏がもたっていたバグを修正した。
Version 1.27
音源ドライバ本体
- 休符のモードが1且つ、ゲートクオンタイズのモードが1以外の時に、休符時に
R@
の音色に切り替わらないバグをFix した。 - 効果音で、内臓音源5トラック使用可能なヴァージョン
nsd_se.lib
を追加しました。 - オクターブのデフォルトが5になっていたのを、4に修正しました(取説上はデフォルト「4」と記載、また、MMLコンパイラ側も「4」に設定されていた)。
MMLコンパイラ
- エンベロープ定義にて、L コマンドを省略した場合に、ループ位置のエラーを検出できなかったバグをFix した。
- 1行コメント(
//
,;
)を改行しないでファイルの終端にした場合、暴走するバグをFixした。 - エンベロープ定義にて、同じ数字が続く場合、自動でランレングス圧縮するようにした。
- パッチ定義において、マクロ呼び出し及び、ローカルマクロに対応した。
- 文字列の始点、終点を示す識別子として、全角の”に対応した。
- 未使用のサブルーチン、エンベロープ、音色定義の最適化の有無をオプションにて設定できるようにした。
その他
- サンプルを若干追加した。
\sample\template\
フォルダーのtemplate.mml
に、パッチ定義のひな形(ノイズチャンネルの簡易的なドラムセット)を追加しました。
Version 1.26
音源ドライバ本体
- cc65 V2.15 - Git d0e0b98でビルドできるようにし、ライブラリを本ヴァージョンの仕様のフォーマットに更新した。
- 効果音の優先度と早送り機能のフラグが、同じビットを使っていたコーディング・ミスを修正しました。
これに伴い、ヘッダーファイルnsddef.inc
の改定がございますので、ご留意ください。
Version 1.25
音源ドライバ本体
- 電源投入時にユーザーアプリケーション側で非Zeropageを0初期化しておかないと、三角波の再生がおかしくなることがあるバグをFix した。
(Version 1.24から導入した、三角波のリニアカウンタ・エンベロープの初期化を忘れていた。)
(※付属の.lib(ライブラリ)をゲームなどのアプリケーション組み込みの際に、本バグが発生しておりました。)
(※付属の.bin(NSF用のコンパイル済み音源ドライバ)は、リセット・電源投入時に非Zeropageを0クリアするため問題ありません。) - 三角波のリニアカウンタ・エンベロープに関するコードサイズとCPU負荷を若干最適化した。
MMLコンパイラ
- 様々な音階(ハンガリー、ジプシー、およびそれらから派生したモード)に対応。
Version 1.24
音源ドライバ本体
- 効果音を鳴らしている時に次の効果音を鳴らした場合、新たに鳴らした効果音で未使用のトラックは前の効果音が残るようにした。
- 効果音を鳴らしている時にBGMを再生開始した場合、効果音のスイープがリセットされるバグを修正した。
- 三角波チャンネルのリニアカウンターエンベロープに対応(音量エンベロープで操作します)。
MMLコンパイラ
- ⊿PCMの発音オフセット、発音サイズを調整できるようにした。
- パッチ機能において、サブルーチンの最適化を無効にし、必ず埋め込むモードを作った。
- 未使用のトラックはコンパイルしないようにした(従来は、End Of Trackのオペコードを1[Byte]出力していた)。
≪MMLコンパイラを、WINDOWS以外の機種など自分でビルドしてご利用なさる方むけの対応≫ - ファイル名の大文字、小文字を区別する環境化でもコンパイルが通るようにファイル名を修正した。
Version 1.23
音源ドライバ本体
- 下降方向のポルタメントにて、音長とポルタメントに要するフレーム長が同一の場合、次の音符にもポルタメントの変位が効いてしまうバグをFix。
(※但し仕様として、音長よりもポルタメントが長い場合は、ポルタメントの変異は次の音符にも効きます。)
(※ポルタメント処理が終了した場合にのみ、次の音符にてポルタメントの変異がリセットされます。) - ゲート長より発音長が短い音符があり、その次が休符の場合において、KeyOffされないバグをFix。
- ⊿PCMのIRQに対応した.binで複数曲内包したNSFをTNS-HFCxで再生した場合、2曲目以降が再生できないバグをFix。
- FDS音源にて、SweepBiasの初期化が行われておらず、音程が外れることがあるバグをFix。
- N16x音源にて、サンプル長が不定だったのを、32[sample](
s56
)で初期化するようにした。 - VRC7音源に対して、音量、音色、周波数のレジスタアクセスを最短(データシートのギリギリ)で行うように最適化した。
- VRC7音源にて、
@
コマンドと、E@
コマンド(レジスタに対するエンベロープ)を同じTickに置いた場合、@
コマンドによる音色変更ができなかったバグをFix。 - VRC7音源にて、ハードウェアをKeyOffしないまま、ソフトウェアエンベロープだけKeyOffする機能を実装した(
s
コマンドで行います)。 - 三角波のリニアカウンタ($4008)の制御に対応(
s
コマンドで行います)。 - 音程について、n16x以外は12.5[cent]単位の制御だったが、n16xと同じく6.25[cent]単位に変更。音程の精度を倍にしました。
(※但し、n16x以外の音程テーブルそのものは12.5[cent]毎のテーブルであり、線形補完により算出します。) - 休符のモードを1つ追加し、
Rm
コマンドのモードに従うモードを新設した。
MMLコンパイラ
- パッチ記述ブロックにて、_コマンド、sコマンドがコンパイルエラーになる事があるバグをFix。
(
)
にて囲む数値および、"
"
にて囲む文字列について、閉じ忘れなどの文法ミスを検出するようにした。
(今まで検出しておらず、こういった文法ミスによるエラーが発生した際、コンパイルエラーの真因を特定し難かった。)- 検索パスの仕組みを導入した。
- それに伴い、binファイル、dmcファイル、インクルードファイルの検索パスを登録するオプションスイッチを導入しました。
#QReverse
コマンドを新設。q
コマンドとQ
コマンドを入れ替えます。- 休符コマンド(
r
,w
)のパラメータに*
(Rm
コマンドのモードに従う)を新設した。 #rest
コマンド、#wait
コマンドにて、モード3(Rm
コマンドのモードに従う)を新設した。。- 疑似エコーのバッファを制御するコマンドを追加した。
≪MMLコンパイラを、WINDOWS以外の機種など自分でビルドしてご利用なさる方むけの対応≫ - 動作時に出力するメッセージの文字コードについて、
_WIN32
を定義してビルドした場合(付属のnsc.exeを含む)はShift-JIS、 _WIN32を定義しないでビルドした場合はEUCとしていたが、動作環境に応じた文字コードで出力するようにした。 - また、UNICODE(
wchar_t
,wcout
,wcerr
)に対応していないC/C++コンパイラへの配慮として、UNICODE文字列とマルチバイト文字列を選択する#define
文を追加。_UNICODE
を定義した場合UNICODE、定義しない場合はマルチバイト文字列としてコンパイルします。
取扱説明書
- 各コマンドについて、デフォルトの値、疑似コマンドか否かを分かり易くした。
- 最適化のためのヒントを更新した。
Version 1.22
MMLコンパイラ
#TieMode
コマンドを追加。^
記述時の挙動を設定できます。- 符号なしなのに、
unsigned
を付け忘れていて、一部のC++コンパイラでコンパイルできなかったバグをFix。 EC
コマンドにて第2パラメータが-1、第3パラメータの指定が無い、且つ、リピート終了の前と後の両方が休符の場合、リピート終了直前の疑似エコーにスラー/タイのフラグが立ってしまうバグをFix。- 疑似エコー使用時に、若干最適化してコンパイルするようにした。
取扱説明書
- 疑似エコーと、パッチ機能に関する説明文・記述を見直した。
- MML全体の構文に関する説明文・記述を若干、見直した。
Version 1.21
音源ドライバー本体
- Version 1.20において、
nsd.bin
がTNS-HFC3, TNS-HFC4で動作しなくなっていたバグをFix。
MMLコンパイラ
Patch()
コマンドを、P()
と省略できるようにした。Patch()
記述ブロック内にて、q
コマンド、u
コマンドを定義できるようにした。Patch()
記述ブロック内にて、#OffsetE*
が効いていなかったバグをFix。- マクロが1つも定義されてない状態でマクロ呼び出しを行うと、例外が発生するバグをFix。
(本来は、マクロが定義されてない旨のエラーメッセージを表示) - Windows以外のOS(UNIX系、マッキントシュ、等)で、
\
コマンドが使えなかったバグをFixしたつもり。
(※実機を所有していないため未確認です。報告求ム)