mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Always show cfb until first dlist:
- move flag CHANGED_CPU_FB_WRITE from gSP to gDP (code refactor) - enable CHANGED_CPU_FB_WRITE on video init. - disable CHANGED_CPU_FB_WRITE in process display list. many pd roms and demos use cpu rendering only now they are supported with default settings also detectCFB=1 now isn't needed anymore for some games Commit is based on changes made by purplemarshmallow in #536
This commit is contained in:
parent
db9943a7b9
commit
b219997c80
|
@ -1311,7 +1311,7 @@ void RDRAMtoFrameBuffer::CopyFromRDRAM( u32 _address, bool _bUseAlpha)
|
|||
currentCombiner()->updateFBInfo();
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
const u32 gspChanged = gSP.changed & CHANGED_CPU_FB_WRITE;
|
||||
const u32 gdpChanged = gDP.changed & CHANGED_CPU_FB_WRITE;
|
||||
gSP.changed = gDP.changed = 0;
|
||||
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, pBuffer->m_FBO);
|
||||
|
@ -1321,7 +1321,7 @@ void RDRAMtoFrameBuffer::CopyFromRDRAM( u32 _address, bool _bUseAlpha)
|
|||
|
||||
gSP.textureTile[0] = pTile0;
|
||||
|
||||
gDP.changed |= CHANGED_RENDERMODE | CHANGED_COMBINE;
|
||||
gDP.changed |= gdpChanged | CHANGED_RENDERMODE | CHANGED_COMBINE;
|
||||
}
|
||||
|
||||
void FrameBuffer_CopyFromRDRAM( u32 address, bool bUseAlpha )
|
||||
|
|
|
@ -598,6 +598,7 @@ void RDP_ProcessRDPList()
|
|||
|
||||
RSP.bLLE = false;
|
||||
gDP.changed |= CHANGED_COLORBUFFER;
|
||||
gDP.changed &= ~CHANGED_CPU_FB_WRITE;
|
||||
|
||||
dp_start = dp_current = dp_end;
|
||||
}
|
||||
|
|
|
@ -153,8 +153,8 @@ void RSP_ProcessDList()
|
|||
if (gSP.matrix.stackSize == 0)
|
||||
gSP.matrix.stackSize = 32;
|
||||
gSP.matrix.modelViewi = 0;
|
||||
gSP.changed &= ~CHANGED_CPU_FB_WRITE;
|
||||
gSP.changed |= CHANGED_MATRIX;
|
||||
gDP.changed &= ~CHANGED_CPU_FB_WRITE;
|
||||
gDPSetTexturePersp(G_TP_PERSP);
|
||||
|
||||
u32 uc_start = *(u32*)&DMEM[0x0FD0];
|
||||
|
|
12
src/VI.cpp
12
src/VI.cpp
|
@ -109,11 +109,11 @@ void VI_UpdateScreen()
|
|||
}
|
||||
|
||||
if (config.frameBufferEmulation.enable) {
|
||||
const bool bCFB = config.frameBufferEmulation.detectCFB != 0 && (gSP.changed&CHANGED_CPU_FB_WRITE) == CHANGED_CPU_FB_WRITE;
|
||||
const bool bCFB = (gDP.changed&CHANGED_CPU_FB_WRITE) == CHANGED_CPU_FB_WRITE;
|
||||
const bool bNeedUpdate = gDP.colorImage.changed != 0 || (bCFB ? true : (*REG.VI_ORIGIN != VI.lastOrigin));
|
||||
|
||||
if (bNeedUpdate) {
|
||||
if ((gSP.changed&CHANGED_CPU_FB_WRITE) == CHANGED_CPU_FB_WRITE) {
|
||||
if (bCFB) {
|
||||
FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN);
|
||||
if (pBuffer == NULL || pBuffer->m_width != VI.width) {
|
||||
if (!bVIUpdated) {
|
||||
|
@ -137,10 +137,10 @@ void VI_UpdateScreen()
|
|||
|
||||
if (gDP.colorImage.changed)
|
||||
uNumCurFrameIsShown = 0;
|
||||
else {
|
||||
else if (config.frameBufferEmulation.detectCFB != 0) {
|
||||
uNumCurFrameIsShown++;
|
||||
if (uNumCurFrameIsShown > 25)
|
||||
gSP.changed |= CHANGED_CPU_FB_WRITE;
|
||||
gDP.changed |= CHANGED_CPU_FB_WRITE;
|
||||
}
|
||||
frameBufferList().clearBuffersChanged();
|
||||
VI.lastOrigin = *REG.VI_ORIGIN;
|
||||
|
@ -148,10 +148,10 @@ void VI_UpdateScreen()
|
|||
while (Debug.paused && !Debug.step);
|
||||
Debug.step = FALSE;
|
||||
#endif
|
||||
} else {
|
||||
} else if (config.frameBufferEmulation.detectCFB != 0) {
|
||||
uNumCurFrameIsShown++;
|
||||
if (uNumCurFrameIsShown > 25)
|
||||
gSP.changed |= CHANGED_CPU_FB_WRITE;
|
||||
gDP.changed |= CHANGED_CPU_FB_WRITE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -138,7 +138,7 @@ void PluginAPI::RomOpen()
|
|||
|
||||
void PluginAPI::ShowCFB()
|
||||
{
|
||||
gSP.changed |= CHANGED_CPU_FB_WRITE;
|
||||
gDP.changed |= CHANGED_CPU_FB_WRITE;
|
||||
}
|
||||
|
||||
void PluginAPI::UpdateScreen()
|
||||
|
|
|
@ -12,9 +12,10 @@
|
|||
#define CHANGED_COMBINE 0x040
|
||||
#define CHANGED_ALPHACOMPARE 0x080
|
||||
#define CHANGED_FOGCOLOR 0x100
|
||||
#define CHANGED_FB_TEXTURE 0x200
|
||||
#define CHANGED_BLENDCOLOR 0x2000
|
||||
#define CHANGED_BLENDCOLOR 0x200
|
||||
#define CHANGED_FB_TEXTURE 0x400
|
||||
#define CHANGED_COLORBUFFER 0x1000
|
||||
#define CHANGED_CPU_FB_WRITE 0x2000
|
||||
|
||||
#define TEXTUREMODE_NORMAL 0
|
||||
#define TEXTUREMODE_BGIMAGE 2
|
||||
|
|
|
@ -11,8 +11,7 @@
|
|||
#define CHANGED_TEXTURE 0x10
|
||||
#define CHANGED_FOGPOSITION 0x20
|
||||
#define CHANGED_LIGHT 0x40
|
||||
#define CHANGED_CPU_FB_WRITE 0x80
|
||||
#define CHANGED_TEXTURESCALE 0x100
|
||||
#define CHANGED_TEXTURESCALE 0x80
|
||||
|
||||
#define CLIP_X 0x03
|
||||
#define CLIP_NEGX 0x01
|
||||
|
|
|
@ -114,7 +114,7 @@ void OGLVideoMupenPlus::_swapBuffers()
|
|||
gSP.changed |= CHANGED_VIEWPORT;
|
||||
}
|
||||
gDP.changed |= CHANGED_COMBINE;
|
||||
(*renderCallback)((gSP.changed&CHANGED_CPU_FB_WRITE) == 0 ? 1 : 0);
|
||||
(*renderCallback)((gDP.changed&CHANGED_CPU_FB_WRITE) == 0 ? 1 : 0);
|
||||
}
|
||||
CoreVideo_GL_SwapBuffers();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user