Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/gc/wiiuse/wiiuse.h b/gc/wiiuse/wiiuse.h
- index 2aea127..e9019ca 100644
- --- a/gc/wiiuse/wiiuse.h
- +++ b/gc/wiiuse/wiiuse.h
- @@ -87,7 +87,8 @@
- #define WIIUSE_ACCEL_THRESH 0x04
- #define WIIUSE_IR_THRESH 0x08
- #define WIIUSE_JS_THRESH 0x10
- -#define WIIUSE_INIT_FLAGS WIIUSE_SMOOTHING
- +#define WIIUSE_CLASSIC_EVENTS 0x20
- +#define WIIUSE_INIT_FLAGS WIIUSE_SMOOTHING | WIIUSE_CLASSIC_EVENTS
- #define WIIUSE_ORIENT_PRECISION 100.0f
- diff --git a/wiiuse/wpad.c b/wiiuse/wpad.c
- index ddb669b..c1754a6 100644
- --- a/wiiuse/wpad.c
- +++ b/wiiuse/wpad.c
- @@ -178,7 +178,22 @@ static s32 __wpad_disconnect(struct _wpad_cb *wpdcb)
- return 0;
- }
- -static void __wpad_calc_data(WPADData *data,WPADData *lstate,struct accel_t *accel_calib,u32 smoothed)
- +static void __wpad_convert_classic_events(u32 *btns_h)
- +{
- + u32 btns = *btns_h;
- + if(btns & WPAD_CLASSIC_BUTTON_UP) btns |= WPAD_BUTTON_UP;
- + if(btns & WPAD_CLASSIC_BUTTON_DOWN) btns |= WPAD_BUTTON_DOWN;
- + if(btns & WPAD_CLASSIC_BUTTON_LEFT) btns |= WPAD_BUTTON_LEFT;
- + if(btns & WPAD_CLASSIC_BUTTON_RIGHT) btns |= WPAD_BUTTON_RIGHT;
- + if(btns & WPAD_CLASSIC_BUTTON_A) btns |= WPAD_BUTTON_A;
- + if(btns & WPAD_CLASSIC_BUTTON_B) btns |= WPAD_BUTTON_B;
- + if(btns & WPAD_CLASSIC_BUTTON_MINUS) btns |= WPAD_BUTTON_MINUS;
- + if(btns & WPAD_CLASSIC_BUTTON_HOME) btns |= WPAD_BUTTON_HOME;
- + if(btns & WPAD_CLASSIC_BUTTON_PLUS) btns |= WPAD_BUTTON_PLUS;
- + *btns_h = btns;
- +}
- +
- +static void __wpad_calc_data(WPADData *data,WPADData *lstate,struct accel_t *accel_calib,u32 smoothed, u32 classic_events)
- {
- if(data->err!=WPAD_ERR_NONE) return;
- @@ -229,6 +244,9 @@ static void __wpad_calc_data(WPADData *data,WPADData *lstate,struct accel_t *acc
- calc_joystick_state(&cc->ljs, cc->ljs.pos.x, cc->ljs.pos.y);
- calc_joystick_state(&cc->rjs, cc->rjs.pos.x, cc->rjs.pos.y);
- data->btns_h |= (data->exp.classic.btns<<16);
- + if(classic_events) {
- + __wpad_convert_classic_events(&data->btns_h);
- + }
- }
- break;
- @@ -258,7 +276,8 @@ static void __save_state(struct wiimote_t* wm) {
- /* ir */
- wm->lstate.ir = wm->ir;
- -
- +}
- +static void __save_exp(struct wiimote_t *wm) {
- /* expansion */
- switch (wm->exp.type) {
- case EXP_NUNCHUK:
- @@ -375,6 +394,7 @@ static void __wpad_read_wiimote(struct wiimote_t *wm, WPADData *data, s32 *idle_
- *idle_time = 0;
- __save_state(wm);
- }
- + __save_exp(wm);
- } else
- data->err = WPAD_ERR_NOT_READY;
- } else
- @@ -510,8 +530,8 @@ s32 WPAD_Init()
- s32 WPAD_ReadEvent(s32 chan, WPADData *data)
- {
- - u32 level;
- - u32 maxbufs,smoothed = 0;
- + u32 level, maxbufs;
- + u32 smoothed = 0,classic_events = 0;
- struct accel_t *accel_calib = NULL;
- struct _wpad_cb *wpdcb = NULL;
- WPADData *lstate = NULL,*wpadd = NULL;
- @@ -546,6 +566,7 @@ s32 WPAD_ReadEvent(s32 chan, WPADData *data)
- lstate = &wpdcb->lstate;
- accel_calib = &__wpads[chan]->accel_calib;
- smoothed = WIIMOTE_IS_FLAG_SET(__wpads[chan], WIIUSE_SMOOTHING);
- + classic_events = WIIMOTE_IS_FLAG_SET(__wpads[chan], WIIUSE_CLASSIC_EVENTS);
- } else {
- _CPU_ISR_Restore(level);
- return WPAD_ERR_NOT_READY;
- @@ -557,7 +578,7 @@ s32 WPAD_ReadEvent(s32 chan, WPADData *data)
- _CPU_ISR_Restore(level);
- if(data)
- - __wpad_calc_data(data,lstate,accel_calib,smoothed);
- + __wpad_calc_data(data,lstate,accel_calib,smoothed,classic_events);
- return 0;
- }
Add Comment
Please, Sign In to add comment