ZeroGS: Add support for GSsetSettingsDir.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2371 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2009-12-20 15:29:38 +00:00
parent a3edb9798c
commit 6c75ee61e5
8 changed files with 57 additions and 70 deletions

View File

@ -743,4 +743,8 @@ inline float Clamp(float fx, float fmin, float fmax)
return fx > fmax ? fmax : fx; return fx > fmax ? fmax : fx;
} }
#include <string>
extern std::string s_strIniPath;
#endif #endif

View File

@ -62,6 +62,8 @@ u8* g_pBasePS2Mem = NULL;
int g_TransferredToGPU = 0; int g_TransferredToGPU = 0;
int g_GameSettings = 0; int g_GameSettings = 0;
std::string s_strIniPath( "inis/" );
static LARGE_INTEGER luPerfFreq; static LARGE_INTEGER luPerfFreq;
// statistics // statistics
@ -155,6 +157,10 @@ void __LogToConsole(const char *fmt, ...) {
va_end(list); va_end(list);
} }
void CALLBACK GSsetSettingsDir(const char* dir) {
s_strIniPath = (dir==NULL) ? "inis/" : dir;
}
void CALLBACK GSsetBaseMem(void* pmem) { void CALLBACK GSsetBaseMem(void* pmem) {
g_pBasePS2Mem = (u8*)pmem; g_pBasePS2Mem = (u8*)pmem;
} }

View File

@ -9,39 +9,28 @@
extern HINSTANCE hInst; extern HINSTANCE hInst;
void SaveConfig() { void SaveConfig() {
char *szTemp; char szValue[256];
char szIniFile[256], szValue[256]; const std::string iniFile( s_strIniPath + "zerogs.ini" );
GetModuleFileName(GetModuleHandle((LPCSTR)hInst), szIniFile, 256);
szTemp = strrchr(szIniFile, '\\');
if(!szTemp) return;
strcpy(szTemp, "\\inis\\zerogs.ini");
sprintf(szValue,"%u",conf.interlace); sprintf(szValue,"%u",conf.interlace);
WritePrivateProfileString("Settings", "Interlace",szValue,szIniFile); WritePrivateProfileString("Settings", "Interlace",szValue,iniFile.c_str());
sprintf(szValue,"%u",conf.aa); sprintf(szValue,"%u",conf.aa);
WritePrivateProfileString("Settings", "Antialiasing",szValue,szIniFile); WritePrivateProfileString("Settings", "Antialiasing",szValue,iniFile.c_str());
sprintf(szValue,"%u",conf.bilinear); sprintf(szValue,"%u",conf.bilinear);
WritePrivateProfileString("Settings", "Bilinear",szValue,szIniFile); WritePrivateProfileString("Settings", "Bilinear",szValue,iniFile.c_str());
sprintf(szValue,"%u",conf.options); sprintf(szValue,"%u",conf.options);
WritePrivateProfileString("Settings", "Options",szValue,szIniFile); WritePrivateProfileString("Settings", "Options",szValue,iniFile.c_str());
sprintf(szValue,"%u",conf.gamesettings); sprintf(szValue,"%u",conf.gamesettings);
WritePrivateProfileString("Settings", "AdvancedOptions",szValue,szIniFile); WritePrivateProfileString("Settings", "AdvancedOptions",szValue,iniFile.c_str());
} }
void LoadConfig() { void LoadConfig() {
FILE *fp; char szValue[256];
char *szTemp; const std::string iniFile( s_strIniPath + "zerogs.ini" );
char szIniFile[256], szValue[256];
GetModuleFileName(GetModuleHandle((LPCSTR)hInst), szIniFile, 256);
szTemp = strrchr(szIniFile, '\\');
memset(&conf, 0, sizeof(conf)); memset(&conf, 0, sizeof(conf));
conf.interlace = 0; // on, mode 1 conf.interlace = 0; // on, mode 1
conf.mrtdepth = 1; conf.mrtdepth = 1;
@ -50,26 +39,24 @@ void LoadConfig() {
conf.width = 640; conf.width = 640;
conf.height = 480; conf.height = 480;
if(!szTemp) return ; FILE *fp=fopen(iniFile.c_str(),"rt");
strcpy(szTemp, "\\inis\\zerogs.ini");
fp=fopen("inis\\zerogs.ini","rt");
if (!fp) if (!fp)
{ {
CreateDirectory("inis",NULL); CreateDirectory(s_strIniPath.c_str(),NULL);
SaveConfig();//save and return SaveConfig();//save and return
return ; return ;
} }
fclose(fp); fclose(fp);
GetPrivateProfileString("Settings", "Interlace", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "Interlace", NULL, szValue, 20, iniFile.c_str());
conf.interlace = (u8)strtoul(szValue, NULL, 10); conf.interlace = (u8)strtoul(szValue, NULL, 10);
GetPrivateProfileString("Settings", "Antialiasing", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "Antialiasing", NULL, szValue, 20, iniFile.c_str());
conf.aa = (u8)strtoul(szValue, NULL, 10); conf.aa = (u8)strtoul(szValue, NULL, 10);
GetPrivateProfileString("Settings", "Options", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "Options", NULL, szValue, 20, iniFile.c_str());
conf.options = strtoul(szValue, NULL, 10); conf.options = strtoul(szValue, NULL, 10);
GetPrivateProfileString("Settings", "AdvancedOptions", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "AdvancedOptions", NULL, szValue, 20, iniFile.c_str());
conf.gamesettings = strtoul(szValue, NULL, 10); conf.gamesettings = strtoul(szValue, NULL, 10);
GetPrivateProfileString("Settings", "Bilinear", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "Bilinear", NULL, szValue, 20, iniFile.c_str());
conf.bilinear = strtoul(szValue, NULL, 10); conf.bilinear = strtoul(szValue, NULL, 10);
if( conf.aa < 0 || conf.aa > 4 ) conf.aa = 0; if( conf.aa < 0 || conf.aa > 4 ) conf.aa = 0;

View File

@ -64,6 +64,8 @@ extern "C" char* CALLBACK PS2EgetLibName(void);
#include <string> #include <string>
using namespace std; using namespace std;
extern std::string s_strIniPath;
extern u32 THR_KeyEvent; // value for passing out key events beetwen threads extern u32 THR_KeyEvent; // value for passing out key events beetwen threads
extern bool THR_bShift; extern bool THR_bShift;

View File

@ -54,7 +54,7 @@ int g_GSMultiThreaded = 0;
void (*GSirq)(); void (*GSirq)();
u8* g_pBasePS2Mem = NULL; u8* g_pBasePS2Mem = NULL;
int g_TransferredToGPU = 0; int g_TransferredToGPU = 0;
string s_strIniPath="inis/zerogs.ini"; std::string s_strIniPath("inis/");
static BOOL g_bHidden = 0; static BOOL g_bHidden = 0;
int g_GameSettings = 0; int g_GameSettings = 0;
@ -157,6 +157,10 @@ void __LogToConsole(const char *fmt, ...) {
va_end(list); va_end(list);
} }
void CALLBACK GSsetSettingsDir(const char* dir) {
s_strIniPath = (dir==NULL) ? "inis/" : dir;
}
void CALLBACK GSsetBaseMem(void* pmem) { void CALLBACK GSsetBaseMem(void* pmem) {
g_pBasePS2Mem = (u8*)pmem; g_pBasePS2Mem = (u8*)pmem;
} }

View File

@ -24,18 +24,14 @@
#include <string.h> #include <string.h>
#include "GS.h" #include "GS.h"
extern string s_strIniPath;
void SaveConfig() void SaveConfig()
{ {
FILE *f; const std::string iniFile( s_strIniPath + "zerogs.ini" );
char cfg[255];
strcpy(cfg, s_strIniPath.c_str()); FILE* f = fopen(iniFile.c_str(),"w");
f = fopen(cfg,"w");
if (f == NULL) if (f == NULL)
{ {
printf("failed to open %s\n", s_strIniPath.c_str()); printf("failed to open %s\n", iniFile.c_str());
return; return;
} }
@ -50,7 +46,6 @@ void SaveConfig()
void LoadConfig() void LoadConfig()
{ {
FILE *f;
char cfg[255]; char cfg[255];
memset(&conf, 0, sizeof(conf)); memset(&conf, 0, sizeof(conf));
@ -62,11 +57,11 @@ void LoadConfig()
conf.height = 480; conf.height = 480;
conf.aa = 0; conf.aa = 0;
strcpy(cfg, s_strIniPath.c_str()); const std::string iniFile( s_strIniPath + "zerogs.ini" );
f = fopen(cfg, "r"); FILE* f = fopen(iniFile.c_str(), "r");
if (f == NULL) if (f == NULL)
{ {
printf("failed to open %s\n", s_strIniPath.c_str()); printf("failed to open %s\n", iniFile.c_str());
SaveConfig();//save and return SaveConfig();//save and return
return; return;
} }

View File

@ -8,35 +8,25 @@ extern HINSTANCE hInst;
void SaveConfig() { void SaveConfig() {
char *szTemp; char szValue[256];
char szIniFile[256], szValue[256]; const std::string iniFile( s_strIniPath + "zerogs.ini" );
GetModuleFileName(GetModuleHandle((LPCSTR)hInst), szIniFile, 256);
szTemp = strrchr(szIniFile, '\\');
if(!szTemp) return;
strcpy(szTemp, "\\inis\\zerogs.ini");
sprintf(szValue,"%u",conf.interlace); sprintf(szValue,"%u",conf.interlace);
WritePrivateProfileString("Settings", "Interlace",szValue,szIniFile); WritePrivateProfileString("Settings", "Interlace",szValue,iniFile.c_str());
sprintf(szValue,"%u",conf.aa); sprintf(szValue,"%u",conf.aa);
WritePrivateProfileString("Settings", "Antialiasing",szValue,szIniFile); WritePrivateProfileString("Settings", "Antialiasing",szValue,iniFile.c_str());
sprintf(szValue,"%u",conf.bilinear); sprintf(szValue,"%u",conf.bilinear);
WritePrivateProfileString("Settings", "Bilinear",szValue,szIniFile); WritePrivateProfileString("Settings", "Bilinear",szValue,iniFile.c_str());
sprintf(szValue,"%u",conf.options); sprintf(szValue,"%u",conf.options);
WritePrivateProfileString("Settings", "Options",szValue,szIniFile); WritePrivateProfileString("Settings", "Options",szValue,iniFile.c_str());
sprintf(szValue,"%u",conf.gamesettings); sprintf(szValue,"%u",conf.gamesettings);
WritePrivateProfileString("Settings", "AdvancedOptions",szValue,szIniFile); WritePrivateProfileString("Settings", "AdvancedOptions",szValue,iniFile.c_str());
} }
void LoadConfig() { void LoadConfig() {
FILE *fp; char szValue[256];
char *szTemp; const std::string iniFile( s_strIniPath + "zerogs.ini" );
char szIniFile[256], szValue[256];
GetModuleFileName(GetModuleHandle((LPCSTR)hInst), szIniFile, 256);
szTemp = strrchr(szIniFile, '\\');
memset(&conf, 0, sizeof(conf)); memset(&conf, 0, sizeof(conf));
conf.interlace = 0; // on, mode 1 conf.interlace = 0; // on, mode 1
@ -46,26 +36,24 @@ void LoadConfig() {
conf.width = 640; conf.width = 640;
conf.height = 480; conf.height = 480;
if(!szTemp) return ; FILE *fp=fopen(iniFile.c_str(),"rt");
strcpy(szTemp, "\\inis\\zerogs.ini");
fp=fopen("inis\\zerogs.ini","rt");
if (!fp) if (!fp)
{ {
CreateDirectory("inis",NULL); CreateDirectory(s_strIniPath.c_str(),NULL);
SaveConfig();//save and return SaveConfig();//save and return
return ; return ;
} }
fclose(fp); fclose(fp);
GetPrivateProfileString("Settings", "Interlace", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "Interlace", NULL, szValue, 20, iniFile.c_str());
conf.interlace = (u8)strtoul(szValue, NULL, 10); conf.interlace = (u8)strtoul(szValue, NULL, 10);
GetPrivateProfileString("Settings", "Antialiasing", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "Antialiasing", NULL, szValue, 20, iniFile.c_str());
conf.aa = (u8)strtoul(szValue, NULL, 10); conf.aa = (u8)strtoul(szValue, NULL, 10);
GetPrivateProfileString("Settings", "Options", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "Options", NULL, szValue, 20, iniFile.c_str());
conf.options = strtoul(szValue, NULL, 10); conf.options = strtoul(szValue, NULL, 10);
GetPrivateProfileString("Settings", "AdvancedOptions", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "AdvancedOptions", NULL, szValue, 20, iniFile.c_str());
conf.gamesettings = strtoul(szValue, NULL, 10); conf.gamesettings = strtoul(szValue, NULL, 10);
GetPrivateProfileString("Settings", "Bilinear", NULL, szValue, 20, szIniFile); GetPrivateProfileString("Settings", "Bilinear", NULL, szValue, 20, iniFile.c_str());
conf.bilinear = strtoul(szValue, NULL, 10); conf.bilinear = strtoul(szValue, NULL, 10);
if( conf.aa < 0 || conf.aa > 2 ) conf.aa = 0; if( conf.aa < 0 || conf.aa > 2 ) conf.aa = 0;

View File

@ -33,4 +33,5 @@ EXPORTS
GSsetFrameSkip @35 GSsetFrameSkip @35
GSsetGameCRC @36 GSsetGameCRC @36
GSgetLastTag @37 GSgetLastTag @37
GSsetupRecording @38 GSsetupRecording @38
GSsetSettingsDir @38