diff --git a/Core/Config.cpp b/Core/Config.cpp index d2015fa876..f3c0634270 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -358,6 +358,7 @@ static ConfigSetting generalSettings[] = { ConfigSetting("CwCheatRefreshRate", &g_Config.iCwCheatRefreshRate, 77, true, true), ConfigSetting("ScreenshotsAsPNG", &g_Config.bScreenshotsAsPNG, false, true, true), + ConfigSetting("ScreenshotsAtRenderRes", &g_Config.bScreenshotsAtRenderRes, false, true, true), ConfigSetting("UseFFV1", &g_Config.bUseFFV1, false), ConfigSetting("DumpFrames", &g_Config.bDumpFrames, false), ConfigSetting("DumpAudio", &g_Config.bDumpAudio, false), diff --git a/Core/Config.h b/Core/Config.h index 7ad545d08d..8e2a11cbe0 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -102,6 +102,7 @@ public: // General int iNumWorkerThreads; bool bScreenshotsAsPNG; + bool bScreenshotsAtRenderRes; bool bUseFFV1; bool bDumpFrames; bool bDumpAudio; diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 3bfd5166a7..bf539a605a 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -287,14 +287,14 @@ void GameSettingsScreen::CreateViews() { graphicsSettings->Add(new ItemHeader(gr->T("Performance"))); #ifndef MOBILE_DEVICE - static const char *internalResolutions[] = {"Auto (1:1)", "1x PSP", "2x PSP", "3x PSP", "4x PSP", "5x PSP", "6x PSP", "7x PSP", "8x PSP", "9x PSP", "10x PSP" }; + PopupSliderChoice *internalResolutions = graphicsSettings->Add(new PopupSliderChoice(&g_Config.iInternalResolution, 0, 32, gr->T("Rendering Resolution", "Rendering Resolution"), 1, screenManager(), gr->T("* PSP res, 0:Auto"))); #else - static const char *internalResolutions[] = {"Auto (1:1)", "1x PSP", "2x PSP", "3x PSP", "4x PSP", "5x PSP" }; + PopupSliderChoice *internalResolutions = graphicsSettings->Add(new PopupSliderChoice(&g_Config.iInternalResolution, 0, 8, gr->T("Rendering Resolution", "Rendering Resolution"), 1, screenManager(), gr->T("* PSP res, 0:Auto"))); #endif - resolutionChoice_ = graphicsSettings->Add(new PopupMultiChoice(&g_Config.iInternalResolution, gr->T("Rendering Resolution"), internalResolutions, 0, ARRAY_SIZE(internalResolutions), gr->GetName(), screenManager())); - resolutionChoice_->OnChoice.Handle(this, &GameSettingsScreen::OnResolutionChange); + internalResolutions->SetFormat("%ix"); + internalResolutions->SetZeroLabel(gr->T("Auto (1:1)")); resolutionEnable_ = !g_Config.bSoftwareRendering && (g_Config.iRenderingMode != FB_NON_BUFFERED_MODE); - resolutionChoice_->SetEnabledPtr(&resolutionEnable_); + internalResolutions->SetEnabledPtr(&resolutionEnable_); #ifdef __ANDROID__ static const char *deviceResolutions[] = { "Native device resolution", "Auto (same as Rendering)", "1x PSP", "2x PSP", "3x PSP", "4x PSP", "5x PSP" }; @@ -802,6 +802,7 @@ void GameSettingsScreen::CreateViews() { if (!g_Config.bSimpleUI) { // Screenshot functionality is not yet available on non-Windows/non-Qt systemSettings->Add(new CheckBox(&g_Config.bScreenshotsAsPNG, sy->T("Screenshots as PNG"))); + systemSettings->Add(new CheckBox(&g_Config.bScreenshotsAtRenderRes, sy->T("Screenshots use render resolution and skip OSD/effects"))); } systemSettings->Add(new CheckBox(&g_Config.bDumpFrames, sy->T("Record Display"))); systemSettings->Add(new CheckBox(&g_Config.bUseFFV1, sy->T("Use Lossless Video Codec (FFV1)"))); diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index 78918c57e2..fd00432a54 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -758,7 +758,7 @@ void TakeScreenshot() { i++; } - bool success = TakeGameScreenshot(filename, g_Config.bScreenshotsAsPNG ? SCREENSHOT_PNG : SCREENSHOT_JPG, SCREENSHOT_OUTPUT); + bool success = TakeGameScreenshot(filename, g_Config.bScreenshotsAsPNG ? SCREENSHOT_PNG : SCREENSHOT_JPG, g_Config.bScreenshotsAtRenderRes ? SCREENSHOT_DISPLAY : SCREENSHOT_OUTPUT); if (success) { osm.Show(filename); } else { diff --git a/Windows/MainWindow.h b/Windows/MainWindow.h index bf879b1bc1..b8327da086 100644 --- a/Windows/MainWindow.h +++ b/Windows/MainWindow.h @@ -45,7 +45,7 @@ namespace MainWindow RESOLUTION_7X = 7, RESOLUTION_8X = 8, RESOLUTION_9X = 9, - RESOLUTION_MAX = 10, + RESOLUTION_MAX = 32, TEXSCALING_AUTO = 0, TEXSCALING_OFF = 1, diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index 805d102720..7c8b114ac5 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -742,7 +742,7 @@ namespace MainWindow { case ID_OPTIONS_SCREEN7X: SetInternalResolution(RESOLUTION_7X); break; case ID_OPTIONS_SCREEN8X: SetInternalResolution(RESOLUTION_8X); break; case ID_OPTIONS_SCREEN9X: SetInternalResolution(RESOLUTION_9X); break; - case ID_OPTIONS_SCREEN10X: SetInternalResolution(RESOLUTION_MAX); break; + case ID_OPTIONS_SCREENMAX: SetInternalResolution(RESOLUTION_MAX); break; case ID_OPTIONS_WINDOW1X: SetWindowSize(1); break; case ID_OPTIONS_WINDOW2X: SetWindowSize(2); break; @@ -1113,7 +1113,7 @@ namespace MainWindow { ID_OPTIONS_SCREEN7X, ID_OPTIONS_SCREEN8X, ID_OPTIONS_SCREEN9X, - ID_OPTIONS_SCREEN10X, + ID_OPTIONS_SCREENMAX, }; if (g_Config.iInternalResolution < RESOLUTION_AUTO) g_Config.iInternalResolution = RESOLUTION_AUTO; diff --git a/Windows/ppsspp.rc b/Windows/ppsspp.rc index a324f42896..f2e0507630 100644 --- a/Windows/ppsspp.rc +++ b/Windows/ppsspp.rc @@ -484,7 +484,7 @@ BEGIN MENUITEM "&7x", ID_OPTIONS_SCREEN7X MENUITEM "&8x", ID_OPTIONS_SCREEN8X MENUITEM "&9x", ID_OPTIONS_SCREEN9X - MENUITEM "&10x", ID_OPTIONS_SCREEN10X + MENUITEM "&Max", ID_OPTIONS_SCREENMAX END POPUP "Window Size" BEGIN diff --git a/Windows/resource.h b/Windows/resource.h index f105eb9739..1a5fa8e24c 100644 --- a/Windows/resource.h +++ b/Windows/resource.h @@ -278,7 +278,7 @@ #define ID_OPTIONS_SCREEN7X 40112 #define ID_OPTIONS_SCREEN8X 40113 #define ID_OPTIONS_SCREEN9X 40114 -#define ID_OPTIONS_SCREEN10X 40115 +#define ID_OPTIONS_SCREENMAX 40115 #define ID_DEBUG_GEDEBUGGER 40116 #define IDC_GEDBG_STEPDRAW 40117 #define IDC_GEDBG_RESUME 40118