static void rarch_get_environment(int argc, char *argv[]) { g_extern.verbose = true; #if defined(HAVE_LOGGER) logger_init(); #elif defined(HAVE_FILE_LOGGER) g_extern.log_file = fopen("/retroarch-log.txt", "w"); #endif if (frontend_ctx && frontend_ctx->environment_get) frontend_ctx->environment_get(argc, argv); config_load(); #if defined(RARCH_CONSOLE) init_libretro_sym(false); rarch_init_system_info(); global_init_drivers(); #ifdef HAVE_LIBRETRO_MANAGEMENT char path_prefix[PATH_MAX]; #if defined(_WIN32) char slash = '\\'; #else char slash = '/'; #endif snprintf(path_prefix, sizeof(path_prefix), "%s%c", default_paths.core_dir, slash); char core_exe_path[256]; snprintf(core_exe_path, sizeof(core_exe_path), "%sCORE%s", path_prefix, DEFAULT_EXE_EXT); // Save new libretro core path to config file and exit if (path_file_exists(core_exe_path)) if (libretro_install_core(path_prefix, core_exe_path)) #ifdef _XBOX g_extern.system.shutdown = g_extern.system.shutdown; #else g_extern.system.shutdown = true; #endif #endif #ifdef GEKKO /* Per-core input config loading */ char core_name[64]; libretro_get_current_core_pathname(core_name, sizeof(core_name)); snprintf(g_extern.input_config_path, sizeof(g_extern.input_config_path), "%s/%s.cfg", default_paths.input_presets_dir, core_name); config_read_keybinds(g_extern.input_config_path); #endif #endif }
static void rarch_get_environment_console(void) { path_mkdir(default_paths.port_dir); path_mkdir(default_paths.system_dir); path_mkdir(default_paths.savestate_dir); path_mkdir(default_paths.sram_dir); config_load(); init_libretro_sym(false); rarch_init_system_info(); global_init_drivers(); }
void rarch_get_environment_console(void) { init_libretro_sym(false); rarch_init_system_info(); global_init_drivers(); #ifdef HAVE_LIBRETRO_MANAGEMENT char path_prefix[PATH_MAX]; #if defined(_WIN32) char slash = '\\'; #else char slash = '/'; #endif snprintf(path_prefix, sizeof(path_prefix), "%s%c", default_paths.core_dir, slash); char core_exe_path[256]; snprintf(core_exe_path, sizeof(core_exe_path), "%sCORE%s", path_prefix, DEFAULT_EXE_EXT); // Save new libretro core path to config file and exit if (path_file_exists(core_exe_path)) if (libretro_install_core(path_prefix, core_exe_path)) #ifdef _XBOX g_extern.system.shutdown = g_extern.system.shutdown; #else g_extern.system.shutdown = true; #endif #endif #ifdef GEKKO /* Per-core input config loading */ char core_name[64]; libretro_get_current_core_pathname(core_name, sizeof(core_name)); snprintf(g_extern.input_config_path, sizeof(g_extern.input_config_path), "%s/%s.cfg", default_paths.input_presets_dir, core_name); config_read_keybinds(g_extern.input_config_path); #endif }
int rarch_main(int argc, char *argv[]) { system_init(); rarch_main_clear_state(); verbose_log_init(); get_environment_settings(argc, argv); config_load(); init_libretro_sym(); rarch_init_system_info(); global_init_drivers(); #ifdef HAVE_LIBRETRO_MANAGEMENT char core_exe_path[PATH_MAX]; char path_prefix[PATH_MAX]; const char *extension = DEFAULT_EXE_EXT; char slash; #if defined(_WIN32) slash = '\\'; #else slash = '/'; #endif snprintf(path_prefix, sizeof(path_prefix), "%s%c", default_paths.core_dir, slash); snprintf(core_exe_path, sizeof(core_exe_path), "%sCORE%s", path_prefix, extension); if (path_file_exists(core_exe_path)) { RARCH_LOG("core_exe_path: %s\n", core_exe_path); if (install_libretro_core(core_exe_path, path_prefix, extension)) { RARCH_LOG("New default libretro core saved to config file: %s.\n", g_settings.libretro); config_save_file(g_extern.config_path); } } #endif init_libretro_sym(); system_post_init(); menu_init(); system_process_args(argc, argv); begin_loop: if(g_extern.lifecycle_mode_state & (1ULL << MODE_GAME)) { driver.input->poll(NULL); if (driver.video_poke->set_aspect_ratio) driver.video_poke->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) audio_start_func(); while(rarch_main_iterate()); if (g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_THROTTLE_ENABLE)) audio_stop_func(); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_GAME); } else if (g_extern.lifecycle_mode_state & (1ULL << MODE_INIT)) { if(g_extern.main_is_init) rarch_main_deinit(); struct rarch_main_wrap args = {0}; args.verbose = g_extern.verbose; args.sram_path = (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME_SRAM_DIR_ENABLE)) ? g_extern.console.main_wrap.default_sram_dir : NULL; args.state_path = (g_extern.lifecycle_mode_state & (1ULL << MODE_LOAD_GAME_STATE_DIR_ENABLE)) ? g_extern.console.main_wrap.default_savestate_dir : NULL; args.rom_path = g_extern.fullpath; args.libretro_path = g_settings.libretro; if (path_file_exists(g_extern.config_path)) args.config_path = g_extern.config_path; else args.config_path = NULL; if (rarch_main_init_wrap(&args) == 0) { RARCH_LOG("rarch_main_init succeeded.\n"); g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); } else { RARCH_ERR("rarch_main_init failed.\n"); g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU); menu_settings_msg(S_MSG_ROM_LOADING_ERROR, 180); } g_extern.lifecycle_mode_state &= ~(1ULL << MODE_INIT); } else if(g_extern.lifecycle_mode_state & (1ULL << MODE_MENU)) { g_extern.lifecycle_mode_state |= (1ULL << MODE_MENU_PREINIT); while (menu_iterate()); g_extern.lifecycle_mode_state &= ~(1ULL << MODE_MENU); } else goto begin_shutdown; goto begin_loop; begin_shutdown: config_save_file(g_extern.config_path); system_deinit_save(); if(g_extern.main_is_init) rarch_main_deinit(); menu_free(); global_uninit_drivers(); #ifdef PERF_TEST rarch_perf_log(); #endif system_deinit(); if (g_extern.lifecycle_mode_state & (1ULL << MODE_EXITSPAWN)) system_exitspawn(); return 1; }