Guest User

Untitled

a guest
May 23rd, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. diff --git a/gc/wiiuse/wiiuse.h b/gc/wiiuse/wiiuse.h
  2. index 2aea127..e9019ca 100644
  3. --- a/gc/wiiuse/wiiuse.h
  4. +++ b/gc/wiiuse/wiiuse.h
  5. @@ -87,7 +87,8 @@
  6. #define WIIUSE_ACCEL_THRESH 0x04
  7. #define WIIUSE_IR_THRESH 0x08
  8. #define WIIUSE_JS_THRESH 0x10
  9. -#define WIIUSE_INIT_FLAGS WIIUSE_SMOOTHING
  10. +#define WIIUSE_CLASSIC_EVENTS 0x20
  11. +#define WIIUSE_INIT_FLAGS WIIUSE_SMOOTHING | WIIUSE_CLASSIC_EVENTS
  12.  
  13. #define WIIUSE_ORIENT_PRECISION 100.0f
  14.  
  15. diff --git a/wiiuse/wpad.c b/wiiuse/wpad.c
  16. index ddb669b..c1754a6 100644
  17. --- a/wiiuse/wpad.c
  18. +++ b/wiiuse/wpad.c
  19. @@ -178,7 +178,22 @@ static s32 __wpad_disconnect(struct _wpad_cb *wpdcb)
  20. return 0;
  21. }
  22.  
  23. -static void __wpad_calc_data(WPADData *data,WPADData *lstate,struct accel_t *accel_calib,u32 smoothed)
  24. +static void __wpad_convert_classic_events(u32 *btns_h)
  25. +{
  26. + u32 btns = *btns_h;
  27. + if(btns & WPAD_CLASSIC_BUTTON_UP) btns |= WPAD_BUTTON_UP;
  28. + if(btns & WPAD_CLASSIC_BUTTON_DOWN) btns |= WPAD_BUTTON_DOWN;
  29. + if(btns & WPAD_CLASSIC_BUTTON_LEFT) btns |= WPAD_BUTTON_LEFT;
  30. + if(btns & WPAD_CLASSIC_BUTTON_RIGHT) btns |= WPAD_BUTTON_RIGHT;
  31. + if(btns & WPAD_CLASSIC_BUTTON_A) btns |= WPAD_BUTTON_A;
  32. + if(btns & WPAD_CLASSIC_BUTTON_B) btns |= WPAD_BUTTON_B;
  33. + if(btns & WPAD_CLASSIC_BUTTON_MINUS) btns |= WPAD_BUTTON_MINUS;
  34. + if(btns & WPAD_CLASSIC_BUTTON_HOME) btns |= WPAD_BUTTON_HOME;
  35. + if(btns & WPAD_CLASSIC_BUTTON_PLUS) btns |= WPAD_BUTTON_PLUS;
  36. + *btns_h = btns;
  37. +}
  38. +
  39. +static void __wpad_calc_data(WPADData *data,WPADData *lstate,struct accel_t *accel_calib,u32 smoothed, u32 classic_events)
  40. {
  41. if(data->err!=WPAD_ERR_NONE) return;
  42.  
  43. @@ -229,6 +244,9 @@ static void __wpad_calc_data(WPADData *data,WPADData *lstate,struct accel_t *acc
  44. calc_joystick_state(&cc->ljs, cc->ljs.pos.x, cc->ljs.pos.y);
  45. calc_joystick_state(&cc->rjs, cc->rjs.pos.x, cc->rjs.pos.y);
  46. data->btns_h |= (data->exp.classic.btns<<16);
  47. + if(classic_events) {
  48. + __wpad_convert_classic_events(&data->btns_h);
  49. + }
  50. }
  51. break;
  52.  
  53. @@ -258,7 +276,8 @@ static void __save_state(struct wiimote_t* wm) {
  54.  
  55. /* ir */
  56. wm->lstate.ir = wm->ir;
  57. -
  58. +}
  59. +static void __save_exp(struct wiimote_t *wm) {
  60. /* expansion */
  61. switch (wm->exp.type) {
  62. case EXP_NUNCHUK:
  63. @@ -375,6 +394,7 @@ static void __wpad_read_wiimote(struct wiimote_t *wm, WPADData *data, s32 *idle_
  64. *idle_time = 0;
  65. __save_state(wm);
  66. }
  67. + __save_exp(wm);
  68. } else
  69. data->err = WPAD_ERR_NOT_READY;
  70. } else
  71. @@ -510,8 +530,8 @@ s32 WPAD_Init()
  72.  
  73. s32 WPAD_ReadEvent(s32 chan, WPADData *data)
  74. {
  75. - u32 level;
  76. - u32 maxbufs,smoothed = 0;
  77. + u32 level, maxbufs;
  78. + u32 smoothed = 0,classic_events = 0;
  79. struct accel_t *accel_calib = NULL;
  80. struct _wpad_cb *wpdcb = NULL;
  81. WPADData *lstate = NULL,*wpadd = NULL;
  82. @@ -546,6 +566,7 @@ s32 WPAD_ReadEvent(s32 chan, WPADData *data)
  83. lstate = &wpdcb->lstate;
  84. accel_calib = &__wpads[chan]->accel_calib;
  85. smoothed = WIIMOTE_IS_FLAG_SET(__wpads[chan], WIIUSE_SMOOTHING);
  86. + classic_events = WIIMOTE_IS_FLAG_SET(__wpads[chan], WIIUSE_CLASSIC_EVENTS);
  87. } else {
  88. _CPU_ISR_Restore(level);
  89. return WPAD_ERR_NOT_READY;
  90. @@ -557,7 +578,7 @@ s32 WPAD_ReadEvent(s32 chan, WPADData *data)
  91.  
  92. _CPU_ISR_Restore(level);
  93. if(data)
  94. - __wpad_calc_data(data,lstate,accel_calib,smoothed);
  95. + __wpad_calc_data(data,lstate,accel_calib,smoothed,classic_events);
  96. return 0;
  97. }
Add Comment
Please, Sign In to add comment