Remove the "Percentage of framerate" frameskip type

This commit is contained in:
Henrik Rydgård
2025-10-20 11:18:06 +02:00
parent 54e6d04f9a
commit 5aeab28e9b
11 changed files with 3 additions and 81 deletions
-1
View File
@@ -688,7 +688,6 @@ static const ConfigSetting graphicsSettings[] = {
ConfigSetting("AndroidHwScale", &g_Config.iAndroidHwScale, &DefaultAndroidHwScale, CfgFlag::DEFAULT),
ConfigSetting("HighQualityDepth", &g_Config.bHighQualityDepth, true, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("FrameSkip", &g_Config.iFrameSkip, 0, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("FrameSkipType", &g_Config.iFrameSkipType, 0, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("AutoFrameSkip", &g_Config.bAutoFrameSkip, IsVREnabled(), CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("StereoRendering", &g_Config.bStereoRendering, false, CfgFlag::PER_GAME),
ConfigSetting("StereoToMonoShader", &g_Config.sStereoToMonoShader, "RedBlue", CfgFlag::PER_GAME),
-1
View File
@@ -203,7 +203,6 @@ public:
bool bShowImDebugger;
int iFrameSkip;
int iFrameSkipType;
int iFastForwardMode; // See FastForwardMode in ConfigValues.h.
bool bAutoFrameSkip;
+2 -2
View File
@@ -424,7 +424,7 @@ static void DoFrameTiming(bool throttle, bool *skipFrame, float scaledTimestep,
}
// Auto-frameskip automatically if speed limit is set differently than the default.
int frameSkipNum = DisplayCalculateFrameSkip();
int frameSkipNum = g_Config.iFrameSkip;
if (g_Config.bAutoFrameSkip && !g_Config.bSkipBufferEffects) {
// autoframeskip
// Argh, we are falling behind! Let's skip a frame and see if we catch up.
@@ -673,7 +673,7 @@ void __DisplayFlip(int cyclesLate) {
DoFrameTiming(throttle, &skipFrame, scaledTimestep, nextFrame);
int maxFrameskip = 8;
int frameSkipNum = DisplayCalculateFrameSkip();
const int frameSkipNum = g_Config.iFrameSkip;
if (throttle) {
// 4 here means 1 drawn, 4 skipped - so 12 fps minimum.
maxFrameskip = frameSkipNum;
-12
View File
@@ -296,18 +296,6 @@ void __DisplayForgetFlip(FlipCallback callback, void *userdata) {
}), flipListeners.end());
}
int DisplayCalculateFrameSkip() {
int frameSkipNum;
if (g_Config.iFrameSkipType == 1) {
// Calculate the frames to skip dynamically using the set percentage of the current fps
frameSkipNum = (int)ceil(flips * (static_cast<double>(g_Config.iFrameSkip) / 100.00));
} else {
// Use the set number of frames to skip
frameSkipNum = g_Config.iFrameSkip;
}
return frameSkipNum;
}
void DisplayHWReset() {
frameStartTicks = 0;
numVBlanks = 0;
-5
View File
@@ -99,7 +99,6 @@ void MainWindow::updateMenus()
updateMenuGroupInt(displayRotationGroup, g_Config.iInternalScreenRotation);
updateMenuGroupInt(renderingResolutionGroup, g_Config.iInternalResolution);
updateMenuGroupInt(frameSkippingGroup, g_Config.iFrameSkip);
updateMenuGroupInt(frameSkippingTypeGroup, g_Config.iFrameSkipType);
updateMenuGroupInt(textureFilteringGroup, g_Config.iTexFiltering);
updateMenuGroupInt(screenScalingFilterGroup, g_Config.iDisplayFilter);
updateMenuGroupInt(textureScalingLevelGroup, g_Config.iTexScalingLevel);
@@ -626,10 +625,6 @@ void MainWindow::createMenus()
frameSkippingGroup = new MenuActionGroup(this, frameSkippingMenu, SLOT(frameSkippinGroup_triggered(QAction *)),
QStringList() << "&Off" << "&1" << "&2" << "&3" << "&4" << "&5" << "&6" << "&7" << "&8",
QList<int>() << 0 << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8);
MenuTree* frameSkippingTypeMenu = new MenuTree(this, gameSettingsMenu, QT_TR_NOOP("Frame skipping type"));
frameSkippingTypeGroup = new MenuActionGroup(this, frameSkippingTypeMenu, SLOT(frameSkippingTypeGroup_triggered(QAction *)),
QStringList() << "Skip number of frames" << "Skip percent of FPS",
QList<int>() << 0 << 1);
MenuTree* textureFilteringMenu = new MenuTree(this, gameSettingsMenu, QT_TR_NOOP("Te&xture filtering"));
textureFilteringGroup = new MenuActionGroup(this, textureFilteringMenu, SLOT(textureFilteringGroup_triggered(QAction *)),
QStringList() << "&Auto" << "&Nearest" << "&Linear" << "Auto Max &Quality",
+1 -4
View File
@@ -141,7 +141,6 @@ private slots:
}
}
void frameSkippingGroup_triggered(QAction *action) { g_Config.iFrameSkip = action->data().toInt(); }
void frameSkippingTypeGroup_triggered(QAction *action) { g_Config.iFrameSkipType = action->data().toInt(); }
void textureFilteringGroup_triggered(QAction *action) { g_Config.iTexFiltering = action->data().toInt(); }
void screenScalingFilterGroup_triggered(QAction *action) { g_Config.iDisplayFilter = action->data().toInt(); }
void textureScalingLevelGroup_triggered(QAction *action) {
@@ -161,7 +160,6 @@ private slots:
System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED);
}
void frameskipAct() { g_Config.iFrameSkip = !g_Config.iFrameSkip; }
void frameskipTypeAct() { g_Config.iFrameSkipType = !g_Config.iFrameSkipType; }
// Sound
void audioAct() {
@@ -209,8 +207,7 @@ private:
QActionGroup *windowGroup,
*textureScalingLevelGroup, *textureScalingTypeGroup,
*screenScalingFilterGroup, *textureFilteringGroup,
*frameSkippingTypeGroup, *frameSkippingGroup,
*renderingResolutionGroup,
*frameSkippingGroup, *renderingResolutionGroup,
*displayRotationGroup, *saveStateGroup;
std::queue<MainWindowMsg> msgQueue_;
-2
View File
@@ -439,8 +439,6 @@ void GameSettingsScreen::CreateGraphicsSettings(UI::ViewGroup *graphicsSettings)
graphicsSettings->Add(new ItemHeader(gr->T("Frame Rate Control")));
static const char *frameSkip[] = {"Off", "1", "2", "3", "4", "5", "6", "7", "8"};
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iFrameSkip, gr->T("Frame Skipping"), frameSkip, 0, ARRAY_SIZE(frameSkip), I18NCat::GRAPHICS, screenManager()));
static const char *frameSkipType[] = {"Number of Frames", "Percent of FPS"};
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iFrameSkipType, gr->T("Frame Skipping Type"), frameSkipType, 0, ARRAY_SIZE(frameSkipType), I18NCat::GRAPHICS, screenManager()));
frameSkipAuto_ = graphicsSettings->Add(new CheckBox(&g_Config.bAutoFrameSkip, gr->T("Auto FrameSkip")));
frameSkipAuto_->OnClick.Handle(this, &GameSettingsScreen::OnAutoFrameskip);
-37
View File
@@ -295,9 +295,6 @@ namespace MainWindow {
TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIP_MENU, g_Config.bSystemControls ? L"\tF7" : L"");
TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIP_AUTO);
TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIP_0);
TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIPTYPE_MENU);
TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIPTYPE_COUNT);
TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIPTYPE_PRCNT);
// Skip frameskipping 1-8..
TranslateMenuItem(menu, ID_OPTIONS_TEXTUREFILTERING_MENU);
TranslateMenuItem(menu, ID_OPTIONS_TEXTUREFILTERING_AUTO);
@@ -437,26 +434,6 @@ namespace MainWindow {
g_OSD.Show(OSDType::MESSAGE_INFO, messageStream.str());
}
static void setFrameSkippingType(int fskipType = -1) {
if (fskipType >= 0 && fskipType <= 1) {
g_Config.iFrameSkipType = fskipType;
} else {
g_Config.iFrameSkipType = 0;
}
auto gr = GetI18NCategory(I18NCat::GRAPHICS);
std::ostringstream messageStream;
messageStream << gr->T("Frame Skipping Type") << ":" << " ";
if (g_Config.iFrameSkipType == 0)
messageStream << gr->T("Number of Frames");
else
messageStream << gr->T("Percent of FPS");
g_OSD.Show(OSDType::MESSAGE_INFO, messageStream.str());
}
static void RestartApp() {
if (System_GetPropertyBool(SYSPROP_DEBUGGER_PRESENT)) {
PostMessage(MainWindow::GetHWND(), WM_USER_RESTART_EMUTHREAD, 0, 0);
@@ -759,9 +736,6 @@ namespace MainWindow {
case ID_OPTIONS_FRAMESKIP_7: setFrameSkipping(FRAMESKIP_7); break;
case ID_OPTIONS_FRAMESKIP_8: setFrameSkipping(FRAMESKIP_MAX); break;
case ID_OPTIONS_FRAMESKIPTYPE_COUNT: setFrameSkippingType(FRAMESKIPTYPE_COUNT); break;
case ID_OPTIONS_FRAMESKIPTYPE_PRCNT: setFrameSkippingType(FRAMESKIPTYPE_PRCNT); break;
case ID_FILE_EXIT:
if (MainWindow::ConfirmAction(hWnd, false)) {
DestroyWindow(hWnd);
@@ -1027,8 +1001,6 @@ namespace MainWindow {
CHECKITEM(ID_DEBUG_BREAKONLOAD, !g_Config.bAutoRun);
CHECKITEM(ID_OPTIONS_FRAMESKIP_AUTO, g_Config.bAutoFrameSkip);
CHECKITEM(ID_OPTIONS_FRAMESKIP, g_Config.iFrameSkip != FRAMESKIP_OFF);
CHECKITEM(ID_OPTIONS_FRAMESKIPTYPE_COUNT, g_Config.iFrameSkipType == FRAMESKIPTYPE_COUNT);
CHECKITEM(ID_OPTIONS_FRAMESKIPTYPE_PRCNT, g_Config.iFrameSkipType == FRAMESKIPTYPE_PRCNT);
CHECKITEM(ID_OPTIONS_VSYNC, g_Config.bVSync);
CHECKITEM(ID_OPTIONS_TOPMOST, g_Config.bTopMost);
CHECKITEM(ID_OPTIONS_PAUSE_FOCUS, g_Config.bPauseOnLostFocus);
@@ -1190,11 +1162,6 @@ namespace MainWindow {
ID_OPTIONS_FRAMESKIP_8,
};
static const int frameskippingType[] = {
ID_OPTIONS_FRAMESKIPTYPE_COUNT,
ID_OPTIONS_FRAMESKIPTYPE_PRCNT,
};
if (g_Config.iFrameSkip < FRAMESKIP_OFF)
g_Config.iFrameSkip = FRAMESKIP_OFF;
@@ -1205,10 +1172,6 @@ namespace MainWindow {
CheckMenuItem(menu, frameskipping[i], MF_BYCOMMAND | ((i == g_Config.iFrameSkip) ? MF_CHECKED : MF_UNCHECKED));
}
for (int i = 0; i < ARRAY_SIZE(frameskippingType); i++) {
CheckMenuItem(menu, frameskippingType[i], MF_BYCOMMAND | ((i == g_Config.iFrameSkipType) ? MF_CHECKED : MF_UNCHECKED));
}
static const int savestateSlot[] = {
ID_FILE_SAVESTATE_SLOT_1,
ID_FILE_SAVESTATE_SLOT_2,
-5
View File
@@ -642,11 +642,6 @@ BEGIN
MENUITEM "&7", ID_OPTIONS_FRAMESKIP_7
MENUITEM "&8", ID_OPTIONS_FRAMESKIP_8
END
POPUP "Frame Skipping Type", ID_OPTIONS_FRAMESKIPTYPE_MENU
BEGIN
MENUITEM "Skip Number of Frames", ID_OPTIONS_FRAMESKIPTYPE_COUNT
MENUITEM "Skip Percent of FPS", ID_OPTIONS_FRAMESKIPTYPE_PRCNT
END
POPUP "Texture Filtering", ID_OPTIONS_TEXTUREFILTERING_MENU
BEGIN
MENUITEM "Auto", ID_OPTIONS_TEXTUREFILTERING_AUTO
-3
View File
@@ -297,8 +297,6 @@
#define ID_EMULATION_PAUSE 40177
#define ID_HELP_DISCORD 40178
#define IDC_GEDBG_STEPCURVE 40179
#define ID_OPTIONS_FRAMESKIPTYPE_COUNT 40180
#define ID_OPTIONS_FRAMESKIPTYPE_PRCNT 40181
#define ID_FILE_MENU 40182
#define ID_EMULATION_MENU 40183
#define ID_DEBUG_MENU 40184
@@ -312,7 +310,6 @@
#define ID_OPTIONS_BACKEND_MENU 40192
#define ID_OPTIONS_RENDERMODE_MENU 40193
#define ID_OPTIONS_FRAMESKIP_MENU 40194
#define ID_OPTIONS_FRAMESKIPTYPE_MENU 40195
#define ID_OPTIONS_TEXTUREFILTERING_MENU 40196
#define ID_OPTIONS_SCREENFILTER_MENU 40197
#define ID_OPTIONS_TEXTURESCALING_MENU 40198
-9
View File
@@ -733,15 +733,6 @@ static void check_variables(CoreParameter &coreParam)
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
g_Config.iFrameSkip = atoi(var.value);
var.key = "ppsspp_frameskiptype";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
if (!strcmp(var.value, "Number of frames"))
g_Config.iFrameSkipType = 0;
else if (!strcmp(var.value, "Percent of FPS"))
g_Config.iFrameSkipType = 1;
}
var.key = "ppsspp_auto_frameskip";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{