diff --git a/c/wiiuse/msvc/copy.bat b/c/wiiuse/msvc/copy.bat index a576839..ae549f4 100644 --- a/c/wiiuse/msvc/copy.bat +++ b/c/wiiuse/msvc/copy.bat @@ -1,4 +1,4 @@ copy ..\wiiuse.h ..\..\WiiUseJ\ copy ..\speaker.h ..\..\WiiUseJ\ copy Release\wiiuse.lib ..\..\WiiUseJ\lib\ -copy Release\wiiuse.dll ..\..\..\java\main\native\ \ No newline at end of file +copy Release\wiiuse.dll ..\..\..\java\native\ \ No newline at end of file diff --git a/c/wiiuse/msvc/wiiuse.suo b/c/wiiuse/msvc/wiiuse.suo index da779bc..5d4b41d 100644 Binary files a/c/wiiuse/msvc/wiiuse.suo and b/c/wiiuse/msvc/wiiuse.suo differ diff --git a/c/wiiuse/speaker.c b/c/wiiuse/speaker.c new file mode 100644 index 0000000..5f20160 --- /dev/null +++ b/c/wiiuse/speaker.c @@ -0,0 +1,63 @@ +#include +#include "definitions.h" +#include "wiiuse_internal.h" +#include "speaker.h" + +void wiiuse_speaker_enable(struct wiimote_t* wm) { + byte buf = WIIMOTE_GET_RUMBLE(wm) | WM_CTRL_STATUS_BYTE1_SPEAKER_ENABLED; + wiiuse_send(wm, WM_CMD_SPEAKER_ENABLE, &buf, 1); +} + +void wiiuse_speaker_disable(struct wiimote_t* wm) { + byte buf = WIIMOTE_GET_RUMBLE(wm); + wiiuse_send(wm, WM_CMD_SPEAKER_ENABLE, &buf, 1); +} + +void wiiuse_speaker_mute(struct wiimote_t* wm) { + byte buf = WIIMOTE_GET_RUMBLE(wm) | WM_CTRL_STATUS_BYTE1_SPEAKER_MUTE; + wiiuse_send(wm, WM_CMD_SPEAKER_MUTE, &buf , 1); +} + +void wiiuse_speaker_unmute(struct wiimote_t* wm) { + byte buf = WIIMOTE_GET_RUMBLE(wm); + wiiuse_send(wm, WM_CMD_SPEAKER_MUTE, &buf, 1); +} + +void wiiuse_speaker_config(struct wiimote_t* wm, unsigned short freq, byte vol) { + if (freq > 0x0000) { + cfg[2] = freq & 0x00ff; + cfg[3] = (freq & 0xff00) >> 8; + } + printf("speaker 0x%02x%02x\n", cfg[2], cfg[3]); + fflush(stdout); + if (vol > 0x00) { + cfg[4] = vol; + } + wiiuse_write_data(wm, WM_REG_SPEAKER, cfg, 9); +} + +void wiiuse_speaker_data(struct wiimote_t* wm, byte* data) { + byte buf[21]; + buf[0] = sizeof(data) << 3; + memcpy(buf + 1, data, 20); + wiiuse_send(wm, WM_CMD_STREAM_DATA, buf, 21); +} + +void wiiuse_speaker_activate(struct wiimote_t* wm) { + wiiuse_speaker_enable(wm); + wiiuse_speaker_unmute(wm); + wiiuse_speaker_config(wm, 0x00, 0x00); +} + +void wiiuse_speaker_deactivate(struct wiimote_t* wm) { + wiiuse_speaker_mute(wm); + wiiuse_speaker_disable(wm); +} + +void wiiuse_speaker_frequency(struct wiimote_t* wm, unsigned short freq) { + wiiuse_speaker_config(wm, freq, 0x00); +} + +void wiiuse_speaker_volume(struct wiimote_t* wm, byte vol) { + wiiuse_speaker_config(wm, 0x0000, vol); +} \ No newline at end of file diff --git a/c/wiiuse/speaker.h b/c/wiiuse/speaker.h new file mode 100644 index 0000000..8b8267d --- /dev/null +++ b/c/wiiuse/speaker.h @@ -0,0 +1,23 @@ +#include "wiiuse.h" + +#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}; + +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); +WIIUSE_EXPORT extern void wiiuse_speaker_unmute(struct wiimote_t* wm); +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 diff --git a/c/wiiusej/lib/wiiuse.lib b/c/wiiusej/lib/wiiuse.lib index 2d3246f..fe754f9 100644 Binary files a/c/wiiusej/lib/wiiuse.lib and b/c/wiiusej/lib/wiiuse.lib differ diff --git a/c/wiiusej/msvc/WiiUseJ.suo b/c/wiiusej/msvc/WiiUseJ.suo index 8c3ad92..397276d 100644 Binary files a/c/wiiusej/msvc/WiiUseJ.suo and b/c/wiiusej/msvc/WiiUseJ.suo differ diff --git a/c/wiiusej/msvc/copy.bat b/c/wiiusej/msvc/copy.bat index 719f8e8..017a544 100644 --- a/c/wiiusej/msvc/copy.bat +++ b/c/wiiusej/msvc/copy.bat @@ -1,2 +1 @@ -copy Release\WiiUseJ.dll ..\..\..\java\main\native\ -pause \ No newline at end of file +copy Release\WiiUseJ.dll ..\..\..\java\native\ \ No newline at end of file diff --git a/java/native/WiiUseJ.dll b/java/native/WiiUseJ.dll new file mode 100644 index 0000000..5933e93 Binary files /dev/null and b/java/native/WiiUseJ.dll differ diff --git a/java/native/wiiuse.dll b/java/native/wiiuse.dll new file mode 100644 index 0000000..b9ee349 Binary files /dev/null and b/java/native/wiiuse.dll differ