mirror of
https://github.com/mupen64plus/mupen64plus-oldsvn.git
synced 2025-04-02 10:52:35 -04:00
121 lines
3 KiB
C++
121 lines
3 KiB
C++
/*
|
|
* z64
|
|
*
|
|
* This program is free software; you can redistribute it and/
|
|
* or modify it under the terms of the GNU General Public Li-
|
|
* cence as published by the Free Software Foundation; either
|
|
* version 2 of the Licence, or any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be use-
|
|
* ful, but WITHOUT ANY WARRANTY; without even the implied war-
|
|
* ranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public Licence for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public
|
|
* Licence along with this program; if not, write to the Free
|
|
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
|
|
* USA.
|
|
*
|
|
**/
|
|
|
|
#include "Gfx #1.3.h"
|
|
#include "rdp.h"
|
|
#include "rgl.h"
|
|
|
|
char rgl_cwd[512];
|
|
|
|
int rglReadSettings()
|
|
{
|
|
FILE * fp;
|
|
char line[512];
|
|
char section[256];
|
|
char key[256];
|
|
int value;
|
|
int i, ignore = 0;
|
|
char rom[21];
|
|
|
|
#ifdef WIN32
|
|
if (!rgl_cwd[0]) {
|
|
getcwd(rgl_cwd, 512-32);
|
|
LOG("getcwd = '%s'\n", rgl_cwd);
|
|
}
|
|
sprintf(line, "%s/Plugin/z64gl.conf", rgl_cwd);
|
|
fp = fopen(line, "r");
|
|
#else
|
|
char configName[PATH_MAX];
|
|
|
|
strcpy(rgl_cwd, ".");
|
|
strcpy(configName, g_ConfigDir);
|
|
strcat(configName, "z64gl.conf");
|
|
fp = fopen(configName, "r");
|
|
#endif
|
|
|
|
if (!fp) {
|
|
LOGERROR("Couldn't open z64gl config file\n");
|
|
return -1;
|
|
}
|
|
|
|
for (i=0; i<20; i++)
|
|
rom[i] = gfx.HEADER[(32+i)^3];
|
|
rom[20] = 0;
|
|
|
|
i = strlen(rom);
|
|
while (i > 0 && rom[i-1] == ' ')
|
|
rom[--i] = 0;
|
|
LOG("rom name '%s'\n", rom);
|
|
|
|
section[0] = 0;
|
|
while (fgets(line, 255, fp)) {
|
|
int l = strlen(line);
|
|
char * e;
|
|
if (l > 0 && line[l-1] == '\n') {
|
|
line[l-1] = 0;
|
|
l--;
|
|
}
|
|
|
|
if (line[0] == '#')
|
|
continue;
|
|
else if (sscanf(line, "[%21c]", section) == 1) {
|
|
for (i=0; i<21; i++)
|
|
if (section[i] == ']') {
|
|
section[i] = 0;
|
|
break;
|
|
}
|
|
LOG("section '%s'\n", section);
|
|
ignore = strcmp(section, rom) && strcmp(section, "override");
|
|
} else if (ignore)
|
|
continue;
|
|
|
|
if (sscanf(line , " %s = %d ", key, &value) == 2) {
|
|
LOG("key '%s' value %d\n", key, value);
|
|
if (!strcmp(key, "res_x"))
|
|
rglSettings.resX = value;
|
|
else if (!strcmp(key, "res_y"))
|
|
rglSettings.resY = value;
|
|
else if (!strcmp(key, "fs_res_x"))
|
|
rglSettings.fsResX = value;
|
|
else if (!strcmp(key, "fs_res_y"))
|
|
rglSettings.fsResY = value;
|
|
else if (!strcmp(key, "hires_fb"))
|
|
rglSettings.hiresFb = value;
|
|
else if (!strcmp(key, "fb_info"))
|
|
rglSettings.fbInfo = value;
|
|
else if (!strcmp(key, "force_swap"))
|
|
rglSettings.forceSwap = value;
|
|
else if (!strcmp(key, "threaded"))
|
|
rglSettings.threaded = value;
|
|
else if (!strcmp(key, "async"))
|
|
rglSettings.async = value;
|
|
else if (!strcmp(key, "no_npot_fbos"))
|
|
rglSettings.noNpotFbos = value;
|
|
else if (!strcmp(key, "lowres"))
|
|
rglSettings.lowres = value;
|
|
else
|
|
LOGERROR("Unknown config key '%s'\n", key);
|
|
}
|
|
}
|
|
|
|
fclose(fp);
|
|
|
|
return 0;
|
|
}
|