Fix OPL4 abort completion
This commit is contained in:
Binary file not shown.
BIN
Binary file not shown.
@@ -110,7 +110,8 @@ ptr_table:
|
|||||||
dw blk_saa_init ; 11 = CMDBLK_SAA_INIT
|
dw blk_saa_init ; 11 = CMDBLK_SAA_INIT
|
||||||
dw blk_saa2_init ; 12 = CMDBLK_SAA2_INIT
|
dw blk_saa2_init ; 12 = CMDBLK_SAA2_INIT
|
||||||
dw blk_init_opl4 ; 13 = CMDBLK_INIT_OPL4
|
dw blk_init_opl4 ; 13 = CMDBLK_INIT_OPL4
|
||||||
dw blk_silence_wave ; 14 = CMDBLK_SILENCE_WAVE
|
dw blk_silence_wave_off ; 14 = CMDBLK_SILENCE_WAVE_OFF
|
||||||
|
dw blk_silence_wave_tl ; 15 = CMDBLK_SILENCE_WAVE_TL
|
||||||
|
|
||||||
; ═══════════════════════════════════════════════════════════════════════
|
; ═══════════════════════════════════════════════════════════════════════
|
||||||
; CMDBLK_INIT_OPL3 — OPL3 init (NEW=1, clean state)
|
; CMDBLK_INIT_OPL3 — OPL3 init (NEW=1, clean state)
|
||||||
@@ -292,7 +293,7 @@ blk_silence_opl:
|
|||||||
; D0 02 50 FF ... D0 02 67 FF (TL max, 24 канала)
|
; D0 02 50 FF ... D0 02 67 FF (TL max, 24 канала)
|
||||||
; 66
|
; 66
|
||||||
; ═══════════════════════════════════════════════════════════════════════
|
; ═══════════════════════════════════════════════════════════════════════
|
||||||
blk_silence_wave:
|
blk_silence_wave_off:
|
||||||
opl4_wave_write #68, #40
|
opl4_wave_write #68, #40
|
||||||
opl4_wave_write #69, #40
|
opl4_wave_write #69, #40
|
||||||
opl4_wave_write #6A, #40
|
opl4_wave_write #6A, #40
|
||||||
@@ -317,6 +318,9 @@ blk_silence_wave:
|
|||||||
opl4_wave_write #7D, #40
|
opl4_wave_write #7D, #40
|
||||||
opl4_wave_write #7E, #40
|
opl4_wave_write #7E, #40
|
||||||
opl4_wave_write #7F, #40
|
opl4_wave_write #7F, #40
|
||||||
|
blk_end
|
||||||
|
|
||||||
|
blk_silence_wave_tl:
|
||||||
opl4_wave_write #50, #FF
|
opl4_wave_write #50, #FF
|
||||||
opl4_wave_write #51, #FF
|
opl4_wave_write #51, #FF
|
||||||
opl4_wave_write #52, #FF
|
opl4_wave_write #52, #FF
|
||||||
|
|||||||
+2
-1
@@ -286,7 +286,8 @@ const char *vgm_chip_name(uint8_t id);
|
|||||||
#define CMDBLK_SAA_INIT 11 /* SAA1099 chip 1: Sound Enable ON */
|
#define CMDBLK_SAA_INIT 11 /* SAA1099 chip 1: Sound Enable ON */
|
||||||
#define CMDBLK_SAA2_INIT 12 /* SAA1099 chip 2: Sound Enable ON+clk */
|
#define CMDBLK_SAA2_INIT 12 /* SAA1099 chip 2: Sound Enable ON+clk */
|
||||||
#define CMDBLK_INIT_OPL4 13 /* OPL4 init: NEW=1 + NEW2=1 (wave unlock) */
|
#define CMDBLK_INIT_OPL4 13 /* OPL4 init: NEW=1 + NEW2=1 (wave unlock) */
|
||||||
#define CMDBLK_SILENCE_WAVE 14 /* OPL4 wave-часть silence: 24 канала KeyOff+Damp+TL max */
|
#define CMDBLK_SILENCE_WAVE_OFF 14 /* OPL4 wave: 24x KeyOff+Damp */
|
||||||
|
#define CMDBLK_SILENCE_WAVE_TL 15 /* OPL4 wave: 24x TL max */
|
||||||
|
|
||||||
/* ─── Очередь высокоуровневых команд (HL queue) ───────────────── */
|
/* ─── Очередь высокоуровневых команд (HL queue) ───────────────── */
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -156,8 +156,12 @@ static void hl_push(uint8_t cmd, uint8_t param)
|
|||||||
static void hl_push_opl_silence(void)
|
static void hl_push_opl_silence(void)
|
||||||
{
|
{
|
||||||
hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_OPL);
|
hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_OPL);
|
||||||
if (vgm_chip_type == VGM_CHIP_OPL4)
|
if (vgm_chip_type == VGM_CHIP_OPL4) {
|
||||||
hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_WAVE);
|
/* Два блока по 24 записи: вместе с OPL silence они не помещаются
|
||||||
|
* в один ISR-буфер, а cmdblock нельзя продолжать с середины. */
|
||||||
|
hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_WAVE_OFF);
|
||||||
|
hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_WAVE_TL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Построение очереди воспроизведения по обнаруженным чипам / loop info ─ */
|
/* ── Построение очереди воспроизведения по обнаруженным чипам / loop info ─ */
|
||||||
|
|||||||
Reference in New Issue
Block a user