Skip to content

Commit

Permalink
version 1.22
Browse files Browse the repository at this point in the history
  • Loading branch information
Shaw02 committed Aug 20, 2014
1 parent 60b97cc commit 51d76e4
Show file tree
Hide file tree
Showing 48 changed files with 178 additions and 57 deletions.
Binary file modified bin/nsc.exe
Binary file not shown.
Binary file modified bin/nsd.bin
Binary file not shown.
Binary file modified bin/nsd_all.bin
Binary file not shown.
Binary file modified bin/nsd_all2.bin
Binary file not shown.
Binary file modified bin/nsd_fds.bin
Binary file not shown.
Binary file modified bin/nsd_hfe4.bin
Binary file not shown.
Binary file modified bin/nsd_hfx4.bin
Binary file not shown.
Binary file modified bin/nsd_mmc5.bin
Binary file not shown.
Binary file modified bin/nsd_n163.bin
Binary file not shown.
Binary file modified bin/nsd_oall.bin
Binary file not shown.
Binary file modified bin/nsd_opll.bin
Binary file not shown.
Binary file modified bin/nsd_s5b.bin
Binary file not shown.
Binary file modified bin/nsd_vrc6.bin
Binary file not shown.
Binary file modified bin/nsd_vrc7.bin
Binary file not shown.
Binary file modified doc/nsdl.chm
Binary file not shown.
4 changes: 2 additions & 2 deletions doc/readme.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
+-----------------------------------------------------------------------------
| �^�C�g�� | NES Sound Driver Library
|�t�@�C����| NSDL121.ZIP
|�t�@�C����| NSDL122.ZIP
| �J�e�S�� | Sound Driver for NES
| ����@�� | NES (Nintendo Entertainment System)
|�O��\�t�g| cc65 (Complete cross development package for 65(C)02 systems.)
Expand Down Expand Up @@ -28,4 +28,4 @@ This is developed as object library, and user application can control it.
�Emixi http://mixi.jp/show_profile.pl?id=16558
========================================================================

����̃t�@�C���́yNSDL121.ZIP�z�ł��B
����̃t�@�C���́yNSDL122.ZIP�z�ł��B
Binary file modified lib/NSD.lib
Binary file not shown.
Binary file modified lib/NSD_ALL.lib
Binary file not shown.
Binary file modified lib/NSD_ALL2.lib
Binary file not shown.
Binary file modified lib/NSD_FDS.lib
Binary file not shown.
Binary file modified lib/NSD_HFE4.lib
Binary file not shown.
Binary file modified lib/NSD_HFX4.lib
Binary file not shown.
Binary file modified lib/NSD_MMC5.lib
Binary file not shown.
Binary file modified lib/NSD_N163.lib
Binary file not shown.
Binary file modified lib/NSD_OALL.lib
Binary file not shown.
Binary file modified lib/NSD_OPLL.lib
Binary file not shown.
Binary file modified lib/NSD_VRC6.lib
Binary file not shown.
Binary file modified lib/NSD_VRC7.lib
Binary file not shown.
Binary file modified lib/NSD_s5b.lib
Binary file not shown.
25 changes: 17 additions & 8 deletions src/help/mml.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,26 +43,35 @@
<caption>コマンド一覧</caption>
<tr><th>Command</th><th>Contens</th></tr>
<tr><td>#include "<var>filename</var>" </td><td>外部ファイルを呼び込みます。</td></tr>
<tr><td>#bgm <var>n</var> </td><td>BGMの曲数を設定します。(Default: <var>n</var> = 1)</td></tr>
<tr><td>#se <var>n</var> </td><td>SE の曲数を設定します。(Default: <var>n</var> = 0)</td></tr>
<tr><td>#priority <var>n</var> </td><td>以降のSE の優先度を設定します。(Default: <var>n</var> = 0)<br>
<tr><td>#bgm <var>n</var> </td><td>BGM(曲)の数を設定します。(Default: <var>n</var> = 1)</td></tr>
<tr><td>#se <var>n</var> </td><td>SE(効果音)の数を設定します。(Default: <var>n</var> = 0)</td></tr>
<tr><td>#priority <var>n</var> </td><td>以降のSE(効果音)の優先度を設定します。(Default: <var>n</var> = 0)<br>
SE(効果音)を再生開始した時、既に優先度が高いSE(効果音)が再生中であった場合は、再生しません。<br>
 (0 : 優先度高 ~ 3:優先度低)</td></tr>
<tr><td>#timebase <var>n</var> </td><td>以降のシーケンス記述ブロック(BGM, SE, Sub)の4分音符の分解能を設定します。(Default: <var>n</var> = 24)<br>
何度でも指定可能であり、各シーケンス記述ブロック毎に設定することもできます。</td></tr>
何度でも指定可能であり、各シーケンス記述ブロック毎に設定することもできます。<br>
音符、休符において、この数値<var>n</var>の4倍の値を割り切ることが可能なm分音符を使用することができます。<br>
それ以外のm分音符を使用した場合、割り切れない旨のWarning(警告)となり、小数点を切り捨ててコンパイルします。</td></tr>
<tr><td>#octaveReverse </td><td>本コマンドを記述することで、シーケンス記述ブロック内における相対オクターブコマンド
`<a href="mml_relative_octave.html">&lt;</a>'と`<a href="mml_relative_octave.html">&gt;</a>'を入れ替えます。</td></tr>
<tr><td>#rest <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_rest.html">r コマンド</a>による休符のモードを設定します(Default: <var>n</var> = 2)<br>
<tr><td>#rest <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_rest.html">r コマンド</a>による休符のコンパイル方法を設定します(Default: <var>n</var> = 2)<br>
 0 … 強制的に、音量を0にします。⊿PCMの場合はKeyOffします。<br>
 1 … 直前のノートを、<a href="mml_release.html">R@, Rvコマンド</a>の値で鳴らします。<br>
 2 … 直前のノートのエンベロープ(音色・音量)を継続し、リリースパターンが定義されている場合それに従います。(Default)<br></td></tr>
<tr><td>#wait <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_rest.html">w コマンド</a>による休符のモードを設定します(Default: <var>n</var> = 0)<br>
<tr><td>#wait <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_rest.html">w コマンド</a>による休符のコンパイル方法を設定します(Default: <var>n</var> = 0)<br>
 0 … 強制的に、音量を0にします。⊿PCMの場合はKeyOffします。(Default)<br>
 1 … 直前のノートを、<a href="mml_release.html">R@, Rvコマンド</a>の値で鳴らします。<br>
 2 … 直前のノートのエンベロープ(音色・音量)を継続し、リリースパターンが定義されている場合それに従います。<br></td></tr>
<tr><td>#QMax <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_gate.html">Q コマンド</a>の分母を設定します(Default: <var>n</var> = 8)<br>
実際の発音音長は、音長 × <a href="mml_gate.html">Q コマンド</a>の値 ÷ <var>n</var> となります。</td></tr>
Qコマンド使用時、実際の発音音長は、音長 × <a href="mml_gate.html">Q コマンド</a>の値 ÷ <var>n</var> となります。</td></tr>
<tr><td>#RepeatMode <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_repeatA.html">リピート(A)コマンド</a>のコンパイル方法を設定します。(Default: <var>n</var> = 0)<br>
nは0~2の範囲で指定します。数値の詳細は、<a href="mml_repeatA.html">リピート(A)コマンド</a>を参照。</td></tr>
 0 … MMLコンパイラが自動的に、リピートコマンドのコンパイル方法を選択します。(Default)<br>
 1 … ユーザーにて明示的に、リピートコマンドのコンパイル方法を選択します。<br>
 2 … ユーザーにて明示的に、リピートコマンドのコンパイル方法を選択します。<br>
数値の詳細は、<a href="mml_repeatA.html">リピート(A)コマンド</a>を参照。</td></tr>
<tr><td>#TieMode <var>n</var> </td><td>シーケンス記述ブロック内における<b> ^ </b>コマンドのコンパイル方法を設定します。(Default: <var>n</var> = 0)<br>
 0 … <b> ^ </b>コマンドは、すべての場合において<a href="mml_tie.html">「タイ」</a>としてコンパイルします。(Default)<br>
 1 … 音符の直後に^コマンドが記述された場合は、直前の音符に対する音長を加算する演算子として処理します(※加算結果が255[tick]を超えるとエラーになります)。</td></tr>
<tr><td>#ReleaseVolume <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_release.html">Rvコマンド</a>の初期値を設定します。(Default: <var>n</var> = 2)<br>
nは0~15の範囲で指定します。</td></tr>
<tr><td>#offsetE@ <var>n</var> </td><td>シーケンス記述ブロック内にて、<a href="mml_envelop.html">E@コマンド</a>の引数を指定数値だけずらします。(Default: <var>n</var> = 0)</td></tr>
Expand Down
28 changes: 25 additions & 3 deletions src/help/mml_echo.html
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,34 @@ <h4>length</h4>
<!-- ──────────────── -->
<div class='block'>
<h3>注意(Notes)</h3>

<p>
疑似エコーは、コンパイル時に展開する、MMLコンパイラ側実装のコマンドとなります。<br>
ドライバ側実装のコマンドと組み合わせた際に、意図通りの動作にならない可能性がございます。<br>
</p>

<p>
リピートと相対音量、相対移調を組み合わせた場合、正常に疑似エコーのシーケンスを作成できません<br>
疑似エコーが有効になっている時は、それらのコマンドを組み合わせて使わないで下さい<br>
例えば、"v12 g4 EC1,3 [2 cr dr er ]"といったMMLは、"v12 g4 [2 v12 c <strong>v3 g</strong> v12 d v3 c v12 e v3 d ]"と同等のデータに変換される旨、留意してください<br>
また、リピートコマンド内において、リピート毎に以下のような変化がある場合、正常に疑似エコーのシーケンスを作成できない旨、留意してください<br>
</p>
<ol>
<li><a href="mml_relative_volume.html">相対音量コマンド</a>により、音量変化がある場合</li>
<li><a href="mml_transpose.html">相対移調コマンド</a>により、移調度の変化がある場合</li>
<li><a href="mml_relative_octave.html">相対オクターブ</a>により、オクターブの変化がある場合</li>
</ol>

<p>
第3パラメータ<var>length</var>の指定時、休符には疑似エコーを生成しませんが、
<a href="mml_tie.html">タイ^</a>についても疑似エコーは生成しません(タイはスラー及び休符コマンドにコンパイルするため)。<br>
例えば、#TieModeが0の条件下において、"EC- EC1,3,%3 v12 l16 c^^^ d^^^ e^^^"といったMMLは、タイの前の音符に対して疑似エコーを生成してしまうため、<br>
"v12 l16 c^^^ d16-%3 <strong>v3 c%3 ^^^</strong> v12 e16-%3 <strong>v3 d%3 ^^^</strong>"と同等のデータに変換される旨、留意してください。<br>
音長を加算したい場合は、+演算子により音長を加算してください。<br>
なお、#TieModeを1にすることで、^はタイではなく、音長加算の演算子として動作します。<br>
この場合、上述のMMLは"v12 l16 c4 d4-%3 v3 c%3 v12 e4-%3 v3 d%3"と同等のデータに変換されます。<br>
</p>

<p>
また、サブルーチン内で使う場合は、音量を指定し直して下さい(MMLコンパイラに現在の音量を通知するため)。<br>
サブルーチン内で使う場合は、音量を指定し直して下さい(MMLコンパイラに現在の音量を通知するため)。<br>
</p>
</div>

Expand Down
4 changes: 3 additions & 1 deletion src/help/mml_note.html
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ <h4>Length</h4>
数値の頭に<code>%</code>を記述した場合は、<var>length</var>[Tick]の長さとなります。<br>
</p>
<p>
また、演算子 <code>+</code> 及び <code>-</code> を用いて音長の加減算が可能です。
また、
演算子 <code>+</code> 及び <code>^</code>(※#TieModeが1の場合のみ)により音長の加算、<br>
演算子 <code>-</code> 及び <code>~</code> により音長の減算が可能です。
</p>
<p>
<var>length</var>を省略時は、<a href="mml_length.html">lコマンド</a>で指定した数値が適用されます。<br>
Expand Down
34 changes: 23 additions & 11 deletions src/help/mml_patch_seq.html
Original file line number Diff line number Diff line change
Expand Up @@ -61,25 +61,37 @@ <h4>number</h4>
<!-- ──────────────── -->
<div class='block'>
<h3>注意(Notes)</h3>

<p>
パッチ機能は、MMLコンパイラの疑似命令となります。<br>
MMLコンパイラ側で展開するため、コンパイル後のシーケンスサイズが大きくなる可能性があります。
パッチ機能は、コンパイル時に展開する、MMLコンパイラ側実装のコマンドとなります。<br>
ドライバ側実装のコマンドと組み合わせた際に、意図通りの動作にならない可能性がございます。<br>
また、MMLコンパイラ側で展開するため、コンパイル後のシーケンスサイズが大きくなる可能性があります。<br>
</p>

<p>
リピートや無限ループする場合は、オクターブを1回目のオクターブに戻してください<br>
リピートコマンドや、無限ループコマンドによってオクターブが変わってリピート、ループする場合、
2回目以降のリピートも、1回目のリピート、ループ時のオクターブの音域としてパッチが処理されます<br>
リピートコマンド内において、リピート毎にオクターブが変化する場合、正常にパッチを展開できません<br>
例えば、"o4 [2 cegb &gt; ]"といったMMLがあった場合、リピート内はオクターブ4としてパッチを展開するため、<br>
2回目のリピート時は実際のオクターブは5となりますが、パッチのオクターブは4のままとなります<br>
</p>

<p>
<a href="mml_sub.html">サブルーチン</a>を使用する場合、<a href="mml_sub.html">サブルーチン</a>側でもパッチを設定してください。<br>
<a href="mml_sub.html">サブルーチン</a>先では、<a href="mml_sub.html">サブルーチン</a>元のパッチは適用されません。<br>
又、<a href="mml_sub.html">サブルーチン</a>にてパッチ機能を使う場合は、<a href="mml_patch.html">パッチ定義</a><a href="mml_sub.html">サブルーチン</a>呼出しを記述することはできません。<br>
(サブルーチンのネスティングはできません)<br>
また、"o4 [2 ceg &gt; c : &lt; gec ]"といったMMLでは、リピート後のパッチのオクターブは4のままとなります。<br>
この場合、リピート後にオクターブコマンドを記述しなおして、MMLコンパイラにオクターブを通知してください。<br>
</p>

<p>
<a href="mml_sub.html">サブルーチン</a>でパッチ機能を使用する場合、
<a href="mml_sub.html">サブルーチン</a>コマンドが定義された<a href="mml_patch.html">パッチ定義</a>を使う事はできません。<br>
<a href="mml_sub.html">サブルーチン</a>を使用する場合、
<a href="mml_sub.html">サブルーチン</a>先では<a href="mml_sub.html">サブルーチン</a>元のパッチは適用されないため、
<a href="mml_sub.html">サブルーチン</a>先でもパッチを設定してください。<br>
また、<a href="mml_sub.html">サブルーチン</a>先でオクターブが変化する場合は、
<a href="mml_sub.html">サブルーチン</a>呼び出し後にオクターブコマンドを記述しなおして、MMLコンパイラにオクターブを通知してください。<br>
</p>

<P>
又、<a href="mml_sub.html">サブルーチン</a>にてパッチ機能を使う場合は、<a href="mml_patch.html">パッチ定義</a><a href="mml_sub.html">サブルーチン</a>呼出しを記述することはできません。<br>
(サブルーチンのネスティングはできません)<br>
</p>

</div>

<!-- ──────────────── -->
Expand Down
4 changes: 3 additions & 1 deletion src/help/mml_rest.html
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,9 @@ <h4>Length</h4>
数値の頭に<code>%</code>を記述した場合は、<var>length</var>[Tick]の長さとなります。<br>
</p>
<p>
また、演算子 <code>+</code> 及び <code>-</code> を用いて長さの加減算が可能です。
また、
演算子 <code>+</code> 及び <code>^</code>(※#TieModeが1の場合のみ)により音長の加算、<br>
演算子 <code>-</code> 及び <code>~</code> により音長の減算が可能です。
</p>
<p>
<var>length</var>を省略時は、<a href="mml_length.html">lコマンド</a>で指定した数値が適用されます。<br>
Expand Down
Binary file modified src/help/nsdl.chm
Binary file not shown.
10 changes: 10 additions & 0 deletions src/help/revision.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,16 @@
</p>
<table>
<tr><th>ヴァージョン</th><th>内容</th><th>改定日</th></tr>
<tr><td>1.22</td>
<td>●MMLコンパイラ<br>
・#TieModeコマンドを追加。^記述時の挙動を設定できます。<br>
・符号なしなのに、unsignedを付け忘れていて、一部のC++コンパイラでコンパイルできなかったバグをFix。<br>
・ECコマンドにて第2パラメータが-1、第3パラメータの指定が無い、且つ、リピート終了の前と後の両方が休符の場合、リピート終了直前の疑似エコーにスラー/タイのフラグが立ってしまうバグをFix。<br>
・疑似エコー使用時に、若干最適化してコンパイルするようにした。<br>
●取扱説明書<br>
・疑似エコーと、パッチ機能に関する説明文・記述を見直した。<br>
・MML全体の構文に関する説明文・記述を若干、見直した。<br>
<td>2014年 8月20日</td></tr>
<tr><td>1.21</td>
<td>●音源ドライバー本体<br>
・Version 1.20において、"nsd.bin"がTNS-HFC3, TNS-HFC4で動作しなくなっていたバグをFix。<br>
Expand Down
14 changes: 9 additions & 5 deletions src/nsc/MMLfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -844,7 +845,7 @@ int MMLfile::GetInt(void)
// ●処理
// 音長を読み込む(付点付き)
//==============================================================
int MMLfile::readLength(unsigned int DefaultLength){
int MMLfile::readLength(int DefaultLength){

char cData; //読み込み用
int iLength; //音長 [tick]
Expand Down Expand Up @@ -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]
Expand All @@ -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 {
Expand Down
5 changes: 3 additions & 2 deletions src/nsc/MMLfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 コマンドの挙動
Expand Down Expand Up @@ -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を取得

Expand Down
9 changes: 9 additions & 0 deletions src/nsc/MusicFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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 },
Expand Down Expand Up @@ -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;
Expand Down
Loading

0 comments on commit 51d76e4

Please sign in to comment.