aboutsummaryrefslogtreecommitdiff
path: root/plugins/peopsxgl/cfg.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/peopsxgl/cfg.c')
-rw-r--r--plugins/peopsxgl/cfg.c249
1 files changed, 249 insertions, 0 deletions
diff --git a/plugins/peopsxgl/cfg.c b/plugins/peopsxgl/cfg.c
new file mode 100644
index 0000000..3dcd0ab
--- /dev/null
+++ b/plugins/peopsxgl/cfg.c
@@ -0,0 +1,249 @@
+/***************************************************************************
+ cfg.c - description
+ -------------------
+ begin : Sun Mar 08 2009
+ copyright : (C) 1999-2009 by Pete Bernert
+ web : www.pbernert.com
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. See also the license.txt file for *
+ * additional informations. *
+ * *
+ ***************************************************************************/
+
+//*************************************************************************//
+// History of changes:
+//
+// 2009/03/08 - Pete
+// - generic cleanup for the Peops release
+//
+//*************************************************************************//
+
+#define _IN_CFG
+
+#include "stdafx.h"
+#include "externals.h"
+#include "cfg.h"
+
+char *pConfigFile = NULL;
+
+void ReadConfigFile()
+{
+ FILE *in = NULL;
+ int len;
+ char *pB, *p, t[256];
+
+ if (pConfigFile != NULL)
+ in = fopen(pConfigFile, "rb");
+ else
+ in = fopen("gpuPeopsMesaGL.cfg", "rb");
+
+ if (in == NULL) return;
+
+ pB=(char *)malloc(32767); // buffer for reading config (32k)
+ memset(pB, 0, 32767);
+
+ len = fread(pB, 1, 32767, in); // read config in buffer
+ fclose(in); // close config file
+
+ strcpy(t,"\nResX");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iResX=atoi(p+len);
+ if(iResX<10) iResX=10;
+
+ strcpy(t,"\nResY");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iResY=atoi(p+len);
+ if(iResY<10) iResY=10;
+
+ strcpy(t,"\nKeepRatio");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bKeepRatio=atoi(p+len);
+ if(bKeepRatio<0) bKeepRatio=0;
+ if(bKeepRatio>1) bKeepRatio=1;
+
+ strcpy(t,"\nScreenSmoothing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iBlurBuffer=atoi(p+len);
+ if(iBlurBuffer<0) iBlurBuffer=0;
+ if(iBlurBuffer>1) iBlurBuffer=1;
+
+ strcpy(t,"\nHiResTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iHiResTextures=atoi(p+len);
+ if(iHiResTextures<0) iHiResTextures=0;
+ if(iHiResTextures>2) iHiResTextures=2;
+
+ iSortTexCnt =0;
+ strcpy(t,"\nVRamSize");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iVRamSize=atoi(p+len);
+ if(iVRamSize<0) iVRamSize=0;
+ if(iVRamSize>1024) iVRamSize=1024;
+
+ strcpy(t,"\nFullScreen");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bFullScreen=atoi(p+len);
+ if(bFullScreen>1) bFullScreen=1;
+
+ strcpy(t,"\nScanLines");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iUseScanLines=atoi(p+len);
+ if(iUseScanLines<0) iUseScanLines=0;
+ if(iUseScanLines>1) iUseScanLines=1;
+
+ strcpy(t,"\nScanLinesBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iScanBlend=atoi(p+len);
+ if(iScanBlend<-1) iScanBlend=-1;
+ if(iScanBlend>255) iScanBlend=255;
+
+ strcpy(t,"\nFrameTextures");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iFrameTexType=atoi(p+len);
+ if(iFrameTexType<0) iFrameTexType=0;
+ if(iFrameTexType>3) iFrameTexType=3;
+
+ strcpy(t,"\nFrameAccess");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iFrameReadType=atoi(p+len);
+ if(iFrameReadType<0) iFrameReadType=0;
+ if(iFrameReadType>4) iFrameReadType=4;
+ if(iFrameReadType==4) bFullVRam=TRUE;
+ else bFullVRam=FALSE;
+
+ strcpy(t,"\nTexFilter");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iFilterType=atoi(p+len);
+ if(iFilterType<0) iFilterType=0;
+ if(iFilterType>6) iFilterType=6;
+
+ strcpy(t,"\nAdvancedBlend");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bAdvancedBlend=atoi(p+len);
+ if(bAdvancedBlend<0) bAdvancedBlend=0;
+ if(bAdvancedBlend>1) bAdvancedBlend=1;
+
+ strcpy(t,"\nDithering");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bDrawDither=atoi(p+len);
+ if(bDrawDither<0) bDrawDither=0;
+ if(bDrawDither>1) bDrawDither=1;
+
+ strcpy(t,"\nLineMode");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bUseLines=atoi(p+len);
+ if(bUseLines<0) bUseLines=0;
+ if(bUseLines>1) bUseLines=1;
+
+ strcpy(t,"\nShowFPS");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iShowFPS=atoi(p+len);
+ if(iShowFPS<0) iShowFPS=0;
+ if(iShowFPS>1) iShowFPS=1;
+
+ strcpy(t,"\nUseFrameLimit");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bUseFrameLimit=atoi(p+len);
+ if(bUseFrameLimit<0) bUseFrameLimit=0;
+ if(bUseFrameLimit>1) bUseFrameLimit=1;
+
+ strcpy(t,"\nUseFrameSkip");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bUseFrameSkip=atoi(p+len);
+ if(bUseFrameSkip<0) bUseFrameSkip=0;
+ if(bUseFrameSkip>1) bUseFrameSkip=1;
+
+ strcpy(t,"\nFPSDetection");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iFrameLimit=atoi(p+len)+1;
+ if(iFrameLimit<1) iFrameLimit=1;
+ if(iFrameLimit>2) iFrameLimit=2;
+
+ strcpy(t,"\nFrameRate");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) fFrameRate=(float)atof(p+len);
+ if(fFrameRate<0.0f) fFrameRate=0.0f;
+ if(fFrameRate>1000.0f) fFrameRate=1000.0f;
+
+ strcpy(t,"\nOffscreenDrawing");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iOffscreenDrawing=atoi(p+len);
+ if(iOffscreenDrawing<0) iOffscreenDrawing=0;
+ if(iOffscreenDrawing>4) iOffscreenDrawing=4;
+
+ strcpy(t,"\nOpaquePass");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bOpaquePass=atoi(p+len);
+ if(bOpaquePass<0) bOpaquePass=0;
+ if(bOpaquePass>1) bOpaquePass=1;
+
+ strcpy(t,"\nAntiAlias");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bUseAntiAlias=atoi(p+len);
+ if(bUseAntiAlias<0) bUseAntiAlias=0;
+ if(bUseAntiAlias>1) bUseAntiAlias=1;
+
+ strcpy(t,"\nTexQuality");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iTexQuality=atoi(p+len);
+ if(iTexQuality<0) iTexQuality=0;
+ if(iTexQuality>4) iTexQuality=4;
+
+ strcpy(t,"\n15bitMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bUse15bitMdec=atoi(p+len);
+ if(bUse15bitMdec<0) bUse15bitMdec=0;
+ if(bUse15bitMdec>1) bUse15bitMdec=1;
+
+ strcpy(t,"\nMaskDetect");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iUseMask=atoi(p+len);
+ if(iUseMask<0) iUseMask=0;
+ if(iUseMask>1) iUseMask=1;
+
+ strcpy(t,"\nFastMdec");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bUseFastMdec=atoi(p+len);
+ if(bUseFastMdec<0) bUseFastMdec=0;
+ if(bUseFastMdec>1) bUseFastMdec=1;
+
+ strcpy(t,"\nCfgFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) dwCfgFixes=atoi(p+len);
+
+ strcpy(t,"\nUseFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) bUseFixes=atoi(p+len);
+ if(bUseFixes<0) bUseFixes=0;
+ if(bUseFixes>1) bUseFixes=1;
+
+ strcpy(t,"\nOGLExtensions");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;}
+ if(p) iUseExts=atoi(p+len);
+ if(iUseExts>1) iUseExts=1;
+
+ free(pB);
+}
+
+void ReadConfig(void) // read config (linux file)
+{
+ iResX=640;
+ iResY=480;
+ iColDepth=16;
+ bChangeRes=FALSE;
+ bWindowMode=TRUE;
+ iUseScanLines=0;
+ bFullScreen=FALSE;
+ bFullVRam=FALSE;
+ iFilterType=0;
+ bAdvancedBlend=FALSE;
+ bDrawDither=FALSE;
+ bUseLines=FALSE;
+ bUseFrameLimit=TRUE;
+ bUseFrameSkip=FALSE;
+ iFrameLimit=2;
+ fFrameRate=200.0f;
+ iOffscreenDrawing=2;
+ bOpaquePass=TRUE;
+ bUseAntiAlias=FALSE;
+ iTexQuality=0;
+ iUseMask=0;
+ iZBufferDepth=0;
+ bUseFastMdec=TRUE;
+ dwCfgFixes=0;
+ bUseFixes=FALSE;
+ iFrameTexType=1;
+ iFrameReadType=0;
+ bUse15bitMdec=FALSE;
+ iShowFPS=0;
+ bKeepRatio=FALSE;
+ iScanBlend=0;
+ iVRamSize=0;
+ iTexGarbageCollection=1;
+ iBlurBuffer=0;
+ iHiResTextures=0;
+ iForceVSync=-1;
+
+ ReadConfigFile(); // read file
+
+ if(!iColDepth) iColDepth=32; // adjust color info
+ if(iUseMask) iZBufferDepth=16; // set zbuffer depth
+ else iZBufferDepth=0;
+ if(bUseFixes) dwActFixes=dwCfgFixes; // init game fix global
+}