Synchronize OPL4 track finalization

This commit is contained in:
2026-09-15 18:00:52 +03:00
parent 3ef0b1dc95
commit ffee082140
6 changed files with 41 additions and 33 deletions
+5 -2
View File
@@ -34,7 +34,7 @@
* CMD_WRITE_AY │ reg │ val │ 0 │ OUT AY8910 chip 1
* CMD_INC_SEC │ 0 │ 0 │ 0 │ Инкр. isr_play_seconds
* CMD_WRITE_AY2 │ reg │ val │ 0 │ OUT AY8910 chip 2 (TS)
* CMD_CALL_WC │ 0 │ 0 │ 0 │ Вызов WC ISR handler
* CMD_FINALIZE │ 0 │ 0 │ 0 │ Конец VGM → shutdown в main
* CMD_WRITE_B0 │ reg │ val │ 0 │ OUT OPL3 Bank 0
* CMD_SKIP_TICKS│ N │ smsk_lo│ smsk_hi│ Пропустить N позиций pos_table
* CMD_WRITE_SAA │ reg │ val │ 0 │ OUT SAA1099 chip 0
@@ -81,7 +81,7 @@
#define CMD_WRITE_AY 0x00 /* AY8910 chip 1: [reg, val, 0] */
#define CMD_INC_SEC 0x10 /* Инкрементировать счётчик секунд: [0,0,0] */
#define CMD_WRITE_AY2 0x20 /* AY8910 chip 2 (TurboSound): [reg,val,0]*/
#define CMD_CALL_WC 0x30 /* Вызов WC ISR handler: [0,0,0] */
#define CMD_FINALIZE 0x30 /* Конец VGM: остановить ISR и уведомить main */
#define CMD_WRITE_B0 0x40 /* OPL3 Bank 0 write: [reg, val, 0] */
#define CMD_SKIP_TICKS 0x50 /* Пропустить N pos_table: [N,sml,smh] */
#define CMD_WRITE_SAA 0x60 /* SAA1099 write: [reg, val, 0] bit7=chip */
@@ -136,6 +136,9 @@ extern volatile uint16_t isr_play_seconds;
* Main loop очищает при старте воспроизведения. */
extern volatile uint8_t isr_done;
/** ISR дошёл до последнего 0x66; main должен запустить shutdown. */
extern volatile uint8_t isr_final_pending;
/** Командные буферы A и B. Заполняются main loop, читаются ISR. */
extern uint8_t cmd_buf_a[CMD_BUF_SIZE];
extern uint8_t cmd_buf_b[CMD_BUF_SIZE];