1 /***************************************************************************
\r
4 begin : Sun Mar 08 2009
\r
5 copyright : (C) 1999-2009 by Pete Bernert
\r
6 web : www.pbernert.com
\r
7 ***************************************************************************/
\r
9 /***************************************************************************
\r
11 * This program is free software; you can redistribute it and/or modify *
\r
12 * it under the terms of the GNU General Public License as published by *
\r
13 * the Free Software Foundation; either version 2 of the License, or *
\r
14 * (at your option) any later version. See also the license.txt file for *
\r
15 * additional informations. *
\r
17 ***************************************************************************/
\r
19 //*************************************************************************//
\r
20 // History of changes:
\r
22 // 2009/03/08 - Pete
\r
23 // - generic cleanup for the Peops release
\r
25 //*************************************************************************//
\r
30 #include "externals.h"
\r
33 char *pConfigFile = NULL;
\r
35 void ReadConfigFile()
\r
39 char *pB, *p, t[256];
\r
41 if (pConfigFile != NULL)
\r
42 in = fopen(pConfigFile, "rb");
\r
44 in = fopen("gpuPeopsMesaGL.cfg", "rb");
\r
46 if (in == NULL) return;
\r
48 pB=(char *)malloc(32767); // buffer for reading config (32k)
\r
49 memset(pB, 0, 32767);
\r
51 len = fread(pB, 1, 32767, in); // read config in buffer
\r
52 fclose(in); // close config file
\r
54 strcpy(t,"\nResX");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
55 if(p) iResX=atoi(p+len);
\r
56 if(iResX<10) iResX=10;
\r
58 strcpy(t,"\nResY");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
59 if(p) iResY=atoi(p+len);
\r
60 if(iResY<10) iResY=10;
\r
62 strcpy(t,"\nKeepRatio");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
63 if(p) bKeepRatio=atoi(p+len);
\r
64 if(bKeepRatio<0) bKeepRatio=0;
\r
65 if(bKeepRatio>1) bKeepRatio=1;
\r
67 strcpy(t,"\nScreenSmoothing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
68 if(p) iBlurBuffer=atoi(p+len);
\r
69 if(iBlurBuffer<0) iBlurBuffer=0;
\r
70 if(iBlurBuffer>1) iBlurBuffer=1;
\r
72 strcpy(t,"\nHiResTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
73 if(p) iHiResTextures=atoi(p+len);
\r
74 if(iHiResTextures<0) iHiResTextures=0;
\r
75 if(iHiResTextures>2) iHiResTextures=2;
\r
78 strcpy(t,"\nVRamSize");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
79 if(p) iVRamSize=atoi(p+len);
\r
80 if(iVRamSize<0) iVRamSize=0;
\r
81 if(iVRamSize>1024) iVRamSize=1024;
\r
83 strcpy(t,"\nFullScreen");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
84 if(p) bFullScreen=atoi(p+len);
\r
85 if(bFullScreen>1) bFullScreen=1;
\r
87 strcpy(t,"\nScanLines");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
88 if(p) iUseScanLines=atoi(p+len);
\r
89 if(iUseScanLines<0) iUseScanLines=0;
\r
90 if(iUseScanLines>1) iUseScanLines=1;
\r
92 strcpy(t,"\nScanLinesBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
93 if(p) iScanBlend=atoi(p+len);
\r
94 if(iScanBlend<-1) iScanBlend=-1;
\r
95 if(iScanBlend>255) iScanBlend=255;
\r
97 strcpy(t,"\nFrameTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
98 if(p) iFrameTexType=atoi(p+len);
\r
99 if(iFrameTexType<0) iFrameTexType=0;
\r
100 if(iFrameTexType>3) iFrameTexType=3;
\r
102 strcpy(t,"\nFrameAccess");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
103 if(p) iFrameReadType=atoi(p+len);
\r
104 if(iFrameReadType<0) iFrameReadType=0;
\r
105 if(iFrameReadType>4) iFrameReadType=4;
\r
106 if(iFrameReadType==4) bFullVRam=TRUE;
\r
107 else bFullVRam=FALSE;
\r
109 strcpy(t,"\nTexFilter");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
110 if(p) iFilterType=atoi(p+len);
\r
111 if(iFilterType<0) iFilterType=0;
\r
112 if(iFilterType>6) iFilterType=6;
\r
114 strcpy(t,"\nAdvancedBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
115 if(p) bAdvancedBlend=atoi(p+len);
\r
116 if(bAdvancedBlend<0) bAdvancedBlend=0;
\r
117 if(bAdvancedBlend>1) bAdvancedBlend=1;
\r
119 strcpy(t,"\nDithering");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
120 if(p) bDrawDither=atoi(p+len);
\r
121 if(bDrawDither<0) bDrawDither=0;
\r
122 if(bDrawDither>1) bDrawDither=1;
\r
124 strcpy(t,"\nLineMode");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
125 if(p) bUseLines=atoi(p+len);
\r
126 if(bUseLines<0) bUseLines=0;
\r
127 if(bUseLines>1) bUseLines=1;
\r
129 strcpy(t,"\nShowFPS");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
130 if(p) iShowFPS=atoi(p+len);
\r
131 if(iShowFPS<0) iShowFPS=0;
\r
132 if(iShowFPS>1) iShowFPS=1;
\r
134 strcpy(t,"\nUseFrameLimit");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
135 if(p) bUseFrameLimit=atoi(p+len);
\r
136 if(bUseFrameLimit<0) bUseFrameLimit=0;
\r
137 if(bUseFrameLimit>1) bUseFrameLimit=1;
\r
139 strcpy(t,"\nUseFrameSkip");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
140 if(p) bUseFrameSkip=atoi(p+len);
\r
141 if(bUseFrameSkip<0) bUseFrameSkip=0;
\r
142 if(bUseFrameSkip>1) bUseFrameSkip=1;
\r
144 strcpy(t,"\nFPSDetection");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
145 if(p) iFrameLimit=atoi(p+len)+1;
\r
146 if(iFrameLimit<1) iFrameLimit=1;
\r
147 if(iFrameLimit>2) iFrameLimit=2;
\r
149 strcpy(t,"\nFrameRate");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
150 if(p) fFrameRate=(float)atof(p+len);
\r
151 if(fFrameRate<0.0f) fFrameRate=0.0f;
\r
152 if(fFrameRate>1000.0f) fFrameRate=1000.0f;
\r
154 strcpy(t,"\nOffscreenDrawing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
155 if(p) iOffscreenDrawing=atoi(p+len);
\r
156 if(iOffscreenDrawing<0) iOffscreenDrawing=0;
\r
157 if(iOffscreenDrawing>4) iOffscreenDrawing=4;
\r
159 strcpy(t,"\nOpaquePass");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
160 if(p) bOpaquePass=atoi(p+len);
\r
161 if(bOpaquePass<0) bOpaquePass=0;
\r
162 if(bOpaquePass>1) bOpaquePass=1;
\r
164 strcpy(t,"\nAntiAlias");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
165 if(p) bUseAntiAlias=atoi(p+len);
\r
166 if(bUseAntiAlias<0) bUseAntiAlias=0;
\r
167 if(bUseAntiAlias>1) bUseAntiAlias=1;
\r
169 strcpy(t,"\nTexQuality");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
170 if(p) iTexQuality=atoi(p+len);
\r
171 if(iTexQuality<0) iTexQuality=0;
\r
172 if(iTexQuality>4) iTexQuality=4;
\r
174 strcpy(t,"\n15bitMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
175 if(p) bUse15bitMdec=atoi(p+len);
\r
176 if(bUse15bitMdec<0) bUse15bitMdec=0;
\r
177 if(bUse15bitMdec>1) bUse15bitMdec=1;
\r
179 strcpy(t,"\nMaskDetect");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
180 if(p) iUseMask=atoi(p+len);
\r
181 if(iUseMask<0) iUseMask=0;
\r
182 if(iUseMask>1) iUseMask=1;
\r
184 strcpy(t,"\nFastMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
185 if(p) bUseFastMdec=atoi(p+len);
\r
186 if(bUseFastMdec<0) bUseFastMdec=0;
\r
187 if(bUseFastMdec>1) bUseFastMdec=1;
\r
189 strcpy(t,"\nCfgFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
190 if(p) dwCfgFixes=atoi(p+len);
\r
192 strcpy(t,"\nUseFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
193 if(p) bUseFixes=atoi(p+len);
\r
194 if(bUseFixes<0) bUseFixes=0;
\r
195 if(bUseFixes>1) bUseFixes=1;
\r
197 strcpy(t,"\nOGLExtensions");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
\r
198 if(p) iUseExts=atoi(p+len);
\r
199 if(iUseExts>1) iUseExts=1;
\r
204 void ReadConfig(void) // read config (linux file)
\r
215 bAdvancedBlend=FALSE;
\r
218 bUseFrameLimit=TRUE;
\r
219 bUseFrameSkip=FALSE;
\r
222 iOffscreenDrawing=2;
\r
224 bUseAntiAlias=FALSE;
\r
233 bUse15bitMdec=FALSE;
\r
238 iTexGarbageCollection=1;
\r
243 ReadConfigFile(); // read file
\r
245 if(!iColDepth) iColDepth=32; // adjust color info
\r
246 if(iUseMask) iZBufferDepth=16; // set zbuffer depth
\r
247 else iZBufferDepth=0;
\r
248 if(bUseFixes) dwActFixes=dwCfgFixes; // init game fix global
\r