static void event_deinit_core(bool reinit) { global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); pretro_unload_game(); pretro_deinit(); if (reinit) event_command(EVENT_CMD_DRIVERS_DEINIT); /* per-core saves: restore the original path so the config is not affected */ if(settings->sort_savefiles_enable) strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir)); if(settings->sort_savestates_enable) strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); /* auto overrides: reload the original config */ if(global->overrides_active) { config_unload_override(); global->overrides_active = false; } pretro_set_environment(rarch_environment_cb); uninit_libretro_sym(); }
void init_libretro_sym(bool dummy) { // Guarantee that we can do "dirty" casting. // Every OS that this program supports should pass this ... rarch_assert(sizeof(void*) == sizeof(void (*)(void))); if (!dummy) { #ifdef HAVE_DYNAMIC // Try to verify that -lretro was not linked in from other modules // since loading it dynamically and with -l will fail hard. function_t sym = dylib_proc(NULL, "retro_init"); if (sym) { RARCH_ERR("Serious problem. RetroArch wants to load libretro dyamically, but it is already linked.\n"); RARCH_ERR("This could happen if other modules RetroArch depends on link against libretro directly.\n"); RARCH_ERR("Proceeding could cause a crash. Aborting ...\n"); rarch_fail(1, "init_libretro_sym()"); } if (!*g_settings.libretro) { RARCH_ERR("RetroArch is built for dynamic libretro, but libretro_path is not set. Cannot continue.\n"); rarch_fail(1, "init_libretro_sym()"); } #endif } load_symbols(dummy); pretro_set_environment(environment_cb); }
static bool event_init_core(void) { global_t *global = global_get_ptr(); driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); /* per-core saves: save the original path */ if(orig_savefile_dir[0] == '\0') strlcpy(orig_savefile_dir, global->dir.savefile, sizeof(orig_savefile_dir)); if(orig_savestate_dir[0] == '\0') strlcpy(orig_savestate_dir, global->dir.savestate, sizeof(orig_savestate_dir)); /* auto overrides: apply overrides */ if(settings->auto_overrides_enable) { if (config_load_override()) global->overrides_active = true; else global->overrides_active = false; } /* reset video format to libretro's default */ video_driver_set_pixel_format(RETRO_PIXEL_FORMAT_0RGB1555); pretro_set_environment(rarch_environment_cb); /* auto-remap: apply remap files */ if(settings->auto_remaps_enable) config_load_remap(); /* per-core saves: reset redirection paths */ if((settings->sort_savestates_enable || settings->sort_savefiles_enable) && !global->inited.core.no_content) set_paths_redirect(global->name.base); rarch_verify_api_version(); pretro_init(); global->sram.use = (global->inited.core.type == CORE_TYPE_PLAIN) && !global->inited.core.no_content; if (!event_init_content()) return false; retro_init_libretro_cbs(&driver->retro_ctx); rarch_init_system_av_info(); return true; }
static bool event_init_core(void) { global_t *global = global_get_ptr(); driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); /* per-core saves: save the original path */ if(orig_savefile_dir[0] == '\0') strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(orig_savefile_dir)); if(orig_savestate_dir[0] == '\0') strlcpy(orig_savestate_dir,global->savestate_dir,sizeof(orig_savestate_dir)); /* auto overrides: apply overrides */ if(settings->auto_overrides_enable) { if (config_load_override()) global->overrides_active = true; else global->overrides_active = false; } pretro_set_environment(rarch_environment_cb); /* auto-remap: apply remap files */ if(settings->auto_remaps_enable) config_load_remap(); /* per-core saves: reset redirection paths */ if(settings->sort_savestates_enable || settings->sort_savefiles_enable) set_paths_redirect(global->basename); rarch_verify_api_version(); pretro_init(); global->use_sram = (global->core_type == CORE_TYPE_PLAIN) && !global->libretro_no_content; if (!event_init_content()) return false; retro_init_libretro_cbs(&driver->retro_ctx); rarch_init_system_av_info(); return true; }
static void set_environment(void) { pretro_set_environment(environment_cb); }