core/loader: Track the NSO build ID of the current process

This commit is contained in:
Zach Hilman 2019-04-28 18:43:48 -04:00
parent 943662dc3c
commit f6c53526b3
3 changed files with 14 additions and 0 deletions

View File

@ -339,6 +339,7 @@ struct System::Impl {
std::unique_ptr<Memory::CheatEngine> cheat_engine; std::unique_ptr<Memory::CheatEngine> cheat_engine;
std::unique_ptr<Tools::Freezer> memory_freezer; std::unique_ptr<Tools::Freezer> memory_freezer;
std::array<u8, 0x20> build_id{};
/// Frontend applets /// Frontend applets
Service::AM::Applets::AppletManager applet_manager; Service::AM::Applets::AppletManager applet_manager;
@ -640,6 +641,14 @@ bool System::GetExitLock() const {
return impl->exit_lock; return impl->exit_lock;
} }
void System::SetCurrentProcessBuildID(std::array<u8, 32> id) {
impl->build_id = id;
}
const std::array<u8, 32>& System::GetCurrentProcessBuildID() const {
return impl->build_id;
}
System::ResultStatus System::Init(Frontend::EmuWindow& emu_window) { System::ResultStatus System::Init(Frontend::EmuWindow& emu_window) {
return impl->Init(*this, emu_window); return impl->Init(*this, emu_window);
} }

View File

@ -330,6 +330,10 @@ public:
bool GetExitLock() const; bool GetExitLock() const;
void SetCurrentProcessBuildID(std::array<u8, 0x20> id);
const std::array<u8, 0x20>& GetCurrentProcessBuildID() const;
private: private:
System(); System();

View File

@ -150,6 +150,7 @@ std::optional<VAddr> AppLoader_NSO::LoadModule(Kernel::Process& process,
// Apply cheats if they exist and the program has a valid title ID // Apply cheats if they exist and the program has a valid title ID
if (pm) { if (pm) {
auto& system = Core::System::GetInstance(); auto& system = Core::System::GetInstance();
system.SetCurrentProcessBuildID(nso_header.build_id);
const auto cheats = pm->CreateCheatList(system, nso_header.build_id); const auto cheats = pm->CreateCheatList(system, nso_header.build_id);
if (!cheats.empty()) { if (!cheats.empty()) {
system.RegisterCheatList(cheats, nso_header.build_id, load_base, image_size); system.RegisterCheatList(cheats, nso_header.build_id, load_base, image_size);