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

Add hack_skipVIChangeCheck hack for Zelda MM.

Fix problem with Majora's Mask subscreen after Bomber's Notebook read, #698

The game switches to interlaced mode when it opens Notebook screen and background buffer is removed.
This hack prevents buffers clear on VI change.
This commit is contained in:
Sergey Lipskiy 2015-09-26 17:17:51 +06:00
parent a3f9b43b4a
commit 1eaa967553
3 changed files with 4 additions and 1 deletions

View File

@ -120,6 +120,7 @@ struct Config
#define hack_blastCorps (1<<8) //Blast Corps black polygons
#define hack_ignoreVIHeightChange (1<<9) //Do not reset FBO when VI height is changed. Space Invaders need it.
#define hack_VIUpdateOnCIChange (1<<10) //Update frame if color buffer changed. Needed for Quake II underwater.
#define hack_skipVIChangeCheck (1<<11) //Don't reset FBO when VI parameters changed. Zelda MM
extern Config config;

View File

@ -337,6 +337,8 @@ void RSP_Init()
strstr(RSP.romname, (const char *)"PERFECT DARK")
)
config.generalEmulation.hacks |= hack_VIUpdateOnCIChange;
else if (strstr(RSP.romname, (const char *)"MASK") != NULL) // Zelda MM
config.generalEmulation.hacks |= hack_skipVIChangeCheck;
api().FindPluginPath(RSP.pluginpath);

View File

@ -68,7 +68,7 @@ void VI_UpdateSize()
FrameBufferList & fbList = frameBufferList();
FrameBuffer * pBuffer = fbList.findBuffer(VI.lastOrigin);
DepthBuffer * pDepthBuffer = pBuffer != NULL ? pBuffer->m_pDepthBuffer : NULL;
if (config.frameBufferEmulation.enable &&
if (config.frameBufferEmulation.enable && ((config.generalEmulation.hacks & hack_skipVIChangeCheck) == 0) &&
((interlacedPrev != VI.interlaced) ||
(VI.width > 0 && VI.width != VI.widthPrev) ||
(!VI.interlaced && pDepthBuffer != NULL && pDepthBuffer->m_width != VI.width) ||