Skip to content

Commit 1b98b58

Browse files
committed
sync fix
1 parent fb07d24 commit 1b98b58

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed

mdx_decompiler.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ void mdx_decompiler_decompile(struct mdx_decompiler *d, struct mdx_file *f) {
286286
MMLF("k%d", b[1])
287287
break;
288288
case 0xef:
289-
MMLF("S%d", b[1])
289+
MMLF("S%C", b[1] >= 8 ? 'P' + b[1] - 8 : 'A' + b[1])
290290
break;
291291
case 0xee:
292292
MMLF("W")

mmlc.l

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
MPOF return MPOF;
7171
MP return MP;
7272
MD return MD;
73+
S[A-HP-W] yylval->ival = yytext[1]; return SYNC;
7374
. ;
7475
}
7576

mmlc.y

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
}
2424

2525
%token INT NOTE DIRECTIVE_NAME IDENTIFIER MMLCHANNELS MML_NOTE MML_AT
26-
%token WHITESPACE STRING_LITERAL MP MPON MPOF MA MAON MAOF MD MH MHON MHOF
26+
%token WHITESPACE STRING_LITERAL MP MPON MPOF MA MAON MAOF MD MH MHON MHOF SYNC
2727

28-
%type<ival> INT MMLCHANNELS MML_NOTE
28+
%type<ival> INT MMLCHANNELS MML_NOTE SYNC
2929
%type<sval> DIRECTIVE_NAME IDENTIFIER STRING_LITERAL
3030
%type<cval> NOTE MML_AT
3131
%type<ival> staccato mmlnote
@@ -121,6 +121,7 @@ mmlcommand:
121121
| 'w' INT { mdx_compiler_opm_noise_freq(compiler, compiler->chan_mask, $2); }
122122
| 'y' INT ',' INT { mdx_compiler_opm_write(compiler, compiler->chan_mask, $2, $4); }
123123
| 'S' INT { mdx_compiler_sync_send(compiler, compiler->chan_mask, $2); }
124+
| SYNC { mdx_compiler_sync_send(compiler, compiler->chan_mask, $1 >= 'P' ? $1 - 'P' + 8 : $1 - 'A'); }
124125
| 'W' { mdx_compiler_sync_wait(compiler, compiler->chan_mask); }
125126
| 'F' INT { mdx_compiler_adpcm_freq(compiler, compiler->chan_mask, $2); }
126127
| MH INT ',' INT ',' INT ',' INT ',' INT ',' INT ',' INT {

0 commit comments

Comments
 (0)