From e3dfba2c34436a0c4fdd69778233ff0a99857381 Mon Sep 17 00:00:00 2001 From: Themaister Date: Thu, 21 Feb 2013 23:44:07 +0100 Subject: [PATCH 01/84] Add preliminary disk swapping interface. Works with Mednafen's disk swapping model. --- config.def.h | 4 +++ driver.h | 2 ++ dynamic.c | 9 ++++-- general.h | 2 ++ input/input_common.c | 2 ++ libretro.h | 37 +++++++++++++++++++++++ retroarch.c | 72 ++++++++++++++++++++++++++++++++++++++++++++ retroarch.cfg | 7 +++++ settings.c | 2 ++ 9 files changed, 134 insertions(+), 3 deletions(-) diff --git a/config.def.h b/config.def.h index 779117199b..01bf16d1ab 100644 --- a/config.def.h +++ b/config.def.h @@ -515,6 +515,8 @@ static const bool input_autodetect_enable = true; #define RETRO_LBL_VOLUME_UP "Volume Up" #define RETRO_LBL_VOLUME_DOWN "Volume Down" #define RETRO_LBL_OVERLAY_NEXT "Next Overlay" +#define RETRO_LBL_DISK_EJECT_TOGGLE "Disk Eject Toggle" +#define RETRO_LBL_DISK_NEXT "Disk Swap Next" // Player 1 static const struct retro_keybind retro_keybinds_1[] = { @@ -583,6 +585,8 @@ static const struct retro_keybind retro_keybinds_1[] = { { true, RARCH_VOLUME_UP, RETRO_LBL_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, AXIS_NONE }, { true, RARCH_VOLUME_DOWN, RETRO_LBL_VOLUME_DOWN, RETROK_KP_MINUS,NO_BTN, AXIS_NONE }, { true, RARCH_OVERLAY_NEXT, RETRO_LBL_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RARCH_DISK_EJECT_TOGGLE, RETRO_LBL_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RARCH_DISK_NEXT, RETRO_LBL_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, AXIS_NONE }, }; // Player 2-5 diff --git a/driver.h b/driver.h index 59c06b63ee..159ac06fae 100644 --- a/driver.h +++ b/driver.h @@ -105,6 +105,8 @@ enum // RetroArch specific bind IDs. RARCH_VOLUME_UP, RARCH_VOLUME_DOWN, RARCH_OVERLAY_NEXT, + RARCH_DISK_EJECT_TOGGLE, + RARCH_DISK_NEXT, #ifdef RARCH_CONSOLE RARCH_CHEAT_INPUT, diff --git a/dynamic.c b/dynamic.c index 8b7f44c45e..103aae552a 100644 --- a/dynamic.c +++ b/dynamic.c @@ -485,13 +485,17 @@ static bool environment_cb(unsigned cmd, void *data) case RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK: { + RARCH_LOG("Environ SET_KEYBOARD_CALLBACK.\n"); const struct retro_keyboard_callback *info = (const struct retro_keyboard_callback*)data; - g_extern.system.key_event = info->callback; - break; } + case RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE: + RARCH_LOG("Environ SET_DISK_CONTROL_INTERFACE.\n"); + g_extern.system.disk_control = *(const struct retro_disk_control_callback*)data; + break; + default: RARCH_LOG("Environ UNSUPPORTED (#%u).\n", cmd); return false; @@ -505,7 +509,6 @@ static void set_environment(void) pretro_set_environment(environment_cb); } -// Assume SNES as defaults. static void set_environment_defaults(void) { char *save; diff --git a/general.h b/general.h index 044ff55e54..6d22a52847 100644 --- a/general.h +++ b/general.h @@ -380,6 +380,8 @@ struct global char valid_extensions[PATH_MAX]; retro_keyboard_event_t key_event; + + struct retro_disk_control_callback disk_control; } system; struct diff --git a/input/input_common.c b/input/input_common.c index 9886591462..f9e0aa5a2a 100644 --- a/input/input_common.c +++ b/input/input_common.c @@ -549,6 +549,8 @@ static const struct str_to_bind_map str_to_bind[] = { { "volume_up", RARCH_VOLUME_UP }, { "volume_down", RARCH_VOLUME_DOWN }, { "overlay_next", RARCH_OVERLAY_NEXT }, + { "disk_eject_toggle", RARCH_DISK_EJECT_TOGGLE }, + { "disk_next", RARCH_DISK_NEXT }, }; unsigned input_str_to_bind(const char *str) diff --git a/libretro.h b/libretro.h index 21e24eeeff..f765a66047 100755 --- a/libretro.h +++ b/libretro.h @@ -415,6 +415,12 @@ enum retro_mod #define RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK 12 // const struct retro_keyboard_callback * -- // Sets a callback function used to notify core about keyboard events. + // +#define RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE 13 + // const struct retro_disk_control_callback * -- + // Sets an interface which frontend can use to eject and insert disk images. + // This is used for games which consist of multiple images and must be manually + // swapped out by the user (e.g. PSX). // Callback type passed in RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. Called by the frontend in response to keyboard events. @@ -429,6 +435,37 @@ struct retro_keyboard_callback retro_keyboard_event_t callback; }; +// Callback for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. +// Should be set for implementations which can swap out multiple disk images in runtime. +// If the implementation can do this automatically, it should strive to do so. +// However, there are cases where the user must manually do so. +// +// Overview: To swap a disk image, eject the disk image with set_eject_state(true). +// Set the disk index with set_image_index(index). Insert the disk again with set_eject_state(false). + +// If ejected is true, "ejects" the virtual disk tray. When ejected, the disk image index can be set. +typedef bool (*retro_set_eject_state_t)(bool ejected); +// Gets current eject state. The initial state is not ejected. +typedef bool (*retro_get_eject_state_t)(void); +// Gets current disk index. First disk is index 0. +// If return value is >= get_num_images(), no disk is currently inserted. +typedef unsigned (*retro_get_image_index_t)(void); +// Sets image index. Can only be called when disk is ejected. +// The implementation supports setting "no disk" by using an index >= get_num_images(). +typedef bool (*retro_set_image_index_t)(unsigned index); +// Gets total number of images which are available to use. +typedef unsigned (*retro_get_num_images_t)(void); + +struct retro_disk_control_callback +{ + retro_set_eject_state_t set_eject_state; + retro_get_eject_state_t get_eject_state; + + retro_get_image_index_t get_image_index; + retro_set_image_index_t set_image_index; + retro_get_num_images_t get_num_images; +}; + enum retro_pixel_format { // 0RGB1555, native endian. 0 bit must be set to 0. diff --git a/retroarch.c b/retroarch.c index 66cf2848de..ca68744afe 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2390,6 +2390,77 @@ static void check_cheats(void) old_pressed_toggle = pressed_toggle; } +static void check_disk(void) +{ + const struct retro_disk_control_callback *control = &g_extern.system.disk_control; + if (!control->get_num_images) + return; + + static bool old_pressed_eject; + static bool old_pressed_next; + + bool pressed_eject = input_key_pressed_func(RARCH_DISK_EJECT_TOGGLE); + bool pressed_next = input_key_pressed_func(RARCH_DISK_NEXT); + bool error = false; + char msg[256]; + *msg = '\0'; + + if (pressed_eject && !old_pressed_eject) + { + bool new_state = !control->get_eject_state(); + if (control->set_eject_state(new_state)) + snprintf(msg, sizeof(msg), "%s virtual disk tray.", new_state ? "Ejected" : "Closed"); + else + { + error = true; + snprintf(msg, sizeof(msg), "Failed to %s virtual disk tray.", new_state ? "eject" : "close"); + } + } + else if (pressed_next && !old_pressed_next) + { + unsigned num_disks = control->get_num_images(); + unsigned current = control->get_image_index(); + if (num_disks && num_disks != UINT_MAX) + { + // Use "no disk" state when index == num_disks. + unsigned next_index = current >= num_disks ? 0 : ((current + 1) % (num_disks + 1)); + if (control->set_image_index(next_index)) + { + if (next_index < num_disks) + snprintf(msg, sizeof(msg), "Setting disk %u of %u in tray.", next_index + 1, num_disks); + else + snprintf(msg, sizeof(msg), "Removed disk from tray."); + } + else + { + if (next_index < num_disks) + snprintf(msg, sizeof(msg), "Failed to set disk %u of %u.", next_index + 1, num_disks); + else + snprintf(msg, sizeof(msg), "Failed to remove disk from tray."); + error = true; + } + } + else + { + snprintf(msg, sizeof(msg), "Got invalid disk index from libretro."); + error = true; + } + } + + if (*msg) + { + if (error) + RARCH_ERR("%s\n", msg); + else + RARCH_LOG("%s\n", msg); + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, msg, 1, 180); + } + + old_pressed_eject = pressed_eject; + old_pressed_next = pressed_next; +} + #if defined(HAVE_SCREENSHOTS) && !defined(_XBOX) static void check_screenshot(void) { @@ -2562,6 +2633,7 @@ static void do_state_checks(void) check_shader_dir(); check_cheats(); + check_disk(); #ifdef HAVE_DYLIB check_dsp_config(); diff --git a/retroarch.cfg b/retroarch.cfg index 22248ce2cf..e7d853d73b 100644 --- a/retroarch.cfg +++ b/retroarch.cfg @@ -380,6 +380,13 @@ # Toggles to next overlay. Wraps around. # input_overlay_next = +# Toggles eject for disks. Used for multiple-disk games. +# input_disk_eject_toggle = + +# Cycles through disk images. Use after ejecting. +# Complete by toggling eject again. +# input_disk_next = + #### Misc # Enable rewinding. This will take a performance hit when playing, so it is disabled by default. diff --git a/settings.c b/settings.c index 83093c3e13..fd08c27ea1 100644 --- a/settings.c +++ b/settings.c @@ -825,6 +825,8 @@ static const struct bind_map bind_maps[MAX_PLAYERS][RARCH_BIND_LIST_END_NULL] = DECLARE_BIND(volume_up, RARCH_VOLUME_UP), DECLARE_BIND(volume_down, RARCH_VOLUME_DOWN), DECLARE_BIND(overlay_next, RARCH_OVERLAY_NEXT), + DECLARE_BIND(disk_eject_toggle, RARCH_DISK_EJECT_TOGGLE), + DECLARE_BIND(disk_next, RARCH_DISK_NEXT), }, { DECL_PLAYER(2) }, From a2f4639ed8e0e3b0dd594b2cea4e7c60155b10f2 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 24 Feb 2013 02:08:20 +0100 Subject: [PATCH 02/84] Log which SwapInterval implementation is used. --- gfx/context/glx_ctx.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/gfx/context/glx_ctx.c b/gfx/context/glx_ctx.c index b0141c1dd6..88d2ea3e4d 100644 --- a/gfx/context/glx_ctx.c +++ b/gfx/context/glx_ctx.c @@ -361,14 +361,22 @@ static bool gfx_ctx_set_video_mode( g_is_double = val; if (g_is_double) { + const char *swap_func = NULL; + g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalMESA"); + if (g_pglSwapInterval) + swap_func = "glXSwapIntervalMESA"; + if (!g_pglSwapInterval) - g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapInterval"); - if (!g_pglSwapInterval) - g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalMESA"); - if (!g_pglSwapInterval) + { g_pglSwapInterval = (int (*)(int))glXGetProcAddress((const GLubyte*)"glXSwapIntervalSGI"); + if (g_pglSwapInterval) + swap_func = "glXSwapIntervalSGI"; + } + if (!g_pglSwapInterval) RARCH_WARN("[GLX]: Cannot find swap interval call.\n"); + else + RARCH_LOG("[GLX]: Found swap function: %s.\n", swap_func); } else RARCH_WARN("[GLX]: Context is not double buffered!.\n"); @@ -454,6 +462,7 @@ static void gfx_ctx_destroy(void) } g_inited = false; + g_pglSwapInterval = NULL; } static void gfx_ctx_input_driver(const input_driver_t **input, void **input_data) From d28cb947176d419e36b8a6ba29d5930e59ed2b55 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Wed, 27 Feb 2013 20:20:29 -0500 Subject: [PATCH 03/84] start of RGUI port to Android currently detects menu button to bring up RGUI, but GL does not draw it yet and you cannot exit from the (invisible) RGUI menu yet --- android/native/jni/input_android.c | 9 +- android/native/jni/input_autodetect.c | 5 + console/griffin/griffin.c | 5 +- console/griffin/hook_context.h | 1 + frontend/frontend_android.c | 29 +++- frontend/menu/rgui.c | 56 +++++-- frontend/menu/rmenu_generic.c | 218 ++++++++++++++++++++++++++ gfx/gl.c | 73 ++++++++- gfx/gl_common.h | 5 + gfx/thread_wrapper.c | 18 +++ 10 files changed, 393 insertions(+), 26 deletions(-) create mode 100644 frontend/menu/rmenu_generic.c diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 9cd31572da..11b1766983 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -90,7 +90,7 @@ static void android_input_poll(void *data) struct android_app* android_app = (struct android_app*)g_android; uint64_t *lifecycle_state = &g_extern.lifecycle_state; - *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS)); + *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY)); // Read all pending events. while (AInputQueue_hasEvents(android_app->inputQueue) > 0) @@ -254,6 +254,11 @@ static void android_input_poll(void *data) } #endif + if (!(g_extern.frame_count < g_extern.delay_timer[0]) && g_extern.lifecycle_state & (1ULL << RARCH_RMENU_TOGGLE)) + { + g_extern.lifecycle_state |= (1ULL << RARCH_QUIT_KEY); + } + RARCH_PERFORMANCE_STOP(input_poll); } @@ -262,7 +267,7 @@ static int16_t android_input_state(void *data, const struct retro_keybind **bind switch (device) { case RETRO_DEVICE_JOYPAD: - return ((state[port] & binds[port][id].joykey) && (port < pads_connected)); + return ((port < pads_connected) && (state[port] & binds[port][id].joykey)); case RETRO_DEVICE_POINTER: switch(id) { diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index d61a9066c5..a762eb7fb6 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -142,6 +142,11 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } } + if (port == 0) + { + keycode_lut[AKEYCODE_MENU] |= ((RARCH_RMENU_TOGGLE + 1) << shift); + } + if (g_settings.input.autodetect_enable) { diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index a00bf3d3cd..6f3a8ad783 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -33,8 +33,6 @@ CONSOLE EXTENSIONS ============================================================ */ #ifdef RARCH_CONSOLE -#include "../rarch_console_video.c" - #ifdef HW_DOL #include "../../ngc/ssaram.c" #endif @@ -440,12 +438,15 @@ MENU #endif #ifdef HAVE_RMENU +#include "../rarch_console_video.c" #include "../../frontend/menu/rmenu_settings.c" #if defined(_XBOX360) #include "../../frontend/menu/rmenu_xui.cpp" #elif defined(GEKKO) #include "../../frontend/menu/rmenu_gx.c" +#elif defined(ANDROID) +#include "../../frontend/menu/rmenu_generic.c" #endif #endif diff --git a/console/griffin/hook_context.h b/console/griffin/hook_context.h index 3184a420df..f638edba24 100644 --- a/console/griffin/hook_context.h +++ b/console/griffin/hook_context.h @@ -42,6 +42,7 @@ #ifdef HAVE_RMENU #define context_rmenu_init_func() gl->ctx_driver->rmenu_init() #define context_rmenu_frame_func(ctx) gl->ctx_driver->rmenu_frame(ctx) +#define context_rmenu_free_func() gl->ctx_driver->rmenu_free() #endif #ifdef HAVE_EGL diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index cee92d11dc..a7213e9749 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -25,6 +25,7 @@ #include "../general.h" #include "../performance.h" #include "../driver.h" +#include "menu/rmenu.h" #include "../config.def.h" @@ -347,21 +348,43 @@ static void *android_app_entry(void *data) if (!android_app_start_main(android_app, &init_ret)) goto exit; - if (g_extern.main_is_init) + menu_init(); + + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); +begin_loop: + if(g_extern.lifecycle_mode_state & (1ULL << MODE_GAME)) { - RARCH_LOG("RetroArch started.\n"); + driver.input->poll(NULL); + driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); + + if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) + audio_start_func(); while ((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? android_run_events(android_app) : rarch_main_iterate()); - RARCH_LOG("RetroArch stopped.\n"); + if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) + audio_stop_func(); + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); } + else if(g_extern.lifecycle_mode_state & (1ULL << MODE_MENU)) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_PREINIT); + while(rmenu_iterate()); + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU); + } + else + goto exit; + + goto begin_loop; exit: android_app->activityState = APP_CMD_DEAD; RARCH_LOG("Deinitializing RetroArch...\n"); + menu_free(); + if (g_extern.main_is_init) rarch_main_deinit(); diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index ed035fa0d8..e7f315f2f5 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -116,6 +116,13 @@ unsigned rgui_gx_resolutions[GX_RESOLUTIONS_LAST][2] = { }; unsigned rgui_current_gx_resolution = GX_RESOLUTIONS_640_480; + +static const char *rgui_device_labels[] = { + "GameCube Controller", + "Wiimote", + "Wiimote + Nunchuk", + "Classic Controller", +}; #endif unsigned RGUI_WIDTH = 320; @@ -141,13 +148,6 @@ struct rgui_handle bool alloc_font; }; -static const char *rgui_device_labels[] = { - "GameCube Controller", - "Wiimote", - "Wiimote + Nunchuk", - "Classic Controller", -}; - static const unsigned rgui_controller_lut[] = { RETRO_DEVICE_ID_JOYPAD_UP, RETRO_DEVICE_ID_JOYPAD_DOWN, @@ -177,7 +177,7 @@ static inline bool rgui_is_viewport_menu(rgui_file_type_t menu_type) return (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT || menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT_2); } -static void copy_glyph(uint8_t *glyph, const uint8_t *buf) +static void rgui_copy_glyph(uint8_t *glyph, const uint8_t *buf) { for (int y = 0; y < FONT_HEIGHT; y++) { @@ -205,7 +205,7 @@ static void init_font(rgui_handle_t *rgui, const uint8_t *font_bmp_buf) { unsigned y = i / 16; unsigned x = i % 16; - copy_glyph(&font[FONT_OFFSET(i)], + rgui_copy_glyph(&font[FONT_OFFSET(i)], font_bmp_buf + 54 + 3 * (256 * (255 - 16 * y) + 16 * x)); } @@ -227,7 +227,11 @@ rgui_handle_t *rgui_init(const char *base_path, rgui->path_stack = rgui_list_new(); rgui->folder_buf = rgui_list_new(); +#ifdef RARCH_CONSOLE rgui_list_push(rgui->path_stack, base_path, RGUI_FILE_DIRECTORY, 0); +#else + rgui_list_push(rgui->path_stack, base_path, RGUI_SETTINGS, 0); +#endif if (font_bmp_buf) init_font(rgui, font_bmp_buf); @@ -406,7 +410,9 @@ static void render_text(rgui_handle_t *rgui) char message[TERM_WIDTH + 1]; char type_str[TERM_WIDTH + 1]; int w = rgui_is_controller_menu(menu_type) ? 26 : 19; +#ifdef RARCH_CONSOLE unsigned port = menu_type - RGUI_SETTINGS_CONTROLLER_1; +#endif switch (type) { case RGUI_FILE_PLAIN: @@ -493,9 +499,12 @@ static void render_text(rgui_handle_t *rgui) case RGUI_SETTINGS_CONTROLLER_4: snprintf(type_str, sizeof(type_str), "..."); break; +#ifdef GEKKO case RGUI_SETTINGS_BIND_DEVICE: snprintf(type_str, sizeof(type_str), "%s", rgui_device_labels[g_settings.input.device[port]]); break; +#endif +#ifdef RARCH_CONSOLE case RGUI_SETTINGS_BIND_DPAD_EMULATION: snprintf(type_str, sizeof(type_str), "%s", rarch_dpad_emulation_name_lut[g_settings.input.dpad_emulation[port]]); break; @@ -517,6 +526,7 @@ static void render_text(rgui_handle_t *rgui) case RGUI_SETTINGS_BIND_R3: snprintf(type_str, sizeof(type_str), "%s", rarch_input_find_platform_key_label(g_settings.input.binds[port][rgui_controller_lut[type - RGUI_SETTINGS_BIND_UP]].joykey)); break; +#endif default: type_str[0] = 0; w = 0; @@ -573,7 +583,9 @@ static void render_text(rgui_handle_t *rgui) static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t action, rgui_file_type_t menu_type) { - unsigned port = menu_type - RGUI_SETTINGS_CONTROLLER_1; +#ifdef RARCH_CONSOLE + unsigned port = menu_type - RGUI_SETTINGS_CONTROLLER_1; +#endif switch (setting) { @@ -625,9 +637,15 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t unsigned height = g_extern.frame_cache.height; int pitch = g_extern.frame_cache.pitch; +#ifdef RARCH_CONSOLE + const char *screenshot_dir = default_paths.port_dir; +#else + const char *screenshot_dir = g_settings.screenshot_directory; +#endif + // Negative pitch is needed as screenshot takes bottom-up, // but we use top-down. - bool r = screenshot_dump(default_paths.port_dir, + bool r = screenshot_dump(screenshot_dir, data + (height - 1) * (pitch >> 1), width, height, -pitch, false); @@ -838,6 +856,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t } break; // controllers +#ifdef GEKKO case RGUI_SETTINGS_BIND_DEVICE: g_settings.input.device[port] += RARCH_DEVICE_LAST; if (action == RGUI_ACTION_START) @@ -851,6 +870,8 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t rarch_input_set_default_keybinds(port); driver.input->set_analog_dpad_mapping(g_settings.input.device[port], g_settings.input.dpad_emulation[port], port); break; +#endif +#ifdef RARCH_CONSOLE case RGUI_SETTINGS_BIND_DPAD_EMULATION: g_settings.input.dpad_emulation[port] += DPAD_EMULATION_LAST; if (action == RGUI_ACTION_START) @@ -892,6 +913,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t rarch_input_set_keybind(port, keybind_action, rgui_controller_lut[setting - RGUI_SETTINGS_BIND_UP]); } +#endif default: break; } @@ -934,10 +956,12 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) #ifdef HAVE_LIBRETRO_MANAGEMENT RGUI_MENU_ITEM("Core", RGUI_SETTINGS_CORE); #endif +#ifdef RARCH_CONSOLE RGUI_MENU_ITEM("Controller #1 Config", RGUI_SETTINGS_CONTROLLER_1); RGUI_MENU_ITEM("Controller #2 Config", RGUI_SETTINGS_CONTROLLER_2); RGUI_MENU_ITEM("Controller #3 Config", RGUI_SETTINGS_CONTROLLER_3); RGUI_MENU_ITEM("Controller #4 Config", RGUI_SETTINGS_CONTROLLER_4); +#endif RGUI_MENU_ITEM("Debug Text", RGUI_SETTINGS_DEBUG_TEXT); RGUI_MENU_ITEM("Restart RetroArch", RGUI_SETTINGS_RESTART_EMULATOR); RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); @@ -945,6 +969,7 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) static void rgui_settings_controller_populate_entries(rgui_handle_t *rgui) { +#ifdef RARCH_CONSOLE rgui_list_clear(rgui->folder_buf); RGUI_MENU_ITEM("Device", RGUI_SETTINGS_BIND_DEVICE); @@ -965,10 +990,10 @@ static void rgui_settings_controller_populate_entries(rgui_handle_t *rgui) RGUI_MENU_ITEM("R2", RGUI_SETTINGS_BIND_R2); RGUI_MENU_ITEM("L3", RGUI_SETTINGS_BIND_L3); RGUI_MENU_ITEM("R3", RGUI_SETTINGS_BIND_R3); +#endif } - -int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) +static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) { #ifdef GEKKO gx_video_t *gx = (gx_video_t*)driver.video_data; @@ -1088,12 +1113,13 @@ int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) return 0; } -int rgui_settings_iterate(rgui_handle_t *rgui, rgui_action_t action) +static int rgui_settings_iterate(rgui_handle_t *rgui, rgui_action_t action) { rgui->frame_buf_pitch = RGUI_WIDTH * 2; rgui_file_type_t type = 0; const char *label = 0; - rgui_list_at(rgui->folder_buf, rgui->directory_ptr, &label, &type, NULL); + if (action != RGUI_ACTION_REFRESH) + rgui_list_at(rgui->folder_buf, rgui->directory_ptr, &label, &type, NULL); #ifdef HAVE_LIBRETRO_MANAGEMENT if (type == RGUI_SETTINGS_CORE) label = default_paths.core_dir; diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c new file mode 100644 index 0000000000..6950001143 --- /dev/null +++ b/frontend/menu/rmenu_generic.c @@ -0,0 +1,218 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * Copyright (C) 2011-2013 - 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 "rgui.h" +#include "../../gfx/gl_common.h" + +#include "../../gfx/fonts/bitmap.h" + +static uint16_t menu_framebuf[400 * 240]; +static rgui_handle_t *rgui; + +static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, + void *userdata, void *ctx) +{ + struct string_list *ext_list = string_split(g_extern.system.valid_extensions, "|"); + + char _dir[PATH_MAX]; + snprintf(_dir, sizeof(_dir), "%s/", directory); + DIR *dir = opendir(_dir); + if (!dir) + return false; + + struct dirent *entry; + while ((entry = readdir(dir))) + { + char stat_path[PATH_MAX]; + const char *file_ext = path_get_extension(entry->d_name); + snprintf(stat_path, sizeof(stat_path), "%s/%s", directory, entry->d_name); + bool is_dir; + +#ifdef _DIRENT_HAVE_D_TYPE + is_dir = (entry->d_type == DT_DIR); + if (entry->d_type != DT_REG && !is_dir) + continue; +#else + struct stat st; + if (stat(stat_path, &st) < 0) + continue; + + is_dir = S_ISDIR(st.st_mode); + if (!S_ISREG(st.st_mode) && !is_dir) + continue; +#endif + + if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) + continue; + + file_cb(ctx, + entry->d_name, + is_dir ? RGUI_FILE_DIRECTORY : RGUI_FILE_PLAIN, 0); + } + + closedir(dir); + string_list_free(ext_list); + return true; +} + +/*============================================================ +RMENU API +============================================================ */ + +void menu_init(void) +{ + gl_t *gl = (gl_t*)driver.video_data; + + gl->menu_data = (uint32_t *) menu_framebuf; + + rgui = rgui_init("", + menu_framebuf, RGUI_WIDTH * sizeof(uint16_t), + NULL, bitmap_bin, folder_cb, NULL); + + rgui_iterate(rgui, RGUI_ACTION_REFRESH); +} + +void menu_free(void) +{ + rgui_free(rgui); +} + +static uint16_t trigger_state = 0; + +int rmenu_input_process(void *data, void *state) +{ + if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) + { + if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) + rmenu_settings_msg(S_MSG_LOADING_ROM, 100); + + if (g_extern.fullpath) + g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); + + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); + return -1; + } + + if (!(g_extern.frame_count < g_extern.delay_timer[0])) + { + bool return_to_game_enable = ((g_extern.lifecycle_mode_state & (1ULL << RARCH_RMENU_TOGGLE)) && g_extern.main_is_init); + + if (return_to_game_enable) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + return -1; + } + } + + return 0; +} + +bool rmenu_iterate(void) +{ + static const struct retro_keybind *binds[] = { + g_settings.input.binds[0] + }; + + static uint16_t old_input_state = 0; + static bool initial_held = true; + static bool first_held = false; + + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); + driver.video->apply_state_changes(); + + g_extern.frame_count++; + + uint16_t input_state = 0; + + driver.input->poll(NULL); + + for (unsigned i = 0; i < 16; i++) + input_state |= driver.input->input_state(NULL, binds, 0, RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; + + trigger_state = input_state & ~old_input_state; + bool do_held = input_state & ((1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) | (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT)); + + if(do_held) + { + if(!first_held) + { + first_held = true; + g_extern.delay_timer[1] = g_extern.frame_count + (initial_held ? 15 : 7); + } + + if (!(g_extern.frame_count < g_extern.delay_timer[1])) + { + first_held = false; + trigger_state = input_state; //second input frame set as current frame + } + + initial_held = false; + } + else + { + first_held = false; + initial_held = true; + } + + old_input_state = input_state; + + rgui_action_t action = RGUI_ACTION_NOOP; + + // don't run anything first frame, only capture held inputs for old_input_state + if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_UP)) + action = RGUI_ACTION_UP; + else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN)) + action = RGUI_ACTION_DOWN; + else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT)) + action = RGUI_ACTION_LEFT; + else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT)) + action = RGUI_ACTION_RIGHT; + else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_B)) + action = RGUI_ACTION_CANCEL; + else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_A)) + action = RGUI_ACTION_OK; + else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_START)) + action = RGUI_ACTION_START; + //else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT)) + // action = RGUI_ACTION_SETTINGS; + + int input_entry_ret = 0; + int input_process_ret = 0; + + input_entry_ret = rgui_iterate(rgui, action); + + // draw last frame for loading messages + rarch_render_cached_frame(); + + input_process_ret = rmenu_input_process(NULL, NULL); + + if (input_entry_ret != 0 || input_process_ret != 0) + goto deinit; + + return true; + +deinit: + // set a timer delay so that we don't instantly switch back to the menu when + // press and holding QUIT in the emulation loop (lasts for 30 frame ticks) + if (!(g_extern.lifecycle_state & (1ULL << RARCH_FRAMEADVANCE))) + g_extern.delay_timer[0] = g_extern.frame_count + 30; + + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_DRAW); + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_INGAME); + + return false; +} diff --git a/gfx/gl.c b/gfx/gl.c index 4748f12c53..004f77b955 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -49,6 +49,10 @@ #include "shader_common.h" +#ifdef HAVE_RMENU +#include "../console/rarch_console_video.h" +#endif + #ifdef __CELLOS_LV2__ #define FPS_COUNTER #endif @@ -57,6 +61,10 @@ #include "../frontend/frontend_android.h" #endif +#ifdef HAVE_RGUI +#include "../frontend/menu/rgui.h" +#endif + // Used for the last pass when rendering to the back buffer. const GLfloat vertexes_flipped[] = { 0, 1, @@ -668,14 +676,12 @@ void gl_init_fbo(void *data, unsigned width, unsigned height) void gl_set_projection(void *data, struct gl_ortho *ortho, bool allow_rotate) { gl_t *gl = (gl_t*)data; -#ifdef RARCH_CONSOLE if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_OVERSCAN_ENABLE)) { ortho->left = -g_extern.console.screen.overscan_amount / 2; ortho->right = 1 + g_extern.console.screen.overscan_amount / 2; ortho->bottom = -g_extern.console.screen.overscan_amount / 2; } -#endif // Calculate projection. matrix_ortho(&gl->mvp_no_rot, ortho->left, ortho->right, @@ -715,7 +721,7 @@ void gl_set_viewport(void *data, unsigned width, unsigned height, bool force_ful float desired_aspect = g_settings.video.aspect_ratio; float delta; -#ifdef RARCH_CONSOLE +#ifdef HAVE_RGUI if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM) { x = g_extern.console.screen.viewports.custom_vp.x; @@ -1070,6 +1076,10 @@ static void gl_init_textures(void *data, const video_info_t *video) glGenTextures(TEXTURES, gl->texture); +#ifdef RGUI + glGenTextures(1, &gl->rgui_texture); +#endif + for (unsigned i = 0; i < TEXTURES; i++) { glBindTexture(GL_TEXTURE_2D, gl->texture[i]); @@ -1178,6 +1188,11 @@ static void gl_init_textures(void *data, const video_info_t *video) #endif glGenTextures(TEXTURES, gl->texture); + +#ifdef RGUI + glGenTextures(1, &gl->rgui_texture); +#endif + for (unsigned i = 0; i < TEXTURES; i++) { glBindTexture(GL_TEXTURE_2D, gl->texture[i]); @@ -1237,6 +1252,39 @@ static void gl_pbo_async_readback(void *data) } #endif +#ifdef HAVE_RGUI + +static inline void gl_draw_rgui(void *data) +{ + static const GLfloat white_color_rgui[16] = { + 1.0f, 1.0f, 1.0f, 0.25f, + 1.0f, 1.0f, 1.0f, 0.25f, + 1.0f, 1.0f, 1.0f, 0.25f, + 1.0f, 1.0f, 1.0f, 0.25f, + }; + + gl_t *gl = (gl_t*)data; + + glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); + + glPixelStorei(GL_UNPACK_ALIGNMENT, get_alignment(RGUI_WIDTH * 2)); + // RGUI is always packed so pitch = width * bpp + glTexImage2D(GL_TEXTURE_2D, + 0, GL_RGB, RGUI_WIDTH, RGUI_HEIGHT, 0, GL_RGB, + GL_UNSIGNED_SHORT_5_6_5, gl->menu_data); + + gl_shader_use_func(gl, 0); + + glEnable(GL_BLEND); + gl->coords.color = white_color_rgui; + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glDisable(GL_BLEND); + + gl->coords.color = white_color; +} + +#endif + static bool gl_frame(void *data, const void *frame, unsigned width, unsigned height, unsigned pitch, const char *msg) { RARCH_PERFORMANCE_INIT(frame_run); @@ -1310,6 +1358,14 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei gl_set_prev_texture(gl, &tex_info); +#ifdef HAVE_RGUI + if(lifecycle_mode_state & (1ULL << MODE_MENU_DRAW)) + { + RARCH_LOG("rgui draw\n"); + gl_draw_rgui(gl); + } +#endif + #ifdef FPS_COUNTER if (lifecycle_mode_state & (1ULL << MODE_FPS_DRAW)) { @@ -1337,7 +1393,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei RARCH_PERFORMANCE_STOP(frame_run); -#ifdef HAVE_RMENU +#if defined(HAVE_RMENU) && !defined(HAVE_RGUI) if (lifecycle_mode_state & (1ULL << MODE_MENU_DRAW)) context_rmenu_frame_func(gl); else @@ -1385,6 +1441,10 @@ static void gl_free(void *data) glDeleteTextures(TEXTURES, gl->texture); +#ifdef RGUI + glDeleteTextures(1, &gl->rgui_texture); +#endif + #ifdef HAVE_OVERLAY if (gl->tex_overlay) glDeleteTextures(1, &gl->tex_overlay); @@ -1507,6 +1567,10 @@ static inline void gl_reinit_textures(void *data, const video_info_t *video) glBindTexture(GL_TEXTURE_2D, 0); glDeleteTextures(TEXTURES, gl->texture); +#ifdef RGUI + glDeleteTextures(1, &gl->rgui_texture); +#endif + gl_init_textures(gl, video); gl_init_textures_data(gl); @@ -2041,6 +2105,7 @@ static void gl_set_aspect_ratio(void *data, unsigned aspectratio_index) g_settings.video.aspect_ratio = aspectratio_lut[g_settings.video.aspect_ratio_idx].value; g_settings.video.force_aspect = false; gl->keep_aspect = true; + gl->should_resize = true; } #endif diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 2617f84d28..b7db8c3d59 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -301,6 +301,11 @@ typedef struct gl struct scaler_ctx pbo_readback_scaler; #endif +#ifdef HAVE_RGUI + GLuint rgui_texture; + uint32_t *menu_data; +#endif + } gl_t; // Windows ... <_< diff --git a/gfx/thread_wrapper.c b/gfx/thread_wrapper.c index 39d8397458..2f513eaa17 100644 --- a/gfx/thread_wrapper.c +++ b/gfx/thread_wrapper.c @@ -535,6 +535,17 @@ static void thread_get_overlay_interface(void *data, const video_overlay_interfa } #endif +#if defined(HAVE_RMENU) + +// all stubs for now, might not have to implement them unless we want to port this to consoles +static void thread_start(void) {} +static void thread_stop(void) {} +static void thread_restart(void) {} +static void thread_apply_state_changes(void) {} +static void thread_set_aspect_ratio(void *data, unsigned aspectratio_index) {} + +#endif + static const video_driver_t video_thread = { thread_init_never_call, // Should never be called directly. thread_frame, @@ -544,6 +555,13 @@ static const video_driver_t video_thread = { thread_set_shader, thread_free, "Thread wrapper", +#if defined(HAVE_RMENU) + thread_start, + thread_stop, + thread_restart, + thread_apply_state_changes, + thread_set_aspect_ratio, +#endif thread_set_rotation, thread_viewport_info, thread_read_viewport, From 83878b05e7e7fabf1acc3b621f321a5e3a2db9a0 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Thu, 28 Feb 2013 10:20:29 -0500 Subject: [PATCH 04/84] commit makefile changes --- android/native/jni/Android.mk | 2 +- gfx/gl.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/android/native/jni/Android.mk b/android/native/jni/Android.mk index 1039768f1c..7c9579fa7f 100644 --- a/android/native/jni/Android.mk +++ b/android/native/jni/Android.mk @@ -51,7 +51,7 @@ ifeq ($(PERF_TEST), 1) LOCAL_CFLAGS += -DPERF_TEST endif -LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -O3 -fno-stack-protector -funroll-loops -DNDEBUG -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_VID_CONTEXT -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_GLSL -DWANT_MINIZ -DHAVE_ZLIB -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_PERFORMANCE_MODE -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -std=gnu99 -I../../../deps/miniz +LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -O3 -fno-stack-protector -funroll-loops -DNDEBUG -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_VID_CONTEXT -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_GLSL -DHAVE_RMENU -DHAVE_RGUI -DHAVE_SCREENSHOTS -DWANT_MINIZ -DHAVE_ZLIB -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_PERFORMANCE_MODE -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -std=gnu99 -I../../../deps/miniz LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -landroid -lEGL -lGLESv2 $(LOGGER_LDLIBS) -ldl diff --git a/gfx/gl.c b/gfx/gl.c index 004f77b955..0f38a72048 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1257,13 +1257,14 @@ static void gl_pbo_async_readback(void *data) static inline void gl_draw_rgui(void *data) { static const GLfloat white_color_rgui[16] = { - 1.0f, 1.0f, 1.0f, 0.25f, - 1.0f, 1.0f, 1.0f, 0.25f, - 1.0f, 1.0f, 1.0f, 0.25f, - 1.0f, 1.0f, 1.0f, 0.25f, + 1.0f, 1.0f, 1.0f, 0.5f, + 1.0f, 1.0f, 1.0f, 0.5f, + 1.0f, 1.0f, 1.0f, 0.5f, + 1.0f, 1.0f, 1.0f, 0.5f, }; gl_t *gl = (gl_t*)data; + gl->coords.color = white_color_rgui; glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); @@ -1274,9 +1275,9 @@ static inline void gl_draw_rgui(void *data) GL_UNSIGNED_SHORT_5_6_5, gl->menu_data); gl_shader_use_func(gl, 0); + gl_shader_set_coords_func(gl, &gl->coords, &gl->mvp_no_rot); glEnable(GL_BLEND); - gl->coords.color = white_color_rgui; glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glDisable(GL_BLEND); From 6778267016c4d550c3525dc205b037234fb4f762 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Thu, 28 Feb 2013 11:04:11 -0500 Subject: [PATCH 05/84] change some logs around detect menu key from any "controller" --- android/native/jni/input_autodetect.c | 5 +---- gfx/gl.c | 11 ++++------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index a762eb7fb6..63df59ed9b 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -142,10 +142,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } } - if (port == 0) - { - keycode_lut[AKEYCODE_MENU] |= ((RARCH_RMENU_TOGGLE + 1) << shift); - } + keycode_lut[AKEYCODE_MENU] |= ((RARCH_RMENU_TOGGLE + 1) << shift); if (g_settings.input.autodetect_enable) { diff --git a/gfx/gl.c b/gfx/gl.c index 0f38a72048..f6a1b878ee 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1257,10 +1257,10 @@ static void gl_pbo_async_readback(void *data) static inline void gl_draw_rgui(void *data) { static const GLfloat white_color_rgui[16] = { - 1.0f, 1.0f, 1.0f, 0.5f, - 1.0f, 1.0f, 1.0f, 0.5f, - 1.0f, 1.0f, 1.0f, 0.5f, - 1.0f, 1.0f, 1.0f, 0.5f, + 1.0f, 1.0f, 1.0f, 0.75f, + 1.0f, 1.0f, 1.0f, 0.75f, + 1.0f, 1.0f, 1.0f, 0.75f, + 1.0f, 1.0f, 1.0f, 0.75f, }; gl_t *gl = (gl_t*)data; @@ -1361,10 +1361,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei #ifdef HAVE_RGUI if(lifecycle_mode_state & (1ULL << MODE_MENU_DRAW)) - { - RARCH_LOG("rgui draw\n"); gl_draw_rgui(gl); - } #endif #ifdef FPS_COUNTER From 07b9598be436b6adc27e90cb262d18a097611cc8 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 2 Mar 2013 17:46:36 +0100 Subject: [PATCH 06/84] Set texture filtering for RGUI texture. --- gfx/gl.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index f6a1b878ee..223d7efc47 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1076,8 +1076,13 @@ static void gl_init_textures(void *data, const video_info_t *video) glGenTextures(TEXTURES, gl->texture); -#ifdef RGUI +#ifdef HAVE_RGUI glGenTextures(1, &gl->rgui_texture); + glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); #endif for (unsigned i = 0; i < TEXTURES; i++) @@ -1189,8 +1194,13 @@ static void gl_init_textures(void *data, const video_info_t *video) glGenTextures(TEXTURES, gl->texture); -#ifdef RGUI +#ifdef HAVE_RGUI glGenTextures(1, &gl->rgui_texture); + glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); #endif for (unsigned i = 0; i < TEXTURES; i++) @@ -1253,7 +1263,6 @@ static void gl_pbo_async_readback(void *data) #endif #ifdef HAVE_RGUI - static inline void gl_draw_rgui(void *data) { static const GLfloat white_color_rgui[16] = { @@ -1264,7 +1273,8 @@ static inline void gl_draw_rgui(void *data) }; gl_t *gl = (gl_t*)data; - gl->coords.color = white_color_rgui; + gl->coords.tex_coord = tex_coords; + gl->coords.color = white_color_rgui; glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); @@ -1281,9 +1291,9 @@ static inline void gl_draw_rgui(void *data) glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glDisable(GL_BLEND); - gl->coords.color = white_color; + gl->coords.tex_coord = gl->tex_coords; + gl->coords.color = white_color; } - #endif static bool gl_frame(void *data, const void *frame, unsigned width, unsigned height, unsigned pitch, const char *msg) @@ -1360,7 +1370,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei gl_set_prev_texture(gl, &tex_info); #ifdef HAVE_RGUI - if(lifecycle_mode_state & (1ULL << MODE_MENU_DRAW)) + if (lifecycle_mode_state & (1ULL << MODE_MENU_DRAW)) gl_draw_rgui(gl); #endif @@ -1439,7 +1449,7 @@ static void gl_free(void *data) glDeleteTextures(TEXTURES, gl->texture); -#ifdef RGUI +#ifdef HAVE_RGUI glDeleteTextures(1, &gl->rgui_texture); #endif @@ -1565,7 +1575,7 @@ static inline void gl_reinit_textures(void *data, const video_info_t *video) glBindTexture(GL_TEXTURE_2D, 0); glDeleteTextures(TEXTURES, gl->texture); -#ifdef RGUI +#ifdef HAVE_RGUI glDeleteTextures(1, &gl->rgui_texture); #endif From a4b33a9a95fbbe1e198c87e9aacab43ad7fdeee2 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Sun, 3 Mar 2013 15:45:29 -0500 Subject: [PATCH 07/84] get touch navigation working fix colors for GL make seperate option list for non-consoles --- frontend/menu/rgui.c | 28 ++++++++++++++++++++++++++-- frontend/menu/rmenu_generic.c | 32 ++++++++++++++++++++++++++++++++ gfx/gl.c | 13 ++----------- 3 files changed, 60 insertions(+), 13 deletions(-) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index e7f315f2f5..f69a356adc 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -261,7 +261,11 @@ static uint16_t gray_filler(unsigned x, unsigned y) x >>= 1; y >>= 1; unsigned col = ((x + y) & 1) + 1; +#ifdef GEKKO return (6 << 12) | (col << 8) | (col << 4) | (col << 0); +#else + return (col << 13) | (col << 9) | (col << 5) | (12 << 0); +#endif } static uint16_t green_filler(unsigned x, unsigned y) @@ -269,7 +273,11 @@ static uint16_t green_filler(unsigned x, unsigned y) x >>= 1; y >>= 1; unsigned col = ((x + y) & 1) + 1; +#ifdef GEKKO return (6 << 12) | (col << 8) | (col << 5) | (col << 0); +#else + return (col << 13) | (col << 10) | (col << 5) | (12 << 0); +#endif } static void fill_rect(uint16_t *buf, unsigned pitch, @@ -297,7 +305,11 @@ static void blit_line(rgui_handle_t *rgui, if (col) rgui->frame_buf[(y + j) * (rgui->frame_buf_pitch >> 1) + (x + i)] = green ? +#ifdef GEKKO (3 << 0) | (10 << 4) | (3 << 8) | (7 << 12) : 0x7FFF; +#else + (15 << 0) | (7 << 4) | (15 << 8) | (7 << 12) : 0xFFFF; +#endif } } @@ -927,6 +939,7 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) { rgui_list_clear(rgui->folder_buf); +#ifdef RARCH_CONSOLE RGUI_MENU_ITEM("Rewind", RGUI_SETTINGS_REWIND_ENABLE); RGUI_MENU_ITEM("Rewind granularity", RGUI_SETTINGS_REWIND_GRANULARITY); if (g_extern.main_is_init) @@ -956,15 +969,26 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) #ifdef HAVE_LIBRETRO_MANAGEMENT RGUI_MENU_ITEM("Core", RGUI_SETTINGS_CORE); #endif -#ifdef RARCH_CONSOLE RGUI_MENU_ITEM("Controller #1 Config", RGUI_SETTINGS_CONTROLLER_1); RGUI_MENU_ITEM("Controller #2 Config", RGUI_SETTINGS_CONTROLLER_2); RGUI_MENU_ITEM("Controller #3 Config", RGUI_SETTINGS_CONTROLLER_3); RGUI_MENU_ITEM("Controller #4 Config", RGUI_SETTINGS_CONTROLLER_4); -#endif RGUI_MENU_ITEM("Debug Text", RGUI_SETTINGS_DEBUG_TEXT); RGUI_MENU_ITEM("Restart RetroArch", RGUI_SETTINGS_RESTART_EMULATOR); RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); +#else + RGUI_MENU_ITEM("Save State", RGUI_SETTINGS_SAVESTATE_SAVE); + RGUI_MENU_ITEM("Load State", RGUI_SETTINGS_SAVESTATE_LOAD); + RGUI_MENU_ITEM("Take Screenshot", RGUI_SETTINGS_SCREENSHOT); + RGUI_MENU_ITEM("Restart Game", RGUI_SETTINGS_RESTART_GAME); + RGUI_MENU_ITEM("Hardware filtering", RGUI_SETTINGS_VIDEO_FILTER); + RGUI_MENU_ITEM("Aspect Ratio", RGUI_SETTINGS_VIDEO_ASPECT_RATIO); + RGUI_MENU_ITEM("Rotation", RGUI_SETTINGS_VIDEO_ROTATION); + RGUI_MENU_ITEM("Mute Audio", RGUI_SETTINGS_AUDIO_MUTE); + RGUI_MENU_ITEM("Audio Control Rate", RGUI_SETTINGS_AUDIO_CONTROL_RATE); + RGUI_MENU_ITEM("Audio Resampler", RGUI_SETTINGS_RESAMPLER_TYPE); + RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); +#endif } static void rgui_settings_controller_populate_entries(rgui_handle_t *rgui) diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c index 6950001143..6d93d712d7 100644 --- a/frontend/menu/rmenu_generic.c +++ b/frontend/menu/rmenu_generic.c @@ -140,8 +140,40 @@ bool rmenu_iterate(void) driver.input->poll(NULL); +#ifdef HAVE_OVERLAY + if (driver.overlay) + { + driver.overlay_state = 0; + + unsigned device = input_overlay_full_screen(driver.overlay) ? + RARCH_DEVICE_POINTER_SCREEN : RETRO_DEVICE_POINTER; + + bool polled = false; + for (unsigned i = 0; + input_input_state_func(NULL, 0, device, i, RETRO_DEVICE_ID_POINTER_PRESSED); + i++) + { + int16_t x = input_input_state_func(NULL, 0, + device, i, RETRO_DEVICE_ID_POINTER_X); + int16_t y = input_input_state_func(NULL, 0, + device, i, RETRO_DEVICE_ID_POINTER_Y); + + driver.overlay_state |= input_overlay_poll(driver.overlay, x, y); + polled = true; + } + + if (!polled) + input_overlay_poll_clear(driver.overlay); + } +#endif + for (unsigned i = 0; i < 16; i++) + { input_state |= driver.input->input_state(NULL, binds, 0, RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; +#ifdef HAVE_OVERLAY + input_state |= driver.overlay_state & (1ULL << i) ? (1ULL << i) : 0; +#endif + } trigger_state = input_state & ~old_input_state; bool do_held = input_state & ((1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) | (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT)); diff --git a/gfx/gl.c b/gfx/gl.c index 223d7efc47..814e648cc7 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1265,24 +1265,16 @@ static void gl_pbo_async_readback(void *data) #ifdef HAVE_RGUI static inline void gl_draw_rgui(void *data) { - static const GLfloat white_color_rgui[16] = { - 1.0f, 1.0f, 1.0f, 0.75f, - 1.0f, 1.0f, 1.0f, 0.75f, - 1.0f, 1.0f, 1.0f, 0.75f, - 1.0f, 1.0f, 1.0f, 0.75f, - }; - gl_t *gl = (gl_t*)data; gl->coords.tex_coord = tex_coords; - gl->coords.color = white_color_rgui; glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); glPixelStorei(GL_UNPACK_ALIGNMENT, get_alignment(RGUI_WIDTH * 2)); // RGUI is always packed so pitch = width * bpp glTexImage2D(GL_TEXTURE_2D, - 0, GL_RGB, RGUI_WIDTH, RGUI_HEIGHT, 0, GL_RGB, - GL_UNSIGNED_SHORT_5_6_5, gl->menu_data); + 0, GL_RGBA, RGUI_WIDTH, RGUI_HEIGHT, 0, GL_RGBA, + GL_UNSIGNED_SHORT_4_4_4_4, gl->menu_data); gl_shader_use_func(gl, 0); gl_shader_set_coords_func(gl, &gl->coords, &gl->mvp_no_rot); @@ -1292,7 +1284,6 @@ static inline void gl_draw_rgui(void *data) glDisable(GL_BLEND); gl->coords.tex_coord = gl->tex_coords; - gl->coords.color = white_color; } #endif From 7eee31d651ddc8dcf008442c1c5e6102d50d5121 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Sun, 3 Mar 2013 16:52:37 -0500 Subject: [PATCH 08/84] allow orientation changes in RGUI allow closing RGUI menu, need to make the key binds sane --- frontend/frontend_android.c | 4 +++- frontend/menu/rmenu_generic.c | 21 ++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index a7213e9749..e16360cf67 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -371,7 +371,9 @@ begin_loop: else if(g_extern.lifecycle_mode_state & (1ULL << MODE_MENU)) { g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_PREINIT); - while(rmenu_iterate()); + while((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? + android_run_events(android_app) : + rmenu_iterate()); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU); } else diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c index 6d93d712d7..747fb957a8 100644 --- a/frontend/menu/rmenu_generic.c +++ b/frontend/menu/rmenu_generic.c @@ -131,13 +131,6 @@ bool rmenu_iterate(void) static bool initial_held = true; static bool first_held = false; - g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); - driver.video->apply_state_changes(); - - g_extern.frame_count++; - - uint16_t input_state = 0; - driver.input->poll(NULL); #ifdef HAVE_OVERLAY @@ -167,6 +160,20 @@ bool rmenu_iterate(void) } #endif + if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + goto deinit; + } + + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); + + driver.video->apply_state_changes(); + + g_extern.frame_count++; + + uint16_t input_state = 0; + for (unsigned i = 0; i < 16; i++) { input_state |= driver.input->input_state(NULL, binds, 0, RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; From e1d02ba837501db3cd2d5fcf26639fd47e784ddf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 11:18:22 +0100 Subject: [PATCH 09/84] (Android) Make function pointer engine_handle_dpad - use AMotionEven_getAxisValue if we can use it (on Android 4.0 and up) --- android/native/jni/input_android.c | 101 ++++++++++++++++++++++------- 1 file changed, 78 insertions(+), 23 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 91943a4315..7a7dbfe88e 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -54,8 +54,10 @@ enum AXIS_RZ = 14 }; -extern float AMotionEvent_getAxisValue( - const AInputEvent* motion_event, int32_t axis, size_t pointer_index); +void (*engine_handle_dpad)(AInputEvent*, size_t, int, char*, size_t, int, bool); + +extern float AMotionEvent_getAxisValue(const AInputEvent* motion_event, + int32_t axis, size_t pointer_index); static typeof(AMotionEvent_getAxisValue) *p_AMotionEvent_getAxisValue; @@ -195,6 +197,54 @@ void engine_handle_cmd(void) } } +static void engine_handle_dpad_default(AInputEvent *event, + size_t motion_pointer, int state_id, char *msg, size_t msg_sizeof, + int source, bool debug_enable) +{ + uint64_t *state_cur = &state[state_id]; + float dzone_min = dpad_state[state_id].dzone_min; + float dzone_max = dpad_state[state_id].dzone_max; + float x = AMotionEvent_getX(event, motion_pointer); + float y = AMotionEvent_getY(event, motion_pointer); + + *state_cur &= ~((1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | + (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | + (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN)); + *state_cur |= PRESSED_LEFT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0; + *state_cur |= PRESSED_RIGHT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0; + *state_cur |= PRESSED_UP(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) : 0; + *state_cur |= PRESSED_DOWN(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0; + + if (debug_enable) + snprintf(msg, msg_sizeof, "Pad %d : x = %.2f, y = %.2f, src %d.\n", + state_id, x, y, source); +} + +static void engine_handle_dpad_getaxisvalue(AInputEvent *event, + size_t motion_pointer, int state_id, char *msg, size_t msg_sizeof, int source, + bool debug_enable) +{ + uint64_t *state_cur = &state[state_id]; + float dzone_min = dpad_state[state_id].dzone_min; + float dzone_max = dpad_state[state_id].dzone_max; + float x = AMotionEvent_getAxisValue(event, AXIS_X, motion_pointer); + float y = AMotionEvent_getAxisValue(event, AXIS_Y, motion_pointer); + float z = AMotionEvent_getAxisValue(event, AXIS_Z, motion_pointer); + float rz = AMotionEvent_getAxisValue(event, AXIS_RZ, motion_pointer); + + *state_cur &= ~((1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | + (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | + (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN)); + *state_cur |= PRESSED_LEFT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0; + *state_cur |= PRESSED_RIGHT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0; + *state_cur |= PRESSED_UP(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) : 0; + *state_cur |= PRESSED_DOWN(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0; + + if (debug_enable) + snprintf(msg, msg_sizeof, "Pad %d : x %.2f, y %.2f, z %.2f, rz %.2f, src %d.\n", + state_id, x, y, z, rz, source); +} + static inline void engine_handle_input(void) { bool debug_enable = g_settings.input.debug_enable; @@ -278,8 +328,6 @@ static inline void engine_handle_input(void) if (type_event == AINPUT_EVENT_TYPE_MOTION) { - float x = 0.0f; - float y = 0.0f; action = AMotionEvent_getAction(event); size_t motion_pointer = action >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; action &= AMOTION_EVENT_ACTION_MASK; @@ -287,24 +335,12 @@ static inline void engine_handle_input(void) if (source & ~(AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE)) { if (g_settings.input.dpad_emulation[state_id] != DPAD_EMULATION_NONE) - { - uint64_t *state_cur = &state[state_id]; - float dzone_min = dpad_state[state_id].dzone_min; - float dzone_max = dpad_state[state_id].dzone_max; - x = AMotionEvent_getX(event, motion_pointer); - y = AMotionEvent_getY(event, motion_pointer); - //float axis = AMotionEvent_getAxisValue(event, AXIS_Z, motion_pointer); - //RARCH_LOG("axis: %.2f\n", axis); - *state_cur &= ~((1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) | - (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN)); - *state_cur |= PRESSED_LEFT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0; - *state_cur |= PRESSED_RIGHT(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT) : 0; - *state_cur |= PRESSED_UP(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_UP) : 0; - *state_cur |= PRESSED_DOWN(x, y) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) : 0; - } + engine_handle_dpad(event, motion_pointer, state_id, msg, sizeof(msg), source, debug_enable); } else { + float x = 0.0f; + float y = 0.0f; bool keyup = (action == AMOTION_EVENT_ACTION_UP || action == AMOTION_EVENT_ACTION_CANCEL || action == AMOTION_EVENT_ACTION_POINTER_UP) || (source == AINPUT_SOURCE_MOUSE && action != AMOTION_EVENT_ACTION_DOWN); @@ -330,10 +366,10 @@ static inline void engine_handle_input(void) pointer_count = max(pointer_count, motion_pointer + 1); } } + if (debug_enable) + snprintf(msg, sizeof(msg), "Pad %d : x = %.2f, y = %.2f, src %d.\n", state_id, x, y, source); } - if (debug_enable) - snprintf(msg, sizeof(msg), "Pad %d : x = %.2f, y = %.2f, src %d.\n", state_id, x, y, source); } else if (type_event == AINPUT_EVENT_TYPE_KEY) { @@ -422,10 +458,29 @@ static void *android_input_init(void) dpad_state[i].dzone_min = -0.99f; dpad_state[i].dzone_max = 0.99f; + g_settings.input.dpad_emulation[i] = DPAD_EMULATION_LSTICK; } - g_settings.input.dpad_emulation[0] = DPAD_EMULATION_LSTICK; - //p_AMotionEvent_getAxisValue = dlsym(RTLD_DEFAULT, "AMotionEvent_getAxisValue"); + if ((dlopen("/system/lib/libandroid.so", RTLD_LOCAL | RTLD_LAZY)) == 0) + { + RARCH_WARN("Unable to open libandroid.so\n"); + return (void*)-1; + } + else + { + p_AMotionEvent_getAxisValue = dlsym(RTLD_DEFAULT, "AMotionEvent_getAxisValue"); + + if (p_AMotionEvent_getAxisValue != NULL) + { + RARCH_LOG("Setting engine_handle_dpad to 'Get Axis Value' (for reading extra analog sticks)"); + engine_handle_dpad = engine_handle_dpad_getaxisvalue; + } + else + { + RARCH_LOG("Setting engine_handle_dpad to 'Default'"); + engine_handle_dpad = engine_handle_dpad_default; + } + } return (void*)-1; } From ab6135c9d5a23e4efc1c782a85f40d66fc7f22f8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 11:52:58 +0100 Subject: [PATCH 10/84] (Android) Define HAVE_ASYNC_POLL for Android (will likely be used for other mobile platforms as well) --- android/native/jni/Android.mk | 2 +- retroarch.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/android/native/jni/Android.mk b/android/native/jni/Android.mk index 1039768f1c..a5d2de13f4 100644 --- a/android/native/jni/Android.mk +++ b/android/native/jni/Android.mk @@ -51,7 +51,7 @@ ifeq ($(PERF_TEST), 1) LOCAL_CFLAGS += -DPERF_TEST endif -LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -O3 -fno-stack-protector -funroll-loops -DNDEBUG -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_VID_CONTEXT -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_GLSL -DWANT_MINIZ -DHAVE_ZLIB -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_PERFORMANCE_MODE -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -std=gnu99 -I../../../deps/miniz +LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -O3 -fno-stack-protector -funroll-loops -DNDEBUG -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_ASYNC_POLL -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_VID_CONTEXT -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_GLSL -DWANT_MINIZ -DHAVE_ZLIB -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_PERFORMANCE_MODE -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -std=gnu99 -I../../../deps/miniz LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -landroid -lEGL -lGLESv2 $(LOGGER_LDLIBS) -ldl diff --git a/retroarch.c b/retroarch.c index dc3345e5d2..60c687a10b 100644 --- a/retroarch.c +++ b/retroarch.c @@ -496,7 +496,9 @@ static inline void input_poll_overlay(void) static void input_poll(void) { +#ifndef HAVE_ASYNC_POLL input_poll_func(); +#endif #ifdef HAVE_OVERLAY if (driver.overlay) // Poll overlay state @@ -1953,9 +1955,11 @@ static bool check_fullscreen(void) uninit_drivers(); init_drivers(); +#ifndef HAVE_ASYNC_POLL // Poll input to avoid possibly stale data to corrupt things. if (driver.input) input_poll_func(); +#endif } was_pressed = pressed; @@ -2987,7 +2991,9 @@ bool rarch_main_idle_iterate(void) return false; do_state_checks(); +#ifndef HAVE_ASYNC_POLL input_poll(); +#endif rarch_sleep(10); return true; } From 42fe25b3b7baac4c9e9061eebdaadedb1d308ed7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 11:57:48 +0100 Subject: [PATCH 11/84] (Android) Drop this ifndef - to allow input overlay poll to still happen --- retroarch.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/retroarch.c b/retroarch.c index 60c687a10b..3a10090948 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2991,9 +2991,7 @@ bool rarch_main_idle_iterate(void) return false; do_state_checks(); -#ifndef HAVE_ASYNC_POLL input_poll(); -#endif rarch_sleep(10); return true; } From 7b96cf8db3d4b18cc7a038bc1525b65f1bde9d18 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 13:29:04 +0100 Subject: [PATCH 12/84] (Android) Blank in input_poll_func() for HAVE_ASYNC_POLL --- driver_funcs.h | 4 ++++ retroarch.c | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/driver_funcs.h b/driver_funcs.h index c2cadb3526..3d5521f588 100644 --- a/driver_funcs.h +++ b/driver_funcs.h @@ -45,7 +45,11 @@ #define video_overlay_interface_func(iface) driver.video->overlay_interface(driver.video_data, iface) #define video_free_func() driver.video->free(driver.video_data) #define input_init_func() driver.input->init() +#ifdef HAVE_ASYNC_POLL +#define input_poll_func() +#else #define input_poll_func() driver.input->poll(driver.input_data) +#endif #define input_input_state_func(retro_keybinds, port, device, index, id) \ driver.input->input_state(driver.input_data, retro_keybinds, port, device, index, id) #define input_free_func() driver.input->free(driver.input_data) diff --git a/retroarch.c b/retroarch.c index 3a10090948..dc3345e5d2 100644 --- a/retroarch.c +++ b/retroarch.c @@ -496,9 +496,7 @@ static inline void input_poll_overlay(void) static void input_poll(void) { -#ifndef HAVE_ASYNC_POLL input_poll_func(); -#endif #ifdef HAVE_OVERLAY if (driver.overlay) // Poll overlay state @@ -1955,11 +1953,9 @@ static bool check_fullscreen(void) uninit_drivers(); init_drivers(); -#ifndef HAVE_ASYNC_POLL // Poll input to avoid possibly stale data to corrupt things. if (driver.input) input_poll_func(); -#endif } was_pressed = pressed; From 1124ac849410d9899bc73c5038b75b8b3c950333 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 14:12:04 +0100 Subject: [PATCH 13/84] Make android_handle_events an implementation of input_poll function - rely on HAVE_ASYNC_POLL whether or not input_async_poll_func or input_poll_func is 'blanked out' --- android/native/jni/input_android.c | 44 ++++++++---------------------- driver_funcs.h | 3 ++ frontend/frontend_android.c | 2 +- frontend/frontend_android.h | 1 - 4 files changed, 15 insertions(+), 35 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 7a7dbfe88e..608f7db316 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -83,8 +83,6 @@ void engine_handle_cmd(void) switch (cmd) { case APP_CMD_INPUT_CHANGED: - RARCH_LOG("APP_CMD_INPUT_CHANGED\n"); - pthread_mutex_lock(&android_app->mutex); if (android_app->inputQueue != NULL) @@ -106,8 +104,6 @@ void engine_handle_cmd(void) break; case APP_CMD_INIT_WINDOW: - RARCH_LOG("engine_handle_cmd: APP_CMD_INIT_WINDOW.\n"); - pthread_mutex_lock(&android_app->mutex); android_app->window = android_app->pendingWindow; pthread_cond_broadcast(&android_app->cond); @@ -118,8 +114,6 @@ void engine_handle_cmd(void) break; case APP_CMD_RESUME: - RARCH_LOG("engine_handle_cmd: APP_CMD_RESUME.\n"); - pthread_mutex_lock(&android_app->mutex); android_app->activityState = cmd; pthread_cond_broadcast(&android_app->cond); @@ -127,8 +121,6 @@ void engine_handle_cmd(void) break; case APP_CMD_START: - RARCH_LOG("engine_handle_cmd: APP_CMD_START.\n"); - pthread_mutex_lock(&android_app->mutex); android_app->activityState = cmd; pthread_cond_broadcast(&android_app->cond); @@ -136,8 +128,6 @@ void engine_handle_cmd(void) break; case APP_CMD_PAUSE: - RARCH_LOG("engine_handle_cmd: APP_CMD_PAUSE.\n"); - pthread_mutex_lock(&android_app->mutex); android_app->activityState = cmd; pthread_cond_broadcast(&android_app->cond); @@ -151,8 +141,6 @@ void engine_handle_cmd(void) break; case APP_CMD_STOP: - RARCH_LOG("engine_handle_cmd: APP_CMD_STOP.\n"); - pthread_mutex_lock(&android_app->mutex); android_app->activityState = cmd; pthread_cond_broadcast(&android_app->cond); @@ -160,12 +148,8 @@ void engine_handle_cmd(void) break; case APP_CMD_CONFIG_CHANGED: - RARCH_LOG("engine_handle_cmd: APP_CMD_CONFIG_CHANGED.\n"); break; - case APP_CMD_TERM_WINDOW: - RARCH_LOG("engine_handle_cmd: APP_CMD_TERM_WINDOW.\n"); - pthread_mutex_lock(&android_app->mutex); /* The window is being hidden or closed, clean it up. */ @@ -181,17 +165,13 @@ void engine_handle_cmd(void) break; case APP_CMD_GAINED_FOCUS: - RARCH_LOG("engine_handle_cmd: APP_CMD_GAINED_FOCUS.\n"); - g_extern.lifecycle_state &= ~(1ULL << RARCH_PAUSE_TOGGLE); break; case APP_CMD_LOST_FOCUS: - RARCH_LOG("engine_handle_cmd: APP_CMD_LOST_FOCUS.\n"); break; case APP_CMD_DESTROY: - RARCH_LOG("engine_handle_cmd: APP_CMD_DESTROY\n"); g_extern.lifecycle_state |= (1ULL << RARCH_QUIT_KEY); break; } @@ -410,19 +390,6 @@ static inline void engine_handle_input(void) } } -// Handle all events. If our activity is in pause state, block until we're unpaused. -void android_handle_events(void) -{ - int ident; - while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? -1 : 0, - NULL, NULL, NULL)) >= 0) - { - if (ident == LOOPER_ID_MAIN) - engine_handle_cmd(); - else if (!input_key_pressed_func(RARCH_PAUSE_TOGGLE)) - engine_handle_input(); - } -} static void *android_input_init(void) { @@ -485,8 +452,19 @@ static void *android_input_init(void) return (void*)-1; } +// Handle all events. If our activity is in pause state, block until we're unpaused. + static void android_input_poll(void *data) { + int ident; + while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? -1 : 0, + NULL, NULL, NULL)) >= 0) + { + if (ident == LOOPER_ID_MAIN) + engine_handle_cmd(); + else if (!input_key_pressed_func(RARCH_PAUSE_TOGGLE)) + engine_handle_input(); + } } static int16_t android_input_state(void *data, const struct retro_keybind **binds, unsigned port, unsigned device, unsigned index, unsigned id) diff --git a/driver_funcs.h b/driver_funcs.h index 3d5521f588..076c3585aa 100644 --- a/driver_funcs.h +++ b/driver_funcs.h @@ -46,9 +46,11 @@ #define video_free_func() driver.video->free(driver.video_data) #define input_init_func() driver.input->init() #ifdef HAVE_ASYNC_POLL +#define input_async_poll_func() driver.input->poll(driver.input_data) #define input_poll_func() #else #define input_poll_func() driver.input->poll(driver.input_data) +#define input_async_poll_func() #endif #define input_input_state_func(retro_keybinds, port, device, index, id) \ driver.input->input_state(driver.input_data, retro_keybinds, port, device, index, id) @@ -153,6 +155,7 @@ static inline bool input_key_pressed_func(int key) #define gfx_ctx_window_has_focus() (true) #define input_init_func() MAKENAME_INPUT(_input_init)() +#define input_async_poll_func() #define input_poll_func() MAKENAME_INPUT(_input_poll)(driver.input_data) #define input_input_state_func(retro_keybinds, port, device, index, id) \ MAKENAME_INPUT(_input_state)(driver.input_data, retro_keybinds, port, device, index, id) diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index 6c7e39ba12..1747a0dc16 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -219,7 +219,7 @@ static void *android_app_entry(void *data) // Main loop do { - android_handle_events(); + input_async_poll_func(); } while (rarch_main_iterate()); RARCH_LOG("RetroArch stopped.\n"); diff --git a/frontend/frontend_android.h b/frontend/frontend_android.h index 71d87e237c..6592f5b85d 100644 --- a/frontend/frontend_android.h +++ b/frontend/frontend_android.h @@ -156,7 +156,6 @@ enum { int8_t android_app_read_cmd (void *data); extern void engine_app_read_cmd(void); extern void engine_handle_cmd(void); -extern void android_handle_events(void); extern struct android_app *g_android; From acffc05494ebc0cc6786cd61f7a1a45776cf0550 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 14:15:47 +0100 Subject: [PATCH 14/84] (Android) Make HAVE_ASYNC_POLL optional --- frontend/frontend_android.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index 1747a0dc16..24476b9ddf 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -219,7 +219,9 @@ static void *android_app_entry(void *data) // Main loop do { +#ifdef HAVE_ASYNC_POLL input_async_poll_func(); +#endif } while (rarch_main_iterate()); RARCH_LOG("RetroArch stopped.\n"); From b4490ae4966d847b0907484a193476b141ce7c89 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 14:21:37 +0100 Subject: [PATCH 15/84] (Android) Don't define HAVE_ASYNC_POLL for now --- android/native/jni/Android.mk | 2 +- frontend/frontend_android.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/android/native/jni/Android.mk b/android/native/jni/Android.mk index a5d2de13f4..1039768f1c 100644 --- a/android/native/jni/Android.mk +++ b/android/native/jni/Android.mk @@ -51,7 +51,7 @@ ifeq ($(PERF_TEST), 1) LOCAL_CFLAGS += -DPERF_TEST endif -LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -O3 -fno-stack-protector -funroll-loops -DNDEBUG -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_ASYNC_POLL -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_VID_CONTEXT -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_GLSL -DWANT_MINIZ -DHAVE_ZLIB -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_PERFORMANCE_MODE -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -std=gnu99 -I../../../deps/miniz +LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -O3 -fno-stack-protector -funroll-loops -DNDEBUG -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_VID_CONTEXT -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_GLSL -DWANT_MINIZ -DHAVE_ZLIB -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_PERFORMANCE_MODE -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -std=gnu99 -I../../../deps/miniz LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -landroid -lEGL -lGLESv2 $(LOGGER_LDLIBS) -ldl diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index 24476b9ddf..1747a0dc16 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -219,9 +219,7 @@ static void *android_app_entry(void *data) // Main loop do { -#ifdef HAVE_ASYNC_POLL input_async_poll_func(); -#endif } while (rarch_main_iterate()); RARCH_LOG("RetroArch stopped.\n"); From 2e68c61ea6b636ab56add5e9c6ef22a35dc6ad88 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 15:52:09 +0100 Subject: [PATCH 16/84] (Android) Make engine_handle_input a part of android_input_poll --- android/native/jni/input_android.c | 330 ++++++++++++++--------------- 1 file changed, 163 insertions(+), 167 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 608f7db316..c8882747f9 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -225,172 +225,6 @@ static void engine_handle_dpad_getaxisvalue(AInputEvent *event, state_id, x, y, z, rz, source); } -static inline void engine_handle_input(void) -{ - bool debug_enable = g_settings.input.debug_enable; - struct android_app *android_app = (struct android_app*)g_android; - uint64_t *lifecycle_state = &g_extern.lifecycle_state; - AInputEvent* event = NULL; - - *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS)); - - // Read all pending events. - while (AInputQueue_hasEvents(android_app->inputQueue)) - { - if (AInputQueue_getEvent(android_app->inputQueue, &event) >= 0) - { - bool long_msg_enable = false; - int32_t handled = 1; - int action = 0; - char msg[128]; - int source, id, keycode, type_event, state_id; - //int predispatched; - - msg[0] = 0; - //predispatched =AInputQueue_preDispatchEvent(android_app->inputQueue,event); - - //if (predispatched) - //continue; - - source = AInputEvent_getSource(event); - id = AInputEvent_getDeviceId(event); - if (id == zeus_second_id) - id = zeus_id; - keycode = AKeyEvent_getKeyCode(event); - - type_event = AInputEvent_getType(event); - state_id = -1; - - if (source & (AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_TOUCHPAD)) - state_id = 0; // touch overlay is always player 1 - else - { - for (unsigned i = 0; i < pads_connected; i++) - if (state_device_ids[i] == id) - state_id = i; - } - - if (state_id < 0) - { - state_id = pads_connected; - state_device_ids[pads_connected++] = id; - - input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source); - long_msg_enable = true; - } - - if (keycode == AKEYCODE_BACK) - { - uint8_t unpacked = (keycode_lut[AKEYCODE_BACK] >> ((state_id+1) << 3)) - 1; - uint64_t input_state = (1ULL << unpacked); - - if (g_extern.lifecycle_mode_state & (1ULL << MODE_INPUT_XPERIA_PLAY_HACK)) - { - int meta = AKeyEvent_getMetaState(event); - if (!(meta & AMETA_ALT_ON)) - { - *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); - AInputQueue_finishEvent(android_app->inputQueue, event, handled); - break; - } - } - else if (type_event == AINPUT_EVENT_TYPE_KEY && input_state < (1ULL << RARCH_FIRST_META_KEY) - && input_state > 0) - { - } - else - { - *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); - AInputQueue_finishEvent(android_app->inputQueue, event, handled); - break; - } - } - - if (type_event == AINPUT_EVENT_TYPE_MOTION) - { - action = AMotionEvent_getAction(event); - size_t motion_pointer = action >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; - action &= AMOTION_EVENT_ACTION_MASK; - - if (source & ~(AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE)) - { - if (g_settings.input.dpad_emulation[state_id] != DPAD_EMULATION_NONE) - engine_handle_dpad(event, motion_pointer, state_id, msg, sizeof(msg), source, debug_enable); - } - else - { - float x = 0.0f; - float y = 0.0f; - bool keyup = (action == AMOTION_EVENT_ACTION_UP || - action == AMOTION_EVENT_ACTION_CANCEL || action == AMOTION_EVENT_ACTION_POINTER_UP) || - (source == AINPUT_SOURCE_MOUSE && action != AMOTION_EVENT_ACTION_DOWN); - - if (keyup && motion_pointer < MAX_TOUCH) - { - memmove(pointer + motion_pointer, pointer + motion_pointer + 1, (MAX_TOUCH - motion_pointer - 1) * sizeof(struct input_pointer)); - if (pointer_count > 0) - pointer_count--; - } - else - { - int pointer_max = min(AMotionEvent_getPointerCount(event), MAX_TOUCH); - for (motion_pointer = 0; motion_pointer < pointer_max; motion_pointer++) - { - x = AMotionEvent_getX(event, motion_pointer); - y = AMotionEvent_getY(event, motion_pointer); - - input_translate_coord_viewport(x, y, - &pointer[motion_pointer].x, &pointer[motion_pointer].y, - &pointer[motion_pointer].full_x, &pointer[motion_pointer].full_y); - - pointer_count = max(pointer_count, motion_pointer + 1); - } - } - if (debug_enable) - snprintf(msg, sizeof(msg), "Pad %d : x = %.2f, y = %.2f, src %d.\n", state_id, x, y, source); - } - - } - else if (type_event == AINPUT_EVENT_TYPE_KEY) - { - if (debug_enable) - snprintf(msg, sizeof(msg), "Pad %d : %d, ac = %d, src = %d.\n", state_id, keycode, action, source); - - /* Hack - we have to decrease the unpacked value by 1 - * because we 'added' 1 to each entry in the LUT - - * RETRO_DEVICE_ID_JOYPAD_B is 0 - */ - uint8_t unpacked = (keycode_lut[keycode] >> ((state_id+1) << 3)) - 1; - uint64_t input_state = (1ULL << unpacked); - int action = AKeyEvent_getAction(event); - uint64_t *key = NULL; - - if(input_state < (1ULL << RARCH_FIRST_META_KEY)) - key = &state[state_id]; - else if(input_state) - key = &g_extern.lifecycle_state; - - if(key != NULL) - { - if (action == AKEY_EVENT_ACTION_UP) - *key &= ~(input_state); - else if (action == AKEY_EVENT_ACTION_DOWN) - *key |= input_state; - } - - if((keycode == AKEYCODE_VOLUME_UP || keycode == AKEYCODE_VOLUME_DOWN) && keycode_lut[keycode] == 0) - handled = 0; - } - - if (msg[0] != 0) - msg_queue_push(g_extern.msg_queue, msg, 0, long_msg_enable ? 180 : 30); - - AInputQueue_finishEvent(android_app->inputQueue, event, handled); - } - } -} - - static void *android_input_init(void) { unsigned i, j; @@ -463,7 +297,169 @@ static void android_input_poll(void *data) if (ident == LOOPER_ID_MAIN) engine_handle_cmd(); else if (!input_key_pressed_func(RARCH_PAUSE_TOGGLE)) - engine_handle_input(); + { + bool debug_enable = g_settings.input.debug_enable; + struct android_app *android_app = (struct android_app*)g_android; + uint64_t *lifecycle_state = &g_extern.lifecycle_state; + AInputEvent* event = NULL; + + *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS)); + + // Read all pending events. + while (AInputQueue_hasEvents(android_app->inputQueue)) + { + if (AInputQueue_getEvent(android_app->inputQueue, &event) >= 0) + { + bool long_msg_enable = false; + int32_t handled = 1; + int action = 0; + char msg[128]; + int source, id, keycode, type_event, state_id; + //int predispatched; + + msg[0] = 0; + //predispatched =AInputQueue_preDispatchEvent(android_app->inputQueue,event); + + //if (predispatched) + //continue; + + source = AInputEvent_getSource(event); + id = AInputEvent_getDeviceId(event); + if (id == zeus_second_id) + id = zeus_id; + keycode = AKeyEvent_getKeyCode(event); + + type_event = AInputEvent_getType(event); + state_id = -1; + + if (source & (AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_TOUCHPAD)) + state_id = 0; // touch overlay is always player 1 + else + { + for (unsigned i = 0; i < pads_connected; i++) + if (state_device_ids[i] == id) + state_id = i; + } + + if (state_id < 0) + { + state_id = pads_connected; + state_device_ids[pads_connected++] = id; + + input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source); + long_msg_enable = true; + } + + if (keycode == AKEYCODE_BACK) + { + uint8_t unpacked = (keycode_lut[AKEYCODE_BACK] >> ((state_id+1) << 3)) - 1; + uint64_t input_state = (1ULL << unpacked); + + if (g_extern.lifecycle_mode_state & (1ULL << MODE_INPUT_XPERIA_PLAY_HACK)) + { + int meta = AKeyEvent_getMetaState(event); + if (!(meta & AMETA_ALT_ON)) + { + *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); + AInputQueue_finishEvent(android_app->inputQueue, event, handled); + break; + } + } + else if (type_event == AINPUT_EVENT_TYPE_KEY && input_state < (1ULL << RARCH_FIRST_META_KEY) + && input_state > 0) + { + } + else + { + *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); + AInputQueue_finishEvent(android_app->inputQueue, event, handled); + break; + } + } + + if (type_event == AINPUT_EVENT_TYPE_MOTION) + { + action = AMotionEvent_getAction(event); + size_t motion_pointer = action >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; + action &= AMOTION_EVENT_ACTION_MASK; + + if (source & ~(AINPUT_SOURCE_TOUCHSCREEN | AINPUT_SOURCE_MOUSE)) + { + if (g_settings.input.dpad_emulation[state_id] != DPAD_EMULATION_NONE) + engine_handle_dpad(event, motion_pointer, state_id, msg, sizeof(msg), source, debug_enable); + } + else + { + float x = 0.0f; + float y = 0.0f; + bool keyup = (action == AMOTION_EVENT_ACTION_UP || + action == AMOTION_EVENT_ACTION_CANCEL || action == AMOTION_EVENT_ACTION_POINTER_UP) || + (source == AINPUT_SOURCE_MOUSE && action != AMOTION_EVENT_ACTION_DOWN); + + if (keyup && motion_pointer < MAX_TOUCH) + { + memmove(pointer + motion_pointer, pointer + motion_pointer + 1, (MAX_TOUCH - motion_pointer - 1) * sizeof(struct input_pointer)); + if (pointer_count > 0) + pointer_count--; + } + else + { + int pointer_max = min(AMotionEvent_getPointerCount(event), MAX_TOUCH); + for (motion_pointer = 0; motion_pointer < pointer_max; motion_pointer++) + { + x = AMotionEvent_getX(event, motion_pointer); + y = AMotionEvent_getY(event, motion_pointer); + + input_translate_coord_viewport(x, y, + &pointer[motion_pointer].x, &pointer[motion_pointer].y, + &pointer[motion_pointer].full_x, &pointer[motion_pointer].full_y); + + pointer_count = max(pointer_count, motion_pointer + 1); + } + } + if (debug_enable) + snprintf(msg, sizeof(msg), "Pad %d : x = %.2f, y = %.2f, src %d.\n", state_id, x, y, source); + } + + } + else if (type_event == AINPUT_EVENT_TYPE_KEY) + { + if (debug_enable) + snprintf(msg, sizeof(msg), "Pad %d : %d, ac = %d, src = %d.\n", state_id, keycode, action, source); + + /* Hack - we have to decrease the unpacked value by 1 + * because we 'added' 1 to each entry in the LUT - + * RETRO_DEVICE_ID_JOYPAD_B is 0 + */ + uint8_t unpacked = (keycode_lut[keycode] >> ((state_id+1) << 3)) - 1; + uint64_t input_state = (1ULL << unpacked); + int action = AKeyEvent_getAction(event); + uint64_t *key = NULL; + + if(input_state < (1ULL << RARCH_FIRST_META_KEY)) + key = &state[state_id]; + else if(input_state) + key = &g_extern.lifecycle_state; + + if(key != NULL) + { + if (action == AKEY_EVENT_ACTION_UP) + *key &= ~(input_state); + else if (action == AKEY_EVENT_ACTION_DOWN) + *key |= input_state; + } + + if((keycode == AKEYCODE_VOLUME_UP || keycode == AKEYCODE_VOLUME_DOWN) && keycode_lut[keycode] == 0) + handled = 0; + } + + if (msg[0] != 0) + msg_queue_push(g_extern.msg_queue, msg, 0, long_msg_enable ? 180 : 30); + + AInputQueue_finishEvent(android_app->inputQueue, event, handled); + } + } + } } } From c2a78e86d101c3e7fc91046059ef992620f1e896 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 16:15:58 +0100 Subject: [PATCH 17/84] (Android) Check explicitly for either LOOPER_ID_INPUT or LOOPER_ID_MAIN in anroid_input_poll --- android/native/jni/input_android.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index c8882747f9..5e30de86f4 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -294,9 +294,7 @@ static void android_input_poll(void *data) while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? -1 : 0, NULL, NULL, NULL)) >= 0) { - if (ident == LOOPER_ID_MAIN) - engine_handle_cmd(); - else if (!input_key_pressed_func(RARCH_PAUSE_TOGGLE)) + if (ident == LOOPER_ID_INPUT) { bool debug_enable = g_settings.input.debug_enable; struct android_app *android_app = (struct android_app*)g_android; @@ -460,6 +458,8 @@ static void android_input_poll(void *data) } } } + else if (ident == LOOPER_ID_MAIN) + engine_handle_cmd(); } } From 6c0cc9da49703b6e77084fb4ebed2b0dda049f2b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 16:42:26 +0100 Subject: [PATCH 18/84] (Android) Input autodetection - corrected RetroPad R / RetroPad L2 for WiseGroup PS2 to USB --- android/native/jni/input_autodetect.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index e7a6ca0a90..131db9603e 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -409,13 +409,18 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_BUTTON_14] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); keycode_lut[AKEYCODE_BUTTON_4] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); - keycode_lut[AKEYCODE_BUTTON_5] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + + if (strstr(name_buf, "WiseGroup")) + keycode_lut[AKEYCODE_BUTTON_5] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); + else + keycode_lut[AKEYCODE_BUTTON_5] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + keycode_lut[AKEYCODE_BUTTON_7] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); keycode_lut[AKEYCODE_BUTTON_6] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); - if (strstr(name_buf, "JC-PS102U")) + if (strstr(name_buf, "JC-PS102U") || strstr(name_buf, "WiseGroup")) keycode_lut[AKEYCODE_BUTTON_8] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); else keycode_lut[AKEYCODE_BUTTON_8] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); From 2c44563dbad51a775d4aaa0e37f8fcf038138108 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 17:26:34 +0100 Subject: [PATCH 19/84] Brings up RMenu now for me --- android/native/jni/input_android.c | 7 +++++++ android/native/jni/input_autodetect.c | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index ee3d722449..0597d856db 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -367,12 +367,14 @@ static void android_input_poll(void *data) && input_state > 0) { } +#if 0 else { *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); AInputQueue_finishEvent(android_app->inputQueue, event, handled); break; } +#endif } if (type_event == AINPUT_EVENT_TYPE_MOTION) @@ -461,6 +463,11 @@ static void android_input_poll(void *data) else if (ident == LOOPER_ID_MAIN) engine_handle_cmd(); } + + if (!(g_extern.frame_count < g_extern.delay_timer[0]) && g_extern.lifecycle_state & (1ULL << RARCH_RMENU_TOGGLE)) + { + g_extern.lifecycle_state |= (1ULL << RARCH_QUIT_KEY); + } } static int16_t android_input_state(void *data, const struct retro_keybind **binds, unsigned port, unsigned device, unsigned index, unsigned id) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 568d6d98b7..fd987d5791 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -139,7 +139,11 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } } +#if 0 keycode_lut[AKEYCODE_MENU] |= ((RARCH_RMENU_TOGGLE + 1) << shift); +#else + keycode_lut[AKEYCODE_BACK] |= ((RARCH_RMENU_TOGGLE + 1) << shift); +#endif if (g_settings.input.autodetect_enable) { From ffb790dc0cde8c524c3bcc00ff4a2b711fbebe80 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Mon, 4 Mar 2013 15:33:29 -0500 Subject: [PATCH 20/84] (GX) compile fix --- console/rarch_console_input.c | 1 + 1 file changed, 1 insertion(+) diff --git a/console/rarch_console_input.c b/console/rarch_console_input.c index a96545883f..c2ab918b7f 100644 --- a/console/rarch_console_input.c +++ b/console/rarch_console_input.c @@ -20,6 +20,7 @@ #include #include "../boolean.h" +#include "../general.h" #include "rarch_console_input.h" struct platform_bind From 62963d751062c55170606d0e99bb7f716876b466 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 4 Mar 2013 21:41:10 +0100 Subject: [PATCH 21/84] Combine rmenu_generic.c and rmenu_gx.c --- console/griffin/griffin.c | 4 +- frontend/menu/rmenu_generic.c | 248 +++++++++++++++++++++++++++- frontend/menu/rmenu_gx.c | 297 ---------------------------------- 3 files changed, 245 insertions(+), 304 deletions(-) delete mode 100644 frontend/menu/rmenu_gx.c diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index 0c0195b00b..c2e763f06c 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -443,9 +443,7 @@ MENU #if defined(_XBOX360) #include "../../frontend/menu/rmenu_xui.cpp" -#elif defined(GEKKO) -#include "../../frontend/menu/rmenu_gx.c" -#elif defined(ANDROID) +#elif defined(HAVE_RGUI) #include "../../frontend/menu/rmenu_generic.c" #endif diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c index 747fb957a8..d90eccde68 100644 --- a/frontend/menu/rmenu_generic.c +++ b/frontend/menu/rmenu_generic.c @@ -16,13 +16,144 @@ #include "rmenu.h" #include "rgui.h" +#include "../../general.h" + +#ifdef HAVE_OPENGL #include "../../gfx/gl_common.h" +#endif #include "../../gfx/fonts/bitmap.h" -static uint16_t menu_framebuf[400 * 240]; -static rgui_handle_t *rgui; +uint16_t menu_framebuf[400 * 240]; +rgui_handle_t *rgui; +#ifdef GEKKO + +static const struct retro_keybind _rmenu_nav_binds[] = { +#ifdef HW_RVL + { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP | GX_CLASSIC_UP | GX_CLASSIC_LSTICK_UP | GX_CLASSIC_RSTICK_UP | GX_WIIMOTE_UP | GX_NUNCHUK_UP, 0 }, + { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN | GX_CLASSIC_DOWN | GX_CLASSIC_LSTICK_DOWN | GX_CLASSIC_RSTICK_DOWN | GX_WIIMOTE_DOWN | GX_NUNCHUK_DOWN, 0 }, + { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT | GX_CLASSIC_LEFT | GX_CLASSIC_LSTICK_LEFT | GX_CLASSIC_RSTICK_LEFT | GX_WIIMOTE_LEFT | GX_NUNCHUK_LEFT, 0 }, + { 0, 0, NULL, 0, GX_GC_RIGHT | GX_GC_LSTICK_RIGHT | GX_GC_RSTICK_RIGHT | GX_CLASSIC_RIGHT | GX_CLASSIC_LSTICK_RIGHT | GX_CLASSIC_RSTICK_RIGHT | GX_WIIMOTE_RIGHT | GX_NUNCHUK_RIGHT, 0 }, + { 0, 0, NULL, 0, GX_GC_A | GX_CLASSIC_A | GX_WIIMOTE_A | GX_WIIMOTE_2, 0 }, + { 0, 0, NULL, 0, GX_GC_B | GX_CLASSIC_B | GX_WIIMOTE_B | GX_WIIMOTE_1, 0 }, + { 0, 0, NULL, 0, GX_GC_START | GX_CLASSIC_PLUS | GX_WIIMOTE_PLUS, 0 }, + { 0, 0, NULL, 0, GX_GC_Z_TRIGGER | GX_CLASSIC_MINUS | GX_WIIMOTE_MINUS, 0 }, + { 0, 0, NULL, 0, GX_WIIMOTE_HOME | GX_CLASSIC_HOME, 0 }, +#else + { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP, 0 }, + { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN, 0 }, + { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT, 0 }, + { 0, 0, NULL, 0, GX_GC_RIGHT | GX_GC_LSTICK_RIGHT | GX_GC_RSTICK_RIGHT, 0 }, + { 0, 0, NULL, 0, GX_GC_A, 0 }, + { 0, 0, NULL, 0, GX_GC_B, 0 }, + { 0, 0, NULL, 0, GX_GC_START, 0 }, + { 0, 0, NULL, 0, GX_GC_Z_TRIGGER, 0 }, + { 0, 0, NULL, 0, GX_WIIMOTE_HOME, 0 }, +#endif + { 0, 0, NULL, 0, GX_QUIT_KEY, 0 }, +}; + +static const struct retro_keybind *rmenu_nav_binds[] = { + _rmenu_nav_binds +}; + +enum +{ + GX_DEVICE_NAV_UP = 0, + GX_DEVICE_NAV_DOWN, + GX_DEVICE_NAV_LEFT, + GX_DEVICE_NAV_RIGHT, + GX_DEVICE_NAV_A, + GX_DEVICE_NAV_B, + GX_DEVICE_NAV_START, + GX_DEVICE_NAV_SELECT, + GX_DEVICE_NAV_MENU, + GX_DEVICE_NAV_QUIT, + RMENU_DEVICE_NAV_LAST +}; + +static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, + void *userdata, void *ctx) +{ +#ifdef HAVE_LIBRETRO_MANAGEMENT + bool core_chooser = (userdata) ? *(rgui_file_type_t *)userdata == RGUI_SETTINGS_CORE : false; +#else + bool core_chooser = false; +#endif + + if (!*directory) + { +#ifdef HW_RVL + file_cb(ctx, "sd:", RGUI_FILE_DEVICE, 0); + file_cb(ctx, "usb:", RGUI_FILE_DEVICE, 0); +#endif + file_cb(ctx, "carda:", RGUI_FILE_DEVICE, 0); + file_cb(ctx, "cardb:", RGUI_FILE_DEVICE, 0); + return true; + } + +#ifdef HW_RVL + LWP_MutexLock(gx_device_mutex); + int dev = gx_get_device_from_path(directory); + + if (dev != -1 && !gx_devices[dev].mounted && gx_devices[dev].interface->isInserted()) + fatMountSimple(gx_devices[dev].name, gx_devices[dev].interface); + + LWP_MutexUnlock(gx_device_mutex); +#endif + + char exts[256]; + if (core_chooser) + strlcpy(exts, "dol|DOL", sizeof(exts)); + else + strlcpy(exts, g_extern.system.valid_extensions, sizeof(exts)); + struct string_list *ext_list = string_split(exts, "|"); + + char _dir[PATH_MAX]; + snprintf(_dir, sizeof(_dir), "%s/", directory); + DIR *dir = opendir(_dir); + if (!dir) + return false; + + struct dirent *entry; + while ((entry = readdir(dir))) + { + char stat_path[PATH_MAX]; + const char *file_ext = path_get_extension(entry->d_name); + snprintf(stat_path, sizeof(stat_path), "%s/%s", directory, entry->d_name); + bool is_dir; + +#ifdef _DIRENT_HAVE_D_TYPE + is_dir = (entry->d_type == DT_DIR); + if (entry->d_type != DT_REG && !is_dir) + continue; +#else + struct stat st; + if (stat(stat_path, &st) < 0) + continue; + + is_dir = S_ISDIR(st.st_mode); + if (!S_ISREG(st.st_mode) && !is_dir) + continue; +#endif + + if (core_chooser && (is_dir || strcasecmp(entry->d_name, default_paths.salamander_file) == 0)) + continue; + + if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) + continue; + + file_cb(ctx, + entry->d_name, + is_dir ? RGUI_FILE_DIRECTORY : RGUI_FILE_PLAIN, 0); + } + + closedir(dir); + string_list_free(ext_list); + return true; +} +#else static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, void *userdata, void *ctx) { @@ -68,6 +199,7 @@ static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, string_list_free(ext_list); return true; } +#endif /*============================================================ RMENU API @@ -75,9 +207,13 @@ RMENU API void menu_init(void) { - gl_t *gl = (gl_t*)driver.video_data; +#if defined(HAVE_OPENGL) + gl_t *device_ptr = (gl_t*)driver.video_data; +#elif defined(GEKKO) + gx_video_t *device_ptr = (gx_video_t*)driver.video_data; +#endif - gl->menu_data = (uint32_t *) menu_framebuf; + device_ptr->menu_data = (uint32_t *) menu_framebuf; rgui = rgui_init("", menu_framebuf, RGUI_WIDTH * sizeof(uint16_t), @@ -109,7 +245,11 @@ int rmenu_input_process(void *data, void *state) if (!(g_extern.frame_count < g_extern.delay_timer[0])) { +#ifdef GEKKO + bool return_to_game_enable = ((trigger_state & (1ULL << GX_DEVICE_NAV_MENU)) && g_extern.main_is_init); +#else bool return_to_game_enable = ((g_extern.lifecycle_mode_state & (1ULL << RARCH_RMENU_TOGGLE)) && g_extern.main_is_init); +#endif if (return_to_game_enable) { @@ -121,6 +261,105 @@ int rmenu_input_process(void *data, void *state) return 0; } +#ifdef GEKKO +bool rmenu_iterate(void) +{ + static uint16_t old_input_state = 0; + static bool initial_held = true; + static bool first_held = false; + + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); + driver.video->apply_state_changes(); + + g_extern.frame_count++; + + uint16_t input_state = 0; + + driver.input->poll(NULL); + + for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) + input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, + RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; + + trigger_state = input_state & ~old_input_state; + bool do_held = (input_state & ((1ULL << GX_DEVICE_NAV_UP) | (1ULL << GX_DEVICE_NAV_DOWN) | (1ULL << GX_DEVICE_NAV_LEFT) | (1ULL << GX_DEVICE_NAV_RIGHT))) && !(input_state & ((1ULL << GX_DEVICE_NAV_MENU) | (1ULL << GX_DEVICE_NAV_QUIT))); + + if(do_held) + { + if(!first_held) + { + first_held = true; + g_extern.delay_timer[1] = g_extern.frame_count + (initial_held ? 15 : 7); + } + + if (!(g_extern.frame_count < g_extern.delay_timer[1])) + { + first_held = false; + trigger_state = input_state; //second input frame set as current frame + } + + initial_held = false; + } + else + { + first_held = false; + initial_held = true; + } + + old_input_state = input_state; + + rgui_action_t action = RGUI_ACTION_NOOP; + + // don't run anything first frame, only capture held inputs for old_input_state + if (trigger_state & (1ULL << GX_DEVICE_NAV_UP)) + action = RGUI_ACTION_UP; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_DOWN)) + action = RGUI_ACTION_DOWN; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_LEFT)) + action = RGUI_ACTION_LEFT; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_RIGHT)) + action = RGUI_ACTION_RIGHT; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_B)) + action = RGUI_ACTION_CANCEL; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_A)) + action = RGUI_ACTION_OK; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_START)) + action = RGUI_ACTION_START; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_SELECT)) + action = RGUI_ACTION_SETTINGS; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT)) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); + goto deinit; + } + + int input_entry_ret = 0; + int input_process_ret = 0; + + input_entry_ret = rgui_iterate(rgui, action); + + // draw last frame for loading messages + rarch_render_cached_frame(); + + input_process_ret = rmenu_input_process(NULL, NULL); + + if (input_entry_ret != 0 || input_process_ret != 0) + goto deinit; + + return true; + +deinit: + // set a timer delay so that we don't instantly switch back to the menu when + // press and holding QUIT in the emulation loop (lasts for 30 frame ticks) + if (!(g_extern.lifecycle_state & (1ULL << RARCH_FRAMEADVANCE))) + g_extern.delay_timer[0] = g_extern.frame_count + 30; + + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_DRAW); + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_INGAME); + + return false; +} +#else bool rmenu_iterate(void) { static const struct retro_keybind *binds[] = { @@ -255,3 +494,4 @@ deinit: return false; } +#endif diff --git a/frontend/menu/rmenu_gx.c b/frontend/menu/rmenu_gx.c deleted file mode 100644 index 57601058a3..0000000000 --- a/frontend/menu/rmenu_gx.c +++ /dev/null @@ -1,297 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - 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 "rgui.h" - -#include "../../gfx/fonts/bitmap.h" - -uint16_t menu_framebuf[400 * 240]; - -static const struct retro_keybind _rmenu_nav_binds[] = { -#ifdef HW_RVL - { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP | GX_CLASSIC_UP | GX_CLASSIC_LSTICK_UP | GX_CLASSIC_RSTICK_UP | GX_WIIMOTE_UP | GX_NUNCHUK_UP, 0 }, - { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN | GX_CLASSIC_DOWN | GX_CLASSIC_LSTICK_DOWN | GX_CLASSIC_RSTICK_DOWN | GX_WIIMOTE_DOWN | GX_NUNCHUK_DOWN, 0 }, - { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT | GX_CLASSIC_LEFT | GX_CLASSIC_LSTICK_LEFT | GX_CLASSIC_RSTICK_LEFT | GX_WIIMOTE_LEFT | GX_NUNCHUK_LEFT, 0 }, - { 0, 0, NULL, 0, GX_GC_RIGHT | GX_GC_LSTICK_RIGHT | GX_GC_RSTICK_RIGHT | GX_CLASSIC_RIGHT | GX_CLASSIC_LSTICK_RIGHT | GX_CLASSIC_RSTICK_RIGHT | GX_WIIMOTE_RIGHT | GX_NUNCHUK_RIGHT, 0 }, - { 0, 0, NULL, 0, GX_GC_A | GX_CLASSIC_A | GX_WIIMOTE_A | GX_WIIMOTE_2, 0 }, - { 0, 0, NULL, 0, GX_GC_B | GX_CLASSIC_B | GX_WIIMOTE_B | GX_WIIMOTE_1, 0 }, - { 0, 0, NULL, 0, GX_GC_START | GX_CLASSIC_PLUS | GX_WIIMOTE_PLUS, 0 }, - { 0, 0, NULL, 0, GX_GC_Z_TRIGGER | GX_CLASSIC_MINUS | GX_WIIMOTE_MINUS, 0 }, - { 0, 0, NULL, 0, GX_WIIMOTE_HOME | GX_CLASSIC_HOME, 0 }, -#else - { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP, 0 }, - { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN, 0 }, - { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT, 0 }, - { 0, 0, NULL, 0, GX_GC_RIGHT | GX_GC_LSTICK_RIGHT | GX_GC_RSTICK_RIGHT, 0 }, - { 0, 0, NULL, 0, GX_GC_A, 0 }, - { 0, 0, NULL, 0, GX_GC_B, 0 }, - { 0, 0, NULL, 0, GX_GC_START, 0 }, - { 0, 0, NULL, 0, GX_GC_Z_TRIGGER, 0 }, - { 0, 0, NULL, 0, GX_WIIMOTE_HOME, 0 }, -#endif - { 0, 0, NULL, 0, GX_QUIT_KEY, 0 }, -}; - -static const struct retro_keybind *rmenu_nav_binds[] = { - _rmenu_nav_binds -}; - -enum -{ - GX_DEVICE_NAV_UP = 0, - GX_DEVICE_NAV_DOWN, - GX_DEVICE_NAV_LEFT, - GX_DEVICE_NAV_RIGHT, - GX_DEVICE_NAV_A, - GX_DEVICE_NAV_B, - GX_DEVICE_NAV_START, - GX_DEVICE_NAV_SELECT, - GX_DEVICE_NAV_MENU, - GX_DEVICE_NAV_QUIT, - RMENU_DEVICE_NAV_LAST -}; - -static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, - void *userdata, void *ctx) -{ -#ifdef HAVE_LIBRETRO_MANAGEMENT - bool core_chooser = (userdata) ? *(rgui_file_type_t *)userdata == RGUI_SETTINGS_CORE : false; -#else - bool core_chooser = false; -#endif - - if (!*directory) - { -#ifdef HW_RVL - file_cb(ctx, "sd:", RGUI_FILE_DEVICE, 0); - file_cb(ctx, "usb:", RGUI_FILE_DEVICE, 0); -#endif - file_cb(ctx, "carda:", RGUI_FILE_DEVICE, 0); - file_cb(ctx, "cardb:", RGUI_FILE_DEVICE, 0); - return true; - } - -#ifdef HW_RVL - LWP_MutexLock(gx_device_mutex); - int dev = gx_get_device_from_path(directory); - - if (dev != -1 && !gx_devices[dev].mounted && gx_devices[dev].interface->isInserted()) - fatMountSimple(gx_devices[dev].name, gx_devices[dev].interface); - - LWP_MutexUnlock(gx_device_mutex); -#endif - - char exts[256]; - if (core_chooser) - strlcpy(exts, "dol|DOL", sizeof(exts)); - else - strlcpy(exts, g_extern.system.valid_extensions, sizeof(exts)); - struct string_list *ext_list = string_split(exts, "|"); - - char _dir[PATH_MAX]; - snprintf(_dir, sizeof(_dir), "%s/", directory); - DIR *dir = opendir(_dir); - if (!dir) - return false; - - struct dirent *entry; - while ((entry = readdir(dir))) - { - char stat_path[PATH_MAX]; - const char *file_ext = path_get_extension(entry->d_name); - snprintf(stat_path, sizeof(stat_path), "%s/%s", directory, entry->d_name); - bool is_dir; - -#ifdef _DIRENT_HAVE_D_TYPE - is_dir = (entry->d_type == DT_DIR); - if (entry->d_type != DT_REG && !is_dir) - continue; -#else - struct stat st; - if (stat(stat_path, &st) < 0) - continue; - - is_dir = S_ISDIR(st.st_mode); - if (!S_ISREG(st.st_mode) && !is_dir) - continue; -#endif - - if (core_chooser && (is_dir || strcasecmp(entry->d_name, default_paths.salamander_file) == 0)) - continue; - - if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) - continue; - - file_cb(ctx, - entry->d_name, - is_dir ? RGUI_FILE_DIRECTORY : RGUI_FILE_PLAIN, 0); - } - - closedir(dir); - string_list_free(ext_list); - return true; -} - -/*============================================================ -RMENU API -============================================================ */ - -void menu_init(void) -{ - gx_video_t *gx = (gx_video_t*)driver.video_data; - - gx->menu_data = (uint32_t *) menu_framebuf; - - rgui = rgui_init("", - menu_framebuf, RGUI_WIDTH * sizeof(uint16_t), - NULL /* _binary_console_font_bmp_start */, bitmap_bin, folder_cb, NULL); - - rgui_iterate(rgui, RGUI_ACTION_REFRESH); -} - -void menu_free(void) -{ - rgui_free(rgui); -} - -static uint16_t trigger_state = 0; - -int rmenu_input_process(void *data, void *state) -{ - if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) - { - if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_LOADING_ROM, 100); - - if (g_extern.fullpath) - g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); - - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); - return -1; - } - - if (!(g_extern.frame_count < g_extern.delay_timer[0])) - { - bool return_to_game_enable = ((trigger_state & (1ULL << GX_DEVICE_NAV_MENU)) && g_extern.main_is_init); - - if (return_to_game_enable) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); - return -1; - } - } - - return 0; -} - -bool rmenu_iterate(void) -{ - static uint16_t old_input_state = 0; - static bool initial_held = true; - static bool first_held = false; - - g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); - driver.video->apply_state_changes(); - - g_extern.frame_count++; - - uint16_t input_state = 0; - - driver.input->poll(NULL); - - for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) - input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, - RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; - - trigger_state = input_state & ~old_input_state; - bool do_held = (input_state & ((1ULL << GX_DEVICE_NAV_UP) | (1ULL << GX_DEVICE_NAV_DOWN) | (1ULL << GX_DEVICE_NAV_LEFT) | (1ULL << GX_DEVICE_NAV_RIGHT))) && !(input_state & ((1ULL << GX_DEVICE_NAV_MENU) | (1ULL << GX_DEVICE_NAV_QUIT))); - - if(do_held) - { - if(!first_held) - { - first_held = true; - g_extern.delay_timer[1] = g_extern.frame_count + (initial_held ? 15 : 7); - } - - if (!(g_extern.frame_count < g_extern.delay_timer[1])) - { - first_held = false; - trigger_state = input_state; //second input frame set as current frame - } - - initial_held = false; - } - else - { - first_held = false; - initial_held = true; - } - - old_input_state = input_state; - - rgui_action_t action = RGUI_ACTION_NOOP; - - // don't run anything first frame, only capture held inputs for old_input_state - if (trigger_state & (1ULL << GX_DEVICE_NAV_UP)) - action = RGUI_ACTION_UP; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_DOWN)) - action = RGUI_ACTION_DOWN; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_LEFT)) - action = RGUI_ACTION_LEFT; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_RIGHT)) - action = RGUI_ACTION_RIGHT; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_B)) - action = RGUI_ACTION_CANCEL; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_A)) - action = RGUI_ACTION_OK; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_START)) - action = RGUI_ACTION_START; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_SELECT)) - action = RGUI_ACTION_SETTINGS; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT)) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); - goto deinit; - } - - int input_entry_ret = 0; - int input_process_ret = 0; - - input_entry_ret = rgui_iterate(rgui, action); - - // draw last frame for loading messages - rarch_render_cached_frame(); - - input_process_ret = rmenu_input_process(NULL, NULL); - - if (input_entry_ret != 0 || input_process_ret != 0) - goto deinit; - - return true; - -deinit: - // set a timer delay so that we don't instantly switch back to the menu when - // press and holding QUIT in the emulation loop (lasts for 30 frame ticks) - if (!(g_extern.lifecycle_state & (1ULL << RARCH_FRAMEADVANCE))) - g_extern.delay_timer[0] = g_extern.frame_count + 30; - - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_DRAW); - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_INGAME); - - return false; -} From 39e890922826d398c18ae39ca86b0e79177a11cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 5 Mar 2013 14:25:30 +0100 Subject: [PATCH 22/84] (Android) Input autodetection - add iDroid x360 --- android/native/jni/input_autodetect.c | 34 +++++++++++++++++++++++++++ android/native/jni/input_autodetect.h | 15 ++++++++++++ 2 files changed, 49 insertions(+) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 131db9603e..9b64af9ddc 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -296,6 +296,40 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); } } + else if (strstr(name_buf, "Sun4i-keypad")) + { + // iDroid x360 + g_settings.input.dpad_emulation[port] = DPAD_EMULATION_NONE; + keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); + keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); + keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); + keycode_lut[AKEYCODE_DPAD_RIGHT] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); + keycode_lut[AKEYCODE_INSERT] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); + keycode_lut[AKEYCODE_MINUS] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); + keycode_lut[AKEYCODE_SLASH] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + keycode_lut[AKEYCODE_MOVE_END] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_LEFT_BRACKET] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); + keycode_lut[AKEYCODE_FORWARD_DEL] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + keycode_lut[AKEYCODE_MEDIA_PLAY] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + keycode_lut[AKEYCODE_EQUALS] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + + // use this for the RGUI toggle + //keycode_lut[AKEYCODE_MENU] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + + // Left Analog Up: 152 + // Left Analog Down: 146 + // Left Analog Right: 150 + // Left Analog Left: 148 + // Right Analog Up: 92 (AKEYCODE_PAGE_UP) + // Right Analog Down: 93 (AKEYCODE_PAGE_DOWN) + // Right Analog Right: 113 (AKEYCODE_CTRL_LEFT) + // Right Analog Left: 72 (AKEYCODE_RIGHT_BRACKET) + keycode_lut[AKEYCODE_NUMPAD_8] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); + keycode_lut[AKEYCODE_NUMPAD_2] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); + keycode_lut[AKEYCODE_NUMPAD_6] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); + keycode_lut[AKEYCODE_NUMPAD_4] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); + + } else if (strstr(name_buf, "Zeemote")) { if (strstr(name_buf, "Steelseries free")) diff --git a/android/native/jni/input_autodetect.h b/android/native/jni/input_autodetect.h index 5ca7a3cb43..4619106678 100644 --- a/android/native/jni/input_autodetect.h +++ b/android/native/jni/input_autodetect.h @@ -29,11 +29,17 @@ enum { enum { AKEYCODE_META_FUNCTION_ON = 8, AKEYCODE_ESCAPE = 111, + AKEYCODE_FORWARD_DEL = 112, + AKEYCODE_CTRL_LEFT = 113, + AKEYCODE_CTRL_RIGHT = 114, AKEYCODE_CAPS_LOCK = 115, AKEYCODE_SCROLL_LOCK = 116, AKEYCODE_SYSRQ = 120, AKEYCODE_BREAK = 121, AKEYCODE_MOVE_HOME = 122, + AKEYCODE_MOVE_END = 123, + AKEYCODE_INSERT = 124, + AKEYCODE_FORWARD = 125, AKEYCODE_MEDIA_PLAY = 126, AKEYCODE_MEDIA_PAUSE = 127, AKEYCODE_F2 = 132, @@ -44,6 +50,15 @@ enum { AKEYCODE_F7 = 137, AKEYCODE_F8 = 138, AKEYCODE_F9 = 139, + AKEYCODE_NUMPAD_1 = 145, + AKEYCODE_NUMPAD_2 = 146, + AKEYCODE_NUMPAD_3 = 147, + AKEYCODE_NUMPAD_4 = 148, + AKEYCODE_NUMPAD_5 = 149, + AKEYCODE_NUMPAD_6 = 150, + AKEYCODE_NUMPAD_7 = 151, + AKEYCODE_NUMPAD_8 = 152, + AKEYCODE_NUMPAD_9 = 153, AKEYCODE_BUTTON_1 = 188, AKEYCODE_BUTTON_2 = 189, AKEYCODE_BUTTON_3 = 190, From aa75847f9853d9a93a524ff629fabdd05dbe1791 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 5 Mar 2013 17:46:13 +0100 Subject: [PATCH 23/84] (Android) PS3 - Add commented-out menu button --- android/native/jni/input_autodetect.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 9b64af9ddc..79a79aeb84 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -486,6 +486,8 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } else { + //PS button will be used for RGUI toggle + //keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); } From b0b52f1a3c5549fb88ceddc7a8b9f48be8c50f13 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 5 Mar 2013 18:02:06 +0100 Subject: [PATCH 24/84] (Android) Hook up PS Button to RGUI toggle --- android/native/jni/input_android.c | 2 -- android/native/jni/input_autodetect.c | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 0597d856db..db6d9aedff 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -367,14 +367,12 @@ static void android_input_poll(void *data) && input_state > 0) { } -#if 0 else { *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); AInputQueue_finishEvent(android_app->inputQueue, event, handled); break; } -#endif } if (type_event == AINPUT_EVENT_TYPE_MOTION) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 7baede6681..0b21cea32a 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -320,7 +320,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_EQUALS] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); // use this for the RGUI toggle - //keycode_lut[AKEYCODE_MENU] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + keycode_lut[AKEYCODE_MENU] |= ((RARCH_RMENU_TOGGLE+1) << shift); // Left Analog Up: 152 // Left Analog Down: 146 @@ -493,7 +493,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned else { //PS button will be used for RGUI toggle - //keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); + keycode_lut[AKEYCODE_BUTTON_1] |= ((RARCH_RMENU_TOGGLE+1) << shift); keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); } From eb3975c81db318b5e4ffb4d72fb37bcc8fa6bacb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 5 Mar 2013 18:03:05 +0100 Subject: [PATCH 25/84] (Android) Hook up AKEYCODE_MENU to RGUI toggle --- android/native/jni/input_autodetect.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 0b21cea32a..c056474fa6 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -139,11 +139,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } } -#if 0 keycode_lut[AKEYCODE_MENU] |= ((RARCH_RMENU_TOGGLE + 1) << shift); -#else - keycode_lut[AKEYCODE_BACK] |= ((RARCH_RMENU_TOGGLE + 1) << shift); -#endif if (g_settings.input.autodetect_enable) { From fcf6d98fb0576dac8c1bf742eb03bf00aa6d9a8c Mon Sep 17 00:00:00 2001 From: ToadKing Date: Tue, 5 Mar 2013 19:28:20 -0500 Subject: [PATCH 26/84] don't pop menu stack if it's the last one --- frontend/menu/rgui.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index f69a356adc..be636e4447 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -1174,9 +1174,12 @@ static int rgui_settings_iterate(rgui_handle_t *rgui, rgui_action_t action) case RGUI_ACTION_CANCEL: case RGUI_ACTION_SETTINGS: - rgui_list_pop(rgui->path_stack); - rgui->directory_ptr = directory_ptr; - rgui->need_refresh = true; + if (rgui_list_size(rgui->path_stack) > 1) + { + rgui_list_pop(rgui->path_stack); + rgui->directory_ptr = directory_ptr; + rgui->need_refresh = true; + } break; case RGUI_ACTION_LEFT: From 566a5ebb9c01d1624764be8979b578393067a88c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 6 Mar 2013 01:57:30 +0100 Subject: [PATCH 27/84] Move FBO enums to gl_common.h --- android/native/jni/input_autodetect.c | 2 ++ console/rarch_console_video.h | 6 ------ gfx/gl_common.h | 10 ++++++++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index c056474fa6..6e0dbd3925 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -225,6 +225,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_BUTTON_10] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); /* TODO - unsure about pad 2 still */ +#if 0 keycode_lut[AKEYCODE_BUTTON_Z] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); keycode_lut[AKEYCODE_BUTTON_C] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); @@ -240,6 +241,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); keycode_lut[AKEYCODE_BUTTON_C] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); +#endif } else if (strstr(name_buf, "TOMMO NEOGEOX Arcade Stick")) { diff --git a/console/rarch_console_video.h b/console/rarch_console_video.h index c538b1629d..1b2a39e181 100644 --- a/console/rarch_console_video.h +++ b/console/rarch_console_video.h @@ -25,12 +25,6 @@ #define MAX_SCALING_FACTOR (2.0f) #endif -enum -{ - FBO_DEINIT = 0, - FBO_INIT, - FBO_REINIT -}; enum aspect_ratio { diff --git a/gfx/gl_common.h b/gfx/gl_common.h index b7db8c3d59..1b3b4b2c73 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -56,6 +56,7 @@ #include #endif + #if defined(ANDROID) && defined(HAVE_GRIFFIN) #include "../console/griffin/hook_context.h" #else @@ -163,6 +164,15 @@ enum gl_scale_type RARCH_SCALE_VIEWPORT }; +#ifdef HAVE_FBO +enum fbo_option +{ + FBO_DEINIT = 0, + FBO_INIT, + FBO_REINIT +}; +#endif + struct gl_fbo_scale { enum gl_scale_type type_x; From 809ae0ab06e9e8b56a0886a5976b56697a68e506 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Wed, 6 Mar 2013 12:19:56 -0500 Subject: [PATCH 28/84] get messages working again on android --- frontend/menu/rgui.c | 6 ++---- gfx/gl.c | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index be636e4447..5d0d0c66c8 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -569,8 +569,8 @@ static void render_text(rgui_handle_t *rgui) blit_line(rgui, x, y, message, i == rgui->directory_ptr); } - const char *message_queue; #ifdef GEKKO + const char *message_queue; gx_video_t *gx = (gx_video_t*)driver.video_data; if (rgui->msg_force) { @@ -581,10 +581,8 @@ static void render_text(rgui_handle_t *rgui) { message_queue = gx->msg; } -#else - message_queue = msg_queue_pull(g_extern.msg_queue); -#endif render_messagebox(rgui, message_queue); +#endif } #ifdef GEKKO diff --git a/gfx/gl.c b/gfx/gl.c index 92865af2cb..a62df1a0c4 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1824,7 +1824,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo if (input && input_data) context_input_driver_func(input, input_data); -#ifndef HAVE_RMENU +#if !defined(HAVE_RMENU) || !defined(RARCH_CONSOLE) // Comes too early for console - moved to gl_start if (g_settings.video.font_enable) gl->font_ctx = gl_font_init_first(gl, g_settings.video.font_path, g_settings.video.font_size); From 9b6b17481295226b1219819fb710feb93e0106ee Mon Sep 17 00:00:00 2001 From: ToadKing Date: Wed, 6 Mar 2013 12:42:58 -0500 Subject: [PATCH 29/84] filebrowser setting to be used for CD switching, commented out for now --- frontend/menu/rgui.c | 11 ++++++++++- frontend/menu/rgui.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 5d0d0c66c8..c0344dfc0b 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -143,6 +143,7 @@ struct rgui_handle bool msg_force; char path_buf[PATH_MAX]; + char base_path[PATH_MAX]; const uint8_t *font; bool alloc_font; @@ -221,9 +222,9 @@ rgui_handle_t *rgui_init(const char *base_path, rgui->frame_buf = framebuf; rgui->frame_buf_pitch = framebuf_pitch; - rgui->folder_cb = folder_cb; rgui->userdata = userdata; + strlcpy(rgui->base_path, base_path, sizeof(rgui->base_path)); rgui->path_stack = rgui_list_new(); rgui->folder_buf = rgui_list_new(); @@ -501,6 +502,7 @@ static void render_text(rgui_handle_t *rgui) case RGUI_SETTINGS_DEBUG_TEXT: snprintf(type_str, sizeof(type_str), (g_extern.lifecycle_mode_state & (1ULL << MODE_FPS_DRAW)) ? "ON" : "OFF"); break; + case RGUI_SETTINGS_OPEN_FILEBROWSER: case RGUI_SETTINGS_CUSTOM_VIEWPORT: #ifdef HAVE_LIBRETRO_MANAGEMENT case RGUI_SETTINGS_CORE: @@ -975,6 +977,7 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) RGUI_MENU_ITEM("Restart RetroArch", RGUI_SETTINGS_RESTART_EMULATOR); RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); #else + //RGUI_MENU_ITEM("Filebrowser", RGUI_SETTINGS_OPEN_FILEBROWSER); RGUI_MENU_ITEM("Save State", RGUI_SETTINGS_SAVESTATE_SAVE); RGUI_MENU_ITEM("Load State", RGUI_SETTINGS_SAVESTATE_LOAD); RGUI_MENU_ITEM("Take Screenshot", RGUI_SETTINGS_SCREENSHOT); @@ -1201,6 +1204,11 @@ static int rgui_settings_iterate(rgui_handle_t *rgui, rgui_action_t action) g_settings.video.aspect_ratio_idx = ASPECT_RATIO_CUSTOM; video_set_aspect_ratio_func(g_settings.video.aspect_ratio_idx); } + else if (type == RGUI_SETTINGS_OPEN_FILEBROWSER && action == RGUI_ACTION_OK) + { + rgui_list_push(rgui->path_stack, rgui->base_path, RGUI_FILE_DIRECTORY, rgui->directory_ptr); + rgui->need_refresh = true; + } else { int ret = rgui_settings_toggle_setting(type, action, menu_type); @@ -1408,6 +1416,7 @@ int rgui_iterate(rgui_handle_t *rgui, rgui_action_t action) rgui->folder_cb(dir, (rgui_file_enum_cb_t)rgui_list_push, &menu_type, rgui->folder_buf); +#ifdef if (*dir) rgui_list_sort(rgui->folder_buf); } diff --git a/frontend/menu/rgui.h b/frontend/menu/rgui.h index f187d41c2b..7e1ace5055 100644 --- a/frontend/menu/rgui.h +++ b/frontend/menu/rgui.h @@ -33,6 +33,7 @@ typedef enum RGUI_SETTINGS, // settings options are done here too + RGUI_SETTINGS_OPEN_FILEBROWSER, RGUI_SETTINGS_REWIND_ENABLE, RGUI_SETTINGS_REWIND_GRANULARITY, RGUI_SETTINGS_SAVESTATE_SAVE, From 371c8c4d09113b0b7e0e9feb540bd9b052aa4f56 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 6 Mar 2013 20:53:44 +0100 Subject: [PATCH 30/84] (Android) Input autodetection - TTT - change button mapping --- android/native/jni/input_autodetect.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 6e0dbd3925..047477ddf4 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -213,16 +213,17 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned dpad_state[id].dzone_max = 1.00f; /* same as Rumblepad 2 - merge? */ + //keycode_lut[AKEYCODE_BUTTON_7] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); + keycode_lut[AKEYCODE_BUTTON_1] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); - keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); - keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); - keycode_lut[AKEYCODE_BUTTON_4] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); - keycode_lut[AKEYCODE_BUTTON_5] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); - keycode_lut[AKEYCODE_BUTTON_6] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); - keycode_lut[AKEYCODE_BUTTON_7] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); - keycode_lut[AKEYCODE_BUTTON_8] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); - keycode_lut[AKEYCODE_BUTTON_9] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); - keycode_lut[AKEYCODE_BUTTON_10] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + keycode_lut[AKEYCODE_BUTTON_5] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); + keycode_lut[AKEYCODE_BUTTON_6] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); + keycode_lut[AKEYCODE_BUTTON_3] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); + keycode_lut[AKEYCODE_BUTTON_7] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + keycode_lut[AKEYCODE_BUTTON_4] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); + keycode_lut[AKEYCODE_BUTTON_8] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + keycode_lut[AKEYCODE_BUTTON_9] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); /* TODO - unsure about pad 2 still */ #if 0 From 36c9a3243655ecabf00631c15d20e4ffc74637f0 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Wed, 6 Mar 2013 14:58:43 -0500 Subject: [PATCH 31/84] compile fix --- frontend/menu/rgui.c | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index c0344dfc0b..dd0ecc9515 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -1416,7 +1416,6 @@ int rgui_iterate(rgui_handle_t *rgui, rgui_action_t action) rgui->folder_cb(dir, (rgui_file_enum_cb_t)rgui_list_push, &menu_type, rgui->folder_buf); -#ifdef if (*dir) rgui_list_sort(rgui->folder_buf); } From e07c4872db7d1ae06e6d9f77c2e214aef0dee814 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Wed, 6 Mar 2013 15:17:36 -0500 Subject: [PATCH 32/84] fix font sizes on android --- config.def.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config.def.h b/config.def.h index 9de1949269..4b819da20a 100644 --- a/config.def.h +++ b/config.def.h @@ -240,7 +240,8 @@ static const bool aspect_ratio_auto = false; // 1:1 PAR static const bool crop_overscan = true; // Font size for on-screen messages. -#ifdef HAVE_RMENU +// TODO: use RARCH_CONSOLE instead? need to test +#if defined(HAVE_RMENU) && !defined(HAVE_RGUI) static const float font_size = 1.0f; #else static const float font_size = 48; From 6899434609849abfc725c2a73f059626ed6419ce Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 7 Mar 2013 15:21:17 +0100 Subject: [PATCH 33/84] (Android) Add back button behavior option --- android/native/jni/input_android.c | 6 ++++++ android/phoenix/res/values/array.xml | 10 ++++++++++ android/phoenix/res/xml/prefs.xml | 8 ++++++++ .../phoenix/src/org/retroarch/browser/RetroArch.java | 1 + general.h | 1 + input/input_common.h | 8 ++++++++ settings.c | 3 +++ 7 files changed, 37 insertions(+) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index db6d9aedff..f422cce5cc 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -367,6 +367,12 @@ static void android_input_poll(void *data) && input_state > 0) { } + else if (g_settings.input.back_behavior == BACK_BUTTON_MENU_TOGGLE) + { + *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); + AInputQueue_finishEvent(android_app->inputQueue, event, handled); + break; + } else { *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); diff --git a/android/phoenix/res/values/array.xml b/android/phoenix/res/values/array.xml index fa494636ba..674439d631 100644 --- a/android/phoenix/res/values/array.xml +++ b/android/phoenix/res/values/array.xml @@ -1,5 +1,15 @@ + + Quit + Menu toggle + + + + 0 + 1 + + Full screen Auto diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index 7b1f2ba936..949bba3ea1 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -187,6 +187,14 @@ + + + Date: Thu, 7 Mar 2013 15:59:47 +0100 Subject: [PATCH 34/84] Standardize rmenu_generic code more --- frontend/menu/rmenu_generic.c | 66 +++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c index d90eccde68..738fc3b2bf 100644 --- a/frontend/menu/rmenu_generic.c +++ b/frontend/menu/rmenu_generic.c @@ -27,10 +27,8 @@ uint16_t menu_framebuf[400 * 240]; rgui_handle_t *rgui; -#ifdef GEKKO - static const struct retro_keybind _rmenu_nav_binds[] = { -#ifdef HW_RVL +#if defined(HW_RVL) { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP | GX_CLASSIC_UP | GX_CLASSIC_LSTICK_UP | GX_CLASSIC_RSTICK_UP | GX_WIIMOTE_UP | GX_NUNCHUK_UP, 0 }, { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN | GX_CLASSIC_DOWN | GX_CLASSIC_LSTICK_DOWN | GX_CLASSIC_RSTICK_DOWN | GX_WIIMOTE_DOWN | GX_NUNCHUK_DOWN, 0 }, { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT | GX_CLASSIC_LEFT | GX_CLASSIC_LSTICK_LEFT | GX_CLASSIC_RSTICK_LEFT | GX_WIIMOTE_LEFT | GX_NUNCHUK_LEFT, 0 }, @@ -40,7 +38,7 @@ static const struct retro_keybind _rmenu_nav_binds[] = { { 0, 0, NULL, 0, GX_GC_START | GX_CLASSIC_PLUS | GX_WIIMOTE_PLUS, 0 }, { 0, 0, NULL, 0, GX_GC_Z_TRIGGER | GX_CLASSIC_MINUS | GX_WIIMOTE_MINUS, 0 }, { 0, 0, NULL, 0, GX_WIIMOTE_HOME | GX_CLASSIC_HOME, 0 }, -#else +#elif defined(HW_DOL) { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP, 0 }, { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN, 0 }, { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT, 0 }, @@ -50,8 +48,19 @@ static const struct retro_keybind _rmenu_nav_binds[] = { { 0, 0, NULL, 0, GX_GC_START, 0 }, { 0, 0, NULL, 0, GX_GC_Z_TRIGGER, 0 }, { 0, 0, NULL, 0, GX_WIIMOTE_HOME, 0 }, -#endif { 0, 0, NULL, 0, GX_QUIT_KEY, 0 }, +#else + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_UP), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_B), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_A), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_START), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT), 0 }, + { 0, 0, NULL, 0, (1ULL << RARCH_RMENU_TOGGLE), 0 }, + { 0, 0, NULL, 0, (1ULL << RARCH_QUIT_KEY), 0 }, +#endif }; static const struct retro_keybind *rmenu_nav_binds[] = { @@ -73,6 +82,9 @@ enum RMENU_DEVICE_NAV_LAST }; +#ifdef GEKKO + + static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, void *userdata, void *ctx) { @@ -245,11 +257,7 @@ int rmenu_input_process(void *data, void *state) if (!(g_extern.frame_count < g_extern.delay_timer[0])) { -#ifdef GEKKO bool return_to_game_enable = ((trigger_state & (1ULL << GX_DEVICE_NAV_MENU)) && g_extern.main_is_init); -#else - bool return_to_game_enable = ((g_extern.lifecycle_mode_state & (1ULL << RARCH_RMENU_TOGGLE)) && g_extern.main_is_init); -#endif if (return_to_game_enable) { @@ -362,10 +370,6 @@ deinit: #else bool rmenu_iterate(void) { - static const struct retro_keybind *binds[] = { - g_settings.input.binds[0] - }; - static uint16_t old_input_state = 0; static bool initial_held = true; static bool first_held = false; @@ -413,16 +417,19 @@ bool rmenu_iterate(void) uint16_t input_state = 0; + for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) + input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, + RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; + +#ifdef HAVE_OVERLAY for (unsigned i = 0; i < 16; i++) { - input_state |= driver.input->input_state(NULL, binds, 0, RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; -#ifdef HAVE_OVERLAY input_state |= driver.overlay_state & (1ULL << i) ? (1ULL << i) : 0; -#endif } +#endif trigger_state = input_state & ~old_input_state; - bool do_held = input_state & ((1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) | (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT)); + bool do_held = (input_state & ((1ULL << GX_DEVICE_NAV_UP) | (1ULL << GX_DEVICE_NAV_DOWN) | (1ULL << GX_DEVICE_NAV_LEFT) | (1ULL << GX_DEVICE_NAV_RIGHT))) && !(input_state & ((1ULL << GX_DEVICE_NAV_MENU) | (1ULL << GX_DEVICE_NAV_QUIT))); if(do_held) { @@ -451,22 +458,29 @@ bool rmenu_iterate(void) rgui_action_t action = RGUI_ACTION_NOOP; // don't run anything first frame, only capture held inputs for old_input_state - if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_UP)) + if (trigger_state & (1ULL << GX_DEVICE_NAV_UP)) action = RGUI_ACTION_UP; - else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN)) + else if (trigger_state & (1ULL << GX_DEVICE_NAV_DOWN)) action = RGUI_ACTION_DOWN; - else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT)) + else if (trigger_state & (1ULL << GX_DEVICE_NAV_LEFT)) action = RGUI_ACTION_LEFT; - else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT)) + else if (trigger_state & (1ULL << GX_DEVICE_NAV_RIGHT)) action = RGUI_ACTION_RIGHT; - else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_B)) + else if (trigger_state & (1ULL << GX_DEVICE_NAV_B)) action = RGUI_ACTION_CANCEL; - else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_A)) + else if (trigger_state & (1ULL << GX_DEVICE_NAV_A)) action = RGUI_ACTION_OK; - else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_START)) + else if (trigger_state & (1ULL << GX_DEVICE_NAV_START)) action = RGUI_ACTION_START; - //else if (trigger_state & (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT)) - // action = RGUI_ACTION_SETTINGS; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_SELECT)) + action = RGUI_ACTION_SETTINGS; +#if 0 + else if (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT)) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); + goto deinit; + } +#endif int input_entry_ret = 0; int input_process_ret = 0; From f560963ad119d92641979d5808c59d1917aa94e1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 7 Mar 2013 16:11:35 +0100 Subject: [PATCH 35/84] (RGUI) use same rgui_iterate code for both GEKKO and non-Gekko --- frontend/menu/rmenu_generic.c | 111 ++-------------------------------- 1 file changed, 5 insertions(+), 106 deletions(-) diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c index 738fc3b2bf..0f8cf847f9 100644 --- a/frontend/menu/rmenu_generic.c +++ b/frontend/menu/rmenu_generic.c @@ -83,8 +83,6 @@ enum }; #ifdef GEKKO - - static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, void *userdata, void *ctx) { @@ -120,6 +118,7 @@ static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, strlcpy(exts, "dol|DOL", sizeof(exts)); else strlcpy(exts, g_extern.system.valid_extensions, sizeof(exts)); + struct string_list *ext_list = string_split(exts, "|"); char _dir[PATH_MAX]; @@ -269,7 +268,6 @@ int rmenu_input_process(void *data, void *state) return 0; } -#ifdef GEKKO bool rmenu_iterate(void) { static uint16_t old_input_state = 0; @@ -285,97 +283,6 @@ bool rmenu_iterate(void) driver.input->poll(NULL); - for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) - input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, - RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; - - trigger_state = input_state & ~old_input_state; - bool do_held = (input_state & ((1ULL << GX_DEVICE_NAV_UP) | (1ULL << GX_DEVICE_NAV_DOWN) | (1ULL << GX_DEVICE_NAV_LEFT) | (1ULL << GX_DEVICE_NAV_RIGHT))) && !(input_state & ((1ULL << GX_DEVICE_NAV_MENU) | (1ULL << GX_DEVICE_NAV_QUIT))); - - if(do_held) - { - if(!first_held) - { - first_held = true; - g_extern.delay_timer[1] = g_extern.frame_count + (initial_held ? 15 : 7); - } - - if (!(g_extern.frame_count < g_extern.delay_timer[1])) - { - first_held = false; - trigger_state = input_state; //second input frame set as current frame - } - - initial_held = false; - } - else - { - first_held = false; - initial_held = true; - } - - old_input_state = input_state; - - rgui_action_t action = RGUI_ACTION_NOOP; - - // don't run anything first frame, only capture held inputs for old_input_state - if (trigger_state & (1ULL << GX_DEVICE_NAV_UP)) - action = RGUI_ACTION_UP; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_DOWN)) - action = RGUI_ACTION_DOWN; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_LEFT)) - action = RGUI_ACTION_LEFT; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_RIGHT)) - action = RGUI_ACTION_RIGHT; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_B)) - action = RGUI_ACTION_CANCEL; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_A)) - action = RGUI_ACTION_OK; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_START)) - action = RGUI_ACTION_START; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_SELECT)) - action = RGUI_ACTION_SETTINGS; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT)) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); - goto deinit; - } - - int input_entry_ret = 0; - int input_process_ret = 0; - - input_entry_ret = rgui_iterate(rgui, action); - - // draw last frame for loading messages - rarch_render_cached_frame(); - - input_process_ret = rmenu_input_process(NULL, NULL); - - if (input_entry_ret != 0 || input_process_ret != 0) - goto deinit; - - return true; - -deinit: - // set a timer delay so that we don't instantly switch back to the menu when - // press and holding QUIT in the emulation loop (lasts for 30 frame ticks) - if (!(g_extern.lifecycle_state & (1ULL << RARCH_FRAMEADVANCE))) - g_extern.delay_timer[0] = g_extern.frame_count + 30; - - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_DRAW); - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_INGAME); - - return false; -} -#else -bool rmenu_iterate(void) -{ - static uint16_t old_input_state = 0; - static bool initial_held = true; - static bool first_held = false; - - driver.input->poll(NULL); - #ifdef HAVE_OVERLAY if (driver.overlay) { @@ -403,19 +310,14 @@ bool rmenu_iterate(void) } #endif +#ifndef GEKKO + /* TODO - not sure if correct regarding RARCH_QUIT_KEY */ if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) { g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); goto deinit; } - - g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); - - driver.video->apply_state_changes(); - - g_extern.frame_count++; - - uint16_t input_state = 0; +#endif for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, @@ -423,9 +325,7 @@ bool rmenu_iterate(void) #ifdef HAVE_OVERLAY for (unsigned i = 0; i < 16; i++) - { input_state |= driver.overlay_state & (1ULL << i) ? (1ULL << i) : 0; - } #endif trigger_state = input_state & ~old_input_state; @@ -474,7 +374,7 @@ bool rmenu_iterate(void) action = RGUI_ACTION_START; else if (trigger_state & (1ULL << GX_DEVICE_NAV_SELECT)) action = RGUI_ACTION_SETTINGS; -#if 0 +#ifdef GEKKO else if (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT)) { g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); @@ -508,4 +408,3 @@ deinit: return false; } -#endif From f921f628d970362e23dee71754985391f7236566 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 7 Mar 2013 16:29:11 +0100 Subject: [PATCH 36/84] (Android) Flush RARCH_RMENU_TOGGLE state for every input frame --- android/native/jni/input_android.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index f422cce5cc..94144279b3 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -301,7 +301,7 @@ static void android_input_poll(void *data) uint64_t *lifecycle_state = &g_extern.lifecycle_state; AInputEvent* event = NULL; - *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY)); + *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY) | (1ULL << RARCH_RMENU_TOGGLE)); // Read all pending events. while (AInputQueue_hasEvents(android_app->inputQueue)) From a23bc3a13f3120c083f49a423d7f6c30d8206b95 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 7 Mar 2013 19:02:44 +0100 Subject: [PATCH 37/84] Control flow change for RGUI/RMENU - no longer have to invoke RARCH_QUIT_KEY to toggle menu --- android/native/jni/input_android.c | 5 ----- gx/gx_input.c | 3 --- ps3/ps3_input.c | 5 +---- retroarch.c | 27 ++++++++++++++------------- xdk/xdk_xinput_input.c | 5 +---- 5 files changed, 16 insertions(+), 29 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 94144279b3..c1190a6786 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -467,11 +467,6 @@ static void android_input_poll(void *data) else if (ident == LOOPER_ID_MAIN) engine_handle_cmd(); } - - if (!(g_extern.frame_count < g_extern.delay_timer[0]) && g_extern.lifecycle_state & (1ULL << RARCH_RMENU_TOGGLE)) - { - g_extern.lifecycle_state |= (1ULL << RARCH_QUIT_KEY); - } } static int16_t android_input_state(void *data, const struct retro_keybind **binds, unsigned port, unsigned device, unsigned index, unsigned id) diff --git a/gx/gx_input.c b/gx/gx_input.c index 318a6eddf2..8c75e0d7c1 100644 --- a/gx/gx_input.c +++ b/gx/gx_input.c @@ -528,10 +528,7 @@ static void gx_input_poll(void *data) | GX_CLASSIC_HOME #endif )) - { *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); - *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); - } } } diff --git a/ps3/ps3_input.c b/ps3/ps3_input.c index 0fd318f67e..02633b1a50 100644 --- a/ps3/ps3_input.c +++ b/ps3/ps3_input.c @@ -210,14 +210,11 @@ static void ps3_input_poll(void *data) if (!(g_extern.frame_count < g_extern.delay_timer[0])) { if ((*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_L3)) && (*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R3))) - { *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); - *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); - } if (!(*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_L3)) && (*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R3))) { + *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); *lifecycle_state |= (1ULL << RARCH_RMENU_QUICKMENU_TOGGLE); - *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); } } diff --git a/retroarch.c b/retroarch.c index dc3345e5d2..fd9d342d75 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2793,25 +2793,26 @@ bool rarch_main_iterate(void) } // Time to drop? - if (input_key_pressed_func(RARCH_QUIT_KEY) || - !video_alive_func()) + if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) { #ifdef HAVE_RMENU - bool rmenu_enable = input_key_pressed_func(RARCH_RMENU_TOGGLE); - if (input_key_pressed_func(RARCH_RMENU_QUICKMENU_TOGGLE)) - g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME); - - if (rmenu_enable || ((g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_INGAME)) && !rmenu_enable)) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); - g_extern.delay_timer[0] = g_extern.frame_count + 30; - } - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); + g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); #endif return false; } +#ifdef HAVE_RMENU + if (input_key_pressed_func(RARCH_RMENU_TOGGLE)) + { + if (input_key_pressed_func(RARCH_RMENU_QUICKMENU_TOGGLE)) + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME); + + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); + g_extern.delay_timer[0] = g_extern.frame_count + 30; + return false; + } +#endif + #ifdef HAVE_COMMAND if (driver.command) rarch_cmd_pre_frame(driver.command); diff --git a/xdk/xdk_xinput_input.c b/xdk/xdk_xinput_input.c index 4e2ec607ce..b18236abc3 100644 --- a/xdk/xdk_xinput_input.c +++ b/xdk/xdk_xinput_input.c @@ -231,14 +231,11 @@ static void xdk_input_poll(void *data) if (!(g_extern.frame_count < g_extern.delay_timer[0])) { if((*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_L3)) && (*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R3))) - { *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); - *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); - } if(!(*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_L3)) && (*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R3))) { + *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); *lifecycle_state |= (1ULL << RARCH_RMENU_QUICKMENU_TOGGLE); - *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); } } } From 1422ed3bb09aa33965574eabc9b0bd2cc4c36a27 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Thu, 7 Mar 2013 14:38:41 -0500 Subject: [PATCH 38/84] fix touch controls --- frontend/menu/rmenu_generic.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c index 0f8cf847f9..1ca0e4a800 100644 --- a/frontend/menu/rmenu_generic.c +++ b/frontend/menu/rmenu_generic.c @@ -54,8 +54,8 @@ static const struct retro_keybind _rmenu_nav_binds[] = { { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN), 0 }, { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT), 0 }, { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT), 0 }, - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_B), 0 }, { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_A), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_B), 0 }, { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_START), 0 }, { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT), 0 }, { 0, 0, NULL, 0, (1ULL << RARCH_RMENU_TOGGLE), 0 }, @@ -323,9 +323,12 @@ bool rmenu_iterate(void) input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; + input_state |= driver.input->key_pressed(driver.input_data, RARCH_RMENU_TOGGLE) ? (1ULL << GX_DEVICE_NAV_MENU) : 0; + input_state |= driver.input->key_pressed(driver.input_data, RARCH_QUIT_KEY) ? (1ULL << GX_DEVICE_NAV_QUIT) : 0; + #ifdef HAVE_OVERLAY - for (unsigned i = 0; i < 16; i++) - input_state |= driver.overlay_state & (1ULL << i) ? (1ULL << i) : 0; + for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) + input_state |= driver.overlay_state & rmenu_nav_binds[0][i].joykey ? (1ULL << i) : 0; #endif trigger_state = input_state & ~old_input_state; From dbea6f3614fbc98e8b44381966bdcb186c8ed441 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Thu, 7 Mar 2013 14:39:08 -0500 Subject: [PATCH 39/84] fix closing menu on android (MIGHT REQUIRE CHANGES TO CONSOLES) --- retroarch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/retroarch.c b/retroarch.c index fd9d342d75..11c03bd531 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2802,7 +2802,7 @@ bool rarch_main_iterate(void) } #ifdef HAVE_RMENU - if (input_key_pressed_func(RARCH_RMENU_TOGGLE)) + if (input_key_pressed_func(RARCH_RMENU_TOGGLE) && !(g_extern.frame_count < g_extern.delay_timer[0])) { if (input_key_pressed_func(RARCH_RMENU_QUICKMENU_TOGGLE)) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME); From 0b7baf9f9cce8c9d76e0eba75d4becac25922054 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 7 Mar 2013 21:58:38 +0100 Subject: [PATCH 40/84] (PS3) Return to glMapBuffer/glUnmapBuffer version of gl_copy_frame - seems to work without garbage frames when using GL_READ_WRITE instead of GL_WRITE_ONLY --- gfx/gl.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index a62df1a0c4..c8f009dbab 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1050,23 +1050,17 @@ static void gl_init_textures_data(void *data) #if defined(HAVE_PSGL) static inline void gl_copy_frame(void *data, const void *frame, unsigned width, unsigned height, unsigned pitch) { - gl_t *gl = (gl_t*)data; - + gl_t *gl = (gl_t*)data; size_t buffer_addr = gl->tex_w * gl->tex_h * gl->tex_index * gl->base_size; size_t buffer_stride = gl->tex_w * gl->base_size; const uint8_t *frame_copy = frame; size_t frame_copy_size = width * gl->base_size; - for (unsigned h = 0; h < height; h++) - { - glBufferSubData(GL_TEXTURE_REFERENCE_BUFFER_SCE, - buffer_addr, - frame_copy_size, - frame_copy); + uint8_t *buffer = (uint8_t*)glMapBuffer(GL_TEXTURE_REFERENCE_BUFFER_SCE, GL_READ_WRITE) + buffer_addr; + for (unsigned h = 0; h < height; h++, buffer += buffer_stride, frame_copy += pitch) + memcpy(buffer, frame_copy, frame_copy_size); - frame_copy += pitch; - buffer_addr += buffer_stride; - } + glUnmapBuffer(GL_TEXTURE_REFERENCE_BUFFER_SCE); } static void gl_init_textures(void *data, const video_info_t *video) From b7ffd0d77a77bbecf2f6d7480db9288fb0b29c3c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 8 Mar 2013 05:53:55 +0100 Subject: [PATCH 41/84] (Android) Input autodetection - add JXD S7300B --- android/native/jni/input_autodetect.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 047477ddf4..9e936c78aa 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -546,6 +546,31 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_BUTTON_14] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); keycode_lut[AKEYCODE_UNKNOWN] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); } + else if (strstr(name_buf, "adc joystick")) + { + /* JXD S7300B */ + g_settings.input.dpad_emulation[port] = DPAD_EMULATION_NONE; + keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); + keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); + keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); + keycode_lut[AKEYCODE_DPAD_RIGHT] |= ((RETRO_DEVICE_ID_JOYPAD_RIGHT+1) << shift); + + keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); + keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); + keycode_lut[AKEYCODE_BUTTON_Y] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); + keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); + + keycode_lut[AKEYCODE_BUTTON_L1] |= ((RETRO_DEVICE_ID_JOYPAD_L+1) << shift); + keycode_lut[AKEYCODE_BUTTON_R1] |= ((RETRO_DEVICE_ID_JOYPAD_R+1) << shift); + keycode_lut[AKEYCODE_BUTTON_L2] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); + keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); + + keycode_lut[AKEYCODE_BUTTON_ENTER] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + keycode_lut[AKEYCODE_BUTTON_SPACE] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + + //keycode_lut[AKEYCODE_VOLUME_UP] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + //keycode_lut[AKEYCODE_VOLUME_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + } else if (strstr(name_buf, "idroid:con")) { keycode_lut[AKEYCODE_BUTTON_2] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); From e46e352bedcc38765edfe9f3ea34ddf2c0b62a41 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 8 Mar 2013 06:02:56 +0100 Subject: [PATCH 42/84] (Android) Fix build --- android/native/jni/input_autodetect.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 9e936c78aa..078642b8c0 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -565,8 +565,8 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_BUTTON_L2] |= ((RETRO_DEVICE_ID_JOYPAD_L2+1) << shift); keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_R2+1) << shift); - keycode_lut[AKEYCODE_BUTTON_ENTER] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); - keycode_lut[AKEYCODE_BUTTON_SPACE] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + keycode_lut[AKEYCODE_ENTER] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + keycode_lut[AKEYCODE_SPACE] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); //keycode_lut[AKEYCODE_VOLUME_UP] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); //keycode_lut[AKEYCODE_VOLUME_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); From fe7eef6fa1a5c6fb29657a9ad44c233dc0f5d3e2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 8 Mar 2013 17:19:57 +0100 Subject: [PATCH 43/84] (Android) Hopefully fixes up TOMMO NeoGeo X arcade stick --- android/native/jni/input_autodetect.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index 078642b8c0..ba5585221a 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -246,7 +246,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } else if (strstr(name_buf, "TOMMO NEOGEOX Arcade Stick")) { - /* TODO - Start/select */ + g_settings.input.dpad_emulation[port] = DPAD_EMULATION_NONE; keycode_lut[AKEYCODE_DPAD_UP] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift); keycode_lut[AKEYCODE_DPAD_DOWN] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift); keycode_lut[AKEYCODE_DPAD_LEFT] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift); @@ -255,8 +255,8 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_BUTTON_B] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift); keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); keycode_lut[AKEYCODE_BUTTON_C] |= ((RETRO_DEVICE_ID_JOYPAD_X+1) << shift); - //keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); - //keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); + keycode_lut[AKEYCODE_BUTTON_R2] |= ((RETRO_DEVICE_ID_JOYPAD_START+1) << shift); + keycode_lut[AKEYCODE_BUTTON_L2] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); } else if (strstr(name_buf, "MadCatz")) { From 18ec422901e7c2a454f2b82afc14573c230c66ae Mon Sep 17 00:00:00 2001 From: ToadKing Date: Fri, 8 Mar 2013 15:32:27 -0500 Subject: [PATCH 44/84] fix back button not opening menu all the time --- android/native/jni/input_android.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index c1190a6786..ffc3c43e08 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -291,6 +291,9 @@ static void *android_input_init(void) static void android_input_poll(void *data) { int ident; + uint64_t *lifecycle_state = &g_extern.lifecycle_state; + *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY) | (1ULL << RARCH_RMENU_TOGGLE)); + while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? -1 : 0, NULL, NULL, NULL)) >= 0) { @@ -298,11 +301,8 @@ static void android_input_poll(void *data) { bool debug_enable = g_settings.input.debug_enable; struct android_app *android_app = (struct android_app*)g_android; - uint64_t *lifecycle_state = &g_extern.lifecycle_state; AInputEvent* event = NULL; - *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY) | (1ULL << RARCH_RMENU_TOGGLE)); - // Read all pending events. while (AInputQueue_hasEvents(android_app->inputQueue)) { From 845e09b3cff7d4b84d01579b2ff42212328987fe Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 8 Mar 2013 23:29:10 +0100 Subject: [PATCH 45/84] (Android) Remove getAxis --- android/native/jni/input_android.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index ffc3c43e08..cd085d0cbe 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -63,12 +63,6 @@ static typeof(AMotionEvent_getAxisValue) *p_AMotionEvent_getAxisValue; #define AMotionEvent_getAxisValue (*p_AMotionEvent_getAxisValue) -float getAxis(AInputEvent *event, int stick, int axis, int pointer) -{ - int axis_arg[2][2] = {{AXIS_X, AXIS_Y}, {AXIS_Z, AXIS_RZ}}; - return AMotionEvent_getAxisValue(event, axis_arg[stick][axis], pointer); -} - /** * Process the next main command. */ From 1804217fd6177db1a732c9ff62a31ef9f4ab56c5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 8 Mar 2013 23:56:12 +0100 Subject: [PATCH 46/84] (Android) Cleanup cpufeatures.c --- android/native/jni/cpufeatures.c | 461 ++++++++++++++----------------- 1 file changed, 212 insertions(+), 249 deletions(-) diff --git a/android/native/jni/cpufeatures.c b/android/native/jni/cpufeatures.c index 7af2dc6410..f593add252 100644 --- a/android/native/jni/cpufeatures.c +++ b/android/native/jni/cpufeatures.c @@ -69,10 +69,6 @@ static int g_cpuCount; # define DEFAULT_CPU_FAMILY ANDROID_CPU_FAMILY_UNKNOWN #endif -#define D(...) \ - do { \ - } while (0) - #ifdef __i386__ static __inline__ void cpu_x86_cpuid(int func, int values[4]) { @@ -126,56 +122,53 @@ cpu_read_file(const char* pathname, char* buffer, size_t buffsize) static char* extract_cpuinfo_field(char* buffer, int buflen, const char* field) { - int fieldlen = strlen(field); - char* bufend = buffer + buflen; - char* result = NULL; - int len; - const char *p, *q; + int fieldlen = strlen(field); + char* bufend = buffer + buflen; + char* result = NULL; + int len; + const char *p, *q; - /* Look for first field occurence, and ensures it starts the line. - */ - p = buffer; - bufend = buffer + buflen; - for (;;) { - p = memmem(p, bufend-p, field, fieldlen); - if (p == NULL) - goto EXIT; + /* Look for first field occurence, and ensures it starts the line. + */ + p = buffer; + bufend = buffer + buflen; + for (;;) + { + p = memmem(p, bufend-p, field, fieldlen); + if (p == NULL) + goto EXIT; - if (p == buffer || p[-1] == '\n') - break; + if (p == buffer || p[-1] == '\n') + break; - p += fieldlen; - } + p += fieldlen; + } - /* Skip to the first column followed by a space */ - p += fieldlen; - p = memchr(p, ':', bufend-p); - if (p == NULL || p[1] != ' ') - goto EXIT; + /* Skip to the first column followed by a space */ + p += fieldlen; + p = memchr(p, ':', bufend-p); + if (p == NULL || p[1] != ' ') + goto EXIT; - /* Find the end of the line */ - p += 2; - q = memchr(p, '\n', bufend-p); - if (q == NULL) - q = bufend; + /* Find the end of the line */ + p += 2; + q = memchr(p, '\n', bufend-p); + if (q == NULL) + q = bufend; - /* Copy the line into a heap-allocated buffer */ - len = q-p; - result = malloc(len+1); - if (result == NULL) - goto EXIT; + /* Copy the line into a heap-allocated buffer */ + len = q-p; + result = malloc(len+1); + if (result == NULL) + goto EXIT; - memcpy(result, p, len); - result[len] = '\0'; + memcpy(result, p, len); + result[len] = '\0'; EXIT: - return result; + return result; } -/* Like strlen(), but for constant string literals */ -#define STRLEN_CONST(x) ((sizeof(x)-1) - - /* Checks that a space-separated list of items contains one given 'item'. * Returns 1 if found, 0 otherwise. */ @@ -188,7 +181,8 @@ has_list_item(const char* list, const char* item) if (list == NULL) return 0; - while (*p) { + while (*p) + { const char* q; /* skip spaces */ @@ -224,7 +218,8 @@ parse_decimal(const char* input, const char* limit, int* result) { const char* p = input; int val = 0; - while (p < limit) { + while (p < limit) + { int d = (*p - '0'); if ((unsigned)d >= 10U) break; @@ -248,28 +243,6 @@ typedef struct { uint32_t mask; } CpuList; -static __inline__ void -cpulist_init(CpuList* list) { - list->mask = 0; -} - -static __inline__ void -cpulist_and(CpuList* list1, CpuList* list2) { - list1->mask &= list2->mask; -} - -static __inline__ void -cpulist_set(CpuList* list, int index) { - if ((unsigned)index < 32) { - list->mask |= (uint32_t)(1U << index); - } -} - -static __inline__ int -cpulist_count(CpuList* list) { - return __builtin_popcount(list->mask); -} - /* Parse a textual list of cpus and store the result inside a CpuList object. * Input format is the following: * - comma-separated list of items (no spaces) @@ -280,73 +253,76 @@ cpulist_count(CpuList* list) { * 2,4-127,128-143 * 0-1 */ -static void -cpulist_parse(CpuList* list, const char* line, int line_len) +static void cpulist_parse(CpuList* list, const char* line, int line_len) { - const char* p = line; - const char* end = p + line_len; - const char* q; + const char* p = line; + const char* end = p + line_len; + const char* q; - /* NOTE: the input line coming from sysfs typically contains a - * trailing newline, so take care of it in the code below - */ - while (p < end && *p != '\n') - { - int val, start_value, end_value; + /* NOTE: the input line coming from sysfs typically contains a + * trailing newline, so take care of it in the code below + */ + while (p < end && *p != '\n') + { + int val, start_value, end_value; - /* Find the end of current item, and put it into 'q' */ - q = memchr(p, ',', end-p); - if (q == NULL) { - q = end; - } + /* Find the end of current item, and put it into 'q' */ + q = memchr(p, ',', end-p); + if (q == NULL) + q = end; - /* Get first value */ - p = parse_decimal(p, q, &start_value); - if (p == NULL) + /* Get first value */ + p = parse_decimal(p, q, &start_value); + if (p == NULL) + goto BAD_FORMAT; + + end_value = start_value; + + /* If we're not at the end of the item, expect a dash and + * and integer; extract end value. + */ + if (p < q && *p == '-') + { + p = parse_decimal(p+1, q, &end_value); + if (p == NULL) goto BAD_FORMAT; + } - end_value = start_value; + /* Set bits CPU list bits */ + for (val = start_value; val <= end_value; val++) + { + if ((unsigned)val < 32) + list->mask |= (uint32_t)(1U << val); + } - /* If we're not at the end of the item, expect a dash and - * and integer; extract end value. - */ - if (p < q && *p == '-') { - p = parse_decimal(p+1, q, &end_value); - if (p == NULL) - goto BAD_FORMAT; - } - - /* Set bits CPU list bits */ - for (val = start_value; val <= end_value; val++) { - cpulist_set(list, val); - } - - /* Jump to next item */ - p = q; - if (p < end) - p++; - } + /* Jump to next item */ + p = q; + if (p < end) + p++; + } BAD_FORMAT: - ; + ; } /* Read a CPU list from one sysfs file */ static void cpulist_read_from(CpuList* list, const char* filename) { - char file[64]; - int filelen; + char file[64]; + int filelen; - cpulist_init(list); + list->mask = 0; - filelen = cpu_read_file(filename, file, sizeof file); - if (filelen < 0) { - D("Could not read %s: %s\n", filename, strerror(errno)); - return; - } + filelen = cpu_read_file(filename, file, sizeof file); - cpulist_parse(list, file, filelen); + if (filelen < 0) + { + RARCH_ERR("Could not read %s: %s\n", filename, strerror(errno)); + return; + } + + cpulist_parse(list, file, filelen); } /* Return the number of cpus present on a given device. @@ -355,192 +331,179 @@ cpulist_read_from(CpuList* list, const char* filename) * intersection of the 'present' and 'possible' CPU lists and count * the result. */ -static int -get_cpu_count(void) +static int get_cpu_count(void) { - CpuList cpus_present[1]; - CpuList cpus_possible[1]; + CpuList cpus_present[1]; + CpuList cpus_possible[1]; - cpulist_read_from(cpus_present, "/sys/devices/system/cpu/present"); - cpulist_read_from(cpus_possible, "/sys/devices/system/cpu/possible"); + cpulist_read_from(cpus_present, "/sys/devices/system/cpu/present"); + cpulist_read_from(cpus_possible, "/sys/devices/system/cpu/possible"); - /* Compute the intersection of both sets to get the actual number of - * CPU cores that can be used on this device by the kernel. - */ - cpulist_and(cpus_present, cpus_possible); + /* Compute the intersection of both sets to get the actual number of + * CPU cores that can be used on this device by the kernel. + */ + cpus_present->mask &= cpus_possible->mask; - return cpulist_count(cpus_present); + return __builtin_popcount(cpus_present->mask); } -static void -android_cpuInit(void) +static void android_cpuInit(void) { - char cpuinfo[4096]; - int cpuinfo_len; + char cpuinfo[4096]; + int cpuinfo_len; - g_cpuFamily = DEFAULT_CPU_FAMILY; - g_cpuFeatures = 0; - g_cpuCount = 1; + g_cpuFamily = DEFAULT_CPU_FAMILY; + g_cpuFeatures = 0; + g_cpuCount = 1; - cpuinfo_len = cpu_read_file("/proc/cpuinfo", cpuinfo, sizeof cpuinfo); - D("cpuinfo_len is (%d):\n%.*s\n", cpuinfo_len, - cpuinfo_len >= 0 ? cpuinfo_len : 0, cpuinfo); + cpuinfo_len = cpu_read_file("/proc/cpuinfo", cpuinfo, sizeof cpuinfo); + RARCH_LOG("cpuinfo_len is (%d):\n%.*s\n", cpuinfo_len, + cpuinfo_len >= 0 ? cpuinfo_len : 0, cpuinfo); - if (cpuinfo_len < 0) /* should not happen */ { - return; - } + if (cpuinfo_len < 0) + return; - /* Count the CPU cores, the value may be 0 for single-core CPUs */ - g_cpuCount = get_cpu_count(); - if (g_cpuCount == 0) { - g_cpuCount = 1; - } + /* Count the CPU cores, the value may be 0 for single-core CPUs */ + g_cpuCount = get_cpu_count(); + if (g_cpuCount == 0) + g_cpuCount = 1; - D("found cpuCount = %d\n", g_cpuCount); + RARCH_LOG("found cpuCount = %d\n", g_cpuCount); #ifdef __ARM_ARCH__ - { - /* Extract architecture from the "CPU Architecture" field. - * The list is well-known, unlike the the output of - * the 'Processor' field which can vary greatly. - * - * See the definition of the 'proc_arch' array in - * $KERNEL/arch/arm/kernel/setup.c and the 'c_show' function in - * same file. - */ - char* cpuArch = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "CPU architecture"); + /* Extract architecture from the "CPU Architecture" field. + * The list is well-known, unlike the the output of + * the 'Processor' field which can vary greatly. + * + * See the definition of the 'proc_arch' array in + * $KERNEL/arch/arm/kernel/setup.c and the 'c_show' function in + * same file. + */ + char* cpuArch = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "CPU architecture"); - if (cpuArch != NULL) { - char* end; - long archNumber; - int hasARMv7 = 0; + if (cpuArch != NULL) + { + char* end; + long archNumber; + int hasARMv7 = 0; - D("found cpuArch = '%s'\n", cpuArch); + RARCH_LOG("found cpuArch = '%s'\n", cpuArch); - /* read the initial decimal number, ignore the rest */ - archNumber = strtol(cpuArch, &end, 10); + /* read the initial decimal number, ignore the rest */ + archNumber = strtol(cpuArch, &end, 10); - /* Here we assume that ARMv8 will be upwards compatible with v7 - * in the future. Unfortunately, there is no 'Features' field to - * indicate that Thumb-2 is supported. - */ - if (end > cpuArch && archNumber >= 7) { - hasARMv7 = 1; + /* Here we assume that ARMv8 will be upwards compatible with v7 + * in the future. Unfortunately, there is no 'Features' field to + * indicate that Thumb-2 is supported. + */ + if (end > cpuArch && archNumber >= 7) + hasARMv7 = 1; + + /* Unfortunately, it seems that certain ARMv6-based CPUs + * report an incorrect architecture number of 7! + * + * See http://code.google.com/p/android/issues/detail?id=10812 + * + * We try to correct this by looking at the 'elf_format' + * field reported by the 'Processor' field, which is of the + * form of "(v7l)" for an ARMv7-based CPU, and "(v6l)" for + * an ARMv6-one. + */ + if (hasARMv7) + { + char* cpuProc = extract_cpuinfo_field(cpuinfo, cpuinfo_len, + "Processor"); + if (cpuProc != NULL) + { + RARCH_LOG("found cpuProc = '%s'\n", cpuProc); + if (has_list_item(cpuProc, "(v6l)")) + { + RARCH_ERR("CPU processor and architecture mismatch!!\n"); + hasARMv7 = 0; } + free(cpuProc); + } + } - /* Unfortunately, it seems that certain ARMv6-based CPUs - * report an incorrect architecture number of 7! - * - * See http://code.google.com/p/android/issues/detail?id=10812 - * - * We try to correct this by looking at the 'elf_format' - * field reported by the 'Processor' field, which is of the - * form of "(v7l)" for an ARMv7-based CPU, and "(v6l)" for - * an ARMv6-one. - */ - if (hasARMv7) { - char* cpuProc = extract_cpuinfo_field(cpuinfo, cpuinfo_len, - "Processor"); - if (cpuProc != NULL) { - D("found cpuProc = '%s'\n", cpuProc); - if (has_list_item(cpuProc, "(v6l)")) { - D("CPU processor and architecture mismatch!!\n"); - hasARMv7 = 0; - } - free(cpuProc); - } - } + if (hasARMv7) + g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_ARMv7; - if (hasARMv7) { - g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_ARMv7; - } + /* The LDREX / STREX instructions are available from ARMv6 */ + if (archNumber >= 6) + g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_LDREX_STREX; - /* The LDREX / STREX instructions are available from ARMv6 */ - if (archNumber >= 6) { - g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_LDREX_STREX; - } + free(cpuArch); + } - free(cpuArch); - } + /* Extract the list of CPU features from 'Features' field */ + char* cpuFeatures = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "Features"); - /* Extract the list of CPU features from 'Features' field */ - char* cpuFeatures = extract_cpuinfo_field(cpuinfo, cpuinfo_len, "Features"); + if (cpuFeatures != NULL) + { + RARCH_LOG("found cpuFeatures = '%s'\n", cpuFeatures); - if (cpuFeatures != NULL) { + if (has_list_item(cpuFeatures, "vfpv3")) + g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3; - D("found cpuFeatures = '%s'\n", cpuFeatures); + else if (has_list_item(cpuFeatures, "vfpv3d16")) + g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3; - if (has_list_item(cpuFeatures, "vfpv3")) - g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3; - - else if (has_list_item(cpuFeatures, "vfpv3d16")) - g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_VFPv3; - - if (has_list_item(cpuFeatures, "neon")) { - /* Note: Certain kernels only report neon but not vfpv3 - * in their features list. However, ARM mandates - * that if Neon is implemented, so must be VFPv3 - * so always set the flag. - */ - g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_NEON | - ANDROID_CPU_ARM_FEATURE_VFPv3; - } - free(cpuFeatures); - } - } + if (has_list_item(cpuFeatures, "neon")) + { + /* Note: Certain kernels only report neon but not vfpv3 + * in their features list. However, ARM mandates + * that if Neon is implemented, so must be VFPv3 + * so always set the flag. + */ + g_cpuFeatures |= ANDROID_CPU_ARM_FEATURE_NEON | + ANDROID_CPU_ARM_FEATURE_VFPv3; + } + free(cpuFeatures); + } #endif /* __ARM_ARCH__ */ #ifdef __i386__ - g_cpuFamily = ANDROID_CPU_FAMILY_X86; + g_cpuFamily = ANDROID_CPU_FAMILY_X86; - int regs[4]; + int regs[4]; -/* According to http://en.wikipedia.org/wiki/CPUID */ + /* According to http://en.wikipedia.org/wiki/CPUID */ #define VENDOR_INTEL_b 0x756e6547 #define VENDOR_INTEL_c 0x6c65746e #define VENDOR_INTEL_d 0x49656e69 - cpu_x86_cpuid(0, regs); - int vendorIsIntel = (regs[1] == VENDOR_INTEL_b && - regs[2] == VENDOR_INTEL_c && - regs[3] == VENDOR_INTEL_d); + cpu_x86_cpuid(0, regs); + int vendorIsIntel = (regs[1] == VENDOR_INTEL_b && + regs[2] == VENDOR_INTEL_c && + regs[3] == VENDOR_INTEL_d); - cpu_x86_cpuid(1, regs); - if ((regs[2] & (1 << 9)) != 0) { - g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_SSSE3; - } - if ((regs[2] & (1 << 23)) != 0) { - g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_POPCNT; - } - if (vendorIsIntel && (regs[2] & (1 << 22)) != 0) { - g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_MOVBE; - } + cpu_x86_cpuid(1, regs); + if ((regs[2] & (1 << 9)) != 0) + g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_SSSE3; + if ((regs[2] & (1 << 23)) != 0) + g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_POPCNT; + if (vendorIsIntel && (regs[2] & (1 << 22)) != 0) + g_cpuFeatures |= ANDROID_CPU_X86_FEATURE_MOVBE; #endif #ifdef _MIPS_ARCH - g_cpuFamily = ANDROID_CPU_FAMILY_MIPS; + g_cpuFamily = ANDROID_CPU_FAMILY_MIPS; #endif /* _MIPS_ARCH */ } - -AndroidCpuFamily -android_getCpuFamily(void) +AndroidCpuFamily android_getCpuFamily(void) { pthread_once(&g_once, android_cpuInit); return g_cpuFamily; } - -uint64_t -android_getCpuFeatures(void) +uint64_t android_getCpuFeatures(void) { pthread_once(&g_once, android_cpuInit); return g_cpuFeatures; } - -int -android_getCpuCount(void) +int android_getCpuCount(void) { pthread_once(&g_once, android_cpuInit); return g_cpuCount; From 037edbd24745e06a2cd3ccc392d4313aec59b0ae Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 01:02:30 +0100 Subject: [PATCH 47/84] (360) Build fixes --- gfx/gfx_context.h | 9 +++++++++ gfx/gl_common.h | 9 --------- xdk/xdk_d3d.cpp | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/gfx/gfx_context.h b/gfx/gfx_context.h index 6e04d283ac..e3c92e56e0 100644 --- a/gfx/gfx_context.h +++ b/gfx/gfx_context.h @@ -29,6 +29,15 @@ #define MAX_EGLIMAGE_TEXTURES 32 +#ifdef HAVE_FBO +enum fbo_option +{ + FBO_DEINIT = 0, + FBO_INIT, + FBO_REINIT +}; +#endif + enum gfx_ctx_api { GFX_CTX_OPENGL_API, diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 1b3b4b2c73..dede0b3be2 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -164,15 +164,6 @@ enum gl_scale_type RARCH_SCALE_VIEWPORT }; -#ifdef HAVE_FBO -enum fbo_option -{ - FBO_DEINIT = 0, - FBO_INIT, - FBO_REINIT -}; -#endif - struct gl_fbo_scale { enum gl_scale_type type_x; diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index b9ef57c615..655366206b 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -26,6 +26,7 @@ #include "../gfx/shader_hlsl.h" #endif +#include "../console/rarch_console_video.h" #include "./../gfx/gfx_context.h" #include "../general.h" #include "../message.h" From 34515fd7f575bdff4e656f330e2380e4649c69c4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 03:20:33 +0100 Subject: [PATCH 48/84] (RARCH_CONSOLE) Integrate rarch-console_video into gfx_common --- console/griffin/griffin.c | 1 - console/rarch_console_video.c | 88 ------------------------------- console/rarch_console_video.h | 97 ----------------------------------- frontend/menu/rgui.c | 2 +- frontend/menu/rmenu.c | 3 +- frontend/menu/rmenu_xui.cpp | 2 +- gfx/gfx_common.c | 70 +++++++++++++++++++++++++ gfx/gfx_common.h | 81 +++++++++++++++++++++++++++++ gfx/gl.c | 8 +-- gx/gx_video.c | 5 +- xdk/xdk_d3d.cpp | 4 +- 11 files changed, 160 insertions(+), 201 deletions(-) delete mode 100644 console/rarch_console_video.c delete mode 100644 console/rarch_console_video.h diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index c2e763f06c..3414acb4e1 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -438,7 +438,6 @@ MENU #endif #ifdef HAVE_RMENU -#include "../rarch_console_video.c" #include "../../frontend/menu/rmenu_settings.c" #if defined(_XBOX360) diff --git a/console/rarch_console_video.c b/console/rarch_console_video.c deleted file mode 100644 index ba504c6c9e..0000000000 --- a/console/rarch_console_video.c +++ /dev/null @@ -1,88 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - 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 - -#include "../general.h" - -#include "rarch_console_video.h" - -struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = { - { "1:1", 1.0f }, - { "2:1", 2.0f }, - { "3:2", 1.5f }, - { "3:4", 0.75f }, - { "4:1", 4.0f }, - { "4:3", 1.3333f }, - { "4:4", 1.0f }, - { "5:4", 1.25f }, - { "6:5", 1.2f }, - { "7:9", 0.7777f }, - { "8:3", 2.6666f }, - { "8:7", 1.1428f }, - { "16:9", 1.7778f }, - { "16:10", 1.6f }, - { "16:15", 3.2f }, - { "19:12", 1.5833f }, - { "19:14", 1.3571f }, - { "30:17", 1.7647f }, - { "32:9", 3.5555f }, - { "Auto", 1.0f }, - { "Core Provided", 1.0f }, - { "Custom", 0.0f } -}; - -char rotation_lut[ASPECT_RATIO_END][32] = -{ - "Normal", - "Vertical", - "Flipped", - "Flipped Rotated" -}; - -void rarch_set_auto_viewport(unsigned width, unsigned height) -{ - if(width == 0 || height == 0) - return; - - unsigned aspect_x, aspect_y, len, highest, i; - - len = width < height ? width : height; - highest = 1; - for (i = 1; i < len; i++) - { - if ((width % i) == 0 && (height % i) == 0) - highest = i; - } - - aspect_x = width / highest; - aspect_y = height / highest; - - snprintf(aspectratio_lut[ASPECT_RATIO_AUTO].name, sizeof(aspectratio_lut[ASPECT_RATIO_AUTO].name), "%d:%d (Auto)", aspect_x, aspect_y); - aspectratio_lut[ASPECT_RATIO_AUTO].value = (float) aspect_x / aspect_y; -} - -void rarch_set_core_viewport(void) -{ - if (!g_extern.main_is_init) - return; - - // fallback to 1:1 pixel ratio if none provided - if (g_extern.system.av_info.geometry.aspect_ratio == 0.0) - aspectratio_lut[ASPECT_RATIO_CORE].value = (float) g_extern.system.av_info.geometry.base_width / g_extern.system.av_info.geometry.base_height; - else - aspectratio_lut[ASPECT_RATIO_CORE].value = g_extern.system.av_info.geometry.aspect_ratio; -} diff --git a/console/rarch_console_video.h b/console/rarch_console_video.h deleted file mode 100644 index 1b2a39e181..0000000000 --- a/console/rarch_console_video.h +++ /dev/null @@ -1,97 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - 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 . - */ - -#ifndef RARCH_CONSOLE_VIDEO_H__ -#define RARCH_CONSOLE_VIDEO_H__ - -#define MIN_SCALING_FACTOR (1.0f) - -#if defined(__CELLOS_LV2__) -#define MAX_SCALING_FACTOR (5.0f) -#else -#define MAX_SCALING_FACTOR (2.0f) -#endif - - -enum aspect_ratio -{ - ASPECT_RATIO_1_1 = 0, - ASPECT_RATIO_2_1, - ASPECT_RATIO_3_2, - ASPECT_RATIO_3_4, - ASPECT_RATIO_4_1, - ASPECT_RATIO_4_3, - ASPECT_RATIO_4_4, - ASPECT_RATIO_5_4, - ASPECT_RATIO_6_5, - ASPECT_RATIO_7_9, - ASPECT_RATIO_8_3, - ASPECT_RATIO_8_7, - ASPECT_RATIO_16_9, - ASPECT_RATIO_16_10, - ASPECT_RATIO_16_15, - ASPECT_RATIO_19_12, - ASPECT_RATIO_19_14, - ASPECT_RATIO_30_17, - ASPECT_RATIO_32_9, - ASPECT_RATIO_AUTO, - ASPECT_RATIO_CORE, - ASPECT_RATIO_CUSTOM, - - ASPECT_RATIO_END, -}; - -#define LAST_ASPECT_RATIO ASPECT_RATIO_CUSTOM - -enum rotation -{ - ORIENTATION_NORMAL = 0, - ORIENTATION_VERTICAL, - ORIENTATION_FLIPPED, - ORIENTATION_FLIPPED_ROTATED, - ORIENTATION_END -}; - -#define LAST_ORIENTATION (ORIENTATION_END-1) - -extern char rotation_lut[ASPECT_RATIO_END][32]; - -/* ABGR color format defines */ - -#define WHITE 0xffffffffu -#define RED 0xff0000ffu -#define GREEN 0xff00ff00u -#define BLUE 0xffff0000u -#define YELLOW 0xff00ffffu -#define PURPLE 0xffff00ffu -#define CYAN 0xffffff00u -#define ORANGE 0xff0063ffu -#define SILVER 0xff8c848cu -#define LIGHTBLUE 0xFFFFE0E0U -#define LIGHTORANGE 0xFFE0EEFFu - -struct aspect_ratio_elem -{ - char name[64]; - float value; -}; - -extern struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END]; - -extern void rarch_set_auto_viewport(unsigned width, unsigned height); -extern void rarch_set_core_viewport(void); - -#endif diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index dd0ecc9515..7b1cd69357 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -22,7 +22,7 @@ #include "rgui.h" #include "utils/file_list.h" #include "rmenu_settings.h" -#include "../../console/rarch_console_video.h" +#include "../../gfx/gfx_common.h" #include "../../screenshot.h" #define TERM_START_X 15 diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 53c8f2f1a5..6dcc9eb74e 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -33,8 +33,7 @@ #include "../../gfx/image.h" -#include "../../console/rarch_console_video.h" - +#include "../../gfx/gfx_common.h" #include "../../gfx/gfx_context.h" #include "../../file.h" diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index 4869add564..e14a547397 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -25,8 +25,8 @@ #include "../../console/rarch_console.h" #include "rmenu_settings.h" -#include "../../console/rarch_console_video.h" +#include "../../gfx/gfx_common.h" #include "../../gfx/gfx_context.h" #include "../../message.h" diff --git a/gfx/gfx_common.c b/gfx/gfx_common.c index c70bf7af70..790a17bc26 100644 --- a/gfx/gfx_common.c +++ b/gfx/gfx_common.c @@ -169,3 +169,73 @@ void gfx_scale_integer(struct rarch_viewport *vp, unsigned width, unsigned heigh vp->y = padding_y >> 1; } +#ifdef HAVE_RMENU + +struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = { + { "1:1", 1.0f }, + { "2:1", 2.0f }, + { "3:2", 1.5f }, + { "3:4", 0.75f }, + { "4:1", 4.0f }, + { "4:3", 1.3333f }, + { "4:4", 1.0f }, + { "5:4", 1.25f }, + { "6:5", 1.2f }, + { "7:9", 0.7777f }, + { "8:3", 2.6666f }, + { "8:7", 1.1428f }, + { "16:9", 1.7778f }, + { "16:10", 1.6f }, + { "16:15", 3.2f }, + { "19:12", 1.5833f }, + { "19:14", 1.3571f }, + { "30:17", 1.7647f }, + { "32:9", 3.5555f }, + { "Auto", 1.0f }, + { "Core Provided", 1.0f }, + { "Custom", 0.0f } +}; + +char rotation_lut[ASPECT_RATIO_END][32] = +{ + "Normal", + "Vertical", + "Flipped", + "Flipped Rotated" +}; + +void gfx_set_auto_viewport(unsigned width, unsigned height) +{ + if(width == 0 || height == 0) + return; + + unsigned aspect_x, aspect_y, len, highest, i; + + len = width < height ? width : height; + highest = 1; + for (i = 1; i < len; i++) + { + if ((width % i) == 0 && (height % i) == 0) + highest = i; + } + + aspect_x = width / highest; + aspect_y = height / highest; + + snprintf(aspectratio_lut[ASPECT_RATIO_AUTO].name, sizeof(aspectratio_lut[ASPECT_RATIO_AUTO].name), "%d:%d (Auto)", aspect_x, aspect_y); + aspectratio_lut[ASPECT_RATIO_AUTO].value = (float) aspect_x / aspect_y; +} + +void gfx_set_core_viewport(void) +{ + if (!g_extern.main_is_init) + return; + + // fallback to 1:1 pixel ratio if none provided + if (g_extern.system.av_info.geometry.aspect_ratio == 0.0) + aspectratio_lut[ASPECT_RATIO_CORE].value = (float) g_extern.system.av_info.geometry.base_width / g_extern.system.av_info.geometry.base_height; + else + aspectratio_lut[ASPECT_RATIO_CORE].value = g_extern.system.av_info.geometry.aspect_ratio; +} + +#endif diff --git a/gfx/gfx_common.h b/gfx/gfx_common.h index 90124617f8..d546fad56c 100644 --- a/gfx/gfx_common.h +++ b/gfx/gfx_common.h @@ -40,6 +40,87 @@ void gfx_set_dwm(void); void gfx_scale_integer(struct rarch_viewport *vp, unsigned win_width, unsigned win_height, float aspect_ratio, bool keep_aspect); +#ifdef HAVE_RMENU + +#define MIN_SCALING_FACTOR (1.0f) + +#if defined(__CELLOS_LV2__) +#define MAX_SCALING_FACTOR (5.0f) +#else +#define MAX_SCALING_FACTOR (2.0f) +#endif + + +enum aspect_ratio +{ + ASPECT_RATIO_1_1 = 0, + ASPECT_RATIO_2_1, + ASPECT_RATIO_3_2, + ASPECT_RATIO_3_4, + ASPECT_RATIO_4_1, + ASPECT_RATIO_4_3, + ASPECT_RATIO_4_4, + ASPECT_RATIO_5_4, + ASPECT_RATIO_6_5, + ASPECT_RATIO_7_9, + ASPECT_RATIO_8_3, + ASPECT_RATIO_8_7, + ASPECT_RATIO_16_9, + ASPECT_RATIO_16_10, + ASPECT_RATIO_16_15, + ASPECT_RATIO_19_12, + ASPECT_RATIO_19_14, + ASPECT_RATIO_30_17, + ASPECT_RATIO_32_9, + ASPECT_RATIO_AUTO, + ASPECT_RATIO_CORE, + ASPECT_RATIO_CUSTOM, + + ASPECT_RATIO_END, +}; + +#define LAST_ASPECT_RATIO ASPECT_RATIO_CUSTOM + +enum rotation +{ + ORIENTATION_NORMAL = 0, + ORIENTATION_VERTICAL, + ORIENTATION_FLIPPED, + ORIENTATION_FLIPPED_ROTATED, + ORIENTATION_END +}; + +#define LAST_ORIENTATION (ORIENTATION_END-1) + +extern char rotation_lut[ASPECT_RATIO_END][32]; + +/* ABGR color format defines */ + +#define WHITE 0xffffffffu +#define RED 0xff0000ffu +#define GREEN 0xff00ff00u +#define BLUE 0xffff0000u +#define YELLOW 0xff00ffffu +#define PURPLE 0xffff00ffu +#define CYAN 0xffffff00u +#define ORANGE 0xff0063ffu +#define SILVER 0xff8c848cu +#define LIGHTBLUE 0xFFFFE0E0U +#define LIGHTORANGE 0xFFE0EEFFu + +struct aspect_ratio_elem +{ + char name[64]; + float value; +}; + +extern struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END]; + +extern void gfx_set_auto_viewport(unsigned width, unsigned height); +extern void gfx_set_core_viewport(void); + +#endif + #ifdef __cplusplus } #endif diff --git a/gfx/gl.c b/gfx/gl.c index c8f009dbab..6f1179ea81 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -49,10 +49,6 @@ #include "shader_common.h" -#ifdef HAVE_RMENU -#include "../console/rarch_console_video.h" -#endif - #ifdef __CELLOS_LV2__ #define FPS_COUNTER #endif @@ -2097,9 +2093,9 @@ static void gl_set_aspect_ratio(void *data, unsigned aspectratio_index) gl_t *gl = driver.video_data; if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_AUTO) - rarch_set_auto_viewport(g_extern.frame_cache.width, g_extern.frame_cache.height); + gfx_set_auto_viewport(g_extern.frame_cache.width, g_extern.frame_cache.height); else if(g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CORE) - rarch_set_core_viewport(); + gfx_set_core_viewport(); g_settings.video.aspect_ratio = aspectratio_lut[g_settings.video.aspect_ratio_idx].value; g_settings.video.force_aspect = false; diff --git a/gx/gx_video.c b/gx/gx_video.c index c7ddc86e56..b9cc658c81 100644 --- a/gx/gx_video.c +++ b/gx/gx_video.c @@ -17,7 +17,6 @@ #include "../driver.h" #include "../general.h" -#include "../console/rarch_console_video.h" #include "../gfx/fonts/bitmap.h" #include "../frontend/menu/rgui.h" #include "../gfx/gfx_common.h" @@ -276,9 +275,9 @@ void gx_set_aspect_ratio(void *data, unsigned aspectratio_idx) gx_video_t *gx = (gx_video_t*)driver.video_data; if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_AUTO) - rarch_set_auto_viewport(g_extern.frame_cache.width, g_extern.frame_cache.height); + gfx_set_auto_viewport(g_extern.frame_cache.width, g_extern.frame_cache.height); else if(g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CORE) - rarch_set_core_viewport(); + gfx_set_core_viewport(); g_settings.video.aspect_ratio = aspectratio_lut[g_settings.video.aspect_ratio_idx].value; g_settings.video.force_aspect = false; diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index 655366206b..98a6053d38 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -994,9 +994,9 @@ static void xdk_d3d_set_aspect_ratio(void *data, unsigned aspectratio_index) xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_AUTO) - rarch_set_auto_viewport(g_extern.frame_cache.width, g_extern.frame_cache.height); + gfx_set_auto_viewport(g_extern.frame_cache.width, g_extern.frame_cache.height); else if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CORE) - rarch_set_core_viewport(); + gfx_set_core_viewport(); g_settings.video.aspect_ratio = aspectratio_lut[g_settings.video.aspect_ratio_idx].value; g_settings.video.force_aspect = false; From b4a3ce79bb0a16ff359458fffc873d7bc1a6ec24 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 9 Mar 2013 09:44:48 +0100 Subject: [PATCH 49/84] Add replace/add image interfaces. --- libretro.h | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/libretro.h b/libretro.h index f765a66047..7fd75067c8 100755 --- a/libretro.h +++ b/libretro.h @@ -435,7 +435,7 @@ struct retro_keyboard_callback retro_keyboard_event_t callback; }; -// Callback for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. +// Callbacks for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. // Should be set for implementations which can swap out multiple disk images in runtime. // If the implementation can do this automatically, it should strive to do so. // However, there are cases where the user must manually do so. @@ -443,9 +443,10 @@ struct retro_keyboard_callback // Overview: To swap a disk image, eject the disk image with set_eject_state(true). // Set the disk index with set_image_index(index). Insert the disk again with set_eject_state(false). -// If ejected is true, "ejects" the virtual disk tray. When ejected, the disk image index can be set. +// If ejected is true, "ejects" the virtual disk tray. +// When ejected, the disk image index can be set. typedef bool (*retro_set_eject_state_t)(bool ejected); -// Gets current eject state. The initial state is not ejected. +// Gets current eject state. The initial state is 'not ejected'. typedef bool (*retro_get_eject_state_t)(void); // Gets current disk index. First disk is index 0. // If return value is >= get_num_images(), no disk is currently inserted. @@ -455,6 +456,16 @@ typedef unsigned (*retro_get_image_index_t)(void); typedef bool (*retro_set_image_index_t)(unsigned index); // Gets total number of images which are available to use. typedef unsigned (*retro_get_num_images_t)(void); +// +// Replaces the disk image associated with index. +// Arguments to pass in info have same requirements as retro_load_game(). +// Virtual disk tray must be ejected when calling this. +struct retro_game_info; +typedef bool (*retro_replace_image_index_t)(unsigned index, const struct retro_game_info *info); +// Adds a new valid index (get_num_images()) to the internal disk list. +// This will increment subsequent return values from get_num_images() by 1. +// This image index cannot be used until a disk image has been set with replace_image_index. +typedef bool (*retro_add_image_index_t)(void); struct retro_disk_control_callback { @@ -464,6 +475,9 @@ struct retro_disk_control_callback retro_get_image_index_t get_image_index; retro_set_image_index_t set_image_index; retro_get_num_images_t get_num_images; + + retro_replace_image_index_t replace_image_index; + retro_add_image_index_t add_image_index; }; enum retro_pixel_format From 1221e3a242c056e3a54f8f57e45255e3c902a526 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 9 Mar 2013 09:52:24 +0100 Subject: [PATCH 50/84] Clarify that it's possible to remove images from the list. --- libretro.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libretro.h b/libretro.h index 7fd75067c8..0c39e6edae 100755 --- a/libretro.h +++ b/libretro.h @@ -460,6 +460,11 @@ typedef unsigned (*retro_get_num_images_t)(void); // Replaces the disk image associated with index. // Arguments to pass in info have same requirements as retro_load_game(). // Virtual disk tray must be ejected when calling this. +// Replacing a disk image with info = NULL will remove the disk image from the internal list. +// As a result, calls to get_image_index() can change. +// +// E.g. replace_image_index(1, NULL), and previous get_image_index() returned 4 before. +// Index 1 will be removed, and the new index is 3. struct retro_game_info; typedef bool (*retro_replace_image_index_t)(unsigned index, const struct retro_game_info *info); // Adds a new valid index (get_num_images()) to the internal disk list. From 651cd600e3e3cd2175e005bdd81782bda2438cbc Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 9 Mar 2013 09:58:31 +0100 Subject: [PATCH 51/84] Add disk control to retroarch-joyconfig. --- tools/retroarch-joyconfig.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/retroarch-joyconfig.c b/tools/retroarch-joyconfig.c index fe3ec39d77..48d5f19303 100644 --- a/tools/retroarch-joyconfig.c +++ b/tools/retroarch-joyconfig.c @@ -123,6 +123,8 @@ static struct bind binds[] = { MISC_BIND("Volume up", volume_up), MISC_BIND("Volume down", volume_down), MISC_BIND("Next overlay", overlay_next), + MISC_BIND("Disk eject toggle", disk_eject_toggle), + MISC_BIND("Disk next cycle", disk_next), }; #define MAX_BUTTONS 32 From 4bca26097c1fb73c5629f249c52e02793211fe2a Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 9 Mar 2013 11:00:00 +0100 Subject: [PATCH 52/84] Clarify branch intention better. --- retroarch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/retroarch.c b/retroarch.c index a7111262bd..6ec021944f 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2874,7 +2874,7 @@ bool rarch_main_iterate(void) } #ifdef HAVE_RMENU - if (input_key_pressed_func(RARCH_RMENU_TOGGLE) && !(g_extern.frame_count < g_extern.delay_timer[0])) + if (input_key_pressed_func(RARCH_RMENU_TOGGLE) && g_extern.frame_count >= g_extern.delay_timer[0]) { if (input_key_pressed_func(RARCH_RMENU_QUICKMENU_TOGGLE)) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME); From 1e44407bd846ea13dad3151775cc696e495a8a31 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 9 Mar 2013 13:28:40 +0100 Subject: [PATCH 53/84] Bump SINC_HIGHEST BW to 0.962. --- audio/sinc.c | 2 +- audio/test/sinc_test.m | 24 +++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/audio/sinc.c b/audio/sinc.c index 545f53c5f0..1024fbd056 100644 --- a/audio/sinc.c +++ b/audio/sinc.c @@ -71,7 +71,7 @@ #elif defined(SINC_HIGHEST_QUALITY) #define SINC_WINDOW_KAISER #define SINC_WINDOW_KAISER_BETA 14.5 -#define CUTOFF 0.95 +#define CUTOFF 0.962 #define PHASE_BITS 10 #define SUBPHASE_BITS 14 #define SINC_COEFF_LERP 1 diff --git a/audio/test/sinc_test.m b/audio/test/sinc_test.m index 57173ce833..1c7401fcb2 100644 --- a/audio/test/sinc_test.m +++ b/audio/test/sinc_test.m @@ -12,9 +12,10 @@ subplot(2, 1, 2), plot(rarch_kaiser - real_kaiser), title('Error'); %% % 4-tap and 8-tap are Lanczos windowed, but include here for completeness. phases = 256; -bw = 0.375; -downsample = round(phases / bw); -cutoffs = bw * [0.65 0.75 0.825 0.90 0.95]; +ratio = 2.0; +bw = min(1.0, ratio); +downsample = round(phases / ratio); +cutoffs = bw * [0.65 0.75 0.825 0.90 0.962]; betas = [2.0 3.0 5.5 10.5 14.5]; sidelobes = round([2 4 8 32 128] / bw); @@ -22,28 +23,29 @@ taps = sidelobes * 2; freqs = 0.05 : 0.02 : 0.99; -filters = length(taps); -for i = 1 : filters +%filters = length(taps); +%for i = 1 : filters +for i = 5 filter_length = taps(i) * phases; % Generate SINC. - sinc_indices = 2 * ((0 : (filter_length - 1)) / (filter_length - 1)) - 1; + sinc_indices = 2 * ((0 : (filter_length - 1)) / filter_length) - 1; s = cutoffs(i) * sinc(cutoffs(i) * sinc_indices * sidelobes(i)); win = kaiser(filter_length, betas(i))'; filter = s .* win; - impulse_response_half = 0.5 * upfirdn(1, filter, phases, downsample); + impulse_response_half = upfirdn(1, filter, phases, downsample) / bw; figure('name', sprintf('Response SINC: %d taps', taps(i))); freqz(impulse_response_half); ylim([-200 0]); - signal = zeros(1, 8001); + signal = zeros(1, 80001); for freq = freqs - signal = signal + sin(pi * freq * (0 : 8000)); + signal = signal + sin(pi * freq * (0 : 80000)); end resampled = upfirdn(signal, filter, phases, downsample); figure('name', sprintf('Kaiser SINC: %d taps, w = %.f', taps(i), freq)); - freqz(resampled .* kaiser(length(resampled), 40.0)'); - ylim([-80 70]); + freqz(resampled .* kaiser(length(resampled), 40.0)', 1, 16 * 1024); + ylim([-180 100]); end \ No newline at end of file From af7430b767291a1bdfea3ef369da135027257e47 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 15:23:54 +0100 Subject: [PATCH 54/84] Get rid of some extraneous HAVE_RMENU ifdefs in retroarch.c --- retroarch.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/retroarch.c b/retroarch.c index 6ec021944f..e9fde9b042 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2858,18 +2858,14 @@ bool rarch_main_iterate(void) // SHUTDOWN on consoles should exit RetroArch completely. if (g_extern.system.shutdown) { -#ifdef HAVE_RMENU g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); -#endif return false; } // Time to drop? if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) { -#ifdef HAVE_RMENU g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); -#endif return false; } From 18ba3ef3e50fcf8555499152d80db465658442cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 15:33:44 +0100 Subject: [PATCH 55/84] Integrate rmenu_genric.c into rgui.c --- console/griffin/griffin.c | 2 - frontend/menu/rgui.c | 394 ++++++++++++++++++++++++++++++++ frontend/menu/rmenu_generic.c | 413 ---------------------------------- 3 files changed, 394 insertions(+), 415 deletions(-) delete mode 100644 frontend/menu/rmenu_generic.c diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index 3414acb4e1..2fa09cc89a 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -442,8 +442,6 @@ MENU #if defined(_XBOX360) #include "../../frontend/menu/rmenu_xui.cpp" -#elif defined(HAVE_RGUI) -#include "../../frontend/menu/rmenu_generic.c" #endif #endif diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 7b1cd69357..1bc66e0d96 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -22,7 +22,14 @@ #include "rgui.h" #include "utils/file_list.h" #include "rmenu_settings.h" +#include "../../general.h" #include "../../gfx/gfx_common.h" + +#ifdef HAVE_OPENGL +#include "../../gfx/gl_common.h" +#endif + +#include "../../gfx/fonts/bitmap.h" #include "../../screenshot.h" #define TERM_START_X 15 @@ -127,6 +134,8 @@ static const char *rgui_device_labels[] = { unsigned RGUI_WIDTH = 320; unsigned RGUI_HEIGHT = 240; +uint16_t menu_framebuf[400 * 240]; +rgui_handle_t *rgui; struct rgui_handle { @@ -1424,3 +1433,388 @@ int rgui_iterate(rgui_handle_t *rgui, rgui_action_t action) return ret; } + +static const struct retro_keybind _rmenu_nav_binds[] = { +#if defined(HW_RVL) + { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP | GX_CLASSIC_UP | GX_CLASSIC_LSTICK_UP | GX_CLASSIC_RSTICK_UP | GX_WIIMOTE_UP | GX_NUNCHUK_UP, 0 }, + { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN | GX_CLASSIC_DOWN | GX_CLASSIC_LSTICK_DOWN | GX_CLASSIC_RSTICK_DOWN | GX_WIIMOTE_DOWN | GX_NUNCHUK_DOWN, 0 }, + { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT | GX_CLASSIC_LEFT | GX_CLASSIC_LSTICK_LEFT | GX_CLASSIC_RSTICK_LEFT | GX_WIIMOTE_LEFT | GX_NUNCHUK_LEFT, 0 }, + { 0, 0, NULL, 0, GX_GC_RIGHT | GX_GC_LSTICK_RIGHT | GX_GC_RSTICK_RIGHT | GX_CLASSIC_RIGHT | GX_CLASSIC_LSTICK_RIGHT | GX_CLASSIC_RSTICK_RIGHT | GX_WIIMOTE_RIGHT | GX_NUNCHUK_RIGHT, 0 }, + { 0, 0, NULL, 0, GX_GC_A | GX_CLASSIC_A | GX_WIIMOTE_A | GX_WIIMOTE_2, 0 }, + { 0, 0, NULL, 0, GX_GC_B | GX_CLASSIC_B | GX_WIIMOTE_B | GX_WIIMOTE_1, 0 }, + { 0, 0, NULL, 0, GX_GC_START | GX_CLASSIC_PLUS | GX_WIIMOTE_PLUS, 0 }, + { 0, 0, NULL, 0, GX_GC_Z_TRIGGER | GX_CLASSIC_MINUS | GX_WIIMOTE_MINUS, 0 }, + { 0, 0, NULL, 0, GX_WIIMOTE_HOME | GX_CLASSIC_HOME, 0 }, +#elif defined(HW_DOL) + { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP, 0 }, + { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN, 0 }, + { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT, 0 }, + { 0, 0, NULL, 0, GX_GC_RIGHT | GX_GC_LSTICK_RIGHT | GX_GC_RSTICK_RIGHT, 0 }, + { 0, 0, NULL, 0, GX_GC_A, 0 }, + { 0, 0, NULL, 0, GX_GC_B, 0 }, + { 0, 0, NULL, 0, GX_GC_START, 0 }, + { 0, 0, NULL, 0, GX_GC_Z_TRIGGER, 0 }, + { 0, 0, NULL, 0, GX_WIIMOTE_HOME, 0 }, + { 0, 0, NULL, 0, GX_QUIT_KEY, 0 }, +#else + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_UP), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_A), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_B), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_START), 0 }, + { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT), 0 }, + { 0, 0, NULL, 0, (1ULL << RARCH_RMENU_TOGGLE), 0 }, + { 0, 0, NULL, 0, (1ULL << RARCH_QUIT_KEY), 0 }, +#endif +}; + +static const struct retro_keybind *rmenu_nav_binds[] = { + _rmenu_nav_binds +}; + +enum +{ + GX_DEVICE_NAV_UP = 0, + GX_DEVICE_NAV_DOWN, + GX_DEVICE_NAV_LEFT, + GX_DEVICE_NAV_RIGHT, + GX_DEVICE_NAV_A, + GX_DEVICE_NAV_B, + GX_DEVICE_NAV_START, + GX_DEVICE_NAV_SELECT, + GX_DEVICE_NAV_MENU, + GX_DEVICE_NAV_QUIT, + RMENU_DEVICE_NAV_LAST +}; + +#ifdef GEKKO +static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, + void *userdata, void *ctx) +{ +#ifdef HAVE_LIBRETRO_MANAGEMENT + bool core_chooser = (userdata) ? *(rgui_file_type_t *)userdata == RGUI_SETTINGS_CORE : false; +#else + bool core_chooser = false; +#endif + + if (!*directory) + { +#ifdef HW_RVL + file_cb(ctx, "sd:", RGUI_FILE_DEVICE, 0); + file_cb(ctx, "usb:", RGUI_FILE_DEVICE, 0); +#endif + file_cb(ctx, "carda:", RGUI_FILE_DEVICE, 0); + file_cb(ctx, "cardb:", RGUI_FILE_DEVICE, 0); + return true; + } + +#ifdef HW_RVL + LWP_MutexLock(gx_device_mutex); + int dev = gx_get_device_from_path(directory); + + if (dev != -1 && !gx_devices[dev].mounted && gx_devices[dev].interface->isInserted()) + fatMountSimple(gx_devices[dev].name, gx_devices[dev].interface); + + LWP_MutexUnlock(gx_device_mutex); +#endif + + char exts[256]; + if (core_chooser) + strlcpy(exts, "dol|DOL", sizeof(exts)); + else + strlcpy(exts, g_extern.system.valid_extensions, sizeof(exts)); + + struct string_list *ext_list = string_split(exts, "|"); + + char _dir[PATH_MAX]; + snprintf(_dir, sizeof(_dir), "%s/", directory); + DIR *dir = opendir(_dir); + if (!dir) + return false; + + struct dirent *entry; + while ((entry = readdir(dir))) + { + char stat_path[PATH_MAX]; + const char *file_ext = path_get_extension(entry->d_name); + snprintf(stat_path, sizeof(stat_path), "%s/%s", directory, entry->d_name); + bool is_dir; + +#ifdef _DIRENT_HAVE_D_TYPE + is_dir = (entry->d_type == DT_DIR); + if (entry->d_type != DT_REG && !is_dir) + continue; +#else + struct stat st; + if (stat(stat_path, &st) < 0) + continue; + + is_dir = S_ISDIR(st.st_mode); + if (!S_ISREG(st.st_mode) && !is_dir) + continue; +#endif + + if (core_chooser && (is_dir || strcasecmp(entry->d_name, default_paths.salamander_file) == 0)) + continue; + + if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) + continue; + + file_cb(ctx, + entry->d_name, + is_dir ? RGUI_FILE_DIRECTORY : RGUI_FILE_PLAIN, 0); + } + + closedir(dir); + string_list_free(ext_list); + return true; +} +#else +static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, + void *userdata, void *ctx) +{ + struct string_list *ext_list = string_split(g_extern.system.valid_extensions, "|"); + + char _dir[PATH_MAX]; + snprintf(_dir, sizeof(_dir), "%s/", directory); + DIR *dir = opendir(_dir); + if (!dir) + return false; + + struct dirent *entry; + while ((entry = readdir(dir))) + { + char stat_path[PATH_MAX]; + const char *file_ext = path_get_extension(entry->d_name); + snprintf(stat_path, sizeof(stat_path), "%s/%s", directory, entry->d_name); + bool is_dir; + +#ifdef _DIRENT_HAVE_D_TYPE + is_dir = (entry->d_type == DT_DIR); + if (entry->d_type != DT_REG && !is_dir) + continue; +#else + struct stat st; + if (stat(stat_path, &st) < 0) + continue; + + is_dir = S_ISDIR(st.st_mode); + if (!S_ISREG(st.st_mode) && !is_dir) + continue; +#endif + + if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) + continue; + + file_cb(ctx, + entry->d_name, + is_dir ? RGUI_FILE_DIRECTORY : RGUI_FILE_PLAIN, 0); + } + + closedir(dir); + string_list_free(ext_list); + return true; +} +#endif + +/*============================================================ +RMENU API +============================================================ */ + +void menu_init(void) +{ +#if defined(HAVE_OPENGL) + gl_t *device_ptr = (gl_t*)driver.video_data; +#elif defined(GEKKO) + gx_video_t *device_ptr = (gx_video_t*)driver.video_data; +#endif + + device_ptr->menu_data = (uint32_t *) menu_framebuf; + + rgui = rgui_init("", + menu_framebuf, RGUI_WIDTH * sizeof(uint16_t), + NULL, bitmap_bin, folder_cb, NULL); + + rgui_iterate(rgui, RGUI_ACTION_REFRESH); +} + +void menu_free(void) +{ + rgui_free(rgui); +} + +static uint16_t trigger_state = 0; + +int rmenu_input_process(void *data, void *state) +{ + if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) + { + if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) + rmenu_settings_msg(S_MSG_LOADING_ROM, 100); + + if (g_extern.fullpath) + g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); + + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); + return -1; + } + + if (!(g_extern.frame_count < g_extern.delay_timer[0])) + { + bool return_to_game_enable = ((trigger_state & (1ULL << GX_DEVICE_NAV_MENU)) && g_extern.main_is_init); + + if (return_to_game_enable) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + return -1; + } + } + + return 0; +} + +bool rmenu_iterate(void) +{ + static uint16_t old_input_state = 0; + static bool initial_held = true; + static bool first_held = false; + + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); + driver.video->apply_state_changes(); + + g_extern.frame_count++; + + uint16_t input_state = 0; + + driver.input->poll(NULL); + +#ifdef HAVE_OVERLAY + if (driver.overlay) + { + driver.overlay_state = 0; + + unsigned device = input_overlay_full_screen(driver.overlay) ? + RARCH_DEVICE_POINTER_SCREEN : RETRO_DEVICE_POINTER; + + bool polled = false; + for (unsigned i = 0; + input_input_state_func(NULL, 0, device, i, RETRO_DEVICE_ID_POINTER_PRESSED); + i++) + { + int16_t x = input_input_state_func(NULL, 0, + device, i, RETRO_DEVICE_ID_POINTER_X); + int16_t y = input_input_state_func(NULL, 0, + device, i, RETRO_DEVICE_ID_POINTER_Y); + + driver.overlay_state |= input_overlay_poll(driver.overlay, x, y); + polled = true; + } + + if (!polled) + input_overlay_poll_clear(driver.overlay); + } +#endif + +#ifndef GEKKO + /* TODO - not sure if correct regarding RARCH_QUIT_KEY */ + if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + goto deinit; + } +#endif + + for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) + input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, + RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; + + input_state |= driver.input->key_pressed(driver.input_data, RARCH_RMENU_TOGGLE) ? (1ULL << GX_DEVICE_NAV_MENU) : 0; + input_state |= driver.input->key_pressed(driver.input_data, RARCH_QUIT_KEY) ? (1ULL << GX_DEVICE_NAV_QUIT) : 0; + +#ifdef HAVE_OVERLAY + for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) + input_state |= driver.overlay_state & rmenu_nav_binds[0][i].joykey ? (1ULL << i) : 0; +#endif + + trigger_state = input_state & ~old_input_state; + bool do_held = (input_state & ((1ULL << GX_DEVICE_NAV_UP) | (1ULL << GX_DEVICE_NAV_DOWN) | (1ULL << GX_DEVICE_NAV_LEFT) | (1ULL << GX_DEVICE_NAV_RIGHT))) && !(input_state & ((1ULL << GX_DEVICE_NAV_MENU) | (1ULL << GX_DEVICE_NAV_QUIT))); + + if(do_held) + { + if(!first_held) + { + first_held = true; + g_extern.delay_timer[1] = g_extern.frame_count + (initial_held ? 15 : 7); + } + + if (!(g_extern.frame_count < g_extern.delay_timer[1])) + { + first_held = false; + trigger_state = input_state; //second input frame set as current frame + } + + initial_held = false; + } + else + { + first_held = false; + initial_held = true; + } + + old_input_state = input_state; + + rgui_action_t action = RGUI_ACTION_NOOP; + + // don't run anything first frame, only capture held inputs for old_input_state + if (trigger_state & (1ULL << GX_DEVICE_NAV_UP)) + action = RGUI_ACTION_UP; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_DOWN)) + action = RGUI_ACTION_DOWN; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_LEFT)) + action = RGUI_ACTION_LEFT; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_RIGHT)) + action = RGUI_ACTION_RIGHT; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_B)) + action = RGUI_ACTION_CANCEL; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_A)) + action = RGUI_ACTION_OK; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_START)) + action = RGUI_ACTION_START; + else if (trigger_state & (1ULL << GX_DEVICE_NAV_SELECT)) + action = RGUI_ACTION_SETTINGS; +#ifdef GEKKO + else if (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT)) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); + goto deinit; + } +#endif + + int input_entry_ret = 0; + int input_process_ret = 0; + + input_entry_ret = rgui_iterate(rgui, action); + + // draw last frame for loading messages + rarch_render_cached_frame(); + + input_process_ret = rmenu_input_process(NULL, NULL); + + if (input_entry_ret != 0 || input_process_ret != 0) + goto deinit; + + return true; + +deinit: + // set a timer delay so that we don't instantly switch back to the menu when + // press and holding QUIT in the emulation loop (lasts for 30 frame ticks) + if (!(g_extern.lifecycle_state & (1ULL << RARCH_FRAMEADVANCE))) + g_extern.delay_timer[0] = g_extern.frame_count + 30; + + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_DRAW); + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_INGAME); + + return false; +} diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c deleted file mode 100644 index 1ca0e4a800..0000000000 --- a/frontend/menu/rmenu_generic.c +++ /dev/null @@ -1,413 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - 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 "rgui.h" -#include "../../general.h" - -#ifdef HAVE_OPENGL -#include "../../gfx/gl_common.h" -#endif - -#include "../../gfx/fonts/bitmap.h" - -uint16_t menu_framebuf[400 * 240]; -rgui_handle_t *rgui; - -static const struct retro_keybind _rmenu_nav_binds[] = { -#if defined(HW_RVL) - { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP | GX_CLASSIC_UP | GX_CLASSIC_LSTICK_UP | GX_CLASSIC_RSTICK_UP | GX_WIIMOTE_UP | GX_NUNCHUK_UP, 0 }, - { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN | GX_CLASSIC_DOWN | GX_CLASSIC_LSTICK_DOWN | GX_CLASSIC_RSTICK_DOWN | GX_WIIMOTE_DOWN | GX_NUNCHUK_DOWN, 0 }, - { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT | GX_CLASSIC_LEFT | GX_CLASSIC_LSTICK_LEFT | GX_CLASSIC_RSTICK_LEFT | GX_WIIMOTE_LEFT | GX_NUNCHUK_LEFT, 0 }, - { 0, 0, NULL, 0, GX_GC_RIGHT | GX_GC_LSTICK_RIGHT | GX_GC_RSTICK_RIGHT | GX_CLASSIC_RIGHT | GX_CLASSIC_LSTICK_RIGHT | GX_CLASSIC_RSTICK_RIGHT | GX_WIIMOTE_RIGHT | GX_NUNCHUK_RIGHT, 0 }, - { 0, 0, NULL, 0, GX_GC_A | GX_CLASSIC_A | GX_WIIMOTE_A | GX_WIIMOTE_2, 0 }, - { 0, 0, NULL, 0, GX_GC_B | GX_CLASSIC_B | GX_WIIMOTE_B | GX_WIIMOTE_1, 0 }, - { 0, 0, NULL, 0, GX_GC_START | GX_CLASSIC_PLUS | GX_WIIMOTE_PLUS, 0 }, - { 0, 0, NULL, 0, GX_GC_Z_TRIGGER | GX_CLASSIC_MINUS | GX_WIIMOTE_MINUS, 0 }, - { 0, 0, NULL, 0, GX_WIIMOTE_HOME | GX_CLASSIC_HOME, 0 }, -#elif defined(HW_DOL) - { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP, 0 }, - { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN, 0 }, - { 0, 0, NULL, 0, GX_GC_LEFT | GX_GC_LSTICK_LEFT | GX_GC_RSTICK_LEFT, 0 }, - { 0, 0, NULL, 0, GX_GC_RIGHT | GX_GC_LSTICK_RIGHT | GX_GC_RSTICK_RIGHT, 0 }, - { 0, 0, NULL, 0, GX_GC_A, 0 }, - { 0, 0, NULL, 0, GX_GC_B, 0 }, - { 0, 0, NULL, 0, GX_GC_START, 0 }, - { 0, 0, NULL, 0, GX_GC_Z_TRIGGER, 0 }, - { 0, 0, NULL, 0, GX_WIIMOTE_HOME, 0 }, - { 0, 0, NULL, 0, GX_QUIT_KEY, 0 }, -#else - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_UP), 0 }, - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN), 0 }, - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT), 0 }, - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT), 0 }, - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_A), 0 }, - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_B), 0 }, - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_START), 0 }, - { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT), 0 }, - { 0, 0, NULL, 0, (1ULL << RARCH_RMENU_TOGGLE), 0 }, - { 0, 0, NULL, 0, (1ULL << RARCH_QUIT_KEY), 0 }, -#endif -}; - -static const struct retro_keybind *rmenu_nav_binds[] = { - _rmenu_nav_binds -}; - -enum -{ - GX_DEVICE_NAV_UP = 0, - GX_DEVICE_NAV_DOWN, - GX_DEVICE_NAV_LEFT, - GX_DEVICE_NAV_RIGHT, - GX_DEVICE_NAV_A, - GX_DEVICE_NAV_B, - GX_DEVICE_NAV_START, - GX_DEVICE_NAV_SELECT, - GX_DEVICE_NAV_MENU, - GX_DEVICE_NAV_QUIT, - RMENU_DEVICE_NAV_LAST -}; - -#ifdef GEKKO -static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, - void *userdata, void *ctx) -{ -#ifdef HAVE_LIBRETRO_MANAGEMENT - bool core_chooser = (userdata) ? *(rgui_file_type_t *)userdata == RGUI_SETTINGS_CORE : false; -#else - bool core_chooser = false; -#endif - - if (!*directory) - { -#ifdef HW_RVL - file_cb(ctx, "sd:", RGUI_FILE_DEVICE, 0); - file_cb(ctx, "usb:", RGUI_FILE_DEVICE, 0); -#endif - file_cb(ctx, "carda:", RGUI_FILE_DEVICE, 0); - file_cb(ctx, "cardb:", RGUI_FILE_DEVICE, 0); - return true; - } - -#ifdef HW_RVL - LWP_MutexLock(gx_device_mutex); - int dev = gx_get_device_from_path(directory); - - if (dev != -1 && !gx_devices[dev].mounted && gx_devices[dev].interface->isInserted()) - fatMountSimple(gx_devices[dev].name, gx_devices[dev].interface); - - LWP_MutexUnlock(gx_device_mutex); -#endif - - char exts[256]; - if (core_chooser) - strlcpy(exts, "dol|DOL", sizeof(exts)); - else - strlcpy(exts, g_extern.system.valid_extensions, sizeof(exts)); - - struct string_list *ext_list = string_split(exts, "|"); - - char _dir[PATH_MAX]; - snprintf(_dir, sizeof(_dir), "%s/", directory); - DIR *dir = opendir(_dir); - if (!dir) - return false; - - struct dirent *entry; - while ((entry = readdir(dir))) - { - char stat_path[PATH_MAX]; - const char *file_ext = path_get_extension(entry->d_name); - snprintf(stat_path, sizeof(stat_path), "%s/%s", directory, entry->d_name); - bool is_dir; - -#ifdef _DIRENT_HAVE_D_TYPE - is_dir = (entry->d_type == DT_DIR); - if (entry->d_type != DT_REG && !is_dir) - continue; -#else - struct stat st; - if (stat(stat_path, &st) < 0) - continue; - - is_dir = S_ISDIR(st.st_mode); - if (!S_ISREG(st.st_mode) && !is_dir) - continue; -#endif - - if (core_chooser && (is_dir || strcasecmp(entry->d_name, default_paths.salamander_file) == 0)) - continue; - - if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) - continue; - - file_cb(ctx, - entry->d_name, - is_dir ? RGUI_FILE_DIRECTORY : RGUI_FILE_PLAIN, 0); - } - - closedir(dir); - string_list_free(ext_list); - return true; -} -#else -static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, - void *userdata, void *ctx) -{ - struct string_list *ext_list = string_split(g_extern.system.valid_extensions, "|"); - - char _dir[PATH_MAX]; - snprintf(_dir, sizeof(_dir), "%s/", directory); - DIR *dir = opendir(_dir); - if (!dir) - return false; - - struct dirent *entry; - while ((entry = readdir(dir))) - { - char stat_path[PATH_MAX]; - const char *file_ext = path_get_extension(entry->d_name); - snprintf(stat_path, sizeof(stat_path), "%s/%s", directory, entry->d_name); - bool is_dir; - -#ifdef _DIRENT_HAVE_D_TYPE - is_dir = (entry->d_type == DT_DIR); - if (entry->d_type != DT_REG && !is_dir) - continue; -#else - struct stat st; - if (stat(stat_path, &st) < 0) - continue; - - is_dir = S_ISDIR(st.st_mode); - if (!S_ISREG(st.st_mode) && !is_dir) - continue; -#endif - - if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) - continue; - - file_cb(ctx, - entry->d_name, - is_dir ? RGUI_FILE_DIRECTORY : RGUI_FILE_PLAIN, 0); - } - - closedir(dir); - string_list_free(ext_list); - return true; -} -#endif - -/*============================================================ -RMENU API -============================================================ */ - -void menu_init(void) -{ -#if defined(HAVE_OPENGL) - gl_t *device_ptr = (gl_t*)driver.video_data; -#elif defined(GEKKO) - gx_video_t *device_ptr = (gx_video_t*)driver.video_data; -#endif - - device_ptr->menu_data = (uint32_t *) menu_framebuf; - - rgui = rgui_init("", - menu_framebuf, RGUI_WIDTH * sizeof(uint16_t), - NULL, bitmap_bin, folder_cb, NULL); - - rgui_iterate(rgui, RGUI_ACTION_REFRESH); -} - -void menu_free(void) -{ - rgui_free(rgui); -} - -static uint16_t trigger_state = 0; - -int rmenu_input_process(void *data, void *state) -{ - if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) - { - if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_LOADING_ROM, 100); - - if (g_extern.fullpath) - g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); - - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); - return -1; - } - - if (!(g_extern.frame_count < g_extern.delay_timer[0])) - { - bool return_to_game_enable = ((trigger_state & (1ULL << GX_DEVICE_NAV_MENU)) && g_extern.main_is_init); - - if (return_to_game_enable) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); - return -1; - } - } - - return 0; -} - -bool rmenu_iterate(void) -{ - static uint16_t old_input_state = 0; - static bool initial_held = true; - static bool first_held = false; - - g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); - driver.video->apply_state_changes(); - - g_extern.frame_count++; - - uint16_t input_state = 0; - - driver.input->poll(NULL); - -#ifdef HAVE_OVERLAY - if (driver.overlay) - { - driver.overlay_state = 0; - - unsigned device = input_overlay_full_screen(driver.overlay) ? - RARCH_DEVICE_POINTER_SCREEN : RETRO_DEVICE_POINTER; - - bool polled = false; - for (unsigned i = 0; - input_input_state_func(NULL, 0, device, i, RETRO_DEVICE_ID_POINTER_PRESSED); - i++) - { - int16_t x = input_input_state_func(NULL, 0, - device, i, RETRO_DEVICE_ID_POINTER_X); - int16_t y = input_input_state_func(NULL, 0, - device, i, RETRO_DEVICE_ID_POINTER_Y); - - driver.overlay_state |= input_overlay_poll(driver.overlay, x, y); - polled = true; - } - - if (!polled) - input_overlay_poll_clear(driver.overlay); - } -#endif - -#ifndef GEKKO - /* TODO - not sure if correct regarding RARCH_QUIT_KEY */ - if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); - goto deinit; - } -#endif - - for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) - input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, - RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; - - input_state |= driver.input->key_pressed(driver.input_data, RARCH_RMENU_TOGGLE) ? (1ULL << GX_DEVICE_NAV_MENU) : 0; - input_state |= driver.input->key_pressed(driver.input_data, RARCH_QUIT_KEY) ? (1ULL << GX_DEVICE_NAV_QUIT) : 0; - -#ifdef HAVE_OVERLAY - for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) - input_state |= driver.overlay_state & rmenu_nav_binds[0][i].joykey ? (1ULL << i) : 0; -#endif - - trigger_state = input_state & ~old_input_state; - bool do_held = (input_state & ((1ULL << GX_DEVICE_NAV_UP) | (1ULL << GX_DEVICE_NAV_DOWN) | (1ULL << GX_DEVICE_NAV_LEFT) | (1ULL << GX_DEVICE_NAV_RIGHT))) && !(input_state & ((1ULL << GX_DEVICE_NAV_MENU) | (1ULL << GX_DEVICE_NAV_QUIT))); - - if(do_held) - { - if(!first_held) - { - first_held = true; - g_extern.delay_timer[1] = g_extern.frame_count + (initial_held ? 15 : 7); - } - - if (!(g_extern.frame_count < g_extern.delay_timer[1])) - { - first_held = false; - trigger_state = input_state; //second input frame set as current frame - } - - initial_held = false; - } - else - { - first_held = false; - initial_held = true; - } - - old_input_state = input_state; - - rgui_action_t action = RGUI_ACTION_NOOP; - - // don't run anything first frame, only capture held inputs for old_input_state - if (trigger_state & (1ULL << GX_DEVICE_NAV_UP)) - action = RGUI_ACTION_UP; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_DOWN)) - action = RGUI_ACTION_DOWN; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_LEFT)) - action = RGUI_ACTION_LEFT; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_RIGHT)) - action = RGUI_ACTION_RIGHT; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_B)) - action = RGUI_ACTION_CANCEL; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_A)) - action = RGUI_ACTION_OK; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_START)) - action = RGUI_ACTION_START; - else if (trigger_state & (1ULL << GX_DEVICE_NAV_SELECT)) - action = RGUI_ACTION_SETTINGS; -#ifdef GEKKO - else if (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT)) - { - g_extern.lifecycle_mode_state |= (1ULL << MODE_EXIT); - goto deinit; - } -#endif - - int input_entry_ret = 0; - int input_process_ret = 0; - - input_entry_ret = rgui_iterate(rgui, action); - - // draw last frame for loading messages - rarch_render_cached_frame(); - - input_process_ret = rmenu_input_process(NULL, NULL); - - if (input_entry_ret != 0 || input_process_ret != 0) - goto deinit; - - return true; - -deinit: - // set a timer delay so that we don't instantly switch back to the menu when - // press and holding QUIT in the emulation loop (lasts for 30 frame ticks) - if (!(g_extern.lifecycle_state & (1ULL << RARCH_FRAMEADVANCE))) - g_extern.delay_timer[0] = g_extern.frame_count + 30; - - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_DRAW); - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU_INGAME); - - return false; -} From dc95abf70eda9b74cfe305e261e176c4128780d6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 15:36:33 +0100 Subject: [PATCH 56/84] Drop RARCH_SRAM_WRITE_PROTECT and RARCH_CHEAT_INPUT that we aren't even using for now so that RetroArch bind IDs stay under 64 --- driver.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/driver.h b/driver.h index 159ac06fae..f1276b147f 100644 --- a/driver.h +++ b/driver.h @@ -108,10 +108,6 @@ enum // RetroArch specific bind IDs. RARCH_DISK_EJECT_TOGGLE, RARCH_DISK_NEXT, -#ifdef RARCH_CONSOLE - RARCH_CHEAT_INPUT, - RARCH_SRAM_WRITE_PROTECT, -#endif #ifdef HAVE_RMENU RARCH_RMENU_TOGGLE, RARCH_RMENU_QUICKMENU_TOGGLE, From 0b6e5a63883422cd71d3697e17e355f1469763d3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 16:14:26 +0100 Subject: [PATCH 57/84] Rename RARCH_RMENU_TOGGLE to RARCH_MENU_TOGGLE --- android/native/jni/input_android.c | 4 ++-- android/native/jni/input_autodetect.c | 6 +++--- driver.h | 4 ++-- frontend/menu/rgui.c | 4 ++-- gx/gx_input.c | 6 +++--- ps3/ps3_input.c | 10 +++++----- retroarch.c | 4 ++-- xdk/xdk_xinput_input.c | 10 +++++----- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index cd085d0cbe..05be2cb706 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -286,7 +286,7 @@ static void android_input_poll(void *data) { int ident; uint64_t *lifecycle_state = &g_extern.lifecycle_state; - *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY) | (1ULL << RARCH_RMENU_TOGGLE)); + *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY) | (1ULL << RARCH_MENU_TOGGLE)); while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? -1 : 0, NULL, NULL, NULL)) >= 0) @@ -363,7 +363,7 @@ static void android_input_poll(void *data) } else if (g_settings.input.back_behavior == BACK_BUTTON_MENU_TOGGLE) { - *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); + *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); AInputQueue_finishEvent(android_app->inputQueue, event, handled); break; } diff --git a/android/native/jni/input_autodetect.c b/android/native/jni/input_autodetect.c index ba5585221a..16c783126d 100644 --- a/android/native/jni/input_autodetect.c +++ b/android/native/jni/input_autodetect.c @@ -139,7 +139,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned } } - keycode_lut[AKEYCODE_MENU] |= ((RARCH_RMENU_TOGGLE + 1) << shift); + keycode_lut[AKEYCODE_MENU] |= ((RARCH_MENU_TOGGLE + 1) << shift); if (g_settings.input.autodetect_enable) { @@ -319,7 +319,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned keycode_lut[AKEYCODE_EQUALS] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift); // use this for the RGUI toggle - keycode_lut[AKEYCODE_MENU] |= ((RARCH_RMENU_TOGGLE+1) << shift); + keycode_lut[AKEYCODE_MENU] |= ((RARCH_MENU_TOGGLE+1) << shift); // Left Analog Up: 152 // Left Analog Down: 146 @@ -492,7 +492,7 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned else { //PS button will be used for RGUI toggle - keycode_lut[AKEYCODE_BUTTON_1] |= ((RARCH_RMENU_TOGGLE+1) << shift); + keycode_lut[AKEYCODE_BUTTON_1] |= ((RARCH_MENU_TOGGLE+1) << shift); keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift); keycode_lut[AKEYCODE_BUTTON_A] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift); } diff --git a/driver.h b/driver.h index f1276b147f..0458767b7d 100644 --- a/driver.h +++ b/driver.h @@ -109,8 +109,8 @@ enum // RetroArch specific bind IDs. RARCH_DISK_NEXT, #ifdef HAVE_RMENU - RARCH_RMENU_TOGGLE, - RARCH_RMENU_QUICKMENU_TOGGLE, + RARCH_MENU_TOGGLE, + RARCH_MENU_QUICKMENU_TOGGLE, #endif RARCH_BIND_LIST_END, diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 1bc66e0d96..004ded42db 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -1465,7 +1465,7 @@ static const struct retro_keybind _rmenu_nav_binds[] = { { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_B), 0 }, { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_START), 0 }, { 0, 0, NULL, 0, (1ULL << RETRO_DEVICE_ID_JOYPAD_SELECT), 0 }, - { 0, 0, NULL, 0, (1ULL << RARCH_RMENU_TOGGLE), 0 }, + { 0, 0, NULL, 0, (1ULL << RARCH_MENU_TOGGLE), 0 }, { 0, 0, NULL, 0, (1ULL << RARCH_QUIT_KEY), 0 }, #endif }; @@ -1730,7 +1730,7 @@ bool rmenu_iterate(void) input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; - input_state |= driver.input->key_pressed(driver.input_data, RARCH_RMENU_TOGGLE) ? (1ULL << GX_DEVICE_NAV_MENU) : 0; + input_state |= driver.input->key_pressed(driver.input_data, RARCH_MENU_TOGGLE) ? (1ULL << GX_DEVICE_NAV_MENU) : 0; input_state |= driver.input->key_pressed(driver.input_data, RARCH_QUIT_KEY) ? (1ULL << GX_DEVICE_NAV_QUIT) : 0; #ifdef HAVE_OVERLAY diff --git a/gx/gx_input.c b/gx/gx_input.c index 8c75e0d7c1..4cbadde846 100644 --- a/gx/gx_input.c +++ b/gx/gx_input.c @@ -460,8 +460,8 @@ static void gx_input_poll(void *data) (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_QUIT_KEY) | - (1ULL << RARCH_RMENU_TOGGLE) | - (1ULL << RARCH_RMENU_QUICKMENU_TOGGLE)); + (1ULL << RARCH_MENU_TOGGLE) | + (1ULL << RARCH_MENU_QUICKMENU_TOGGLE)); if ( #ifdef HW_RVL @@ -528,7 +528,7 @@ static void gx_input_poll(void *data) | GX_CLASSIC_HOME #endif )) - *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); + *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); } } diff --git a/ps3/ps3_input.c b/ps3/ps3_input.c index 02633b1a50..43f8638f75 100644 --- a/ps3/ps3_input.c +++ b/ps3/ps3_input.c @@ -191,8 +191,8 @@ static void ps3_input_poll(void *data) (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_QUIT_KEY) | - (1ULL << RARCH_RMENU_TOGGLE) | - (1ULL << RARCH_RMENU_QUICKMENU_TOGGLE)); + (1ULL << RARCH_MENU_TOGGLE) | + (1ULL << RARCH_MENU_QUICKMENU_TOGGLE)); if ((*state_p1 & (1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_DOWN)) && !(*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R2))) *lifecycle_state |= (1ULL << RARCH_FAST_FORWARD_HOLD_KEY); @@ -210,11 +210,11 @@ static void ps3_input_poll(void *data) if (!(g_extern.frame_count < g_extern.delay_timer[0])) { if ((*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_L3)) && (*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R3))) - *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); + *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); if (!(*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_L3)) && (*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R3))) { - *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); - *lifecycle_state |= (1ULL << RARCH_RMENU_QUICKMENU_TOGGLE); + *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); + *lifecycle_state |= (1ULL << RARCH_MENU_QUICKMENU_TOGGLE); } } diff --git a/retroarch.c b/retroarch.c index e9fde9b042..4637c6a6d2 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2870,9 +2870,9 @@ bool rarch_main_iterate(void) } #ifdef HAVE_RMENU - if (input_key_pressed_func(RARCH_RMENU_TOGGLE) && g_extern.frame_count >= g_extern.delay_timer[0]) + if (input_key_pressed_func(RARCH_MENU_TOGGLE) && g_extern.frame_count >= g_extern.delay_timer[0]) { - if (input_key_pressed_func(RARCH_RMENU_QUICKMENU_TOGGLE)) + if (input_key_pressed_func(RARCH_MENU_QUICKMENU_TOGGLE)) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); diff --git a/xdk/xdk_xinput_input.c b/xdk/xdk_xinput_input.c index b18236abc3..9792e75a19 100644 --- a/xdk/xdk_xinput_input.c +++ b/xdk/xdk_xinput_input.c @@ -212,8 +212,8 @@ static void xdk_input_poll(void *data) (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_QUIT_KEY) | - (1ULL << RARCH_RMENU_TOGGLE) | - (1ULL << RARCH_RMENU_QUICKMENU_TOGGLE)); + (1ULL << RARCH_MENU_TOGGLE) | + (1ULL << RARCH_MENU_QUICKMENU_TOGGLE)); if ((*state_p1 & (1ULL << RARCH_ANALOG_RIGHT_Y_DPAD_DOWN)) && !(*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R2))) *lifecycle_state |= (1ULL << RARCH_FAST_FORWARD_HOLD_KEY); @@ -231,11 +231,11 @@ static void xdk_input_poll(void *data) if (!(g_extern.frame_count < g_extern.delay_timer[0])) { if((*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_L3)) && (*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R3))) - *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); + *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); if(!(*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_L3)) && (*state_p1 & (1ULL << RETRO_DEVICE_ID_JOYPAD_R3))) { - *lifecycle_state |= (1ULL << RARCH_RMENU_TOGGLE); - *lifecycle_state |= (1ULL << RARCH_RMENU_QUICKMENU_TOGGLE); + *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); + *lifecycle_state |= (1ULL << RARCH_MENU_QUICKMENU_TOGGLE); } } } From f14f6453df94a464637c1867270e5a23d7b5331e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 16:15:26 +0100 Subject: [PATCH 58/84] Get rid of HAVE_RMENU ifdef in bind ID enumeration --- driver.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/driver.h b/driver.h index 0458767b7d..85d1caaa42 100644 --- a/driver.h +++ b/driver.h @@ -108,10 +108,8 @@ enum // RetroArch specific bind IDs. RARCH_DISK_EJECT_TOGGLE, RARCH_DISK_NEXT, -#ifdef HAVE_RMENU RARCH_MENU_TOGGLE, RARCH_MENU_QUICKMENU_TOGGLE, -#endif RARCH_BIND_LIST_END, RARCH_BIND_LIST_END_NULL From 5e53be4b25f17e34d8beef17a43801d482bf162e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 16:22:11 +0100 Subject: [PATCH 59/84] Rename rmenu_iterate to menu_iterate --- frontend/frontend_android.c | 3 +-- frontend/frontend_console.c | 2 +- frontend/menu/rgui.c | 2 +- frontend/menu/rmenu.c | 2 +- frontend/menu/rmenu.h | 2 +- frontend/menu/rmenu_xui.cpp | 2 +- frontend/platform/platform_ps3.c | 2 +- frontend/platform/platform_psp.c | 2 +- 8 files changed, 8 insertions(+), 9 deletions(-) diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index 7f8a7dd930..04c8b416c3 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -239,8 +239,7 @@ begin_loop: { g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_PREINIT); while((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? - android_run_events(android_app) : - rmenu_iterate()); + android_run_events(android_app) : menu_iterate()); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU); } else diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index cbb2674930..a2e2644daf 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -319,7 +319,7 @@ begin_loop: else if(g_extern.lifecycle_mode_state & (1ULL << MODE_MENU)) { g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_PREINIT); - while(rmenu_iterate()); + while (menu_iterate()); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU); } else diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 004ded42db..d4527dcc49 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -1675,7 +1675,7 @@ int rmenu_input_process(void *data, void *state) return 0; } -bool rmenu_iterate(void) +bool menu_iterate(void) { static uint16_t old_input_state = 0; static bool initial_held = true; diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 6dcc9eb74e..3b5c0c5325 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -2637,7 +2637,7 @@ void menu_free(void) rmenu_state.free_resources(&rmenu_state); } -bool rmenu_iterate(void) +bool menu_iterate(void) { const char *msg; diff --git a/frontend/menu/rmenu.h b/frontend/menu/rmenu.h index 566482909e..a4513bba70 100644 --- a/frontend/menu/rmenu.h +++ b/frontend/menu/rmenu.h @@ -205,7 +205,7 @@ enum #define MAX_NO_OF_CONTROLS_SETTINGS SETTING_CONTROLS_DEFAULT_ALL+1 void menu_init (void); -bool rmenu_iterate(void); +bool menu_iterate(void); void menu_free (void); #endif /* MENU_H_ */ diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index e14a547397..b9d705290b 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -1291,7 +1291,7 @@ static void ingame_menu_resize (void) input_loop = INPUT_LOOP_MENU; } -bool rmenu_iterate(void) +bool menu_iterate(void) { const char *msg; diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index f62599c743..66bde4c0c6 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -194,7 +194,7 @@ void menu_init (void) { } -bool rmenu_iterate(void) +bool menu_iterate(void) { strlcpy(g_extern.fullpath, "/dev_hdd0/game/SSNE10000/USRDIR/mm3.nes", sizeof(g_extern.fullpath)); g_extern.lifecycle_mode_state |= (1ULL << MODE_LOAD_GAME); diff --git a/frontend/platform/platform_psp.c b/frontend/platform/platform_psp.c index e5c3005461..f850a3b1fe 100644 --- a/frontend/platform/platform_psp.c +++ b/frontend/platform/platform_psp.c @@ -94,7 +94,7 @@ static int setup_callback(void) void menu_init (void) {} -bool rmenu_iterate(void) +bool menu_iterate(void) { char path[256]; snprintf(path, sizeof(path), "%s%s", default_paths.port_dir, "dkc.sfc"); From b827075d55ff690ab76cdd76af5fdbadb261c0b8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 17:00:52 +0100 Subject: [PATCH 60/84] Move rmenu_settings.c to settings.c + add header file --- console/griffin/griffin.c | 1 - frontend/frontend_console.c | 3 +- frontend/menu/rgui.c | 52 ++-- frontend/menu/rmenu.c | 118 +++---- frontend/menu/rmenu_settings.c | 312 ------------------- frontend/menu/rmenu_xui.cpp | 106 ++++--- settings.c | 283 +++++++++++++++++ frontend/menu/rmenu_settings.h => settings.h | 23 +- 8 files changed, 432 insertions(+), 466 deletions(-) delete mode 100644 frontend/menu/rmenu_settings.c rename frontend/menu/rmenu_settings.h => settings.h (81%) diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index 2fa09cc89a..109bdabd04 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -438,7 +438,6 @@ MENU #endif #ifdef HAVE_RMENU -#include "../../frontend/menu/rmenu_settings.c" #if defined(_XBOX360) #include "../../frontend/menu/rmenu_xui.cpp" diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index a2e2644daf..58c12f2eef 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -21,7 +21,6 @@ #include "frontend_console.h" #include "menu/rmenu.h" -#include "menu/rmenu_settings.h" #if defined(__CELLOS_LV2__) #include "platform/platform_ps3.c" @@ -312,7 +311,7 @@ begin_loop: { RARCH_ERR("rarch_main_init failed.\n"); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); - rmenu_settings_msg(S_MSG_ROM_LOADING_ERROR, S_DELAY_180); + rarch_settings_msg(S_MSG_ROM_LOADING_ERROR, 180); } g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT); } diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index d4527dcc49..2731ff3154 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -21,8 +21,8 @@ #include "rgui.h" #include "utils/file_list.h" -#include "rmenu_settings.h" #include "../../general.h" +#include "../../settings.h" #include "../../gfx/gfx_common.h" #ifdef HAVE_OPENGL @@ -484,7 +484,7 @@ static void render_text(rgui_handle_t *rgui) case RGUI_SETTINGS_VIDEO_ROTATION: { char rotate_msg[64]; - rmenu_settings_create_menu_item_label(rotate_msg, S_LBL_ROTATION, sizeof(rotate_msg)); + menu_settings_create_menu_item_label(rotate_msg, S_LBL_ROTATION, sizeof(rotate_msg)); snprintf(type_str, sizeof(type_str), rotate_msg); } break; @@ -613,10 +613,10 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t case RGUI_SETTINGS_REWIND_ENABLE: if (action == RGUI_ACTION_OK || action == RGUI_ACTION_LEFT || action == RGUI_ACTION_RIGHT) { - rmenu_settings_set(S_REWIND); + rarch_settings_set(S_REWIND); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); } else if (action == RGUI_ACTION_START) g_settings.rewind_enable = false; @@ -644,11 +644,11 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t return -1; } else if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_SAVE_STATE); + rarch_settings_set_default(S_DEF_SAVE_STATE); else if (action == RGUI_ACTION_LEFT) - rmenu_settings_set(S_SAVESTATE_DECREMENT); + rarch_settings_set(S_SAVESTATE_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rmenu_settings_set(S_SAVESTATE_INCREMENT); + rarch_settings_set(S_SAVESTATE_INCREMENT); break; case RGUI_SETTINGS_SCREENSHOT: if (action == RGUI_ACTION_OK) @@ -670,7 +670,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t data + (height - 1) * (pitch >> 1), width, height, -pitch, false); - msg_queue_push(g_extern.msg_queue, r ? "Screenshot saved" : "Screenshot failed to save", 1, S_DELAY_90); + msg_queue_push(g_extern.msg_queue, r ? "Screenshot saved" : "Screenshot failed to save", 1, 90); } break; case RGUI_SETTINGS_RESTART_GAME: @@ -683,9 +683,9 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t break; case RGUI_SETTINGS_VIDEO_FILTER: if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_HW_TEXTURE_FILTER); + rarch_settings_set_default(S_DEF_HW_TEXTURE_FILTER); else - rmenu_settings_set(S_HW_TEXTURE_FILTER); + rarch_settings_set(S_HW_TEXTURE_FILTER); break; #ifdef HW_RVL case RGUI_SETTINGS_VIDEO_SOFT_FILTER: @@ -749,60 +749,60 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t break; case RGUI_SETTINGS_VIDEO_ASPECT_RATIO: if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_ASPECT_RATIO); + rarch_settings_set_default(S_DEF_ASPECT_RATIO); else if (action == RGUI_ACTION_LEFT) - rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); + rarch_settings_set(S_ASPECT_RATIO_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); + rarch_settings_set(S_ASPECT_RATIO_INCREMENT); video_set_aspect_ratio_func(g_settings.video.aspect_ratio_idx); break; case RGUI_SETTINGS_VIDEO_ROTATION: if (action == RGUI_ACTION_START) { - rmenu_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); + rarch_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); video_set_rotation_func(g_extern.console.screen.orientation); } else if (action == RGUI_ACTION_LEFT) { - rmenu_settings_set(S_ROTATION_DECREMENT); + rarch_settings_set(S_ROTATION_DECREMENT); video_set_rotation_func(g_extern.console.screen.orientation); } else if (action == RGUI_ACTION_RIGHT) { - rmenu_settings_set(S_ROTATION_INCREMENT); + rarch_settings_set(S_ROTATION_INCREMENT); video_set_rotation_func(g_extern.console.screen.orientation); } break; case RGUI_SETTINGS_VIDEO_OVERSCAN: if (action == RGUI_ACTION_START) { - rmenu_settings_set_default(S_DEF_OVERSCAN); + rarch_settings_set_default(S_DEF_OVERSCAN); driver.video->apply_state_changes(); } else if (action == RGUI_ACTION_LEFT) { - rmenu_settings_set(S_OVERSCAN_DECREMENT); + rarch_settings_set(S_OVERSCAN_DECREMENT); driver.video->apply_state_changes(); } else if (action == RGUI_ACTION_RIGHT) { - rmenu_settings_set(S_OVERSCAN_INCREMENT); + rarch_settings_set(S_OVERSCAN_INCREMENT); driver.video->apply_state_changes(); } break; case RGUI_SETTINGS_AUDIO_MUTE: if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_AUDIO_MUTE); + rarch_settings_set_default(S_DEF_AUDIO_MUTE); else - rmenu_settings_set(S_AUDIO_MUTE); + rarch_settings_set(S_AUDIO_MUTE); break; case RGUI_SETTINGS_AUDIO_CONTROL_RATE: if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); + rarch_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); else if (action == RGUI_ACTION_LEFT) - rmenu_settings_set(S_AUDIO_CONTROL_RATE_DECREMENT); + rarch_settings_set(S_AUDIO_CONTROL_RATE_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rmenu_settings_set(S_AUDIO_CONTROL_RATE_INCREMENT); + rarch_settings_set(S_AUDIO_CONTROL_RATE_INCREMENT); break; case RGUI_SETTINGS_RESAMPLER_TYPE: { @@ -1371,7 +1371,7 @@ int rgui_iterate(rgui_handle_t *rgui, rgui_action_t action) strlcpy(g_extern.fullpath, rgui->path_buf, sizeof(g_extern.fullpath)); g_extern.lifecycle_mode_state |= (1ULL << MODE_LOAD_GAME); - rmenu_settings_msg(S_MSG_LOADING_ROM, S_DELAY_1); + rarch_settings_msg(S_MSG_LOADING_ROM, 1); rgui->need_refresh = true; // in case of zip extract rgui->msg_force = true; } @@ -1652,7 +1652,7 @@ int rmenu_input_process(void *data, void *state) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_LOADING_ROM, 100); + rarch_settings_msg(S_MSG_LOADING_ROM, 100); if (g_extern.fullpath) g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 3b5c0c5325..b44d3c144a 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -29,7 +29,6 @@ #include "../../console/rarch_console.h" #include "../../console/rarch_console_input.h" -#include "rmenu_settings.h" #include "../../gfx/image.h" @@ -39,6 +38,7 @@ #include "../../file.h" #include "../../driver.h" #include "../../general.h" +#include "../../settings.h" #define EXT_IMAGES "png|PNG|jpg|JPG|JPEG|jpeg" #define EXT_SHADERS "cg|CG" @@ -625,7 +625,7 @@ static void browser_update(void *data, uint64_t input, const char *extensions) ret = filebrowser_iterate(b, action); if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); } void browser_render(void *data) @@ -724,7 +724,7 @@ int select_file(void *data, void *state) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, path, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -740,7 +740,7 @@ int select_file(void *data, void *state) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, path, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -782,7 +782,7 @@ int select_file(void *data, void *state) else { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); } break; } @@ -791,7 +791,7 @@ int select_file(void *data, void *state) } if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); } else if (input & (1ULL << RMENU_DEVICE_NAV_X)) menu_stack_pop(); @@ -889,7 +889,7 @@ int select_directory(void *data, void *state) } if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); display_menubar(current_menu); @@ -1028,9 +1028,9 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) #ifdef __CELLOS_LV2__ case SETTING_CHANGE_RESOLUTION: if(input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) - rmenu_settings_set(S_RESOLUTION_NEXT); + rarch_settings_set(S_RESOLUTION_NEXT); if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) - rmenu_settings_set(S_RESOLUTION_PREVIOUS); + rarch_settings_set(S_RESOLUTION_PREVIOUS); if(input & (1ULL << RMENU_DEVICE_NAV_B)) { if (g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx] == CELL_VIDEO_OUT_RESOLUTION_576) @@ -1106,7 +1106,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, NULL, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1126,7 +1126,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, NULL, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1159,7 +1159,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE_PENDING); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); } } if(input & (1ULL << RMENU_DEVICE_NAV_START)) @@ -1172,7 +1172,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE_PENDING); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); } } } @@ -1194,29 +1194,29 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_KEEP_ASPECT_RATIO: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); + rarch_settings_set(S_ASPECT_RATIO_DECREMENT); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); } if(input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) { - rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); + rarch_settings_set(S_ASPECT_RATIO_INCREMENT); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_ASPECT_RATIO); + rarch_settings_set_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 & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_HW_TEXTURE_FILTER); + rarch_settings_set(S_HW_TEXTURE_FILTER); device_ptr->ctx_driver->set_filtering(1, g_settings.video.smooth); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set(S_DEF_HW_TEXTURE_FILTER); + rarch_settings_set(S_DEF_HW_TEXTURE_FILTER); device_ptr->ctx_driver->set_filtering(1, g_settings.video.smooth); } break; @@ -1224,19 +1224,19 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_HW_TEXTURE_FILTER_2: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_HW_TEXTURE_FILTER_2); + rarch_settings_set(S_HW_TEXTURE_FILTER_2); device_ptr->ctx_driver->set_filtering(2, g_settings.video.second_pass_smooth); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set(S_DEF_HW_TEXTURE_FILTER_2); + rarch_settings_set(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 & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_SCALE_ENABLED); + rarch_settings_set(S_SCALE_ENABLED); if(g_settings.video.render_to_texture) device_ptr->ctx_driver->set_fbo(FBO_INIT); @@ -1245,7 +1245,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_SCALE_ENABLED); + rarch_settings_set_default(S_DEF_SCALE_ENABLED); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } break; @@ -1258,7 +1258,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) if(should_decrement) { - rmenu_settings_set(S_SCALE_FACTOR_DECREMENT); + rarch_settings_set(S_SCALE_FACTOR_DECREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } } @@ -1270,14 +1270,14 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) bool should_increment = g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR; if(should_increment) { - rmenu_settings_set(S_SCALE_FACTOR_INCREMENT); + rarch_settings_set(S_SCALE_FACTOR_INCREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } } } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_SCALE_FACTOR); + rarch_settings_set_default(S_DEF_SCALE_FACTOR); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } break; @@ -1312,34 +1312,34 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_HW_OVERSCAN_AMOUNT: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rmenu_settings_set(S_OVERSCAN_DECREMENT); + rarch_settings_set(S_OVERSCAN_DECREMENT); gfx_ctx_set_overscan(); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_OVERSCAN_INCREMENT); + rarch_settings_set(S_OVERSCAN_INCREMENT); gfx_ctx_set_overscan(); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_OVERSCAN); + rarch_settings_set_default(S_DEF_OVERSCAN); gfx_ctx_set_overscan(); } break; case SETTING_REFRESH_RATE: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rmenu_settings_set(S_REFRESH_RATE_DECREMENT); + rarch_settings_set(S_REFRESH_RATE_DECREMENT); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_REFRESH_RATE_INCREMENT); + rarch_settings_set(S_REFRESH_RATE_INCREMENT); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_REFRESH_RATE); + rarch_settings_set_default(S_DEF_REFRESH_RATE); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } break; @@ -1348,7 +1348,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { if (!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK))) { - rmenu_settings_set(S_THROTTLE); + rarch_settings_set(S_THROTTLE); device_ptr->ctx_driver->swap_interval((g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) ? true : false); } } @@ -1356,7 +1356,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { if (!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK))) { - rmenu_settings_set_default(S_DEF_THROTTLE); + rarch_settings_set_default(S_DEF_THROTTLE); device_ptr->ctx_driver->swap_interval((g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) ? true : false); } } @@ -1364,12 +1364,12 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_TRIPLE_BUFFERING: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_TRIPLE_BUFFERING); + rarch_settings_set(S_TRIPLE_BUFFERING); driver.video->restart(); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_TRIPLE_BUFFERING); + rarch_settings_set_default(S_DEF_TRIPLE_BUFFERING); if(!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE))) driver.video->restart(); @@ -1461,31 +1461,31 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) break; case SETTING_EMU_CURRENT_SAVE_STATE_SLOT: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) - rmenu_settings_set(S_SAVESTATE_DECREMENT); + rarch_settings_set(S_SAVESTATE_DECREMENT); if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rmenu_settings_set(S_SAVESTATE_INCREMENT); + rarch_settings_set(S_SAVESTATE_INCREMENT); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rmenu_settings_set_default(S_DEF_SAVE_STATE); + rarch_settings_set_default(S_DEF_SAVE_STATE); break; case SETTING_EMU_SHOW_DEBUG_INFO_MSG: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rmenu_settings_set(S_INFO_DEBUG_MSG_TOGGLE); + rarch_settings_set(S_INFO_DEBUG_MSG_TOGGLE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rmenu_settings_set_default(S_DEF_INFO_DEBUG_MSG); + rarch_settings_set_default(S_DEF_INFO_DEBUG_MSG); break; case SETTING_EMU_SHOW_INFO_MSG: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rmenu_settings_set(S_INFO_MSG_TOGGLE); + rarch_settings_set(S_INFO_MSG_TOGGLE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rmenu_settings_set_default(S_DEF_INFO_MSG); + rarch_settings_set_default(S_DEF_INFO_MSG); break; case SETTING_EMU_REWIND_ENABLED: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_REWIND); + rarch_settings_set(S_REWIND); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) g_settings.rewind_enable = false; @@ -1562,10 +1562,10 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) break; case SETTING_EMU_AUDIO_MUTE: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rmenu_settings_set(S_AUDIO_MUTE); + rarch_settings_set(S_AUDIO_MUTE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rmenu_settings_set_default(S_DEF_AUDIO_MUTE); + rarch_settings_set_default(S_DEF_AUDIO_MUTE); break; #ifdef _XBOX1 case SETTING_EMU_AUDIO_SOUND_VOLUME_LEVEL: @@ -1573,14 +1573,14 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { g_extern.console.sound.volume_level = !g_extern.console.sound.volume_level; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { g_extern.console.sound.volume_level = 0; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); } break; #endif @@ -1961,7 +1961,7 @@ int select_rom(void *data, void *state) bool ret = filebrowser_iterate(filebrowser, FILEBROWSER_ACTION_OK); if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); } else { @@ -2297,19 +2297,19 @@ int ingame_menu(void *data, void *state) case MENU_ITEM_ORIENTATION: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rmenu_settings_set(S_ROTATION_DECREMENT); + rarch_settings_set(S_ROTATION_DECREMENT); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_ROTATION_INCREMENT); + rarch_settings_set(S_ROTATION_INCREMENT); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_ROTATION); + rarch_settings_set_default(S_DEF_ROTATION); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } snprintf(strw_buffer, sizeof(strw_buffer), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1ULL << RETRO_DEVICE_ID_JOYPAD_START)); @@ -2329,7 +2329,7 @@ int ingame_menu(void *data, void *state) { g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME_EXIT); - rmenu_settings_set(S_FRAME_ADVANCE); + rarch_settings_set(S_FRAME_ADVANCE); menu_idx = MENU_ITEM_FRAME_ADVANCE; return -1; } @@ -2432,23 +2432,23 @@ int ingame_menu(void *data, void *state) device_ptr->font_ctx->render_msg_place(device_ptr,default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, strw_buffer); - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, default_pos.x_position, default_pos.y_position, default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_LOAD_STATE), strw_buffer); - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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); - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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); device_ptr->font_ctx->render_msg_place(device_ptr, 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); - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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 - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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 @@ -2552,7 +2552,7 @@ int rmenu_input_process(void *data, void *state) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_LOADING_ROM, 100); + rarch_settings_msg(S_MSG_LOADING_ROM, 100); g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); diff --git a/frontend/menu/rmenu_settings.c b/frontend/menu/rmenu_settings.c deleted file mode 100644 index d6698067bd..0000000000 --- a/frontend/menu/rmenu_settings.c +++ /dev/null @@ -1,312 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - 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 -#include -#include - -#include "../../general.h" -#include "rmenu_settings.h" - -void rmenu_settings_set(unsigned setting) -{ - switch(setting) - { - case S_ASPECT_RATIO_DECREMENT: - if(g_settings.video.aspect_ratio_idx > 0) - g_settings.video.aspect_ratio_idx--; - break; - case S_ASPECT_RATIO_INCREMENT: - if(g_settings.video.aspect_ratio_idx < LAST_ASPECT_RATIO) - g_settings.video.aspect_ratio_idx++; - break; - case S_AUDIO_MUTE: - g_extern.audio_data.mute = !g_extern.audio_data.mute; - break; - case S_AUDIO_CONTROL_RATE_DECREMENT: - if (g_settings.audio.rate_control_delta > 0.0) - g_settings.audio.rate_control_delta -= 0.001; - if (g_settings.audio.rate_control_delta == 0.0) - g_settings.audio.rate_control = false; - else - g_settings.audio.rate_control = true; - break; - case S_AUDIO_CONTROL_RATE_INCREMENT: - if (g_settings.audio.rate_control_delta < 0.2) - g_settings.audio.rate_control_delta += 0.001; - g_settings.audio.rate_control = true; - break; - case S_FRAME_ADVANCE: - g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); - g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); - break; - case S_HW_TEXTURE_FILTER: - g_settings.video.smooth = !g_settings.video.smooth; - break; - case S_HW_TEXTURE_FILTER_2: - g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; - break; - case S_OVERSCAN_DECREMENT: - g_extern.console.screen.overscan_amount -= 0.01f; - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - if(g_extern.console.screen.overscan_amount == 0.0f) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - break; - case S_OVERSCAN_INCREMENT: - g_extern.console.screen.overscan_amount += 0.01f; - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - if(g_extern.console.screen.overscan_amount == 0.0f) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - break; - case S_RESOLUTION_PREVIOUS: - if (g_extern.console.screen.resolutions.current.idx) - { - g_extern.console.screen.resolutions.current.idx--; - g_extern.console.screen.resolutions.current.id = g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]; - } - break; - case S_RESOLUTION_NEXT: - if (g_extern.console.screen.resolutions.current.idx + 1 < g_extern.console.screen.resolutions.count) - { - g_extern.console.screen.resolutions.current.idx++; - g_extern.console.screen.resolutions.current.id = g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]; - } - break; - case S_ROTATION_DECREMENT: - if(g_extern.console.screen.orientation > 0) - g_extern.console.screen.orientation--; - break; - case S_ROTATION_INCREMENT: - if(g_extern.console.screen.orientation < LAST_ORIENTATION) - g_extern.console.screen.orientation++; - break; - case S_REWIND: - g_settings.rewind_enable = !g_settings.rewind_enable; - break; - case S_SAVESTATE_DECREMENT: - if(g_extern.state_slot != 0) - g_extern.state_slot--; - break; - case S_SAVESTATE_INCREMENT: - g_extern.state_slot++; - break; - case S_SCALE_ENABLED: - g_settings.video.render_to_texture = !g_settings.video.render_to_texture; - break; - case S_SCALE_FACTOR_DECREMENT: - g_settings.video.fbo.scale_x -= 1.0f; - g_settings.video.fbo.scale_y -= 1.0f; - break; - case S_SCALE_FACTOR_INCREMENT: - g_settings.video.fbo.scale_x += 1.0f; - g_settings.video.fbo.scale_y += 1.0f; - break; - case S_THROTTLE: - if(!g_extern.system.force_nonblock) - { - if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_THROTTLE_ENABLE); - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_THROTTLE_ENABLE); - } - break; - case S_TRIPLE_BUFFERING: - if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE)) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); - break; - case S_REFRESH_RATE_DECREMENT: - g_settings.video.refresh_rate -= 0.01f; - break; - case S_REFRESH_RATE_INCREMENT: - g_settings.video.refresh_rate += 0.01f; - break; - case S_INFO_DEBUG_MSG_TOGGLE: - if (g_extern.lifecycle_mode_state & (1ULL << MODE_FPS_DRAW)) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FPS_DRAW); - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_FPS_DRAW); - break; - case S_INFO_MSG_TOGGLE: - if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INFO_DRAW); - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); - break; - default: - RARCH_WARN("rmenu_settings_set - unhandled action.\n"); - } -} - -void rmenu_settings_set_default(unsigned setting) -{ - switch(setting) - { - case S_DEF_ASPECT_RATIO: - g_settings.video.aspect_ratio_idx = ASPECT_RATIO_4_3; - break; - case S_DEF_AUDIO_MUTE: - g_extern.audio_data.mute = false; - break; - case S_DEF_AUDIO_CONTROL_RATE: -#ifdef GEKKO - g_settings.audio.rate_control_delta = 0.006; - g_settings.audio.rate_control = true; -#else - g_settings.audio.rate_control_delta = 0.0; - g_settings.audio.rate_control = false; -#endif - break; - case S_DEF_HW_TEXTURE_FILTER: - g_settings.video.smooth = 1; - break; - case S_DEF_HW_TEXTURE_FILTER_2: - g_settings.video.second_pass_smooth = 1; - break; - case S_DEF_OVERSCAN: - g_extern.console.screen.overscan_amount = 0.0f; - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - break; - case S_DEF_ROTATION: - g_extern.console.screen.orientation = ORIENTATION_NORMAL; - break; - case S_DEF_THROTTLE: - if(!g_extern.system.force_nonblock) - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_THROTTLE_ENABLE); - break; - case S_DEF_TRIPLE_BUFFERING: - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); - break; - case S_DEF_SAVE_STATE: - g_extern.state_slot = 0; - break; - case S_DEF_SCALE_ENABLED: - g_settings.video.render_to_texture = true; - g_settings.video.fbo.scale_x = 2.0f; - g_settings.video.fbo.scale_y = 2.0f; - break; - case S_DEF_SCALE_FACTOR: - g_settings.video.fbo.scale_x = 2.0f; - g_settings.video.fbo.scale_y = 2.0f; - break; - case S_DEF_REFRESH_RATE: -#if defined(RARCH_CONSOLE) - g_settings.video.refresh_rate = 59.92; -#else - g_settings.video.refresh_rate = 59.95; -#endif - break; - case S_DEF_INFO_DEBUG_MSG: - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FPS_DRAW); - break; - case S_DEF_INFO_MSG: - g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); - break; - default: - RARCH_WARN("rmenu_settings_set_default: unhandled action.\n"); - } -} - -void rmenu_settings_msg(unsigned setting, unsigned delay) -{ - char str[PATH_MAX], tmp[PATH_MAX]; - msg_queue_clear(g_extern.msg_queue); - - (void)tmp; - - switch(setting) - { - case S_MSG_CACHE_PARTITION: - snprintf(str, sizeof(str), "INFO - All the contents of the ZIP files you have selected\nare extracted to this partition."); - break; - case S_MSG_CHANGE_CONTROLS: - snprintf(str, sizeof(str), "INFO - Press LEFT/RIGHT to change the controls, and press\n[RetroPad Start] to reset a button to default values."); - break; - case S_MSG_LOADING_ROM: - fill_pathname_base(tmp, g_extern.fullpath, sizeof(tmp)); - snprintf(str, sizeof(str), "INFO - Loading %s...", tmp); - break; - case S_MSG_DIR_LOADING_ERROR: - snprintf(str, sizeof(str), "ERROR - Failed to open selected directory."); - break; - case S_MSG_ROM_LOADING_ERROR: - snprintf(str, sizeof(str), "ERROR - An error occurred during ROM loading."); - break; - case S_MSG_NOT_IMPLEMENTED: - snprintf(str, sizeof(str), "TODO - Not yet implemented."); - break; - case S_MSG_RESIZE_SCREEN: - snprintf(str, sizeof(str), "INFO - Resize the screen by moving around the two analog sticks.\nPress [RetroPad X] to reset to default values, and [RetroPad A] to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'."); - break; - case S_MSG_RESTART_RARCH: - snprintf(str, sizeof(str), "INFO - You need to restart RetroArch."); - break; - case S_MSG_SELECT_LIBRETRO_CORE: - snprintf(str, sizeof(str), "INFO - Select a Libretro core from the menu."); - break; - case S_MSG_SELECT_SHADER: - snprintf(str, sizeof(str), "INFO - Select a shader from the menu."); - break; - case S_MSG_SHADER_LOADING_SUCCEEDED: - snprintf(str, sizeof(str), "INFO - Shader successfully loaded."); - break; - } - - msg_queue_push(g_extern.msg_queue, str, 1, delay); -} - -void rmenu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size) -{ - char str[PATH_MAX]; - - rmenu_settings_create_menu_item_label(str, setting, sizeof(str)); - convert_char_to_wchar(strwbuf, str, size); -} - -void rmenu_settings_create_menu_item_label(char * str, unsigned setting, size_t size) -{ - switch (setting) - { - case S_LBL_ASPECT_RATIO: - snprintf(str, size, "Aspect Ratio: %s", aspectratio_lut[g_settings.video.aspect_ratio_idx].name); - break; - case S_LBL_SHADER: - snprintf(str, size, "Shader #1: %s", g_settings.video.cg_shader_path); - break; - case S_LBL_SHADER_2: - snprintf(str, size, "Shader #2: %s", g_settings.video.second_pass_shader); - break; - case S_LBL_RARCH_VERSION: - snprintf(str, size, "RetroArch %s", PACKAGE_VERSION); - break; - case S_LBL_SCALE_FACTOR: - snprintf(str, size, "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo.scale_x, g_settings.video.fbo.scale_y); - break; - case S_LBL_ROTATION: - snprintf(str, size, "Rotation: %s", rotation_lut[g_extern.console.screen.orientation]); - break; - case S_LBL_LOAD_STATE_SLOT: - snprintf(str, size, "Load State #%d", g_extern.state_slot); - break; - case S_LBL_SAVE_STATE_SLOT: - snprintf(str, size, "Save State #%d", g_extern.state_slot); - break; - case S_LBL_REWIND_GRANULARITY: - snprintf(str, size, "Rewind granularity: %d", g_settings.rewind_granularity); - break; - } -} diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index b9d705290b..fd6d17e230 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -24,7 +24,6 @@ #include "utils/file_browser.h" #include "../../console/rarch_console.h" -#include "rmenu_settings.h" #include "../../gfx/gfx_common.h" #include "../../gfx/gfx_context.h" @@ -32,6 +31,7 @@ #include "../../message.h" #include "../../general.h" +#include "../../settings.h" enum { MENU_XUI_ITEM_LOAD_STATE = 0, @@ -59,6 +59,14 @@ char str_buffer[PATH_MAX]; static int process_input_ret = 0; static unsigned input_loop = 0; +static void menu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size) +{ + char str[PATH_MAX]; + + menu_settings_create_menu_item_label(str, setting, sizeof(str)); + convert_char_to_wchar(strwbuf, str, size); +} + enum { RMENU_DEVICE_NAV_UP = 0, @@ -171,7 +179,7 @@ static void browser_update(filebrowser_t * b, uint64_t input, const char *extens ret = filebrowser_iterate(b, action); if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); } HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -400,13 +408,13 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER, g_settings.video.smooth ? L"Hardware filtering shader #1: Linear interpolation" : L"Hardware filtering shader #1: Point filtering"); m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering"); m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SHADER, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER_2, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER_2, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SHADER_2, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); m_settingslist.SetText(SETTING_ENABLE_SRAM_PATH, (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME_SRAM_DIR_ENABLE)) ? L"SRAM Path Enable: ON" : L"SRAM Path Enable: OFF"); m_settingslist.SetText(SETTING_ENABLE_STATE_PATH, (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME_STATE_DIR_ENABLE)) ? L"Savestate Path Enable: ON" : L"Savestate Path Enable: OFF"); @@ -428,16 +436,16 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled switch(current_index) { case SETTING_EMU_REWIND_ENABLED: - rmenu_settings_set(S_REWIND); + rarch_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); break; case SETTING_EMU_REWIND_GRANULARITY: g_settings.rewind_granularity++; - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -502,7 +510,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled hCur = app.hShaderBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); + rarch_settings_msg(S_MSG_SELECT_SHADER, 180); NavigateForward(app.hShaderBrowser); break; @@ -515,7 +523,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled hCur = app.hShaderBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); + rarch_settings_msg(S_MSG_SELECT_SHADER, 180); NavigateForward(app.hShaderBrowser); break; @@ -556,17 +564,17 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro switch(current_index) { case SETTING_EMU_REWIND_ENABLED: - rmenu_settings_set(S_REWIND); + rarch_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); break; case SETTING_EMU_REWIND_GRANULARITY: if (g_settings.rewind_granularity > 1) g_settings.rewind_granularity--; - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -626,9 +634,9 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { if((g_settings.video.fbo.scale_x > MIN_SCALING_FACTOR)) { - rmenu_settings_set(S_SCALE_FACTOR_DECREMENT); + rarch_settings_set(S_SCALE_FACTOR_DECREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); } } @@ -695,16 +703,16 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_extern.console.screen.gamma_correction ? L"Gamma correction: ON" : L"Gamma correction: OFF"); break; case SETTING_EMU_REWIND_ENABLED: - rmenu_settings_set(S_REWIND); + rarch_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + rarch_settings_msg(S_MSG_RESTART_RARCH, 180); break; case SETTING_EMU_REWIND_GRANULARITY: g_settings.rewind_granularity++; - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -726,9 +734,9 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { if((g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR)) { - rmenu_settings_set(S_SCALE_FACTOR_INCREMENT); + rarch_settings_set(S_SCALE_FACTOR_INCREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); } } @@ -781,16 +789,16 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) GetChildById(L"XuiQuickMenuList", &m_quickmenulist); GetChildById(L"XuiBackButton", &m_back); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); return 0; @@ -811,18 +819,18 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case MENU_XUI_ITEM_LOAD_STATE: case MENU_XUI_ITEM_SAVE_STATE: rarch_state_slot_decrease(); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); break; case MENU_XUI_ITEM_ASPECT_RATIO: - rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); + rarch_settings_set(S_ASPECT_RATIO_DECREMENT); aspectratio_changed = true; break; case MENU_XUI_ITEM_ORIENTATION: - rmenu_settings_set(S_ROTATION_DECREMENT); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + rarch_settings_set(S_ROTATION_DECREMENT); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; @@ -836,18 +844,18 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case MENU_XUI_ITEM_LOAD_STATE: case MENU_XUI_ITEM_SAVE_STATE: rarch_state_slot_increase(); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); break; case MENU_XUI_ITEM_ASPECT_RATIO: - rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); + rarch_settings_set(S_ASPECT_RATIO_INCREMENT); aspectratio_changed = true; break; case MENU_XUI_ITEM_ORIENTATION: - rmenu_settings_set(S_ROTATION_INCREMENT); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + rarch_settings_set(S_ROTATION_INCREMENT); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; @@ -863,7 +871,7 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr if(aspectratio_changed) { driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); } @@ -913,31 +921,31 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } break; case MENU_XUI_ITEM_ASPECT_RATIO: - rmenu_settings_set_default(S_DEF_ASPECT_RATIO); + rarch_settings_set_default(S_DEF_ASPECT_RATIO); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); break; case MENU_XUI_ITEM_ORIENTATION: - rmenu_settings_set_default(S_DEF_ROTATION); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + rarch_settings_set_default(S_DEF_ROTATION); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; case MENU_XUI_ITEM_RESIZE_MODE: input_loop = INPUT_LOOP_RESIZE_MODE; g_settings.video.aspect_ratio_idx = ASPECT_RATIO_CUSTOM; - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESIZE_SCREEN, S_DELAY_270); + rarch_settings_msg(S_MSG_RESIZE_SCREEN, 270); break; case MENU_XUI_ITEM_FRAME_ADVANCE: if (g_extern.main_is_init) { g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); - rmenu_settings_set(S_FRAME_ADVANCE); + rarch_settings_set(S_FRAME_ADVANCE); process_input_ret = -1; } break; @@ -1005,7 +1013,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, g_settings.video.cg_shader_path, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); XuiSceneNavigateBack(hCur, app.hMainScene, XUSER_INDEX_ANY); } else @@ -1020,7 +1028,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, g_settings.video.second_pass_shader, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1099,7 +1107,7 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) convert_char_to_wchar(strw_buffer, g_extern.title_buf, sizeof(strw_buffer)); m_core.SetText(strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); m_title.SetText(strw_buffer); return 0; @@ -1144,7 +1152,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hControlsMenu; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_CHANGE_CONTROLS, S_DELAY_180); + rarch_settings_msg(S_MSG_CHANGE_CONTROLS, 180); NavigateForward(app.hControlsMenu); } @@ -1157,7 +1165,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hCoreBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, S_DELAY_180); + rarch_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, 180); NavigateForward(app.hCoreBrowser); } @@ -1312,7 +1320,7 @@ bool menu_iterate(void) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_LOADING_ROM, 100); + rarch_settings_msg(S_MSG_LOADING_ROM, 100); g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); diff --git a/settings.c b/settings.c index ab9aead207..65926b3519 100644 --- a/settings.c +++ b/settings.c @@ -1,5 +1,6 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * Copyright (C) 2011-2013 - 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- @@ -14,6 +15,7 @@ */ #include "general.h" +#include "settings.h" #include "conf/config_file.h" #include "conf/config_file_macros.h" #include "compat/strl.h" @@ -1321,3 +1323,284 @@ bool config_save_keybinds(const char *path) return true; } +void rarch_settings_set(unsigned setting) +{ + switch(setting) + { + case S_ASPECT_RATIO_DECREMENT: + if(g_settings.video.aspect_ratio_idx > 0) + g_settings.video.aspect_ratio_idx--; + break; + case S_ASPECT_RATIO_INCREMENT: + if(g_settings.video.aspect_ratio_idx < LAST_ASPECT_RATIO) + g_settings.video.aspect_ratio_idx++; + break; + case S_AUDIO_MUTE: + g_extern.audio_data.mute = !g_extern.audio_data.mute; + break; + case S_AUDIO_CONTROL_RATE_DECREMENT: + if (g_settings.audio.rate_control_delta > 0.0) + g_settings.audio.rate_control_delta -= 0.001; + if (g_settings.audio.rate_control_delta == 0.0) + g_settings.audio.rate_control = false; + else + g_settings.audio.rate_control = true; + break; + case S_AUDIO_CONTROL_RATE_INCREMENT: + if (g_settings.audio.rate_control_delta < 0.2) + g_settings.audio.rate_control_delta += 0.001; + g_settings.audio.rate_control = true; + break; + case S_FRAME_ADVANCE: + g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + break; + case S_HW_TEXTURE_FILTER: + g_settings.video.smooth = !g_settings.video.smooth; + break; + case S_HW_TEXTURE_FILTER_2: + g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; + break; + case S_OVERSCAN_DECREMENT: + g_extern.console.screen.overscan_amount -= 0.01f; + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + if(g_extern.console.screen.overscan_amount == 0.0f) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + break; + case S_OVERSCAN_INCREMENT: + g_extern.console.screen.overscan_amount += 0.01f; + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + if(g_extern.console.screen.overscan_amount == 0.0f) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + break; + case S_RESOLUTION_PREVIOUS: + if (g_extern.console.screen.resolutions.current.idx) + { + g_extern.console.screen.resolutions.current.idx--; + g_extern.console.screen.resolutions.current.id = g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]; + } + break; + case S_RESOLUTION_NEXT: + if (g_extern.console.screen.resolutions.current.idx + 1 < g_extern.console.screen.resolutions.count) + { + g_extern.console.screen.resolutions.current.idx++; + g_extern.console.screen.resolutions.current.id = g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]; + } + break; + case S_ROTATION_DECREMENT: + if(g_extern.console.screen.orientation > 0) + g_extern.console.screen.orientation--; + break; + case S_ROTATION_INCREMENT: + if(g_extern.console.screen.orientation < LAST_ORIENTATION) + g_extern.console.screen.orientation++; + break; + case S_REWIND: + g_settings.rewind_enable = !g_settings.rewind_enable; + break; + case S_SAVESTATE_DECREMENT: + if(g_extern.state_slot != 0) + g_extern.state_slot--; + break; + case S_SAVESTATE_INCREMENT: + g_extern.state_slot++; + break; + case S_SCALE_ENABLED: + g_settings.video.render_to_texture = !g_settings.video.render_to_texture; + break; + case S_SCALE_FACTOR_DECREMENT: + g_settings.video.fbo.scale_x -= 1.0f; + g_settings.video.fbo.scale_y -= 1.0f; + break; + case S_SCALE_FACTOR_INCREMENT: + g_settings.video.fbo.scale_x += 1.0f; + g_settings.video.fbo.scale_y += 1.0f; + break; + case S_THROTTLE: + if(!g_extern.system.force_nonblock) + { + if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_THROTTLE_ENABLE); + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_THROTTLE_ENABLE); + } + break; + case S_TRIPLE_BUFFERING: + if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE)) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); + break; + case S_REFRESH_RATE_DECREMENT: + g_settings.video.refresh_rate -= 0.01f; + break; + case S_REFRESH_RATE_INCREMENT: + g_settings.video.refresh_rate += 0.01f; + break; + case S_INFO_DEBUG_MSG_TOGGLE: + if (g_extern.lifecycle_mode_state & (1ULL << MODE_FPS_DRAW)) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FPS_DRAW); + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_FPS_DRAW); + break; + case S_INFO_MSG_TOGGLE: + if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INFO_DRAW); + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); + break; + default: + RARCH_WARN("rarch_settings_set - unhandled action.\n"); + } +} + +void rarch_settings_set_default(unsigned setting) +{ + switch(setting) + { + case S_DEF_ASPECT_RATIO: + g_settings.video.aspect_ratio_idx = ASPECT_RATIO_4_3; + break; + case S_DEF_AUDIO_MUTE: + g_extern.audio_data.mute = false; + break; + case S_DEF_AUDIO_CONTROL_RATE: +#ifdef GEKKO + g_settings.audio.rate_control_delta = 0.006; + g_settings.audio.rate_control = true; +#else + g_settings.audio.rate_control_delta = 0.0; + g_settings.audio.rate_control = false; +#endif + break; + case S_DEF_HW_TEXTURE_FILTER: + g_settings.video.smooth = 1; + break; + case S_DEF_HW_TEXTURE_FILTER_2: + g_settings.video.second_pass_smooth = 1; + break; + case S_DEF_OVERSCAN: + g_extern.console.screen.overscan_amount = 0.0f; + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + break; + case S_DEF_ROTATION: + g_extern.console.screen.orientation = ORIENTATION_NORMAL; + break; + case S_DEF_THROTTLE: + if(!g_extern.system.force_nonblock) + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_THROTTLE_ENABLE); + break; + case S_DEF_TRIPLE_BUFFERING: + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); + break; + case S_DEF_SAVE_STATE: + g_extern.state_slot = 0; + break; + case S_DEF_SCALE_ENABLED: + g_settings.video.render_to_texture = true; + g_settings.video.fbo.scale_x = 2.0f; + g_settings.video.fbo.scale_y = 2.0f; + break; + case S_DEF_SCALE_FACTOR: + g_settings.video.fbo.scale_x = 2.0f; + g_settings.video.fbo.scale_y = 2.0f; + break; + case S_DEF_REFRESH_RATE: +#if defined(RARCH_CONSOLE) + g_settings.video.refresh_rate = 59.92; +#else + g_settings.video.refresh_rate = 59.95; +#endif + break; + case S_DEF_INFO_DEBUG_MSG: + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FPS_DRAW); + break; + case S_DEF_INFO_MSG: + g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); + break; + default: + RARCH_WARN("rarch_settings_set_default: unhandled action.\n"); + } +} + +void rarch_settings_msg(unsigned setting, unsigned delay) +{ + char str[PATH_MAX], tmp[PATH_MAX]; + msg_queue_clear(g_extern.msg_queue); + + (void)tmp; + + switch(setting) + { + case S_MSG_CACHE_PARTITION: + snprintf(str, sizeof(str), "INFO - All the contents of the ZIP files you have selected\nare extracted to this partition."); + break; + case S_MSG_CHANGE_CONTROLS: + snprintf(str, sizeof(str), "INFO - Press LEFT/RIGHT to change the controls, and press\n[RetroPad Start] to reset a button to default values."); + break; + case S_MSG_LOADING_ROM: + fill_pathname_base(tmp, g_extern.fullpath, sizeof(tmp)); + snprintf(str, sizeof(str), "INFO - Loading %s...", tmp); + break; + case S_MSG_DIR_LOADING_ERROR: + snprintf(str, sizeof(str), "ERROR - Failed to open selected directory."); + break; + case S_MSG_ROM_LOADING_ERROR: + snprintf(str, sizeof(str), "ERROR - An error occurred during ROM loading."); + break; + case S_MSG_NOT_IMPLEMENTED: + snprintf(str, sizeof(str), "TODO - Not yet implemented."); + break; + case S_MSG_RESIZE_SCREEN: + snprintf(str, sizeof(str), "INFO - Resize the screen by moving around the two analog sticks.\nPress [RetroPad X] to reset to default values, and [RetroPad A] to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'."); + break; + case S_MSG_RESTART_RARCH: + snprintf(str, sizeof(str), "INFO - You need to restart RetroArch."); + break; + case S_MSG_SELECT_LIBRETRO_CORE: + snprintf(str, sizeof(str), "INFO - Select a Libretro core from the menu."); + break; + case S_MSG_SELECT_SHADER: + snprintf(str, sizeof(str), "INFO - Select a shader from the menu."); + break; + case S_MSG_SHADER_LOADING_SUCCEEDED: + snprintf(str, sizeof(str), "INFO - Shader successfully loaded."); + break; + } + + msg_queue_push(g_extern.msg_queue, str, 1, delay); +} + +void menu_settings_create_menu_item_label(char * str, unsigned setting, size_t size) +{ + switch (setting) + { + case S_LBL_ASPECT_RATIO: + snprintf(str, size, "Aspect Ratio: %s", aspectratio_lut[g_settings.video.aspect_ratio_idx].name); + break; + case S_LBL_SHADER: + snprintf(str, size, "Shader #1: %s", g_settings.video.cg_shader_path); + break; + case S_LBL_SHADER_2: + snprintf(str, size, "Shader #2: %s", g_settings.video.second_pass_shader); + break; + case S_LBL_RARCH_VERSION: + snprintf(str, size, "RetroArch %s", PACKAGE_VERSION); + break; + case S_LBL_SCALE_FACTOR: + snprintf(str, size, "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo.scale_x, g_settings.video.fbo.scale_y); + break; + case S_LBL_ROTATION: + snprintf(str, size, "Rotation: %s", rotation_lut[g_extern.console.screen.orientation]); + break; + case S_LBL_LOAD_STATE_SLOT: + snprintf(str, size, "Load State #%d", g_extern.state_slot); + break; + case S_LBL_SAVE_STATE_SLOT: + snprintf(str, size, "Save State #%d", g_extern.state_slot); + break; + case S_LBL_REWIND_GRANULARITY: + snprintf(str, size, "Rewind granularity: %d", g_settings.rewind_granularity); + break; + } +} diff --git a/frontend/menu/rmenu_settings.h b/settings.h similarity index 81% rename from frontend/menu/rmenu_settings.h rename to settings.h index cfd418f0df..074a682474 100644 --- a/frontend/menu/rmenu_settings.h +++ b/settings.h @@ -14,18 +14,8 @@ * If not, see . */ -#ifndef CONSOLE_SETTINGS_H -#define CONSOLE_SETTINGS_H - -enum -{ - S_DELAY_0 = 0, - S_DELAY_1 = 1, - S_DELAY_45 = 45, - S_DELAY_90 = 90, - S_DELAY_180 = 180, - S_DELAY_270 = 270 -}; +#ifndef __RARCH_SETTINGS_H +#define __RARCH_SETTINGS_H enum { @@ -104,11 +94,10 @@ enum S_LBL_REWIND_GRANULARITY, }; -void rmenu_settings_set(unsigned setting); -void rmenu_settings_set_default(unsigned setting); -void rmenu_settings_msg(unsigned setting, unsigned delay); +void rarch_settings_set(unsigned setting); +void rarch_settings_set_default(unsigned setting); +void rarch_settings_msg(unsigned setting, unsigned delay); -void rmenu_settings_create_menu_item_label(char * str, unsigned setting, size_t size); -void rmenu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size); +void menu_settings_create_menu_item_label(char * str, unsigned setting, size_t size); #endif From 9d9eb90574fac3ce79094a1dfa23817adef75bc2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 17:04:18 +0100 Subject: [PATCH 61/84] Drop another HAVE_RMENU ifdef in retroarch.c --- retroarch.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/retroarch.c b/retroarch.c index 4637c6a6d2..4d864da5aa 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2869,7 +2869,6 @@ bool rarch_main_iterate(void) return false; } -#ifdef HAVE_RMENU if (input_key_pressed_func(RARCH_MENU_TOGGLE) && g_extern.frame_count >= g_extern.delay_timer[0]) { if (input_key_pressed_func(RARCH_MENU_QUICKMENU_TOGGLE)) @@ -2879,7 +2878,6 @@ bool rarch_main_iterate(void) g_extern.delay_timer[0] = g_extern.frame_count + 30; return false; } -#endif #ifdef HAVE_COMMAND if (driver.command) From e7f206be79ad159349a4ce54698ae0125da26f69 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 17:09:40 +0100 Subject: [PATCH 62/84] Revert "Move rmenu_settings.c to settings.c + add header file" This reverts commit b827075d55ff690ab76cdd76af5fdbadb261c0b8. --- console/griffin/griffin.c | 1 + frontend/frontend_console.c | 3 +- frontend/menu/rgui.c | 52 ++-- frontend/menu/rmenu.c | 118 +++---- frontend/menu/rmenu_settings.c | 312 +++++++++++++++++++ settings.h => frontend/menu/rmenu_settings.h | 23 +- frontend/menu/rmenu_xui.cpp | 106 +++---- settings.c | 283 ----------------- 8 files changed, 466 insertions(+), 432 deletions(-) create mode 100644 frontend/menu/rmenu_settings.c rename settings.h => frontend/menu/rmenu_settings.h (81%) diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index 109bdabd04..2fa09cc89a 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -438,6 +438,7 @@ MENU #endif #ifdef HAVE_RMENU +#include "../../frontend/menu/rmenu_settings.c" #if defined(_XBOX360) #include "../../frontend/menu/rmenu_xui.cpp" diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index 58c12f2eef..a2e2644daf 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -21,6 +21,7 @@ #include "frontend_console.h" #include "menu/rmenu.h" +#include "menu/rmenu_settings.h" #if defined(__CELLOS_LV2__) #include "platform/platform_ps3.c" @@ -311,7 +312,7 @@ begin_loop: { RARCH_ERR("rarch_main_init failed.\n"); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); - rarch_settings_msg(S_MSG_ROM_LOADING_ERROR, 180); + rmenu_settings_msg(S_MSG_ROM_LOADING_ERROR, S_DELAY_180); } g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT); } diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 2731ff3154..d4527dcc49 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -21,8 +21,8 @@ #include "rgui.h" #include "utils/file_list.h" +#include "rmenu_settings.h" #include "../../general.h" -#include "../../settings.h" #include "../../gfx/gfx_common.h" #ifdef HAVE_OPENGL @@ -484,7 +484,7 @@ static void render_text(rgui_handle_t *rgui) case RGUI_SETTINGS_VIDEO_ROTATION: { char rotate_msg[64]; - menu_settings_create_menu_item_label(rotate_msg, S_LBL_ROTATION, sizeof(rotate_msg)); + rmenu_settings_create_menu_item_label(rotate_msg, S_LBL_ROTATION, sizeof(rotate_msg)); snprintf(type_str, sizeof(type_str), rotate_msg); } break; @@ -613,10 +613,10 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t case RGUI_SETTINGS_REWIND_ENABLE: if (action == RGUI_ACTION_OK || action == RGUI_ACTION_LEFT || action == RGUI_ACTION_RIGHT) { - rarch_settings_set(S_REWIND); + rmenu_settings_set(S_REWIND); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } else if (action == RGUI_ACTION_START) g_settings.rewind_enable = false; @@ -644,11 +644,11 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t return -1; } else if (action == RGUI_ACTION_START) - rarch_settings_set_default(S_DEF_SAVE_STATE); + rmenu_settings_set_default(S_DEF_SAVE_STATE); else if (action == RGUI_ACTION_LEFT) - rarch_settings_set(S_SAVESTATE_DECREMENT); + rmenu_settings_set(S_SAVESTATE_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rarch_settings_set(S_SAVESTATE_INCREMENT); + rmenu_settings_set(S_SAVESTATE_INCREMENT); break; case RGUI_SETTINGS_SCREENSHOT: if (action == RGUI_ACTION_OK) @@ -670,7 +670,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t data + (height - 1) * (pitch >> 1), width, height, -pitch, false); - msg_queue_push(g_extern.msg_queue, r ? "Screenshot saved" : "Screenshot failed to save", 1, 90); + msg_queue_push(g_extern.msg_queue, r ? "Screenshot saved" : "Screenshot failed to save", 1, S_DELAY_90); } break; case RGUI_SETTINGS_RESTART_GAME: @@ -683,9 +683,9 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t break; case RGUI_SETTINGS_VIDEO_FILTER: if (action == RGUI_ACTION_START) - rarch_settings_set_default(S_DEF_HW_TEXTURE_FILTER); + rmenu_settings_set_default(S_DEF_HW_TEXTURE_FILTER); else - rarch_settings_set(S_HW_TEXTURE_FILTER); + rmenu_settings_set(S_HW_TEXTURE_FILTER); break; #ifdef HW_RVL case RGUI_SETTINGS_VIDEO_SOFT_FILTER: @@ -749,60 +749,60 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t break; case RGUI_SETTINGS_VIDEO_ASPECT_RATIO: if (action == RGUI_ACTION_START) - rarch_settings_set_default(S_DEF_ASPECT_RATIO); + rmenu_settings_set_default(S_DEF_ASPECT_RATIO); else if (action == RGUI_ACTION_LEFT) - rarch_settings_set(S_ASPECT_RATIO_DECREMENT); + rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rarch_settings_set(S_ASPECT_RATIO_INCREMENT); + rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); video_set_aspect_ratio_func(g_settings.video.aspect_ratio_idx); break; case RGUI_SETTINGS_VIDEO_ROTATION: if (action == RGUI_ACTION_START) { - rarch_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); + rmenu_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); video_set_rotation_func(g_extern.console.screen.orientation); } else if (action == RGUI_ACTION_LEFT) { - rarch_settings_set(S_ROTATION_DECREMENT); + rmenu_settings_set(S_ROTATION_DECREMENT); video_set_rotation_func(g_extern.console.screen.orientation); } else if (action == RGUI_ACTION_RIGHT) { - rarch_settings_set(S_ROTATION_INCREMENT); + rmenu_settings_set(S_ROTATION_INCREMENT); video_set_rotation_func(g_extern.console.screen.orientation); } break; case RGUI_SETTINGS_VIDEO_OVERSCAN: if (action == RGUI_ACTION_START) { - rarch_settings_set_default(S_DEF_OVERSCAN); + rmenu_settings_set_default(S_DEF_OVERSCAN); driver.video->apply_state_changes(); } else if (action == RGUI_ACTION_LEFT) { - rarch_settings_set(S_OVERSCAN_DECREMENT); + rmenu_settings_set(S_OVERSCAN_DECREMENT); driver.video->apply_state_changes(); } else if (action == RGUI_ACTION_RIGHT) { - rarch_settings_set(S_OVERSCAN_INCREMENT); + rmenu_settings_set(S_OVERSCAN_INCREMENT); driver.video->apply_state_changes(); } break; case RGUI_SETTINGS_AUDIO_MUTE: if (action == RGUI_ACTION_START) - rarch_settings_set_default(S_DEF_AUDIO_MUTE); + rmenu_settings_set_default(S_DEF_AUDIO_MUTE); else - rarch_settings_set(S_AUDIO_MUTE); + rmenu_settings_set(S_AUDIO_MUTE); break; case RGUI_SETTINGS_AUDIO_CONTROL_RATE: if (action == RGUI_ACTION_START) - rarch_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); + rmenu_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); else if (action == RGUI_ACTION_LEFT) - rarch_settings_set(S_AUDIO_CONTROL_RATE_DECREMENT); + rmenu_settings_set(S_AUDIO_CONTROL_RATE_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rarch_settings_set(S_AUDIO_CONTROL_RATE_INCREMENT); + rmenu_settings_set(S_AUDIO_CONTROL_RATE_INCREMENT); break; case RGUI_SETTINGS_RESAMPLER_TYPE: { @@ -1371,7 +1371,7 @@ int rgui_iterate(rgui_handle_t *rgui, rgui_action_t action) strlcpy(g_extern.fullpath, rgui->path_buf, sizeof(g_extern.fullpath)); g_extern.lifecycle_mode_state |= (1ULL << MODE_LOAD_GAME); - rarch_settings_msg(S_MSG_LOADING_ROM, 1); + rmenu_settings_msg(S_MSG_LOADING_ROM, S_DELAY_1); rgui->need_refresh = true; // in case of zip extract rgui->msg_force = true; } @@ -1652,7 +1652,7 @@ int rmenu_input_process(void *data, void *state) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_LOADING_ROM, 100); + rmenu_settings_msg(S_MSG_LOADING_ROM, 100); if (g_extern.fullpath) g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index b44d3c144a..3b5c0c5325 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -29,6 +29,7 @@ #include "../../console/rarch_console.h" #include "../../console/rarch_console_input.h" +#include "rmenu_settings.h" #include "../../gfx/image.h" @@ -38,7 +39,6 @@ #include "../../file.h" #include "../../driver.h" #include "../../general.h" -#include "../../settings.h" #define EXT_IMAGES "png|PNG|jpg|JPG|JPEG|jpeg" #define EXT_SHADERS "cg|CG" @@ -625,7 +625,7 @@ static void browser_update(void *data, uint64_t input, const char *extensions) ret = filebrowser_iterate(b, action); if(!ret) - rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); + rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); } void browser_render(void *data) @@ -724,7 +724,7 @@ int select_file(void *data, void *state) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, path, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); + rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -740,7 +740,7 @@ int select_file(void *data, void *state) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, path, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); + rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -782,7 +782,7 @@ int select_file(void *data, void *state) else { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } break; } @@ -791,7 +791,7 @@ int select_file(void *data, void *state) } if(!ret) - rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); + rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); } else if (input & (1ULL << RMENU_DEVICE_NAV_X)) menu_stack_pop(); @@ -889,7 +889,7 @@ int select_directory(void *data, void *state) } if(!ret) - rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); + rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); display_menubar(current_menu); @@ -1028,9 +1028,9 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) #ifdef __CELLOS_LV2__ case SETTING_CHANGE_RESOLUTION: if(input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) - rarch_settings_set(S_RESOLUTION_NEXT); + rmenu_settings_set(S_RESOLUTION_NEXT); if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) - rarch_settings_set(S_RESOLUTION_PREVIOUS); + rmenu_settings_set(S_RESOLUTION_PREVIOUS); if(input & (1ULL << RMENU_DEVICE_NAV_B)) { if (g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx] == CELL_VIDEO_OUT_RESOLUTION_576) @@ -1106,7 +1106,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, NULL, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); + rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1126,7 +1126,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, NULL, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); + rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1159,7 +1159,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE_PENDING); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } } if(input & (1ULL << RMENU_DEVICE_NAV_START)) @@ -1172,7 +1172,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE_PENDING); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } } } @@ -1194,29 +1194,29 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_KEEP_ASPECT_RATIO: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rarch_settings_set(S_ASPECT_RATIO_DECREMENT); + rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); } if(input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) { - rarch_settings_set(S_ASPECT_RATIO_INCREMENT); + rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set_default(S_DEF_ASPECT_RATIO); + rmenu_settings_set_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 & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rarch_settings_set(S_HW_TEXTURE_FILTER); + rmenu_settings_set(S_HW_TEXTURE_FILTER); device_ptr->ctx_driver->set_filtering(1, g_settings.video.smooth); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set(S_DEF_HW_TEXTURE_FILTER); + rmenu_settings_set(S_DEF_HW_TEXTURE_FILTER); device_ptr->ctx_driver->set_filtering(1, g_settings.video.smooth); } break; @@ -1224,19 +1224,19 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_HW_TEXTURE_FILTER_2: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rarch_settings_set(S_HW_TEXTURE_FILTER_2); + rmenu_settings_set(S_HW_TEXTURE_FILTER_2); device_ptr->ctx_driver->set_filtering(2, g_settings.video.second_pass_smooth); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set(S_DEF_HW_TEXTURE_FILTER_2); + rmenu_settings_set(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 & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rarch_settings_set(S_SCALE_ENABLED); + rmenu_settings_set(S_SCALE_ENABLED); if(g_settings.video.render_to_texture) device_ptr->ctx_driver->set_fbo(FBO_INIT); @@ -1245,7 +1245,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set_default(S_DEF_SCALE_ENABLED); + rmenu_settings_set_default(S_DEF_SCALE_ENABLED); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } break; @@ -1258,7 +1258,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) if(should_decrement) { - rarch_settings_set(S_SCALE_FACTOR_DECREMENT); + rmenu_settings_set(S_SCALE_FACTOR_DECREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } } @@ -1270,14 +1270,14 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) bool should_increment = g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR; if(should_increment) { - rarch_settings_set(S_SCALE_FACTOR_INCREMENT); + rmenu_settings_set(S_SCALE_FACTOR_INCREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } } } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set_default(S_DEF_SCALE_FACTOR); + rmenu_settings_set_default(S_DEF_SCALE_FACTOR); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } break; @@ -1312,34 +1312,34 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_HW_OVERSCAN_AMOUNT: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rarch_settings_set(S_OVERSCAN_DECREMENT); + rmenu_settings_set(S_OVERSCAN_DECREMENT); gfx_ctx_set_overscan(); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rarch_settings_set(S_OVERSCAN_INCREMENT); + rmenu_settings_set(S_OVERSCAN_INCREMENT); gfx_ctx_set_overscan(); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set_default(S_DEF_OVERSCAN); + rmenu_settings_set_default(S_DEF_OVERSCAN); gfx_ctx_set_overscan(); } break; case SETTING_REFRESH_RATE: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rarch_settings_set(S_REFRESH_RATE_DECREMENT); + rmenu_settings_set(S_REFRESH_RATE_DECREMENT); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rarch_settings_set(S_REFRESH_RATE_INCREMENT); + rmenu_settings_set(S_REFRESH_RATE_INCREMENT); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set_default(S_DEF_REFRESH_RATE); + rmenu_settings_set_default(S_DEF_REFRESH_RATE); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } break; @@ -1348,7 +1348,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { if (!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK))) { - rarch_settings_set(S_THROTTLE); + rmenu_settings_set(S_THROTTLE); device_ptr->ctx_driver->swap_interval((g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) ? true : false); } } @@ -1356,7 +1356,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { if (!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK))) { - rarch_settings_set_default(S_DEF_THROTTLE); + rmenu_settings_set_default(S_DEF_THROTTLE); device_ptr->ctx_driver->swap_interval((g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) ? true : false); } } @@ -1364,12 +1364,12 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_TRIPLE_BUFFERING: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rarch_settings_set(S_TRIPLE_BUFFERING); + rmenu_settings_set(S_TRIPLE_BUFFERING); driver.video->restart(); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set_default(S_DEF_TRIPLE_BUFFERING); + rmenu_settings_set_default(S_DEF_TRIPLE_BUFFERING); if(!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE))) driver.video->restart(); @@ -1461,31 +1461,31 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) break; case SETTING_EMU_CURRENT_SAVE_STATE_SLOT: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) - rarch_settings_set(S_SAVESTATE_DECREMENT); + rmenu_settings_set(S_SAVESTATE_DECREMENT); if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rarch_settings_set(S_SAVESTATE_INCREMENT); + rmenu_settings_set(S_SAVESTATE_INCREMENT); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rarch_settings_set_default(S_DEF_SAVE_STATE); + rmenu_settings_set_default(S_DEF_SAVE_STATE); break; case SETTING_EMU_SHOW_DEBUG_INFO_MSG: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rarch_settings_set(S_INFO_DEBUG_MSG_TOGGLE); + rmenu_settings_set(S_INFO_DEBUG_MSG_TOGGLE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rarch_settings_set_default(S_DEF_INFO_DEBUG_MSG); + rmenu_settings_set_default(S_DEF_INFO_DEBUG_MSG); break; case SETTING_EMU_SHOW_INFO_MSG: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rarch_settings_set(S_INFO_MSG_TOGGLE); + rmenu_settings_set(S_INFO_MSG_TOGGLE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rarch_settings_set_default(S_DEF_INFO_MSG); + rmenu_settings_set_default(S_DEF_INFO_MSG); break; case SETTING_EMU_REWIND_ENABLED: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rarch_settings_set(S_REWIND); + rmenu_settings_set(S_REWIND); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) g_settings.rewind_enable = false; @@ -1562,10 +1562,10 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) break; case SETTING_EMU_AUDIO_MUTE: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rarch_settings_set(S_AUDIO_MUTE); + rmenu_settings_set(S_AUDIO_MUTE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rarch_settings_set_default(S_DEF_AUDIO_MUTE); + rmenu_settings_set_default(S_DEF_AUDIO_MUTE); break; #ifdef _XBOX1 case SETTING_EMU_AUDIO_SOUND_VOLUME_LEVEL: @@ -1573,14 +1573,14 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { g_extern.console.sound.volume_level = !g_extern.console.sound.volume_level; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { g_extern.console.sound.volume_level = 0; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } break; #endif @@ -1961,7 +1961,7 @@ int select_rom(void *data, void *state) bool ret = filebrowser_iterate(filebrowser, FILEBROWSER_ACTION_OK); if(!ret) - rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); + rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); } else { @@ -2297,19 +2297,19 @@ int ingame_menu(void *data, void *state) case MENU_ITEM_ORIENTATION: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rarch_settings_set(S_ROTATION_DECREMENT); + rmenu_settings_set(S_ROTATION_DECREMENT); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rarch_settings_set(S_ROTATION_INCREMENT); + rmenu_settings_set(S_ROTATION_INCREMENT); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rarch_settings_set_default(S_DEF_ROTATION); + rmenu_settings_set_default(S_DEF_ROTATION); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } snprintf(strw_buffer, sizeof(strw_buffer), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1ULL << RETRO_DEVICE_ID_JOYPAD_START)); @@ -2329,7 +2329,7 @@ int ingame_menu(void *data, void *state) { g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME_EXIT); - rarch_settings_set(S_FRAME_ADVANCE); + rmenu_settings_set(S_FRAME_ADVANCE); menu_idx = MENU_ITEM_FRAME_ADVANCE; return -1; } @@ -2432,23 +2432,23 @@ int ingame_menu(void *data, void *state) device_ptr->font_ctx->render_msg_place(device_ptr,default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, strw_buffer); - menu_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, default_pos.x_position, default_pos.y_position, default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_LOAD_STATE), strw_buffer); - menu_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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); - menu_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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); device_ptr->font_ctx->render_msg_place(device_ptr, 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); - menu_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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 - menu_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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 @@ -2552,7 +2552,7 @@ int rmenu_input_process(void *data, void *state) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_LOADING_ROM, 100); + rmenu_settings_msg(S_MSG_LOADING_ROM, 100); g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); diff --git a/frontend/menu/rmenu_settings.c b/frontend/menu/rmenu_settings.c new file mode 100644 index 0000000000..d6698067bd --- /dev/null +++ b/frontend/menu/rmenu_settings.c @@ -0,0 +1,312 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * Copyright (C) 2011-2013 - 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 +#include +#include + +#include "../../general.h" +#include "rmenu_settings.h" + +void rmenu_settings_set(unsigned setting) +{ + switch(setting) + { + case S_ASPECT_RATIO_DECREMENT: + if(g_settings.video.aspect_ratio_idx > 0) + g_settings.video.aspect_ratio_idx--; + break; + case S_ASPECT_RATIO_INCREMENT: + if(g_settings.video.aspect_ratio_idx < LAST_ASPECT_RATIO) + g_settings.video.aspect_ratio_idx++; + break; + case S_AUDIO_MUTE: + g_extern.audio_data.mute = !g_extern.audio_data.mute; + break; + case S_AUDIO_CONTROL_RATE_DECREMENT: + if (g_settings.audio.rate_control_delta > 0.0) + g_settings.audio.rate_control_delta -= 0.001; + if (g_settings.audio.rate_control_delta == 0.0) + g_settings.audio.rate_control = false; + else + g_settings.audio.rate_control = true; + break; + case S_AUDIO_CONTROL_RATE_INCREMENT: + if (g_settings.audio.rate_control_delta < 0.2) + g_settings.audio.rate_control_delta += 0.001; + g_settings.audio.rate_control = true; + break; + case S_FRAME_ADVANCE: + g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + break; + case S_HW_TEXTURE_FILTER: + g_settings.video.smooth = !g_settings.video.smooth; + break; + case S_HW_TEXTURE_FILTER_2: + g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; + break; + case S_OVERSCAN_DECREMENT: + g_extern.console.screen.overscan_amount -= 0.01f; + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + if(g_extern.console.screen.overscan_amount == 0.0f) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + break; + case S_OVERSCAN_INCREMENT: + g_extern.console.screen.overscan_amount += 0.01f; + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + if(g_extern.console.screen.overscan_amount == 0.0f) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + break; + case S_RESOLUTION_PREVIOUS: + if (g_extern.console.screen.resolutions.current.idx) + { + g_extern.console.screen.resolutions.current.idx--; + g_extern.console.screen.resolutions.current.id = g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]; + } + break; + case S_RESOLUTION_NEXT: + if (g_extern.console.screen.resolutions.current.idx + 1 < g_extern.console.screen.resolutions.count) + { + g_extern.console.screen.resolutions.current.idx++; + g_extern.console.screen.resolutions.current.id = g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]; + } + break; + case S_ROTATION_DECREMENT: + if(g_extern.console.screen.orientation > 0) + g_extern.console.screen.orientation--; + break; + case S_ROTATION_INCREMENT: + if(g_extern.console.screen.orientation < LAST_ORIENTATION) + g_extern.console.screen.orientation++; + break; + case S_REWIND: + g_settings.rewind_enable = !g_settings.rewind_enable; + break; + case S_SAVESTATE_DECREMENT: + if(g_extern.state_slot != 0) + g_extern.state_slot--; + break; + case S_SAVESTATE_INCREMENT: + g_extern.state_slot++; + break; + case S_SCALE_ENABLED: + g_settings.video.render_to_texture = !g_settings.video.render_to_texture; + break; + case S_SCALE_FACTOR_DECREMENT: + g_settings.video.fbo.scale_x -= 1.0f; + g_settings.video.fbo.scale_y -= 1.0f; + break; + case S_SCALE_FACTOR_INCREMENT: + g_settings.video.fbo.scale_x += 1.0f; + g_settings.video.fbo.scale_y += 1.0f; + break; + case S_THROTTLE: + if(!g_extern.system.force_nonblock) + { + if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_THROTTLE_ENABLE); + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_THROTTLE_ENABLE); + } + break; + case S_TRIPLE_BUFFERING: + if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE)) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); + break; + case S_REFRESH_RATE_DECREMENT: + g_settings.video.refresh_rate -= 0.01f; + break; + case S_REFRESH_RATE_INCREMENT: + g_settings.video.refresh_rate += 0.01f; + break; + case S_INFO_DEBUG_MSG_TOGGLE: + if (g_extern.lifecycle_mode_state & (1ULL << MODE_FPS_DRAW)) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FPS_DRAW); + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_FPS_DRAW); + break; + case S_INFO_MSG_TOGGLE: + if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INFO_DRAW); + else + g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); + break; + default: + RARCH_WARN("rmenu_settings_set - unhandled action.\n"); + } +} + +void rmenu_settings_set_default(unsigned setting) +{ + switch(setting) + { + case S_DEF_ASPECT_RATIO: + g_settings.video.aspect_ratio_idx = ASPECT_RATIO_4_3; + break; + case S_DEF_AUDIO_MUTE: + g_extern.audio_data.mute = false; + break; + case S_DEF_AUDIO_CONTROL_RATE: +#ifdef GEKKO + g_settings.audio.rate_control_delta = 0.006; + g_settings.audio.rate_control = true; +#else + g_settings.audio.rate_control_delta = 0.0; + g_settings.audio.rate_control = false; +#endif + break; + case S_DEF_HW_TEXTURE_FILTER: + g_settings.video.smooth = 1; + break; + case S_DEF_HW_TEXTURE_FILTER_2: + g_settings.video.second_pass_smooth = 1; + break; + case S_DEF_OVERSCAN: + g_extern.console.screen.overscan_amount = 0.0f; + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); + break; + case S_DEF_ROTATION: + g_extern.console.screen.orientation = ORIENTATION_NORMAL; + break; + case S_DEF_THROTTLE: + if(!g_extern.system.force_nonblock) + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_THROTTLE_ENABLE); + break; + case S_DEF_TRIPLE_BUFFERING: + g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); + break; + case S_DEF_SAVE_STATE: + g_extern.state_slot = 0; + break; + case S_DEF_SCALE_ENABLED: + g_settings.video.render_to_texture = true; + g_settings.video.fbo.scale_x = 2.0f; + g_settings.video.fbo.scale_y = 2.0f; + break; + case S_DEF_SCALE_FACTOR: + g_settings.video.fbo.scale_x = 2.0f; + g_settings.video.fbo.scale_y = 2.0f; + break; + case S_DEF_REFRESH_RATE: +#if defined(RARCH_CONSOLE) + g_settings.video.refresh_rate = 59.92; +#else + g_settings.video.refresh_rate = 59.95; +#endif + break; + case S_DEF_INFO_DEBUG_MSG: + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FPS_DRAW); + break; + case S_DEF_INFO_MSG: + g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); + break; + default: + RARCH_WARN("rmenu_settings_set_default: unhandled action.\n"); + } +} + +void rmenu_settings_msg(unsigned setting, unsigned delay) +{ + char str[PATH_MAX], tmp[PATH_MAX]; + msg_queue_clear(g_extern.msg_queue); + + (void)tmp; + + switch(setting) + { + case S_MSG_CACHE_PARTITION: + snprintf(str, sizeof(str), "INFO - All the contents of the ZIP files you have selected\nare extracted to this partition."); + break; + case S_MSG_CHANGE_CONTROLS: + snprintf(str, sizeof(str), "INFO - Press LEFT/RIGHT to change the controls, and press\n[RetroPad Start] to reset a button to default values."); + break; + case S_MSG_LOADING_ROM: + fill_pathname_base(tmp, g_extern.fullpath, sizeof(tmp)); + snprintf(str, sizeof(str), "INFO - Loading %s...", tmp); + break; + case S_MSG_DIR_LOADING_ERROR: + snprintf(str, sizeof(str), "ERROR - Failed to open selected directory."); + break; + case S_MSG_ROM_LOADING_ERROR: + snprintf(str, sizeof(str), "ERROR - An error occurred during ROM loading."); + break; + case S_MSG_NOT_IMPLEMENTED: + snprintf(str, sizeof(str), "TODO - Not yet implemented."); + break; + case S_MSG_RESIZE_SCREEN: + snprintf(str, sizeof(str), "INFO - Resize the screen by moving around the two analog sticks.\nPress [RetroPad X] to reset to default values, and [RetroPad A] to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'."); + break; + case S_MSG_RESTART_RARCH: + snprintf(str, sizeof(str), "INFO - You need to restart RetroArch."); + break; + case S_MSG_SELECT_LIBRETRO_CORE: + snprintf(str, sizeof(str), "INFO - Select a Libretro core from the menu."); + break; + case S_MSG_SELECT_SHADER: + snprintf(str, sizeof(str), "INFO - Select a shader from the menu."); + break; + case S_MSG_SHADER_LOADING_SUCCEEDED: + snprintf(str, sizeof(str), "INFO - Shader successfully loaded."); + break; + } + + msg_queue_push(g_extern.msg_queue, str, 1, delay); +} + +void rmenu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size) +{ + char str[PATH_MAX]; + + rmenu_settings_create_menu_item_label(str, setting, sizeof(str)); + convert_char_to_wchar(strwbuf, str, size); +} + +void rmenu_settings_create_menu_item_label(char * str, unsigned setting, size_t size) +{ + switch (setting) + { + case S_LBL_ASPECT_RATIO: + snprintf(str, size, "Aspect Ratio: %s", aspectratio_lut[g_settings.video.aspect_ratio_idx].name); + break; + case S_LBL_SHADER: + snprintf(str, size, "Shader #1: %s", g_settings.video.cg_shader_path); + break; + case S_LBL_SHADER_2: + snprintf(str, size, "Shader #2: %s", g_settings.video.second_pass_shader); + break; + case S_LBL_RARCH_VERSION: + snprintf(str, size, "RetroArch %s", PACKAGE_VERSION); + break; + case S_LBL_SCALE_FACTOR: + snprintf(str, size, "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo.scale_x, g_settings.video.fbo.scale_y); + break; + case S_LBL_ROTATION: + snprintf(str, size, "Rotation: %s", rotation_lut[g_extern.console.screen.orientation]); + break; + case S_LBL_LOAD_STATE_SLOT: + snprintf(str, size, "Load State #%d", g_extern.state_slot); + break; + case S_LBL_SAVE_STATE_SLOT: + snprintf(str, size, "Save State #%d", g_extern.state_slot); + break; + case S_LBL_REWIND_GRANULARITY: + snprintf(str, size, "Rewind granularity: %d", g_settings.rewind_granularity); + break; + } +} diff --git a/settings.h b/frontend/menu/rmenu_settings.h similarity index 81% rename from settings.h rename to frontend/menu/rmenu_settings.h index 074a682474..cfd418f0df 100644 --- a/settings.h +++ b/frontend/menu/rmenu_settings.h @@ -14,8 +14,18 @@ * If not, see . */ -#ifndef __RARCH_SETTINGS_H -#define __RARCH_SETTINGS_H +#ifndef CONSOLE_SETTINGS_H +#define CONSOLE_SETTINGS_H + +enum +{ + S_DELAY_0 = 0, + S_DELAY_1 = 1, + S_DELAY_45 = 45, + S_DELAY_90 = 90, + S_DELAY_180 = 180, + S_DELAY_270 = 270 +}; enum { @@ -94,10 +104,11 @@ enum S_LBL_REWIND_GRANULARITY, }; -void rarch_settings_set(unsigned setting); -void rarch_settings_set_default(unsigned setting); -void rarch_settings_msg(unsigned setting, unsigned delay); +void rmenu_settings_set(unsigned setting); +void rmenu_settings_set_default(unsigned setting); +void rmenu_settings_msg(unsigned setting, unsigned delay); -void menu_settings_create_menu_item_label(char * str, unsigned setting, size_t size); +void rmenu_settings_create_menu_item_label(char * str, unsigned setting, size_t size); +void rmenu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size); #endif diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index fd6d17e230..b9d705290b 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -24,6 +24,7 @@ #include "utils/file_browser.h" #include "../../console/rarch_console.h" +#include "rmenu_settings.h" #include "../../gfx/gfx_common.h" #include "../../gfx/gfx_context.h" @@ -31,7 +32,6 @@ #include "../../message.h" #include "../../general.h" -#include "../../settings.h" enum { MENU_XUI_ITEM_LOAD_STATE = 0, @@ -59,14 +59,6 @@ char str_buffer[PATH_MAX]; static int process_input_ret = 0; static unsigned input_loop = 0; -static void menu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size) -{ - char str[PATH_MAX]; - - menu_settings_create_menu_item_label(str, setting, sizeof(str)); - convert_char_to_wchar(strwbuf, str, size); -} - enum { RMENU_DEVICE_NAV_UP = 0, @@ -179,7 +171,7 @@ static void browser_update(filebrowser_t * b, uint64_t input, const char *extens ret = filebrowser_iterate(b, action); if(!ret) - rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); + rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); } HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -408,13 +400,13 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER, g_settings.video.smooth ? L"Hardware filtering shader #1: Linear interpolation" : L"Hardware filtering shader #1: Point filtering"); m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering"); m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SHADER, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER_2, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER_2, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SHADER_2, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); m_settingslist.SetText(SETTING_ENABLE_SRAM_PATH, (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME_SRAM_DIR_ENABLE)) ? L"SRAM Path Enable: ON" : L"SRAM Path Enable: OFF"); m_settingslist.SetText(SETTING_ENABLE_STATE_PATH, (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME_STATE_DIR_ENABLE)) ? L"Savestate Path Enable: ON" : L"Savestate Path Enable: OFF"); @@ -436,16 +428,16 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled switch(current_index) { case SETTING_EMU_REWIND_ENABLED: - rarch_settings_set(S_REWIND); + rmenu_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_EMU_REWIND_GRANULARITY: g_settings.rewind_granularity++; - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -510,7 +502,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled hCur = app.hShaderBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SELECT_SHADER, 180); + rmenu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); NavigateForward(app.hShaderBrowser); break; @@ -523,7 +515,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled hCur = app.hShaderBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SELECT_SHADER, 180); + rmenu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); NavigateForward(app.hShaderBrowser); break; @@ -564,17 +556,17 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro switch(current_index) { case SETTING_EMU_REWIND_ENABLED: - rarch_settings_set(S_REWIND); + rmenu_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_EMU_REWIND_GRANULARITY: if (g_settings.rewind_granularity > 1) g_settings.rewind_granularity--; - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -634,9 +626,9 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { if((g_settings.video.fbo.scale_x > MIN_SCALING_FACTOR)) { - rarch_settings_set(S_SCALE_FACTOR_DECREMENT); + rmenu_settings_set(S_SCALE_FACTOR_DECREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); } } @@ -703,16 +695,16 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_extern.console.screen.gamma_correction ? L"Gamma correction: ON" : L"Gamma correction: OFF"); break; case SETTING_EMU_REWIND_ENABLED: - rarch_settings_set(S_REWIND); + rmenu_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESTART_RARCH, 180); + rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_EMU_REWIND_GRANULARITY: g_settings.rewind_granularity++; - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -734,9 +726,9 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { if((g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR)) { - rarch_settings_set(S_SCALE_FACTOR_INCREMENT); + rmenu_settings_set(S_SCALE_FACTOR_INCREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); } } @@ -789,16 +781,16 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) GetChildById(L"XuiQuickMenuList", &m_quickmenulist); GetChildById(L"XuiBackButton", &m_back); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); return 0; @@ -819,18 +811,18 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case MENU_XUI_ITEM_LOAD_STATE: case MENU_XUI_ITEM_SAVE_STATE: rarch_state_slot_decrease(); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); break; case MENU_XUI_ITEM_ASPECT_RATIO: - rarch_settings_set(S_ASPECT_RATIO_DECREMENT); + rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); aspectratio_changed = true; break; case MENU_XUI_ITEM_ORIENTATION: - rarch_settings_set(S_ROTATION_DECREMENT); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + rmenu_settings_set(S_ROTATION_DECREMENT); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; @@ -844,18 +836,18 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case MENU_XUI_ITEM_LOAD_STATE: case MENU_XUI_ITEM_SAVE_STATE: rarch_state_slot_increase(); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); break; case MENU_XUI_ITEM_ASPECT_RATIO: - rarch_settings_set(S_ASPECT_RATIO_INCREMENT); + rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); aspectratio_changed = true; break; case MENU_XUI_ITEM_ORIENTATION: - rarch_settings_set(S_ROTATION_INCREMENT); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + rmenu_settings_set(S_ROTATION_INCREMENT); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; @@ -871,7 +863,7 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr if(aspectratio_changed) { driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); } @@ -921,31 +913,31 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } break; case MENU_XUI_ITEM_ASPECT_RATIO: - rarch_settings_set_default(S_DEF_ASPECT_RATIO); + rmenu_settings_set_default(S_DEF_ASPECT_RATIO); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); break; case MENU_XUI_ITEM_ORIENTATION: - rarch_settings_set_default(S_DEF_ROTATION); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + rmenu_settings_set_default(S_DEF_ROTATION); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; case MENU_XUI_ITEM_RESIZE_MODE: input_loop = INPUT_LOOP_RESIZE_MODE; g_settings.video.aspect_ratio_idx = ASPECT_RATIO_CUSTOM; - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_RESIZE_SCREEN, 270); + rmenu_settings_msg(S_MSG_RESIZE_SCREEN, S_DELAY_270); break; case MENU_XUI_ITEM_FRAME_ADVANCE: if (g_extern.main_is_init) { g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); - rarch_settings_set(S_FRAME_ADVANCE); + rmenu_settings_set(S_FRAME_ADVANCE); process_input_ret = -1; } break; @@ -1013,7 +1005,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, g_settings.video.cg_shader_path, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); + rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); XuiSceneNavigateBack(hCur, app.hMainScene, XUSER_INDEX_ANY); } else @@ -1028,7 +1020,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, g_settings.video.second_pass_shader, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); + rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1107,7 +1099,7 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) convert_char_to_wchar(strw_buffer, g_extern.title_buf, sizeof(strw_buffer)); m_core.SetText(strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); + rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); m_title.SetText(strw_buffer); return 0; @@ -1152,7 +1144,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hControlsMenu; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_CHANGE_CONTROLS, 180); + rmenu_settings_msg(S_MSG_CHANGE_CONTROLS, S_DELAY_180); NavigateForward(app.hControlsMenu); } @@ -1165,7 +1157,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hCoreBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, 180); + rmenu_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, S_DELAY_180); NavigateForward(app.hCoreBrowser); } @@ -1320,7 +1312,7 @@ bool menu_iterate(void) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rarch_settings_msg(S_MSG_LOADING_ROM, 100); + rmenu_settings_msg(S_MSG_LOADING_ROM, 100); g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); diff --git a/settings.c b/settings.c index 65926b3519..ab9aead207 100644 --- a/settings.c +++ b/settings.c @@ -1,6 +1,5 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - 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- @@ -15,7 +14,6 @@ */ #include "general.h" -#include "settings.h" #include "conf/config_file.h" #include "conf/config_file_macros.h" #include "compat/strl.h" @@ -1323,284 +1321,3 @@ bool config_save_keybinds(const char *path) return true; } -void rarch_settings_set(unsigned setting) -{ - switch(setting) - { - case S_ASPECT_RATIO_DECREMENT: - if(g_settings.video.aspect_ratio_idx > 0) - g_settings.video.aspect_ratio_idx--; - break; - case S_ASPECT_RATIO_INCREMENT: - if(g_settings.video.aspect_ratio_idx < LAST_ASPECT_RATIO) - g_settings.video.aspect_ratio_idx++; - break; - case S_AUDIO_MUTE: - g_extern.audio_data.mute = !g_extern.audio_data.mute; - break; - case S_AUDIO_CONTROL_RATE_DECREMENT: - if (g_settings.audio.rate_control_delta > 0.0) - g_settings.audio.rate_control_delta -= 0.001; - if (g_settings.audio.rate_control_delta == 0.0) - g_settings.audio.rate_control = false; - else - g_settings.audio.rate_control = true; - break; - case S_AUDIO_CONTROL_RATE_INCREMENT: - if (g_settings.audio.rate_control_delta < 0.2) - g_settings.audio.rate_control_delta += 0.001; - g_settings.audio.rate_control = true; - break; - case S_FRAME_ADVANCE: - g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); - g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); - break; - case S_HW_TEXTURE_FILTER: - g_settings.video.smooth = !g_settings.video.smooth; - break; - case S_HW_TEXTURE_FILTER_2: - g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; - break; - case S_OVERSCAN_DECREMENT: - g_extern.console.screen.overscan_amount -= 0.01f; - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - if(g_extern.console.screen.overscan_amount == 0.0f) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - break; - case S_OVERSCAN_INCREMENT: - g_extern.console.screen.overscan_amount += 0.01f; - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - if(g_extern.console.screen.overscan_amount == 0.0f) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - break; - case S_RESOLUTION_PREVIOUS: - if (g_extern.console.screen.resolutions.current.idx) - { - g_extern.console.screen.resolutions.current.idx--; - g_extern.console.screen.resolutions.current.id = g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]; - } - break; - case S_RESOLUTION_NEXT: - if (g_extern.console.screen.resolutions.current.idx + 1 < g_extern.console.screen.resolutions.count) - { - g_extern.console.screen.resolutions.current.idx++; - g_extern.console.screen.resolutions.current.id = g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx]; - } - break; - case S_ROTATION_DECREMENT: - if(g_extern.console.screen.orientation > 0) - g_extern.console.screen.orientation--; - break; - case S_ROTATION_INCREMENT: - if(g_extern.console.screen.orientation < LAST_ORIENTATION) - g_extern.console.screen.orientation++; - break; - case S_REWIND: - g_settings.rewind_enable = !g_settings.rewind_enable; - break; - case S_SAVESTATE_DECREMENT: - if(g_extern.state_slot != 0) - g_extern.state_slot--; - break; - case S_SAVESTATE_INCREMENT: - g_extern.state_slot++; - break; - case S_SCALE_ENABLED: - g_settings.video.render_to_texture = !g_settings.video.render_to_texture; - break; - case S_SCALE_FACTOR_DECREMENT: - g_settings.video.fbo.scale_x -= 1.0f; - g_settings.video.fbo.scale_y -= 1.0f; - break; - case S_SCALE_FACTOR_INCREMENT: - g_settings.video.fbo.scale_x += 1.0f; - g_settings.video.fbo.scale_y += 1.0f; - break; - case S_THROTTLE: - if(!g_extern.system.force_nonblock) - { - if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_THROTTLE_ENABLE); - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_THROTTLE_ENABLE); - } - break; - case S_TRIPLE_BUFFERING: - if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE)) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); - break; - case S_REFRESH_RATE_DECREMENT: - g_settings.video.refresh_rate -= 0.01f; - break; - case S_REFRESH_RATE_INCREMENT: - g_settings.video.refresh_rate += 0.01f; - break; - case S_INFO_DEBUG_MSG_TOGGLE: - if (g_extern.lifecycle_mode_state & (1ULL << MODE_FPS_DRAW)) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FPS_DRAW); - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_FPS_DRAW); - break; - case S_INFO_MSG_TOGGLE: - if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INFO_DRAW); - else - g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); - break; - default: - RARCH_WARN("rarch_settings_set - unhandled action.\n"); - } -} - -void rarch_settings_set_default(unsigned setting) -{ - switch(setting) - { - case S_DEF_ASPECT_RATIO: - g_settings.video.aspect_ratio_idx = ASPECT_RATIO_4_3; - break; - case S_DEF_AUDIO_MUTE: - g_extern.audio_data.mute = false; - break; - case S_DEF_AUDIO_CONTROL_RATE: -#ifdef GEKKO - g_settings.audio.rate_control_delta = 0.006; - g_settings.audio.rate_control = true; -#else - g_settings.audio.rate_control_delta = 0.0; - g_settings.audio.rate_control = false; -#endif - break; - case S_DEF_HW_TEXTURE_FILTER: - g_settings.video.smooth = 1; - break; - case S_DEF_HW_TEXTURE_FILTER_2: - g_settings.video.second_pass_smooth = 1; - break; - case S_DEF_OVERSCAN: - g_extern.console.screen.overscan_amount = 0.0f; - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_OVERSCAN_ENABLE); - break; - case S_DEF_ROTATION: - g_extern.console.screen.orientation = ORIENTATION_NORMAL; - break; - case S_DEF_THROTTLE: - if(!g_extern.system.force_nonblock) - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_THROTTLE_ENABLE); - break; - case S_DEF_TRIPLE_BUFFERING: - g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE); - break; - case S_DEF_SAVE_STATE: - g_extern.state_slot = 0; - break; - case S_DEF_SCALE_ENABLED: - g_settings.video.render_to_texture = true; - g_settings.video.fbo.scale_x = 2.0f; - g_settings.video.fbo.scale_y = 2.0f; - break; - case S_DEF_SCALE_FACTOR: - g_settings.video.fbo.scale_x = 2.0f; - g_settings.video.fbo.scale_y = 2.0f; - break; - case S_DEF_REFRESH_RATE: -#if defined(RARCH_CONSOLE) - g_settings.video.refresh_rate = 59.92; -#else - g_settings.video.refresh_rate = 59.95; -#endif - break; - case S_DEF_INFO_DEBUG_MSG: - g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FPS_DRAW); - break; - case S_DEF_INFO_MSG: - g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); - break; - default: - RARCH_WARN("rarch_settings_set_default: unhandled action.\n"); - } -} - -void rarch_settings_msg(unsigned setting, unsigned delay) -{ - char str[PATH_MAX], tmp[PATH_MAX]; - msg_queue_clear(g_extern.msg_queue); - - (void)tmp; - - switch(setting) - { - case S_MSG_CACHE_PARTITION: - snprintf(str, sizeof(str), "INFO - All the contents of the ZIP files you have selected\nare extracted to this partition."); - break; - case S_MSG_CHANGE_CONTROLS: - snprintf(str, sizeof(str), "INFO - Press LEFT/RIGHT to change the controls, and press\n[RetroPad Start] to reset a button to default values."); - break; - case S_MSG_LOADING_ROM: - fill_pathname_base(tmp, g_extern.fullpath, sizeof(tmp)); - snprintf(str, sizeof(str), "INFO - Loading %s...", tmp); - break; - case S_MSG_DIR_LOADING_ERROR: - snprintf(str, sizeof(str), "ERROR - Failed to open selected directory."); - break; - case S_MSG_ROM_LOADING_ERROR: - snprintf(str, sizeof(str), "ERROR - An error occurred during ROM loading."); - break; - case S_MSG_NOT_IMPLEMENTED: - snprintf(str, sizeof(str), "TODO - Not yet implemented."); - break; - case S_MSG_RESIZE_SCREEN: - snprintf(str, sizeof(str), "INFO - Resize the screen by moving around the two analog sticks.\nPress [RetroPad X] to reset to default values, and [RetroPad A] to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'."); - break; - case S_MSG_RESTART_RARCH: - snprintf(str, sizeof(str), "INFO - You need to restart RetroArch."); - break; - case S_MSG_SELECT_LIBRETRO_CORE: - snprintf(str, sizeof(str), "INFO - Select a Libretro core from the menu."); - break; - case S_MSG_SELECT_SHADER: - snprintf(str, sizeof(str), "INFO - Select a shader from the menu."); - break; - case S_MSG_SHADER_LOADING_SUCCEEDED: - snprintf(str, sizeof(str), "INFO - Shader successfully loaded."); - break; - } - - msg_queue_push(g_extern.msg_queue, str, 1, delay); -} - -void menu_settings_create_menu_item_label(char * str, unsigned setting, size_t size) -{ - switch (setting) - { - case S_LBL_ASPECT_RATIO: - snprintf(str, size, "Aspect Ratio: %s", aspectratio_lut[g_settings.video.aspect_ratio_idx].name); - break; - case S_LBL_SHADER: - snprintf(str, size, "Shader #1: %s", g_settings.video.cg_shader_path); - break; - case S_LBL_SHADER_2: - snprintf(str, size, "Shader #2: %s", g_settings.video.second_pass_shader); - break; - case S_LBL_RARCH_VERSION: - snprintf(str, size, "RetroArch %s", PACKAGE_VERSION); - break; - case S_LBL_SCALE_FACTOR: - snprintf(str, size, "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo.scale_x, g_settings.video.fbo.scale_y); - break; - case S_LBL_ROTATION: - snprintf(str, size, "Rotation: %s", rotation_lut[g_extern.console.screen.orientation]); - break; - case S_LBL_LOAD_STATE_SLOT: - snprintf(str, size, "Load State #%d", g_extern.state_slot); - break; - case S_LBL_SAVE_STATE_SLOT: - snprintf(str, size, "Save State #%d", g_extern.state_slot); - break; - case S_LBL_REWIND_GRANULARITY: - snprintf(str, size, "Rewind granularity: %d", g_settings.rewind_granularity); - break; - } -} From 66e7606b25b317eb1f9a21050f2c72418746e35a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 17:42:19 +0100 Subject: [PATCH 63/84] HAVE_RGUI and HAVE_RMENU are now mutually exclusive - no longer have to be defined both for (say) the Android port --- Makefile.ngc | 2 +- Makefile.psp1 | 2 +- Makefile.wii | 2 +- android/native/jni/Android.mk | 2 +- config.def.h | 3 +- console/griffin/griffin.c | 5 +--- driver.h | 5 ++-- frontend/menu/rgui.c | 53 ++++++++++++++++++----------------- gfx/gfx_common.c | 2 +- gfx/gfx_common.h | 2 +- gfx/gfx_context.h | 4 +-- gfx/gl.c | 19 +++++-------- gfx/thread_wrapper.c | 9 +++--- gx/gx_video.c | 7 ----- settings.c | 6 ++++ xdk/xdk_d3d.cpp | 7 ----- 16 files changed, 59 insertions(+), 71 deletions(-) diff --git a/Makefile.ngc b/Makefile.ngc index 4f240161d3..f094cdd35b 100644 --- a/Makefile.ngc +++ b/Makefile.ngc @@ -62,7 +62,7 @@ CFLAGS += -DHAVE_FILE_LOGGER CFLAGS += -Iconsole/logger endif -CFLAGS += -std=gnu99 -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RMENU -DHAVE_RGUI -DRARCH_CONSOLE -DGEKKO -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_GRIFFIN=1 -DHAVE_SCREENSHOTS -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Wno-char-subscripts +CFLAGS += -std=gnu99 -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RGUI -DRARCH_CONSOLE -DGEKKO -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_GRIFFIN=1 -DHAVE_SCREENSHOTS -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Wno-char-subscripts ifeq ($(DEBUG), 1) CFLAGS += -O0 -g diff --git a/Makefile.psp1 b/Makefile.psp1 index 71592ead1e..4b03a6b5e2 100644 --- a/Makefile.psp1 +++ b/Makefile.psp1 @@ -8,7 +8,7 @@ INCDIR = CFLAGS = -O2 -G0 -g -std=gnu99 -ffast-math ASFLAGS = $(CFLAGS) -RARCH_DEFINES = -DPSP -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_FILEBROWSER -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_GRIFFIN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -DHAVE_NULLVIDEO -DHAVE_NULLAUDIO -DHAVE_RMENU +RARCH_DEFINES = -DPSP -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_FILEBROWSER -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_GRIFFIN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -DHAVE_NULLVIDEO -DHAVE_NULLAUDIO ifeq ($(HAVE_FILE_LOGGER), 1) CFLAGS += -DHAVE_FILE_LOGGER diff --git a/Makefile.wii b/Makefile.wii index 02661b225a..b0eb0a42ea 100644 --- a/Makefile.wii +++ b/Makefile.wii @@ -65,7 +65,7 @@ CFLAGS += -Iconsole/logger endif -CFLAGS += -std=gnu99 -DHAVE_SINC -DSINC_LOWER_QUALITY -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RGUI -DRARCH_CONSOLE -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RARCH_EXEC -DHAVE_RMENU -DGEKKO -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_GRIFFIN=1 -DHAVE_SCREENSHOTS -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Wno-char-subscripts +CFLAGS += -std=gnu99 -DHAVE_SINC -DSINC_LOWER_QUALITY -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_RGUI -DRARCH_CONSOLE -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RARCH_EXEC -DGEKKO -DHAVE_ZLIB -DWANT_MINIZ -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_GRIFFIN=1 -DHAVE_SCREENSHOTS -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Wno-char-subscripts ifeq ($(DEBUG), 1) CFLAGS += -O0 -g -DDEBUG diff --git a/android/native/jni/Android.mk b/android/native/jni/Android.mk index 7c9579fa7f..dc0b3c436f 100644 --- a/android/native/jni/Android.mk +++ b/android/native/jni/Android.mk @@ -51,7 +51,7 @@ ifeq ($(PERF_TEST), 1) LOCAL_CFLAGS += -DPERF_TEST endif -LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -O3 -fno-stack-protector -funroll-loops -DNDEBUG -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_VID_CONTEXT -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_GLSL -DHAVE_RMENU -DHAVE_RGUI -DHAVE_SCREENSHOTS -DWANT_MINIZ -DHAVE_ZLIB -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_PERFORMANCE_MODE -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -std=gnu99 -I../../../deps/miniz +LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -O3 -fno-stack-protector -funroll-loops -DNDEBUG -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_VID_CONTEXT -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_GLSL -DHAVE_RGUI -DHAVE_SCREENSHOTS -DWANT_MINIZ -DHAVE_ZLIB -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_PERFORMANCE_MODE -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -std=gnu99 -I../../../deps/miniz LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -landroid -lEGL -lGLESv2 $(LOGGER_LDLIBS) -ldl diff --git a/config.def.h b/config.def.h index 36c1d63d2b..c57f5e1b11 100644 --- a/config.def.h +++ b/config.def.h @@ -240,8 +240,7 @@ static const bool aspect_ratio_auto = false; // 1:1 PAR static const bool crop_overscan = true; // Font size for on-screen messages. -// TODO: use RARCH_CONSOLE instead? need to test -#if defined(HAVE_RMENU) && !defined(HAVE_RGUI) +#if defined(HAVE_RMENU) static const float font_size = 1.0f; #else static const float font_size = 48; diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index 2fa09cc89a..d4d15fa4c9 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -437,14 +437,11 @@ MENU #include "../../frontend/menu/rgui.c" #endif -#ifdef HAVE_RMENU -#include "../../frontend/menu/rmenu_settings.c" - #if defined(_XBOX360) #include "../../frontend/menu/rmenu_xui.cpp" #endif -#endif +#include "../../frontend/menu/rmenu_settings.c" #ifdef __cplusplus extern "C" { diff --git a/driver.h b/driver.h index 85d1caaa42..e81bf18df2 100644 --- a/driver.h +++ b/driver.h @@ -240,11 +240,12 @@ typedef struct video_driver const char *ident; // Callbacks essentially useless on PC, but useful on consoles where the drivers are used for more stuff. -#if defined(HAVE_RMENU) +#if defined(RARCH_CONSOLE) void (*start)(void); void (*stop)(void); void (*restart)(void); - void (*apply_state_changes)(void); +#endif +#if defined(HAVE_RMENU) || defined(HAVE_RGUI) void (*set_aspect_ratio)(void *data, unsigned aspectratio_index); #endif diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index d4527dcc49..fdb49af730 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -37,6 +37,12 @@ #define TERM_WIDTH (((RGUI_WIDTH - TERM_START_X - 15) / (FONT_WIDTH_STRIDE))) #define TERM_HEIGHT (((RGUI_HEIGHT - TERM_START_Y - 15) / (FONT_HEIGHT_STRIDE)) - 1) +#if defined(HAVE_OPENGL) +#define DECLARE_DEVICE_PTR() gl_t *device_ptr = (gl_t*)driver.video_data +#elif defined(GEKKO) +#define DECLARE_DEVICE_PTR() gx_video_t *device_ptr = (gx_video_t*)driver.video_data +#endif + #ifdef GEKKO enum { @@ -582,7 +588,8 @@ static void render_text(rgui_handle_t *rgui) #ifdef GEKKO const char *message_queue; - gx_video_t *gx = (gx_video_t*)driver.video_data; + DECLARE_DEVICE_PTR(); + if (rgui->msg_force) { message_queue = msg_queue_pull(g_extern.msg_queue); @@ -590,7 +597,7 @@ static void render_text(rgui_handle_t *rgui) } else { - message_queue = gx->msg; + message_queue = device_ptr->msg; } render_messagebox(rgui, message_queue); #endif @@ -604,6 +611,7 @@ static void render_text(rgui_handle_t *rgui) static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t action, rgui_file_type_t menu_type) { + DECLARE_DEVICE_PTR(); #ifdef RARCH_CONSOLE unsigned port = menu_type - RGUI_SETTINGS_CONTROLLER_1; #endif @@ -694,7 +702,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t g_extern.lifecycle_mode_state &= ~(1ULL << MODE_VIDEO_SOFT_FILTER_ENABLE); else g_extern.lifecycle_mode_state |= (1ULL << MODE_VIDEO_SOFT_FILTER_ENABLE); - driver.video->apply_state_changes(); + device_ptr->should_resize = true; } break; #endif @@ -728,14 +736,14 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t if (action == RGUI_ACTION_START) { g_extern.console.screen.gamma_correction = 0; - driver.video->apply_state_changes(); + device_ptr->should_resize = true; } else if (action == RGUI_ACTION_LEFT) { if(g_extern.console.screen.gamma_correction > 0) { g_extern.console.screen.gamma_correction--; - driver.video->apply_state_changes(); + device_ptr->should_resize = true; } } else if (action == RGUI_ACTION_RIGHT) @@ -743,7 +751,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t if(g_extern.console.screen.gamma_correction < MAX_GAMMA_SETTING) { g_extern.console.screen.gamma_correction++; - driver.video->apply_state_changes(); + device_ptr->should_resize = true; } } break; @@ -777,17 +785,17 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t if (action == RGUI_ACTION_START) { rmenu_settings_set_default(S_DEF_OVERSCAN); - driver.video->apply_state_changes(); + device_ptr->should_resize = true; } else if (action == RGUI_ACTION_LEFT) { rmenu_settings_set(S_OVERSCAN_DECREMENT); - driver.video->apply_state_changes(); + device_ptr->should_resize = true; } else if (action == RGUI_ACTION_RIGHT) { rmenu_settings_set(S_OVERSCAN_INCREMENT); - driver.video->apply_state_changes(); + device_ptr->should_resize = true; } break; case RGUI_SETTINGS_AUDIO_MUTE: @@ -1029,9 +1037,7 @@ static void rgui_settings_controller_populate_entries(rgui_handle_t *rgui) static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) { -#ifdef GEKKO - gx_video_t *gx = (gx_video_t*)driver.video_data; -#endif + DECLARE_DEVICE_PTR(); rgui_file_type_t menu_type = 0; rgui_list_back(rgui->path_stack, NULL, &menu_type, NULL); @@ -1045,7 +1051,7 @@ static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) } else g_extern.console.screen.viewports.custom_vp.height -= 1; - driver.video->apply_state_changes(); + device_ptr->should_resize = true; break; case RGUI_ACTION_DOWN: @@ -1056,7 +1062,7 @@ static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) } else g_extern.console.screen.viewports.custom_vp.height += 1; - driver.video->apply_state_changes(); + device_ptr->should_resize = true; break; case RGUI_ACTION_LEFT: @@ -1067,7 +1073,7 @@ static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) } else g_extern.console.screen.viewports.custom_vp.width -= 1; - driver.video->apply_state_changes(); + device_ptr->should_resize = true; break; case RGUI_ACTION_RIGHT: @@ -1078,7 +1084,7 @@ static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) } else g_extern.console.screen.viewports.custom_vp.width += 1; - driver.video->apply_state_changes(); + device_ptr->should_resize = true; break; case RGUI_ACTION_CANCEL: @@ -1116,11 +1122,11 @@ static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) } else { - g_extern.console.screen.viewports.custom_vp.width = gx->win_width - g_extern.console.screen.viewports.custom_vp.x; - g_extern.console.screen.viewports.custom_vp.height = gx->win_height - g_extern.console.screen.viewports.custom_vp.y; + g_extern.console.screen.viewports.custom_vp.width = device_ptr->win_width - g_extern.console.screen.viewports.custom_vp.x; + g_extern.console.screen.viewports.custom_vp.height = device_ptr->win_height - g_extern.console.screen.viewports.custom_vp.y; } #endif - driver.video->apply_state_changes(); + device_ptr->should_resize = true; break; case RGUI_ACTION_SETTINGS: @@ -1625,11 +1631,7 @@ RMENU API void menu_init(void) { -#if defined(HAVE_OPENGL) - gl_t *device_ptr = (gl_t*)driver.video_data; -#elif defined(GEKKO) - gx_video_t *device_ptr = (gx_video_t*)driver.video_data; -#endif + DECLARE_DEVICE_PTR(); device_ptr->menu_data = (uint32_t *) menu_framebuf; @@ -1677,12 +1679,13 @@ int rmenu_input_process(void *data, void *state) bool menu_iterate(void) { + DECLARE_DEVICE_PTR(); static uint16_t old_input_state = 0; static bool initial_held = true; static bool first_held = false; g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_DRAW); - driver.video->apply_state_changes(); + device_ptr->should_resize = true; g_extern.frame_count++; diff --git a/gfx/gfx_common.c b/gfx/gfx_common.c index 790a17bc26..2278f27e59 100644 --- a/gfx/gfx_common.c +++ b/gfx/gfx_common.c @@ -169,7 +169,7 @@ void gfx_scale_integer(struct rarch_viewport *vp, unsigned width, unsigned heigh vp->y = padding_y >> 1; } -#ifdef HAVE_RMENU +#if defined(HAVE_RMENU) || defined(HAVE_RGUI) struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = { { "1:1", 1.0f }, diff --git a/gfx/gfx_common.h b/gfx/gfx_common.h index d546fad56c..ddf6c97a4e 100644 --- a/gfx/gfx_common.h +++ b/gfx/gfx_common.h @@ -40,7 +40,7 @@ void gfx_set_dwm(void); void gfx_scale_integer(struct rarch_viewport *vp, unsigned win_width, unsigned win_height, float aspect_ratio, bool keep_aspect); -#ifdef HAVE_RMENU +#if defined(HAVE_RMENU) || defined(HAVE_RGUI) #define MIN_SCALING_FACTOR (1.0f) diff --git a/gfx/gfx_context.h b/gfx/gfx_context.h index e3c92e56e0..023bc73589 100644 --- a/gfx/gfx_context.h +++ b/gfx/gfx_context.h @@ -23,7 +23,7 @@ #include "../config.h" #endif -#if defined(RARCH_CONSOLE) || defined(HAVE_RMENU) +#if defined(HAVE_RMENU) #include "../frontend/menu/rmenu.h" #endif @@ -117,7 +117,7 @@ typedef struct gfx_ctx_driver // Human readable string. const char *ident; -#if defined(HAVE_RMENU) || defined(_XBOX360) +#if defined(HAVE_RMENU) void (*set_blend)(bool enable); void (*set_filtering)(unsigned index, bool set_smooth); void (*get_available_resolutions)(void); diff --git a/gfx/gl.c b/gfx/gl.c index 6f1179ea81..859ffae751 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1289,9 +1289,8 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei RARCH_PERFORMANCE_START(frame_run); gl_t *gl = (gl_t*)data; -#ifdef HAVE_RMENU uint64_t lifecycle_mode_state = g_extern.lifecycle_mode_state; -#endif + (void)lifecycle_mode_state; gl_shader_use_func(gl, 1); @@ -1388,7 +1387,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei RARCH_PERFORMANCE_STOP(frame_run); -#if defined(HAVE_RMENU) && !defined(HAVE_RGUI) +#if defined(HAVE_RMENU) if (lifecycle_mode_state & (1ULL << MODE_MENU_DRAW)) context_rmenu_frame_func(gl); else @@ -1814,7 +1813,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo if (input && input_data) context_input_driver_func(input, input_data); -#if !defined(HAVE_RMENU) || !defined(RARCH_CONSOLE) +#if !defined(HAVE_RMENU) // Comes too early for console - moved to gl_start if (g_settings.video.font_enable) gl->font_ctx = gl_font_init_first(gl, g_settings.video.font_path, g_settings.video.font_size); @@ -2080,13 +2079,9 @@ static void gl_restart(void) #endif gl_start(); } +#endif -static void gl_apply_state_changes(void) -{ - gl_t *gl = (gl_t*)driver.video_data; - gl->should_resize = true; -} - +#if defined(HAVE_RGUI) || defined(HAVE_RMENU) static void gl_set_aspect_ratio(void *data, unsigned aspectratio_index) { (void)data; @@ -2249,10 +2244,10 @@ const video_driver_t video_gl = { gl_start, gl_stop, gl_restart, - gl_apply_state_changes, +#endif +#if defined(HAVE_RMENU) || defined(HAVE_RGUI) gl_set_aspect_ratio, #endif - gl_set_rotation, #ifndef NO_GL_READ_VIEWPORT diff --git a/gfx/thread_wrapper.c b/gfx/thread_wrapper.c index 2f513eaa17..7099b30636 100644 --- a/gfx/thread_wrapper.c +++ b/gfx/thread_wrapper.c @@ -536,14 +536,14 @@ static void thread_get_overlay_interface(void *data, const video_overlay_interfa #endif #if defined(HAVE_RMENU) - // all stubs for now, might not have to implement them unless we want to port this to consoles static void thread_start(void) {} static void thread_stop(void) {} static void thread_restart(void) {} -static void thread_apply_state_changes(void) {} -static void thread_set_aspect_ratio(void *data, unsigned aspectratio_index) {} +#endif +#if defined(HAVE_RMENU) || defined(HAVE_RGUI) +static void thread_set_aspect_ratio(void *data, unsigned aspectratio_index) {} #endif static const video_driver_t video_thread = { @@ -559,7 +559,8 @@ static const video_driver_t video_thread = { thread_start, thread_stop, thread_restart, - thread_apply_state_changes, +#endif +#if defined(HAVE_RMENU) || defined(HAVE_RGUI) thread_set_aspect_ratio, #endif thread_set_rotation, diff --git a/gx/gx_video.c b/gx/gx_video.c index b9cc658c81..4cabdf99b2 100644 --- a/gx/gx_video.c +++ b/gx/gx_video.c @@ -1012,12 +1012,6 @@ static void gx_set_rotation(void *data, unsigned orientation) gx->should_resize = true; } -static void gx_apply_state_changes(void) -{ - gx_video_t *gx = (gx_video_t*)driver.video_data; - gx->should_resize = true; -} - static bool gx_set_shader(void *data, enum rarch_shader_type type, const char *path, unsigned index) { (void)data; @@ -1041,6 +1035,5 @@ const video_driver_t video_gx = { .start = gx_start, .stop = gx_stop, .restart = gx_restart, - .apply_state_changes = gx_apply_state_changes, .set_aspect_ratio = gx_set_aspect_ratio }; diff --git a/settings.c b/settings.c index ab9aead207..9a61be15d9 100644 --- a/settings.c +++ b/settings.c @@ -274,7 +274,9 @@ void config_set_defaults(void) g_extern.console.screen.resolutions.current.id = 0; strlcpy(g_extern.console.main_wrap.default_rom_startup_dir, default_paths.filebrowser_startup_dir, sizeof(g_extern.console.main_wrap.default_rom_startup_dir)); strlcpy(g_extern.console.main_wrap.default_savestate_dir, default_paths.savestate_dir, sizeof(g_extern.console.main_wrap.default_savestate_dir)); +#ifdef HAVE_RMENU strlcpy(g_extern.console.menu_texture_path, default_paths.menu_border_file, sizeof(g_extern.console.menu_texture_path)); +#endif #if defined(__CELLOS_LV2) || defined(_XBOX360) g_settings.video.aspect_ratio_idx = ASPECT_RATIO_16_9; @@ -497,8 +499,10 @@ bool config_load_file(const char *path) if (config_get_path(conf, "default_rom_startup_dir", tmp_str, sizeof(tmp_str))) strlcpy(g_extern.console.main_wrap.default_rom_startup_dir, tmp_str, sizeof(g_extern.console.main_wrap.default_rom_startup_dir)); +#ifdef HAVE_RMENU if (config_get_path(conf, "menu_texture_path", tmp_str, sizeof(tmp_str))) strlcpy(g_extern.console.menu_texture_path, tmp_str, sizeof(g_extern.console.menu_texture_path)); +#endif if (config_get_bool(conf, "info_msg_enable", &msg_enable)) { @@ -1264,7 +1268,9 @@ bool config_save_file(const char *path) config_set_int(conf, "custom_viewport_x", g_extern.console.screen.viewports.custom_vp.x); config_set_int(conf, "custom_viewport_y", g_extern.console.screen.viewports.custom_vp.y); config_set_string(conf, "default_rom_startup_dir", g_extern.console.main_wrap.default_rom_startup_dir); +#ifdef HAVE_RMENU config_set_string(conf, "menu_texture_path", g_extern.console.menu_texture_path); +#endif config_set_float(conf, "overscan_amount", g_extern.console.screen.overscan_amount); config_set_float(conf, "video_font_size", g_settings.video.font_size); diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index 98a6053d38..d3c8a5db77 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -982,12 +982,6 @@ static void xdk_d3d_restart(void) d3dr->Reset(&d3dpp); } -static void xdk_d3d_apply_state_changes(void) -{ - xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; - d3d->should_resize = true; -} - static void xdk_d3d_set_aspect_ratio(void *data, unsigned aspectratio_index) { (void)data; @@ -1015,7 +1009,6 @@ const video_driver_t video_xdk_d3d = { xdk_d3d_start, xdk_d3d_stop, xdk_d3d_restart, - xdk_d3d_apply_state_changes, xdk_d3d_set_aspect_ratio, xdk_d3d_set_rotation, }; From ae0dbd47025a4417d1c4711c03e25d5fc29a5621 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 18:33:08 +0100 Subject: [PATCH 64/84] (XDK) Build fix --- xdk/xdk_d3d.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index d3c8a5db77..b3d036f553 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -26,7 +26,6 @@ #include "../gfx/shader_hlsl.h" #endif -#include "../console/rarch_console_video.h" #include "./../gfx/gfx_context.h" #include "../general.h" #include "../message.h" From d04d13d8959c1f87f0699ef211e024d73903794a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 18:37:50 +0100 Subject: [PATCH 65/84] (RGUI/GL) No hardcoded border_type --- gfx/gl.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 859ffae751..91bf6545b8 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1075,8 +1075,8 @@ static void gl_init_textures(void *data, const video_info_t *video) #ifdef HAVE_RGUI glGenTextures(1, &gl->rgui_texture); glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->border_type); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->border_type); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); #endif @@ -1193,8 +1193,8 @@ static void gl_init_textures(void *data, const video_info_t *video) #ifdef HAVE_RGUI glGenTextures(1, &gl->rgui_texture); glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->border_type); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->border_type); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); #endif @@ -2109,8 +2109,8 @@ static bool gl_overlay_load(void *data, const uint32_t *image, unsigned width, u glGenTextures(1, &gl->tex_overlay); glBindTexture(GL_TEXTURE_2D, gl->tex_overlay); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->border_type); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->border_type); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); From ca72bb420a0cf8143a2fb72d28adb6c4fb1eef8a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 19:05:11 +0100 Subject: [PATCH 66/84] Replace rgui_file_type_t in file_list with unsigned --- frontend/menu/utils/file_list.c | 8 ++++---- frontend/menu/utils/file_list.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/menu/utils/file_list.c b/frontend/menu/utils/file_list.c index 98444c7f00..49e0227471 100644 --- a/frontend/menu/utils/file_list.c +++ b/frontend/menu/utils/file_list.c @@ -24,7 +24,7 @@ struct rgui_file { char *path; - rgui_file_type_t type; + unsigned type; size_t directory_ptr; }; @@ -47,7 +47,7 @@ bool rgui_list_empty(const rgui_list_t *list) } void rgui_list_push(rgui_list_t *list, - const char *path, rgui_file_type_t type, size_t directory_ptr) + const char *path, unsigned type, size_t directory_ptr) { if (list->ptr >= list->capacity) { @@ -84,7 +84,7 @@ void rgui_list_clear(rgui_list_t *list) } void rgui_list_back(const rgui_list_t *list, - const char **path, rgui_file_type_t *file_type, size_t *directory_ptr) + const char **path, unsigned *file_type, size_t *directory_ptr) { if (rgui_list_size(list) > 0) rgui_list_at(list, rgui_list_size(list) - 1, path, file_type, directory_ptr); @@ -96,7 +96,7 @@ size_t rgui_list_size(const rgui_list_t *list) } void rgui_list_at(const rgui_list_t *list, size_t index, - const char **path, rgui_file_type_t *file_type, size_t *directory_ptr) + const char **path, unsigned *file_type, size_t *directory_ptr) { if (path) *path = list->list[index].path; diff --git a/frontend/menu/utils/file_list.h b/frontend/menu/utils/file_list.h index 10a34cf62f..fe3e96014c 100644 --- a/frontend/menu/utils/file_list.h +++ b/frontend/menu/utils/file_list.h @@ -26,17 +26,17 @@ rgui_list_t *rgui_list_new(void); void rgui_list_free(rgui_list_t *list); void rgui_list_push(rgui_list_t *list, - const char *path, rgui_file_type_t type, size_t directory_ptr); + const char *path, unsigned type, size_t directory_ptr); void rgui_list_pop(rgui_list_t *list); void rgui_list_clear(rgui_list_t *list); bool rgui_list_empty(const rgui_list_t *list); void rgui_list_back(const rgui_list_t *list, - const char **path, rgui_file_type_t *type, size_t *directory_ptr); + const char **path, unsigned *type, size_t *directory_ptr); size_t rgui_list_size(const rgui_list_t *list); void rgui_list_at(const rgui_list_t *list, size_t index, - const char **path, rgui_file_type_t *type, size_t *directory_ptr); + const char **path, unsigned *type, size_t *directory_ptr); void rgui_list_sort(rgui_list_t *list); From e92fd90776652a48c6fcc5bc89b7d2a8749e3b59 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 19:12:26 +0100 Subject: [PATCH 67/84] Remove strings.h include (file_list.c) --- frontend/menu/utils/file_list.c | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/menu/utils/file_list.c b/frontend/menu/utils/file_list.c index 49e0227471..2d43d1aa07 100644 --- a/frontend/menu/utils/file_list.c +++ b/frontend/menu/utils/file_list.c @@ -16,7 +16,6 @@ #include #include #include -#include #include "file_list.h" #include "../rgui.h" From d6661cf714e8cccb644e069e1f244023d0845456 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 19:15:51 +0100 Subject: [PATCH 68/84] (RGUI) Add DECLARE_DEVICE_PTR macro for D3D8/D3D9 --- frontend/menu/rgui.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index fdb49af730..258a8cecf0 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -41,6 +41,8 @@ #define DECLARE_DEVICE_PTR() gl_t *device_ptr = (gl_t*)driver.video_data #elif defined(GEKKO) #define DECLARE_DEVICE_PTR() gx_video_t *device_ptr = (gx_video_t*)driver.video_data +#elif defined(HAVE_D3D8) || defined(HAVE_D3D9) +#define DECLARE_DEVICE_PTR() xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data #endif #ifdef GEKKO From 544acdf8e1f32c267b77c612d1f9bf74fbeb6f73 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 21:30:40 +0100 Subject: [PATCH 69/84] (RGUI) folder_cb now the same for both GEKKO and non-GEKKO targets --- config.def.h | 10 ++++++++ frontend/menu/rgui.c | 60 ++++++++------------------------------------ 2 files changed, 21 insertions(+), 49 deletions(-) diff --git a/config.def.h b/config.def.h index c57f5e1b11..651e80ea45 100644 --- a/config.def.h +++ b/config.def.h @@ -181,6 +181,15 @@ enum #define DEFAULT_SHADER_TYPE RARCH_SHADER_AUTO #endif +#ifdef HAVE_DYNAMIC +#ifdef _WIN32 +#define EXT_EXECUTABLES "dll|DLL" +#elif defined(__APPLE__) +#define EXT_EXECUTABLES "dylib" +#else +#define EXT_EXECUTABLES "so|SO" +#endif +#else #if defined(__CELLOS_LV2__) #define EXT_EXECUTABLES "self|SELF|bin|BIN" #elif defined(_XBOX1) @@ -190,6 +199,7 @@ enum #elif defined(GEKKO) #define EXT_EXECUTABLES "dol|DOL" #endif +#endif //////////////// // Video diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 258a8cecf0..360d16af7b 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -683,6 +683,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t msg_queue_push(g_extern.msg_queue, r ? "Screenshot saved" : "Screenshot failed to save", 1, S_DELAY_90); } break; +#ifndef HAVE_DYNAMIC case RGUI_SETTINGS_RESTART_GAME: if (action == RGUI_ACTION_OK) { @@ -691,6 +692,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t return -1; } break; +#endif case RGUI_SETTINGS_VIDEO_FILTER: if (action == RGUI_ACTION_START) rmenu_settings_set_default(S_DEF_HW_TEXTURE_FILTER); @@ -866,6 +868,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t else if (action == RGUI_ACTION_RIGHT) g_extern.lifecycle_mode_state |= (1ULL << MODE_FPS_DRAW); break; +#ifndef HAVE_DYNAMIC case RGUI_SETTINGS_RESTART_EMULATOR: if (action == RGUI_ACTION_OK) { @@ -878,6 +881,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t return -1; } break; +#endif case RGUI_SETTINGS_QUIT_EMULATOR: if (action == RGUI_ACTION_OK) { @@ -993,7 +997,9 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) RGUI_MENU_ITEM("Controller #3 Config", RGUI_SETTINGS_CONTROLLER_3); RGUI_MENU_ITEM("Controller #4 Config", RGUI_SETTINGS_CONTROLLER_4); RGUI_MENU_ITEM("Debug Text", RGUI_SETTINGS_DEBUG_TEXT); +#ifndef HAVE_DYNAMIC RGUI_MENU_ITEM("Restart RetroArch", RGUI_SETTINGS_RESTART_EMULATOR); +#endif RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); #else //RGUI_MENU_ITEM("Filebrowser", RGUI_SETTINGS_OPEN_FILEBROWSER); @@ -1497,7 +1503,6 @@ enum RMENU_DEVICE_NAV_LAST }; -#ifdef GEKKO static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, void *userdata, void *ctx) { @@ -1509,6 +1514,7 @@ static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, if (!*directory) { +#ifdef GEKKO #ifdef HW_RVL file_cb(ctx, "sd:", RGUI_FILE_DEVICE, 0); file_cb(ctx, "usb:", RGUI_FILE_DEVICE, 0); @@ -1516,9 +1522,10 @@ static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, file_cb(ctx, "carda:", RGUI_FILE_DEVICE, 0); file_cb(ctx, "cardb:", RGUI_FILE_DEVICE, 0); return true; +#endif } -#ifdef HW_RVL +#if defined(GEKKO) && defined(HW_RVL) LWP_MutexLock(gx_device_mutex); int dev = gx_get_device_from_path(directory); @@ -1530,7 +1537,7 @@ static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, char exts[256]; if (core_chooser) - strlcpy(exts, "dol|DOL", sizeof(exts)); + strlcpy(exts, EXT_EXECUTABLES, sizeof(exts)); else strlcpy(exts, g_extern.system.valid_extensions, sizeof(exts)); @@ -1564,53 +1571,9 @@ static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, continue; #endif +#ifdef HAVE_LIBRETRO_MANAGEMENT if (core_chooser && (is_dir || strcasecmp(entry->d_name, default_paths.salamander_file) == 0)) continue; - - if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) - continue; - - file_cb(ctx, - entry->d_name, - is_dir ? RGUI_FILE_DIRECTORY : RGUI_FILE_PLAIN, 0); - } - - closedir(dir); - string_list_free(ext_list); - return true; -} -#else -static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, - void *userdata, void *ctx) -{ - struct string_list *ext_list = string_split(g_extern.system.valid_extensions, "|"); - - char _dir[PATH_MAX]; - snprintf(_dir, sizeof(_dir), "%s/", directory); - DIR *dir = opendir(_dir); - if (!dir) - return false; - - struct dirent *entry; - while ((entry = readdir(dir))) - { - char stat_path[PATH_MAX]; - const char *file_ext = path_get_extension(entry->d_name); - snprintf(stat_path, sizeof(stat_path), "%s/%s", directory, entry->d_name); - bool is_dir; - -#ifdef _DIRENT_HAVE_D_TYPE - is_dir = (entry->d_type == DT_DIR); - if (entry->d_type != DT_REG && !is_dir) - continue; -#else - struct stat st; - if (stat(stat_path, &st) < 0) - continue; - - is_dir = S_ISDIR(st.st_mode); - if (!S_ISREG(st.st_mode) && !is_dir) - continue; #endif if (!is_dir && ext_list && !string_list_find_elem_prefix(ext_list, ".", file_ext)) @@ -1625,7 +1588,6 @@ static bool folder_cb(const char *directory, rgui_file_enum_cb_t file_cb, string_list_free(ext_list); return true; } -#endif /*============================================================ RMENU API From b4fad2dab218d9d69b143f35426186bc10fed588 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 22:15:20 +0100 Subject: [PATCH 70/84] (RGUI) Get rid of rmenu_ namespace --- frontend/menu/rgui.c | 14 +++++++------- frontend/menu/rmenu.c | 6 +++--- frontend/menu/utils/menu_stack.c | 4 ++-- frontend/menu/utils/menu_stack.h | 7 ++----- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 360d16af7b..08f221c034 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -1448,7 +1448,7 @@ int rgui_iterate(rgui_handle_t *rgui, rgui_action_t action) return ret; } -static const struct retro_keybind _rmenu_nav_binds[] = { +static const struct retro_keybind _menu_nav_binds[] = { #if defined(HW_RVL) { 0, 0, NULL, 0, GX_GC_UP | GX_GC_LSTICK_UP | GX_GC_RSTICK_UP | GX_CLASSIC_UP | GX_CLASSIC_LSTICK_UP | GX_CLASSIC_RSTICK_UP | GX_WIIMOTE_UP | GX_NUNCHUK_UP, 0 }, { 0, 0, NULL, 0, GX_GC_DOWN | GX_GC_LSTICK_DOWN | GX_GC_RSTICK_DOWN | GX_CLASSIC_DOWN | GX_CLASSIC_LSTICK_DOWN | GX_CLASSIC_RSTICK_DOWN | GX_WIIMOTE_DOWN | GX_NUNCHUK_DOWN, 0 }, @@ -1484,8 +1484,8 @@ static const struct retro_keybind _rmenu_nav_binds[] = { #endif }; -static const struct retro_keybind *rmenu_nav_binds[] = { - _rmenu_nav_binds +static const struct retro_keybind *menu_nav_binds[] = { + _menu_nav_binds }; enum @@ -1613,7 +1613,7 @@ void menu_free(void) static uint16_t trigger_state = 0; -int rmenu_input_process(void *data, void *state) +static int menu_input_process(void *data, void *state) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { @@ -1694,7 +1694,7 @@ bool menu_iterate(void) #endif for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) - input_state |= driver.input->input_state(NULL, rmenu_nav_binds, 0, + input_state |= driver.input->input_state(NULL, menu_nav_binds, 0, RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; input_state |= driver.input->key_pressed(driver.input_data, RARCH_MENU_TOGGLE) ? (1ULL << GX_DEVICE_NAV_MENU) : 0; @@ -1702,7 +1702,7 @@ bool menu_iterate(void) #ifdef HAVE_OVERLAY for (unsigned i = 0; i < RMENU_DEVICE_NAV_LAST; i++) - input_state |= driver.overlay_state & rmenu_nav_binds[0][i].joykey ? (1ULL << i) : 0; + input_state |= driver.overlay_state & menu_nav_binds[0][i].joykey ? (1ULL << i) : 0; #endif trigger_state = input_state & ~old_input_state; @@ -1767,7 +1767,7 @@ bool menu_iterate(void) // draw last frame for loading messages rarch_render_cached_frame(); - input_process_ret = rmenu_input_process(NULL, NULL); + input_process_ret = menu_input_process(NULL, NULL); if (input_entry_ret != 0 || input_process_ret != 0) goto deinit; diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 3b5c0c5325..b89d2c81ac 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -2487,7 +2487,7 @@ int ingame_menu(void *data, void *state) INPUT POLL CALLBACK ============================================================ */ -void rmenu_input_poll(void *data, void *state) +void menu_input_poll(void *data, void *state) { menu *current_menu = (menu*)data; @@ -2543,7 +2543,7 @@ void rmenu_input_poll(void *data, void *state) INPUT PROCESS CALLBACK ============================================================ */ -int rmenu_input_process(void *data, void *state) +int menu_input_process(void *data, void *state) { (void)data; DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data; @@ -2685,7 +2685,7 @@ bool menu_iterate(void) } if(current_menu.input_poll) - rmenu_input_poll(¤t_menu, &rmenu_state); + menu_input_poll(¤t_menu, &rmenu_state); #ifdef HAVE_OSKUTIL if(rmenu_state.osk_init != NULL) diff --git a/frontend/menu/utils/menu_stack.c b/frontend/menu/utils/menu_stack.c index 0b7f44278c..e198c6713c 100644 --- a/frontend/menu/utils/menu_stack.c +++ b/frontend/menu/utils/menu_stack.c @@ -53,8 +53,8 @@ static void menu_stack_get_current_ptr(menu *current_menu) current_menu->browser_draw = NULL; current_menu->input_process = NULL; - current_menu->input_poll = rmenu_input_poll; - current_menu->input_process = rmenu_input_process; + current_menu->input_poll = menu_input_poll; + current_menu->input_process = menu_input_process; switch(menu_id) { diff --git a/frontend/menu/utils/menu_stack.h b/frontend/menu/utils/menu_stack.h index 77de9ef324..563e47b55e 100644 --- a/frontend/menu/utils/menu_stack.h +++ b/frontend/menu/utils/menu_stack.h @@ -54,11 +54,8 @@ int ingame_menu_resize(void *data, void *state); int ingame_menu_screenshot(void *data, void *state); int ingame_menu(void *data, void *state); -// input poll forward declarations -void rmenu_input_poll(void *data, void *state); - -// input process forward declarations -int rmenu_input_process(void *data, void *state); +void menu_input_poll(void *data, void *state); +int menu_input_process(void *data, void *state); // browser_draw forward declarations void browser_render(void *data); From 43d865cc5edd5bf904bb0bb99d5a7d015a8065d1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 22:19:25 +0100 Subject: [PATCH 71/84] Rename rmenu_settings to menu_settings --- console/griffin/griffin.c | 2 +- frontend/frontend_console.c | 4 +- .../{rmenu_settings.c => menu_settings.c} | 18 +-- .../{rmenu_settings.h => menu_settings.h} | 10 +- frontend/menu/rgui.c | 50 ++++---- frontend/menu/rmenu.c | 118 +++++++++--------- frontend/menu/rmenu_xui.cpp | 98 +++++++-------- 7 files changed, 150 insertions(+), 150 deletions(-) rename frontend/menu/{rmenu_settings.c => menu_settings.c} (95%) rename frontend/menu/{rmenu_settings.h => menu_settings.h} (88%) diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index d4d15fa4c9..f3b5e57f61 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -441,7 +441,7 @@ MENU #include "../../frontend/menu/rmenu_xui.cpp" #endif -#include "../../frontend/menu/rmenu_settings.c" +#include "../../frontend/menu/menu_settings.c" #ifdef __cplusplus extern "C" { diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index a2e2644daf..7303df0650 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -21,7 +21,7 @@ #include "frontend_console.h" #include "menu/rmenu.h" -#include "menu/rmenu_settings.h" +#include "menu/menu_settings.h" #if defined(__CELLOS_LV2__) #include "platform/platform_ps3.c" @@ -312,7 +312,7 @@ begin_loop: { RARCH_ERR("rarch_main_init failed.\n"); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); - rmenu_settings_msg(S_MSG_ROM_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_ROM_LOADING_ERROR, S_DELAY_180); } g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT); } diff --git a/frontend/menu/rmenu_settings.c b/frontend/menu/menu_settings.c similarity index 95% rename from frontend/menu/rmenu_settings.c rename to frontend/menu/menu_settings.c index d6698067bd..781b5b1d31 100644 --- a/frontend/menu/rmenu_settings.c +++ b/frontend/menu/menu_settings.c @@ -19,9 +19,9 @@ #include #include "../../general.h" -#include "rmenu_settings.h" +#include "menu_settings.h" -void rmenu_settings_set(unsigned setting) +void menu_settings_set(unsigned setting) { switch(setting) { @@ -148,11 +148,11 @@ void rmenu_settings_set(unsigned setting) g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); break; default: - RARCH_WARN("rmenu_settings_set - unhandled action.\n"); + RARCH_WARN("menu_settings_set - unhandled action.\n"); } } -void rmenu_settings_set_default(unsigned setting) +void menu_settings_set_default(unsigned setting) { switch(setting) { @@ -217,11 +217,11 @@ void rmenu_settings_set_default(unsigned setting) g_extern.lifecycle_mode_state |= (1ULL << MODE_INFO_DRAW); break; default: - RARCH_WARN("rmenu_settings_set_default: unhandled action.\n"); + RARCH_WARN("menu_settings_set_default: unhandled action.\n"); } } -void rmenu_settings_msg(unsigned setting, unsigned delay) +void menu_settings_msg(unsigned setting, unsigned delay) { char str[PATH_MAX], tmp[PATH_MAX]; msg_queue_clear(g_extern.msg_queue); @@ -269,15 +269,15 @@ void rmenu_settings_msg(unsigned setting, unsigned delay) msg_queue_push(g_extern.msg_queue, str, 1, delay); } -void rmenu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size) +void menu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size) { char str[PATH_MAX]; - rmenu_settings_create_menu_item_label(str, setting, sizeof(str)); + menu_settings_create_menu_item_label(str, setting, sizeof(str)); convert_char_to_wchar(strwbuf, str, size); } -void rmenu_settings_create_menu_item_label(char * str, unsigned setting, size_t size) +void menu_settings_create_menu_item_label(char * str, unsigned setting, size_t size) { switch (setting) { diff --git a/frontend/menu/rmenu_settings.h b/frontend/menu/menu_settings.h similarity index 88% rename from frontend/menu/rmenu_settings.h rename to frontend/menu/menu_settings.h index cfd418f0df..8aa03083ac 100644 --- a/frontend/menu/rmenu_settings.h +++ b/frontend/menu/menu_settings.h @@ -104,11 +104,11 @@ enum S_LBL_REWIND_GRANULARITY, }; -void rmenu_settings_set(unsigned setting); -void rmenu_settings_set_default(unsigned setting); -void rmenu_settings_msg(unsigned setting, unsigned delay); +void menu_settings_set(unsigned setting); +void menu_settings_set_default(unsigned setting); +void menu_settings_msg(unsigned setting, unsigned delay); -void rmenu_settings_create_menu_item_label(char * str, unsigned setting, size_t size); -void rmenu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size); +void menu_settings_create_menu_item_label(char * str, unsigned setting, size_t size); +void menu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size); #endif diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 08f221c034..044643c23b 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -21,7 +21,7 @@ #include "rgui.h" #include "utils/file_list.h" -#include "rmenu_settings.h" +#include "menu_settings.h" #include "../../general.h" #include "../../gfx/gfx_common.h" @@ -492,7 +492,7 @@ static void render_text(rgui_handle_t *rgui) case RGUI_SETTINGS_VIDEO_ROTATION: { char rotate_msg[64]; - rmenu_settings_create_menu_item_label(rotate_msg, S_LBL_ROTATION, sizeof(rotate_msg)); + menu_settings_create_menu_item_label(rotate_msg, S_LBL_ROTATION, sizeof(rotate_msg)); snprintf(type_str, sizeof(type_str), rotate_msg); } break; @@ -623,10 +623,10 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t case RGUI_SETTINGS_REWIND_ENABLE: if (action == RGUI_ACTION_OK || action == RGUI_ACTION_LEFT || action == RGUI_ACTION_RIGHT) { - rmenu_settings_set(S_REWIND); + menu_settings_set(S_REWIND); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } else if (action == RGUI_ACTION_START) g_settings.rewind_enable = false; @@ -654,11 +654,11 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t return -1; } else if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_SAVE_STATE); + menu_settings_set_default(S_DEF_SAVE_STATE); else if (action == RGUI_ACTION_LEFT) - rmenu_settings_set(S_SAVESTATE_DECREMENT); + menu_settings_set(S_SAVESTATE_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rmenu_settings_set(S_SAVESTATE_INCREMENT); + menu_settings_set(S_SAVESTATE_INCREMENT); break; case RGUI_SETTINGS_SCREENSHOT: if (action == RGUI_ACTION_OK) @@ -695,9 +695,9 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t #endif case RGUI_SETTINGS_VIDEO_FILTER: if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_HW_TEXTURE_FILTER); + menu_settings_set_default(S_DEF_HW_TEXTURE_FILTER); else - rmenu_settings_set(S_HW_TEXTURE_FILTER); + menu_settings_set(S_HW_TEXTURE_FILTER); break; #ifdef HW_RVL case RGUI_SETTINGS_VIDEO_SOFT_FILTER: @@ -761,60 +761,60 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t break; case RGUI_SETTINGS_VIDEO_ASPECT_RATIO: if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_ASPECT_RATIO); + menu_settings_set_default(S_DEF_ASPECT_RATIO); else if (action == RGUI_ACTION_LEFT) - rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); + menu_settings_set(S_ASPECT_RATIO_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); + menu_settings_set(S_ASPECT_RATIO_INCREMENT); video_set_aspect_ratio_func(g_settings.video.aspect_ratio_idx); break; case RGUI_SETTINGS_VIDEO_ROTATION: if (action == RGUI_ACTION_START) { - rmenu_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); + menu_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); video_set_rotation_func(g_extern.console.screen.orientation); } else if (action == RGUI_ACTION_LEFT) { - rmenu_settings_set(S_ROTATION_DECREMENT); + menu_settings_set(S_ROTATION_DECREMENT); video_set_rotation_func(g_extern.console.screen.orientation); } else if (action == RGUI_ACTION_RIGHT) { - rmenu_settings_set(S_ROTATION_INCREMENT); + menu_settings_set(S_ROTATION_INCREMENT); video_set_rotation_func(g_extern.console.screen.orientation); } break; case RGUI_SETTINGS_VIDEO_OVERSCAN: if (action == RGUI_ACTION_START) { - rmenu_settings_set_default(S_DEF_OVERSCAN); + menu_settings_set_default(S_DEF_OVERSCAN); device_ptr->should_resize = true; } else if (action == RGUI_ACTION_LEFT) { - rmenu_settings_set(S_OVERSCAN_DECREMENT); + menu_settings_set(S_OVERSCAN_DECREMENT); device_ptr->should_resize = true; } else if (action == RGUI_ACTION_RIGHT) { - rmenu_settings_set(S_OVERSCAN_INCREMENT); + menu_settings_set(S_OVERSCAN_INCREMENT); device_ptr->should_resize = true; } break; case RGUI_SETTINGS_AUDIO_MUTE: if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_AUDIO_MUTE); + menu_settings_set_default(S_DEF_AUDIO_MUTE); else - rmenu_settings_set(S_AUDIO_MUTE); + menu_settings_set(S_AUDIO_MUTE); break; case RGUI_SETTINGS_AUDIO_CONTROL_RATE: if (action == RGUI_ACTION_START) - rmenu_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); + menu_settings_set_default(S_DEF_AUDIO_CONTROL_RATE); else if (action == RGUI_ACTION_LEFT) - rmenu_settings_set(S_AUDIO_CONTROL_RATE_DECREMENT); + menu_settings_set(S_AUDIO_CONTROL_RATE_DECREMENT); else if (action == RGUI_ACTION_RIGHT) - rmenu_settings_set(S_AUDIO_CONTROL_RATE_INCREMENT); + menu_settings_set(S_AUDIO_CONTROL_RATE_INCREMENT); break; case RGUI_SETTINGS_RESAMPLER_TYPE: { @@ -1385,7 +1385,7 @@ int rgui_iterate(rgui_handle_t *rgui, rgui_action_t action) strlcpy(g_extern.fullpath, rgui->path_buf, sizeof(g_extern.fullpath)); g_extern.lifecycle_mode_state |= (1ULL << MODE_LOAD_GAME); - rmenu_settings_msg(S_MSG_LOADING_ROM, S_DELAY_1); + menu_settings_msg(S_MSG_LOADING_ROM, S_DELAY_1); rgui->need_refresh = true; // in case of zip extract rgui->msg_force = true; } @@ -1618,7 +1618,7 @@ static int menu_input_process(void *data, void *state) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_LOADING_ROM, 100); + menu_settings_msg(S_MSG_LOADING_ROM, 100); if (g_extern.fullpath) g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index b89d2c81ac..5ec32f96fb 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -29,7 +29,7 @@ #include "../../console/rarch_console.h" #include "../../console/rarch_console_input.h" -#include "rmenu_settings.h" +#include "menu_settings.h" #include "../../gfx/image.h" @@ -625,7 +625,7 @@ static void browser_update(void *data, uint64_t input, const char *extensions) ret = filebrowser_iterate(b, action); if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); } void browser_render(void *data) @@ -724,7 +724,7 @@ int select_file(void *data, void *state) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, path, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -740,7 +740,7 @@ int select_file(void *data, void *state) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, path, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -782,7 +782,7 @@ int select_file(void *data, void *state) else { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } break; } @@ -791,7 +791,7 @@ int select_file(void *data, void *state) } if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); } else if (input & (1ULL << RMENU_DEVICE_NAV_X)) menu_stack_pop(); @@ -889,7 +889,7 @@ int select_directory(void *data, void *state) } if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); display_menubar(current_menu); @@ -1028,9 +1028,9 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) #ifdef __CELLOS_LV2__ case SETTING_CHANGE_RESOLUTION: if(input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) - rmenu_settings_set(S_RESOLUTION_NEXT); + menu_settings_set(S_RESOLUTION_NEXT); if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) - rmenu_settings_set(S_RESOLUTION_PREVIOUS); + menu_settings_set(S_RESOLUTION_PREVIOUS); if(input & (1ULL << RMENU_DEVICE_NAV_B)) { if (g_extern.console.screen.resolutions.list[g_extern.console.screen.resolutions.current.idx] == CELL_VIDEO_OUT_RESOLUTION_576) @@ -1106,7 +1106,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, NULL, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1126,7 +1126,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, NULL, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1159,7 +1159,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE_PENDING); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } } if(input & (1ULL << RMENU_DEVICE_NAV_START)) @@ -1172,7 +1172,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE_PENDING); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } } } @@ -1194,29 +1194,29 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_KEEP_ASPECT_RATIO: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); + menu_settings_set(S_ASPECT_RATIO_DECREMENT); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); } if(input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) { - rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); + menu_settings_set(S_ASPECT_RATIO_INCREMENT); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_ASPECT_RATIO); + menu_settings_set_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 & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_HW_TEXTURE_FILTER); + menu_settings_set(S_HW_TEXTURE_FILTER); device_ptr->ctx_driver->set_filtering(1, g_settings.video.smooth); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set(S_DEF_HW_TEXTURE_FILTER); + menu_settings_set(S_DEF_HW_TEXTURE_FILTER); device_ptr->ctx_driver->set_filtering(1, g_settings.video.smooth); } break; @@ -1224,19 +1224,19 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_HW_TEXTURE_FILTER_2: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_HW_TEXTURE_FILTER_2); + menu_settings_set(S_HW_TEXTURE_FILTER_2); device_ptr->ctx_driver->set_filtering(2, g_settings.video.second_pass_smooth); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set(S_DEF_HW_TEXTURE_FILTER_2); + menu_settings_set(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 & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_SCALE_ENABLED); + menu_settings_set(S_SCALE_ENABLED); if(g_settings.video.render_to_texture) device_ptr->ctx_driver->set_fbo(FBO_INIT); @@ -1245,7 +1245,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_SCALE_ENABLED); + menu_settings_set_default(S_DEF_SCALE_ENABLED); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } break; @@ -1258,7 +1258,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) if(should_decrement) { - rmenu_settings_set(S_SCALE_FACTOR_DECREMENT); + menu_settings_set(S_SCALE_FACTOR_DECREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } } @@ -1270,14 +1270,14 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) bool should_increment = g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR; if(should_increment) { - rmenu_settings_set(S_SCALE_FACTOR_INCREMENT); + menu_settings_set(S_SCALE_FACTOR_INCREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } } } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_SCALE_FACTOR); + menu_settings_set_default(S_DEF_SCALE_FACTOR); device_ptr->ctx_driver->set_fbo(FBO_REINIT); } break; @@ -1312,34 +1312,34 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_HW_OVERSCAN_AMOUNT: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rmenu_settings_set(S_OVERSCAN_DECREMENT); + menu_settings_set(S_OVERSCAN_DECREMENT); gfx_ctx_set_overscan(); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_OVERSCAN_INCREMENT); + menu_settings_set(S_OVERSCAN_INCREMENT); gfx_ctx_set_overscan(); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_OVERSCAN); + menu_settings_set_default(S_DEF_OVERSCAN); gfx_ctx_set_overscan(); } break; case SETTING_REFRESH_RATE: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rmenu_settings_set(S_REFRESH_RATE_DECREMENT); + menu_settings_set(S_REFRESH_RATE_DECREMENT); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_REFRESH_RATE_INCREMENT); + menu_settings_set(S_REFRESH_RATE_INCREMENT); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_REFRESH_RATE); + menu_settings_set_default(S_DEF_REFRESH_RATE); driver_set_monitor_refresh_rate(g_settings.video.refresh_rate); } break; @@ -1348,7 +1348,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { if (!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK))) { - rmenu_settings_set(S_THROTTLE); + menu_settings_set(S_THROTTLE); device_ptr->ctx_driver->swap_interval((g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) ? true : false); } } @@ -1356,7 +1356,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { if (!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_PAL_VSYNC_BLOCK))) { - rmenu_settings_set_default(S_DEF_THROTTLE); + menu_settings_set_default(S_DEF_THROTTLE); device_ptr->ctx_driver->swap_interval((g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) ? true : false); } } @@ -1364,12 +1364,12 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) case SETTING_TRIPLE_BUFFERING: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_TRIPLE_BUFFERING); + menu_settings_set(S_TRIPLE_BUFFERING); driver.video->restart(); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_TRIPLE_BUFFERING); + menu_settings_set_default(S_DEF_TRIPLE_BUFFERING); if(!(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_TRIPLE_BUFFERING_ENABLE))) driver.video->restart(); @@ -1461,31 +1461,31 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) break; case SETTING_EMU_CURRENT_SAVE_STATE_SLOT: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) - rmenu_settings_set(S_SAVESTATE_DECREMENT); + menu_settings_set(S_SAVESTATE_DECREMENT); if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rmenu_settings_set(S_SAVESTATE_INCREMENT); + menu_settings_set(S_SAVESTATE_INCREMENT); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rmenu_settings_set_default(S_DEF_SAVE_STATE); + menu_settings_set_default(S_DEF_SAVE_STATE); break; case SETTING_EMU_SHOW_DEBUG_INFO_MSG: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rmenu_settings_set(S_INFO_DEBUG_MSG_TOGGLE); + menu_settings_set(S_INFO_DEBUG_MSG_TOGGLE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rmenu_settings_set_default(S_DEF_INFO_DEBUG_MSG); + menu_settings_set_default(S_DEF_INFO_DEBUG_MSG); break; case SETTING_EMU_SHOW_INFO_MSG: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rmenu_settings_set(S_INFO_MSG_TOGGLE); + menu_settings_set(S_INFO_MSG_TOGGLE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rmenu_settings_set_default(S_DEF_INFO_MSG); + menu_settings_set_default(S_DEF_INFO_MSG); break; case SETTING_EMU_REWIND_ENABLED: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_REWIND); + menu_settings_set(S_REWIND); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) g_settings.rewind_enable = false; @@ -1562,10 +1562,10 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) break; case SETTING_EMU_AUDIO_MUTE: if((input & (1ULL << RMENU_DEVICE_NAV_LEFT)) || (input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) - rmenu_settings_set(S_AUDIO_MUTE); + menu_settings_set(S_AUDIO_MUTE); if(input & (1ULL << RMENU_DEVICE_NAV_START)) - rmenu_settings_set_default(S_DEF_AUDIO_MUTE); + menu_settings_set_default(S_DEF_AUDIO_MUTE); break; #ifdef _XBOX1 case SETTING_EMU_AUDIO_SOUND_VOLUME_LEVEL: @@ -1573,14 +1573,14 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { g_extern.console.sound.volume_level = !g_extern.console.sound.volume_level; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { g_extern.console.sound.volume_level = 0; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } break; #endif @@ -1961,7 +1961,7 @@ int select_rom(void *data, void *state) bool ret = filebrowser_iterate(filebrowser, FILEBROWSER_ACTION_OK); if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); } else { @@ -2297,19 +2297,19 @@ int ingame_menu(void *data, void *state) case MENU_ITEM_ORIENTATION: if(input & (1ULL << RMENU_DEVICE_NAV_LEFT)) { - rmenu_settings_set(S_ROTATION_DECREMENT); + menu_settings_set(S_ROTATION_DECREMENT); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } if((input & (1ULL << RMENU_DEVICE_NAV_RIGHT)) || (input & (1ULL << RMENU_DEVICE_NAV_B))) { - rmenu_settings_set(S_ROTATION_INCREMENT); + menu_settings_set(S_ROTATION_INCREMENT); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { - rmenu_settings_set_default(S_DEF_ROTATION); + menu_settings_set_default(S_DEF_ROTATION); driver.video->set_rotation(NULL, g_extern.console.screen.orientation); } snprintf(strw_buffer, sizeof(strw_buffer), "Press [%s] to reset back to default values.", rarch_input_find_platform_key_label(1ULL << RETRO_DEVICE_ID_JOYPAD_START)); @@ -2329,7 +2329,7 @@ int ingame_menu(void *data, void *state) { g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_INGAME_EXIT); - rmenu_settings_set(S_FRAME_ADVANCE); + menu_settings_set(S_FRAME_ADVANCE); menu_idx = MENU_ITEM_FRAME_ADVANCE; return -1; } @@ -2432,23 +2432,23 @@ int ingame_menu(void *data, void *state) device_ptr->font_ctx->render_msg_place(device_ptr,default_pos.x_position, default_pos.comment_y_position, default_pos.font_size, WHITE, strw_buffer); - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, default_pos.x_position, default_pos.y_position, default_pos.font_size, MENU_ITEM_SELECTED(MENU_ITEM_LOAD_STATE), strw_buffer); - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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); - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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); device_ptr->font_ctx->render_msg_place(device_ptr, 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); - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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 - rmenu_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + menu_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); device_ptr->font_ctx->render_msg_place(device_ptr, 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 @@ -2552,7 +2552,7 @@ int menu_input_process(void *data, void *state) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_LOADING_ROM, 100); + menu_settings_msg(S_MSG_LOADING_ROM, 100); g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index b9d705290b..3932325844 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -24,7 +24,7 @@ #include "utils/file_browser.h" #include "../../console/rarch_console.h" -#include "rmenu_settings.h" +#include "menu_settings.h" #include "../../gfx/gfx_common.h" #include "../../gfx/gfx_context.h" @@ -171,7 +171,7 @@ static void browser_update(filebrowser_t * b, uint64_t input, const char *extens ret = filebrowser_iterate(b, action); if(!ret) - rmenu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); } HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -400,13 +400,13 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER, g_settings.video.smooth ? L"Hardware filtering shader #1: Linear interpolation" : L"Hardware filtering shader #1: Point filtering"); m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering"); m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SHADER, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER_2, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER_2, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SHADER_2, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); m_settingslist.SetText(SETTING_ENABLE_SRAM_PATH, (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME_SRAM_DIR_ENABLE)) ? L"SRAM Path Enable: ON" : L"SRAM Path Enable: OFF"); m_settingslist.SetText(SETTING_ENABLE_STATE_PATH, (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME_STATE_DIR_ENABLE)) ? L"Savestate Path Enable: ON" : L"Savestate Path Enable: OFF"); @@ -428,16 +428,16 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled switch(current_index) { case SETTING_EMU_REWIND_ENABLED: - rmenu_settings_set(S_REWIND); + menu_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_EMU_REWIND_GRANULARITY: g_settings.rewind_granularity++; - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -502,7 +502,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled hCur = app.hShaderBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); + menu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); NavigateForward(app.hShaderBrowser); break; @@ -515,7 +515,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled hCur = app.hShaderBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); + menu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); NavigateForward(app.hShaderBrowser); break; @@ -556,17 +556,17 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro switch(current_index) { case SETTING_EMU_REWIND_ENABLED: - rmenu_settings_set(S_REWIND); + menu_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_EMU_REWIND_GRANULARITY: if (g_settings.rewind_granularity > 1) g_settings.rewind_granularity--; - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -626,9 +626,9 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { if((g_settings.video.fbo.scale_x > MIN_SCALING_FACTOR)) { - rmenu_settings_set(S_SCALE_FACTOR_DECREMENT); + menu_settings_set(S_SCALE_FACTOR_DECREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); } } @@ -695,16 +695,16 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_extern.console.screen.gamma_correction ? L"Gamma correction: ON" : L"Gamma correction: OFF"); break; case SETTING_EMU_REWIND_ENABLED: - rmenu_settings_set(S_REWIND); + menu_settings_set(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_EMU_REWIND_GRANULARITY: g_settings.rewind_granularity++; - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_EMU_REWIND_GRANULARITY, strw_buffer); break; case SETTING_ENABLE_SRAM_PATH: @@ -726,9 +726,9 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { if((g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR)) { - rmenu_settings_set(S_SCALE_FACTOR_INCREMENT); + menu_settings_set(S_SCALE_FACTOR_INCREMENT); device_ptr->ctx_driver->set_fbo(FBO_REINIT); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); } } @@ -781,16 +781,16 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) GetChildById(L"XuiQuickMenuList", &m_quickmenulist); GetChildById(L"XuiBackButton", &m_back); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); return 0; @@ -811,18 +811,18 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case MENU_XUI_ITEM_LOAD_STATE: case MENU_XUI_ITEM_SAVE_STATE: rarch_state_slot_decrease(); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); break; case MENU_XUI_ITEM_ASPECT_RATIO: - rmenu_settings_set(S_ASPECT_RATIO_DECREMENT); + menu_settings_set(S_ASPECT_RATIO_DECREMENT); aspectratio_changed = true; break; case MENU_XUI_ITEM_ORIENTATION: - rmenu_settings_set(S_ROTATION_DECREMENT); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + menu_settings_set(S_ROTATION_DECREMENT); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; @@ -836,18 +836,18 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case MENU_XUI_ITEM_LOAD_STATE: case MENU_XUI_ITEM_SAVE_STATE: rarch_state_slot_increase(); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_SAVE_STATE, strw_buffer); break; case MENU_XUI_ITEM_ASPECT_RATIO: - rmenu_settings_set(S_ASPECT_RATIO_INCREMENT); + menu_settings_set(S_ASPECT_RATIO_INCREMENT); aspectratio_changed = true; break; case MENU_XUI_ITEM_ORIENTATION: - rmenu_settings_set(S_ROTATION_INCREMENT); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + menu_settings_set(S_ROTATION_INCREMENT); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; @@ -863,7 +863,7 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr if(aspectratio_changed) { driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); } @@ -913,31 +913,31 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } break; case MENU_XUI_ITEM_ASPECT_RATIO: - rmenu_settings_set_default(S_DEF_ASPECT_RATIO); + menu_settings_set_default(S_DEF_ASPECT_RATIO); driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); break; case MENU_XUI_ITEM_ORIENTATION: - rmenu_settings_set_default(S_DEF_ROTATION); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + menu_settings_set_default(S_DEF_ROTATION); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ORIENTATION, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); break; case MENU_XUI_ITEM_RESIZE_MODE: input_loop = INPUT_LOOP_RESIZE_MODE; g_settings.video.aspect_ratio_idx = ASPECT_RATIO_CUSTOM; - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_RESIZE_SCREEN, S_DELAY_270); + menu_settings_msg(S_MSG_RESIZE_SCREEN, S_DELAY_270); break; case MENU_XUI_ITEM_FRAME_ADVANCE: if (g_extern.main_is_init) { g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); - rmenu_settings_set(S_FRAME_ADVANCE); + menu_settings_set(S_FRAME_ADVANCE); process_input_ret = -1; } break; @@ -1005,7 +1005,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, g_settings.video.cg_shader_path, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); XuiSceneNavigateBack(hCur, app.hMainScene, XUSER_INDEX_ANY); } else @@ -1020,7 +1020,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, g_settings.video.second_pass_shader, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1099,7 +1099,7 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) convert_char_to_wchar(strw_buffer, g_extern.title_buf, sizeof(strw_buffer)); m_core.SetText(strw_buffer); - rmenu_settings_create_menu_item_label_w(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); m_title.SetText(strw_buffer); return 0; @@ -1144,7 +1144,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hControlsMenu; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_CHANGE_CONTROLS, S_DELAY_180); + menu_settings_msg(S_MSG_CHANGE_CONTROLS, S_DELAY_180); NavigateForward(app.hControlsMenu); } @@ -1157,7 +1157,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hCoreBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, S_DELAY_180); + menu_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, S_DELAY_180); NavigateForward(app.hCoreBrowser); } @@ -1312,7 +1312,7 @@ bool menu_iterate(void) if (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME)) { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - rmenu_settings_msg(S_MSG_LOADING_ROM, 100); + menu_settings_msg(S_MSG_LOADING_ROM, 100); g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_LOAD_GAME); From 04c9b14b7e02a2849db070d2a063de927072a0ed Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 22:21:53 +0100 Subject: [PATCH 72/84] Remove S_DELAY macros --- frontend/frontend_console.c | 2 +- frontend/menu/menu_settings.h | 10 ---------- frontend/menu/rgui.c | 6 +++--- frontend/menu/rmenu.c | 28 ++++++++++++++-------------- frontend/menu/rmenu_xui.cpp | 22 +++++++++++----------- 5 files changed, 29 insertions(+), 39 deletions(-) diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index 7303df0650..861dc841e3 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -312,7 +312,7 @@ begin_loop: { RARCH_ERR("rarch_main_init failed.\n"); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); - menu_settings_msg(S_MSG_ROM_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_ROM_LOADING_ERROR, 180); } g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT); } diff --git a/frontend/menu/menu_settings.h b/frontend/menu/menu_settings.h index 8aa03083ac..05d20089a7 100644 --- a/frontend/menu/menu_settings.h +++ b/frontend/menu/menu_settings.h @@ -17,16 +17,6 @@ #ifndef CONSOLE_SETTINGS_H #define CONSOLE_SETTINGS_H -enum -{ - S_DELAY_0 = 0, - S_DELAY_1 = 1, - S_DELAY_45 = 45, - S_DELAY_90 = 90, - S_DELAY_180 = 180, - S_DELAY_270 = 270 -}; - enum { S_ASPECT_RATIO_DECREMENT = 0, diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 044643c23b..8816933912 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -626,7 +626,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t menu_settings_set(S_REWIND); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); } else if (action == RGUI_ACTION_START) g_settings.rewind_enable = false; @@ -680,7 +680,7 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t data + (height - 1) * (pitch >> 1), width, height, -pitch, false); - msg_queue_push(g_extern.msg_queue, r ? "Screenshot saved" : "Screenshot failed to save", 1, S_DELAY_90); + msg_queue_push(g_extern.msg_queue, r ? "Screenshot saved" : "Screenshot failed to save", 1, 90); } break; #ifndef HAVE_DYNAMIC @@ -1385,7 +1385,7 @@ int rgui_iterate(rgui_handle_t *rgui, rgui_action_t action) strlcpy(g_extern.fullpath, rgui->path_buf, sizeof(g_extern.fullpath)); g_extern.lifecycle_mode_state |= (1ULL << MODE_LOAD_GAME); - menu_settings_msg(S_MSG_LOADING_ROM, S_DELAY_1); + menu_settings_msg(S_MSG_LOADING_ROM, 1); rgui->need_refresh = true; // in case of zip extract rgui->msg_force = true; } diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 5ec32f96fb..cbc5463b45 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -625,7 +625,7 @@ static void browser_update(void *data, uint64_t input, const char *extensions) ret = filebrowser_iterate(b, action); if(!ret) - menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); } void browser_render(void *data) @@ -724,7 +724,7 @@ int select_file(void *data, void *state) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, path, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -740,7 +740,7 @@ int select_file(void *data, void *state) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, path, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -782,7 +782,7 @@ int select_file(void *data, void *state) else { if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); } break; } @@ -791,7 +791,7 @@ int select_file(void *data, void *state) } if(!ret) - menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); } else if (input & (1ULL << RMENU_DEVICE_NAV_X)) menu_stack_pop(); @@ -889,7 +889,7 @@ int select_directory(void *data, void *state) } if(!ret) - menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); display_menubar(current_menu); @@ -1106,7 +1106,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, NULL, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1126,7 +1126,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, NULL, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1159,7 +1159,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE_PENDING); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); } } if(input & (1ULL << RMENU_DEVICE_NAV_START)) @@ -1172,7 +1172,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE_PENDING); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); } } } @@ -1485,7 +1485,7 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) menu_settings_set(S_REWIND); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) g_settings.rewind_enable = false; @@ -1573,14 +1573,14 @@ static int set_setting_action(void *data, unsigned switchvalue, uint64_t input) { g_extern.console.sound.volume_level = !g_extern.console.sound.volume_level; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); } if(input & (1ULL << RMENU_DEVICE_NAV_START)) { g_extern.console.sound.volume_level = 0; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); } break; #endif @@ -1961,7 +1961,7 @@ int select_rom(void *data, void *state) bool ret = filebrowser_iterate(filebrowser, FILEBROWSER_ACTION_OK); if(!ret) - menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); } else { diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index 3932325844..ebe503975b 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -171,7 +171,7 @@ static void browser_update(filebrowser_t * b, uint64_t input, const char *extens ret = filebrowser_iterate(b, action); if(!ret) - menu_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); + menu_settings_msg(S_MSG_DIR_LOADING_ERROR, 180); } HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -432,7 +432,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); break; case SETTING_EMU_REWIND_GRANULARITY: g_settings.rewind_granularity++; @@ -502,7 +502,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled hCur = app.hShaderBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); + menu_settings_msg(S_MSG_SELECT_SHADER, 180); NavigateForward(app.hShaderBrowser); break; @@ -515,7 +515,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled hCur = app.hShaderBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); + menu_settings_msg(S_MSG_SELECT_SHADER, 180); NavigateForward(app.hShaderBrowser); break; @@ -560,7 +560,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); break; case SETTING_EMU_REWIND_GRANULARITY: if (g_settings.rewind_granularity > 1) @@ -699,7 +699,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + menu_settings_msg(S_MSG_RESTART_RARCH, 180); break; case SETTING_EMU_REWIND_GRANULARITY: g_settings.rewind_granularity++; @@ -931,7 +931,7 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled m_quickmenulist.SetText(MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_RESIZE_SCREEN, S_DELAY_270); + menu_settings_msg(S_MSG_RESIZE_SCREEN, 270); break; case MENU_XUI_ITEM_FRAME_ADVANCE: if (g_extern.main_is_init) @@ -1005,7 +1005,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, g_settings.video.cg_shader_path, RARCH_SHADER_INDEX_PASS0); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); XuiSceneNavigateBack(hCur, app.hMainScene, XUSER_INDEX_ANY); } else @@ -1020,7 +1020,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { driver.video->set_shader(driver.video_data, (enum rarch_shader_type)g_settings.video.shader_type, g_settings.video.second_pass_shader, RARCH_SHADER_INDEX_PASS1); if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); + menu_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, 180); } else RARCH_ERR("Shaders are unsupported on this platform.\n"); @@ -1144,7 +1144,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hControlsMenu; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_CHANGE_CONTROLS, S_DELAY_180); + menu_settings_msg(S_MSG_CHANGE_CONTROLS, 180); NavigateForward(app.hControlsMenu); } @@ -1157,7 +1157,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hCoreBrowser; if (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) - menu_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, S_DELAY_180); + menu_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, 180); NavigateForward(app.hCoreBrowser); } From 18769094e6c822f31f5da4d346710a6ad7701a0b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 22:23:40 +0100 Subject: [PATCH 73/84] (360) Move menu_settings_create_menu_item_label_w to rmenu_xui.cpp --- frontend/menu/menu_settings.c | 8 -------- frontend/menu/menu_settings.h | 1 - frontend/menu/rmenu_xui.cpp | 8 ++++++++ 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/frontend/menu/menu_settings.c b/frontend/menu/menu_settings.c index 781b5b1d31..145d823eec 100644 --- a/frontend/menu/menu_settings.c +++ b/frontend/menu/menu_settings.c @@ -269,14 +269,6 @@ void menu_settings_msg(unsigned setting, unsigned delay) msg_queue_push(g_extern.msg_queue, str, 1, delay); } -void menu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size) -{ - char str[PATH_MAX]; - - menu_settings_create_menu_item_label(str, setting, sizeof(str)); - convert_char_to_wchar(strwbuf, str, size); -} - void menu_settings_create_menu_item_label(char * str, unsigned setting, size_t size) { switch (setting) diff --git a/frontend/menu/menu_settings.h b/frontend/menu/menu_settings.h index 05d20089a7..19e0c88038 100644 --- a/frontend/menu/menu_settings.h +++ b/frontend/menu/menu_settings.h @@ -99,6 +99,5 @@ void menu_settings_set_default(unsigned setting); void menu_settings_msg(unsigned setting, unsigned delay); void menu_settings_create_menu_item_label(char * str, unsigned setting, size_t size); -void menu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size); #endif diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index ebe503975b..9f9764c302 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -116,6 +116,14 @@ HRESULT CRetroArch::UnregisterXuiClasses (void) return 0; } +static void menu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned setting, size_t size) +{ + char str[PATH_MAX]; + + menu_settings_create_menu_item_label(str, setting, sizeof(str)); + convert_char_to_wchar(strwbuf, str, size); +} + static void browser_update(filebrowser_t * b, uint64_t input, const char *extensions); static void filebrowser_fetch_directory_entries(filebrowser_t * browser, uint64_t action) From 13de2c5acd76d603f54b57a902f75dbc36a289f1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 22:30:35 +0100 Subject: [PATCH 74/84] (360) Move class definitions to rmenu_xui.cpp instead of header --- frontend/menu/rmenu_xui.cpp | 155 ++++++++++++++++++++++++++++++++++++ frontend/menu/rmenu_xui.h | 149 +--------------------------------- xdk/xdk_d3d.cpp | 4 +- 3 files changed, 157 insertions(+), 151 deletions(-) diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index 9f9764c302..bcf6727327 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include "rmenu_xui.h" @@ -46,6 +48,152 @@ enum { MENU_XUI_ITEM_QUIT_RARCH, }; +class CRetroArch : public CXuiModule +{ + public: + HXUIOBJ hMainScene; + HXUIOBJ hControlsMenu; + HXUIOBJ hFileBrowser; + HXUIOBJ hCoreBrowser; + HXUIOBJ hShaderBrowser; + HXUIOBJ hQuickMenu; + HXUIOBJ hRetroArchSettings; + protected: + virtual HRESULT RegisterXuiClasses(); + virtual HRESULT UnregisterXuiClasses(); +}; + +class CRetroArchMain: public CXuiSceneImpl +{ + protected: + CXuiControl m_filebrowser; + CXuiControl m_quick_menu; + CXuiControl m_controls; + CXuiControl m_settings; + CXuiControl m_change_libretro_core; + CXuiControl m_quit; + CXuiTextElement m_title; + CXuiTextElement m_core; + CXuiControl m_logoimage; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); + + XUI_IMPLEMENT_CLASS(CRetroArchMain, L"RetroArchMain", XUI_CLASS_SCENE) +}; + +class CRetroArchFileBrowser: public CXuiSceneImpl +{ + protected: + CXuiControl m_back; + CXuiControl m_dir_game; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); + + XUI_IMPLEMENT_CLASS(CRetroArchFileBrowser, L"RetroArchFileBrowser", XUI_CLASS_SCENE) +}; + +class CRetroArchCoreBrowser: public CXuiSceneImpl +{ + protected: + CXuiControl m_back; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); + + XUI_IMPLEMENT_CLASS(CRetroArchCoreBrowser, L"RetroArchCoreBrowser", XUI_CLASS_SCENE) +}; + +class CRetroArchShaderBrowser: public CXuiSceneImpl +{ + protected: + CXuiControl m_back; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); + + XUI_IMPLEMENT_CLASS(CRetroArchShaderBrowser, L"RetroArchShaderBrowser", XUI_CLASS_SCENE) +}; + +class CRetroArchQuickMenu: public CXuiSceneImpl +{ + protected: + CXuiList m_quickmenulist; + CXuiControl m_back; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); + + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); + + XUI_IMPLEMENT_CLASS(CRetroArchQuickMenu, L"RetroArchQuickMenu", XUI_CLASS_SCENE) +}; + +class CRetroArchSettings: public CXuiSceneImpl +{ + protected: + CXuiList m_settingslist; + CXuiControl m_back; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); + + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); + + XUI_IMPLEMENT_CLASS(CRetroArchSettings, L"RetroArchSettings", XUI_CLASS_SCENE) +}; + +class CRetroArchControls: public CXuiSceneImpl +{ + protected: + CXuiList m_controlslist; + CXuiControl m_back; + CXuiSlider m_controlnoslider; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); + + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); + + XUI_IMPLEMENT_CLASS(CRetroArchControls, L"RetroArchControls", XUI_CLASS_SCENE) +}; + CRetroArch app; CXuiList m_list; CXuiTextElement m_list_path; @@ -1383,3 +1531,10 @@ deinit: return false; } + +bool menu_iterate_xui(void) +{ + app.Render(); + XuiTimersRun(); + return true; +} \ No newline at end of file diff --git a/frontend/menu/rmenu_xui.h b/frontend/menu/rmenu_xui.h index edcdbf1516..cdf48ce79f 100644 --- a/frontend/menu/rmenu_xui.h +++ b/frontend/menu/rmenu_xui.h @@ -17,9 +17,6 @@ #ifndef _RMENU_XUI_H_ #define _RMENU_XUI_H_ -#include -#include - enum { SETTING_EMU_REWIND_ENABLED = 0, @@ -68,150 +65,6 @@ enum INPUT_LOOP_FILEBROWSER }; -class CRetroArch : public CXuiModule -{ - public: - HXUIOBJ hMainScene; - HXUIOBJ hControlsMenu; - HXUIOBJ hFileBrowser; - HXUIOBJ hCoreBrowser; - HXUIOBJ hShaderBrowser; - HXUIOBJ hQuickMenu; - HXUIOBJ hRetroArchSettings; - protected: - virtual HRESULT RegisterXuiClasses(); - virtual HRESULT UnregisterXuiClasses(); -}; - -class CRetroArchMain: public CXuiSceneImpl -{ - protected: - CXuiControl m_filebrowser; - CXuiControl m_quick_menu; - CXuiControl m_controls; - CXuiControl m_settings; - CXuiControl m_change_libretro_core; - CXuiControl m_quit; - CXuiTextElement m_title; - CXuiTextElement m_core; - CXuiControl m_logoimage; - public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); - - XUI_IMPLEMENT_CLASS(CRetroArchMain, L"RetroArchMain", XUI_CLASS_SCENE) -}; - -class CRetroArchFileBrowser: public CXuiSceneImpl -{ - protected: - CXuiControl m_back; - CXuiControl m_dir_game; - public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); - - XUI_IMPLEMENT_CLASS(CRetroArchFileBrowser, L"RetroArchFileBrowser", XUI_CLASS_SCENE) -}; - -class CRetroArchCoreBrowser: public CXuiSceneImpl -{ - protected: - CXuiControl m_back; - public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); - - XUI_IMPLEMENT_CLASS(CRetroArchCoreBrowser, L"RetroArchCoreBrowser", XUI_CLASS_SCENE) -}; - -class CRetroArchShaderBrowser: public CXuiSceneImpl -{ - protected: - CXuiControl m_back; - public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); - - XUI_IMPLEMENT_CLASS(CRetroArchShaderBrowser, L"RetroArchShaderBrowser", XUI_CLASS_SCENE) -}; - -class CRetroArchQuickMenu: public CXuiSceneImpl -{ - protected: - CXuiList m_quickmenulist; - CXuiControl m_back; - public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); - - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); - - XUI_IMPLEMENT_CLASS(CRetroArchQuickMenu, L"RetroArchQuickMenu", XUI_CLASS_SCENE) -}; - -class CRetroArchSettings: public CXuiSceneImpl -{ - protected: - CXuiList m_settingslist; - CXuiControl m_back; - public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); - - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); - - XUI_IMPLEMENT_CLASS(CRetroArchSettings, L"RetroArchSettings", XUI_CLASS_SCENE) -}; - -class CRetroArchControls: public CXuiSceneImpl -{ - protected: - CXuiList m_controlslist; - CXuiControl m_back; - CXuiSlider m_controlnoslider; - public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); - - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); - - XUI_IMPLEMENT_CLASS(CRetroArchControls, L"RetroArchControls", XUI_CLASS_SCENE) -}; +bool menu_iterate_xui(void); #endif diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index b3d036f553..481d11d8d0 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -40,7 +40,6 @@ unsigned font_x, font_y; #elif defined(_XBOX360) #include "../frontend/menu/rmenu_xui.h" -extern CRetroArch app; const DWORD g_MapLinearToSrgbGpuFormat[] = { GPUTEXTUREFORMAT_1_REVERSE, @@ -892,8 +891,7 @@ static bool xdk_d3d_frame(void *data, const void *frame, if (lifecycle_mode_state & (1ULL << MODE_MENU_DRAW)) { #ifdef _XBOX360 - app.Render(); - XuiTimersRun(); + menu_iterate_xui(); #endif } else From dece16ea12070d5eba8b96fbf13bc3fe3645e37d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 22:47:09 +0100 Subject: [PATCH 75/84] (GX) No public visibility for gx_set_aspect --- gx/gx_video.c | 2 +- gx/gx_video.h | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gx/gx_video.c b/gx/gx_video.c index 4cabdf99b2..e0edcde101 100644 --- a/gx/gx_video.c +++ b/gx/gx_video.c @@ -270,7 +270,7 @@ const char *gx_get_video_mode(void) return format; } -void gx_set_aspect_ratio(void *data, unsigned aspectratio_idx) +static void gx_set_aspect_ratio(void *data, unsigned aspectratio_idx) { gx_video_t *gx = (gx_video_t*)driver.video_data; diff --git a/gx/gx_video.h b/gx/gx_video.h index 9a6e38f06c..5bd40ad0e4 100644 --- a/gx/gx_video.h +++ b/gx/gx_video.h @@ -32,8 +32,7 @@ typedef struct gx_video } gx_video_t; void gx_set_video_mode(unsigned fbWidth, unsigned lines); -const char *gx_get_video_mode(); -void gx_set_aspect_ratio(void *data, unsigned aspectratio_idx); +const char *gx_get_video_mode(void); #endif From a6a023b03cc7c852516c2201f90f4fb4f8717f55 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Mar 2013 22:57:42 +0100 Subject: [PATCH 76/84] frontend_console cleanups --- frontend/frontend_android.h | 2 -- frontend/frontend_console.c | 6 +++--- frontend/frontend_console.h | 3 --- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/frontend/frontend_android.h b/frontend/frontend_android.h index 6592f5b85d..1bf18c91e1 100644 --- a/frontend/frontend_android.h +++ b/frontend/frontend_android.h @@ -153,8 +153,6 @@ enum { APP_CMD_DEAD, }; -int8_t android_app_read_cmd (void *data); -extern void engine_app_read_cmd(void); extern void engine_handle_cmd(void); extern struct android_app *g_android; diff --git a/frontend/frontend_console.c b/frontend/frontend_console.c index 861dc841e3..127bd77757 100644 --- a/frontend/frontend_console.c +++ b/frontend/frontend_console.c @@ -24,16 +24,16 @@ #include "menu/menu_settings.h" #if defined(__CELLOS_LV2__) -#include "platform/platform_ps3.c" #include "platform/platform_ps3_exec.c" +#include "platform/platform_ps3.c" #elif defined(GEKKO) -#include "platform/platform_gx.c" #ifdef HW_RVL #include "platform/platform_gx_exec.c" #endif +#include "platform/platform_gx.c" #elif defined(_XBOX) -#include "platform/platform_xdk.c" #include "platform/platform_xdk_exec.c" +#include "platform/platform_xdk.c" #elif defined(PSP) #include "platform/platform_psp.c" #endif diff --git a/frontend/frontend_console.h b/frontend/frontend_console.h index 2b6362ffee..0634440469 100644 --- a/frontend/frontend_console.h +++ b/frontend/frontend_console.h @@ -18,9 +18,6 @@ #define _FRONTEND_CONSOLE_H //optional RetroArch forward declarations -#ifdef HAVE_RARCH_EXEC -static void rarch_console_exec(const char *path); -#endif static void verbose_log_init(void); #ifdef IS_SALAMANDER From e983684359eff5ff0ed2897e390fc5447df09583 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 10 Mar 2013 00:43:25 +0100 Subject: [PATCH 77/84] (RGUI Android)Filebrowser ROM loading works after initial ROM (one time - after that, can't return to RGUI anymore - not sure why right now) --- frontend/frontend_android.c | 77 ++++++++++++++++++++++++++----------- frontend/menu/rgui.c | 4 -- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/frontend/frontend_android.c b/frontend/frontend_android.c index 04c8b416c3..2921fc7f17 100644 --- a/frontend/frontend_android.c +++ b/frontend/frontend_android.c @@ -107,12 +107,10 @@ static void jni_get (void *data_in, void *data_out) static bool android_app_start_main(struct android_app *android_app, int *init_ret) { - char rom_path[PATH_MAX]; - char libretro_path[PATH_MAX]; - char config_file[PATH_MAX]; - struct jni_params in_params; struct jni_out_params_char out_args; + struct rarch_main_wrap args = {0}; + bool ret = false; in_params.java_vm = android_app->activity->vm; in_params.class_obj = android_app->activity->clazz; @@ -123,20 +121,20 @@ static bool android_app_start_main(struct android_app *android_app, int *init_re (*in_params.java_vm)->AttachCurrentThread(in_params.java_vm, &in_params.env, 0); // ROM - out_args.out = rom_path; - out_args.out_sizeof = sizeof(rom_path); + out_args.out = g_extern.fullpath; + out_args.out_sizeof = sizeof(g_extern.fullpath); strlcpy(out_args.in, "ROM", sizeof(out_args.in)); jni_get(&in_params, &out_args); // libretro - out_args.out = libretro_path; - out_args.out_sizeof = sizeof(libretro_path); + out_args.out = g_settings.libretro; + out_args.out_sizeof = sizeof(g_settings.libretro); strlcpy(out_args.in, "LIBRETRO", sizeof(out_args.in)); jni_get(&in_params, &out_args); // Config file - out_args.out = config_file; - out_args.out_sizeof = sizeof(config_file); + out_args.out = g_extern.config_path; + out_args.out_sizeof = sizeof(g_extern.config_path); strlcpy(out_args.in, "CONFIGFILE", sizeof(out_args.in)); jni_get(&in_params, &out_args); @@ -149,32 +147,36 @@ static bool android_app_start_main(struct android_app *android_app, int *init_re (*in_params.java_vm)->DetachCurrentThread(in_params.java_vm); RARCH_LOG("Checking arguments passed ...\n"); - RARCH_LOG("ROM Filename: [%s].\n", rom_path); - RARCH_LOG("Libretro path: [%s].\n", libretro_path); - RARCH_LOG("Config file: [%s].\n", config_file); + RARCH_LOG("ROM Filename: [%s].\n", g_extern.fullpath); + RARCH_LOG("Libretro path: [%s].\n", g_settings.libretro); + RARCH_LOG("Config file: [%s].\n", g_extern.config_path); RARCH_LOG("Current IME: [%s].\n", android_app->current_ime); - struct rarch_main_wrap args = {0}; + g_extern.lifecycle_mode_state |= (1ULL << MODE_INIT); args.verbose = true; - args.config_path = config_file; + args.config_path = g_extern.config_path; args.sram_path = NULL; args.state_path = NULL; - args.rom_path = rom_path; - args.libretro_path = libretro_path; + args.rom_path = g_extern.fullpath; + args.libretro_path = g_settings.libretro; - *init_ret = rarch_main_init_wrap(&args); + ret = rarch_main_init_wrap(&args); - if (*init_ret == 0) + if (ret == 0) { RARCH_LOG("rarch_main_init succeeded.\n"); - return true; + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); } else - { RARCH_ERR("rarch_main_init failed.\n"); + + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT); + + if (ret == 0) + return true; + else return false; - } } static void *android_app_entry(void *data) @@ -215,7 +217,6 @@ static void *android_app_entry(void *data) menu_init(); - g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); begin_loop: if(g_extern.lifecycle_mode_state & (1ULL << MODE_GAME)) { @@ -235,11 +236,41 @@ begin_loop: audio_stop_func(); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); } + else if (g_extern.lifecycle_mode_state & (1ULL << MODE_INIT)) + { + if (g_extern.main_is_init) + rarch_main_deinit(); + + struct rarch_main_wrap args = {0}; + + args.verbose = true; + args.config_path = g_extern.config_path; + args.sram_path = NULL; + args.state_path = NULL; + args.rom_path = g_extern.fullpath; + args.libretro_path = g_settings.libretro; + + init_ret = rarch_main_init_wrap(&args); + + if (init_ret == 0) + { + RARCH_LOG("rarch_main_init succeeded.\n"); + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + } + else + { + RARCH_ERR("rarch_main_init failed.\n"); + g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); + } + + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT); + } else if(g_extern.lifecycle_mode_state & (1ULL << MODE_MENU)) { g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_PREINIT); while((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? android_run_events(android_app) : menu_iterate()); + g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU); } else diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 8816933912..b9f2725b2a 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -245,11 +245,7 @@ rgui_handle_t *rgui_init(const char *base_path, rgui->path_stack = rgui_list_new(); rgui->folder_buf = rgui_list_new(); -#ifdef RARCH_CONSOLE rgui_list_push(rgui->path_stack, base_path, RGUI_FILE_DIRECTORY, 0); -#else - rgui_list_push(rgui->path_stack, base_path, RGUI_SETTINGS, 0); -#endif if (font_bmp_buf) init_font(rgui, font_bmp_buf); From 2681f14032e123135541e7360569736fade0e8a0 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 10 Mar 2013 01:16:56 +0100 Subject: [PATCH 78/84] Add video_poke_interface_t. --- driver.c | 3 ++ driver.h | 16 ++++++-- gfx/gfx_common.c | 14 +++---- gfx/gfx_common.h | 6 +-- gfx/gl.c | 95 +++++++++++++++++++++++++++++++++++++----------- 5 files changed, 97 insertions(+), 37 deletions(-) diff --git a/driver.c b/driver.c index 083b7a86e8..c52715515c 100644 --- a/driver.c +++ b/driver.c @@ -830,6 +830,9 @@ void init_video_input(void) rarch_fail(1, "init_video_input()"); } + if (driver.video->poke_interface) + driver.video->poke_interface(driver.video_data, &driver.video_poke); + if (driver.video->set_rotation && g_extern.system.rotation) video_set_rotation_func(g_extern.system.rotation); diff --git a/driver.h b/driver.h index e81bf18df2..715c27569d 100644 --- a/driver.h +++ b/driver.h @@ -226,6 +226,15 @@ typedef struct video_overlay_interface } video_overlay_interface_t; #endif +// Optionally implemented interface to poke more deeply into video driver. +// Only used by RGUI atm. +typedef struct video_poke_interface +{ + void (*set_filtering)(void *data, unsigned index, bool smooth); + void (*set_fbo_state)(void *data, unsigned state); + void (*set_aspect_ratio)(void *data, unsigned aspectratio_index); +} video_poke_interface_t; + typedef struct video_driver { void *(*init)(const video_info_t *video, const input_driver_t **input, void **input_data); @@ -245,9 +254,6 @@ typedef struct video_driver void (*stop)(void); void (*restart)(void); #endif -#if defined(HAVE_RMENU) || defined(HAVE_RGUI) - void (*set_aspect_ratio)(void *data, unsigned aspectratio_index); -#endif void (*set_rotation)(void *data, unsigned rotation); void (*viewport_info)(void *data, struct rarch_viewport *vp); @@ -258,6 +264,7 @@ typedef struct video_driver #ifdef HAVE_OVERLAY void (*overlay_interface)(void *data, const video_overlay_interface_t **iface); #endif + void (*poke_interface)(void *data, const video_poke_interface_t **iface); } video_driver_t; enum rarch_display_type @@ -318,6 +325,9 @@ typedef struct driver input_overlay_t *overlay; uint64_t overlay_state; #endif + + // Interface for "poking". + const video_poke_interface_t *video_poke; } driver_t; void init_drivers(void); diff --git a/gfx/gfx_common.c b/gfx/gfx_common.c index 2278f27e59..67f14f0d1f 100644 --- a/gfx/gfx_common.c +++ b/gfx/gfx_common.c @@ -169,8 +169,6 @@ void gfx_scale_integer(struct rarch_viewport *vp, unsigned width, unsigned heigh vp->y = padding_y >> 1; } -#if defined(HAVE_RMENU) || defined(HAVE_RGUI) - struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = { { "1:1", 1.0f }, { "2:1", 2.0f }, @@ -206,7 +204,7 @@ char rotation_lut[ASPECT_RATIO_END][32] = void gfx_set_auto_viewport(unsigned width, unsigned height) { - if(width == 0 || height == 0) + if (width == 0 || height == 0) return; unsigned aspect_x, aspect_y, len, highest, i; @@ -222,8 +220,11 @@ void gfx_set_auto_viewport(unsigned width, unsigned height) aspect_x = width / highest; aspect_y = height / highest; - snprintf(aspectratio_lut[ASPECT_RATIO_AUTO].name, sizeof(aspectratio_lut[ASPECT_RATIO_AUTO].name), "%d:%d (Auto)", aspect_x, aspect_y); - aspectratio_lut[ASPECT_RATIO_AUTO].value = (float) aspect_x / aspect_y; + snprintf(aspectratio_lut[ASPECT_RATIO_AUTO].name, + sizeof(aspectratio_lut[ASPECT_RATIO_AUTO].name), + "%d:%d (Auto)", aspect_x, aspect_y); + + aspectratio_lut[ASPECT_RATIO_AUTO].value = (float)aspect_x / aspect_y; } void gfx_set_core_viewport(void) @@ -233,9 +234,8 @@ void gfx_set_core_viewport(void) // fallback to 1:1 pixel ratio if none provided if (g_extern.system.av_info.geometry.aspect_ratio == 0.0) - aspectratio_lut[ASPECT_RATIO_CORE].value = (float) g_extern.system.av_info.geometry.base_width / g_extern.system.av_info.geometry.base_height; + aspectratio_lut[ASPECT_RATIO_CORE].value = (float)g_extern.system.av_info.geometry.base_width / g_extern.system.av_info.geometry.base_height; else aspectratio_lut[ASPECT_RATIO_CORE].value = g_extern.system.av_info.geometry.aspect_ratio; } -#endif diff --git a/gfx/gfx_common.h b/gfx/gfx_common.h index ddf6c97a4e..f8f454c8dc 100644 --- a/gfx/gfx_common.h +++ b/gfx/gfx_common.h @@ -40,8 +40,6 @@ void gfx_set_dwm(void); void gfx_scale_integer(struct rarch_viewport *vp, unsigned win_width, unsigned win_height, float aspect_ratio, bool keep_aspect); -#if defined(HAVE_RMENU) || defined(HAVE_RGUI) - #define MIN_SCALING_FACTOR (1.0f) #if defined(__CELLOS_LV2__) @@ -90,7 +88,7 @@ enum rotation ORIENTATION_END }; -#define LAST_ORIENTATION (ORIENTATION_END-1) +#define LAST_ORIENTATION (ORIENTATION_END - 1) extern char rotation_lut[ASPECT_RATIO_END][32]; @@ -119,8 +117,6 @@ extern struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END]; extern void gfx_set_auto_viewport(unsigned width, unsigned height); extern void gfx_set_core_viewport(void); -#endif - #ifdef __cplusplus } #endif diff --git a/gfx/gl.c b/gfx/gl.c index 91bf6545b8..718353d8ed 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -2081,25 +2081,6 @@ static void gl_restart(void) } #endif -#if defined(HAVE_RGUI) || defined(HAVE_RMENU) -static void gl_set_aspect_ratio(void *data, unsigned aspectratio_index) -{ - (void)data; - gl_t *gl = driver.video_data; - - if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_AUTO) - gfx_set_auto_viewport(g_extern.frame_cache.width, g_extern.frame_cache.height); - else if(g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CORE) - gfx_set_core_viewport(); - - g_settings.video.aspect_ratio = aspectratio_lut[g_settings.video.aspect_ratio_idx].value; - g_settings.video.force_aspect = false; - gl->keep_aspect = true; - - gl->should_resize = true; -} -#endif - #ifdef HAVE_OVERLAY static bool gl_overlay_load(void *data, const uint32_t *image, unsigned width, unsigned height) { @@ -2224,6 +2205,78 @@ static void gl_get_overlay_interface(void *data, const video_overlay_interface_t } #endif +static void gl_set_filtering(void *data, unsigned index, bool smooth) +{ + gl_t *gl = (gl_t*)data; + + GLuint filter = smooth ? GL_LINEAR : GL_NEAREST; + if (index == 1) + { + gl->tex_filter = filter; + // Apply to all PREV textures. + for (unsigned i = 0; i < TEXTURES; i++) + { + glBindTexture(GL_TEXTURE_2D, gl->texture[i]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); + } + } + else if (index >= 2 && gl->fbo_inited) + { + glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[index - 2]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); + } + + glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); +} + +static void gl_set_fbo_state(void *data, unsigned mode) +{ + gl_t *gl = (gl_t*)data; + + switch (mode) + { + case FBO_DEINIT: + gl_deinit_fbo(gl); + break; + case FBO_REINIT: + gl_deinit_fbo(gl); + // Fallthrough + case FBO_INIT: + gl_init_fbo(gl, gl->tex_w, gl->tex_h); + break; + } +} + +static void gl_set_aspect_ratio(void *data, unsigned aspectratio_index) +{ + gl_t *gl = (gl_t*)data; + + if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_AUTO) + gfx_set_auto_viewport(g_extern.frame_cache.width, g_extern.frame_cache.height); + else if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CORE) + gfx_set_core_viewport(); + + g_settings.video.aspect_ratio = aspectratio_lut[g_settings.video.aspect_ratio_idx].value; + g_settings.video.force_aspect = false; + gl->keep_aspect = true; + + gl->should_resize = true; +} + +static const video_poke_interface_t gl_poke_interface = { + gl_set_filtering, + gl_set_fbo_state, + gl_set_aspect_ratio, +}; + +static void gl_get_poke_interface(void *data, const video_poke_interface_t **iface) +{ + (void)data; + *iface = &gl_poke_interface; +} + const video_driver_t video_gl = { gl_init, gl_frame, @@ -2244,9 +2297,6 @@ const video_driver_t video_gl = { gl_start, gl_stop, gl_restart, -#endif -#if defined(HAVE_RMENU) || defined(HAVE_RGUI) - gl_set_aspect_ratio, #endif gl_set_rotation, @@ -2261,6 +2311,7 @@ const video_driver_t video_gl = { #ifdef HAVE_OVERLAY gl_get_overlay_interface, #endif + gl_get_poke_interface, }; From e1a545b695e995eecc27432e335c4c18768110da Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 10 Mar 2013 01:20:16 +0100 Subject: [PATCH 79/84] Explicitly clear out poke interface to NULL. --- driver.c | 1 + 1 file changed, 1 insertion(+) diff --git a/driver.c b/driver.c index c52715515c..bff4a0019a 100644 --- a/driver.c +++ b/driver.c @@ -830,6 +830,7 @@ void init_video_input(void) rarch_fail(1, "init_video_input()"); } + driver.video_poke = NULL; if (driver.video->poke_interface) driver.video->poke_interface(driver.video_data, &driver.video_poke); From f8f384d8b39178801fb3761fada2f9550888293d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 10 Mar 2013 01:30:15 +0100 Subject: [PATCH 80/84] (RGUI) Enable all menu features for Android --- frontend/menu/rgui.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index b9f2725b2a..cc6d961e6d 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -958,7 +958,6 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) { rgui_list_clear(rgui->folder_buf); -#ifdef RARCH_CONSOLE RGUI_MENU_ITEM("Rewind", RGUI_SETTINGS_REWIND_ENABLE); RGUI_MENU_ITEM("Rewind granularity", RGUI_SETTINGS_REWIND_GRANULARITY); if (g_extern.main_is_init) @@ -974,8 +973,8 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) #endif #ifdef GEKKO RGUI_MENU_ITEM("Screen Resolution", RGUI_SETTINGS_VIDEO_RESOLUTION); -#endif RGUI_MENU_ITEM("Gamma", RGUI_SETTINGS_VIDEO_GAMMA); +#endif RGUI_MENU_ITEM("Aspect Ratio", RGUI_SETTINGS_VIDEO_ASPECT_RATIO); RGUI_MENU_ITEM("Custom Ratio", RGUI_SETTINGS_CUSTOM_VIEWPORT); RGUI_MENU_ITEM("Overscan", RGUI_SETTINGS_VIDEO_OVERSCAN); @@ -983,34 +982,24 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) RGUI_MENU_ITEM("Mute Audio", RGUI_SETTINGS_AUDIO_MUTE); RGUI_MENU_ITEM("Audio Control Rate", RGUI_SETTINGS_AUDIO_CONTROL_RATE); RGUI_MENU_ITEM("Audio Resampler", RGUI_SETTINGS_RESAMPLER_TYPE); +#ifdef GEKKO RGUI_MENU_ITEM("SRAM Saves in \"sram\" Dir", RGUI_SETTINGS_SRAM_DIR); RGUI_MENU_ITEM("State Saves in \"state\" Dir", RGUI_SETTINGS_STATE_DIR); +#endif #ifdef HAVE_LIBRETRO_MANAGEMENT RGUI_MENU_ITEM("Core", RGUI_SETTINGS_CORE); #endif +#ifdef GEKKO RGUI_MENU_ITEM("Controller #1 Config", RGUI_SETTINGS_CONTROLLER_1); RGUI_MENU_ITEM("Controller #2 Config", RGUI_SETTINGS_CONTROLLER_2); RGUI_MENU_ITEM("Controller #3 Config", RGUI_SETTINGS_CONTROLLER_3); RGUI_MENU_ITEM("Controller #4 Config", RGUI_SETTINGS_CONTROLLER_4); +#endif RGUI_MENU_ITEM("Debug Text", RGUI_SETTINGS_DEBUG_TEXT); #ifndef HAVE_DYNAMIC RGUI_MENU_ITEM("Restart RetroArch", RGUI_SETTINGS_RESTART_EMULATOR); #endif RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); -#else - //RGUI_MENU_ITEM("Filebrowser", RGUI_SETTINGS_OPEN_FILEBROWSER); - RGUI_MENU_ITEM("Save State", RGUI_SETTINGS_SAVESTATE_SAVE); - RGUI_MENU_ITEM("Load State", RGUI_SETTINGS_SAVESTATE_LOAD); - RGUI_MENU_ITEM("Take Screenshot", RGUI_SETTINGS_SCREENSHOT); - RGUI_MENU_ITEM("Restart Game", RGUI_SETTINGS_RESTART_GAME); - RGUI_MENU_ITEM("Hardware filtering", RGUI_SETTINGS_VIDEO_FILTER); - RGUI_MENU_ITEM("Aspect Ratio", RGUI_SETTINGS_VIDEO_ASPECT_RATIO); - RGUI_MENU_ITEM("Rotation", RGUI_SETTINGS_VIDEO_ROTATION); - RGUI_MENU_ITEM("Mute Audio", RGUI_SETTINGS_AUDIO_MUTE); - RGUI_MENU_ITEM("Audio Control Rate", RGUI_SETTINGS_AUDIO_CONTROL_RATE); - RGUI_MENU_ITEM("Audio Resampler", RGUI_SETTINGS_RESAMPLER_TYPE); - RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); -#endif } static void rgui_settings_controller_populate_entries(rgui_handle_t *rgui) From 7b6bf22ac692648059aff78a49171366316e3287 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 10 Mar 2013 01:43:19 +0100 Subject: [PATCH 81/84] Add rarch_bits_t. --- general.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/general.h b/general.h index d8e04bca23..4e1b4fd66c 100644 --- a/general.h +++ b/general.h @@ -791,6 +791,18 @@ static inline void rarch_fail(int error_code, const char *error) longjmp(g_extern.error_sjlj_context, error_code); } +// Helper macros and struct to keep track of many booleans. +// To check for multiple bits, use &&, not &. +// For OR, | can be used. +typedef struct +{ + uint32_t data[8]; +} rarch_bits_t; +#define BIT_SET(a, bit) ((a).data[(bit) >> 5] |= 1 << ((bit) & 31)) +#define BIT_CLEAR(a, bit) ((a).data[(bit) >> 5] &= ~(1 << ((bit) & 31))) +#define BIT_GET(a, bit) ((a).data[(bit) >> 5] & (1 << ((bit) & 31))) +#define BIT_CLEAR_ALL(a) memset(&(a), 0, sizeof(a)); + #endif From c13868d2facd1db966230f27e6c8d323430927b5 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 10 Mar 2013 01:47:57 +0100 Subject: [PATCH 82/84] Add required HAVE_FBO define. --- gfx/gl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index 718353d8ed..11d5b74a77 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -2221,12 +2221,14 @@ static void gl_set_filtering(void *data, unsigned index, bool smooth) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); } } +#ifdef HAVE_FBO else if (index >= 2 && gl->fbo_inited) { glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[index - 2]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); } +#endif glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); } From 1f37491cbf974572042e9ecb7d0a0db81f7a9e63 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 10 Mar 2013 01:49:06 +0100 Subject: [PATCH 83/84] More HAVE_FBO fixes. --- gfx/gl.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index 11d5b74a77..0b98cf7722 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -2235,6 +2235,7 @@ static void gl_set_filtering(void *data, unsigned index, bool smooth) static void gl_set_fbo_state(void *data, unsigned mode) { +#ifdef HAVE_FBO gl_t *gl = (gl_t*)data; switch (mode) @@ -2249,6 +2250,10 @@ static void gl_set_fbo_state(void *data, unsigned mode) gl_init_fbo(gl, gl->tex_w, gl->tex_h); break; } +#else + (void)data; + (void)mode; +#endif } static void gl_set_aspect_ratio(void *data, unsigned aspectratio_index) From 68494d0547a83028ea65fd01f8e0cf7889eb7de3 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 10 Mar 2013 01:58:31 +0100 Subject: [PATCH 84/84] Set poke interface for HAVE_RMENU. --- gfx/gl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index 0b98cf7722..1b8261fed1 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -2022,6 +2022,8 @@ static bool gl_read_viewport(void *data, uint8_t *buffer) #endif #ifdef HAVE_RMENU +static void gl_get_poke_interface(void *data, const video_poke_interface **iface); + static void gl_start(void) { video_info_t video_info = {0}; @@ -2042,6 +2044,7 @@ static void gl_start(void) driver.video_data = gl_init(&video_info, NULL, NULL); gl_t *gl = (gl_t*)driver.video_data; + gl_get_poke_interface(gl, &driver.video_poke); #ifdef RARCH_CONSOLE // Comes too early for console - moved to gl_start