From 5aeab28e9b13bee6aa9acf4e39dc4921368dde15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Mon, 20 Oct 2025 11:18:06 +0200 Subject: [PATCH] Remove the "Percentage of framerate" frameskip type --- Core/Config.cpp | 1 - Core/Config.h | 1 - Core/HLE/sceDisplay.cpp | 4 ++-- Core/HW/Display.cpp | 12 ------------ Qt/mainwindow.cpp | 5 ----- Qt/mainwindow.h | 5 +---- UI/GameSettingsScreen.cpp | 2 -- Windows/MainWindowMenu.cpp | 37 ------------------------------------- Windows/ppsspp.rc | 5 ----- Windows/resource.h | 3 --- libretro/libretro.cpp | 9 --------- 11 files changed, 3 insertions(+), 81 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index e0a5dc7a2a..fa3499a88f 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -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), diff --git a/Core/Config.h b/Core/Config.h index ea75ecd531..668b1aa1ba 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -203,7 +203,6 @@ public: bool bShowImDebugger; int iFrameSkip; - int iFrameSkipType; int iFastForwardMode; // See FastForwardMode in ConfigValues.h. bool bAutoFrameSkip; diff --git a/Core/HLE/sceDisplay.cpp b/Core/HLE/sceDisplay.cpp index 72a74126d3..91d83d8bcb 100644 --- a/Core/HLE/sceDisplay.cpp +++ b/Core/HLE/sceDisplay.cpp @@ -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; diff --git a/Core/HW/Display.cpp b/Core/HW/Display.cpp index 405dec5021..6c4f725864 100644 --- a/Core/HW/Display.cpp +++ b/Core/HW/Display.cpp @@ -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(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; diff --git a/Qt/mainwindow.cpp b/Qt/mainwindow.cpp index 30ee52c75a..4636584098 100644 --- a/Qt/mainwindow.cpp +++ b/Qt/mainwindow.cpp @@ -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() << 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() << 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", diff --git a/Qt/mainwindow.h b/Qt/mainwindow.h index 24bd0f1ef4..67982abd92 100644 --- a/Qt/mainwindow.h +++ b/Qt/mainwindow.h @@ -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 msgQueue_; diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 193876f699..11afa57c60 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -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); diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index ca85814c86..57da2d13f0 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -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, diff --git a/Windows/ppsspp.rc b/Windows/ppsspp.rc index a9a651cf46..5d64a08ab3 100644 --- a/Windows/ppsspp.rc +++ b/Windows/ppsspp.rc @@ -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 diff --git a/Windows/resource.h b/Windows/resource.h index 0b3df7acff..e75e1b44b7 100644 --- a/Windows/resource.h +++ b/Windows/resource.h @@ -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 diff --git a/libretro/libretro.cpp b/libretro/libretro.cpp index b796f57906..7550033b38 100644 --- a/libretro/libretro.cpp +++ b/libretro/libretro.cpp @@ -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) {