diff --git a/general.h b/general.h index e35de83c77..ca252d654c 100644 --- a/general.h +++ b/general.h @@ -182,6 +182,9 @@ struct console_settings uint32_t *supported_resolutions; uint32_t supported_resolutions_count; char rom_path[PATH_MAX]; + char default_rom_startup_dir[PATH_MAX]; + char default_savestate_dir[PATH_MAX]; + char default_sram_dir[PATH_MAX]; }; #endif diff --git a/ps3/main.c b/ps3/main.c index 2b4c0cbdd1..2102fa2f46 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -105,12 +105,14 @@ static void set_default_settings(void) g_settings.video.second_pass_smooth = true; g_settings.video.smooth = true; g_settings.video.vsync = true; + strlcpy(g_settings.cheat_database, usrDirPath, sizeof(g_settings.cheat_database)); // g_console g_console.screenshots_enable = false; g_console.throttle_enable = true; g_console.triple_buffering_enable = true; g_console.current_resolution_id = CELL_VIDEO_OUT_RESOLUTION_UNDEFINED; + strlcpy(g_console.default_rom_startup_dir, "/", sizeof(g_console.default_rom_startup_dir)); // g_extern g_extern.state_slot = 0; diff --git a/ps3/menu-entries.h b/ps3/menu-entries.h index 432da08c41..2d3b2bfb00 100644 --- a/ps3/menu-entries.h +++ b/ps3/menu-entries.h @@ -405,6 +405,21 @@ static item items_generalsettings[MAX_NO_OF_CONTROLS_SETTINGS] = 0, 1 }, + { + SETTING_EMU_AUDIO_MUTE, + "Mute Audio", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Mute Audio] is set to 'OFF'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 + }, { SETTING_EMU_AUDIO_DEFAULT_ALL, "DEFAULT", diff --git a/ps3/menu.c b/ps3/menu.c index 26e4fae1d3..f760f68fbd 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -468,8 +468,10 @@ static void select_directory(uint32_t menu_id) case PATH_SRAM_DIR_CHOICE: break; case PATH_DEFAULT_ROM_DIR_CHOICE: + strcpy(g_console.default_rom_startup_dir, path); break; case PATH_CHEATS_DIR_CHOICE: + strcpy(g_settings.cheat_database, path); break; } menuStackindex--; @@ -485,8 +487,10 @@ static void select_directory(uint32_t menu_id) case PATH_SRAM_DIR_CHOICE: break; case PATH_DEFAULT_ROM_DIR_CHOICE: + strcpy(g_console.default_rom_startup_dir, path); break; case PATH_CHEATS_DIR_CHOICE: + strcpy(g_settings.cheat_database, path); break; } menuStackindex--; @@ -718,6 +722,20 @@ static void set_setting_label(menu * menu_obj, int currentsetting) snprintf(menu_obj->items[currentsetting].comment, sizeof(menu_obj->items[currentsetting].comment), "INFO - [Rewind] feature is set to 'OFF'."); } break; + case SETTING_EMU_AUDIO_MUTE: + if(g_extern.audio_data.mute) + { + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "ON"); + menu_obj->items[currentsetting].text_color = ORANGE; + snprintf(menu_obj->items[currentsetting].comment, sizeof(menu_obj->items[currentsetting].comment), "INFO - [Audio Mute] feature is set to 'ON'. The game audio will be muted."); + } + else + { + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "OFF"); + menu_obj->items[currentsetting].text_color = GREEN; + snprintf(menu_obj->items[currentsetting].comment, sizeof(menu_obj->items[currentsetting].comment), "INFO - [Audio Mute] feature is set to 'OFF'."); + } + break; case SETTING_EMU_VIDEO_DEFAULT_ALL: if(menu_obj->selected == currentsetting) menu_obj->items[currentsetting].text_color = GREEN; @@ -731,12 +749,24 @@ static void set_setting_label(menu * menu_obj, int currentsetting) menu_obj->items[currentsetting].text_color = ORANGE; break; case SETTING_PATH_DEFAULT_ROM_DIRECTORY: + if(!(strcmp(g_console.default_rom_startup_dir, "/"))) + menu_obj->items[currentsetting].text_color = GREEN; + else + menu_obj->items[currentsetting].text_color = ORANGE; + + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), g_console.default_rom_startup_dir); break; case SETTING_PATH_SAVESTATES_DIRECTORY: break; case SETTING_PATH_SRAM_DIRECTORY: break; case SETTING_PATH_CHEATS: + if(!(strcmp(g_settings.cheat_database, usrDirPath))) + menu_obj->items[currentsetting].text_color = GREEN; + else + menu_obj->items[currentsetting].text_color = ORANGE; + + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), g_settings.cheat_database); break; case SETTING_PATH_DEFAULT_ALL: if(menu_obj->selected == currentsetting) @@ -1023,6 +1053,20 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) } break; case SETTING_TRIPLE_BUFFERING: + if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) + { + g_console.triple_buffering_enable = !g_console.triple_buffering_enable; + ps3graphics_video_reinit(); + set_text_message("", 7); + } + if(CTRL_START(state)) + { + if(!g_console.triple_buffering_enable) + { + g_console.triple_buffering_enable = true; + ps3graphics_video_reinit(); + } + } break; case SETTING_ENABLE_SCREENSHOTS: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) @@ -1096,17 +1140,49 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) g_settings.rewind_enable = false; } break; + case SETTING_EMU_AUDIO_MUTE: + if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) + { + g_extern.audio_data.mute = !g_extern.audio_data.mute; + + set_text_message("", 7); + } + if(CTRL_START(state)) + { + g_extern.audio_data.mute = false; + } + break; case SETTING_EMU_VIDEO_DEFAULT_ALL: break; case SETTING_EMU_AUDIO_DEFAULT_ALL: break; case SETTING_PATH_DEFAULT_ROM_DIRECTORY: + if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) + { + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = PATH_DEFAULT_ROM_DIR_CHOICE; + set_initial_dir_tmpbrowser = true; + } + + if(CTRL_START(state)) + strcpy(g_console.default_rom_startup_dir, "/"); break; case SETTING_PATH_SAVESTATES_DIRECTORY: break; case SETTING_PATH_SRAM_DIRECTORY: break; case SETTING_PATH_CHEATS: + if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) + { + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = PATH_CHEATS_DIR_CHOICE; + set_initial_dir_tmpbrowser = true; + } + + if(CTRL_START(state)) + strcpy(g_settings.cheat_database, usrDirPath); break; case SETTING_PATH_DEFAULT_ALL: break; @@ -1373,7 +1449,7 @@ static void select_rom(void) void menu_init (void) { - filebrowser_new(&browser, "/", ssnes_console_get_rom_ext()); + filebrowser_new(&browser, g_console.default_rom_startup_dir, ssnes_console_get_rom_ext()); } void menu_loop(void) diff --git a/ps3/menu.h b/ps3/menu.h index 210f4bde1a..89b8dbb1f0 100644 --- a/ps3/menu.h +++ b/ps3/menu.h @@ -99,6 +99,7 @@ enum SETTING_EMU_DEFAULT_ALL, SETTING_EMU_REWIND_ENABLED, SETTING_EMU_VIDEO_DEFAULT_ALL, + SETTING_EMU_AUDIO_MUTE, SETTING_EMU_AUDIO_DEFAULT_ALL, /* end of port-specific */ SETTING_PATH_DEFAULT_ROM_DIRECTORY, diff --git a/ps3/ps3_video_psgl.c b/ps3/ps3_video_psgl.c index c946a8b46b..98f6bb25eb 100644 --- a/ps3/ps3_video_psgl.c +++ b/ps3/ps3_video_psgl.c @@ -816,17 +816,20 @@ static bool psgl_init_device(gl_t *gl, const video_info_t *video, uint32_t resol psglInit(&options); - PSGLdeviceParameters params = { - .enable = PSGL_DEVICE_PARAMETERS_COLOR_FORMAT | - PSGL_DEVICE_PARAMETERS_DEPTH_FORMAT | - PSGL_DEVICE_PARAMETERS_MULTISAMPLING_MODE | - PSGL_DEVICE_PARAMETERS_BUFFERING_MODE, + PSGLdeviceParameters params; - .colorFormat = GL_ARGB_SCE, - .depthFormat = GL_NONE, - .multisamplingMode = GL_MULTISAMPLING_NONE_SCE, - .bufferingMode = PSGL_BUFFERING_MODE_TRIPLE, - }; + params.enable = PSGL_DEVICE_PARAMETERS_COLOR_FORMAT | \ + PSGL_DEVICE_PARAMETERS_DEPTH_FORMAT | \ + PSGL_DEVICE_PARAMETERS_MULTISAMPLING_MODE; + params.colorFormat = GL_ARGB_SCE; + params.depthFormat = GL_NONE; + params.multisamplingMode = GL_MULTISAMPLING_NONE_SCE; + + if(g_console.triple_buffering_enable) + { + params.enable |= PSGL_DEVICE_PARAMETERS_BUFFERING_MODE; + params.bufferingMode = PSGL_BUFFERING_MODE_TRIPLE; + } if(resolution_id) {