From d39b606931925a7c0e9ed4892b003b9d0ca2319a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Fri, 5 Apr 2024 21:00:12 +0200 Subject: [PATCH] RAIntegration: Fix memory writes --- Core/RetroAchievements.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Core/RetroAchievements.cpp b/Core/RetroAchievements.cpp index 1db3cc138f..650cf268fb 100644 --- a/Core/RetroAchievements.cpp +++ b/Core/RetroAchievements.cpp @@ -236,6 +236,15 @@ bool IsActive() { return GetGameID() != 0; } +static void raintegration_write_memory_handler(uint32_t address, uint8_t *buffer, uint32_t num_bytes, rc_client_t *client) { + // convert_retroachievements_address_to_real_address + uint32_t realAddress = address + PSP_MEMORY_OFFSET; + uint8_t *writePtr = Memory::GetPointerWriteRange(realAddress, num_bytes); + if (writePtr) { + memcpy(writePtr, buffer, num_bytes); + } +} + static uint32_t read_memory_callback(uint32_t address, uint8_t *buffer, uint32_t num_bytes, rc_client_t *client) { // Achievements are traditionally defined relative to the base of main memory of the emulated console. // This is some kind of RetroArch-related legacy. In the PSP's case, this is simply a straight offset of 0x08000000. @@ -483,14 +492,7 @@ static void raintegration_get_game_name_handler(char *buffer, uint32_t buffer_si snprintf(buffer, buffer_size, "%s", g_gamePath.GetFilename().c_str()); } -static void raintegration_write_memory_handler(uint32_t address, uint8_t *buffer, uint32_t num_bytes, rc_client_t *client) { - // convert_retroachievements_address_to_real_address - uint32_t realAddress = address + PSP_MEMORY_OFFSET; - uint8_t *writePtr = Memory::GetPointerWriteRange(address, num_bytes); - if (writePtr) { - memcpy(writePtr, buffer, num_bytes); - } -} +static void raintegration_write_memory_handler(uint32_t address, uint8_t *buffer, uint32_t num_bytes, rc_client_t *client); static void raintegration_event_handler(const rc_client_raintegration_event_t *event, rc_client_t *client) { switch (event->type) {