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
};