Gamecube: Change dpad to just be fly up/down hotbar left/right

Also make it possible for other platforms to override
This commit is contained in:
UnknownShadow200 2025-09-10 21:43:33 +10:00
parent d2a0a597b9
commit 71991c2275
14 changed files with 246 additions and 68 deletions

View File

@ -128,6 +128,27 @@ void Window_UpdateRawMouse(void) { }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_3ds[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
static Result irrst_result; static Result irrst_result;
void Gamepads_Init(void) { void Gamepads_Init(void) {
@ -167,7 +188,7 @@ static void ProcessCircleInput(int port, int axis, circlePosition* pos, float de
void Gamepads_Process(float delta) { void Gamepads_Process(float delta) {
u32 mods = hidKeysDown() | hidKeysHeld(); u32 mods = hidKeysDown() | hidKeysHeld();
int port = Gamepad_Connect(0x3D5, PadBind_Defaults); int port = Gamepad_Connect(0x3D5, defaults_3ds);
HandleButtons(port, mods); HandleButtons(port, mods);
circlePosition hid_pos; circlePosition hid_pos;

View File

@ -100,24 +100,24 @@ static void ProcessMouse(joypad_inputs_t* inputs, float delta) {
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping default_n64[BIND_COUNT] = { static const BindMapping defaults_n64[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_CUP, 0 }, [BIND_FORWARD] = { CCPAD_CUP },
[BIND_BACK] = { CCPAD_CDOWN, 0 }, [BIND_BACK] = { CCPAD_CDOWN },
[BIND_LEFT] = { CCPAD_CLEFT, 0 }, [BIND_LEFT] = { CCPAD_CLEFT },
[BIND_RIGHT] = { CCPAD_CRIGHT, 0 }, [BIND_RIGHT] = { CCPAD_CRIGHT },
[BIND_FLY_UP] = { CCPAD_UP, 0 }, [BIND_FLY_UP] = { CCPAD_UP },
[BIND_FLY_DOWN]= { CCPAD_DOWN, 0 }, [BIND_FLY_DOWN]= { CCPAD_DOWN },
[BIND_SPEED] = { CCPAD_LEFT, 0 }, [BIND_SPEED] = { CCPAD_LEFT },
[BIND_FLY] = { CCPAD_RIGHT, 0 }, [BIND_FLY] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1, 0 }, [BIND_JUMP] = { CCPAD_1 },
[BIND_INVENTORY] = { CCPAD_2, 0 }, [BIND_INVENTORY] = { CCPAD_2 },
[BIND_PLACE_BLOCK] = { CCPAD_5, 0 }, [BIND_PLACE_BLOCK] = { CCPAD_5 },
[BIND_HOTBAR_RIGHT] = { CCPAD_L, 0 }, [BIND_HOTBAR_RIGHT] = { CCPAD_L },
[BIND_DELETE_BLOCK] = { CCPAD_R, 0 }, [BIND_DELETE_BLOCK] = { CCPAD_R },
[BIND_SET_SPAWN] = { CCPAD_START, 0 }, [BIND_SET_SPAWN] = { CCPAD_START },
}; };
void Gamepads_Init(void) { void Gamepads_Init(void) {
@ -169,7 +169,7 @@ void Gamepads_Process(float delta) {
ProcessMouse(&inputs, delta); continue; ProcessMouse(&inputs, delta); continue;
} }
int port = Gamepad_Connect(0x64 + i, default_n64); int port = Gamepad_Connect(0x64 + i, defaults_n64);
HandleButtons(port, inputs.btn); HandleButtons(port, inputs.btn);
ProcessAnalogInput(port, &inputs, delta); ProcessAnalogInput(port, &inputs, delta);
} }

View File

@ -222,6 +222,27 @@ void Window_UpdateRawMouse(void) { }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_dc[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
void Gamepads_Init(void) { void Gamepads_Init(void) {
Input.Sources |= INPUT_SOURCE_GAMEPAD; Input.Sources |= INPUT_SOURCE_GAMEPAD;
} }
@ -264,7 +285,7 @@ static void HandleController(int port, bool dual_analog, cont_state_t* state, fl
// TODO: verify values are right // TODO: verify values are right
if(dual_analog) if(dual_analog)
{ {
HandleJoystick(port, PAD_AXIS_LEFT, state->joyx, state->joyy, delta); HandleJoystick(port, PAD_AXIS_LEFT, state->joyx, state->joyy, delta);
HandleJoystick(port, PAD_AXIS_RIGHT, state->joy2x, state->joy2y, delta); HandleJoystick(port, PAD_AXIS_RIGHT, state->joy2x, state->joy2y, delta);
} }
else else
@ -287,7 +308,7 @@ void Gamepads_Process(float delta) {
int dual_analog = cont_has_capabilities(cont, CONT_CAPABILITIES_DUAL_ANALOG); int dual_analog = cont_has_capabilities(cont, CONT_CAPABILITIES_DUAL_ANALOG);
if(dual_analog == -1) dual_analog = 0; if(dual_analog == -1) dual_analog = 0;
int port = Gamepad_Connect(0xDC + i, PadBind_Defaults); int port = Gamepad_Connect(0xDC + i, defaults_dc);
HandleButtons(port, state->buttons); HandleButtons(port, state->buttons);
HandleController(port, dual_analog, state, delta); HandleController(port, dual_analog, state, delta);
} }

View File

@ -111,25 +111,21 @@ void Window_RequestClose(void) {
*#########################################################################################################################*/ *#########################################################################################################################*/
static PADStatus gc_pads[PAD_CHANMAX]; static PADStatus gc_pads[PAD_CHANMAX];
static const BindMapping gcpad_defaults[BIND_COUNT] = { static const BindMapping defaults_gc[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP, 0 }, [BIND_FLY_UP] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN, 0 }, [BIND_FLY_DOWN] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT, 0 }, [BIND_HOTBAR_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT, 0 }, [BIND_HOTBAR_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1, 0 }, [BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START, 0 }, [BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4, 0 }, [BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3, 0 }, [BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START, 0 }, [BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L, 0 }, [BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R, 0 }, [BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L }, [BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R }, [BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 }, [BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_2, CCPAD_LEFT },
[BIND_HOTBAR_RIGHT] = { CCPAD_2, CCPAD_RIGHT }
}; };
#define PAD_AXIS_SCALE 8.0f #define PAD_AXIS_SCALE 8.0f
@ -170,7 +166,7 @@ static void ProcessPADInput(PADStatus* pad, int i, float delta) {
return; // not connected, still busy, etc return; // not connected, still busy, etc
} }
int port = Gamepad_Connect(0x5C + i, gcpad_defaults); int port = Gamepad_Connect(0x5C + i, defaults_gc);
ProcessPAD_Buttons(port, gc_pads[i].button); ProcessPAD_Buttons(port, gc_pads[i].button);
ProcessPAD_Joystick(port, PAD_AXIS_LEFT, gc_pads[i].stickX, gc_pads[i].stickY, delta); ProcessPAD_Joystick(port, PAD_AXIS_LEFT, gc_pads[i].stickX, gc_pads[i].stickY, delta);
ProcessPAD_Joystick(port, PAD_AXIS_RIGHT, gc_pads[i].substickX, gc_pads[i].substickY, delta); ProcessPAD_Joystick(port, PAD_AXIS_RIGHT, gc_pads[i].substickX, gc_pads[i].substickY, delta);

View File

@ -1,5 +1,3 @@
#include "Core.h"
#ifdef CC_BUILD_NDS
#include "_GraphicsBase.h" #include "_GraphicsBase.h"
#include "Errors.h" #include "Errors.h"
#include "Logger.h" #include "Logger.h"
@ -833,5 +831,4 @@ void Gfx_DrawIndexedTris_T2fC4b(int verticesCount, int startVertex) {
if (skipRendering) return; if (skipRendering) return;
Draw_TexturedTriangles(verticesCount, startVertex); Draw_TexturedTriangles(verticesCount, startVertex);
} }
#endif

View File

@ -1,5 +1,3 @@
#include "Core.h"
#if defined CC_BUILD_NDS
#define CC_NO_UPDATER #define CC_NO_UPDATER
#define CC_NO_DYNLIB #define CC_NO_DYNLIB
@ -658,4 +656,4 @@ static cc_result GetMachineID(cc_uint32* key) {
cc_result Platform_GetEntropy(void* data, int len) { cc_result Platform_GetEntropy(void* data, int len) {
return ERR_NOT_SUPPORTED; return ERR_NOT_SUPPORTED;
} }
#endif

View File

@ -1,5 +1,3 @@
#include "Core.h"
#if defined CC_BUILD_NDS
#include "Window.h" #include "Window.h"
#include "Platform.h" #include "Platform.h"
#include "Input.h" #include "Input.h"
@ -257,12 +255,33 @@ void Window_UpdateRawMouse(void) { }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_nds[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
void Gamepads_Init(void) { void Gamepads_Init(void) {
Input.Sources |= INPUT_SOURCE_GAMEPAD; Input.Sources |= INPUT_SOURCE_GAMEPAD;
} }
void Gamepads_Process(float delta) { void Gamepads_Process(float delta) {
int port = Gamepad_Connect(0xD5, PadBind_Defaults); int port = Gamepad_Connect(0xD5, defaults_nds);
int mods = keysDown() | keysHeld(); int mods = keysDown() | keysHeld();
Gamepad_SetButton(port, CCPAD_L, mods & KEY_L); Gamepad_SetButton(port, CCPAD_L, mods & KEY_L);
@ -379,4 +398,4 @@ cc_result Window_OpenFileDialog(const struct OpenFileDialogArgs* args) {
cc_result Window_SaveFileDialog(const struct SaveFileDialogArgs* args) { cc_result Window_SaveFileDialog(const struct SaveFileDialogArgs* args) {
return ERR_NOT_SUPPORTED; return ERR_NOT_SUPPORTED;
} }
#endif

View File

@ -227,6 +227,27 @@ void Window_DisableRawMouse(void) { Input.RawMode = false; }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_ps2[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
static char padBuf0[256] __attribute__((aligned(64))); static char padBuf0[256] __attribute__((aligned(64)));
static char padBuf1[256] __attribute__((aligned(64))); static char padBuf1[256] __attribute__((aligned(64)));
@ -299,7 +320,7 @@ static void ProcessPad(int i, float delta) {
int ret = padRead(i, 0, &pad); int ret = padRead(i, 0, &pad);
if (ret == 0) return; if (ret == 0) return;
int port = Gamepad_Connect(0x503 + i, PadBind_Defaults); int port = Gamepad_Connect(0x503 + i, defaults_ps2);
ProcessPadInput(port, delta, &pad); ProcessPadInput(port, delta, &pad);
} }

View File

@ -271,6 +271,27 @@ void Window_DisableRawMouse(void) { Input.RawMode = false; }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_ps3[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
static padInfo pad_info; static padInfo pad_info;
static padData pad_data[MAX_PORT_NUM]; static padData pad_data[MAX_PORT_NUM];
static cc_bool circle_main; static cc_bool circle_main;
@ -333,7 +354,7 @@ void Gamepads_Process(float delta) {
if (!pad_info.status[i]) continue; if (!pad_info.status[i]) continue;
ioPadGetData(i, &pad_data[i]); ioPadGetData(i, &pad_data[i]);
int port = Gamepad_Connect(0x503 + i, PadBind_Defaults); int port = Gamepad_Connect(0x503 + i, defaults_ps3);
ProcessPadInput(port, delta, &pad_data[i]); ProcessPadInput(port, delta, &pad_data[i]);
} }
} }

View File

@ -83,6 +83,27 @@ void Window_UpdateRawMouse(void) { }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_psp[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
void Gamepads_Init(void) { void Gamepads_Init(void) {
Input.Sources |= INPUT_SOURCE_GAMEPAD; Input.Sources |= INPUT_SOURCE_GAMEPAD;
@ -125,7 +146,7 @@ static void ProcessCircleInput(int port, SceCtrlData* pad, float delta) {
} }
void Gamepads_Process(float delta) { void Gamepads_Process(float delta) {
int port = Gamepad_Connect(0x503, PadBind_Defaults); int port = Gamepad_Connect(0x503, defaults_psp);
SceCtrlData pad; SceCtrlData pad;
/* TODO implement */ /* TODO implement */

View File

@ -141,21 +141,21 @@ void Window_DisableRawMouse(void) { Input.RawMode = false; }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping vita_padbinds[BIND_COUNT] = { static const BindMapping defaults_vita[BIND_COUNT] = {
[BIND_JUMP] = { CCPAD_1 }, [BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START }, [BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 }, [BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 }, [BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START }, [BIND_SEND_CHAT] = { CCPAD_START },
[BIND_SPEED] = { CCPAD_2, CCPAD_L }, [BIND_PLACE_BLOCK] = { CCPAD_L },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 }, [BIND_DELETE_BLOCK] = { CCPAD_R },
[BIND_FLY] = { CCPAD_2, CCPAD_R }, [BIND_FLY_UP] = { CCPAD_UP },
[BIND_PLACE_BLOCK] = { CCPAD_L }, [BIND_FLY_DOWN] = { CCPAD_DOWN },
[BIND_DELETE_BLOCK] = { CCPAD_R }, [BIND_HOTBAR_LEFT] = { CCPAD_LEFT },
[BIND_FLY_UP] = { CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_LEFT },
[BIND_HOTBAR_RIGHT] = { CCPAD_RIGHT }, [BIND_HOTBAR_RIGHT] = { CCPAD_RIGHT },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
}; };
static cc_bool circle_main; static cc_bool circle_main;
@ -207,7 +207,7 @@ static void ProcessCircleInput(int port, int axis, int x, int y, float delta) {
} }
static void ProcessPadInput(float delta) { static void ProcessPadInput(float delta) {
int port = Gamepad_Connect(0x503, vita_padbinds); int port = Gamepad_Connect(0x503, defaults_vita);
SceCtrlData pad; SceCtrlData pad;
// sceCtrlReadBufferPositive is blocking (seems to block until vblank), and don't want that // sceCtrlReadBufferPositive is blocking (seems to block until vblank), and don't want that

View File

@ -147,6 +147,27 @@ void Window_UpdateRawMouse(void) { }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_switch[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
void Gamepads_Init(void) { void Gamepads_Init(void) {
Input.Sources |= INPUT_SOURCE_GAMEPAD; Input.Sources |= INPUT_SOURCE_GAMEPAD;
} }
@ -179,7 +200,7 @@ static void ProcessJoystickInput(int port, int axis, HidAnalogStickState* pos, f
} }
void Gamepads_Process(float delta) { void Gamepads_Process(float delta) {
int port = Gamepad_Connect(0x51C, PadBind_Defaults); int port = Gamepad_Connect(0x51C, defaults_switch);
u64 keys = padGetButtons(&pad); u64 keys = padGetButtons(&pad);
HandleButtons(port, keys); HandleButtons(port, keys);

View File

@ -86,6 +86,27 @@ void Window_UpdateRawMouse(void) { }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_xbox[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
static xid_dev_t* xid_ctrl; static xid_dev_t* xid_ctrl;
static xid_gamepad_in gp_state; static xid_gamepad_in gp_state;
@ -184,7 +205,7 @@ void Gamepads_Process(float delta) {
usbh_pooling_hubs(); usbh_pooling_hubs();
#endif #endif
if (!xid_ctrl) return; if (!xid_ctrl) return;
int port = Gamepad_Connect(0xB0, PadBind_Defaults); int port = Gamepad_Connect(0xB0, defaults_xbox);
HandleButtons(port, &gp_state); HandleButtons(port, &gp_state);
HandleJoystick(port, PAD_AXIS_LEFT, gp_state.leftStickX, gp_state.leftStickY, delta); HandleJoystick(port, PAD_AXIS_LEFT, gp_state.leftStickX, gp_state.leftStickY, delta);

View File

@ -85,6 +85,27 @@ void Window_UpdateRawMouse(void) { }
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Gamepads----------------------------------------------------------* *-------------------------------------------------------Gamepads----------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static const BindMapping defaults_xbox360[BIND_COUNT] = {
[BIND_FORWARD] = { CCPAD_UP },
[BIND_BACK] = { CCPAD_DOWN },
[BIND_LEFT] = { CCPAD_LEFT },
[BIND_RIGHT] = { CCPAD_RIGHT },
[BIND_JUMP] = { CCPAD_1 },
[BIND_SET_SPAWN] = { CCPAD_START },
[BIND_CHAT] = { CCPAD_4 },
[BIND_INVENTORY] = { CCPAD_3 },
[BIND_SEND_CHAT] = { CCPAD_START },
[BIND_DELETE_BLOCK] = { CCPAD_L },
[BIND_PLACE_BLOCK] = { CCPAD_R },
[BIND_SPEED] = { CCPAD_2, CCPAD_L },
[BIND_FLY] = { CCPAD_2, CCPAD_R },
[BIND_NOCLIP] = { CCPAD_2, CCPAD_3 },
[BIND_FLY_UP] = { CCPAD_2, CCPAD_UP },
[BIND_FLY_DOWN] = { CCPAD_2, CCPAD_DOWN },
[BIND_HOTBAR_LEFT] = { CCPAD_ZL },
[BIND_HOTBAR_RIGHT] = { CCPAD_ZR }
};
void Gamepads_Init(void) { void Gamepads_Init(void) {
Input.Sources |= INPUT_SOURCE_GAMEPAD; Input.Sources |= INPUT_SOURCE_GAMEPAD;
@ -131,7 +152,7 @@ static void HandleJoystick(int port, int axis, int x, int y, float delta) {
void Gamepads_Process(float delta) { void Gamepads_Process(float delta) {
usb_do_poll(); usb_do_poll();
int port = Gamepad_Connect(0xB0360, PadBind_Defaults); int port = Gamepad_Connect(0xB0360, defaults_xbox360);
struct controller_data_s pad; struct controller_data_s pad;
int res = get_controller_data(&pad, 0); int res = get_controller_data(&pad, 0);