From 3ef0b1dc95b49704076887ce1328a64924ceaa3d Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 15 Sep 2026 15:34:25 +0300 Subject: [PATCH] Fix OPL4 abort completion --- DiskRef/WC/VGMPLAY.WMF | Bin 98816 -> 98816 bytes VGMPLAY.WMF | Bin 98816 -> 98816 bytes src_sdcc/asm/cmdblocks.asm | 8 ++++++-- src_sdcc/inc/vgm.h | 3 ++- src_sdcc/main.c | 8 ++++++-- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/DiskRef/WC/VGMPLAY.WMF b/DiskRef/WC/VGMPLAY.WMF index 6f253eba5dc2bb5c108ab28498c71a745dd41d01..a0e1a30d9f497c880c814ef16c45c61f20968839 100644 GIT binary patch delta 4584 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 a&WBEY=Sy8JO#E{60YU}L)fH&9>AwKkaZUsP delta 4609 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 b$M=qF4t?t)I&lVg6VQzhgSn&>wa|Y66zEPe diff --git a/VGMPLAY.WMF b/VGMPLAY.WMF index 6f253eba5dc2bb5c108ab28498c71a745dd41d01..a0e1a30d9f497c880c814ef16c45c61f20968839 100644 GIT binary patch delta 4584 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 a&WBEY=Sy8JO#E{60YU}L)fH&9>AwKkaZUsP delta 4609 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 b$M=qF4t?t)I&lVg6VQzhgSn&>wa|Y66zEPe diff --git a/src_sdcc/asm/cmdblocks.asm b/src_sdcc/asm/cmdblocks.asm index f620cfd..8b18270 100644 --- a/src_sdcc/asm/cmdblocks.asm +++ b/src_sdcc/asm/cmdblocks.asm @@ -110,7 +110,8 @@ ptr_table: dw blk_saa_init ; 11 = CMDBLK_SAA_INIT dw blk_saa2_init ; 12 = CMDBLK_SAA2_INIT 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) @@ -292,7 +293,7 @@ blk_silence_opl: ; D0 02 50 FF ... D0 02 67 FF (TL max, 24 канала) ; 66 ; ═══════════════════════════════════════════════════════════════════════ -blk_silence_wave: +blk_silence_wave_off: opl4_wave_write #68, #40 opl4_wave_write #69, #40 opl4_wave_write #6A, #40 @@ -317,6 +318,9 @@ blk_silence_wave: opl4_wave_write #7D, #40 opl4_wave_write #7E, #40 opl4_wave_write #7F, #40 + blk_end + +blk_silence_wave_tl: opl4_wave_write #50, #FF opl4_wave_write #51, #FF opl4_wave_write #52, #FF diff --git a/src_sdcc/inc/vgm.h b/src_sdcc/inc/vgm.h index 8943782..94ded75 100644 --- a/src_sdcc/inc/vgm.h +++ b/src_sdcc/inc/vgm.h @@ -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_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_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) ───────────────── */ diff --git a/src_sdcc/main.c b/src_sdcc/main.c index a647348..0e7c044 100644 --- a/src_sdcc/main.c +++ b/src_sdcc/main.c @@ -156,8 +156,12 @@ static void hl_push(uint8_t cmd, uint8_t param) static void hl_push_opl_silence(void) { hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_OPL); - if (vgm_chip_type == VGM_CHIP_OPL4) - hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_WAVE); + if (vgm_chip_type == VGM_CHIP_OPL4) { + /* Два блока по 24 записи: вместе с OPL silence они не помещаются + * в один ISR-буфер, а cmdblock нельзя продолжать с середины. */ + hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_WAVE_OFF); + hl_push(HLCMD_CMDBLK, CMDBLK_SILENCE_WAVE_TL); + } } /* ── Построение очереди воспроизведения по обнаруженным чипам / loop info ─ */