support for more than 64 memory regions

This commit is contained in:
Jamiras 2021-08-14 12:47:42 -06:00
parent b837e053e9
commit a0f3bf7432

View File

@ -197,22 +197,28 @@ static int rcheevos_init_memory(rcheevos_locals_t* locals)
{
rarch_system_info_t* system = runloop_get_system_info();
rarch_memory_map_t* mmaps = &system->mmaps;
struct retro_memory_descriptor descriptors[64];
struct retro_memory_descriptor* descriptors;
struct retro_memory_map mmap;
unsigned i;
int result;
descriptors = (struct retro_memory_descriptor*)malloc(mmaps->num_descriptors * sizeof(*descriptors));
if (!descriptors)
return 0;
mmap.descriptors = &descriptors[0];
mmap.num_descriptors = sizeof(descriptors) / sizeof(descriptors[0]);
if (mmaps->num_descriptors < mmap.num_descriptors)
mmap.num_descriptors = mmaps->num_descriptors;
mmap.num_descriptors = mmaps->num_descriptors;
/* RetroArch wraps the retro_memory_descriptor's in rarch_memory_descriptor_t's, pull them back out */
for (i = 0; i < mmap.num_descriptors; ++i)
memcpy(&descriptors[i], &mmaps->descriptors[i].core, sizeof(descriptors[0]));
rc_libretro_init_verbose_message_callback(rcheevos_handle_log_message);
return rc_libretro_memory_init(&locals->memory, &mmap,
result = rc_libretro_memory_init(&locals->memory, &mmap,
rcheevos_get_core_memory_info, locals->patchdata.console_id);
free(descriptors);
return result;
}
uint8_t* rcheevos_patch_address(unsigned address)