Removed "Automatic frame skipping" option, will now be activated with throttling
Throttling now uses (actually rapes) the Smooth60FPS functionality, so that throttling is no more skippy.
This commit is contained in:
parent
1af02fb5ae
commit
3931590c65
|
@ -122,8 +122,6 @@ BEGIN_MESSAGE_MAP(MainWnd, CWnd)
|
||||||
ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_150, OnOptionsFrameskipThrottle150)
|
ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_150, OnOptionsFrameskipThrottle150)
|
||||||
ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_200, OnOptionsFrameskipThrottle200)
|
ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_200, OnOptionsFrameskipThrottle200)
|
||||||
ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_OTHER, OnOptionsFrameskipThrottleOther)
|
ON_COMMAND(ID_OPTIONS_FRAMESKIP_THROTTLE_OTHER, OnOptionsFrameskipThrottleOther)
|
||||||
ON_COMMAND(ID_OPTIONS_FRAMESKIP_AUTOMATIC, OnOptionsFrameskipAutomatic)
|
|
||||||
ON_UPDATE_COMMAND_UI(ID_OPTIONS_FRAMESKIP_AUTOMATIC, OnUpdateOptionsFrameskipAutomatic)
|
|
||||||
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_0, OnUpdateOptionsVideoFrameskip0)
|
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_0, OnUpdateOptionsVideoFrameskip0)
|
||||||
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_1, OnUpdateOptionsVideoFrameskip1)
|
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_1, OnUpdateOptionsVideoFrameskip1)
|
||||||
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_2, OnUpdateOptionsVideoFrameskip2)
|
ON_UPDATE_COMMAND_UI(ID_OPTIONS_VIDEO_FRAMESKIP_2, OnUpdateOptionsVideoFrameskip2)
|
||||||
|
@ -662,7 +660,7 @@ bool MainWnd::FileRun()
|
||||||
|
|
||||||
theApp.frameskipadjust = 0;
|
theApp.frameskipadjust = 0;
|
||||||
theApp.renderedFrames = 0;
|
theApp.renderedFrames = 0;
|
||||||
theApp.autoFrameSkipLastTime = theApp.throttleLastTime = systemGetClock();
|
theApp.autoFrameSkipLastTime = systemGetClock();
|
||||||
|
|
||||||
theApp.rewindCount = 0;
|
theApp.rewindCount = 0;
|
||||||
theApp.rewindCounter = 0;
|
theApp.rewindCounter = 0;
|
||||||
|
|
|
@ -148,8 +148,6 @@ class MainWnd : public CWnd
|
||||||
afx_msg void OnOptionsFrameskipThrottle150();
|
afx_msg void OnOptionsFrameskipThrottle150();
|
||||||
afx_msg void OnOptionsFrameskipThrottle200();
|
afx_msg void OnOptionsFrameskipThrottle200();
|
||||||
afx_msg void OnOptionsFrameskipThrottleOther();
|
afx_msg void OnOptionsFrameskipThrottleOther();
|
||||||
afx_msg void OnOptionsFrameskipAutomatic();
|
|
||||||
afx_msg void OnUpdateOptionsFrameskipAutomatic(CCmdUI* pCmdUI);
|
|
||||||
afx_msg void OnUpdateOptionsVideoFrameskip0(CCmdUI* pCmdUI);
|
afx_msg void OnUpdateOptionsVideoFrameskip0(CCmdUI* pCmdUI);
|
||||||
afx_msg void OnUpdateOptionsVideoFrameskip1(CCmdUI* pCmdUI);
|
afx_msg void OnUpdateOptionsVideoFrameskip1(CCmdUI* pCmdUI);
|
||||||
afx_msg void OnUpdateOptionsVideoFrameskip2(CCmdUI* pCmdUI);
|
afx_msg void OnUpdateOptionsVideoFrameskip2(CCmdUI* pCmdUI);
|
||||||
|
|
|
@ -53,110 +53,101 @@ extern int emulating;
|
||||||
|
|
||||||
extern void CPUUpdateRenderBuffers(bool force);
|
extern void CPUUpdateRenderBuffers(bool force);
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnOptionsFrameskipThrottleNothrottle()
|
void MainWnd::OnOptionsFrameskipThrottleNothrottle()
|
||||||
{
|
{
|
||||||
theApp.throttle = 0;
|
theApp.updateThrottle( 0 ); // disable
|
||||||
theApp.autoFrameSkip = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnUpdateOptionsFrameskipThrottleNothrottle(CCmdUI* pCmdUI)
|
void MainWnd::OnUpdateOptionsFrameskipThrottleNothrottle(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
pCmdUI->SetCheck(theApp.throttle == 0);
|
pCmdUI->SetCheck( theApp.throttle == 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnOptionsFrameskipThrottle25()
|
void MainWnd::OnOptionsFrameskipThrottle25()
|
||||||
{
|
{
|
||||||
theApp.throttle = 25;
|
theApp.updateThrottle( 25 );
|
||||||
theApp.autoFrameSkip = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnUpdateOptionsFrameskipThrottle25(CCmdUI* pCmdUI)
|
void MainWnd::OnUpdateOptionsFrameskipThrottle25(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
pCmdUI->SetCheck(theApp.throttle == 25);
|
pCmdUI->SetCheck( theApp.throttle == 25 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnOptionsFrameskipThrottle50()
|
void MainWnd::OnOptionsFrameskipThrottle50()
|
||||||
{
|
{
|
||||||
theApp.throttle = 50;
|
theApp.updateThrottle( 50 );
|
||||||
theApp.autoFrameSkip = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnUpdateOptionsFrameskipThrottle50(CCmdUI* pCmdUI)
|
void MainWnd::OnUpdateOptionsFrameskipThrottle50(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
pCmdUI->SetCheck(theApp.throttle == 50);
|
pCmdUI->SetCheck( theApp.throttle == 50 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnOptionsFrameskipThrottle100()
|
void MainWnd::OnOptionsFrameskipThrottle100()
|
||||||
{
|
{
|
||||||
theApp.throttle = 100;
|
theApp.updateThrottle( 100 );
|
||||||
theApp.autoFrameSkip = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnUpdateOptionsFrameskipThrottle100(CCmdUI* pCmdUI)
|
void MainWnd::OnUpdateOptionsFrameskipThrottle100(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
pCmdUI->SetCheck(theApp.throttle == 100);
|
pCmdUI->SetCheck( theApp.throttle == 100 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnOptionsFrameskipThrottle150()
|
void MainWnd::OnOptionsFrameskipThrottle150()
|
||||||
{
|
{
|
||||||
theApp.throttle = 150;
|
theApp.updateThrottle( 150 );
|
||||||
theApp.autoFrameSkip = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnUpdateOptionsFrameskipThrottle150(CCmdUI* pCmdUI)
|
void MainWnd::OnUpdateOptionsFrameskipThrottle150(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
pCmdUI->SetCheck(theApp.throttle == 150);
|
pCmdUI->SetCheck( theApp.throttle == 150 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnOptionsFrameskipThrottle200()
|
void MainWnd::OnOptionsFrameskipThrottle200()
|
||||||
{
|
{
|
||||||
theApp.throttle = 200;
|
theApp.updateThrottle( 200 );
|
||||||
theApp.autoFrameSkip = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnUpdateOptionsFrameskipThrottle200(CCmdUI* pCmdUI)
|
void MainWnd::OnUpdateOptionsFrameskipThrottle200(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
pCmdUI->SetCheck(theApp.throttle == 200);
|
pCmdUI->SetCheck( theApp.throttle == 200 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnOptionsFrameskipThrottleOther()
|
void MainWnd::OnOptionsFrameskipThrottleOther()
|
||||||
{
|
{
|
||||||
Throttle dlg;
|
Throttle dlg;
|
||||||
int v = (int)dlg.DoModal();
|
unsigned short v = (unsigned short)dlg.DoModal();
|
||||||
|
|
||||||
if( v ) {
|
if( v ) {
|
||||||
theApp.throttle = v;
|
theApp.updateThrottle( v );
|
||||||
theApp.autoFrameSkip = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWnd::OnUpdateOptionsFrameskipThrottleOther(CCmdUI* pCmdUI)
|
void MainWnd::OnUpdateOptionsFrameskipThrottleOther(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
int throttle = theApp.throttle;
|
pCmdUI->SetCheck(
|
||||||
pCmdUI->SetCheck(throttle != 0 && throttle != 25 &&
|
( theApp.throttle != 0 ) &&
|
||||||
throttle != 50 && throttle != 100 &&
|
( theApp.throttle != 25 ) &&
|
||||||
throttle != 150 && throttle != 200);
|
( theApp.throttle != 50 ) &&
|
||||||
|
( theApp.throttle != 100 ) &&
|
||||||
|
( theApp.throttle != 150 ) &&
|
||||||
|
( theApp.throttle != 200 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWnd::OnOptionsFrameskipAutomatic()
|
|
||||||
{
|
|
||||||
theApp.autoFrameSkip = !theApp.autoFrameSkip;
|
|
||||||
if(!theApp.autoFrameSkip && emulating)
|
|
||||||
theApp.updateFrameSkip();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
theApp.throttle = false;
|
|
||||||
frameSkip = 0;
|
|
||||||
systemFrameSkip = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWnd::OnUpdateOptionsFrameskipAutomatic(CCmdUI* pCmdUI)
|
|
||||||
{
|
|
||||||
pCmdUI->SetCheck(theApp.autoFrameSkip);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL MainWnd::OnOptionsFrameskip(UINT nID)
|
BOOL MainWnd::OnOptionsFrameskip(UINT nID)
|
||||||
{
|
{
|
||||||
|
@ -174,7 +165,7 @@ BOOL MainWnd::OnOptionsFrameskip(UINT nID)
|
||||||
}
|
}
|
||||||
if(emulating)
|
if(emulating)
|
||||||
theApp.updateFrameSkip();
|
theApp.updateFrameSkip();
|
||||||
theApp.autoFrameSkip = false;
|
theApp.updateThrottle( 0 );
|
||||||
return TRUE;
|
return TRUE;
|
||||||
break;
|
break;
|
||||||
case ID_OPTIONS_VIDEO_FRAMESKIP_6:
|
case ID_OPTIONS_VIDEO_FRAMESKIP_6:
|
||||||
|
@ -188,7 +179,7 @@ BOOL MainWnd::OnOptionsFrameskip(UINT nID)
|
||||||
}
|
}
|
||||||
if(emulating)
|
if(emulating)
|
||||||
theApp.updateFrameSkip();
|
theApp.updateFrameSkip();
|
||||||
theApp.autoFrameSkip = false;
|
theApp.updateThrottle( 0 );
|
||||||
return TRUE;
|
return TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -286,8 +286,11 @@ void OpenAL::write()
|
||||||
assert( AL_NO_ERROR == ALFunction.alGetError() );
|
assert( AL_NO_ERROR == ALFunction.alGetError() );
|
||||||
|
|
||||||
if( nBuffersProcessed == theApp.oalBufferCount ) {
|
if( nBuffersProcessed == theApp.oalBufferCount ) {
|
||||||
static int i = 0;
|
if( theApp.throttle >= 100 ) {
|
||||||
log( "OpenAL: Buffers were not refilled fast enough (%i)\n", i++ );
|
// we only want to know about it when we are emulating at full speed (or faster)
|
||||||
|
static int i = 0;
|
||||||
|
log( "OpenAL: Buffers were not refilled fast enough (%i)\n", i++ );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !speedup && synchronize && !theApp.throttle ) {
|
if( !speedup && synchronize && !theApp.throttle ) {
|
||||||
|
|
|
@ -181,7 +181,7 @@ extern "C" bool cpu_mmx;
|
||||||
|
|
||||||
namespace Sm60FPS
|
namespace Sm60FPS
|
||||||
{
|
{
|
||||||
float K_fCpuSpeed = 98.0f;
|
float K_fCpuSpeed = 100.0f; // was 98.0f before, but why?
|
||||||
float K_fTargetFps = 60.0f * K_fCpuSpeed / 100;
|
float K_fTargetFps = 60.0f * K_fCpuSpeed / 100;
|
||||||
float K_fDT = 1000.0f / K_fTargetFps;
|
float K_fDT = 1000.0f / K_fTargetFps;
|
||||||
|
|
||||||
|
@ -280,7 +280,6 @@ VBA::VBA()
|
||||||
tripleBuffering = true;
|
tripleBuffering = true;
|
||||||
autoHideMenu = false;
|
autoHideMenu = false;
|
||||||
throttle = 0;
|
throttle = 0;
|
||||||
throttleLastTime = 0;
|
|
||||||
autoFrameSkipLastTime = 0;
|
autoFrameSkipLastTime = 0;
|
||||||
autoFrameSkip = false;
|
autoFrameSkip = false;
|
||||||
vsync = false;
|
vsync = false;
|
||||||
|
@ -919,6 +918,25 @@ void VBA::updateFilter()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void VBA::updateThrottle( unsigned short throttle )
|
||||||
|
{
|
||||||
|
this->throttle = throttle;
|
||||||
|
|
||||||
|
if( throttle == 0 ) {
|
||||||
|
autoFrameSkip = false;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
Sm60FPS::K_fCpuSpeed = (float)throttle;
|
||||||
|
Sm60FPS::K_fTargetFps = 60.0f * Sm60FPS::K_fCpuSpeed / 100;
|
||||||
|
Sm60FPS::K_fDT = 1000.0f / Sm60FPS::K_fTargetFps;
|
||||||
|
autoFrameSkip = true;
|
||||||
|
frameSkip = 0;
|
||||||
|
systemFrameSkip = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void VBA::updateMenuBar()
|
void VBA::updateMenuBar()
|
||||||
{
|
{
|
||||||
if(menu != NULL) {
|
if(menu != NULL) {
|
||||||
|
@ -1118,32 +1136,20 @@ void systemFrame()
|
||||||
|
|
||||||
void system10Frames(int rate)
|
void system10Frames(int rate)
|
||||||
{
|
{
|
||||||
u32 time = systemGetClock();
|
if( theApp.autoFrameSkip )
|
||||||
|
{
|
||||||
if (theApp.autoFrameSkip)
|
u32 time = systemGetClock();
|
||||||
{
|
u32 diff = time - theApp.autoFrameSkipLastTime;
|
||||||
u32 diff = time - theApp.autoFrameSkipLastTime;
|
theApp.autoFrameSkipLastTime = time;
|
||||||
Sm60FPS::nCurSpeed = 100;
|
if( diff ) {
|
||||||
|
// countermeasure against div/0 when debugging
|
||||||
if (diff)
|
Sm60FPS::nCurSpeed = (1000000/rate)/diff;
|
||||||
Sm60FPS::nCurSpeed = (1000000/rate)/diff;
|
} else {
|
||||||
}
|
Sm60FPS::nCurSpeed = 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(!theApp.wasPaused && theApp.throttle) {
|
|
||||||
if(!speedup) {
|
|
||||||
u32 diff = time - theApp.throttleLastTime;
|
|
||||||
|
|
||||||
int target = (1000000/(rate*theApp.throttle));
|
|
||||||
int d = (target - diff);
|
|
||||||
|
|
||||||
if(d > 0) {
|
|
||||||
Sleep(d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
theApp.throttleLastTime = systemGetClock();
|
|
||||||
}
|
|
||||||
if(theApp.rewindMemory) {
|
if(theApp.rewindMemory) {
|
||||||
if(++theApp.rewindCounter >= (theApp.rewindTimer)) {
|
if(++theApp.rewindCounter >= (theApp.rewindTimer)) {
|
||||||
theApp.rewindSaveNeeded = true;
|
theApp.rewindSaveNeeded = true;
|
||||||
|
@ -1158,7 +1164,6 @@ void system10Frames(int rate)
|
||||||
}
|
}
|
||||||
|
|
||||||
theApp.wasPaused = false;
|
theApp.wasPaused = false;
|
||||||
theApp.autoFrameSkipLastTime = time;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void systemScreenMessage(const char *msg)
|
void systemScreenMessage(const char *msg)
|
||||||
|
@ -1412,8 +1417,6 @@ void VBA::loadSettings()
|
||||||
if(gbFrameSkip < 0 || gbFrameSkip > 9)
|
if(gbFrameSkip < 0 || gbFrameSkip > 9)
|
||||||
gbFrameSkip = 0;
|
gbFrameSkip = 0;
|
||||||
|
|
||||||
autoFrameSkip = regQueryDwordValue("autoFrameSkip", FALSE) ? TRUE : FALSE;
|
|
||||||
|
|
||||||
vsync = regQueryDwordValue("vsync", false) ? true : false ;
|
vsync = regQueryDwordValue("vsync", false) ? true : false ;
|
||||||
synchronize = regQueryDwordValue("synchronize", 1) ? true : false;
|
synchronize = regQueryDwordValue("synchronize", 1) ? true : false;
|
||||||
fullScreenStretch = regQueryDwordValue("stretch", 0) ? true : false;
|
fullScreenStretch = regQueryDwordValue("stretch", 0) ? true : false;
|
||||||
|
@ -1676,9 +1679,7 @@ void VBA::loadSettings()
|
||||||
|
|
||||||
fsMaxScale = regQueryDwordValue("fsMaxScale", 0);
|
fsMaxScale = regQueryDwordValue("fsMaxScale", 0);
|
||||||
|
|
||||||
throttle = regQueryDwordValue("throttle", 0);
|
updateThrottle( (unsigned short)regQueryDwordValue( "throttle", 0 ) );
|
||||||
if(throttle < 5 || throttle > 1000)
|
|
||||||
throttle = 0;
|
|
||||||
|
|
||||||
linktimeout = regQueryDwordValue("LinkTimeout", 1000);
|
linktimeout = regQueryDwordValue("LinkTimeout", 1000);
|
||||||
|
|
||||||
|
@ -1690,12 +1691,6 @@ void VBA::loadSettings()
|
||||||
linkenable = regQueryDwordValue("linkEnabled", false) ? true : false;
|
linkenable = regQueryDwordValue("linkEnabled", false) ? true : false;
|
||||||
|
|
||||||
lanlink.active = regQueryDwordValue("LAN", 0) ? true : false;
|
lanlink.active = regQueryDwordValue("LAN", 0) ? true : false;
|
||||||
if (autoFrameSkip)
|
|
||||||
{
|
|
||||||
throttle = 0;
|
|
||||||
frameSkip = 0;
|
|
||||||
systemFrameSkip = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sm60FPS::bSaveMoreCPU = regQueryDwordValue("saveMoreCPU", 0);
|
Sm60FPS::bSaveMoreCPU = regQueryDwordValue("saveMoreCPU", 0);
|
||||||
|
|
||||||
|
@ -2538,8 +2533,6 @@ void VBA::saveSettings()
|
||||||
|
|
||||||
regSetDwordValue("gbFrameSkip", gbFrameSkip);
|
regSetDwordValue("gbFrameSkip", gbFrameSkip);
|
||||||
|
|
||||||
regSetDwordValue("autoFrameSkip", autoFrameSkip);
|
|
||||||
|
|
||||||
regSetDwordValue("vsync", vsync);
|
regSetDwordValue("vsync", vsync);
|
||||||
regSetDwordValue("synchronize", synchronize);
|
regSetDwordValue("synchronize", synchronize);
|
||||||
regSetDwordValue("stretch", fullScreenStretch);
|
regSetDwordValue("stretch", fullScreenStretch);
|
||||||
|
|
|
@ -143,8 +143,7 @@ class VBA : public CWinApp
|
||||||
int captureFormat;
|
int captureFormat;
|
||||||
bool tripleBuffering;
|
bool tripleBuffering;
|
||||||
bool autoHideMenu;
|
bool autoHideMenu;
|
||||||
int throttle;
|
unsigned short throttle;
|
||||||
u32 throttleLastTime;
|
|
||||||
u32 autoFrameSkipLastTime;
|
u32 autoFrameSkipLastTime;
|
||||||
bool autoFrameSkip;
|
bool autoFrameSkip;
|
||||||
bool vsync;
|
bool vsync;
|
||||||
|
@ -236,6 +235,7 @@ class VBA : public CWinApp
|
||||||
void adjustDestRect();
|
void adjustDestRect();
|
||||||
void updateIFB();
|
void updateIFB();
|
||||||
void updateFilter();
|
void updateFilter();
|
||||||
|
void updateThrottle( unsigned short throttle );
|
||||||
void updateMenuBar();
|
void updateMenuBar();
|
||||||
void winAddUpdateListener(IUpdateListener *l);
|
void winAddUpdateListener(IUpdateListener *l);
|
||||||
void winRemoveUpdateListener(IUpdateListener *l);
|
void winRemoveUpdateListener(IUpdateListener *l);
|
||||||
|
|
|
@ -1623,34 +1623,6 @@ BEGIN
|
||||||
MENUITEM "Stretch to &fit", ID_OPTIONS_VIDEO_FULLSCREENSTRETCHTOFIT
|
MENUITEM "Stretch to &fit", ID_OPTIONS_VIDEO_FULLSCREENSTRETCHTOFIT
|
||||||
END
|
END
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
POPUP "&Frame Skip"
|
|
||||||
BEGIN
|
|
||||||
MENUITEM "&Automatic", ID_OPTIONS_FRAMESKIP_AUTOMATIC
|
|
||||||
MENUITEM SEPARATOR
|
|
||||||
MENUITEM "&No frame skip", ID_OPTIONS_VIDEO_FRAMESKIP_0
|
|
||||||
MENUITEM "&1 frame", ID_OPTIONS_VIDEO_FRAMESKIP_1
|
|
||||||
MENUITEM "&2 frames", ID_OPTIONS_VIDEO_FRAMESKIP_2
|
|
||||||
MENUITEM "&3 frames", ID_OPTIONS_VIDEO_FRAMESKIP_3
|
|
||||||
MENUITEM "&4 frames", ID_OPTIONS_VIDEO_FRAMESKIP_4
|
|
||||||
MENUITEM "&5 frames", ID_OPTIONS_VIDEO_FRAMESKIP_5
|
|
||||||
MENUITEM "&6 frames", ID_OPTIONS_VIDEO_FRAMESKIP_6
|
|
||||||
MENUITEM "&7 frames", ID_OPTIONS_VIDEO_FRAMESKIP_7
|
|
||||||
MENUITEM "&8 frames", ID_OPTIONS_VIDEO_FRAMESKIP_8
|
|
||||||
MENUITEM "&9 frames", ID_OPTIONS_VIDEO_FRAMESKIP_9
|
|
||||||
MENUITEM SEPARATOR
|
|
||||||
MENUITEM "Turbo mode", ID_OPTIONS_EMULATOR_SPEEDUPTOGGLE
|
|
||||||
END
|
|
||||||
POPUP "Throttle"
|
|
||||||
BEGIN
|
|
||||||
MENUITEM "No throttle", ID_OPTIONS_FRAMESKIP_THROTTLE_NOTHROTTLE
|
|
||||||
MENUITEM "25%", ID_OPTIONS_FRAMESKIP_THROTTLE_25
|
|
||||||
MENUITEM "50%", ID_OPTIONS_FRAMESKIP_THROTTLE_50
|
|
||||||
MENUITEM "100%", ID_OPTIONS_FRAMESKIP_THROTTLE_100
|
|
||||||
MENUITEM "150%", ID_OPTIONS_FRAMESKIP_THROTTLE_150
|
|
||||||
MENUITEM "200%", ID_OPTIONS_FRAMESKIP_THROTTLE_200
|
|
||||||
MENUITEM "&Other...", ID_OPTIONS_FRAMESKIP_THROTTLE_OTHER
|
|
||||||
END
|
|
||||||
MENUITEM SEPARATOR
|
|
||||||
MENUITEM "D&isable status messages", ID_OPTIONS_EMULATOR_DISABLESTATUSMESSAGES
|
MENUITEM "D&isable status messages", ID_OPTIONS_EMULATOR_DISABLESTATUSMESSAGES
|
||||||
END
|
END
|
||||||
POPUP "&Pixel Filter"
|
POPUP "&Pixel Filter"
|
||||||
|
@ -1780,6 +1752,34 @@ BEGIN
|
||||||
END
|
END
|
||||||
MENUITEM "Rewind interval...", ID_OPTIONS_EMULATOR_REWINDINTERVAL
|
MENUITEM "Rewind interval...", ID_OPTIONS_EMULATOR_REWINDINTERVAL
|
||||||
END
|
END
|
||||||
|
POPUP "&Speed"
|
||||||
|
BEGIN
|
||||||
|
POPUP "&Throttle"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "25%", ID_OPTIONS_FRAMESKIP_THROTTLE_25
|
||||||
|
MENUITEM "50%", ID_OPTIONS_FRAMESKIP_THROTTLE_50
|
||||||
|
MENUITEM "100%", ID_OPTIONS_FRAMESKIP_THROTTLE_100
|
||||||
|
MENUITEM "150%", ID_OPTIONS_FRAMESKIP_THROTTLE_150
|
||||||
|
MENUITEM "200%", ID_OPTIONS_FRAMESKIP_THROTTLE_200
|
||||||
|
MENUITEM "&Other...", ID_OPTIONS_FRAMESKIP_THROTTLE_OTHER
|
||||||
|
MENUITEM "No throttle", ID_OPTIONS_FRAMESKIP_THROTTLE_NOTHROTTLE
|
||||||
|
END
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
POPUP "&Frame Skip"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "&No frame skip", ID_OPTIONS_VIDEO_FRAMESKIP_0
|
||||||
|
MENUITEM "&1 frame", ID_OPTIONS_VIDEO_FRAMESKIP_1
|
||||||
|
MENUITEM "&2 frames", ID_OPTIONS_VIDEO_FRAMESKIP_2
|
||||||
|
MENUITEM "&3 frames", ID_OPTIONS_VIDEO_FRAMESKIP_3
|
||||||
|
MENUITEM "&4 frames", ID_OPTIONS_VIDEO_FRAMESKIP_4
|
||||||
|
MENUITEM "&5 frames", ID_OPTIONS_VIDEO_FRAMESKIP_5
|
||||||
|
MENUITEM "&6 frames", ID_OPTIONS_VIDEO_FRAMESKIP_6
|
||||||
|
MENUITEM "&7 frames", ID_OPTIONS_VIDEO_FRAMESKIP_7
|
||||||
|
MENUITEM "&8 frames", ID_OPTIONS_VIDEO_FRAMESKIP_8
|
||||||
|
MENUITEM "&9 frames", ID_OPTIONS_VIDEO_FRAMESKIP_9
|
||||||
|
END
|
||||||
|
MENUITEM "Turbo mode", ID_OPTIONS_EMULATOR_SPEEDUPTOGGLE
|
||||||
|
END
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
POPUP "&Emulator"
|
POPUP "&Emulator"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
@ -821,13 +821,14 @@
|
||||||
#define ID_OUTPUTAPI_OALCONFIGURATION 40350
|
#define ID_OUTPUTAPI_OALCONFIGURATION 40350
|
||||||
#define ID_RENDERAPI_FILTER 40351
|
#define ID_RENDERAPI_FILTER 40351
|
||||||
#define ID_OPTIONS_VIDEO_RENDEROPTIONS_GLSLSHADERS 40352
|
#define ID_OPTIONS_VIDEO_RENDEROPTIONS_GLSLSHADERS 40352
|
||||||
|
#define ID_OPTIONS_SPEED 40353
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 161
|
#define _APS_NEXT_RESOURCE_VALUE 161
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40353
|
#define _APS_NEXT_COMMAND_VALUE 40354
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1272
|
#define _APS_NEXT_CONTROL_VALUE 1272
|
||||||
#define _APS_NEXT_SYMED_VALUE 103
|
#define _APS_NEXT_SYMED_VALUE 103
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue