apply patch #159 from tracker to add hack for softrasterizer text rendering improvement in some games

This commit is contained in:
zeromus 2014-02-09 08:28:48 +00:00
parent fd3b89bac2
commit 443b24cac2
5 changed files with 47 additions and 16 deletions

View File

@ -499,6 +499,7 @@ extern struct TCommonSettings {
, GFX3D_LineHack(true) , GFX3D_LineHack(true)
, GFX3D_Zelda_Shadow_Depth_Hack(0) , GFX3D_Zelda_Shadow_Depth_Hack(0)
, GFX3D_Renderer_Multisample(false) , GFX3D_Renderer_Multisample(false)
, GFX3D_TXTHack(false)
, jit_max_block_size(100) , jit_max_block_size(100)
, loadToMemory(false) , loadToMemory(false)
, UseExtBIOS(false) , UseExtBIOS(false)
@ -557,6 +558,7 @@ extern struct TCommonSettings {
bool GFX3D_LineHack; bool GFX3D_LineHack;
int GFX3D_Zelda_Shadow_Depth_Hack; int GFX3D_Zelda_Shadow_Depth_Hack;
bool GFX3D_Renderer_Multisample; bool GFX3D_Renderer_Multisample;
bool GFX3D_TXTHack;
bool loadToMemory; bool loadToMemory;

View File

@ -477,13 +477,34 @@ public:
//finally, we can use floor here. but, it is slower than we want. //finally, we can use floor here. but, it is slower than we want.
//the best solution is probably to wait until the pipeline is full of fixed point //the best solution is probably to wait until the pipeline is full of fixed point
s32 iu = s32floor(u);
s32 iv = s32floor(v);
sampler.dowrap(iu,iv);
FragmentColor color; //add TXT Hack options - tkd3
color.color = ((u32*)lastTexKey->decoded)[(iv<<sampler.wshift)+iu]; if(CommonSettings.GFX3D_TXTHack==false)
return color; {
s32 iu = s32floor(u);
s32 iv = s32floor(v);
sampler.dowrap(iu,iv);
FragmentColor color;
color.color = ((u32*)lastTexKey->decoded)[(iv<<sampler.wshift)+iu];
return color;
}else{
s32 iu = round_s(u);
s32 iv = round_s(v);
sampler.dowrap(iu,iv);
FragmentColor color;
color.color = ((u32*)lastTexKey->decoded)[(iv<<sampler.wshift)+iu];
return color;
}
}
//round function - tkd3
float round_s(double val){
if (val > 0.0 ){
return floorf(val*256.0f+0.5f)/256.0f; //this value(256.0) is good result.(I think)
} else {
return -1.0*floorf(fabs(val)*256.0f+0.5f)/256.0f;
}
} }
struct Shader struct Shader

View File

@ -3335,6 +3335,7 @@ int _main()
CommonSettings.GFX3D_Fog = GetPrivateProfileBool("3D", "EnableFog", 1, IniName); CommonSettings.GFX3D_Fog = GetPrivateProfileBool("3D", "EnableFog", 1, IniName);
CommonSettings.GFX3D_Texture = GetPrivateProfileBool("3D", "EnableTexture", 1, IniName); CommonSettings.GFX3D_Texture = GetPrivateProfileBool("3D", "EnableTexture", 1, IniName);
CommonSettings.GFX3D_LineHack = GetPrivateProfileBool("3D", "EnableLineHack", 1, IniName); CommonSettings.GFX3D_LineHack = GetPrivateProfileBool("3D", "EnableLineHack", 1, IniName);
CommonSettings.GFX3D_TXTHack = GetPrivateProfileBool("3D", "EnableTXTHack", 0, IniName); //default is off.
Change3DCoreWithFallbackAndSave(cur3DCore); Change3DCoreWithFallbackAndSave(cur3DCore);
#ifdef BETA_VERSION #ifdef BETA_VERSION
@ -6320,6 +6321,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
CheckDlgButton(hw,IDC_3DSETTINGS_FOG,CommonSettings.GFX3D_Fog); CheckDlgButton(hw,IDC_3DSETTINGS_FOG,CommonSettings.GFX3D_Fog);
CheckDlgButton(hw,IDC_3DSETTINGS_TEXTURE,CommonSettings.GFX3D_Texture); CheckDlgButton(hw,IDC_3DSETTINGS_TEXTURE,CommonSettings.GFX3D_Texture);
CheckDlgButton(hw,IDC_3DSETTINGS_LINEHACK, CommonSettings.GFX3D_LineHack); CheckDlgButton(hw,IDC_3DSETTINGS_LINEHACK, CommonSettings.GFX3D_LineHack);
CheckDlgButton(hw,IDC_TXTHACK, CommonSettings.GFX3D_TXTHack);
SetDlgItemInt (hw,IDC_ZELDA_SHADOW_DEPTH_HACK,CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack,FALSE); SetDlgItemInt (hw,IDC_ZELDA_SHADOW_DEPTH_HACK,CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack,FALSE);
//CheckDlgButton(hw,IDC_ALTERNATEFLUSH,CommonSettings.gfx3d_flushMode); //CheckDlgButton(hw,IDC_ALTERNATEFLUSH,CommonSettings.gfx3d_flushMode);
@ -6343,6 +6345,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
CommonSettings.GFX3D_Texture = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_TEXTURE); CommonSettings.GFX3D_Texture = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_TEXTURE);
CommonSettings.GFX3D_LineHack = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_LINEHACK); CommonSettings.GFX3D_LineHack = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_LINEHACK);
CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack = GetDlgItemInt(hw,IDC_ZELDA_SHADOW_DEPTH_HACK,NULL,FALSE); CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack = GetDlgItemInt(hw,IDC_ZELDA_SHADOW_DEPTH_HACK,NULL,FALSE);
CommonSettings.GFX3D_TXTHack = IsDlgCheckboxChecked(hw,IDC_TXTHACK);
Change3DCoreWithFallbackAndSave(ComboBox_GetCurSel(GetDlgItem(hw, IDC_3DCORE))); Change3DCoreWithFallbackAndSave(ComboBox_GetCurSel(GetDlgItem(hw, IDC_3DCORE)));
WritePrivateProfileBool("3D", "HighResolutionInterpolateColor", CommonSettings.GFX3D_HighResolutionInterpolateColor, IniName); WritePrivateProfileBool("3D", "HighResolutionInterpolateColor", CommonSettings.GFX3D_HighResolutionInterpolateColor, IniName);
@ -6351,6 +6354,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
WritePrivateProfileBool("3D", "EnableTexture", CommonSettings.GFX3D_Texture, IniName); WritePrivateProfileBool("3D", "EnableTexture", CommonSettings.GFX3D_Texture, IniName);
WritePrivateProfileInt ("3D", "ZeldaShadowDepthHack", CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack, IniName); WritePrivateProfileInt ("3D", "ZeldaShadowDepthHack", CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack, IniName);
WritePrivateProfileInt ("3D", "EnableLineHack", CommonSettings.GFX3D_LineHack, IniName); WritePrivateProfileInt ("3D", "EnableLineHack", CommonSettings.GFX3D_LineHack, IniName);
WritePrivateProfileInt ("3D", "EnableTXTHack", CommonSettings.GFX3D_TXTHack, IniName);
//WritePrivateProfileInt("3D", "AlternateFlush", CommonSettings.gfx3d_flushMode, IniName); //WritePrivateProfileInt("3D", "AlternateFlush", CommonSettings.gfx3d_flushMode, IniName);
} }
case IDCANCEL: case IDCANCEL:

View File

@ -1054,6 +1054,8 @@
#define IDM_RENDER_LQ2XS 60083 #define IDM_RENDER_LQ2XS 60083
#define IDC_SAVETYPE 64000 #define IDC_SAVETYPE 64000
#define IDC_AUTOLOADLUA 64001 #define IDC_AUTOLOADLUA 64001
#define IDC_TXTHACK 64002
#define ID_LABEL_TXTHACK1 64003
// Next default values for new objects // Next default values for new objects
// //

View File

@ -112,26 +112,28 @@ BEGIN
PUSHBUTTON "&Cancel",IDCANCEL,127,94,50,16 PUSHBUTTON "&Cancel",IDCANCEL,127,94,50,16
END END
IDD_3DSETTINGS DIALOGEX 0, 0, 190, 210 IDD_3DSETTINGS DIALOGEX 0, 0, 190, 225
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 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 FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN BEGIN
DEFPUSHBUTTON "OK",IDOK,67,188,50,14 DEFPUSHBUTTON "OK",IDOK,80,203,50,14
PUSHBUTTON "Cancel",IDCANCEL,121,188,50,14 PUSHBUTTON "Cancel",IDCANCEL,135,203,50,14
PUSHBUTTON "Default",IDC_DEFAULT,11,188,50,14 PUSHBUTTON "Default",IDC_DEFAULT,8,203,50,14
GROUPBOX "Renderer:",IDC_STATIC,7,7,174,39 GROUPBOX "Renderer:",IDC_STATIC,7,7,174,39
COMBOBOX IDC_3DCORE,15,23,153,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_3DCORE,15,23,153,138,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Unrealistically High-Precision Color Interpolation",IDC_INTERPOLATECOLOR, CONTROL "Unrealistically High-Precision Color Interpolation",IDC_INTERPOLATECOLOR,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,64,165,10 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,64,165,10
GROUPBOX "SoftRasterizer Options",IDC_STATIC,7,52,176,97 GROUPBOX "SoftRasterizer Options",IDC_STATIC,7,52,176,114
CONTROL "Enable Edge Marking",IDC_3DSETTINGS_EDGEMARK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,76,84,10 CONTROL "Enable Edge Marking",IDC_3DSETTINGS_EDGEMARK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,76,84,10
CONTROL "Enable Fog",IDC_3DSETTINGS_FOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,88,52,10 CONTROL "Enable Fog",IDC_3DSETTINGS_FOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,88,52,10
CONTROL "Enable Textures",IDC_3DSETTINGS_TEXTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,100,67,10 CONTROL "Enable Textures",IDC_3DSETTINGS_TEXTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,100,67,10
LTEXT "Depth Comparison Threshold : \n -0=normal behavior (recommended) \n -bigger value can help Zelda PH/ST shadow issue\n -works only in SoftRasterizer mode ",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK,14,112,165,35 LTEXT "Depth Comparison Threshold : \n -0=normal behavior (recommended) \n -bigger value can help Zelda PH/ST shadow issue",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK,15,113,165,35
EDITTEXT IDC_ZELDA_SHADOW_DEPTH_HACK,109,111,44,12 EDITTEXT IDC_ZELDA_SHADOW_DEPTH_HACK,109,109,44,12
LTEXT "Fixes some graphical bugs involving lines, but causes some other bugs. Not many games use lines.",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK2,7,164,169,19 LTEXT "Fixes some graphical bugs involving lines, but causes some other bugs. Not many games use lines.",ID_LABEL_ZELDA_SHADOW_DEPTH_HACK2,17,182,170,19
CONTROL "Enable Line Hack",IDC_3DSETTINGS_LINEHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,154,73,10 CONTROL "Enable Line Hack",IDC_3DSETTINGS_LINEHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,170,73,10
LTEXT "Fixes text bugs in some games.(e.g. Etrian Odyssey)",ID_LABEL_TXTHACK1,15,153,165,11
CONTROL "Enable TXT Hack",IDC_TXTHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,141,73,10
END END
IDD_ABOUT_BOX DIALOGEX 0, 0, 268, 198 IDD_ABOUT_BOX DIALOGEX 0, 0, 268, 198
@ -1836,7 +1838,7 @@ BEGIN
IDD_3DSETTINGS, DIALOG IDD_3DSETTINGS, DIALOG
BEGIN BEGIN
BOTTOMMARGIN, 202 BOTTOMMARGIN, 217
END END
IDD_CHEAT_ADD, DIALOG IDD_CHEAT_ADD, DIALOG