From 6ee880c58b659c0d52c534f9ad1718bb44521ae3 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 20 Dec 2023 02:52:45 -0800 Subject: [PATCH] GB Audio: Improve "zombie mode" emulation in CGB mode (fixes #2029) --- CHANGES | 1 + .../channel_1/nrx2_glitch/xbaseline_0000.png | Bin 762 -> 747 bytes .../nrx2_speed_change/xbaseline_0000.png | Bin 1373 -> 1388 bytes .../apu/channel_1/volume/xbaseline_0000.png | Bin 2574 -> 2611 bytes .../channel_2/nrx2_glitch/xbaseline_0000.png | Bin 756 -> 724 bytes .../nrx2_speed_change/xbaseline_0000.png | Bin 1393 -> 1402 bytes .../apu/channel_2/volume/xbaseline_0000.png | Bin 569 -> 569 bytes src/gb/audio.c | 17 +++++++++++++++-- 8 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index b5a6b9136..e5f40a5ff 100644 --- a/CHANGES +++ b/CHANGES @@ -11,6 +11,7 @@ Emulation fixes: - GB Audio: Fix channels 1/2 staying muted if restarted after long silence - GB Audio: Fix channel 1 restarting if sweep applies after stop (fixes mgba.io/i/2965) - GB Audio: Fix restarting envelope when writing to register (fixes mgba.io/i/3067) + - GB Audio: Improve "zombie mode" emulation in CGB mode (fixes mgba.io/i/2029) - GB I/O: Read back proper SVBK value after writing 0 (fixes mgba.io/i/2921) - GB I/O: Fix STAT writing IRQ trigger conditions (fixes mgba.io/i/2501) - GB Serialize: Add missing Pocket Cam state to savestates diff --git a/cinema/gb/samesuite/apu/channel_1/nrx2_glitch/xbaseline_0000.png b/cinema/gb/samesuite/apu/channel_1/nrx2_glitch/xbaseline_0000.png index 8ba9bc9df354f87486a5abb7edccccfb8089c0a6..24c22936bbb1e3acb6060a8c2e318877a0ad4404 100644 GIT binary patch delta 433 zcmV;i0Z#t<1?vTnB!99=L_t(|obA|AZsQ;T08v=&3Av+lP5Kcnq6TN}#Kd?s@1t@Z z;^It*NJGwfS(Z>)mL=zW;`#Q`=R@t8oO3yoQYz0)DRs}(c8;HIKEubCd#LZ{+~aa) zb=;n*U(oh=>(N8wXPeLH@qb@DZM1Lxtv!y;C&oBvCMQ}4zJElFah}-EZ0$$l3pwX$ zV_zS5s=DFdI^G{_=DHz-KdawkjNhE@RCV9D@yY9k5JJ9g7v0XJJ~{s`I{)_Gd`6F- zXaPNqUJys`clHJPUnj2A?)mcT*88#h_V12Ax+2TT?mC-fg$*BH?zz7I6OYS;y2mM{ z?#Fd^eD?}_*A2e*M{ne# zwOcN6?JhcO)ct%H-QMZz`OLN}&cD5P{o&t({a$;m=?VVPp>v(Ni`Imb(E<~a0_2hc bG#2{-WO8kH=dqhN00000NkvXXu0mjfV;k#^ delta 446 zcmV;v0YU!j1^NY$B!9t4L_t(|obA_9a)TfM08!}lgx*oFNk5!YDw=47hVJb9vPcYc zYez#$X`bg$nCCgA)Ns5$yPm2?Qc8Jbnx_2OX_|INN+;)!ww~_u^B&6mv^~xvo8x+< z{Ds!XM`th1A8kFo=YKx2^F(doC>*3*0bKsV5; z_YHA%zoXxv&wPXsmSu^BWm(p9t;XxK>#2IAbpMXbgS+=xr}YdsKkvERf7|0cvN^6t z(!rZwI)2Z4aDV-rJniYUp5f;2#yB7E%<<7LbocDl4Ll9DyS0AnX*mDr?4|2(pQ7(r z@0k1?zIo<)pwqMT%hw$0**@HRR*(6^^_I%yIPOyk@71}UcdKx zvitLoW?s6!@4>%}ww^op?$0Iu^?UHu>-Szy!}*&9zZiD?vHoDg_4m%+>;LcX!NUbs oTP>fWH6W8A0<@D*0(Ta^07$WJUIU2OU;qFB07*qoM6N<$g10LG=l}o! diff --git a/cinema/gb/samesuite/apu/channel_1/nrx2_speed_change/xbaseline_0000.png b/cinema/gb/samesuite/apu/channel_1/nrx2_speed_change/xbaseline_0000.png index eae5b521f447cc874255031a4ebfedd8714272bb..0032b919f1aaef5acc9573be68705c0633b9bf45 100644 GIT binary patch delta 1197 zcmV;e1XBCm3hWAyB!4qWL_t(|ob8>_daEE1gt1?r(04RbC`P0ml-1%G%0HkU2)hdY>M2D?<9TF|HKLOZ>jz~qq1`Sm7ceNBFUnyA2tOPM zz8RT(5|`A=OOq>22M(T`FJ5)yPTyIX#I=E;2kue_)i}re_!R5oQ z&t|AE41Xy(eqrc3xF%8_M4!Pq{Zc}4z8{SNEklDH$k zHp4J~2L^SpPFm2*%k!(&%w_LGK>AqMPdG zR{hoEx6%7xrBK;^st#_|x7N+0)!8=s$e53YMSpu5*=OzYc!_j19vtkqlf``M1(?;7+SGq@%aB~P}mp20cgT>6?w!wd$igRkc5x!XFJ zbaa+Fc(l6tYQ4$%VI7Q)zxWd!^78&Vm3rs8>folf-jTGgu2ZQ$=)59~w`y{O2;1S$ zntubJzC+(r2Mf8sJ8jyW`b+iw2A_17+(Ty_On0ZjKUW7Q-_EJG)w2#p$3IsG&+$BU zcD;D8cbK~ z`#hL>$2u6Fjv354_#V9kU5W{w2j_aJ-+$X6&x7j^_;2d#4NmI&zb{(eTv_j4gw69~ z&fsD7Ic1Z+rw-<4r)R=*6+NonAL-Mx4n`+8^Q_|Xa{L*CsTU9S4)eAQNVjvn)Enyg zJQ$o)ADfMy`|^44h(x#6kTBk=iIOMVQ{3Wa*Ru{r$8!}8t!Et!PUrVzx&Jrn(0{+t zz9(xmy#$j^4D>wMXTB;csnq^)}CUTlLz!vSB&}4Q|rc8)l;Kse|`>FU#Ck zp80#?jv1WWu%Jn{$DCo;>2u0U_5I(IB{Hs)hsO8*A0$14SqGQ($+LI0o^>!d!~J6{ zV#}$&E+peagTbM};Lu=jXfQZ57?aKfd6O^&7n3jr7n3jr6c)}uF*V1W(PxIk00000 LNkvXXu0mjf1d@V) delta 1187 zcmV;U1YG;<3f&5jB!47HL_t(|ob8;!nxh~PgmJ%pLf_Hc<{8<8vmHW12e6G;ssBXU zvPBCVdNc_!#%T@DYwO6%nN;$p@s|8)+|Hj}tGE46^)3B($^SRtqKB+ac8$7r>^heA!%iMT zc;0dwl7|o;kH_!sz%y94?fkkuL;m*bljhfN_D^@zw=I#Z ztt07~=ytJAHT1P?Ui!UD#oKi)zp)s$`_rqh8mx!FJO^I=y2HJ;>omV8VxYcrKsPhZ*TsVh#ogx1Ap}8qocvK_O%8N42ZXp%z&v3 zUe`69?%;KB?5R6zL&4rfo8g#$fS;eA{HS+XMHg={j{31xbf`FY;i^8B-M$VcZy1}A z#V2t^y?k^Tp{#=qeSGEFKiyHgof@e#X6;m&wQE~zde*@s{m+bfYgl&FPa15Wc6&BQ zz0sv&|9^$4>)@7%-H9=SYs$BpMg!9Re{~&vFM|gLL}P!7r+G&HM*R-!U`srZUz_2W ze*lL%SSK~~^6~hpwRnSZ)UysA0qK5lNB)Em9*@V8An$9{;_0R|m!S_Ajp(krxmSO7 z|9$i^St&HOud0K4^}TiTY<0GeJ~QU6VcC&pHh);}<*To4ol2jtqFbm9^L=K^ty`Cp zAEx)u|L}4l_N>)=_50P%{@!)y2WD_fBuidwpFM+X%6sWsA{{drtPVb#v*&JaXUfsL z)WNgW&1dUft`F;AbmC-hbWrcB&%bhrIUW?71~Xvidt)WL$Drerq8 z4S%M)w_vairn|Qxo?HjdwyOL#{dDg|6K4iya93PD&hmWp+w|hWzQMgM9n$UER_Yz~ ztb@Vvtb=EJ9!x@jejZGHU>%H4#C;x2ec)_AmB^XMy>gDq;b#Lnfghh$51x_i z)|!&Wdo@||V*3`ixV!6F2cr|YiiXy+4hCoNce29&8+Gd6Y`>E=n_hxNCnkCx9AYa! zl~vU11BF{HQXKU@&v$$E+C1AZoq`5;>Dvu+(T~)@`@NTCZZAI1cYE~%Gq|>+p((cK zoMGqbYsypgYc4;9Sjb?01nQfZx@pJlQ9J)lRpI) zlRpI)lRpI)lRpI)lRpI)lRpI)lRpI)84e8w=O6e;Ye_{5DtrI{002ovPDHLkV1lO2 Ba7+LI diff --git a/cinema/gb/samesuite/apu/channel_1/volume/xbaseline_0000.png b/cinema/gb/samesuite/apu/channel_1/volume/xbaseline_0000.png index 54a535e66235423006341ee9e309270765b7ad5f..e639befda77330efede3dff21af8e5b7b963afdb 100644 GIT binary patch delta 2602 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 H!u|gMb80eD diff --git a/cinema/gb/samesuite/apu/channel_2/nrx2_glitch/xbaseline_0000.png b/cinema/gb/samesuite/apu/channel_2/nrx2_glitch/xbaseline_0000.png index 2cecec38f21d9e1405731f0756f9592498cc2234..eefe570bd37d0089822dd3b0b873b18100f7b8b5 100644 GIT binary patch delta 420 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 DZE$<^ diff --git a/cinema/gb/samesuite/apu/channel_2/volume/xbaseline_0000.png b/cinema/gb/samesuite/apu/channel_2/volume/xbaseline_0000.png index c8e022e1856fb0b467006640e7d5cccdcd9eb1dc..cb59bd6b2e3d0c9c5a56d99851749aa80f5fc78d 100644 GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|OI-r;B4q#hka-0`r<2L>vN_ zdoRgOnfs;rio{Vj>CC53=II|1PbfP4A~SMY+kLHp8mYPwx)XV<-Gh4S8r^5Rvz{Kt8`7wYrm~}Z|><|vp#SC`rzw$cDdvp z!?=GY^$B;^9FyRG*Y)1){~Gu8`!)VA$~Rw;eD?j8dmDG|+<(FGJM*!3ji2|=v5&kN mk`U8a$a+jvB7BrVI1u8SLoXG#t!jG$N)n!~elF{r5}E*p-SCY7 literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|OI-r;B4q#hka-qVr}uFgOIR z*yR+V{CZBEi|ZAYz>W>CV&;A}ZJSsbW0NM8oO9bu7Ko4S$o~DWFml?*>zj1m=UG-w z{P}y@direction; envelope->stepTime = GBAudioRegisterSweepGetStepTime(value); envelope->direction = GBAudioRegisterSweepGetDirection(value); envelope->initialVolume = GBAudioRegisterSweepGetInitialVolume(value); - if (style == GB_AUDIO_DMG && !envelope->stepTime) { + if (!envelope->stepTime) { // TODO: Improve "zombie" mode - ++envelope->currentVolume; + if (style == GB_AUDIO_DMG) { + ++envelope->currentVolume; + } else if (style == GB_AUDIO_CGB) { + if (envelope->direction == oldDirection) { + if (envelope->direction) { + ++envelope->currentVolume; + } else { + envelope->currentVolume += 2; + } + } else { + envelope->currentVolume = 0; + } + } envelope->currentVolume &= 0xF; } _updateEnvelopeDead(envelope);