mirror of https://github.com/PCSX2/pcsx2.git
GS: Correct CSR behaviour on mode change
This commit is contained in:
parent
c1bd1fcbd4
commit
4b49c8bd6e
|
@ -445,6 +445,10 @@ u32 UpdateVSyncRate()
|
|||
|
||||
if (vSyncInfo.Framerate != frames_per_second || vSyncInfo.VideoMode != gsVideoMode)
|
||||
{
|
||||
// NBA Jam 2004 PAL will fail to display 3D on the menu if this value isn't correct on reset.
|
||||
if (video_mode_initialized && vSyncInfo.VideoMode != gsVideoMode)
|
||||
CSRreg.FIELD = 1;
|
||||
|
||||
vSyncInfo.VideoMode = gsVideoMode;
|
||||
|
||||
vSyncInfoCalc(&vSyncInfo, frames_per_second, total_scanlines);
|
||||
|
|
17
pcsx2/GS.cpp
17
pcsx2/GS.cpp
|
@ -32,19 +32,15 @@ void gsSetVideoMode(GS_VideoMode mode)
|
|||
{
|
||||
gsVideoMode = mode;
|
||||
UpdateVSyncRate();
|
||||
CSRreg.FIELD = 1;
|
||||
}
|
||||
|
||||
// Make sure framelimiter options are in sync with GS capabilities.
|
||||
void gsReset()
|
||||
{
|
||||
GetMTGS().ResetGS(true);
|
||||
|
||||
UpdateVSyncRate();
|
||||
gsVideoMode = GS_VideoMode::Uninitialized;
|
||||
memzero(g_RealGSMem);
|
||||
|
||||
CSRreg.Reset();
|
||||
GSIMR.reset();
|
||||
UpdateVSyncRate();
|
||||
}
|
||||
|
||||
void gsUpdateFrequency(Pcsx2Config& config)
|
||||
|
@ -85,13 +81,12 @@ static __fi void gsCSRwrite( const tGS_CSR& csr )
|
|||
//Console.Warning( "csr.RESET" );
|
||||
//gifUnit.Reset(true); // Don't think gif should be reset...
|
||||
gifUnit.gsSIGNAL.queued = false;
|
||||
gifUnit.gsFINISH.gsFINISHFired = true;
|
||||
// Privilage registers also reset.
|
||||
memset(PS2MEM_GS, 0, sizeof(PS2MEM_GS));
|
||||
memzero(g_RealGSMem);
|
||||
gsVideoMode = GS_VideoMode::Uninitialized;
|
||||
UpdateVSyncRate();
|
||||
GetMTGS().SendSimplePacket(GS_RINGTYPE_RESET, 0, 0, 0);
|
||||
const u32 field = CSRreg.FIELD;
|
||||
CSRreg.Reset();
|
||||
GSIMR.reset();
|
||||
CSRreg.FIELD = field;
|
||||
}
|
||||
|
||||
if(csr.FLUSH)
|
||||
|
|
Loading…
Reference in New Issue