From f6c53526b3e6852577ad5f5986be89202b15c5b2 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sun, 28 Apr 2019 18:43:48 -0400 Subject: [PATCH] core/loader: Track the NSO build ID of the current process --- src/core/core.cpp | 9 +++++++++ src/core/core.h | 4 ++++ src/core/loader/nso.cpp | 1 + 3 files changed, 14 insertions(+) diff --git a/src/core/core.cpp b/src/core/core.cpp index 92ba42fb9..75a7ffb97 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -339,6 +339,7 @@ struct System::Impl { std::unique_ptr cheat_engine; std::unique_ptr memory_freezer; + std::array build_id{}; /// Frontend applets Service::AM::Applets::AppletManager applet_manager; @@ -640,6 +641,14 @@ bool System::GetExitLock() const { return impl->exit_lock; } +void System::SetCurrentProcessBuildID(std::array id) { + impl->build_id = id; +} + +const std::array& System::GetCurrentProcessBuildID() const { + return impl->build_id; +} + System::ResultStatus System::Init(Frontend::EmuWindow& emu_window) { return impl->Init(*this, emu_window); } diff --git a/src/core/core.h b/src/core/core.h index ff10ebe12..f49b7fbf9 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -330,6 +330,10 @@ public: bool GetExitLock() const; + void SetCurrentProcessBuildID(std::array id); + + const std::array& GetCurrentProcessBuildID() const; + private: System(); diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp index e75c700ad..f629892ae 100644 --- a/src/core/loader/nso.cpp +++ b/src/core/loader/nso.cpp @@ -150,6 +150,7 @@ std::optional AppLoader_NSO::LoadModule(Kernel::Process& process, // Apply cheats if they exist and the program has a valid title ID if (pm) { auto& system = Core::System::GetInstance(); + system.SetCurrentProcessBuildID(nso_header.build_id); const auto cheats = pm->CreateCheatList(system, nso_header.build_id); if (!cheats.empty()) { system.RegisterCheatList(cheats, nso_header.build_id, load_base, image_size);