From acdf4d65037ae6166b7f3d944b95936375618e40 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 4 Feb 2022 17:59:55 -0500 Subject: [PATCH] Amiga: add stereo separation setting --- demos/bruno_time.fur | Bin 10302 -> 10311 bytes src/engine/platform/amiga.cpp | 10 ++++++---- src/engine/platform/amiga.h | 2 ++ src/engine/song.h | 2 ++ src/gui/gui.cpp | 10 +++++++++- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/demos/bruno_time.fur b/demos/bruno_time.fur index 351a6e1f9de3701ad899e12d2c452bfdf6d6e823..6d5756d71fb618e53f13a14528e267f30dadc579 100644 GIT binary patch delta 10183 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 lo{SVHrDz8Ul98G@I0&L0O6K*n zs`Q>n3pF9MKtjm%-k1Bf4|{fI_w3G@?KMCdB!6JQS){~^0S%`@a3tfY25}3U|J;w{ zwZ4q#Og~hX?U!gaf1WB_0e05^wr*-X9 z)>{ivk;M}+*oIoD2+&HXGI0$jkZwyhSs#a+ujkX+5yXIFKc&y@Dqqtq>E(b2JaJ?= zSLnhVmTebyL*`64XDKgWrtZ&R_pyb09@lZD3O7lMy$x`&Ar-qJ(!n4y?Zf+Yzqbhv zu&xg;=U`uSJfBw63ePO5Rb;+~2O4E(rc|g#JS3^2bVA^=$<(*}3frLS{_!V=sg_lF z23&uCMURVx9^F2yv@AXQ3I)vECL}ja8-(+fzu9l9AJ*MDK#cdA7R{C`*(cz}pPrs( z2h-AC>z=cdm^vhpJ--^nO7BuLAj1PZXm4ObNz&iF(HBoML zfuTzpi&0o_yoNJ6EV^*)c5Tex01#R?O%82H!I~a2Hvznu3x`$5a3QnIZ|24*Sx(PxediGy?ugjZlE1%6 zKf%dQ3Zq@|3vZEU16XcVn$RFrGb*#8czwPBU^2{z)>32?WTMIj4r=zH^!&c*jW^a+ z0*b!-H-MEhsWNap1j0k*X~I-7n?Ak#7j(XbWrJUAWO7HC8hgaaK%%=BNEZySu9uF> z@1`lXCzZXEFmNcpbk#R9TYnm#{k>6-irc(Cy(;Q?cFin^*&Ez34G56uI85l*A;#U` zwbgtxbXG7amnj%6g{nxrZ~?Q~eE{8=&lMRBH0-t{OPJjJ{-Q=83Zx*Z2Qz{}s6Qjo zmustxXk}*?Bu}q=6!{`9Oi%SIFt04Bm?_u!6q&~En?ZNx4>_P(!0W;gta=C$d7%e|=FKQ+C@qMbTXDsvCC0+MSvtEAe9io>(^%IWcef2{JN2qzotJl9i z72G*6_aOv^1Ma5J?_X)RyRuYGA2Q@Mz1O)JhsFHBP&aw8E zH&tKr_{(xw+9m(+>kk1kZUX?zr_|A*8dGb?m*h(-_ph7Hzq1zBnSU0IUmk&h>T|-6 zWXx@iFk$D;(d2hi=}1WYI*Tmf?7>o*O9#{1Y7z_IV{ zodeYT=ef7v14&_fgeHterv~kjE}C&x`eEh3yQ8I%x%2B8c2mc-WQlr!>i|Hs@B@UO zbx9F>tav_|+8#@`xNYsP84R|u7~TRIm6uoE032pb^dY?gL?4b7wa8NQu)VQ)8K~px zK2I%F!%SNAkYUrE?m)7DI{cT1ib=??5Vhsag9!twyerJpr;y5wA7UbjbQ)}}`j`3? z%ml+hHeb>!z>%bd@OS{E{z`n^25k2zGCVbCx9H~$MDtL5S% zT;&T+8tc*fv^yr|Fy7*uWFt0M=%9GkmARJT>^eVM$ZMLx(F|`R{Ckt{$UREJ5nn31qevah2^Aq903bd_Yzc?T)@Srmu@)J)Xj{w8miK zsfYJYk^iAC_bf`zD_=|M9>0zSbDTM|tl#ppUC(V-+7pxBd-bERdQn z4Ofr6{CcYSKg!UjKIMSFE$0l?*;3yYtu+D+A?F*qInAsn_aVC%)}^av!`$CV6i$+ zAPqMP^}cT>SvC~IJljhoNq4myP2*YD60-{_k~L6p-W3lF^8oh?Z)Ly0Fcc5HT}+D` z7SoSaGneyOq~}B>Hmu#3w0iN%bC$46G-ZQPv*XAL7|SiGW!lJq9#C4gTQQZ zaqJpZ6)z_kp4wu28X)uaGTvc|8wh2Cff8qr_eV~pc3UY0G{JD0cim7eRNy()IW}_Z zOSV5S-X;!ukq1nT*Wz+|Bm@AV>ojR+npMm^+si_sK9k`NLU%CBIx?i7TYNe+Ud@b6 zA>fkrkI2cOk%fk2ic$fh7ia0&oYL&hHuAU-sWBcgEy3Z&vKu1r8^Ch_uy8kvFb-}R z9xgBoqgcV!UDT;tRR7&jCQZ=7AK_gu2J-J~u9hyXye}SwI;qsICDc*^uE%SvueIS!eeYXd2c5;c*^zRcx;ol*0iiJ$dV|qE*d@l?0oS z+~eSjC?`?!9qadf#EftprM*LF)LR+PeX9V%l&7*$9=BHFQq!7lV^0M zy>9Lv;0k<*psS)}17FxjsA26QXBRqLuv=aNd1B!QlPt1FmhwniR7P=FC!9bJ8Ig;V=kMYXlKAI`^%(cKn zYao=q4Pf=U`YuU5a^XzY8FCbFQ$Q29KfclC`kzI^f9pIe8T@6+nw%?A$y7@N+8sGh zj!+*#1(3#~!0$JtljxTe;dOEPYU93u%iqWBJZXMd4+g$`ZFV@5dV{E&#_z=yho{Im z;W8q!3*ZZnG#bgjFlQ6hguEco#*i=lh*LW3K&H0QD)#*Jlg(EC$m>)(dGinR=J&~L zVHDM>GmE7yY-V&g5bjcItMNqgyW!B}UVa#{@xa<8j?j18I(D)CeOn2ji z+N8{d1GVFtCG@*F_Xvpm&w-mTW>qk&{25kA-t^VOBT{a@> zka|Qhf~ip?dIJ5y#$H9!CSC{>e{4O-x#gu>!*Rex7joWfEXG;n%fZe1HfKQeC|<_y zy`&a}#~_~rztusFETCPgmuX$&?iw&O$e0bjI-fzOmN06rHJ2YT0p|JzX7CmIx)}vD zf;r~EiG2&~D9E)rg{9KWmbi$0)?E$WkLB3gIL4rJ3MARrv`0<6J#`4}fCn%|H-#BN zL9f_t`WGm6qER>0Pr7#T+{mm$@?QpBIWBdM$gzxYAU-I7t4ukR2c9@J(ouzl6K z0efQ9HFq<)=nCnn*0Pi{?3}Mm>m&d-;CsW?rrG(-lyg%+>QpA|5bUtKPbA&2^8v|~ z449hLsHL=&aDa1n)n>d(>1{chD^4gpeN=u=Kvr|G_k-8S4CmJa5RXc&d_ywLe-x5T zli1S~w7wIChVi&rpI;d4RDPu{30oXXhD){WGWmjL)$G+loRpY}LsQ0o-s1wg`Qx#` zt`h4`70Y4it5$OrZC9n)tp}4MHnrGCkrVCK>5%R>xx`IM^`s@LJ>#J`atuoFwr<+{{WH&;k9EopUT zYI#pi3rZcCI+LF(1TKv5g$Hv?-g$qdFJ@cmV1CA|@Q2x?wNS=OM*fS-cwUc8)7Z>*&eIw=b2c^lJ>QOoqyA72-3n{I3Uy zng?&`%*3C3iDWN}21IRdH&=JC*8SHS=M_6uIt}xWzzxQn_~m@fXD-j@Ie7WWa9L#{ zruO6*CT;eOkrYR4joEV7SU$79}8R4eO0BSTmZB1gtw?NSA*pHI6a z@yvzk?fqEv0wizmKUmZJbH*c2x)tUAW()ay=*7CS*Kl&*)>?I81NuBz)kpd+zmLE@ z$uPL(Ut)HkYhA8I>!7CxZqVgmsypYCF5a>|9^{jKU7wous&24ysQ3YI)ssp0Qk-7G z&GC$-TH-#xvV4KY#+Rs$4JcMQh3wU1tyV4VXj7;e4J@M0PiKz2+ZHuVw(%8-_U|IM z-V>ZoX#1m!NNai`#{6@jd7?cIXBx3AcWUBoW^;b=dNPVlUC#-%U=qlGtpWG@waFJ0 z^Ra5M+wXBsyT<>VSvp{9W%!pK0b!S+B0i6!oOn{}%GYI6?fajtDkb>Gd2NEv!=Bip z6Ar&&$AIm`(E))c`sujHV5x&ocB|q%mm=X;PxZDHI+h!2jK%|hso4~OA8a_?w_O+rWic0Uy*rz2+E2}WmG}j8xVkrR0gJ^=6>Z! z=9LoT;twtixu!)?ZYkbn>JlBnFyfOuhqr%DY}LS|%*x(#UFPP+RlfLsZa`gow^4iK z6tJo^$Sw;as@K@02L9rk*p0Y{f5;9UxgPf{KPzz2?_!JEqm7-Ms*3j#j`0>bBT>7d zIkLPUs2oIOuZ!L&gZF+FQW$^FFt6Ms^F`W8`FmW^fk2A(DP#={;#Q0RcLY zr<0cQDyxFs4u;Gpv4(7N@?hozQEvAN}M$fEM!TB7lgYH{jtLXCOjt)Nu@ z%=dn5>#)*a;R$>k@go5@^oCxRu+^pi7jem}XINn}Z1qJ|K4tv2^L?|6p&+-0n7>{E zKK1W$I>T=5j$+5mh#FjDSDLkQy&AeovRb^~eq>eod(54u6@dWX? zABp(9IJJTmY~CV;S-wmA%bGWENv`v#mLVaH{LJi{JaI546Z$*$)T?srCm`hW5mix~ zG5h8ne@(uoX;-`n8~Jjw1KlM^9(M`=nWCa^=P5@fJujh0`CH6|Wmy{I{qs2AA+jaty;GwCG#NZO>Zso@>t=A4|;i zU#ZzkNi)+>OaHaDA zVN0?G@HqJh`z{i{REAe+#&3zi90m6#1U*4-H-sP7$XzSK=N*lF=S*JQ_MJw#}?weu?~NiBa{sA${!cZ|#$ezfy~!#lWI^r%dis<-fvlSRp#BPt%-Ry7)2NA- z-i++?QbHd^oN{j=6=+m^&8*qgX8N>k`%lq!*owM(x5c091;g^C2f3jTd#=)u2yo|9 z<(|#TkMq&DkzGEY4-vitxbR4o(EftUpM&*(9C?3PuyY-}M7&KNq7(Dz8y9WpiaWZo zC(yk0`%R^=x59t;e}Zs{)WhBY;+@>kA>j-|MrHb}B*;Q}RA2>KqUL2h7keOkYD3W< zF)_3xpS;i;;?TeML#;itd=QrT4gcUHDh_3A_a;C%WXI@;t#*qQ_BQ0Lnt8Aa_qP2_ zc{+DLjwYt#o8Kdjp_1xTKd4%Lqgqm1HVyAS4c!`UXerZZW#tXMtf0n(QDJXBhZdPt zd+TWRK@Z-NCc>x*L8WKZ3Nm6p-+J@>hA(# zo457N5{YfuAia9?&LQ(X=($O}(kP*jpo=bOp2`EM*s7!Basx)3J-FR=Ey?8dAfd%AH5&`{LY5Qz$Zd7ma-r(uQ(xaydJCB0r0!r%UF5&q)INxuN za|P}`2kO0Yc>i8%HLQUtZ=IK-s;_MqALQP`E8X>Q-qAy-w*RtDg=wV{QVzU^xltby zb}~ju5*o8}gS;9WrVdIb_d~fQ$=tzk5UiB_%G8gvzT6&CXJTfhIb_GLX7c&>x~Jah zvRy*Pp&;fBKhlk{sGwxX+MUNamA85QW(ao zzcTHl(vl_pI=avgGlabV6=6T0#}#@xj|Zc+{!4AA()3*ZU5}a={MIJtSl! zh^+AXqmWI+@x?$qZv5Gv&eax;!(L`irAr9 zM9|h+7aFvERSu5=@$~k0iKcm*} zeC?R}{W+0>oz`h?U66#3OY*4R5X7gq%GVn;4c#+Sdkv5K!8iQYuDF_Ln8%U`>~fSy z=cQeW4B2VMMMgJ|L$ixCG(aQr8@F&5MLod-RH(TX4{3IP$bM1c?%^mr&q?T2!+0-T z`hjnlkfjU-ExLS?MRBM!D@r^%G9>HhAM|o)#z4dp55z(jqhv|T~yYWv~V~IqVqyC=^Ldulkt9Fb}6LS z!lmEp8b{7L*M5SzRq)2$))|V~ZrQ`(l0`L17%;G#H`iBwt?*j$7}4w zeKsC+??dQ*ey=D zv-B063WI{mgdLK~Ti^US`wy}!g}QK8H?-$ji<5DP9HNR|=G>Z4k^R@j_PTbce&8LH zmh4l!gWX)OYRSB_M`7k?o!z&RA=~yj+zQ4aN>Frk0g+MtZw}yIvdnfH=`1rydYYsr zU#>q?+{44vj^f3}FW};;KN4;8jbfZ%09wWEL$Zg zzL1PPY#k7^{0ZZ2nCevq_57mV#VoHc4@fymz&eJbcO2I4oezTW0v~wG{VgH8S>(G7 zn8$IKK5x8xmJQ&%W~D%q!8%^4^NpSX{B$;h)R;&SJDi4)$?BVzn!`*EKhyrkFMZ7X z-XPn_!Jwjpe|t(7Flsm1!WM(*!QChwlgjbTWj=Id0oysp9Vx)aogvF^K|fNl+r>dV z@OA^?rJLk2UTv#jmE~_s-dx+m=pb5aHL0MX=xY9 z&@N#rV^!Do@y=lJQP1uh!4nUKV>1>o7V97_s8FiDAIrD%sg5x{pgxOzHjY5TMmHy2 z@lut~2gcp*5fW=t-B+`VosOd%*mj)8`0A;gCgTUwvqxlW=`LwqeQso6#@R)rE~LR; z-6q#b9gv1RVyx_X4^QiuBljmW3W9YuY%t#n|9NjN)hC$r_HNSHntfZ(4D~rKvpNu} zh})4Ji*7m=Uq)vEL8Pa+0y@aLqd~|6m^4tFF=HrGiLpEO@IAHN@|b>oKhAiDC(n7f z6kmR?hBM2usk@+#7&$;kzoflZ^-&;?eR%b?1q9zRpz`$ytphqEXVTxn)9p>x!DR}f z((~;X#YL27J(SKWmK$?H#?%$fb}GnOpY>sgfb9jBH#;-)t;fQ7GVuoZi@;J&IWTk+ zmF0Bv_K-~QH`pLjvwz}P(_5z1Bj(Ub)X8n)-%kc+t6krCu5_lbZ2Oq--T36u;IlyS z=x_JK@nvDsC(z+&~(K9F7YX^hf89vY|9GC1E+rfWrYv^CwZJh^A3`e0C zP#w8)X&FZHK+G=s%Z5Ej*)W8<#t!NjQ!9i%Y|A^nl)b<0Wjr`b7+#+TJf@_`>@qIZ zc0uR`=n+(-6Wd9V2HO6Mj4?Yw6d;2N(pGS_4W_BZ^(H6p?Y=<6Bi|q1#1RrVm_cWb9~)L_^PAQ`M^z=DzxKcGW}!n_>E2OQBKuk_))3=W}A3=7i2mUNYP-j zfh4IdJS>fDggp*H@p;Tiy>^~EY)bIB=_iE*LrI>{(4IE63A;sMU_3~y&n0pym@F0b zT^kn4un5;~%a~>3-r=_ne8woRIbl>y^7joiq#wGxxH$9ug2uo+NJNg zEyLd*uxF|i>dXP@!)x&IKhTVh0Po(qVj17-n1;}iUHmGlw-bh_bGr2UFR$=0Kgod5 zpNh&>Tl}0k);!yPbhTCR5Aw4Vtd|MzhkEw>L-saQd`B0Y5+Vq;2>G#{MG@BjTaTBk zw;7p6_0{AG9#*f};MF)t$Q5|)&V0^g-!D)fk7c!ZJmA|PJLB(#E}q`Jz+%8lW4%{TS=2L_GAA2fEgAB{wpS@(~lz0a!(|491<^m-Q)6g=)a zyeLlM2QYt*A8`3)pp@~}_#KIb>hw3E;n5))RPS$Yp&3Q3hWg*O8$Z3lFI&tC2KZvM z=bBr_=I2Hs?*niU%YX%)BPgo7s5wbBFq_g8M7gu_Y?#?OD1!p+M0PjASg+RS9rV_f zzvo^iLGfe4czfZ^3))~+dW^CbiCf<`8GNDbU7&;1 zBmNMU@rU}|zP0Iba0ZY;c_mNE%c+ZqpF3t+c%GQ^W_ZWXJAKMu2~+dL3v3u1g8nsW z6Uw0ZarHz){aa(Rh{F6_OP!dw(gpC0Khh%4X?fY=cw4&T@KidQBI_f~)4wz)3G<9N zNGsBO)8Yf1{x^K}%|@%ZE`lf<2_&K-4{Y+{H5}hKjU_!V5XlQ8C^@UyCpj5524uZy zGbam22FUv>kqmuK+#qO~oT0t8H?cdH+h%?0N)ia9t^__IFEh`r1X;)D$Yoza{6Y?2 zZkWIM=Q5YOxfb2r&iK>j}>3hWWArZRWugG^bay zh*wi%!)o{A+UvbTf*KD?>*V~$i{8pC?jRO~>Uuk=pT($ie-}6v2YDNz!HHA*;$J|^ zJHeejB*@RX;pmd~ISr%P0{M^dt~RTyL<7=Nr^W2pr*b|Ix8aJdWD8L%ikJ?i`ryaW z17Y83El5x6te#q(vlJ2lAO4!iLbc6DgADWgki|N6yP0?JofhlYO6#i6+Ge+k&g666 zajCY#0vTp|=5THJAln}6qpQF?{Ajixb!6JVFX?iwDs1&k@a-aicw0XFL{edO|HKls z?t>xt+`{2HjWzQTe%=$>*KxSgHF?{um2w&>i?&kEqAYxX2A&^7_e*sXx4OK4V8(}W zE&6vL!GUOsvHHL4l5B+E8I@Q-yKDy5AY+CHg-QpE-s1yr*lLs z)x4;*MES6#89p?nnsRlD*suM6Ve_WwXHd((Ud*YKUt6WaUlAg>ANoIWsC?o1Ku<9{ ziJ((b!|AaDYVstEMiQra<>RRM{4KxJGuf?5UR+B$TgAXx!YjM zVl%WCa8Jvo9c$!Qh>$fzei2cETrI%vT)?6XX@50?FiEv04RhgfB$N=BF%_&c{OBs~ zAHs3s>TSd^>?l7D=ad_|YL2GBgZuexXu+bkevjeXTaEw9cwoTCu%S=rx}Zg1*wIPM zsoHm7YTCVX^(;>PFofEh8sACGJtltHXYg7f~(;NSePX3vcO^iQ3^tGC_-RKWZFguvkbPwv%(+c{gqi=>D)`LiyI cdD4*yoP^vXFF^hsAmTzEl0*ZyL~Zo`4=5Qi+yDRo diff --git a/src/engine/platform/amiga.cpp b/src/engine/platform/amiga.cpp index fe63d081..6eaa10d4 100644 --- a/src/engine/platform/amiga.cpp +++ b/src/engine/platform/amiga.cpp @@ -77,11 +77,11 @@ void DivPlatformAmiga::acquire(short* bufL, short* bufR, size_t start, size_t le } if (!isMuted[i]) { if (i==0 || i==3) { - bufL[h]+=(chan[i].audDat*chan[i].outVol); - bufR[h]+=(chan[i].audDat*chan[i].outVol)>>2; + bufL[h]+=((chan[i].audDat*chan[i].outVol)*sep1)>>7; + bufR[h]+=((chan[i].audDat*chan[i].outVol)*sep2)>>7; } else { - bufL[h]+=(chan[i].audDat*chan[i].outVol)>>2; - bufR[h]+=(chan[i].audDat*chan[i].outVol); + bufL[h]+=((chan[i].audDat*chan[i].outVol)*sep2)>>7; + bufR[h]+=((chan[i].audDat*chan[i].outVol)*sep1)>>7; } } } @@ -315,6 +315,8 @@ void DivPlatformAmiga::setFlags(unsigned int flags) { chipClock=COLOR_NTSC; } rate=chipClock/AMIGA_DIVIDER; + sep1=((flags>>8)&127)+127; + sep2=127-((flags>>8)&127); } int DivPlatformAmiga::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { diff --git a/src/engine/platform/amiga.h b/src/engine/platform/amiga.h index 475c4523..7dba475e 100644 --- a/src/engine/platform/amiga.h +++ b/src/engine/platform/amiga.h @@ -45,6 +45,8 @@ class DivPlatformAmiga: public DivDispatch { Channel chan[4]; bool isMuted[4]; + int sep1, sep2; + friend void putDispatchChan(void*,int,int); public: diff --git a/src/engine/song.h b/src/engine/song.h index fdd18973..a0406018 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -181,6 +181,8 @@ struct DivSong { // - bit 1: model // - 0: Amiga 500 // - 1: Amiga 1200 + // - bit 8-14: stereo separation + // - 0 is 0% while 127 is 100% unsigned int systemFlags[32]; // song information diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 56e8e8a1..ee2d4f95 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -5291,7 +5291,14 @@ bool FurnaceGUI::loop() { e->setSysFlags(i,2); } break; - case DIV_SYSTEM_AMIGA: + case DIV_SYSTEM_AMIGA: { + ImGui::Text("Stereo separation:"); + int stereoSep=(flags>>8)&127; + if (ImGui::SliderInt("##StereoSep",&stereoSep,0,127)) { + if (stereoSep<0) stereoSep=0; + if (stereoSep>127) stereoSep=127; + e->setSysFlags(i,(flags&1)|((stereoSep&127)<<8)); + } /* TODO LATER: I want 0.5 out already if (ImGui::RadioButton("Amiga 500 (OCS)",(flags&2)==0)) { e->setSysFlags(i,flags&1); @@ -5304,6 +5311,7 @@ bool FurnaceGUI::loop() { e->setSysFlags(i,(flags&2)|sysPal); } break; + } case DIV_SYSTEM_GB: case DIV_SYSTEM_YM2610: case DIV_SYSTEM_YM2610_EXT: