From cd126bcb7cdb6a555ff1829ba9d535596ef58609 Mon Sep 17 00:00:00 2001 From: iCatButler Date: Sun, 8 May 2016 13:29:54 +0100 Subject: Revert pcsxr@87829 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/iCatButler/pcsxr/commit/a37e3f092fd84658c67ec537590dd5f4710ee174 "peopsgl/xvideo: fixed interlace/frame bit31 toggling. Now X-Men Acade… …mies are fine. Obsoletes use of odd/even hack." This fixes a hang on going to the title screen in many games. --- plugins/peopsxgl/gpu.c | 33 ++++++--------------------------- 1 file changed, 6 insertions(+), 27 deletions(-) (limited to 'plugins') diff --git a/plugins/peopsxgl/gpu.c b/plugins/peopsxgl/gpu.c index 60be981b..fd784c51 100755 --- a/plugins/peopsxgl/gpu.c +++ b/plugins/peopsxgl/gpu.c @@ -182,7 +182,6 @@ int iFakePrimBusy = 0; int iRumbleVal = 0; int iRumbleTime = 0; uint32_t vBlank=0; -BOOL oddLines; //////////////////////////////////////////////////////////////////////// // stuff to make this a true PDK module @@ -580,7 +579,6 @@ long CALLBACK GPUinit() // device initialised already ! //lGPUstatusRet = 0x74000000; vBlank = 0; - oddLines = FALSE; STATUSREG = 0x14802000; GPUIsIdle; @@ -2031,8 +2029,8 @@ static unsigned short usFirstPos=2; void CALLBACK GPUupdateLace(void) { - if(!(dwActFixes&0x1000)) - STATUSREG^=0x80000000; // interlaced bit toggle, if the CC game fix is not active (see gpuReadStatus) + //if(!(dwActFixes&0x1000)) + // STATUSREG^=0x80000000; // interlaced bit toggle, if the CC game fix is not active (see gpuReadStatus) if(!(dwActFixes&128)) // normal frame limit func CheckFrameRate(); @@ -2044,7 +2042,7 @@ void CALLBACK GPUupdateLace(void) if(PSXDisplay.Interlaced) // interlaced mode? { - //STATUSREG^=0x80000000; + STATUSREG^=0x80000000; if(PSXDisplay.DisplayMode.x>0 && PSXDisplay.DisplayMode.y>0) { updateDisplay(); // -> swap buffers (new frame) @@ -2069,16 +2067,7 @@ void CALLBACK GPUupdateLace(void) //////////////////////////////////////////////////////////////////////// uint32_t CALLBACK GPUreadStatus(void) -{ - if (vBlank || oddLines == FALSE) - { // vblank or even lines - STATUSREG &= ~(0x80000000); - } - else - { // Oddlines and not vblank - STATUSREG |= 0x80000000; - } - +{ if(dwActFixes&0x1000) // CC game fix { static int iNumRead=0; @@ -2105,7 +2094,7 @@ uint32_t CALLBACK GPUreadStatus(void) } } - return STATUSREG; + return STATUSREG | (vBlank ? 0x80000000 : 0 );; } //////////////////////////////////////////////////////////////////////// @@ -3626,15 +3615,5 @@ void CALLBACK GPUdisplayFlags(uint32_t dwFlags) void CALLBACK GPUvBlank( int val ) { - vBlank = val; - oddLines = oddLines ? FALSE : TRUE; // bit changes per frame when not interlaced - //printf("VB %x (%x)\n", oddLines, vBlank); -} - -void CALLBACK GPUhSync( int val ) { - // Interlaced mode - update bit every scanline - if (PSXDisplay.Interlaced) { - oddLines = (val%2 ? FALSE : TRUE); - } - //printf("HS %x (%x)\n", oddLines, vBlank); + vBlank = val; } -- cgit v1.2.3