From 30e9fb9c4637342b6316e81f9aa958802db5974e Mon Sep 17 00:00:00 2001 From: "Jules.A" Date: Wed, 21 Nov 2018 21:48:30 +0800 Subject: [PATCH 1/7] WIP WinFrontend UI for the new OpenGL compatabilty tradeoffs. Should be fully functional except for CheckValid3DSettingInt where I messed up so I left it commented out, honestly it's probably not needed anyways as there's already checks in place, it just doesn't update ini until you save settings. UI is still a mess, will have to work on that later. --- desmume/src/frontend/windows/main.cpp | 192 ++++++++++++++-------- desmume/src/frontend/windows/main.h | 2 +- desmume/src/frontend/windows/resource.h | 25 ++- desmume/src/frontend/windows/resources.rc | 55 ++++--- 4 files changed, 173 insertions(+), 101 deletions(-) diff --git a/desmume/src/frontend/windows/main.cpp b/desmume/src/frontend/windows/main.cpp index d7617c821..a7911495f 100755 --- a/desmume/src/frontend/windows/main.cpp +++ b/desmume/src/frontend/windows/main.cpp @@ -425,6 +425,9 @@ static int sndbuffersize=DESMUME_SAMPLE_RATE*8/60; int sndvolume=100; const int possibleMSAA[] = {0, 2, 4, 8, 16, 32}; +const int possibleBPP[] = {15, 18, 24}; +const int possibleTexScale[] = {1, 2, 4}; + int maxSamples = 0; bool didGetMaxSamples = false; @@ -2014,10 +2017,10 @@ int _main() CommonSettings.spu_advanced = GetPrivateProfileBool("Sound", "SpuAdvanced", true, IniName); CommonSettings.advanced_timing = GetPrivateProfileBool("Emulation", "AdvancedTiming", true, IniName); CommonSettings.gamehacks.en = GetPrivateProfileBool("Emulation", "GameHacks", true, IniName); - - CommonSettings.GFX3D_Renderer_TextureDeposterize = GetPrivateProfileBool("3D", "TextureDeposterize ", 0, IniName); - CommonSettings.GFX3D_Renderer_TextureSmoothing = GetPrivateProfileBool("3D", "TextureSmooth ", 0, IniName); - gpu_bpp = GetPrivateProfileInt("3D", "GpuBpp ", 18, IniName); + CommonSettings.GFX3D_Renderer_TextureDeposterize = GetPrivateProfileBool("3D", "TextureDeposterize", 0, IniName); + CommonSettings.GFX3D_Renderer_TextureSmoothing = GetPrivateProfileBool("3D", "TextureSmooth", 0, IniName); + gpu_bpp = GetPrivateProfileInt("3D", "GpuBpp", 18, IniName); + //CheckValid3DSettingInt("GpuBpp", 3, 18); lostFocusPause = GetPrivateProfileBool("Focus", "BackgroundPause", false, IniName); @@ -2264,7 +2267,6 @@ int _main() CommonSettings.GFX3D_Renderer_TextureScalingFactor = (cmdline.texture_upscale != -1) ? cmdline.texture_upscale : GetPrivateProfileInt("3D", "TextureScalingFactor ", 1, IniName); int newPrescaleHD = (cmdline.gpu_resolution_multiplier != -1) ? cmdline.gpu_resolution_multiplier : GetPrivateProfileInt("3D", "PrescaleHD", 1, IniName); - video.SetPrescale(newPrescaleHD, 1); GPU->SetCustomFramebufferSize(GPU_FRAMEBUFFER_NATIVE_WIDTH*video.prescaleHD, GPU_FRAMEBUFFER_NATIVE_HEIGHT*video.prescaleHD); SyncGpuBpp(); @@ -2365,9 +2367,13 @@ int _main() CommonSettings.GFX3D_Fog = GetPrivateProfileBool("3D", "EnableFog", 1, IniName); CommonSettings.GFX3D_Texture = GetPrivateProfileBool("3D", "EnableTexture", 1, IniName); CommonSettings.GFX3D_LineHack = GetPrivateProfileBool("3D", "EnableLineHack", 1, IniName); - CommonSettings.GFX3D_TXTHack = GetPrivateProfileBool("3D", "EnableTXTHack", 0, IniName); //default is off. + CommonSettings.GFX3D_TXTHack = GetPrivateProfileBool("3D", "EnableTXTHack", 0, IniName); // Default is off. + CommonSettings.OpenGL_Emulation_ShadowPolygon = GetPrivateProfileBool("3D", "EnableShadowPolygon", 1, IniName); + CommonSettings.OpenGL_Emulation_SpecialZeroAlphaBlending = GetPrivateProfileBool("3D", "EnableSpecialZeroAlphaBlending", 1, IniName); + CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance = GetPrivateProfileBool("3D", "EnableDepthEqualsTestTolerance", 1, IniName); + CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing = GetPrivateProfileBool("3D", "EnableDepthLEqualPolygonFacing", 0, IniName); // Default is off. CommonSettings.GFX3D_Renderer_MultisampleSize = GetPrivateProfileInt("3D", "MultisampleSize", 0, IniName); - CheckValidMSAA(CommonSettings.GFX3D_Renderer_MultisampleSize); + //CheckValid3DSettingInt("MultisampleSize", 6, 0); Change3DCoreWithFallbackAndSave(cur3DCore); @@ -2640,22 +2646,46 @@ int WINAPI WinMain (HINSTANCE hThisInstance, return ret; } -void CheckValidMSAA(int userVal) -{ - bool validMSAA = false; - - for(int i=0; i < 6; i++) - { - if(CommonSettings.GFX3D_Renderer_MultisampleSize == possibleMSAA[i]) - validMSAA = true; - } - - if(!validMSAA) - { - CommonSettings.GFX3D_Renderer_MultisampleSize=0; //Disable if user entered invalid value - WritePrivateProfileInt("3D","MultisampleSize",0,IniName); - } -} +// Only supports MultisampleSize, TextureScalingFactor and GpuBpp right now. +//void CheckValid3DSettingInt(char *settingName, int arrSize, int defaultVal) +//{ +// bool valid = false; +// +// for (int i = 0; i <= arrSize; i++) +// { +// if (settingName == "MultisampleSize" && CommonSettings.GFX3D_Renderer_MultisampleSize == possibleMSAA[i]) +// { // Set to defaults if user entered wrong value. +// valid = true; +// } +// else if (settingName == "GpuBpp" && gpu_bpp == possibleBPP[i]) +// { +// valid = true; +// } +// else if (settingName == "TextureScalingFactor" && CommonSettings.GFX3D_Renderer_TextureScalingFactor == possibleTexScale[i]) +// { +// valid = true; +// } +// } +// +// if (!valid) +// { +// if (settingName == "MultisampleSize") +// { +// CommonSettings.GFX3D_Renderer_MultisampleSize = defaultVal; +// WritePrivateProfileInt("3D", "MultisampleSize", defaultVal, IniName); +// } +// else if (settingName == "GpuBpp") +// { +// gpu_bpp = defaultVal; +// WritePrivateProfileInt("3D", "GpuBpp", defaultVal, IniName); +// } +// else if (settingName == "TextureScalingFactor") +// { +// CommonSettings.GFX3D_Renderer_TextureScalingFactor = defaultVal; +// WritePrivateProfileInt("3D", "TextureScalingFactor", defaultVal, IniName); +// } +// } +//} void UpdateScreenRects() @@ -5728,28 +5758,48 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) } } - CheckDlgButton(hw,IDC_INTERPOLATECOLOR, CommonSettings.GFX3D_HighResolutionInterpolateColor); - CheckDlgButton(hw,IDC_3DSETTINGS_EDGEMARK, CommonSettings.GFX3D_EdgeMark); - CheckDlgButton(hw,IDC_3DSETTINGS_FOG, CommonSettings.GFX3D_Fog); - CheckDlgButton(hw,IDC_3DSETTINGS_TEXTURE, CommonSettings.GFX3D_Texture); - CheckDlgButton(hw,IDC_3DSETTINGS_LINEHACK, CommonSettings.GFX3D_LineHack); - CheckDlgButton(hw,IDC_TXTHACK, CommonSettings.GFX3D_TXTHack); + CheckDlgButton(hw, IDC_INTERPOLATECOLOR, CommonSettings.GFX3D_HighResolutionInterpolateColor); + CheckDlgButton(hw, IDC_3DSETTINGS_LINEHACK, CommonSettings.GFX3D_LineHack); + CheckDlgButton(hw, IDC_TXTHACK, CommonSettings.GFX3D_TXTHack); + CheckDlgButton(hw, IDC_TEX_DEPOSTERIZE, CommonSettings.GFX3D_Renderer_TextureDeposterize); + CheckDlgButton(hw, IDC_3DSETTINGS_EDGEMARK, CommonSettings.GFX3D_EdgeMark); + CheckDlgButton(hw, IDC_3DSETTINGS_FOG, CommonSettings.GFX3D_Fog); + CheckDlgButton(hw, IDC_3DSETTINGS_TEXTURE, CommonSettings.GFX3D_Texture); + CheckDlgButton(hw, IDC_TEX_SMOOTH, CommonSettings.GFX3D_Renderer_TextureSmoothing); + CheckDlgButton(hw, IDC_SHADOW_POLYGONS, CommonSettings.OpenGL_Emulation_ShadowPolygon); + CheckDlgButton(hw, IDC_S_0_ALPHA_BLEND, CommonSettings.OpenGL_Emulation_SpecialZeroAlphaBlending); + CheckDlgButton(hw, IDC_DEPTH_EQUALS_TT, CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance); + CheckDlgButton(hw, IDC_DEPTH_LESS_EQUALS_TT, CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing); - CheckDlgButton(hw,IDC_TEXSCALE_1, CommonSettings.GFX3D_Renderer_TextureScalingFactor == 1); - CheckDlgButton(hw,IDC_TEXSCALE_2, CommonSettings.GFX3D_Renderer_TextureScalingFactor == 2); - CheckDlgButton(hw,IDC_TEXSCALE_4, CommonSettings.GFX3D_Renderer_TextureScalingFactor == 4); + ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "15 bit"); + ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "18 bit"); + ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "24 bit"); + ComboBox_SetCurSel(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), 1); - CheckDlgButton(hw,IDC_GPU_24BPP, gpu_bpp == 24); - CheckDlgButton(hw,IDC_GPU_18BPP, gpu_bpp == 18); - CheckDlgButton(hw,IDC_GPU_15BPP, gpu_bpp == 15); + ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "1x"); + ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "2x"); + ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "4x"); + ComboBox_SetCurSel(GetDlgItem(hw, IDC_TEXSCALE), 0); - CheckDlgButton(hw,IDC_TEX_DEPOSTERIZE, CommonSettings.GFX3D_Renderer_TextureDeposterize); - CheckDlgButton(hw,IDC_TEX_SMOOTH, CommonSettings.GFX3D_Renderer_TextureSmoothing); + //CheckValid3DSettingInt("GpuBpp", 3, 18); + //CheckValid3DSettingInt("TextureScalingFactor", 3, 1); - SendDlgItemMessage(hw,IDC_NUD_PRESCALEHD, UDM_SETRANGE, 0, MAKELPARAM(16, 1)); - SendDlgItemMessage(hw,IDC_NUD_PRESCALEHD, UDM_SETPOS, 0, video.prescaleHD); + for (int i = 0; i < 3; i++) + { + if (gpu_bpp == possibleBPP[i]) + { + ComboBox_SetCurSel(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), i); + } + if (CommonSettings.GFX3D_Renderer_TextureScalingFactor == possibleTexScale[i]) + { + ComboBox_SetCurSel(GetDlgItem(hw, IDC_TEXSCALE), i); + } + } - CheckValidMSAA(CommonSettings.GFX3D_Renderer_MultisampleSize); + SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETRANGE, 0, MAKELPARAM(16, 1)); + SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETPOS, 0, video.prescaleHD); + + //CheckValid3DSettingInt("MultisampleSize", 6, 0); if (CommonSettings.GFX3D_Renderer_MultisampleSize > maxSamples) { CommonSettings.GFX3D_Renderer_MultisampleSize = maxSamples; @@ -5757,13 +5807,15 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) } // Generate the MSAA pop-up menu - ComboBox_AddString(GetDlgItem(hw,IDC_MULTISAMPLE_SIZE), MSAADescriptions[0]); - ComboBox_SetCurSel(GetDlgItem(hw,IDC_MULTISAMPLE_SIZE), 0); + ComboBox_AddString(GetDlgItem(hw, IDC_MULTISAMPLE_SIZE), MSAADescriptions[0]); + ComboBox_SetCurSel(GetDlgItem(hw, IDC_MULTISAMPLE_SIZE), 0); for (int i = 1, z = 2; z <= maxSamples; i++, z*=2) { - ComboBox_AddString(GetDlgItem(hw,IDC_MULTISAMPLE_SIZE),MSAADescriptions[i]); - if (z == CommonSettings.GFX3D_Renderer_MultisampleSize) - ComboBox_SetCurSel(GetDlgItem(hw,IDC_MULTISAMPLE_SIZE), i); + ComboBox_AddString(GetDlgItem(hw, IDC_MULTISAMPLE_SIZE), MSAADescriptions[i]); + if (z == CommonSettings.GFX3D_Renderer_MultisampleSize) + { + ComboBox_SetCurSel(GetDlgItem(hw, IDC_MULTISAMPLE_SIZE), i); + } } // Generate the 3D Rendering Engine pop-up menu @@ -5780,13 +5832,22 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { case IDOK: { - CommonSettings.GFX3D_HighResolutionInterpolateColor = IsDlgCheckboxChecked(hw,IDC_INTERPOLATECOLOR); - CommonSettings.GFX3D_EdgeMark = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_EDGEMARK); - CommonSettings.GFX3D_Fog = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_FOG); - CommonSettings.GFX3D_Texture = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_TEXTURE); - CommonSettings.GFX3D_LineHack = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_LINEHACK); - CommonSettings.GFX3D_TXTHack = IsDlgCheckboxChecked(hw,IDC_TXTHACK); - + CommonSettings.GFX3D_HighResolutionInterpolateColor = IsDlgCheckboxChecked(hw, IDC_INTERPOLATECOLOR); + CommonSettings.GFX3D_LineHack = IsDlgCheckboxChecked(hw, IDC_3DSETTINGS_LINEHACK); + CommonSettings.GFX3D_TXTHack = IsDlgCheckboxChecked(hw, IDC_TXTHACK); + gpu_bpp = possibleBPP[SendDlgItemMessage(hw, IDC_GPU_COLOR_DEPTH, CB_GETCURSEL, 0, 0)]; + CommonSettings.GFX3D_Renderer_TextureScalingFactor = possibleTexScale[SendDlgItemMessage(hw, IDC_TEXSCALE, CB_GETCURSEL, 0, 0)]; + CommonSettings.GFX3D_Renderer_TextureDeposterize = IsDlgCheckboxChecked(hw, IDC_TEX_DEPOSTERIZE); + CommonSettings.GFX3D_EdgeMark = IsDlgCheckboxChecked(hw, IDC_3DSETTINGS_EDGEMARK); + CommonSettings.GFX3D_Fog = IsDlgCheckboxChecked(hw, IDC_3DSETTINGS_FOG); + CommonSettings.GFX3D_Texture = IsDlgCheckboxChecked(hw, IDC_3DSETTINGS_TEXTURE); + CommonSettings.GFX3D_Renderer_MultisampleSize = possibleMSAA[SendDlgItemMessage(hw, IDC_MULTISAMPLE_SIZE, CB_GETCURSEL, 0, 0)]; + CommonSettings.GFX3D_Renderer_TextureSmoothing = IsDlgCheckboxChecked(hw, IDC_TEX_SMOOTH); + CommonSettings.OpenGL_Emulation_ShadowPolygon = IsDlgCheckboxChecked(hw, IDC_SHADOW_POLYGONS); + CommonSettings.OpenGL_Emulation_SpecialZeroAlphaBlending = IsDlgCheckboxChecked(hw, IDC_S_0_ALPHA_BLEND); + CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance = IsDlgCheckboxChecked(hw, IDC_DEPTH_EQUALS_TT); + CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing = IsDlgCheckboxChecked(hw, IDC_DEPTH_LESS_EQUALS_TT); + int newPrescaleHD = video.prescaleHD; LRESULT scaleResult = SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_GETPOS, 0, 0); if (HIWORD(scaleResult) == 0) @@ -5794,17 +5855,6 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) newPrescaleHD = LOWORD(scaleResult); } - if(IsDlgCheckboxChecked(hw,IDC_TEXSCALE_1)) CommonSettings.GFX3D_Renderer_TextureScalingFactor = 1; - else if(IsDlgCheckboxChecked(hw,IDC_TEXSCALE_2)) CommonSettings.GFX3D_Renderer_TextureScalingFactor = 2; - else if(IsDlgCheckboxChecked(hw,IDC_TEXSCALE_4)) CommonSettings.GFX3D_Renderer_TextureScalingFactor = 4; - if(IsDlgCheckboxChecked(hw,IDC_GPU_15BPP)) gpu_bpp = 15; - else if(IsDlgCheckboxChecked(hw,IDC_GPU_18BPP)) gpu_bpp = 18; - else if(IsDlgCheckboxChecked(hw,IDC_GPU_24BPP)) gpu_bpp = 24; - - CommonSettings.GFX3D_Renderer_TextureDeposterize = IsDlgCheckboxChecked(hw,IDC_TEX_DEPOSTERIZE); - CommonSettings.GFX3D_Renderer_TextureSmoothing = IsDlgCheckboxChecked(hw,IDC_TEX_SMOOTH); - CommonSettings.GFX3D_Renderer_MultisampleSize = possibleMSAA[SendDlgItemMessage(hw,IDC_MULTISAMPLE_SIZE,CB_GETCURSEL,0,0)]; - { Lock lock(win_backbuffer_sync); if(display_mutex) slock_lock(display_mutex); @@ -5824,17 +5874,21 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) } WritePrivateProfileBool("3D", "HighResolutionInterpolateColor", CommonSettings.GFX3D_HighResolutionInterpolateColor, IniName); + WritePrivateProfileBool("3D", "EnableTXTHack", CommonSettings.GFX3D_TXTHack, IniName); + WritePrivateProfileBool("3D", "EnableLineHack", CommonSettings.GFX3D_LineHack, IniName); + WritePrivateProfileInt ("3D", "PrescaleHD", video.prescaleHD, IniName); + WritePrivateProfileInt ("3D", "GpuBpp", gpu_bpp, IniName); + WritePrivateProfileInt ("3D", "TextureScalingFactor", CommonSettings.GFX3D_Renderer_TextureScalingFactor, IniName); + WritePrivateProfileBool("3D", "TextureDeposterize", CommonSettings.GFX3D_Renderer_TextureDeposterize, IniName); WritePrivateProfileBool("3D", "EnableEdgeMark", CommonSettings.GFX3D_EdgeMark, IniName); WritePrivateProfileBool("3D", "EnableFog", CommonSettings.GFX3D_Fog, IniName); WritePrivateProfileBool("3D", "EnableTexture", CommonSettings.GFX3D_Texture, IniName); - WritePrivateProfileInt ("3D", "EnableLineHack", CommonSettings.GFX3D_LineHack, IniName); WritePrivateProfileInt ("3D", "MultisampleSize", CommonSettings.GFX3D_Renderer_MultisampleSize, IniName); - WritePrivateProfileInt ("3D", "EnableTXTHack", CommonSettings.GFX3D_TXTHack, IniName); - WritePrivateProfileInt ("3D", "PrescaleHD", video.prescaleHD, IniName); - WritePrivateProfileInt ("3D", "TextureScalingFactor", CommonSettings.GFX3D_Renderer_TextureScalingFactor, IniName); - WritePrivateProfileBool("3D", "TextureDeposterize", CommonSettings.GFX3D_Renderer_TextureDeposterize, IniName); WritePrivateProfileBool("3D", "TextureSmooth", CommonSettings.GFX3D_Renderer_TextureSmoothing, IniName); - WritePrivateProfileInt ("3D", "GpuBpp", gpu_bpp, IniName); + WritePrivateProfileBool("3D", "EnableShadowPolygon", CommonSettings.OpenGL_Emulation_ShadowPolygon, IniName); + WritePrivateProfileBool("3D", "EnableSpecialZeroAlphaBlending", CommonSettings.OpenGL_Emulation_SpecialZeroAlphaBlending, IniName); + WritePrivateProfileBool("3D", "EnableDepthEqualsTestTolerance", CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance, IniName); + WritePrivateProfileBool("3D", "EnableDepthLEqualPolygonFacing", CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing, IniName); } case IDCANCEL: { diff --git a/desmume/src/frontend/windows/main.h b/desmume/src/frontend/windows/main.h index c8d122d13..697abbae8 100644 --- a/desmume/src/frontend/windows/main.h +++ b/desmume/src/frontend/windows/main.h @@ -53,7 +53,7 @@ void SaveWindowSize(HWND hwnd); void SaveWindowSizePos(HWND hwnd); void RestoreWindow(HWND hwnd); void ShowFullScreen(HWND hwnd); -void CheckValidMSAA(int userVal); +//void CheckValid3DSettingInt(char *settingName, int arrSize, int defaultVal); extern bool frameCounterDisplay; extern bool FpsDisplay; diff --git a/desmume/src/frontend/windows/resource.h b/desmume/src/frontend/windows/resource.h index 17f478bd1..e6f058cd2 100644 --- a/desmume/src/frontend/windows/resource.h +++ b/desmume/src/frontend/windows/resource.h @@ -461,22 +461,16 @@ #define IDC_TEXT_PRESCALEHD 1062 #define IDC_STATIC_S3 1063 #define IDC_STATIC_S4 1064 -#define IDC_TEX_DEPOSTERIZE 1064 #define IDC_EVALUE 1065 -#define IDC_TEX_DEPOSTERIZE2 1065 -#define IDC_TEX_SMOOTH 1065 #define IDC_WIFI_ENABLED 1065 #define IDC_STATIC_RANGE 1066 -#define IDC_TEXSCALE_1 1066 #define IDC_WIFI_COMPAT 1066 -#define IDC_TEXSCALE_2 1067 +#define IDC_TEXSCALE 1067 #define IDC_BADD 1068 #define IDC_LIST 1069 -#define IDC_TEXSCALE_4 1070 +#define IDC_TEX_DEPOSTERIZE 1070 #define IDC_SNUMBER 1071 -#define IDC_GPU_24BPP 1071 -#define IDC_GPU_18BPP 1072 -#define IDC_GPU_15BPP 1073 +#define IDC_TEX_SMOOTH 1072 #define IDC_CHECK1 1074 #define IDC_CHECK2 1075 #define IDC_CAP0_SRC 1075 @@ -502,6 +496,11 @@ #define IDC_S8X 1092 #define IDC_S16X 1093 #define IDC_MULTISAMPLE_SIZE 1094 +#define IDC_GPU_COLOR_DEPTH 1095 +#define IDC_SHADOW_POLYGONS 1096 +#define IDC_S_0_ALPHA_BLEND 1097 +#define IDC_DEPTH_EQUALS_TT 1098 +#define IDC_DEPTH_LESS_EQUALS_TT 1099 #define IDM_FIRMSETTINGS 1100 #define IDD_FIRMSETTINGS 1101 #define IDC_EDIT1 1102 @@ -1088,6 +1087,14 @@ #define ID_LABEL_TXTHACK1 64003 #define ID_LABEL_TXTHACK2 64004 #define ID_LABEL_MSAA_SAMPLES 64005 +#define ID_LABEL_GPU_COLOR_DEPTH 64006 +#define ID_LABEL_TEXTURE_SCALING 64007 +#define ID_LABEL_ACCURACY_TRADE 64008 +#define ID_LABEL_SHADOW_POLYGONS 64009 +#define ID_LABEL_S_0_ALPHA_BLEND 640010 +#define ID_LABEL_DEPTH_EQUALS_TT 640011 +#define ID_LABEL_DEPTH_LEQUALS_TT 640012 + // Next default values for new objects // diff --git a/desmume/src/frontend/windows/resources.rc b/desmume/src/frontend/windows/resources.rc index 3a0451311..a2beebc11 100644 --- a/desmume/src/frontend/windows/resources.rc +++ b/desmume/src/frontend/windows/resources.rc @@ -110,42 +110,52 @@ BEGIN PUSHBUTTON "&Cancel",IDCANCEL,127,94,50,16 END -IDD_3DSETTINGS DIALOGEX 0, 0, 311, 182 +IDD_3DSETTINGS DIALOGEX 0, 0, 327, 279 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "3D settings" +CAPTION "3D Settings" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN COMBOBOX IDC_3DCORE,15,20,108,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Unrealistically High-Precision Color Interpolation",IDC_INTERPOLATECOLOR, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,56,165,10 - CONTROL "Enable Edge Marking",IDC_3DSETTINGS_EDGEMARK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,119,84,10 - CONTROL "Enable Fog",IDC_3DSETTINGS_FOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,129,52,10 - CONTROL "Enable Textures",IDC_3DSETTINGS_TEXTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,139,67,10 - LTEXT "Multisample Antialiasing:",ID_LABEL_MSAA_SAMPLES,13,145,78,8 - EDITTEXT IDC_TEXT_PRESCALEHD,267,17,20,14,ES_AUTOHSCROLL - CONTROL "",IDC_NUD_PRESCALEHD,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,286,17,11,14 + CONTROL "Enable Edge Marking",IDC_3DSETTINGS_EDGEMARK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,199,86,84,10 + CONTROL "Enable Fog",IDC_3DSETTINGS_FOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,98,52,10 + CONTROL "Enable Textures",IDC_3DSETTINGS_TEXTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,110,67,10 + LTEXT "Multisample Antialiasing",ID_LABEL_MSAA_SAMPLES,13,145,78,8 + EDITTEXT IDC_TEXT_PRESCALEHD,272,17,27,14,ES_AUTOHSCROLL + CONTROL "",IDC_NUD_PRESCALEHD,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,297,17,12,14 PUSHBUTTON "Default",IDC_DEFAULT,130,19,50,15 - DEFPUSHBUTTON "OK",IDOK,194,159,50,15 - PUSHBUTTON "Cancel",IDCANCEL,254,159,50,15 + DEFPUSHBUTTON "OK",IDOK,207,258,50,15 + PUSHBUTTON "Cancel",IDCANCEL,269,258,50,15 GROUPBOX "3D Rendering Engine",IDC_STATIC,7,7,180,34 GROUPBOX "SoftRasterizer Options",IDC_STATIC,7,44,180,83 LTEXT "Fixes some graphical bugs involving lines, but causes some other bugs. Not many games use lines.",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK2,13,106,170,18 CONTROL "Enable Line Hack",IDC_3DSETTINGS_LINEHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,96,73,10 LTEXT "Fixes text bugs in some games.(e.g. Etrian Odyssey)",ID_LABEL_TXTHACK1,13,77,167,11 + LTEXT "May need to be toggled on/off per scene.",ID_LABEL_TXTHACK2,13,86,167,8 CONTROL "Enable TXT Hack",IDC_TXTHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,67,73,10 - GROUPBOX "OpenGL Options",IDC_STATIC,7,131,180,43 - GROUPBOX "General Options",IDC_STATIC,194,7,109,147 + GROUPBOX "OpenGL Options",IDC_STATIC,7,131,312,121 + GROUPBOX "General Options",IDC_STATIC,196,7,123,120 LTEXT "GPU Scaling Factor",IDC_STATIC,200,20,64,8 - CONTROL "Texture Scaling 1x",IDC_TEXSCALE_1,"Button",BS_AUTORADIOBUTTON,200,82,77,10 - CONTROL "Texture Scaling 2x",IDC_TEXSCALE_2,"Button",BS_AUTORADIOBUTTON,200,92,77,10 - CONTROL "Texture Scaling 4x",IDC_TEXSCALE_4,"Button",BS_AUTORADIOBUTTON,200,102,77,10 - CONTROL "Deposterize Textures",IDC_TEX_DEPOSTERIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,71,79,10 - CONTROL "Smooth Textures",IDC_TEX_SMOOTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,160,75,10 - LTEXT "You may need to toggle off && on by scene.",ID_LABEL_TXTHACK2,13,85,165,11 - CONTROL "GPU Color Depth 24 bit",IDC_GPU_24BPP,"Button",BS_AUTORADIOBUTTON,200,34,98,10 - CONTROL "GPU Color Depth 18 bit",IDC_GPU_18BPP,"Button",BS_AUTORADIOBUTTON,200,44,98,10 - CONTROL "GPU Color Depth 15 bit",IDC_GPU_15BPP,"Button",BS_AUTORADIOBUTTON,200,54,98,10 - COMBOBOX IDC_MULTISAMPLE_SIZE,95,144,84,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Deposterize Textures",IDC_TEX_DEPOSTERIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,74,79,10 + CONTROL "Smooth Textures",IDC_TEX_SMOOTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,146,75,10 + COMBOBOX IDC_MULTISAMPLE_SIZE,93,144,71,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_GPU_COLOR_DEPTH,263,39,47,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "GPU Color Depth",ID_LABEL_GPU_COLOR_DEPTH,201,41,62,8 + LTEXT "Texture Scaling",ID_LABEL_TEXTURE_SCALING,201,60,54,8 + COMBOBOX IDC_TEXSCALE,263,58,47,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CTEXT "Trade Accuracy For Performance",ID_LABEL_ACCURACY_TRADE,16,161,294,11,WS_BORDER + CONTROL "Enable Shadow Polygons",IDC_SHADOW_POLYGONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,176,98,10 + CONTROL "Enable Special Zero Alpha Blending",IDC_S_0_ALPHA_BLEND, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,177,126,10 + CONTROL "Enable Depth-Equals Test Tolerance",IDC_DEPTH_EQUALS_TT, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,209,133,10 + CONTROL "Enable Depth-LEqual Polygon Facing",IDC_DEPTH_LESS_EQUALS_TT, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,208,133,10 + LTEXT "Disabling this option may cause some shadows to disappear.",ID_LABEL_SHADOW_POLYGONS,11,189,152,17 + LTEXT "Disabling this option may cause certain polygons to get caught up in Z-fighting or disappear completely.",ID_LABEL_S_0_ALPHA_BLEND,11,222,154,26 + LTEXT "Disabling this option may cause some colors to look darker than they normally should.",ID_LABEL_DEPTH_EQUALS_TT,172,188,143,17 + LTEXT "Disabling this option may cause some fragments to disappear. Default by default due to performance impact.",ID_LABEL_DEPTH_LEQUALS_TT,173,220,142,27 END IDD_ABOUT_BOX DIALOGEX 0, 0, 268, 198 @@ -1862,6 +1872,7 @@ BEGIN IDD_3DSETTINGS, DIALOG BEGIN + BOTTOMMARGIN, 266 END IDD_CHEAT_ADD, DIALOG From 54c6205e95e1865f98b7cc6caa5035e6fc8c2297 Mon Sep 17 00:00:00 2001 From: "Jules.A" Date: Thu, 22 Nov 2018 22:16:36 +0800 Subject: [PATCH 2/7] Fix up the UI and delete the unusused function (it's really not worth it until more settings can be checked). --- desmume/src/frontend/windows/main.cpp | 53 +------------- desmume/src/frontend/windows/main.h | 1 - desmume/src/frontend/windows/resource.h | 1 - desmume/src/frontend/windows/resources.rc | 86 +++++++++++------------ 4 files changed, 46 insertions(+), 95 deletions(-) diff --git a/desmume/src/frontend/windows/main.cpp b/desmume/src/frontend/windows/main.cpp index a7911495f..2ad16388f 100755 --- a/desmume/src/frontend/windows/main.cpp +++ b/desmume/src/frontend/windows/main.cpp @@ -2020,7 +2020,6 @@ int _main() CommonSettings.GFX3D_Renderer_TextureDeposterize = GetPrivateProfileBool("3D", "TextureDeposterize", 0, IniName); CommonSettings.GFX3D_Renderer_TextureSmoothing = GetPrivateProfileBool("3D", "TextureSmooth", 0, IniName); gpu_bpp = GetPrivateProfileInt("3D", "GpuBpp", 18, IniName); - //CheckValid3DSettingInt("GpuBpp", 3, 18); lostFocusPause = GetPrivateProfileBool("Focus", "BackgroundPause", false, IniName); @@ -2373,7 +2372,6 @@ int _main() CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance = GetPrivateProfileBool("3D", "EnableDepthEqualsTestTolerance", 1, IniName); CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing = GetPrivateProfileBool("3D", "EnableDepthLEqualPolygonFacing", 0, IniName); // Default is off. CommonSettings.GFX3D_Renderer_MultisampleSize = GetPrivateProfileInt("3D", "MultisampleSize", 0, IniName); - //CheckValid3DSettingInt("MultisampleSize", 6, 0); Change3DCoreWithFallbackAndSave(cur3DCore); @@ -2646,48 +2644,6 @@ int WINAPI WinMain (HINSTANCE hThisInstance, return ret; } -// Only supports MultisampleSize, TextureScalingFactor and GpuBpp right now. -//void CheckValid3DSettingInt(char *settingName, int arrSize, int defaultVal) -//{ -// bool valid = false; -// -// for (int i = 0; i <= arrSize; i++) -// { -// if (settingName == "MultisampleSize" && CommonSettings.GFX3D_Renderer_MultisampleSize == possibleMSAA[i]) -// { // Set to defaults if user entered wrong value. -// valid = true; -// } -// else if (settingName == "GpuBpp" && gpu_bpp == possibleBPP[i]) -// { -// valid = true; -// } -// else if (settingName == "TextureScalingFactor" && CommonSettings.GFX3D_Renderer_TextureScalingFactor == possibleTexScale[i]) -// { -// valid = true; -// } -// } -// -// if (!valid) -// { -// if (settingName == "MultisampleSize") -// { -// CommonSettings.GFX3D_Renderer_MultisampleSize = defaultVal; -// WritePrivateProfileInt("3D", "MultisampleSize", defaultVal, IniName); -// } -// else if (settingName == "GpuBpp") -// { -// gpu_bpp = defaultVal; -// WritePrivateProfileInt("3D", "GpuBpp", defaultVal, IniName); -// } -// else if (settingName == "TextureScalingFactor") -// { -// CommonSettings.GFX3D_Renderer_TextureScalingFactor = defaultVal; -// WritePrivateProfileInt("3D", "TextureScalingFactor", defaultVal, IniName); -// } -// } -//} - - void UpdateScreenRects() { if (video.layout == 1) @@ -5771,19 +5727,17 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) CheckDlgButton(hw, IDC_DEPTH_EQUALS_TT, CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance); CheckDlgButton(hw, IDC_DEPTH_LESS_EQUALS_TT, CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing); + // Generate the Color Depth pop-up menu ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "15 bit"); ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "18 bit"); ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "24 bit"); ComboBox_SetCurSel(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), 1); - + // Generate the Texture Scaling pop-up menu ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "1x"); ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "2x"); ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "4x"); ComboBox_SetCurSel(GetDlgItem(hw, IDC_TEXSCALE), 0); - - //CheckValid3DSettingInt("GpuBpp", 3, 18); - //CheckValid3DSettingInt("TextureScalingFactor", 3, 1); - + // If user input is valid, set the correct selection. for (int i = 0; i < 3; i++) { if (gpu_bpp == possibleBPP[i]) @@ -5799,7 +5753,6 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETRANGE, 0, MAKELPARAM(16, 1)); SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETPOS, 0, video.prescaleHD); - //CheckValid3DSettingInt("MultisampleSize", 6, 0); if (CommonSettings.GFX3D_Renderer_MultisampleSize > maxSamples) { CommonSettings.GFX3D_Renderer_MultisampleSize = maxSamples; diff --git a/desmume/src/frontend/windows/main.h b/desmume/src/frontend/windows/main.h index 697abbae8..b65231234 100644 --- a/desmume/src/frontend/windows/main.h +++ b/desmume/src/frontend/windows/main.h @@ -53,7 +53,6 @@ void SaveWindowSize(HWND hwnd); void SaveWindowSizePos(HWND hwnd); void RestoreWindow(HWND hwnd); void ShowFullScreen(HWND hwnd); -//void CheckValid3DSettingInt(char *settingName, int arrSize, int defaultVal); extern bool frameCounterDisplay; extern bool FpsDisplay; diff --git a/desmume/src/frontend/windows/resource.h b/desmume/src/frontend/windows/resource.h index e6f058cd2..48589285a 100644 --- a/desmume/src/frontend/windows/resource.h +++ b/desmume/src/frontend/windows/resource.h @@ -1089,7 +1089,6 @@ #define ID_LABEL_MSAA_SAMPLES 64005 #define ID_LABEL_GPU_COLOR_DEPTH 64006 #define ID_LABEL_TEXTURE_SCALING 64007 -#define ID_LABEL_ACCURACY_TRADE 64008 #define ID_LABEL_SHADOW_POLYGONS 64009 #define ID_LABEL_S_0_ALPHA_BLEND 640010 #define ID_LABEL_DEPTH_EQUALS_TT 640011 diff --git a/desmume/src/frontend/windows/resources.rc b/desmume/src/frontend/windows/resources.rc index a2beebc11..6171123fe 100644 --- a/desmume/src/frontend/windows/resources.rc +++ b/desmume/src/frontend/windows/resources.rc @@ -110,52 +110,52 @@ BEGIN PUSHBUTTON "&Cancel",IDCANCEL,127,94,50,16 END -IDD_3DSETTINGS DIALOGEX 0, 0, 327, 279 +IDD_3DSETTINGS DIALOGEX 0, 0, 329, 274 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "3D Settings" -FONT 8, "MS Sans Serif", 0, 0, 0x0 +FONT 8, "MS Sans Serif", 400, 0, 0x0 BEGIN - COMBOBOX IDC_3DCORE,15,20,108,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Unrealistically High-Precision Color Interpolation",IDC_INTERPOLATECOLOR, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,56,165,10 - CONTROL "Enable Edge Marking",IDC_3DSETTINGS_EDGEMARK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,199,86,84,10 - CONTROL "Enable Fog",IDC_3DSETTINGS_FOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,98,52,10 - CONTROL "Enable Textures",IDC_3DSETTINGS_TEXTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,110,67,10 - LTEXT "Multisample Antialiasing",ID_LABEL_MSAA_SAMPLES,13,145,78,8 - EDITTEXT IDC_TEXT_PRESCALEHD,272,17,27,14,ES_AUTOHSCROLL - CONTROL "",IDC_NUD_PRESCALEHD,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,297,17,12,14 - PUSHBUTTON "Default",IDC_DEFAULT,130,19,50,15 - DEFPUSHBUTTON "OK",IDOK,207,258,50,15 - PUSHBUTTON "Cancel",IDCANCEL,269,258,50,15 - GROUPBOX "3D Rendering Engine",IDC_STATIC,7,7,180,34 - GROUPBOX "SoftRasterizer Options",IDC_STATIC,7,44,180,83 - LTEXT "Fixes some graphical bugs involving lines, but causes some other bugs. Not many games use lines.",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK2,13,106,170,18 - CONTROL "Enable Line Hack",IDC_3DSETTINGS_LINEHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,96,73,10 - LTEXT "Fixes text bugs in some games.(e.g. Etrian Odyssey)",ID_LABEL_TXTHACK1,13,77,167,11 - LTEXT "May need to be toggled on/off per scene.",ID_LABEL_TXTHACK2,13,86,167,8 - CONTROL "Enable TXT Hack",IDC_TXTHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,67,73,10 - GROUPBOX "OpenGL Options",IDC_STATIC,7,131,312,121 - GROUPBOX "General Options",IDC_STATIC,196,7,123,120 - LTEXT "GPU Scaling Factor",IDC_STATIC,200,20,64,8 - CONTROL "Deposterize Textures",IDC_TEX_DEPOSTERIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,74,79,10 - CONTROL "Smooth Textures",IDC_TEX_SMOOTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,146,75,10 - COMBOBOX IDC_MULTISAMPLE_SIZE,93,144,71,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_GPU_COLOR_DEPTH,263,39,47,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "GPU Color Depth",ID_LABEL_GPU_COLOR_DEPTH,201,41,62,8 - LTEXT "Texture Scaling",ID_LABEL_TEXTURE_SCALING,201,60,54,8 - COMBOBOX IDC_TEXSCALE,263,58,47,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CTEXT "Trade Accuracy For Performance",ID_LABEL_ACCURACY_TRADE,16,161,294,11,WS_BORDER - CONTROL "Enable Shadow Polygons",IDC_SHADOW_POLYGONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,176,98,10 + COMBOBOX IDC_3DCORE,14,20,115,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "High-Precision Color Interpolation",IDC_INTERPOLATECOLOR, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,56,124,10 + CONTROL "Enable Edge Marking",IDC_3DSETTINGS_EDGEMARK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,90,84,10 + CONTROL "Enable Fog",IDC_3DSETTINGS_FOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,101,52,10 + CONTROL "Enable Textures",IDC_3DSETTINGS_TEXTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,112,67,10 + LTEXT "Multisample Antialiasing",ID_LABEL_MSAA_SAMPLES,12,145,78,8 + EDITTEXT IDC_TEXT_PRESCALEHD,273,17,31,14,ES_AUTOHSCROLL + CONTROL "",IDC_NUD_PRESCALEHD,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,303,17,12,14 + PUSHBUTTON "Default",IDC_DEFAULT,135,19,50,15 + DEFPUSHBUTTON "OK",IDOK,211,253,50,15 + PUSHBUTTON "Cancel",IDCANCEL,273,253,50,15 + GROUPBOX "3D Rendering Engine",IDC_STATIC,7,7,184,34 + GROUPBOX "SoftRasterizer Options",IDC_STATIC,7,44,184,83 + LTEXT "Fixes some graphical bugs involving lines, but causes some other bugs. Not many games use lines.",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK2,12,106,170,18 + CONTROL "Enable Line Hack",IDC_3DSETTINGS_LINEHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,96,73,10 + LTEXT "Fixes text bugs in some games.(e.g. Etrian Odyssey)",ID_LABEL_TXTHACK1,12,77,171,8 + LTEXT "May need to be toggled on/off per scene.",ID_LABEL_TXTHACK2,12,86,167,8 + CONTROL "Enable TXT Hack",IDC_TXTHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,67,73,10 + GROUPBOX "OpenGL Options",IDC_STATIC,7,131,315,117 + GROUPBOX "General Options",IDC_STATIC,198,7,124,120 + LTEXT "GPU Scaling Factor",IDC_STATIC,203,20,64,8 + CONTROL "Deposterize Textures",IDC_TEX_DEPOSTERIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,79,79,10 + CONTROL "Smooth Textures",IDC_TEX_SMOOTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,145,75,10 + COMBOBOX IDC_MULTISAMPLE_SIZE,92,143,62,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_GPU_COLOR_DEPTH,273,39,42,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "GPU Color Depth",ID_LABEL_GPU_COLOR_DEPTH,203,41,60,8 + LTEXT "Texture Scaling",ID_LABEL_TEXTURE_SCALING,203,61,54,8 + COMBOBOX IDC_TEXSCALE,273,59,42,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Enable Shadow Polygons",IDC_SHADOW_POLYGONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,173,137,10 CONTROL "Enable Special Zero Alpha Blending",IDC_S_0_ALPHA_BLEND, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,177,126,10 - CONTROL "Enable Depth-Equals Test Tolerance",IDC_DEPTH_EQUALS_TT, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,209,133,10 - CONTROL "Enable Depth-LEqual Polygon Facing",IDC_DEPTH_LESS_EQUALS_TT, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,171,208,133,10 - LTEXT "Disabling this option may cause some shadows to disappear.",ID_LABEL_SHADOW_POLYGONS,11,189,152,17 - LTEXT "Disabling this option may cause certain polygons to get caught up in Z-fighting or disappear completely.",ID_LABEL_S_0_ALPHA_BLEND,11,222,154,26 - LTEXT "Disabling this option may cause some colors to look darker than they normally should.",ID_LABEL_DEPTH_EQUALS_TT,172,188,143,17 - LTEXT "Disabling this option may cause some fragments to disappear. Default by default due to performance impact.",ID_LABEL_DEPTH_LEQUALS_TT,173,220,142,27 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,173,137,10 + CONTROL "Enable Depth Equals Test Tolerance",IDC_DEPTH_EQUALS_TT, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,202,137,10 + CONTROL "Enable Depth L-Equal Polygon Facing",IDC_DEPTH_LESS_EQUALS_TT, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,202,137,10 + LTEXT "Disabling this option may cause some shadows to disappear.",ID_LABEL_SHADOW_POLYGONS,17,184,137,16 + LTEXT "Disabling this option may cause certain polygons to get caught up in Z-fighting or disappear completely.",ID_LABEL_S_0_ALPHA_BLEND,17,213,137,24 + LTEXT "Disabling this option may cause some colors to look darker than normal.",ID_LABEL_DEPTH_EQUALS_TT,172,184,137,16 + LTEXT "Disabling this option may cause some fragments to disappear. Disabled by default due to performance impact.",ID_LABEL_DEPTH_LEQUALS_TT,172,213,137,24 + GROUPBOX "Rendering Accuracy Options",IDC_STATIC,12,161,305,82,BS_CENTER END IDD_ABOUT_BOX DIALOGEX 0, 0, 268, 198 @@ -1872,7 +1872,7 @@ BEGIN IDD_3DSETTINGS, DIALOG BEGIN - BOTTOMMARGIN, 266 + RIGHTMARGIN, 328 END IDD_CHEAT_ADD, DIALOG From 156c590ca4bb5cb42025783f8db8dc0cec2a45f4 Mon Sep 17 00:00:00 2001 From: "Jules.A" Date: Fri, 23 Nov 2018 01:47:14 +0800 Subject: [PATCH 3/7] Check if user inputted values are correct on initiation. --- desmume/src/frontend/windows/main.cpp | 49 +++++++++++++++++++++++++-- desmume/src/frontend/windows/main.h | 1 + 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/desmume/src/frontend/windows/main.cpp b/desmume/src/frontend/windows/main.cpp index 2ad16388f..ab2eb144c 100755 --- a/desmume/src/frontend/windows/main.cpp +++ b/desmume/src/frontend/windows/main.cpp @@ -2020,7 +2020,7 @@ int _main() CommonSettings.GFX3D_Renderer_TextureDeposterize = GetPrivateProfileBool("3D", "TextureDeposterize", 0, IniName); CommonSettings.GFX3D_Renderer_TextureSmoothing = GetPrivateProfileBool("3D", "TextureSmooth", 0, IniName); gpu_bpp = GetPrivateProfileInt("3D", "GpuBpp", 18, IniName); - + CheckValid3DIntSetting("GpuBpp", 3); lostFocusPause = GetPrivateProfileBool("Focus", "BackgroundPause", false, IniName); //Get Ram-Watch values @@ -2265,6 +2265,7 @@ int _main() wifiHandler->SetEmulationLevel(WifiEmulationLevel_Off); CommonSettings.GFX3D_Renderer_TextureScalingFactor = (cmdline.texture_upscale != -1) ? cmdline.texture_upscale : GetPrivateProfileInt("3D", "TextureScalingFactor ", 1, IniName); + CheckValid3DIntSetting("TextureScalingFactor", 3); int newPrescaleHD = (cmdline.gpu_resolution_multiplier != -1) ? cmdline.gpu_resolution_multiplier : GetPrivateProfileInt("3D", "PrescaleHD", 1, IniName); video.SetPrescale(newPrescaleHD, 1); GPU->SetCustomFramebufferSize(GPU_FRAMEBUFFER_NATIVE_WIDTH*video.prescaleHD, GPU_FRAMEBUFFER_NATIVE_HEIGHT*video.prescaleHD); @@ -2372,6 +2373,7 @@ int _main() CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance = GetPrivateProfileBool("3D", "EnableDepthEqualsTestTolerance", 1, IniName); CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing = GetPrivateProfileBool("3D", "EnableDepthLEqualPolygonFacing", 0, IniName); // Default is off. CommonSettings.GFX3D_Renderer_MultisampleSize = GetPrivateProfileInt("3D", "MultisampleSize", 0, IniName); + CheckValid3DIntSetting("MultisampleSize", 6); Change3DCoreWithFallbackAndSave(cur3DCore); @@ -2644,6 +2646,47 @@ int WINAPI WinMain (HINSTANCE hThisInstance, return ret; } +//Checks for incorrect values and updates ini. Only supports MultisampleSize, TextureScalingFactor and GpuBpp right now. +void CheckValid3DIntSetting(const char *settingName, const int arrSize) +{ + bool valid = false; + + for (int i = 0; i <= arrSize; i++) + { + if (settingName == "MultisampleSize" && CommonSettings.GFX3D_Renderer_MultisampleSize == possibleMSAA[i]) + { + valid = true; + } + else if (settingName == "GpuBpp" && gpu_bpp == possibleBPP[i]) + { + valid = true; + } + else if (settingName == "TextureScalingFactor" && CommonSettings.GFX3D_Renderer_TextureScalingFactor == possibleTexScale[i]) + { + valid = true; + } + } + + if (!valid) + { // Sets to defaults if ini value is incorrect. + if (settingName == "MultisampleSize") + { + CommonSettings.GFX3D_Renderer_MultisampleSize = 0; + WritePrivateProfileInt("3D", "MultisampleSize", 0, IniName); + } + else if (settingName == "GpuBpp") + { + gpu_bpp = 18; + WritePrivateProfileInt("3D", "GpuBpp", 18, IniName); + } + else if (settingName == "TextureScalingFactor") + { + CommonSettings.GFX3D_Renderer_TextureScalingFactor = 1; + WritePrivateProfileInt("3D", "TextureScalingFactor", 1, IniName); + } + } +} + void UpdateScreenRects() { if (video.layout == 1) @@ -5737,7 +5780,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "2x"); ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "4x"); ComboBox_SetCurSel(GetDlgItem(hw, IDC_TEXSCALE), 0); - // If user input is valid, set the correct selection. + for (int i = 0; i < 3; i++) { if (gpu_bpp == possibleBPP[i]) @@ -5770,7 +5813,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) ComboBox_SetCurSel(GetDlgItem(hw, IDC_MULTISAMPLE_SIZE), i); } } - + // Generate the 3D Rendering Engine pop-up menu for (int i = 0; core3DList[i] != NULL; i++) { diff --git a/desmume/src/frontend/windows/main.h b/desmume/src/frontend/windows/main.h index b65231234..e3f02416a 100644 --- a/desmume/src/frontend/windows/main.h +++ b/desmume/src/frontend/windows/main.h @@ -53,6 +53,7 @@ void SaveWindowSize(HWND hwnd); void SaveWindowSizePos(HWND hwnd); void RestoreWindow(HWND hwnd); void ShowFullScreen(HWND hwnd); +void CheckValid3DIntSetting(const char *settingName, const int arrSize); extern bool frameCounterDisplay; extern bool FpsDisplay; From db1ca70f5949c052aabb0506870bc85b6d6c4a8c Mon Sep 17 00:00:00 2001 From: "Jules.A" Date: Fri, 23 Nov 2018 14:12:52 +0800 Subject: [PATCH 4/7] Fix label variable naming, spacing and finally get ini value checking working without requiring to check for the value that is getting changed, --- desmume/src/frontend/windows/main.cpp | 52 ++++++----------------- desmume/src/frontend/windows/main.h | 2 +- desmume/src/frontend/windows/resource.h | 4 +- desmume/src/frontend/windows/resources.rc | 24 +++++------ 4 files changed, 28 insertions(+), 54 deletions(-) diff --git a/desmume/src/frontend/windows/main.cpp b/desmume/src/frontend/windows/main.cpp index ab2eb144c..cd683bff8 100755 --- a/desmume/src/frontend/windows/main.cpp +++ b/desmume/src/frontend/windows/main.cpp @@ -2019,8 +2019,7 @@ int _main() CommonSettings.gamehacks.en = GetPrivateProfileBool("Emulation", "GameHacks", true, IniName); CommonSettings.GFX3D_Renderer_TextureDeposterize = GetPrivateProfileBool("3D", "TextureDeposterize", 0, IniName); CommonSettings.GFX3D_Renderer_TextureSmoothing = GetPrivateProfileBool("3D", "TextureSmooth", 0, IniName); - gpu_bpp = GetPrivateProfileInt("3D", "GpuBpp", 18, IniName); - CheckValid3DIntSetting("GpuBpp", 3); + gpu_bpp = GetValid3DIntSetting("GpuBpp", 18, possibleBPP, 3); lostFocusPause = GetPrivateProfileBool("Focus", "BackgroundPause", false, IniName); //Get Ram-Watch values @@ -2264,8 +2263,7 @@ int _main() else wifiHandler->SetEmulationLevel(WifiEmulationLevel_Off); - CommonSettings.GFX3D_Renderer_TextureScalingFactor = (cmdline.texture_upscale != -1) ? cmdline.texture_upscale : GetPrivateProfileInt("3D", "TextureScalingFactor ", 1, IniName); - CheckValid3DIntSetting("TextureScalingFactor", 3); + CommonSettings.GFX3D_Renderer_TextureScalingFactor = (cmdline.texture_upscale != -1) ? cmdline.texture_upscale : GetValid3DIntSetting("TextureScalingFactor", 1, possibleTexScale, 3);; int newPrescaleHD = (cmdline.gpu_resolution_multiplier != -1) ? cmdline.gpu_resolution_multiplier : GetPrivateProfileInt("3D", "PrescaleHD", 1, IniName); video.SetPrescale(newPrescaleHD, 1); GPU->SetCustomFramebufferSize(GPU_FRAMEBUFFER_NATIVE_WIDTH*video.prescaleHD, GPU_FRAMEBUFFER_NATIVE_HEIGHT*video.prescaleHD); @@ -2372,8 +2370,7 @@ int _main() CommonSettings.OpenGL_Emulation_SpecialZeroAlphaBlending = GetPrivateProfileBool("3D", "EnableSpecialZeroAlphaBlending", 1, IniName); CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance = GetPrivateProfileBool("3D", "EnableDepthEqualsTestTolerance", 1, IniName); CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing = GetPrivateProfileBool("3D", "EnableDepthLEqualPolygonFacing", 0, IniName); // Default is off. - CommonSettings.GFX3D_Renderer_MultisampleSize = GetPrivateProfileInt("3D", "MultisampleSize", 0, IniName); - CheckValid3DIntSetting("MultisampleSize", 6); + CommonSettings.GFX3D_Renderer_MultisampleSize = GetValid3DIntSetting("MultisampleSize", 0, possibleMSAA, 6); Change3DCoreWithFallbackAndSave(cur3DCore); @@ -2646,45 +2643,22 @@ int WINAPI WinMain (HINSTANCE hThisInstance, return ret; } -//Checks for incorrect values and updates ini. Only supports MultisampleSize, TextureScalingFactor and GpuBpp right now. -void CheckValid3DIntSetting(const char *settingName, const int arrSize) +// Checks for incorrect values, updates ini and returns a valid value. Requires an array to check. +int GetValid3DIntSetting(char *settingName, const int defVal, const int arrName[], const int arrSize) { bool valid = false; + const int curVal = GetPrivateProfileInt("3D", settingName, defVal, IniName); for (int i = 0; i <= arrSize; i++) { - if (settingName == "MultisampleSize" && CommonSettings.GFX3D_Renderer_MultisampleSize == possibleMSAA[i]) + if (curVal == arrName[i]) { - valid = true; - } - else if (settingName == "GpuBpp" && gpu_bpp == possibleBPP[i]) - { - valid = true; - } - else if (settingName == "TextureScalingFactor" && CommonSettings.GFX3D_Renderer_TextureScalingFactor == possibleTexScale[i]) - { - valid = true; - } - } - - if (!valid) - { // Sets to defaults if ini value is incorrect. - if (settingName == "MultisampleSize") - { - CommonSettings.GFX3D_Renderer_MultisampleSize = 0; - WritePrivateProfileInt("3D", "MultisampleSize", 0, IniName); - } - else if (settingName == "GpuBpp") - { - gpu_bpp = 18; - WritePrivateProfileInt("3D", "GpuBpp", 18, IniName); - } - else if (settingName == "TextureScalingFactor") - { - CommonSettings.GFX3D_Renderer_TextureScalingFactor = 1; - WritePrivateProfileInt("3D", "TextureScalingFactor", 1, IniName); + return curVal; } } + // Sets to defaults if ini value is incorrect. + WritePrivateProfileInt("3D", settingName, defVal, IniName); + return defVal; } void UpdateScreenRects() @@ -5768,7 +5742,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) CheckDlgButton(hw, IDC_SHADOW_POLYGONS, CommonSettings.OpenGL_Emulation_ShadowPolygon); CheckDlgButton(hw, IDC_S_0_ALPHA_BLEND, CommonSettings.OpenGL_Emulation_SpecialZeroAlphaBlending); CheckDlgButton(hw, IDC_DEPTH_EQUALS_TT, CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance); - CheckDlgButton(hw, IDC_DEPTH_LESS_EQUALS_TT, CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing); + CheckDlgButton(hw, IDC_DEPTH_L_EQUAL_PF, CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing); // Generate the Color Depth pop-up menu ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "15 bit"); @@ -5842,7 +5816,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) CommonSettings.OpenGL_Emulation_ShadowPolygon = IsDlgCheckboxChecked(hw, IDC_SHADOW_POLYGONS); CommonSettings.OpenGL_Emulation_SpecialZeroAlphaBlending = IsDlgCheckboxChecked(hw, IDC_S_0_ALPHA_BLEND); CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance = IsDlgCheckboxChecked(hw, IDC_DEPTH_EQUALS_TT); - CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing = IsDlgCheckboxChecked(hw, IDC_DEPTH_LESS_EQUALS_TT); + CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing = IsDlgCheckboxChecked(hw, IDC_DEPTH_L_EQUAL_PF); int newPrescaleHD = video.prescaleHD; LRESULT scaleResult = SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_GETPOS, 0, 0); diff --git a/desmume/src/frontend/windows/main.h b/desmume/src/frontend/windows/main.h index e3f02416a..535d9a836 100644 --- a/desmume/src/frontend/windows/main.h +++ b/desmume/src/frontend/windows/main.h @@ -53,7 +53,7 @@ void SaveWindowSize(HWND hwnd); void SaveWindowSizePos(HWND hwnd); void RestoreWindow(HWND hwnd); void ShowFullScreen(HWND hwnd); -void CheckValid3DIntSetting(const char *settingName, const int arrSize); +int GetValid3DIntSetting(char *settingName, const int defVal, const int arrName[], const int arrSize); extern bool frameCounterDisplay; extern bool FpsDisplay; diff --git a/desmume/src/frontend/windows/resource.h b/desmume/src/frontend/windows/resource.h index 48589285a..4420ff869 100644 --- a/desmume/src/frontend/windows/resource.h +++ b/desmume/src/frontend/windows/resource.h @@ -500,7 +500,7 @@ #define IDC_SHADOW_POLYGONS 1096 #define IDC_S_0_ALPHA_BLEND 1097 #define IDC_DEPTH_EQUALS_TT 1098 -#define IDC_DEPTH_LESS_EQUALS_TT 1099 +#define IDC_DEPTH_L_EQUAL_PF 1099 #define IDM_FIRMSETTINGS 1100 #define IDD_FIRMSETTINGS 1101 #define IDC_EDIT1 1102 @@ -1092,7 +1092,7 @@ #define ID_LABEL_SHADOW_POLYGONS 64009 #define ID_LABEL_S_0_ALPHA_BLEND 640010 #define ID_LABEL_DEPTH_EQUALS_TT 640011 -#define ID_LABEL_DEPTH_LEQUALS_TT 640012 +#define ID_LABEL_DEPTH_L_EQUAL_PF 640012 // Next default values for new objects diff --git a/desmume/src/frontend/windows/resources.rc b/desmume/src/frontend/windows/resources.rc index 6171123fe..4dedb5e57 100644 --- a/desmume/src/frontend/windows/resources.rc +++ b/desmume/src/frontend/windows/resources.rc @@ -110,7 +110,7 @@ BEGIN PUSHBUTTON "&Cancel",IDCANCEL,127,94,50,16 END -IDD_3DSETTINGS DIALOGEX 0, 0, 329, 274 +IDD_3DSETTINGS DIALOGEX 0, 0, 329, 273 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "3D Settings" FONT 8, "MS Sans Serif", 400, 0, 0x0 @@ -125,8 +125,8 @@ BEGIN EDITTEXT IDC_TEXT_PRESCALEHD,273,17,31,14,ES_AUTOHSCROLL CONTROL "",IDC_NUD_PRESCALEHD,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,303,17,12,14 PUSHBUTTON "Default",IDC_DEFAULT,135,19,50,15 - DEFPUSHBUTTON "OK",IDOK,211,253,50,15 - PUSHBUTTON "Cancel",IDCANCEL,273,253,50,15 + DEFPUSHBUTTON "OK",IDOK,211,252,50,15 + PUSHBUTTON "Cancel",IDCANCEL,273,252,50,15 GROUPBOX "3D Rendering Engine",IDC_STATIC,7,7,184,34 GROUPBOX "SoftRasterizer Options",IDC_STATIC,7,44,184,83 LTEXT "Fixes some graphical bugs involving lines, but causes some other bugs. Not many games use lines.",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK2,12,106,170,18 @@ -134,7 +134,7 @@ BEGIN LTEXT "Fixes text bugs in some games.(e.g. Etrian Odyssey)",ID_LABEL_TXTHACK1,12,77,171,8 LTEXT "May need to be toggled on/off per scene.",ID_LABEL_TXTHACK2,12,86,167,8 CONTROL "Enable TXT Hack",IDC_TXTHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,67,73,10 - GROUPBOX "OpenGL Options",IDC_STATIC,7,131,315,117 + GROUPBOX "OpenGL Options",IDC_STATIC,7,131,315,116 GROUPBOX "General Options",IDC_STATIC,198,7,124,120 LTEXT "GPU Scaling Factor",IDC_STATIC,203,20,64,8 CONTROL "Deposterize Textures",IDC_TEX_DEPOSTERIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,79,79,10 @@ -148,14 +148,14 @@ BEGIN CONTROL "Enable Special Zero Alpha Blending",IDC_S_0_ALPHA_BLEND, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,173,137,10 CONTROL "Enable Depth Equals Test Tolerance",IDC_DEPTH_EQUALS_TT, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,202,137,10 - CONTROL "Enable Depth L-Equal Polygon Facing",IDC_DEPTH_LESS_EQUALS_TT, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,202,137,10 - LTEXT "Disabling this option may cause some shadows to disappear.",ID_LABEL_SHADOW_POLYGONS,17,184,137,16 - LTEXT "Disabling this option may cause certain polygons to get caught up in Z-fighting or disappear completely.",ID_LABEL_S_0_ALPHA_BLEND,17,213,137,24 - LTEXT "Disabling this option may cause some colors to look darker than normal.",ID_LABEL_DEPTH_EQUALS_TT,172,184,137,16 - LTEXT "Disabling this option may cause some fragments to disappear. Disabled by default due to performance impact.",ID_LABEL_DEPTH_LEQUALS_TT,172,213,137,24 - GROUPBOX "Rendering Accuracy Options",IDC_STATIC,12,161,305,82,BS_CENTER + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,203,137,10 + CONTROL "Enable Depth L-Equal Polygon Facing",IDC_DEPTH_L_EQUAL_PF, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,203,137,10 + LTEXT "Disabling this option may cause some shadows to disappear.",ID_LABEL_SHADOW_POLYGONS,17,183,137,16 + LTEXT "Disabling this option may cause certain polygons to get caught up in Z-fighting or disappear completely.",ID_LABEL_DEPTH_EQUALS_TT,17,213,137,24 + LTEXT "Disabling this option may cause some colors to look darker than normal.",ID_LABEL_S_0_ALPHA_BLEND,172,183,137,16 + LTEXT "Disabling this option may cause some fragments to disappear. Disabled by default due to performance impact.",ID_LABEL_DEPTH_L_EQUAL_PF,172,213,137,24 + GROUPBOX "Rendering Accuracy Options",IDC_STATIC,12,161,305,81,BS_CENTER END IDD_ABOUT_BOX DIALOGEX 0, 0, 268, 198 From 7e4a270644d3583f8e995877390a7c5d36bfe924 Mon Sep 17 00:00:00 2001 From: "Jules.A" Date: Fri, 23 Nov 2018 14:19:56 +0800 Subject: [PATCH 5/7] Ughh... get rid of the extra semicolon... --- desmume/src/frontend/windows/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desmume/src/frontend/windows/main.cpp b/desmume/src/frontend/windows/main.cpp index cd683bff8..93dd8f8a5 100755 --- a/desmume/src/frontend/windows/main.cpp +++ b/desmume/src/frontend/windows/main.cpp @@ -2263,7 +2263,7 @@ int _main() else wifiHandler->SetEmulationLevel(WifiEmulationLevel_Off); - CommonSettings.GFX3D_Renderer_TextureScalingFactor = (cmdline.texture_upscale != -1) ? cmdline.texture_upscale : GetValid3DIntSetting("TextureScalingFactor", 1, possibleTexScale, 3);; + CommonSettings.GFX3D_Renderer_TextureScalingFactor = (cmdline.texture_upscale != -1) ? cmdline.texture_upscale : GetValid3DIntSetting("TextureScalingFactor", 1, possibleTexScale, 3); int newPrescaleHD = (cmdline.gpu_resolution_multiplier != -1) ? cmdline.gpu_resolution_multiplier : GetPrivateProfileInt("3D", "PrescaleHD", 1, IniName); video.SetPrescale(newPrescaleHD, 1); GPU->SetCustomFramebufferSize(GPU_FRAMEBUFFER_NATIVE_WIDTH*video.prescaleHD, GPU_FRAMEBUFFER_NATIVE_HEIGHT*video.prescaleHD); From 20547d38a2bcd7dfd85f0cc9f539d13389d1a505 Mon Sep 17 00:00:00 2001 From: "Jules.A" Date: Fri, 23 Nov 2018 17:05:40 +0800 Subject: [PATCH 6/7] Remove unneeded bool initialisation and now that ini values are sanatized comboboxes can be initialised and set in a loop to save a few lines. --- desmume/src/frontend/windows/main.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/desmume/src/frontend/windows/main.cpp b/desmume/src/frontend/windows/main.cpp index 93dd8f8a5..d332db1d7 100755 --- a/desmume/src/frontend/windows/main.cpp +++ b/desmume/src/frontend/windows/main.cpp @@ -2262,7 +2262,7 @@ int _main() } else wifiHandler->SetEmulationLevel(WifiEmulationLevel_Off); - + CommonSettings.GFX3D_Renderer_TextureScalingFactor = (cmdline.texture_upscale != -1) ? cmdline.texture_upscale : GetValid3DIntSetting("TextureScalingFactor", 1, possibleTexScale, 3); int newPrescaleHD = (cmdline.gpu_resolution_multiplier != -1) ? cmdline.gpu_resolution_multiplier : GetPrivateProfileInt("3D", "PrescaleHD", 1, IniName); video.SetPrescale(newPrescaleHD, 1); @@ -2646,7 +2646,6 @@ int WINAPI WinMain (HINSTANCE hThisInstance, // Checks for incorrect values, updates ini and returns a valid value. Requires an array to check. int GetValid3DIntSetting(char *settingName, const int defVal, const int arrName[], const int arrSize) { - bool valid = false; const int curVal = GetPrivateProfileInt("3D", settingName, defVal, IniName); for (int i = 0; i <= arrSize; i++) @@ -5706,6 +5705,8 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) case WM_INITDIALOG: { const char MSAADescriptions[6][9] = {"Disabled", "2x", "4x", "8x", "16x", "32x"}; + const char gpuBPPDescriptions[3][7] = {"15 bit", "18 bit", "24 bit"}; + const char texScaleDescriptions[3][4] = {"1x", "2x", "4x"}; if (!didGetMaxSamples) { @@ -5744,19 +5745,14 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) CheckDlgButton(hw, IDC_DEPTH_EQUALS_TT, CommonSettings.OpenGL_Emulation_DepthEqualsTestTolerance); CheckDlgButton(hw, IDC_DEPTH_L_EQUAL_PF, CommonSettings.OpenGL_Emulation_DepthLEqualPolygonFacing); - // Generate the Color Depth pop-up menu - ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "15 bit"); - ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "18 bit"); - ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "24 bit"); - ComboBox_SetCurSel(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), 1); - // Generate the Texture Scaling pop-up menu - ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "1x"); - ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "2x"); - ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "4x"); - ComboBox_SetCurSel(GetDlgItem(hw, IDC_TEXSCALE), 0); + SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETRANGE, 0, MAKELPARAM(16, 1)); + SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETPOS, 0, video.prescaleHD); + // Generate the Color Depth pop-up menu and Texture Scaling pop-up menu for (int i = 0; i < 3; i++) { + ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), gpuBPPDescriptions[i]); + ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), texScaleDescriptions[i]); if (gpu_bpp == possibleBPP[i]) { ComboBox_SetCurSel(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), i); @@ -5767,9 +5763,6 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) } } - SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETRANGE, 0, MAKELPARAM(16, 1)); - SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETPOS, 0, video.prescaleHD); - if (CommonSettings.GFX3D_Renderer_MultisampleSize > maxSamples) { CommonSettings.GFX3D_Renderer_MultisampleSize = maxSamples; From a51a6d4b6d8c60e77eff8afa84a462e48df5c8e3 Mon Sep 17 00:00:00 2001 From: "Jules.A" Date: Fri, 23 Nov 2018 17:18:16 +0800 Subject: [PATCH 7/7] Revert pointless changes that only saved a few lines. --- desmume/src/frontend/windows/main.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/desmume/src/frontend/windows/main.cpp b/desmume/src/frontend/windows/main.cpp index d332db1d7..c3464fc27 100755 --- a/desmume/src/frontend/windows/main.cpp +++ b/desmume/src/frontend/windows/main.cpp @@ -5705,8 +5705,6 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) case WM_INITDIALOG: { const char MSAADescriptions[6][9] = {"Disabled", "2x", "4x", "8x", "16x", "32x"}; - const char gpuBPPDescriptions[3][7] = {"15 bit", "18 bit", "24 bit"}; - const char texScaleDescriptions[3][4] = {"1x", "2x", "4x"}; if (!didGetMaxSamples) { @@ -5748,11 +5746,19 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETRANGE, 0, MAKELPARAM(16, 1)); SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETPOS, 0, video.prescaleHD); - // Generate the Color Depth pop-up menu and Texture Scaling pop-up menu + // Generate the Color Depth pop-up menu + ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "15 bit"); + ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "18 bit"); + ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), "24 bit"); + ComboBox_SetCurSel(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), 1); + // Generate the Texture Scaling pop-up menu + ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "1x"); + ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "2x"); + ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), "4x"); + ComboBox_SetCurSel(GetDlgItem(hw, IDC_TEXSCALE), 0); + for (int i = 0; i < 3; i++) { - ComboBox_AddString(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), gpuBPPDescriptions[i]); - ComboBox_AddString(GetDlgItem(hw, IDC_TEXSCALE), texScaleDescriptions[i]); if (gpu_bpp == possibleBPP[i]) { ComboBox_SetCurSel(GetDlgItem(hw, IDC_GPU_COLOR_DEPTH), i);