mirror of
https://github.com/libretro/pcsx2.git
synced 2024-11-28 20:00:44 +00:00
gsdx-gui: Add an option in hw hacks to control the half bottom detection.
Automatic, Force Disabled, Force Enabled. Automatic - automatically determinate if a game needs the half screen fix. Force Disabled - fully disables the half bottom fix. It will help Xenosaga games. Force Enabled - fully enables the half bottom fix. Will help Lord of the Rings Two Towers, Superman Shadows of Apokolips, Midnight Club 3.
This commit is contained in:
parent
f5eeaf1baa
commit
f9e3605254
@ -266,9 +266,9 @@ void GSdxApp::Init()
|
||||
m_gs_trifilter.push_back(GSSetting(static_cast<uint32>(TriFiltering::PS2), "Trilinear", ""));
|
||||
m_gs_trifilter.push_back(GSSetting(static_cast<uint32>(TriFiltering::Forced), "Trilinear", "Ultra/Slow"));
|
||||
|
||||
m_gs_gl_ext.push_back(GSSetting(-1, "Automatic", "Default"));
|
||||
m_gs_gl_ext.push_back(GSSetting(0, "Force-Disabled", ""));
|
||||
m_gs_gl_ext.push_back(GSSetting(1, "Force-Enabled", ""));
|
||||
m_gs_generic_list.push_back(GSSetting(-1, "Automatic", "Default"));
|
||||
m_gs_generic_list.push_back(GSSetting(0, "Force-Disabled", ""));
|
||||
m_gs_generic_list.push_back(GSSetting(1, "Force-Enabled", ""));
|
||||
|
||||
m_gs_hack.push_back(GSSetting(0, "Off", "Default"));
|
||||
m_gs_hack.push_back(GSSetting(1, "Half", ""));
|
||||
@ -359,7 +359,6 @@ void GSdxApp::Init()
|
||||
#else
|
||||
m_default_configuration["linux_replay"] = "1";
|
||||
#endif
|
||||
|
||||
m_default_configuration["aa1"] = "0";
|
||||
m_default_configuration["accurate_date"] = "1";
|
||||
m_default_configuration["accurate_blending_unit"] = "1";
|
||||
|
@ -72,8 +72,8 @@ public:
|
||||
std::vector<GSSetting> m_gs_max_anisotropy;
|
||||
std::vector<GSSetting> m_gs_bifilter;
|
||||
std::vector<GSSetting> m_gs_trifilter;
|
||||
std::vector<GSSetting> m_gs_gl_ext;
|
||||
std::vector<GSSetting> m_gs_hack;
|
||||
std::vector<GSSetting> m_gs_generic_list;
|
||||
std::vector<GSSetting> m_gs_offset_hack;
|
||||
std::vector<GSSetting> m_gs_hw_mipmapping;
|
||||
std::vector<GSSetting> m_gs_crc_level;
|
||||
|
@ -111,13 +111,13 @@ IDB_NULL BITMAP "res\\logo-null.bmp"
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_HACKS DIALOGEX 0, 0, 210, 274
|
||||
IDD_HACKS DIALOGEX 0, 0, 210, 289
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Advanced Settings & Hacks"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
// Rendering Hacks:
|
||||
GROUPBOX "Rendering Hacks",IDC_STATIC,7,7,196,99,0,WS_EX_TRANSPARENT
|
||||
GROUPBOX "Rendering Hacks",IDC_STATIC,7,7,196,114,0,WS_EX_TRANSPARENT
|
||||
// Column one - HW Hacks
|
||||
CONTROL "Alpha Stencil",IDC_ALPHASTENCIL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,19,57,8
|
||||
CONTROL "Auto Flush",IDC_AUTO_FLUSH_HW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,32,55,8
|
||||
@ -130,40 +130,42 @@ BEGIN
|
||||
CONTROL "Preload Frame Data",IDC_PRELOAD_GS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,106,58,80,8
|
||||
// Columns end
|
||||
//
|
||||
RTEXT "Trilinear Filtering:",IDC_TRI_FILTER_TEXT,16,73,60,8
|
||||
COMBOBOX IDC_TRI_FILTER,80,70,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Skipdraw Range:",IDC_SKIPDRAWHACK_TEXT,14,88,62,8
|
||||
EDITTEXT IDC_SKIPDRAWOFFSETEDIT,80,85,58,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||
RTEXT "Half-screen Fix:",IDC_HALF_SCREEN_TS_TEXT,14,73,62,8
|
||||
COMBOBOX IDC_HALF_SCREEN_TS,80,70,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Trilinear Filtering:",IDC_TRI_FILTER_TEXT,16,88,60,8
|
||||
COMBOBOX IDC_TRI_FILTER,80,85,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Skipdraw Range:",IDC_SKIPDRAWHACK_TEXT,14,103,62,8
|
||||
EDITTEXT IDC_SKIPDRAWOFFSETEDIT,80,100,58,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_SKIPDRAWOFFSET,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,0,0,11,14
|
||||
EDITTEXT IDC_SKIPDRAWHACKEDIT,138,85,58,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||
EDITTEXT IDC_SKIPDRAWHACKEDIT,138,100,58,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_SKIPDRAWHACK,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,0,0,11,14
|
||||
// Upscaling Hacks:
|
||||
GROUPBOX "Upscaling Hacks",IDC_STATIC,7,109,196,75,0,WS_EX_TRANSPARENT
|
||||
CONTROL "Align Sprite",IDC_ALIGN_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,121,55,8
|
||||
CONTROL "Merge Sprite",IDC_MERGE_PP_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,121,55,8
|
||||
CONTROL "Wild Arms Offset",IDC_WILDHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,121,70,8
|
||||
RTEXT "Half-pixel Offset:",IDC_OFFSETHACK_TEXT,14,136,62,8
|
||||
COMBOBOX IDC_OFFSETHACK,80,133,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Round Sprite:",IDC_ROUND_SPRITE_TEXT,30,151,46,8
|
||||
COMBOBOX IDC_ROUND_SPRITE,80,148,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Texture Offsets:",IDC_TCOFFSET_TEXT,14,166,62,8
|
||||
RTEXT "X:",IDC_TCOFFSETX_TEXT,81,166,10,8
|
||||
EDITTEXT IDC_TCOFFSETX2,94,163,44,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||
GROUPBOX "Upscaling Hacks",IDC_STATIC,7,124,196,75,0,WS_EX_TRANSPARENT
|
||||
CONTROL "Align Sprite",IDC_ALIGN_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,136,55,8
|
||||
CONTROL "Merge Sprite",IDC_MERGE_PP_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,136,55,8
|
||||
CONTROL "Wild Arms Offset",IDC_WILDHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,136,70,8
|
||||
RTEXT "Half-pixel Offset:",IDC_OFFSETHACK_TEXT,14,151,62,8
|
||||
COMBOBOX IDC_OFFSETHACK,80,148,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Round Sprite:",IDC_ROUND_SPRITE_TEXT,30,166,46,8
|
||||
COMBOBOX IDC_ROUND_SPRITE,80,163,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Texture Offsets:",IDC_TCOFFSET_TEXT,14,181,62,8
|
||||
RTEXT "X:",IDC_TCOFFSETX_TEXT,81,181,10,8
|
||||
EDITTEXT IDC_TCOFFSETX2,94,178,44,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_TCOFFSETX,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,0,0,11,14
|
||||
RTEXT "Y:",IDC_TCOFFSETY_TEXT,139,166,10,8
|
||||
EDITTEXT IDC_TCOFFSETY2,152,163,44,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||
RTEXT "Y:",IDC_TCOFFSETY_TEXT,139,181,10,8
|
||||
EDITTEXT IDC_TCOFFSETY2,152,178,44,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_TCOFFSETY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,0,0,11,14
|
||||
// OpenGL Advanced Settings:
|
||||
GROUPBOX "OpenGL Advanced Settings",IDC_STATIC,7,187,196,61,0,WS_EX_TRANSPARENT
|
||||
RTEXT "Geometry Shader:",IDC_GEOMETRY_SHADER_TEXT,14,201,62,8
|
||||
COMBOBOX IDC_GEOMETRY_SHADER_OVERRIDE,80,198,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Image Load Store:",IDC_IMAGE_LOAD_STORE_TEXT,14,216,62,8
|
||||
COMBOBOX IDC_IMAGE_LOAD_STORE,80,213,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Sparse Texture:",IDC_SPARSE_TEXTURE_TEXT,14,231,62,8
|
||||
COMBOBOX IDC_SPARSE_TEXTURE,80,228,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
GROUPBOX "OpenGL Advanced Settings",IDC_STATIC,7,202,196,61,0,WS_EX_TRANSPARENT
|
||||
RTEXT "Geometry Shader:",IDC_GEOMETRY_SHADER_TEXT,14,216,62,8
|
||||
COMBOBOX IDC_GEOMETRY_SHADER_OVERRIDE,80,213,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Image Load Store:",IDC_IMAGE_LOAD_STORE_TEXT,14,231,62,8
|
||||
COMBOBOX IDC_IMAGE_LOAD_STORE,80,228,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Sparse Texture:",IDC_SPARSE_TEXTURE_TEXT,14,246,62,8
|
||||
COMBOBOX IDC_SPARSE_TEXTURE,80,243,116,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
// General Settings:
|
||||
DEFPUSHBUTTON "OK",IDOK,52,254,50,14
|
||||
DEFPUSHBUTTON "Cancel",IDCANCEL,108,254,50,14
|
||||
DEFPUSHBUTTON "OK",IDOK,52,269,50,14
|
||||
DEFPUSHBUTTON "Cancel",IDCANCEL,108,269,50,14
|
||||
END
|
||||
|
||||
IDD_SHADER DIALOGEX 0, 0, 248, 230
|
||||
|
@ -317,11 +317,11 @@ void populate_hw_table(GtkWidget* hw_table)
|
||||
void populate_gl_table(GtkWidget* gl_table)
|
||||
{
|
||||
GtkWidget* gl_gs_label = left_label("Geometry Shader:");
|
||||
GtkWidget* gl_gs_combo = CreateComboBoxFromVector(theApp.m_gs_gl_ext, "override_geometry_shader");
|
||||
GtkWidget* gl_gs_combo = CreateComboBoxFromVector(theApp.m_gs_generic_list, "override_geometry_shader");
|
||||
GtkWidget* gl_ils_label = left_label("Image Load Store:");
|
||||
GtkWidget* gl_ils_combo = CreateComboBoxFromVector(theApp.m_gs_gl_ext, "override_GL_ARB_shader_image_load_store");
|
||||
GtkWidget* gl_ils_combo = CreateComboBoxFromVector(theApp.m_gs_generic_list, "override_GL_ARB_shader_image_load_store");
|
||||
GtkWidget* gl_sps_label = left_label("Sparse Texture:");
|
||||
GtkWidget* gl_sps_combo = CreateComboBoxFromVector(theApp.m_gs_gl_ext, "override_GL_ARB_sparse_texture");
|
||||
GtkWidget* gl_sps_combo = CreateComboBoxFromVector(theApp.m_gs_generic_list, "override_GL_ARB_sparse_texture");
|
||||
|
||||
AddTooltip(gl_gs_label, gl_gs_combo, IDC_GEOMETRY_SHADER_OVERRIDE);
|
||||
AddTooltip(gl_ils_label, gl_ils_combo, IDC_IMAGE_LOAD_STORE);
|
||||
@ -462,6 +462,8 @@ void populate_hack_table(GtkWidget* hack_table)
|
||||
GtkWidget* stretch_hack_label = left_label("Round Sprite:");
|
||||
GtkWidget* trilinear_box = CreateComboBoxFromVector(theApp.m_gs_trifilter, "UserHacks_TriFilter");
|
||||
GtkWidget* trilinear_label = left_label("Trilinear Filtering:");
|
||||
GtkWidget* half_screen_ts_box = CreateComboBoxFromVector(theApp.m_gs_generic_list, "UserHacks_Half_Bottom_Override");
|
||||
GtkWidget* half_screen_ts_label = left_label("Half-screen Fix:");
|
||||
|
||||
// Reuse windows helper string :)
|
||||
AddTooltip(hack_offset_label, IDC_OFFSETHACK);
|
||||
@ -485,6 +487,8 @@ void populate_hack_table(GtkWidget* hack_table)
|
||||
AddTooltip(hack_wrap_mem, IDC_MEMORY_WRAPPING);
|
||||
AddTooltip(trilinear_box, IDC_TRI_FILTER);
|
||||
AddTooltip(trilinear_label, IDC_TRI_FILTER);
|
||||
AddTooltip(half_screen_ts_box, IDC_HALF_SCREEN_TS);
|
||||
AddTooltip(half_screen_ts_label, IDC_HALF_SCREEN_TS);
|
||||
|
||||
|
||||
s_table_line = 0;
|
||||
@ -495,7 +499,8 @@ void populate_hack_table(GtkWidget* hack_table)
|
||||
InsertWidgetInTable(hack_table , hack_depth_check , hack_merge_sprite);
|
||||
InsertWidgetInTable(hack_table , hack_safe_features , preload_gs_check);
|
||||
InsertWidgetInTable(hack_table , hack_fast_inv , hack_wild_check);
|
||||
// Other upscaling hacks
|
||||
// Other hacks
|
||||
InsertWidgetInTable(hack_table , half_screen_ts_label, half_screen_ts_box);
|
||||
InsertWidgetInTable(hack_table , trilinear_label , trilinear_box);
|
||||
InsertWidgetInTable(hack_table , hack_offset_label , hack_offset_box);
|
||||
InsertWidgetInTable(hack_table , stretch_hack_label , stretch_hack_box );
|
||||
|
@ -37,6 +37,11 @@ const char* dialog_message(int ID, bool* updateText) {
|
||||
" Rendering is smoother but it could generate a few glitches. If upscaling is enabled, this setting is recommended over 'Bilinear Forced'\n\n"
|
||||
"Bilinear Forced:\nAlways enable interpolation. Rendering is smoother but it could generate some glitches.\n\n"
|
||||
"Bilinear PS2:\nUse same mode as the PS2. It is the more accurate option.";
|
||||
case IDC_HALF_SCREEN_TS:
|
||||
return "Control the half-screen fix detection on texture shuffling.\n\n"
|
||||
"Automatic:\nUses an algorithm to automatically enable or disable the detection.\n\n"
|
||||
"Force-Disabled:\nDisables the detection. Will cause visual bugs in many games. It helps Xenosaga games.\n\n"
|
||||
"Force-Enabled:\nAlways enables the detection. Use it when a game has half-screen issues.";
|
||||
case IDC_TRI_FILTER:
|
||||
return "Control the texture tri-filtering of the emulation.\n\n"
|
||||
"None:\nNo extra trilinear filtering.\n\n"
|
||||
|
@ -43,6 +43,7 @@ const char* dialog_message(int ID, bool* updateText = NULL);
|
||||
#ifndef _WIN32
|
||||
enum {
|
||||
IDC_FILTER,
|
||||
IDC_HALF_SCREEN_TS,
|
||||
IDC_TRI_FILTER,
|
||||
IDC_SKIPDRAWHACK,
|
||||
IDC_SKIPDRAWHACKEDIT,
|
||||
|
@ -640,12 +640,13 @@ void GSHacksDlg::OnInit()
|
||||
CheckDlgButton(m_hWnd, IDC_MEMORY_WRAPPING, theApp.GetConfigB("wrap_gs_mem"));
|
||||
CheckDlgButton(m_hWnd, IDC_MERGE_PP_SPRITE, theApp.GetConfigB("UserHacks_merge_pp_sprite"));
|
||||
|
||||
ComboBoxInit(IDC_HALF_SCREEN_TS, theApp.m_gs_generic_list, theApp.GetConfigI("UserHacks_Half_Bottom_Override"));
|
||||
ComboBoxInit(IDC_TRI_FILTER, theApp.m_gs_trifilter, theApp.GetConfigI("UserHacks_TriFilter"));
|
||||
ComboBoxInit(IDC_OFFSETHACK, theApp.m_gs_offset_hack, theApp.GetConfigI("UserHacks_HalfPixelOffset"));
|
||||
ComboBoxInit(IDC_ROUND_SPRITE, theApp.m_gs_hack, theApp.GetConfigI("UserHacks_round_sprite_offset"));
|
||||
ComboBoxInit(IDC_GEOMETRY_SHADER_OVERRIDE, theApp.m_gs_gl_ext, theApp.GetConfigI("override_geometry_shader"));
|
||||
ComboBoxInit(IDC_IMAGE_LOAD_STORE, theApp.m_gs_gl_ext, theApp.GetConfigI("override_GL_ARB_shader_image_load_store"));
|
||||
ComboBoxInit(IDC_SPARSE_TEXTURE, theApp.m_gs_gl_ext, theApp.GetConfigI("override_GL_ARB_sparse_texture"));
|
||||
ComboBoxInit(IDC_GEOMETRY_SHADER_OVERRIDE, theApp.m_gs_generic_list, theApp.GetConfigI("override_geometry_shader"));
|
||||
ComboBoxInit(IDC_IMAGE_LOAD_STORE, theApp.m_gs_generic_list, theApp.GetConfigI("override_GL_ARB_shader_image_load_store"));
|
||||
ComboBoxInit(IDC_SPARSE_TEXTURE, theApp.m_gs_generic_list, theApp.GetConfigI("override_GL_ARB_sparse_texture"));
|
||||
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_SKIPDRAWOFFSET), UDM_SETRANGE, 0, MAKELPARAM(10000, 0));
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_SKIPDRAWOFFSET), UDM_SETPOS, 0, MAKELPARAM(theApp.GetConfigI("UserHacks_SkipDraw_Offset"), 0));
|
||||
@ -666,6 +667,10 @@ void GSHacksDlg::OnInit()
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_SAFE_FEATURES), hwhacks);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_MEMORY_WRAPPING), hwhacks);
|
||||
|
||||
// Half-screen bottom hack:
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_HALF_SCREEN_TS), hwhacks);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_HALF_SCREEN_TS_TEXT), hwhacks);
|
||||
|
||||
// Skipdraw hack:
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_SKIPDRAWHACK_TEXT), hwhacks);
|
||||
EnableWindow(GetDlgItem(m_hWnd, IDC_SKIPDRAWOFFSETEDIT), hwhacks);
|
||||
@ -726,6 +731,7 @@ void GSHacksDlg::OnInit()
|
||||
AddTooltip(IDC_AUTO_FLUSH_HW);
|
||||
AddTooltip(IDC_SAFE_FEATURES);
|
||||
AddTooltip(IDC_MEMORY_WRAPPING);
|
||||
AddTooltip(IDC_HALF_SCREEN_TS);
|
||||
AddTooltip(IDC_TRI_FILTER);
|
||||
AddTooltip(IDC_MERGE_PP_SPRITE);
|
||||
AddTooltip(IDC_GEOMETRY_SHADER_OVERRIDE);
|
||||
@ -782,6 +788,10 @@ bool GSHacksDlg::OnMessage(UINT message, WPARAM wParam, LPARAM lParam)
|
||||
case IDOK:
|
||||
{
|
||||
INT_PTR data;
|
||||
if (ComboBoxGetSelData(IDC_HALF_SCREEN_TS, data))
|
||||
{
|
||||
theApp.SetConfig("UserHacks_Half_Bottom_Override", (int)data);
|
||||
}
|
||||
if (ComboBoxGetSelData(IDC_TRI_FILTER, data))
|
||||
{
|
||||
theApp.SetConfig("UserHacks_TriFilter", (int)data);
|
||||
|
@ -101,6 +101,8 @@
|
||||
#define IDC_SKIPDRAWHACKEDIT 2126
|
||||
#define IDC_SKIPDRAWOFFSET 2127
|
||||
#define IDC_SKIPDRAWOFFSETEDIT 2128
|
||||
#define IDC_HALF_SCREEN_TS 2129
|
||||
#define IDC_HALF_SCREEN_TS_TEXT 2130
|
||||
// Shader:
|
||||
#define IDC_SHADEBOOST 2140
|
||||
#define IDC_FXAA 2141
|
||||
|
Loading…
Reference in New Issue
Block a user