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