From c8f2b9f6218fc02d0048a107883b74be8f08b2ba Mon Sep 17 00:00:00 2001 From: sezero Date: Mon, 20 Aug 2018 19:35:50 +0300 Subject: [PATCH] glide2x, sst1/cvg init: merge scanf updates from glide3x --- glide2x/cvg/init/gdebug.c | 32 +++++---- glide2x/cvg/init/info.c | 24 +++++-- glide2x/cvg/init/parse.c | 85 ++++++++++++++++------- glide2x/cvg/init/sli.c | 31 +++++---- glide2x/cvg/init/sst1init.c | 79 +++++++++++---------- glide2x/cvg/init/util.c | 6 +- glide2x/cvg/init/video.c | 103 ++++++++++++++++------------ glide2x/sst1/init/init96/init96.c | 42 +++++++----- glide2x/sst1/init/init96/initmcrx.c | 15 ++-- glide2x/sst1/init/initvg/gdebug.c | 28 +++++--- glide2x/sst1/init/initvg/info.c | 47 ++++++------- glide2x/sst1/init/initvg/parse.c | 94 ++++++++++++++++++------- glide2x/sst1/init/initvg/sli.c | 36 ++++++---- glide2x/sst1/init/initvg/sst1init.c | 60 ++++++++-------- glide2x/sst1/init/initvg/sst1init.h | 4 +- glide2x/sst1/init/initvg/video.c | 93 ++++++++++++++----------- 16 files changed, 466 insertions(+), 313 deletions(-) diff --git a/glide2x/cvg/init/gdebug.c b/glide2x/cvg/init/gdebug.c index ad87581..ca02fd0 100644 --- a/glide2x/cvg/init/gdebug.c +++ b/glide2x/cvg/init/gdebug.c @@ -104,20 +104,26 @@ static const char *setRange(const char *buf, int val) { int r0,r1,pos=0; - sscanf(buf,"%i%n",&r0,&pos); // parse the first integer - if (buf[pos]=='-' || buf[pos]==':') { // if there's a second - buf += pos+1; - sscanf(buf,"%i%n",&r1,&pos); // then parse it + if (sscanf(buf,"%i%n",&r0,&pos) >= 1) // parse the first integer + { + if (buf[pos]=='-' || buf[pos]==':') { // if there's a second + buf += pos+1; + if (sscanf(buf,"%i%n",&r1,&pos) < 1) // then parse it + { + r1 = r0; + pos = 0; + } + } + else + r1 = r0; + + if (r0 < 0) r0 = 0; // sanity checks + if (r1 >= GDBG_MAX_LEVELS) r1 = GDBG_MAX_LEVELS-1; + if (r1 < r0) r1 = r0; + + while (r0 <= r1) // now set the debuglevel levels + gdbg_debuglevel[r0++] = val; } - else - r1 = r0; - - if (r0 < 0) r0 = 0; // sanity checks - if (r1 >= GDBG_MAX_LEVELS) r1 = GDBG_MAX_LEVELS-1; - if (r1 < r0) r1 = r0; - - while (r0 <= r1) // now set the debuglevel levels - gdbg_debuglevel[r0++] = val; return buf + pos; // and return rest of string } diff --git a/glide2x/cvg/init/info.c b/glide2x/cvg/init/info.c index 4e314b0..0a5dab5 100644 --- a/glide2x/cvg/init/info.c +++ b/glide2x/cvg/init/info.c @@ -234,7 +234,11 @@ getTmuConfigData(FxU32 *sstbase, sst1DeviceInfoStruct *info) ISET(SST_TREX(sst,2)->trexInit1, info->tmuInit1[2]); if(GETENV(("SSTV2_TMUCFG"))) - SSCANF(GETENV(("SSTV2_TMUCFG")), "%ld", &info->tmuConfig); + { + FxU32 u; + if (SSCANF(GETENV(("SSTV2_TMUCFG")), "%u", &u) == 1) + info->tmuConfig = u; + } return(FXTRUE); } @@ -504,13 +508,15 @@ fbiMemSizeDone: FX_EXPORT FxBool FX_CSTYLE sst1InitGetFbiInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info) { + FxU32 u; SstRegs *sst = (SstRegs *) sstbase; info->fbiMemSize = fbiMemSize(sstbase); /* Detect board identification and memory speed */ - if(GETENV(("SSTV2_FBICFG"))) - SSCANF(GETENV(("SSTV2_FBICFG")), "%ld", &info->fbiConfig); + if(GETENV(("SSTV2_FBICFG")) && + (SSCANF(GETENV(("SSTV2_FBICFG")), "%u", &u) == 1)) + info->fbiConfig = u; else info->fbiConfig = (IGET(sst->fbiInit3) & SST_FBI_MEM_TYPE) >> SST_FBI_MEM_TYPE_SHIFT; @@ -551,6 +557,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitGetDeviceInfo(FxU32 *sstbase, sst1DeviceInfoS */ FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info) { + FxU32 u; + if(!sstbase) return(FXFALSE); @@ -561,13 +569,15 @@ FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info) /* fill device info struct with sane values... */ INIT_PRINTF(("sst1DeviceInfo: Filling info Struct with default values...\n")); - if(GETENV(("SSTV2_FBICFG"))) - SSCANF(GETENV(("SSTV2_FBICFG")), "%ld", &info->fbiConfig); + if(GETENV(("SSTV2_FBICFG")) && + (SSCANF(GETENV(("SSTV2_FBICFG")), "%u", &u) == 1)) + info->fbiConfig = u; else info->fbiConfig = 0x0; - if(GETENV(("SSTV2_TMUCFG"))) - SSCANF(GETENV(("SSTV2_TMUCFG")), "%ld", &info->tmuConfig); + if(GETENV(("SSTV2_TMUCFG")) && + (SSCANF(GETENV(("SSTV2_TMUCFG")), "%u", &u) == 1)) + info->tmuConfig = u; else info->tmuConfig = 0x0; diff --git a/glide2x/cvg/init/parse.c b/glide2x/cvg/init/parse.c index 2ff8c62..bba69e6 100644 --- a/glide2x/cvg/init/parse.c +++ b/glide2x/cvg/init/parse.c @@ -46,16 +46,22 @@ static int sst1InitFgets(char *, FILE *); static int sst1InitFgetc(FILE *); -static int sst1InitParseFieldDac(char *); static int sst1InitParseFieldCfg(char *); +static void sst1InitToLower(char *string); +#if TEST || (!defined(INIT_LINUX) && !defined(DIRECTX)) +static int sst1InitParseFieldDac(char *); static int sst1InitParseDacRdWrString(char *, sst1InitDacStruct *); static int sst1InitParseDacRdWr(char *, sst1InitDacRdWrStruct *); static int sst1InitParseSetVideoString(char *, sst1InitDacStruct *); static int sst1InitParseSetMemClkString(char *, sst1InitDacStruct *); static int sst1InitParseSetVideoModeString(char *, sst1InitDacStruct *); -static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *); -static void sst1InitToLower(char *string); +#endif +#if !defined(INIT_LINUX) && !defined(DIRECTX) && __DOS32__ static void sst1InitFixFilename(char *dst, char *src); +#endif +#if TEST +static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *); +#endif static FxBool checkedFileP = FXFALSE; @@ -277,7 +283,6 @@ __errExit: */ FX_ENTRY FxBool FX_CALL sst1InitVoodooFile() { static FxBool retVal = FXFALSE; - int inCfg, inDac; FILE *file = 0; char buffer[1024], filename[256]; char *tmpPtr; @@ -425,6 +430,7 @@ static void foo(int argc, char **argv) } #endif +#if !defined(INIT_LINUX) && !defined(DIRECTX) && __DOS32__ static void sst1InitFixFilename(char *dst, char *src) { while(*src) { @@ -435,7 +441,7 @@ static void sst1InitFixFilename(char *dst, char *src) } *dst = 0; } - +#endif static int sst1InitFgets(char *string, FILE *stream) { @@ -549,6 +555,7 @@ static int sst1InitParseFieldCfg(char *string) return(1); } +#if TEST || (!defined(INIT_LINUX) && !defined(DIRECTX)) static int sst1InitParseFieldDac(char *string) { char *dacFieldReference, *dacFieldValue; @@ -659,6 +666,7 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) { char *addr, *data, *mask, *addrDataCmd; char stringCpy[2048]; + int i1, i2, i3; strcpy(stringCpy, string); @@ -686,8 +694,12 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) return(0); data[strlen(data)-1] = '\0'; dacRdWrPtr->type = DACRDWR_TYPE_WR; - SSCANF(addr, "%i", &dacRdWrPtr->addr); - SSCANF(data, "%i", &dacRdWrPtr->data); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + if (SSCANF(data, "%i", &i2) != 1) + return(0); + dacRdWrPtr->addr = i1; + dacRdWrPtr->data = i2; } else if(!strcmp(stringCpy, "dacwrpop")) { if((addr = strtok(addrDataCmd, ",")) == NULL) return(0); @@ -699,9 +711,15 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) return(0); data[strlen(data)-1] = 0; dacRdWrPtr->type = DACRDWR_TYPE_WRMOD_POP; - SSCANF(addr, "%i", &dacRdWrPtr->addr); - SSCANF(mask, "%i", &dacRdWrPtr->mask); - SSCANF(data, "%i", &dacRdWrPtr->data); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + if (SSCANF(mask, "%i", &i2) != 1) + return(0); + if (SSCANF(data, "%i", &i3) != 1) + return(0); + dacRdWrPtr->addr = i1; + dacRdWrPtr->mask = i2; + dacRdWrPtr->data = i3; } else if(!strcmp(stringCpy, "dacrdwr")) { if((addr = strtok(addrDataCmd, ",")) == NULL) return(0); @@ -713,15 +731,23 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) return(0); data[strlen(data)-1] = 0; dacRdWrPtr->type = DACRDWR_TYPE_RDMODWR; - SSCANF(addr, "%i", &dacRdWrPtr->addr); - SSCANF(mask, "%i", &dacRdWrPtr->mask); - SSCANF(data, "%i", &dacRdWrPtr->data); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + if (SSCANF(mask, "%i", &i2) != 1) + return(0); + if (SSCANF(data, "%i", &i3) != 1) + return(0); + dacRdWrPtr->addr = i1; + dacRdWrPtr->mask = i2; + dacRdWrPtr->data = i3; } else if(!strcmp(stringCpy, "dacrd")) { if((addr = strtok(addrDataCmd, ",")) == NULL) return(0); if(addr[strlen(addr)-1] == ')') { dacRdWrPtr->type = DACRDWR_TYPE_RDNOCHECK; - SSCANF(addr, "%i", &dacRdWrPtr->addr); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + dacRdWrPtr->addr = i1; } else { dacRdWrPtr->type = DACRDWR_TYPE_RDCHECK; if((data = strtok(NULL, ",")) == NULL) @@ -729,15 +755,21 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) if(data[strlen(data)-1] != ')') return(0); data[strlen(data)-1] = 0; - SSCANF(addr, "%i", &dacRdWrPtr->addr); - SSCANF(data, "%i", &dacRdWrPtr->data); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + if (SSCANF(data, "%i", &i2) != 1) + return(0); + dacRdWrPtr->addr = i1; + dacRdWrPtr->data = i2; } } else if(!strcmp(stringCpy, "dacrdpush")) { if((addr = strtok(addrDataCmd, ",")) == NULL) return(0); if(addr[strlen(addr)-1] == ')') { dacRdWrPtr->type = DACRDWR_TYPE_RDPUSH; - SSCANF(addr, "%i", &dacRdWrPtr->addr); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + dacRdWrPtr->addr = i1; } else return(0); } else { @@ -807,19 +839,23 @@ static int sst1InitParseSetVideoString(char *string, sst1InitDacStruct *dacBase) } dacSetVideoPtr->nextSetVideo = NULL; /* Width */ - SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->width); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->width) != 1) + return(0); /* Height */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) return(0); - SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->height); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->height) != 1) + return(0); /* Refresh */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) return(0); - SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->refresh); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->refresh) != 1) + return(0); /* video16BPP */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) return(0); - SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->video16BPP); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->video16BPP) != 1) + return(0); /* First DacRdWr */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) return(0); @@ -881,7 +917,8 @@ static int sst1InitParseSetMemClkString(char *string, } dacSetMemClkPtr->nextSetMemClk = NULL; /* Frequency */ - SSCANF(dacRdWrCmd, "%i", &dacSetMemClkPtr->frequency); + if (SSCANF(dacRdWrCmd, "%i", &dacSetMemClkPtr->frequency) != 1) + return(0); /* First DacRdWr */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) @@ -944,7 +981,8 @@ static int sst1InitParseSetVideoModeString(char *string, } dacSetVideoModePtr->nextSetVideoMode = NULL; /* video16BPP */ - SSCANF(dacRdWrCmd, "%i", &dacSetVideoModePtr->video16BPP); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoModePtr->video16BPP) != 1) + return(0); /* First DacRdWr */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) @@ -972,6 +1010,7 @@ static int sst1InitParseSetVideoModeString(char *string, } return(1); } +#endif /* !defined(INIT_LINUX) && !defined(DIRECTX) */ static void sst1InitToLower(char *string) { diff --git a/glide2x/cvg/init/sli.c b/glide2x/cvg/init/sli.c index 0335acd..18e8b72 100644 --- a/glide2x/cvg/init/sli.c +++ b/glide2x/cvg/init/sli.c @@ -64,6 +64,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1) FxU32 videoWindowActive = 0x1; FxU32 videoWindowActiveDrag = 0xf; sst1DeviceInfoStruct *sst1M, *sst1S; + int i; if(sst1InitCheckBoard(sstbase1) == FXFALSE) return(FXFALSE); @@ -237,12 +238,15 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1) slaveVOutClkDel = 0; slavePVOutClkDel = 0; - if(GETENV(("SSTV2_SLIS_VOUT_CLKDEL"))) - SSCANF(GETENV(("SSTV2_SLIS_VOUT_CLKDEL")), "%ld", &slaveVOutClkDel); - if(GETENV(("SSTV2_SLIS_PVOUT_CLKDEL"))) - SSCANF(GETENV(("SSTV2_SLIS_PVOUT_CLKDEL")), "%ld", &slavePVOutClkDel); - if(GETENV(("SSTV2_SLIS_VIN_CLKDEL"))) - SSCANF(GETENV(("SSTV2_SLIS_VIN_CLKDEL")), "%ld", &slaveVInClkDel); + if(GETENV(("SSTV2_SLIS_VOUT_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_SLIS_VOUT_CLKDEL")), "%i", &i) == 1)) + slaveVOutClkDel = i; + if(GETENV(("SSTV2_SLIS_PVOUT_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_SLIS_PVOUT_CLKDEL")), "%i", &i) == 1)) + slavePVOutClkDel = i; + if(GETENV(("SSTV2_SLIS_VIN_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_SLIS_VIN_CLKDEL")), "%i", &i) == 1)) + slaveVInClkDel = i; INIT_PRINTF(("sst1InitSli(): slaveVinClkdel=0x%x, slaveVOutClkDel=0x%x, slavePVOutClkDel=0x%x\n", slaveVInClkDel, slaveVOutClkDel, slavePVOutClkDel)); if(sst1CurrentBoard->fbiVideo16BPP) @@ -386,12 +390,15 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1) masterVInClkDel = 3; masterVOutClkDel = 2; masterPVOutClkDel = 0; - if(GETENV(("SSTV2_SLIM_VOUT_CLKDEL"))) - SSCANF(GETENV(("SSTV2_SLIM_VOUT_CLKDEL")), "%ld", &masterVOutClkDel); - if(GETENV(("SSTV2_SLIM_PVOUT_CLKDEL"))) - SSCANF(GETENV(("SSTV2_SLIM_PVOUT_CLKDEL")), "%ld", &masterPVOutClkDel); - if(GETENV(("SSTV2_SLIM_VIN_CLKDEL"))) - SSCANF(GETENV(("SSTV2_SLIM_VIN_CLKDEL")), "%ld", &masterVInClkDel); + if(GETENV(("SSTV2_SLIM_VOUT_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_SLIM_VOUT_CLKDEL")), "%i", &i) == 1)) + masterVOutClkDel = i; + if(GETENV(("SSTV2_SLIM_PVOUT_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_SLIM_PVOUT_CLKDEL")), "%i", &i) == 1)) + masterPVOutClkDel = i; + if(GETENV(("SSTV2_SLIM_VIN_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_SLIM_VIN_CLKDEL")), "%i", &i) == 1)) + masterVInClkDel = i; INIT_PRINTF(("sst1InitSli(): masterVinClkdel=0x%x, masterVOutClkDel=0x%x, masterPVOutClkDel=0x%x\n", masterVInClkDel, masterVOutClkDel, masterPVOutClkDel)); if(sst1CurrentBoard->fbiVideo16BPP) diff --git a/glide2x/cvg/init/sst1init.c b/glide2x/cvg/init/sst1init.c index 11f47e4..8b8e59b 100644 --- a/glide2x/cvg/init/sst1init.c +++ b/glide2x/cvg/init/sst1init.c @@ -198,9 +198,11 @@ FX_EXPORT FxU32 * FX_CSTYLE sst1InitMapBoardDirect(FxU32 BoardNumber, FxU32 *sstbase; FxU32 j, n; FxU32 sstv2_noremap = 0; + int i; - if( GETENV( ("SSTV2_DEVICEID") ) ) - SSCANF(GETENV(("SSTV2_DEVICEID")), "%ld", &deviceID); + if( GETENV( ("SSTV2_DEVICEID") ) && + (SSCANF(GETENV(("SSTV2_DEVICEID")), "%i", &i) == 1) ) + deviceID = i; else deviceID = 0x0002; @@ -226,11 +228,11 @@ FX_EXPORT FxU32 * FX_CSTYLE sst1InitMapBoardDirect(FxU32 BoardNumber, // Find "voodoo2.ini" file if it exists... sst1InitUseVoodooFile = sst1InitVoodooFile(); - if( GETENV( ("SSTV2_NOREMAP") ) ) { - SSCANF(GETENV(("SSTV2_NOREMAP")), "%ld", &sstv2_noremap); - } else { + if( GETENV( ("SSTV2_NOREMAP") ) && + (SSCANF(GETENV(("SSTV2_NOREMAP")), "%i", &i) == 1) ) + sstv2_noremap = i; + else sstv2_noremap = 0; - } #if !macintosh && !__linux__ if (!sstv2_noremap) { fxremap(); /* remap single board SLI */ @@ -421,6 +423,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase) FxU32 ft_clkdel, tf0_clkdel, tf1_clkdel, tf2_clkdel; sst1ClkTimingStruct sstGrxClk; SstRegs *sst = (SstRegs *) sstbase; + int i; if(!sst) return(FXFALSE); @@ -455,17 +458,19 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase) sst1InitReturnStatus(sstbase); // Adjust Trex-to-Fbi FIFO - if(GETENV(("SSTV2_TF_FIFO_THRESH"))) - SSCANF(GETENV(("SSTV2_TF_FIFO_THRESH")), "%ld", &tf_fifo_thresh); + if(GETENV(("SSTV2_TF_FIFO_THRESH")) && + (SSCANF(GETENV(("SSTV2_TF_FIFO_THRESH")), "%i", &i) == 1) ) + tf_fifo_thresh = i; else tf_fifo_thresh = 0x8; INIT_PRINTF(("sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x%x...\n", tf_fifo_thresh)); - // Set ft_clkdel for 16 MHz bringup - ft_clkdel = 0x8; // Okay for 16 MHz startup... - if(GETENV(("SSTV2_PFT_CLKDEL"))) - SSCANF(GETENV(("SSTV2_PFT_CLKDEL")), "%ld", &ft_clkdel); + if(GETENV(("SSTV2_PFT_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_PFT_CLKDEL")), "%i", &i) == 1) ) + ft_clkdel = i; + else + ft_clkdel = 0x8; // Okay for 16 MHz startup... INIT_PRINTF(("sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x%x...\n", ft_clkdel)); // SST_FBIINIT3_DEFAULT is set to disable texture mapping, so if @@ -528,24 +533,24 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase) } // set TREX0 init values - if(GETENV(("SSTV2_TREX0INIT0"))) { + if(GETENV(("SSTV2_TREX0INIT0")) && + (SSCANF(GETENV(("SSTV2_TREX0INIT0")), "%i", &i) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX0INIT0 environment variable\n")); - SSCANF(GETENV(("SSTV2_TREX0INIT0")), "%ld", - &sst1CurrentBoard->tmuInit0[0]); + sst1CurrentBoard->tmuInit0[0] = i; } else sst1CurrentBoard->tmuInit0[0] = SST_TREX0INIT0_DEFAULT; INIT_PRINTF(("sst1InitRegisters(): Storing TREX0INIT0=0x%x\n", sst1CurrentBoard->tmuInit0[0])); - if(GETENV(("SSTV2_TREX0INIT1"))) { - + if(GETENV(("SSTV2_TREX0INIT1")) && + (SSCANF(GETENV(("SSTV2_TREX0INIT1")), "%i", &i) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX0INIT1 environment variable\n")); - SSCANF(GETENV(("SSTV2_TREX0INIT1")), "%ld", - &sst1CurrentBoard->tmuInit1[0]); + sst1CurrentBoard->tmuInit1[0] = i; } else sst1CurrentBoard->tmuInit1[0] = SST_TREX0INIT1_DEFAULT; - if(GETENV(("SSTV2_PTF0_CLKDEL"))) { - SSCANF(GETENV(("SSTV2_PTF0_CLKDEL")), "%ld", &tf0_clkdel); + + if(GETENV(("SSTV2_PTF0_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_PTF0_CLKDEL")), "%i", &tf0_clkdel) == 1)) { sst1CurrentBoard->tmuInit1[0] = (sst1CurrentBoard->tmuInit1[0] & ~SST_TEX_TF_CLK_DEL_ADJ) | (tf0_clkdel<tmuInit1[0])); // set TREX1 init values - if(GETENV(("SSTV2_TREX1INIT0"))) { + if(GETENV(("SSTV2_TREX1INIT0")) && + (SSCANF(GETENV(("SSTV2_TREX1INIT0")), "%i", &i) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX1INIT0 environment variable\n")); - SSCANF(GETENV(("SSTV2_TREX1INIT0")), "%ld", - &sst1CurrentBoard->tmuInit0[1]); + sst1CurrentBoard->tmuInit0[1] = i; } else sst1CurrentBoard->tmuInit0[1] = SST_TREX1INIT0_DEFAULT; INIT_PRINTF(("sst1InitRegisters(): Storing TREX1INIT0=0x%x\n", sst1CurrentBoard->tmuInit0[1])); - if(GETENV(("SSTV2_TREX1INIT1"))) { + if(GETENV(("SSTV2_TREX1INIT1")) && + (SSCANF(GETENV(("SSTV2_TREX1INIT1")), "%i", &i) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX1INIT1 environment variable\n")); - SSCANF(GETENV(("SSTV2_TREX1INIT1")), "%ld", - &sst1CurrentBoard->tmuInit1[1]); + sst1CurrentBoard->tmuInit1[1] = i; } else sst1CurrentBoard->tmuInit1[1] = SST_TREX1INIT1_DEFAULT; - if(GETENV(("SSTV2_PTF1_CLKDEL"))) { - SSCANF(GETENV(("SSTV2_PTF1_CLKDEL")), "%ld", &tf1_clkdel); + if(GETENV(("SSTV2_PTF1_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_PTF1_CLKDEL")), "%i", &tf1_clkdel) == 1) ) { sst1CurrentBoard->tmuInit1[1] = (sst1CurrentBoard->tmuInit1[1] & ~SST_TEX_TF_CLK_DEL_ADJ) | (tf1_clkdel<tmuInit0[2]); + sst1CurrentBoard->tmuInit0[2] = i; } else sst1CurrentBoard->tmuInit0[2] = SST_TREX2INIT0_DEFAULT; INIT_PRINTF(("sst1InitRegisters(): Storing TREX2INIT0=0x%x\n", sst1CurrentBoard->tmuInit0[2])); - if(GETENV(("SSTV2_TREX2INIT1"))) { + if(GETENV(("SSTV2_TREX2INIT1")) && + (SSCANF(GETENV(("SSTV2_TREX2INIT1")), "%i", &i) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX2INIT1 environment variable\n")); - SSCANF(GETENV(("SSTV2_TREX2INIT1")), "%ld", - &sst1CurrentBoard->tmuInit1[2]); + sst1CurrentBoard->tmuInit1[2] = i; } else sst1CurrentBoard->tmuInit1[2] = SST_TREX2INIT1_DEFAULT; - if(GETENV(("SSTV2_PTF2_CLKDEL"))) { - SSCANF(GETENV(("SSTV2_PTF2_CLKDEL")), "%ld", &tf2_clkdel); + if(GETENV(("SSTV2_PTF2_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_PTF2_CLKDEL")), "%i", &tf2_clkdel) == 1) ) { sst1CurrentBoard->tmuInit1[2] = (sst1CurrentBoard->tmuInit1[2] & ~SST_TEX_TF_CLK_DEL_ADJ) | (tf2_clkdel<fbiInit1, IGET(sst->fbiInit1) | SST_VIDEO_RESET); // Setup SST video timing registers - if(GETENV(("SSTV2_HSYNC"))) { - SSCANF(GETENV(("SSTV2_HSYNC")), "%ld", &vtmp); + if(GETENV(("SSTV2_HSYNC")) && + (SSCANF(GETENV(("SSTV2_HSYNC")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using SST_HSYNC=0x%x\n", vtmp)); ISET(sst->hSync, vtmp); } else ISET(sst->hSync, ((sstVideoRez->hSyncOff << SST_VIDEO_HSYNC_OFF_SHIFT) | (sstVideoRez->hSyncOn << SST_VIDEO_HSYNC_ON_SHIFT))); - if(GETENV(("SSTV2_VSYNC"))) { - SSCANF(GETENV(("SSTV2_VSYNC")), "%ld", &vtmp); + if(GETENV(("SSTV2_VSYNC")) && + (SSCANF(GETENV(("SSTV2_VSYNC")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using SST_VSYNC=0x%x\n", vtmp)); ISET(sst->vSync, vtmp); } else ISET(sst->vSync, ((sstVideoRez->vSyncOff << SST_VIDEO_VSYNC_OFF_SHIFT) | (sstVideoRez->vSyncOn << SST_VIDEO_VSYNC_ON_SHIFT))); - if(GETENV(("SSTV2_BACKPORCH"))) { - SSCANF(GETENV(("SSTV2_BACKPORCH")), "%ld", &vtmp); + if(GETENV(("SSTV2_BACKPORCH")) && + (SSCANF(GETENV(("SSTV2_BACKPORCH")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using SST_BACKPORCH=0x%x\n", vtmp)); ISET(sst->backPorch, vtmp); } else ISET(sst->backPorch, ((sstVideoRez->vBackPorch << SST_VIDEO_VBACKPORCH_SHIFT) | (sstVideoRez->hBackPorch << SST_VIDEO_HBACKPORCH_SHIFT))); - if(GETENV(("SSTV2_DIMENSIONS"))) { - SSCANF(GETENV(("SSTV2_DIMENSIONS")), "%ld", &vtmp); + if(GETENV(("SSTV2_DIMENSIONS")) && + (SSCANF(GETENV(("SSTV2_DIMENSIONS")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using SST_DIMENSIONS=0x%x\n", vtmp)); sstVideoRez->yDimension = (vtmp >> SST_VIDEO_YDIM_SHIFT) & 0x3ff; sstVideoRez->xDimension = vtmp & 0x3ff; @@ -248,13 +251,13 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase, ISET(sst->videoDimensions, ((sstVideoRez->yDimension << SST_VIDEO_YDIM_SHIFT) | ((sstVideoRez->xDimension-1) << SST_VIDEO_XDIM_SHIFT))); - if(GETENV(("SSTV2_MEMOFFSET"))) { - SSCANF(GETENV(("SSTV2_MEMOFFSET")), "%ld", &vtmp); + if(GETENV(("SSTV2_MEMOFFSET")) && + (SSCANF(GETENV(("SSTV2_MEMOFFSET")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using video memOffset=0x%x\n", vtmp)); sstVideoRez->memOffset = vtmp; } - if(GETENV(("SSTV2_TILESINX"))) { - SSCANF(GETENV(("SSTV2_TILESINX")), "%ld", &vtmp); + if(GETENV(("SSTV2_TILESINX")) && + (SSCANF(GETENV(("SSTV2_TILESINX")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using video tilesInX=0x%x\n", vtmp)); sstVideoRez->tilesInX = vtmp; } @@ -315,14 +318,17 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase, sst1InitIdleFBINoNOP(sstbase); memFifoLwm = 23; - if(GETENV(("SSTV2_MEMFIFO_LWM"))) - SSCANF(GETENV(("SSTV2_MEMFIFO_LWM")), "%ld", &memFifoLwm); + if(GETENV(("SSTV2_MEMFIFO_LWM")) && + (SSCANF(GETENV(("SSTV2_MEMFIFO_LWM")), "%i", &vtmp) == 1)) + memFifoLwm = vtmp; memFifoHwm = 54; - if(GETENV(("SSTV2_MEMFIFO_HWM"))) - SSCANF(GETENV(("SSTV2_MEMFIFO_HWM")), "%ld", &memFifoHwm); + if(GETENV(("SSTV2_MEMFIFO_HWM")) && + (SSCANF(GETENV(("SSTV2_MEMFIFO_HWM")), "%i", &vtmp) == 1)) + memFifoHwm = vtmp; pciFifoLwm = 13; - if(GETENV(("SSTV2_PCIFIFO_LWM"))) - SSCANF(GETENV(("SSTV2_PCIFIFO_LWM")), "%ld", &pciFifoLwm); + if(GETENV(("SSTV2_PCIFIFO_LWM")) && + (SSCANF(GETENV(("SSTV2_PCIFIFO_LWM")), "%i", &vtmp) == 1)) + pciFifoLwm = vtmp; INIT_PRINTF(("sst1InitVideo(): pciFifoLwm:%d memFifoLwm:%d memFifoHwm:%d\n", pciFifoLwm, memFifoLwm, memFifoHwm)); @@ -379,8 +385,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase, memFifoEntries)); return(FXFALSE); } - if(GETENV(("SSTV2_MEMFIFO_ENTRIES"))) - SSCANF(GETENV(("SSTV2_MEMFIFO_ENTRIES")), "%d", &memFifoEntries); + if(GETENV(("SSTV2_MEMFIFO_ENTRIES")) && + (SSCANF(GETENV(("SSTV2_MEMFIFO_ENTRIES")), "%i", &vtmp) == 1)) + memFifoEntries = vtmp; INIT_PRINTF(("sst1InitVideo(): Enabling Memory FIFO (Entries=%d)...\n", 65536 - (memFifoEntries << 5))); @@ -397,12 +404,14 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase, } vInClkDel = 1; - if(GETENV(("SSTV2_VIN_CLKDEL"))) - SSCANF(GETENV(("SSTV2_VIN_CLKDEL")), "%ld", &vInClkDel); + if(GETENV(("SSTV2_VIN_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_VIN_CLKDEL")), "%i", &vtmp) == 1)) + vInClkDel = vtmp; vOutClkDel = 0; - if(GETENV(("SSTV2_VOUT_CLKDEL"))) - SSCANF(GETENV(("SSTV2_VOUT_CLKDEL")), "%ld", &vOutClkDel); + if(GETENV(("SSTV2_VOUT_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_VOUT_CLKDEL")), "%i", &vtmp) == 1)) + vOutClkDel = vtmp; INIT_PRINTF(("sst1InitVideo(): vInClkDel=0x%x vOutClkDel=0x%x\n", @@ -466,11 +475,10 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase, sst1InitIdleFBINoNOP(sstbase); if(!GETENV(("SSTV2_VIDEO_FILTER_DISABLE"))) { ISET(sst->fbiInit1, IGET(sst->fbiInit1) | SST_VIDEO_FILTER_EN); - if(GETENV(("SSTV2_VIDEO_FILTER_THRESHOLD"))) { - SSCANF(GETENV(("SSTV2_VIDEO_FILTER_THRESHOLD")), "%ld", &n); - INIT_PRINTF(("sst1InitVideo(): Setting Video Filtering Treshold to 0x%x...\n", n)); - - ISET(sst->videoFilterRgbThreshold, n); + if(GETENV(("SSTV2_VIDEO_FILTER_THRESHOLD")) && + (SSCANF(GETENV(("SSTV2_VIDEO_FILTER_THRESHOLD")), "%i", &vtmp) == 1)) { + INIT_PRINTF(("sst1InitVideo(): Setting Video Filtering Treshold to 0x%x...\n", vtmp)); + ISET(sst->videoFilterRgbThreshold, vtmp); } else // ISET(sst->videoFilterRgbThreshold, 0x180c18); ISET(sst->videoFilterRgbThreshold, 0x080408); @@ -549,10 +557,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase, // Adjust Video Clock #ifndef DIRECTX - if(GETENV(("SSTV2_VIDCLK2X"))) { - float vidClkFreq; - - SSCANF(GETENV(("SSTV2_VIDCLK2X")), "%f", &vidClkFreq); + if(GETENV(("SSTV2_VIDCLK2X")) && + (SSCANF(GETENV(("SSTV2_VIDCLK2X")), "%f", &vidClkFreq) == 1)) { if(sst1InitSetVidClk(sstbase, vidClkFreq) == FXFALSE) return(FXFALSE); } else { @@ -600,8 +606,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase, FxU32 clearColor = 0x0; FxU32 pagesToFill; - if(GETENV(("SSTV2_VIDEO_CLEARCOLOR"))) - SSCANF(GETENV(("SSTV2_VIDEO_CLEARCOLOR")), "%ld", &clearColor); + if(GETENV(("SSTV2_VIDEO_CLEARCOLOR")) && + (SSCANF(GETENV(("SSTV2_VIDEO_CLEARCOLOR")), "%i", &vtmp) == 1)) + clearColor = vtmp; if(sst1CurrentBoard->fbiMemSize == 1) pagesToFill = 256; @@ -1257,8 +1264,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitMonitorDetect(FxU32 *sstbase) // return (FXTRUE); // } - if(GETENV(("SSTV2_MDETECT_CONST"))) { - SSCANF(GETENV(("SSTV2_MDETECT_CONST")), "%ld", &gammaCorrectConstant); + if(GETENV(("SSTV2_MDETECT_CONST")) && + (SSCANF(GETENV(("SSTV2_MDETECT_CONST")), "%i", &j) == 1)) { + gammaCorrectConstant = j; INIT_PRINTF(("sst1InitMonitorDetect(): Using value 0x%x for constant gamma value...\n", gammaCorrectConstant)); } @@ -1327,6 +1335,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSetClkDelays(FxU32 *sstbase) { FxU32 tf0_clkdel, tf1_clkdel, tf2_clkdel, ft_clkdel; SstRegs *sst = (SstRegs *) sstbase; + int i; if(sst1CurrentBoard->fbiBoardID == 0x3) { // Early 4-layer 4220 board -- Runs at 83 MHz by default... @@ -1421,14 +1430,18 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSetClkDelays(FxU32 *sstbase) setDelays: // Override with environment variables - if(GETENV(("SSTV2_FT_CLKDEL"))) - SSCANF(GETENV(("SSTV2_FT_CLKDEL")), "%ld", &ft_clkdel); - if(GETENV(("SSTV2_TF0_CLKDEL"))) - SSCANF(GETENV(("SSTV2_TF0_CLKDEL")), "%ld", &tf0_clkdel); - if(GETENV(("SSTV2_TF1_CLKDEL"))) - SSCANF(GETENV(("SSTV2_TF1_CLKDEL")), "%ld", &tf1_clkdel); - if(GETENV(("SSTV2_TF2_CLKDEL"))) - SSCANF(GETENV(("SSTV2_TF2_CLKDEL")), "%ld", &tf2_clkdel); + if(GETENV(("SSTV2_FT_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_FT_CLKDEL")), "%i", &i) == 1)) + ft_clkdel = i; + if(GETENV(("SSTV2_TF0_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_TF0_CLKDEL")), "%i", &i) == 1)) + tf0_clkdel = i; + if(GETENV(("SSTV2_TF1_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_TF1_CLKDEL")), "%i", &i) == 1)) + tf1_clkdel = i; + if(GETENV(("SSTV2_TF2_CLKDEL")) && + (SSCANF(GETENV(("SSTV2_TF2_CLKDEL")), "%i", &i) == 1)) + tf2_clkdel = i; INIT_PRINTF(("sst1InitSetClkDelays(): Setting FBI-to-TREX clock delay to 0x%x...\n", ft_clkdel)); INIT_PRINTF(("sst1InitSetClkDelays(): Setting TREX#0 TREX-to-FBI clock delay to 0x%x\n", diff --git a/glide2x/sst1/init/init96/init96.c b/glide2x/sst1/init/init96/init96.c index bd0f5a4..70b9957 100644 --- a/glide2x/sst1/init/init96/init96.c +++ b/glide2x/sst1/init/init96/init96.c @@ -168,8 +168,10 @@ static FxU32 numStalls; Init96HALData *curHALData; +#ifdef __DOS32__ static FxU16 oldVidMode; +#endif static FxU32 devNum, @@ -483,9 +485,11 @@ get96(FxU32 *addr) #define GETREGVALFROMENV(val, envStr, constant)\ {\ const char *envVal;\ + unsigned int u; \ val = constant;\ - if ((envVal = myGetenv(envStr)) != NULL) {\ - sscanf(envVal, "%x", &val);\ + if (((envVal = myGetenv(envStr)) != NULL) && \ + (sscanf(envVal, "%x", &u) == 1)) { \ + val = u; \ GDBG_INFO((80,\ "%s: The environment variable %s == 0x%x overloaded a register value\n", \ FN_NAME, envStr, val));\ @@ -932,15 +936,13 @@ init96SetupRendering(InitRegisterDesc *regDesc, GrScreenResolution_t sRes) { FxU32 trexinit0, trexinit1; - if(myGetenv(("SST_TREX0INIT0"))) { - sscanf(myGetenv(("SST_TREX0INIT0")), "%i", &trexinit0); - } else { + if( !myGetenv(("SST_TREX0INIT0")) || + (sscanf(myGetenv(("SST_TREX0INIT0")), "%i", &trexinit0) != 1) ) { trexinit0 = 0x05441; /* TREXINIT0 */ } - if(myGetenv(("SST_TREX0INIT1"))) { - sscanf(myGetenv(("SST_TREX0INIT1")), "%i", &trexinit1); - } else { + if( !myGetenv(("SST_TREX0INIT1")) || + (sscanf(myGetenv(("SST_TREX0INIT1")), "%i", &trexinit1) != 1) ) { trexinit1 = 0x3643c; /* TREXINIT1 */ } @@ -1452,10 +1454,6 @@ INITVG96ENTRY(init96Swap, void , #define FN_NAME "init96Swap" FxU32 status; - static FxBool gotEnv; - static FxBool overrideSwap; - static FxU32 overrideVal; - GDBG_INFO((80, "init96Swap()\n")); /* @@ -1492,6 +1490,11 @@ INITVG96ENTRY(init96Swap, void , sstPtr->swappendCMD = 0x1; + { + static FxBool gotEnv = FXFALSE; + static FxBool overrideSwap; + static FxU32 overrideVal; + if (gotEnv == FXFALSE) { const char *envVal; if ((envVal = myGetenv("SST96_INITSWAPCOUNT")) != NULL) { @@ -1506,6 +1509,7 @@ INITVG96ENTRY(init96Swap, void , if (overrideSwap == FXTRUE) code = overrideVal; + } GDBG_INFO((80, "%s: Sending swapbufferCMD (0x%x) via FIFO callback\n", FN_NAME, code)); @@ -2113,12 +2117,14 @@ init96LoadBufRegs(int nBuffers, InitBufDesc_t *pBufDesc, int xRes, if (myGetenv("SST96_FORCEALIGN")) { FxU32 F, B, T, A; - sscanf(myGetenv("SST96_FORCEALIGN"), "%x,%x,%x,%x", &F, &B, &T, &A); - GDBG_INFO((80, "!!!!!GROSS HACK... forcing values!!!!!\n")); - pFront->bufOffset = F; - pBack->bufOffset = B; - pTriple->bufOffset = T; - pAux->bufOffset = A; + if (sscanf(myGetenv("SST96_FORCEALIGN"), "%x,%x,%x,%x", &F, &B, &T, &A) == 4) + { + GDBG_INFO((80, "!!!!!GROSS HACK... forcing values!!!!!\n")); + pFront->bufOffset = F; + pBack->bufOffset = B; + pTriple->bufOffset = T; + pAux->bufOffset = A; + } } if (pFront) { diff --git a/glide2x/sst1/init/init96/initmcrx.c b/glide2x/sst1/init/init96/initmcrx.c index 533ef1c..4aaec98 100644 --- a/glide2x/sst1/init/init96/initmcrx.c +++ b/glide2x/sst1/init/init96/initmcrx.c @@ -252,7 +252,7 @@ INITMCRXENTRY(initMCRXEnableRegs, FxBool, (InitRegisterDesc *rd)) { #define FN_NAME "initMCRXEnableRegs" FxU32 - tmp; + tmp, u; FxU8 crtcIndex; FxU16 @@ -308,10 +308,9 @@ INITMCRXENTRY(initMCRXEnableRegs, FxBool, (InitRegisterDesc *rd)) GDBG_INFO((80, "%s: Enabling PUMA\n", FN_NAME)); CRTC_GET(0x28, tmp); tmp |= 1; - - envVal = myGetenv("MCRX_28"); - if (envVal) - sscanf(envVal, "%x", &tmp); + if ((envVal = myGetenv("MCRX_28")) && + (sscanf(envVal, "%x", &u) == 1)) + tmp = u; CRTC_SET(0x28, tmp); GDBG_INFO((80, "%s: Restoring Protection\n", FN_NAME)); @@ -559,9 +558,9 @@ INITMCRXENTRY(initMCRXUseTiles, int, (InitRegisterDesc *rd, if (nBuffers == 3) tmp |= 0x08; mcrxHALData.initSwapTiles = initMCRXSwapTiles; - envVal = myGetenv("MRCX_71"); - if (envVal) - sscanf(envVal, "%x", &tmp); + if ((envVal = myGetenv("MRCX_71")) && + (sscanf(envVal, "%x", &i) == 1)) + tmp = i; CRTC_SET(0x70, tmp); /* Reset the current display buffer bits (0-1) */ diff --git a/glide2x/sst1/init/initvg/gdebug.c b/glide2x/sst1/init/initvg/gdebug.c index 77da9fd..8607380 100644 --- a/glide2x/sst1/init/initvg/gdebug.c +++ b/glide2x/sst1/init/initvg/gdebug.c @@ -53,18 +53,26 @@ static char *setRange(char *buf, int val) { int r0,r1,pos=0; - sscanf(buf,"%i%n",&r0,&pos); // parse the first integer - if (buf[pos]=='-' || buf[pos]==':') // if there's a second - sscanf(buf+pos+1,"%i%n",&r1,&pos); // then parse it - else - r1 = r0; + if (sscanf(buf,"%i%n",&r0,&pos) >= 1) // parse the first integer + { + if (buf[pos]=='-' || buf[pos]==':') { // if there's a second + buf += pos+1; + if (sscanf(buf,"%i%n",&r1,&pos) < 1) // then parse it + { + r1 = r0; + pos = 0; + } + } + else + r1 = r0; - if (r0 < 0) r0 = 0; // sanity checks - if (r1 >= GDBG_MAX_LEVELS) r1 = GDBG_MAX_LEVELS-1; - if (r1 < r0) r1 = r0; + if (r0 < 0) r0 = 0; // sanity checks + if (r1 >= GDBG_MAX_LEVELS) r1 = GDBG_MAX_LEVELS-1; + if (r1 < r0) r1 = r0; - while (r0 <= r1) // now set the debuglevel levels - gdbg_debuglevel[r0++] = val; + while (r0 <= r1) // now set the debuglevel levels + gdbg_debuglevel[r0++] = val; + } return buf + pos; // and return rest of string } diff --git a/glide2x/sst1/init/initvg/info.c b/glide2x/sst1/init/initvg/info.c index 03b415a..4bd8955 100644 --- a/glide2x/sst1/init/initvg/info.c +++ b/glide2x/sst1/init/initvg/info.c @@ -37,7 +37,7 @@ static FxBool readAndSum4x4(FxU32 *sstbase, FxU32 x, FxU32 y, - FxU32 *r_sum, FxU32 *g_sum, FxU32 *b_sum) + FxU32 *r_sum, FxU32 *g_sum, FxU32 *b_sum) { FxU32 rd_x, rd_y; FxU32 rd_col = 0; @@ -166,7 +166,7 @@ unDither(FxU32 r_sum, FxU32 g_sum, FxU32 b_sum, FxU32 *result) static FxBool getTmuConfigData(FxU32 *sstbase, sst1DeviceInfoStruct *info) { - int x=0, y=0; + int i, x=0, y=0; FxU32 r_sum, g_sum, b_sum; volatile Sstregs *sst = (Sstregs *) sstbase; @@ -187,8 +187,9 @@ getTmuConfigData(FxU32 *sstbase, sst1DeviceInfoStruct *info) if(unDither(r_sum,g_sum,b_sum,&info->tmuConfig) == FXFALSE) return(FXFALSE); - if(GETENV(("SST_TMUCFG"))) - SSCANF(GETENV(("SST_TMUCFG")), "%i", &info->tmuConfig); + if(GETENV(("SST_TMUCFG")) && + (SSCANF(GETENV(("SST_TMUCFG")), "%i", &i) == 1)) + info->tmuConfig = i; /* reset trex's init registers */ ISET(SST_TREX(sst,0)->trexInit1, info->tmuInit1[0]); @@ -277,7 +278,7 @@ sst1InitGetTmuMemory(FxU32 *sstbase, sst1DeviceInfoStruct *info, FxU32 tmu, if (data == SENSE0) {*TmuMemorySize = 1; return(FXTRUE);} INIT_PRINTF(("sst1InitGetTmuMemory() ERROR: Could not detect memory size.\n")); - return(FXFALSE); + return(FXFALSE); } /*--------------------------------------------------------------------------- @@ -453,9 +454,8 @@ sst1InitGetFbiInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info) info->fbiMemSize = fbiMemSize(sstbase); /* Detect board identification and memory speed */ - if(GETENV(("SST_FBICFG"))) - SSCANF(GETENV(("SST_FBICFG")), "%i", &info->fbiConfig); - else + if(!GETENV(("SST_FBICFG")) || + (SSCANF(GETENV(("SST_FBICFG")), "%i", &info->fbiConfig) != 1)) info->fbiConfig = (IGET(sst->fbiInit3) & SST_FBI_MEM_TYPE) >> SST_FBI_MEM_TYPE_SHIFT; @@ -476,8 +476,7 @@ sst1InitGetFbiInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info) ** been allocated ** */ -FX_EXPORT FxBool FX_CSTYLE sst1InitGetDeviceInfo(FxU32 *sstbase, - sst1DeviceInfoStruct *info) +FX_EXPORT FxBool FX_CSTYLE sst1InitGetDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info) { FxBool retval; @@ -505,14 +504,12 @@ FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info) /* fill device info struct with sane values... */ INIT_PRINTF(("sst1DeviceInfo: Filling info Struct with default values...\n")); - if(GETENV(("SST_FBICFG"))) - SSCANF(GETENV(("SST_FBICFG")), "%i", &info->fbiConfig); - else + if(!GETENV(("SST_FBICFG")) || + (SSCANF(GETENV(("SST_FBICFG")), "%i", &info->fbiConfig) != 1)) info->fbiConfig = 0x0; - if(GETENV(("SST_TMUCFG"))) - SSCANF(GETENV(("SST_TMUCFG")), "%i", &info->tmuConfig); - else + if(!GETENV(("SST_TMUCFG")) || + (SSCANF(GETENV(("SST_TMUCFG")), "%i", &info->tmuConfig) != 1)) info->tmuConfig = 0x0; info->numberTmus = 1; @@ -576,15 +573,15 @@ FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info) iniDac->dacManufacturer, iniDac->dacDevice)); } else { - INIT_PRINTF(("sst1DeviceInfo: Dac Type: ")); - if(info->fbiDacType == SST_FBI_DACTYPE_ATT) - INIT_PRINTF(("AT&T ATT20C409\n")); - else if(info->fbiDacType == SST_FBI_DACTYPE_ICS) - INIT_PRINTF(("ICS ICS5342\n")); - else if(info->fbiDacType == SST_FBI_DACTYPE_TI) - INIT_PRINTF(("TI TVP3409\n")); - else - INIT_PRINTF(("Unknown\n")); + INIT_PRINTF(("sst1DeviceInfo: Dac Type: ")); + if(info->fbiDacType == SST_FBI_DACTYPE_ATT) + INIT_PRINTF(("AT&T ATT20C409\n")); + else if(info->fbiDacType == SST_FBI_DACTYPE_ICS) + INIT_PRINTF(("ICS ICS5342\n")); + else if(info->fbiDacType == SST_FBI_DACTYPE_TI) + INIT_PRINTF(("TI TVP3409\n")); + else + INIT_PRINTF(("Unknown\n")); } INIT_PRINTF(("sst1DeviceInfo: SliDetect:%d\n", info->sstSliDetect)); diff --git a/glide2x/sst1/init/initvg/parse.c b/glide2x/sst1/init/initvg/parse.c index d9f3d62..443b5c0 100644 --- a/glide2x/sst1/init/initvg/parse.c +++ b/glide2x/sst1/init/initvg/parse.c @@ -41,16 +41,22 @@ static int sst1InitFgets(char *, FILE *); static int sst1InitFgetc(FILE *); -static int sst1InitParseFieldDac(char *); static int sst1InitParseFieldCfg(char *); +static void sst1InitToLower(char *string); +#if TEST || (!defined(INIT_LINUX) && defined(__DOS32__)) +static int sst1InitParseFieldDac(char *); static int sst1InitParseDacRdWrString(char *, sst1InitDacStruct *); static int sst1InitParseDacRdWr(char *, sst1InitDacRdWrStruct *); static int sst1InitParseSetVideoString(char *, sst1InitDacStruct *); static int sst1InitParseSetMemClkString(char *, sst1InitDacStruct *); static int sst1InitParseSetVideoModeString(char *, sst1InitDacStruct *); -static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *); -static void sst1InitToLower(char *string); +#endif +#if !defined(INIT_LINUX) && defined(__DOS32__) static void sst1InitFixFilename(char *dst, char *src); +#endif +#if TEST +static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *); +#endif #ifndef INIT_LINUX /* @@ -161,13 +167,11 @@ FX_ENTRY FxBool FX_CALL sst1InitVoodooFile() */ FX_ENTRY FxBool FX_CALL sst1InitVoodooFile() { static FxBool retVal = FXFALSE; - int inCfg, inDac; FILE *file = 0; char buffer[1024], filename[256]; char *tmpPtr; char path[512]; int i; - int helper = (GETENV(("SST_DEBUGDAC"))) ? 1 : 0; if (getenv("VOODOO_FILE")) { /* Override voodoo.ini name */ @@ -227,8 +231,8 @@ __errExit: /* Get the definition of myGetenv for glide builds */ #include -/* void main(int argc, char **argv) */ -static void foo(int argc, char **argv) +#if TEST +void main(int argc, char **argv) { char buffer[2048]; /* buffer for command line inputs */ int inCfg, inDac; @@ -306,7 +310,9 @@ static void foo(int argc, char **argv) } fclose(file); } +#endif +#if !defined(INIT_LINUX) && defined(__DOS32__) static void sst1InitFixFilename(char *dst, char *src) { while(*src) { @@ -317,6 +323,7 @@ static void sst1InitFixFilename(char *dst, char *src) } *dst = 0; } +#endif static int sst1InitFgets(char *string, FILE *stream) { @@ -427,6 +434,7 @@ static int sst1InitParseFieldCfg(char *string) return(1); } +#if TEST || (!defined(INIT_LINUX) && defined(__DOS32__)) static int sst1InitParseFieldDac(char *string) { char *dacFieldReference, *dacFieldValue; @@ -448,7 +456,7 @@ static int sst1InitParseFieldDac(char *string) else dacPtr = dacPtr->nextDac; } - if((dacPtr->nextDac = malloc(sizeof(sst1InitDacStruct))) == NULL) + if((dacPtr->nextDac = malloc(sizeof(sst1InitDacStruct))) == NULL) return(0); dacPtr = dacPtr->nextDac; } @@ -537,6 +545,7 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) { char *addr, *data, *mask, *addrDataCmd; char stringCpy[2048]; + int i1, i2, i3; strcpy(stringCpy, string); @@ -564,8 +573,12 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) return(0); data[strlen(data)-1] = '\0'; dacRdWrPtr->type = DACRDWR_TYPE_WR; - SSCANF(addr, "%i", &dacRdWrPtr->addr); - SSCANF(data, "%i", &dacRdWrPtr->data); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + if (SSCANF(data, "%i", &i2) != 1) + return(0); + dacRdWrPtr->addr = i1; + dacRdWrPtr->data = i2; } else if(!strcmp(stringCpy, "dacwrpop")) { if((addr = strtok(addrDataCmd, ",")) == NULL) return(0); @@ -577,9 +590,15 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) return(0); data[strlen(data)-1] = 0; dacRdWrPtr->type = DACRDWR_TYPE_WRMOD_POP; - SSCANF(addr, "%i", &dacRdWrPtr->addr); - SSCANF(mask, "%i", &dacRdWrPtr->mask); - SSCANF(data, "%i", &dacRdWrPtr->data); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + if (SSCANF(mask, "%i", &i2) != 1) + return(0); + if (SSCANF(data, "%i", &i3) != 1) + return(0); + dacRdWrPtr->addr = i1; + dacRdWrPtr->mask = i2; + dacRdWrPtr->data = i3; } else if(!strcmp(stringCpy, "dacrdwr")) { if((addr = strtok(addrDataCmd, ",")) == NULL) return(0); @@ -591,15 +610,23 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) return(0); data[strlen(data)-1] = 0; dacRdWrPtr->type = DACRDWR_TYPE_RDMODWR; - SSCANF(addr, "%i", &dacRdWrPtr->addr); - SSCANF(mask, "%i", &dacRdWrPtr->mask); - SSCANF(data, "%i", &dacRdWrPtr->data); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + if (SSCANF(mask, "%i", &i2) != 1) + return(0); + if (SSCANF(data, "%i", &i3) != 1) + return(0); + dacRdWrPtr->addr = i1; + dacRdWrPtr->mask = i2; + dacRdWrPtr->data = i3; } else if(!strcmp(stringCpy, "dacrd")) { if((addr = strtok(addrDataCmd, ",")) == NULL) return(0); if(addr[strlen(addr)-1] == ')') { dacRdWrPtr->type = DACRDWR_TYPE_RDNOCHECK; - SSCANF(addr, "%i", &dacRdWrPtr->addr); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + dacRdWrPtr->addr = i1; } else { dacRdWrPtr->type = DACRDWR_TYPE_RDCHECK; if((data = strtok(NULL, ",")) == NULL) @@ -607,15 +634,21 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) if(data[strlen(data)-1] != ')') return(0); data[strlen(data)-1] = 0; - SSCANF(addr, "%i", &dacRdWrPtr->addr); - SSCANF(data, "%i", &dacRdWrPtr->data); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + if (SSCANF(data, "%i", &i2) != 1) + return(0); + dacRdWrPtr->addr = i1; + dacRdWrPtr->data = i2; } } else if(!strcmp(stringCpy, "dacrdpush")) { if((addr = strtok(addrDataCmd, ",")) == NULL) return(0); if(addr[strlen(addr)-1] == ')') { dacRdWrPtr->type = DACRDWR_TYPE_RDPUSH; - SSCANF(addr, "%i", &dacRdWrPtr->addr); + if (SSCANF(addr, "%i", &i1) != 1) + return(0); + dacRdWrPtr->addr = i1; } else return(0); } else { @@ -625,6 +658,7 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr) return(1); } +#if TEST static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *dacRdWrBase, char *prefix) { @@ -649,6 +683,7 @@ static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *dacRdWrBase, dacRdWrPtr = dacRdWrPtr->nextRdWr; } } +#endif /* TEST */ static int sst1InitParseSetVideoString(char *string, sst1InitDacStruct *dacBase) { @@ -683,19 +718,23 @@ static int sst1InitParseSetVideoString(char *string, sst1InitDacStruct *dacBase) } dacSetVideoPtr->nextSetVideo = NULL; /* Width */ - SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->width); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->width) != 1) + return(0); /* Height */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) return(0); - SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->height); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->height) != 1) + return(0); /* Refresh */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) return(0); - SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->refresh); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->refresh) != 1) + return(0); /* video16BPP */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) return(0); - SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->video16BPP); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->video16BPP) != 1) + return(0); /* First DacRdWr */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) return(0); @@ -757,7 +796,8 @@ static int sst1InitParseSetMemClkString(char *string, } dacSetMemClkPtr->nextSetMemClk = NULL; /* Frequency */ - SSCANF(dacRdWrCmd, "%i", &dacSetMemClkPtr->frequency); + if (SSCANF(dacRdWrCmd, "%i", &dacSetMemClkPtr->frequency) != 1) + return(0); /* First DacRdWr */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) @@ -820,7 +860,8 @@ static int sst1InitParseSetVideoModeString(char *string, } dacSetVideoModePtr->nextSetVideoMode = NULL; /* video16BPP */ - SSCANF(dacRdWrCmd, "%i", &dacSetVideoModePtr->video16BPP); + if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoModePtr->video16BPP) != 1) + return(0); /* First DacRdWr */ if((dacRdWrCmd = strtok(NULL, ";")) == NULL) @@ -848,6 +889,7 @@ static int sst1InitParseSetVideoModeString(char *string, } return(1); } +#endif /* TEST || (!defined(INIT_LINUX) && defined(__DOS32__)) */ static void sst1InitToLower(char *string) { diff --git a/glide2x/sst1/init/initvg/sli.c b/glide2x/sst1/init/initvg/sli.c index aaddccc..a11406d 100644 --- a/glide2x/sst1/init/initvg/sli.c +++ b/glide2x/sst1/init/initvg/sli.c @@ -52,6 +52,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1) FxU32 masterPVOutClkDel, slavePVOutClkDel; FxU32 pciFifoLwm, memFifoLwm; FxU32 clkFreqMaster; + int i; /* Check to make sure master and slave are installed properly */ /* Master should have a clock frequency setting of 54 MHz */ @@ -140,12 +141,15 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1) slaveVInClkDel = 2; slaveVOutClkDel = 0; slavePVOutClkDel = 3; - if(GETENV(("SST_SLIS_VOUT_CLKDEL"))) - SSCANF(GETENV(("SST_SLIS_VOUT_CLKDEL")), "%i", &slaveVOutClkDel); - if(GETENV(("SST_SLIS_PVOUT_CLKDEL"))) - SSCANF(GETENV(("SST_SLIS_PVOUT_CLKDEL")), "%i", &slavePVOutClkDel); - if(GETENV(("SST_SLIS_VIN_CLKDEL"))) - SSCANF(GETENV(("SST_SLIS_VIN_CLKDEL")), "%i", &slaveVInClkDel); + if(GETENV(("SST_SLIS_VOUT_CLKDEL")) && + (SSCANF(GETENV(("SST_SLIS_VOUT_CLKDEL")), "%i", &i) == 1)) + slaveVOutClkDel = i; + if(GETENV(("SST_SLIS_PVOUT_CLKDEL")) && + (SSCANF(GETENV(("SST_SLIS_PVOUT_CLKDEL")), "%i", &i) == 1)) + slavePVOutClkDel = i; + if(GETENV(("SST_SLIS_VIN_CLKDEL")) && + (SSCANF(GETENV(("SST_SLIS_VIN_CLKDEL")), "%i", &i) == 1)) + slaveVInClkDel = i; INIT_PRINTF(("sst1InitSli(): slaveVinClkdel=0x%x, slaveVOutClkDel=0x%x, slavePVOutClkDel=0x%x\n", slaveVInClkDel, slaveVOutClkDel, slavePVOutClkDel)); if(sst1CurrentBoard->fbiVideo16BPP) @@ -261,12 +265,15 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1) masterVInClkDel = 2; masterVOutClkDel = 0; masterPVOutClkDel = 3; - if(GETENV(("SST_SLIM_VOUT_CLKDEL"))) - SSCANF(GETENV(("SST_SLIM_VOUT_CLKDEL")), "%i", &masterVOutClkDel); - if(GETENV(("SST_SLIM_PVOUT_CLKDEL"))) - SSCANF(GETENV(("SST_SLIM_PVOUT_CLKDEL")), "%i", &masterPVOutClkDel); - if(GETENV(("SST_SLIM_VIN_CLKDEL"))) - SSCANF(GETENV(("SST_SLIM_VIN_CLKDEL")), "%i", &masterVInClkDel); + if(GETENV(("SST_SLIM_VOUT_CLKDEL")) && + (SSCANF(GETENV(("SST_SLIM_VOUT_CLKDEL")), "%i", &i) == 1)) + masterVOutClkDel = i; + if(GETENV(("SST_SLIM_PVOUT_CLKDEL")) && + (SSCANF(GETENV(("SST_SLIM_PVOUT_CLKDEL")), "%i", &i) == 1)) + masterPVOutClkDel = i; + if(GETENV(("SST_SLIM_VIN_CLKDEL")) && + (SSCANF(GETENV(("SST_SLIM_VIN_CLKDEL")), "%i", &i) == 1)) + masterVInClkDel = i; INIT_PRINTF(("sst1InitSli(): masterVinClkdel=0x%x, masterVOutClkDel=0x%x, masterPVOutClkDel=0x%x\n", masterVInClkDel, masterVOutClkDel, masterPVOutClkDel)); if(sst1CurrentBoard->fbiVideo16BPP) @@ -367,8 +374,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1) /* Clear Screen */ FxU32 clearColor = 0x0; - if(GETENV(("SST_VIDEO_CLEARCOLOR"))) - SSCANF(GETENV(("SST_VIDEO_CLEARCOLOR")), "%i", &clearColor); + if(GETENV(("SST_VIDEO_CLEARCOLOR")) && + (SSCANF(GETENV(("SST_VIDEO_CLEARCOLOR")), "%i", &i) == 1)) + clearColor = i; ISET(sstMaster->c1, clearColor); ISET(sstMaster->c0, clearColor); ISET(sstMaster->zaColor, 0x0); diff --git a/glide2x/sst1/init/initvg/sst1init.c b/glide2x/sst1/init/initvg/sst1init.c index f297754..73823bb 100644 --- a/glide2x/sst1/init/initvg/sst1init.c +++ b/glide2x/sst1/init/initvg/sst1init.c @@ -284,6 +284,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase) FxU32 ft_clk_del, tf0_clk_del, tf1_clk_del, tf2_clk_del; sst1ClkTimingStruct sstGrxClk; volatile Sstregs *sst = (Sstregs *) sstbase; + int i; if(!sst) return(FXFALSE); @@ -319,9 +320,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase) /* Adjust Fbi-to-Trex clock delay value */ /* Adjust Trex-to-Fbi FIFO */ - if(GETENV(("SST_TF_FIFO_THRESH"))) - SSCANF(GETENV(("SST_TF_FIFO_THRESH")), "%i", &tf_fifo_thresh); - else + if(!GETENV(("SST_TF_FIFO_THRESH")) || + (SSCANF(GETENV(("SST_TF_FIFO_THRESH")), "%i", &tf_fifo_thresh) != 1)) tf_fifo_thresh = 0x8; INIT_PRINTF(("sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x%x...\n", tf_fifo_thresh)); @@ -332,8 +332,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase) else /* .6 micron */ ft_clk_del = 0xa; /* Okay for 16 MHz startup... */ - if(GETENV(("SST_PFT_CLK_DEL"))) - SSCANF(GETENV(("SST_PFT_CLK_DEL")), "%i", &ft_clk_del); + if(GETENV(("SST_PFT_CLK_DEL")) && + (SSCANF(GETENV(("SST_PFT_CLK_DEL")), "%i", &i) == 1)) + ft_clk_del = i; INIT_PRINTF(("sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x%x...\n", ft_clk_del)); ISET(sst->fbiInit3, (SST_FBIINIT3_DEFAULT & ~(SST_FT_CLK_DEL_ADJ | SST_TF_FIFO_THRESH)) | @@ -391,24 +392,23 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase) } /* set TREX0 init values */ - if(GETENV(("SST_TREX0INIT0"))) { + if(GETENV(("SST_TREX0INIT0")) && + (SSCANF(GETENV(("SST_TREX0INIT0")), "%i", + &sst1CurrentBoard->tmuInit0[0]) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX0INIT0 environment variable\n")); - SSCANF(GETENV(("SST_TREX0INIT0")), "%i", - &sst1CurrentBoard->tmuInit0[0]); } else sst1CurrentBoard->tmuInit0[0] = SST_TREX0INIT0_DEFAULT; INIT_PRINTF(("sst1InitRegisters(): Storing TREX0INIT0=0x%x\n", sst1CurrentBoard->tmuInit0[0])); - if(GETENV(("SST_TREX0INIT1"))) { - + if(GETENV(("SST_TREX0INIT1")) && + (SSCANF(GETENV(("SST_TREX0INIT1")), "%i", + &sst1CurrentBoard->tmuInit1[0]) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX0INIT1 environment variable\n")); - SSCANF(GETENV(("SST_TREX0INIT1")), "%i", - &sst1CurrentBoard->tmuInit1[0]); } else sst1CurrentBoard->tmuInit1[0] = SST_TREX0INIT1_DEFAULT; - if(GETENV(("SST_PTF0_CLK_DEL"))) { - SSCANF(GETENV(("SST_PTF0_CLK_DEL")), "%i", &tf0_clk_del); + if(GETENV(("SST_PTF0_CLK_DEL")) && + (SSCANF(GETENV(("SST_PTF0_CLK_DEL")), "%i", &tf0_clk_del) == 1) ) { sst1CurrentBoard->tmuInit1[0] = (sst1CurrentBoard->tmuInit1[0] & ~SST_TEX_TF_CLK_DEL_ADJ) | (tf0_clk_del<tmuInit0[1]) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX1INIT0 environment variable\n")); - SSCANF(GETENV(("SST_TREX1INIT0")), "%i", - &sst1CurrentBoard->tmuInit0[1]); } else sst1CurrentBoard->tmuInit0[1] = SST_TREX1INIT0_DEFAULT; INIT_PRINTF(("sst1InitRegisters(): Storing TREX1INIT0=0x%x\n", sst1CurrentBoard->tmuInit0[1])); - if(GETENV(("SST_TREX1INIT1"))) { + if(GETENV(("SST_TREX1INIT1")) && + (SSCANF(GETENV(("SST_TREX1INIT1")), "%i", + &sst1CurrentBoard->tmuInit1[1]) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX1INIT1 environment variable\n")); - SSCANF(GETENV(("SST_TREX1INIT1")), "%i", - &sst1CurrentBoard->tmuInit1[1]); } else sst1CurrentBoard->tmuInit1[1] = SST_TREX1INIT1_DEFAULT; - if(GETENV(("SST_PTF1_CLK_DEL"))) { - SSCANF(GETENV(("SST_PTF1_CLK_DEL")), "%i", &tf1_clk_del); + if(GETENV(("SST_PTF1_CLK_DEL")) && + (SSCANF(GETENV(("SST_PTF1_CLK_DEL")), "%i", &tf1_clk_del) == 1) ) { sst1CurrentBoard->tmuInit1[1] = (sst1CurrentBoard->tmuInit1[1] & ~SST_TEX_TF_CLK_DEL_ADJ) | (tf1_clk_del<tmuInit0[2]) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX2INIT0 environment variable\n")); - SSCANF(GETENV(("SST_TREX2INIT0")), "%i", - &sst1CurrentBoard->tmuInit0[2]); } else sst1CurrentBoard->tmuInit0[2] = SST_TREX2INIT0_DEFAULT; INIT_PRINTF(("sst1InitRegisters(): Storing TREX2INIT0=0x%x\n", sst1CurrentBoard->tmuInit0[2])); - if(GETENV(("SST_TREX2INIT1"))) { + if(GETENV(("SST_TREX2INIT1")) && + (SSCANF(GETENV(("SST_TREX2INIT1")), "%i", + &sst1CurrentBoard->tmuInit1[2]) == 1) ) { INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX2INIT1 environment variable\n")); - SSCANF(GETENV(("SST_TREX2INIT1")), "%i", - &sst1CurrentBoard->tmuInit1[2]); } else sst1CurrentBoard->tmuInit1[2] = SST_TREX2INIT1_DEFAULT; - if(GETENV(("SST_PTF2_CLK_DEL"))) { - SSCANF(GETENV(("SST_PTF2_CLK_DEL")), "%i", &tf2_clk_del); + if(GETENV(("SST_PTF2_CLK_DEL")) && + (SSCANF(GETENV(("SST_PTF2_CLK_DEL")), "%i", &tf2_clk_del) == 1) ) { sst1CurrentBoard->tmuInit1[2] = (sst1CurrentBoard->tmuInit1[2] & ~SST_TEX_TF_CLK_DEL_ADJ) | (tf2_clk_del<hSync, vtmp); } else ISET(sst->hSync, ((sstVideoRez->hSyncOff << SST_VIDEO_HSYNC_OFF_SHIFT) | (sstVideoRez->hSyncOn << SST_VIDEO_HSYNC_ON_SHIFT))); - if(GETENV(("SST_VSYNC"))) { - SSCANF(GETENV(("SST_VSYNC")), "%i", &vtmp); + if(GETENV(("SST_VSYNC")) && + (SSCANF(GETENV(("SST_VSYNC")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using SST_VSYNC=0x%x\n", vtmp)); ISET(sst->vSync, vtmp); } else ISET(sst->vSync, ((sstVideoRez->vSyncOff << SST_VIDEO_VSYNC_OFF_SHIFT) | (sstVideoRez->vSyncOn << SST_VIDEO_VSYNC_ON_SHIFT))); - if(GETENV(("SST_BACKPORCH"))) { - SSCANF(GETENV(("SST_BACKPORCH")), "%i", &vtmp); + if(GETENV(("SST_BACKPORCH")) && + (SSCANF(GETENV(("SST_BACKPORCH")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using SST_BACKPORCH=0x%x\n", vtmp)); ISET(sst->backPorch, vtmp); } else ISET(sst->backPorch, ((sstVideoRez->vBackPorch << SST_VIDEO_VBACKPORCH_SHIFT) | (sstVideoRez->hBackPorch << SST_VIDEO_HBACKPORCH_SHIFT))); - if(GETENV(("SST_DIMENSIONS"))) { - SSCANF(GETENV(("SST_DIMENSIONS")), "%i", &vtmp); + if(GETENV(("SST_DIMENSIONS")) && + (SSCANF(GETENV(("SST_DIMENSIONS")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using SST_DIMENSIONS=0x%x\n", vtmp)); sstVideoRez->yDimension = (vtmp >> SST_VIDEO_YDIM_SHIFT) & 0x3ff; sstVideoRez->xDimension = vtmp & 0x3ff; @@ -385,13 +388,13 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase, ISET(sst->videoDimensions, ((sstVideoRez->yDimension << SST_VIDEO_YDIM_SHIFT) | ((sstVideoRez->xDimension-1) << SST_VIDEO_XDIM_SHIFT))); - if(GETENV(("SST_MEMOFFSET"))) { - SSCANF(GETENV(("SST_MEMOFFSET")), "%i", &vtmp); + if(GETENV(("SST_MEMOFFSET")) && + (SSCANF(GETENV(("SST_MEMOFFSET")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using video memOffset=0x%x\n", vtmp)); sstVideoRez->memOffset = vtmp; } - if(GETENV(("SST_TILESINX"))) { - SSCANF(GETENV(("SST_TILESINX")), "%i", &vtmp); + if(GETENV(("SST_TILESINX")) && + (SSCANF(GETENV(("SST_TILESINX")), "%i", &vtmp) == 1) ) { INIT_PRINTF(("sst1InitVideo(): Using video tilesInX=0x%x\n", vtmp)); sstVideoRez->tilesInX_Over2 = vtmp; } @@ -445,14 +448,17 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase, sst1InitIdleFBINoNOP(sstbase); memFifoLwm = 23; - if(GETENV(("SST_MEMFIFO_LWM"))) - SSCANF(GETENV(("SST_MEMFIFO_LWM")), "%i", &memFifoLwm); + if(GETENV(("SST_MEMFIFO_LWM")) && + (SSCANF(GETENV(("SST_MEMFIFO_LWM")), "%i", &vtmp) == 1)) + memFifoLwm = vtmp; memFifoHwm = 54; - if(GETENV(("SST_MEMFIFO_HWM"))) - SSCANF(GETENV(("SST_MEMFIFO_HWM")), "%i", &memFifoHwm); + if(GETENV(("SST_MEMFIFO_HWM")) && + (SSCANF(GETENV(("SST_MEMFIFO_HWM")), "%i", &vtmp) == 1)) + memFifoHwm = vtmp; pciFifoLwm = 13; - if(GETENV(("SST_PCIFIFO_LWM"))) - SSCANF(GETENV(("SST_PCIFIFO_LWM")), "%i", &pciFifoLwm); + if(GETENV(("SST_PCIFIFO_LWM")) && + (SSCANF(GETENV(("SST_PCIFIFO_LWM")), "%i", &vtmp) == 1)) + pciFifoLwm = vtmp; INIT_PRINTF(("sst1InitVideo(): pciFifoLwm:%d memFifoLwm:%d memFifoHwm:%d\n", pciFifoLwm, memFifoLwm, memFifoHwm)); @@ -513,8 +519,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase, memFifoEntries = sstVideoRez->memFifoEntries_2MB; else memFifoEntries = sstVideoRez->memFifoEntries_4MB; - if(GETENV(("SST_MEMFIFO_ENTRIES"))) - SSCANF(GETENV(("SST_MEMFIFO_ENTRIES")), "%i", &memFifoEntries); + if(GETENV(("SST_MEMFIFO_ENTRIES")) && + (SSCANF(GETENV(("SST_MEMFIFO_ENTRIES")), "%i", &vtmp) == 1)) + memFifoEntries = vtmp; INIT_PRINTF(("sst1InitVideo(): Enabling Memory FIFO (Entries=%d)...\n", 0xffff - (memFifoEntries << 5))); @@ -538,15 +545,17 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase, vInClkDel = 2; if(sst1CurrentBoard->fbiRevision == 2) vInClkDel = 0; - if(GETENV(("SST_VIN_CLKDEL"))) - SSCANF(GETENV(("SST_VIN_CLKDEL")), "%i", &vInClkDel); + if(GETENV(("SST_VIN_CLKDEL")) && + (SSCANF(GETENV(("SST_VIN_CLKDEL")), "%i", &vtmp) == 1)) + vInClkDel = vtmp; if(sst1CurrentBoard->fbiRevision == 2) vOutClkDel = 2; else vOutClkDel = 0; - if(GETENV(("SST_VOUT_CLKDEL"))) - SSCANF(GETENV(("SST_VOUT_CLKDEL")), "%i", &vOutClkDel); + if(GETENV(("SST_VOUT_CLKDEL")) && + (SSCANF(GETENV(("SST_VOUT_CLKDEL")), "%i", &vtmp) == 1)) + vOutClkDel = vtmp; INIT_PRINTF(("sst1InitVideo(): vInClkDel=0x%x vOutClkDel=0x%x\n", vInClkDel, vOutClkDel)); @@ -579,10 +588,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase, sst1InitIdleFBINoNOP(sstbase); if(!GETENV(("SST_VIDEO_FILTER_DISABLE"))) { ISET(sst->fbiInit1, IGET(sst->fbiInit1) | SST_VIDEO_FILTER_EN); - if(GETENV(("SST_VIDEO_FILTER_THRESHOLD"))) { - SSCANF(GETENV(("SST_VIDEO_FILTER_THRESHOLD")), "%i", &n); + if(GETENV(("SST_VIDEO_FILTER_THRESHOLD")) && + (SSCANF(GETENV(("SST_VIDEO_FILTER_THRESHOLD")), "%i", &n) == 1)) { INIT_PRINTF(("sst1InitVideo(): Setting Video Filtering Treshold to 0x%x...\n", n)); - ISET(sst->videoFilterRgbThreshold, n); } else /* sst->videoFilterRgbThreshold = 0x180c18; */ @@ -648,14 +656,18 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase, } /* Override with environment variables */ - if(GETENV(("SST_FT_CLK_DEL"))) - SSCANF(GETENV(("SST_FT_CLK_DEL")), "%i", &ft_clk_del); - if(GETENV(("SST_TF0_CLK_DEL"))) - SSCANF(GETENV(("SST_TF0_CLK_DEL")), "%i", &tf0_clk_del); - if(GETENV(("SST_TF1_CLK_DEL"))) - SSCANF(GETENV(("SST_TF1_CLK_DEL")), "%i", &tf1_clk_del); - if(GETENV(("SST_TF2_CLK_DEL"))) - SSCANF(GETENV(("SST_TF2_CLK_DEL")), "%i", &tf2_clk_del); + if(GETENV(("SST_FT_CLK_DEL")) && + (SSCANF(GETENV(("SST_FT_CLK_DEL")), "%i", &vtmp) == 1) ) + ft_clk_del = vtmp; + if(GETENV(("SST_TF0_CLK_DEL")) && + (SSCANF(GETENV(("SST_TF0_CLK_DEL")), "%i", &vtmp) == 1) ) + tf0_clk_del = vtmp; + if(GETENV(("SST_TF1_CLK_DEL")) && + (SSCANF(GETENV(("SST_TF1_CLK_DEL")), "%i", &vtmp) == 1) ) + tf1_clk_del = vtmp; + if(GETENV(("SST_TF2_CLK_DEL")) && + (SSCANF(GETENV(("SST_TF2_CLK_DEL")), "%i", &vtmp) == 1) ) + tf2_clk_del = vtmp; INIT_PRINTF(("sst1InitVideo(): Setting FBI-to-TREX clock delay to 0x%x...\n", ft_clk_del)); INIT_PRINTF(("sst1InitVideo(): Setting TREX#0 TREX-to-FBI clock delay to 0x%x\n", @@ -696,10 +708,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase, /* Adjust Video Clock */ #ifndef DIRECTX - if(GETENV(("SST_VIDCLK2X"))) { - float vidClkFreq; - - SSCANF(GETENV(("SST_VIDCLK2X")), "%f", &vidClkFreq); + if(GETENV(("SST_VIDCLK2X")) && + (SSCANF(GETENV(("SST_VIDCLK2X")), "%f", &vidClkFreq) == 1) ) { if(sst1InitSetVidClk(sstbase, vidClkFreq) == FXFALSE) return(FXFALSE); } else { @@ -740,8 +750,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase, /* Clear Screen */ FxU32 clearColor = 0x0; - if(GETENV(("SST_VIDEO_CLEARCOLOR"))) - SSCANF(GETENV(("SST_VIDEO_CLEARCOLOR")), "%i", &clearColor); + if(GETENV(("SST_VIDEO_CLEARCOLOR")) && + (SSCANF(GETENV(("SST_VIDEO_CLEARCOLOR")), "%i", &vtmp) == 1) ) + clearColor = vtmp; ISET(sst->c1, clearColor); ISET(sst->c0, clearColor); ISET(sst->zaColor, 0x0);