From c88d4cf0403e36caf17008ea3c1e11b7d8d6732a Mon Sep 17 00:00:00 2001 From: LillyJadeKatrin Date: Sat, 30 Mar 2024 17:30:58 -0400 Subject: [PATCH] Created EventHandlerV2 and added client to DoFrame As MemoryPeeker V1 is no longer in use, it is deleted and MemoryPeekerV2 is renamed in its place. --- Source/Core/Core/AchievementManager.cpp | 54 +++++-------------------- Source/Core/Core/AchievementManager.h | 4 +- 2 files changed, 11 insertions(+), 47 deletions(-) diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp index a3c3543685..6a34350cb2 100644 --- a/Source/Core/Core/AchievementManager.cpp +++ b/Source/Core/Core/AchievementManager.cpp @@ -36,10 +36,11 @@ void AchievementManager::Init() { if (!m_client && Config::Get(Config::RA_ENABLED)) { - m_client = rc_client_create(MemoryPeekerV2, RequestV2); + m_client = rc_client_create(MemoryPeeker, RequestV2); std::string host_url = Config::Get(Config::RA_HOST_URL); if (!host_url.empty()) rc_client_set_host(m_client, host_url.c_str()); + rc_client_set_event_handler(m_client, EventHandlerV2); rc_client_enable_logging(m_client, RC_CLIENT_LOG_LEVEL_VERBOSE, [](const char* message, const rc_client_t* client) { INFO_LOG_FMT(ACHIEVEMENTS, "{}", message); @@ -215,15 +216,7 @@ void AchievementManager::DoFrame() } { std::lock_guard lg{m_lock}; - rc_runtime_do_frame( - &m_runtime, - [](const rc_runtime_event_t* runtime_event) { - GetInstance().AchievementEventHandler(runtime_event); - }, - [](unsigned address, unsigned num_bytes, void* ud) { - return static_cast(ud)->MemoryPeeker(address, num_bytes, ud); - }, - this, nullptr); + rc_client_do_frame(m_client); } if (!m_system) return; @@ -237,36 +230,6 @@ void AchievementManager::DoFrame() } } -u32 AchievementManager::MemoryPeeker(u32 address, u32 num_bytes, void* ud) -{ - if (!m_system) - return 0u; - Core::CPUThreadGuard threadguard(*m_system); - switch (num_bytes) - { - case 1: - return m_system->GetMMU() - .HostTryReadU8(threadguard, address, PowerPC::RequestedAddressSpace::Physical) - .value_or(PowerPC::ReadResult(false, 0u)) - .value; - case 2: - return Common::swap16( - m_system->GetMMU() - .HostTryReadU16(threadguard, address, PowerPC::RequestedAddressSpace::Physical) - .value_or(PowerPC::ReadResult(false, 0u)) - .value); - case 4: - return Common::swap32( - m_system->GetMMU() - .HostTryReadU32(threadguard, address, PowerPC::RequestedAddressSpace::Physical) - .value_or(PowerPC::ReadResult(false, 0u)) - .value); - default: - ASSERT(false); - return 0u; - } -} - void AchievementManager::AchievementEventHandler(const rc_runtime_event_t* runtime_event) { switch (runtime_event->type) @@ -757,10 +720,7 @@ void AchievementManager::GenerateRichPresence(const Core::CPUThreadGuard& guard) std::lock_guard lg{m_lock}; rc_runtime_get_richpresence( &m_runtime, m_rich_presence.data(), RP_SIZE, - [](unsigned address, unsigned num_bytes, void* ud) { - return static_cast(ud)->MemoryPeeker(address, num_bytes, ud); - }, - this, nullptr); + [](unsigned address, unsigned num_bytes, void* ud) { return 0u; }, this, nullptr); } AchievementManager::ResponseType AchievementManager::AwardAchievement(AchievementId achievement_id) @@ -1168,7 +1128,7 @@ void AchievementManager::RequestV2(const rc_api_request_t* request, }); } -u32 AchievementManager::MemoryPeekerV2(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client) +u32 AchievementManager::MemoryPeeker(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client) { if (buffer == nullptr) return 0u; @@ -1239,4 +1199,8 @@ void AchievementManager::FetchBadge(AchievementManager::BadgeStatus* badge, u32 }); } +void AchievementManager::EventHandlerV2(const rc_client_event_t* event, rc_client_t* client) +{ +} + #endif // USE_RETRO_ACHIEVEMENTS diff --git a/Source/Core/Core/AchievementManager.h b/Source/Core/Core/AchievementManager.h index 3febabf606..89ebb2bc1b 100644 --- a/Source/Core/Core/AchievementManager.h +++ b/Source/Core/Core/AchievementManager.h @@ -127,7 +127,6 @@ public: void FetchGameBadges(); void DoFrame(); - u32 MemoryPeeker(u32 address, u32 num_bytes, void* ud); void AchievementEventHandler(const rc_runtime_event_t* runtime_event); std::recursive_mutex& GetLock(); @@ -201,8 +200,9 @@ private: static void RequestV2(const rc_api_request_t* request, rc_client_server_callback_t callback, void* callback_data, rc_client_t* client); - static u32 MemoryPeekerV2(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client); + static u32 MemoryPeeker(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client); void FetchBadge(BadgeStatus* badge, u32 badge_type, const BadgeNameFunction function); + static void EventHandlerV2(const rc_client_event_t* event, rc_client_t* client); rc_runtime_t m_runtime{}; rc_client_t* m_client{};