diff --git a/Source/Core/DiscIO/RiivolutionPatcher.cpp b/Source/Core/DiscIO/RiivolutionPatcher.cpp index 175ee18f17..4a6f7bb2ad 100644 --- a/Source/Core/DiscIO/RiivolutionPatcher.cpp +++ b/Source/Core/DiscIO/RiivolutionPatcher.cpp @@ -15,6 +15,7 @@ #include "Common/IOFile.h" #include "Common/StringUtil.h" #include "Core/Config/AchievementSettings.h" +#include "Core/Core.h" #include "Core/HLE/HLE.h" #include "Core/HW/Memmap.h" #include "Core/IOS/FS/FileSystem.h" @@ -490,8 +491,8 @@ static void ApplyFolderPatchToFST(const Patch& patch, const Folder& folder, ApplyFolderPatchToFST(patch, folder, fst, dol_node, folder.m_disc, folder.m_external); } -void ApplyPatchesToFiles(const std::vector& patches, PatchIndex index, - std::vector* fst, DiscIO::FSTBuilderNode* dol_node) +void ApplyPatchesToFiles(std::span patches, PatchIndex index, + std::vector* fst, FSTBuilderNode* dol_node) { for (const auto& patch : patches) { @@ -509,7 +510,7 @@ void ApplyPatchesToFiles(const std::vector& patches, PatchIndex index, } static bool MemoryMatchesAt(const Core::CPUThreadGuard& guard, u32 offset, - const std::vector& value) + std::span value) { for (u32 i = 0; i < value.size(); ++i) { @@ -521,7 +522,7 @@ static bool MemoryMatchesAt(const Core::CPUThreadGuard& guard, u32 offset, } static void ApplyMemoryPatch(const Core::CPUThreadGuard& guard, u32 offset, - const std::vector& value, const std::vector& original) + std::span value, std::span original) { #ifdef USE_RETRO_ACHIEVEMENTS if (::Config::Get(::Config::RA_HARDCORE_ENABLED)) @@ -534,7 +535,7 @@ static void ApplyMemoryPatch(const Core::CPUThreadGuard& guard, u32 offset, if (!original.empty() && !MemoryMatchesAt(guard, offset, original)) return; - auto& system = Core::System::GetInstance(); + auto& system = guard.GetSystem(); const u32 size = static_cast(value.size()); for (u32 i = 0; i < size; ++i) PowerPC::MMU::HostTryWriteU8(guard, value[i], offset + i); @@ -590,7 +591,7 @@ static void ApplyOcarinaMemoryPatch(const Core::CPUThreadGuard& guard, const Pat if (value.empty()) return; - auto& system = Core::System::GetInstance(); + auto& system = guard.GetSystem(); for (u32 i = 0; i < length; i += 4) { // first find the pattern @@ -622,10 +623,10 @@ static void ApplyOcarinaMemoryPatch(const Core::CPUThreadGuard& guard, const Pat } } -void ApplyGeneralMemoryPatches(const Core::CPUThreadGuard& guard, const std::vector& patches) +void ApplyGeneralMemoryPatches(const Core::CPUThreadGuard& guard, std::span patches) { - auto& system = Core::System::GetInstance(); - auto& system_memory = system.GetMemory(); + const auto& system = guard.GetSystem(); + const auto& system_memory = system.GetMemory(); for (const auto& patch : patches) { @@ -642,8 +643,8 @@ void ApplyGeneralMemoryPatches(const Core::CPUThreadGuard& guard, const std::vec } } -void ApplyApploaderMemoryPatches(const Core::CPUThreadGuard& guard, - const std::vector& patches, u32 ram_address, u32 ram_length) +void ApplyApploaderMemoryPatches(const Core::CPUThreadGuard& guard, std::span patches, + u32 ram_address, u32 ram_length) { for (const auto& patch : patches) { @@ -660,8 +661,7 @@ void ApplyApploaderMemoryPatches(const Core::CPUThreadGuard& guard, } } -std::optional -ExtractSavegameRedirect(const std::vector& riivolution_patches) +std::optional ExtractSavegameRedirect(std::span riivolution_patches) { for (const auto& patch : riivolution_patches) { diff --git a/Source/Core/DiscIO/RiivolutionPatcher.h b/Source/Core/DiscIO/RiivolutionPatcher.h index d83c51d686..13d5086455 100644 --- a/Source/Core/DiscIO/RiivolutionPatcher.h +++ b/Source/Core/DiscIO/RiivolutionPatcher.h @@ -4,6 +4,7 @@ #pragma once #include +#include #include #include #include @@ -76,14 +77,10 @@ enum class PatchIndex DolphinSysFiles, }; -void ApplyPatchesToFiles(const std::vector& patches, PatchIndex index, - std::vector* fst, - DiscIO::FSTBuilderNode* dol_node); -void ApplyGeneralMemoryPatches(const Core::CPUThreadGuard& guard, - const std::vector& patches); -void ApplyApploaderMemoryPatches(const Core::CPUThreadGuard& guard, - const std::vector& patches, u32 ram_address, - u32 ram_length); -std::optional -ExtractSavegameRedirect(const std::vector& riivolution_patches); +void ApplyPatchesToFiles(std::span patches, PatchIndex index, + std::vector* fst, FSTBuilderNode* dol_node); +void ApplyGeneralMemoryPatches(const Core::CPUThreadGuard& guard, std::span patches); +void ApplyApploaderMemoryPatches(const Core::CPUThreadGuard& guard, std::span patches, + u32 ram_address, u32 ram_length); +std::optional ExtractSavegameRedirect(std::span riivolution_patches); } // namespace DiscIO::Riivolution