fix bug in rasterizer linehack rendering, add 3d config option since it still breaks hotel dusk, and make nocash debug messages always show up, even with no #define DEVELOPER.

This commit is contained in:
zeromus 2011-04-02 18:39:26 +00:00
parent ce73043bec
commit eb3963bc37
7 changed files with 11 additions and 5 deletions

View File

@ -472,6 +472,7 @@ extern struct TCommonSettings {
, GFX3D_EdgeMark(true)
, GFX3D_Fog(true)
, GFX3D_Texture(true)
, GFX3D_LineHack(true)
, GFX3D_Zelda_Shadow_Depth_Hack(0)
, UseExtBIOS(false)
, SWIFromBIOS(false)
@ -512,6 +513,7 @@ extern struct TCommonSettings {
bool GFX3D_EdgeMark;
bool GFX3D_Fog;
bool GFX3D_Texture;
bool GFX3D_LineHack;
int GFX3D_Zelda_Shadow_Depth_Hack;
bool UseExtBIOS;

View File

@ -2818,6 +2818,8 @@ void GFX3D_Clipper::clipPoly(POLY* poly, VERT** verts)
// "Workaround" for line poly
bool gfx3d_IsLinePoly(POLY *poly)
{
if(!CommonSettings.GFX3D_LineHack) return false;
int type = poly->type;
VERT *vert1, *vert2;

View File

@ -817,7 +817,7 @@ public:
runctr++;
//HACK: special handling for horizontal line poly
if (lineHack && left->Height == 0 && right->Height == 0)
if (lineHack && left->Height == 0 && right->Height == 0 && left->Y<192 && left->Y>=0)
{
bool draw = (!SLI || (left->Y & SLI_MASK) == SLI_VALUE);
if(draw) drawscanline(left,right,lineHack);

View File

@ -1066,7 +1066,6 @@ TEMPLATE static u32 FASTCALL OP_B_COND(const u32 i)
TEMPLATE static u32 FASTCALL OP_B_UNCOND(const u32 i)
{
#ifdef DEVELOPER
//nocash message detection
const u16 last = _MMU_read16<PROCNUM,MMU_AT_DEBUG>(cpu->instruct_adr-2);
const u16 next = _MMU_read16<PROCNUM,MMU_AT_DEBUG>(cpu->instruct_adr+2);
@ -1075,7 +1074,6 @@ TEMPLATE static u32 FASTCALL OP_B_UNCOND(const u32 i)
{
NocashMessage(cpu);
}
#endif
cpu->R[15] += (SIGNEEXT_IMM11(i)<<1);
cpu->next_instruction = cpu->R[15];

View File

@ -2884,7 +2884,7 @@ int _main()
CommonSettings.GFX3D_EdgeMark = GetPrivateProfileBool("3D", "EnableEdgeMark", 1, IniName);
CommonSettings.GFX3D_Fog = GetPrivateProfileBool("3D", "EnableFog", 1, IniName);
CommonSettings.GFX3D_Texture = GetPrivateProfileBool("3D", "EnableTexture", 1, IniName);
//CommonSettings.gfx3d_flushMode = GetPrivateProfileInt("3D", "AlternateFlush", 0, IniName);
CommonSettings.GFX3D_LineHack = GetPrivateProfileBool("3D", "EnableLineHack", 1, IniName);
Change3DCoreWithFallbackAndSave(cur3DCore);
#ifdef BETA_VERSION
@ -5626,6 +5626,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);
CheckDlgButton(hw,IDC_3DSETTINGS_LINEHACK, CommonSettings.GFX3D_LineHack);
SetDlgItemInt (hw,IDC_ZELDA_SHADOW_DEPTH_HACK,CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack,FALSE);
//CheckDlgButton(hw,IDC_ALTERNATEFLUSH,CommonSettings.gfx3d_flushMode);
@ -5647,6 +5648,7 @@ 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_LineHack = IsDlgCheckboxChecked(hw,IDC_3DSETTINGS_LINEHACK);
CommonSettings.GFX3D_Zelda_Shadow_Depth_Hack = GetDlgItemInt(hw,IDC_ZELDA_SHADOW_DEPTH_HACK,NULL,FALSE);
Change3DCoreWithFallbackAndSave(ComboBox_GetCurSel(GetDlgItem(hw, IDC_3DCORE)));
@ -5655,7 +5657,7 @@ LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
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", "EnableLineHack", CommonSettings.GFX3D_LineHack, IniName);
//WritePrivateProfileInt("3D", "AlternateFlush", CommonSettings.gfx3d_flushMode, IniName);
}
case IDCANCEL:

View File

@ -709,6 +709,7 @@
#define ID_LABEL_HK4 4468
#define IDC_GI_ICON 4469
#define ID_LABEL_HK5 4469
#define IDC_3DSETTINGS_LINEHACK 4469
#define IDC_GI_TITLE 4470
#define ID_LABEL_HK6 4470
#define IDC_GI_TITLEEN 4471
@ -791,6 +792,7 @@
#define IDC_IOREG 6001
#define ID_LABEL_ZELDA_SHADOW_DEPTH_HACK 9000
#define IDC_ZELDA_SHADOW_DEPTH_HACK 9001
#define ID_LABEL_ZELDA_SHADOW_DEPTH_HACK2 9003
#define IDD_CHEAT_ADD_XX_CODE 10005
#define IDD_GBASLOT_GUITARGRIP 10009
#define IDD_GBASLOT_PIANO 10010

Binary file not shown.