X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=drivers%2Fgp2x%2Fmain.c;h=628f88b0ad88c707f6ed6def6b6a8d37cca41d11;hp=92094c06499359361b2747cbfe0becd0225351c8;hb=890deff8bad82ef88678ac9c9cb7373677faf77a;hpb=892b1f6c68346fa00dc3029ab8bd31178e730509 diff --git a/drivers/gp2x/main.c b/drivers/gp2x/main.c index 92094c0..628f88b 100644 --- a/drivers/gp2x/main.c +++ b/drivers/gp2x/main.c @@ -128,25 +128,44 @@ static CFGSTRUCT fceuconfig[]={ ENDCFGSTRUCT }; -void SaveConfig(const char *name) +static const char *skip_path(const char *path) { + const char *p; + if (path == NULL) return NULL; + for (p = path+strlen(path)-1; p > path && *p != '/'; p--); + if (*p == '/') p++; + return p; +} + +int SaveConfig(const char *llgn_path) +{ + const char *name = skip_path(llgn_path); char tdir[2048]; + int ret; if (name) sprintf(tdir,"%s"PSS"cfg"PSS"%s.cfg",BaseDirectory,name); else sprintf(tdir,"%s"PSS"fceu2.cfg",BaseDirectory); + printf("saving cfg to %s ... ", tdir); fflush(stdout); FCEUI_GetNTSCTH(&ntsctint, &ntschue); - SaveFCEUConfig(tdir,fceuconfig); + ret=SaveFCEUConfig(tdir,fceuconfig); + printf(ret == 0 ? "done\n" : "failed\n"); + return ret; } -static void LoadConfig(const char *name) +static int LoadConfig(const char *llgn_path) { + const char *name = skip_path(llgn_path); char tdir[2048]; + int ret; if (name) sprintf(tdir,"%s"PSS"cfg"PSS"%s.cfg",BaseDirectory,name); else sprintf(tdir,"%s"PSS"fceu2.cfg",BaseDirectory); + printf("loading cfg from %s ... ", tdir); fflush(stdout); FCEUI_GetNTSCTH(&ntsctint, &ntschue); /* Get default settings for if no config file exists. */ - LoadFCEUConfig(tdir,fceuconfig); + ret=LoadFCEUConfig(tdir,fceuconfig); FCEUI_SetNTSCTH(ntsccol, ntsctint, ntschue); + printf(ret == 0 ? "done\n" : "failed\n"); + return ret; } static void LoadLLGN(void) @@ -333,7 +352,7 @@ static int DoArgs(int argc, char *argv[]) int CLImain(int argc, char *argv[]) { - int last_arg_parsed; + int last_arg_parsed, ret; /* TODO if(argc<=1) { ShowUsage(argv[0]); @@ -379,11 +398,16 @@ int CLImain(int argc, char *argv[]) { if (fceugi) CloseGame(); + ret=LoadConfig(lastLoadedGameName); + if (ret != 0) + { + LoadConfig(NULL); + } + FCEUI_SetEmuMode(Settings.accurate_mode); fceugi=FCEUI_LoadGame(lastLoadedGameName); if (fceugi) { char infostring[32]; - LoadConfig(lastLoadedGameName); if (Settings.region_force) FCEUI_SetVidSystem(Settings.region_force - 1); ParseGI(fceugi); @@ -438,6 +462,7 @@ int CLImain(int argc, char *argv[]) CloseGame(); SaveLLGN(); + FCEUI_Kill(); DriverKill(); return 0; }