Added submenu for LLE flags

This commit is contained in:
PatrickvL 2016-12-29 16:51:10 +01:00
parent 925da89d0b
commit c02009ab67
3 changed files with 77 additions and 38 deletions

View File

@ -128,7 +128,13 @@ BEGIN
MENUITEM "Config &Controller...", ID_SETTINGS_CONFIG_CONTROLLER
MENUITEM "Config &Audio...", ID_SETTINGS_CONFIGURESOUND, GRAYED
MENUITEM "Config &Video...", ID_SETTINGS_CONFIG_VIDEO
END
MENUITEM SEPARATOR
POPUP "&LLE (Experimental)"
BEGIN
MENUITEM "LLE &APU", ID_EMULATION_LLE_APU
MENUITEM "LLE &GPU", ID_EMULATION_LLE_GPU
END
END
POPUP "E&mulation"
BEGIN
MENUITEM "&Start\tF5", ID_EMULATION_START, GRAYED

View File

@ -65,6 +65,8 @@
#define ID_EMULATION_DEBUGOUTPUTGUI_FILE 40036
#define ID_EMULATION_DEBUGOUTPUTKERNEL_CONSOLE 40037
#define ID_EMULATION_DEBUGOUTPUTKERNEL_FILE 40038
#define ID_EMULATION_LLE_APU 40039
#define ID_EMULATION_LLE_GPU 40040
#define ID_SETTINGS_CONFIG_CONTROLLER 40046
#define ID_SETTINGS_CONFIG_VIDEO 40047
#define ID_SETTINGS_CONFIGURESOUND 40048

View File

@ -963,7 +963,23 @@ LRESULT CALLBACK WndMain::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lP
}
break;
case ID_EMULATION_START:
case ID_EMULATION_LLE_APU:
{
m_FlagsLLE = m_FlagsLLE ^ LLE_APU;
RefreshMenus();
}
break;
case ID_EMULATION_LLE_GPU:
{
m_FlagsLLE = m_FlagsLLE ^ LLE_GPU;
RefreshMenus();
}
break;
case ID_EMULATION_START:
StartEmulation(hwnd);
break;
@ -1159,43 +1175,55 @@ void WndMain::RefreshMenus()
}
// view menu
{
HMENU view_menu = GetSubMenu(menu, 2);
HMENU emul_debg = GetSubMenu(view_menu, 0);
HMENU emul_krnl = GetSubMenu(view_menu, 1);
{
HMENU view_menu = GetSubMenu(menu, 2);
HMENU emul_debg = GetSubMenu(view_menu, 0);
HMENU emul_krnl = GetSubMenu(view_menu, 1);
if(m_KrnlDebug == DM_CONSOLE)
{
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_CONSOLE, MF_CHECKED);
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_FILE, MF_UNCHECKED);
}
else if(m_KrnlDebug == DM_FILE)
{
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_CONSOLE, MF_UNCHECKED);
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_FILE, MF_CHECKED);
}
else
{
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_CONSOLE, MF_UNCHECKED);
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_FILE, MF_UNCHECKED);
}
if (m_KrnlDebug == DM_CONSOLE)
{
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_CONSOLE, MF_CHECKED);
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_FILE, MF_UNCHECKED);
}
else if (m_KrnlDebug == DM_FILE)
{
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_CONSOLE, MF_UNCHECKED);
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_FILE, MF_CHECKED);
}
else
{
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_CONSOLE, MF_UNCHECKED);
CheckMenuItem(emul_krnl, ID_EMULATION_DEBUGOUTPUTKERNEL_FILE, MF_UNCHECKED);
}
if(m_CxbxDebug == DM_CONSOLE)
{
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_CONSOLE, MF_CHECKED);
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_FILE, MF_UNCHECKED);
}
else if(m_CxbxDebug == DM_FILE)
{
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_CONSOLE, MF_UNCHECKED);
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_FILE, MF_CHECKED);
}
else
{
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_CONSOLE, MF_UNCHECKED);
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_FILE, MF_UNCHECKED);
}
}
if (m_CxbxDebug == DM_CONSOLE)
{
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_CONSOLE, MF_CHECKED);
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_FILE, MF_UNCHECKED);
}
else if (m_CxbxDebug == DM_FILE)
{
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_CONSOLE, MF_UNCHECKED);
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_FILE, MF_CHECKED);
}
else
{
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_CONSOLE, MF_UNCHECKED);
CheckMenuItem(emul_debg, ID_EMULATION_DEBUGOUTPUTGUI_FILE, MF_UNCHECKED);
}
}
// settings menu
{
HMENU settings_menu = GetSubMenu(menu, 3);
HMENU lle_submenu = GetSubMenu(settings_menu, 4);
UINT chk_flag = (m_FlagsLLE & LLE_APU) ? MF_CHECKED : MF_UNCHECKED;
CheckMenuItem(lle_submenu, ID_EMULATION_LLE_APU, chk_flag);
chk_flag = (m_FlagsLLE & LLE_GPU) ? MF_CHECKED : MF_UNCHECKED;
CheckMenuItem(lle_submenu, ID_EMULATION_LLE_GPU, chk_flag);
}
// emulation menu
{
@ -1470,7 +1498,10 @@ void WndMain::StartEmulation(HWND hwndParent)
// register xbe path with CxbxKrnl.dll
g_EmuShared->SetXbePath(m_Xbe->m_szPath);
// shell exe
// register LLE flags with CxbxKrnl.dll
g_EmuShared->SetFlagsLLE(&m_FlagsLLE);
// shell exe
{
GetModuleFileName(NULL, szBuffer, MAX_PATH);