From d09ebb106b3734868ac8d5562f3f1557fbf1f9d4 Mon Sep 17 00:00:00 2001 From: Voxel Date: Tue, 6 Feb 2018 21:22:56 +0000 Subject: [PATCH 1/2] Implement 'Reset to Defaults' menu feature. --- resource/Cxbx.aps | Bin 202728 -> 204144 bytes resource/Cxbx.rc | Bin 27016 -> 27136 bytes src/Common/Win32/XBAudio.cpp | 2 +- src/Common/Win32/XBController.cpp | 2 +- src/Common/Win32/XBVideo.cpp | 2 +- src/Cxbx.h | 3 +++ src/Cxbx/ResCxbx.h | 4 +++- src/Cxbx/WndMain.cpp | 34 +++++++++++++++++++++++++++++- 8 files changed, 42 insertions(+), 5 deletions(-) diff --git a/resource/Cxbx.aps b/resource/Cxbx.aps index b62101b45a2509294fe54ac57fd63c06d3c34866..f9f697a631f6b1833a3d644fb5fb6196a55f0b95 100644 GIT binary patch delta 2437 zcmai0ZETZO6h5c#C|f%O$+~VStZ!F>5bSchkJ^$1DSuALj0i#Dv6M&i3u{#ecu&IH05pDd+&44 zdCqgrJ@4E1+I01eQ`HkPIuBW_=6&@Nc-O|qvb(d6*7$IGEE&%YC$qcb-d%&cY`uKK zi1iDm4G1gvK#gQRbhN3n0wCb?BqHIUJJJbu)(i^-(wpdZ2YR~wJ$;0=fL65%hB`vD zcECb)?e>KFq69dhl7F)o>uak7?n}f1K7T0TeWC;G_7>1hy0HfJ{M%#ty zJ3;MESfo166WU$yfNJLr^+bCEp1x?PHv;x%J1j2Z;SGTv;%{z-B?5{h`uyFrYquCL&RHG~flB9Y!Y? z>CKp#wCNip7i78REi_|}Pw&BHIR4^6ec_-U+w^#ne^iT(y0Z1=RwHgKYtmMBx4v-G zh#iti$s^$lMBJXBKOE@y2P2(spP$My#am6-T{)l8VZPslkCmsy^M&gsjA_bS@l*r; zQ{DtC_>>vHE^nkUA%DSyEBPrI7ne8182?MgmiriO;V}zZ${V$%aRtoHMf<5gsYgUd zdqZl^-0u#l+M&2Qz{v+b!IkD>bM1xFOR$UYD*m?xS6jy*3%lv-fL4gZFr;A&k~GWF zJgMx(x#d?h6=IF}Qx&!s+8@SEsG}eXsbi8Kv0)>&70%eOCA_p4lNuTT>GNRW_vf(t zaa1~ZO?7Ge@)M`A#u(@cL<8<%V546&wTr24+Q}yUGL6e#c=aq=HHBm6@b#s5pb(hB ztQME>GncV_wVKs_IC8XCk(wmYGDIl_8GM914FfO^qmbi&UdAr+a?fH`zaI`C4T7I6 z;FS}zSU54O8FJMfmw>#0>Y}A@r9#b?R8{bs=ddCF8EzofambKOKMc}*7tJyhV+Wxl z$}CGrmXHiQOUMw-nm|XNFeylq60s)}K0xcydw9IWktOYF=|zkPA=~MbCbk?jL-Wv6IFOY@y%OyciEj%PITvJbstU23^FJn#Z@0rSKEN z@-oq;h-#c_dY4QGLBd5&X~i&2d5QJ^RY(XC!bKfM6jH%6M04ShgI{Q#qLrwRTDPFW zCYn*s6DUenTHX-~s^%c@^qpdDhH_|9MXOK^Si#BZ?S-&*H zj~k?B>7ojn_-%t!EB!&M{3Wbkcz|9(KK%}PXa?(fxK^r=CVoJEdKTNYo5_3X3O`aS zc{Fub`PEtq5&W6o7UKukc!QC~iQo96VvJwsn~l;+&F}?&fY#E)1r7iHyk@y}x&z?W VSNsbCW${q^(jfikp(c_N*T2h8RJH&B delta 1154 zcmaJNqrX>7a5 zMn{=pW+O~ugfk17VKy#YsGx8`)QWWDlRjM8h=_s@)Cz9gNd1%4<(131=l>r6Ih>#K z`DX3gtF^gS?96+7%~mUe$ge}$krSEB(Ad=IczSXuojsEEPf*T-4gu8sseMh=0I{C1 zmWV5%L_f$K0WjrXHtndX(2Clpaxw_3DmWBYQ%O#Afw@HVXc2WFIjAa1bWn@*_JJ(R zu)5HJ)-7U152boy>WZ`#YD?sxwkIC#(^g8!L8vQa(6+sPf()j=?6Qhof_LJY=le*P_!<)koK2 zAEO5n#>nZ!U4}-S(a$+?zhG#fCO3XFR8gdGD?TyQ1s|6BuczZ4Y%p|TKV9}3vbZLqvdxpuVLezJ&l>9Vin1#rkfNz9?oJjJ95bL3dWo%F{d_VV+?MV$OgDWa|vh2d_zMyDLi zhn@64Pu1!ggp2vJ?&@m*V4;r==B{bvtN+@DwAqd=Cf8~Jr}VGj9A)blvX5kQBxPcZsOpcjvY FmhYr>Q3L=0 diff --git a/resource/Cxbx.rc b/resource/Cxbx.rc index cc0b630ce7574482bc41f60bb2a10b94a0e09d94..ff71ea2342a2889fc91d3426894d43ba9cb3bb71 100644 GIT binary patch delta 261 zcmeCU%-C>+alT*F6PM_L^&pB z@rbbcFt{?fOkSvEIC%jd&t?usmqiy%ei!XA*(N4p z@~oJc$$w%BCKttOOi_@% delta 335 zcmZp;!q{<{alh9ZVUhIEEpAgRER%#hEJ!jQ@k4-^N9rZQ+S7%~_!m;$lp zWcl>1o4Z(Lls4ySXfZQ#PTnXZD(b`F%HYDF#Gu2#iGZ8mYfsdf{3F9^^O@K@#>ow= zT!NuMb-q9wiWy3PHfA#9P2QL+JUJp#L(mhbKNx5uOoh+n?U9bGF$}y6T$8^?20~fx zQSMMyZ&WCh^)Miqa&fL;Fwq_Ykf>1lqDal4P|-8dQRrkS+?0K NUW}3S09lmC2>^#HO#1); diff --git a/src/Common/Win32/XBAudio.cpp b/src/Common/Win32/XBAudio.cpp index 13cfd6b40..c76b56137 100644 --- a/src/Common/Win32/XBAudio.cpp +++ b/src/Common/Win32/XBAudio.cpp @@ -95,7 +95,7 @@ void XBAudio::Save(const char *szRegistryKey) // ****************************************************************** // * Save Configuration to Registry // ****************************************************************** - { + if (g_SaveOnExit) { DWORD dwDisposition, dwType, dwSize; HKEY hKey; diff --git a/src/Common/Win32/XBController.cpp b/src/Common/Win32/XBController.cpp index 66f30c447..d6423cc5f 100644 --- a/src/Common/Win32/XBController.cpp +++ b/src/Common/Win32/XBController.cpp @@ -160,7 +160,7 @@ void XBController::Save(const char *szRegistryKey) // ****************************************************************** // * Save Configuration to Registry // ****************************************************************** - { + if (g_SaveOnExit) { DWORD dwDisposition, dwType, dwSize; HKEY hKey; diff --git a/src/Common/Win32/XBVideo.cpp b/src/Common/Win32/XBVideo.cpp index 163cfdcfa..aa5dbcc85 100644 --- a/src/Common/Win32/XBVideo.cpp +++ b/src/Common/Win32/XBVideo.cpp @@ -97,7 +97,7 @@ void XBVideo::Save(const char *szRegistryKey) // ****************************************************************** // * Save Configuration to Registry // ****************************************************************** - { + if (g_SaveOnExit) { DWORD dwDisposition, dwType, dwSize; HKEY hKey; diff --git a/src/Cxbx.h b/src/Cxbx.h index dff6a2803..9eb7c58c7 100644 --- a/src/Cxbx.h +++ b/src/Cxbx.h @@ -122,6 +122,9 @@ extern bool g_bIsChihiro; /*! indicates emulation of a Debug xbe executable */ extern bool g_bIsDebug; +/*! indicates ability to save on exit (needed for settings reset) */ +extern bool g_SaveOnExit; + /*! maximum number of threads cxbx can handle */ #define MAXIMUM_XBOX_THREADS 256 diff --git a/src/Cxbx/ResCxbx.h b/src/Cxbx/ResCxbx.h index d18c0d8f9..f3dcc8cd1 100644 --- a/src/Cxbx/ResCxbx.h +++ b/src/Cxbx/ResCxbx.h @@ -1,5 +1,6 @@ //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. +// Used by C:\msys64\home\thesy\Cxbx-Reloaded\resource\Cxbx.rc // #define IDI_CXBX 101 #define IDB_SPLASH 102 @@ -105,6 +106,7 @@ #define ID_SETTINGS_HACKS 40087 #define ID_HACKS_DISABLEPIXELSHADERS 40088 #define ID_LED 40089 +#define ID_SETTINGS_INITIALIZE 40090 #define IDC_STATIC -1 // Next default values for new objects @@ -112,7 +114,7 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 130 -#define _APS_NEXT_COMMAND_VALUE 40089 +#define _APS_NEXT_COMMAND_VALUE 40091 #define _APS_NEXT_CONTROL_VALUE 1058 #define _APS_NEXT_SYMED_VALUE 104 #endif diff --git a/src/Cxbx/WndMain.cpp b/src/Cxbx/WndMain.cpp index 5ff515ae7..414724dee 100644 --- a/src/Cxbx/WndMain.cpp +++ b/src/Cxbx/WndMain.cpp @@ -60,6 +60,8 @@ static int gameLogoWidth, gameLogoHeight; +bool g_SaveOnExit = true; + void ClearHLECache() { std::string cacheDir = std::string(XTL::szFolder_CxbxReloadedData) + "\\HLECache\\"; @@ -280,7 +282,7 @@ WndMain::WndMain(HINSTANCE x_hInstance) : WndMain::~WndMain() { // save configuration to registry - { + if (g_SaveOnExit) { DWORD dwDisposition, dwType, dwSize; HKEY hKey; @@ -1082,6 +1084,36 @@ LRESULT CALLBACK WndMain::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lP } break; + case ID_SETTINGS_INITIALIZE: + { + int ret = MessageBox(m_hwnd, "Warning: This will reset all Cxbx-Reloaded settings to their default values." + "\nAre you sure you want to proceed?", "Cxbx-Reloaded", MB_ICONEXCLAMATION | MB_YESNO); + + if (ret == IDYES) { + HKEY hKey; + if (RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS) { + for (int v = 0; v Date: Tue, 6 Feb 2018 23:43:42 +0000 Subject: [PATCH 2/2] Move code into its own function. --- src/Cxbx/WndMain.cpp | 44 ++++++++++++++++++++++++-------------------- src/Cxbx/WndMain.h | 5 +++++ 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/Cxbx/WndMain.cpp b/src/Cxbx/WndMain.cpp index 414724dee..fcae96033 100644 --- a/src/Cxbx/WndMain.cpp +++ b/src/Cxbx/WndMain.cpp @@ -90,6 +90,27 @@ void ClearHLECache() printf("Cleared HLE Cache\n"); } +void WndMain::InitializeSettings() { + HKEY hKey; + if (RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS) { + for (int v = 0; v < m_dwRecentXbe; v++) { + char buffer[32]; + sprintf(buffer, "RecentXbe%d", v); + RegDeleteValue(hKey, buffer); + } + RegDeleteValue(hKey, "CxbxDebug"); RegDeleteValue(hKey, "CxbxDebugFilename"); + RegDeleteValue(hKey, "HackDisablePixelShaders"); RegDeleteValue(hKey, "KrnlDebug"); + RegDeleteValue(hKey, "KrnlDebugFilename"); RegDeleteValue(hKey, "LLEFLAGS"); + RegDeleteValue(hKey, "RecentXbe"); RegDeleteValue(hKey, "XInputEnabled"); + + RegDeleteTree(hKey, "XBVideo"); RegDeleteTree(hKey, "XBAudio"); RegDeleteTree(hKey, "XBController"); + + RegCloseKey(hKey); + + g_SaveOnExit = false; + } +} + #define TIMERID_FPS 0 #define TIMERID_LED 1 @@ -1090,26 +1111,9 @@ LRESULT CALLBACK WndMain::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lP "\nAre you sure you want to proceed?", "Cxbx-Reloaded", MB_ICONEXCLAMATION | MB_YESNO); if (ret == IDYES) { - HKEY hKey; - if (RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS) { - for (int v = 0; v