Mercurial > repos > blastem
diff libblastem.c @ 1926:94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
author | negativeExponent <negativeExponent@users.noreply.github.com> |
---|---|
date | Mon, 13 Apr 2020 21:56:00 -0700 |
parents | 81b059e3ded6 |
children | 9fd4bedc1a31 |
line wrap: on
line diff
--- a/libblastem.c Mon Apr 13 20:43:25 2020 -0700 +++ b/libblastem.c Mon Apr 13 21:56:00 2020 -0700 @@ -269,35 +269,39 @@ /* Gets region of memory. */ RETRO_API void *retro_get_memory_data(unsigned id) { - if (id == RETRO_MEMORY_SYSTEM_RAM) - { - switch (stype) - { - case SYSTEM_GENESIS: - { + switch (id) { + case RETRO_MEMORY_SYSTEM_RAM: + switch (stype) { + case SYSTEM_GENESIS: { genesis_context *gen = (genesis_context *)current_system; return (uint8_t *)gen->work_ram; } - break; #ifndef NO_Z80 - case SYSTEM_SMS: - { + case SYSTEM_SMS: { sms_context *sms = (sms_context *)current_system; return sms->ram; } - break; #endif } + break; + case RETRO_MEMORY_SAVE_RAM: + if (stype == SYSTEM_GENESIS) { + genesis_context *gen = (genesis_context *)current_system; + if (gen->save_type != SAVE_NONE) + return gen->save_storage; + } + break; + default: + break; } return NULL; } RETRO_API size_t retro_get_memory_size(unsigned id) { - if (id == RETRO_MEMORY_SYSTEM_RAM) - { - switch (stype) - { + switch (id) { + case RETRO_MEMORY_SYSTEM_RAM: + switch (stype) { case SYSTEM_GENESIS: return RAM_WORDS * sizeof(uint16_t); #ifndef NO_Z80 @@ -305,6 +309,16 @@ return SMS_RAM_SIZE; #endif } + break; + case RETRO_MEMORY_SAVE_RAM: + if (stype == SYSTEM_GENESIS) { + genesis_context *gen = (genesis_context *)current_system; + if (gen->save_type != SAVE_NONE) + return gen->save_size; + } + break; + default: + break; } return 0; }