diff options
| author | iCatButler <i.am.catbutler@gmail.com> | 2016-05-08 13:29:54 +0100 |
|---|---|---|
| committer | iCatButler <i.am.catbutler@gmail.com> | 2016-05-08 13:29:54 +0100 |
| commit | cd126bcb7cdb6a555ff1829ba9d535596ef58609 (patch) | |
| tree | 0bb244b04faac15c04f38f889763db2793c4eb82 /plugins | |
| parent | ca61b53f6c99e49de4620395bc8dbe5b71c9e2db (diff) | |
Revert pcsxr@87829
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.
Diffstat (limited to 'plugins')
| -rwxr-xr-x | plugins/peopsxgl/gpu.c | 33 |
1 files changed, 6 insertions, 27 deletions
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; } |
