Merge branch 'master' of github.com:Themaister/RetroArch

This commit is contained in:
Themaister 2012-06-29 13:35:14 +02:00
commit 30fd6ddca0
3 changed files with 199 additions and 393 deletions

View File

@ -18,70 +18,72 @@
#include "retroarch_console.h" #include "retroarch_console.h"
static void rarch_manage_libretro_install(char *libretro_core_installed, size_t sizeof_libretro_core, const char *full_path, const char *path, const char *exe_ext) // if a CORE executable exists (full_path), this means we have just installed
// a new libretro port and therefore we need to change it to a more
// sane name.
static bool rarch_manage_libretro_install(char *libretro_core_installed, size_t sizeof_libretro_core, const char *full_path, const char *path, const char *exe_ext)
{ {
int ret; int ret;
char tmp_path2[1024], tmp_pathnewfile[1024]; char tmp_path2[1024], tmp_pathnewfile[1024];
RARCH_LOG("Assumed path of CORE executable: [%s]\n", full_path); rarch_console_name_from_id(tmp_path2, sizeof(tmp_path2));
strlcat(tmp_path2, exe_ext, sizeof(tmp_path2));
snprintf(tmp_pathnewfile, sizeof(tmp_pathnewfile), "%s%s", path, tmp_path2);
if (path_file_exists(full_path)) if (path_file_exists(tmp_pathnewfile))
{ {
// if CORE executable exists, this means we have just installed // if libretro core already exists, this means we are
// a new libretro port and therefore we need to change it to a more // upgrading the libretro core - so delete pre-existing
// sane name. // file first.
rarch_console_name_from_id(tmp_path2, sizeof(tmp_path2)); RARCH_LOG("Upgrading emulator core...\n");
strlcat(tmp_path2, exe_ext, sizeof(tmp_path2)); ret = remove(tmp_pathnewfile);
snprintf(tmp_pathnewfile, sizeof(tmp_pathnewfile), "%s%s", path, tmp_path2);
if (path_file_exists(tmp_pathnewfile))
{
// if libretro core already exists, this means we are
// upgrading the libretro core - so delete pre-existing
// file first.
RARCH_LOG("Upgrading emulator core...\n");
ret = remove(tmp_pathnewfile);
if (ret == 0)
{
RARCH_LOG("Succeeded in removing pre-existing libretro core: [%s].\n", tmp_pathnewfile);
}
else
RARCH_ERR("Failed to remove pre-existing libretro core: [%s].\n", tmp_pathnewfile);
}
//now attempt the renaming.
ret = rename(full_path, tmp_pathnewfile);
if (ret == 0) if (ret == 0)
{ RARCH_LOG("Succeeded in removing pre-existing libretro core: [%s].\n", tmp_pathnewfile);
RARCH_LOG("Libsnes core [%s] renamed to: [%s].\n", full_path, tmp_pathnewfile);
strlcpy(libretro_core_installed, tmp_pathnewfile, sizeof_libretro_core);
}
else else
{ RARCH_ERR("Failed to remove pre-existing libretro core: [%s].\n", tmp_pathnewfile);
RARCH_ERR("Failed to rename CORE executable.\n");
RARCH_WARN("CORE executable was not found, or some other errors occurred. Will attempt to load libretro core path from config file.\n");
}
} }
//now attempt the renaming.
ret = rename(full_path, tmp_pathnewfile);
if (ret == 0)
{
RARCH_LOG("Libsnes core [%s] renamed to: [%s].\n", full_path, tmp_pathnewfile);
strlcpy(libretro_core_installed, tmp_pathnewfile, sizeof_libretro_core);
ret = 1;
}
else
{
RARCH_ERR("Failed to rename CORE executable.\n");
RARCH_WARN("CORE executable was not found, or some other errors occurred. Will attempt to load libretro core path from config file.\n");
ret = 0;
}
return ret;
} }
bool rarch_configure_libretro_core(const char *full_path, const char *tmp_path, bool rarch_configure_libretro_core(const char *full_path, const char *tmp_path,
const char *libretro_path, const char *config_path, const char *extension) const char *libretro_path, const char *config_path, const char *extension)
{ {
bool libretro_core_was_installed = false;
bool find_libretro_file = false;
char libretro_core_installed[1024]; char libretro_core_installed[1024];
g_extern.verbose = true; g_extern.verbose = true;
rarch_manage_libretro_install(libretro_core_installed, sizeof(libretro_core_installed), full_path, tmp_path, extension); //install and rename libretro core first if 'CORE' executable exists
if (path_file_exists(full_path))
libretro_core_was_installed = rarch_manage_libretro_install(
libretro_core_installed, sizeof(libretro_core_installed), full_path, tmp_path, extension);
g_extern.verbose = false; g_extern.verbose = false;
bool find_libretro_file = false; //if we have just installed a libretro core, set libretro path in settings to newly installed libretro core
if(libretro_core_installed != NULL) if(libretro_core_was_installed)
strlcpy(g_settings.libretro, libretro_core_installed, sizeof(g_settings.libretro)); strlcpy(g_settings.libretro, libretro_core_installed, sizeof(g_settings.libretro));
else else
find_libretro_file = true; find_libretro_file = true;

View File

@ -818,7 +818,7 @@ void rarch_config_load(const char * conf_name, const char * libretro_dir_path, c
{ {
CONFIG_GET_STRING(libretro, "libretro_path"); CONFIG_GET_STRING(libretro, "libretro_path");
if(!strcmp(g_settings.libretro, "")) if(strcmp(g_settings.libretro, "") == 0)
{ {
char first_file[PATH_MAX]; char first_file[PATH_MAX];
rarch_manage_libretro_set_first_file(first_file, sizeof(first_file), libretro_dir_path, exe_ext); rarch_manage_libretro_set_first_file(first_file, sizeof(first_file), libretro_dir_path, exe_ext);

View File

@ -48,34 +48,42 @@
menu menuStack[10]; menu menuStack[10];
int menuStackindex = 0; int menuStackindex = 0;
static bool set_initial_dir_tmpbrowser;
static bool set_libretro_core_as_launch; static bool set_libretro_core_as_launch;
filebrowser_t browser; /* main file browser->for rom browser*/ filebrowser_t browser;
filebrowser_t tmpBrowser; /* tmp file browser->for everything else*/ filebrowser_t tmpBrowser;
unsigned set_shader = 0; unsigned set_shader = 0;
static unsigned currently_selected_controller_menu = 0; static unsigned currently_selected_controller_menu = 0;
static char strw_buffer[PATH_MAX]; static char strw_buffer[PATH_MAX];
static void set_setting_label(menu * menu_obj, uint64_t currentsetting) static void set_setting_label_write_on_or_off(bool cond, unsigned currentsetting)
{
if(cond)
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
else
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
}
static void set_setting_label_color(bool cond, unsigned currentsetting)
{
if(cond)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
}
static void set_setting_label(menu * menu_obj, unsigned currentsetting)
{ {
switch(currentsetting) switch(currentsetting)
{ {
case SETTING_CHANGE_RESOLUTION: case SETTING_CHANGE_RESOLUTION:
if(g_console.initial_resolution_id == g_console.supported_resolutions[g_console.current_resolution_index]) set_setting_label_color(g_console.initial_resolution_id == g_console.supported_resolutions[g_console.current_resolution_index], currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), ps3_get_resolution_label(g_console.supported_resolutions[g_console.current_resolution_index])); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), ps3_get_resolution_label(g_console.supported_resolutions[g_console.current_resolution_index]));
break; break;
case SETTING_SHADER_PRESETS: case SETTING_SHADER_PRESETS:
{ {
char fname[PATH_MAX]; char fname[PATH_MAX];
if(g_console.cgp_path == DEFAULT_PRESET_FILE) set_setting_label_color(g_console.cgp_path == DEFAULT_PRESET_FILE, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
fill_pathname_base(fname, g_console.cgp_path, sizeof(fname)); fill_pathname_base(fname, g_console.cgp_path, sizeof(fname));
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), fname); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), fname);
} }
@ -85,11 +93,8 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
char fname[PATH_MAX]; char fname[PATH_MAX];
fill_pathname_base(fname, g_settings.video.cg_shader_path, sizeof(fname)); fill_pathname_base(fname, g_settings.video.cg_shader_path, sizeof(fname));
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%s", fname); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%s", fname);
set_setting_label_color(strcmp(g_settings.video.cg_shader_path,DEFAULT_SHADER_FILE) == 0,
if(strcmp(g_settings.video.cg_shader_path,DEFAULT_SHADER_FILE) == 0) currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
} }
break; break;
case SETTING_SHADER_2: case SETTING_SHADER_2:
@ -97,124 +102,58 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
char fname[PATH_MAX]; char fname[PATH_MAX];
fill_pathname_base(fname, g_settings.video.second_pass_shader, sizeof(fname)); fill_pathname_base(fname, g_settings.video.second_pass_shader, sizeof(fname));
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%s", fname); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%s", fname);
set_setting_label_color(strcmp(g_settings.video.second_pass_shader,DEFAULT_SHADER_FILE) == 0,
if(strcmp(g_settings.video.second_pass_shader,DEFAULT_SHADER_FILE) == 0) currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
} }
break; break;
case SETTING_FONT_SIZE: case SETTING_FONT_SIZE:
if(g_console.menu_font_size == 1.0f) set_setting_label_color(g_console.menu_font_size == 1.0f, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%f", g_console.menu_font_size); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%f", g_console.menu_font_size);
break; break;
case SETTING_KEEP_ASPECT_RATIO: case SETTING_KEEP_ASPECT_RATIO:
if(g_console.aspect_ratio_index == ASPECT_RATIO_4_3) set_setting_label_color(g_console.aspect_ratio_index == ASPECT_RATIO_4_3, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), aspectratio_lut[g_console.aspect_ratio_index].name); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), aspectratio_lut[g_console.aspect_ratio_index].name);
break; break;
case SETTING_HW_TEXTURE_FILTER: case SETTING_HW_TEXTURE_FILTER:
set_setting_label_color(g_settings.video.smooth, currentsetting);
if(g_settings.video.smooth) if(g_settings.video.smooth)
{ snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Linear interpolation");
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Linear interpolation");
items_generalsettings[currentsetting].text_color = GREEN;
}
else else
{ snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Point filtering");
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Point filtering");
items_generalsettings[currentsetting].text_color = ORANGE;
}
break; break;
case SETTING_HW_TEXTURE_FILTER_2: case SETTING_HW_TEXTURE_FILTER_2:
set_setting_label_color(g_settings.video.second_pass_smooth, currentsetting);
if(g_settings.video.second_pass_smooth) if(g_settings.video.second_pass_smooth)
{ snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Linear interpolation");
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Linear interpolation");
items_generalsettings[currentsetting].text_color = GREEN;
}
else else
{ snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Point filtering");
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Point filtering");
items_generalsettings[currentsetting].text_color = ORANGE;
}
break; break;
case SETTING_SCALE_ENABLED: case SETTING_SCALE_ENABLED:
if(g_console.fbo_enabled) set_setting_label_write_on_or_off(g_console.fbo_enabled, currentsetting);
{ set_setting_label_color(g_console.fbo_enabled, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
items_generalsettings[currentsetting].text_color = GREEN;
}
else
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
items_generalsettings[currentsetting].text_color = ORANGE;
}
break; break;
case SETTING_SCALE_FACTOR: case SETTING_SCALE_FACTOR:
if(g_settings.video.fbo_scale_x == 2.0f) set_setting_label_color(g_settings.video.fbo_scale_x == 2.0f, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%fx (X) / %fx (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%fx (X) / %fx (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y);
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Custom Scaling Factor] is set to: '%fx (X) / %fx (Y)'.", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Custom Scaling Factor] is set to: '%fx (X) / %fx (Y)'.", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y);
break; break;
case SETTING_HW_OVERSCAN_AMOUNT: case SETTING_HW_OVERSCAN_AMOUNT:
if(g_console.overscan_amount == 0.0f) set_setting_label_color(g_console.overscan_amount == 0.0f, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%f", g_console.overscan_amount); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%f", g_console.overscan_amount);
break; break;
case SETTING_THROTTLE_MODE: case SETTING_THROTTLE_MODE:
if(g_console.throttle_enable) set_setting_label_write_on_or_off(g_console.throttle_enable, currentsetting);
{ set_setting_label_color(g_console.throttle_enable, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
items_generalsettings[currentsetting].text_color = GREEN;
}
else
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
items_generalsettings[currentsetting].text_color = ORANGE;
}
break; break;
case SETTING_TRIPLE_BUFFERING: case SETTING_TRIPLE_BUFFERING:
if(g_console.triple_buffering_enable) set_setting_label_write_on_or_off(g_console.triple_buffering_enable, currentsetting);
{ set_setting_label_color(g_console.triple_buffering_enable, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
items_generalsettings[currentsetting].text_color = GREEN;
}
else
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
items_generalsettings[currentsetting].text_color = ORANGE;
}
break; break;
case SETTING_ENABLE_SCREENSHOTS: case SETTING_ENABLE_SCREENSHOTS:
if(g_console.screenshots_enable) set_setting_label_write_on_or_off(g_console.screenshots_enable, currentsetting);
{ set_setting_label_color(g_console.screenshots_enable, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
items_generalsettings[currentsetting].text_color = GREEN;
}
else
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
items_generalsettings[currentsetting].text_color = ORANGE;
}
break;
case SETTING_SAVE_SHADER_PRESET:
if(menu_obj->selected == currentsetting)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
break; break;
case SETTING_APPLY_SHADER_PRESET_ON_STARTUP: case SETTING_APPLY_SHADER_PRESET_ON_STARTUP:
break;
case SETTING_DEFAULT_VIDEO_ALL: case SETTING_DEFAULT_VIDEO_ALL:
break; break;
case SETTING_SOUND_MODE: case SETTING_SOUND_MODE:
@ -238,52 +177,29 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
} }
break; break;
case SETTING_RSOUND_SERVER_IP_ADDRESS: case SETTING_RSOUND_SERVER_IP_ADDRESS:
if(strcmp(g_settings.audio.device,"0.0.0.0") == 0) set_setting_label_color(strcmp(g_settings.audio.device,"0.0.0.0") == 0, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_settings.audio.device); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_settings.audio.device);
break; break;
case SETTING_DEFAULT_AUDIO_ALL: case SETTING_DEFAULT_AUDIO_ALL:
break; break;
case SETTING_EMU_CURRENT_SAVE_STATE_SLOT: case SETTING_EMU_CURRENT_SAVE_STATE_SLOT:
if(g_extern.state_slot == 0) set_setting_label_color(g_extern.state_slot == 0, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%d", g_extern.state_slot); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%d", g_extern.state_slot);
break; break;
/* emu-specific */ /* emu-specific */
case SETTING_EMU_SHOW_INFO_MSG: case SETTING_EMU_SHOW_INFO_MSG:
if(g_console.info_msg_enable) set_setting_label_write_on_or_off(g_console.info_msg_enable, currentsetting);
{ set_setting_label_color(g_console.info_msg_enable, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
items_generalsettings[currentsetting].text_color = GREEN;
}
else
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
items_generalsettings[currentsetting].text_color = ORANGE;
}
break;
case SETTING_EMU_DEFAULT_ALL:
if(menu_obj->selected == currentsetting)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
break; break;
case SETTING_EMU_REWIND_ENABLED: case SETTING_EMU_REWIND_ENABLED:
set_setting_label_write_on_or_off(g_settings.rewind_enable, currentsetting);
if(g_settings.rewind_enable) if(g_settings.rewind_enable)
{ {
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
items_generalsettings[currentsetting].text_color = ORANGE; items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Rewind] feature is set to 'ON'. You can rewind the game in real-time."); snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Rewind] feature is set to 'ON'. You can rewind the game in real-time.");
} }
else else
{ {
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
items_generalsettings[currentsetting].text_color = GREEN; items_generalsettings[currentsetting].text_color = GREEN;
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Rewind] feature is set to 'OFF'."); snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Rewind] feature is set to 'OFF'.");
} }
@ -298,121 +214,48 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
} }
break; break;
case SETTING_EMU_AUDIO_MUTE: case SETTING_EMU_AUDIO_MUTE:
set_setting_label_write_on_or_off(g_extern.audio_data.mute, currentsetting);
set_setting_label_color(!g_extern.audio_data.mute, currentsetting);
if(g_extern.audio_data.mute) if(g_extern.audio_data.mute)
{ snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Audio Mute] feature is set to 'ON'. The game audio will be muted.");
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Audio Mute] feature is set to 'ON'. The game audio will be muted.");
}
else else
{ snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Audio Mute] feature is set to 'OFF'.");
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
items_generalsettings[currentsetting].text_color = GREEN;
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Audio Mute] feature is set to 'OFF'.");
}
break; break;
case SETTING_ENABLE_CUSTOM_BGM: case SETTING_ENABLE_CUSTOM_BGM:
if(g_console.custom_bgm_enable) set_setting_label_write_on_or_off(g_console.custom_bgm_enable, currentsetting);
{ set_setting_label_color(g_console.custom_bgm_enable, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
items_generalsettings[currentsetting].text_color = GREEN;
}
else
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
items_generalsettings[currentsetting].text_color = ORANGE;
}
break;
case SETTING_EMU_VIDEO_DEFAULT_ALL:
if(menu_obj->selected == currentsetting)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
break;
case SETTING_EMU_AUDIO_DEFAULT_ALL:
if(menu_obj->selected == currentsetting)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
break; break;
case SETTING_PATH_DEFAULT_ROM_DIRECTORY: case SETTING_PATH_DEFAULT_ROM_DIRECTORY:
if(!(strcmp(g_console.default_rom_startup_dir, "/"))) set_setting_label_color(!(strcmp(g_console.default_rom_startup_dir, "/")), currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_rom_startup_dir); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_rom_startup_dir);
break; break;
case SETTING_PATH_SAVESTATES_DIRECTORY: case SETTING_PATH_SAVESTATES_DIRECTORY:
if(!(strcmp(g_console.default_savestate_dir, usrDirPath))) set_setting_label_color(!(strcmp(g_console.default_savestate_dir, usrDirPath)), currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_savestate_dir); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_savestate_dir);
break; break;
case SETTING_PATH_SRAM_DIRECTORY: case SETTING_PATH_SRAM_DIRECTORY:
if(!(strcmp(g_console.default_sram_dir, usrDirPath))) set_setting_label_color(!(strcmp(g_console.default_sram_dir, usrDirPath)), currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_sram_dir); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_sram_dir);
break; break;
case SETTING_PATH_CHEATS: case SETTING_PATH_CHEATS:
if(!(strcmp(g_settings.cheat_database, usrDirPath))) set_setting_label_color(!(strcmp(g_settings.cheat_database, usrDirPath)), currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_settings.cheat_database); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_settings.cheat_database);
break; break;
case SETTING_ENABLE_SRAM_PATH: case SETTING_ENABLE_SRAM_PATH:
if(g_console.default_sram_dir_enable) set_setting_label_write_on_or_off(g_console.default_sram_dir_enable, currentsetting);
{ set_setting_label_color(!g_console.default_sram_dir_enable, currentsetting);
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
}
else
{
items_generalsettings[currentsetting].text_color = GREEN;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
}
break; break;
case SETTING_ENABLE_STATE_PATH: case SETTING_ENABLE_STATE_PATH:
if(g_console.default_savestate_dir_enable) set_setting_label_write_on_or_off(g_console.default_savestate_dir_enable, currentsetting);
{ set_setting_label_color(!g_console.default_savestate_dir_enable, currentsetting);
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "ON");
}
else
{
items_generalsettings[currentsetting].text_color = GREEN;
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "OFF");
}
break;
case SETTING_PATH_DEFAULT_ALL:
if(menu_obj->selected == currentsetting)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
break; break;
case SETTING_CONTROLS_SCHEME: case SETTING_CONTROLS_SCHEME:
if(strcmp(g_console.input_cfg_path,"") == 0) set_setting_label_color(strcmp(g_console.input_cfg_path,"") == 0, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - Input scheme preset [%s] is selected.", g_console.input_cfg_path); snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - Input scheme preset [%s] is selected.", g_console.input_cfg_path);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.input_cfg_path); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.input_cfg_path);
break; break;
case SETTING_CONTROLS_NUMBER: case SETTING_CONTROLS_NUMBER:
if(currently_selected_controller_menu == 0) set_setting_label_color(currently_selected_controller_menu == 0, currentsetting);
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "Controller %d is currently selected.", currently_selected_controller_menu+1); snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "Controller %d is currently selected.", currently_selected_controller_menu+1);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%d", currently_selected_controller_menu+1); snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%d", currently_selected_controller_menu+1);
break; break;
@ -433,28 +276,22 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L3: case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L3:
case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R3: case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R3:
{ {
if(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey == rarch_default_keybind_lut[currentsetting-FIRST_CONTROL_BIND]) set_setting_label_color(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey == rarch_default_keybind_lut[currentsetting-FIRST_CONTROL_BIND], currentsetting);
items_generalsettings[currentsetting].text_color = GREEN; const char * value = rarch_input_find_platform_key_label(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey);
else unsigned id = currentsetting - FIRST_CONTROL_BIND;
items_generalsettings[currentsetting].text_color = ORANGE; snprintf(items_generalsettings[currentsetting].text, sizeof(items_generalsettings[currentsetting].text), rarch_input_get_default_keybind_name(id));
const char * value = rarch_input_find_platform_key_label(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey); snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [%s] on the PS3 controller is mapped to action:\n[%s].", items_generalsettings[currentsetting].text, value);
unsigned id = currentsetting - FIRST_CONTROL_BIND; snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), value);
snprintf(items_generalsettings[currentsetting].text, sizeof(items_generalsettings[currentsetting].text), rarch_input_get_default_keybind_name(id));
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [%s] on the PS3 controller is mapped to action:\n[%s].", items_generalsettings[currentsetting].text, value);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), value);
} }
break; break;
case SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS: case SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS:
if(menu_obj->selected == currentsetting)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
break;
case SETTING_CONTROLS_DEFAULT_ALL: case SETTING_CONTROLS_DEFAULT_ALL:
if(menu_obj->selected == currentsetting) case SETTING_EMU_VIDEO_DEFAULT_ALL:
items_generalsettings[currentsetting].text_color = GREEN; case SETTING_EMU_AUDIO_DEFAULT_ALL:
else case SETTING_PATH_DEFAULT_ALL:
items_generalsettings[currentsetting].text_color = ORANGE; case SETTING_EMU_DEFAULT_ALL:
case SETTING_SAVE_SHADER_PRESET:
set_setting_label_color(menu_obj->selected == currentsetting, currentsetting);
break; break;
default: default:
break; break;
@ -513,12 +350,73 @@ static void menu_stack_push(unsigned stack_idx, unsigned menu_id)
menuStack[stack_idx].category_id = CATEGORY_INGAME_MENU; menuStack[stack_idx].category_id = CATEGORY_INGAME_MENU;
break; break;
case FILE_BROWSER_MENU: case FILE_BROWSER_MENU:
strlcpy(menuStack[stack_idx].title, "FILE BROWSER |", sizeof(menuStack[stack_idx].title));
menuStack[stack_idx].enum_id = menu_id;
menuStack[stack_idx].selected = 0;
menuStack[stack_idx].page = 0;
menuStack[stack_idx].category_id = CATEGORY_FILEBROWSER;
menu_stack_refresh(stack_idx);
strlcpy(browser.extensions, rarch_console_get_rom_ext(), sizeof(browser.extensions));
filebrowser_set_root(&browser, "/");
filebrowser_iterate(&browser, FILEBROWSER_ACTION_RESET);
break;
case LIBRETRO_CHOICE: case LIBRETRO_CHOICE:
strlcpy(menuStack[stack_idx].title, "FILE BROWSER |", sizeof(menuStack[stack_idx].title));
menuStack[stack_idx].enum_id = menu_id;
menuStack[stack_idx].selected = 0;
menuStack[stack_idx].page = 0;
menuStack[stack_idx].category_id = CATEGORY_FILEBROWSER;
menu_stack_refresh(stack_idx);
strlcpy(tmpBrowser.extensions, "self|SELF|bin|BIN", sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, LIBRETRO_DIR_PATH);
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
break;
case PRESET_CHOICE:
strlcpy(menuStack[stack_idx].title, "FILE BROWSER |", sizeof(menuStack[stack_idx].title));
menuStack[stack_idx].enum_id = menu_id;
menuStack[stack_idx].selected = 0;
menuStack[stack_idx].page = 0;
menuStack[stack_idx].category_id = CATEGORY_FILEBROWSER;
menu_stack_refresh(stack_idx);
strlcpy(tmpBrowser.extensions, "cgp|CGP", sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, PRESETS_DIR_PATH);
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
break;
case INPUT_PRESET_CHOICE:
strlcpy(menuStack[stack_idx].title, "FILE BROWSER |", sizeof(menuStack[stack_idx].title));
menuStack[stack_idx].enum_id = menu_id;
menuStack[stack_idx].selected = 0;
menuStack[stack_idx].page = 0;
menuStack[stack_idx].category_id = CATEGORY_FILEBROWSER;
menu_stack_refresh(stack_idx);
strlcpy(tmpBrowser.extensions, "cfg|CFG", sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, INPUT_PRESETS_DIR_PATH);
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
break;
case SHADER_CHOICE:
strlcpy(menuStack[stack_idx].title, "FILE BROWSER |", sizeof(menuStack[stack_idx].title));
menuStack[stack_idx].enum_id = menu_id;
menuStack[stack_idx].selected = 0;
menuStack[stack_idx].page = 0;
menuStack[stack_idx].category_id = CATEGORY_FILEBROWSER;
menu_stack_refresh(stack_idx);
strlcpy(tmpBrowser.extensions, "cg|CG", sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, SHADERS_DIR_PATH);
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
break;
case BORDER_CHOICE:
strlcpy(menuStack[stack_idx].title, "FILE BROWSER |", sizeof(menuStack[stack_idx].title));
menuStack[stack_idx].enum_id = menu_id;
menuStack[stack_idx].selected = 0;
menuStack[stack_idx].page = 0;
menuStack[stack_idx].category_id = CATEGORY_FILEBROWSER;
menu_stack_refresh(stack_idx);
strlcpy(tmpBrowser.extensions, "png|PNG|jpg|JPG|JPEG|jpeg", sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, BORDERS_DIR_PATH);
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
break;
case PATH_DEFAULT_ROM_DIR_CHOICE: case PATH_DEFAULT_ROM_DIR_CHOICE:
case PATH_SAVESTATES_DIR_CHOICE: case PATH_SAVESTATES_DIR_CHOICE:
case PRESET_CHOICE:
case INPUT_PRESET_CHOICE:
case SHADER_CHOICE:
case PATH_SRAM_DIR_CHOICE: case PATH_SRAM_DIR_CHOICE:
case PATH_CHEATS_DIR_CHOICE: case PATH_CHEATS_DIR_CHOICE:
strlcpy(menuStack[stack_idx].title, "FILE BROWSER |", sizeof(menuStack[stack_idx].title)); strlcpy(menuStack[stack_idx].title, "FILE BROWSER |", sizeof(menuStack[stack_idx].title));
@ -527,6 +425,9 @@ static void menu_stack_push(unsigned stack_idx, unsigned menu_id)
menuStack[stack_idx].page = 0; menuStack[stack_idx].page = 0;
menuStack[stack_idx].category_id = CATEGORY_FILEBROWSER; menuStack[stack_idx].category_id = CATEGORY_FILEBROWSER;
menu_stack_refresh(stack_idx); menu_stack_refresh(stack_idx);
strlcpy(tmpBrowser.extensions, "empty", sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, "/");
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
break; break;
case GENERAL_VIDEO_MENU: case GENERAL_VIDEO_MENU:
strlcpy(menuStack[stack_idx].title, "VIDEO |", sizeof(menuStack[stack_idx].title)); strlcpy(menuStack[stack_idx].title, "VIDEO |", sizeof(menuStack[stack_idx].title));
@ -603,7 +504,6 @@ static void menu_stack_push(unsigned stack_idx, unsigned menu_id)
} }
} }
//forward decls //forward decls
extern const char *ps3_get_resolution_label(unsigned resolution); extern const char *ps3_get_resolution_label(unsigned resolution);
@ -720,20 +620,18 @@ static void apply_scaling (unsigned init_mode)
static void select_file(void) static void select_file(void)
{ {
unsigned menu_id = menuStack[menuStackindex].enum_id; unsigned menu_id = menuStack[menuStackindex].enum_id;
char extensions[256], title[256], object[256], comment[256], dir_path[PATH_MAX], path[PATH_MAX]; char extensions[256], title[256], object[256], comment[256], path[PATH_MAX];
gl_t * gl = driver.video_data; gl_t * gl = driver.video_data;
switch(menu_id) switch(menu_id)
{ {
case SHADER_CHOICE: case SHADER_CHOICE:
strlcpy(dir_path, SHADERS_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "cg|CG", sizeof(extensions)); strlcpy(extensions, "cg|CG", sizeof(extensions));
strlcpy(title, "SHADER SELECTION", sizeof(title)); strlcpy(title, "SHADER SELECTION", sizeof(title));
strlcpy(object, "Shader", sizeof(object)); strlcpy(object, "Shader", sizeof(object));
strlcpy(comment, "INFO - Select a shader from the menu by pressing the X button.", sizeof(comment)); strlcpy(comment, "INFO - Select a shader from the menu by pressing the X button.", sizeof(comment));
break; break;
case PRESET_CHOICE: case PRESET_CHOICE:
strlcpy(dir_path, PRESETS_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "cgp|CGP", sizeof(extensions)); strlcpy(extensions, "cgp|CGP", sizeof(extensions));
strlcpy(title, "SHADER PRESETS SELECTION", sizeof(title)); strlcpy(title, "SHADER PRESETS SELECTION", sizeof(title));
strlcpy(object, "Shader", sizeof(object)); strlcpy(object, "Shader", sizeof(object));
@ -741,7 +639,6 @@ static void select_file(void)
strlcpy(comment, "INFO - Select a shader preset from the menu by pressing the X button.", sizeof(comment)); strlcpy(comment, "INFO - Select a shader preset from the menu by pressing the X button.", sizeof(comment));
break; break;
case INPUT_PRESET_CHOICE: case INPUT_PRESET_CHOICE:
strlcpy(dir_path, INPUT_PRESETS_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "cfg|CFG", sizeof(extensions)); strlcpy(extensions, "cfg|CFG", sizeof(extensions));
strlcpy(title, "INPUT PRESETS SELECTION", sizeof(title)); strlcpy(title, "INPUT PRESETS SELECTION", sizeof(title));
strlcpy(object, "Input", sizeof(object)); strlcpy(object, "Input", sizeof(object));
@ -749,7 +646,6 @@ static void select_file(void)
strlcpy(comment, "INFO - Select an input preset from the menu by pressing the X button.", sizeof(comment)); strlcpy(comment, "INFO - Select an input preset from the menu by pressing the X button.", sizeof(comment));
break; break;
case BORDER_CHOICE: case BORDER_CHOICE:
strlcpy(dir_path, BORDERS_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "png|PNG|jpg|JPG|JPEG|jpeg", sizeof(extensions)); strlcpy(extensions, "png|PNG|jpg|JPG|JPEG|jpeg", sizeof(extensions));
strlcpy(title, "BORDER SELECTION", sizeof(title)); strlcpy(title, "BORDER SELECTION", sizeof(title));
strlcpy(object, "Border", sizeof(object)); strlcpy(object, "Border", sizeof(object));
@ -757,7 +653,6 @@ static void select_file(void)
strlcpy(comment, "INFO - Select a border image file from the menu by pressing the X button.", sizeof(comment)); strlcpy(comment, "INFO - Select a border image file from the menu by pressing the X button.", sizeof(comment));
break; break;
case LIBRETRO_CHOICE: case LIBRETRO_CHOICE:
strlcpy(dir_path, LIBRETRO_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "self|SELF|bin|BIN", sizeof(extensions)); strlcpy(extensions, "self|SELF|bin|BIN", sizeof(extensions));
strlcpy(title, "LIBRETRO CORE SELECTION", sizeof(title)); strlcpy(title, "LIBRETRO CORE SELECTION", sizeof(title));
strlcpy(object, "Libretro", sizeof(object)); strlcpy(object, "Libretro", sizeof(object));
@ -766,14 +661,6 @@ static void select_file(void)
break; break;
} }
if(set_initial_dir_tmpbrowser)
{
strlcpy(tmpBrowser.extensions, extensions, sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, dir_path);
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
set_initial_dir_tmpbrowser = false;
}
browser_update(&tmpBrowser, extensions); browser_update(&tmpBrowser, extensions);
if (CTRL_CROSS(trigger_state)) if (CTRL_CROSS(trigger_state))
@ -850,14 +737,6 @@ static void select_directory(void)
char path[1024]; char path[1024];
gl_t * gl = driver.video_data; gl_t * gl = driver.video_data;
if(set_initial_dir_tmpbrowser)
{
strlcpy(tmpBrowser.extensions, "empty", sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, "/");
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
set_initial_dir_tmpbrowser = false;
}
{ {
browser_update(&tmpBrowser, "empty"); browser_update(&tmpBrowser, "empty");
@ -1026,7 +905,7 @@ static void rarch_filename_input_and_save (unsigned filename_type)
} }
} }
static void producesettingentry(menu * menu_obj, uint64_t switchvalue) static void producesettingentry(menu * menu_obj, unsigned switchvalue)
{ {
switch(switchvalue) switch(switchvalue)
{ {
@ -1076,7 +955,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{ {
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, PRESET_CHOICE); menu_stack_push(menuStackindex, PRESET_CHOICE);
set_initial_dir_tmpbrowser = true;
} }
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
@ -1090,7 +968,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, SHADER_CHOICE); menu_stack_push(menuStackindex, SHADER_CHOICE);
set_shader = 0; set_shader = 0;
set_initial_dir_tmpbrowser = true;
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
{ {
@ -1105,7 +982,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, SHADER_CHOICE); menu_stack_push(menuStackindex, SHADER_CHOICE);
set_shader = 1; set_shader = 1;
set_initial_dir_tmpbrowser = true;
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
{ {
@ -1118,19 +994,15 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state) || CTRL_CROSS(trigger_state)) if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state) || CTRL_CROSS(trigger_state))
{ {
if(g_console.menu_font_size > 0) if(g_console.menu_font_size > 0)
{ g_console.menu_font_size -= 0.01f;
g_console.menu_font_size -= 0.01f;
}
} }
if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state) || CTRL_CROSS(trigger_state)) if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state) || CTRL_CROSS(trigger_state))
{ {
if((g_console.menu_font_size < 2.0f)) if((g_console.menu_font_size < 2.0f))
{ g_console.menu_font_size += 0.01f;
g_console.menu_font_size += 0.01f;
}
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
g_console.menu_font_size = 1.0f; g_console.menu_font_size = 1.0f;
break; break;
case SETTING_KEEP_ASPECT_RATIO: case SETTING_KEEP_ASPECT_RATIO:
if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state)) if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state))
@ -1387,7 +1259,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{ {
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, LIBRETRO_CHOICE); menu_stack_push(menuStackindex, LIBRETRO_CHOICE);
set_initial_dir_tmpbrowser = true;
set_libretro_core_as_launch = false; set_libretro_core_as_launch = false;
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
@ -1430,7 +1301,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{ {
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, PATH_DEFAULT_ROM_DIR_CHOICE); menu_stack_push(menuStackindex, PATH_DEFAULT_ROM_DIR_CHOICE);
set_initial_dir_tmpbrowser = true;
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
@ -1441,7 +1311,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{ {
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, PATH_SAVESTATES_DIR_CHOICE); menu_stack_push(menuStackindex, PATH_SAVESTATES_DIR_CHOICE);
set_initial_dir_tmpbrowser = true;
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
@ -1453,7 +1322,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{ {
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, PATH_SRAM_DIR_CHOICE); menu_stack_push(menuStackindex, PATH_SRAM_DIR_CHOICE);
set_initial_dir_tmpbrowser = true;
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
@ -1464,7 +1332,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{ {
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, PATH_CHEATS_DIR_CHOICE); menu_stack_push(menuStackindex, PATH_CHEATS_DIR_CHOICE);
set_initial_dir_tmpbrowser = true;
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
@ -1510,7 +1377,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{ {
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, INPUT_PRESET_CHOICE); menu_stack_push(menuStackindex, INPUT_PRESET_CHOICE);
set_initial_dir_tmpbrowser = true;
} }
if(CTRL_START(trigger_state)) if(CTRL_START(trigger_state))
menu_stack_refresh(menuStackindex); menu_stack_refresh(menuStackindex);
@ -1907,6 +1773,7 @@ static void ingame_menu(void)
char comment[256]; char comment[256];
static unsigned menuitem_colors[MENU_ITEM_LAST]; static unsigned menuitem_colors[MENU_ITEM_LAST];
gl_t * gl = driver.video_data; gl_t * gl = driver.video_data;
menu *menu_obj = &menuStack[menuStackindex];
float x_position = 0.3f; float x_position = 0.3f;
float font_size = 1.1f; float font_size = 1.1f;
@ -1934,7 +1801,7 @@ static void ingame_menu(void)
if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state)) if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state))
rarch_state_slot_increase(); rarch_state_slot_increase();
strlcpy(comment, "Press LEFT or RIGHT to change the current save state slot.\nPress CROSS to load the trigger_state from the currently selected save state slot.", sizeof(comment)); strlcpy(comment, "Press LEFT or RIGHT to change the current save state slot.\nPress CROSS to load the state from the currently selected save state slot.", sizeof(comment));
break; break;
case MENU_ITEM_SAVE_STATE: case MENU_ITEM_SAVE_STATE:
if(CTRL_CROSS(trigger_state)) if(CTRL_CROSS(trigger_state))
@ -1947,42 +1814,14 @@ static void ingame_menu(void)
if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state)) if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state))
rarch_state_slot_increase(); rarch_state_slot_increase();
strlcpy(comment, "Press LEFT or RIGHT to change the current save state slot.\nPress CROSS to save the trigger_state to the currently selected save state slot.", sizeof(comment)); strlcpy(comment, "Press LEFT or RIGHT to change the current save state slot.\nPress CROSS to save the state to the currently selected save state slot.", sizeof(comment));
break; break;
case MENU_ITEM_KEEP_ASPECT_RATIO: case MENU_ITEM_KEEP_ASPECT_RATIO:
if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state)) producesettingentry(menu_obj, SETTING_KEEP_ASPECT_RATIO);
{
rarch_settings_change(S_ASPECT_RATIO_DECREMENT);
gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index);
}
if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state))
{
rarch_settings_change(S_ASPECT_RATIO_INCREMENT);
gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index);
}
if(CTRL_START(trigger_state))
{
rarch_settings_default(S_DEF_ASPECT_RATIO);
gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index);
}
strlcpy(comment, "Press LEFT or RIGHT to change the [Aspect Ratio].\nPress START to reset back to default values.", sizeof(comment)); strlcpy(comment, "Press LEFT or RIGHT to change the [Aspect Ratio].\nPress START to reset back to default values.", sizeof(comment));
break; break;
case MENU_ITEM_OVERSCAN_AMOUNT: case MENU_ITEM_OVERSCAN_AMOUNT:
if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state) || CTRL_CROSS(trigger_state) || CTRL_LSTICK_LEFT(trigger_state)) producesettingentry(menu_obj, SETTING_HW_OVERSCAN_AMOUNT);
{
rarch_settings_change(S_OVERSCAN_DECREMENT);
gfx_ctx_set_overscan();
}
if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state) || CTRL_CROSS(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state))
{
rarch_settings_change(S_OVERSCAN_INCREMENT);
gfx_ctx_set_overscan();
}
if(CTRL_START(trigger_state))
{
rarch_settings_default(S_DEF_OVERSCAN);
gfx_ctx_set_overscan();
}
strlcpy(comment, "Press LEFT or RIGHT to change the [Overscan] settings.\nPress START to reset back to default values.", sizeof(comment)); strlcpy(comment, "Press LEFT or RIGHT to change the [Overscan] settings.\nPress START to reset back to default values.", sizeof(comment));
break; break;
case MENU_ITEM_ORIENTATION: case MENU_ITEM_ORIENTATION:
@ -2006,33 +1845,7 @@ static void ingame_menu(void)
strlcpy(comment, "Press LEFT or RIGHT to change the [Orientation] settings.\nPress START to reset back to default values.", sizeof(comment)); strlcpy(comment, "Press LEFT or RIGHT to change the [Orientation] settings.\nPress START to reset back to default values.", sizeof(comment));
break; break;
case MENU_ITEM_SCALE_FACTOR: case MENU_ITEM_SCALE_FACTOR:
if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state)) producesettingentry(menu_obj, SETTING_SCALE_FACTOR);
{
if(g_console.fbo_enabled)
{
if((g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR))
{
rarch_settings_change(S_SCALE_FACTOR_DECREMENT);
apply_scaling(FBO_REINIT);
}
}
}
if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state) || CTRL_CROSS(trigger_state))
{
if(g_console.fbo_enabled)
{
if((g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR))
{
rarch_settings_change(S_SCALE_FACTOR_INCREMENT);
apply_scaling(FBO_REINIT);
}
}
}
if(CTRL_START(trigger_state))
{
rarch_settings_default(S_DEF_SCALE_FACTOR);
apply_scaling(FBO_REINIT);
}
strlcpy(comment, "Press LEFT or RIGHT to change the [Scaling] settings.\nPress START to reset back to default values.", sizeof(comment)); strlcpy(comment, "Press LEFT or RIGHT to change the [Scaling] settings.\nPress START to reset back to default values.", sizeof(comment));
break; break;
case MENU_ITEM_FRAME_ADVANCE: case MENU_ITEM_FRAME_ADVANCE:
@ -2086,7 +1899,6 @@ static void ingame_menu(void)
menu_stack_increment(); menu_stack_increment();
menu_stack_push(menuStackindex, LIBRETRO_CHOICE); menu_stack_push(menuStackindex, LIBRETRO_CHOICE);
set_libretro_core_as_launch = true; set_libretro_core_as_launch = true;
set_initial_dir_tmpbrowser = true;
} }
strlcpy(comment, "Press 'CROSS' to choose a different emulator core.", sizeof(comment)); strlcpy(comment, "Press 'CROSS' to choose a different emulator core.", sizeof(comment));
break; break;
@ -2187,10 +1999,8 @@ static void ingame_menu(void)
void menu_init (void) void menu_init (void)
{ {
filebrowser_set_root(&browser, "/"); menu_stack_push(0, FILE_BROWSER_MENU);
filebrowser_set_root(&tmpBrowser, "/"); filebrowser_set_root(&tmpBrowser, "/");
strlcpy(browser.extensions, rarch_console_get_rom_ext(), sizeof(browser.extensions));
filebrowser_iterate(&browser, FILEBROWSER_ACTION_RESET);
} }
void menu_free (void) void menu_free (void)
@ -2215,17 +2025,11 @@ static bool check_shoulder_buttons(uint64_t state_tmp)
return false; return false;
} }
void menu_loop(void) void menu_loop(void)
{ {
gl_t * gl = driver.video_data; gl_t * gl = driver.video_data;
menu_stack_push(0, FILE_BROWSER_MENU);
g_console.menu_enable = true; g_console.menu_enable = true;
gl->block_swap = true; gl->block_swap = true;
if(g_console.ingame_menu_enable) if(g_console.ingame_menu_enable)