From 472b1e6f17db5558a768ce633638923234a50794 Mon Sep 17 00:00:00 2001 From: retro-wertz Date: Wed, 15 Mar 2017 02:32:00 +0800 Subject: [PATCH] fix fds not saving game --- src/driver.h | 5 +++++ src/drivers/libretro/libretro.c | 3 +++ src/general.c | 10 ++++++++++ 3 files changed, 18 insertions(+) diff --git a/src/driver.h b/src/driver.h index c3767ca..adf90ad 100644 --- a/src/driver.h +++ b/src/driver.h @@ -179,6 +179,11 @@ void FCEUI_SetRenderedLines(int ntscf, int ntscl, int palf, int pall); below this directory. */ void FCEUI_SetBaseDirectory(char *dir); +#ifdef __LIBRETRO__ +void FCEUI_SetSaveDirectory(char *sav_dir); +#endif + + /* Tells FCE Ultra to copy the palette data pointed to by pal and use it. Data pointed to by pal needs to be 64*3 bytes in length. */ diff --git a/src/drivers/libretro/libretro.c b/src/drivers/libretro/libretro.c index f9a3124..1d96b0d 100644 --- a/src/drivers/libretro/libretro.c +++ b/src/drivers/libretro/libretro.c @@ -1637,6 +1637,7 @@ bool retro_load_game(const struct retro_game_info *game) { unsigned i; char* dir=NULL; + char* sav_dir=NULL; size_t fourscore_len = sizeof(fourscore_db_list) / sizeof(fourscore_db_list[0]); size_t famicom_4p_len = sizeof(famicom_4p_db_list) / sizeof(famicom_4p_db_list[0]); @@ -1706,6 +1707,8 @@ bool retro_load_game(const struct retro_game_info *game) if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &dir) && dir) FCEUI_SetBaseDirectory(dir); + if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &sav_dir) && sav_dir) + FCEUI_SetSaveDirectory(sav_dir); FCEUI_Initialize(); diff --git a/src/general.c b/src/general.c index b92271a..39ed8ab 100644 --- a/src/general.c +++ b/src/general.c @@ -42,6 +42,7 @@ #include "md5.h" static char BaseDirectory[2048]; +static char SaveDirectory[2048]; static char FileBase[2048]; static char FileExt[2048]; /* Includes the . character, as in ".nes" */ @@ -53,6 +54,12 @@ void FCEUI_SetBaseDirectory(char *dir) BaseDirectory[2047] = 0; } +void FCEUI_SetSaveDirectory(char *sav_dir) +{ + strncpy(SaveDirectory, sav_dir, 2047); + SaveDirectory[2047] = 0; +} + static char *odirs[FCEUIOD__COUNT] = { 0, 0, 0, 0, 0, 0 }; // odirs, odors. ^_^ void FCEUI_SetDirOverride(int which, char *n) @@ -87,6 +94,9 @@ char *FCEU_MakeFName(int type, int id1, char *cd1) else sprintf(tmp, "%s"PSS "gameinfo"PSS "%s.pal", BaseDirectory, FileBase); break; + case FCEUMKF_FDS: + sprintf(tmp, "%s"PSS "%s.fds", SaveDirectory, FileBase); + break; default: break; }