diff --git a/bin/nsc.exe b/bin/nsc.exe index 0b0241f..1dc88ab 100644 Binary files a/bin/nsc.exe and b/bin/nsc.exe differ diff --git a/bin/nsd.bin b/bin/nsd.bin index 7be2c76..a7c4444 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 815acfb..3e928f6 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 3d9460d..2ceb6a5 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 43467a1..eac41e8 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 a5649bd..1483bec 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 5804c2c..732658e 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 f64dbfb..a3ef734 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 bc01261..b94aff2 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 d12e0ea..654e27d 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 b70732a..efc1b78 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 30b9a1e..789ee59 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 25fbf23..df95c4c 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 16a13aa..36018c2 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 523af87..fb1cf0b 100644 Binary files a/doc/nsdl.chm and b/doc/nsdl.chm differ diff --git a/doc/readme.txt b/doc/readme.txt index c10b970..ae5a215 100644 --- a/doc/readme.txt +++ b/doc/readme.txt @@ -1,6 +1,6 @@ +----------------------------------------------------------------------------- | タイトル | NES Sound Driver Library -|ファイル名| NSDL121.ZIP +|ファイル名| NSDL122.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 ======================================================================== -製作のファイルは【NSDL121.ZIP】です。 +製作のファイルは【NSDL122.ZIP】です。 diff --git a/lib/NSD.lib b/lib/NSD.lib index 1c85b9e..d6ac03c 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 ce558fd..f80a8e5 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 ca2450d..9dd5a9f 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 d847098..6b1ed6f 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 1da2623..f53a72a 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 e2e192b..b3351a2 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 2d1ad8b..22f5ecf 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 9b638d6..aa80980 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 a501660..4f29572 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 429e7c2..1a9a79b 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 30a91a2..46a8202 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 ef043ed..0b46773 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 918bd88..0d9813b 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 13acddb..d4eeaa7 100644 --- a/src/help/mml.html +++ b/src/help/mml.html @@ -43,26 +43,35 @@
+疑似エコーは、コンパイル時に展開する、MMLコンパイラ側実装のコマンドとなります。
+ドライバ側実装のコマンドと組み合わせた際に、意図通りの動作にならない可能性がございます。
+
-リピートと相対音量、相対移調を組み合わせた場合、正常に疑似エコーのシーケンスを作成できません。
-疑似エコーが有効になっている時は、それらのコマンドを組み合わせて使わないで下さい。
+例えば、"v12 g4 EC1,3 [2 cr dr er ]"といったMMLは、"v12 g4 [2 v12 c v3 g v12 d v3 c v12 e v3 d ]"と同等のデータに変換される旨、留意してください。
+また、リピートコマンド内において、リピート毎に以下のような変化がある場合、正常に疑似エコーのシーケンスを作成できない旨、留意してください。
+第3パラメータlengthの指定時、休符には疑似エコーを生成しませんが、
+タイ^についても疑似エコーは生成しません(タイはスラー及び休符コマンドにコンパイルするため)。
+例えば、#TieModeが0の条件下において、"EC- EC1,3,%3 v12 l16 c^^^ d^^^ e^^^"といったMMLは、タイの前の音符に対して疑似エコーを生成してしまうため、
+"v12 l16 c^^^ d16-%3 v3 c%3 ^^^ v12 e16-%3 v3 d%3 ^^^"と同等のデータに変換される旨、留意してください。
+音長を加算したい場合は、+演算子により音長を加算してください。
+なお、#TieModeを1にすることで、^はタイではなく、音長加算の演算子として動作します。
+この場合、上述のMMLは"v12 l16 c4 d4-%3 v3 c%3 v12 e4-%3 v3 d%3"と同等のデータに変換されます。
+
-また、サブルーチン内で使う場合は、音量を指定し直して下さい(MMLコンパイラに現在の音量を通知するため)。
+サブルーチン内で使う場合は、音量を指定し直して下さい(MMLコンパイラに現在の音量を通知するため)。
%
を記述した場合は、length[Tick]の長さとなります。
-また、演算子 +
及び -
を用いて音長の加減算が可能です。
+また、
+演算子 +
及び ^
(※#TieModeが1の場合のみ)により音長の加算、
+演算子 -
及び ~
により音長の減算が可能です。
lengthを省略時は、lコマンドで指定した数値が適用されます。
diff --git a/src/help/mml_patch_seq.html b/src/help/mml_patch_seq.html
index 821fdd5..7a41359 100644
--- a/src/help/mml_patch_seq.html
+++ b/src/help/mml_patch_seq.html
@@ -61,25 +61,37 @@
-パッチ機能は、MMLコンパイラの疑似命令となります。
-MMLコンパイラ側で展開するため、コンパイル後のシーケンスサイズが大きくなる可能性があります。
+パッチ機能は、コンパイル時に展開する、MMLコンパイラ側実装のコマンドとなります。
+ドライバ側実装のコマンドと組み合わせた際に、意図通りの動作にならない可能性がございます。
+また、MMLコンパイラ側で展開するため、コンパイル後のシーケンスサイズが大きくなる可能性があります。
-リピートや無限ループする場合は、オクターブを1回目のオクターブに戻してください。
-リピートコマンドや、無限ループコマンドによってオクターブが変わってリピート、ループする場合、
-2回目以降のリピートも、1回目のリピート、ループ時のオクターブの音域としてパッチが処理されます。
+リピートコマンド内において、リピート毎にオクターブが変化する場合、正常にパッチを展開できません。
+例えば、"o4 [2 cegb > ]"といったMMLがあった場合、リピート内はオクターブ4としてパッチを展開するため、
+2回目のリピート時は実際のオクターブは5となりますが、パッチのオクターブは4のままとなります。
-サブルーチンを使用する場合、サブルーチン側でもパッチを設定してください。
-サブルーチン先では、サブルーチン元のパッチは適用されません。
-又、サブルーチンにてパッチ機能を使う場合は、パッチ定義にサブルーチン呼出しを記述することはできません。
-(サブルーチンのネスティングはできません)
+また、"o4 [2 ceg > c : < gec ]"といったMMLでは、リピート後のパッチのオクターブは4のままとなります。
+この場合、リピート後にオクターブコマンドを記述しなおして、MMLコンパイラにオクターブを通知してください。
-サブルーチンでパッチ機能を使用する場合、
-サブルーチンコマンドが定義されたパッチ定義を使う事はできません。
+サブルーチンを使用する場合、
+サブルーチン先ではサブルーチン元のパッチは適用されないため、
+サブルーチン先でもパッチを設定してください。
+また、サブルーチン先でオクターブが変化する場合は、
+サブルーチン呼び出し後にオクターブコマンドを記述しなおして、MMLコンパイラにオクターブを通知してください。
+又、サブルーチンにてパッチ機能を使う場合は、パッチ定義にサブルーチン呼出しを記述することはできません。
+(サブルーチンのネスティングはできません)
+
%
を記述した場合は、length[Tick]の長さとなります。
-また、演算子 +
及び -
を用いて長さの加減算が可能です。
+また、
+演算子 +
及び ^
(※#TieModeが1の場合のみ)により音長の加算、
+演算子 -
及び ~
により音長の減算が可能です。
lengthを省略時は、lコマンドで指定した数値が適用されます。
diff --git a/src/help/nsdl.chm b/src/help/nsdl.chm
index 523af87..fb1cf0b 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 e199cf1..02db100 100644
--- a/src/help/revision.html
+++ b/src/help/revision.html
@@ -25,6 +25,16 @@
ヴァージョン | 内容 | 改定日 |
---|---|---|
1.22 | +●MMLコンパイラ + ・#TieModeコマンドを追加。^記述時の挙動を設定できます。 + ・符号なしなのに、unsignedを付け忘れていて、一部のC++コンパイラでコンパイルできなかったバグをFix。 + ・ECコマンドにて第2パラメータが-1、第3パラメータの指定が無い、且つ、リピート終了の前と後の両方が休符の場合、リピート終了直前の疑似エコーにスラー/タイのフラグが立ってしまうバグをFix。 + ・疑似エコー使用時に、若干最適化してコンパイルするようにした。 + ●取扱説明書 + ・疑似エコーと、パッチ機能に関する説明文・記述を見直した。 + ・MML全体の構文に関する説明文・記述を若干、見直した。 + | 2014年 8月20日 |
1.21 | ●音源ドライバー本体 ・Version 1.20において、"nsd.bin"がTNS-HFC3, TNS-HFC4で動作しなくなっていたバグをFix。 diff --git a/src/nsc/MMLfile.cpp b/src/nsc/MMLfile.cpp index ac829fb..f72593e 100644 --- a/src/nsc/MMLfile.cpp +++ b/src/nsc/MMLfile.cpp @@ -21,6 +21,7 @@ MMLfile::MMLfile(const char* strFileName): offset_Em(0), iReleaseVolume(2), iRepeatMode(0), + iTieMode(0), timebase(24), octave_reverse(false), rest(2), @@ -844,7 +845,7 @@ int MMLfile::GetInt(void) // ●処理 // 音長を読み込む(付点付き) //============================================================== -int MMLfile::readLength(unsigned int DefaultLength){ +int MMLfile::readLength(int DefaultLength){ char cData; //読み込み用 int iLength; //音長 [tick] @@ -922,7 +923,7 @@ int MMLfile::readLength(unsigned int DefaultLength){ // int 読み込んだ数値 // 音長がかかれてない場合は、 -1 を返す。 //============================================================== -int MMLfile::GetLength(unsigned int DefaultLength) // +int MMLfile::GetLength(int DefaultLength) // { char cData; //読み込み用 int iLength; //音長 [tick] @@ -934,21 +935,24 @@ int MMLfile::GetLength(unsigned int DefaultLength) // //音長の加減算 cData = cRead(); - while((cData == '+') || (cData == '-') || (cData == '~')){ + while((cData == '-') || (cData == '~') || (cData == '+') || ((iTieMode == 1) && (cData == '^'))){ if(iLength == -1){ iLength = DefaultLength; } //後で計算する符号のチェック - if(cData == '+'){ + if((cData == '+') || (cData == '^')){ add = true; } else { add = false; } iCalc = readLength(DefaultLength); + if(iCalc == -1){ - Err(L"音長の加減算値に数値以外が指定されています。"); + // Warning(L"音長の加減算値に数値以外が指定されています。"); + iCalc = DefaultLength; } + if(add == true){ iLength += iCalc; } else { diff --git a/src/nsc/MMLfile.h b/src/nsc/MMLfile.h index a1f02a5..fe5ad23 100644 --- a/src/nsc/MMLfile.h +++ b/src/nsc/MMLfile.h @@ -42,6 +42,7 @@ class MMLfile // : int offset_Em; // int iReleaseVolume; // int iRepeatMode; // + int iTieMode; // int timebase; // bool octave_reverse; //Octave Reverse int rest; // r コマンドの挙動 @@ -78,8 +79,8 @@ class MMLfile // : string GetString(void); //""付 文字列 読み込み int GetNum(void); //()付 数値 読み込み int GetInt(void); //数値読み込み - int GetLength(unsigned int DefaultLength); //音長読み込み(演算付き) - int readLength(unsigned int DefaultLength); //音長読み込み + int GetLength(int DefaultLength); //音長読み込み(演算付き) + int readLength(int DefaultLength); //音長読み込み int GetCommandID(const Command_Info _command[], unsigned int _size); //コマンドIDを取得 diff --git a/src/nsc/MusicFile.cpp b/src/nsc/MusicFile.cpp index 29e84d7..33ea622 100644 --- a/src/nsc/MusicFile.cpp +++ b/src/nsc/MusicFile.cpp @@ -50,6 +50,7 @@ enum Command_ID_MusicFile { id_se_num, id_releaseVolume, id_repeatMode, + id_TieMode, id_offset_Ei, id_offset_Ev, id_offset_En, @@ -128,6 +129,8 @@ const static Command_Info Command[] = { { "#ReleaseVolume", id_releaseVolume}, { "#repeatMode", id_repeatMode }, { "#RepeatMode", id_repeatMode }, + { "#TieMode", id_TieMode }, + { "#tieMode", id_TieMode }, { "#OffsetE@", id_offset_Ei }, { "#offsetE@", id_offset_Ei }, { "#OffsetEv", id_offset_Ev }, @@ -283,6 +286,12 @@ const static Command_Info Command[] = { MML->Err(L"#RepeatModeコマンドは、0〜2の範囲で指定してください。"); } break; + case(id_TieMode): + MML->iTieMode = MML->GetInt(); + if((MML->iTieMode<0) || (MML->iTieMode>1)){ + MML->Err(L"#TieModeコマンドは、0〜1の範囲で指定してください。"); + } + break; case(id_offset_Ei): MML->offset_Ei = MML->GetInt(); break; diff --git a/src/nsc/MusicTrack.cpp b/src/nsc/MusicTrack.cpp index 9361fec..5af9442 100644 --- a/src/nsc/MusicTrack.cpp +++ b/src/nsc/MusicTrack.cpp @@ -28,6 +28,8 @@ MusicTrack::MusicTrack(MMLfile* MML, const wchar_t _strName[]): octave(5), octave1(0), echo_length(-1), + echo_already(false), + echo_vol_ret(false), echo_flag(false), loop_flag(false), compile_flag(false), @@ -1240,7 +1242,7 @@ void MusicTrack::SetVoice(unsigned int _no) iVoi = _no; sw_Evoi = false; f_opt_Evoi = true; //最適化フラグ - SetEvent(new mml_general(nsd_Voice, _no, L"Voice")); + SetEvent(new mml_general(nsd_Voice, (unsigned char)_no, L"Voice")); } } @@ -1598,7 +1600,7 @@ void MusicTrack::Set_u(int i) //============================================================== void MusicTrack::SetGatetime_Q(MMLfile* MML) { - unsigned int i = MML->GetInt(); + int i = MML->GetInt(); if((i<1) || (i>QMax)){ MML->Err(L"ゲートタイムQは1〜#QMaxの範囲で指定して下さい。"); } else { @@ -1641,7 +1643,7 @@ void MusicTrack::SetGatetime(MMLfile* MML) //============================================================== void MusicTrack::SetGatetime_u(MMLfile* MML) { - unsigned int i; + int i; unsigned char cData; cData = MML->GetChar(); @@ -2274,13 +2276,13 @@ void MusicTrack::SetLength(MMLfile* MML) // MMLfile* MML MMLファイルのオブジェクト // int note ノート(0:C 1:D 2:E … 7:B) // ●返値 -// 無し +// char //============================================================== char MusicTrack::calc_note(MMLfile* MML,int note) { unsigned char cData = MML->GetChar(); static const char note_code[]={0,2,4,5,7,9,11}; - int _key = note_code[note]; + char _key = note_code[note]; //臨時記号 //If Natural then skip @@ -2321,7 +2323,7 @@ int MusicTrack::calc_length(MMLfile* MML) int Length; MML->Back(); - if(((cData >= '0') && (cData <= '9')) || (cData == '%') || (cData == '.') || (cData == '~')){ + if(((cData >= '0') && (cData <= '9')) || (cData == '%') || (cData == '.') || (cData == '~') || ((MML->iTieMode == 1) && (cData == '^'))){ Length = MML->GetLength(DefaultLength); } else { Length = -1; @@ -2390,6 +2392,9 @@ bool MusicTrack::calc_slur(MMLfile* MML) //============================================================== void MusicTrack::SetEcho(void) { + //ここで音量を戻す。 + EchoVolRet(); + echo_flag = false; } @@ -2407,6 +2412,9 @@ void MusicTrack::SetEcho(MMLfile* MML) int _value; int _volume; + //ここで音量を戻す。 + EchoVolRet(); + _value = MML->GetInt(); if((_value<0) || (_value>255)){ MML->Err(L"ECコマンドの第1パラメータは0〜255の範囲で指定してください。"); @@ -2485,8 +2493,12 @@ void MusicTrack::GenerateEcho(MMLfile* MML, int Length, int GateTime, bool Slur) if(echo_slur == false){ //Echo volume SetEvent(new mml_general(nsd_Volume + echo_volume, L"Echo Volume")); + echo_vol_ret = true; } else { - _old_note->SetTai(); + //前のノートが、音符の場合のみ + if(echo_already == false){ + _old_note->SetTai(); + } } //Echo note @@ -2508,13 +2520,31 @@ void MusicTrack::GenerateEcho(MMLfile* MML, int Length, int GateTime, bool Slur) _old_note = new mml_note(old_note % 12, Length, GateTime, Slur, L"Echo Note"); SetEvent(_old_note); - if(echo_slur == false){ +// EchoVolRet(); + + echo_already = true; + +} + +//============================================================== +// 疑似エコーの音量復帰 +//-------------------------------------------------------------- +// ●引数 +// 無し +// ●返値 +// 無し +//============================================================== +void MusicTrack::EchoVolRet() +{ + //ここで音量を戻す。 + if(echo_vol_ret == true){ //volume return SetEvent(new mml_general(nsd_Volume + volume, L"Volume")); + echo_vol_ret = false; } - } + //============================================================== // 音符のイベント作成 //-------------------------------------------------------------- @@ -2551,6 +2581,13 @@ void MusicTrack::SetNote(MMLfile* MML, int _key, int Length, int GateTime, bool octave1_old = octave1; octave1 = 0; + echo_already = false; + + //ここで音量を戻す。 + if(echo_flag == true){ + EchoVolRet(); + } + //指定できる範囲を超えた場合。 while(_key < 0){ _key += 12; @@ -2566,10 +2603,12 @@ void MusicTrack::SetNote(MMLfile* MML, int _key, int Length, int GateTime, bool if((echo_flag == true) && (oldNote[(pt_oldNote - echo_value) & 0xFF] != -1) && (echo_length != -1) && (Length_0 > echo_length) && (Slur == false)){ //疑似エコー あり + Length_0 -= echo_length; if(Length_0 == opt_DefaultLength){ Length_0 = -1; } + _old_note = new mml_note(_key, Length_0, GateTime, Slur, L"Note"); //イベントオブジェクトの作成 diff --git a/src/nsc/MusicTrack.h b/src/nsc/MusicTrack.h index af87cb4..6cdec6a 100644 --- a/src/nsc/MusicTrack.h +++ b/src/nsc/MusicTrack.h @@ -67,6 +67,9 @@ class MusicTrack : //---------------------------------- //疑似エコー + bool echo_already; //既に生成したか? + bool echo_vol_ret; //エコーの音量を元に戻したか? + bool echo_flag; //疑似エコー フラグ bool echo_slur; //疑似エコー スラーでつなげる? int echo_length; //疑似エコー 長さ @@ -224,6 +227,7 @@ class MusicTrack : void SetEcho(void); void SetEcho(MMLfile* MML); void ResetEcho(); + void EchoVolRet(); void GenerateEcho(MMLfile* MML, int Length, int GateTime, bool Slur); char calc_note(MMLfile* MML,int note); int calc_length(MMLfile* MML); @@ -250,7 +254,7 @@ class MusicTrack : void SetOctaveOne_Inc(); void SetOctaveOne_Dec(); - void SetVolume(char _v){volume = _v; opt_volume = volume;}; + void SetVolume(char _v){volume = _v; opt_volume = volume; echo_vol_ret=false;}; void IncVolume(void){ volume++; if(volume>15){volume = 15;} if(opt_volume != -1){opt_volume = volume;} }; void DecVolume(void){ volume--; if(volume<0){volume = 0;} if(opt_volume != -1){opt_volume = volume;} }; int Get_opt_volume(void){ return(opt_volume); }; @@ -271,5 +275,8 @@ class MusicTrack : f_opt_Key = false; // f_opt_Sweep = false; // f_opt_Sub = false; // + if((echo_flag == true) && (echo_slur == false)){ + echo_vol_ret = true; // + } } }; diff --git a/src/nsc/Release/nsc.exe b/src/nsc/Release/nsc.exe index 0b0241f..1dc88ab 100644 Binary files a/src/nsc/Release/nsc.exe and b/src/nsc/Release/nsc.exe differ diff --git a/src/nsc/TrackSet.cpp b/src/nsc/TrackSet.cpp index 503daa4..32bacdd 100644 --- a/src/nsc/TrackSet.cpp +++ b/src/nsc/TrackSet.cpp @@ -131,10 +131,10 @@ enum Command_ID_mml { // これらは、MML構文で使えるコマンド。 -const static char RS_UTF8[] = {0x5c, 0x00}; //REVERSE SOLIDUS -const static char RS_UTF8W[] = {0xEF, 0xBC, 0xBC, 0x00}; //REVERSE SOLIDUS -const static char Yen_UTF8[] = {0xC2, 0xA5, 0x00}; //Yen -const static char Yen_UTF8W[] = {0xEF, 0xBF, 0xA5, 0x00}; //Yen +const static unsigned char RS_UTF8[] = {0x5c, 0x00}; //REVERSE SOLIDUS +const static unsigned char RS_UTF8W[] = {0xEF, 0xBC, 0xBC, 0x00}; //REVERSE SOLIDUS +const static unsigned char Yen_UTF8[] = {0xC2, 0xA5, 0x00}; //Yen +const static unsigned char Yen_UTF8W[] = {0xEF, 0xBF, 0xA5, 0x00}; //Yen const static Command_Info Command[] = { { "TR", mml_Track }, @@ -1195,7 +1195,7 @@ void TrackSet::SetRelativeTempo(MMLfile* MML) { int iValue = MML->GetInt(); - iTempo += iValue; + iTempo += (unsigned char)iValue; SetEvent(new mml_general(nsd_Relative_Tempo, (char)iValue, L"Relative Tempo")); @@ -1243,7 +1243,7 @@ void TrackSet::SetRelativeDown() //============================================================== void TrackSet::SetVolume(MMLfile* MML) { - unsigned int i = MML->GetInt(); + int i = MML->GetInt(); if( (i <= 15) && (i >= 0) ){ if(nowTrack->Get_opt_volume() != i){ @@ -1259,7 +1259,7 @@ void TrackSet::SetVolume(MMLfile* MML) void TrackSet::SetVolumeInc(MMLfile* MML) { unsigned char cData = MML->GetChar(); - unsigned int iValue; + int iValue; if((cData >= '0') && (cData <= '9')){ MML->Back(); @@ -1269,6 +1269,8 @@ void TrackSet::SetVolumeInc(MMLfile* MML) iValue = 1; } + nowTrack->EchoVolRet(); + while(iValue > 0){ SetEvent(new mml_general(nsd_Volume_Up, L"Volume up")); nowTrack->IncVolume(); @@ -1280,7 +1282,7 @@ void TrackSet::SetVolumeInc(MMLfile* MML) void TrackSet::SetVolumeDec(MMLfile* MML) { unsigned char cData = MML->GetChar(); - unsigned int iValue; + int iValue; if((cData >= '0') && (cData <= '9')){ MML->Back(); @@ -1290,6 +1292,8 @@ void TrackSet::SetVolumeDec(MMLfile* MML) iValue = 1; } + nowTrack->EchoVolRet(); + while(iValue > 0){ SetEvent(new mml_general(nsd_Volume_Down, L"Volume down")); nowTrack->DecVolume(); @@ -1308,7 +1312,7 @@ void TrackSet::SetVolumeDec(MMLfile* MML) void TrackSet::SetReleaseMode(MMLfile* MML) { mml_general* _event; - unsigned int i = MML->GetInt(); + int i = MML->GetInt(); switch(i){ case(0): @@ -1337,7 +1341,7 @@ void TrackSet::SetReleaseMode(MMLfile* MML) //============================================================== void TrackSet::SetReleaseVoice(MMLfile* MML) { - unsigned int i = MML->GetInt(); + int i = MML->GetInt(); if( (i <= 7) && (i >= 0) ){ SetEvent(new mml_general(nsd_Release_Voice + (unsigned char)i, L"Release Voice")); @@ -1356,7 +1360,7 @@ void TrackSet::SetReleaseVoice(MMLfile* MML) //============================================================== void TrackSet::SetReleaseVolume(MMLfile* MML) { - unsigned int i = MML->GetInt(); + int i = MML->GetInt(); if( (i <= 15) && (i >= 0) ){ SetEvent(new mml_general(nsd_Release_Volume + (unsigned char)i, L"Release Volume")); diff --git a/src/nsc/nsc.aps b/src/nsc/nsc.aps new file mode 100644 index 0000000..a90d90f Binary files /dev/null and b/src/nsc/nsc.aps differ diff --git a/src/nsc/nsc.cpp b/src/nsc/nsc.cpp index 7ef8e03..33414cc 100644 --- a/src/nsc/nsc.cpp +++ b/src/nsc/nsc.cpp @@ -45,7 +45,7 @@ int main(int argc, char* argv[]) try { //================================== wcout << L"MML Compiler for NES Sound Driver & Library (NSD.Lib)\n" - L" Version 1.21\n" + L" Version 1.22\n" L" Copyright (c) 2012-2014 S.W.\n" << endl; diff --git a/src/nsc/nsc.ncb b/src/nsc/nsc.ncb index 829a8e3..f6583f5 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 c9b514e..ad2055c 100644 Binary files a/src/nsc/nsc.suo and b/src/nsc/nsc.suo differ diff --git a/src/rom/crt0.s b/src/rom/crt0.s index bda2a27..ac864a2 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 21 + .byte 22 .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 21 + .byte 22 .endif ; ------------------------------------------------------------------------ |