From 5420fcaf3ad41ba504e55ca366fc56ce19996e8c Mon Sep 17 00:00:00 2001 From: FlatOutPS2 Date: Thu, 15 Sep 2016 12:48:12 +0200 Subject: [PATCH] GSdx: Add Windows UI options for HW hacks Add UI options for Auto Flush and Unscale Point Line HW hacks. --- plugins/GSdx/GSSetting.cpp | 9 ++++++--- plugins/GSdx/GSSetting.h | 1 + plugins/GSdx/GSSettingsDlg.cpp | 8 +++++++- plugins/GSdx/GSdx.rc | 30 ++++++++++++++++-------------- plugins/GSdx/resource.h | 2 ++ 5 files changed, 32 insertions(+), 18 deletions(-) diff --git a/plugins/GSdx/GSSetting.cpp b/plugins/GSdx/GSSetting.cpp index 29d9deeab2..96d56f8b73 100644 --- a/plugins/GSdx/GSSetting.cpp +++ b/plugins/GSdx/GSSetting.cpp @@ -121,6 +121,12 @@ const char* dialog_message(int ID, bool* updateText) { return "Enables external shader for additional post-processing effects."; case IDC_FXAA: return "Enables fast approximate anti-aliasing. Small performance impact."; + case IDC_AUTO_FLUSH: + return "Force a primitive flush when a framebuffer is also an input texture. Fixes some processing effects such as the shadows in the Jak series and radiosity in GTA:SA.\n" + "Warning: it's very costly on the performance.\n\n" + "Note: OpenGL HW renderer is able to handle Jak shadows at full speed without this option."; + case IDC_UNSCALE_POINT_LINE: + return "Increases the width of lines at higher than native resolutions. This ensures that the lines will keep the correct proportions and prevents aliasing. Avoids empty lines on the screen in games such as Ridge Racer V, and clears FMV's obscured by a grid like Silent Hill series and Dirge of Cerberus."; #ifdef _WIN32 // DX9 only case IDC_FBA: @@ -131,9 +137,6 @@ const char* dialog_message(int ID, bool* updateText) { #ifdef __linux__ case IDC_LINEAR_PRESENT: return "Use bilinear filtering when Upscaling/Downscaling the image to the screen. Disable it if you want a sharper/pixelated output."; - case IDC_AUTO_FLUSH: - return "Force a primitive flush when framebuffer is also an input texture. Warning: it is very costly on the performances. Help to fix some processing effects such as Jak shadows, GTA radiosity..." - "Note: openGL HW renderer is able to handle Jak shadows at full speed without this option."; #endif // Exclusive for Hardware Renderer case IDC_PRELOAD_GS: diff --git a/plugins/GSdx/GSSetting.h b/plugins/GSdx/GSSetting.h index 93f6b54eff..2fdd99c86b 100644 --- a/plugins/GSdx/GSSetting.h +++ b/plugins/GSdx/GSSetting.h @@ -77,5 +77,6 @@ enum { IDC_LARGE_FB, IDC_LINEAR_PRESENT, IDC_AUTO_FLUSH, + IDC_UNSCALE_POINT_LINE, }; #endif diff --git a/plugins/GSdx/GSSettingsDlg.cpp b/plugins/GSdx/GSSettingsDlg.cpp index b813129dca..44690e8ac3 100644 --- a/plugins/GSdx/GSSettingsDlg.cpp +++ b/plugins/GSdx/GSSettingsDlg.cpp @@ -388,7 +388,6 @@ void GSSettingsDlg::UpdateControls() ShowWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_DATE), ogl ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT), ogl ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(m_hWnd, IDC_ACCURATE_BLEND_UNIT_TEXT), ogl ? SW_SHOW : SW_HIDE); - ShowWindow(GetDlgItem(m_hWnd, IDC_TC_DEPTH), ogl ? SW_SHOW : SW_HIDE); EnableWindow(GetDlgItem(m_hWnd, IDC_CRC_LEVEL), hw); EnableWindow(GetDlgItem(m_hWnd, IDC_LARGE_FB), integer_scaling != 1 && hw); @@ -671,6 +670,8 @@ void GSHacksDlg::OnInit() CheckDlgButton(m_hWnd, IDC_SAFE_FBMASK, theApp.GetConfigB("UserHacks_safe_fbmask")); CheckDlgButton(m_hWnd, IDC_TC_DEPTH, theApp.GetConfigB("UserHacks_DisableDepthSupport")); CheckDlgButton(m_hWnd, IDC_FAST_TC_INV, theApp.GetConfigB("UserHacks_DisablePartialInvalidation")); + CheckDlgButton(m_hWnd, IDC_AUTO_FLUSH, theApp.GetConfigB("UserHacks_AutoFlush")); + CheckDlgButton(m_hWnd, IDC_UNSCALE_POINT_LINE, theApp.GetConfigB("UserHacks_unscale_point_line")); ComboBoxInit(IDC_ROUND_SPRITE, theApp.m_gs_hack, theApp.GetConfigI("UserHacks_round_sprite_offset")); ComboBoxInit(IDC_SPRITEHACK, theApp.m_gs_hack, theApp.GetConfigI("UserHacks_SpriteHack")); @@ -688,6 +689,7 @@ void GSHacksDlg::OnInit() ShowWindow(GetDlgItem(m_hWnd, IDC_ALPHAHACK), ogl ? SW_HIDE : SW_SHOW); ShowWindow(GetDlgItem(m_hWnd, IDC_SAFE_FBMASK), ogl ? SW_SHOW : SW_HIDE); EnableWindow(GetDlgItem(m_hWnd, IDC_TC_DEPTH), ogl); + EnableWindow(GetDlgItem(m_hWnd, IDC_UNSCALE_POINT_LINE), ogl && !native); EnableWindow(GetDlgItem(m_hWnd, IDC_MSAACB), !ogl); EnableWindow(GetDlgItem(m_hWnd, IDC_MSAA_TEXT), !ogl); EnableWindow(GetDlgItem(m_hWnd, IDC_SPRITEHACK), !native); @@ -716,6 +718,8 @@ void GSHacksDlg::OnInit() AddTooltip(IDC_SAFE_FBMASK); AddTooltip(IDC_TC_DEPTH); AddTooltip(IDC_FAST_TC_INV); + AddTooltip(IDC_AUTO_FLUSH); + AddTooltip(IDC_UNSCALE_POINT_LINE); } void GSHacksDlg::UpdateControls() @@ -753,6 +757,8 @@ bool GSHacksDlg::OnMessage(UINT message, WPARAM wParam, LPARAM lParam) theApp.SetConfig("UserHacks_safe_fbmask", (int)IsDlgButtonChecked(m_hWnd, IDC_SAFE_FBMASK)); theApp.SetConfig("UserHacks_DisableDepthSupport", (int)IsDlgButtonChecked(m_hWnd, IDC_TC_DEPTH)); theApp.SetConfig("UserHacks_DisablePartialInvalidation", (int)IsDlgButtonChecked(m_hWnd, IDC_FAST_TC_INV)); + theApp.SetConfig("UserHacks_AutoFlush", (int)IsDlgButtonChecked(m_hWnd, IDC_AUTO_FLUSH)); + theApp.SetConfig("UserHacks_unscale_point_line", (int)IsDlgButtonChecked(m_hWnd, IDC_UNSCALE_POINT_LINE)); unsigned int TCOFFSET = SendMessage(GetDlgItem(m_hWnd, IDC_TCOFFSETX), UDM_GETPOS, 0, 0) & 0xFFFF; TCOFFSET |= (SendMessage(GetDlgItem(m_hWnd, IDC_TCOFFSETY), UDM_GETPOS, 0, 0) & 0xFFFF) << 16; diff --git a/plugins/GSdx/GSdx.rc b/plugins/GSdx/GSdx.rc index 9daf771818..3f23029662 100644 --- a/plugins/GSdx/GSdx.rc +++ b/plugins/GSdx/GSdx.rc @@ -110,13 +110,13 @@ IDB_PSX_NULL BITMAP "res\\psx-logo-null.bmp" // Dialog // -IDD_HACKS DIALOGEX 0, 0, 161, 222 +IDD_HACKS DIALOGEX 0, 0, 161, 235 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Hacks Configuration" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "OK",IDOK,89,201,57,14 - GROUPBOX "USE AT YOUR OWN RISK!",IDC_STATIC,7,7,147,193,0,WS_EX_TRANSPARENT + DEFPUSHBUTTON "OK",IDOK,89,214,57,14 + GROUPBOX "USE AT YOUR OWN RISK!",IDC_STATIC,7,7,147,206,0,WS_EX_TRANSPARENT CONTROL "Preload Frame Data",IDC_PRELOAD_GS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,115,80,8 RTEXT "MSAA:",IDC_MSAA_TEXT,62,20,22,8 RTEXT "Skipdraw:",IDC_STATIC,52,36,32,8 @@ -130,17 +130,19 @@ BEGIN CONTROL "Alpha Stencil",IDC_ALPHASTENCIL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,77,57,8 CONTROL "Align Sprite",IDC_ALIGN_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88,51,58,8 CONTROL "Disable Depth Emulation",IDC_TC_DEPTH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,90,92,8 - RTEXT "TC Offset X:",IDC_STATIC,40,166,44,8 - EDITTEXT IDC_TCOFFSETX2,88,163,58,14,ES_RIGHT | ES_AUTOHSCROLL - CONTROL "",IDC_TCOFFSETX,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,135,161,11,14 - EDITTEXT IDC_TCOFFSETY2,88,181,58,14,ES_RIGHT | ES_AUTOHSCROLL - CONTROL "",IDC_TCOFFSETY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,135,179,11,14 - COMBOBOX IDC_ROUND_SPRITE,88,128,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Round Sprite:",IDC_ROUND_SPRITE_TEXT,39,131,45,8 - RTEXT "Sprite:",IDC_SPRITEHACK_TEXT,62,147,22,8 - COMBOBOX IDC_SPRITEHACK,88,145,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "TC Offset X:",IDC_STATIC,40,179,44,8 + EDITTEXT IDC_TCOFFSETX2,88,176,58,14,ES_RIGHT | ES_AUTOHSCROLL + CONTROL "",IDC_TCOFFSETX,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,135,174,11,14 + EDITTEXT IDC_TCOFFSETY2,88,194,58,14,ES_RIGHT | ES_AUTOHSCROLL + CONTROL "",IDC_TCOFFSETY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,135,192,11,14 + COMBOBOX IDC_ROUND_SPRITE,88,141,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Round Sprite:",IDC_ROUND_SPRITE_TEXT,39,144,45,8 + RTEXT "Sprite:",IDC_SPRITEHACK_TEXT,62,160,22,8 + COMBOBOX IDC_SPRITEHACK,88,158,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Fast Texture Invalidation",IDC_FAST_TC_INV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,102,92,8 - RTEXT "TC Offset Y:",IDC_STATIC,40,184,44,8 + CONTROL "Auto Flush", IDC_AUTO_FLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88,128,45,8 + CONTROL "Unscale Point Line", IDC_UNSCALE_POINT_LINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,128,70,8 + RTEXT "TC Offset Y:",IDC_STATIC,40,197,44,8 END IDD_SHADER DIALOGEX 0, 0, 248, 250 @@ -290,7 +292,7 @@ BEGIN VERTGUIDE, 88 VERTGUIDE, 146 TOPMARGIN, 7 - BOTTOMMARGIN, 216 + BOTTOMMARGIN, 229 HORZGUIDE, 51 HORZGUIDE, 64 HORZGUIDE, 77 diff --git a/plugins/GSdx/resource.h b/plugins/GSdx/resource.h index 006e8e73a3..cbe8017862 100644 --- a/plugins/GSdx/resource.h +++ b/plugins/GSdx/resource.h @@ -104,6 +104,8 @@ #define IDC_SAFE_FBMASK 2100 #define IDC_FAST_TC_INV 2101 #define IDC_LARGE_FB 2102 +#define IDC_AUTO_FLUSH 2103 +#define IDC_UNSCALE_POINT_LINE 2104 #define IDR_CONVERT_FX 10000 #define IDR_TFX_FX 10001 #define IDR_MERGE_FX 10002