diff options
Diffstat (limited to 'core.c')
-rw-r--r-- | core.c | 25 |
1 files changed, 21 insertions, 4 deletions
@@ -42,9 +42,11 @@ static int core_load_game_info(struct content *content, struct retro_game_info * return content_load_game_info(content, game_info, info.need_fullpath); } -void config_file_name(char *buf, size_t len, int is_game) +void config_file_name(char *buf, size_t len, config_type config_type) { - if (is_game && content) { + if (config_type == CONFIG_TYPE_AUTO) { + snprintf(buf, len, "%s%s", config_dir, "picoarch-auto.cfg"); + } else if (config_type == CONFIG_TYPE_GAME && content) { content_based_name(content, buf, len, save_dir, NULL, ".cfg"); } else { snprintf(buf, len, "%s%s", config_dir, "picoarch.cfg"); @@ -115,12 +117,18 @@ bool state_allowed(void) { } void state_file_name(char *name, size_t size, int slot) { - char extension[5] = {0}; + char extension[6] = {0}; - snprintf(extension, 5, ".st%d", slot); + snprintf(extension, 6, ".st%d", slot); content_based_name(content, name, MAX_PATH, save_dir, NULL, extension); } +bool state_exists(int slot) { + char fname[MAX_PATH]; + state_file_name(fname, sizeof(fname), slot); + return access(fname, F_OK) == 0; +} + int state_read(void) { char filename[MAX_PATH]; FILE *state_file = NULL; @@ -287,6 +295,15 @@ static void set_directories(const char *core_name) { #ifdef MINUI strncpy(system_dir, save_dir, MAX_PATH-1); #else + +#ifdef FUNKEY_S + if (home != NULL) { + snprintf(system_dir, MAX_PATH, "%s/.picoarch", home); + mkdir(system_dir, 0755); + snprintf(system_dir, MAX_PATH, "%s/.picoarch/system", home); + mkdir(system_dir, 0755); + } else +#endif if (getcwd(cwd, MAX_PATH)) { snprintf(system_dir, MAX_PATH, "%s/system", cwd); mkdir(system_dir, 0755); |