Skip to content

Commit 51d76e4

Browse files
committed
version 1.22
1 parent 60b97cc commit 51d76e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+178
-57
lines changed

bin/nsc.exe

0 Bytes
Binary file not shown.

bin/nsd.bin

0 Bytes
Binary file not shown.

bin/nsd_all.bin

0 Bytes
Binary file not shown.

bin/nsd_all2.bin

0 Bytes
Binary file not shown.

bin/nsd_fds.bin

0 Bytes
Binary file not shown.

bin/nsd_hfe4.bin

0 Bytes
Binary file not shown.

bin/nsd_hfx4.bin

0 Bytes
Binary file not shown.

bin/nsd_mmc5.bin

0 Bytes
Binary file not shown.

bin/nsd_n163.bin

0 Bytes
Binary file not shown.

bin/nsd_oall.bin

0 Bytes
Binary file not shown.

bin/nsd_opll.bin

0 Bytes
Binary file not shown.

bin/nsd_s5b.bin

0 Bytes
Binary file not shown.

bin/nsd_vrc6.bin

0 Bytes
Binary file not shown.

bin/nsd_vrc7.bin

0 Bytes
Binary file not shown.

doc/nsdl.chm

2.43 KB
Binary file not shown.

doc/readme.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
+-----------------------------------------------------------------------------
22
| �^�C�g�� | NES Sound Driver Library
3-
|�t�@�C����| NSDL121.ZIP
3+
|�t�@�C����| NSDL122.ZIP
44
| �J�e�S�� | Sound Driver for NES
55
| ����@�� | NES (Nintendo Entertainment System)
66
|�O��\�t�g| 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.
2828
�Emixi http://mixi.jp/show_profile.pl?id=16558
2929
========================================================================
3030

31-
����̃t�@�C���́yNSDL121.ZIP�z�ł��B
31+
����̃t�@�C���́yNSDL122.ZIP�z�ł��B

lib/NSD.lib

0 Bytes
Binary file not shown.

lib/NSD_ALL.lib

0 Bytes
Binary file not shown.

lib/NSD_ALL2.lib

0 Bytes
Binary file not shown.

lib/NSD_FDS.lib

0 Bytes
Binary file not shown.

lib/NSD_HFE4.lib

0 Bytes
Binary file not shown.

lib/NSD_HFX4.lib

0 Bytes
Binary file not shown.

lib/NSD_MMC5.lib

0 Bytes
Binary file not shown.

lib/NSD_N163.lib

0 Bytes
Binary file not shown.

lib/NSD_OALL.lib

0 Bytes
Binary file not shown.

lib/NSD_OPLL.lib

0 Bytes
Binary file not shown.

lib/NSD_VRC6.lib

0 Bytes
Binary file not shown.

lib/NSD_VRC7.lib

0 Bytes
Binary file not shown.

lib/NSD_s5b.lib

0 Bytes
Binary file not shown.

src/help/mml.html

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,26 +43,35 @@
4343
<caption>コマンド一覧</caption>
4444
<tr><th>Command</th><th>Contens</th></tr>
4545
<tr><td>#include "<var>filename</var>" </td><td>外部ファイルを呼び込みます。</td></tr>
46-
<tr><td>#bgm <var>n</var> </td><td>BGMの曲数を設定します。(Default: <var>n</var> = 1)</td></tr>
47-
<tr><td>#se <var>n</var> </td><td>SE の曲数を設定します。(Default: <var>n</var> = 0)</td></tr>
48-
<tr><td>#priority <var>n</var> </td><td>以降のSE の優先度を設定します。(Default: <var>n</var> = 0)<br>
46+
<tr><td>#bgm <var>n</var> </td><td>BGM(曲)の数を設定します。(Default: <var>n</var> = 1)</td></tr>
47+
<tr><td>#se <var>n</var> </td><td>SE(効果音)の数を設定します。(Default: <var>n</var> = 0)</td></tr>
48+
<tr><td>#priority <var>n</var> </td><td>以降のSE(効果音)の優先度を設定します。(Default: <var>n</var> = 0)<br>
49+
SE(効果音)を再生開始した時、既に優先度が高いSE(効果音)が再生中であった場合は、再生しません。<br>
4950
 (0 : 優先度高 ~ 3:優先度低)</td></tr>
5051
<tr><td>#timebase <var>n</var> </td><td>以降のシーケンス記述ブロック(BGM, SE, Sub)の4分音符の分解能を設定します。(Default: <var>n</var> = 24)<br>
51-
何度でも指定可能であり、各シーケンス記述ブロック毎に設定することもできます。</td></tr>
52+
何度でも指定可能であり、各シーケンス記述ブロック毎に設定することもできます。<br>
53+
音符、休符において、この数値<var>n</var>の4倍の値を割り切ることが可能なm分音符を使用することができます。<br>
54+
それ以外のm分音符を使用した場合、割り切れない旨のWarning(警告)となり、小数点を切り捨ててコンパイルします。</td></tr>
5255
<tr><td>#octaveReverse </td><td>本コマンドを記述することで、シーケンス記述ブロック内における相対オクターブコマンド
5356
`<a href="mml_relative_octave.html">&lt;</a>'と`<a href="mml_relative_octave.html">&gt;</a>'を入れ替えます。</td></tr>
54-
<tr><td>#rest <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_rest.html">r コマンド</a>による休符のモードを設定します(Default: <var>n</var> = 2)<br>
57+
<tr><td>#rest <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_rest.html">r コマンド</a>による休符のコンパイル方法を設定します(Default: <var>n</var> = 2)<br>
5558
 0 … 強制的に、音量を0にします。⊿PCMの場合はKeyOffします。<br>
5659
 1 … 直前のノートを、<a href="mml_release.html">R@, Rvコマンド</a>の値で鳴らします。<br>
5760
 2 … 直前のノートのエンベロープ(音色・音量)を継続し、リリースパターンが定義されている場合それに従います。(Default)<br></td></tr>
58-
<tr><td>#wait <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_rest.html">w コマンド</a>による休符のモードを設定します(Default: <var>n</var> = 0)<br>
61+
<tr><td>#wait <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_rest.html">w コマンド</a>による休符のコンパイル方法を設定します(Default: <var>n</var> = 0)<br>
5962
 0 … 強制的に、音量を0にします。⊿PCMの場合はKeyOffします。(Default)<br>
6063
 1 … 直前のノートを、<a href="mml_release.html">R@, Rvコマンド</a>の値で鳴らします。<br>
6164
 2 … 直前のノートのエンベロープ(音色・音量)を継続し、リリースパターンが定義されている場合それに従います。<br></td></tr>
6265
<tr><td>#QMax <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_gate.html">Q コマンド</a>の分母を設定します(Default: <var>n</var> = 8)<br>
63-
実際の発音音長は、音長 × <a href="mml_gate.html">Q コマンド</a>の値 ÷ <var>n</var> となります。</td></tr>
66+
Qコマンド使用時、実際の発音音長は、音長 × <a href="mml_gate.html">Q コマンド</a>の値 ÷ <var>n</var> となります。</td></tr>
6467
<tr><td>#RepeatMode <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_repeatA.html">リピート(A)コマンド</a>のコンパイル方法を設定します。(Default: <var>n</var> = 0)<br>
65-
nは0~2の範囲で指定します。数値の詳細は、<a href="mml_repeatA.html">リピート(A)コマンド</a>を参照。</td></tr>
68+
 0 … MMLコンパイラが自動的に、リピートコマンドのコンパイル方法を選択します。(Default)<br>
69+
 1 … ユーザーにて明示的に、リピートコマンドのコンパイル方法を選択します。<br>
70+
 2 … ユーザーにて明示的に、リピートコマンドのコンパイル方法を選択します。<br>
71+
数値の詳細は、<a href="mml_repeatA.html">リピート(A)コマンド</a>を参照。</td></tr>
72+
<tr><td>#TieMode <var>n</var> </td><td>シーケンス記述ブロック内における<b> ^ </b>コマンドのコンパイル方法を設定します。(Default: <var>n</var> = 0)<br>
73+
 0 … <b> ^ </b>コマンドは、すべての場合において<a href="mml_tie.html">「タイ」</a>としてコンパイルします。(Default)<br>
74+
 1 … 音符の直後に^コマンドが記述された場合は、直前の音符に対する音長を加算する演算子として処理します(※加算結果が255[tick]を超えるとエラーになります)。</td></tr>
6675
<tr><td>#ReleaseVolume <var>n</var> </td><td>シーケンス記述ブロック内における<a href="mml_release.html">Rvコマンド</a>の初期値を設定します。(Default: <var>n</var> = 2)<br>
6776
nは0~15の範囲で指定します。</td></tr>
6877
<tr><td>#offsetE@ <var>n</var> </td><td>シーケンス記述ブロック内にて、<a href="mml_envelop.html">E@コマンド</a>の引数を指定数値だけずらします。(Default: <var>n</var> = 0)</td></tr>

src/help/mml_echo.html

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,34 @@ <h4>length</h4>
8282
<!-- ──────────────── -->
8383
<div class='block'>
8484
<h3>注意(Notes)</h3>
85+
86+
<p>
87+
疑似エコーは、コンパイル時に展開する、MMLコンパイラ側実装のコマンドとなります。<br>
88+
ドライバ側実装のコマンドと組み合わせた際に、意図通りの動作にならない可能性がございます。<br>
89+
</p>
90+
8591
<p>
86-
リピートと相対音量、相対移調を組み合わせた場合、正常に疑似エコーのシーケンスを作成できません<br>
87-
疑似エコーが有効になっている時は、それらのコマンドを組み合わせて使わないで下さい<br>
92+
例えば、"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>
93+
また、リピートコマンド内において、リピート毎に以下のような変化がある場合、正常に疑似エコーのシーケンスを作成できない旨、留意してください<br>
8894
</p>
95+
<ol>
96+
<li><a href="mml_relative_volume.html">相対音量コマンド</a>により、音量変化がある場合</li>
97+
<li><a href="mml_transpose.html">相対移調コマンド</a>により、移調度の変化がある場合</li>
98+
<li><a href="mml_relative_octave.html">相対オクターブ</a>により、オクターブの変化がある場合</li>
99+
</ol>
100+
101+
<p>
102+
第3パラメータ<var>length</var>の指定時、休符には疑似エコーを生成しませんが、
103+
<a href="mml_tie.html">タイ^</a>についても疑似エコーは生成しません(タイはスラー及び休符コマンドにコンパイルするため)。<br>
104+
例えば、#TieModeが0の条件下において、"EC- EC1,3,%3 v12 l16 c^^^ d^^^ e^^^"といったMMLは、タイの前の音符に対して疑似エコーを生成してしまうため、<br>
105+
"v12 l16 c^^^ d16-%3 <strong>v3 c%3 ^^^</strong> v12 e16-%3 <strong>v3 d%3 ^^^</strong>"と同等のデータに変換される旨、留意してください。<br>
106+
音長を加算したい場合は、+演算子により音長を加算してください。<br>
107+
なお、#TieModeを1にすることで、^はタイではなく、音長加算の演算子として動作します。<br>
108+
この場合、上述のMMLは"v12 l16 c4 d4-%3 v3 c%3 v12 e4-%3 v3 d%3"と同等のデータに変換されます。<br>
109+
</p>
110+
89111
<p>
90-
また、サブルーチン内で使う場合は、音量を指定し直して下さい(MMLコンパイラに現在の音量を通知するため)。<br>
112+
サブルーチン内で使う場合は、音量を指定し直して下さい(MMLコンパイラに現在の音量を通知するため)。<br>
91113
</p>
92114
</div>
93115

src/help/mml_note.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ <h4>Length</h4>
7575
数値の頭に<code>%</code>を記述した場合は、<var>length</var>[Tick]の長さとなります。<br>
7676
</p>
7777
<p>
78-
また、演算子 <code>+</code> 及び <code>-</code> を用いて音長の加減算が可能です。
78+
また、
79+
演算子 <code>+</code> 及び <code>^</code>(※#TieModeが1の場合のみ)により音長の加算、<br>
80+
演算子 <code>-</code> 及び <code>~</code> により音長の減算が可能です。
7981
</p>
8082
<p>
8183
<var>length</var>を省略時は、<a href="mml_length.html">lコマンド</a>で指定した数値が適用されます。<br>

src/help/mml_patch_seq.html

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,25 +61,37 @@ <h4>number</h4>
6161
<!-- ──────────────── -->
6262
<div class='block'>
6363
<h3>注意(Notes)</h3>
64+
6465
<p>
65-
パッチ機能は、MMLコンパイラの疑似命令となります。<br>
66-
MMLコンパイラ側で展開するため、コンパイル後のシーケンスサイズが大きくなる可能性があります。
66+
パッチ機能は、コンパイル時に展開する、MMLコンパイラ側実装のコマンドとなります。<br>
67+
ドライバ側実装のコマンドと組み合わせた際に、意図通りの動作にならない可能性がございます。<br>
68+
また、MMLコンパイラ側で展開するため、コンパイル後のシーケンスサイズが大きくなる可能性があります。<br>
6769
</p>
70+
6871
<p>
69-
リピートや無限ループする場合は、オクターブを1回目のオクターブに戻してください<br>
70-
リピートコマンドや、無限ループコマンドによってオクターブが変わってリピート、ループする場合、
71-
2回目以降のリピートも、1回目のリピート、ループ時のオクターブの音域としてパッチが処理されます<br>
72+
リピートコマンド内において、リピート毎にオクターブが変化する場合、正常にパッチを展開できません<br>
73+
例えば、"o4 [2 cegb &gt; ]"といったMMLがあった場合、リピート内はオクターブ4としてパッチを展開するため、<br>
74+
2回目のリピート時は実際のオクターブは5となりますが、パッチのオクターブは4のままとなります<br>
7275
</p>
76+
7377
<p>
74-
<a href="mml_sub.html">サブルーチン</a>を使用する場合、<a href="mml_sub.html">サブルーチン</a>側でもパッチを設定してください。<br>
75-
<a href="mml_sub.html">サブルーチン</a>先では、<a href="mml_sub.html">サブルーチン</a>元のパッチは適用されません。<br>
76-
又、<a href="mml_sub.html">サブルーチン</a>にてパッチ機能を使う場合は、<a href="mml_patch.html">パッチ定義</a><a href="mml_sub.html">サブルーチン</a>呼出しを記述することはできません。<br>
77-
(サブルーチンのネスティングはできません)<br>
78+
また、"o4 [2 ceg &gt; c : &lt; gec ]"といったMMLでは、リピート後のパッチのオクターブは4のままとなります。<br>
79+
この場合、リピート後にオクターブコマンドを記述しなおして、MMLコンパイラにオクターブを通知してください。<br>
7880
</p>
81+
7982
<p>
80-
<a href="mml_sub.html">サブルーチン</a>でパッチ機能を使用する場合、
81-
<a href="mml_sub.html">サブルーチン</a>コマンドが定義された<a href="mml_patch.html">パッチ定義</a>を使う事はできません。<br>
83+
<a href="mml_sub.html">サブルーチン</a>を使用する場合、
84+
<a href="mml_sub.html">サブルーチン</a>先では<a href="mml_sub.html">サブルーチン</a>元のパッチは適用されないため、
85+
<a href="mml_sub.html">サブルーチン</a>先でもパッチを設定してください。<br>
86+
また、<a href="mml_sub.html">サブルーチン</a>先でオクターブが変化する場合は、
87+
<a href="mml_sub.html">サブルーチン</a>呼び出し後にオクターブコマンドを記述しなおして、MMLコンパイラにオクターブを通知してください。<br>
8288
</p>
89+
90+
<P>
91+
又、<a href="mml_sub.html">サブルーチン</a>にてパッチ機能を使う場合は、<a href="mml_patch.html">パッチ定義</a><a href="mml_sub.html">サブルーチン</a>呼出しを記述することはできません。<br>
92+
(サブルーチンのネスティングはできません)<br>
93+
</p>
94+
8395
</div>
8496

8597
<!-- ──────────────── -->

src/help/mml_rest.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ <h4>Length</h4>
5959
数値の頭に<code>%</code>を記述した場合は、<var>length</var>[Tick]の長さとなります。<br>
6060
</p>
6161
<p>
62-
また、演算子 <code>+</code> 及び <code>-</code> を用いて長さの加減算が可能です。
62+
また、
63+
演算子 <code>+</code> 及び <code>^</code>(※#TieModeが1の場合のみ)により音長の加算、<br>
64+
演算子 <code>-</code> 及び <code>~</code> により音長の減算が可能です。
6365
</p>
6466
<p>
6567
<var>length</var>を省略時は、<a href="mml_length.html">lコマンド</a>で指定した数値が適用されます。<br>

src/help/nsdl.chm

2.43 KB
Binary file not shown.

src/help/revision.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@
2525
</p>
2626
<table>
2727
<tr><th>ヴァージョン</th><th>内容</th><th>改定日</th></tr>
28+
<tr><td>1.22</td>
29+
<td>●MMLコンパイラ<br>
30+
・#TieModeコマンドを追加。^記述時の挙動を設定できます。<br>
31+
・符号なしなのに、unsignedを付け忘れていて、一部のC++コンパイラでコンパイルできなかったバグをFix。<br>
32+
・ECコマンドにて第2パラメータが-1、第3パラメータの指定が無い、且つ、リピート終了の前と後の両方が休符の場合、リピート終了直前の疑似エコーにスラー/タイのフラグが立ってしまうバグをFix。<br>
33+
・疑似エコー使用時に、若干最適化してコンパイルするようにした。<br>
34+
●取扱説明書<br>
35+
・疑似エコーと、パッチ機能に関する説明文・記述を見直した。<br>
36+
・MML全体の構文に関する説明文・記述を若干、見直した。<br>
37+
<td>2014年 8月20日</td></tr>
2838
<tr><td>1.21</td>
2939
<td>●音源ドライバー本体<br>
3040
・Version 1.20において、"nsd.bin"がTNS-HFC3, TNS-HFC4で動作しなくなっていたバグをFix。<br>

src/nsc/MMLfile.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ MMLfile::MMLfile(const char* strFileName):
2121
offset_Em(0),
2222
iReleaseVolume(2),
2323
iRepeatMode(0),
24+
iTieMode(0),
2425
timebase(24),
2526
octave_reverse(false),
2627
rest(2),
@@ -844,7 +845,7 @@ int MMLfile::GetInt(void)
844845
// ●処理
845846
// 音長を読み込む(付点付き)
846847
//==============================================================
847-
int MMLfile::readLength(unsigned int DefaultLength){
848+
int MMLfile::readLength(int DefaultLength){
848849

849850
char cData; //読み込み用
850851
int iLength; //音長 [tick]
@@ -922,7 +923,7 @@ int MMLfile::readLength(unsigned int DefaultLength){
922923
// int 読み込んだ数値
923924
// 音長がかかれてない場合は、 -1 を返す。
924925
//==============================================================
925-
int MMLfile::GetLength(unsigned int DefaultLength) //
926+
int MMLfile::GetLength(int DefaultLength) //
926927
{
927928
char cData; //読み込み用
928929
int iLength; //音長 [tick]
@@ -934,21 +935,24 @@ int MMLfile::GetLength(unsigned int DefaultLength) //
934935

935936
//音長の加減算
936937
cData = cRead();
937-
while((cData == '+') || (cData == '-') || (cData == '~')){
938+
while((cData == '-') || (cData == '~') || (cData == '+') || ((iTieMode == 1) && (cData == '^'))){
938939
if(iLength == -1){
939940
iLength = DefaultLength;
940941
}
941942

942943
//後で計算する符号のチェック
943-
if(cData == '+'){
944+
if((cData == '+') || (cData == '^')){
944945
add = true;
945946
} else {
946947
add = false;
947948
}
948949
iCalc = readLength(DefaultLength);
950+
949951
if(iCalc == -1){
950-
Err(L"音長の加減算値に数値以外が指定されています。");
952+
// Warning(L"音長の加減算値に数値以外が指定されています。");
953+
iCalc = DefaultLength;
951954
}
955+
952956
if(add == true){
953957
iLength += iCalc;
954958
} else {

src/nsc/MMLfile.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class MMLfile // :
4242
int offset_Em; //
4343
int iReleaseVolume; //
4444
int iRepeatMode; //
45+
int iTieMode; //
4546
int timebase; //
4647
bool octave_reverse; //Octave Reverse
4748
int rest; // r コマンドの挙動
@@ -78,8 +79,8 @@ class MMLfile // :
7879
string GetString(void); //""付 文字列 読み込み
7980
int GetNum(void); //()付 数値 読み込み
8081
int GetInt(void); //数値読み込み
81-
int GetLength(unsigned int DefaultLength); //音長読み込み(演算付き)
82-
int readLength(unsigned int DefaultLength); //音長読み込み
82+
int GetLength(int DefaultLength); //音長読み込み(演算付き)
83+
int readLength(int DefaultLength); //音長読み込み
8384

8485
int GetCommandID(const Command_Info _command[], unsigned int _size); //コマンドIDを取得
8586

src/nsc/MusicFile.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ enum Command_ID_MusicFile {
5050
id_se_num,
5151
id_releaseVolume,
5252
id_repeatMode,
53+
id_TieMode,
5354
id_offset_Ei,
5455
id_offset_Ev,
5556
id_offset_En,
@@ -128,6 +129,8 @@ const static Command_Info Command[] = {
128129
{ "#ReleaseVolume", id_releaseVolume},
129130
{ "#repeatMode", id_repeatMode },
130131
{ "#RepeatMode", id_repeatMode },
132+
{ "#TieMode", id_TieMode },
133+
{ "#tieMode", id_TieMode },
131134
{ "#OffsetE@", id_offset_Ei },
132135
{ "#offsetE@", id_offset_Ei },
133136
{ "#OffsetEv", id_offset_Ev },
@@ -283,6 +286,12 @@ const static Command_Info Command[] = {
283286
MML->Err(L"#RepeatModeコマンドは、0~2の範囲で指定してください。");
284287
}
285288
break;
289+
case(id_TieMode):
290+
MML->iTieMode = MML->GetInt();
291+
if((MML->iTieMode<0) || (MML->iTieMode>1)){
292+
MML->Err(L"#TieModeコマンドは、0~1の範囲で指定してください。");
293+
}
294+
break;
286295
case(id_offset_Ei):
287296
MML->offset_Ei = MML->GetInt();
288297
break;

0 commit comments

Comments
 (0)