mirror of
https://github.com/libretro/RetroArch.git
synced 2024-10-07 14:23:29 +00:00
make it work for cores that don't use the save interface too
This commit is contained in:
parent
a0fe04ead5
commit
bece39d2a7
57
dynamic.c
57
dynamic.c
@ -88,13 +88,13 @@ static bool environ_cb_get_system_info(unsigned cmd, void *data)
|
|||||||
* @load_no_content : If true, core should be able to auto-start
|
* @load_no_content : If true, core should be able to auto-start
|
||||||
* without any content loaded.
|
* without any content loaded.
|
||||||
*
|
*
|
||||||
* Sets environment callback in order to get statically known
|
* Sets environment callback in order to get statically known
|
||||||
* information from it.
|
* information from it.
|
||||||
*
|
*
|
||||||
* Fetched via environment callbacks instead of
|
* Fetched via environment callbacks instead of
|
||||||
* retro_get_system_info(), as this info is part of extensions.
|
* retro_get_system_info(), as this info is part of extensions.
|
||||||
*
|
*
|
||||||
* Should only be called once right after core load to
|
* Should only be called once right after core load to
|
||||||
* avoid overwriting the "real" environ callback.
|
* avoid overwriting the "real" environ callback.
|
||||||
*
|
*
|
||||||
* For statically linked cores, pass retro_set_environment as argument.
|
* For statically linked cores, pass retro_set_environment as argument.
|
||||||
@ -120,7 +120,7 @@ static dylib_t libretro_get_system_info_lib(const char *path,
|
|||||||
{
|
{
|
||||||
dylib_t lib = dylib_load(path);
|
dylib_t lib = dylib_load(path);
|
||||||
void (*proc)(struct retro_system_info*);
|
void (*proc)(struct retro_system_info*);
|
||||||
|
|
||||||
if (!lib)
|
if (!lib)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ libretro_find_controller_description(
|
|||||||
/**
|
/**
|
||||||
* load_symbols:
|
* load_symbols:
|
||||||
* @type : Type of core to be loaded.
|
* @type : Type of core to be loaded.
|
||||||
* If CORE_TYPE_DUMMY, will
|
* If CORE_TYPE_DUMMY, will
|
||||||
* load dummy symbols.
|
* load dummy symbols.
|
||||||
*
|
*
|
||||||
* Setup libretro callback symbols.
|
* Setup libretro callback symbols.
|
||||||
@ -277,8 +277,8 @@ static void load_symbols(enum rarch_core_type type)
|
|||||||
rarch_fail(1, "init_libretro_sym()");
|
rarch_fail(1, "init_libretro_sym()");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Need to use absolute path for this setting. It can be
|
/* Need to use absolute path for this setting. It can be
|
||||||
* saved to content history, and a relative path would
|
* saved to content history, and a relative path would
|
||||||
* break in that scenario. */
|
* break in that scenario. */
|
||||||
path_resolve_realpath(settings->libretro,
|
path_resolve_realpath(settings->libretro,
|
||||||
sizeof(settings->libretro));
|
sizeof(settings->libretro));
|
||||||
@ -459,7 +459,7 @@ void libretro_get_current_core_pathname(char *name, size_t size)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
core.retro_get_system_info(&info);
|
core.retro_get_system_info(&info);
|
||||||
id = info.library_name ? info.library_name :
|
id = info.library_name ? info.library_name :
|
||||||
msg_hash_to_str(MSG_UNKNOWN);
|
msg_hash_to_str(MSG_UNKNOWN);
|
||||||
|
|
||||||
if (!id || strlen(id) >= size)
|
if (!id || strlen(id) >= size)
|
||||||
@ -484,7 +484,7 @@ void libretro_get_current_core_pathname(char *name, size_t size)
|
|||||||
/**
|
/**
|
||||||
* init_libretro_sym:
|
* init_libretro_sym:
|
||||||
* @type : Type of core to be loaded.
|
* @type : Type of core to be loaded.
|
||||||
* If CORE_TYPE_DUMMY, will
|
* If CORE_TYPE_DUMMY, will
|
||||||
* load dummy symbols.
|
* load dummy symbols.
|
||||||
*
|
*
|
||||||
* Initializes libretro symbols and
|
* Initializes libretro symbols and
|
||||||
@ -725,10 +725,10 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY:
|
case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY:
|
||||||
*(const char**)data = *global->dir.savefile ?
|
*(const char**)data = *current_savefile_dir ?
|
||||||
global->dir.savefile : NULL;
|
current_savefile_dir : NULL;
|
||||||
RARCH_LOG("Environ SAVE_DIRECTORY: \"%s\".\n",
|
RARCH_LOG("Environ SAVE_DIRECTORY: \"%s\".\n",
|
||||||
global->dir.savefile);
|
current_savefile_dir);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RETRO_ENVIRONMENT_GET_USERNAME:
|
case RETRO_ENVIRONMENT_GET_USERNAME:
|
||||||
@ -746,7 +746,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
|
|
||||||
case RETRO_ENVIRONMENT_SET_PIXEL_FORMAT:
|
case RETRO_ENVIRONMENT_SET_PIXEL_FORMAT:
|
||||||
{
|
{
|
||||||
enum retro_pixel_format pix_fmt =
|
enum retro_pixel_format pix_fmt =
|
||||||
*(const enum retro_pixel_format*)data;
|
*(const enum retro_pixel_format*)data;
|
||||||
|
|
||||||
switch (pix_fmt)
|
switch (pix_fmt)
|
||||||
@ -860,7 +860,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
|
|
||||||
case RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK:
|
case RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK:
|
||||||
{
|
{
|
||||||
const struct retro_keyboard_callback *info =
|
const struct retro_keyboard_callback *info =
|
||||||
(const struct retro_keyboard_callback*)data;
|
(const struct retro_keyboard_callback*)data;
|
||||||
|
|
||||||
RARCH_LOG("Environ SET_KEYBOARD_CALLBACK.\n");
|
RARCH_LOG("Environ SET_KEYBOARD_CALLBACK.\n");
|
||||||
@ -871,7 +871,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
|
|
||||||
case RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE:
|
case RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE:
|
||||||
RARCH_LOG("Environ SET_DISK_CONTROL_INTERFACE.\n");
|
RARCH_LOG("Environ SET_DISK_CONTROL_INTERFACE.\n");
|
||||||
system->disk_control =
|
system->disk_control =
|
||||||
*(const struct retro_disk_control_callback*)data;
|
*(const struct retro_disk_control_callback*)data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -879,7 +879,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
case RETRO_ENVIRONMENT_SET_HW_RENDER | RETRO_ENVIRONMENT_EXPERIMENTAL:
|
case RETRO_ENVIRONMENT_SET_HW_RENDER | RETRO_ENVIRONMENT_EXPERIMENTAL:
|
||||||
{
|
{
|
||||||
struct retro_hw_render_callback *hw_render = video_driver_callback();
|
struct retro_hw_render_callback *hw_render = video_driver_callback();
|
||||||
struct retro_hw_render_callback *cb =
|
struct retro_hw_render_callback *cb =
|
||||||
(struct retro_hw_render_callback*)data;
|
(struct retro_hw_render_callback*)data;
|
||||||
|
|
||||||
RARCH_LOG("Environ SET_HW_RENDER.\n");
|
RARCH_LOG("Environ SET_HW_RENDER.\n");
|
||||||
@ -966,13 +966,13 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME - PS3 audio driver needs to be fixed so that threaded
|
/* FIXME - PS3 audio driver needs to be fixed so that threaded
|
||||||
* audio works correctly (audio is already on a thread for PS3
|
* audio works correctly (audio is already on a thread for PS3
|
||||||
* audio driver so that's probably the problem) */
|
* audio driver so that's probably the problem) */
|
||||||
#if defined(HAVE_THREADS) && !defined(__CELLOS_LV2__)
|
#if defined(HAVE_THREADS) && !defined(__CELLOS_LV2__)
|
||||||
case RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK:
|
case RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK:
|
||||||
{
|
{
|
||||||
const struct retro_audio_callback *info =
|
const struct retro_audio_callback *info =
|
||||||
(const struct retro_audio_callback*)data;
|
(const struct retro_audio_callback*)data;
|
||||||
RARCH_LOG("Environ SET_AUDIO_CALLBACK.\n");
|
RARCH_LOG("Environ SET_AUDIO_CALLBACK.\n");
|
||||||
|
|
||||||
@ -991,13 +991,13 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
|
|
||||||
case RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK:
|
case RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK:
|
||||||
{
|
{
|
||||||
const struct retro_frame_time_callback *info =
|
const struct retro_frame_time_callback *info =
|
||||||
(const struct retro_frame_time_callback*)data;
|
(const struct retro_frame_time_callback*)data;
|
||||||
|
|
||||||
RARCH_LOG("Environ SET_FRAME_TIME_CALLBACK.\n");
|
RARCH_LOG("Environ SET_FRAME_TIME_CALLBACK.\n");
|
||||||
|
|
||||||
#ifdef HAVE_NETPLAY
|
#ifdef HAVE_NETPLAY
|
||||||
/* retro_run() will be called in very strange and
|
/* retro_run() will be called in very strange and
|
||||||
* mysterious ways, have to disable it. */
|
* mysterious ways, have to disable it. */
|
||||||
if (global->netplay.enable)
|
if (global->netplay.enable)
|
||||||
return false;
|
return false;
|
||||||
@ -1009,7 +1009,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
|
|
||||||
case RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE:
|
case RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE:
|
||||||
{
|
{
|
||||||
struct retro_rumble_interface *iface =
|
struct retro_rumble_interface *iface =
|
||||||
(struct retro_rumble_interface*)data;
|
(struct retro_rumble_interface*)data;
|
||||||
|
|
||||||
RARCH_LOG("Environ GET_RUMBLE_INTERFACE.\n");
|
RARCH_LOG("Environ GET_RUMBLE_INTERFACE.\n");
|
||||||
@ -1032,7 +1032,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
|
|
||||||
case RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE:
|
case RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE:
|
||||||
{
|
{
|
||||||
struct retro_sensor_interface *iface =
|
struct retro_sensor_interface *iface =
|
||||||
(struct retro_sensor_interface*)data;
|
(struct retro_sensor_interface*)data;
|
||||||
|
|
||||||
RARCH_LOG("Environ GET_SENSOR_INTERFACE.\n");
|
RARCH_LOG("Environ GET_SENSOR_INTERFACE.\n");
|
||||||
@ -1114,7 +1114,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
case RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO:
|
case RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO:
|
||||||
{
|
{
|
||||||
unsigned i, j;
|
unsigned i, j;
|
||||||
const struct retro_subsystem_info *info =
|
const struct retro_subsystem_info *info =
|
||||||
(const struct retro_subsystem_info*)data;
|
(const struct retro_subsystem_info*)data;
|
||||||
|
|
||||||
RARCH_LOG("Environ SET_SUBSYSTEM_INFO.\n");
|
RARCH_LOG("Environ SET_SUBSYSTEM_INFO.\n");
|
||||||
@ -1149,7 +1149,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
case RETRO_ENVIRONMENT_SET_CONTROLLER_INFO:
|
case RETRO_ENVIRONMENT_SET_CONTROLLER_INFO:
|
||||||
{
|
{
|
||||||
unsigned i, j;
|
unsigned i, j;
|
||||||
const struct retro_controller_info *info =
|
const struct retro_controller_info *info =
|
||||||
(const struct retro_controller_info*)data;
|
(const struct retro_controller_info*)data;
|
||||||
|
|
||||||
RARCH_LOG("Environ SET_CONTROLLER_INFO.\n");
|
RARCH_LOG("Environ SET_CONTROLLER_INFO.\n");
|
||||||
@ -1177,9 +1177,9 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
case RETRO_ENVIRONMENT_SET_GEOMETRY:
|
case RETRO_ENVIRONMENT_SET_GEOMETRY:
|
||||||
{
|
{
|
||||||
struct retro_system_av_info *av_info = video_viewport_get_system_av_info();
|
struct retro_system_av_info *av_info = video_viewport_get_system_av_info();
|
||||||
const struct retro_game_geometry *in_geom =
|
const struct retro_game_geometry *in_geom =
|
||||||
(const struct retro_game_geometry*)data;
|
(const struct retro_game_geometry*)data;
|
||||||
struct retro_game_geometry *geom = av_info ?
|
struct retro_game_geometry *geom = av_info ?
|
||||||
(struct retro_game_geometry*)&av_info->geometry : NULL;
|
(struct retro_game_geometry*)&av_info->geometry : NULL;
|
||||||
|
|
||||||
if (!geom)
|
if (!geom)
|
||||||
@ -1199,10 +1199,10 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
RARCH_LOG("SET_GEOMETRY: %ux%u, aspect: %.3f.\n",
|
RARCH_LOG("SET_GEOMETRY: %ux%u, aspect: %.3f.\n",
|
||||||
geom->base_width, geom->base_height, geom->aspect_ratio);
|
geom->base_width, geom->base_height, geom->aspect_ratio);
|
||||||
|
|
||||||
/* Forces recomputation of aspect ratios if
|
/* Forces recomputation of aspect ratios if
|
||||||
* using core-dependent aspect ratios. */
|
* using core-dependent aspect ratios. */
|
||||||
event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO);
|
event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO);
|
||||||
|
|
||||||
/* TODO: Figure out what to do, if anything, with recording. */
|
/* TODO: Figure out what to do, if anything, with recording. */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1253,4 +1253,3 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user