static void updateDisplayIfChanged(void) // UPDATE DISPLAY IF CHANGED { if ((PSXDisplay.DisplayMode.y == PSXDisplay.DisplayModeNew.y) && (PSXDisplay.DisplayMode.x == PSXDisplay.DisplayModeNew.x)) { if((PSXDisplay.RGB24 == PSXDisplay.RGB24New) && (PSXDisplay.Interlaced == PSXDisplay.InterlacedNew)) return; } PSXDisplay.RGB24 = PSXDisplay.RGB24New; // get new infos PSXDisplay.DisplayMode.y = PSXDisplay.DisplayModeNew.y; PSXDisplay.DisplayMode.x = PSXDisplay.DisplayModeNew.x; PreviousPSXDisplay.DisplayMode.x= // previous will hold min(640,PSXDisplay.DisplayMode.x); // max 640x512... that's PreviousPSXDisplay.DisplayMode.y= // the size of my min(512,PSXDisplay.DisplayMode.y); // back buffer surface PSXDisplay.Interlaced = PSXDisplay.InterlacedNew; PSXDisplay.DisplayEnd.x= // calc end of display PSXDisplay.DisplayPosition.x+ PSXDisplay.DisplayMode.x; PSXDisplay.DisplayEnd.y= PSXDisplay.DisplayPosition.y+ PSXDisplay.DisplayMode.y+PreviousPSXDisplay.DisplayModeNew.y; PreviousPSXDisplay.DisplayEnd.x= PreviousPSXDisplay.DisplayPosition.x+ PSXDisplay.DisplayMode.x; PreviousPSXDisplay.DisplayEnd.y= PreviousPSXDisplay.DisplayPosition.y+ PSXDisplay.DisplayMode.y+PreviousPSXDisplay.DisplayModeNew.y; ChangeDispOffsetsX(); if(iFrameLimit==2) SetAutoFrameCap(); // -> set it if(UseFrameSkip) decideSkip(); // stupid stuff when frame skipping enabled }
void SwitchDispMenu(int iStep) // SWITCH DISP MENU { if (!(ulKeybits&KEY_SHOWFPS)) return; // tststs switch (iMPos) {////////////////////////////////////////////////////// case 0: // frame limit { int iType=0; bInitCap = TRUE; #ifdef _WINDOWS if (iFrameLimit==1 && UseFrameLimit && GetAsyncKeyState(VK_SHIFT)&32768) { fFrameRate+=iStep; if (fFrameRate<1.0f) fFrameRate=1.0f; SetAutoFrameCap(); break; } #endif if (UseFrameLimit) iType=iFrameLimit; iType+=iStep; if (iType<0) iType=2; if (iType>2) iType=0; if (iType==0) UseFrameLimit=0; else { UseFrameLimit=1; iFrameLimit=iType; SetAutoFrameCap(); } } break; ////////////////////////////////////////////////////// case 1: // frame skip bInitCap = TRUE; if (iStep>0) { if (!UseFrameSkip) { UseFrameSkip=1; iFastFwd = 0; } else { if (!iFastFwd) iFastFwd=1; else { UseFrameSkip=0; iFastFwd = 0; } } } else { if (!UseFrameSkip) { UseFrameSkip=1; iFastFwd = 1; } else { if (iFastFwd) iFastFwd=0; else { UseFrameSkip=0; iFastFwd = 0; } } } bSkipNextFrame=FALSE; break; ////////////////////////////////////////////////////// case 2: // dithering iUseDither+=iStep; if (iUseDither<0) iUseDither=2; if (iUseDither>2) iUseDither=0; break; ////////////////////////////////////////////////////// case 3: // special fixes if (iUseFixes) { iUseFixes=0; dwActFixes=0; } else { iUseFixes=1; dwActFixes=dwCfgFixes; } SetFixes(); if (iFrameLimit==2) SetAutoFrameCap(); break; } BuildDispMenu(0); // update info }