all repos — mgba @ 68985d88e9a44291b00d1221b983aa832adeff4c

mGBA Game Boy Advance Emulator

Libretro: Fix saving in GB games (fixes #486)
Jeffrey Pfau jeffrey@endrift.com
Wed, 04 Jan 2017 16:02:22 -0800
commit

68985d88e9a44291b00d1221b983aa832adeff4c

parent

61a657afcf031e9d33242d1bb8fbf2028b6a70e6

2 files changed, 23 insertions(+), 13 deletions(-)

jump to
M CHANGESCHANGES

@@ -13,6 +13,7 @@ - GBA Memory: Improve initial skipped BIOS state

- GBA BIOS: Implement BitUnPack - ARM7: Fix MLA/*MULL/*MLAL timing - GBA: Fix multiboot ROM loading + - Libretro: Fix saving in GB games (fixes mgba.io/i/486) Misc: - SDL: Remove scancode key input - GBA Video: Clean up unused timers
M src/platform/libretro/libretro.csrc/platform/libretro/libretro.c

@@ -13,12 +13,12 @@ #include <mgba/core/core.h>

#include <mgba/core/version.h> #ifdef M_CORE_GB #include <mgba/gb/core.h> +#include <mgba/internal/gb/gb.h> #endif #ifdef M_CORE_GBA #include <mgba/gba/core.h> #include <mgba/gba/interface.h> #include <mgba/internal/gba/gba.h> -#include <mgba/internal/gba/video.h> #endif #include <mgba-util/circle-buffer.h> #include <mgba-util/memory.h>

@@ -524,19 +524,28 @@ size_t retro_get_memory_size(unsigned id) {

if (id != RETRO_MEMORY_SAVE_RAM) { return 0; } - switch (((struct GBA*) core->board)->memory.savedata.type) { - case SAVEDATA_AUTODETECT: - case SAVEDATA_FLASH1M: - return SIZE_CART_FLASH1M; - case SAVEDATA_FLASH512: - return SIZE_CART_FLASH512; - case SAVEDATA_EEPROM: - return SIZE_CART_EEPROM; - case SAVEDATA_SRAM: - return SIZE_CART_SRAM; - case SAVEDATA_FORCE_NONE: - return 0; +#ifdef M_CORE_GBA + if (core->platform(core) == PLATFORM_GBA) { + switch (((struct GBA*) core->board)->memory.savedata.type) { + case SAVEDATA_AUTODETECT: + case SAVEDATA_FLASH1M: + return SIZE_CART_FLASH1M; + case SAVEDATA_FLASH512: + return SIZE_CART_FLASH512; + case SAVEDATA_EEPROM: + return SIZE_CART_EEPROM; + case SAVEDATA_SRAM: + return SIZE_CART_SRAM; + case SAVEDATA_FORCE_NONE: + return 0; + } + } +#endif +#ifdef M_CORE_GB + if (core->platform(core) == PLATFORM_GB) { + return ((struct GB*) core->board)->sramSize; } +#endif return 0; }