mirror of
https://github.com/libretro/RetroArch
synced 2025-03-31 10:20:41 +00:00
(360) Dehardcode control binds
This commit is contained in:
parent
1307648d08
commit
9969474326
44
360/main.c
44
360/main.c
@ -132,6 +132,50 @@ static void set_default_settings (void)
|
|||||||
g_settings.video.vsync = true;
|
g_settings.video.vsync = true;
|
||||||
g_settings.video.smooth = true;
|
g_settings.video.smooth = true;
|
||||||
|
|
||||||
|
for(uint32_t x = 0; x < MAX_PLAYERS; x++)
|
||||||
|
{
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_B].id = SNES_DEVICE_ID_JOYPAD_B;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_B].joykey = XINPUT_GAMEPAD_A;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_Y].id = SNES_DEVICE_ID_JOYPAD_Y;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_Y].joykey = XINPUT_GAMEPAD_X;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_SELECT].id = SNES_DEVICE_ID_JOYPAD_SELECT;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_SELECT].joykey = XINPUT_GAMEPAD_BACK;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_START].id = SNES_DEVICE_ID_JOYPAD_START;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_START].joykey = XINPUT_GAMEPAD_START;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_UP].id = SNES_DEVICE_ID_JOYPAD_UP;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_UP].joykey = XINPUT_GAMEPAD_DPAD_UP;
|
||||||
|
//g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_UP].joyaxis = CTRL_LSTICK_UP_MASK;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_DOWN].id = SNES_DEVICE_ID_JOYPAD_DOWN;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_DOWN].joykey = XINPUT_GAMEPAD_DPAD_DOWN;
|
||||||
|
//g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_DOWN].joyaxis = CTRL_LSTICK_DOWN_MASK;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_LEFT].id = SNES_DEVICE_ID_JOYPAD_LEFT;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_LEFT].joykey = XINPUT_GAMEPAD_DPAD_LEFT;
|
||||||
|
//g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_LEFT].joyaxis = CTRL_LSTICK_LEFT_MASK;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_RIGHT].id = SNES_DEVICE_ID_JOYPAD_RIGHT;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_RIGHT].joykey = XINPUT_GAMEPAD_DPAD_RIGHT;
|
||||||
|
//g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_RIGHT].joyaxis = CTRL_LSTICK_RIGHT_MASK;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_A].id = SNES_DEVICE_ID_JOYPAD_A;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_A].joykey = XINPUT_GAMEPAD_B;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_X].id = SNES_DEVICE_ID_JOYPAD_X;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_X].joykey = XINPUT_GAMEPAD_Y;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_L].id = SNES_DEVICE_ID_JOYPAD_L;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_L].joykey = XINPUT_GAMEPAD_LEFT_SHOULDER;
|
||||||
|
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_R].id = SNES_DEVICE_ID_JOYPAD_R;
|
||||||
|
g_settings.input.binds[x][SNES_DEVICE_ID_JOYPAD_R].joykey = XINPUT_GAMEPAD_RIGHT_SHOULDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//g_console
|
//g_console
|
||||||
g_console.block_config_read = true;
|
g_console.block_config_read = true;
|
||||||
g_console.throttle_enable = true;
|
g_console.throttle_enable = true;
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "shared.h"
|
#include "shared.h"
|
||||||
|
|
||||||
static XINPUT_STATE state[4];
|
static XINPUT_STATE state[4];
|
||||||
|
static unsigned pads_connected;
|
||||||
|
|
||||||
#define DEADZONE (16000)
|
#define DEADZONE (16000)
|
||||||
|
|
||||||
@ -33,8 +34,13 @@ static void xdk360_input_poll(void *data)
|
|||||||
{
|
{
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
|
pads_connected = 0;
|
||||||
|
|
||||||
for (unsigned i = 0; i < 4; i++)
|
for (unsigned i = 0; i < 4; i++)
|
||||||
XInputGetState(i, &state[i]);
|
{
|
||||||
|
unsigned long retval = XInputGetState(i, &state[i]);
|
||||||
|
pads_connected += (retval == ERROR_DEVICE_NOT_CONNECTED) ? 0 : 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int16_t xdk360_input_state(void *data, const struct snes_keybind **binds,
|
static int16_t xdk360_input_state(void *data, const struct snes_keybind **binds,
|
||||||
@ -42,61 +48,27 @@ static int16_t xdk360_input_state(void *data, const struct snes_keybind **binds,
|
|||||||
unsigned index, unsigned id)
|
unsigned index, unsigned id)
|
||||||
{
|
{
|
||||||
(void)data;
|
(void)data;
|
||||||
(void)binds;
|
unsigned player;
|
||||||
|
uint64_t button;
|
||||||
|
|
||||||
|
player = 0;
|
||||||
|
|
||||||
if (device != SNES_DEVICE_JOYPAD)
|
if (device != SNES_DEVICE_JOYPAD)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
unsigned player = 0;
|
if (port == SNES_PORT_2)
|
||||||
if (port == SNES_PORT_2 && device == SNES_DEVICE_MULTITAP)
|
|
||||||
player = index + 1;
|
|
||||||
else if (port == SNES_PORT_2)
|
|
||||||
player = 1;
|
|
||||||
|
|
||||||
// Hardcoded binds.
|
|
||||||
uint64_t button;
|
|
||||||
switch (id)
|
|
||||||
{
|
{
|
||||||
case SNES_DEVICE_ID_JOYPAD_A:
|
if(pads_connected < 2)
|
||||||
button = XINPUT_GAMEPAD_B;
|
return 0;
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_B:
|
player = 1;
|
||||||
button = XINPUT_GAMEPAD_A;
|
|
||||||
break;
|
if (device == SNES_DEVICE_MULTITAP)
|
||||||
case SNES_DEVICE_ID_JOYPAD_X:
|
player += index;
|
||||||
button = XINPUT_GAMEPAD_Y;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_Y:
|
|
||||||
button = XINPUT_GAMEPAD_X;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_LEFT:
|
|
||||||
button = XINPUT_GAMEPAD_DPAD_LEFT;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_RIGHT:
|
|
||||||
button = XINPUT_GAMEPAD_DPAD_RIGHT;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_UP:
|
|
||||||
button = XINPUT_GAMEPAD_DPAD_UP;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_DOWN:
|
|
||||||
button = XINPUT_GAMEPAD_DPAD_DOWN;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_START:
|
|
||||||
button = XINPUT_GAMEPAD_START;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_SELECT:
|
|
||||||
button = XINPUT_GAMEPAD_BACK;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_L:
|
|
||||||
button = XINPUT_GAMEPAD_LEFT_SHOULDER;
|
|
||||||
break;
|
|
||||||
case SNES_DEVICE_ID_JOYPAD_R:
|
|
||||||
button = XINPUT_GAMEPAD_RIGHT_SHOULDER;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
button = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
button = binds[player][id].joykey;
|
||||||
|
|
||||||
return (state[player].Gamepad.wButtons & button) ? 1 : 0;
|
return (state[player].Gamepad.wButtons & button) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user