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"
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;
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
// a new libretro port and therefore we need to change it to a more
// sane name.
// if libretro core already exists, this means we are
// upgrading the libretro core - so delete pre-existing
// file first.
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(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);
RARCH_LOG("Upgrading emulator core...\n");
ret = remove(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);
}
RARCH_LOG("Succeeded in removing pre-existing libretro core: [%s].\n", tmp_pathnewfile);
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");
}
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)
{
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,
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];
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;
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));
else
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");
if(!strcmp(g_settings.libretro, ""))
if(strcmp(g_settings.libretro, "") == 0)
{
char first_file[PATH_MAX];
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];
int menuStackindex = 0;
static bool set_initial_dir_tmpbrowser;
static bool set_libretro_core_as_launch;
filebrowser_t browser; /* main file browser->for rom browser*/
filebrowser_t tmpBrowser; /* tmp file browser->for everything else*/
filebrowser_t browser;
filebrowser_t tmpBrowser;
unsigned set_shader = 0;
static unsigned currently_selected_controller_menu = 0;
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)
{
case SETTING_CHANGE_RESOLUTION:
if(g_console.initial_resolution_id == g_console.supported_resolutions[g_console.current_resolution_index])
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(g_console.initial_resolution_id == g_console.supported_resolutions[g_console.current_resolution_index], currentsetting);
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;
case SETTING_SHADER_PRESETS:
{
char fname[PATH_MAX];
if(g_console.cgp_path == DEFAULT_PRESET_FILE)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(g_console.cgp_path == DEFAULT_PRESET_FILE, currentsetting);
fill_pathname_base(fname, g_console.cgp_path, sizeof(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];
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);
if(strcmp(g_settings.video.cg_shader_path,DEFAULT_SHADER_FILE) == 0)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(strcmp(g_settings.video.cg_shader_path,DEFAULT_SHADER_FILE) == 0,
currentsetting);
}
break;
case SETTING_SHADER_2:
@ -97,124 +102,58 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
char fname[PATH_MAX];
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);
if(strcmp(g_settings.video.second_pass_shader,DEFAULT_SHADER_FILE) == 0)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(strcmp(g_settings.video.second_pass_shader,DEFAULT_SHADER_FILE) == 0,
currentsetting);
}
break;
case SETTING_FONT_SIZE:
if(g_console.menu_font_size == 1.0f)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(g_console.menu_font_size == 1.0f, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%f", g_console.menu_font_size);
break;
case SETTING_KEEP_ASPECT_RATIO:
if(g_console.aspect_ratio_index == ASPECT_RATIO_4_3)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(g_console.aspect_ratio_index == ASPECT_RATIO_4_3, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), aspectratio_lut[g_console.aspect_ratio_index].name);
break;
case SETTING_HW_TEXTURE_FILTER:
set_setting_label_color(g_settings.video.smooth, currentsetting);
if(g_settings.video.smooth)
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Linear interpolation");
items_generalsettings[currentsetting].text_color = GREEN;
}
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Linear interpolation");
else
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Point filtering");
items_generalsettings[currentsetting].text_color = ORANGE;
}
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Point filtering");
break;
case SETTING_HW_TEXTURE_FILTER_2:
set_setting_label_color(g_settings.video.second_pass_smooth, currentsetting);
if(g_settings.video.second_pass_smooth)
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Linear interpolation");
items_generalsettings[currentsetting].text_color = GREEN;
}
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Linear interpolation");
else
{
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Point filtering");
items_generalsettings[currentsetting].text_color = ORANGE;
}
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "Point filtering");
break;
case SETTING_SCALE_ENABLED:
if(g_console.fbo_enabled)
{
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;
}
set_setting_label_write_on_or_off(g_console.fbo_enabled, currentsetting);
set_setting_label_color(g_console.fbo_enabled, currentsetting);
break;
case SETTING_SCALE_FACTOR:
if(g_settings.video.fbo_scale_x == 2.0f)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(g_settings.video.fbo_scale_x == 2.0f, currentsetting);
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);
break;
case SETTING_HW_OVERSCAN_AMOUNT:
if(g_console.overscan_amount == 0.0f)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(g_console.overscan_amount == 0.0f, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%f", g_console.overscan_amount);
break;
case SETTING_THROTTLE_MODE:
if(g_console.throttle_enable)
{
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;
}
set_setting_label_write_on_or_off(g_console.throttle_enable, currentsetting);
set_setting_label_color(g_console.throttle_enable, currentsetting);
break;
case SETTING_TRIPLE_BUFFERING:
if(g_console.triple_buffering_enable)
{
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;
}
set_setting_label_write_on_or_off(g_console.triple_buffering_enable, currentsetting);
set_setting_label_color(g_console.triple_buffering_enable, currentsetting);
break;
case SETTING_ENABLE_SCREENSHOTS:
if(g_console.screenshots_enable)
{
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;
set_setting_label_write_on_or_off(g_console.screenshots_enable, currentsetting);
set_setting_label_color(g_console.screenshots_enable, currentsetting);
break;
case SETTING_APPLY_SHADER_PRESET_ON_STARTUP:
break;
case SETTING_DEFAULT_VIDEO_ALL:
break;
case SETTING_SOUND_MODE:
@ -238,52 +177,29 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
}
break;
case SETTING_RSOUND_SERVER_IP_ADDRESS:
if(strcmp(g_settings.audio.device,"0.0.0.0") == 0)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(strcmp(g_settings.audio.device,"0.0.0.0") == 0, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_settings.audio.device);
break;
case SETTING_DEFAULT_AUDIO_ALL:
break;
case SETTING_EMU_CURRENT_SAVE_STATE_SLOT:
if(g_extern.state_slot == 0)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(g_extern.state_slot == 0, currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), "%d", g_extern.state_slot);
break;
/* emu-specific */
case SETTING_EMU_SHOW_INFO_MSG:
if(g_console.info_msg_enable)
{
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;
set_setting_label_write_on_or_off(g_console.info_msg_enable, currentsetting);
set_setting_label_color(g_console.info_msg_enable, currentsetting);
break;
case SETTING_EMU_REWIND_ENABLED:
set_setting_label_write_on_or_off(g_settings.rewind_enable, currentsetting);
if(g_settings.rewind_enable)
{
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 - [Rewind] feature is set to 'ON'. You can rewind the game in real-time.");
}
else
{
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 - [Rewind] feature is set to 'OFF'.");
}
@ -298,121 +214,48 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
}
break;
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)
{
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.");
}
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
{
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'.");
}
snprintf(items_generalsettings[currentsetting].comment, sizeof(items_generalsettings[currentsetting].comment), "INFO - [Audio Mute] feature is set to 'OFF'.");
break;
case SETTING_ENABLE_CUSTOM_BGM:
if(g_console.custom_bgm_enable)
{
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;
set_setting_label_write_on_or_off(g_console.custom_bgm_enable, currentsetting);
set_setting_label_color(g_console.custom_bgm_enable, currentsetting);
break;
case SETTING_PATH_DEFAULT_ROM_DIRECTORY:
if(!(strcmp(g_console.default_rom_startup_dir, "/")))
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(!(strcmp(g_console.default_rom_startup_dir, "/")), currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_rom_startup_dir);
break;
case SETTING_PATH_SAVESTATES_DIRECTORY:
if(!(strcmp(g_console.default_savestate_dir, usrDirPath)))
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(!(strcmp(g_console.default_savestate_dir, usrDirPath)), currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_savestate_dir);
break;
case SETTING_PATH_SRAM_DIRECTORY:
if(!(strcmp(g_console.default_sram_dir, usrDirPath)))
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(!(strcmp(g_console.default_sram_dir, usrDirPath)), currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_console.default_sram_dir);
break;
case SETTING_PATH_CHEATS:
if(!(strcmp(g_settings.cheat_database, usrDirPath)))
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(!(strcmp(g_settings.cheat_database, usrDirPath)), currentsetting);
snprintf(items_generalsettings[currentsetting].setting_text, sizeof(items_generalsettings[currentsetting].setting_text), g_settings.cheat_database);
break;
case SETTING_ENABLE_SRAM_PATH:
if(g_console.default_sram_dir_enable)
{
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");
}
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);
break;
case SETTING_ENABLE_STATE_PATH:
if(g_console.default_savestate_dir_enable)
{
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;
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);
break;
case SETTING_CONTROLS_SCHEME:
if(strcmp(g_console.input_cfg_path,"") == 0)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(strcmp(g_console.input_cfg_path,"") == 0, currentsetting);
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);
break;
case SETTING_CONTROLS_NUMBER:
if(currently_selected_controller_menu == 0)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
set_setting_label_color(currently_selected_controller_menu == 0, currentsetting);
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);
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_R3:
{
if(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey == rarch_default_keybind_lut[currentsetting-FIRST_CONTROL_BIND])
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
const char * value = rarch_input_find_platform_key_label(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey);
unsigned id = currentsetting - FIRST_CONTROL_BIND;
snprintf(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);
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);
const char * value = rarch_input_find_platform_key_label(g_settings.input.binds[currently_selected_controller_menu][currentsetting-(FIRST_CONTROL_BIND)].joykey);
unsigned id = currentsetting - FIRST_CONTROL_BIND;
snprintf(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;
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:
if(menu_obj->selected == currentsetting)
items_generalsettings[currentsetting].text_color = GREEN;
else
items_generalsettings[currentsetting].text_color = ORANGE;
case SETTING_EMU_VIDEO_DEFAULT_ALL:
case SETTING_EMU_AUDIO_DEFAULT_ALL:
case SETTING_PATH_DEFAULT_ALL:
case SETTING_EMU_DEFAULT_ALL:
case SETTING_SAVE_SHADER_PRESET:
set_setting_label_color(menu_obj->selected == currentsetting, currentsetting);
break;
default:
break;
@ -513,12 +350,73 @@ static void menu_stack_push(unsigned stack_idx, unsigned menu_id)
menuStack[stack_idx].category_id = CATEGORY_INGAME_MENU;
break;
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:
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_SAVESTATES_DIR_CHOICE:
case PRESET_CHOICE:
case INPUT_PRESET_CHOICE:
case SHADER_CHOICE:
case PATH_SRAM_DIR_CHOICE:
case PATH_CHEATS_DIR_CHOICE:
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].category_id = CATEGORY_FILEBROWSER;
menu_stack_refresh(stack_idx);
strlcpy(tmpBrowser.extensions, "empty", sizeof(tmpBrowser.extensions));
filebrowser_set_root(&tmpBrowser, "/");
filebrowser_iterate(&tmpBrowser, FILEBROWSER_ACTION_RESET);
break;
case GENERAL_VIDEO_MENU:
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
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)
{
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;
switch(menu_id)
{
case SHADER_CHOICE:
strlcpy(dir_path, SHADERS_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "cg|CG", sizeof(extensions));
strlcpy(title, "SHADER SELECTION", sizeof(title));
strlcpy(object, "Shader", sizeof(object));
strlcpy(comment, "INFO - Select a shader from the menu by pressing the X button.", sizeof(comment));
break;
case PRESET_CHOICE:
strlcpy(dir_path, PRESETS_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "cgp|CGP", sizeof(extensions));
strlcpy(title, "SHADER PRESETS SELECTION", sizeof(title));
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));
break;
case INPUT_PRESET_CHOICE:
strlcpy(dir_path, INPUT_PRESETS_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "cfg|CFG", sizeof(extensions));
strlcpy(title, "INPUT PRESETS SELECTION", sizeof(title));
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));
break;
case BORDER_CHOICE:
strlcpy(dir_path, BORDERS_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "png|PNG|jpg|JPG|JPEG|jpeg", sizeof(extensions));
strlcpy(title, "BORDER SELECTION", sizeof(title));
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));
break;
case LIBRETRO_CHOICE:
strlcpy(dir_path, LIBRETRO_DIR_PATH, sizeof(dir_path));
strlcpy(extensions, "self|SELF|bin|BIN", sizeof(extensions));
strlcpy(title, "LIBRETRO CORE SELECTION", sizeof(title));
strlcpy(object, "Libretro", sizeof(object));
@ -766,14 +661,6 @@ static void select_file(void)
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);
if (CTRL_CROSS(trigger_state))
@ -850,14 +737,6 @@ static void select_directory(void)
char path[1024];
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");
@ -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)
{
@ -1076,7 +955,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{
menu_stack_increment();
menu_stack_push(menuStackindex, PRESET_CHOICE);
set_initial_dir_tmpbrowser = true;
}
}
if(CTRL_START(trigger_state))
@ -1090,7 +968,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
menu_stack_increment();
menu_stack_push(menuStackindex, SHADER_CHOICE);
set_shader = 0;
set_initial_dir_tmpbrowser = true;
}
if(CTRL_START(trigger_state))
{
@ -1105,7 +982,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
menu_stack_increment();
menu_stack_push(menuStackindex, SHADER_CHOICE);
set_shader = 1;
set_initial_dir_tmpbrowser = true;
}
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(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((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))
g_console.menu_font_size = 1.0f;
g_console.menu_font_size = 1.0f;
break;
case SETTING_KEEP_ASPECT_RATIO:
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_push(menuStackindex, LIBRETRO_CHOICE);
set_initial_dir_tmpbrowser = true;
set_libretro_core_as_launch = false;
}
if(CTRL_START(trigger_state))
@ -1430,7 +1301,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{
menu_stack_increment();
menu_stack_push(menuStackindex, PATH_DEFAULT_ROM_DIR_CHOICE);
set_initial_dir_tmpbrowser = true;
}
if(CTRL_START(trigger_state))
@ -1441,7 +1311,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{
menu_stack_increment();
menu_stack_push(menuStackindex, PATH_SAVESTATES_DIR_CHOICE);
set_initial_dir_tmpbrowser = true;
}
if(CTRL_START(trigger_state))
@ -1453,7 +1322,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{
menu_stack_increment();
menu_stack_push(menuStackindex, PATH_SRAM_DIR_CHOICE);
set_initial_dir_tmpbrowser = true;
}
if(CTRL_START(trigger_state))
@ -1464,7 +1332,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{
menu_stack_increment();
menu_stack_push(menuStackindex, PATH_CHEATS_DIR_CHOICE);
set_initial_dir_tmpbrowser = true;
}
if(CTRL_START(trigger_state))
@ -1510,7 +1377,6 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
{
menu_stack_increment();
menu_stack_push(menuStackindex, INPUT_PRESET_CHOICE);
set_initial_dir_tmpbrowser = true;
}
if(CTRL_START(trigger_state))
menu_stack_refresh(menuStackindex);
@ -1907,6 +1773,7 @@ static void ingame_menu(void)
char comment[256];
static unsigned menuitem_colors[MENU_ITEM_LAST];
gl_t * gl = driver.video_data;
menu *menu_obj = &menuStack[menuStackindex];
float x_position = 0.3f;
float font_size = 1.1f;
@ -1934,7 +1801,7 @@ static void ingame_menu(void)
if(CTRL_RIGHT(trigger_state) || CTRL_LSTICK_RIGHT(trigger_state))
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;
case MENU_ITEM_SAVE_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))
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;
case MENU_ITEM_KEEP_ASPECT_RATIO:
if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state))
{
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);
}
producesettingentry(menu_obj, SETTING_KEEP_ASPECT_RATIO);
strlcpy(comment, "Press LEFT or RIGHT to change the [Aspect Ratio].\nPress START to reset back to default values.", sizeof(comment));
break;
case MENU_ITEM_OVERSCAN_AMOUNT:
if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state) || CTRL_CROSS(trigger_state) || CTRL_LSTICK_LEFT(trigger_state))
{
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();
}
producesettingentry(menu_obj, SETTING_HW_OVERSCAN_AMOUNT);
strlcpy(comment, "Press LEFT or RIGHT to change the [Overscan] settings.\nPress START to reset back to default values.", sizeof(comment));
break;
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));
break;
case MENU_ITEM_SCALE_FACTOR:
if(CTRL_LEFT(trigger_state) || CTRL_LSTICK_LEFT(trigger_state))
{
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);
}
producesettingentry(menu_obj, SETTING_SCALE_FACTOR);
strlcpy(comment, "Press LEFT or RIGHT to change the [Scaling] settings.\nPress START to reset back to default values.", sizeof(comment));
break;
case MENU_ITEM_FRAME_ADVANCE:
@ -2086,7 +1899,6 @@ static void ingame_menu(void)
menu_stack_increment();
menu_stack_push(menuStackindex, LIBRETRO_CHOICE);
set_libretro_core_as_launch = true;
set_initial_dir_tmpbrowser = true;
}
strlcpy(comment, "Press 'CROSS' to choose a different emulator core.", sizeof(comment));
break;
@ -2187,10 +1999,8 @@ static void ingame_menu(void)
void menu_init (void)
{
filebrowser_set_root(&browser, "/");
menu_stack_push(0, FILE_BROWSER_MENU);
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)
@ -2215,17 +2025,11 @@ static bool check_shoulder_buttons(uint64_t state_tmp)
return false;
}
void menu_loop(void)
{
gl_t * gl = driver.video_data;
menu_stack_push(0, FILE_BROWSER_MENU);
g_console.menu_enable = true;
gl->block_swap = true;
if(g_console.ingame_menu_enable)