X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=drivers%2Fcommon%2Fmain.c;h=61cd950fd349fa2c7c3f58705c6380a40a2b39e6;hp=d9ee833ef88a98f90b4077f5d43103566607dcb0;hb=eec2623f6183dd0f9494b99065a16bf90f2a1ccf;hpb=87e3eef5be4a5de92f97ee211ae4035d8d4b6494 diff --git a/drivers/common/main.c b/drivers/common/main.c index d9ee833..61cd950 100644 --- a/drivers/common/main.c +++ b/drivers/common/main.c @@ -37,6 +37,7 @@ #include "platform.h" #include "menu.h" #include "settings.h" +#include "../libpicofe/config_file.h" #include "../../fce.h" #include "../../cart.h" @@ -59,6 +60,8 @@ CFGSTRUCT DriverConfig[]={ AC(Settings.gamma), AC(Settings.perfect_vsync), AC(Settings.accurate_mode), + AC(Settings.sw_filter), + AC(Settings.hw_filter), ENDCFGSTRUCT }; @@ -158,7 +161,9 @@ int SaveConfig(const char *llgn_path) { const char *name = skip_path(llgn_path); char tdir[2048]; + FILE *f; int ret; + if (name) sprintf(tdir,"%s"PSS"cfg"PSS"%s.cfg",BaseDirectory,name); else sprintf(tdir,"%s"PSS"fceu2.cfg",BaseDirectory); @@ -166,22 +171,56 @@ int SaveConfig(const char *llgn_path) FCEUI_GetNTSCTH(&ntsctint, &ntschue); ret=SaveFCEUConfig(tdir,fceuconfig); printf(ret == 0 ? "done\n" : "failed\n"); + + // keys + if (name) + sprintf(tdir,"%s"PSS"cfg"PSS"%s_keys.cfg",BaseDirectory,name); + else sprintf(tdir,"%s"PSS"fceu_keys.cfg",BaseDirectory); + f=fopen(tdir, "w"); + if (f!=NULL) { + config_write_keys(f); + fclose(f); + } + return ret; } +static void LoadKeys(const char *llgn_path) +{ + const char *name = skip_path(llgn_path); + char tdir[2048]; + FILE *f; + int l; + + if (name) + sprintf(tdir,"%s"PSS"cfg"PSS"%s_keys.cfg",BaseDirectory,name); + else sprintf(tdir,"%s"PSS"fceu_keys.cfg",BaseDirectory); + f=fopen(tdir, "r"); + if (f!=NULL) { + l=fread(tdir,1,sizeof(tdir)-1,f); + tdir[l]=0; + config_read_keys(tdir); + fclose(f); + } +} + 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. */ - ret=LoadFCEUConfig(tdir,fceuconfig); + ret=LoadFCEUConfig(tdir,fceuconfig); FCEUI_SetNTSCTH(ntsccol, ntsctint, ntschue); printf(ret == 0 ? "done\n" : "failed\n"); + + LoadKeys(llgn_path); + return ret; } @@ -198,6 +237,10 @@ static void LoadLLGN(void) lastLoadedGameName[len] = 0; fclose(f); } + else + { + platform_get_def_rompath(lastLoadedGameName, sizeof(lastLoadedGameName)); + } } static void SaveLLGN(void) @@ -410,9 +453,10 @@ int main(int argc, char *argv[]) in_init(); CreateDirs(); - LoadConfig(NULL); - last_arg_parsed=DoArgs(argc-1,&argv[1]); + LoadConfig(NULL); + last_arg_parsed=DoArgs(argc-1,&argv[1]); platform_late_init(); + LoadKeys(NULL); LoadLLGN(); FCEUI_SetNTSCTH(ntsccol, ntsctint, ntschue); @@ -477,6 +521,7 @@ int main(int argc, char *argv[]) ret = menu_loop(); if (ret == 1) break; // exit emu if (ret == 2) { // reload ROM + SaveLLGN(); Exit = 0; continue; } @@ -494,7 +539,6 @@ int main(int argc, char *argv[]) if (fceugi) CloseGame(); - SaveLLGN(); FCEUI_Kill(); DriverKill(); platform_finish();