logging now shuts off after a bad write

colormapping made more generic (more with that later)
small stat fix


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1663 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
TimeServ 2005-12-05 16:47:29 +00:00
parent 20da7c41cd
commit 87d4c83abe
10 changed files with 114 additions and 58 deletions

View file

@ -211,7 +211,7 @@ int Sys_FileRead (int handle, void *dest, int count)
return read (handle, dest, count); return read (handle, dest, count);
} }
void Sys_DebugLog(char *file, char *fmt, ...) int Sys_DebugLog(char *file, char *fmt, ...)
{ {
va_list argptr; va_list argptr;
static char data[1024]; static char data[1024];
@ -226,8 +226,13 @@ void Sys_DebugLog(char *file, char *fmt, ...)
// fd = open(file, O_WRONLY | O_BINARY | O_CREAT | O_APPEND, 0666); // fd = open(file, O_WRONLY | O_BINARY | O_CREAT | O_APPEND, 0666);
fd = open(file, O_WRONLY | O_CREAT | O_APPEND, 0666); fd = open(file, O_WRONLY | O_CREAT | O_APPEND, 0666);
if (fd)
{
write(fd, data, strlen(data)); write(fd, data, strlen(data));
close(fd); close(fd);
return 0;
}
return 1;
} }
int Sys_EnumerateFiles (char *gpath, char *match, int (*func)(char *, int, void *), void *parm) int Sys_EnumerateFiles (char *gpath, char *match, int (*func)(char *, int, void *), void *parm)

View file

@ -149,7 +149,7 @@ void Sys_Init(void)
void VARGS Sys_DebugLog(char *file, char *fmt, ...) int VARGS Sys_DebugLog(char *file, char *fmt, ...)
{ {
FILE *fd; FILE *fd;
va_list argptr; va_list argptr;
@ -181,8 +181,13 @@ void VARGS Sys_DebugLog(char *file, char *fmt, ...)
} }
#endif #endif
fd = fopen(file, "wt"); fd = fopen(file, "wt");
if (fd)
{
fwrite(data, 1, strlen(data), fd); fwrite(data, 1, strlen(data), fd);
fclose(fd); fclose(fd);
return 0;
}
return 1;
}; };

View file

@ -169,7 +169,7 @@ void VARGS MaskExceptions (void);
void Sys_PopFPCW (void); void Sys_PopFPCW (void);
void Sys_PushFPCW_SetHigh (void); void Sys_PushFPCW_SetHigh (void);
void VARGS Sys_DebugLog(char *file, char *fmt, ...) int VARGS Sys_DebugLog(char *file, char *fmt, ...)
{ {
FILE *fd; FILE *fd;
va_list argptr; va_list argptr;
@ -205,7 +205,10 @@ void VARGS Sys_DebugLog(char *file, char *fmt, ...)
{ {
fprintf(fd, "%s", data); fprintf(fd, "%s", data);
fclose(fd); fclose(fd);
return 0;
} }
return 1;
}; };
int *debug; int *debug;

View file

@ -159,7 +159,7 @@ void Con_Log (char *s)
FILE *fi; FILE *fi;
// check file size, use x as temp // check file size, use x as temp
if (fi = fopen(f, "rb")) if ((fi = fopen(f, "rb")))
{ {
x = COM_filelength(fi); x = COM_filelength(fi);
fclose(fi); fclose(fi);
@ -185,7 +185,7 @@ void Con_Log (char *s)
_snprintf(oldf, sizeof(oldf)-1, "%s.%i", f, x); _snprintf(oldf, sizeof(oldf)-1, "%s.%i", f, x);
// check if file exists, otherwise skip // check if file exists, otherwise skip
if (fi = fopen(oldf, "rb")) if ((fi = fopen(oldf, "rb")))
fclose(fi); fclose(fi);
else else
continue; // skip nonexistant files continue; // skip nonexistant files
@ -212,7 +212,13 @@ void Con_Log (char *s)
} }
// write to log file // write to log file
Sys_DebugLog(f, "%s", logbuf); if (Sys_DebugLog(f, "%s", logbuf))
{
// write failed, bug out
Cvar_ForceSet(&log_enable, "0");
Con_Printf("Unable to write to log file. Logging disabled.\n");
return;
}
} }
void Log_Init(void) void Log_Init(void)

View file

@ -45,7 +45,7 @@ void Sys_MakeCodeWriteable (unsigned long startaddr, unsigned long length);
// //
// system IO // system IO
// //
void VARGS Sys_DebugLog(char *file, char *fmt, ...); int VARGS Sys_DebugLog(char *file, char *fmt, ...);
void VARGS Sys_Error (const char *error, ...); void VARGS Sys_Error (const char *error, ...);
// an error will cause the entire program to exit // an error will cause the entire program to exit

View file

@ -564,7 +564,6 @@ void PR_LoadGlabalStruct(void)
SV_QCStat(ev_float, "cnt_invincibility", STAT_H2_CNT_INVINCIBILITY); SV_QCStat(ev_float, "cnt_invincibility", STAT_H2_CNT_INVINCIBILITY);
SV_QCStat(ev_float, "artifact_active", STAT_H2_ARTIFACT_ACTIVE); SV_QCStat(ev_float, "artifact_active", STAT_H2_ARTIFACT_ACTIVE);
SV_QCStat(ev_float, "artifact_low", STAT_H2_ARTIFACT_LOW); SV_QCStat(ev_float, "artifact_low", STAT_H2_ARTIFACT_LOW);
SV_QCStat(ev_float, "artifact_low", STAT_H2_ARTIFACT_LOW);
SV_QCStat(ev_float, "movetype", STAT_H2_MOVETYPE); SV_QCStat(ev_float, "movetype", STAT_H2_MOVETYPE);
SV_QCStat(ev_entity, "cameramode", STAT_H2_CAMERAMODE); SV_QCStat(ev_entity, "cameramode", STAT_H2_CAMERAMODE);
SV_QCStat(ev_float, "hasted", STAT_H2_HASTED); SV_QCStat(ev_float, "hasted", STAT_H2_HASTED);

View file

@ -113,7 +113,7 @@ int Sys_EnumerateFiles (char *gpath, char *match, int (*func)(char *, int, void
} }
#endif #endif
void Sys_DebugLog(char *file, char *fmt, ...) int Sys_DebugLog(char *file, char *fmt, ...)
{ {
va_list argptr; va_list argptr;
char data[1024]; char data[1024];
@ -127,8 +127,13 @@ void Sys_DebugLog(char *file, char *fmt, ...)
Sys_Error("Sys_DebugLog was stomped\n"); Sys_Error("Sys_DebugLog was stomped\n");
fd = open(file, O_WRONLY | O_CREAT | O_APPEND, 0666); fd = open(file, O_WRONLY | O_CREAT | O_APPEND, 0666);
if (fd)
{
write(fd, data, strlen(data)); write(fd, data, strlen(data));
close(fd); close(fd);
return 0;
}
return 1;
} }
/* /*
================ ================

View file

@ -163,7 +163,7 @@ cvar_t sys_colorconsole = {"sys_colorconsole", "1"};
HWND consolewindowhandle; HWND consolewindowhandle;
HWND hiddenwindowhandler; HWND hiddenwindowhandler;
void Sys_DebugLog(char *file, char *fmt, ...) int void Sys_DebugLog(char *file, char *fmt, ...)
{ {
va_list argptr; va_list argptr;
static char data[1024]; static char data[1024];
@ -173,8 +173,13 @@ void Sys_DebugLog(char *file, char *fmt, ...)
_vsnprintf(data, sizeof(data)-1, fmt, argptr); _vsnprintf(data, sizeof(data)-1, fmt, argptr);
va_end(argptr); va_end(argptr);
fd = open(file, O_WRONLY | O_CREAT | O_APPEND, 0666); fd = open(file, O_WRONLY | O_CREAT | O_APPEND, 0666);
if (fd)
{
write(fd, data, strlen(data)); write(fd, data, strlen(data));
close(fd); close(fd);
return 0;
}
return 1; // error
}; };
/* /*

View file

@ -211,6 +211,68 @@ void MakeFullbrightRemap(void)
nofbremap[i] = FindIndexFromRGBNoFB(host_basepal[i*3], host_basepal[i*3+1], host_basepal[i*3+2]); nofbremap[i] = FindIndexFromRGBNoFB(host_basepal[i*3], host_basepal[i*3+1], host_basepal[i*3+2]);
} }
// colormap functions
void BuildModulatedColormap(qbyte *indexes, int red, int green, int blue, qboolean desaturate, qboolean fullbrights)
{
qbyte *rgb = host_basepal;
unsigned int r, g, b, x, invmask = 0;
if (red < 0 || green < 0 || blue < 0)
invmask = 0xff;
// generate colormap
if (desaturate)
{
int s;
for (x = 0; x < 256; x++)
{
s = rgb[0]*76 + rgb[1]*151 + rgb[2]*29 + 128;
r = abs((127*256 + s*red) >> 16);
g = abs((127*256 + s*green) >> 16);
b = abs((127*256 + s*blue) >> 16);
if (r > 255)
r = 255;
if (g > 255)
g = 255;
if (b > 255)
b = 255;
if (fullbrights) // relying on branch prediction here...
indexes[x] = GetPalette(r^invmask, g^invmask, b^invmask);
else
indexes[x] = GetPaletteNoFB(r^invmask, g^invmask, b^invmask);
rgb += 3;
}
}
else
{
for (x = 0; x < 256; x++)
{
// modulus math
r = abs((127 + rgb[0]*red) >> 8);
g = abs((127 + rgb[1]*green) >> 8);
b = abs((127 + rgb[2]*blue) >> 8);
if (r > 255)
r = 255;
if (g > 255)
g = 255;
if (b > 255)
b = 255;
if (fullbrights) // relying on branch prediction here...
indexes[x] = GetPalette(r^invmask, g^invmask, b^invmask);
else
indexes[x] = GetPaletteNoFB(r^invmask, g^invmask, b^invmask);
rgb += 3;
}
}
}
void MediaSW_ShowFrame8bit(qbyte *framedata, int inwidth, int inheight, qbyte *palette) void MediaSW_ShowFrame8bit(qbyte *framedata, int inwidth, int inheight, qbyte *palette)
{ {
int y, x; int y, x;

View file

@ -2389,64 +2389,30 @@ void SWDraw_FadeScreen (void)
if (fsmodified != r_menutint.modified) if (fsmodified != r_menutint.modified)
{ {
char *t; char *t;
int s; int r, g, b;
float r, g, b;
qbyte invmask = 0;
qbyte *rgb = (qbyte *)host_basepal; qbyte *rgb = (qbyte *)host_basepal;
// parse r_menutint // parse r_menutint
fsnodraw = 0; fsnodraw = 0;
r = r_menutint.value; r = 255*r_menutint.value;
g = 0; g = 0;
b = 0; b = 0;
t = strstr(r_menutint.string, " "); t = strstr(r_menutint.string, " ");
if (t) if (t)
{ {
g = atof(t+1); g = 255*atof(t+1);
t = strstr(t+1, " "); t = strstr(t+1, " ");
if (t) if (t)
b = atof(t+1); b = 255*atof(t+1);
else else
fsnodraw = 1; fsnodraw = 1;
} }
else else
fsnodraw = 1; fsnodraw = 1;
// bounds check and inverse check // rebuild colormap here
if (r < 0) BuildModulatedColormap(fscolormap, r, g, b, true, true);
{
invmask = 0xff;
r = -r;
}
if (r > 1)
r = 1;
if (g < 0)
{
invmask = 0xff;
g = -g;
}
if (g > 1)
g = 1;
if (b < 0)
{
invmask = 0xff;
b = -b;
}
if (b > 1)
b = 1;
// generate colormap
for (x = 0; x < 256; x++)
{
// convert to grayscale value
s = rgb[0]*0.299 + rgb[1]*0.587 + rgb[2]*0.114;
fscolormap[x] = GetPalette((int)(s*r)^invmask, (int)(s*g)^invmask, (int)(s*b)^invmask);
rgb += 3;
}
fsmodified = r_menutint.modified; fsmodified = r_menutint.modified;
} }