// Copyright (c) 2012- PPSSPP Project.12// This program is free software: you can redistribute it and/or modify3// it under the terms of the GNU General Public License as published by4// the Free Software Foundation, version 2.0 or later versions.56// This program is distributed in the hope that it will be useful,7// but WITHOUT ANY WARRANTY; without even the implied warranty of8// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the9// GNU General Public License 2.0 for more details.1011// A copy of the GPL 2.0 should have been included with the program.12// If not, see http://www.gnu.org/licenses/1314// Official git repository and contact information can be found at15// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.1617#pragma once1819#include <string>2021#include "Common/File/Path.h"22#include "Core/Compatibility.h"23#include "Core/Loaders.h"2425enum GPUCore : int {26GPUCORE_GLES = 0,27GPUCORE_SOFTWARE = 1,28GPUCORE_DIRECTX11 = 3,29GPUCORE_VULKAN = 4,30};3132enum class FPSLimit {33NORMAL = 0,34CUSTOM1 = 1,35CUSTOM2 = 2,36ANALOG = 3,37};3839class FileLoader;4041class GraphicsContext;42namespace Draw {43class DrawContext;44}4546enum class CPUCore;4748// PSP_CoreParameter()49struct CoreParameter {50CPUCore cpuCore;51GPUCore gpuCore;5253GraphicsContext *graphicsContext = nullptr; // TODO: Find a better place.54bool enableSound = true; // there aren't multiple sound cores.5556Path fileToStart;57Path mountIso; // If non-empty, and fileToStart is an ELF or PBP, will mount this ISO in the background to umd1:.58Path mountRoot; // If non-empty, and fileToStart is an ELF or PBP, mount this as host0: / umd0:.59std::string errorString;6061bool startBreak = false;62std::string *collectDebugOutput = nullptr;63bool headLess = false; // Try to avoid messageboxes etc6465// Internal PSP rendering resolution and scale factor.66int renderScaleFactor = 1;67int renderWidth = 0;68int renderHeight = 0;6970// Actual output resolution in pixels.71int pixelWidth = 0;72int pixelHeight = 0;7374// Can be modified at runtime. Do not belong here.75bool fastForward = false;76FPSLimit fpsLimit = FPSLimit::NORMAL;77int analogFpsLimit = 0;7879bool updateRecent = true;8081// Freeze-frame. For nvidia perfhud profiling. Developers only.82bool freezeNext = false;83bool frozen = false;8485FileLoader *mountIsoLoader = nullptr;86IdentifiedFileType fileType = IdentifiedFileType::UNKNOWN;8788Compatibility compat;89};909192