Exemplo n.º 1
0
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
}
Exemplo n.º 2
0
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
}