add troulouliou's depth compare hack

This commit is contained in:
zeromus 2010-09-09 23:04:17 +00:00
parent 74ff219aa9
commit af035533a0
7 changed files with 39 additions and 6 deletions

View File

@ -511,6 +511,7 @@ extern struct TCommonSettings {
, GFX3D_EdgeMark(true)
, GFX3D_Fog(true)
, GFX3D_Texture(true)
, GFX3D_Zelda_Shadow_Depth_Hack(0)
, UseExtBIOS(false)
, SWIFromBIOS(false)
, PatchSWI3(false)
@ -548,6 +549,7 @@ extern struct TCommonSettings {
bool GFX3D_EdgeMark;
bool GFX3D_Fog;
bool GFX3D_Texture;
int GFX3D_Zelda_Shadow_Depth_Hack;
bool UseExtBIOS;
char ARM9BIOS[256];

View File

@ -52,10 +52,12 @@ CommandLine::CommandLine()
, _rigorous_timing(0)
, _advanced_timing(-1)
, _slot1(NULL)
, depth_threshold(-1)
, load_slot(-1)
, arm9_gdb_port(0)
, arm7_gdb_port(0)
, start_paused(FALSE)
{
load_slot = -1;
arm9_gdb_port = arm7_gdb_port = 0;
start_paused = FALSE;
#ifndef _MSC_VER
disable_sound = 0;
disable_limiter = 0;
@ -92,6 +94,7 @@ void CommandLine::loadCommonOptions()
{ "rigorous-timing", 0, 0, G_OPTION_ARG_INT, &_rigorous_timing, "Use some rigorous timings instead of unrealistically generous (default 0)", "RIGOROUS_TIMING"},
{ "advanced-timing", 0, 0, G_OPTION_ARG_INT, &_advanced_timing, "Use advanced BUS-level timing (default 1)", "ADVANCED_TIMING"},
{ "slot1", 0, 0, G_OPTION_ARG_STRING, &_slot1, "Device to load in slot 1 (default retail)", "SLOT1"},
{ "depth-threshold", 0, 0, G_OPTION_ARG_INT, &depth_threshold, "Depth comparison threshold (default 0)", "DEPTHTHRESHOLD"},
#ifndef _MSC_VER
{ "disable-sound", 0, 0, G_OPTION_ARG_NONE, &disable_sound, "Disables the sound emulation", NULL},
{ "disable-limiter", 0, 0, G_OPTION_ARG_NONE, &disable_limiter, "Disables the 60fps limiter", NULL},
@ -127,6 +130,8 @@ bool CommandLine::parse(int argc,char **argv)
if(_num_cores != -1) CommonSettings.num_cores = _num_cores;
if(_rigorous_timing) CommonSettings.rigorous_timing = true;
if(_advanced_timing != -1) CommonSettings.advanced_timing = _advanced_timing==1;
if(depth_threshold != -1)
CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack = depth_threshold;
//TODO MAX PRIORITY! change ARM9BIOS etc to be a std::string
if(_bios_arm9) { CommonSettings.UseExtBIOS = true; strcpy(CommonSettings.ARM9BIOS,_bios_arm9); }

View File

@ -40,6 +40,7 @@ class CommandLine
public:
//actual options: these may move to another sturct
int load_slot;
int depth_threshold;
std::string nds_file;
std::string play_movie_file;
std::string record_movie_file;

View File

@ -546,10 +546,23 @@ public:
if(polyAttr.decalMode)
{
if(depth != destFragment.depth)
if ( CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack > 0)
{
goto depth_fail;
if(depth<destFragment.depth - CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack
|| depth>destFragment.depth + CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack)
{
goto depth_fail;
}
}
else
{
if(depth != destFragment.depth)
{
goto depth_fail;
}
}
}
else
{

View File

@ -2582,7 +2582,9 @@ int _main()
CommonSettings.showGpu.sub = GetPrivateProfileInt("Display", "SubGpu", 1, IniName) != 0;
CommonSettings.spu_advanced = GetPrivateProfileBool("Sound", "SpuAdvanced", false, IniName);
CommonSettings.advanced_timing = GetPrivateProfileBool("Emulation", "AdvancedTiming", true, IniName);
CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack = GetPrivateProfileInt("3D", "ZeldaShadowDepthHack", 0, IniName);
lostFocusPause = GetPrivateProfileBool("Focus", "BackgroundPause", false, IniName);
//Get Ram-Watch values
@ -5491,6 +5493,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
CheckDlgButton(hw,IDC_3DSETTINGS_EDGEMARK,CommonSettings.GFX3D_EdgeMark);
CheckDlgButton(hw,IDC_3DSETTINGS_FOG,CommonSettings.GFX3D_Fog);
CheckDlgButton(hw,IDC_3DSETTINGS_TEXTURE,CommonSettings.GFX3D_Texture);
SetDlgItemInt (hw,IDC_ZELDA_SHADOW_DEPTH_HACK,CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack,FALSE);
//CheckDlgButton(hw,IDC_ALTERNATEFLUSH,CommonSettings.gfx3d_flushMode);
for(i = 0; core3DList[i] != NULL; i++)
@ -5511,11 +5514,14 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
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_Zelda_Shadow_Depth_Hack = GetDlgItemInt(hw,IDC_ZELDA_SHADOW_DEPTH_HACK,NULL,FALSE);
Change3DCoreWithFallbackAndSave(ComboBox_GetCurSel(GetDlgItem(hw, IDC_3DCORE)));
WritePrivateProfileBool("3D", "HighResolutionInterpolateColor", CommonSettings.GFX3D_HighResolutionInterpolateColor, IniName);
WritePrivateProfileBool("3D", "EnableEdgeMark", CommonSettings.GFX3D_EdgeMark, IniName);
WritePrivateProfileBool("3D", "EnableFog", CommonSettings.GFX3D_Fog, IniName);
WritePrivateProfileBool("3D", "EnableTexture", CommonSettings.GFX3D_Texture, IniName);
WritePrivateProfileInt ("3D", "ZeldaShadowDepthHack", CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack, IniName);
//CommonSettings.gfx3d_flushMode = (IsDlgButtonChecked(hw,IDC_ALTERNATEFLUSH) == BST_CHECKED)?1:0;
//WritePrivateProfileInt("3D", "AlternateFlush", CommonSettings.gfx3d_flushMode, IniName);
}

View File

@ -779,6 +779,12 @@
#define IDC_USENOISE 5010
#define IDC_CPU 6000
#define IDC_IOREG 6001
//ZELDA SHADOW HACK
#define ID_LABEL_ZELDA_SHADOW_DEPTH_HACK 9000
#define IDC_ZELDA_SHADOW_DEPTH_HACK 9001
#define IDD_CHEAT_ADD_XX_CODE 10005
#define IDD_GBASLOT_GUITARGRIP 10009
#define IDD_GBASLOT_PIANO 10010

Binary file not shown.