|
|
|
@ -145,7 +145,7 @@ struct System::Impl {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ResultStatus Init(System& system, Frontend::EmuWindow& emu_window) {
|
|
|
|
|
LOG_DEBUG(HW_Memory, "initialized OK");
|
|
|
|
|
LOG_DEBUG(Core, "initialized OK");
|
|
|
|
|
|
|
|
|
|
device_memory = std::make_unique<Core::DeviceMemory>();
|
|
|
|
|
|
|
|
|
@ -208,9 +208,11 @@ struct System::Impl {
|
|
|
|
|
return ResultStatus::Success;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ResultStatus Load(System& system, Frontend::EmuWindow& emu_window,
|
|
|
|
|
const std::string& filepath) {
|
|
|
|
|
app_loader = Loader::GetLoader(system, GetGameFileFromPath(virtual_filesystem, filepath));
|
|
|
|
|
ResultStatus Load(System& system, Frontend::EmuWindow& emu_window, const std::string& filepath,
|
|
|
|
|
std::size_t program_index) {
|
|
|
|
|
app_loader = Loader::GetLoader(system, GetGameFileFromPath(virtual_filesystem, filepath),
|
|
|
|
|
program_index);
|
|
|
|
|
|
|
|
|
|
if (!app_loader) {
|
|
|
|
|
LOG_CRITICAL(Core, "Failed to obtain loader for {}!", filepath);
|
|
|
|
|
return ResultStatus::ErrorGetLoader;
|
|
|
|
@ -416,6 +418,8 @@ struct System::Impl {
|
|
|
|
|
bool is_multicore{};
|
|
|
|
|
bool is_async_gpu{};
|
|
|
|
|
|
|
|
|
|
ExecuteProgramCallback execute_program_callback;
|
|
|
|
|
|
|
|
|
|
std::array<u64, Core::Hardware::NUM_CPU_CORES> dynarmic_ticks{};
|
|
|
|
|
std::array<MicroProfileToken, Core::Hardware::NUM_CPU_CORES> microprofile_dynarmic{};
|
|
|
|
|
};
|
|
|
|
@ -451,8 +455,9 @@ void System::Shutdown() {
|
|
|
|
|
impl->Shutdown();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
System::ResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::string& filepath) {
|
|
|
|
|
return impl->Load(*this, emu_window, filepath);
|
|
|
|
|
System::ResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::string& filepath,
|
|
|
|
|
std::size_t program_index) {
|
|
|
|
|
return impl->Load(*this, emu_window, filepath, program_index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool System::IsPoweredOn() const {
|
|
|
|
@ -789,4 +794,16 @@ bool System::IsMulticore() const {
|
|
|
|
|
return impl->is_multicore;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void System::RegisterExecuteProgramCallback(ExecuteProgramCallback&& callback) {
|
|
|
|
|
impl->execute_program_callback = std::move(callback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void System::ExecuteProgram(std::size_t program_index) {
|
|
|
|
|
if (impl->execute_program_callback) {
|
|
|
|
|
impl->execute_program_callback(program_index);
|
|
|
|
|
} else {
|
|
|
|
|
LOG_CRITICAL(Core, "execute_program_callback must be initialized by the frontend");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace Core
|
|
|
|
|