diff --git a/bin/nsc.exe b/bin/nsc.exe index 2fdb3f7..30c5ff6 100644 Binary files a/bin/nsc.exe and b/bin/nsc.exe differ diff --git a/bin/nsd.bin b/bin/nsd.bin index 30417ad..bca6805 100644 Binary files a/bin/nsd.bin and b/bin/nsd.bin differ diff --git a/bin/nsd_all.bin b/bin/nsd_all.bin index d9248b5..f6b1e39 100644 Binary files a/bin/nsd_all.bin and b/bin/nsd_all.bin differ diff --git a/bin/nsd_all2.bin b/bin/nsd_all2.bin index 3470d69..4282284 100644 Binary files a/bin/nsd_all2.bin and b/bin/nsd_all2.bin differ diff --git a/bin/nsd_fds.bin b/bin/nsd_fds.bin index f0494f1..c632b03 100644 Binary files a/bin/nsd_fds.bin and b/bin/nsd_fds.bin differ diff --git a/bin/nsd_hfe4.bin b/bin/nsd_hfe4.bin index 25c06d1..c6c7765 100644 Binary files a/bin/nsd_hfe4.bin and b/bin/nsd_hfe4.bin differ diff --git a/bin/nsd_hfx4.bin b/bin/nsd_hfx4.bin index a07e3ff..efcf67d 100644 Binary files a/bin/nsd_hfx4.bin and b/bin/nsd_hfx4.bin differ diff --git a/bin/nsd_mmc5.bin b/bin/nsd_mmc5.bin index 2af36b0..6e1ebf4 100644 Binary files a/bin/nsd_mmc5.bin and b/bin/nsd_mmc5.bin differ diff --git a/bin/nsd_n163.bin b/bin/nsd_n163.bin index 2569553..0fca6d3 100644 Binary files a/bin/nsd_n163.bin and b/bin/nsd_n163.bin differ diff --git a/bin/nsd_oall.bin b/bin/nsd_oall.bin index 1056308..622a926 100644 Binary files a/bin/nsd_oall.bin and b/bin/nsd_oall.bin differ diff --git a/bin/nsd_opll.bin b/bin/nsd_opll.bin index aebd31f..eb77251 100644 Binary files a/bin/nsd_opll.bin and b/bin/nsd_opll.bin differ diff --git a/bin/nsd_s5b.bin b/bin/nsd_s5b.bin index 7b20d30..dc0e1f5 100644 Binary files a/bin/nsd_s5b.bin and b/bin/nsd_s5b.bin differ diff --git a/bin/nsd_vrc6.bin b/bin/nsd_vrc6.bin index 8802fba..0b9314d 100644 Binary files a/bin/nsd_vrc6.bin and b/bin/nsd_vrc6.bin differ diff --git a/bin/nsd_vrc7.bin b/bin/nsd_vrc7.bin index be85c54..ff58e02 100644 Binary files a/bin/nsd_vrc7.bin and b/bin/nsd_vrc7.bin differ diff --git a/doc/nsdl.chm b/doc/nsdl.chm index 5cfe14c..090670c 100644 Binary files a/doc/nsdl.chm and b/doc/nsdl.chm differ diff --git a/doc/readme.txt b/doc/readme.txt index ae5a215..7c3f04d 100644 --- a/doc/readme.txt +++ b/doc/readme.txt @@ -1,6 +1,6 @@ +----------------------------------------------------------------------------- | タイトル | NES Sound Driver Library -|ファイル名| NSDL122.ZIP +|ファイル名| NSDL123.ZIP | カテゴリ | Sound Driver for NES | 動作機種 | NES (Nintendo Entertainment System) |前提ソフト| cc65 (Complete cross development package for 65(C)02 systems.) @@ -28,4 +28,4 @@ This is developed as object library, and user application can control it. ・mixi http://mixi.jp/show_profile.pl?id=16558 ======================================================================== -製作のファイルは【NSDL122.ZIP】です。 +製作のファイルは【NSDL123.ZIP】です。 diff --git a/lib/NSD.lib b/lib/NSD.lib index 25e1c86..bddd3f3 100644 Binary files a/lib/NSD.lib and b/lib/NSD.lib differ diff --git a/lib/NSD_ALL.lib b/lib/NSD_ALL.lib index 265f5fd..c10b802 100644 Binary files a/lib/NSD_ALL.lib and b/lib/NSD_ALL.lib differ diff --git a/lib/NSD_ALL2.lib b/lib/NSD_ALL2.lib index a8bcf81..3404dc8 100644 Binary files a/lib/NSD_ALL2.lib and b/lib/NSD_ALL2.lib differ diff --git a/lib/NSD_FDS.lib b/lib/NSD_FDS.lib index 12a39f9..8a088ae 100644 Binary files a/lib/NSD_FDS.lib and b/lib/NSD_FDS.lib differ diff --git a/lib/NSD_HFE4.lib b/lib/NSD_HFE4.lib index b3ad14a..7b605f6 100644 Binary files a/lib/NSD_HFE4.lib and b/lib/NSD_HFE4.lib differ diff --git a/lib/NSD_HFX4.lib b/lib/NSD_HFX4.lib index 950e400..9a9a2a0 100644 Binary files a/lib/NSD_HFX4.lib and b/lib/NSD_HFX4.lib differ diff --git a/lib/NSD_MMC5.lib b/lib/NSD_MMC5.lib index b1ee12d..dd4bba7 100644 Binary files a/lib/NSD_MMC5.lib and b/lib/NSD_MMC5.lib differ diff --git a/lib/NSD_N163.lib b/lib/NSD_N163.lib index 3435b23..b470add 100644 Binary files a/lib/NSD_N163.lib and b/lib/NSD_N163.lib differ diff --git a/lib/NSD_OALL.lib b/lib/NSD_OALL.lib index f4266e1..ac72701 100644 Binary files a/lib/NSD_OALL.lib and b/lib/NSD_OALL.lib differ diff --git a/lib/NSD_OPLL.lib b/lib/NSD_OPLL.lib index 2669dfb..720f9b2 100644 Binary files a/lib/NSD_OPLL.lib and b/lib/NSD_OPLL.lib differ diff --git a/lib/NSD_VRC6.lib b/lib/NSD_VRC6.lib index d9fbc6f..74f4bf9 100644 Binary files a/lib/NSD_VRC6.lib and b/lib/NSD_VRC6.lib differ diff --git a/lib/NSD_VRC7.lib b/lib/NSD_VRC7.lib index 7ecb7b6..448de2f 100644 Binary files a/lib/NSD_VRC7.lib and b/lib/NSD_VRC7.lib differ diff --git a/lib/NSD_s5b.lib b/lib/NSD_s5b.lib index 9e57132..de242c9 100644 Binary files a/lib/NSD_s5b.lib and b/lib/NSD_s5b.lib differ diff --git a/src/help/mml.html b/src/help/mml.html index b2aacbe..4bd8d44 100644 --- a/src/help/mml.html +++ b/src/help/mml.html @@ -52,8 +52,21 @@ 何度でも指定可能であり、各シーケンス記述ブロック毎に設定することもできます。
音符、休符において、この数値nの4倍の値を割り切ることが可能なm分音符を使用することができます。
それ以外のm分音符を使用した場合、割り切れない旨のWarning(警告)となり、小数点を切り捨ててコンパイルします。 +#QMax n 8シーケンス記述ブロック内におけるQ コマンドの分母を設定します。
+ Qコマンド使用時、実際の発音音長は、音長 × Q コマンドの値 ÷ n となります。 +#QReverse -本コマンドを記述することで、シーケンス記述ブロック内におけるゲートクオンタイズコマンド + `Q'と`q'を入れ替えます。 #octaveReverse -本コマンドを記述することで、シーケンス記述ブロック内における相対オクターブコマンド `<'と`>'を入れ替えます。 +#RepeatMode n 0シーケンス記述ブロック内におけるリピート(A)コマンドのコンパイル方法を設定します。
+  0 … MMLコンパイラが自動的に、リピートコマンドのコンパイル方法を選択します。
+  1 … ユーザーにて明示的に、リピートコマンドのコンパイル方法を選択します。
+  2 … ユーザーにて明示的に、リピートコマンドのコンパイル方法を選択します。
+ 数値の詳細は、リピート(A)コマンドを参照。 +#TieMode n 0シーケンス記述ブロック内における ^ コマンドのコンパイル方法を設定します。
+  0 … ^ コマンドは、すべての場合において「タイ」としてコンパイルします。
+  1 … 音符の直後に^コマンドが記述された場合は、直前の音符に対する音長を加算する演算子として処理します。
+     (※加算結果が255[tick]を超えるとエラーになります。) #rest n 2シーケンス記述ブロック内におけるr コマンドによる休符のコンパイル方法を設定します。
 0 … 強制的に、音量を0にします。儕CMの場合はKeyOffします。
 1 … 直前のノートを、R@, Rvコマンドの値で鳴らします。
@@ -64,17 +77,6 @@  1 … 直前のノートを、R@, Rvコマンドの値で鳴らします。
 2 … 直前のノートのエンベロープ(音色・音量)を継続し、リリースパターンが定義されている場合それに従います。
 3 … Rmコマンドに従います。
-#QMax n 8シーケンス記述ブロック内におけるQ コマンドの分母を設定します。
- Qコマンド使用時、実際の発音音長は、音長 × Q コマンドの値 ÷ n となります。 -#RepeatMode n 0シーケンス記述ブロック内におけるリピート(A)コマンドのコンパイル方法を設定します。
-  0 … MMLコンパイラが自動的に、リピートコマンドのコンパイル方法を選択します。
-  1 … ユーザーにて明示的に、リピートコマンドのコンパイル方法を選択します。
-  2 … ユーザーにて明示的に、リピートコマンドのコンパイル方法を選択します。
- 数値の詳細は、リピート(A)コマンドを参照。 -#TieMode n 0シーケンス記述ブロック内における ^ コマンドのコンパイル方法を設定します。
-  0 … ^ コマンドは、すべての場合において「タイ」としてコンパイルします。
-  1 … 音符の直後に^コマンドが記述された場合は、直前の音符に対する音長を加算する演算子として処理します。
-     (※加算結果が255[tick]を超えるとエラーになります。) #ReleaseVolume n 2シーケンス記述ブロック内におけるRvコマンドの初期値を設定します。
nは0〜15の範囲で指定します。
※音源ドライバ側のデフォルトは2であるため、2以外を指定した場合は各トラックの先頭に自動でRvコマンドを出力します。 diff --git a/src/help/mml_dpcm.html b/src/help/mml_dpcm.html index 8efc8fd..b93e429 100644 --- a/src/help/mml_dpcm.html +++ b/src/help/mml_dpcm.html @@ -157,6 +157,12 @@

next

若しくは、#Bankコマンドを記述しバンクに対応したbin(nsd_all.bin, nsd_all2.bin)を使用して下さい。

+

+儕CMにてIRQを使用している場合、&(スラー)ではなく、^(タイ)を使ってください。
+&(スラー)を利用して音を繋げた場合、繋げた先のノートナンバーに儕CMの発音中ポインタが設定され、 +次のIRQではそのノートナンバーの次に示される儕CMが再生されます。
+

+

また、多くのNSFプレイヤーは、IRQに対応しておりません。
以下、2014年 1月 3日時点での対応状況です。
diff --git a/src/help/nsdl.chm b/src/help/nsdl.chm index 5cfe14c..090670c 100644 Binary files a/src/help/nsdl.chm and b/src/help/nsdl.chm differ diff --git a/src/help/revision.html b/src/help/revision.html index 2864c0d..c008e49 100644 --- a/src/help/revision.html +++ b/src/help/revision.html @@ -36,6 +36,7 @@ ・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]毎のテーブルであり、線形補完により算出します。)
@@ -58,7 +59,7 @@ ●取扱説明書
・各コマンドについて、デフォルトの値、疑似コマンドか否かを分かり易くした。
・最適化のためのヒントを更新した。
- 2014年 9月__日 + 2014年12月31日 1.22 ●MMLコンパイラ
・#TieModeコマンドを追加。^記述時の挙動を設定できます。
diff --git a/src/nsc/FileInput.cpp b/src/nsc/FileInput.cpp index 9b840fd..b0b3075 100644 --- a/src/nsc/FileInput.cpp +++ b/src/nsc/FileInput.cpp @@ -53,7 +53,7 @@ void FileInput::fileopen(const char* _strFileName){ //-------------------------------- void FileInput::fileopen(const char* _strFileName,SearchPass* _pass) { - bool success = false; + bool success = false; //先ずは、そのまま errno = 0; //グローバル変数 errno を0に初期化 @@ -62,6 +62,7 @@ void FileInput::fileopen(const char* _strFileName,SearchPass* _pass) if(cOptionSW->flag_SearchPass){ perror(_strFileName); } + if(good()==true){ success = true; } else { @@ -70,10 +71,22 @@ void FileInput::fileopen(const char* _strFileName,SearchPass* _pass) int i = 0; int iSize = _pass->count(); string name; + string workName= string(_strFileName); + int loc = workName.rfind('/'); + + //指定のファイルにパスが書かれていたら、消す。 + if(loc != string::npos){ + workName.erase(0, loc); //ファイル名のみ + } while(i < iSize){ + +#ifdef _WIN32 + //Windowsの場合は、相対パスも含めて検索する(UNIX系は不可) + //指定の検索パスを基準とした相対パスも検索する。 errno = 0; //グローバル変数 errno を0に初期化 clear(); //フラグのクリア + name.assign(_pass->get(i)); name.append(_strFileName); open(name.c_str(),ios_base::in | ios_base::binary); @@ -84,6 +97,23 @@ void FileInput::fileopen(const char* _strFileName,SearchPass* _pass) success = true; break; }; +#endif + //WINDOWS, UNIX系共通 + //検索パス+ファイル名のみで検索。 + errno = 0; //グローバル変数 errno を0に初期化 + clear(); //フラグのクリア + + name.assign(_pass->get(i)); + name.append(workName); + open(name.c_str(),ios_base::in | ios_base::binary); + if(cOptionSW->flag_SearchPass){ + perror(name.c_str()); + } + if(good()==true){ + success = true; + break; + }; + i++; } diff --git a/src/nsc/nsc.ncb b/src/nsc/nsc.ncb index e02bd56..52aa7d3 100644 Binary files a/src/nsc/nsc.ncb and b/src/nsc/nsc.ncb differ diff --git a/src/nsc/nsc.suo b/src/nsc/nsc.suo index 52a8ca2..84c13e9 100644 Binary files a/src/nsc/nsc.suo and b/src/nsc/nsc.suo differ diff --git a/src/nsd/nsd_snd.s b/src/nsd/nsd_snd.s index e2630d7..0127ed3 100644 --- a/src/nsd/nsd_snd.s +++ b/src/nsd/nsd_snd.s @@ -1641,16 +1641,16 @@ _nsd_OPLL_volume: lda __detune_fine,x ;[4]6 bpl @L ;[3] or [4]9 (Branch) or [4](not Branch) dey ; ay = __detune_fine (sign expand) -@L: add __opll_frequency - nsd::TR_VRC7 + 0,x ;[6]15 +@L: add __opll_frequency - nsd::TR_OPLL + 0,x ;[6]15 sta __tmp ;[3]18 tya ;[2]20 - adc __opll_frequency - nsd::TR_VRC7 + 1,x ;[4]24 + adc __opll_frequency - nsd::TR_OPLL + 1,x ;[4]24 and #$0F ;[2]26 sta __tmp + 1 ;[3]29 __tmp += (signed int)__detune_cent pla ;[4]33 pha ;[3]36 tay ;[2]38 y <- device channel - add #OPLL_Frequency ;[4]42 > 42 clock !! (VRC7のwait) + add #OPLL_Frequency ;[4]42 > 42 clock !! (OPLLのwait) sta OPLL_Resister ;●Resister Write pla ;[4] lda __tmp ;[2]6 diff --git a/src/rom/crt0.s b/src/rom/crt0.s index 68b3fd7..8ccd54a 100644 --- a/src/rom/crt0.s +++ b/src/rom/crt0.s @@ -102,14 +102,14 @@ _play: .byte 0 .segment "DRVINFO" DRV_Name: .byte $4E, $53, $44, $4C, $20, $20 DRV_Version: .byte 1 - .byte 22 + .byte 23 .byte 0,0,0,0,0,0,0,0 .ifdef DPCMBank .segment "STARTUP" DRV_Name2: .byte $4E, $53, $44, $4C, $20, $20 DRV_Version2: .byte 1 - .byte 22 + .byte 23 .endif ; ------------------------------------------------------------------------