core/loader: Track the NSO build ID of the current process
This commit is contained in:
		@@ -339,6 +339,7 @@ struct System::Impl {
 | 
			
		||||
 | 
			
		||||
    std::unique_ptr<Memory::CheatEngine> cheat_engine;
 | 
			
		||||
    std::unique_ptr<Tools::Freezer> memory_freezer;
 | 
			
		||||
    std::array<u8, 0x20> 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<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) {
 | 
			
		||||
    return impl->Init(*this, emu_window);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -330,6 +330,10 @@ public:
 | 
			
		||||
 | 
			
		||||
    bool GetExitLock() const;
 | 
			
		||||
 | 
			
		||||
    void SetCurrentProcessBuildID(std::array<u8, 0x20> id);
 | 
			
		||||
 | 
			
		||||
    const std::array<u8, 0x20>& GetCurrentProcessBuildID() const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    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
 | 
			
		||||
    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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user