summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Debug/MemoryPatches.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2022-12-22 17:38:08 -0600
committeriwubcode <iwubcode@users.noreply.github.com>2022-12-23 03:13:03 -0600
commit2f2f906bf567ab6d89e10161c62404a1dcd8ee1e (patch)
tree77b12d8f1e41da6d104e69db8802f01e8cd2913a /Source/Core/Common/Debug/MemoryPatches.cpp
parent1f87bcd202697299d6ca9a2e17a6ce633bffbb6d (diff)
Core: add ability to add memory patches to the patch engine that will be executed each frame
Diffstat (limited to 'Source/Core/Common/Debug/MemoryPatches.cpp')
-rw-r--r--Source/Core/Common/Debug/MemoryPatches.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/Core/Common/Debug/MemoryPatches.cpp b/Source/Core/Common/Debug/MemoryPatches.cpp
index 8dd9b5716d..f48e6e5bb5 100644
--- a/Source/Core/Common/Debug/MemoryPatches.cpp
+++ b/Source/Core/Common/Debug/MemoryPatches.cpp
@@ -38,6 +38,23 @@ void MemoryPatches::SetPatch(u32 address, std::vector<u8> value)
Patch(index);
}
+void MemoryPatches::SetFramePatch(u32 address, u32 value)
+{
+ const std::size_t index = m_patches.size();
+ m_patches.emplace_back(address, value);
+ m_patches.back().type = MemoryPatch::ApplyType::EachFrame;
+ Patch(index);
+}
+
+void MemoryPatches::SetFramePatch(u32 address, std::vector<u8> value)
+{
+ UnsetPatch(address);
+ const std::size_t index = m_patches.size();
+ m_patches.emplace_back(address, std::move(value));
+ m_patches.back().type = MemoryPatch::ApplyType::EachFrame;
+ Patch(index);
+}
+
const std::vector<MemoryPatch>& MemoryPatches::GetPatches() const
{
return m_patches;
@@ -81,6 +98,7 @@ bool MemoryPatches::HasEnabledPatch(u32 address) const
void MemoryPatches::RemovePatch(std::size_t index)
{
DisablePatch(index);
+ UnPatch(index);
m_patches.erase(m_patches.begin() + index);
}
@@ -88,7 +106,10 @@ void MemoryPatches::ClearPatches()
{
const std::size_t size = m_patches.size();
for (std::size_t index = 0; index < size; ++index)
+ {
DisablePatch(index);
+ UnPatch(index);
+ }
m_patches.clear();
}
} // namespace Common::Debug