diff --git a/libretro_version_1.c b/libretro_version_1.c index e1472fab50..ff1fc1a1f3 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -172,6 +172,22 @@ bool core_ctl(enum core_ctl_state state, void *data) switch (state) { + case CORE_CTL_RETRO_UNSERIALIZE: + { + retro_ctx_serialize_info_t *info = (retro_ctx_serialize_info_t*)data; + if (!info) + return false; + core.retro_unserialize(info->data_const, info->size); + } + break; + case CORE_CTL_RETRO_SERIALIZE: + { + retro_ctx_serialize_info_t *info = (retro_ctx_serialize_info_t*)data; + if (!info) + return false; + core.retro_serialize(info->data, info->size); + } + break; case CORE_CTL_RETRO_SERIALIZE_SIZE: { retro_ctx_size_info_t *info = (retro_ctx_size_info_t *)data; diff --git a/libretro_version_1.h b/libretro_version_1.h index 5bb31deb7d..537812ac32 100644 --- a/libretro_version_1.h +++ b/libretro_version_1.h @@ -68,9 +68,20 @@ enum core_ctl_state CORE_CTL_RETRO_SET_ENVIRONMENT, - CORE_CTL_RETRO_SERIALIZE_SIZE + CORE_CTL_RETRO_SERIALIZE_SIZE, + + CORE_CTL_RETRO_SERIALIZE, + + CORE_CTL_RETRO_UNSERIALIZE }; +typedef struct retro_ctx_serialize_info +{ + const void *data_const; + void *data; + size_t size; +} retro_ctx_serialize_info_t; + typedef struct retro_ctx_size_info { size_t size;