diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index e64f1a9234..556f1a7436 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -265,9 +265,9 @@ void filebrowser_update(void *data, uint64_t input, const char *extensions) action = FILEBROWSER_ACTION_RIGHT; else if (input & (1ULL << DEVICE_NAV_LEFT)) action = FILEBROWSER_ACTION_LEFT; - else if (input & (1ULL << DEVICE_NAV_R2)) + else if (input & (1ULL << DEVICE_NAV_R1)) action = FILEBROWSER_ACTION_SCROLL_DOWN; - else if (input & (1ULL << DEVICE_NAV_L2)) + else if (input & (1ULL << DEVICE_NAV_L1)) action = FILEBROWSER_ACTION_SCROLL_UP; else if (input & (1ULL << DEVICE_NAV_A)) { @@ -717,6 +717,8 @@ static uint64_t rgui_input(void) RETRO_DEVICE_ID_JOYPAD_RIGHT, DEVICE_NAV_RIGHT, RETRO_DEVICE_ID_JOYPAD_A, DEVICE_NAV_A, RETRO_DEVICE_ID_JOYPAD_B, DEVICE_NAV_B, + RETRO_DEVICE_ID_JOYPAD_L, DEVICE_NAV_L, + RETRO_DEVICE_ID_JOYPAD_R, DEVICE_NAV_R, RETRO_DEVICE_ID_JOYPAD_START, DEVICE_NAV_START, RETRO_DEVICE_ID_JOYPAD_SELECT, DEVICE_NAV_SELECT, }; @@ -737,31 +739,24 @@ static uint64_t rgui_input(void) rgui->trigger_state = input_state & ~rgui->old_input_state; -#if defined(HAVE_RGUI) rgui->do_held = (input_state & ( - (1ULL << DEVICE_NAV_UP) | - (1ULL << DEVICE_NAV_DOWN) | - (1ULL << DEVICE_NAV_LEFT) | - (1ULL << DEVICE_NAV_RIGHT))) && - !(input_state & (1ULL << DEVICE_NAV_MENU)); -#elif defined(HAVE_RMENU) - rgui->do_held = (input_state & ( - (1ULL << DEVICE_NAV_LEFT) | - (1ULL << DEVICE_NAV_RIGHT) | - (1ULL << DEVICE_NAV_UP) | - (1ULL << DEVICE_NAV_DOWN) | - (1ULL << RARCH_ANALOG_LEFT_Y_DPAD_UP) | - (1ULL << RARCH_ANALOG_LEFT_Y_DPAD_DOWN) | - (1ULL << RARCH_ANALOG_LEFT_X_DPAD_LEFT) | - (1ULL << RARCH_ANALOG_LEFT_X_DPAD_RIGHT) | - (1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_UP) | - (1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_DOWN) | - (1ULL << RARCH_ANALOG_RIGHT_X_DPAD_LEFT) | - (1ULL << RARCH_ANALOG_RIGHT_X_DPAD_RIGHT) | - (1ULL << DEVICE_NAV_L2) | - (1ULL << DEVICE_NAV_R2) - )) && !(input_state & (1ULL << DEVICE_NAV_MENU)); + (1ULL << DEVICE_NAV_LEFT) + | (1ULL << DEVICE_NAV_RIGHT) + | (1ULL << DEVICE_NAV_UP) + | (1ULL << DEVICE_NAV_DOWN) + | (1ULL << DEVICE_NAV_L1) + | (1ULL << DEVICE_NAV_R1) +#if defined(HAVE_RMENU) + | (1ULL << RARCH_ANALOG_LEFT_Y_DPAD_UP) + | (1ULL << RARCH_ANALOG_LEFT_Y_DPAD_DOWN) + | (1ULL << RARCH_ANALOG_LEFT_X_DPAD_LEFT) + | (1ULL << RARCH_ANALOG_LEFT_X_DPAD_RIGHT) + | (1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_UP) + | (1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_DOWN) + | (1ULL << RARCH_ANALOG_RIGHT_X_DPAD_LEFT) + | (1ULL << RARCH_ANALOG_RIGHT_X_DPAD_RIGHT) #endif + )) && !(input_state & (1ULL << DEVICE_NAV_MENU)); return input_state; } diff --git a/frontend/menu/menu_common.h b/frontend/menu/menu_common.h index 92829bd500..e8fa55f471 100644 --- a/frontend/menu/menu_common.h +++ b/frontend/menu/menu_common.h @@ -87,6 +87,8 @@ enum DEVICE_NAV_RIGHT, DEVICE_NAV_A, DEVICE_NAV_B, + DEVICE_NAV_L, + DEVICE_NAV_R, DEVICE_NAV_START, DEVICE_NAV_SELECT, DEVICE_NAV_MENU, @@ -222,6 +224,8 @@ typedef enum RGUI_ACTION_SETTINGS, RGUI_ACTION_START, RGUI_ACTION_MESSAGE, + RGUI_ACTION_SCROLL_DOWN, + RGUI_ACTION_SCROLL_UP, RGUI_ACTION_NOOP } rgui_action_t; diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 46960e5e47..62ffd79cd3 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -2657,6 +2657,10 @@ static int rgui_iterate(void *data) action = RGUI_ACTION_LEFT; else if (rgui->trigger_state & (1ULL << DEVICE_NAV_RIGHT)) action = RGUI_ACTION_RIGHT; + else if (rgui->trigger_state & (1ULL << DEVICE_NAV_L)) + action = RGUI_ACTION_SCROLL_UP; + else if (rgui->trigger_state & (1ULL << DEVICE_NAV_R)) + action = RGUI_ACTION_SCROLL_DOWN; else if (rgui->trigger_state & (1ULL << DEVICE_NAV_B)) action = RGUI_ACTION_CANCEL; else if (rgui->trigger_state & (1ULL << DEVICE_NAV_A)) @@ -2711,6 +2715,18 @@ static int rgui_iterate(void *data) else rgui->selection_ptr = rgui->selection_buf->size - 1; break; + case RGUI_ACTION_SCROLL_UP: + if (rgui->selection_ptr > 16) + rgui->selection_ptr -= 16; + else + rgui->selection_ptr = 0; + break; + case RGUI_ACTION_SCROLL_DOWN: + if (rgui->selection_ptr + 16 < rgui->selection_buf->size) + rgui->selection_ptr += 16; + else + rgui->selection_ptr = rgui->selection_buf->size - 1; + break; case RGUI_ACTION_CANCEL: if (rgui->menu_stack->size > 1) diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index af9f9b96d6..782619276f 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -2311,13 +2311,13 @@ static int select_rom(void *data, uint64_t input) return -1; } } - else if (input & (1ULL << DEVICE_NAV_L1)) + else if (input & (1ULL << DEVICE_NAV_L2)) { const char * drive_map = menu_drive_mapping_previous(); if (drive_map != NULL) filebrowser_set_root_and_ext(rgui->browser, rgui->browser->current_dir.extensions, drive_map); } - else if (input & (1ULL << DEVICE_NAV_R1)) + else if (input & (1ULL << DEVICE_NAV_R2)) { const char * drive_map = menu_drive_mapping_next(); if (drive_map != NULL) @@ -2985,7 +2985,6 @@ static void* rgui_init(void) static void rgui_free(void *data) { - rgui_handle_t *rgui = (rgui_handle_t*)data; #ifdef _XBOX1 #ifdef HAVE_MENU_PANEL if (menu_panel->vertex_buf)