mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-24 19:01:56 +01:00
- cleaned up libsicksaxis code a little to make it easier for me to understand what's going on.
This commit is contained in:
parent
64cf5a6858
commit
bca9764f4b
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 4.1 MiB After Width: | Height: | Size: 4.1 MiB |
@ -140,6 +140,7 @@ void CMenu::ButtonsPressed()
|
|||||||
gc_btnsPressed = 0;
|
gc_btnsPressed = 0;
|
||||||
|
|
||||||
/* ds3 controller */
|
/* ds3 controller */
|
||||||
|
/* libsicksaxis uses a thread to do scan pads so we need to use a delay here to give that thread time to read the controller */
|
||||||
if(CheckTime())
|
if(CheckTime())
|
||||||
{
|
{
|
||||||
ds3_btnsPressed = DS3_ButtonsDown();
|
ds3_btnsPressed = DS3_ButtonsDown();
|
||||||
@ -165,7 +166,7 @@ void CMenu::ButtonsPressed()
|
|||||||
|
|
||||||
void CMenu::ButtonsHeld()
|
void CMenu::ButtonsHeld()
|
||||||
{
|
{
|
||||||
/* wii, gc, drc, and wupc controllers = no ds3 not sure why */
|
/* wii, gc, drc, and wupc controllers = no ds3 because libsicksaxis does not have a function to check for buttons held */
|
||||||
gc_btnsHeld = 0;
|
gc_btnsHeld = 0;
|
||||||
gc_btnsHeld |= wiidrc_to_pad(WiiDRC_ButtonsHeld());
|
gc_btnsHeld |= wiidrc_to_pad(WiiDRC_ButtonsHeld());
|
||||||
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
||||||
@ -273,7 +274,7 @@ void CMenu::LeftStick()
|
|||||||
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
||||||
{
|
{
|
||||||
if(left_stick_mag[chan] > 0.15 || abs(PAD_StickX(chan)) > 20 || abs(PAD_StickY(chan)) > 20 || abs(WUPC_lStickX(chan)) > 160 || abs(WUPC_lStickY(chan)) > 160
|
if(left_stick_mag[chan] > 0.15 || abs(PAD_StickX(chan)) > 20 || abs(PAD_StickY(chan)) > 20 || abs(WUPC_lStickX(chan)) > 160 || abs(WUPC_lStickY(chan)) > 160
|
||||||
|| (chan == 0 && (abs(DS3_StickX()) > 20 || abs(DS3_StickY()) > 20)) || (chan == 0 && (abs(WiiDRC_lStickX()) > 20 || abs(WiiDRC_lStickY()) > 20)))
|
|| (chan == 0 && (abs(DS3_LStickX()) > 20 || abs(DS3_LStickY()) > 20)) || (chan == 0 && (abs(WiiDRC_lStickX()) > 20 || abs(WiiDRC_lStickY()) > 20)))
|
||||||
{
|
{
|
||||||
m_show_pointer[chan] = true;
|
m_show_pointer[chan] = true;
|
||||||
if(LEFT_STICK_LEFT)
|
if(LEFT_STICK_LEFT)
|
||||||
@ -281,7 +282,7 @@ void CMenu::LeftStick()
|
|||||||
speed = (u8)(left_stick_mag[chan] * 10.00);
|
speed = (u8)(left_stick_mag[chan] * 10.00);
|
||||||
pSpeed = (u8)(((int)abs(PAD_StickX(chan))/10)|((int)abs(WUPC_lStickX(chan))/80)|((int)abs(WiiDRC_lStickX())/8));
|
pSpeed = (u8)(((int)abs(PAD_StickX(chan))/10)|((int)abs(WUPC_lStickX(chan))/80)|((int)abs(WiiDRC_lStickX())/8));
|
||||||
if(chan == 0)
|
if(chan == 0)
|
||||||
pSpeed |= (int)abs(DS3_StickX()/10);
|
pSpeed |= (int)abs(DS3_LStickX()/10);
|
||||||
if(stickPointer_x[chan] > m_cursor[chan].width()/2)
|
if(stickPointer_x[chan] > m_cursor[chan].width()/2)
|
||||||
stickPointer_x[chan] = stickPointer_x[chan]-speed-pSpeed;
|
stickPointer_x[chan] = stickPointer_x[chan]-speed-pSpeed;
|
||||||
pointerhidedelay[chan] = 150;
|
pointerhidedelay[chan] = 150;
|
||||||
@ -291,7 +292,7 @@ void CMenu::LeftStick()
|
|||||||
speed = (u8)(left_stick_mag[chan] * 10.00);
|
speed = (u8)(left_stick_mag[chan] * 10.00);
|
||||||
pSpeed = (u8)(((int)abs(PAD_StickY(chan))/10)|((int)abs(WUPC_lStickY(chan))/80)|((int)abs(WiiDRC_lStickY())/8));
|
pSpeed = (u8)(((int)abs(PAD_StickY(chan))/10)|((int)abs(WUPC_lStickY(chan))/80)|((int)abs(WiiDRC_lStickY())/8));
|
||||||
if(chan == 0)
|
if(chan == 0)
|
||||||
pSpeed |= (int)abs(DS3_StickY()/10);
|
pSpeed |= (int)abs(DS3_LStickY()/10);
|
||||||
if(stickPointer_y[chan] < (m_vid.height() + (m_cursor[chan].height()/2)))
|
if(stickPointer_y[chan] < (m_vid.height() + (m_cursor[chan].height()/2)))
|
||||||
stickPointer_y[chan] = stickPointer_y[chan]+speed+pSpeed;
|
stickPointer_y[chan] = stickPointer_y[chan]+speed+pSpeed;
|
||||||
pointerhidedelay[chan] = 150;
|
pointerhidedelay[chan] = 150;
|
||||||
@ -301,7 +302,7 @@ void CMenu::LeftStick()
|
|||||||
speed = (u8)(left_stick_mag[chan] * 10.00);
|
speed = (u8)(left_stick_mag[chan] * 10.00);
|
||||||
pSpeed = (u8)(((int)abs(PAD_StickX(chan))/10)|((int)abs(WUPC_lStickX(chan))/80)|((int)abs(WiiDRC_lStickX())/8));
|
pSpeed = (u8)(((int)abs(PAD_StickX(chan))/10)|((int)abs(WUPC_lStickX(chan))/80)|((int)abs(WiiDRC_lStickX())/8));
|
||||||
if(chan == 0)
|
if(chan == 0)
|
||||||
pSpeed |= (int)abs(DS3_StickX()/10);
|
pSpeed |= (int)abs(DS3_LStickX()/10);
|
||||||
if(stickPointer_x[chan] < (m_vid.width() + (m_cursor[chan].width()/2)))
|
if(stickPointer_x[chan] < (m_vid.width() + (m_cursor[chan].width()/2)))
|
||||||
stickPointer_x[chan] = stickPointer_x[chan]+speed+pSpeed;
|
stickPointer_x[chan] = stickPointer_x[chan]+speed+pSpeed;
|
||||||
pointerhidedelay[chan] = 150;
|
pointerhidedelay[chan] = 150;
|
||||||
@ -311,7 +312,7 @@ void CMenu::LeftStick()
|
|||||||
speed = (u8)(left_stick_mag[chan] * 10.00);
|
speed = (u8)(left_stick_mag[chan] * 10.00);
|
||||||
pSpeed = (u8)(((int)abs(PAD_StickY(chan))/10)|((int)abs(WUPC_lStickY(chan))/80)|((int)abs(WiiDRC_lStickY())/8));
|
pSpeed = (u8)(((int)abs(PAD_StickY(chan))/10)|((int)abs(WUPC_lStickY(chan))/80)|((int)abs(WiiDRC_lStickY())/8));
|
||||||
if(chan == 0)
|
if(chan == 0)
|
||||||
pSpeed |= (int)abs(DS3_StickY()/10);
|
pSpeed |= (int)abs(DS3_LStickY()/10);
|
||||||
if(stickPointer_y[chan] > m_cursor[chan].height()/2)
|
if(stickPointer_y[chan] > m_cursor[chan].height()/2)
|
||||||
stickPointer_y[chan] = stickPointer_y[chan]-speed-pSpeed;
|
stickPointer_y[chan] = stickPointer_y[chan]-speed-pSpeed;
|
||||||
pointerhidedelay[chan] = 150;
|
pointerhidedelay[chan] = 150;
|
||||||
@ -496,7 +497,7 @@ bool CMenu::gc_btnRepeat(s64 btn)
|
|||||||
|
|
||||||
bool CMenu::lStick_Up(void)
|
bool CMenu::lStick_Up(void)
|
||||||
{
|
{
|
||||||
if(WiiDRC_lStickY() > 20 || DS3_StickY() < -20)
|
if(WiiDRC_lStickY() > 20 || DS3_LStickY() < -20)
|
||||||
return true;
|
return true;
|
||||||
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
||||||
{
|
{
|
||||||
@ -508,7 +509,7 @@ bool CMenu::lStick_Up(void)
|
|||||||
|
|
||||||
bool CMenu::lStick_Right(void)
|
bool CMenu::lStick_Right(void)
|
||||||
{
|
{
|
||||||
if(WiiDRC_lStickX() > 20 || DS3_StickX() > 20)
|
if(WiiDRC_lStickX() > 20 || DS3_LStickX() > 20)
|
||||||
return true;
|
return true;
|
||||||
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
||||||
{
|
{
|
||||||
@ -520,7 +521,7 @@ bool CMenu::lStick_Right(void)
|
|||||||
|
|
||||||
bool CMenu::lStick_Down(void)
|
bool CMenu::lStick_Down(void)
|
||||||
{
|
{
|
||||||
if(WiiDRC_lStickY() < -20 || DS3_StickY() > 20)
|
if(WiiDRC_lStickY() < -20 || DS3_LStickY() > 20)
|
||||||
return true;
|
return true;
|
||||||
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
||||||
{
|
{
|
||||||
@ -532,7 +533,7 @@ bool CMenu::lStick_Down(void)
|
|||||||
|
|
||||||
bool CMenu::lStick_Left(void)
|
bool CMenu::lStick_Left(void)
|
||||||
{
|
{
|
||||||
if(WiiDRC_lStickX() < -20 || DS3_StickX() < -20)
|
if(WiiDRC_lStickX() < -20 || DS3_LStickX() < -20)
|
||||||
return true;
|
return true;
|
||||||
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
||||||
{
|
{
|
||||||
@ -543,6 +544,7 @@ bool CMenu::lStick_Left(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* right stick movements are only used in menu_main and menu_game to move the coverflow up, down, left, right just like the d-pad */
|
/* right stick movements are only used in menu_main and menu_game to move the coverflow up, down, left, right just like the d-pad */
|
||||||
|
/* DS3 right stick is not checked */
|
||||||
bool CMenu::rStick_Up(void)
|
bool CMenu::rStick_Up(void)
|
||||||
{
|
{
|
||||||
if(WiiDRC_rStickY() > 30)
|
if(WiiDRC_rStickY() > 30)
|
||||||
|
@ -5,45 +5,41 @@
|
|||||||
#include <sicksaxis.h>
|
#include <sicksaxis.h>
|
||||||
#include "sicksaxis-wrapper.h"
|
#include "sicksaxis-wrapper.h"
|
||||||
|
|
||||||
static DS3 first;
|
static DS3 Controller1;
|
||||||
static bool psPressed = false;
|
static bool psPressed = false;
|
||||||
|
|
||||||
bool DS3_Init()
|
bool DS3_Init()// does not check for and connect controller
|
||||||
{
|
{
|
||||||
USB_Initialize();
|
USB_Initialize();
|
||||||
|
ss_init();// add controller to ios heap
|
||||||
if (ss_init() < 0)
|
ss_initialize(&Controller1);// set all values to initial states
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ss_initialize(&first);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DS3_Rumble()
|
void DS3_Rumble()
|
||||||
{
|
{
|
||||||
if (first.connected && psPressed)
|
//if (DS3_Connected())
|
||||||
|
if (Controller1.connected && psPressed)
|
||||||
{
|
{
|
||||||
ss_set_rumble(&first, 2, 255, 2, 255);
|
ss_set_rumble(&Controller1, 2, 255, 2, 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DS3_Cleanup()
|
void DS3_Cleanup()
|
||||||
{
|
{
|
||||||
psPressed = false;
|
psPressed = false;
|
||||||
ss_close(&first);
|
ss_close(&Controller1);
|
||||||
USB_Deinitialize();
|
USB_Deinitialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int DS3_ButtonsDown()
|
unsigned int DS3_ButtonsDown()
|
||||||
{
|
{
|
||||||
if (!ss_is_connected(&first) || !psPressed)
|
//if (!DS3_Connected())
|
||||||
|
if (!ss_is_connected(&Controller1) || !psPressed)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
DS3 *controller;
|
DS3 *controller;
|
||||||
controller = &first;
|
controller = &Controller1;
|
||||||
|
|
||||||
unsigned int pressed = 0;
|
unsigned int pressed = 0;
|
||||||
|
|
||||||
@ -68,46 +64,48 @@ unsigned int DS3_ButtonsDown()
|
|||||||
return pressed;
|
return pressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DS3_Connected()
|
bool DS3_Connected()// not used but could be used in the functions ButtonsDown() and Rumble() above
|
||||||
{
|
{
|
||||||
return first.connected > 0 && psPressed;
|
return Controller1.connected > 0 && psPressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* does not scan pads. simply connects with the controller and starts a thread to read the controller. */
|
||||||
|
/* on later calls it simply checks if the PS button on the controller has been pressed and lights up the LED */
|
||||||
void DS3_ScanPads()
|
void DS3_ScanPads()
|
||||||
{
|
{
|
||||||
if (!ss_is_connected(&first))
|
if (!ss_is_connected(&Controller1))
|
||||||
{
|
{
|
||||||
psPressed = false;
|
psPressed = false;
|
||||||
ss_initialize(&first);
|
ss_initialize(&Controller1);
|
||||||
if (ss_open(&first) > 0)
|
if (ss_open(&Controller1) > 0)
|
||||||
{
|
{
|
||||||
ss_start_reading(&first);
|
ss_start_reading(&Controller1);
|
||||||
ss_set_led(&first, 0);
|
ss_set_led(&Controller1, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (first.pad.buttons.PS && !psPressed)
|
else if (Controller1.pad.buttons.PS && !psPressed)
|
||||||
{
|
{
|
||||||
psPressed = true;
|
psPressed = true;
|
||||||
ss_set_led(&first, 1);
|
ss_set_led(&Controller1, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int DS3_StickX()
|
int DS3_LStickX()
|
||||||
{
|
{
|
||||||
return psPressed? first.pad.left_analog.x - 128 : 0;
|
return psPressed? Controller1.pad.left_analog.x - 128 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DS3_SubStickX()
|
int DS3_RStickX()
|
||||||
{
|
{
|
||||||
return psPressed? first.pad.right_analog.x - 128 : 0;
|
return psPressed? Controller1.pad.right_analog.x - 128 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DS3_StickY()
|
int DS3_LStickY()
|
||||||
{
|
{
|
||||||
return psPressed? first.pad.left_analog.y - 128 : 0;
|
return psPressed? Controller1.pad.left_analog.y - 128 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DS3_SubStickY()
|
int DS3_RStickY()
|
||||||
{
|
{
|
||||||
return psPressed? first.pad.right_analog.y - 128 : 0;
|
return psPressed? Controller1.pad.right_analog.y - 128 : 0;
|
||||||
}
|
}
|
||||||
|
@ -39,10 +39,10 @@ void DS3_Rumble();
|
|||||||
void DS3_Cleanup();
|
void DS3_Cleanup();
|
||||||
unsigned int DS3_ButtonsDown();
|
unsigned int DS3_ButtonsDown();
|
||||||
void DS3_ScanPads();
|
void DS3_ScanPads();
|
||||||
int DS3_StickX();
|
int DS3_LStickX();
|
||||||
int DS3_SubStickX();
|
int DS3_RStickX();
|
||||||
int DS3_StickY();
|
int DS3_LStickY();
|
||||||
int DS3_SubStickY();
|
int DS3_RStickY();
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user