From ffee082140a73c5dfc5c90a14c6e7f482de0628b Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 15 Sep 2026 18:00:52 +0300 Subject: [PATCH] Synchronize OPL4 track finalization --- DiskRef/WC/VGMPLAY.WMF | Bin 98816 -> 98816 bytes VGMPLAY.WMF | Bin 98816 -> 98816 bytes src_sdcc/asm/isr.s | 34 +++++++++++++++------------------- src_sdcc/inc/isr.h | 7 +++++-- src_sdcc/lib/vgm.c | 10 ++++++++++ src_sdcc/main.c | 23 +++++++++++------------ 6 files changed, 41 insertions(+), 33 deletions(-) diff --git a/DiskRef/WC/VGMPLAY.WMF b/DiskRef/WC/VGMPLAY.WMF index a0e1a30d9f497c880c814ef16c45c61f20968839..7a9d79beb929e28c8b495163a83d87d5edafcc57 100644 GIT binary patch delta 6485 zcmb6-4OkS_+B3_tfIq+r;({PMJEY6nrFB?V7RB9+!-sk2DBFneu)O@gH<(L_FLD$=DN-9E|C+oc`8_ss4Rmd|&;@7bMm z-uFH4dCz;^zcXjbwyMgus+^-0cpWoFk%n6v42p$#`USpQp^eHKW5IlbXz!ddZgHxZ!-G z&v35Mhp;E=hq)te}H1mT`YF9t8>~AGnEv>}_YvaH` zaIxLx!NvZ)T5pFqZ&iz)(B#rjP@fDBrZo8snx^0ATx$7^(p-pLo;{vUZA!ulksf*V z!;+SO5q8oB`XNcaMIrm6PeYjMEn%tN)?==yCY2^STUHd=eW!)_ds=$4v(K+@(8sPQ>N+oP5(YIo z-)XfJ64TOaKRv8VW>}Y&(`x1RprJt)NiHTII~`g-I!uok6=#f5j}4)sT@p=__?#p% z+oR%5r|L!1kf&;^Wvu83R8;Wk>W4bqv9qLRlXIyEus%n+eJ zYO?WEeNe`IK^b?3WjxN!(vDWo2%#`(ZfH_|blT)o_4Gkbv<|uSRB-lGdG=KGAGbpw zs}FMW-gd=|2P@Y_PaFlbPe;-|3(`#PFkdN1RJvt}cLgQtLlT$D5|u$tr=>_Xp%1(h za!DvjR)_Wes?nuSr7t(Sv`OmfF!2K4HZ5#>OHxpTB{3|)5+^pi5>tt%)wnELAY#qJ z8?KgomtNH!r&q8YV>F+$LJeaXt)G%!Z|U5E>@Y#sgZ zj5glY`qB=fjW^>2hUr$ib)7sR@Ma_NF={?R%^7G|%FI#A+=yqDo2AycsbVH}%=FR= zye5uDyNIMOHEM8{y1>h542>#^1=j=VPn?jxS-9^gD_ClYc38;=RmM`=OPXQuL!Maf zHsgaGG^nDDxIWl%ou!t$1?DKR)NPjVz>r1q+gR%BCaR4`voX?)p=qE4OW?&!%b1C! zmf99#nR|^5)F5`8(nJtD+`4DovS3+mJH6cPYNyw@UCs0|cOPCrf5`9D$E(|U09H-L zlFb6I|Zn3QNLgEW`^fHJ--V1i!7tFx05Vnv<`9%8&Q@ zkkQZZCQDubx_|>S>Sf!TEI9#i0U}J0JtA{_EE7~f5O@<2gC*0G1>Q=G0^nol$3XuH z^kbnv!&{L8`gqWd@-kCm*OWr>gfKQ2ffb3;V9!#$O<4+7_{7BupSh$VeFSxu2N!+j z0+na#$BXlZRM?85%ozEXc?tAA$HNH`;_c!s5eUX}qooL=auy1K3p{nH(V|4;P!L>h zWCya<8Wn~PiwY(!ZrNQ$jUeO$m+-v{(Oj-zPG|gGPBZ6liN}R3@8Q~GomSl1-o4O5yLCO!xMz>57T{3LXFGtO_O;keF=fWBW1$oEkxYN z^`%B)sIdfeps*%-s1fwQnRnuI6+gL{%kjGDQ(@A3!ToLu?a03{UM@P19#_8{-sCmd z96Dp;!X}ud)-SpLNH7@5YGG&xUF>%0$Ffwho6g}V6DNGM1BH1j47MF909v694)$2W z#FY>i8qEqA*Ob`0BYq_*5vj;FOFI@ZA!`U9F(=g86&HAvxB!@-$MJ&_(u~wJCp6Ab%0!)gd4tV zV*L+ae2`HmkuaK*R0*voX(m2v*Mvp*Rc7&o<#-HRf@7HKO^SfDU1zeMofNIGe{jrKwD+aJ3MT zP#DOit8|Mv(S8%mj=#@DB~OnkaG>L@zTw{Fhw<^_cZntc5{m~}Y8)3j+Prg_BPnUh zxqIldjF2)N?_we+Qp)kWh;z)0i4WcJ)}9XaF?deE^AC7D@Oa@l1J4C`zJ#ZbIXdxS z#mzkoo>~Q#s!q+ET;qb$ujwPoIg=fN5D?u9T*ts?AH?Mj_IC)ad(YXSWxhH!ON^on}I*e)TgE5XPA%E9>u#Ea#ChOSRKvIAbY&$3{yDi-l!|@8MbidGG^zb z1p3|+AbSA_Eu>%OTw0}YWnTw`SLb?dq=dI?qFwEhLO-gL1N!=vo`#dC?<-yD`SB$4 z&q)hndr+9I57gopKi_ZYVHTwq%zR{Dmu5We;JR_ThWi4`jRAPpc>&01)p%kHXKzzl zjSA94^za)TWa0YS1#+D6o?PbJbW3RupW-0LC8X4j>r%&J8-jCz*Unf;`(CRW!#uhB z<>O%FL9?0DZQ+PL9KD%qJ7Xp3zjGhsR{Cr7W@*^Wndd`8n#V$`R>DE^mFLUDhV#5` z2S=MYBAavMn&>TDfY{6h9&uo;-G}L|93&0^BPN6DNV+m89kY6X&BRT{R%NOaxMbaH zoL$28@nEkkDMDW$DZQ%>c(xq?uWe=qwW&pw2cS?<<(%Pi6T}Ez&OyA;=#@!DKfwtV zF5+d*jB5%7?GZS!pbD5g<+X&FGZ|jv%!-jyLyG@a0AnT6O1lq-XKn{$v($^SO}20j z5_VL3_Wi>s*eW=>g6saPHUyU^#4(8Hz zTwf`G(7UuMBq9jKkNsr?-E zamERdNwSZYaLM!Ns>xhmT;UqBM3WA5(JG-5)79%cpQ(m%(mu5>E*}J2nQ7#P(yfO{ z6H*qmS7|eV+?NioDVY!5V_3w+*dcQ*=|mOhID7RC=*;P!t8dUx%9@}Vbr(USw`7fg zUdgo;6<8EIbJK|Z+!|OK2~w{LE*XUq&`K6-X4)hrOl$iElqWVY(=t-ci_x-C;0)0$ zp;}l%T8RxD2q;X#lJ6TK$WBtVoSizrofiJJk6E8FHCJhgsx~TAQ7G>)Xh`60J7`4^ zxvsptJfA)QqMg zP1x^kJg`FcK-dApjsfzoh9_4uwRhP5&!*2m6f}MQA=&iM$)*QYf~J=Vw=@0P+nGN9 zP|);tFnw|!u-wl2_TO0_82@+cYyUsizkdp$3fh`kJtckE5@7baR`D%l_DU|w7!Pe< zX#qsXDw}ZpgeG<*9!iOK-;#-tq2QQ0NR1cXg6s@BrtbHt@jJ($jEEVT5@u$ReqmBL z5Foi#+H^TBAiMZ>M1Q+xQ8g1e*MIeJ2(|g<%V$0S*o3j&K>%v)ZIYIF|gXf3Zr;b;uS>)CFUo=}6qGRs=Oej6r}P*^vf z(8i6PFJ|!Pw2wySV~lHH=-O$5N)%Ebii=0WLB5-WP zO#0>fZ|_EV9(e65@n^BOL#d1$g)8CkCT2z>k4*w(zvEy{_y9tdGCt$pGE7SxaQ}s^Wt-Za0eCF{!4s*&^+5Sk5Omo z?!5Vqtas=gvYn2T!*nbPQ*;Xty(07S6@)3ws=)7Iu4dU5taTGjM|DFBan@kL{Wjt> zt1Agz+k>}amRcd>E8+TVbz9Zz+_)O^J8@R$x2Z^YGW<6G;*RTvweF24+CdUpZ7uVU zyHZO_+&FuO|4sCh--AK$3bzT}t-aqIHLL=Dum9*&_(0Ir(%V1SVR+VkB_%tquW z5s)gIV8{O_t!R`JEjNq&mZ89bH1HUaHWsKhz%UTowqFKXZZNDE& zNm!MVuq**Iy#kUv-yCJ?jXFjDQRcic19gMOG}NU`yCbguC@2B9eiFWofK+DQG)<}1 zt+Toxe0&pOa|;#h0~?^}>PM1fJCwL*=||<0B#CSkfAhB{gVj{goyoaT>Be|-v}R1Y zF=oIH7iWbzqMwZK>#*SPWkVAQU9tPh)S!AnUtIqV!!R$4%}#3mgvI_)_bH3rQ}$mh zwy@|67Au}}iN#*je#>HYn4iT?Hvhc>~xgi8m%`dm0`-W~o zZw#Z%1KIk&Tyyr?%dG1Hy&Wt(qECcq67vGSfq{9X&Ee(hFLLz-_xZ?mFRU`+8NNWT z_?%K)8YwPTiH}98FrmRY=k7Sv)op{UZ*ay>!LTdBkdyId7vagwRFehTr%maat;a<> zUZBEeidJ0o^~R8-neN&kY-L_I=}UL;o2Zxg>oi_ORq(W;h^plMB~=J&Q&QEu{7Gio zwIL$9!AI}pscS8UUA(Tpg?@#nuD8&y^3+c)w1cMxT3G5v3w5)FuH+ZcFY$%+4&H;c z7Wy}UtO^jL_S-gyy@MUDcF|XGoyLl&CmY~vgo0YaJdksT?#Tw6jrZH=B@HV01~dp& z3B#hJ)~h1z%7~2${CUF0?99p59pK+@w~D@i59zgT;52+S^4ly*YBx_j)u7wM)4Q3z z9CGX)ejfQ4e2fJOOiVIAP_&z$1x&4{8(RAPHZWyx2fe~gy~aZHv?1h}U?B6x(BOi?zmL#6CVpt2E=CUBrGFQgn6@wKAmaY_Yl8VUcDtiQAaVW*VWlZgyP1G=b(=*8$ep@+_$H@VLQcB1_ z3Deh02XoV;w~fi&2Z4{u&4>d&;*k(rxu=TxTkbocW_(_5PSuH!CFP13-K^f|!sDUl z5zn~P(akc5EY>lSYh%Nvyze4*7Ns{Von=x+V;HVbVsOc=o13b<$gA6!=DBmWDDHMC J?#89r{{sf!lGOkJ delta 6456 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%0Do#E528%%;TN^fFHNHZJbqVgNO>rYWC!Z3B+ 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 J?#89r{{sf!lGOkJ delta 6456 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%0Do#E528%%;TN^fFHNHZJbqVgNO>rYWC!Z3B+ zOMkD-ncmH;-n2A>Oz94ENq^Hy3qz$Bb<&(L9U-3cPJKKESLJWQ3_ItIoj?%1;@C=b zJTs5XMo|_Ulrt^k42M3EoMeuUcvP~JQg>Gb!&tfYHR2((-eUUe7U2zct8kMe^Vn?y zr^#dA68ctb$56AD-6<$V<7*gglhzDfsg zHg{kFAc*j=LS3j+8?shIu7sTMprWi4v@0u$p-Y9&Pur#LKsVNAb$=5)_VhVyTGlPl z8>)#01qFa?Mju2$9G=yQMryIQ!#es-S#nN$Mr zEbM*(xEv5{18k{)yXbv_TaLcyY>u`^6Lg7?MQN>MTRXj9fi!I`^Z^CZw$(d)r$NYj zR)$=SnyegoqIgo`_!B4F=E0RZTm)b?0HGN8BLGntm_I{ME+vdxVr(Ddw&$P?&Bc6Qc@lR?KR>sEN3e!q{5CHlPd zTRwewodRM9wG5@&U-jbTYavw&r&zRRQlllvGrHB4rWpEcjg^4gtts@`1#x{|awGw8 bIDJvjpA!1KEqk6$LS577^^YHYoSgc<= (uint16_t)(vgm_total_seconds + 2u)) - { - vgm_hl_pos = vgm_hl_abort_pos; - instant_abort(); - } - sec_changed = (sec != s_last_displayed_sec); loop_changed = (vgm_loop_count != s_last_loop_count); @@ -1130,6 +1120,15 @@ void main(void) /* ── 1. Буфер: максимальный приоритет ──────────────── */ update_buffer(); + /* ISR исполнил весь музыкальный хвост и замер на FINALIZE. + * Пересобрать shutdown с начала чистого буфера — тот же путь, + * который используется для надёжного выхода по ESC. */ + if (isr_final_pending) { + isr_final_pending = 0; + vgm_hl_pos = vgm_hl_abort_pos; + instant_abort(); + } + /* ISR замер на CMD_ISR_DONE → чистый выход */ if (isr_done) break;