1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-06-25 22:09:35 +00:00

Apply fix for GE multiplayer only for GE and PD.

Naboo does not use depth buffer clear with fillrect,
thus it does not allocate frame buffer for depth buffer clear.
GE multiplayer fix breaks depth compare in Naboo.
This commit is contained in:
Sergey Lipskiy 2019-02-04 20:04:48 +07:00
parent 78e98d880b
commit 647f7759c2
3 changed files with 5 additions and 8 deletions

View File

@ -192,8 +192,7 @@ struct Config
#define hack_Ogre64 (1<<0) //Ogre Battle 64 background copy
#define hack_noDepthFrameBuffers (1<<1) //Do not use depth buffers as texture
#define hack_blurPauseScreen (1<<2) //Game copies frame buffer to depth buffer area, CPU blurs it. That image is used as background for pause screen.
#define hack_scoreboard (1<<3) //Copy data from RDRAM to auxilary frame buffer. Scoreboard in Mario Tennis.
#define hack_scoreboardJ (1<<4) //Copy data from RDRAM to auxilary frame buffer. Scoreboard in Mario Tennis (J).
#define hack_clearAloneDepthBuffer (1<<3) //Force clear depth buffer if there is no frame buffer for it. Multiplayer in GE and PD.
#define hack_texrect_shade_alpha (1<<5) //Set vertex alpha to 1 when texrect alpha combiner uses shade. Pokemon Stadium 2
#define hack_subscreen (1<<6) //Fix subscreen delay in Zelda OOT and Doubutsu no Mori
#define hack_blastCorps (1<<7) //Blast Corps black polygons

View File

@ -485,7 +485,7 @@ void DepthBufferList::saveBuffer(u32 _address)
DepthBuffer * pCurrent = m_pCurrent;
m_pCurrent = pDepthBuffer;
frameBufferList().attachDepthBuffer();
if (pFrameBuffer == nullptr)
if (pFrameBuffer == nullptr && (config.generalEmulation.hacks & hack_clearAloneDepthBuffer) != 0)
clearBuffer();
if (pDepthBuffer->m_address != gDP.depthImageAddress)
m_pCurrent = pCurrent;

View File

@ -298,10 +298,8 @@ void RSP_Init()
config.generalEmulation.hacks |= hack_blurPauseScreen | hack_rectDepthBufferCopyCBFD;
else if (strstr(RSP.romname, (const char *)"MICKEY USA") != nullptr)
config.generalEmulation.hacks |= hack_blurPauseScreen;
else if (strstr(RSP.romname, (const char *)"MarioTennis64") != nullptr)
config.generalEmulation.hacks |= hack_scoreboardJ;
else if (strstr(RSP.romname, (const char *)"MarioTennis") != nullptr)
config.generalEmulation.hacks |= hack_scoreboard;
else if (strstr(RSP.romname, (const char *)"GOLDENEYE") != nullptr)
config.generalEmulation.hacks |= hack_clearAloneDepthBuffer;
else if (strstr(RSP.romname, (const char *)"POKEMON STADIUM 2") != nullptr ||
strstr(RSP.romname, (const char *)"Bottom of the 9th") != nullptr)
config.generalEmulation.hacks |= hack_texrect_shade_alpha;
@ -319,7 +317,7 @@ void RSP_Init()
config.generalEmulation.hacks |= hack_ZeldaMonochrome | hack_ZeldaMM;
else if (strstr(RSP.romname, (const char *)"Perfect Dark") != nullptr ||
strstr(RSP.romname, (const char *)"PERFECT DARK") != nullptr)
config.generalEmulation.hacks |= hack_rectDepthBufferCopyPD;
config.generalEmulation.hacks |= hack_rectDepthBufferCopyPD | hack_clearAloneDepthBuffer;
else if (strstr(RSP.romname, (const char *)"Jeremy McGrath Super") != nullptr)
config.generalEmulation.hacks |= hack_ModifyVertexXyInShader;
else if (strstr(RSP.romname, (const char *)"RAT ATTACK") != nullptr)