diff --git a/.gitignore b/.gitignore index 21c2b21a3..bf78a5617 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ /desmume/src/frontend/windows/__bins /desmume/src/frontend/windows/*.tlog /desmume/src/frontend/windows/*.aps -/desmume/src/frontend/windows/.vs/desmume/v15/ .vs/VSWorkspaceState.json .vs/slnx.sqlite *.user @@ -13,6 +12,7 @@ *.VC.db *.VC.opendb *.o +*.ipch .deps *.dirstamp Makefile.in diff --git a/desmume/src/NDSSystem.h b/desmume/src/NDSSystem.h index f918e36ee..5ced00d72 100755 --- a/desmume/src/NDSSystem.h +++ b/desmume/src/NDSSystem.h @@ -534,8 +534,6 @@ extern struct TCommonSettings , GFX3D_Renderer_Multisample(false) , GFX3D_Renderer_MultisampleSize(0) , GFX3D_Renderer_TextureScalingFactor(1) // Possible values: 1, 2, 4 - , GFX3D_Renderer_AntiAliasingSamples(8) // Possible values: 2, 4, 8 - , GFX3D_Renderer_AntiAliasingLimit(false) , GFX3D_Renderer_TextureDeposterize(false) , GFX3D_Renderer_TextureSmoothing(false) , GFX3D_TXTHack(false) @@ -596,8 +594,6 @@ extern struct TCommonSettings bool GFX3D_Renderer_Multisample; int GFX3D_Renderer_MultisampleSize; int GFX3D_Renderer_TextureScalingFactor; //must be one of {1,2,4} - int GFX3D_Renderer_AntiAliasingSamples; //must be one of {2,4,8} - bool GFX3D_Renderer_AntiAliasingLimit; bool GFX3D_Renderer_TextureDeposterize; bool GFX3D_Renderer_TextureSmoothing; bool GFX3D_TXTHack; diff --git a/desmume/src/OGLRender.cpp b/desmume/src/OGLRender.cpp index 29f09f629..d7da0061f 100755 --- a/desmume/src/OGLRender.cpp +++ b/desmume/src/OGLRender.cpp @@ -1489,10 +1489,6 @@ GLsizei OpenGLRenderer::GetLimitedMultisampleSize() const // in the future, then this would be the place to reimplement it. workingMultisamples = 2; } - else if (CommonSettings.GFX3D_Renderer_AntiAliasingLimit && CommonSettings.GFX3D_Renderer_AntiAliasingSamples == 2) - { - maxMultisamples = 2; // Only used when manually limiting. - } else { // Ensure that workingMultisamples is a power-of-two, which is what OpenGL likes. diff --git a/desmume/src/frontend/windows/main.cpp b/desmume/src/frontend/windows/main.cpp index b49c78d50..7f8f781e0 100755 --- a/desmume/src/frontend/windows/main.cpp +++ b/desmume/src/frontend/windows/main.cpp @@ -424,6 +424,9 @@ static int sndcoretype=SNDCORE_DIRECTX; static int sndbuffersize=DESMUME_SAMPLE_RATE*8/60; int sndvolume=100; +const int possibleMSAA[] = {0, 2, 4, 8, 16, 32}; +int maxSamples=32; + SoundInterface_struct *SNDCoreList[] = { &SNDDummy, &SNDDIRECTX, @@ -2375,14 +2378,8 @@ int _main() CommonSettings.GFX3D_LineHack = GetPrivateProfileBool("3D", "EnableLineHack", 1, IniName); CommonSettings.GFX3D_TXTHack = GetPrivateProfileBool("3D", "EnableTXTHack", 0, IniName); //default is off. CommonSettings.GFX3D_Renderer_Multisample = GetPrivateProfileBool("3D", "EnableAntiAliasing", 0, IniName); - CommonSettings.GFX3D_Renderer_AntiAliasingLimit = GetPrivateProfileBool("3D", "AntiAliasingLimit", 0, IniName); - CommonSettings.GFX3D_Renderer_AntiAliasingSamples = GetPrivateProfileInt("3D", "AntiAliasingSamples", 8, IniName); //only place this user variable gets read - if (CommonSettings.GFX3D_Renderer_AntiAliasingSamples != 2 && CommonSettings.GFX3D_Renderer_AntiAliasingSamples != 4 && - CommonSettings.GFX3D_Renderer_AntiAliasingSamples != 8) //so just check for invalid values here - { - CommonSettings.GFX3D_Renderer_AntiAliasingSamples = 8; - WritePrivateProfileInt("3D", "AntiAliasingSamples", CommonSettings.GFX3D_Renderer_AntiAliasingSamples, IniName); - } + CommonSettings.GFX3D_Renderer_MultisampleSize = GetPrivateProfileInt("3D", "MultisampleSize", 0, IniName); + CheckValidMSAA(CommonSettings.GFX3D_Renderer_MultisampleSize); Change3DCoreWithFallbackAndSave(cur3DCore); @@ -2621,6 +2618,23 @@ 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; //Just disable for now until I find a better solution + WritePrivateProfileInt("3D","MultisampleSize",0,IniName); + } +} + void UpdateScreenRects() { @@ -5666,7 +5680,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { case WM_INITDIALOG: { - int i; + int i = 0, z = 0; HWND cur; CheckDlgButton(hw,IDC_INTERPOLATECOLOR,CommonSettings.GFX3D_HighResolutionInterpolateColor); @@ -5674,11 +5688,6 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) 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_3DSETTINGS_ANTIALIASING, CommonSettings.GFX3D_Renderer_Multisample); - CheckDlgButton(hw,IDC_MSAA_LIMIT, CommonSettings.GFX3D_Renderer_AntiAliasingLimit); - CheckDlgButton(hw,IDC_MSAA_SAMPLES_8, CommonSettings.GFX3D_Renderer_AntiAliasingSamples == 8); - CheckDlgButton(hw,IDC_MSAA_SAMPLES_4, CommonSettings.GFX3D_Renderer_AntiAliasingSamples == 4); - CheckDlgButton(hw,IDC_MSAA_SAMPLES_2, CommonSettings.GFX3D_Renderer_AntiAliasingSamples == 2); CheckDlgButton(hw,IDC_TXTHACK, CommonSettings.GFX3D_TXTHack); CheckDlgButton(hw,IDC_TEXSCALE_1, CommonSettings.GFX3D_Renderer_TextureScalingFactor == 1); @@ -5692,30 +5701,30 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) CheckDlgButton(hw,IDC_TEX_DEPOSTERIZE, CommonSettings.GFX3D_Renderer_TextureDeposterize); CheckDlgButton(hw,IDC_TEX_SMOOTH, CommonSettings.GFX3D_Renderer_TextureSmoothing); - if(CommonSettings.GFX3D_Renderer_Multisample == false) - { - cur = GetDlgItem(hw, IDC_MSAA_LIMIT); - EnableWindow(cur, FALSE); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_8); - EnableWindow(cur, FALSE); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_4); - EnableWindow(cur, FALSE); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_2); - EnableWindow(cur, FALSE); - } - else if(CommonSettings.GFX3D_Renderer_Multisample && CommonSettings.GFX3D_Renderer_AntiAliasingLimit == false) - { - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_8); - EnableWindow(cur, FALSE); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_4); - EnableWindow(cur, FALSE); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_2); - EnableWindow(cur, FALSE); - } - SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETRANGE, 0, MAKELPARAM(16, 1)); SendDlgItemMessage(hw, IDC_NUD_PRESCALEHD, UDM_SETPOS, 0, video.prescaleHD); + const char MSAADescriptions[6][9] = {"Disabled", "2x", "4x", "8x", "16x", "32x"}; + + CheckValidMSAA(CommonSettings.GFX3D_Renderer_MultisampleSize); + if(cur3DCore != 0 && cur3DCore != 2) //Not sure how to get maxSamples when renderer is null or softrast + { + maxSamples = CurrentRenderer->GetDeviceInfo().maxSamples; + if (CommonSettings.GFX3D_Renderer_MultisampleSize > maxSamples) + { + CommonSettings.GFX3D_Renderer_MultisampleSize = maxSamples; + WritePrivateProfileInt("3D", "MultisampleSize", maxSamples, IniName); + } + } + while (z <= maxSamples && i < 6) //There's a better way of handling this, I just can't think of it atm. + { + ComboBox_AddString(GetDlgItem(hw,IDC_MULTISAMPLE_SIZE),MSAADescriptions[i]); + if (z == CommonSettings.GFX3D_Renderer_MultisampleSize) + ComboBox_SetCurSel(GetDlgItem(hw,IDC_MULTISAMPLE_SIZE),i); + i++; + if(z >= 2) z *= 2; else z=2; //Double the samplesize if 2 or more; + } + for(i = 0; core3DList[i] != NULL; i++) { ComboBox_AddString(GetDlgItem(hw, IDC_3DCORE), core3DList[i]->name); @@ -5735,8 +5744,6 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) 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_Renderer_Multisample = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_ANTIALIASING); - CommonSettings.GFX3D_Renderer_AntiAliasingLimit = IsDlgCheckboxChecked(hw,IDC_MSAA_LIMIT); CommonSettings.GFX3D_TXTHack = IsDlgCheckboxChecked(hw,IDC_TXTHACK); int newPrescaleHD = video.prescaleHD; @@ -5746,10 +5753,6 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) newPrescaleHD = LOWORD(scaleResult); } - if(IsDlgCheckboxChecked(hw,IDC_MSAA_SAMPLES_8)) CommonSettings.GFX3D_Renderer_AntiAliasingSamples = 8; - else if(IsDlgCheckboxChecked(hw,IDC_MSAA_SAMPLES_4)) CommonSettings.GFX3D_Renderer_AntiAliasingSamples = 4; - else if(IsDlgCheckboxChecked(hw,IDC_MSAA_SAMPLES_2)) CommonSettings.GFX3D_Renderer_AntiAliasingSamples = 2; - 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; @@ -5759,6 +5762,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) 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); @@ -5784,8 +5788,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) WritePrivateProfileBool("3D", "EnableTexture", CommonSettings.GFX3D_Texture, IniName); WritePrivateProfileInt ("3D", "EnableLineHack", CommonSettings.GFX3D_LineHack, IniName); WritePrivateProfileInt ("3D", "EnableAntiAliasing", CommonSettings.GFX3D_Renderer_Multisample, IniName); - WritePrivateProfileInt ("3D", "AntiAliasingSamples", CommonSettings.GFX3D_Renderer_AntiAliasingSamples, IniName); - WritePrivateProfileBool("3D", "AntiAliasingLimit", CommonSettings.GFX3D_Renderer_AntiAliasingLimit, 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); @@ -5798,39 +5801,6 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) EndDialog(hw, TRUE); } return TRUE; - case IDC_3DSETTINGS_ANTIALIASING: - { - HWND cur; - BOOL enable = IsDlgButtonChecked(hw, IDC_3DSETTINGS_ANTIALIASING); - - cur = GetDlgItem(hw, IDC_MSAA_LIMIT); - EnableWindow(cur, enable); - if (CommonSettings.GFX3D_Renderer_AntiAliasingLimit) - { - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_8); - EnableWindow(cur, enable); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_4); - EnableWindow(cur, enable); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_2); - EnableWindow(cur, enable); - } - } - return TRUE; - case IDC_MSAA_LIMIT: - { - HWND cur; - CommonSettings.GFX3D_Renderer_AntiAliasingLimit = IsDlgButtonChecked(hw, IDC_MSAA_LIMIT); - BOOL enable = CommonSettings.GFX3D_Renderer_AntiAliasingLimit; - - WritePrivateProfileBool("3D", "AntiAliasingLimit", enable, IniName); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_8); - EnableWindow(cur, enable); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_4); - EnableWindow(cur, enable); - cur = GetDlgItem(hw, IDC_MSAA_SAMPLES_2); - EnableWindow(cur, enable); - } - return TRUE; case IDC_DEFAULT: { Change3DCoreWithFallbackAndSave(GPU3D_DEFAULT); diff --git a/desmume/src/frontend/windows/main.h b/desmume/src/frontend/windows/main.h index b65231234..c8d122d13 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 CheckValidMSAA(int userVal); extern bool frameCounterDisplay; extern bool FpsDisplay; diff --git a/desmume/src/frontend/windows/resource.h b/desmume/src/frontend/windows/resource.h index b5ad3e761..3b55c332b 100644 --- a/desmume/src/frontend/windows/resource.h +++ b/desmume/src/frontend/windows/resource.h @@ -504,10 +504,7 @@ #define IDC_S4X 1091 #define IDC_S8X 1092 #define IDC_S16X 1093 -#define IDC_MSAA_SAMPLES_2 1094 -#define IDC_MSAA_SAMPLES_4 1095 -#define IDC_MSAA_SAMPLES_8 1096 -#define IDC_MSAA_LIMIT 1097 +#define IDC_MULTISAMPLE_SIZE 1094 #define IDM_FIRMSETTINGS 1100 #define IDD_FIRMSETTINGS 1101 #define IDC_EDIT1 1102 @@ -1092,8 +1089,8 @@ #define IDC_AUTOLOADLUA 64001 #define IDC_TXTHACK 64002 #define ID_LABEL_TXTHACK1 64003 -#define IDC_3DSETTINGS_ANTIALIASING 64004 -#define ID_LABEL_TXTHACK2 64005 +#define ID_LABEL_TXTHACK2 64004 +#define ID_LABEL_MSAA_SAMPLES 64005 // Next default values for new objects // diff --git a/desmume/src/frontend/windows/resources.rc b/desmume/src/frontend/windows/resources.rc index 7bf9e6cda..a09e697c4 100644 --- a/desmume/src/frontend/windows/resources.rc +++ b/desmume/src/frontend/windows/resources.rc @@ -110,46 +110,42 @@ BEGIN PUSHBUTTON "&Cancel",IDCANCEL,127,94,50,16 END -IDD_3DSETTINGS DIALOGEX 0, 0, 310, 218 +IDD_3DSETTINGS DIALOGEX 0, 0, 311, 182 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "3D settings" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - COMBOBOX IDC_3DCORE,15,23,163,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "3D Rendering Engine",IDC_STATIC,7,7,180,34 + COMBOBOX IDC_3DCORE,15,20,108,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Default",IDC_DEFAULT,130,19,50,15 + GROUPBOX "SoftRasterizer Options",IDC_STATIC,7,44,180,83 CONTROL "Unrealistically High-Precision Color Interpolation",IDC_INTERPOLATECOLOR, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,62,165,10 - CONTROL "Enable Edge Marking",IDC_3DSETTINGS_EDGEMARK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,118,84,10 - CONTROL "Enable Fog",IDC_3DSETTINGS_FOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,128,52,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,56,165,10 + CONTROL "Enable TXT Hack",IDC_TXTHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,67,73,10 + LTEXT "Fixes text bugs in some games.(e.g. Etrian Odyssey)",ID_LABEL_TXTHACK1,13,77,167,11 + LTEXT "You may need to toggle off && on by scene.",ID_LABEL_TXTHACK2,13,85,165,11 + CONTROL "Enable Line Hack",IDC_3DSETTINGS_LINEHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,96,73,10 + 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 + GROUPBOX "OpenGL Options",IDC_STATIC,7,131,180,43 + LTEXT "Multisample Antialiasing:",ID_LABEL_MSAA_SAMPLES,13,145,78,8 + COMBOBOX IDC_MULTISAMPLE_SIZE,95,144,84,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Smooth Textures",IDC_TEX_SMOOTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,160,75,10 + GROUPBOX "General Options",IDC_STATIC,194,7,109,146 + LTEXT "GPU Scaling Factor",IDC_STATIC,200,20,64,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 "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 + CONTROL "Deposterize Textures",IDC_TEX_DEPOSTERIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,71,79,10 + 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,79,10 + CONTROL "Texture Scaling 4x",IDC_TEXSCALE_4,"Button",BS_AUTORADIOBUTTON,200,102,72,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,138,67,10 - CONTROL "Enable Multisample Antialiasing",IDC_3DSETTINGS_ANTIALIASING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,151,114,10 - CONTROL "Limit MSAA Samples",IDC_MSAA_LIMIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,161,90,10 - CONTROL "8x Samples",IDC_MSAA_SAMPLES_8,"Button",BS_AUTORADIOBUTTON,13,172,74,10 - CONTROL "4x Samples",IDC_MSAA_SAMPLES_4,"Button",BS_AUTORADIOBUTTON,13,182,74,10 - CONTROL "2x Samples",IDC_MSAA_SAMPLES_2,"Button",BS_AUTORADIOBUTTON,13,192,74,10 - EDITTEXT IDC_TEXT_PRESCALEHD,267,16,20,14,ES_AUTOHSCROLL - CONTROL "",IDC_NUD_PRESCALEHD,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,286,16,11,14 - PUSHBUTTON "Default",IDC_DEFAULT,194,163,50,14 - DEFPUSHBUTTON "OK",IDOK,194,194,50,14 - PUSHBUTTON "Cancel",IDCANCEL,253,194,50,14 - GROUPBOX "Renderer:",IDC_STATIC,7,7,180,39 - GROUPBOX "SoftRasterizer Options",IDC_STATIC,7,50,180,82 - LTEXT "Fixes some graphical bugs involving lines, but causes some other bugs. Not many games use lines.",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK2,14,112,170,18 - CONTROL "Enable Line Hack",IDC_3DSETTINGS_LINEHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,102,73,10 - LTEXT "Fixes text bugs in some games.(e.g. Etrian Odyssey)",ID_LABEL_TXTHACK1,14,83,167,11 - CONTROL "Enable TXT Hack",IDC_TXTHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,73,73,10 - GROUPBOX "OpenGL Renderer Options",IDC_STATIC,7,137,180,78 - GROUPBOX "General Options",IDC_STATIC,194,6,109,146 - LTEXT "GPU Scaling Factor",IDC_STATIC,200,19,64,8 - CONTROL "Texture Scaling 1x",IDC_TEXSCALE_1,"Button",BS_AUTORADIOBUTTON,200,81,77,10 - CONTROL "Texture Scaling 2x",IDC_TEXSCALE_2,"Button",BS_AUTORADIOBUTTON,200,91,79,10 - CONTROL "Texture Scaling 4x",IDC_TEXSCALE_4,"Button",BS_AUTORADIOBUTTON,200,101,72,10 - CONTROL "Deposterize Textures",IDC_TEX_DEPOSTERIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,70,79,10 - CONTROL "Smooth Textures",IDC_TEX_SMOOTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,202,75,10 - LTEXT "You may need to toggle off && on by scene.",ID_LABEL_TXTHACK2,14,91,165,11 - CONTROL "GPU Color Depth 24 bit",IDC_GPU_24BPP,"Button",BS_AUTORADIOBUTTON,200,33,98,10 - CONTROL "GPU Color Depth 18 bit",IDC_GPU_18BPP,"Button",BS_AUTORADIOBUTTON,200,43,98,10 - CONTROL "GPU Color Depth 15 bit",IDC_GPU_15BPP,"Button",BS_AUTORADIOBUTTON,200,53,98,10 + DEFPUSHBUTTON "OK",IDOK,194,159,50,15 + PUSHBUTTON "Cancel",IDCANCEL,254,159,50,15 END IDD_ABOUT_BOX DIALOGEX 0, 0, 268, 198