summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorLillyJadeKatrin <lilly.kitty.1988@gmail.com>2025-05-04 08:17:22 -0400
committerLillyJadeKatrin <lilly.kitty.1988@gmail.com>2025-05-06 16:59:27 -0400
commit599f28045ec2baf0426102a3ef42a2ce5be40445 (patch)
treee589bf9fcd1d069c8d59e81cb7e9ce5add38de4b /Source
parentfc0601e55faf5d42976b4539ab0d01779d4967f1 (diff)
AchievementManager: verify MEM2 if it exists
Adds MEM2 to MemoryVerifier.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/AchievementManager.cpp8
-rw-r--r--Source/Core/Core/AchievementManager.h3
2 files changed, 7 insertions, 4 deletions
diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp
index 24a3a418a0..b8ec132bc8 100644
--- a/Source/Core/Core/AchievementManager.cpp
+++ b/Source/Core/Core/AchievementManager.cpp
@@ -1317,10 +1317,10 @@ void AchievementManager::Request(const rc_api_request_t* request,
u32 AchievementManager::MemoryVerifier(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client)
{
auto& system = Core::System::GetInstance();
- u32 ram_size = system.GetMemory().GetRamSizeReal();
- if (address >= ram_size)
- return 0;
- return std::min(ram_size - address, num_bytes);
+ u32 mem2_size = system.GetMemory().GetExRamSizeReal();
+ if (address < MEM1_SIZE + mem2_size)
+ return std::min(MEM1_SIZE + mem2_size - address, num_bytes);
+ return 0;
}
u32 AchievementManager::MemoryPeeker(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client)
diff --git a/Source/Core/Core/AchievementManager.h b/Source/Core/Core/AchievementManager.h
index 3edb561979..f121e96f8e 100644
--- a/Source/Core/Core/AchievementManager.h
+++ b/Source/Core/Core/AchievementManager.h
@@ -76,6 +76,9 @@ public:
using RichPresence = std::array<char, RP_SIZE>;
using Badge = VideoCommon::CustomTextureData::ArraySlice::Level;
static constexpr size_t MAX_DISPLAYED_LBOARDS = 4;
+ // This is hardcoded to 24MiB because rcheevos currently hardcodes it to 24MiB.
+ static constexpr u32 MEM1_SIZE = 0x01800000;
+ static constexpr u32 MEM2_START = 0x10000000;
static constexpr std::string_view DEFAULT_PLAYER_BADGE_FILENAME = "achievements_player.png";
static constexpr std::string_view DEFAULT_GAME_BADGE_FILENAME = "achievements_game.png";