1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-04 10:03:36 +00:00

Disable BranchLessZ logic for Zelda MM ucode since

it uses unknown format of test Z value.
This commit is contained in:
Sergey Lipskiy 2014-12-20 23:13:26 +06:00
parent dce0019e9a
commit a911c85881
3 changed files with 6 additions and 1 deletions

View File

@ -208,6 +208,7 @@ void GBIInfo::loadMicrocode(u32 uc_start, u32 uc_dstart, u16 uc_dsize)
current.dataSize = uc_dsize;
current.NoN = false;
current.textureGen = true;
current.branchLessZ = true;
current.type = NONE;
// See if we can identify it by CRC
@ -252,6 +253,8 @@ void GBIInfo::loadMicrocode(u32 uc_start, u32 uc_dstart, u16 uc_dsize)
type = F3DEX2;
if (strncmp(&uc_str[14], "F3DF", 4) == 0)
current.textureGen = false;
else if (strncmp(&uc_str[14], "F3DZ", 4) == 0)
current.branchLessZ = false;
}
else if (strncmp( &uc_str[14], "L3D", 3 ) == 0) {
u32 t = 22;

2
GBI.h
View File

@ -679,6 +679,7 @@ struct MicrocodeInfo
u32 crc;
bool NoN;
bool textureGen;
bool branchLessZ;
};
struct GBIInfo
@ -694,6 +695,7 @@ struct GBIInfo
bool isHWLSupported() const;
bool isNoN() const { return m_pCurrent != NULL ? m_pCurrent->NoN : false; }
bool isTextureGen() const { return m_pCurrent != NULL ? m_pCurrent->textureGen: true; }
bool isBranchLessZ() const { return m_pCurrent != NULL ? m_pCurrent->branchLessZ : true; }
private:
void _makeCurrent(MicrocodeInfo * _pCurrent);

View File

@ -1266,7 +1266,7 @@ void gSPBranchLessZ( u32 branchdl, u32 vtx, f32 zval )
SPVertex & v = video().getRender().getVertex(vtx);
const float zTest = v.z / v.w;
if (zTest > 1.0f || zTest <= zval)
if (zTest > 1.0f || zTest <= zval || !GBI.isBranchLessZ())
RSP.PC[RSP.PCi] = address;
#ifdef DEBUG