diff --git a/360/main.c b/360/main.c index aca493adb3..96853610bb 100644 --- a/360/main.c +++ b/360/main.c @@ -27,6 +27,7 @@ #include "../console/main_wrap.h" #include "../conf/config_file.h" #include "../conf/config_file_macros.h" +#include "../file.h" #include "../general.h" #include "shared.h" @@ -190,21 +191,9 @@ static void set_default_settings (void) g_extern.verbose = true; } -static bool file_exists(const char * filename) -{ - unsigned long file_attr; - - file_attr = GetFileAttributes(filename); - - if (0xFFFFFFFF == file_attr) - return false; - - return true; -} - static void init_settings (void) { - if(!file_exists(SYS_CONFIG_FILE)) + if(!filepath_exists(SYS_CONFIG_FILE)) { SSNES_ERR("Config file \"%s\" desn't exist. Creating...\n", "game:\\ssnes.cfg"); FILE * f; @@ -230,7 +219,7 @@ static void init_settings (void) static void save_settings (void) { - if(!file_exists(SYS_CONFIG_FILE)) + if(!filepath_exists(SYS_CONFIG_FILE)) { FILE * f; f = fopen(SYS_CONFIG_FILE, "w"); @@ -374,7 +363,7 @@ begin_loop: goto begin_loop; begin_shutdown: - if(file_exists(SYS_CONFIG_FILE)) + if(filepath_exists(SYS_CONFIG_FILE)) save_settings(); xdk360_video_deinit(); } diff --git a/360/media/ssnes-360-bg.png b/360/media/ssnes-360-bg.png deleted file mode 100644 index 44f31747b3..0000000000 Binary files a/360/media/ssnes-360-bg.png and /dev/null differ diff --git a/360/media/ssnes-360-logo.png b/360/media/ssnes-360-logo.png deleted file mode 100644 index 33daf321ba..0000000000 Binary files a/360/media/ssnes-360-logo.png and /dev/null differ diff --git a/360/media/ssnes_quickmenu.xui b/360/media/ssnes_quickmenu.xui index 2a91c77aff..e0e97c34b5 100644 --- a/360/media/ssnes_quickmenu.xui +++ b/360/media/ssnes_quickmenu.xui @@ -11,20 +11,6 @@ 347.429474,184.843964,0.000000 SSNESQuickMenu - - -XuiBtnLoadState -488.312012 -38.000000 -38.127724,64.215515,0.000000 -245.362122,102.247192,0.000000 -XuiBackButton -XuiBackButton -XuiBtnReturnToGame -XuiBtnSaveState -Load State #0 - - XuiTxtTitle @@ -38,84 +24,56 @@ 21 - - -XuiBtnFrameAdvance -488.312012 -38.000000 -38.127960,201.615982,0.000000 -XuiBackButton -XuiBackButton -XuiBtnFilteringShader -XuiBtnReturnToGame -Frame Advance - - - - -XuiBtnReturnToGame -488.312012 -38.000000 -38.327736,246.007980,0.000000 -245.162109,-84.153275,0.000000 -XuiBackButton -XuiBackButton -XuiBtnFrameAdvance -XuiBtnLoadState -Return to Game - - - - -XuiBtnSaveState -488.312012 -38.000000 -38.130001,111.655991,0.000000 -XuiBackButton -XuiBackButton -XuiBtnLoadState -XuiBtnFilteringShader -Save State #0 - - - - -XuiBtnFilteringShader -488.312012 -38.000000 -38.130001,156.655991,0.000000 -XuiBackButton -XuiBackButton -XuiBtnSaveState -XuiBtnFrameAdvance - - - - -XuiTxtTitle1 -45.024040 -40.000000 -493.581604,21.159988,0.000000 -1/2 -0xff0f0f0f -0x800f0f0f -Arial Unicode MS -21 - - XuiBackButton 208.632019 36.000000 356.670013,309.000000,0.000000 -XuiBtnLoadState -XuiBtnLoadState -XuiBtnReturnToGame -XuiBtnLoadState +XuiQuickMenuList +XuiQuickMenuList +XuiQuickMenuList +XuiQuickMenuList Go back to menu 22593 + + +XuiQuickMenuList +492.000000 +232.720001 +44.880005,64.959991,0.000000 +XuiBackButton +XuiBackButton +XuiBackButton +XuiBackButton +Load State +Save State +Hardware filtering: +Aspect Ratio: +Overscan: +Orientation: +Resize Mode +Frame Advance +Screenshot Mode +Reset +Return to Game +Return to Dashboard + + + + +control_ListItem +226.000000 +45.000000 +7.000000,22.000000,0.000000 +5 +false +XuiButton +0.000000,10.000000,0.000000 + + + diff --git a/360/menu.cpp b/360/menu.cpp index d2429752f4..023d588932 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -39,6 +39,13 @@ static void return_to_game (void) g_console.mode_switch = MODE_EMULATION; } +static void return_to_dashboard (void) +{ + g_console.menu_enable = false; + g_console.mode_switch = MODE_EXIT; + g_console.initialize_ssnes_enable = false; +} + /* Register custom classes */ HRESULT CSSNES::RegisterXuiClasses (void) { @@ -92,17 +99,17 @@ HRESULT CSSNESFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) return S_OK; } -static void set_filter_element(int index, CXuiControl * obj) +static const wchar_t * set_filter_element(int index) { switch(index) { case FALSE: - obj->SetText(L"Hardware filtering: Point filtering"); - break; + return L"Hardware filtering: Point filtering"; case TRUE: - obj->SetText(L"Hardware filtering: Linear interpolation"); - break; + return L"Hardware filtering: Linear interpolation"; } + + return L""; } HRESULT CSSNESSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -112,45 +119,86 @@ HRESULT CSSNESSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) GetChildById(L"XuiBackButton1", &m_back); GetChildById(L"XuiBtnHWFilter", &m_hw_filter); - set_filter_element(g_settings.video.smooth, &m_hw_filter); + m_hw_filter.SetText(set_filter_element(g_settings.video.smooth)); m_rewind_cb.SetCheck(g_settings.rewind_enable); return S_OK; } HRESULT CSSNESQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) { - GetChildById(L"XuiBtnLoadState", &m_loadstate); - GetChildById(L"XuiBtnSaveState", &m_savestate); - GetChildById(L"XuiBtnFilteringShader", &m_hw_filter); - GetChildById(L"XuiBtnFrameAdvance", &m_frame_advance); - GetChildById(L"XuiBtnReturnToGame", &m_return_to_game); + GetChildById(L"XuiQuickMenuList", &m_quickmenulist); GetChildById(L"XuiBackButton", &m_back); - set_filter_element(g_settings.video.smooth, &m_hw_filter); + m_quickmenulist.SetText(MENU_ITEM_HARDWARE_FILTERING, set_filter_element(g_settings.video.smooth)); return S_OK; } HRESULT CSSNESQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { - if ( hObjPressed == m_hw_filter) - g_settings.video.smooth = !g_settings.video.smooth; - else if ( hObjPressed == m_loadstate && g_console.emulator_initialized) + int current_index; + + if ( hObjPressed == m_quickmenulist) { - ssnes_load_state(); - return_to_game(); + current_index = m_quickmenulist.GetCurSel(); + + switch(current_index) + { + case MENU_ITEM_LOAD_STATE: + if (g_console.emulator_initialized) + { + ssnes_load_state(); + return_to_game(); + } + break; + case MENU_ITEM_SAVE_STATE: + if (g_console.emulator_initialized) + { + ssnes_save_state(); + return_to_game(); + } + break; + case MENU_ITEM_HARDWARE_FILTERING: + g_settings.video.smooth = !g_settings.video.smooth; + m_quickmenulist.SetText(MENU_ITEM_HARDWARE_FILTERING, set_filter_element(g_settings.video.smooth)); + break; + case MENU_ITEM_KEEP_ASPECT_RATIO: + break; + case MENU_ITEM_OVERSCAN_AMOUNT: + break; + case MENU_ITEM_ORIENTATION: + break; + case MENU_ITEM_RESIZE_MODE: + break; + case MENU_ITEM_FRAME_ADVANCE: + if (g_console.emulator_initialized) + { + g_console.frame_advance_enable = true; + g_console.menu_enable = false; + g_console.mode_switch = MODE_EMULATION; + } + break; + case MENU_ITEM_SCREENSHOT_MODE: + break; + case MENU_ITEM_RESET: + if (g_console.emulator_initialized) + { + return_to_game(); + ssnes_game_reset(); + } + break; + case MENU_ITEM_RETURN_TO_GAME: + if (g_console.emulator_initialized) + return_to_game(); + break; + case MENU_ITEM_RETURN_TO_DASHBOARD: + return_to_dashboard(); + break; + } } - else if ( hObjPressed == m_frame_advance && g_console.emulator_initialized) - { - g_console.frame_advance_enable = true; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EMULATION; - } - else if ( hObjPressed == m_return_to_game && g_console.emulator_initialized) - return_to_game(); - else if ( hObjPressed == m_back ) + + if ( hObjPressed == m_back ) NavigateBack(app.hMainScene); - set_filter_element(g_settings.video.smooth, &m_hw_filter); bHandled = TRUE; return S_OK; } @@ -223,11 +271,11 @@ HRESULT CSSNESSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) else if ( hObjPressed == m_hw_filter) { g_settings.video.smooth = !g_settings.video.smooth; + m_hw_filter.SetText(set_filter_element(g_settings.video.smooth)); } else if ( hObjPressed == m_back ) NavigateBack(app.hMainScene); - set_filter_element(g_settings.video.smooth, &m_hw_filter); bHandled = TRUE; return S_OK; } @@ -266,11 +314,7 @@ HRESULT CSSNESMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) NavigateForward(app.hSSNESSettings); } else if ( hObjPressed == m_quit ) - { - g_console.menu_enable = false; - g_console.mode_switch = MODE_EXIT; - g_console.initialize_ssnes_enable = false; - } + return_to_dashboard(); bHandled = TRUE; return S_OK; diff --git a/360/menu.h b/360/menu.h index 836d01d006..cf6c9d5139 100644 --- a/360/menu.h +++ b/360/menu.h @@ -79,11 +79,7 @@ public: class CSSNESQuickMenu: public CXuiSceneImpl { protected: - CXuiControl m_loadstate; - CXuiControl m_savestate; - CXuiControl m_hw_filter; - CXuiControl m_frame_advance; - CXuiControl m_return_to_game; + CXuiList m_quickmenulist; CXuiControl m_back; public: HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); diff --git a/360/shared.h b/360/shared.h index 65a4ae9915..336595fbb7 100644 --- a/360/shared.h +++ b/360/shared.h @@ -28,6 +28,7 @@ enum enum { MENU_ITEM_LOAD_STATE = 0, MENU_ITEM_SAVE_STATE, + MENU_ITEM_HARDWARE_FILTERING, MENU_ITEM_KEEP_ASPECT_RATIO, MENU_ITEM_OVERSCAN_AMOUNT, MENU_ITEM_ORIENTATION, @@ -36,7 +37,6 @@ enum { MENU_ITEM_SCREENSHOT_MODE, MENU_ITEM_RESET, MENU_ITEM_RETURN_TO_GAME, - MENU_ITEM_RETURN_TO_MENU, MENU_ITEM_RETURN_TO_DASHBOARD }; diff --git a/general.h b/general.h index 0ec9ab387f..9da4a59c4c 100644 --- a/general.h +++ b/general.h @@ -218,7 +218,6 @@ enum ssnes_game_type SSNES_CART_SUFAMI }; - // All run-time- / command line flag-related globals go here. struct global { @@ -422,6 +421,8 @@ void ssnes_render_cached_frame(void); void ssnes_load_state(void); void ssnes_save_state(void); +void ssnes_state_slot_increase(void); +void ssnes_state_slot_decrease(void); ///////// // Public data structures diff --git a/ps3/main.c b/ps3/main.c index 4fa4d4f3ce..f5d2345f8d 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -74,15 +74,6 @@ void set_text_message(const char * message, uint32_t speed) SET_TIMER_EXPIRATION(speed); } -static bool file_exists(const char * filename) -{ - CellFsStat sb; - if(cellFsStat(filename,&sb) == CELL_FS_SUCCEEDED) - return true; - else - return false; -} - static void set_default_settings(void) { // g_settings @@ -97,7 +88,7 @@ static void set_default_settings(void) g_settings.video.smooth = true; g_settings.video.vsync = true; strlcpy(g_settings.cheat_database, usrDirPath, sizeof(g_settings.cheat_database)); - g_settings.video.msg_pos_x = 0.09f; + g_settings.video.msg_pos_x = 0.05f; g_settings.video.msg_pos_y = 0.90f; g_settings.video.aspect_ratio = -1.0f; @@ -174,7 +165,7 @@ static void set_default_settings(void) static void init_settings(void) { - if(!file_exists(SYS_CONFIG_FILE)) + if(!path_file_exists(SYS_CONFIG_FILE)) { SSNES_ERR("Config file \"%s\" doesn't exist. Creating...\n", SYS_CONFIG_FILE); FILE * f; @@ -219,7 +210,7 @@ static void init_settings(void) static void save_settings(void) { - if(!file_exists(SYS_CONFIG_FILE)) + if(!path_file_exists(SYS_CONFIG_FILE)) { FILE * f; f = fopen(SYS_CONFIG_FILE, "w"); @@ -341,7 +332,7 @@ static void get_environment_settings(void) /* now we fill in all the variables */ snprintf(DEFAULT_PRESET_FILE, sizeof(DEFAULT_PRESET_FILE), "%s/presets/stock.conf", usrDirPath); snprintf(DEFAULT_BORDER_FILE, sizeof(DEFAULT_BORDER_FILE), "%s/borders/Centered-1080p/mega-man-2.png", usrDirPath); - snprintf(DEFAULT_MENU_BORDER_FILE, sizeof(DEFAULT_MENU_BORDER_FILE), "%s/borders/Menu/main-menu.jpg", usrDirPath); + snprintf(DEFAULT_MENU_BORDER_FILE, sizeof(DEFAULT_MENU_BORDER_FILE), "%s/borders/Menu/main-menu.png", usrDirPath); snprintf(GAME_AWARE_SHADER_DIR_PATH, sizeof(GAME_AWARE_SHADER_DIR_PATH), "%s/gameaware", usrDirPath); snprintf(PRESETS_DIR_PATH, sizeof(PRESETS_DIR_PATH), "%s/presets", usrDirPath); snprintf(INPUT_PRESETS_DIR_PATH, sizeof(INPUT_PRESETS_DIR_PATH), "%s/input-presets", usrDirPath); @@ -436,7 +427,7 @@ begin_loop: goto begin_loop; begin_shutdown: - if(file_exists(SYS_CONFIG_FILE)) + if(path_file_exists(SYS_CONFIG_FILE)) save_settings(); ps3_input_deinit(); ps3_video_deinit(); diff --git a/ps3/menu.c b/ps3/menu.c index 2bf5d9b9c2..b7596af4ac 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -291,7 +291,7 @@ static void browser_render(filebrowser_t * b) page_base = page_number * NUM_ENTRY_PER_PAGE; currentX = 0.09f; - currentY = 0.09f; + currentY = 0.10f; ySpacing = 0.035f; for ( i = page_base; i < file_count && i < page_base + NUM_ENTRY_PER_PAGE; ++i) @@ -640,14 +640,14 @@ static void menu_init_settings_pages(menu * menu_obj) page = 0; j = 0; - increment = 0.13f; + increment = 0.16f; for(i = menu_obj->first_setting; i < menu_obj->max_settings; i++) { if(!(j < (NUM_ENTRY_PER_PAGE))) { j = 0; - increment = 0.13f; + increment = 0.16f; page++; } @@ -1598,7 +1598,7 @@ static void select_rom(void) cellDbgFontPrintf(0.09f, 0.83f, 0.91f, LIGHTBLUE, "INFO - Press X to load the game. "); cellDbgFontPuts (0.09f, 0.05f, Emulator_GetFontSize(), RED, "FILE BROWSER"); - cellDbgFontPrintf (0.3f, 0.05f, 0.82f, WHITE, "Libsnes library: %s", snes_library_id()); + cellDbgFontPrintf (0.3f, 0.05f, 0.82f, WHITE, "Libsnes core: %s", snes_library_id()); cellDbgFontPrintf (0.7f, 0.05f, 0.82f, WHITE, "%s v%s", EMULATOR_NAME, EMULATOR_VERSION); cellDbgFontPrintf (0.09f, 0.09f, Emulator_GetFontSize(), YELLOW, "PATH: %s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser)); @@ -1610,7 +1610,7 @@ static void select_rom(void) old_state = state; } -#define MENU_ITEM_SELECTED(index) ((g_console.ingame_menu_item == index) ? RED : GREEN) +#define MENU_ITEM_SELECTED(index) (menuitem_colors[index]) static void return_to_game (void) { @@ -1623,6 +1623,12 @@ static void return_to_game (void) static void ingame_menu(uint32_t menu_id) { char comment[256], msg_temp[256]; + static uint32_t menuitem_colors[MENU_ITEM_LAST]; + + for(int i = 0; i < MENU_ITEM_LAST; i++) + menuitem_colors[i] = GREEN; + + menuitem_colors[g_console.ingame_menu_item] = RED; uint64_t state = cell_pad_input_poll_device(0); static uint64_t old_state = 0; @@ -1784,13 +1790,13 @@ static void ingame_menu(uint32_t menu_id) g_console.menu_enable = false; g_console.mode_switch = MODE_EMULATION; } - strcpy(comment, "Press 'CROSS', 'L2' or 'R2' button to step one frame.\nNOTE: Pressing the button rapidly will advance the frame more slowly\nand prevent buttons from being input."); + strcpy(comment, "Press 'CROSS', 'L2' or 'R2' button to step one frame. Pressing the button\nrapidly will advance the frame more slowly."); break; case MENU_ITEM_RESIZE_MODE: if(CTRL_CROSS(state)) { } - strcpy(comment, "Allows you to resize the screen by moving around the two analog sticks.\nPress TRIANGLE to reset to default values, and CIRCLE to go back to the\nin-game menu."); + strcpy(comment, "Allows you to resize the screen by moving around the two analog sticks.\nPress TRIANGLE to reset to default values, and CIRCLE to go back."); break; case MENU_ITEM_SCREENSHOT_MODE: if(CTRL_CROSS(state)) @@ -1867,16 +1873,16 @@ static void ingame_menu(uint32_t menu_id) if(g_console.ingame_menu_item > 0) { g_console.ingame_menu_item--; - set_text_message("", 7); + set_text_message("", 14); } } if(CTRL_DOWN(state) || CTRL_LSTICK_DOWN(state)) { - if(g_console.ingame_menu_item < MENU_ITEM_LAST) + if(g_console.ingame_menu_item < (MENU_ITEM_LAST-1)) { g_console.ingame_menu_item++; - set_text_message("", 7); + set_text_message("", 14); } } } @@ -1902,64 +1908,52 @@ static void ingame_menu(uint32_t menu_id) break; } - cellDbgFontPrintf (x_position, 0.10f, 1.4f+0.01f, BLUE, "Quick Menu"); - cellDbgFontPrintf(x_position, 0.10f, 1.4f, WHITE, "Quick Menu"); + cellDbgFontPrintf(x_position, 0.14f, 1.4f, WHITE, "Quick Menu"); - cellDbgFontPrintf (x_position, ypos, font_size+0.01f, BLUE, "Load State #%d", g_extern.state_slot); cellDbgFontPrintf(x_position, ypos, font_size, MENU_ITEM_SELECTED(MENU_ITEM_LOAD_STATE), "Load State #%d", g_extern.state_slot); - cellDbgFontPrintf (x_position, ypos+(ypos_increment*MENU_ITEM_SAVE_STATE), font_size+0.01f, BLUE, "Save State #%d", g_extern.state_slot); cellDbgFontPrintf(x_position, ypos+(ypos_increment*MENU_ITEM_SAVE_STATE), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SAVE_STATE), "Save State #%d", g_extern.state_slot); cellDbgFontDraw(); - cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_KEEP_ASPECT_RATIO)), font_size+0.01f, BLUE, "Aspect Ratio: %s", g_console.aspect_ratio_name); cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_KEEP_ASPECT_RATIO)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_KEEP_ASPECT_RATIO), "Aspect Ratio: %s", g_console.aspect_ratio_name); - cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_OVERSCAN_AMOUNT)), font_size+0.01f, BLUE, "Overscan: %f", g_console.overscan_amount); cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_OVERSCAN_AMOUNT)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_OVERSCAN_AMOUNT), "Overscan: %f", g_console.overscan_amount); - cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_ORIENTATION)), font_size+0.01f, BLUE, "Orientation: %s", msg_temp); cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_ORIENTATION)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_ORIENTATION), "Orientation: %s", msg_temp); + cellDbgFontDraw(); - cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_RESIZE_MODE)), font_size+0.01f, BLUE, "Resize Mode"); cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_RESIZE_MODE)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESIZE_MODE), "Resize Mode"); - cellDbgFontPuts (x_position, (ypos+(ypos_increment*MENU_ITEM_FRAME_ADVANCE)), font_size+0.01f, BLUE, "Frame Advance"); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_FRAME_ADVANCE)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_FRAME_ADVANCE), "Frame Advance"); - cellDbgFontPuts (x_position, (ypos+(ypos_increment*MENU_ITEM_SCREENSHOT_MODE)), font_size+0.01f, BLUE, "Screenshot Mode"); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_SCREENSHOT_MODE)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCREENSHOT_MODE), "Screenshot Mode"); cellDbgFontDraw(); - cellDbgFontPuts (x_position, (ypos+(ypos_increment*MENU_ITEM_RESET)), font_size+0.01f, BLUE, "Reset"); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RESET)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESET), "Reset"); - cellDbgFontPuts (x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_GAME)), font_size+0.01f, BLUE, "Return to Game"); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_GAME)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_GAME), "Return to Game"); - cellDbgFontPuts (x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_MENU)), font_size+0.01f, BLUE, "Return to Menu"); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_MENU)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MENU), "Return to Menu"); + cellDbgFontDraw(); #ifdef MULTIMAN_SUPPORT - cellDbgFontPuts (x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_MULTIMAN)), font_size+0.01f, BLUE, "Return to multiMAN"); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_MULTIMAN)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MULTIMAN), "Return to multiMAN"); #endif + + cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_XMB)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_XMB), "Return to XMB"); cellDbgFontDraw(); - cellDbgFontPuts (x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_XMB)), font_size+0.01f, BLUE, "Return to XMB"); - cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_XMB)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_XMB), "Return to XMB"); - + cellDbgFontPuts (0.09f, 0.05f, Emulator_GetFontSize(), RED, "QUICK MENU"); + cellDbgFontPrintf (0.3f, 0.05f, 0.82f, WHITE, "Libsnes core: %s", snes_library_id()); + cellDbgFontPrintf (0.7f, 0.05f, 0.82f, WHITE, "%s v%s", EMULATOR_NAME, EMULATOR_VERSION); + cellDbgFontDraw(); if(IS_TIMER_NOT_EXPIRED()) { - cellDbgFontPrintf (0.09f, 0.90f, 1.51f, BLUE, special_action_msg); - cellDbgFontPrintf (0.09f, 0.90f, 1.50f, WHITE, special_action_msg); + cellDbgFontPrintf (0.05f, 0.90f, 1.10f, WHITE, special_action_msg); cellDbgFontDraw(); } - else - { - cellDbgFontPrintf (0.09f, 0.90f, 0.98f+0.01f, BLUE, comment); - cellDbgFontPrintf (0.09f, 0.90f, 0.98f, LIGHTBLUE, comment); - } + cellDbgFontPrintf(0.09f, 0.83f, 0.91f, LIGHTBLUE, comment); + cellDbgFontDraw(); } void menu_init (void) @@ -1978,22 +1972,25 @@ void menu_loop(void) menu_reinit_settings(); + if(g_console.emulator_initialized) + video_gl.set_swap_block_state(NULL, true); + if(g_console.ingame_menu_enable) { menuStackindex++; menuStack[menuStackindex] = menu_filebrowser; menuStack[menuStackindex].enum_id = INGAME_MENU; - video_gl.set_swap_block_state(NULL, true); } do { glClear(GL_COLOR_BUFFER_BIT); - - if(g_console.ingame_menu_enable) + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + if(g_console.emulator_initialized) ssnes_render_cached_frame(); - else - gl_frame_menu(); + + gl_frame_menu(); switch(menuStack[menuStackindex].enum_id) { @@ -2034,13 +2031,14 @@ void menu_loop(void) } video_gl.swap(NULL); + glDisable(GL_BLEND); }while (g_console.menu_enable); if(g_console.ingame_menu_enable) - { menuStackindex--; // pop ingame menu from stack + + if(g_console.emulator_initialized) video_gl.set_swap_block_state(NULL, false); - } g_console.ingame_menu_enable = false; } diff --git a/ps3/pkg/USRDIR/borders/Menu/main-menu.jpg b/ps3/pkg/USRDIR/borders/Menu/main-menu.jpg deleted file mode 100644 index 7b253b1ece..0000000000 Binary files a/ps3/pkg/USRDIR/borders/Menu/main-menu.jpg and /dev/null differ diff --git a/ps3/pkg/USRDIR/borders/Menu/main-menu.png b/ps3/pkg/USRDIR/borders/Menu/main-menu.png new file mode 100644 index 0000000000..52c3a69d61 Binary files /dev/null and b/ps3/pkg/USRDIR/borders/Menu/main-menu.png differ diff --git a/ps3/ps3_video_psgl.c b/ps3/ps3_video_psgl.c index 6bf515b66f..4ce1a219b2 100644 --- a/ps3/ps3_video_psgl.c +++ b/ps3/ps3_video_psgl.c @@ -723,8 +723,8 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei if (msg) { - cellDbgFontPrintf(g_settings.video.msg_pos_x, g_settings.video.msg_pos_y, 1.51f, BLUE, msg); - cellDbgFontPrintf(g_settings.video.msg_pos_x, g_settings.video.msg_pos_y, 1.50f, WHITE, msg); + cellDbgFontPrintf(g_settings.video.msg_pos_x, g_settings.video.msg_pos_y, 1.11f, BLUE, msg); + cellDbgFontPrintf(g_settings.video.msg_pos_x, g_settings.video.msg_pos_y, 1.10f, WHITE, msg); cellDbgFontDraw(); } diff --git a/ssnes.c b/ssnes.c index 13c55559c6..0b386baae7 100644 --- a/ssnes.c +++ b/ssnes.c @@ -1600,34 +1600,53 @@ static bool check_fullscreen(void) return toggle; } +void ssnes_state_slot_increase(void) +{ + g_extern.state_slot++; + + if (g_extern.msg_queue) + msg_queue_clear(g_extern.msg_queue); + char msg[256]; + + snprintf(msg, sizeof(msg), "Save state/movie slot: %u", g_extern.state_slot); + + if (g_extern.msg_queue) + msg_queue_push(g_extern.msg_queue, msg, 1, 180); + + SSNES_LOG("%s\n", msg); +} + +void ssnes_state_slot_decrease(void) +{ + if (g_extern.state_slot > 0) + g_extern.state_slot--; + + if (g_extern.msg_queue) + msg_queue_clear(g_extern.msg_queue); + + char msg[256]; + + snprintf(msg, sizeof(msg), "Save state/movie slot: %u", g_extern.state_slot); + + if (g_extern.msg_queue) + msg_queue_push(g_extern.msg_queue, msg, 1, 180); + + SSNES_LOG("%s\n", msg); +} + static void check_stateslots(void) { // Save state slots static bool old_should_slot_increase = false; bool should_slot_increase = driver.input->key_pressed(driver.input_data, SSNES_STATE_SLOT_PLUS); if (should_slot_increase && !old_should_slot_increase) - { - g_extern.state_slot++; - msg_queue_clear(g_extern.msg_queue); - char msg[256]; - snprintf(msg, sizeof(msg), "Save state/movie slot: %u", g_extern.state_slot); - msg_queue_push(g_extern.msg_queue, msg, 1, 180); - SSNES_LOG("%s\n", msg); - } + ssnes_state_slot_increase(); old_should_slot_increase = should_slot_increase; static bool old_should_slot_decrease = false; bool should_slot_decrease = driver.input->key_pressed(driver.input_data, SSNES_STATE_SLOT_MINUS); if (should_slot_decrease && !old_should_slot_decrease) - { - if (g_extern.state_slot > 0) - g_extern.state_slot--; - msg_queue_clear(g_extern.msg_queue); - char msg[256]; - snprintf(msg, sizeof(msg), "Save state/movie slot: %u", g_extern.state_slot); - msg_queue_push(g_extern.msg_queue, msg, 1, 180); - SSNES_LOG("%s\n", msg); - } + ssnes_state_slot_decrease(); old_should_slot_decrease = should_slot_decrease; }