diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index 4b05a422f6b..2ea46005b2a 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -1812,6 +1812,7 @@ static void _setupMaps(struct mCore* core) { descs[7].start = GBA_BASE_VRAM; descs[7].len = GBA_SIZE_VRAM; descs[7].select = 0xFF000000; + descs[7].flags = RETRO_MEMDESC_VIDEO_RAM; /* Map palette RAM */ descs[8].ptr = gba->video.palette; @@ -1867,6 +1868,7 @@ static void _setupMaps(struct mCore* core) { descs[i].ptr = gb->video.vram; descs[i].start = GB_BASE_VRAM; descs[i].len = GB_SIZE_VRAM_BANK0; + descs[i].flags = RETRO_MEMDESC_VIDEO_RAM; i++; /* Map working RAM */ @@ -2322,6 +2324,20 @@ void* retro_get_memory_data(unsigned id) { #ifdef M_CORE_GBA case mPLATFORM_GBA: return ((struct GBA*)core->board)->video.renderer->vram; +#endif + default: + break; + } + break; + case RETRO_MEMORY_ROM: + switch (core->platform(core)) { +#ifdef M_CORE_GB + case mPLATFORM_GB: + return ((struct GB*)core->board)->memory.rom; +#endif +#ifdef M_CORE_GBA + case mPLATFORM_GBA: + return ((struct GBA*)core->board)->memory.rom; #endif default: break; diff --git a/src/platform/libretro/libretro.h b/src/platform/libretro/libretro.h index 32b732e6d2c..ac741a306ea 100644 --- a/src/platform/libretro/libretro.h +++ b/src/platform/libretro/libretro.h @@ -519,6 +519,9 @@ enum retro_language /* Video ram lets a frontend peek into a game systems video RAM (VRAM). */ #define RETRO_MEMORY_VIDEO_RAM 3 +/* ROM lets a frontend peek into a game systems ROM. */ +#define RETRO_MEMORY_ROM 4 + /** @} */ /* Keysyms used for ID in input state callback when polling RETRO_KEYBOARD. */