From 992ce54b6e6bf0b3f9797c6844996d7e21ba7032 Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Mon, 17 Aug 2009 02:50:25 +0200 Subject: [PATCH] extra input methods Added partial support for mouse and superscope input. --- gui/drnoksnes_plugin.so | Bin 26066 -> 0 bytes platform/config.cpp | 30 +++++++++++++++----- platform/platform.h | 2 -- platform/sdli.cpp | 72 +++++++++++++++++++++++++++++++++++++++-------- 4 files changed, 84 insertions(+), 20 deletions(-) delete mode 100755 gui/drnoksnes_plugin.so diff --git a/gui/drnoksnes_plugin.so b/gui/drnoksnes_plugin.so deleted file mode 100755 index 4803714aecbf5147840307c8899b2f9cb566b899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26066 zcmdsf4R}+>neH6v*b<;)1QsA-1F~ge6a0rUga8RP{=;Cfu?JU*0c- zLkP231O(G6#B!N#Qn{X@P zHo>v{b#Q#HfUAM4h1&qP9Bw1rdN@9Q<%u%*ULC#){zAAqxXa+0;2Poh%!6A4w+aqT z6>H(_=Sl?X;a0$v>&OQ9tk?hTWBnfp%+cwK;Dbf-S%80!4%1rEp=HmM;L8zW|@lJ#b84rSYH8 za8}bh;Z*5YBmM|Fh%&ek{2E7n?Dnxf2X%g%-n%sXoTj(_lJ2`lCM6Eug%eznG zFW2xk4S!a{KKQI}3XabSIKo%!@@%+P-oa}C@08bm7Oo`0cGd@P*`Wpm+7E))`>;Y2Ed$jFf}gW+W2T`>{b zekjx*izl+VSf(u*&Sqm-5syTK%rr3`LY7=;JUJ0hq(nS78akYa#$&k<-FP??OXU!g zilz_iLV$no6nU0etYL^=cjc3y1u}m((w#{xsp1f{Xb_Deg zCzBFSlbKZw9haF8#tBsUtu;Y25~(;UolV3cSs~Ok6^o#T;apf2#R|iu?)gA=cG zOtrO{p+mNB=d{y_Ig^j!nUonSGr0^=3q8!agO4wffZ^c~A3+?SDa^;Tkv^mS<3J?* zxb~mW{t4}$)P5}#H1Qg>->m%&+TX1G2ekj7_N!p;Fkg-KIX@6?(SE!3w`spe`+eFU z)P4=#c6)+8+J1sQ+IEsY zXgxz8CfK*=`-FIoJ}P>OK8)?>>BHE5fj%bqpU{WVc$z+p^K4q3c|^PaI_%2zaTtV5bh}mw-siw&W zgdZ#j-&YX6gW>kNm;F=6ru~h_rsq!GecIXh@t+AXa8}&>lzZ*PhBNTbpT9*2+HGFo zwg9)KMd6x_FaC`EO?=pKm(_xXGr;`)XJLNL4G!eB&BpHl|IU}Zpm_o` zp8(B!;2wlCr|PDgLA%+mho<8cA3j}V)6#L!Nppqy)cKPaFaDhVa?n2rdUyQc;zfwM zV7a34=yW-JBQSN=jj%xZ9{AqC(P@X6I>S8F3kTuGTk2jG2dB<@(UyBJUVKHgOr5!j ze&f^`r+4a%3H(nH?wdMui%#EvN&3eDKjA$#-38w`IdxW?ymR`olgFlu15;-nMm-)z zS`p}&hZ-NwXOB@S-2aTb?>U0UpXQ#wyp7r{G?II|r8pZ!UDzy?ov7W7F5& zcx>7Y{#=XveWVNCh{ju{i@j*8m^#a{WcVJ$171L!qf=+9jAPT+GmJVhKEQCx)R`;j zgNDuD?S#c`(}VP~H^oH26?t)2G1CUl7(bgt&hibkAN6 zeCF#zo^=SDNPjq>_%FbB6Ykf@_XhL!O`R!1Id0&yK4t)X13ubuM&csQPOn6mbyDrP ze|kA!%9dR|%XA*ESvY zE6X7c`$UKjqCE|AOwhOWxUIvlsLzf?fDWS@s|3^)c33i$P9-OW2uE^>G#0x9u_Wxv zK!5Mf`ucj{HiXB=vkhb6*jTzDnn|Tcv#D6NA(I|M8jSA9Xe^2l<_@&=6y{1k2AtEW ze4qALYX2(j@6`SQ?dP=rUhRKW`+uqZFKPeV+J9dA=d}Mj?Ym&Ju>3OZ)2_i(F82Vq zo5Hm*_l0O9Ka4w3PDKd+K_qh524(>EW59JFB1yPW zs1H8(p=hg|2NJ_XW*1R7APRC{#NLyEnoFMs(Tng|=L_&h0RJ97Y5YeY?ho3JiAMfc zJG(CQX}diGX0?C`eQ;B7$Kf7_6J2d>8v`|6yY{RKtgUaZZw}OCAb#O&Y*nD9Egg*w zq$e_wSY|TN+P^c<)Y!Q0#(YGJ&y(v1YV5MHbcJSM6csz~bxEb;q{DM^_ ziTtx9z>rCK77Zimu~@@UVt8b2L*~fZ=DKt?o5pIfE}R*w8_&daZ%6AvZ*B99v9XEz zC^lUpk%q(R%xD8wV-c*+*3~yQ3{7B5qb`Tle*-edl66dLh-4=kBG|*IANYS%R=x@> zNG-XpGwMRB zS+oP%XT>wlyHI-ZPob#{R}XkUuYv;NdOx(uyx>{}|BS(!l?+}$&Uy8F8T<-k8xAn| z8tb(x$Dk8R#IZWc;QxjkIcj?u{4(e|>dr8j0R_hzzFTlT0wHoVNxJVNg=Rm|-b*!P zx^^-5x_1-r5EHj$5OkZHfHJ2Gf5zM^@Q;|C@aBD&c(;KQzRClDJ-6cTR)B6_rL`J@ z>Z@UlBPdF+X(W8B91=2-UFN(6m8z+i&SxoE@$OXoOK`aE~;j_Bgo>ufsorgCjXD)-}Ngn ze$M{aS^pp5Z_dGG=oL>V{$2p+pL5VU1rot}7h*_|tqE>gMD7IL!qtpY=R|fhPZED? z0h)6nGS8fh&LdnS;NYCtVPbs*e{q23oS1bA+I7xh#(*-a#ZukoLizt0{Lf?1%d*_T zO$+Wtb%RZ3P^$$WVkOp+i3=WtMhQ0mK*pl*;5s&CK@Um@uKyB)SAn;|D^D_b6S_9I z!D6-qW3O7lUP-y8W@D1VOyjNM%h*-}8pi%RCD{Fi?Fs*XS1Bfx_ zFF@UWkE5?ETOMMB;bp|@s7qz*r)0!@Mx;q;>t8a$VKHI@DpT3^7$Y!X5U~gYuCo0L zGK^>{qhkwkXk+gWr*99^s;BRIVxq=;^@UNr3LkRVvR_wmc26abOv;PUw`ZxUb6ZGu2UILa? z`>3XtfkA849g~o0El1B=^$IGs&ZE9ogMu(@{{my$bHEL5c=qA%e*i4^9I!4&cUoIizR3~Fm_zg9v%i>9L0qh!P{T%Q2}PiUCbAHv_K33@`- z-vevm+W#)|2DCL^0XFd9!=x|=GQJ;Rz;jU6Z~j;9`lZ3_`I>(o zs{$Q9U-Qpv8H6@RXp6-=B+idSbG93z~HEgo`ihJaM+)^#DiChzuSB-#j-oAlu^m@%Kr9 z0mE~H%)Go-XZHOqaxJgtxHXLxj-ban4G~=4_~(*YUhDhtm#-n@4Blf{)8N7KwO>%6 z!)jt`Gv`@n5K3VQ*=Tyk{9i>`!v7#hLk%AVhdtx0!jewlo1O{(?=TDu|9K1mhyUx$ z<9`-NZvRKfVt*B|0{)$#aZ>ni1uu^p{t4tb>hSLc@=?>j6>K}|_J0Wkj(Yt&P}tFc z|A*k$(W3}_g}6tLBC`b=2qFIq5DbP)|HDYV`1PZwi-hY}D9Cg7mqF8Qa+JGG%B$O4 zDr2hTKS!9`B=g-SN3YxDs93^*U@olnJJ2J-e*=m}OFxZ9ENpl`k`|Ih?}n3e(F)}H z0PvPj1Wj+V|C^}4@E<|98UA|I%;D$YcKQRTuj${5K1A(arYvsyGP1Znj_#@0@OuP3 z`%vJ=00t^HSbqkLiY{BqU8q;ZHufaD@kJC-(M^VP#21smc4bNUEFaT$C``XKA8oGa zIS;yyAV$=uQF_J3VSt_~{C$c7Rk6_;Ace5XBdj^7dc}~UZu-uHI~5TrLtadvP*E=Q zOvR?ZB9WKyR}9csv8iMEk8q}8h4+CE6_4H_tM3KFeu1jHO;*9x z2E^itegoP;;i8FYIX;q?S=DwfFO5S5y&qEZ={R;eyY5kN< zIH15MOe+FWG5=J7&zaUXRx+f()26i+C7K5n_?l@w%G9s|Z!fYQV?jd-e6Yy+2a<|V z)SbcONQG#bQ3XC;WYsWr_;p#UCyJ~N=DpzzWj**@k<`RyQh}$6q-r!q4yn{v zF|=M~^1AJ)&EmC4dIey+VXl)BQM%C{P~0;ry++yo9;<=SmK`9;0mZ&4ZDDO3!7A%b zu&8wFKABcSNh)n)A3K7ZDM_X63OFK#qqIYH|Ko-fj?zvAUNB?_mu^$+c+4R?xU^e= z#~s#pP|4CB)uhKA)?MIBX|HM$mjC1A3*IL!Dgw!ie6qS(>92Olq!n9 z)S9MP_&VUc76r`iPP5^o>_Dgoj%T;ok8XFHb!d^>WPdJc0iId9#$Scz82+D=y#LFT zJ^vl3HuTf)$e;Bqkg$-=Vl(VAS#9Rmuxk-n@)0g0J#2#ypu6ZJ(&8)nbM_ATMvJfL zQwoA*{UVuqZx}6co5zu9&NuL9%w;>3q3pUG<8#@X=Mdr94vH%Qwl7;_b)X{4*0T+y zdK8siwn1@cv(F8p%QohSUZ>$0m=Cu5n?;`<7TULzy8Olk22h_OXsco^|B^wY8y z6)_JH!u3tGpuBDm>fm`V{+uOm87P!pr37S~^+j|}*+vERSg)a(Wt$Y#XT6LZWt$Z=Xz@#} zvTIaX*ICbk6=ho#wBNdb29~v4gN2v7){bVXTbo^Rtm3(YI*QV}JN;JDAha^zHM8ertOk1M^h-aI46eV=B%`tpn% z_dQ9B-7>=IW)>QqW&JV&n)jl5n(z*@`sI?$nI`&GnpM!bg&KcFI(F=9V@wCqn+L^&fiviCwNqKpxh zq#>tv)9Gi#w^&M4Vic7!;uNzCt1Jr{VL;87#Z?5>&^c?GZAmb~5jSC0PeSC%#%Wn#S~ILNBHtL1;5{(0){=>9O!RAU z6M}~8SFCH(B1Cv77rzAPEmL!Q*(YpG{yx_3A!4(62qdWkkM8Mi}VV z9^a1{q11tae(mvj!K&4p6bAaW$M*m+Hp>Y1YmYCDX06r=V+kV;GD0Z~V=*JL%%T;> zB1X(-t(3xWqUU?8N6o=sZWgpT!FW~Pr zfVF`wa&ioG+LI&od0?Artk;U5nt^Uww_G?XPlO8rO<57nt%QM9K1pbNvx|b}sZU%dn1QjEMB|pzu`54mWu2Kv& zU9#dYh#o}{{l%=Vr@<)ymZuoqj_ii(CbW5R<@XTbiQ}!)y8+fLuC)FDhAgiAJYwV| z0%k3)`;vrAYYFHrZuqK%+}3A_*{B%lvEpdK;x*rpXONwy z&Kg5Xmi%KCz;p80ZGKVyv$byXL-=<+!al6}djvf#e!RE^SnjN{zKOna_WnKI7m^3u zv~~8WwwNXHtZ??fAd}qI9jLBz;8n^4R!|GkOy{72ys}%Idw(i1eb)8Fyq2Q@ED)~O zAsfz>J5Z+QG5q}&px?RD+KYkctiMASJV>a4i%ssg{f^Wd738-3Ok49giRrOEhR$;~ zsWh+kDv7Us6c`v8!u4bD+j;qyQB3iR2pX=Bv3b?sV&Q+l-va34A)v+VuoT<4DGWE!lugDkFQ4nWVX_zM9HIBQDq%2+tBWEYWbKV^$IJTCKKJw#4# z{EDJr-G|BAxru{>eETPoyZWR|^I9B>PHlhqtam{IoZ9~ITdzYsI$M<5Di@a-47p9# zVd-_JrGJE9J=`nhw#M?IH>%@G zz-z6ggho_aBRH}F^vagvowl8GAVVR~$xGW`7K5G};3Xv(P;i{}W!t*YGDQ zpGWk~AQ}8NlLmv&EAJoa?ZsQ5R}gpz+%v9`vyZWoJ2b}CoY_|5lMMu^&sTm*#&R$& zzmw%l`C48Jh8Zm+p=#C2T7dzakS<>frT-(gbVv%F{c77dP%VoXmTkMf`bkPeTmsis zds)ng1on!WA2RoQ4Eu$+aiE4H+W3HBzaBRZT>d_k!jWy>XC*!e;dxpr_4ySI?<_bR@NReY6etfCMaMb7;ng-k=U z8COvLi=6zbY9U|rGOJvO8DjO9S%uZ-5Q`k+z^LYjpGF-APLY!zV^x2jHMq*Xh!Ols zMZX!|3~@D$UxL+ttT)4{|Ef2`FwDKhPIsAmrMnc&7sdj^Tf7keD@#h}IZMi@5vqi< zWZt}M(1%V0-709#7xNHPv>1sS=WQzLhRhb10@#cx*rj9VG1g5?2Ied>jM8c(&n*&! z=Upy6Pbs2V0?2@(WhsitvH=oa0?^GA12KmY%Axl-gN%S%n&p=r{Ft>OVVMZ-5 z78)%eTwatf%>i&3@oX#`XL)lT2YO@~FxJTY&>=-)O)2wLFaQlQ4_&bk<2u-^6RHXc zc9#awz?CyaV&uU9mOJvPQFU}#2f@et>VnFxZbXDFz2$jWTlISKi3 z$dfY;;|=s1dV(4W&iG@DBO&xB7A#a0IjB>d>x>30&QXsd2lrB)D~*PH1iw#lmLQ_B zfsdmYc&jkz9nutjYa1rAnTA9vlAMUfNTBwB9tk_3MAFH_X_ z{VElaGo*D{m*levMlT_lKbg=VL$h<)2PqmpmSYLGrwpYjY*eT0mS z^Vm(ceuVvMe|MwPN5DEB_Q>WYlQCexv;d^eq2xhkpU5SWB%u%#12mWi&=ImI#52ef z3pghN2<6JpU2u{j5eE#lg%clktuRLcilme24AKB8z6_^R%!@eJIjYbJr_=-Vr(!|qodgfK0qP@>aEVF zj0l($Aj6|I!}y3YonieIt#Bj~OU5(l3D%lXkz_hMkzo&#^M}I82|Ik_L^v~wcs4vY z%2QGL*jAnxRlWs%Or4AO3EerSj8s8lj#ZF>r@Cd0-+E-;9UMI=MDAF#r61q zea8##LnnUyBd2G3&qzae!;c!*Iw$KJ8b;!E4e_|U@;5JD(c})guXca-H}0zKyBZvq zFKMV>vu3SSDi32g{8uYHS`OeF+sE(aoC{|Z9>1G&&b48f@W8@1oELG*=B5&lC1K_y zUmD>{qYXX{;d0PyFY(@G-0HZ+d9%5#Bmi?2X?$o*-XzllcNrgce8_pbd0Ww~#kaU_ zcK4LjsB(x$(-ElhdsD(R9Q)w6m$>gTZg%9$r`bq6){hU(LRE-{>d9HOM?Xg|I< z#;LGmOmyW&J0a(7>d0cN`X-q)_jV8LY3&L14Rq{j?+vx}_Vo4_etZ~0#;w@(&O{22 zHHNzOa)^mkIx~h3o#PP}mmBSm3{Z~>eE@P2XD@LW6JJ1Mw8k<}htN}5k(D1phw!B{ z(v!&{oXQi!>BvM@pY{|ukQPpgu@t_HP9-9CYbSRz1*RrXZ-r7aBPPX%Sp;C4s zF2%=j&J5=eLz3xeZF&Nv506E7uoVX<@h_Afg=(^qGOre_fUGAUzBG~XoN0`JwxGXwt?2X`FBz z3y+87$<-s{;iwpboQ1L@iD4WAjix6cL2@W)v2E|}=U`D{JFaS>n1r*g5iM2`c9|5H z{8{>g9U`<% zp8nNY(Waaj#w3U?NJAK;?1Umim++=LHJsK`3vOni>7#4-*CaoBZTnAspUtUCv1Uf2 zpe=opX%Ox4H0p$|E*RKd{jJvzw6*qhK$Y;Aa)JCFO5hYU)dU4Vq++qCeZ&`pvQR2G zwxEQj6+@>7GaL>!q~ZbjH<9Am+gLO}F0hkCJ|;2}&dA=5K#oa6k1hx~YzmP`VF=3c zBr-7y1<-ibmzGRc@H8?7Odsa9k8#iFBvnx*pWtI|L=GS-H#ocTN>gfyEtCrZ&4IBw zf}w!s!iz#PNq#}XyF0s~hoyEU2e)0{XM<`ra6=d@%QW<5(mX1hZ5U5y@GsA8%$(qW zo|5ziwsm(7Dq?8jsMZehyKWp0$2ob7U6@RE; zgc#DR&QR;a_B_~)DzW3({nEfeXY(92b$~R~X6Yo1GAfe88BBaUmCgR<5bNP-bIc2g zLm@dEpq~>t3}uBv^{CH!>#83LQQNO?773VsF@Y~oSRk;K*(h)-TM7!#Z-?VCh`!bh z@d-+&xPivCfQ34g64W%kgVhTG%9ghB$N|iGi#5Ecl$3HrU zERuqlXM5g?1X3i8855<_^bUpDrx@B88#&pBO2BnDlEYdlsnvmqWisiEngggaz#sBc z=!Ki?L7D`Z2zViYn%x*N$hm}a);W=i$bz5?2m5<_l)NOe=swO(#BEhWmm^&EsctJP z(+#tyQ`zi7na%ly1?EkvOX|ruO@3P<*QydQuG2{@wm|fq=J(#dj$HybCuDL`_srHV z_DnPmQ#z!sB7gw4a`i(SMvga3kl9=oT@7tP@tSp;0~AdzoRL`-rviXDMw zq`1=L8A@P!!%YvNOne9|P?e63?o3Ce2_{DZ$6F^@DE|ZoC`pgP$ z)LtPug4(3<+zaW z+NPN?sZOPV-BQi4@01BA5i$Ox^v#GKXNz{d;>5ZT)#ISaj}*!?X8M#;Hd%34PO>zS zJ19CR)7z-AK@d#FZ6bPN z+0!khD9`7Cj=_9dE9^9-!8+vn4bum%yORuR4=zR8www1K%ZdUpAidPRkxfWK|RNmgo=CJ4}kQy}*L)r0Igz`xXG&(vU*WE&P zw{4lrnzOW?yn4jIPo%J{#+QIIQ<3abWgzs(g{zvp!(nQN{z#`(eQ_ywQgzy zM#*zlHLp-761)(ja4xa!RM;upqmc?k%O~%oIijrGLm}BSv&=rp685~BUbLv`dtdB@ zm>NxLObXcRnAoMT^tNG{z?JDpOp0z-x4kgklS&_ksVHQJVDQ3>#Plf#-{BFA9yJpv zdj@u(HutqYvu!lFaDzrtldqup1WdLZqCmEH>l=SW+%|*bN&@u2vDeKr>q>c(5RH8dr~j4)~gA=I@E+aZJ8O2A-IdnvorYQpAu;U!Xb9L)}d zXAKj|zgo<&H>D(U^oO$%+;}9^UfkPs3RhIzqmXi;gqDj<=8-dnG|OADBPGJI@K6Hp z@(>jD*~u|%fWXgXls{sJz@!mTADv7AMftgmsE?;6>JMQfhq|c{2q6u}JBhCXM{aoLWj zkEF*S!HkOyO~jFhODDuDaC~BjQ)M2O;$ou?4P|17Y)q*qb&9T#A^|pt`quuP^)q{- zWY~Z7!P{hRsAF4Goh`o){_WW7Bg}{UaC8-Lc=aUX`Sly!acs`w$DL-0!#%xKaExPq zo>8ac*>w8>Y5A~;_@1V{SVP?zVM`7#L~l;t10+&@8#jc1>4pJIf5 zh({NLv+?*IijLnk*pD3?Ex_XoEjsemer&uO5kY!QaJ*N8?m8O@KJl17seQIDfESE( zHVs7O!yiN#Rg!$Ix)*!D?|^qVa5y;0f8I?{^A32QKsw7O9`A{)eFwZLq?5& zkN1fZ=EJ(OKOTXz>G5uZDRjnzh_fH!(R~ii#^V|P&3M;u?{gE^Zu{d1lP=4-4tUoA zFMzQ9*mzGOg7oZ%csxmLKX&kGMA%`bjpI9xBQ_Fzmc{4$aD{m1f!8Wi)SsPp<`TSB z_y%a+iWx*3@1HNhYhI6grQ{%(P4A6M@Q!Z4mnawyx-&d8~Y&*x)t~XkH_u!7yD+*GjaGZtKH{>e-69`I}xxQq+ifH(S9xJ2j&J4 z&#}n*dEq#g3+b5$h4|jvv=?Y^c_3c$aq3d3>-acz$<%2IRwYn(DOhobI!eJB5jsY} zlys$Y6pU9_c&JnodyeU`}#BrryRS?IIf-xuy9;d)yDR`XuTVGYAQ{G52gW$~H1Z=0{ zbE1OBDQ`rXiEzrBQVQY1kxqW%8iaz!DQ_O0iEzqWf(zk5Ud|Y6;$Bz#9hD7pOjCFB zao}C$?eJ|FAG(PD2KZY#oiNkw{-qWmZ1*20DO;`)Ez7%$0sXLi;`6I)3aflUb28*9Qd|;8km7d&xSc8$#2{wHPt?*@7MCi8ToGH z=ciqM#2aWI(+R7mRD1&I_WMiL=P!v5{!!8ie+jVto|5p>fbI8_gn0vl{eF`03xMtS zlZ4qne4nZw)&Elk@Oj|#Yc+Nu`TYuD`+cjOpKxJ*-eYLPczG-DZlY#kewN4fs7IAo zla~ioAGWVBo%amdF!Qs$HcWoqR{%4e?N`s-x5(EV=)!>3F9z;`W_}ySw_IWg(l3=i z8z$F-NVo3=G916W$a{)y`7|7*;wr$lzF~SVU_KY%SglbFw}3B|fNue8m(P2c|4gSJ z*Z92e;fR(8ra!LJ1@e>LDGlGD@y}{_vxa%1h~E;r0rTGIH+1?vI-U1O@p%G{^lCJ0 z-y6+yANKop-W%Ny*w&Zw-e`?)(|ebOpVRbsUc0b;e*xImC%iZMF^x|Z&GMhp@HP#9 zSHt$b(Ld4f37vl764=xeyj`CqfD8GDdm-dw(_63Mqu>k6=j9Q6sEG;lP%0mOUrl%f zaAEs%fD7s0r19 zy-#ZRoQA)63I5kLjATg<`|ybzm#p|$>yPo#oqeqlzdb0pv07AxMOE~VR)bXi06+fA z<|c-R(eO}cds}~~r+Z)!_t#>@jU5xb`@s#uxCJ*I!XD}nKC_5ogBdSiCh$t`?PBp7 zBb88V`VbcE*kn{2$b-;pi11Nq88-44#zbF47l{mj0x+NPhsBK&PHySDeYIEd^Qk_ERUgOPcL z*w>ZMx))m(UzoxO_3~r(&CD!7(t69)+N!bkwch!Qw(+`E;;VN+v)iVxHJ??J0-o{R zZQ+H^Y(k!{Y_X)Qsm!_@U2{^_X7-id1zZ7fbwhMPKe8^fub7wPNfxB4Hgi`x-iN*Y z#pn@?WPMZhO!MUp_WCWv%x4XkUa($pqqzRUXja$gw&rhD*PmF)JLcc{+WXmeXusXv b`{eA~U)ZiMga?9_#96(SzyJM`TmSzZIEO0g diff --git a/platform/config.cpp b/platform/config.cpp index 55d86d4..393eb98 100644 --- a/platform/config.cpp +++ b/platform/config.cpp @@ -38,6 +38,10 @@ static const struct poptOption optionsTable[] = { "Turbo mode (do not try to sleep between frames)", 0 }, { "conf", 'c', POPT_ARG_STRING, 0, 10, "Extra configuration file to load", "FILE" }, + { "mouse", 'm', POPT_ARG_INT | POPT_ARGFLAG_OPTIONAL, 0, 11, + "Enable mouse on controller NUM", "NUM"}, + { "superscope", 'e', POPT_ARG_NONE, 0, 12, + "Enable SuperScope", 0}, { "scancode", '\0', POPT_ARG_INT, 0, 100, "Scancode to map", "CODE" }, { "button", '\0', POPT_ARG_STRING, 0, 101, @@ -148,8 +152,7 @@ static void loadDefaults() Settings.Mouse = FALSE; Settings.SuperScope = FALSE; Settings.MultiPlayer5 = FALSE; - // Settings.ControllerOption = SNES_MULTIPLAYER5; - Settings.ControllerOption = 0; + Settings.ControllerOption = SNES_JOYPAD; Settings.ForceTransparency = FALSE; Settings.Transparency = FALSE; @@ -162,12 +165,9 @@ static void loadDefaults() Settings.ApplyCheats = FALSE; Settings.TurboMode = FALSE; Settings.TurboSkipFrames = 15; - Settings.ThreadSound = FALSE; - Settings.SoundSync = FALSE; + //Settings.ThreadSound = FALSE; + //Settings.SoundSync = FALSE; //Settings.NoPatch = true; - - Settings.ApplyCheats = FALSE; - Settings.TurboMode = FALSE; Settings.ForcePAL = FALSE; Settings.ForceNTSC = FALSE; @@ -250,6 +250,7 @@ static void parseArgs(poptContext optCon) unsigned char scancode = 0; while ((rc = poptGetNextOpt(optCon)) > 0) { + const char * val; switch (rc) { case 1: Config.enableAudio = false; @@ -283,6 +284,21 @@ static void parseArgs(poptContext optCon) case 10: loadConfig(optCon, poptGetOptArg(optCon)); break; + case 11: + val = poptGetOptArg(optCon); + Settings.Mouse = TRUE; + if (!val || atoi(val) <= 1) { + // Enable mouse on first controller + Settings.ControllerOption = SNES_MOUSE_SWAPPED; + } else { + // Enable mouse on second controller + Settings.ControllerOption = SNES_MOUSE; + } + break; + case 12: + Settings.SuperScope = TRUE; + Settings.ControllerOption = SNES_SUPERSCOPE; + break; case 100: scancode = atoi(poptGetOptArg(optCon)); break; diff --git a/platform/platform.h b/platform/platform.h index e4b73b9..8584d7c 100644 --- a/platform/platform.h +++ b/platform/platform.h @@ -12,8 +12,6 @@ extern struct config { bool fullscreen; bool xsp; bool enableAudio; - bool enableMouse; - bool enableSuperScope; unsigned short joypad1Mapping[256]; unsigned char action[256]; bool quitting; diff --git a/platform/sdli.cpp b/platform/sdli.cpp index 2eea9fc..1d20b18 100644 --- a/platform/sdli.cpp +++ b/platform/sdli.cpp @@ -7,6 +7,11 @@ #define kPollEveryNFrames 3 static uint32 joypads[2]; +static struct { + unsigned x; + unsigned y; + bool pressed; +} mouse; static void processEvent(const SDL_Event& event) { @@ -20,6 +25,24 @@ static void processEvent(const SDL_Event& event) case SDL_KEYUP: joypads[0] &= ~Config.joypad1Mapping[event.key.keysym.scancode]; break; + case SDL_MOUSEBUTTONUP: + case SDL_MOUSEBUTTONDOWN: + mouse.x = event.button.x; + mouse.y = event.button.y; + if (Config.xsp) { + mouse.x /= 2; + mouse.y /= 2; + } + mouse.pressed = event.button.state == SDL_PRESSED; + break; + case SDL_MOUSEMOTION: + mouse.x = event.motion.x; + mouse.y = event.motion.y; + if (Config.xsp) { + mouse.x /= 2; + mouse.y /= 2; + } + break; case SDL_QUIT: Config.quitting = true; break; @@ -31,26 +54,34 @@ uint32 S9xReadJoypad (int which) if (which < 0 || which > 2) { return 0; } - + return joypads[which]; } -bool8 S9xReadMousePosition (int /* which1 */, int &/* x */, int & /* y */, - uint32 & /* buttons */) +bool8 S9xReadMousePosition(int which1, int& x, int& y, uint32& buttons) { - return FALSE; + if (which1 != 0) return FALSE; + + x = mouse.x; + y = mouse.y; + buttons = mouse.pressed ? 1 : 0; + + return TRUE; } -bool8 S9xReadSuperScopePosition (int & /* x */, int & /* y */, - uint32 & /* buttons */) +bool8 S9xReadSuperScopePosition(int& x, int& y, uint32& buttons) { - return FALSE; + x = mouse.x; + y = mouse.y; + buttons = mouse.pressed ? 8 : 0; + + return TRUE; } void S9xProcessEvents(bool8_32 block) { SDL_Event event; - + if (block) { SDL_WaitEvent(&event); processEvent(event); @@ -64,9 +95,28 @@ void S9xProcessEvents(bool8_32 block) void S9xInitInputDevices() { - joypads[0] = 0x80000000UL; + joypads[0] = 0; joypads[1] = 0; - - printf("Input: 1 joypad, hw keyboard input only\n"); + + switch (Settings.ControllerOption) { + case SNES_JOYPAD: + joypads[0] = 0x80000000UL; + printf("Input: 1 joypad, keyboard only\n"); + break; + case SNES_MOUSE: + joypads[0] = 0x80000000UL; + printf("Input: 1 joypad + mouse\n"); + break; + case SNES_MOUSE_SWAPPED: + printf("Input: mouse\n"); + break; + case SNES_SUPERSCOPE: + joypads[0] = 0x80000000UL; + printf("Input: 1 joypad + superscope\n"); + break; + default: + printf("Input: unknown\n"); + break; + } } -- 1.7.9.5