Skip to content

Commit e201170

Browse files
author
kumatan
committed
TAG212 2025/12/23
Compiler/Driver メモコマンド追加。IDE等で使用することで、表示するメモを指定できます。
1 parent 2cb7a37 commit e201170

7 files changed

Lines changed: 83 additions & 2 deletions

File tree

CHANGE.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
�X�V����
2+
TAG212 2025/12/23
3+
Compiler/Driver
4+
�����R�}���h�lj��BIDE���Ŏg�p���邱�ƂŁA�\�����郁�����w��ł��܂��B
25
TAG211 2025/12/22
36
Compiler/Driver
47
PC�R�}���h�lj��BIDE���Ŏg�p���邱�ƂŁA����̃p�[�g�̃��[�^�[�̐F���w��ł��܂��B

MML.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,23 @@ mub
959959
0xFF 0xFD 0x02 0x00 n1
960960

961961

962+
-�p�[�g����
963+
�R�}���h
964+
'
965+
����
966+
'...'
967+
�l�͈̔�
968+
������(���ɕ������`�F�b�N�͂��Ă��Ȃ���100�������x�����x����)
969+
�f�t�H���g�l
970+
�Ȃ�
971+
�g�p�”\�ȃp�[�g
972+
ALL
973+
���e
974+
IDE�̃p�[�g�������w�肷��B
975+
mub�t�@�C���ł̃t�H�[�}�b�g
976+
0xFF 0xFD 0x0n(������̃o�C�g��+1) 0x01 n...(������̃f�[�^(SJIS))
977+
978+
962979
-�p�[�g�ʃ��v���C�X
963980
�R�}���h
964981
[|

mucomDotNETCompiler/lang/mucomDotNETmessage.ja-JP.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ E0534='EX'効果音モードスロット指定コマンドの解析に失敗し
178178
E0535='EX'効果音モードスロット指定コマンドの解析に失敗しました。数値が範囲を超えています。(値:{0})
179179
E0536='EX'効果音モードスロット指定コマンドの解析に失敗しました。スロット番号は1~4になります。(値:{0})
180180
E0537='EXO?'効果音モードスイッチコマンドの解析に失敗しました。
181+
E0538='PC?'パートカラーコマンドの解析に失敗しました。
182+
E0539='''メモコマンドの解析に失敗しました。
181183

182184
;Program.cs 0600
183185
E0600=引数(.mucファイル)欲しいよぉ

mucomDotNETCompiler/lang/mucomDotNETmessage.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ E0534='EX'Illegal value on Ch3SpecialMode SLOT command.Unable to read the values
184184
E0535='EX'Illegal value on Ch3SpecialMode SLOT command.Value is out of range.(value:{0})
185185
E0536='EX'Illegal value on Ch3SpecialMode SLOT command.Specify the slot number from 1 to 4.(value:{0})
186186
E0537='EXO?'Illegal value on Ch3SpecialMode Switch command.
187+
E0538='PC?'Illegal value on Part Color command.
188+
E0539='''Illegal value on Memo command.
187189

188190
;Program.cs 0600
189191
E0600=I want arguments(.muc File) please?

mucomDotNETCompiler/msub.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public class Msub
6666
,0x23 //,'#' FLAG SET
6767
,0x5f //,'_' 局地的ポルタメント
6868
//,(byte)'~' // 逆TIE
69+
,(byte)'\'' // メモ
6970
,0
7071
};
7172

mucomDotNETCompiler/muc88.cs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public Muc88(work work, MUCInfo mucInfo,iEncoding enc)
7575
, SETFLG
7676
, SETPinPOR
7777
//, SETRTIE
78+
, SETMEMO
7879
};
7980
}
8081

@@ -1716,7 +1717,7 @@ private EnmFCOMPNextRtn SETCOLOR()
17161717
mucInfo.srcCPtr++;
17171718

17181719
int ptr = mucInfo.srcCPtr;
1719-
byte n = (byte)msub.ERRT(mucInfo.lin, ref ptr, msg.get("E0531"));
1720+
byte n = (byte)msub.ERRT(mucInfo.lin, ref ptr, msg.get("E0538"));
17201721
mucInfo.srcCPtr = ptr;
17211722
work.color = n;
17221723

@@ -1728,6 +1729,47 @@ private EnmFCOMPNextRtn SETCOLOR()
17281729
return EnmFCOMPNextRtn.fcomp1;
17291730
}
17301731

1732+
private EnmFCOMPNextRtn SETMEMO()
1733+
{
1734+
mucInfo.srcCPtr++;
1735+
1736+
int ptr = mucInfo.srcCPtr;
1737+
List<byte> buf = new List<byte>();
1738+
char ch;
1739+
do
1740+
{
1741+
ch = mucInfo.lin.Item2.Length > ptr ? mucInfo.lin.Item2[ptr++] : (char)0;
1742+
byte[] b = enc.GetSjisArrayFromString(ch.ToString());
1743+
if (ch == '\'' || ch == 0) break;
1744+
buf.AddRange(b);
1745+
} while (true);
1746+
1747+
if (buf.Count < 1) {
1748+
throw new MucException(
1749+
msg.get("E0539")
1750+
, mucInfo.row, mucInfo.col);
1751+
}
1752+
mucInfo.srcCPtr = ptr;
1753+
1754+
int len = buf.Count + 1;
1755+
List<byte> lbuf = new List<byte>();
1756+
int n = 0;
1757+
for(int i = 0; i < 3; i++)
1758+
{
1759+
n += 0x7f << (i * 7);
1760+
lbuf.Add((byte)(((len & (0x7f << (i * 7))) >> (i * 7))
1761+
| (len > n ? 0x80 : 0x00)));
1762+
if (len <= n) break;
1763+
}
1764+
1765+
msub.MWRITE(new MmlDatum(0xff), new MmlDatum(0xfd));// IDE向け
1766+
foreach (byte b in lbuf) msub.MWRIT2(new MmlDatum(b));//Length
1767+
msub.MWRIT2(new MmlDatum(1));// 1: Memo
1768+
foreach (byte b in buf) msub.MWRIT2(new MmlDatum(b));//メモデータ
1769+
1770+
return EnmFCOMPNextRtn.fcomp1;
1771+
}
1772+
17311773
// ** SOFT ENVELOPE **
17321774

17331775
private EnmFCOMPNextRtn SETSEV()

mucomDotNETDriver/music2.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,16 @@ public void SetFMCOMTable()
293293

294294
private void IDECMD()
295295
{
296-
byte len = (byte)work.pg.mData[work.hl++].dat;
296+
int len = 0;
297+
int cnt = 0;
298+
byte d;
299+
do
300+
{
301+
d = (byte)work.pg.mData[work.hl++].dat;
302+
len += (d & 0x7f) << (7 * cnt);
303+
cnt++;
304+
} while ((d & 0x80) != 0);
305+
297306
byte[] cmd=new byte[len];
298307
for (int i = 0; i < len; i++)
299308
{
@@ -308,6 +317,11 @@ private void IDECMD()
308317
DummyOUT(enmMMLType.PartColor, new List<object>() { (object)cmd });
309318
}
310319
break;
320+
case 0x01://Memo
321+
{
322+
DummyOUT(enmMMLType.Lyric, new List<object>() { (object)cmd });
323+
}
324+
break;
311325
}
312326
}
313327

0 commit comments

Comments
 (0)