diff --git a/src/d_main.c b/src/d_main.c index 2c02565dc0c7e1b1eadadda2a4d2ef6af1550627..8a63f61f8a277f4fd1bd99800154c7e263db2c83 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -999,6 +999,7 @@ void D_SRB2Main(void) lumpinfo_t *lumpinfo; UINT16 wadnum; char *name; + FILE *tmpfile; INT32 pstartmap = 1; boolean autostart = false; @@ -1126,6 +1127,19 @@ void D_SRB2Main(void) configfile[sizeof configfile - 1] = '\0'; + // If config isn't writable, tons of behavior will be broken. + // Fail loudly before things get confusing! + tmpfile = fopen(configfile, "w"); + if (!tmpfile) + { +#if defined (_WIN32) + I_Error("Couldn't write game config.\nMake sure the game is installed somewhere it has write permissions.\n\n(Don't use the Downloads folder, Program Files, or your desktop!\nIf unsure, we recommend making a subfolder in your Documents folder.)"); +#else + I_Error("Couldn't write game config.\nMake sure you've installed the game somewhere it has write permissions."); +#endif + } + fclose(tmpfile); + #ifdef _arch_dreamcast strcpy(downloaddir, "/ram"); // the dreamcast's TMP #endif