|
|
@ -139,6 +139,8 @@ void System::Reschedule() { |
|
|
System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) { |
|
|
System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) { |
|
|
LOG_DEBUG(HW_Memory, "initialized OK"); |
|
|
LOG_DEBUG(HW_Memory, "initialized OK"); |
|
|
|
|
|
|
|
|
|
|
|
CoreTiming::Init(); |
|
|
|
|
|
|
|
|
switch (Settings::values.cpu_core) { |
|
|
switch (Settings::values.cpu_core) { |
|
|
case Settings::CpuCore::Unicorn: |
|
|
case Settings::CpuCore::Unicorn: |
|
|
cpu_core = std::make_shared<ARM_Unicorn>(); |
|
|
cpu_core = std::make_shared<ARM_Unicorn>(); |
|
|
@ -154,14 +156,13 @@ System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) { |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
scheduler = std::make_unique<Kernel::Scheduler>(cpu_core.get()); |
|
|
|
|
|
gpu_core = std::make_unique<Tegra::GPU>(); |
|
|
gpu_core = std::make_unique<Tegra::GPU>(); |
|
|
|
|
|
|
|
|
telemetry_session = std::make_unique<Core::TelemetrySession>(); |
|
|
telemetry_session = std::make_unique<Core::TelemetrySession>(); |
|
|
|
|
|
|
|
|
CoreTiming::Init(); |
|
|
|
|
|
HW::Init(); |
|
|
HW::Init(); |
|
|
Kernel::Init(system_mode); |
|
|
Kernel::Init(system_mode); |
|
|
|
|
|
scheduler = std::make_unique<Kernel::Scheduler>(cpu_core.get()); |
|
|
Service::Init(); |
|
|
Service::Init(); |
|
|
GDBStub::Init(); |
|
|
GDBStub::Init(); |
|
|
|
|
|
|
|
|
@ -189,15 +190,18 @@ void System::Shutdown() { |
|
|
perf_results.frametime * 1000.0); |
|
|
perf_results.frametime * 1000.0); |
|
|
|
|
|
|
|
|
// Shutdown emulation session
|
|
|
// Shutdown emulation session
|
|
|
GDBStub::Shutdown(); |
|
|
|
|
|
VideoCore::Shutdown(); |
|
|
VideoCore::Shutdown(); |
|
|
|
|
|
GDBStub::Shutdown(); |
|
|
Service::Shutdown(); |
|
|
Service::Shutdown(); |
|
|
|
|
|
scheduler = nullptr; |
|
|
Kernel::Shutdown(); |
|
|
Kernel::Shutdown(); |
|
|
HW::Shutdown(); |
|
|
HW::Shutdown(); |
|
|
CoreTiming::Shutdown(); |
|
|
|
|
|
|
|
|
telemetry_session = nullptr; |
|
|
|
|
|
gpu_core = nullptr; |
|
|
cpu_core = nullptr; |
|
|
cpu_core = nullptr; |
|
|
|
|
|
CoreTiming::Shutdown(); |
|
|
|
|
|
|
|
|
app_loader = nullptr; |
|
|
app_loader = nullptr; |
|
|
telemetry_session = nullptr; |
|
|
|
|
|
|
|
|
|
|
|
LOG_DEBUG(Core, "Shutdown OK"); |
|
|
LOG_DEBUG(Core, "Shutdown OK"); |
|
|
} |
|
|
} |
|
|
|