1 // Copyright (c) 2012- PPSSPP Project. 2 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU General Public License as published by 5 // the Free Software Foundation, version 2.0 or later versions. 6 7 // This program is distributed in the hope that it will be useful, 8 // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 // GNU General Public License 2.0 for more details. 11 12 // A copy of the GPL 2.0 should have been included with the program. 13 // If not, see http://www.gnu.org/licenses/ 14 15 // Official git repository and contact information can be found at 16 // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/. 17 18 #pragma once 19 20 #include <string> 21 22 #include "Core/Compatibility.h" 23 #include "Core/Config.h" 24 25 enum GPUCore { 26 GPUCORE_GLES, 27 GPUCORE_SOFTWARE, 28 GPUCORE_DIRECTX9, 29 GPUCORE_DIRECTX11, 30 GPUCORE_VULKAN, 31 }; 32 33 enum class FPSLimit { 34 NORMAL = 0, 35 CUSTOM1 = 1, 36 CUSTOM2 = 2, 37 }; 38 39 class FileLoader; 40 41 class GraphicsContext; 42 namespace Draw { 43 class DrawContext; 44 } 45 46 enum class CPUCore; 47 48 // PSP_CoreParameter() 49 struct CoreParameter { CoreParameterCoreParameter50 CoreParameter() {} 51 52 CPUCore cpuCore; 53 GPUCore gpuCore; 54 55 GraphicsContext *graphicsContext = nullptr; // TODO: Find a better place. 56 bool enableSound; // there aren't multiple sound cores. 57 58 Path fileToStart; 59 Path mountIso; // If non-empty, and fileToStart is an ELF or PBP, will mount this ISO in the background to umd1:. 60 Path mountRoot; // If non-empty, and fileToStart is an ELF or PBP, mount this as host0: / umd0:. 61 std::string errorString; 62 63 bool startBreak; 64 bool printfEmuLog; // writes "emulator:" logging to stdout 65 std::string *collectEmuLog = nullptr; 66 bool headLess; // Try to avoid messageboxes etc 67 68 // Internal PSP rendering resolution and scale factor. 69 int renderScaleFactor; 70 int renderWidth; 71 int renderHeight; 72 73 // Actual output resolution in pixels. 74 int pixelWidth; 75 int pixelHeight; 76 77 // Can be modified at runtime. 78 bool fastForward = false; 79 FPSLimit fpsLimit = FPSLimit::NORMAL; 80 81 bool updateRecent = true; 82 83 // Freeze-frame. For nvidia perfhud profiling. Developers only. 84 bool freezeNext = false; 85 bool frozen = false; 86 87 FileLoader *mountIsoLoader = nullptr; 88 89 Compatibility compat; 90 }; 91