From 7ef3be1cabb77c0ac42be9682a4862a73f9dbf7d Mon Sep 17 00:00:00 2001 From: Logan McNaughton Date: Tue, 14 Apr 2020 20:46:21 -0600 Subject: [PATCH] Mask VI_ORIGIN address --- src/FrameBuffer.cpp | 2 +- .../OpenGLContext/GLSL/glsl_SpecialShadersFactory.cpp | 2 +- src/VI.cpp | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/FrameBuffer.cpp b/src/FrameBuffer.cpp index 43a41a07..1a776aa9 100644 --- a/src/FrameBuffer.cpp +++ b/src/FrameBuffer.cpp @@ -591,7 +591,7 @@ void FrameBufferList::setBufferChanged(f32 _maxY) void FrameBufferList::clearBuffersChanged() { gDP.colorImage.changed = FALSE; - FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN); + FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN & 0xffffff); if (pBuffer != nullptr) pBuffer->m_changed = false; } diff --git a/src/Graphics/OpenGLContext/GLSL/glsl_SpecialShadersFactory.cpp b/src/Graphics/OpenGLContext/GLSL/glsl_SpecialShadersFactory.cpp index 38a1faab..63e0a83c 100644 --- a/src/Graphics/OpenGLContext/GLSL/glsl_SpecialShadersFactory.cpp +++ b/src/Graphics/OpenGLContext/GLSL/glsl_SpecialShadersFactory.cpp @@ -674,7 +674,7 @@ namespace glsl { void activate() override { FXAAShaderBase::activate(); - FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN); + FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN & 0xffffff); if (pBuffer != nullptr && pBuffer->m_pTexture != nullptr && (m_width != pBuffer->m_pTexture->width || m_height != pBuffer->m_pTexture->height)) { m_width = pBuffer->m_pTexture->width; diff --git a/src/VI.cpp b/src/VI.cpp index b92514b1..92ebaadd 100644 --- a/src/VI.cpp +++ b/src/VI.cpp @@ -82,7 +82,7 @@ void VI_UpdateSize() // const int fsaa = ((*REG.VI_STATUS) >> 8) & 3; // const int divot = ((*REG.VI_STATUS) >> 4) & 1; FrameBufferList & fbList = frameBufferList(); - FrameBuffer * pBuffer = fbList.findBuffer(VI.lastOrigin); + FrameBuffer * pBuffer = fbList.findBuffer(VI.lastOrigin & 0xffffff); DepthBuffer * pDepthBuffer = pBuffer != nullptr ? pBuffer->m_pDepthBuffer : nullptr; if (config.frameBufferEmulation.enable && ((interlacedPrev != VI.interlaced) || @@ -131,7 +131,7 @@ void VI_UpdateScreen() if (config.frameBufferEmulation.enable) { - FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN); + FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN & 0xffffff); if (pBuffer == nullptr) { gDP.changed |= CHANGED_CPU_FB_WRITE; } else if (!FBInfo::fbInfo.isSupported() && @@ -166,7 +166,7 @@ void VI_UpdateScreen() } const u32 size = *REG.VI_STATUS & 3; if (VI.height > 0 && size > G_IM_SIZ_8b && VI.width > 0) - frameBufferList().saveBuffer(*REG.VI_ORIGIN, G_IM_FMT_RGBA, size, VI.width, true); + frameBufferList().saveBuffer(*REG.VI_ORIGIN & 0xffffff, G_IM_FMT_RGBA, size, VI.width, true); } } // if ((((*REG.VI_STATUS) & 3) > 0) && (gDP.colorImage.changed || bCFB)) { // Does not work in release build!!! @@ -175,12 +175,12 @@ void VI_UpdateScreen() VI_UpdateSize(); bVIUpdated = true; } - FrameBuffer_CopyFromRDRAM(*REG.VI_ORIGIN, bCFB); + FrameBuffer_CopyFromRDRAM(*REG.VI_ORIGIN & 0xffffff, bCFB); } frameBufferList().renderBuffer(); frameBufferList().clearBuffersChanged(); VI.lastOrigin = *REG.VI_ORIGIN; - } + } } else { if (gDP.changed & CHANGED_COLORBUFFER) { frameBufferList().renderBuffer();