From eb3963bc378c90d392ac569abeef91c64171b217 Mon Sep 17 00:00:00 2001 From: zeromus Date: Sat, 2 Apr 2011 18:39:26 +0000 Subject: [PATCH] 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. --- desmume/src/NDSSystem.h | 2 ++ desmume/src/gfx3d.cpp | 2 ++ desmume/src/rasterize.cpp | 2 +- desmume/src/thumb_instructions.cpp | 2 -- desmume/src/windows/main.cpp | 6 ++++-- desmume/src/windows/resource.h | 2 ++ desmume/src/windows/resources.rc | Bin 958028 -> 963606 bytes 7 files changed, 11 insertions(+), 5 deletions(-) diff --git a/desmume/src/NDSSystem.h b/desmume/src/NDSSystem.h index 66df76434..5b9a296f7 100644 --- a/desmume/src/NDSSystem.h +++ b/desmume/src/NDSSystem.h @@ -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; diff --git a/desmume/src/gfx3d.cpp b/desmume/src/gfx3d.cpp index af3afc50f..b9ba116aa 100644 --- a/desmume/src/gfx3d.cpp +++ b/desmume/src/gfx3d.cpp @@ -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; diff --git a/desmume/src/rasterize.cpp b/desmume/src/rasterize.cpp index b73f83f1a..fb2252dc9 100644 --- a/desmume/src/rasterize.cpp +++ b/desmume/src/rasterize.cpp @@ -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); diff --git a/desmume/src/thumb_instructions.cpp b/desmume/src/thumb_instructions.cpp index 152ce5daa..1d6e12568 100644 --- a/desmume/src/thumb_instructions.cpp +++ b/desmume/src/thumb_instructions.cpp @@ -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(cpu->instruct_adr-2); const u16 next = _MMU_read16(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]; diff --git a/desmume/src/windows/main.cpp b/desmume/src/windows/main.cpp index 7ce03b28c..355c2a922 100644 --- a/desmume/src/windows/main.cpp +++ b/desmume/src/windows/main.cpp @@ -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: diff --git a/desmume/src/windows/resource.h b/desmume/src/windows/resource.h index 7a3f59a4a..81b3ec84d 100644 --- a/desmume/src/windows/resource.h +++ b/desmume/src/windows/resource.h @@ -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 diff --git a/desmume/src/windows/resources.rc b/desmume/src/windows/resources.rc index 2ee5e158e8909c9d5f74959b550bcb303a1b3303..7985fca211cea0296111de5b007c5c877c85f00c 100644 GIT binary patch delta 2165 zcmeHIUuaWT82`@wm)zd;nxw2*HFR0$gN_((5)&I|w${zzwptqynfPEb5m&6WYAfnC zYw;n)hY@;LKkQ&@=U_g_$SmymprTN=7yn|FQfzFyb&5|4gE1(w@7&Z*wgR%nNP)VGbkBHm6|n-dA1 z@Lb$wD62%7}$qN7WXZ2&|6T2YBm;cKlW@p~5vLojgceld-Drs>3to&n110so}lTgx0 zIZ9e2DCr?fj{kc>?GCp>dz)~mk`PDVRrw`s*{mPJP>oBozxe${42`R+`N-$W=p#8L zRO&L9*}gT;(riXoh&TaNNxNl60W6OlmiGwHfYP_;u|C$tOysxCO*rG=s$5uy02rraW zKQ?D{jnJN1&l~)+jDAXTiAy8}Nn{OLw7)^q_@NDYiD7Az^r~~{o?n$uyDIaUjXISI zp4n(zZogMfJl(00V#<1ZvkC*pN8@&vR#}zkbPwUomiJm4=*;m$#k+)_%+?uJZF8s|`BTN1O DqOKBX delta 716 zcmYk4T}YEr7{_>NHX>if6da)|_SMRd#s+=dDD5I5CXRLGjfr{DMU-ek z6AD|tv4=h`A~ZrI7E@1%gcn|jh(s+7gz!RS-Na*yiK*A%*9UmCz0C$#zb?4I=@%3lG+a8NFa02$6-W~YtT^km zOvn!Aemb0PHcGI*iafA5Ew!+rDUvHgDJxqcx`iDOex`J>rAhI51a@yw4@6sq5RB9d zolx2p=g|d-d?5`G9g?o-8Gtn}N=NEMT@$=-G!t+ZXT=c`e5bmyI;;53uW~m)M z_s~hcgpQN&S==x