(RMenu/PS3/Xbox 1) Add D-pad emulation setting

This commit is contained in:
Twinaphex 2012-08-22 14:04:33 +02:00
parent 077c3a6469
commit 8adfd6e948
3 changed files with 43 additions and 0 deletions

View File

@ -413,6 +413,11 @@ static void populate_setting_item(unsigned i, item *current_item)
snprintf(current_item->comment, sizeof(current_item->comment), "Controller %d is currently selected.", currently_selected_controller_menu+1);
snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%d", currently_selected_controller_menu+1);
break;
case SETTING_DPAD_EMULATION:
snprintf(current_item->text, sizeof(current_item->text), "D-Pad Emulation");
snprintf(current_item->comment, sizeof(current_item->comment), "[%s] from Controller %d is mapped to D-pad.", rarch_dpad_emulation_name_lut[g_settings.input.dpad_emulation[currently_selected_controller_menu]], currently_selected_controller_menu+1);
snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%s", rarch_dpad_emulation_name_lut[g_settings.input.dpad_emulation[currently_selected_controller_menu]]);
break;
case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_B:
case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_Y:
case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_SELECT:
@ -1427,6 +1432,40 @@ static void set_setting_action(menu *current_menu, unsigned switchvalue, uint64_
if(input & (1 << RMENU_DEVICE_NAV_START))
currently_selected_controller_menu = 0;
break;
case SETTING_DPAD_EMULATION:
if(input & (1 << RMENU_DEVICE_NAV_LEFT))
{
switch(g_settings.input.dpad_emulation[currently_selected_controller_menu])
{
case DPAD_EMULATION_NONE:
break;
case DPAD_EMULATION_LSTICK:
input_ptr.set_analog_dpad_mapping(0, DPAD_EMULATION_NONE, currently_selected_controller_menu);
break;
case DPAD_EMULATION_RSTICK:
input_ptr.set_analog_dpad_mapping(0, DPAD_EMULATION_LSTICK, currently_selected_controller_menu);
break;
}
}
if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)))
{
switch(g_settings.input.dpad_emulation[currently_selected_controller_menu])
{
case DPAD_EMULATION_NONE:
input_ptr.set_analog_dpad_mapping(0, DPAD_EMULATION_LSTICK, currently_selected_controller_menu);
break;
case DPAD_EMULATION_LSTICK:
input_ptr.set_analog_dpad_mapping(0, DPAD_EMULATION_RSTICK, currently_selected_controller_menu);
break;
case DPAD_EMULATION_RSTICK:
break;
}
}
if(input & (1 << RMENU_DEVICE_NAV_START))
input_ptr.set_analog_dpad_mapping(0, DPAD_EMULATION_LSTICK, currently_selected_controller_menu);
break;
case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_UP:
set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_UP, input);
break;

View File

@ -175,6 +175,7 @@ enum
SETTING_PATH_DEFAULT_ALL,
SETTING_CONTROLS_SCHEME,
SETTING_CONTROLS_NUMBER,
SETTING_DPAD_EMULATION,
SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_B,
SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_Y,
SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_SELECT,

View File

@ -403,18 +403,21 @@ static void ps3_input_set_analog_dpad_mapping(unsigned device, unsigned map_dpad
switch(map_dpad_enum)
{
case DPAD_EMULATION_NONE:
g_settings.input.dpad_emulation[controller_id] = DPAD_EMULATION_NONE;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_UP].joykey = platform_keys[PS3_DEVICE_ID_JOYPAD_UP].joykey;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_DOWN].joykey = platform_keys[PS3_DEVICE_ID_JOYPAD_DOWN].joykey;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_LEFT].joykey = platform_keys[PS3_DEVICE_ID_JOYPAD_LEFT].joykey;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_RIGHT].joykey = platform_keys[PS3_DEVICE_ID_JOYPAD_RIGHT].joykey;
break;
case DPAD_EMULATION_LSTICK:
g_settings.input.dpad_emulation[controller_id] = DPAD_EMULATION_LSTICK;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_UP].joykey = platform_keys[PS3_DEVICE_ID_LSTICK_UP_DPAD].joykey;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_DOWN].joykey = platform_keys[PS3_DEVICE_ID_LSTICK_DOWN_DPAD].joykey;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_LEFT].joykey = platform_keys[PS3_DEVICE_ID_LSTICK_LEFT_DPAD].joykey;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_RIGHT].joykey = platform_keys[PS3_DEVICE_ID_LSTICK_RIGHT_DPAD].joykey;
break;
case DPAD_EMULATION_RSTICK:
g_settings.input.dpad_emulation[controller_id] = DPAD_EMULATION_RSTICK;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_UP].joykey = platform_keys[PS3_DEVICE_ID_RSTICK_UP_DPAD].joykey;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_DOWN].joykey = platform_keys[PS3_DEVICE_ID_RSTICK_DOWN_DPAD].joykey;
g_settings.input.binds[controller_id][RETRO_DEVICE_ID_JOYPAD_LEFT].joykey = platform_keys[PS3_DEVICE_ID_RSTICK_LEFT_DPAD].joykey;