core/loader: Track the NSO build ID of the current process
This commit is contained in:
parent
943662dc3c
commit
f6c53526b3
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Reference in New Issue