From 05ca4b2991e34d147233d3582297706638175c9c Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sun, 20 Mar 2011 18:34:14 +0000 Subject: [PATCH] --- cpp/wiiusej/dev/WiiUseJ.dev | 99 ++++++++++++++++++++++++++++++++ cpp/wiiusej/dev/copy.bat | 1 + cpp/wiiusej/dev/copy.mak | 2 + cpp/wiiusej/msvc/WiiUseJ.suo | Bin 29696 -> 28672 bytes cpp/wiiusej/speaker.h | 22 +++---- cpp/wiiusej/wiiusej_WiiUseApi.c | 2 +- java/native/WiiUseJ.dll | Bin 14848 -> 39131 bytes 7 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 cpp/wiiusej/dev/WiiUseJ.dev create mode 100644 cpp/wiiusej/dev/copy.bat create mode 100644 cpp/wiiusej/dev/copy.mak diff --git a/cpp/wiiusej/dev/WiiUseJ.dev b/cpp/wiiusej/dev/WiiUseJ.dev new file mode 100644 index 0000000..f34b3da --- /dev/null +++ b/cpp/wiiusej/dev/WiiUseJ.dev @@ -0,0 +1,99 @@ +[Project] +FileName=WiiUseJ.dev +Name=WiiUseJ +UnitCount=5 +Type=3 +Ver=1 +ObjFiles= +Includes=..\include;..\include\win32 +Libs= +PrivateResource= +ResourceIncludes= +MakeIncludes=copy.mak +Compiler=-DBUILDING_DLL=1_@@_ +CppCompiler=-DBUILDING_DLL=1_@@_ +Linker=--no-export-all-symbols --add-stdcall-alias_@@_../lib/wiiuse.lib_@@_ +IsCpp=0 +Icon= +ExeOutput= +ObjectOutput= +OverrideOutput=0 +OverrideOutputName=WiiUseJ.dll +HostApplication= +Folders= +CommandLine= +UseCustomMakefile=0 +CustomMakefile= +IncludeVersionInfo=0 +SupportXPThemes=0 +CompilerSet=0 +CompilerSettings=0000000000000000000000 + +[Unit1] +FileName=..\speaker.h +CompileCpp=0 +Folder=WiiUseJ +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit2] +FileName=..\wiiuse.h +CompileCpp=0 +Folder=WiiUseJ +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit3] +FileName=..\wiiusej_Speaker.h +CompileCpp=0 +Folder=WiiUseJ +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit4] +FileName=..\wiiusej_WiiUseApi.c +CompileCpp=0 +Folder=WiiUseJ +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit5] +FileName=..\wiiusej_WiiUseApi.h +CompileCpp=0 +Folder=WiiUseJ +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[VersionInfo] +Major=0 +Minor=1 +Release=1 +Build=1 +LanguageID=1033 +CharsetID=1252 +CompanyName= +FileVersion= +FileDescription=Developed using the Dev-C++ IDE +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion= +AutoIncBuildNr=0 + diff --git a/cpp/wiiusej/dev/copy.bat b/cpp/wiiusej/dev/copy.bat new file mode 100644 index 0000000..cb938a8 --- /dev/null +++ b/cpp/wiiusej/dev/copy.bat @@ -0,0 +1 @@ +copy WiiUseJ.dll ..\..\..\java\native\ \ No newline at end of file diff --git a/cpp/wiiusej/dev/copy.mak b/cpp/wiiusej/dev/copy.mak new file mode 100644 index 0000000..5459618 --- /dev/null +++ b/cpp/wiiusej/dev/copy.mak @@ -0,0 +1,2 @@ +all-after: + copy.bat \ No newline at end of file diff --git a/cpp/wiiusej/msvc/WiiUseJ.suo b/cpp/wiiusej/msvc/WiiUseJ.suo index 4b266710fbab61ad1041a77b232dd0d63e7e4616..739ff4900f420fa7b805420dccf97e67fd294145 100644 GIT binary patch delta 1074 zcma)5OH30{6n(EVQ-)9Z)Rs=9N?Y1eEG-{PO3TN#R3QSEPf-M-d?bh>R)dC56RTmt zQhHr!Oe{Nh%4}RV!qSb#r3-cC%DCvlCd7K*K#39;zUFl9IrrWB=H7QF@r@=v(^qd) zVgn(h5dmqH1RlR5HA$2Ff-sPRXqWLh22K8Buv`#@R=;&~vV2?Q zISzv$6|Dl3L4>ydd_dG7Db5Q^6$zz6M)rl)8rnRBXKNro-C5nq?xqA%gS*YJ5rVVFU10BgAqRY zL}=ti*!Ag>(ogD&)=LFzP|{iUYnBWL476b#NlEWQpOnE zGPrciI8J)7_9=1=|L+nLNuEl>hR-9-yRXONYvIPTO~DqnFTbF~>7ffi&sp%2Juqp} z!DEvhDry@3QY#@@WrGi)?{dNw=0tWBn?>cCGmRg4sBqUqrsbU+7@DSFjmBYX_z|oJ zjR)hSWEN&Hq#Df8YIqS0z+SX`+n*@V+$L@^Lt^+Nq!1nktN)0R1QV*u%9RD8=V7)( zD?b?tQ#swWA@YUj+n=;PoHW{ulzkKXZx!iNL9?L~oMx@;n2!}C#}bgRTVTs$R)%&2 zcW%Opy$&ob7SV@{b(6&kql#;Aycc%I+94EjgK3n<-be!L{!=+J@tRVzOs7-af7fa{ T(v5#sHn&s+(_L;jdG+gW08%dv delta 1565 zcmbW1O>7%Q6o6;FYkO-aG;wX$G!9w2PUHO8-F2M!C#H^L$C1*|#I#UoH-ND%Waqd3 zNt4>8E`RcR23$rhY;cg!QZ>~+QSMntK{$f@Tg6?#B5NE4~M|3 zvQt5btGWy&RCn;xPV7%0OUO0&P&H(`*+?Y6R9!+NFH+Bz=fdqT1Xr!B)!@Yd}T2Ysj~j4SrNK z6#mIQ`9MVoLvF#;agQ{tV-&2MOAR9XRGCn?se&u|GtlbngDw5r)B{*CY#(;xK#_!q zi$uvN@xZz<2vuW*x*=~B?sRiXd4(Hb@mZjH)ZB7EzjHJE)!o+5kC9KlKm2$DER4Ql zdPtR|ZPRHQHW^+i2a}Xm%tcDcqsU6z?PCl@;JPOW*DaZr09hc5Bt_=&Xqs`0u+Ei^ z>^I_v&=KgTFOxI`txv;GF&kv8I+*G1rsN}sM+L`-$KCG` zgvjmAVdf<72#pFM2hWH2u#b;Mqv8ImrNDFPTq2sDP32CN5`M9eOJ#FnHa#Qe;9jgt zom))BXHr=xT6=u&KhgaGo+~|7cg_1$cHxa|e2%NF$Jv*?gWckId?_wwk~4yH(8<5* z>KD`ViP=IjC1&Pf{dg~Q^jg5Iv%&ASR`|`T-W&b|Ln2R(`G8Fw6fV4LGhU-H`SoV2 z9%@LD|DA{boC8`;LfjUzpT&}{H+^*)<#tpexBfa0x6dsIZkHo0l^qe9l_#G-YIkUh z|B+$z4Gp#i?m(Nab6+-xN{7A9;0U@8E zEZNSEsQIeSC1EzAJ46E8<;28!sF9zT}trz8{{c^?O imALej629wOuI=Sh`d=;Zs|McDj?}!$p8t-!8t0$J&br3{ diff --git a/cpp/wiiusej/speaker.h b/cpp/wiiusej/speaker.h index 8b8267d..aad8b4e 100644 --- a/cpp/wiiusej/speaker.h +++ b/cpp/wiiusej/speaker.h @@ -2,16 +2,16 @@ #define WIIMOTE_GET_RUMBLE(wm) (WIIMOTE_IS_SET(wm, WIIMOTE_STATE_RUMBLE) ? 0x01 : 0x00) -#define WM_CMD_SPEAKER_ENABLE 0x14 -#define WM_CMD_STREAM_DATA 0x18 -#define WM_CMD_SPEAKER_MUTE 0x19 - -#define WM_CTRL_STATUS_BYTE1_SPEAKER_MUTE 0x04 - -#define WM_REG_SPEAKER 0x04a20001 - -static byte cfg[9] = {0x00, 0x00, 0x00, 0xdd, 0x40, 0x00, 0x00, 0x01, 0x01}; - +#define WM_CMD_SPEAKER_ENABLE 0x14 +#define WM_CMD_STREAM_DATA 0x18 +#define WM_CMD_SPEAKER_MUTE 0x19 + +#define WM_CTRL_STATUS_BYTE1_SPEAKER_MUTE 0x04 + +#define WM_REG_SPEAKER 0x04a20001 + +static byte cfg[9] = {0x00, 0x00, 0x00, 0xdd, 0x40, 0x00, 0x00, 0x01, 0x01}; + WIIUSE_EXPORT extern void wiiuse_speaker_enable(struct wiimote_t* wm); WIIUSE_EXPORT extern void wiiuse_speaker_disable(struct wiimote_t* wm); WIIUSE_EXPORT extern void wiiuse_speaker_mute(struct wiimote_t* wm); @@ -20,4 +20,4 @@ WIIUSE_EXPORT extern void wiiuse_speaker_activate(struct wiimote_t* wm); WIIUSE_EXPORT extern void wiiuse_speaker_deactivate(struct wiimote_t* wm); WIIUSE_EXPORT extern void wiiuse_speaker_volume(struct wiimote_t* wm, byte vol); WIIUSE_EXPORT extern void wiiuse_speaker_frequency(struct wiimote_t* wm, unsigned short freq); -WIIUSE_EXPORT extern void wiiuse_speaker_data(struct wiimote_t* wm, byte* data); \ No newline at end of file +WIIUSE_EXPORT extern void wiiuse_speaker_data(struct wiimote_t* wm, byte* data); diff --git a/cpp/wiiusej/wiiusej_WiiUseApi.c b/cpp/wiiusej/wiiusej_WiiUseApi.c index 8d28964..aa190ca 100644 --- a/cpp/wiiusej/wiiusej_WiiUseApi.c +++ b/cpp/wiiusej/wiiusej_WiiUseApi.c @@ -747,4 +747,4 @@ JNIEXPORT void JNICALL Java_wiiusej_WiiUseApi_streamSpeakerData } wiiuse_speaker_data(wiiuse_get_by_id(wiimotes, nbMaxWiimotes, id), data); (*env)->ReleaseShortArrayElements(env, sArray, jShorts, JNI_FALSE); -} \ No newline at end of file +} diff --git a/java/native/WiiUseJ.dll b/java/native/WiiUseJ.dll index 94eb17ca9b76f9cceaeb9f6fba2cc752ea7d51ed..a34e1b575984e7ef380b50f05b9e76cc89195abe 100644 GIT binary patch literal 39131 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

~Tu}ksI^>{XcW#i`)m$A#)6)4h)Y!bVY z<*~{5xx!U!3cH$J!@kH2Y%05!UB~j-H2los23EkP<0lk1;pY)E*(^32KWivtCT3<9 zR>X=~2`gn~tenkZ6|9m~v1(>zbMeE3`D_8Rv4w0At6{bHiNg|B$Ck3ij&%hu0filY$4LjHw9qIURR8{i7M#$k~zzY;`*wo@QSnL2|UU zG%$f6#)Ecg^Myu}V_C{G#vQ@6YDTp1lrnkF1ZHeSioVBnxQS@qOaK6LsTIF}ph%7a( zB-w*FJ_b!9i8CY@((I{Cm?P+*=p+JM9#=4t0Th=cso&YS(bJkJF^^4>Jb>Y8Ypc`U zw8rlYtns=NWPBy?OWrB)~`h7=@^p>t@TTjKD;Ge!Hr2|YWR|itaG*{e9OW* zinf{(_PF4XXI_#MoxD<};>%>ol3OgNyxH%r+>t zVjo2T?~NDwop*IQJ*~;wjoiaWSw|^CF8EfjyR#$V5DhIvmdg2(i)?arIK7<-yFv() zIjkmQl2W+Ubmj%QoNRdp9&)Mp7xa+Z)lh6`{C0P*#{Z2=R?4$+s z!|epqgFq}}5?`*zOVqnQ(C7@#!}3^=M!k58wceRXb|QYVn_ptS|Kq#(e4l;@OGNYk zS3oVm#r$5(>uF9e=JGU;7xQ;9Zx{1*nyZUBx|o~Oyj;x3#XMZhziI9*=G-*j7V~T| zzZUaqF`uS+^gh`4dr+>Qu?3(G(6>PcK<|MjU|wwm*+E|i^@C1;CSzW01GRyAKu?2y z2|5kB0`ux>(4C;iKzl%^K{sJuy&SX|^sk_IL04c-Js0E#Jp}q0=p-l)^XboauBu*j zNl=yaqw*vbR4}JBb{5R34uu8(r~_QV7#&ljV6oh&l5n2uoGO{9^O_AM5vUC5Q}VpR zo~rMa6r*}yVNJ#VD(;k~0!cbD?QlPdx1t02nclU(3HCRxTlgTV)h z|NQ#@zyoc)N+u3J#Ml(jpbBgGCSzNHol#+r0(%Nrs@EW;2W32rF&k(G$O>8xa)Uyk zZJ=GC0njN>)+0E%2~-Md0{K8&K-)mOL5D%Zp!`QM1_U*Me4t*?E|9nmA$%A#sKQQB z799+f3nLv&6KYUfk|t3bYzpvBduN05mWMW zTXch(lHn4vXmz_2GX;hn85zS%+rDa}-PJ}Y_S*#R=gaNtz1`&}2)j9Q`VQ$! z0DFLc3LwShia6rO?ri|*m1@i@Eu7ec(FHG*sXE?4%VC;m>UfXzrNo`~IKG+~k1vkTCaC#ViAktE zAk9LdFH^+(Xa-G3g$cX)`!l*5hPWxQamoM_u?)L)F=^YQiycz@Rk88>_%YP;xovH< zJ3klmG`0|PX8v$Yvult3g4ylZ!}fZd8?a7`zKz+Pe!s^{!jCh%%e#uPiRq42UVo4o z)7#tKoq;tJSC-!H^W*E5c7&_bVU&|Ge|m=lqNIwlA-%)d(dxslDf$%jm4cSo8kX7W z%qHF%(a#`mH0lVfYxM_33X=GL@ycOr13vzmZ(M4;%lM%22gWyy$Bd_qmle(^Tvg~U ze7JC1;lCIDXW>Pr@uqy!O(wIc&UBl}Yw9vRXnNH2l<6m?pPGJQ`n~Ct>8xp-`C9W$ zX0zF5UTJPOd(0v8R&$^EpUlsje`!8ue$V`o*XO+di%RNCmY1w8xvwNr@<_?Ql)PH(Zz zI4kb0_-@7CinlBNR58ACdZn%ME0tZ9uT_3pIiu?Ksx4K!t1hm-p?Y?;tNQ-x9o7BS z$Ewd(V^f+9qgZo|Mq{0Ejd8PayK%4aZR4Me(+leg+Y3E~I|_ej$}^kH?6>|JU$!|)2S8{b}Q|XG*$4cKQeY-Tf zY+>25vMpsVl^rY_E}K?fU;dTy9p(GW-z^_0zh+L!oG;H=Kj*PI@6P#P&gnVtSA1CU z5w^SYDyPDJbLEoCrpgtS{>q0cAFupD<+GIqRfSb$RdrPlS3O?!gQ|b7dZub$)&8oV zSG`sB>#E;YeNc6}>XWMU>T%VVSAU`U+UgstP1WVq^QsqDH&owVy{dX`wZHmX)w`=- zsyh3 zmYY_XT1;)GH72*oX9}7&m^PV0rp=};CPaSTUOsOxpSKs5a(h9O`TY8S*8{WK@m(a$ zvx7bzVQh6;JHCL?+UvmwkA%?AGcE#+VUBi;Dlu-gC}<(zm|&a#4kFo9Rpq!NYBis1R=RZWY39ep`ibn?F_| z+~&Noiezqcxq?`@&9|x$ZgZy!;eLKZg>aj9s}OGUJ1T_RJQm+0%lWc!n@uW&+x%q} z!fn1^g>ajnR*)iY^MDHBHlJ1@+~(<*Mzt4ln_E=~xB1&Dgxma<3gI>ns}OGU^eja( zx4A)uaGSrXAjRC~AF2>;^P4J!+l*8JZDummd zJ3-OKZLU_35^l3Yg>akiS0UWyJt~CT{09}nZO*~3=H!}C!fh^AA>3xW3gI?KR0y~E z`6%LcU}7s@=%UfLh!e;M@F*elC*~5Tj}we;oY5I#v6nbe+<*vllJR-u)5IyQl&`c8 zVcB+ij9#<+{Dg1<&@DiY5&gUN5^t*x!2E56xjg2|h4gv8>LNSnN@E6=9>->i`vU#J zCD|;63h*~4irDe_F0B!?AiX39D+heppf`#LA5wBsGbZgPxJ{b z5P4q@fae_<4+J~g+qIde`qD2fB%@+3VKe6;o6!+T)+>zXVzU9s5|+C>x-h^FZZqka zM8&JQYX6#|mm8ht^ya;&)L~T<^^)jC3Xn0NnacGci zNZq7C3W0o2gWLh+s0R5OkX+PRMLX4on>EP$KpxN_lOW?&4N?n)3|8d0fjpu?9tZLZ z4RR33rD$AADmtRFR)b7}o=qBrPG5ORgZP1@V+^3k*$%{}K?Z4rq|+u8PbaHm3AjhbaW7WyolY$&NJ5_7Xa-E$16y%iZO16D~z zeh%s645T2(s*|%#C+A2Ca_Agbtv$PRat2e7Lubuu*SQ`*SQC zASbAkLt_QSLh`dU1v#`!rKBQ1)Bk3mAS9PiLzf7i7zR9w@sAZ@m>r)-o|VuWjoXahf5)-;HmaFI4)e|8bNr}w z#NbJD*%>ru!k(yUwf(C5k)!Xx&AqovVnUnUd<#KAA)C4@DRYp zU`En{yOehV*d!nZ+$E0@z@`H6;jZw^0#X1(;VAQ4#{1P9G;_o;aDS8Ti z(IA#HNTorFPeF)`$T>Bfm-diO`wKel)K_V>Pf=3I+KuO>eTyPT`dbRI=xN=cS!is5CXIXiuyz3%&X@JjJ<6Dp`BzytHpn2 zsB_Xzhseuvq4dKthPih)T|pH*m;voac)`#0nKhOhDQ+auxv*{XFNn1BmDkVUPStyH#V4 z2Rt+?AkXtuUjafJ-XkLdc@#*!hUcG%hZ$5n2Y^rxlvMvA@$mBJlK%uGsF8COzBdtl zFXy4t_viwfY)=^wv2(kmMD8lF77RK;kJ^W*~&y9^vD0wVT7II;l97LA-XAap4;!4E`RSHDR-n$r0fAiFej zo|okSlzsRH5YbY&_TK^7qp9Kl1te4BjR{z6vuY$y10q%nxtwYsbSb)S2I7vUl73fV zw@dL#-Jt&pjV=Z022ub-sfSx79-J2$t%o}aiRRrd|Foh-Q=fkd9<9fIBgs)q{s_o} zQ47hA%g_Of-jC<&8X&!hQOaUAkO4^-dDSle2*jY#UP(NfRJB0zG+tc^gf8weyZi%^ zkVZ}icnlf~Lz+~S{$U{X8p+=WqF6{gKL)a0Bj;5h3pB_O5HZ5%dH*Yr77fote2XM@ zmpIQXAYwm`BQ_wfYf?1=*{nf=Kvrmwhk;NfRZ96EffQ(XUIbF3K?Z?{-CM4mzLpaE zaU2F!q1d^lip$*7ZO}l6S!lFFrMLlh(&vZe!+`igKPP7EEk}LfH zs6L7i_g&yo-VTJ^1EgPL;n#sYsnOmCgetva^F9etYkwUGz0DM!UjymYNInhZg(za@ zKV@P*jfK>HvVG--J5 z0ixCZ9Ubz&fb7zg-~k}pB|i)Q&?zZ(8p(eIvRs2qxE$Y6Ymn=J^lIc-fN1-=TY%kovLUMd4LsQwxZO*!K{3Cf3Fpk<^c^4l*xTOj z@&|(An>aguKBqjO=l9wJYu#(@(ho@O2~H}Je}O7V!;k#%gHL=go`_i-9hWFx9HnOW ztXk^WaNB6&THTuS6eSxHn5jDAEs=8NsF6e*;)oOFG>$}^%I_aX=M_@5hlq?WIW>ME zU3ccl=n7I!f?v^!bJ!9|1xuXsC6aJU=e0#oHKQ{ck}+!zvrERT91xO7oN$=t9F;`O zN;#**E@UeQ$R?|^ityC<;bYxV8;K0p^5TTIWQGuPf`d7d$rnjtPC`qPB*`gXiBf5f zl}W^e45-c}OTwi)!zBstCKo>Hpfu}2antGvk$0ZXV(d&XHJHn>rBYG<;_AnLH{ z?50FQl?t2!GgY!UC$l7yt*|TS)+OYPcQy+DMY`&EXKa&;RV@)H5`kiQb5XoTB?r;l z3Mb6rp!hc0|HtccwcESO;kLI)>nIwCFRj?^J|`VRZ})fN1nCZ^UD}_=ne%?8-mstP zb_Iek$4+PB(~0!<06qwJZ6Gb0WAg27&UQzqJ8193tD85^mP3Q*umkPWiX<2u8;VcFHJ4HZ(75 zs$FWc*Eial7u;-bu+`l>-(FYS*o48ie6%)lFP+E`edLEqz>_#+j}9X62UW~Cje$;a zmLf^Pf~K1rq5|!%4j+6Yo!BjpS7Kcibox779(?{!iG%KdqCk^aI_ucM>GCFM$^K{z6Y8?e*A&Ph(d zoMf#RheC9&3TzAnogMadPJaOB>q>EUtS#C%xD(_EEyXU*i-c4H-0;$wQ%~<1f_;eLRUhETI z^{GUwt9oq7psma2wW#gaoMaM{6J37eWQ~`sFK)@kEi*JUR90_5Q%jN0Hgyw{eCk;3 zw6AgmcpVR*f1)~#K6SOH1E=RoeoESt*lU;8-`vn-UtnvT-%wjmeFCpc2}(@*SV-<+ z_(}j=tm!Y2aK5H%p@NlJwe?gwf|kRlX8=NM7F&ovOB;s?uvrmT_L9Dkgq>5Xx9NfF|zCNt`qz z{Hw{LrY}%;`@HGlP$Tg+RJ{W1>>k;UWzBVU_NJQVWlQV}<~Ge0-j~-nwH}P$MTkyP z=i8Xp5i`=D_h?Mpkn4gNCPraL)%57XlsKiwUxKa<>NV6aK)2V?hM|E} z6jGm|u1nNb#5qf{D>QFCHLtV=fHSbPE)zo!Rh~p=h7pO!>84>?Y#L}4RfBhj@!#D% zPM0OQV59cL8DXgEptb?)dWt0dzkHCFUEkd#?smls48tKM`_TcBsIl>@g)$}3lzB|~ KsInG2&iEfMauR9) literal 14848 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 acb@CxcJRCSC-?*Wo0t`dFP}fz0{;W(q5}B<