diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index ef971816ab..194da9ef1d 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -359,14 +359,7 @@ SCREENSHOTS /*============================================================ MENU ============================================================ */ -#ifdef _XBOX -#include "../rmenu/context/rmenu_ctx_xdk.c" -#endif - #ifdef HAVE_RMENU -#if defined(__CELLOS_LV2__) -#include "../rmenu/context/rmenu_ctx_ps3.c" -#endif #include "../rmenu/rmenu_stack.c" #include "../rmenu/rmenu.c" #endif diff --git a/console/rmenu/context/rmenu_ctx_ps3.c b/console/rmenu/context/rmenu_ctx_ps3.c deleted file mode 100644 index 0925b8d5e4..0000000000 --- a/console/rmenu/context/rmenu_ctx_ps3.c +++ /dev/null @@ -1,214 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2012 - Hans-Kristian Arntzen - * Copyright (C) 2011-2012 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#if defined(__CELLOS_LV2__) -#include -#include -#endif - -#ifdef HAVE_SYSUTILS -#include -#endif - -#include "../rmenu.h" -#include "../../../gfx/gfx_context.h" - -#define HARDCODE_FONT_SIZE 0.91f -#define POSITION_X 0.09f -#define POSITION_X_CENTER 0.5f -#define POSITION_Y_START 0.17f -#define POSITION_Y_INCREMENT 0.035f -#define POSITION_Y_BEGIN (POSITION_Y_START + POSITION_Y_INCREMENT) -#define COMMENT_TWO_Y_POSITION 0.91f -#define COMMENT_Y_POSITION 0.82f - -#define MSG_QUEUE_X_POSITION g_settings.video.msg_pos_x -#define MSG_QUEUE_Y_POSITION 0.76f -#define MSG_QUEUE_FONT_SIZE 1.03f - -#define MSG_PREV_NEXT_Y_POSITION 0.03f -#define CURRENT_PATH_Y_POSITION 0.15f -#define CURRENT_PATH_FONT_SIZE FONT_SIZE - -#define FONT_SIZE (g_extern.console.rmenu.font_size) - -#define NUM_ENTRY_PER_PAGE 15 - -#define DRIVE_MAPPING_SIZE 4 - -const char drive_mappings[DRIVE_MAPPING_SIZE][32] = { - "/app_home/", - "/dev_hdd0/", - "/dev_hdd1/", - "/host_root/" -}; - -unsigned char drive_mapping_idx = 1; - -static void rmenu_ctx_ps3_clear(void) -{ - gfx_ctx_clear(); -} - -static void rmenu_ctx_ps3_blend(bool enable) -{ - gfx_ctx_set_blend(enable); -} - -static void rmenu_ctx_ps3_init_textures(void) -{ -} - -static void rmenu_ctx_ps3_free_textures(void) -{ - gl_t *gl = driver.video_data; - gl->draw_rmenu = false; -} - -static void rmenu_ctx_ps3_render_selection_panel(rmenu_position_t *position) -{ - (void)position; -} - -static void rmenu_ctx_ps3_render_bg(rmenu_position_t *position) -{ - (void)position; -} - -static void rmenu_ctx_ps3_swap_buffers(void) -{ - gfx_ctx_swap_buffers(); -#ifdef HAVE_SYSUTILS - cellSysutilCheckCallback(); -#endif -} - -void rmenu_ctx_ps3_set_swap_interval(unsigned interval) -{ - gfx_ctx_set_swap_interval(interval); -} - -static void rmenu_ctx_ps3_set_default_pos(rmenu_default_positions_t *position) -{ - position->x_position = POSITION_X; - position->x_position_center = POSITION_X_CENTER; - position->y_position = POSITION_Y_BEGIN; - position->comment_y_position = COMMENT_Y_POSITION; - position->y_position_increment = POSITION_Y_INCREMENT; - position->starting_y_position = POSITION_Y_START; - position->comment_two_y_position = COMMENT_TWO_Y_POSITION; - position->font_size = HARDCODE_FONT_SIZE; - position->msg_queue_x_position = MSG_QUEUE_X_POSITION; - position->msg_queue_y_position = MSG_QUEUE_Y_POSITION; - position->msg_queue_font_size= MSG_QUEUE_FONT_SIZE; - position->msg_prev_next_y_position = MSG_PREV_NEXT_Y_POSITION; - position->current_path_font_size = CURRENT_PATH_FONT_SIZE; - position->current_path_y_position = CURRENT_PATH_Y_POSITION; - position->variable_font_size = FONT_SIZE; - position->entries_per_page = NUM_ENTRY_PER_PAGE; - position->core_msg_x_position = 0.3f; - position->core_msg_y_position = 0.06f; - position->core_msg_font_size = COMMENT_Y_POSITION; -} - -static void rmenu_ctx_ps3_render_msg(float xpos, float ypos, float scale, unsigned color, const char *msg, ...) -{ - gl_t *gl = driver.video_data; - - gl_render_msg_place(gl, xpos, ypos, scale, color, msg); -} - -static void rmenu_ctx_ps3_render_menu_enable(bool enable) -{ - gl_t *gl = driver.video_data; - gl->draw_rmenu = enable; -} - -static void rmenu_ctx_ps3_screenshot_enable(bool enable) -{ -#if(CELL_SDK_VERSION > 0x340000) - if(enable) - { - cellSysmoduleLoadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); - CellScreenShotSetParam screenshot_param = {0, 0, 0, 0}; - - screenshot_param.photo_title = "RetroArch PS3"; - screenshot_param.game_title = "RetroArch PS3"; - cellScreenShotSetParameter (&screenshot_param); - cellScreenShotEnable(); - } - else - { - cellScreenShotDisable(); - cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); - } -#endif -} - -static void rmenu_ctx_ps3_screenshot_dump(void *data) -{ - (void)data; -} - -static const char * rmenu_ctx_ps3_drive_mapping_previous(void) -{ - if(drive_mapping_idx > 0) - drive_mapping_idx--; - return drive_mappings[drive_mapping_idx]; -} - -static const char * rmenu_ctx_ps3_drive_mapping_next(void) -{ - if((drive_mapping_idx + 1) < DRIVE_MAPPING_SIZE) - drive_mapping_idx++; - return drive_mappings[drive_mapping_idx]; -} - -static void rmenu_ctx_ps3_set_filtering(unsigned index, bool set_smooth) -{ - gfx_ctx_set_filtering(index, set_smooth); -} - -static void rmenu_ctx_ps3_set_aspect_ratio(unsigned aspectratio_index) -{ - driver.video->set_aspect_ratio(NULL, aspectratio_index); -} - -static void rmenu_ctx_ps3_set_fbo_enable(unsigned i) -{ - gfx_ctx_set_fbo(i); -} - -const rmenu_context_t rmenu_ctx_ps3 = { - .clear = rmenu_ctx_ps3_clear, - .set_filtering = rmenu_ctx_ps3_set_filtering, - .set_aspect_ratio = rmenu_ctx_ps3_set_aspect_ratio, - .blend = rmenu_ctx_ps3_blend, - .set_fbo_enable = rmenu_ctx_ps3_set_fbo_enable, - .free_textures = rmenu_ctx_ps3_free_textures, - .init_textures = rmenu_ctx_ps3_init_textures, - .render_selection_panel = rmenu_ctx_ps3_render_selection_panel, - .render_bg = rmenu_ctx_ps3_render_bg, - .render_menu_enable = rmenu_ctx_ps3_render_menu_enable, - .render_msg = rmenu_ctx_ps3_render_msg, - .screenshot_enable = rmenu_ctx_ps3_screenshot_enable, - .screenshot_dump = rmenu_ctx_ps3_screenshot_dump, - .swap_buffers = rmenu_ctx_ps3_swap_buffers, - .set_swap_interval = rmenu_ctx_ps3_set_swap_interval, - .set_default_pos = rmenu_ctx_ps3_set_default_pos, - .drive_mapping_prev = rmenu_ctx_ps3_drive_mapping_previous, - .drive_mapping_next = rmenu_ctx_ps3_drive_mapping_next, -}; diff --git a/console/rmenu/context/rmenu_ctx_xdk.c b/console/rmenu/context/rmenu_ctx_xdk.c deleted file mode 100644 index dc56fd028a..0000000000 --- a/console/rmenu/context/rmenu_ctx_xdk.c +++ /dev/null @@ -1,248 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2012 - Hans-Kristian Arntzen - * Copyright (C) 2011-2012 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include "../rmenu.h" -#include "../../screenshot.h" - -#ifdef _XBOX -#include "../../xdk/xdk_d3d.h" -#endif - -#include "../../gfx/gfx_context.h" - -#define ROM_PANEL_WIDTH 510 -#define ROM_PANEL_HEIGHT 20 - -#define HARDCODE_FONT_SIZE 21 - -#define POSITION_X m_menuMainRomListPos_x -#define POSITION_X_CENTER (m_menuMainRomListPos_x + 350) -#define POSITION_Y_START m_menuMainRomListPos_y -#define POSITION_Y_BEGIN (POSITION_Y_START + POSITION_Y_INCREMENT) -#define POSITION_Y_INCREMENT 20 -#define COMMENT_Y_POSITION (ypos - ((POSITION_Y_INCREMENT/2) * 3)) -#define COMMENT_TWO_Y_POSITION (ypos - ((POSITION_Y_INCREMENT/2) * 1)) - -#define MSG_QUEUE_X_POSITION POSITION_X -#define MSG_QUEUE_Y_POSITION (ypos - ((POSITION_Y_INCREMENT/2) * 7) + 5) -#define MSG_QUEUE_FONT_SIZE HARDCODE_FONT_SIZE - -#define MSG_PREV_NEXT_Y_POSITION 24 - -#define CURRENT_PATH_Y_POSITION (m_menuMainRomListPos_y - ((POSITION_Y_INCREMENT/2))) -#define CURRENT_PATH_FONT_SIZE 21 - -#define FONT_SIZE 21 - -#define NUM_ENTRY_PER_PAGE 12 - -#define DRIVE_MAPPING_SIZE 5 - -const char drive_mappings[DRIVE_MAPPING_SIZE][32] = { - "C:", - "D:", - "E:", - "F:", - "G:" -}; - -unsigned char drive_mapping_idx = 2; - -int xpos, ypos; -#ifdef _XBOX1 -texture_image m_menuMainRomSelectPanel; -texture_image m_menuMainBG; - -// Rom list coords -int m_menuMainRomListPos_x; -int m_menuMainRomListPos_y; -#endif - -static void rmenu_ctx_xdk_clear(void) -{ - gfx_ctx_xdk_clear(); -} - -static void rmenu_ctx_xdk_blend(bool enable) -{ - gfx_ctx_xdk_set_blend(enable); -} - -static void rmenu_ctx_xdk_free_textures(void) -{ -#ifdef _XBOX1 - texture_image_free(&m_menuMainBG); - texture_image_free(&m_menuMainRomSelectPanel); -#endif -} - -static void rmenu_ctx_xdk_init_textures(void) -{ -#ifdef _XBOX1 - xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; - - int width = d3d->d3dpp.BackBufferWidth; - - // Load background image - if(width == 640) - { - texture_image_load("D:\\Media\\main-menu_480p.png", &m_menuMainBG); - m_menuMainRomListPos_x = 60; - m_menuMainRomListPos_y = 80; - } - else if(width == 1280) - { - texture_image_load("D:\\Media\\main-menu_720p.png", &m_menuMainBG); - m_menuMainRomListPos_x = 360; - m_menuMainRomListPos_y = 130; - } - - // Load rom selector panel - texture_image_load("D:\\Media\\menuMainRomSelectPanel.png", &m_menuMainRomSelectPanel); - - //Display some text - //Center the text (hardcoded) - xpos = width == 640 ? 65 : 400; - ypos = width == 640 ? 430 : 670; -#endif -} - -static void rmenu_ctx_xdk_render_selection_panel(rmenu_position_t *position) -{ -#ifdef _XBOX1 - m_menuMainRomSelectPanel.x = position->x; - m_menuMainRomSelectPanel.y = position->y; - m_menuMainRomSelectPanel.width = ROM_PANEL_WIDTH; - m_menuMainRomSelectPanel.height = ROM_PANEL_HEIGHT; - texture_image_render(&m_menuMainRomSelectPanel); -#endif -} - -static void rmenu_ctx_xdk_render_bg(rmenu_position_t *position) -{ -#ifdef _XBOX1 - m_menuMainBG.x = 0; - m_menuMainBG.y = 0; - texture_image_render(&m_menuMainBG); -#endif -} - -static void rmenu_ctx_xdk_swap_buffers(void) -{ - gfx_ctx_xdk_swap_buffers(); -} - -void rmenu_ctx_xdk_set_swap_interval(unsigned interval) -{ - gfx_ctx_xdk_set_swap_interval(interval); -} - -static void rmenu_ctx_xdk_set_default_pos(rmenu_default_positions_t *position) -{ -#ifdef _XBOX1 - position->x_position = POSITION_X; - position->x_position_center = POSITION_X_CENTER; - position->y_position = POSITION_Y_BEGIN; - position->comment_y_position = COMMENT_Y_POSITION; - position->y_position_increment = POSITION_Y_INCREMENT; - position->starting_y_position = POSITION_Y_START; - position->comment_two_y_position = COMMENT_TWO_Y_POSITION; - position->font_size = HARDCODE_FONT_SIZE; - position->msg_queue_x_position = MSG_QUEUE_X_POSITION; - position->msg_queue_y_position = MSG_QUEUE_Y_POSITION; - position->msg_queue_font_size= MSG_QUEUE_FONT_SIZE; - position->msg_prev_next_y_position = MSG_PREV_NEXT_Y_POSITION; - position->current_path_font_size = CURRENT_PATH_FONT_SIZE; - position->current_path_y_position = CURRENT_PATH_Y_POSITION; - position->variable_font_size = FONT_SIZE; - position->entries_per_page = NUM_ENTRY_PER_PAGE; - position->core_msg_x_position = position->x_position; - position->core_msg_y_position = position->msg_prev_next_y_position + 0.01f; - position->core_msg_font_size = position->font_size; -#endif -} - -static void rmenu_ctx_xdk_render_msg(float xpos, float ypos, float scale, unsigned color, const char *msg, ...) -{ -#ifdef _XBOX1 - xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; - xfonts_render_msg_place(d3d, xpos, ypos, scale, msg); -#endif -} - -static void rmenu_ctx_xdk_render_menu_enable(bool enable) -{ -} - -static void rmenu_ctx_xdk_screenshot_enable(bool enable) -{ -} - -static void rmenu_ctx_xdk_screenshot_dump(void *data) -{ - gfx_ctx_xdk_screenshot_dump(NULL); -} - -static const char * rmenu_ctx_xdk_drive_mapping_previous(void) -{ - if(drive_mapping_idx > 0) - drive_mapping_idx--; - return drive_mappings[drive_mapping_idx]; -} - -static const char * rmenu_ctx_xdk_drive_mapping_next(void) -{ - if((drive_mapping_idx + 1) < DRIVE_MAPPING_SIZE) - drive_mapping_idx++; - return drive_mappings[drive_mapping_idx]; -} - -static void rmenu_ctx_xdk_set_filtering(unsigned index, bool set_smooth) -{ - gfx_ctx_xdk_set_filtering(index, set_smooth); -} - -static void rmenu_ctx_xdk_set_aspect_ratio(unsigned aspectratio_index) -{ - driver.video->set_aspect_ratio(NULL, aspectratio_index); -} - -static void rmenu_ctx_xdk_set_fbo_enable(unsigned i) -{ - gfx_ctx_xdk_set_fbo(i); -} - - -const rmenu_context_t rmenu_ctx_xdk = { - rmenu_ctx_xdk_clear, - rmenu_ctx_xdk_set_filtering, - rmenu_ctx_xdk_set_aspect_ratio, - rmenu_ctx_xdk_blend, - rmenu_ctx_xdk_set_fbo_enable, - rmenu_ctx_xdk_free_textures, - rmenu_ctx_xdk_init_textures, - rmenu_ctx_xdk_render_selection_panel, - rmenu_ctx_xdk_render_bg, - rmenu_ctx_xdk_render_menu_enable, - rmenu_ctx_xdk_render_msg, - rmenu_ctx_xdk_screenshot_enable, - rmenu_ctx_xdk_screenshot_dump, - rmenu_ctx_xdk_swap_buffers, - rmenu_ctx_xdk_set_swap_interval, - rmenu_ctx_xdk_set_default_pos, - rmenu_ctx_xdk_drive_mapping_previous, - rmenu_ctx_xdk_drive_mapping_next, -}; diff --git a/console/rmenu/rmenu.c b/console/rmenu/rmenu.c index f1461a01b4..e611a48d1f 100644 --- a/console/rmenu/rmenu.c +++ b/console/rmenu/rmenu.c @@ -59,8 +59,6 @@ unsigned set_shader = 0; unsigned currently_selected_controller_menu = 0; char m_title[256]; -static const rmenu_context_t *context; - static uint64_t old_state = 0; typedef enum { @@ -151,105 +149,105 @@ static void populate_setting_item(unsigned i, item *current_item) { #ifdef __CELLOS_LV2__ case SETTING_CHANGE_RESOLUTION: - { - unsigned width = gfx_ctx_get_resolution_width(g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]); - unsigned height = gfx_ctx_get_resolution_height(g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]); - snprintf(current_item->text, sizeof(current_item->text), "Resolution"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%dx%d", width, height); - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Change the display resolution."); - } - break; + { + unsigned width = gfx_ctx_get_resolution_width(g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]); + unsigned height = gfx_ctx_get_resolution_height(g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]); + snprintf(current_item->text, sizeof(current_item->text), "Resolution"); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%dx%d", width, height); + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Change the display resolution."); + } + break; #endif #if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) case SETTING_SHADER_PRESETS: snprintf(current_item->text, sizeof(current_item->text), "Shader Presets (CGP)"); - fill_pathname_base(fname, g_extern.file_state.cgp_path, sizeof(fname)); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), fname); + fill_pathname_base(fname, g_extern.file_state.cgp_path, sizeof(fname)); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), fname); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Select a [CG Preset] script."); - break; + break; case SETTING_SHADER: - fill_pathname_base(fname, g_settings.video.cg_shader_path, sizeof(fname)); + fill_pathname_base(fname, g_settings.video.cg_shader_path, sizeof(fname)); snprintf(current_item->text, sizeof(current_item->text), "Shader #1"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%s", fname); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%s", fname); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Select a shader as [Shader #1]. NOTE: Some shaders might be\ntoo slow at 1080p. If you experience any slowdown, try another shader."); - break; + break; case SETTING_SHADER_2: - fill_pathname_base(fname, g_settings.video.second_pass_shader, sizeof(fname)); + fill_pathname_base(fname, g_settings.video.second_pass_shader, sizeof(fname)); snprintf(current_item->text, sizeof(current_item->text), "Shader #2"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%s", fname); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%s", fname); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Select a shader as [Shader #2]. NOTE: Some shaders might be\ntoo slow at 1080p. If you experience any slowdown, try another shader."); - break; + break; #endif case SETTING_FONT_SIZE: snprintf(current_item->text, sizeof(current_item->text), "Font Size"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%f", g_extern.console.rmenu.font_size); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%f", g_extern.console.rmenu.font_size); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Increase or decrease the [Font Size]."); - break; + break; case SETTING_KEEP_ASPECT_RATIO: snprintf(current_item->text, sizeof(current_item->text), "Aspect Ratio"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), aspectratio_lut[g_settings.video.aspect_ratio_idx].name); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), aspectratio_lut[g_settings.video.aspect_ratio_idx].name); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Select an [Aspect Ratio]."); - break; + break; case SETTING_HW_TEXTURE_FILTER: snprintf(current_item->text, sizeof(current_item->text), "Hardware filtering #1"); - if(g_settings.video.smooth) + if(g_settings.video.smooth) snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Bilinear"); - else + else snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Point"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Hardware filtering #1 is set to [%s].", current_item->setting_text); - break; + break; #ifdef HAVE_FBO case SETTING_HW_TEXTURE_FILTER_2: snprintf(current_item->text, sizeof(current_item->text), "Hardware filtering #2"); - if(g_settings.video.second_pass_smooth) + if(g_settings.video.second_pass_smooth) snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Bilinear"); - else + else snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Point"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Hardware filtering #2 is set to [%s].", current_item->setting_text); - break; + break; case SETTING_SCALE_ENABLED: snprintf(current_item->text, sizeof(current_item->text), "Custom Scaling/Dual Shaders"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_settings.video.render_to_texture ? "ON" : "OFF"); - snprintf(current_item->comment, sizeof(current_item->comment), g_settings.video.render_to_texture ? "INFO - [Custom Scaling] is set to 'ON' - 2x shaders will look much\nbetter, and you can select a shader for [Shader #2]." : "INFO - [Custom Scaling] is set to 'OFF'."); - break; + snprintf(current_item->comment, sizeof(current_item->comment), g_settings.video.render_to_texture ? "INFO - [Custom Scaling] is set to 'ON' - 2x shaders will look much\nbetter, and you can select a shader for [Shader #2]." : "INFO - [Custom Scaling] is set to 'OFF'."); + break; case SETTING_SCALE_FACTOR: snprintf(current_item->text, sizeof(current_item->text), "Custom Scaling Factor"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%fx (X) / %fx (Y)", g_settings.video.fbo.scale_x, g_settings.video.fbo.scale_y); - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Custom Scaling Factor] is set to: '%fx (X) / %fx (Y)'.", g_settings.video.fbo.scale_x, g_settings.video.fbo.scale_y); - break; + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%fx (X) / %fx (Y)", g_settings.video.fbo.scale_x, g_settings.video.fbo.scale_y); + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Custom Scaling Factor] is set to: '%fx (X) / %fx (Y)'.", g_settings.video.fbo.scale_x, g_settings.video.fbo.scale_y); + break; #endif #ifdef _XBOX1 case SETTING_FLICKER_FILTER: snprintf(current_item->text, sizeof(current_item->text), "Flicker Filter"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%d", g_extern.console.screen.state.flicker_filter.enable); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%d", g_extern.console.screen.state.flicker_filter.enable); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Toggle the [Flicker Filter]."); - break; + break; case SETTING_SOFT_DISPLAY_FILTER: snprintf(current_item->text, sizeof(current_item->text), "Soft Display Filter"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.screen.state.soft_filter.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Toggle the [Soft Display Filter]."); - break; + break; #endif case SETTING_HW_OVERSCAN_AMOUNT: snprintf(current_item->text, sizeof(current_item->text), "Overscan"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%f", g_extern.console.screen.overscan_amount); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%f", g_extern.console.screen.overscan_amount); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Adjust or decrease [Overscan]. Set this to higher than 0.000\nif the screen doesn't fit on your TV/monitor."); - break; + break; case SETTING_THROTTLE_MODE: snprintf(current_item->text, sizeof(current_item->text), "Throttle Mode"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.screen.state.throttle.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), g_extern.console.screen.state.throttle.enable ? "INFO - [Throttle Mode] is 'ON' - Vsync is enabled." : "INFO - [Throttle Mode] is 'OFF' - Vsync is disabled."); - break; + break; case SETTING_TRIPLE_BUFFERING: snprintf(current_item->text, sizeof(current_item->text), "Triple Buffering"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.screen.state.triple_buffering.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), g_extern.console.screen.state.triple_buffering.enable ? "INFO - [Triple Buffering] is set to 'ON'." : "INFO - [Triple Buffering] is set to 'OFF'."); - break; + break; case SETTING_ENABLE_SCREENSHOTS: snprintf(current_item->text, sizeof(current_item->text), "Screenshot Option"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.screen.state.screenshots.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Screenshots feature is set to '%s'.", g_extern.console.screen.state.screenshots.enable ? "ON" : "OFF"); - break; + break; #if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) case SETTING_APPLY_SHADER_PRESET_ON_STARTUP: snprintf(current_item->text, sizeof(current_item->text), "APPLY SHADER PRESET ON STARTUP"); @@ -261,172 +259,172 @@ static void populate_setting_item(unsigned i, item *current_item) snprintf(current_item->text, sizeof(current_item->text), "DEFAULTS"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), ""); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Set all [General Video Settings] back to their 'DEFAULT' values."); - break; + break; case SETTING_SOUND_MODE: snprintf(current_item->text, sizeof(current_item->text), "Sound Output"); - switch(g_extern.console.sound.mode) - { - case SOUND_MODE_NORMAL: - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Sound Output] is set to 'Normal'."); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Normal"); - break; + switch(g_extern.console.sound.mode) + { + case SOUND_MODE_NORMAL: + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Sound Output] is set to 'Normal'."); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Normal"); + break; #ifdef HAVE_RSOUND - case SOUND_MODE_RSOUND: - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Sound Output] is set to 'RSound'." ); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "RSound"); - break; + case SOUND_MODE_RSOUND: + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Sound Output] is set to 'RSound'." ); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "RSound"); + break; #endif #ifdef HAVE_HEADSET - case SOUND_MODE_HEADSET: - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Sound Output] is set to 'USB/Bluetooth Headset'."); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "USB/Bluetooth Headset"); - break; + case SOUND_MODE_HEADSET: + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Sound Output] is set to 'USB/Bluetooth Headset'."); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "USB/Bluetooth Headset"); + break; #endif - default: - break; - } - break; + default: + break; + } + break; #ifdef HAVE_RSOUND case SETTING_RSOUND_SERVER_IP_ADDRESS: snprintf(current_item->text, sizeof(current_item->text), "RSound Server IP Address"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_settings.audio.device); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_settings.audio.device); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Enter the IP Address of the [RSound Audio Server]. IP address\nmust be an IPv4 32-bits address, eg: '192.168.1.7'."); - break; + break; #endif case SETTING_DEFAULT_AUDIO_ALL: snprintf(current_item->text, sizeof(current_item->text), "DEFAULTS"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), ""); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Set all [General Audio Settings] back to their 'DEFAULT' values."); - break; + break; case SETTING_EMU_CURRENT_SAVE_STATE_SLOT: snprintf(current_item->text, sizeof(current_item->text), "Current save state slot"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%d", g_extern.state_slot); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%d", g_extern.state_slot); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Set the currently selected savestate slot."); - break; - /* emu-specific */ + break; + /* emu-specific */ case SETTING_EMU_SHOW_DEBUG_INFO_MSG: snprintf(current_item->text, sizeof(current_item->text), "Debug info messages"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.rmenu.state.msg_fps.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Show onscreen debug messages."); - break; + break; case SETTING_EMU_SHOW_INFO_MSG: snprintf(current_item->text, sizeof(current_item->text), "Info messages"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.rmenu.state.msg_info.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Show onscreen info messages in the menu."); - break; + break; case SETTING_EMU_REWIND_ENABLED: snprintf(current_item->text, sizeof(current_item->text), "Rewind option"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_settings.rewind_enable ? "ON" : "OFF"); - if(g_settings.rewind_enable) - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Rewind] feature is set to 'ON'."); - else - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Rewind] feature is set to 'OFF'."); - break; + if(g_settings.rewind_enable) + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Rewind] feature is set to 'ON'."); + else + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Rewind] feature is set to 'OFF'."); + break; #ifdef HAVE_ZLIB case SETTING_ZIP_EXTRACT: snprintf(current_item->text, sizeof(current_item->text), "ZIP Extract Option"); - switch(g_extern.file_state.zip_extract_mode) - { - case ZIP_EXTRACT_TO_CURRENT_DIR: - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Current dir"); - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - ZIP files are extracted to the current dir."); - break; - case ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE: - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Current dir and load first file"); - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - ZIP files are extracted to current dir, and auto-loaded."); - break; - case ZIP_EXTRACT_TO_CACHE_DIR: - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Cache dir"); - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - ZIP files are extracted to the cache dir."); - break; - } - break; + switch(g_extern.file_state.zip_extract_mode) + { + case ZIP_EXTRACT_TO_CURRENT_DIR: + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Current dir"); + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - ZIP files are extracted to the current dir."); + break; + case ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE: + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Current dir and load first file"); + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - ZIP files are extracted to current dir, and auto-loaded."); + break; + case ZIP_EXTRACT_TO_CACHE_DIR: + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "Cache dir"); + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - ZIP files are extracted to the cache dir."); + break; + } + break; #endif case SETTING_RARCH_DEFAULT_EMU: snprintf(current_item->text, sizeof(current_item->text), "Default libretro core"); - fill_pathname_base(fname, g_settings.libretro, sizeof(fname)); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%s", fname); + fill_pathname_base(fname, g_settings.libretro, sizeof(fname)); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), "%s", fname); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Select a default libretro core to launch at start-up."); - break; + break; case SETTING_QUIT_RARCH: snprintf(current_item->text, sizeof(current_item->text), "Quit RetroArch and save settings "); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), ""); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), ""); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Quits RetroArch and saves the settings."); - break; + break; case SETTING_EMU_AUDIO_MUTE: snprintf(current_item->text, sizeof(current_item->text), "Mute Audio"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.audio_data.mute ? "ON" : "OFF"); - if(g_extern.audio_data.mute) - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Audio Mute] is set to 'ON'. The game audio will be muted."); - else - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Audio Mute] is set to 'OFF'."); - break; + if(g_extern.audio_data.mute) + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Audio Mute] is set to 'ON'. The game audio will be muted."); + else + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Audio Mute] is set to 'OFF'."); + break; #ifdef _XBOX1 case SETTING_EMU_AUDIO_SOUND_VOLUME_LEVEL: snprintf(current_item->text, sizeof(current_item->text), "Volume Level"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.sound.volume_level ? "Loud" : "Normal"); - if(g_extern.audio_data.mute) - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Volume Level] is set to 'Loud'"); - else - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Volume Level' is set to 'Normal'."); + if(g_extern.audio_data.mute) + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Volume Level] is set to 'Loud'"); + else + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Volume Level' is set to 'Normal'."); break; #endif case SETTING_ENABLE_CUSTOM_BGM: snprintf(current_item->text, sizeof(current_item->text), "Custom BGM Option"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.sound.custom_bgm.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Custom BGM] is set to '%s'.", g_extern.console.sound.custom_bgm.enable ? "ON" : "OFF"); - break; + break; case SETTING_PATH_DEFAULT_ROM_DIRECTORY: snprintf(current_item->text, sizeof(current_item->text), "Startup ROM Directory"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.main_wrap.paths.default_rom_startup_dir); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.main_wrap.paths.default_rom_startup_dir); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Set the default [Startup ROM directory]. NOTE: You will have to\nrestart the emulator for this change to have any effect."); - break; + break; case SETTING_PATH_SAVESTATES_DIRECTORY: snprintf(current_item->text, sizeof(current_item->text), "Savestate Directory"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.main_wrap.paths.default_savestate_dir); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.main_wrap.paths.default_savestate_dir); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Set the default path where all the savestate files will be saved to."); - break; + break; case SETTING_PATH_SRAM_DIRECTORY: snprintf(current_item->text, sizeof(current_item->text), "SRAM Directory"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.main_wrap.paths.default_sram_dir); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.main_wrap.paths.default_sram_dir); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Set the default SRAM (SaveRAM) directory path. All the\nbattery backup saves will be stored in this directory."); - break; + break; #ifdef HAVE_XML case SETTING_PATH_CHEATS: snprintf(current_item->text, sizeof(current_item->text), "Cheatfile Directory"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_settings.cheat_database); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_settings.cheat_database); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Set the default [Cheatfile directory] path. All CHT (cheat) files\nwill be stored here."); - break; + break; #endif case SETTING_PATH_SYSTEM: snprintf(current_item->text, sizeof(current_item->text), "System Directory"); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_settings.system_directory); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_settings.system_directory); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Set the default [System directory] path. System files like\nBIOS files, etc. will be stored here."); - break; + break; case SETTING_ENABLE_SRAM_PATH: snprintf(current_item->text, sizeof(current_item->text), "Custom SRAM Dir Enable"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.main_wrap.state.default_sram_dir.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Custom SRAM Dir Path] is set to '%s'.", g_extern.console.main_wrap.state.default_sram_dir.enable ? "ON" : "OFF"); - break; + break; case SETTING_ENABLE_STATE_PATH: snprintf(current_item->text, sizeof(current_item->text), "Custom Savestate Dir Enable"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.console.main_wrap.state.default_savestate_dir.enable ? "ON" : "OFF"); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Custom Savestate Dir Path] is set to '%s'.", g_extern.console.main_wrap.state.default_savestate_dir.enable ? "ON" : "OFF"); - break; + break; case SETTING_CONTROLS_SCHEME: snprintf(current_item->text, sizeof(current_item->text), "Control Scheme Preset"); - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Input scheme preset [%s] is selected.", g_extern.file_state.input_cfg_path); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.file_state.input_cfg_path); - break; + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Input scheme preset [%s] is selected.", g_extern.file_state.input_cfg_path); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.file_state.input_cfg_path); + break; case SETTING_CONTROLS_NUMBER: snprintf(current_item->text, sizeof(current_item->text), "Controller No"); - 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; + 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]]); + 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: @@ -445,13 +443,13 @@ static void populate_setting_item(unsigned i, item *current_item) case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L3: case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R3: { - const char * value = rarch_input_find_platform_key_label(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey); - unsigned id = currentsetting - FIRST_CONTROL_BIND; - snprintf(current_item->text, sizeof(current_item->text), rarch_input_get_default_keybind_name(id)); - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [%s] is mapped to action:\n[%s].", current_item->text, value); - snprintf(current_item->setting_text, sizeof(current_item->setting_text), value); - } - break; + const char * value = rarch_input_find_platform_key_label(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey); + unsigned id = currentsetting - FIRST_CONTROL_BIND; + snprintf(current_item->text, sizeof(current_item->text), rarch_input_get_default_keybind_name(id)); + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [%s] is mapped to action:\n[%s].", current_item->text, value); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), value); + } + break; case SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS: snprintf(current_item->text, sizeof(current_item->text), "SAVE CUSTOM CONTROLS"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), ""); @@ -487,41 +485,42 @@ static void populate_setting_item(unsigned i, item *current_item) snprintf(current_item->text, sizeof(current_item->text), "SAVE SETTINGS AS CGP PRESET"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), ""); snprintf(current_item->comment, sizeof(current_item->comment), "INFO - Save the current video settings to a [CG Preset] (CGP) file."); - break; + break; #endif default: - break; + break; } } static void display_menubar(menu *current_menu) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; filebrowser_t *fb = &browser; char current_path[256], rarch_version[128], msg[128]; rmenu_default_positions_t default_pos; - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); snprintf(rarch_version, sizeof(rarch_version), "v%s", PACKAGE_VERSION); switch(current_menu->enum_id) { case GENERAL_VIDEO_MENU: - snprintf(msg, sizeof(msg), "NEXT -> [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_R)); - context->render_msg(default_pos.x_position, default_pos.current_path_y_position, default_pos.current_path_font_size, WHITE, msg); + snprintf(msg, sizeof(msg), "NEXT -> [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_R)); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.current_path_y_position, default_pos.current_path_font_size, WHITE, msg); break; case GENERAL_AUDIO_MENU: case EMU_GENERAL_MENU: case EMU_VIDEO_MENU: case EMU_AUDIO_MENU: case PATH_MENU: - snprintf(msg, sizeof(msg), "[%s] <- PREV | NEXT -> [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_L), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_R)); - context->render_msg(default_pos.x_position, default_pos.current_path_y_position, default_pos.current_path_font_size, WHITE, msg); + snprintf(msg, sizeof(msg), "[%s] <- PREV | NEXT -> [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_L), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_R)); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.current_path_y_position, default_pos.current_path_font_size, WHITE, msg); break; case CONTROLS_MENU: case INGAME_MENU_RESIZE: - snprintf(msg, sizeof(msg), "[%s] <- PREV", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_L)); - context->render_msg(default_pos.x_position, default_pos.current_path_y_position, default_pos.current_path_font_size, WHITE, msg); + snprintf(msg, sizeof(msg), "[%s] <- PREV", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_L)); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.current_path_y_position, default_pos.current_path_font_size, WHITE, msg); break; default: break; @@ -543,20 +542,20 @@ static void display_menubar(menu *current_menu) case PATH_SYSTEM_DIR_CHOICE: fb = &tmpBrowser; case FILE_BROWSER_MENU: - snprintf(current_path, sizeof(current_path), "PATH: %s", filebrowser_get_current_dir(fb)); - context->render_msg(default_pos.x_position, default_pos.current_path_y_position, default_pos.current_path_font_size, WHITE, current_path); + snprintf(current_path, sizeof(current_path), "PATH: %s", filebrowser_get_current_dir(fb)); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.current_path_y_position, default_pos.current_path_font_size, WHITE, current_path); break; default: break; } - rmenu_position_t position = {0}; - context->render_bg(&position); + rarch_position_t position = {0}; + device_ptr->ctx_driver->rmenu_draw_bg(&position); - context->render_msg(default_pos.core_msg_x_position, default_pos.core_msg_y_position, default_pos.core_msg_font_size, WHITE, m_title); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.core_msg_x_position, default_pos.core_msg_y_position, default_pos.core_msg_font_size, WHITE, m_title); #ifdef __CELLOS_LV2__ - context->render_msg(default_pos.x_position, 0.05f, 1.4f, WHITE, current_menu->title); - context->render_msg(0.80f, 0.015f, 0.82f, WHITE, rarch_version); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, 0.05f, 1.4f, WHITE, current_menu->title); + device_ptr->ctx_driver->rmenu_render_msg(0.80f, 0.015f, 0.82f, WHITE, rarch_version); #endif } @@ -595,11 +594,12 @@ static void browser_update(filebrowser_t * b, uint64_t input, const char *extens static void browser_render(filebrowser_t * b) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; unsigned file_count = b->current_dir.list->size; unsigned int current_index, page_number, page_base, i; rmenu_default_positions_t default_pos; - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); current_index = b->current_dir.ptr; page_number = current_index / default_pos.entries_per_page; @@ -615,23 +615,24 @@ static void browser_render(filebrowser_t * b) const char *current_pathname = filebrowser_get_current_path(b); if(strcmp(current_pathname, b->current_dir.list->elems[i].data) == 0) { - rmenu_position_t position = {0}; + rarch_position_t position = {0}; position.x = default_pos.x_position; position.y = default_pos.starting_y_position; - context->render_selection_panel(&position); + device_ptr->ctx_driver->rmenu_draw_panel(&position); } - context->render_msg(default_pos.x_position, default_pos.starting_y_position, default_pos.variable_font_size, i == current_index ? RED : b->current_dir.list->elems[i].attr.b ? GREEN : WHITE, fname_tmp); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.starting_y_position, default_pos.variable_font_size, i == current_index ? RED : b->current_dir.list->elems[i].attr.b ? GREEN : WHITE, fname_tmp); } } static void select_file(menu *current_menu, uint64_t input) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; char extensions[256], comment[256], path[PATH_MAX]; bool ret = true; rmenu_default_positions_t default_pos; - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); switch(current_menu->enum_id) { @@ -667,7 +668,7 @@ static void select_file(menu *current_menu, uint64_t input) else { snprintf(path, sizeof(path), filebrowser_get_current_path(&tmpBrowser)); - + switch(current_menu->enum_id) { #if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) @@ -685,11 +686,11 @@ static void select_file(menu *current_menu, uint64_t input) break; case PRESET_CHOICE: strlcpy(g_extern.file_state.cgp_path, path, sizeof(g_extern.file_state.cgp_path)); - context->set_fbo_enable(FBO_DEINIT); + device_ptr->ctx_driver->set_fbo(FBO_DEINIT); #ifdef HAVE_OPENGL gl_cg_reinit(path); #endif - context->set_fbo_enable(FBO_INIT); + device_ptr->ctx_driver->set_fbo(FBO_INIT); break; #endif case INPUT_PRESET_CHOICE: @@ -700,7 +701,7 @@ static void select_file(menu *current_menu, uint64_t input) break; case LIBRETRO_CHOICE: strlcpy(g_settings.libretro, path, sizeof(g_settings.libretro)); - + if(set_libretro_core_as_launch) { strlcpy(g_extern.console.external_launch.launch_app, path, sizeof(g_extern.console.external_launch.launch_app)); @@ -714,7 +715,7 @@ static void select_file(menu *current_menu, uint64_t input) } break; } - + menu_stack_pop(); } @@ -726,19 +727,20 @@ static void select_file(menu *current_menu, uint64_t input) display_menubar(current_menu); - context->render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, comment); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, comment); snprintf(comment, sizeof(comment), "[%s] - return to settings [%s] - Reset Startdir", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_X), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); - context->render_msg(default_pos.x_position, default_pos.comment_two_y_position, default_pos.font_size, YELLOW, comment); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_two_y_position, default_pos.font_size, YELLOW, comment); } static void select_directory(menu *current_menu, uint64_t input) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; char path[PATH_MAX], msg[256]; bool ret = true; rmenu_default_positions_t default_pos; - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); bool is_dir = filebrowser_get_current_path_isdir(&tmpBrowser); browser_update(&tmpBrowser, input, "empty"); @@ -748,7 +750,7 @@ static void select_directory(menu *current_menu, uint64_t input) if(is_dir) { snprintf(path, sizeof(path), filebrowser_get_current_path(&tmpBrowser)); - + switch(current_menu->enum_id) { case PATH_SAVESTATES_DIR_CHOICE: @@ -810,13 +812,13 @@ static void select_directory(menu *current_menu, uint64_t input) display_menubar(current_menu); snprintf(msg, sizeof(msg), "[%s] - Enter dir | [%s] - Go back", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_X)); - context->render_msg(default_pos.x_position, default_pos.comment_two_y_position, default_pos.font_size, YELLOW, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_two_y_position, default_pos.font_size, YELLOW, msg); snprintf(msg, sizeof(msg), "[%s] - Reset to startdir", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); - context->render_msg(default_pos.x_position, default_pos.comment_two_y_position + (default_pos.y_position_increment * 1), default_pos.font_size, YELLOW, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_two_y_position + (default_pos.y_position_increment * 1), default_pos.font_size, YELLOW, msg); snprintf(msg, sizeof(msg), "INFO - Browse to a directory and assign it as the path by\npressing [%s].", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_Y)); - context->render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, msg); } static void set_keybind_digital(uint64_t default_retro_joypad_id, uint64_t input) @@ -838,6 +840,7 @@ static void set_keybind_digital(uint64_t default_retro_joypad_id, uint64_t input #ifdef __CELLOS_LV2__ static void rarch_filename_input_and_save (unsigned filename_type) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; bool filename_entered = false; char filename_tmp[256], filepath[PATH_MAX]; oskutil_write_initial_message(&g_extern.console.misc.oskutil_handle, L"example"); @@ -847,8 +850,12 @@ static void rarch_filename_input_and_save (unsigned filename_type) while(OSK_IS_RUNNING(g_extern.console.misc.oskutil_handle)) { - context->clear(); - context->swap_buffers(); + device_ptr->ctx_driver->clear(); + device_ptr->ctx_driver->swap_buffers(); + bool quit, resize; + unsigned width, height, frame_count; + frame_count = 0; + device_ptr->ctx_driver->check_window(&quit, &resize, &width, &height, frame_count); } if(g_extern.console.misc.oskutil_handle.text_can_be_fetched) @@ -880,8 +887,12 @@ static void rarch_filename_input_and_save (unsigned filename_type) while(OSK_IS_RUNNING(g_extern.console.misc.oskutil_handle)) { /* OSK Util gets updated */ - context->clear(); - context->swap_buffers(); + device_ptr->ctx_driver->clear(); + device_ptr->ctx_driver->swap_buffers(); + bool quit, resize; + unsigned width, height, frame_count; + frame_count = 0; + device_ptr->ctx_driver->check_window(&quit, &resize, &width, &height, frame_count); } if(g_extern.console.misc.oskutil_handle.text_can_be_fetched) @@ -893,21 +904,21 @@ static void rarch_filename_input_and_save (unsigned filename_type) { case CONFIG_FILE: break; - case SHADER_PRESET_FILE: - { - struct gl_cg_cgp_info current_settings; - current_settings.shader[0] = g_settings.video.cg_shader_path; - current_settings.shader[1] = g_settings.video.second_pass_shader; - current_settings.filter_linear[0] = g_settings.video.smooth; - current_settings.filter_linear[1] = g_settings.video.second_pass_smooth; - current_settings.render_to_texture = true; - current_settings.fbo_scale = g_settings.video.fbo.scale_x; //fbo.scale_x and y are the same anyway - gl_cg_save_cgp(filepath, ¤t_settings); - } - break; - case INPUT_PRESET_FILE: - config_save_keybinds(filepath); - break; + case SHADER_PRESET_FILE: + { + struct gl_cg_cgp_info current_settings; + current_settings.shader[0] = g_settings.video.cg_shader_path; + current_settings.shader[1] = g_settings.video.second_pass_shader; + current_settings.filter_linear[0] = g_settings.video.smooth; + current_settings.filter_linear[1] = g_settings.video.second_pass_smooth; + current_settings.render_to_texture = true; + current_settings.fbo_scale = g_settings.video.fbo.scale_x; //fbo.scale_x and y are the same anyway + gl_cg_save_cgp(filepath, ¤t_settings); + } + break; + case INPUT_PRESET_FILE: + config_save_keybinds(filepath); + break; } } } @@ -915,634 +926,640 @@ static void rarch_filename_input_and_save (unsigned filename_type) static void set_setting_action(menu *current_menu, unsigned switchvalue, uint64_t input) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; + switch(switchvalue) { #ifdef __CELLOS_LV2__ - case SETTING_CHANGE_RESOLUTION: - if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) - rarch_settings_change(S_RESOLUTION_NEXT); - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - rarch_settings_change(S_RESOLUTION_PREVIOUS); - if(input & (1 << RMENU_DEVICE_NAV_B)) - { - if (g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx] == CELL_VIDEO_OUT_RESOLUTION_576) - { - if(gfx_ctx_check_resolution(CELL_VIDEO_OUT_RESOLUTION_576)) - { - //ps3graphics_set_pal60hz(Settings.PS3PALTemporalMode60Hz); - video_ptr.restart(); - } - } - else - { - //ps3graphics_set_pal60hz(0); - video_ptr.restart(); - } - } - break; - /* - case SETTING_PAL60_MODE: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - if (Graphics->GetCurrentResolution() == CELL_VIDEO_OUT_RESOLUTION_576) - { - if(Graphics->CheckResolution(CELL_VIDEO_OUT_RESOLUTION_576)) - { - Settings.PS3PALTemporalMode60Hz = !Settings.PS3PALTemporalMode60Hz; - Graphics->SetPAL60Hz(Settings.PS3PALTemporalMode60Hz); - Graphics->SwitchResolution(Graphics->GetCurrentResolution(), Settings.PS3PALTemporalMode60Hz, Settings.TripleBuffering); - } - } + case SETTING_CHANGE_RESOLUTION: + if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) + rarch_settings_change(S_RESOLUTION_NEXT); + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + rarch_settings_change(S_RESOLUTION_PREVIOUS); + if(input & (1 << RMENU_DEVICE_NAV_B)) + { + if (g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx] == CELL_VIDEO_OUT_RESOLUTION_576) + { + if(gfx_ctx_check_resolution(CELL_VIDEO_OUT_RESOLUTION_576)) + { + //ps3graphics_set_pal60hz(Settings.PS3PALTemporalMode60Hz); + video_ptr.restart(); + } + } + else + { + //ps3graphics_set_pal60hz(0); + video_ptr.restart(); + } + } + break; + /* + case SETTING_PAL60_MODE: + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + if (Graphics->GetCurrentResolution() == CELL_VIDEO_OUT_RESOLUTION_576) + { + if(Graphics->CheckResolution(CELL_VIDEO_OUT_RESOLUTION_576)) + { + Settings.PS3PALTemporalMode60Hz = !Settings.PS3PALTemporalMode60Hz; + Graphics->SetPAL60Hz(Settings.PS3PALTemporalMode60Hz); + Graphics->SwitchResolution(Graphics->GetCurrentResolution(), Settings.PS3PALTemporalMode60Hz, Settings.TripleBuffering); + } + } - } - break; - */ + } + break; + */ #endif #if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) - case SETTING_SHADER_PRESETS: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - if(g_extern.console.emulator_initialized) - { - menu_stack_push(PRESET_CHOICE); + case SETTING_SHADER_PRESETS: + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + if(g_extern.console.emulator_initialized) + { + menu_stack_push(PRESET_CHOICE); filebrowser_set_root_and_ext(&tmpBrowser, EXT_CGP_PRESETS, default_paths.cgp_dir); - } - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - strlcpy(g_extern.file_state.cgp_path, "", sizeof(g_extern.file_state.cgp_path)); - break; - case SETTING_SHADER: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - menu_stack_push(SHADER_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, EXT_SHADERS, default_paths.shader_dir); - set_shader = 0; - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_load_shader(1, NULL); - strlcpy(g_settings.video.cg_shader_path, default_paths.shader_file, sizeof(g_settings.video.cg_shader_path)); - } - break; - case SETTING_SHADER_2: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - menu_stack_push(SHADER_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, EXT_SHADERS, default_paths.shader_dir); - set_shader = 1; - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_load_shader(2, NULL); - strlcpy(g_settings.video.second_pass_shader, default_paths.shader_file, sizeof(g_settings.video.second_pass_shader)); - } - break; + } + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + strlcpy(g_extern.file_state.cgp_path, "", sizeof(g_extern.file_state.cgp_path)); + break; + case SETTING_SHADER: + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + menu_stack_push(SHADER_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, EXT_SHADERS, default_paths.shader_dir); + set_shader = 0; + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_load_shader(1, NULL); + strlcpy(g_settings.video.cg_shader_path, default_paths.shader_file, sizeof(g_settings.video.cg_shader_path)); + } + break; + case SETTING_SHADER_2: + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + menu_stack_push(SHADER_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, EXT_SHADERS, default_paths.shader_dir); + set_shader = 1; + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_load_shader(2, NULL); + strlcpy(g_settings.video.second_pass_shader, default_paths.shader_file, sizeof(g_settings.video.second_pass_shader)); + } + break; #endif - case SETTING_FONT_SIZE: - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - { - if(g_extern.console.rmenu.font_size > 0) - g_extern.console.rmenu.font_size -= 0.01f; - } - if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - if((g_extern.console.rmenu.font_size < 2.0f)) - g_extern.console.rmenu.font_size += 0.01f; - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - g_extern.console.rmenu.font_size = 1.0f; - break; - case SETTING_KEEP_ASPECT_RATIO: - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - { - rarch_settings_change(S_ASPECT_RATIO_DECREMENT); - context->set_aspect_ratio(g_settings.video.aspect_ratio_idx); - } - if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) - { - rarch_settings_change(S_ASPECT_RATIO_INCREMENT); - context->set_aspect_ratio(g_settings.video.aspect_ratio_idx); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_settings_default(S_DEF_ASPECT_RATIO); - context->set_aspect_ratio(g_settings.video.aspect_ratio_idx); - } - break; - case SETTING_HW_TEXTURE_FILTER: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_HW_TEXTURE_FILTER); - context->set_filtering(1, g_settings.video.smooth); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_settings_change(S_DEF_HW_TEXTURE_FILTER); - context->set_filtering(1, g_settings.video.smooth); - } - break; + case SETTING_FONT_SIZE: + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + { + if(g_extern.console.rmenu.font_size > 0) + g_extern.console.rmenu.font_size -= 0.01f; + } + if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + if((g_extern.console.rmenu.font_size < 2.0f)) + g_extern.console.rmenu.font_size += 0.01f; + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + g_extern.console.rmenu.font_size = 1.0f; + break; + case SETTING_KEEP_ASPECT_RATIO: + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + { + rarch_settings_change(S_ASPECT_RATIO_DECREMENT); + driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); + } + if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) + { + rarch_settings_change(S_ASPECT_RATIO_INCREMENT); + driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_settings_default(S_DEF_ASPECT_RATIO); + driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); + } + break; + case SETTING_HW_TEXTURE_FILTER: + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_HW_TEXTURE_FILTER); + device_ptr->ctx_driver->set_filtering(1, g_settings.video.smooth); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_settings_change(S_DEF_HW_TEXTURE_FILTER); + device_ptr->ctx_driver->set_filtering(1, g_settings.video.smooth); + } + break; #ifdef HAVE_FBO - case SETTING_HW_TEXTURE_FILTER_2: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_HW_TEXTURE_FILTER_2); - context->set_filtering(2, g_settings.video.second_pass_smooth); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_settings_change(S_DEF_HW_TEXTURE_FILTER_2); - context->set_filtering(2, g_settings.video.second_pass_smooth); - } - break; - case SETTING_SCALE_ENABLED: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_SCALE_ENABLED); + case SETTING_HW_TEXTURE_FILTER_2: + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_HW_TEXTURE_FILTER_2); + device_ptr->ctx_driver->set_filtering(2, g_settings.video.second_pass_smooth); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_settings_change(S_DEF_HW_TEXTURE_FILTER_2); + device_ptr->ctx_driver->set_filtering(2, g_settings.video.second_pass_smooth); + } + break; + case SETTING_SCALE_ENABLED: + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_SCALE_ENABLED); if(g_settings.video.render_to_texture) - context->set_fbo_enable(FBO_INIT); + device_ptr->ctx_driver->set_fbo(FBO_INIT); else - context->set_fbo_enable(FBO_DEINIT); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_settings_default(S_DEF_SCALE_ENABLED); - context->set_fbo_enable(FBO_REINIT); - } - break; - case SETTING_SCALE_FACTOR: - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - { + device_ptr->ctx_driver->set_fbo(FBO_DEINIT); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_settings_default(S_DEF_SCALE_ENABLED); + device_ptr->ctx_driver->set_fbo(FBO_REINIT); + } + break; + case SETTING_SCALE_FACTOR: + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + { if(g_settings.video.render_to_texture) - { + { bool should_decrement = g_settings.video.fbo.scale_x > MIN_SCALING_FACTOR; - + if(should_decrement) { rarch_settings_change(S_SCALE_FACTOR_DECREMENT); - context->set_fbo_enable(FBO_REINIT); + device_ptr->ctx_driver->set_fbo(FBO_REINIT); } } - } - if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - if(g_settings.video.render_to_texture) - { - bool should_increment = g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR; - if(should_increment) - { - rarch_settings_change(S_SCALE_FACTOR_INCREMENT); - context->set_fbo_enable(FBO_REINIT); - } - } - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_settings_default(S_DEF_SCALE_FACTOR); - context->set_fbo_enable(FBO_REINIT); - } - break; + } + if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + if(g_settings.video.render_to_texture) + { + bool should_increment = g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR; + if(should_increment) + { + rarch_settings_change(S_SCALE_FACTOR_INCREMENT); + device_ptr->ctx_driver->set_fbo(FBO_REINIT); + } + } + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_settings_default(S_DEF_SCALE_FACTOR); + device_ptr->ctx_driver->set_fbo(FBO_REINIT); + } + break; #endif #ifdef _XBOX1 case SETTING_FLICKER_FILTER: if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - { - if(g_extern.console.screen.state.flicker_filter.value > 0) - g_extern.console.screen.state.flicker_filter.value--; - } - if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) - { - if(g_extern.console.screen.state.flicker_filter.value < 5) - g_extern.console.screen.state.flicker_filter.value++; - } - if(input & (1 << RMENU_DEVICE_NAV_START)) + { + if(g_extern.console.screen.state.flicker_filter.value > 0) + g_extern.console.screen.state.flicker_filter.value--; + } + if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) + { + if(g_extern.console.screen.state.flicker_filter.value < 5) + g_extern.console.screen.state.flicker_filter.value++; + } + if(input & (1 << RMENU_DEVICE_NAV_START)) g_extern.console.screen.state.flicker_filter.value = 0; break; case SETTING_SOFT_DISPLAY_FILTER: - if(input & (1 << RMENU_DEVICE_NAV_LEFT) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + if(input & (1 << RMENU_DEVICE_NAV_LEFT) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) g_extern.console.screen.state.soft_filter.enable = !g_extern.console.screen.state.soft_filter.enable; - if(input & (1 << RMENU_DEVICE_NAV_START)) + if(input & (1 << RMENU_DEVICE_NAV_START)) g_extern.console.screen.state.soft_filter.enable = true; break; #endif case SETTING_HW_OVERSCAN_AMOUNT: - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - { - rarch_settings_change(S_OVERSCAN_DECREMENT); - gfx_ctx_set_overscan(); - } - if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_OVERSCAN_INCREMENT); - gfx_ctx_set_overscan(); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_settings_default(S_DEF_OVERSCAN); - gfx_ctx_set_overscan(); - } - break; + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + { + rarch_settings_change(S_OVERSCAN_DECREMENT); + gfx_ctx_set_overscan(); + } + if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_OVERSCAN_INCREMENT); + gfx_ctx_set_overscan(); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_settings_default(S_DEF_OVERSCAN); + gfx_ctx_set_overscan(); + } + break; case SETTING_THROTTLE_MODE: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_THROTTLE); - context->set_swap_interval(g_extern.console.screen.state.throttle.enable); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_settings_default(S_DEF_THROTTLE); - context->set_swap_interval(g_extern.console.screen.state.throttle.enable); - } - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_THROTTLE); + device_ptr->ctx_driver->swap_interval(g_extern.console.screen.state.throttle.enable); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_settings_default(S_DEF_THROTTLE); + device_ptr->ctx_driver->swap_interval(g_extern.console.screen.state.throttle.enable); + } + break; case SETTING_TRIPLE_BUFFERING: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_TRIPLE_BUFFERING); - video_ptr.restart(); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - bool old_buffer_input = g_extern.console.screen.state.triple_buffering.enable; - rarch_settings_default(S_DEF_TRIPLE_BUFFERING); + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_TRIPLE_BUFFERING); + video_ptr.restart(); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + bool old_buffer_input = g_extern.console.screen.state.triple_buffering.enable; + rarch_settings_default(S_DEF_TRIPLE_BUFFERING); - if(!old_buffer_input) - video_ptr.restart(); - } - break; + if(!old_buffer_input) + video_ptr.restart(); + } + break; case SETTING_ENABLE_SCREENSHOTS: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - g_extern.console.screen.state.screenshots.enable = !g_extern.console.screen.state.screenshots.enable; - context->screenshot_enable(g_extern.console.screen.state.screenshots.enable); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - g_extern.console.screen.state.screenshots.enable = true; - context->screenshot_enable(g_extern.console.screen.state.screenshots.enable); - } - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + g_extern.console.screen.state.screenshots.enable = !g_extern.console.screen.state.screenshots.enable; + device_ptr->ctx_driver->rmenu_screenshot_enable(g_extern.console.screen.state.screenshots.enable); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + g_extern.console.screen.state.screenshots.enable = true; + device_ptr->ctx_driver->rmenu_screenshot_enable(g_extern.console.screen.state.screenshots.enable); + } + break; #if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) case SETTING_SAVE_SHADER_PRESET: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - rarch_filename_input_and_save(SHADER_PRESET_FILE); - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + rarch_filename_input_and_save(SHADER_PRESET_FILE); + break; case SETTING_APPLY_SHADER_PRESET_ON_STARTUP: - break; + break; #endif case SETTING_DEFAULT_VIDEO_ALL: - break; + break; case SETTING_SOUND_MODE: - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - { - if(g_extern.console.sound.mode != SOUND_MODE_NORMAL) - g_extern.console.sound.mode--; - } - if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - if(g_extern.console.sound.mode < (SOUND_MODE_LAST-1)) - g_extern.console.sound.mode++; - } - if((input & (1 << RMENU_DEVICE_NAV_UP)) || (input & (1 << RMENU_DEVICE_NAV_DOWN))) - { + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + { + if(g_extern.console.sound.mode != SOUND_MODE_NORMAL) + g_extern.console.sound.mode--; + } + if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + if(g_extern.console.sound.mode < (SOUND_MODE_LAST-1)) + g_extern.console.sound.mode++; + } + if((input & (1 << RMENU_DEVICE_NAV_UP)) || (input & (1 << RMENU_DEVICE_NAV_DOWN))) + { #ifdef HAVE_RSOUND - if(g_extern.console.sound.mode != SOUND_MODE_RSOUND) - rarch_console_rsound_stop(); - else - rarch_console_rsound_start(g_settings.audio.device); + if(g_extern.console.sound.mode != SOUND_MODE_RSOUND) + rarch_console_rsound_stop(); + else + rarch_console_rsound_start(g_settings.audio.device); #endif - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - g_extern.console.sound.mode = SOUND_MODE_NORMAL; + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + g_extern.console.sound.mode = SOUND_MODE_NORMAL; #ifdef HAVE_RSOUND - rarch_console_rsound_stop(); + rarch_console_rsound_stop(); #endif - } - break; + } + break; #ifdef HAVE_RSOUND case SETTING_RSOUND_SERVER_IP_ADDRESS: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - oskutil_write_initial_message(&g_extern.console.misc.oskutil_handle, L"192.168.1.1"); - oskutil_write_message(&g_extern.console.misc.oskutil_handle, L"Enter IP address for the RSound Server."); - oskutil_start(&g_extern.console.misc.oskutil_handle); - while(OSK_IS_RUNNING(g_extern.console.misc.oskutil_handle)) - { - context->clear(); - context->swap_buffers(); - } + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + oskutil_write_initial_message(&g_extern.console.misc.oskutil_handle, L"192.168.1.1"); + oskutil_write_message(&g_extern.console.misc.oskutil_handle, L"Enter IP address for the RSound Server."); + oskutil_start(&g_extern.console.misc.oskutil_handle); + while(OSK_IS_RUNNING(g_extern.console.misc.oskutil_handle)) + { + device_ptr->ctx_driver->clear(); + device_ptr->ctx_driver->swap_buffers(); + bool quit, resize; + unsigned width, height, frame_count; + frame_count = 0; + device_ptr->ctx_driver->check_window(&quit, &resize, &width, &height, frame_count); + } - if(g_extern.console.misc.oskutil_handle.text_can_be_fetched) - strlcpy(g_settings.audio.device, OUTPUT_TEXT_STRING(g_extern.console.misc.oskutil_handle), sizeof(g_settings.audio.device)); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - strlcpy(g_settings.audio.device, "0.0.0.0", sizeof(g_settings.audio.device)); - break; + if(g_extern.console.misc.oskutil_handle.text_can_be_fetched) + strlcpy(g_settings.audio.device, OUTPUT_TEXT_STRING(g_extern.console.misc.oskutil_handle), sizeof(g_settings.audio.device)); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + strlcpy(g_settings.audio.device, "0.0.0.0", sizeof(g_settings.audio.device)); + break; #endif case SETTING_DEFAULT_AUDIO_ALL: - break; + break; case SETTING_EMU_CURRENT_SAVE_STATE_SLOT: - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - rarch_settings_change(S_SAVESTATE_DECREMENT); - if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - rarch_settings_change(S_SAVESTATE_INCREMENT); - if(input & (1 << RMENU_DEVICE_NAV_START)) - rarch_settings_default(S_DEF_SAVE_STATE); - break; + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + rarch_settings_change(S_SAVESTATE_DECREMENT); + if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + rarch_settings_change(S_SAVESTATE_INCREMENT); + if(input & (1 << RMENU_DEVICE_NAV_START)) + rarch_settings_default(S_DEF_SAVE_STATE); + break; case SETTING_EMU_SHOW_DEBUG_INFO_MSG: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - g_extern.console.rmenu.state.msg_fps.enable = !g_extern.console.rmenu.state.msg_fps.enable; - if(input & (1 << RMENU_DEVICE_NAV_START)) - g_extern.console.rmenu.state.msg_fps.enable = false; - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + g_extern.console.rmenu.state.msg_fps.enable = !g_extern.console.rmenu.state.msg_fps.enable; + if(input & (1 << RMENU_DEVICE_NAV_START)) + g_extern.console.rmenu.state.msg_fps.enable = false; + break; case SETTING_EMU_SHOW_INFO_MSG: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - g_extern.console.rmenu.state.msg_info.enable = !g_extern.console.rmenu.state.msg_info.enable; - if(input & (1 << RMENU_DEVICE_NAV_START)) - g_extern.console.rmenu.state.msg_info.enable = true; - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + g_extern.console.rmenu.state.msg_info.enable = !g_extern.console.rmenu.state.msg_info.enable; + if(input & (1 << RMENU_DEVICE_NAV_START)) + g_extern.console.rmenu.state.msg_info.enable = true; + break; case SETTING_EMU_REWIND_ENABLED: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_REWIND); + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_REWIND); - if(g_extern.console.rmenu.state.msg_info.enable) - rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - g_settings.rewind_enable = false; - break; + if(g_extern.console.rmenu.state.msg_info.enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + g_settings.rewind_enable = false; + break; #ifdef HAVE_ZLIB case SETTING_ZIP_EXTRACT: - if((input & (1 << RMENU_DEVICE_NAV_LEFT))) - { - if(g_extern.file_state.zip_extract_mode > 0) - g_extern.file_state.zip_extract_mode--; - } - if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - if(g_extern.file_state.zip_extract_mode < ZIP_EXTRACT_TO_CACHE_DIR) - g_extern.file_state.zip_extract_mode++; - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - g_extern.file_state.zip_extract_mode = ZIP_EXTRACT_TO_CURRENT_DIR; - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT))) + { + if(g_extern.file_state.zip_extract_mode > 0) + g_extern.file_state.zip_extract_mode--; + } + if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + if(g_extern.file_state.zip_extract_mode < ZIP_EXTRACT_TO_CACHE_DIR) + g_extern.file_state.zip_extract_mode++; + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + g_extern.file_state.zip_extract_mode = ZIP_EXTRACT_TO_CURRENT_DIR; + break; #endif case SETTING_RARCH_DEFAULT_EMU: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - menu_stack_push(LIBRETRO_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, EXT_EXECUTABLES, default_paths.core_dir); - set_libretro_core_as_launch = false; - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - } - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + menu_stack_push(LIBRETRO_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, EXT_EXECUTABLES, default_paths.core_dir); + set_libretro_core_as_launch = false; + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + } + break; case SETTING_QUIT_RARCH: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_QUIT_RARCH); - } - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_QUIT_RARCH); + } + break; case SETTING_EMU_AUDIO_MUTE: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - rarch_settings_change(S_AUDIO_MUTE); + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + rarch_settings_change(S_AUDIO_MUTE); - if(input & (1 << RMENU_DEVICE_NAV_START)) - rarch_settings_default(S_DEF_AUDIO_MUTE); - break; + if(input & (1 << RMENU_DEVICE_NAV_START)) + rarch_settings_default(S_DEF_AUDIO_MUTE); + break; #ifdef _XBOX1 case SETTING_EMU_AUDIO_SOUND_VOLUME_LEVEL: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - g_extern.console.sound.volume_level = !g_extern.console.sound.volume_level; - if(g_extern.console.rmenu.state.msg_info.enable) - rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); - } + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + g_extern.console.sound.volume_level = !g_extern.console.sound.volume_level; + if(g_extern.console.rmenu.state.msg_info.enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - g_extern.console.sound.volume_level = 0; - if(g_extern.console.rmenu.state.msg_info.enable) - rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); - } - break; + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + g_extern.console.sound.volume_level = 0; + if(g_extern.console.rmenu.state.msg_info.enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + } + break; #endif case SETTING_ENABLE_CUSTOM_BGM: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { #if(CELL_SDK_VERSION > 0x340000) - g_extern.console.sound.custom_bgm.enable = !g_extern.console.sound.custom_bgm.enable; - if(g_extern.console.sound.custom_bgm.enable) - cellSysutilEnableBgmPlayback(); - else - cellSysutilDisableBgmPlayback(); + g_extern.console.sound.custom_bgm.enable = !g_extern.console.sound.custom_bgm.enable; + if(g_extern.console.sound.custom_bgm.enable) + cellSysutilEnableBgmPlayback(); + else + cellSysutilDisableBgmPlayback(); #endif - } - if(input & (1 << RMENU_DEVICE_NAV_START)) - { + } + if(input & (1 << RMENU_DEVICE_NAV_START)) + { #if(CELL_SDK_VERSION > 0x340000) - g_extern.console.sound.custom_bgm.enable = true; + g_extern.console.sound.custom_bgm.enable = true; #endif - } - break; + } + break; case SETTING_EMU_VIDEO_DEFAULT_ALL: - break; + break; case SETTING_EMU_AUDIO_DEFAULT_ALL: - break; + break; case SETTING_PATH_DEFAULT_ROM_DIRECTORY: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - menu_stack_push(PATH_DEFAULT_ROM_DIR_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.filesystem_root_dir); - } + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + menu_stack_push(PATH_DEFAULT_ROM_DIR_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.filesystem_root_dir); + } - if(input & (1 << RMENU_DEVICE_NAV_START)) - strlcpy(g_extern.console.main_wrap.paths.default_rom_startup_dir, default_paths.filesystem_root_dir, sizeof(g_extern.console.main_wrap.paths.default_rom_startup_dir)); - break; + if(input & (1 << RMENU_DEVICE_NAV_START)) + strlcpy(g_extern.console.main_wrap.paths.default_rom_startup_dir, default_paths.filesystem_root_dir, sizeof(g_extern.console.main_wrap.paths.default_rom_startup_dir)); + break; case SETTING_PATH_SAVESTATES_DIRECTORY: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - menu_stack_push(PATH_SAVESTATES_DIR_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.filesystem_root_dir); - } + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + menu_stack_push(PATH_SAVESTATES_DIR_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.filesystem_root_dir); + } - if(input & (1 << RMENU_DEVICE_NAV_START)) - strlcpy(g_extern.console.main_wrap.paths.default_savestate_dir, default_paths.savestate_dir, sizeof(g_extern.console.main_wrap.paths.default_savestate_dir)); + if(input & (1 << RMENU_DEVICE_NAV_START)) + strlcpy(g_extern.console.main_wrap.paths.default_savestate_dir, default_paths.savestate_dir, sizeof(g_extern.console.main_wrap.paths.default_savestate_dir)); - break; + break; case SETTING_PATH_SRAM_DIRECTORY: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - menu_stack_push(PATH_SRAM_DIR_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.filesystem_root_dir); - } + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + menu_stack_push(PATH_SRAM_DIR_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.filesystem_root_dir); + } - if(input & (1 << RMENU_DEVICE_NAV_START)) - strlcpy(g_extern.console.main_wrap.paths.default_sram_dir, default_paths.sram_dir, sizeof(g_extern.console.main_wrap.paths.default_sram_dir)); - break; + if(input & (1 << RMENU_DEVICE_NAV_START)) + strlcpy(g_extern.console.main_wrap.paths.default_sram_dir, default_paths.sram_dir, sizeof(g_extern.console.main_wrap.paths.default_sram_dir)); + break; #ifdef HAVE_XML case SETTING_PATH_CHEATS: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - menu_stack_push(PATH_CHEATS_DIR_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.filesystem_root_dir); - } + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + menu_stack_push(PATH_CHEATS_DIR_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.filesystem_root_dir); + } - if(input & (1 << RMENU_DEVICE_NAV_START)) - strlcpy(g_settings.cheat_database, default_paths.port_dir, sizeof(g_settings.cheat_database)); - break; + if(input & (1 << RMENU_DEVICE_NAV_START)) + strlcpy(g_settings.cheat_database, default_paths.port_dir, sizeof(g_settings.cheat_database)); + break; #endif case SETTING_PATH_SYSTEM: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - menu_stack_push(PATH_SYSTEM_DIR_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.system_dir); - } + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + menu_stack_push(PATH_SYSTEM_DIR_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, "empty", default_paths.system_dir); + } - if(input & (1 << RMENU_DEVICE_NAV_START)) - strlcpy(g_settings.system_directory, default_paths.system_dir, sizeof(g_settings.system_directory)); - break; + if(input & (1 << RMENU_DEVICE_NAV_START)) + strlcpy(g_settings.system_directory, default_paths.system_dir, sizeof(g_settings.system_directory)); + break; case SETTING_ENABLE_SRAM_PATH: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT))) - g_extern.console.main_wrap.state.default_sram_dir.enable = !g_extern.console.main_wrap.state.default_sram_dir.enable; - if(input & (1 << RMENU_DEVICE_NAV_START)) - g_extern.console.main_wrap.state.default_sram_dir.enable = true; - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT))) + g_extern.console.main_wrap.state.default_sram_dir.enable = !g_extern.console.main_wrap.state.default_sram_dir.enable; + if(input & (1 << RMENU_DEVICE_NAV_START)) + g_extern.console.main_wrap.state.default_sram_dir.enable = true; + break; case SETTING_ENABLE_STATE_PATH: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT))) - g_extern.console.main_wrap.state.default_savestate_dir.enable = !g_extern.console.main_wrap.state.default_savestate_dir.enable; - if(input & (1 << RMENU_DEVICE_NAV_START)) - g_extern.console.main_wrap.state.default_savestate_dir.enable = true; - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT))) + g_extern.console.main_wrap.state.default_savestate_dir.enable = !g_extern.console.main_wrap.state.default_savestate_dir.enable; + if(input & (1 << RMENU_DEVICE_NAV_START)) + g_extern.console.main_wrap.state.default_savestate_dir.enable = true; + break; case SETTING_PATH_DEFAULT_ALL: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_START))) - { - strlcpy(g_extern.console.main_wrap.paths.default_rom_startup_dir, "/", sizeof(g_extern.console.main_wrap.paths.default_rom_startup_dir)); - strlcpy(g_extern.console.main_wrap.paths.default_savestate_dir, default_paths.port_dir, sizeof(g_extern.console.main_wrap.paths.default_savestate_dir)); + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_START))) + { + strlcpy(g_extern.console.main_wrap.paths.default_rom_startup_dir, "/", sizeof(g_extern.console.main_wrap.paths.default_rom_startup_dir)); + strlcpy(g_extern.console.main_wrap.paths.default_savestate_dir, default_paths.port_dir, sizeof(g_extern.console.main_wrap.paths.default_savestate_dir)); #ifdef HAVE_XML - strlcpy(g_settings.cheat_database, default_paths.port_dir, sizeof(g_settings.cheat_database)); + strlcpy(g_settings.cheat_database, default_paths.port_dir, sizeof(g_settings.cheat_database)); #endif - strlcpy(g_extern.console.main_wrap.paths.default_sram_dir, "", sizeof(g_extern.console.main_wrap.paths.default_sram_dir)); - } - break; + strlcpy(g_extern.console.main_wrap.paths.default_sram_dir, "", sizeof(g_extern.console.main_wrap.paths.default_sram_dir)); + } + break; case SETTING_CONTROLS_SCHEME: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_START))) - { - menu_stack_push(INPUT_PRESET_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, EXT_INPUT_PRESETS, default_paths.input_presets_dir); - } - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_START))) + { + menu_stack_push(INPUT_PRESET_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, EXT_INPUT_PRESETS, default_paths.input_presets_dir); + } + break; case SETTING_CONTROLS_NUMBER: - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - { - if(currently_selected_controller_menu != 0) - currently_selected_controller_menu--; - } + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + { + if(currently_selected_controller_menu != 0) + currently_selected_controller_menu--; + } - if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - if (currently_selected_controller_menu < 6) - currently_selected_controller_menu++; - } + if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + if (currently_selected_controller_menu < 6) + currently_selected_controller_menu++; + } - if(input & (1 << RMENU_DEVICE_NAV_START)) - currently_selected_controller_menu = 0; - break; + 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_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_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; + 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; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_UP, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_DOWN: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_DOWN, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_DOWN, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_LEFT: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_LEFT, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_LEFT, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_RIGHT: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_RIGHT, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_RIGHT, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_A: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_A, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_A, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_B: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_B, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_B, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_X: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_X, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_X, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_Y: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_Y, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_Y, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_SELECT: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_SELECT, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_SELECT, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_START: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_START, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_START, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_L, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_L, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_R, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_R, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L2: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_L2, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_L2, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R2: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_R2, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_R2, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L3: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_L3, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_L3, input); + break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R3: - set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_R3, input); - break; + set_keybind_digital(RETRO_DEVICE_ID_JOYPAD_R3, input); + break; #ifdef __CELLOS_LV2__ case SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_START))) - rarch_filename_input_and_save(INPUT_PRESET_FILE); - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_START))) + rarch_filename_input_and_save(INPUT_PRESET_FILE); + break; #endif case SETTING_CONTROLS_DEFAULT_ALL: - if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_START))) - rarch_input_set_default_keybinds(currently_selected_controller_menu); - break; + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_START))) + rarch_input_set_default_keybinds(currently_selected_controller_menu); + break; } } @@ -1552,7 +1569,7 @@ static void settings_iterate(menu *current_menu, item *items, settings_action_t { case SETTINGS_ACTION_DOWN: current_menu->selected++; - + if (current_menu->selected >= current_menu->max_settings) current_menu->selected = current_menu->first_setting; if (items[current_menu->selected].page != current_menu->page) @@ -1563,7 +1580,7 @@ static void settings_iterate(menu *current_menu, item *items, settings_action_t current_menu->selected = current_menu->max_settings-1; else current_menu->selected--; - + if (items[current_menu->selected].page != current_menu->page) current_menu->page = items[current_menu->selected].page; break; @@ -1593,13 +1610,14 @@ static void settings_iterate(menu *current_menu, item *items, settings_action_t static void select_setting(menu *current_menu, uint64_t input) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; item *items = (item*)malloc(current_menu->max_settings * sizeof(*items)); unsigned i; char msg[256]; rmenu_default_positions_t default_pos; - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); unsigned j = 0; int page = 0; @@ -1642,17 +1660,17 @@ static void select_setting(menu *current_menu, uint64_t input) if(items[i].page == current_menu->page) { default_pos.starting_y_position += default_pos.y_position_increment; - context->render_msg(default_pos.x_position, default_pos.starting_y_position, default_pos.variable_font_size, current_menu->selected == items[i].enum_id ? YELLOW : WHITE, items[i].text); - context->render_msg(default_pos.x_position_center, default_pos.starting_y_position, default_pos.variable_font_size, WHITE, items[i].setting_text); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.starting_y_position, default_pos.variable_font_size, current_menu->selected == items[i].enum_id ? YELLOW : WHITE, items[i].text); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position_center, default_pos.starting_y_position, default_pos.variable_font_size, WHITE, items[i].setting_text); if(current_menu->selected == items[i].enum_id) { - rmenu_position_t position = {0}; + rarch_position_t position = {0}; position.x = default_pos.x_position; position.y = default_pos.starting_y_position; - context->render_selection_panel(&position); - context->render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, items[i].comment); + device_ptr->ctx_driver->rmenu_draw_panel(&position); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, items[i].comment); } } } @@ -1660,20 +1678,21 @@ static void select_setting(menu *current_menu, uint64_t input) free(items); snprintf(msg, sizeof(msg), "[%s] + [%s] - Resume game", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_L3), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_R3)); - context->render_msg(default_pos.x_position, default_pos.comment_two_y_position, default_pos.font_size, YELLOW, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_two_y_position, default_pos.font_size, YELLOW, msg); snprintf(msg, sizeof(msg), "[%s] - Reset to default", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); - context->render_msg(default_pos.x_position, default_pos.comment_two_y_position + (default_pos.y_position_increment * 1), default_pos.font_size, YELLOW, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_two_y_position + (default_pos.y_position_increment * 1), default_pos.font_size, YELLOW, msg); } static void menu_romselect_iterate(filebrowser_t *filebrowser, menu_romselect_action_t action) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; bool ret = true; switch(action) { case MENU_DRIVE_MAPPING_PREV: { - const char * drive_map = context->drive_mapping_prev(); + const char * drive_map = device_ptr->ctx_driver->drive_mapping_previous(); if(drive_map != NULL) { filebrowser_set_root_and_ext(filebrowser, rarch_console_get_rom_ext(), drive_map); @@ -1683,7 +1702,7 @@ static void menu_romselect_iterate(filebrowser_t *filebrowser, menu_romselect_ac break; case MENU_DRIVE_MAPPING_NEXT: { - const char * drive_map = context->drive_mapping_next(); + const char * drive_map = device_ptr->ctx_driver->drive_mapping_next(); if(drive_map != NULL) { filebrowser_set_root_and_ext(filebrowser, rarch_console_get_rom_ext(), drive_map); @@ -1694,7 +1713,7 @@ static void menu_romselect_iterate(filebrowser_t *filebrowser, menu_romselect_ac case MENU_ROMSELECT_ACTION_OK: if(filebrowser_get_current_path_isdir(filebrowser)) ret = filebrowser_iterate(filebrowser, FILEBROWSER_ACTION_OK); - else + else rarch_console_load_game_wrap(filebrowser_get_current_path(filebrowser), g_extern.file_state.zip_extract_mode, S_DELAY_45); break; case MENU_ROMSELECT_ACTION_GOTO_SETTINGS: @@ -1711,10 +1730,11 @@ static void menu_romselect_iterate(filebrowser_t *filebrowser, menu_romselect_ac static void select_rom(menu *current_menu, uint64_t input) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; char msg[128]; rmenu_default_positions_t default_pos; - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); browser_update(&browser, input, rarch_console_get_rom_ext()); @@ -1743,15 +1763,15 @@ static void select_rom(menu *current_menu, uint64_t input) else snprintf(msg, sizeof(msg), "INFO - Press [%s] to load the game.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - context->render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, msg); display_menubar(current_menu); snprintf(msg, sizeof(msg), "[%s] + [%s] - resume game", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_L3), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_R3)); - context->render_msg(default_pos.x_position, default_pos.comment_two_y_position, default_pos.font_size, YELLOW, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_two_y_position, default_pos.font_size, YELLOW, msg); snprintf(msg, sizeof(msg), "[%s] - Settings", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_SELECT)); - context->render_msg(default_pos.x_position, default_pos.comment_two_y_position + (default_pos.y_position_increment * 1), default_pos.font_size, YELLOW, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_two_y_position + (default_pos.y_position_increment * 1), default_pos.font_size, YELLOW, msg); } static bool show_menu_screen = true; @@ -1761,10 +1781,10 @@ static void ingame_menu_resize(menu *current_menu, uint64_t input) DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; rmenu_default_positions_t default_pos; - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); g_settings.video.aspect_ratio_idx = ASPECT_RATIO_CUSTOM; - context->set_aspect_ratio(g_settings.video.aspect_ratio_idx); + driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); if(input & (1 << RMENU_DEVICE_NAV_LEFT_ANALOG_L)) { @@ -1856,65 +1876,66 @@ static void ingame_menu_resize(menu *current_menu, uint64_t input) snprintf(viewport_w, sizeof(viewport_w), "Viewport W: #%d", g_extern.console.screen.viewports.custom_vp.width); snprintf(viewport_h, sizeof(viewport_h), "Viewport H: #%d", g_extern.console.screen.viewports.custom_vp.height); - context->render_msg(default_pos.x_position, default_pos.y_position, default_pos.font_size, GREEN, viewport_x); - context->render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*1), default_pos.font_size, GREEN, viewport_y); - context->render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*2), default_pos.font_size, GREEN, viewport_w); - context->render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*3), default_pos.font_size, GREEN, viewport_h); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position, default_pos.font_size, GREEN, viewport_x); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*1), default_pos.font_size, GREEN, viewport_y); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*2), default_pos.font_size, GREEN, viewport_w); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*3), default_pos.font_size, GREEN, viewport_h); - context->render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*4), default_pos.font_size, WHITE, "CONTROLS:"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*4), default_pos.font_size, WHITE, "CONTROLS:"); snprintf(msg, sizeof(msg), "[%s] or [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_LEFT), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_LEFT_DPAD_LEFT)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*5), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*5), default_pos.font_size, WHITE, "- Viewport X --"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*5), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*5), default_pos.font_size, WHITE, "- Viewport X --"); snprintf(msg, sizeof(msg), "[%s] or [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_RIGHT), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_LEFT_DPAD_RIGHT)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*6), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*6), default_pos.font_size, WHITE, "- Viewport X ++"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*6), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*6), default_pos.font_size, WHITE, "- Viewport X ++"); snprintf(msg, sizeof(msg), "[%s] or [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_UP), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_LEFT_DPAD_UP)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*7), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*7), default_pos.font_size, WHITE, "- Viewport Y ++"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*7), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*7), default_pos.font_size, WHITE, "- Viewport Y ++"); snprintf(msg, sizeof(msg), "[%s] or [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_DOWN), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_LEFT_DPAD_DOWN)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*8), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*8), default_pos.font_size, WHITE, "- Viewport Y --"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*8), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*8), default_pos.font_size, WHITE, "- Viewport Y --"); snprintf(msg, sizeof(msg), "[%s] or [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_L), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_RIGHT_DPAD_LEFT)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*9), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*9), default_pos.font_size, WHITE, "- Viewport W --"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*9), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*9), default_pos.font_size, WHITE, "- Viewport W --"); snprintf(msg, sizeof(msg), "[%s] or [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_R), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_RIGHT_DPAD_RIGHT)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*10), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*10), default_pos.font_size, WHITE, "- Viewport W ++"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*10), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*10), default_pos.font_size, WHITE, "- Viewport W ++"); snprintf(msg, sizeof(msg), "[%s] or [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_L2), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_RIGHT_DPAD_UP)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*11), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*11), default_pos.font_size, WHITE, "- Viewport H ++"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*11), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*11), default_pos.font_size, WHITE, "- Viewport H ++"); snprintf(msg, sizeof(msg), "[%s] or [%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_R2), rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_RIGHT_DPAD_DOWN)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*12), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*12), default_pos.font_size, WHITE, "- Viewport H --"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*12), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*12), default_pos.font_size, WHITE, "- Viewport H --"); snprintf(msg, sizeof(msg), "[%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_X)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*13), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*13), default_pos.font_size, WHITE, "- Reset To Defaults"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*13), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*13), default_pos.font_size, WHITE, "- Reset To Defaults"); snprintf(msg, sizeof(msg), "[%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_Y)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*14), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*14), default_pos.font_size, WHITE, "- Show Game"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*14), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*14), default_pos.font_size, WHITE, "- Show Game"); snprintf(msg, sizeof(msg), "[%s]", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_A)); - context->render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*15), default_pos.font_size, WHITE, msg); - context->render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*15), default_pos.font_size, WHITE, "- Go back"); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*15), default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position_center, default_pos.y_position+(default_pos.y_position_increment*15), default_pos.font_size, WHITE, "- Go back"); snprintf(msg, sizeof(msg), "Press [%s] to reset to defaults.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_X)); - context->render_msg (default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, msg); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, msg); } } static void ingame_menu_screenshot(menu *current_menu, uint64_t input) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; (void)current_menu; if(g_extern.console.rmenu.state.ingame_menu.enable) @@ -1922,11 +1943,11 @@ static void ingame_menu_screenshot(menu *current_menu, uint64_t input) if(input & (1 << RMENU_DEVICE_NAV_A)) { menu_stack_pop(); - context->render_menu_enable(true); + device_ptr->ctx_driver->rmenu_enable(true); } if(input & (1 << RMENU_DEVICE_NAV_B)) - context->screenshot_dump(NULL); + device_ptr->ctx_driver->rmenu_screenshot_dump(NULL); } } @@ -1934,11 +1955,12 @@ static void ingame_menu_screenshot(menu *current_menu, uint64_t input) static void ingame_menu(menu *current_menu, uint64_t input) { + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; char comment[256], strw_buffer[256]; unsigned menuitem_colors[MENU_ITEM_LAST]; rmenu_default_positions_t default_pos; - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); for(int i = 0; i < MENU_ITEM_LAST; i++) menuitem_colors[i] = WHITE; @@ -1948,136 +1970,136 @@ static void ingame_menu(menu *current_menu, uint64_t input) if(input & (1 << RMENU_DEVICE_NAV_A)) rarch_settings_change(S_RETURN_TO_GAME); - switch(g_extern.console.rmenu.ingame_menu.idx) - { - case MENU_ITEM_LOAD_STATE: - if(input & (1 << RMENU_DEVICE_NAV_B)) - { - rarch_load_state(); - rarch_settings_change(S_RETURN_TO_GAME); - } - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - rarch_state_slot_decrease(); - if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) - rarch_state_slot_increase(); - - snprintf(comment, sizeof(comment), "Press [%s] to load the current state.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; - case MENU_ITEM_SAVE_STATE: - if(input & (1 << RMENU_DEVICE_NAV_B)) - { - rarch_save_state(); - rarch_settings_change(S_RETURN_TO_GAME); - } - - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - rarch_state_slot_decrease(); - if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) - rarch_state_slot_increase(); - - snprintf(comment, sizeof(comment), "Press [%s] to save the current state.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; - case MENU_ITEM_KEEP_ASPECT_RATIO: - set_setting_action(current_menu, SETTING_KEEP_ASPECT_RATIO, input); - snprintf(comment, sizeof(comment), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); - break; - case MENU_ITEM_OVERSCAN_AMOUNT: - set_setting_action(current_menu, SETTING_HW_OVERSCAN_AMOUNT, input); - snprintf(comment, sizeof(comment), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); - break; - case MENU_ITEM_ORIENTATION: - if(input & (1 << RMENU_DEVICE_NAV_LEFT)) - { - rarch_settings_change(S_ROTATION_DECREMENT); - video_ptr.set_rotation(NULL, g_extern.console.screen.orientation); - } - - if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) - { - rarch_settings_change(S_ROTATION_INCREMENT); - video_ptr.set_rotation(NULL, g_extern.console.screen.orientation); - } - - if(input & (1 << RMENU_DEVICE_NAV_START)) - { - rarch_settings_default(S_DEF_ROTATION); - video_ptr.set_rotation(NULL, g_extern.console.screen.orientation); - } - snprintf(comment, sizeof(comment), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); - break; + switch(g_extern.console.rmenu.ingame_menu.idx) + { + case MENU_ITEM_LOAD_STATE: + if(input & (1 << RMENU_DEVICE_NAV_B)) + { + rarch_load_state(); + rarch_settings_change(S_RETURN_TO_GAME); + } + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + rarch_state_slot_decrease(); + if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) + rarch_state_slot_increase(); + + snprintf(comment, sizeof(comment), "Press [%s] to load the current state.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; + case MENU_ITEM_SAVE_STATE: + if(input & (1 << RMENU_DEVICE_NAV_B)) + { + rarch_save_state(); + rarch_settings_change(S_RETURN_TO_GAME); + } + + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + rarch_state_slot_decrease(); + if(input & (1 << RMENU_DEVICE_NAV_RIGHT)) + rarch_state_slot_increase(); + + snprintf(comment, sizeof(comment), "Press [%s] to save the current state.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; + case MENU_ITEM_KEEP_ASPECT_RATIO: + set_setting_action(current_menu, SETTING_KEEP_ASPECT_RATIO, input); + snprintf(comment, sizeof(comment), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); + break; + case MENU_ITEM_OVERSCAN_AMOUNT: + set_setting_action(current_menu, SETTING_HW_OVERSCAN_AMOUNT, input); + snprintf(comment, sizeof(comment), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); + break; + case MENU_ITEM_ORIENTATION: + if(input & (1 << RMENU_DEVICE_NAV_LEFT)) + { + rarch_settings_change(S_ROTATION_DECREMENT); + video_ptr.set_rotation(NULL, g_extern.console.screen.orientation); + } + + if((input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + rarch_settings_change(S_ROTATION_INCREMENT); + video_ptr.set_rotation(NULL, g_extern.console.screen.orientation); + } + + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + rarch_settings_default(S_DEF_ROTATION); + video_ptr.set_rotation(NULL, g_extern.console.screen.orientation); + } + snprintf(comment, sizeof(comment), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); + break; #ifdef HAVE_FBO - case MENU_ITEM_SCALE_FACTOR: - set_setting_action(current_menu, SETTING_SCALE_FACTOR, input); - snprintf(comment, sizeof(comment), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); - break; + case MENU_ITEM_SCALE_FACTOR: + set_setting_action(current_menu, SETTING_SCALE_FACTOR, input); + snprintf(comment, sizeof(comment), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_START)); + break; #endif - case MENU_ITEM_FRAME_ADVANCE: - if((input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_R2)) || (input & (1 << RMENU_DEVICE_NAV_L2))) - { - rarch_settings_change(S_FRAME_ADVANCE); - g_extern.console.rmenu.ingame_menu.idx = MENU_ITEM_FRAME_ADVANCE; - } - snprintf(comment, sizeof(comment), "Press [%s] to step one frame.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; - case MENU_ITEM_RESIZE_MODE: - if(input & (1 << RMENU_DEVICE_NAV_B)) - menu_stack_push(INGAME_MENU_RESIZE); - snprintf(comment, sizeof(comment), "Allows you to resize the screen."); - break; - case MENU_ITEM_SCREENSHOT_MODE: - if(input & (1 << RMENU_DEVICE_NAV_B)) - menu_stack_push(INGAME_MENU_SCREENSHOT); - snprintf(comment, sizeof(comment), "Press [%s] to go back to the in-game menu.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_A)); - break; - case MENU_ITEM_RETURN_TO_GAME: - if(input & (1 << RMENU_DEVICE_NAV_B)) - rarch_settings_change(S_RETURN_TO_GAME); + case MENU_ITEM_FRAME_ADVANCE: + if((input & (1 << RMENU_DEVICE_NAV_B)) || (input & (1 << RMENU_DEVICE_NAV_R2)) || (input & (1 << RMENU_DEVICE_NAV_L2))) + { + rarch_settings_change(S_FRAME_ADVANCE); + g_extern.console.rmenu.ingame_menu.idx = MENU_ITEM_FRAME_ADVANCE; + } + snprintf(comment, sizeof(comment), "Press [%s] to step one frame.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; + case MENU_ITEM_RESIZE_MODE: + if(input & (1 << RMENU_DEVICE_NAV_B)) + menu_stack_push(INGAME_MENU_RESIZE); + snprintf(comment, sizeof(comment), "Allows you to resize the screen."); + break; + case MENU_ITEM_SCREENSHOT_MODE: + if(input & (1 << RMENU_DEVICE_NAV_B)) + menu_stack_push(INGAME_MENU_SCREENSHOT); + snprintf(comment, sizeof(comment), "Press [%s] to go back to the in-game menu.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_A)); + break; + case MENU_ITEM_RETURN_TO_GAME: + if(input & (1 << RMENU_DEVICE_NAV_B)) + rarch_settings_change(S_RETURN_TO_GAME); - snprintf(comment, sizeof(comment), "Press [%s] to return to the game.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; - case MENU_ITEM_RESET: - if(input & (1 << RMENU_DEVICE_NAV_B)) - { - rarch_settings_change(S_RETURN_TO_GAME); - rarch_game_reset(); - } - snprintf(comment, sizeof(comment), "Press [%s] to reset the game.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; - case MENU_ITEM_RETURN_TO_MENU: - if(input & (1 << RMENU_DEVICE_NAV_B)) - { - rarch_settings_change(S_RETURN_TO_MENU); - } - snprintf(comment, sizeof(comment), "Press [%s] to return to the ROM Browser.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; - case MENU_ITEM_CHANGE_LIBRETRO: - if(input & (1 << RMENU_DEVICE_NAV_B)) - { - menu_stack_push(LIBRETRO_CHOICE); - filebrowser_set_root_and_ext(&tmpBrowser, EXT_EXECUTABLES, default_paths.core_dir); - set_libretro_core_as_launch = true; - } - snprintf(comment, sizeof(comment), "Press [%s] to choose another core.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; + snprintf(comment, sizeof(comment), "Press [%s] to return to the game.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; + case MENU_ITEM_RESET: + if(input & (1 << RMENU_DEVICE_NAV_B)) + { + rarch_settings_change(S_RETURN_TO_GAME); + rarch_game_reset(); + } + snprintf(comment, sizeof(comment), "Press [%s] to reset the game.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; + case MENU_ITEM_RETURN_TO_MENU: + if(input & (1 << RMENU_DEVICE_NAV_B)) + { + rarch_settings_change(S_RETURN_TO_MENU); + } + snprintf(comment, sizeof(comment), "Press [%s] to return to the ROM Browser.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; + case MENU_ITEM_CHANGE_LIBRETRO: + if(input & (1 << RMENU_DEVICE_NAV_B)) + { + menu_stack_push(LIBRETRO_CHOICE); + filebrowser_set_root_and_ext(&tmpBrowser, EXT_EXECUTABLES, default_paths.core_dir); + set_libretro_core_as_launch = true; + } + snprintf(comment, sizeof(comment), "Press [%s] to choose another core.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; #ifdef HAVE_MULTIMAN - case MENU_ITEM_RETURN_TO_MULTIMAN: - if(input & (1 << RMENU_DEVICE_NAV_B)) - { - RARCH_LOG("Boot Multiman: %s.\n", default_paths.multiman_self_file); - strlcpy(g_extern.console.external_launch.launch_app, default_paths.multiman_self_file, - sizeof(g_extern.console.external_launch.launch_app)); - rarch_settings_change(S_RETURN_TO_LAUNCHER); - } - snprintf(comment, sizeof(comment), "Press [%s] to quit RetroArch and return to multiMAN.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; + case MENU_ITEM_RETURN_TO_MULTIMAN: + if(input & (1 << RMENU_DEVICE_NAV_B)) + { + RARCH_LOG("Boot Multiman: %s.\n", default_paths.multiman_self_file); + strlcpy(g_extern.console.external_launch.launch_app, default_paths.multiman_self_file, + sizeof(g_extern.console.external_launch.launch_app)); + rarch_settings_change(S_RETURN_TO_LAUNCHER); + } + snprintf(comment, sizeof(comment), "Press [%s] to quit RetroArch and return to multiMAN.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; #endif - case MENU_ITEM_QUIT_RARCH: - if(input & (1 << RMENU_DEVICE_NAV_B)) - rarch_settings_change(S_QUIT_RARCH); + case MENU_ITEM_QUIT_RARCH: + if(input & (1 << RMENU_DEVICE_NAV_B)) + rarch_settings_change(S_QUIT_RARCH); - snprintf(comment, sizeof(comment), "Press [%s] to quit RetroArch.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); - break; - } + snprintf(comment, sizeof(comment), "Press [%s] to quit RetroArch.", rarch_input_find_platform_key_label(1 << RETRO_DEVICE_ID_JOYPAD_B)); + break; + } if(input & (1 << RMENU_DEVICE_NAV_UP)) { @@ -2101,51 +2123,51 @@ static void ingame_menu(menu *current_menu, uint64_t input) display_menubar(current_menu); rarch_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); - context->render_msg(default_pos.x_position, default_pos.y_position, default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_LOAD_STATE), strw_buffer); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position, default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_LOAD_STATE), strw_buffer); rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); - context->render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_SAVE_STATE), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_SAVE_STATE), strw_buffer); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_SAVE_STATE), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_SAVE_STATE), strw_buffer); rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_KEEP_ASPECT_RATIO)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_KEEP_ASPECT_RATIO), strw_buffer); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_KEEP_ASPECT_RATIO)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_KEEP_ASPECT_RATIO), strw_buffer); snprintf(strw_buffer, sizeof(strw_buffer), "Overscan: %f", g_extern.console.screen.overscan_amount); - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_OVERSCAN_AMOUNT)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_OVERSCAN_AMOUNT), strw_buffer); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_OVERSCAN_AMOUNT)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_OVERSCAN_AMOUNT), strw_buffer); rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); - context->render_msg (default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_ORIENTATION)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_ORIENTATION), strw_buffer); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_ORIENTATION)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_ORIENTATION), strw_buffer); #ifdef HAVE_FBO rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); - context->render_msg (default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_SCALE_FACTOR)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCALE_FACTOR), strw_buffer); + device_ptr->ctx_driver->rmenu_render_msg (default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_SCALE_FACTOR)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCALE_FACTOR), strw_buffer); #endif - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RESIZE_MODE)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESIZE_MODE), "Resize Mode"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RESIZE_MODE)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESIZE_MODE), "Resize Mode"); - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_FRAME_ADVANCE)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_FRAME_ADVANCE), "Frame Advance"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_FRAME_ADVANCE)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_FRAME_ADVANCE), "Frame Advance"); - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_SCREENSHOT_MODE)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCREENSHOT_MODE), "Screenshot Mode"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_SCREENSHOT_MODE)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCREENSHOT_MODE), "Screenshot Mode"); - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RESET)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESET), "Reset"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RESET)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESET), "Reset"); - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RETURN_TO_GAME)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_GAME), "Return to Game"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RETURN_TO_GAME)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_GAME), "Return to Game"); - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RETURN_TO_MENU)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MENU), "Return to Menu"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RETURN_TO_MENU)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MENU), "Return to Menu"); - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_CHANGE_LIBRETRO)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_CHANGE_LIBRETRO), "Change libretro core"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_CHANGE_LIBRETRO)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_CHANGE_LIBRETRO), "Change libretro core"); #ifdef HAVE_MULTIMAN - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RETURN_TO_MULTIMAN)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MULTIMAN), "Return to multiMAN"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_RETURN_TO_MULTIMAN)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MULTIMAN), "Return to multiMAN"); #endif - context->render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_QUIT_RARCH)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_QUIT_RARCH), "Quit RetroArch"); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, (default_pos.y_position+(default_pos.y_position_increment*MENU_ITEM_QUIT_RARCH)), default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_QUIT_RARCH), "Quit RetroArch"); - context->render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, comment); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, comment); - rmenu_position_t position = {0}; + rarch_position_t position = {0}; position.x = default_pos.x_position; position.y = (default_pos.y_position+(default_pos.y_position_increment * g_extern.console.rmenu.ingame_menu.idx)); - context->render_selection_panel(&position); + device_ptr->ctx_driver->rmenu_draw_panel(&position); } static void rmenu_filebrowser_init(void) @@ -2163,11 +2185,7 @@ static void rmenu_filebrowser_free(void) void menu_init (void) { -#if defined(__CELLOS_LV2__) - context = &rmenu_ctx_ps3; -#elif defined(_XBOX1) - context = (rmenu_context_t*)&rmenu_ctx_xdk; -#endif + DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; //Set libretro filename and version to variable struct retro_system_info info; @@ -2176,6 +2194,8 @@ void menu_init (void) snprintf(m_title, sizeof(m_title), "%s %s", id, info.library_version); rmenu_filebrowser_init(); + + device_ptr->ctx_driver->rmenu_init(); } void menu_free (void) @@ -2193,7 +2213,7 @@ void menu_loop(void) if(g_extern.console.rmenu.state.ingame_menu.enable) menu_stack_push(INGAME_MENU); - context->init_textures(); + device_ptr->ctx_driver->rmenu_enable(true); menu current_menu; menu_stack_force_refresh(); @@ -2208,14 +2228,14 @@ void menu_loop(void) menu_stack_get_current_ptr(¤t_menu); - context->set_default_pos(&default_pos); + device_ptr->ctx_driver->rmenu_set_default_pos(&default_pos); input_ptr.poll(NULL); for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) { input_state |= input_ptr.input_state(NULL, rmenu_nav_binds, 0, - RETRO_DEVICE_JOYPAD, 0, i) ? (1 << i) : 0; + RETRO_DEVICE_JOYPAD, 0, i) ? (1 << i) : 0; } uint64_t trig_state = input_state & ~old_state; //set first button input frame as trigger @@ -2228,7 +2248,7 @@ void menu_loop(void) for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) { input_state |= input_ptr.input_state(NULL, rmenu_nav_binds, 0, - RETRO_DEVICE_JOYPAD, 0, i) ? (1 << i) : 0; + RETRO_DEVICE_JOYPAD, 0, i) ? (1 << i) : 0; } bool analog_sticks_pressed = (input_state & (1 << RMENU_DEVICE_NAV_LEFT_ANALOG_L)) || (input_state & (1 << RMENU_DEVICE_NAV_RIGHT_ANALOG_L)) || (input_state & (1 << RMENU_DEVICE_NAV_UP_ANALOG_L)) || (input_state & (1 << RMENU_DEVICE_NAV_DOWN_ANALOG_L)) || (input_state & (1 << RMENU_DEVICE_NAV_LEFT_ANALOG_R)) || (input_state & (1 << RMENU_DEVICE_NAV_RIGHT_ANALOG_R)) || (input_state & (1 << RMENU_DEVICE_NAV_UP_ANALOG_R)) || (input_state & (1 << RMENU_DEVICE_NAV_DOWN_ANALOG_R)); @@ -2242,7 +2262,7 @@ void menu_loop(void) first_held = true; SET_TIMER_EXPIRATION(device_ptr, 7); } - + if(IS_TIMER_EXPIRED(device_ptr)) { first_held = false; @@ -2250,16 +2270,16 @@ void menu_loop(void) } } - context->clear(); + device_ptr->ctx_driver->clear(); if(!show_menu_screen || current_menu.enum_id == INGAME_MENU_SCREENSHOT) { - context->render_menu_enable(false); + device_ptr->ctx_driver->rmenu_enable(false); } else { - context->blend(true); - context->render_menu_enable(true); + device_ptr->ctx_driver->set_blend(true); + device_ptr->ctx_driver->rmenu_enable(true); } rarch_render_cached_frame(); @@ -2268,47 +2288,47 @@ void menu_loop(void) switch(current_menu.enum_id) { - case FILE_BROWSER_MENU: - select_rom(¤t_menu, trig_state); - fb = &browser; - break; - case GENERAL_VIDEO_MENU: - case GENERAL_AUDIO_MENU: - case EMU_GENERAL_MENU: - case EMU_VIDEO_MENU: - case EMU_AUDIO_MENU: - case PATH_MENU: - case CONTROLS_MENU: - select_setting(¤t_menu, trig_state); - break; - case SHADER_CHOICE: - case PRESET_CHOICE: - case BORDER_CHOICE: - case LIBRETRO_CHOICE: - case INPUT_PRESET_CHOICE: - select_file(¤t_menu, trig_state); - fb = &tmpBrowser; - break; - case PATH_SAVESTATES_DIR_CHOICE: - case PATH_DEFAULT_ROM_DIR_CHOICE: + case FILE_BROWSER_MENU: + select_rom(¤t_menu, trig_state); + fb = &browser; + break; + case GENERAL_VIDEO_MENU: + case GENERAL_AUDIO_MENU: + case EMU_GENERAL_MENU: + case EMU_VIDEO_MENU: + case EMU_AUDIO_MENU: + case PATH_MENU: + case CONTROLS_MENU: + select_setting(¤t_menu, trig_state); + break; + case SHADER_CHOICE: + case PRESET_CHOICE: + case BORDER_CHOICE: + case LIBRETRO_CHOICE: + case INPUT_PRESET_CHOICE: + select_file(¤t_menu, trig_state); + fb = &tmpBrowser; + break; + case PATH_SAVESTATES_DIR_CHOICE: + case PATH_DEFAULT_ROM_DIR_CHOICE: #ifdef HAVE_XML - case PATH_CHEATS_DIR_CHOICE: + case PATH_CHEATS_DIR_CHOICE: #endif case PATH_SRAM_DIR_CHOICE: case PATH_SYSTEM_DIR_CHOICE: - select_directory(¤t_menu, trig_state); - fb = &tmpBrowser; - break; - case INGAME_MENU: - if(g_extern.console.rmenu.state.ingame_menu.enable) - ingame_menu(¤t_menu, trig_state); - break; - case INGAME_MENU_RESIZE: - ingame_menu_resize(¤t_menu, trig_state); - break; - case INGAME_MENU_SCREENSHOT: - ingame_menu_screenshot(¤t_menu, trig_state); - break; + select_directory(¤t_menu, trig_state); + fb = &tmpBrowser; + break; + case INGAME_MENU: + if(g_extern.console.rmenu.state.ingame_menu.enable) + ingame_menu(¤t_menu, trig_state); + break; + case INGAME_MENU_RESIZE: + ingame_menu_resize(¤t_menu, trig_state); + break; + case INGAME_MENU_SCREENSHOT: + ingame_menu_screenshot(¤t_menu, trig_state); + break; } switch(current_menu.category_id) @@ -2323,7 +2343,7 @@ void menu_loop(void) } old_state = input_state_first_frame; - + if(IS_TIMER_EXPIRED(device_ptr)) { // if we want to force goto the emulation loop, skip this @@ -2340,7 +2360,7 @@ void menu_loop(void) if(g_extern.console.rmenu.mode != MODE_EXIT) g_extern.console.rmenu.mode = (((old_state & (1 << RMENU_DEVICE_NAV_L3)) && (old_state & (1 << RMENU_DEVICE_NAV_R3)) && g_extern.console.emulator_initialized)) ? MODE_EMULATION : MODE_MENU; } - else + else { g_extern.console.rmenu.state.rmenu.enable = !(((old_state & (1 << RMENU_DEVICE_NAV_L3)) && (old_state & (1 << RMENU_DEVICE_NAV_R3)) && g_extern.console.emulator_initialized)); g_extern.console.rmenu.mode = g_extern.console.rmenu.state.rmenu.enable ? MODE_MENU : MODE_EMULATION; @@ -2359,18 +2379,22 @@ void menu_loop(void) if (message && g_extern.console.rmenu.state.msg_info.enable) { - context->render_msg(default_pos.msg_queue_x_position, default_pos.msg_queue_y_position, default_pos.msg_queue_font_size, WHITE, message); + device_ptr->ctx_driver->rmenu_render_msg(default_pos.msg_queue_x_position, default_pos.msg_queue_y_position, default_pos.msg_queue_font_size, WHITE, message); } - context->swap_buffers(); + device_ptr->ctx_driver->swap_buffers(); + bool quit, resize; + unsigned width, height, frame_count; + frame_count = 0; + device_ptr->ctx_driver->check_window(&quit, &resize, &width, &height, frame_count); if(current_menu.enum_id == INGAME_MENU_RESIZE && (old_state & (1 << RMENU_DEVICE_NAV_Y)) || current_menu.enum_id == INGAME_MENU_SCREENSHOT) { } else - context->blend(false); + device_ptr->ctx_driver->set_blend(false); }while(g_extern.console.rmenu.state.rmenu.enable); - context->free_textures(); + device_ptr->ctx_driver->rmenu_enable(false); if(g_extern.console.rmenu.state.ingame_menu.enable) menu_stack_pop(); diff --git a/console/rmenu/rmenu.h b/console/rmenu/rmenu.h index d1f5de51c1..d0e10604de 100644 --- a/console/rmenu/rmenu.h +++ b/console/rmenu/rmenu.h @@ -38,14 +38,6 @@ typedef struct unsigned char page; /* page */ } item; -typedef struct rmenu_position -{ - float x; - float y; - float width; - float height; -} rmenu_position_t; - typedef struct rmenu_default_positions { float x_position; @@ -69,28 +61,6 @@ typedef struct rmenu_default_positions unsigned entries_per_page; } rmenu_default_positions_t; -typedef struct rmenu_context -{ - void (*clear)(void); - void (*set_filtering)(unsigned index, bool set_smooth); - void (*set_aspect_ratio)(unsigned aspectratio_index); - void (*blend)(bool enable); - void (*set_fbo_enable)(unsigned i); - void (*free_textures)(void); - void (*init_textures)(void); - void (*render_selection_panel)(rmenu_position_t *position); - void (*render_bg)(rmenu_position_t *position); - void (*render_menu_enable)(bool enable); - void (*render_msg)(float xpos, float ypos, float scale, unsigned color, const char *msg, ...); - void (*screenshot_enable)(bool enable); - void (*screenshot_dump)(void *data); - void (*swap_buffers)(void); - void (*set_swap_interval)(unsigned interval); - void (*set_default_pos)(rmenu_default_positions_t *position); - const char * (*drive_mapping_prev)(void); - const char * (*drive_mapping_next)(void); -} rmenu_context_t; - enum { CATEGORY_FILEBROWSER, diff --git a/gfx/context/ps3_ctx.c b/gfx/context/ps3_ctx.c index d560b0bcaa..f89076408f 100644 --- a/gfx/context/ps3_ctx.c +++ b/gfx/context/ps3_ctx.c @@ -31,6 +31,7 @@ #include "../image.h" #include "../gfx_context.h" +#include "../gl_font.h" #if defined(HAVE_RMENU) GLuint menu_texture_id; @@ -42,6 +43,38 @@ static PSGLdevice* gl_device; static PSGLcontext* gl_context; #endif +#define HARDCODE_FONT_SIZE 0.91f +#define POSITION_X 0.09f +#define POSITION_X_CENTER 0.5f +#define POSITION_Y_START 0.17f +#define POSITION_Y_INCREMENT 0.035f +#define POSITION_Y_BEGIN (POSITION_Y_START + POSITION_Y_INCREMENT) +#define COMMENT_TWO_Y_POSITION 0.91f +#define COMMENT_Y_POSITION 0.82f + +#define MSG_QUEUE_X_POSITION g_settings.video.msg_pos_x +#define MSG_QUEUE_Y_POSITION 0.76f +#define MSG_QUEUE_FONT_SIZE 1.03f + +#define MSG_PREV_NEXT_Y_POSITION 0.03f +#define CURRENT_PATH_Y_POSITION 0.15f +#define CURRENT_PATH_FONT_SIZE FONT_SIZE + +#define FONT_SIZE (g_extern.console.rmenu.font_size) + +#define NUM_ENTRY_PER_PAGE 15 + +#define DRIVE_MAPPING_SIZE 4 + +const char drive_mappings[DRIVE_MAPPING_SIZE][32] = { + "/app_home/", + "/dev_hdd0/", + "/dev_hdd1/", + "/host_root/" +}; + +unsigned char drive_mapping_idx = 1; + static int gfx_ctx_check_resolution(unsigned resolution_id) { return cellVideoOutGetResolutionAvailability(CELL_VIDEO_OUT_PRIMARY, resolution_id, CELL_VIDEO_OUT_ASPECT_AUTO, 0); @@ -79,6 +112,76 @@ static float gfx_ctx_get_aspect_ratio(void) return 16.0f/9.0f; } +static void gfx_ctx_ps3_set_default_pos(rmenu_default_positions_t *position) +{ + position->x_position = POSITION_X; + position->x_position_center = POSITION_X_CENTER; + position->y_position = POSITION_Y_BEGIN; + position->comment_y_position = COMMENT_Y_POSITION; + position->y_position_increment = POSITION_Y_INCREMENT; + position->starting_y_position = POSITION_Y_START; + position->comment_two_y_position = COMMENT_TWO_Y_POSITION; + position->font_size = HARDCODE_FONT_SIZE; + position->msg_queue_x_position = MSG_QUEUE_X_POSITION; + position->msg_queue_y_position = MSG_QUEUE_Y_POSITION; + position->msg_queue_font_size= MSG_QUEUE_FONT_SIZE; + position->msg_prev_next_y_position = MSG_PREV_NEXT_Y_POSITION; + position->current_path_font_size = CURRENT_PATH_FONT_SIZE; + position->current_path_y_position = CURRENT_PATH_Y_POSITION; + position->variable_font_size = FONT_SIZE; + position->entries_per_page = NUM_ENTRY_PER_PAGE; + position->core_msg_x_position = 0.3f; + position->core_msg_y_position = 0.06f; + position->core_msg_font_size = COMMENT_Y_POSITION; +} + +static void rmenu_ctx_ps3_render_msg(float xpos, float ypos, float scale, unsigned color, const char *msg, ...) +{ + gl_t *gl = driver.video_data; + + gl_render_msg_place(gl, xpos, ypos, scale, color, msg); +} + +static void rmenu_ctx_ps3_screenshot_enable(bool enable) +{ +#if(CELL_SDK_VERSION > 0x340000) + if(enable) + { + cellSysmoduleLoadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); + CellScreenShotSetParam screenshot_param = {0, 0, 0, 0}; + + screenshot_param.photo_title = "RetroArch PS3"; + screenshot_param.game_title = "RetroArch PS3"; + cellScreenShotSetParameter (&screenshot_param); + cellScreenShotEnable(); + } + else + { + cellScreenShotDisable(); + cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); + } +#endif +} + +static void rmenu_ctx_ps3_screenshot_dump(void *data) +{ + (void)data; +} + +static const char * rmenu_ctx_ps3_drive_mapping_previous(void) +{ + if(drive_mapping_idx > 0) + drive_mapping_idx--; + return drive_mappings[drive_mapping_idx]; +} + +static const char * rmenu_ctx_ps3_drive_mapping_next(void) +{ + if((drive_mapping_idx + 1) < DRIVE_MAPPING_SIZE) + drive_mapping_idx++; + return drive_mappings[drive_mapping_idx]; +} + static void gfx_ctx_get_available_resolutions (void) { bool defaultresolution; @@ -197,6 +300,8 @@ static void gfx_ctx_set_blend(bool enable) static void gfx_ctx_set_resize(unsigned width, unsigned height) { } +bool rmenu_inited = false; + static bool gfx_ctx_rmenu_init(void) { gl_t *gl = driver.video_data; @@ -229,10 +334,34 @@ static bool gfx_ctx_rmenu_init(void) free(menu_texture.pixels); #endif + rmenu_inited = true; + return true; } #if defined(HAVE_RMENU) +static void gfx_ctx_rmenu_free(void) +{ + gl_t *gl = driver.video_data; + gl->draw_rmenu = false; +} + +static void gfx_ctx_menu_enable(bool enable) +{ + gl_t *gl = driver.video_data; + + if (enable) + { + if(!rmenu_inited) + gfx_ctx_rmenu_init(); + gl->draw_rmenu = true; + } + else + { + gfx_ctx_rmenu_free(); + } +} + static void gfx_ctx_rmenu_frame(void *data) { gl_t *gl = (gl_t*)data; @@ -240,10 +369,13 @@ static void gfx_ctx_rmenu_frame(void *data) gl_shader_use(gl, RARCH_CG_MENU_SHADER_INDEX); gl_set_viewport(gl, gl->win_width, gl->win_height, true, false); - gl_shader_set_params(gl, gl->win_width, gl->win_height, - gl->win_width, gl->win_height, - gl->win_width, gl->win_height, - gl->frame_count, NULL, NULL, NULL, 0); + if (gl->shader) + { + gl->shader->set_params(gl->win_width, gl->win_height, + gl->win_width, gl->win_height, + gl->win_width, gl->win_height, + gl->frame_count, NULL, NULL, NULL, 0); + } glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, menu_texture_id); @@ -256,6 +388,17 @@ static void gfx_ctx_rmenu_frame(void *data) glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); gl_set_viewport(gl, gl->win_width, gl->win_height, false, true); } + + +static void gfx_ctx_menu_draw_panel(rarch_position_t *position) +{ + (void)position; +} + +static void gfx_ctx_menu_draw_bg(rarch_position_t *position) +{ + (void)position; +} #endif static void gfx_ctx_update_window_title(bool reset) { } @@ -423,19 +566,26 @@ const gfx_ctx_driver_t gfx_ctx_ps3 = { "ps3", // RARCH_CONSOLE stuff. + gfx_ctx_clear, + gfx_ctx_set_blend, gfx_ctx_set_filtering, gfx_ctx_get_available_resolutions, gfx_ctx_check_resolution, + gfx_ctx_set_fbo, #ifdef HAVE_RMENU gfx_ctx_rmenu_init, -#else - NULL, -#endif - - gfx_ctx_set_fbo, -#ifdef HAVE_RMENU - gfx_ctx_rmenu_frame + gfx_ctx_rmenu_frame, + gfx_ctx_rmenu_free, + gfx_ctx_menu_enable, + gfx_ctx_menu_draw_bg, + gfx_ctx_menu_draw_panel, + gfx_ctx_ps3_set_default_pos, + rmenu_ctx_ps3_render_msg, + rmenu_ctx_ps3_screenshot_enable, + rmenu_ctx_ps3_screenshot_dump, + rmenu_ctx_ps3_drive_mapping_previous, + rmenu_ctx_ps3_drive_mapping_next, #endif }; diff --git a/gfx/context/xdk_ctx.c b/gfx/context/xdk_ctx.c index 3895910520..5329f9bf54 100644 --- a/gfx/context/xdk_ctx.c +++ b/gfx/context/xdk_ctx.c @@ -38,6 +38,56 @@ #define XBOX_PRESENTATIONINTERVAL D3DRS_PRESENTINTERVAL #endif +#define ROM_PANEL_WIDTH 510 +#define ROM_PANEL_HEIGHT 20 + +#define HARDCODE_FONT_SIZE 21 + +#define POSITION_X m_menuMainRomListPos_x +#define POSITION_X_CENTER (m_menuMainRomListPos_x + 350) +#define POSITION_Y_START m_menuMainRomListPos_y +#define POSITION_Y_BEGIN (POSITION_Y_START + POSITION_Y_INCREMENT) +#define POSITION_Y_INCREMENT 20 +#define COMMENT_Y_POSITION (ypos - ((POSITION_Y_INCREMENT/2) * 3)) +#define COMMENT_TWO_Y_POSITION (ypos - ((POSITION_Y_INCREMENT/2) * 1)) + +#define MSG_QUEUE_X_POSITION POSITION_X +#define MSG_QUEUE_Y_POSITION (ypos - ((POSITION_Y_INCREMENT/2) * 7) + 5) +#define MSG_QUEUE_FONT_SIZE HARDCODE_FONT_SIZE + +#define MSG_PREV_NEXT_Y_POSITION 24 + +#define CURRENT_PATH_Y_POSITION (m_menuMainRomListPos_y - ((POSITION_Y_INCREMENT/2))) +#define CURRENT_PATH_FONT_SIZE 21 + +#define FONT_SIZE 21 + +#define NUM_ENTRY_PER_PAGE 12 + +#define DRIVE_MAPPING_SIZE 5 + +const char drive_mappings[DRIVE_MAPPING_SIZE][32] = { + "C:", + "D:", + "E:", + "F:", + "G:" +}; + +unsigned char drive_mapping_idx = 2; + +int xpos, ypos; +#ifdef _XBOX1 +texture_image m_menuMainRomSelectPanel; +texture_image m_menuMainBG; + +// Rom list coords +int m_menuMainRomListPos_x; +int m_menuMainRomListPos_y; +#endif + +bool rmenu_inited = false; + static void gfx_ctx_xdk_set_blend(bool enable) { xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; @@ -81,6 +131,20 @@ static void gfx_ctx_xdk_check_window(bool *quit, static void gfx_ctx_xdk_set_resize(unsigned width, unsigned height) { } +static void gfx_ctx_menu_enable(bool enable) +{ + if (enable) + { + if(!rmenu_inited) + gfx_ctx_xdk_menu_init(); + } + else + { + gfx_ctx_xdk_menu_free(); + rmenu_inited = false; + } +} + static void gfx_ctx_xdk_swap_buffers(void) { xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; @@ -114,9 +178,122 @@ static bool gfx_ctx_xdk_window_has_focus(void) static bool gfx_ctx_xdk_menu_init(void) { +#ifdef _XBOX1 + xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; + + int width = d3d->d3dpp.BackBufferWidth; + + // Load background image + if(width == 640) + { + texture_image_load("D:\\Media\\main-menu_480p.png", &m_menuMainBG); + m_menuMainRomListPos_x = 60; + m_menuMainRomListPos_y = 80; + } + else if(width == 1280) + { + texture_image_load("D:\\Media\\main-menu_720p.png", &m_menuMainBG); + m_menuMainRomListPos_x = 360; + m_menuMainRomListPos_y = 130; + } + + // Load rom selector panel + texture_image_load("D:\\Media\\menuMainRomSelectPanel.png", &m_menuMainRomSelectPanel); + + //Display some text + //Center the text (hardcoded) + xpos = width == 640 ? 65 : 400; + ypos = width == 640 ? 430 : 670; +#endif + + rmenu_inited = false; return true; } +static void gfx_ctx_xdk_menu_free(void) +{ +#ifdef _XBOX1 + texture_image_free(&m_menuMainBG); + texture_image_free(&m_menuMainRomSelectPanel); +#endif +} + +static void gfx_ctx_xdk_menu_draw_bg(rarch_position_t *position) +{ +#ifdef _XBOX1 + m_menuMainBG.x = 0; + m_menuMainBG.y = 0; + texture_image_render(&m_menuMainBG); +#endif +} + +static void gfx_ctx_xdk_menu_draw_panel(rarch_position_t *position) +{ +#ifdef _XBOX1 + m_menuMainRomSelectPanel.x = position->x; + m_menuMainRomSelectPanel.y = position->y; + m_menuMainRomSelectPanel.width = ROM_PANEL_WIDTH; + m_menuMainRomSelectPanel.height = ROM_PANEL_HEIGHT; + texture_image_render(&m_menuMainRomSelectPanel); +#endif +} + +static void gfx_ctx_xdk_menu_set_default_pos(rmenu_default_positions_t *position) +{ +#ifdef _XBOX1 + position->x_position = POSITION_X; + position->x_position_center = POSITION_X_CENTER; + position->y_position = POSITION_Y_BEGIN; + position->comment_y_position = COMMENT_Y_POSITION; + position->y_position_increment = POSITION_Y_INCREMENT; + position->starting_y_position = POSITION_Y_START; + position->comment_two_y_position = COMMENT_TWO_Y_POSITION; + position->font_size = HARDCODE_FONT_SIZE; + position->msg_queue_x_position = MSG_QUEUE_X_POSITION; + position->msg_queue_y_position = MSG_QUEUE_Y_POSITION; + position->msg_queue_font_size= MSG_QUEUE_FONT_SIZE; + position->msg_prev_next_y_position = MSG_PREV_NEXT_Y_POSITION; + position->current_path_font_size = CURRENT_PATH_FONT_SIZE; + position->current_path_y_position = CURRENT_PATH_Y_POSITION; + position->variable_font_size = FONT_SIZE; + position->entries_per_page = NUM_ENTRY_PER_PAGE; + position->core_msg_x_position = position->x_position; + position->core_msg_y_position = position->msg_prev_next_y_position + 0.01f; + position->core_msg_font_size = position->font_size; +#endif +} + +static void gfx_ctx_xdk_menu_render_msg(float xpos, float ypos, float scale, unsigned color, const char *msg, ...) +{ +#ifdef _XBOX1 + xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; + xfonts_render_msg_place(d3d, xpos, ypos, scale, msg); +#endif +} + +static void gfx_ctx_xdk_menu_screenshot_enable(bool enable) +{ +} + +static void gfx_ctx_xdk_menu_screenshot_dump(void *data) +{ + gfx_ctx_xdk_screenshot_dump(NULL); +} + +static const char *gfx_ctx_xdk_menu_drive_mapping_previous(void) +{ + if(drive_mapping_idx > 0) + drive_mapping_idx--; + return drive_mappings[drive_mapping_idx]; +} + +static const char *gfx_ctx_xdk_menu_drive_mapping_next(void) +{ + if((drive_mapping_idx + 1) < DRIVE_MAPPING_SIZE) + drive_mapping_idx++; + return drive_mappings[drive_mapping_idx]; +} + static void gfx_ctx_xdk_update_window_title(bool reset) { } static void gfx_ctx_xdk_get_video_size(unsigned *width, unsigned *height) @@ -551,11 +728,23 @@ const gfx_ctx_driver_t gfx_ctx_xdk = { "xdk", // RARCH_CONSOLE stuff. + gfx_ctx_xdk_clear, + gfx_ctx_xdk_set_blend, gfx_ctx_xdk_set_filtering, gfx_ctx_xdk_get_available_resolutions, gfx_ctx_xdk_check_resolution, + gfx_ctx_xdk_set_fbo, gfx_ctx_xdk_menu_init, - - gfx_ctx_xdk_set_fbo, + gfx_ctx_xdk_menu_frame, + gfx_ctx_xdk_menu_free, + gfx_ctx_menu_enable, + gfx_ctx_xdk_menu_draw_bg, + gfx_ctx_xdk_menu_draw_panel, + gfx_ctx_xdk_menu_set_default_pos, + gfx_ctx_xdk_menu_render_msg, + gfx_ctx_xdk_menu_screenshot_enable, + gfx_ctx_xdk_menu_screenshot_dump, + gfx_ctx_xdk_menu_drive_mapping_previous, + gfx_ctx_xdk_menu_drive_mapping_next }; diff --git a/gfx/gfx_context.h b/gfx/gfx_context.h index 95f879a5f6..a53d76338c 100644 --- a/gfx/gfx_context.h +++ b/gfx/gfx_context.h @@ -23,6 +23,10 @@ #include "../config.h" #endif +#if defined(RARCH_CONSOLE) || defined(HAVE_RMENU) +#include "../console/rmenu/rmenu.h" +#endif + #define MAX_EGLIMAGE_TEXTURES 32 enum gfx_ctx_api @@ -34,6 +38,14 @@ enum gfx_ctx_api GFX_CTX_OPENVG_API }; +typedef struct rarch_position +{ + float x; + float y; + float width; + float height; +} rarch_position_t; + typedef void (*gfx_ctx_proc_t)(void); typedef struct gfx_ctx_driver @@ -93,14 +105,27 @@ typedef struct gfx_ctx_driver const char *ident; #ifdef RARCH_CONSOLE + void (*clear)(void); + void (*set_blend)(bool enable); void (*set_filtering)(unsigned index, bool set_smooth); void (*get_available_resolutions)(void); int (*check_resolution)(unsigned resolution_id); - bool (*rmenu_init)(void); void (*set_fbo)(unsigned); #endif + #ifdef HAVE_RMENU + bool (*rmenu_init)(void); void (*rmenu_frame)(void *data); + void (*rmenu_free)(void); + void (*rmenu_enable)(bool enable); + void (*rmenu_draw_bg)(rarch_position_t *position); + void (*rmenu_draw_panel)(rarch_position_t *position); + void (*rmenu_set_default_pos)(rmenu_default_positions_t *position); + void (*rmenu_render_msg)(float xpos, float ypos, float scale, unsigned color, const char *msg, ...); + void (*rmenu_screenshot_enable)(bool enable); + void (*rmenu_screenshot_dump)(void *data); + const char *(*drive_mapping_previous)(void); + const char *(*drive_mapping_next)(void); #endif } gfx_ctx_driver_t; diff --git a/gfx/gl.c b/gfx/gl.c index dfb66a93d2..1f178f0b70 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -364,11 +364,7 @@ static void gl_shader_scale(gl_t *gl, unsigned index, struct gl_fbo_scale *scale if (gl->shader) gl->shader->shader_scale(index, scale); } -#endif -/////////////////// - -#ifdef HAVE_FBO static void gl_compute_fbo_geometry(gl_t *gl, unsigned width, unsigned height, unsigned vp_width, unsigned vp_height) { diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index d300251241..67405f4004 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -122,7 +122,7 @@ static void check_window(xdk_d3d_video_t *d3d) { bool quit, resize; - d3d->driver->check_window(&quit, + d3d->ctx_driver->check_window(&quit, &resize, NULL, NULL, d3d->frame_count); @@ -161,7 +161,7 @@ static void xdk_d3d_free(void * data) d3d9_deinit_font(); #endif - d3d->driver->destroy(); + d3d->ctx_driver->destroy(); free(d3d); } @@ -351,9 +351,9 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu return NULL; } - RARCH_LOG("Found D3D context: %s\n", d3d->driver->ident); + RARCH_LOG("Found D3D context: %s\n", d3d->ctx_driver->ident); - d3d->driver->get_video_size(&d3d->full_x, &d3d->full_y); + d3d->ctx_driver->get_video_size(&d3d->full_x, &d3d->full_y); RARCH_LOG("Detecting screen resolution: %ux%u.\n", d3d->full_x, d3d->full_y); gfx_ctx_xdk_set_swap_interval(d3d->vsync ? 1 : 0); @@ -362,7 +362,7 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu if (!hlsl_shader_init()) { RARCH_ERR("Shader init failed.\n"); - d3d->driver->destroy(); + d3d->ctx_driver->destroy(); free(d3d); return NULL; } diff --git a/xdk/xdk_d3d.h b/xdk/xdk_d3d.h index e36245ce2b..2f67c4f72c 100644 --- a/xdk/xdk_d3d.h +++ b/xdk/xdk_d3d.h @@ -54,7 +54,7 @@ typedef struct DrawVerticeFormats typedef struct xdk_d3d_video { - const gfx_ctx_driver_t *driver; + const gfx_ctx_driver_t *ctx_driver; bool block_swap; #ifdef HAVE_FBO bool fbo_enabled;