Selaa lähdekoodia

1.40a fixes, pt2

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@403 be3aeb3a-fb24-0410-a615-afba39da0efa
notaz 16 vuotta sitten
vanhempi
commit
08fe8094f7
1 muutettua tiedostoa jossa 23 lisäystä ja 11 poistoa
  1. 23 11
      platform/common/emu.c

+ 23 - 11
platform/common/emu.c

@@ -481,6 +481,18 @@ static void romfname_ext(char *dst, const char *prefix, const char *ext)
 }
 
 
+static void make_config_cfg(char *cfg)
+{
+	strncpy(cfg, PicoConfigFile, 511);
+	if (config_slot != 0)
+	{
+		char *p = strrchr(cfg, '.');
+		if (p == NULL) p = cfg + strlen(cfg);
+		sprintf(p, ".%i.cfg", config_slot);
+	}
+	cfg[511] = 0;
+}
+
 int emu_ReadConfig(int game, int no_defaults)
 {
 	char cfg[512];
@@ -491,14 +503,7 @@ int emu_ReadConfig(int game, int no_defaults)
 	{
 		if (!no_defaults)
 			emu_setDefaultConfig();
-		strncpy(cfg, PicoConfigFile, 511);
-		if (config_slot != 0)
-		{
-			char *p = strrchr(cfg, '.');
-			if (p == NULL) p = cfg + strlen(cfg);
-			sprintf(p, ".%i.cfg", config_slot);
-		}
-		cfg[511] = 0;
+		make_config_cfg(cfg);
 		ret = config_readsect(cfg, NULL);
 	}
 	else
@@ -511,18 +516,25 @@ int emu_ReadConfig(int game, int no_defaults)
 		else strcpy(cfg,  "game.cfg");
 
 		ret = -1;
-		if (config_havesect(cfg, sect)) {
+		if (config_havesect(cfg, sect))
+		{
+			// read user's config
 			int vol = currentConfig.volume;
 			emu_setDefaultConfig();
 			ret = config_readsect(cfg, sect);
 			currentConfig.volume = vol; // make vol global (bah)
 		}
 		else
-			config_readsect("game_def.cfg", sect);
+		{
+			// read global config, and apply game_def.cfg on top
+			make_config_cfg(cfg);
+			config_readsect(cfg, NULL);
+			ret = config_readsect("game_def.cfg", sect);
+		}
 
 		if (ret != 0)
 		{
-			// fall back to old
+			// fall back to old game specific cfg
 			char extbuf[16];
 			if (config_slot != 0)
 				sprintf(extbuf, ".%i.pbcfg", config_slot);