mirror of
https://github.com/Team-Resurgent/Simple_NTFS_ISO_Mounter.git
synced 2026-08-15 11:18:28 -07:00
135 lines
3.1 KiB
C++
135 lines
3.1 KiB
C++
// ---------------------------------------------------------------------
|
|
// FB Alpha Retro Loader (CaptainCPS-X, 2013)
|
|
// ---------------------------------------------------------------------
|
|
#include "main.h"
|
|
|
|
bool mIsButtPressed[16];
|
|
bool buttPressedNow[16];
|
|
|
|
uint32_t mValRStickX, mValRStickY;
|
|
uint32_t mValLStickX, mValLStickY;
|
|
|
|
uint32_t nButtons[16];
|
|
|
|
void InputFrameStart(void)
|
|
{
|
|
InputPadRead();
|
|
}
|
|
|
|
void InputFrameEnd(void)
|
|
{
|
|
for(int x = 0; x < 16; x++) {
|
|
mIsButtPressed[x] = buttPressedNow[x];
|
|
}
|
|
}
|
|
|
|
int InputPadRead(void)
|
|
{
|
|
int32_t nRet;
|
|
|
|
// Get gamepads information
|
|
CellPadInfo2 gpad_info;
|
|
|
|
nRet = cellPadGetInfo2(&gpad_info);
|
|
|
|
if(nRet != CELL_PAD_OK) {
|
|
// error
|
|
return 0;
|
|
}
|
|
|
|
// Check if we have 1 - 7 controllers connected
|
|
if(gpad_info.now_connect >= 1 && gpad_info.now_connect <= CELL_PAD_MAX_PORT_NUM)
|
|
{
|
|
bool bPadsConnected = false;
|
|
|
|
for(int nController = 0; nController < CELL_PAD_MAX_PORT_NUM; nController++)
|
|
{
|
|
// Use controller 1 for operation (for now)
|
|
if(gpad_info.port_status[nController] & CELL_PAD_STATUS_CONNECTED)
|
|
{
|
|
bPadsConnected = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(bPadsConnected)
|
|
{
|
|
// A controller is connected...
|
|
|
|
// Get Buttons data...
|
|
for(int nController = 0; nController < CELL_PAD_MAX_PORT_NUM; nController++)
|
|
{
|
|
CellPadData pPad;
|
|
|
|
if(cellPadGetData(nController, &pPad) == CELL_PAD_OK)
|
|
{
|
|
if(pPad.len == 0) continue;
|
|
|
|
GET_PAD_D1(BT_LEFT , CELL_PAD_CTRL_LEFT);
|
|
GET_PAD_D1(BT_RIGHT , CELL_PAD_CTRL_RIGHT);
|
|
GET_PAD_D1(BT_DOWN , CELL_PAD_CTRL_DOWN);
|
|
GET_PAD_D1(BT_UP , CELL_PAD_CTRL_UP);
|
|
GET_PAD_D1(BT_START , CELL_PAD_CTRL_START);
|
|
GET_PAD_D1(BT_R3 , CELL_PAD_CTRL_R3);
|
|
GET_PAD_D1(BT_L3 , CELL_PAD_CTRL_L3);
|
|
GET_PAD_D1(BT_SELECT, CELL_PAD_CTRL_SELECT);
|
|
|
|
GET_PAD_D2(BT_SQUARE , CELL_PAD_CTRL_SQUARE);
|
|
GET_PAD_D2(BT_CROSS , CELL_PAD_CTRL_CROSS);
|
|
GET_PAD_D2(BT_CIRCLE , CELL_PAD_CTRL_CIRCLE);
|
|
GET_PAD_D2(BT_TRIANGLE , CELL_PAD_CTRL_TRIANGLE);
|
|
GET_PAD_D2(BT_R1 , CELL_PAD_CTRL_R1);
|
|
GET_PAD_D2(BT_L1 , CELL_PAD_CTRL_L1);
|
|
GET_PAD_D2(BT_R2 , CELL_PAD_CTRL_R2);
|
|
GET_PAD_D2(BT_L2 , CELL_PAD_CTRL_L2);
|
|
|
|
// analog controls
|
|
|
|
mValRStickX = (uint32_t)pPad.button[CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_X];
|
|
mValRStickY = (uint32_t)pPad.button[CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_Y];
|
|
mValLStickX = (uint32_t)pPad.button[CELL_PAD_BTN_OFFSET_ANALOG_LEFT_X];
|
|
mValLStickY = (uint32_t)pPad.button[CELL_PAD_BTN_OFFSET_ANALOG_LEFT_Y];
|
|
|
|
cellPadClearBuf(nController);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
} else {
|
|
// todo: report user to connect a controller
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
int InputInit(void)
|
|
{
|
|
// Init GamePad
|
|
int ret;
|
|
|
|
ret = cellPadInit( CELL_PAD_MAX_PORT_NUM );
|
|
if ( ret != CELL_PAD_OK ) {
|
|
return 0;
|
|
}
|
|
|
|
for(int nController = 0; nController < CELL_PAD_MAX_PORT_NUM; nController++) {
|
|
cellPadSetPortSetting(nController, CELL_PAD_SETTING_PRESS_ON );
|
|
}
|
|
|
|
for(int n = 0; n < 16; n++) {
|
|
mIsButtPressed[n] = false;
|
|
buttPressedNow[n] = false;
|
|
nButtons[n] = (1 << n); // Assign button values in order
|
|
}
|
|
|
|
mValRStickX = mValRStickY = 0;
|
|
mValLStickX = mValLStickY = 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
void InputExit(void)
|
|
{
|
|
cellPadEnd();
|
|
} |