lots of changes.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@228 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
956bebbd1d
commit
9c59fafc3e
70 changed files with 1417 additions and 1094 deletions
|
@ -29,11 +29,11 @@ W32LDFLAGS=
|
||||||
RELEASELDFLAGS=-s
|
RELEASELDFLAGS=-s
|
||||||
|
|
||||||
|
|
||||||
BASE_CFLAGS=-Wall -I$(CLIENT_DIR) -I$(COMMON_DIR) -I$(SW_DIR) -I$(GL_DIR) -I$(SERVER_DIR) -I$(PROGS_DIR) -I$(DXSDK_DIR)/include -DWEBSVCL -DDYNAMIC_ENTS -D_WIN32
|
BASE_CFLAGS=-Wall -I$(CLIENT_DIR) -I$(COMMON_DIR) -I$(SW_DIR) -I$(GL_DIR) -I$(SERVER_DIR) -I$(PROGS_DIR) -I$(DXSDK_DIR)/include -DWEBSVCL -D_WIN32
|
||||||
CLIENT_ONLY_CFLAGS=$(BASE_CFLAGS) -DCLIENTONLY
|
CLIENT_ONLY_CFLAGS=$(BASE_CFLAGS) -DCLIENTONLY
|
||||||
SERVER_ONLY_CFLAGS=$(BASE_CFLAGS) -DSERVERONLY
|
SERVER_ONLY_CFLAGS=$(BASE_CFLAGS) -DSERVERONLY
|
||||||
JOINT_CFLAGS=$(BASE_CFLAGS)
|
JOINT_CFLAGS=$(BASE_CFLAGS)
|
||||||
DEBUG_CFLAGS=-g -ggdb
|
DEBUG_CFLAGS=-g -ggdb -DZQUAKETEAMPLAY
|
||||||
RELEASE_CFLAGS=-O6 -s -fno-strict-aliasing -ffast-math -funroll-loops -fexpensive-optimizations $(CPUOPTIMIZATIONS)
|
RELEASE_CFLAGS=-O6 -s -fno-strict-aliasing -ffast-math -funroll-loops -fexpensive-optimizations $(CPUOPTIMIZATIONS)
|
||||||
GLCFLAGS=
|
GLCFLAGS=
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ NQPROT_OBJS = \
|
||||||
CLIENT_OBJS = \
|
CLIENT_OBJS = \
|
||||||
$(OUT_DIR)/textedit.o \
|
$(OUT_DIR)/textedit.o \
|
||||||
$(OUT_DIR)/teamplay.o \
|
$(OUT_DIR)/teamplay.o \
|
||||||
|
$(OUT_DIR)/zqtp.o \
|
||||||
$(OUT_DIR)/cl_demo.o \
|
$(OUT_DIR)/cl_demo.o \
|
||||||
$(OUT_DIR)/cl_ents.o \
|
$(OUT_DIR)/cl_ents.o \
|
||||||
$(OUT_DIR)/clq2_ents.o \
|
$(OUT_DIR)/clq2_ents.o \
|
||||||
|
@ -594,6 +595,10 @@ $(OUT_DIR)/translate.o : $(COMMON_DIR)/translate.c
|
||||||
$(OUT_DIR)/teamplay.o : $(CLIENT_DIR)/teamplay.c
|
$(OUT_DIR)/teamplay.o : $(CLIENT_DIR)/teamplay.c
|
||||||
$(DO_CC)
|
$(DO_CC)
|
||||||
|
|
||||||
|
|
||||||
|
$(OUT_DIR)/zqtp.o : $(CLIENT_DIR)/zqtp.c
|
||||||
|
$(DO_CC)
|
||||||
|
|
||||||
$(OUT_DIR)/cl_main.o : $(CLIENT_DIR)/cl_main.c
|
$(OUT_DIR)/cl_main.o : $(CLIENT_DIR)/cl_main.c
|
||||||
$(DO_CC)
|
$(DO_CC)
|
||||||
|
|
||||||
|
|
|
@ -34,12 +34,9 @@ static qboolean enabled = false;
|
||||||
static qboolean playLooping = false;
|
static qboolean playLooping = false;
|
||||||
static float cdvolume;
|
static float cdvolume;
|
||||||
static qbyte remap[100];
|
static qbyte remap[100];
|
||||||
static qbyte cdrom;
|
|
||||||
static qbyte playTrack;
|
static qbyte playTrack;
|
||||||
static qbyte maxTrack;
|
static qbyte maxTrack;
|
||||||
|
|
||||||
static qboolean playingsoundfile;
|
|
||||||
|
|
||||||
UINT wDeviceID;
|
UINT wDeviceID;
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +44,7 @@ static void CDAudio_Eject(void)
|
||||||
{
|
{
|
||||||
DWORD dwReturn;
|
DWORD dwReturn;
|
||||||
|
|
||||||
if (dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, (DWORD)NULL))
|
if ((dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, (DWORD)NULL)))
|
||||||
Con_DPrintf("MCI_SET_DOOR_OPEN failed (%i)\n", dwReturn);
|
Con_DPrintf("MCI_SET_DOOR_OPEN failed (%i)\n", dwReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +53,7 @@ static void CDAudio_CloseDoor(void)
|
||||||
{
|
{
|
||||||
DWORD dwReturn;
|
DWORD dwReturn;
|
||||||
|
|
||||||
if (dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, (DWORD)NULL))
|
if ((dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, (DWORD)NULL)))
|
||||||
Con_DPrintf("MCI_SET_DOOR_CLOSED failed (%i)\n", dwReturn);
|
Con_DPrintf("MCI_SET_DOOR_CLOSED failed (%i)\n", dwReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1755,6 +1755,7 @@ void CL_SetSolidEntities (void)
|
||||||
pmove.physents[pmove.numphysent].model = cl.model_precache[state->modelindex];
|
pmove.physents[pmove.numphysent].model = cl.model_precache[state->modelindex];
|
||||||
VectorCopy (state->origin, pmove.physents[pmove.numphysent].origin);
|
VectorCopy (state->origin, pmove.physents[pmove.numphysent].origin);
|
||||||
VectorCopy (state->angles, pmove.physents[pmove.numphysent].angles);
|
VectorCopy (state->angles, pmove.physents[pmove.numphysent].angles);
|
||||||
|
pmove.physents[pmove.numphysent].angles[0]*=-1;
|
||||||
if (++pmove.numphysent == MAX_PHYSENTS)
|
if (++pmove.numphysent == MAX_PHYSENTS)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1882,7 +1882,7 @@ void CL_Download_f (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(cls.downloadtempname, cls.downloadname);
|
strcpy(cls.downloadtempname, cls.downloadname);
|
||||||
cls.downloadqw = fopen (cls.downloadname, "wb");
|
// cls.downloadqw = fopen (cls.downloadname, "wb");
|
||||||
cls.downloadmethod = DL_QW;
|
cls.downloadmethod = DL_QW;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
// cl_screen.c -- master for refresh, status bar, console, chat, notify, etc
|
// cl_screen.c -- master for refresh, status bar, console, chat, notify, etc
|
||||||
|
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
#ifdef RGLQUAKE
|
||||||
#include "glquake.h"//would prefer not to have this
|
#include "glquake.h"//would prefer not to have this
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -299,6 +299,7 @@ static void Stats_LoadFragFile(char *name)
|
||||||
char *file;
|
char *file;
|
||||||
char *end;
|
char *end;
|
||||||
char *tk, *tz;
|
char *tk, *tz;
|
||||||
|
char oend;
|
||||||
|
|
||||||
Stats_Clear();
|
Stats_Clear();
|
||||||
|
|
||||||
|
@ -306,13 +307,17 @@ static void Stats_LoadFragFile(char *name)
|
||||||
COM_DefaultExtension(filename, ".dat");
|
COM_DefaultExtension(filename, ".dat");
|
||||||
|
|
||||||
file = COM_LoadTempFile(filename);
|
file = COM_LoadTempFile(filename);
|
||||||
if (!file)
|
if (!file || !*file)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
oend = 1;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
if (!oend)
|
||||||
|
break;
|
||||||
for (end = file; *end && *end != '\n'; end++)
|
for (end = file; *end && *end != '\n'; end++)
|
||||||
;
|
;
|
||||||
|
oend = *end;
|
||||||
*end = '\0';
|
*end = '\0';
|
||||||
if (!*file)
|
if (!*file)
|
||||||
break;
|
break;
|
||||||
|
@ -398,9 +403,11 @@ static void Stats_LoadFragFile(char *name)
|
||||||
|
|
||||||
Stats_StatMessage(fftype, 0, Cmd_Argv(3), NULL);
|
Stats_StatMessage(fftype, 0, Cmd_Argv(3), NULL);
|
||||||
}
|
}
|
||||||
else {Con_Printf("Unrecognised directive \"%s\"\n", tk);continue;}
|
else
|
||||||
|
{Con_Printf("Unrecognised directive \"%s\"\n", tk);continue;}
|
||||||
}
|
}
|
||||||
else {Con_Printf("Unrecognised directive \"%s\"\n", tk);continue;}
|
else
|
||||||
|
{Con_Printf("Unrecognised directive \"%s\"\n", tk);continue;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
#ifdef RGLQUAKE
|
||||||
#include "glquake.h"
|
#include "glquake.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
cvar_t r_dodgytgafiles = {"r_dodgytgafiles", "0"}; //Certain tgas are upside down.
|
cvar_t r_dodgytgafiles = {"r_dodgytgafiles", "0"}; //Certain tgas are upside down.
|
||||||
//This is due to a bug in tenebrae.
|
//This is due to a bug in tenebrae.
|
||||||
|
@ -1474,6 +1476,31 @@ void BoostGamma(qbyte *rgba, int width, int height)
|
||||||
|
|
||||||
#if defined(RGLQUAKE)
|
#if defined(RGLQUAKE)
|
||||||
|
|
||||||
|
//returns r8g8b8a8
|
||||||
|
qbyte *Read32BitImageFile(qbyte *buf, int len, int *width, int *height)
|
||||||
|
{
|
||||||
|
qbyte *data;
|
||||||
|
if ((data = ReadTargaFile(buf, len, width, height, false)))
|
||||||
|
return data;
|
||||||
|
|
||||||
|
#ifdef AVAIL_PNGLIB
|
||||||
|
if ((buf[0] == -119 && buf[1] == 'P' && buf[2] == 'N' && buf[3] == 'G') && (data = ReadPNGFile(buf, com_filesize, width, height)))
|
||||||
|
return data;
|
||||||
|
#endif
|
||||||
|
#ifdef AVAIL_JPEGLIB
|
||||||
|
//jpeg jfif only.
|
||||||
|
if ((buf[0] == 0xff && buf[1] == 0xd8 && buf[2] == 0xff && buf[3] == 0xe0) && (data = ReadJPEGFile(buf, com_filesize, width, height)))
|
||||||
|
return data;
|
||||||
|
#endif
|
||||||
|
if ((data = ReadPCXFile(buf, com_filesize, width, height)))
|
||||||
|
return data;
|
||||||
|
|
||||||
|
if ((buf[0] == 'B' && buf[1] == 'M') && (data = ReadBMPFile(buf, com_filesize, width, height)))
|
||||||
|
return data;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
int GL_LoadTexture8Bump (char *identifier, int width, int height, unsigned char *data, qboolean mipmap);
|
int GL_LoadTexture8Bump (char *identifier, int width, int height, unsigned char *data, qboolean mipmap);
|
||||||
|
|
||||||
int image_width, image_height;
|
int image_width, image_height;
|
||||||
|
@ -1548,49 +1575,21 @@ int Mod_LoadHiResTexture(char *name, qboolean mipmap, qboolean alpha, qboolean c
|
||||||
_snprintf(fname, sizeof(fname)-1, path[i], nicename, extensions[e]);
|
_snprintf(fname, sizeof(fname)-1, path[i], nicename, extensions[e]);
|
||||||
if ((buf = COM_LoadFile (fname, 5)))
|
if ((buf = COM_LoadFile (fname, 5)))
|
||||||
{
|
{
|
||||||
if ((data = ReadTargaFile(buf, com_filesize, &image_width, &image_height, false)))
|
if ((data = Read32BitImageFile(buf, com_filesize, &image_width, &image_height)))
|
||||||
{
|
|
||||||
BoostGamma(data, image_width, image_height);
|
|
||||||
len = GL_LoadTexture32 (name, image_width, image_height, (unsigned*)data, mipmap, alpha);
|
|
||||||
BZ_Free(data);
|
|
||||||
}
|
|
||||||
#ifdef AVAIL_PNGLIB
|
|
||||||
else if ((buf[0] == -119 && buf[1] == 'P' && buf[2] == 'N' && buf[3] == 'G') &&(data = ReadPNGFile(buf, com_filesize, &image_width, &image_height)))
|
|
||||||
{
|
|
||||||
BoostGamma(data, image_width, image_height);
|
|
||||||
len = GL_LoadTexture32 (name, image_width, image_height, (unsigned*)data, mipmap, alpha);
|
|
||||||
BZ_Free(data);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef AVAIL_JPEGLIB
|
|
||||||
else if ((data = ReadJPEGFile(buf, com_filesize, &image_width, &image_height)))
|
|
||||||
{
|
|
||||||
BoostGamma(data, image_width, image_height);
|
|
||||||
len = GL_LoadTexture32 (name, image_width, image_height, (unsigned*)data, mipmap, alpha);
|
|
||||||
BZ_Free(data);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else if ((data = ReadPCXFile(buf, com_filesize, &image_width, &image_height)))
|
|
||||||
{
|
|
||||||
BoostGamma(data, image_width, image_height);
|
|
||||||
len = GL_LoadTexture32(name, image_width, image_height, (unsigned*)data, mipmap, alpha);
|
|
||||||
BZ_Free(data);
|
|
||||||
}
|
|
||||||
else if ((buf[0] == 'B' && buf[1] == 'M') && (data = ReadBMPFile(buf, com_filesize, &image_width, &image_height)))
|
|
||||||
{
|
{
|
||||||
BoostGamma(data, image_width, image_height);
|
BoostGamma(data, image_width, image_height);
|
||||||
len = GL_LoadTexture32 (name, image_width, image_height, (unsigned*)data, mipmap, alpha);
|
len = GL_LoadTexture32 (name, image_width, image_height, (unsigned*)data, mipmap, alpha);
|
||||||
BZ_Free(data);
|
BZ_Free(data);
|
||||||
|
|
||||||
|
BZ_Free(buf);
|
||||||
|
|
||||||
|
return len;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BZ_Free(buf);
|
BZ_Free(buf);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
BZ_Free(buf);
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ HRESULT (WINAPI *pDirectInputCreate)(HINSTANCE hinst, DWORD dwVersion,
|
||||||
|
|
||||||
// mouse variables
|
// mouse variables
|
||||||
cvar_t m_filter = {"m_filter","0"};
|
cvar_t m_filter = {"m_filter","0"};
|
||||||
|
cvar_t m_forcewheel = {"m_forcewheel", "1"};
|
||||||
cvar_t in_mwhook = {"in_mwhook","0", NULL, CVAR_ARCHIVE};
|
cvar_t in_mwhook = {"in_mwhook","0", NULL, CVAR_ARCHIVE};
|
||||||
cvar_t in_dinput = {"in_dinput","0", NULL, CVAR_ARCHIVE};
|
cvar_t in_dinput = {"in_dinput","0", NULL, CVAR_ARCHIVE};
|
||||||
|
|
||||||
|
@ -820,6 +821,7 @@ void IN_Init (void)
|
||||||
|
|
||||||
// mouse variables
|
// mouse variables
|
||||||
Cvar_Register (&m_filter, "Input stuff");
|
Cvar_Register (&m_filter, "Input stuff");
|
||||||
|
Cvar_Register (&m_forcewheel, "Input stuff");
|
||||||
Cvar_Register (&in_mwhook, "Input stuff");
|
Cvar_Register (&in_mwhook, "Input stuff");
|
||||||
|
|
||||||
Cvar_Register (&in_dinput, "Input stuff");
|
Cvar_Register (&in_dinput, "Input stuff");
|
||||||
|
@ -1114,6 +1116,17 @@ void IN_MouseMove (usercmd_t *cmd, int pnum)
|
||||||
sysmouse.delta[1] += od.dwData;
|
sysmouse.delta[1] += od.dwData;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DIMOFS_Z:
|
||||||
|
if (m_forcewheel.value)
|
||||||
|
{
|
||||||
|
if (od.dwData & 0x80)
|
||||||
|
sysmouse.wheeldelta++;
|
||||||
|
else
|
||||||
|
sysmouse.wheeldelta--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
case DIMOFS_BUTTON0:
|
case DIMOFS_BUTTON0:
|
||||||
if (od.dwData & 0x80)
|
if (od.dwData & 0x80)
|
||||||
sysmouse.buttons |= 1;
|
sysmouse.buttons |= 1;
|
||||||
|
@ -1134,6 +1147,38 @@ void IN_MouseMove (usercmd_t *cmd, int pnum)
|
||||||
else
|
else
|
||||||
sysmouse.buttons &= ~(1<<2);
|
sysmouse.buttons &= ~(1<<2);
|
||||||
break;
|
break;
|
||||||
|
case DIMOFS_BUTTON3:
|
||||||
|
if (od.dwData & 0x80)
|
||||||
|
sysmouse.buttons |= (1<<3);
|
||||||
|
else
|
||||||
|
sysmouse.buttons &= ~(1<<3);
|
||||||
|
break;
|
||||||
|
#if (DIRECTINPUT_VERSION >= 0x0700)
|
||||||
|
case DIMOFS_BUTTON4:
|
||||||
|
if (od.dwData & 0x80)
|
||||||
|
sysmouse.buttons |= (1<<4);
|
||||||
|
else
|
||||||
|
sysmouse.buttons &= ~(1<<4);
|
||||||
|
break;
|
||||||
|
case DIMOFS_BUTTON5:
|
||||||
|
if (od.dwData & 0x80)
|
||||||
|
sysmouse.buttons |= (1<<5);
|
||||||
|
else
|
||||||
|
sysmouse.buttons &= ~(1<<5);
|
||||||
|
break;
|
||||||
|
case DIMOFS_BUTTON6:
|
||||||
|
if (od.dwData & 0x80)
|
||||||
|
sysmouse.buttons |= (1<<6);
|
||||||
|
else
|
||||||
|
sysmouse.buttons &= ~(1<<6);
|
||||||
|
break;
|
||||||
|
case DIMOFS_BUTTON7:
|
||||||
|
if (od.dwData & 0x80)
|
||||||
|
sysmouse.buttons |= (1<<7);
|
||||||
|
else
|
||||||
|
sysmouse.buttons &= ~(1<<7);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -816,14 +816,14 @@ void Key_Unbindall_f (void)
|
||||||
Key_Bind_f
|
Key_Bind_f
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
void Key_Bind_f (void) //FIXME: work with modifiers
|
void Key_Bind_f (void)
|
||||||
{
|
{
|
||||||
int i, c, b, modifier;
|
int i, c, b, modifier;
|
||||||
char cmd[1024];
|
char cmd[1024];
|
||||||
|
|
||||||
c = Cmd_Argc();
|
c = Cmd_Argc();
|
||||||
|
|
||||||
if (c != 2 && c != 3)
|
if (c < 2)
|
||||||
{
|
{
|
||||||
Con_Printf ("bind <key> [command] : attach a command to a key\n");
|
Con_Printf ("bind <key> [command] : attach a command to a key\n");
|
||||||
return;
|
return;
|
||||||
|
@ -844,6 +844,13 @@ void Key_Bind_f (void) //FIXME: work with modifiers
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (c > 3)
|
||||||
|
{
|
||||||
|
Cmd_ShiftArgs(1);
|
||||||
|
Key_SetBinding (b, modifier, Cmd_Args(), Cmd_ExecLevel);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// copy the rest of the command line
|
// copy the rest of the command line
|
||||||
cmd[0] = 0; // start out with a null string
|
cmd[0] = 0; // start out with a null string
|
||||||
for (i=2 ; i< c ; i++)
|
for (i=2 ; i< c ; i++)
|
||||||
|
|
|
@ -2,153 +2,9 @@
|
||||||
//was origonally an mp3 track selector, now handles lots of media specific stuff - like q3 films!
|
//was origonally an mp3 track selector, now handles lots of media specific stuff - like q3 films!
|
||||||
//should rename to m_media.c
|
//should rename to m_media.c
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
#ifdef RGLQUAKE
|
||||||
#include "glquake.h"//fixme
|
#include "glquake.h"//fixme
|
||||||
|
#endif
|
||||||
//pal77* pal777to8;
|
|
||||||
qbyte *palxxxto8;
|
|
||||||
|
|
||||||
#define FindPallete(r,g,b) palxxxto8[((r&palmask[0])>>palshift[0]) | ((g&palmask[1])<<palshift[1]) | ((b&palmask[2])<<palshift[2])]
|
|
||||||
//#define FindPallete(r,g,b) (pal777to8[r>>1][g>>1][b>>1])
|
|
||||||
qbyte GetPalette(int red, int green, int blue)
|
|
||||||
{
|
|
||||||
if (palxxxto8) //fast precalculated method
|
|
||||||
return FindPallete(red,green,blue);
|
|
||||||
else //slow, horrible method.
|
|
||||||
{
|
|
||||||
int i, best=15;
|
|
||||||
int bestdif=256*256*256, curdif;
|
|
||||||
extern qbyte *host_basepal;
|
|
||||||
qbyte *pa;
|
|
||||||
|
|
||||||
#define _abs(x) ((x)*(x))
|
|
||||||
|
|
||||||
pa = host_basepal;
|
|
||||||
for (i = 0; i < 256; i++, pa+=3)
|
|
||||||
{
|
|
||||||
curdif = _abs(red - pa[0]) + _abs(green - pa[1]) + _abs(blue - pa[2]);
|
|
||||||
if (curdif < bestdif)
|
|
||||||
{
|
|
||||||
if (curdif<1)
|
|
||||||
return i;
|
|
||||||
bestdif = curdif;
|
|
||||||
best = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return best;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MakeVideoPalette(void)
|
|
||||||
{
|
|
||||||
// pal77 *temp;
|
|
||||||
qbyte *temp;
|
|
||||||
int r, g, b;
|
|
||||||
int rs, gs, bs, size;
|
|
||||||
int rstep, gstep, bstep;
|
|
||||||
int gshift, bshift;
|
|
||||||
FILE *f;
|
|
||||||
char filename[11];
|
|
||||||
|
|
||||||
if (strlen(r_palconvbits.string) < 3)
|
|
||||||
{
|
|
||||||
// r5g6b5 is default
|
|
||||||
rs = 5;
|
|
||||||
gs = 6;
|
|
||||||
bs = 5;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// convert to int
|
|
||||||
rs = r_palconvbits.string[0] - '0';
|
|
||||||
gs = r_palconvbits.string[1] - '0';
|
|
||||||
bs = r_palconvbits.string[2] - '0';
|
|
||||||
|
|
||||||
// limit to 4-8 (can't have 3 because the forumla breaks)
|
|
||||||
if (rs < 4)
|
|
||||||
rs = 4;
|
|
||||||
else if (rs > 8)
|
|
||||||
rs = 8;
|
|
||||||
|
|
||||||
if (gs < 4)
|
|
||||||
gs = 4;
|
|
||||||
else if (gs > 8)
|
|
||||||
gs = 8;
|
|
||||||
|
|
||||||
if (bs < 4)
|
|
||||||
bs = 4;
|
|
||||||
else if (bs > 8)
|
|
||||||
bs = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
Q_strcpy(filename, "rgb000.pal");
|
|
||||||
filename[3] = rs + '0';
|
|
||||||
filename[4] = gs + '0';
|
|
||||||
filename[5] = bs + '0';
|
|
||||||
|
|
||||||
palshift[0] = 1<<rs;
|
|
||||||
palshift[1] = 1<<gs;
|
|
||||||
palshift[2] = 1<<bs;
|
|
||||||
|
|
||||||
size = palshift[0]*palshift[1]*palshift[2];
|
|
||||||
|
|
||||||
gshift = rs;
|
|
||||||
bshift = rs+gs;
|
|
||||||
rs = 8-rs;
|
|
||||||
gs = 8-gs;
|
|
||||||
bs = 8-bs;
|
|
||||||
|
|
||||||
rstep = 1<<rs;
|
|
||||||
gstep = 1<<gs;
|
|
||||||
bstep = 1<<bs;
|
|
||||||
|
|
||||||
palmask[0] = 0xff ^ (rstep - 1);
|
|
||||||
palmask[1] = 0xff ^ (gstep - 1);
|
|
||||||
palmask[2] = 0xff ^ (bstep - 1);
|
|
||||||
|
|
||||||
palxxxto8 = Hunk_AllocName(size, "RGB data");
|
|
||||||
if (!palxxxto8)
|
|
||||||
BZ_Free(palxxxto8);
|
|
||||||
palxxxto8 = NULL;
|
|
||||||
|
|
||||||
temp = BZ_Malloc(size);
|
|
||||||
COM_FOpenFile (filename, &f);
|
|
||||||
if (f)
|
|
||||||
{
|
|
||||||
fread(temp, 1, size, f); //cached
|
|
||||||
fclose(f);
|
|
||||||
|
|
||||||
palxxxto8 = temp;
|
|
||||||
|
|
||||||
// update shifts
|
|
||||||
palshift[0] = rs;
|
|
||||||
palshift[1] = (8 - palshift[0]) - gs;
|
|
||||||
palshift[2] = palshift[1] + (8 - bs);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
rstep >>= 1;
|
|
||||||
gstep >>= 1;
|
|
||||||
bstep >>= 1;
|
|
||||||
|
|
||||||
for (r = palshift[0] - 1; r >= 0; r--)
|
|
||||||
for (g = palshift[1] - 1; g >= 0; g--)
|
|
||||||
for (b = palshift[2] - 1; b >= 0; b--)
|
|
||||||
{
|
|
||||||
temp[r+(g<<gshift)+(b<<bshift)] = GetPalette((r<<rs)+rstep, (g<<gs)+gstep, (b<<bs)+bstep);
|
|
||||||
}
|
|
||||||
palxxxto8 = temp;
|
|
||||||
|
|
||||||
// update shifts
|
|
||||||
palshift[0] = rs;
|
|
||||||
palshift[1] = (8 - palshift[0]) - gs;
|
|
||||||
palshift[2] = palshift[1] + (8 - bs);
|
|
||||||
|
|
||||||
if (r_palconvwrite.value)
|
|
||||||
COM_WriteFile(filename, palxxxto8, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -916,7 +772,6 @@ char *Media_NextTrack(void)
|
||||||
|
|
||||||
///temporary residence for media handling
|
///temporary residence for media handling
|
||||||
#include "roq.h"
|
#include "roq.h"
|
||||||
int filmtexture;
|
|
||||||
roq_info *roqfilm;
|
roq_info *roqfilm;
|
||||||
|
|
||||||
sfxcache_t *moviesoundbuffer;
|
sfxcache_t *moviesoundbuffer;
|
||||||
|
@ -1076,9 +931,6 @@ qboolean Media_PlayFilm(char *name)
|
||||||
if (key_dest != key_console)
|
if (key_dest != key_console)
|
||||||
scr_con_current=0;
|
scr_con_current=0;
|
||||||
media_filmtype = MFT_STATIC;
|
media_filmtype = MFT_STATIC;
|
||||||
#ifndef RGLQUAKE
|
|
||||||
MakeVideoPalette();
|
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (dot && (!strcmp(dot, ".cin")))
|
if (dot && (!strcmp(dot, ".cin")))
|
||||||
|
@ -1093,9 +945,6 @@ qboolean Media_PlayFilm(char *name)
|
||||||
if (key_dest != key_console)
|
if (key_dest != key_console)
|
||||||
scr_con_current=0;
|
scr_con_current=0;
|
||||||
media_filmtype = MFT_ROQ;
|
media_filmtype = MFT_ROQ;
|
||||||
#ifndef RGLQUAKE
|
|
||||||
MakeVideoPalette();
|
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#ifdef WINAVI
|
#ifdef WINAVI
|
||||||
|
@ -1210,8 +1059,6 @@ soundpos=0;
|
||||||
scr_con_current=0;
|
scr_con_current=0;
|
||||||
|
|
||||||
media_filmtype = MFT_AVI;
|
media_filmtype = MFT_AVI;
|
||||||
|
|
||||||
MakeVideoPalette();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1220,430 +1067,6 @@ soundpos=0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Media_ShowFrame8bit(qbyte *framedata, int inwidth, int inheight, qbyte *palette) //bgrandupsidedown is hackily done. It should be a temporary buffer that also indicates stuff.
|
|
||||||
{
|
|
||||||
#ifdef RGLQUAKE
|
|
||||||
if (qrenderer == QR_OPENGL)
|
|
||||||
{
|
|
||||||
if (!filmtexture)
|
|
||||||
{
|
|
||||||
filmtexture=texture_extension_number;
|
|
||||||
texture_extension_number++;
|
|
||||||
}
|
|
||||||
|
|
||||||
GL_Set2D ();
|
|
||||||
|
|
||||||
GL_Bind(filmtexture);
|
|
||||||
GL_Upload8Pal24(framedata, palette, inwidth, inheight, false, false); //we may need to rescale the image
|
|
||||||
// glTexImage2D (GL_TEXTURE_2D, 0, 3, roqfilm->width, roqfilm->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, framedata);
|
|
||||||
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_max);
|
|
||||||
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);
|
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glDisable(GL_ALPHA_TEST);
|
|
||||||
glBegin(GL_QUADS);
|
|
||||||
glTexCoord2f(0, 0);
|
|
||||||
glVertex2f(0, 0);
|
|
||||||
glTexCoord2f(0, 1);
|
|
||||||
glVertex2f(0, vid.height);
|
|
||||||
glTexCoord2f(1, 1);
|
|
||||||
glVertex2f(vid.width, vid.height);
|
|
||||||
glTexCoord2f(1, 0);
|
|
||||||
glVertex2f(vid.width, 0);
|
|
||||||
glEnd();
|
|
||||||
glEnable(GL_ALPHA_TEST);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
#ifdef SWQUAKE
|
|
||||||
if (qrenderer == QR_SOFTWARE)
|
|
||||||
{
|
|
||||||
int y, x;
|
|
||||||
|
|
||||||
D_EnableBackBufferAccess (); // of all overlay stuff if drawing directly
|
|
||||||
if (r_pixbytes == 1)
|
|
||||||
{
|
|
||||||
qbyte *dest, *src;
|
|
||||||
int lines=vid.conheight;
|
|
||||||
int v;
|
|
||||||
int f, fstep;
|
|
||||||
|
|
||||||
dest = vid.conbuffer;
|
|
||||||
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
|
||||||
{
|
|
||||||
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*4;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth ; x+=4)
|
|
||||||
{
|
|
||||||
dest[x] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+1] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+2] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+3] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (r_pixbytes == 2)
|
|
||||||
{
|
|
||||||
extern int redbits, redshift;
|
|
||||||
extern int greenbits, greenshift;
|
|
||||||
extern int bluebits, blueshift;
|
|
||||||
|
|
||||||
unsigned short *dest;
|
|
||||||
qbyte *src;
|
|
||||||
int lines=vid.conheight;
|
|
||||||
int v;
|
|
||||||
int f, fstep;
|
|
||||||
|
|
||||||
dest = (unsigned short *)vid.conbuffer;
|
|
||||||
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
|
||||||
{
|
|
||||||
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*4;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth; x++) //sw 32 bit rendering is bgrx
|
|
||||||
{
|
|
||||||
dest[x] = (((src[(f>>16)*4]*(1<<redbits))/256)<<redshift) + (((src[(f>>16)*4+1]*(1<<greenbits))/256)<<greenshift) + (((src[(f>>16)*4+2]*(1<<bluebits))/256)<<blueshift);
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (r_pixbytes == 4)
|
|
||||||
{
|
|
||||||
qbyte *dest, *src;
|
|
||||||
int lines=vid.conheight;
|
|
||||||
int v;
|
|
||||||
int f, fstep;
|
|
||||||
|
|
||||||
dest = vid.conbuffer;
|
|
||||||
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes*4)
|
|
||||||
{
|
|
||||||
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*4;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth*4 ; x+=4) //sw 32 bit rendering is bgrx
|
|
||||||
{
|
|
||||||
dest[x] = src[(f>>16)*4+2];
|
|
||||||
dest[x+1] = src[(f>>16)*4+1];
|
|
||||||
dest[x+2] = src[(f>>16)*4];
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Sys_Error("24 bit rendering?");
|
|
||||||
|
|
||||||
D_DisableBackBufferAccess (); // for adapters that can't stay mapped in
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
Sys_Error("Bad renderer in Media_ShowFrame");
|
|
||||||
|
|
||||||
SCR_SetUpToDrawConsole();
|
|
||||||
if (scr_con_current)
|
|
||||||
SCR_DrawConsole (false);
|
|
||||||
|
|
||||||
M_Draw(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Media_ShowFrame(qbyte *framedata, int inwidth, int inheight, qbyte *bgrandupsidedown) //bgrandupsidedown is hackily done. It should be a temporary buffer that also indicates stuff.
|
|
||||||
{
|
|
||||||
int y, x;
|
|
||||||
|
|
||||||
#ifdef RGLQUAKE
|
|
||||||
if (qrenderer == QR_OPENGL)
|
|
||||||
{
|
|
||||||
if (bgrandupsidedown) //this is for avi files. (blooming windows programmers...)
|
|
||||||
{ //convert it.
|
|
||||||
int v;
|
|
||||||
unsigned int f, fstep;
|
|
||||||
qbyte *src, *dest;
|
|
||||||
dest = bgrandupsidedown;
|
|
||||||
//change from bgr bottomup to rgba bottomdown
|
|
||||||
for (y=1 ; y<=filmnheight ; y++)
|
|
||||||
{
|
|
||||||
v = ((filmnheight - y)*(float)inheight/filmnheight);
|
|
||||||
src = framedata + v*(inwidth*3);
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/filmnwidth;
|
|
||||||
|
|
||||||
for (x=filmnwidth ; x&3 ; x--) //do the odd ones first. (bigger condition)
|
|
||||||
{
|
|
||||||
*dest++ = src[(f>>16)*3+2];
|
|
||||||
*dest++ = src[(f>>16)*3+1];
|
|
||||||
*dest++ = src[(f>>16)*3+0];
|
|
||||||
*dest++ = 255;
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
for ( ; x ; x-=4) //loop through the remaining chunks.
|
|
||||||
{
|
|
||||||
dest[0] = src[(f>>16)*3+2];
|
|
||||||
dest[1] = src[(f>>16)*3+1];
|
|
||||||
dest[2] = src[(f>>16)*3+0];
|
|
||||||
dest[3] = 255;
|
|
||||||
f += fstep;
|
|
||||||
|
|
||||||
dest[4] = src[(f>>16)*3+2];
|
|
||||||
dest[5] = src[(f>>16)*3+1];
|
|
||||||
dest[6] = src[(f>>16)*3+0];
|
|
||||||
dest[7] = 255;
|
|
||||||
f += fstep;
|
|
||||||
|
|
||||||
dest[8] = src[(f>>16)*3+2];
|
|
||||||
dest[9] = src[(f>>16)*3+1];
|
|
||||||
dest[10] = src[(f>>16)*3+0];
|
|
||||||
dest[11] = 255;
|
|
||||||
f += fstep;
|
|
||||||
|
|
||||||
dest[12] = src[(f>>16)*3+2];
|
|
||||||
dest[13] = src[(f>>16)*3+1];
|
|
||||||
dest[14] = src[(f>>16)*3+0];
|
|
||||||
dest[15] = 255;
|
|
||||||
f += fstep;
|
|
||||||
|
|
||||||
dest += 16;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!filmtexture)
|
|
||||||
{
|
|
||||||
filmtexture=texture_extension_number;
|
|
||||||
texture_extension_number++;
|
|
||||||
}
|
|
||||||
|
|
||||||
GL_Set2D ();
|
|
||||||
|
|
||||||
GL_Bind(filmtexture);
|
|
||||||
GL_Upload32("", (unsigned *)framedata, inwidth, inheight, false, false); //we may need to rescale the image
|
|
||||||
// glTexImage2D (GL_TEXTURE_2D, 0, 3, roqfilm->width, roqfilm->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, framedata);
|
|
||||||
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_max);
|
|
||||||
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);
|
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glDisable(GL_ALPHA_TEST);
|
|
||||||
glBegin(GL_QUADS);
|
|
||||||
glTexCoord2f(0, 0);
|
|
||||||
glVertex2f(0, 0);
|
|
||||||
glTexCoord2f(0, 1);
|
|
||||||
glVertex2f(0, vid.height);
|
|
||||||
glTexCoord2f(1, 1);
|
|
||||||
glVertex2f(vid.width, vid.height);
|
|
||||||
glTexCoord2f(1, 0);
|
|
||||||
glVertex2f(vid.width, 0);
|
|
||||||
glEnd();
|
|
||||||
glEnable(GL_ALPHA_TEST);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
#ifdef SWQUAKE
|
|
||||||
if (qrenderer == QR_SOFTWARE)
|
|
||||||
{
|
|
||||||
D_EnableBackBufferAccess (); // of all overlay stuff if drawing directly
|
|
||||||
if (r_pixbytes == 1)
|
|
||||||
{
|
|
||||||
qbyte *dest, *src;
|
|
||||||
int lines=vid.conheight;
|
|
||||||
int v;
|
|
||||||
int f, fstep;
|
|
||||||
|
|
||||||
dest = vid.conbuffer;
|
|
||||||
|
|
||||||
if (bgrandupsidedown)
|
|
||||||
{
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
|
||||||
{
|
|
||||||
v = (lines - y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*3;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth ; x+=4)
|
|
||||||
{
|
|
||||||
dest[x] = FindPallete(src[(f>>16)*3+2], src[(f>>16)*3+1], src[(f>>16)*3]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+1] = FindPallete(src[(f>>16)*3+2], src[(f>>16)*3+1], src[(f>>16)*3]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+2] = FindPallete(src[(f>>16)*3+2], src[(f>>16)*3+1], src[(f>>16)*3]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+3] = FindPallete(src[(f>>16)*3+2], src[(f>>16)*3+1], src[(f>>16)*3]);
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
|
||||||
{
|
|
||||||
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*4;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth ; x+=4)
|
|
||||||
{
|
|
||||||
dest[x] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+1] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+2] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
|
||||||
f += fstep;
|
|
||||||
dest[x+3] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (r_pixbytes == 2)
|
|
||||||
{
|
|
||||||
if (bgrandupsidedown)
|
|
||||||
{
|
|
||||||
extern int redbits, redshift;
|
|
||||||
extern int greenbits, greenshift;
|
|
||||||
extern int bluebits, blueshift;
|
|
||||||
|
|
||||||
unsigned short *dest;
|
|
||||||
qbyte *src;
|
|
||||||
int lines=vid.conheight;
|
|
||||||
int v;
|
|
||||||
int f, fstep;
|
|
||||||
|
|
||||||
dest = (unsigned short *)vid.conbuffer;
|
|
||||||
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
|
||||||
{
|
|
||||||
v = (lines - y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*3;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth; x++) //sw 32 bit rendering is bgrx
|
|
||||||
{
|
|
||||||
dest[x] = (((src[(f>>16)*3+2]*(1<<redbits))/256)<<redshift) + (((src[(f>>16)*3+1]*(1<<greenbits))/256)<<greenshift) + (((src[(f>>16)*3+0]*(1<<bluebits))/256)<<blueshift);
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
extern int redbits, redshift;
|
|
||||||
extern int greenbits, greenshift;
|
|
||||||
extern int bluebits, blueshift;
|
|
||||||
|
|
||||||
unsigned short *dest;
|
|
||||||
qbyte *src;
|
|
||||||
int lines=vid.conheight;
|
|
||||||
int v;
|
|
||||||
int f, fstep;
|
|
||||||
|
|
||||||
dest = (unsigned short *)vid.conbuffer;
|
|
||||||
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
|
||||||
{
|
|
||||||
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*4;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth; x++) //sw 32 bit rendering is bgrx
|
|
||||||
{
|
|
||||||
dest[x] = (((src[(f>>16)*4]*(1<<redbits))/256)<<redshift) + (((src[(f>>16)*4+1]*(1<<greenbits))/256)<<greenshift) + (((src[(f>>16)*4+2]*(1<<bluebits))/256)<<blueshift);
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (r_pixbytes == 4)
|
|
||||||
{
|
|
||||||
if (bgrandupsidedown)
|
|
||||||
{
|
|
||||||
unsigned int *dest;
|
|
||||||
qbyte *src;
|
|
||||||
int lines=vid.conheight;
|
|
||||||
int v;
|
|
||||||
int f, fstep;
|
|
||||||
|
|
||||||
dest = (unsigned int *)vid.conbuffer;
|
|
||||||
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
|
||||||
{
|
|
||||||
v = (lines - y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*3;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth ; x++) //sw 32 bit rendering is bgrx
|
|
||||||
{
|
|
||||||
*(dest+x) = *(int *)(src + (f>>16)*3);
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qbyte *dest, *src;
|
|
||||||
int lines=vid.conheight;
|
|
||||||
int v;
|
|
||||||
int f, fstep;
|
|
||||||
|
|
||||||
dest = vid.conbuffer;
|
|
||||||
|
|
||||||
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes*4)
|
|
||||||
{
|
|
||||||
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
|
||||||
src = framedata + v*inwidth*4;
|
|
||||||
{
|
|
||||||
f = 0;
|
|
||||||
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
|
||||||
for (x=0 ; x<vid.conwidth*4 ; x+=4) //sw 32 bit rendering is bgrx
|
|
||||||
{
|
|
||||||
dest[x] = src[(f>>16)*4+2];
|
|
||||||
dest[x+1] = src[(f>>16)*4+1];
|
|
||||||
dest[x+2] = src[(f>>16)*4];
|
|
||||||
f += fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Sys_Error("24 bit rendering?");
|
|
||||||
|
|
||||||
D_DisableBackBufferAccess (); // for adapters that can't stay mapped in
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
Sys_Error("Bad renderer in Media_ShowFrame");
|
|
||||||
|
|
||||||
SCR_SetUpToDrawConsole();
|
|
||||||
if (scr_con_current)
|
|
||||||
SCR_DrawConsole (false);
|
|
||||||
}
|
|
||||||
|
|
||||||
qboolean Media_ShowFilm(void)
|
qboolean Media_ShowFilm(void)
|
||||||
{
|
{
|
||||||
// sfx_t *s;
|
// sfx_t *s;
|
||||||
|
@ -1715,7 +1138,7 @@ qboolean Media_ShowFilm(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Media_ShowFrame(framedata, roqfilm->width, roqfilm->height, NULL);
|
Media_ShowFrameRGBA_32(framedata, roqfilm->width, roqfilm->height);
|
||||||
|
|
||||||
if (roqfilm->audio_channels && sndcardinfo && roqfilm->aud_pos < roqfilm->vid_pos)
|
if (roqfilm->audio_channels && sndcardinfo && roqfilm->aud_pos < roqfilm->vid_pos)
|
||||||
if (roq_read_audio(roqfilm)>0)
|
if (roq_read_audio(roqfilm)>0)
|
||||||
|
@ -1732,7 +1155,7 @@ qboolean Media_ShowFilm(void)
|
||||||
|
|
||||||
|
|
||||||
case MFT_STATIC:
|
case MFT_STATIC:
|
||||||
Media_ShowFrame(staticfilmimage, imagewidth, imageheight, NULL);
|
Media_ShowFrameRGBA_32(staticfilmimage, imagewidth, imageheight);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
#ifdef WINAVI
|
#ifdef WINAVI
|
||||||
|
@ -1761,7 +1184,7 @@ qboolean Media_ShowFilm(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Media_ShowFrame(staticfilmimage, imagewidth, imageheight, framedata);
|
Media_ShowFrameBGR_24_Flip(staticfilmimage, imagewidth, imageheight);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pavisound)
|
if (pavisound)
|
||||||
|
|
|
@ -57,6 +57,9 @@ extern void (*R_AddStain) (vec3_t org, float red, float green, float blue,
|
||||||
extern void (*R_LessenStains) (void);
|
extern void (*R_LessenStains) (void);
|
||||||
extern void (*R_DrawWaterSurfaces) (void);
|
extern void (*R_DrawWaterSurfaces) (void);
|
||||||
|
|
||||||
|
extern void (*Media_ShowFrameBGR_24_Flip) (qbyte *framedata, int inwidth, int inheight); //input is bottom up...
|
||||||
|
extern void (*Media_ShowFrameRGBA_32) (qbyte *framedata, int inwidth, int inheight); //top down
|
||||||
|
extern void (*Media_ShowFrame8bit) (qbyte *framedata, int inwidth, int inheight, qbyte *palette); //paletted topdown (framedata is 8bit indexes into palette)
|
||||||
|
|
||||||
extern qboolean (*VID_Init) (rendererstate_t *info, unsigned char *palette);
|
extern qboolean (*VID_Init) (rendererstate_t *info, unsigned char *palette);
|
||||||
extern void (*VID_DeInit) (void);
|
extern void (*VID_DeInit) (void);
|
||||||
|
|
|
@ -327,7 +327,9 @@ int NET_CheckPollSockets(void)
|
||||||
if (*(int *)net_message.data == -1)
|
if (*(int *)net_message.data == -1)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
#ifdef Q2CLIENT
|
||||||
char *s;
|
char *s;
|
||||||
|
#endif
|
||||||
MSG_BeginReading ();
|
MSG_BeginReading ();
|
||||||
MSG_ReadLong (); // skip the -1
|
MSG_ReadLong (); // skip the -1
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include "r_local.h"
|
#include "r_local.h"
|
||||||
#include "d_local.h"
|
#include "d_local.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef RGLQUAKE
|
||||||
#include "glquake.h"//hack
|
#include "glquake.h"//hack
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Effects:
|
Effects:
|
||||||
|
|
|
@ -22,7 +22,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#ifdef SWQUAKE
|
#ifdef SWQUAKE
|
||||||
#include "r_local.h"
|
#include "r_local.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef RGLQUAKE
|
||||||
#include "glquake.h"//hack
|
#include "glquake.h"//hack
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "renderque.h"
|
#include "renderque.h"
|
||||||
|
|
||||||
|
@ -212,6 +214,7 @@ part_type_t *GetParticleType(char *name)
|
||||||
ptype->cliptype = -1;
|
ptype->cliptype = -1;
|
||||||
ptype->emit = -1;
|
ptype->emit = -1;
|
||||||
ptype->loaded = 0;
|
ptype->loaded = 0;
|
||||||
|
ptype->ramp = NULL;
|
||||||
return ptype;
|
return ptype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -895,7 +898,7 @@ void R_Part_NewServer(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Cbuf_AddText(va("exec %s.cfg\n", r_particlesdesc.string), RESTRICT_LOCAL);
|
Cbuf_AddText(va("exec %s.cfg\n", r_particlesdesc.string), RESTRICT_LOCAL);
|
||||||
#if defined(_DEBUG) && defined(WIN32) //expand the particles cfg into a C style quoted string, and copy to clipboard so I can paste it in.
|
/*#if defined(_DEBUG) && defined(WIN32) //expand the particles cfg into a C style quoted string, and copy to clipboard so I can paste it in.
|
||||||
{
|
{
|
||||||
char *TL_ExpandToCString(char *in);
|
char *TL_ExpandToCString(char *in);
|
||||||
extern HWND mainwindow;
|
extern HWND mainwindow;
|
||||||
|
@ -932,7 +935,7 @@ void R_Part_NewServer(void)
|
||||||
SetClipboardData(CF_TEXT, hglbCopy);
|
SetClipboardData(CF_TEXT, hglbCopy);
|
||||||
CloseClipboard();
|
CloseClipboard();
|
||||||
}
|
}
|
||||||
#endif
|
#endif*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2234,7 +2237,6 @@ void GL_DrawTrifanParticle(particle_t *p, part_type_t *type)
|
||||||
}
|
}
|
||||||
|
|
||||||
lasttype = type;
|
lasttype = type;
|
||||||
glEnd();
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
if (type->blendmode == BM_ADD) //addative
|
if (type->blendmode == BM_ADD) //addative
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||||
|
@ -2244,6 +2246,7 @@ void GL_DrawTrifanParticle(particle_t *p, part_type_t *type)
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
glShadeModel(GL_SMOOTH);
|
glShadeModel(GL_SMOOTH);
|
||||||
}
|
}
|
||||||
|
glEnd();
|
||||||
|
|
||||||
scale = (p->org[0] - r_origin[0])*vpn[0] + (p->org[1] - r_origin[1])*vpn[1]
|
scale = (p->org[0] - r_origin[0])*vpn[0] + (p->org[1] - r_origin[1])*vpn[1]
|
||||||
+ (p->org[2] - r_origin[2])*vpn[2];
|
+ (p->org[2] - r_origin[2])*vpn[2];
|
||||||
|
@ -2276,6 +2279,7 @@ void GL_DrawTrifanParticle(particle_t *p, part_type_t *type)
|
||||||
glVertex3fv (v);
|
glVertex3fv (v);
|
||||||
}
|
}
|
||||||
glEnd ();
|
glEnd ();
|
||||||
|
glBegin (GL_LINES);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GL_DrawSparkedParticle(particle_t *p, part_type_t *type)
|
void GL_DrawSparkedParticle(particle_t *p, part_type_t *type)
|
||||||
|
|
|
@ -159,6 +159,9 @@ void GLR_DrawWaterSurfaces (void);
|
||||||
void GLR_AddStain(vec3_t org, float red, float green, float blue, float radius);
|
void GLR_AddStain(vec3_t org, float red, float green, float blue, float radius);
|
||||||
void GLR_LessenStains(void);
|
void GLR_LessenStains(void);
|
||||||
|
|
||||||
|
void MediaGL_ShowFrame8bit(qbyte *framedata, int inwidth, int inheight, qbyte *palette);
|
||||||
|
void MediaGL_ShowFrameRGBA_32(qbyte *framedata, int inwidth, int inheight); //top down
|
||||||
|
void MediaGL_ShowFrameBGR_24_Flip(qbyte *framedata, int inwidth, int inheight); //input is bottom up...
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SWQUAKE)
|
#if defined(SWQUAKE)
|
||||||
|
@ -181,6 +184,10 @@ void SWR_PushDlights (void);
|
||||||
|
|
||||||
void SWR_AddStain(vec3_t org, float red, float green, float blue, float radius);
|
void SWR_AddStain(vec3_t org, float red, float green, float blue, float radius);
|
||||||
void SWR_LessenStains(void);
|
void SWR_LessenStains(void);
|
||||||
|
|
||||||
|
void MediaSW_ShowFrame8bit(qbyte *framedata, int inwidth, int inheight, qbyte *palette);
|
||||||
|
void MediaSW_ShowFrameRGBA_32(qbyte *framedata, int inwidth, int inheight); //top down
|
||||||
|
void MediaSW_ShowFrameBGR_24_Flip(qbyte *framedata, int inwidth, int inheight); //input is bottom up...
|
||||||
#endif
|
#endif
|
||||||
void R_ParseParticleEffect (void);
|
void R_ParseParticleEffect (void);
|
||||||
void R_RunParticleEffect (vec3_t org, vec3_t dir, int color, int count);
|
void R_RunParticleEffect (vec3_t org, vec3_t dir, int color, int count);
|
||||||
|
@ -257,12 +264,9 @@ void SWMod_NowLoadExternal(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
qboolean Media_ShowFilm(void);
|
qboolean Media_ShowFilm(void);
|
||||||
void Media_ShowFrame(qbyte *framedata, int inwidth, int inheight, qbyte *bgrandupsidedown);
|
|
||||||
void Media_ShowFrame8bit(qbyte *framedata, int inwidth, int inheight, qbyte *palette); //for media playback not based in m_mp3.c gotta rename that file...
|
|
||||||
void Media_CaptureDemoEnd(void);
|
void Media_CaptureDemoEnd(void);
|
||||||
void Media_RecordAudioFrame (short *sample_buffer, int samples);
|
void Media_RecordAudioFrame (short *sample_buffer, int samples);
|
||||||
void Media_RecordFrame (void);
|
void Media_RecordFrame (void);
|
||||||
void MakeVideoPalette(void);
|
|
||||||
|
|
||||||
void R_Part_SkyTri(float *v1, float *v2, float *v3, struct msurface_s *surf);
|
void R_Part_SkyTri(float *v1, float *v2, float *v3, struct msurface_s *surf);
|
||||||
void R_ClearParticles (void);
|
void R_ClearParticles (void);
|
||||||
|
@ -304,6 +308,7 @@ void CL_NewDlightRGB (int key, float x, float y, float z, float radius, float ti
|
||||||
float r, float g, float b);
|
float r, float g, float b);
|
||||||
|
|
||||||
void Renderer_Init(void);
|
void Renderer_Init(void);
|
||||||
|
void R_RestartRenderer_f (void);//this goes here so we can save some stack when first initing the sw renderer.
|
||||||
|
|
||||||
//used to live in glquake.h
|
//used to live in glquake.h
|
||||||
qbyte GetPalette(int red, int green, int blue);
|
qbyte GetPalette(int red, int green, int blue);
|
||||||
|
|
|
@ -221,12 +221,15 @@ extern cvar_t r_waterlayers;
|
||||||
cvar_t gl_triplebuffer = {"gl_triplebuffer", "1", NULL, CVAR_ARCHIVE};
|
cvar_t gl_triplebuffer = {"gl_triplebuffer", "1", NULL, CVAR_ARCHIVE};
|
||||||
cvar_t gl_subdivide_size = {"gl_subdivide_size", "128", NULL, CVAR_ARCHIVE};
|
cvar_t gl_subdivide_size = {"gl_subdivide_size", "128", NULL, CVAR_ARCHIVE};
|
||||||
cvar_t gl_subdivide_water = {"gl_subdivide_water", "0", NULL, CVAR_ARCHIVE};
|
cvar_t gl_subdivide_water = {"gl_subdivide_water", "0", NULL, CVAR_ARCHIVE};
|
||||||
|
cvar_t vid_hardwaregamma = {"vid_hardwaregamma", "1", NULL, CVAR_ARCHIVE};
|
||||||
void GLRenderer_Init(void)
|
void GLRenderer_Init(void)
|
||||||
{
|
{
|
||||||
extern cvar_t gl_contrast;
|
extern cvar_t gl_contrast;
|
||||||
//screen
|
//screen
|
||||||
Cvar_Register (&gl_triplebuffer, GLRENDEREROPTIONS);
|
Cvar_Register (&gl_triplebuffer, GLRENDEREROPTIONS);
|
||||||
|
|
||||||
|
Cvar_Register (&vid_hardwaregamma, GLRENDEREROPTIONS);
|
||||||
|
|
||||||
//model
|
//model
|
||||||
Cvar_Register (&gl_subdivide_size, GLRENDEREROPTIONS);
|
Cvar_Register (&gl_subdivide_size, GLRENDEREROPTIONS);
|
||||||
Cvar_Register (&gl_subdivide_water, GLRENDEREROPTIONS);
|
Cvar_Register (&gl_subdivide_water, GLRENDEREROPTIONS);
|
||||||
|
@ -377,7 +380,6 @@ void R_InitTextures (void)
|
||||||
|
|
||||||
|
|
||||||
void R_SetRenderer_f (void);
|
void R_SetRenderer_f (void);
|
||||||
void R_RestartRenderer_f (void);
|
|
||||||
|
|
||||||
void Renderer_Init(void)
|
void Renderer_Init(void)
|
||||||
{
|
{
|
||||||
|
@ -558,6 +560,10 @@ void (*R_PushDlights) (void);
|
||||||
void (*R_AddStain) (vec3_t org, float red, float green, float blue, float radius);
|
void (*R_AddStain) (vec3_t org, float red, float green, float blue, float radius);
|
||||||
void (*R_LessenStains) (void);
|
void (*R_LessenStains) (void);
|
||||||
|
|
||||||
|
void (*Media_ShowFrameBGR_24_Flip) (qbyte *framedata, int inwidth, int inheight); //input is bottom up...
|
||||||
|
void (*Media_ShowFrameRGBA_32) (qbyte *framedata, int inwidth, int inheight); //top down
|
||||||
|
void (*Media_ShowFrame8bit) (qbyte *framedata, int inwidth, int inheight, qbyte *palette); //paletted topdown (framedata is 8bit indexes into palette)
|
||||||
|
|
||||||
void (*Mod_Init) (void);
|
void (*Mod_Init) (void);
|
||||||
void (*Mod_ClearAll) (void);
|
void (*Mod_ClearAll) (void);
|
||||||
struct model_s *(*Mod_ForName) (char *name, qboolean crash);
|
struct model_s *(*Mod_ForName) (char *name, qboolean crash);
|
||||||
|
@ -810,6 +816,10 @@ void R_SetRenderer(r_qrenderer_t wanted)
|
||||||
VID_ShiftPalette = NULL;
|
VID_ShiftPalette = NULL;
|
||||||
VID_GetRGBInfo = NULL;
|
VID_GetRGBInfo = NULL;
|
||||||
|
|
||||||
|
Media_ShowFrame8bit = NULL;
|
||||||
|
Media_ShowFrameRGBA_32 = NULL;
|
||||||
|
Media_ShowFrameBGR_24_Flip = NULL;
|
||||||
|
|
||||||
#ifdef SWQUAKE //Any one of them that works.
|
#ifdef SWQUAKE //Any one of them that works.
|
||||||
Mod_Init = SWMod_Init;
|
Mod_Init = SWMod_Init;
|
||||||
Mod_Think = SWMod_Think;
|
Mod_Think = SWMod_Think;
|
||||||
|
@ -897,6 +907,10 @@ void R_SetRenderer(r_qrenderer_t wanted)
|
||||||
VID_ShiftPalette = SWVID_ShiftPalette;
|
VID_ShiftPalette = SWVID_ShiftPalette;
|
||||||
VID_GetRGBInfo = SWVID_GetRGBInfo;
|
VID_GetRGBInfo = SWVID_GetRGBInfo;
|
||||||
|
|
||||||
|
Media_ShowFrame8bit = MediaSW_ShowFrame8bit;
|
||||||
|
Media_ShowFrameRGBA_32 = MediaSW_ShowFrameRGBA_32;
|
||||||
|
Media_ShowFrameBGR_24_Flip = MediaSW_ShowFrameBGR_24_Flip;
|
||||||
|
|
||||||
Mod_Init = SWMod_Init;
|
Mod_Init = SWMod_Init;
|
||||||
Mod_Think = SWMod_Think;
|
Mod_Think = SWMod_Think;
|
||||||
Mod_ClearAll = SWMod_ClearAll;
|
Mod_ClearAll = SWMod_ClearAll;
|
||||||
|
@ -970,6 +984,10 @@ void R_SetRenderer(r_qrenderer_t wanted)
|
||||||
VID_ShiftPalette = GLVID_ShiftPalette;
|
VID_ShiftPalette = GLVID_ShiftPalette;
|
||||||
VID_GetRGBInfo = GLVID_GetRGBInfo;
|
VID_GetRGBInfo = GLVID_GetRGBInfo;
|
||||||
|
|
||||||
|
Media_ShowFrame8bit = MediaGL_ShowFrame8bit;
|
||||||
|
Media_ShowFrameRGBA_32 = MediaGL_ShowFrameRGBA_32;
|
||||||
|
Media_ShowFrameBGR_24_Flip = MediaGL_ShowFrameBGR_24_Flip;
|
||||||
|
|
||||||
Mod_Init = GLMod_Init;
|
Mod_Init = GLMod_Init;
|
||||||
Mod_Think = GLMod_Think;
|
Mod_Think = GLMod_Think;
|
||||||
Mod_ClearAll = GLMod_ClearAll;
|
Mod_ClearAll = GLMod_ClearAll;
|
||||||
|
@ -1037,7 +1055,6 @@ qboolean R_ApplyRenderer (rendererstate_t *newr)
|
||||||
qbyte *data;
|
qbyte *data;
|
||||||
isDedicated = false;
|
isDedicated = false;
|
||||||
v_oldgammavalue = -1; //force the gamma to be reset
|
v_oldgammavalue = -1; //force the gamma to be reset
|
||||||
V_CheckGamma();
|
|
||||||
|
|
||||||
Con_Printf("Setting mode %i*%i*%i*%i\n", newr->width, newr->height, newr->bpp, newr->rate);
|
Con_Printf("Setting mode %i*%i*%i*%i\n", newr->width, newr->height, newr->bpp, newr->rate);
|
||||||
|
|
||||||
|
@ -1096,6 +1113,8 @@ qboolean R_ApplyRenderer (rendererstate_t *newr)
|
||||||
if (!VID_Init(newr, host_basepal))
|
if (!VID_Init(newr, host_basepal))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
GLV_UpdatePalette();
|
||||||
|
|
||||||
v_oldgammavalue = -1; //force the gamma to be reset
|
v_oldgammavalue = -1; //force the gamma to be reset
|
||||||
W_LoadWadFile("gfx.wad");
|
W_LoadWadFile("gfx.wad");
|
||||||
Draw_Init();
|
Draw_Init();
|
||||||
|
|
|
@ -173,11 +173,11 @@ void S_Startup (void)
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
sc = Z_Malloc(sizeof(soundcardinfo_t));
|
sc = Z_Malloc(sizeof(soundcardinfo_t));
|
||||||
if (snd_khz.value == 48)
|
if (snd_khz.value >= 45)
|
||||||
sc->sn.speed = 48000;
|
sc->sn.speed = 48000;
|
||||||
else if (snd_khz.value == 44 || snd_khz.value == 44.100)
|
else if (snd_khz.value >= 30) //set by a slider
|
||||||
sc->sn.speed = 44100;
|
sc->sn.speed = 44100;
|
||||||
else if (snd_khz.value == 22 || snd_khz.value == 22.050)
|
else if (snd_khz.value >= 20)
|
||||||
sc->sn.speed = 22050;
|
sc->sn.speed = 22050;
|
||||||
else
|
else
|
||||||
sc->sn.speed = 11025;
|
sc->sn.speed = 11025;
|
||||||
|
@ -197,7 +197,7 @@ void S_Startup (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sc->sn.numchannels == 2)
|
if (sc->sn.numchannels < 3)
|
||||||
{
|
{
|
||||||
sc->pitch[0] = 0;
|
sc->pitch[0] = 0;
|
||||||
sc->pitch[1] = 0;
|
sc->pitch[1] = 0;
|
||||||
|
@ -206,7 +206,7 @@ void S_Startup (void)
|
||||||
sc->yaw[0] = 270;
|
sc->yaw[0] = 270;
|
||||||
sc->yaw[1] = 90;
|
sc->yaw[1] = 90;
|
||||||
}
|
}
|
||||||
else if (sc->sn.numchannels == 4)
|
else if (sc->sn.numchannels < 5)
|
||||||
{
|
{
|
||||||
sc->pitch[0] = 0;
|
sc->pitch[0] = 0;
|
||||||
sc->pitch[1] = 0;
|
sc->pitch[1] = 0;
|
||||||
|
|
|
@ -436,11 +436,11 @@ sndinitstat SNDDMA_InitDirect (soundcardinfo_t *sc)
|
||||||
sc->sn.samplebits = 16;
|
sc->sn.samplebits = 16;
|
||||||
if (!sc->sn.speed)
|
if (!sc->sn.speed)
|
||||||
{
|
{
|
||||||
if (snd_khz.value == 48)
|
if (snd_khz.value >= 45)
|
||||||
sc->sn.speed = 48000;
|
sc->sn.speed = 48000;
|
||||||
else if (snd_khz.value == 44 || snd_khz.value == 44.1)
|
else if (snd_khz.value >= 30) //set by a slider
|
||||||
sc->sn.speed = 44100;
|
sc->sn.speed = 44100;
|
||||||
else if (snd_khz.value == 22 || snd_khz.value == 22.05)
|
else if (snd_khz.value >= 20)
|
||||||
sc->sn.speed = 22050;
|
sc->sn.speed = 22050;
|
||||||
else
|
else
|
||||||
sc->sn.speed = 11025;
|
sc->sn.speed = 11025;
|
||||||
|
@ -448,7 +448,7 @@ sndinitstat SNDDMA_InitDirect (soundcardinfo_t *sc)
|
||||||
|
|
||||||
memset (&format, 0, sizeof(format));
|
memset (&format, 0, sizeof(format));
|
||||||
|
|
||||||
if (snd_speakers.value >= 6) //5.1 surround
|
if (snd_speakers.value >= 5) //5.1 surround
|
||||||
{
|
{
|
||||||
format.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
|
format.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
|
||||||
format.Format.cbSize = 22;
|
format.Format.cbSize = 22;
|
||||||
|
@ -457,7 +457,7 @@ sndinitstat SNDDMA_InitDirect (soundcardinfo_t *sc)
|
||||||
format.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;
|
format.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;
|
||||||
sc->sn.numchannels = 6;
|
sc->sn.numchannels = 6;
|
||||||
}
|
}
|
||||||
else if (snd_speakers.value >= 4) //4 speaker quad
|
else if (snd_speakers.value >= 3) //4 speaker quad
|
||||||
{
|
{
|
||||||
format.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
|
format.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
|
||||||
format.Format.cbSize = 22;
|
format.Format.cbSize = 22;
|
||||||
|
@ -466,7 +466,7 @@ sndinitstat SNDDMA_InitDirect (soundcardinfo_t *sc)
|
||||||
format.dwChannelMask = KSAUDIO_SPEAKER_QUAD;
|
format.dwChannelMask = KSAUDIO_SPEAKER_QUAD;
|
||||||
sc->sn.numchannels = 4;
|
sc->sn.numchannels = 4;
|
||||||
}
|
}
|
||||||
else if (snd_speakers.value >= 2) //stereo
|
else if (snd_speakers.value >= 1.5) //stereo
|
||||||
{
|
{
|
||||||
format.Format.wFormatTag = WAVE_FORMAT_PCM;
|
format.Format.wFormatTag = WAVE_FORMAT_PCM;
|
||||||
format.Format.cbSize = 0;
|
format.Format.cbSize = 0;
|
||||||
|
|
|
@ -98,7 +98,6 @@ cvar_t sys_disableWinKeys = {"sys_disableWinKeys", "0"};
|
||||||
LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam)
|
LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
|
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
|
||||||
BOOL bControlKeyDown = 0;
|
|
||||||
if (ActiveApp)
|
if (ActiveApp)
|
||||||
switch (nCode)
|
switch (nCode)
|
||||||
{
|
{
|
||||||
|
|
|
@ -186,7 +186,6 @@ char *CL_LocationName(float *pos)
|
||||||
#define INVIS_CHAR2 138
|
#define INVIS_CHAR2 138
|
||||||
#define INVIS_CHAR3 160
|
#define INVIS_CHAR3 160
|
||||||
|
|
||||||
#ifdef ZQUAKETEAMPLAY
|
|
||||||
/*
|
/*
|
||||||
===============
|
===============
|
||||||
CL_Say
|
CL_Say
|
||||||
|
@ -194,63 +193,7 @@ CL_Say
|
||||||
Handles both say and say_team
|
Handles both say and say_team
|
||||||
===============
|
===============
|
||||||
*/
|
*/
|
||||||
void CL_Say (qboolean team)
|
|
||||||
{
|
|
||||||
extern cvar_t cl_fakename;
|
|
||||||
char text[1024], sendtext[1024], *s;
|
|
||||||
|
|
||||||
if (Cmd_Argc() < 2)
|
|
||||||
{
|
|
||||||
if (team)
|
|
||||||
Con_Printf ("%s <text>: send a team message\n", Cmd_Argv(0));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cls.state == ca_disconnected)
|
|
||||||
{
|
|
||||||
Con_Printf ("Can't \"%s\", not connected\n", Cmd_Argv(0));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
|
||||||
SZ_Print (&cls.netchan.message, team ? "say_team " : "say ");
|
|
||||||
|
|
||||||
s = TP_ParseMacroString (Cmd_Args());
|
|
||||||
Q_strncpyz (text, TP_ParseFunChars (s, true), sizeof(text));
|
|
||||||
|
|
||||||
sendtext[0] = 0;
|
|
||||||
if (team && !cl.spectator && cl_fakename.string[0] &&
|
|
||||||
!strchr(s, '\x0d') /* explicit $\ in message overrides cl_fakename */)
|
|
||||||
{
|
|
||||||
char buf[1024];
|
|
||||||
Cmd_ExpandString (cl_fakename.string, buf);
|
|
||||||
strcpy (buf, TP_ParseMacroString (buf));
|
|
||||||
Q_snprintfz (sendtext, sizeof(sendtext), "\x0d%s: ", TP_ParseFunChars(buf, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
strlcat (sendtext, text, sizeof(sendtext));
|
|
||||||
|
|
||||||
if (sendtext[0] < 32)
|
|
||||||
SZ_Print (&cls.netchan.message, "\""); // add quotes so that old servers parse the message correctly
|
|
||||||
|
|
||||||
SZ_Print (&cls.netchan.message, sendtext);
|
|
||||||
|
|
||||||
if (sendtext[0] < 32)
|
|
||||||
SZ_Print (&cls.netchan.message, "\""); // add quotes so that old servers parse the message correctly
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CL_Say_f (void)
|
|
||||||
{
|
|
||||||
CL_Say (false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CL_SayTeam_f (void)
|
|
||||||
{
|
|
||||||
CL_Say (true);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
void CL_Say_f (void)
|
void CL_Say_f (void)
|
||||||
{
|
{
|
||||||
char string[256];
|
char string[256];
|
||||||
|
@ -400,11 +343,17 @@ void CL_Say_f (void)
|
||||||
MSG_WriteChar(&cls.netchan.message, '\0');
|
MSG_WriteChar(&cls.netchan.message, '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TP_Init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void TP_CheckPickupSound(char *s, vec3_t org)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
qboolean TP_SoundTrigger(char *message) //if there is a trigger there, play it. Return true if we found one, stripping off the file (it's neater that way).
|
qboolean TP_SoundTrigger(char *message) //if there is a trigger there, play it. Return true if we found one, stripping off the file (it's neater that way).
|
||||||
{
|
{
|
||||||
char *strip;
|
char *strip;
|
||||||
|
@ -446,14 +395,3 @@ qboolean TP_SoundTrigger(char *message) //if there is a trigger there, play it.
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TP_Init(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void TP_CheckPickupSound(char *s, vec3_t org)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
|
||||||
|
#ifdef RGLQUAKE
|
||||||
#include "glquake.h" //overkill
|
#include "glquake.h" //overkill
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
|
@ -25,6 +25,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include "r_local.h"
|
#include "r_local.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "winquake.h"
|
||||||
|
|
||||||
#ifdef FISH
|
#ifdef FISH
|
||||||
void R_RenderView_fisheye(void);
|
void R_RenderView_fisheye(void);
|
||||||
cvar_t ffov = {"ffov", "160"};
|
cvar_t ffov = {"ffov", "160"};
|
||||||
|
@ -294,7 +296,8 @@ cvar_t v_contrast = {"contrast", "1", NULL, CVAR_ARCHIVE};
|
||||||
qbyte gammatable[256]; // palette is sent through this
|
qbyte gammatable[256]; // palette is sent through this
|
||||||
|
|
||||||
|
|
||||||
qbyte ramps[3][256];
|
unsigned short ramps[3][256];
|
||||||
|
extern qboolean gammaworks;
|
||||||
float v_blend[4]; // rgba 0.0 - 1.0
|
float v_blend[4]; // rgba 0.0 - 1.0
|
||||||
/*
|
/*
|
||||||
void BuildGammaTable (float g)
|
void BuildGammaTable (float g)
|
||||||
|
@ -626,8 +629,8 @@ void GLV_UpdatePalette (void)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
qboolean new;
|
qboolean new;
|
||||||
qbyte *basepal, *newpal;
|
// qbyte *basepal, *newpal;
|
||||||
qbyte pal[768];
|
// qbyte pal[768];
|
||||||
float r,g,b,a;
|
float r,g,b,a;
|
||||||
int ir, ig, ib;
|
int ir, ig, ib;
|
||||||
qboolean force;
|
qboolean force;
|
||||||
|
@ -687,28 +690,16 @@ void GLV_UpdatePalette (void)
|
||||||
if (ib > 255)
|
if (ib > 255)
|
||||||
ib = 255;
|
ib = 255;
|
||||||
|
|
||||||
ramps[0][i] = gammatable[ir];
|
ramps[0][i] = gammatable[ir]<<8;
|
||||||
ramps[1][i] = gammatable[ig];
|
ramps[1][i] = gammatable[ig]<<8;
|
||||||
ramps[2][i] = gammatable[ib];
|
ramps[2][i] = gammatable[ib]<<8;
|
||||||
}
|
}
|
||||||
|
|
||||||
basepal = host_basepal;
|
VID_ShiftPalette (NULL);
|
||||||
newpal = pal;
|
if (gammaworks)
|
||||||
|
|
||||||
for (i=0 ; i<256 ; i++)
|
|
||||||
{
|
{
|
||||||
ir = basepal[0];
|
BuildGammaTable(1,1);
|
||||||
ig = basepal[1];
|
|
||||||
ib = basepal[2];
|
|
||||||
basepal += 3;
|
|
||||||
|
|
||||||
newpal[0] = ramps[0][ir];
|
|
||||||
newpal[1] = ramps[1][ig];
|
|
||||||
newpal[2] = ramps[2][ib];
|
|
||||||
newpal += 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VID_ShiftPalette (pal);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -511,9 +511,15 @@ void Mod_ParseInfoFromEntityLump(char *data) //actually, this should be in the m
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//textures/fred.wad is the DP standard - I wanna go for that one.
|
||||||
|
//textures/halfline/fred.wad is what fuhquake can use (yuck).
|
||||||
|
//fred.wad is what half-life supports.
|
||||||
|
|
||||||
|
//we only try one download, for textures/fred.wad
|
||||||
|
//but we will load wads from the other two paths if we have them locally.
|
||||||
qboolean Wad_NextDownload (void)
|
qboolean Wad_NextDownload (void)
|
||||||
{
|
{
|
||||||
char wadname[4096];
|
char wadname[4096+9]="textures/";
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
|
|
||||||
if (*wads) //now go about checking the wads
|
if (*wads) //now go about checking the wads
|
||||||
|
@ -536,9 +542,12 @@ qboolean Wad_NextDownload (void)
|
||||||
k = wads[i];
|
k = wads[i];
|
||||||
wads[i] = 0;
|
wads[i] = 0;
|
||||||
strcpy(wadname, &wads[j]);
|
strcpy(wadname, &wads[j]);
|
||||||
if (*wadname)
|
if (wadname[9])
|
||||||
|
{
|
||||||
|
if (COM_FCheckExists(wadname+9)) //wad is in root dir, so we don't need to try textures.
|
||||||
if (!CL_CheckOrDownloadFile(wadname, true))
|
if (!CL_CheckOrDownloadFile(wadname, true))
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
wads[i] = k;
|
wads[i] = k;
|
||||||
|
|
||||||
j = i+1;
|
j = i+1;
|
||||||
|
@ -568,9 +577,14 @@ qboolean Wad_NextDownload (void)
|
||||||
{
|
{
|
||||||
k = wads[i];
|
k = wads[i];
|
||||||
wads[i] = 0;
|
wads[i] = 0;
|
||||||
strcpy(wadname, &wads[j]);
|
strcpy(wadname+9, &wads[j]);
|
||||||
if (*wadname)
|
if (wadname[9])
|
||||||
|
{
|
||||||
|
if (COM_FCheckExists(wadname+9))
|
||||||
|
W_LoadTextureWadFile (wadname+9, false);
|
||||||
|
else
|
||||||
W_LoadTextureWadFile (wadname, false);
|
W_LoadTextureWadFile (wadname, false);
|
||||||
|
}
|
||||||
j = i+1;
|
j = i+1;
|
||||||
if (!k)
|
if (!k)
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -33,10 +33,11 @@
|
||||||
#ifdef ZQUAKETEAMPLAY
|
#ifdef ZQUAKETEAMPLAY
|
||||||
|
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
#include "version.h"
|
//#include "version.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
//#include "pmove.h"
|
//#include "pmove.h"
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
typedef qboolean qbool;
|
typedef qboolean qbool;
|
||||||
|
|
||||||
|
@ -50,12 +51,14 @@ typedef qboolean qbool;
|
||||||
#define Q_stricmp stricmp
|
#define Q_stricmp stricmp
|
||||||
#define Q_strnicmp strnicmp
|
#define Q_strnicmp strnicmp
|
||||||
|
|
||||||
#define isalpha(x) (((x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z'))
|
/*#define isalpha(x) (((x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z'))
|
||||||
#define isdigit(x) ((x) >= '0' && (x) <= '9')
|
#define isdigit(x) ((x) >= '0' && (x) <= '9')
|
||||||
#define isxdigit(x) (isdigit(x) || ((x) >= 'a' && (x) <= 'f'))
|
#define isxdigit(x) (isdigit(x) || ((x) >= 'a' && (x) <= 'f'))
|
||||||
|
*/
|
||||||
#define Q_rint(f) ((int)((f)+0.5))
|
#define Q_rint(f) ((int)((f)+0.5))
|
||||||
|
|
||||||
|
void Cmd_AddMacro(char *s, char *(*f)(void));
|
||||||
|
|
||||||
#ifndef HAVE_STRLCAT
|
#ifndef HAVE_STRLCAT
|
||||||
size_t strlcat (char *dst, const char *src, size_t size)
|
size_t strlcat (char *dst, const char *src, size_t size)
|
||||||
{
|
{
|
||||||
|
@ -402,19 +405,19 @@ char *Macro_BestAmmo (void)
|
||||||
switch (_Macro_BestWeapon())
|
switch (_Macro_BestWeapon())
|
||||||
{
|
{
|
||||||
case IT_SHOTGUN: case IT_SUPER_SHOTGUN:
|
case IT_SHOTGUN: case IT_SUPER_SHOTGUN:
|
||||||
sprintf(macro_buf, "%i", cl.stats[STAT_SHELLS]);
|
sprintf(macro_buf, "%i", cl.stats[0][STAT_SHELLS]);
|
||||||
return macro_buf;
|
return macro_buf;
|
||||||
|
|
||||||
case IT_NAILGUN: case IT_SUPER_NAILGUN:
|
case IT_NAILGUN: case IT_SUPER_NAILGUN:
|
||||||
sprintf(macro_buf, "%i", cl.stats[STAT_NAILS]);
|
sprintf(macro_buf, "%i", cl.stats[0][STAT_NAILS]);
|
||||||
return macro_buf;
|
return macro_buf;
|
||||||
|
|
||||||
case IT_GRENADE_LAUNCHER: case IT_ROCKET_LAUNCHER:
|
case IT_GRENADE_LAUNCHER: case IT_ROCKET_LAUNCHER:
|
||||||
sprintf(macro_buf, "%i", cl.stats[STAT_ROCKETS]);
|
sprintf(macro_buf, "%i", cl.stats[0][STAT_ROCKETS]);
|
||||||
return macro_buf;
|
return macro_buf;
|
||||||
|
|
||||||
case IT_LIGHTNING:
|
case IT_LIGHTNING:
|
||||||
sprintf(macro_buf, "%i", cl.stats[STAT_CELLS]);
|
sprintf(macro_buf, "%i", cl.stats[0][STAT_CELLS]);
|
||||||
return macro_buf;
|
return macro_buf;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -518,7 +521,7 @@ char *Macro_Date (void)
|
||||||
ptm = localtime (&t);
|
ptm = localtime (&t);
|
||||||
if (!ptm)
|
if (!ptm)
|
||||||
return "#bad date#";
|
return "#bad date#";
|
||||||
strftime (macro_buf, sizeof(macro_buf)-1, "%d.%m.%y", ptm);
|
strftime (macro_buf, sizeof(macro_buf)-1, "%d.%m.%Y", ptm);
|
||||||
return macro_buf;
|
return macro_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1037,7 +1040,7 @@ char *TP_LocationName (vec3_t location)
|
||||||
float dist, mindist;
|
float dist, mindist;
|
||||||
vec3_t vec;
|
vec3_t vec;
|
||||||
static qbool recursive;
|
static qbool recursive;
|
||||||
char *buf;
|
static char buf[1024];
|
||||||
|
|
||||||
if (!loc_numentries || (cls.state != ca_active))
|
if (!loc_numentries || (cls.state != ca_active))
|
||||||
return tp_name_someplace.string;
|
return tp_name_someplace.string;
|
||||||
|
@ -1058,7 +1061,7 @@ char *TP_LocationName (vec3_t location)
|
||||||
}
|
}
|
||||||
|
|
||||||
recursive = true;
|
recursive = true;
|
||||||
buf = Cmd_ExpandString (locdata[minnum].name, RESTRICT_LOCAL);
|
Cmd_ExpandString (locdata[minnum].name, buf, sizeof(buf), Cmd_ExecLevel);
|
||||||
recursive = false;
|
recursive = false;
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
|
@ -2431,5 +2434,73 @@ void TP_Init (void)
|
||||||
Cmd_AddCommand ("tp_took", TP_Took_f);
|
Cmd_AddCommand ("tp_took", TP_Took_f);
|
||||||
Cmd_AddCommand ("tp_pickup", TP_Pickup_f);
|
Cmd_AddCommand ("tp_pickup", TP_Pickup_f);
|
||||||
Cmd_AddCommand ("tp_point", TP_Point_f);
|
Cmd_AddCommand ("tp_point", TP_Point_f);
|
||||||
|
|
||||||
|
TP_InitMacros();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void CL_Say (qboolean team)
|
||||||
|
{
|
||||||
|
extern cvar_t cl_fakename;
|
||||||
|
char text[1024], sendtext[1024], *s;
|
||||||
|
|
||||||
|
if (Cmd_Argc() < 2)
|
||||||
|
{
|
||||||
|
if (team)
|
||||||
|
Con_Printf ("%s <text>: send a team message\n", Cmd_Argv(0));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cls.state == ca_disconnected)
|
||||||
|
{
|
||||||
|
Con_Printf ("Can't \"%s\", not connected\n", Cmd_Argv(0));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
|
SZ_Print (&cls.netchan.message, team ? "say_team " : "say ");
|
||||||
|
|
||||||
|
s = TP_ParseMacroString (Cmd_Args());
|
||||||
|
Q_strncpyz (text, TP_ParseFunChars (s, true), sizeof(text));
|
||||||
|
|
||||||
|
sendtext[0] = 0;
|
||||||
|
if (team && !cl.spectator && cl_fakename.string[0] &&
|
||||||
|
!strchr(s, '\x0d') /* explicit $\ in message overrides cl_fakename */)
|
||||||
|
{
|
||||||
|
char buf[1024];
|
||||||
|
Cmd_ExpandString (cl_fakename.string, buf, sizeof(buf), Cmd_ExecLevel);
|
||||||
|
strcpy (buf, TP_ParseMacroString (buf));
|
||||||
|
Q_snprintfz (sendtext, sizeof(sendtext), "\x0d%s: ", TP_ParseFunChars(buf, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
strlcat (sendtext, text, sizeof(sendtext));
|
||||||
|
|
||||||
|
if (sendtext[0] < 32)
|
||||||
|
SZ_Print (&cls.netchan.message, "\""); // add quotes so that old servers parse the message correctly
|
||||||
|
|
||||||
|
SZ_Print (&cls.netchan.message, sendtext);
|
||||||
|
|
||||||
|
if (sendtext[0] < 32)
|
||||||
|
SZ_Print (&cls.netchan.message, "\""); // add quotes so that old servers parse the message correctly
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CL_Say_f (void)
|
||||||
|
{
|
||||||
|
CL_Say (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CL_SayTeam_f (void)
|
||||||
|
{
|
||||||
|
CL_Say (true);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ void Cmd_AddMacro(char *s, char *(*f)(void))
|
||||||
macro_commands[macro_count++].func = f;
|
macro_commands[macro_count++].func = f;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *TP_MacroString (char *s)
|
char *TP_MacroString (char *s, int *len)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
macro_command_t *macro;
|
macro_command_t *macro;
|
||||||
|
@ -90,6 +90,8 @@ char *TP_MacroString (char *s)
|
||||||
macro = ¯o_commands[i];
|
macro = ¯o_commands[i];
|
||||||
if (!Q_strcasecmp(s, macro->name))
|
if (!Q_strcasecmp(s, macro->name))
|
||||||
{
|
{
|
||||||
|
if (len)
|
||||||
|
*len = strlen(macro->name);
|
||||||
return macro->func();
|
return macro->func();
|
||||||
}
|
}
|
||||||
macro++;
|
macro++;
|
||||||
|
@ -1000,8 +1002,7 @@ If not SERVERONLY, also expands $macro expressions
|
||||||
Note: dest must point to a 1024 byte buffer
|
Note: dest must point to a 1024 byte buffer
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
char *TP_MacroString (char *s);
|
char *Cmd_ExpandString (char *data, char *dest, int destlen, int maxaccesslevel)
|
||||||
void Cmd_ExpandString (char *data, char *dest)
|
|
||||||
{
|
{
|
||||||
unsigned int c;
|
unsigned int c;
|
||||||
char buf[255];
|
char buf[255];
|
||||||
|
@ -1009,10 +1010,9 @@ void Cmd_ExpandString (char *data, char *dest)
|
||||||
cvar_t *var, *bestvar;
|
cvar_t *var, *bestvar;
|
||||||
int quotes = 0;
|
int quotes = 0;
|
||||||
char *str;
|
char *str;
|
||||||
int name_length;
|
char *bestmacro;
|
||||||
#ifndef SERVERONLY
|
int name_length, macro_length;
|
||||||
extern int macro_length;
|
qboolean striptrailing;
|
||||||
#endif
|
|
||||||
|
|
||||||
len = 0;
|
len = 0;
|
||||||
|
|
||||||
|
@ -1025,10 +1025,14 @@ void Cmd_ExpandString (char *data, char *dest)
|
||||||
{
|
{
|
||||||
data++;
|
data++;
|
||||||
|
|
||||||
|
striptrailing = *data == '-';
|
||||||
|
|
||||||
// Copy the text after '$' to a temp buffer
|
// Copy the text after '$' to a temp buffer
|
||||||
i = 0;
|
i = 0;
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
bestvar = NULL;
|
bestvar = NULL;
|
||||||
|
bestmacro = NULL;
|
||||||
|
macro_length=0;
|
||||||
while ((c = *data) > 32)
|
while ((c = *data) > 32)
|
||||||
{
|
{
|
||||||
if (c == '$')
|
if (c == '$')
|
||||||
|
@ -1036,33 +1040,37 @@ void Cmd_ExpandString (char *data, char *dest)
|
||||||
data++;
|
data++;
|
||||||
buf[i++] = c;
|
buf[i++] = c;
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
if ( (var = Cvar_FindVar(buf)) != NULL )
|
if ( (var = Cvar_FindVar(buf+striptrailing)) != NULL )
|
||||||
|
{
|
||||||
|
if (var->restriction <= maxaccesslevel)
|
||||||
bestvar = var;
|
bestvar = var;
|
||||||
}
|
}
|
||||||
|
#ifdef SERVERONLY
|
||||||
|
if ((str = TP_MacroString (buf+striptrailing, ¯o_length)))
|
||||||
|
bestmacro = str;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef SERVERONLY
|
if (bestmacro)
|
||||||
if (dedicated)
|
{
|
||||||
str = NULL;
|
str = bestmacro;
|
||||||
else {
|
|
||||||
str = TP_MacroString (buf);
|
|
||||||
name_length = macro_length;
|
name_length = macro_length;
|
||||||
}
|
}
|
||||||
if (bestvar && (!str || (strlen(bestvar->name) > macro_length))) {
|
else if (bestvar)
|
||||||
|
{
|
||||||
str = bestvar->string;
|
str = bestvar->string;
|
||||||
name_length = strlen(bestvar->name);
|
name_length = strlen(bestvar->name);
|
||||||
}
|
}
|
||||||
#else
|
else
|
||||||
if (bestvar) {
|
{
|
||||||
str = bestvar->string;
|
|
||||||
name_length = strlen(bestvar->name);
|
|
||||||
} else
|
|
||||||
str = NULL;
|
str = NULL;
|
||||||
#endif
|
name_length = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (str)
|
if (str)
|
||||||
{
|
{
|
||||||
// check buffer size
|
// check buffer size
|
||||||
if (len + strlen(str) >= 1024-1)
|
if (len + strlen(str) >= destlen-1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
strcpy(&dest[len], str);
|
strcpy(&dest[len], str);
|
||||||
|
@ -1070,12 +1078,16 @@ void Cmd_ExpandString (char *data, char *dest)
|
||||||
i = name_length;
|
i = name_length;
|
||||||
while (buf[i])
|
while (buf[i])
|
||||||
dest[len++] = buf[i++];
|
dest[len++] = buf[i++];
|
||||||
|
|
||||||
|
if (striptrailing && !*str)
|
||||||
|
while(*data <= ' ' && *data)
|
||||||
|
data++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// no matching cvar or macro
|
// no matching cvar or macro
|
||||||
dest[len++] = '$';
|
dest[len++] = '$';
|
||||||
if (len + strlen(buf) >= 1024-1)
|
if (len + strlen(buf) >= destlen-1)
|
||||||
break;
|
break;
|
||||||
strcpy (&dest[len], buf);
|
strcpy (&dest[len], buf);
|
||||||
len += strlen(buf);
|
len += strlen(buf);
|
||||||
|
@ -1086,12 +1098,14 @@ void Cmd_ExpandString (char *data, char *dest)
|
||||||
dest[len] = c;
|
dest[len] = c;
|
||||||
data++;
|
data++;
|
||||||
len++;
|
len++;
|
||||||
if (len >= 1024-1)
|
if (len >= destlen-1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
dest[len] = 0;
|
dest[len] = 0;
|
||||||
|
|
||||||
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -1153,7 +1167,7 @@ char *Cmd_ExpandString (char *input, int maxaccesslevel)
|
||||||
}
|
}
|
||||||
if (maxaccesslevel == RESTRICT_LOCAL) //don't expand without full rights. (prevents a few loopholes)
|
if (maxaccesslevel == RESTRICT_LOCAL) //don't expand without full rights. (prevents a few loopholes)
|
||||||
{
|
{
|
||||||
macro = TP_MacroString(name);
|
macro = TP_MacroString(name, NULL);
|
||||||
if (macro)
|
if (macro)
|
||||||
{
|
{
|
||||||
memmove(s+strlen(macro), s+i+1, len-c-i);
|
memmove(s+strlen(macro), s+i+1, len-c-i);
|
||||||
|
@ -1647,9 +1661,11 @@ void Cmd_ExecuteString (char *text, int level)
|
||||||
cmd_function_t *cmd;
|
cmd_function_t *cmd;
|
||||||
cmdalias_t *a;
|
cmdalias_t *a;
|
||||||
|
|
||||||
|
static char dest[8192];
|
||||||
|
|
||||||
Cmd_ExecLevel = level;
|
Cmd_ExecLevel = level;
|
||||||
|
|
||||||
text = Cmd_ExpandString(text, level);
|
text = Cmd_ExpandString(text, dest, sizeof(dest), level);
|
||||||
Cmd_TokenizeString (text);
|
Cmd_TokenizeString (text);
|
||||||
|
|
||||||
// execute the command line
|
// execute the command line
|
||||||
|
|
|
@ -133,7 +133,7 @@ void Cmd_StuffCmds_f (void);
|
||||||
|
|
||||||
void Cmd_ShiftArgs (int ammount);
|
void Cmd_ShiftArgs (int ammount);
|
||||||
|
|
||||||
char *Cmd_ExpandString (char *input, int maxaccesslevel);
|
char *Cmd_ExpandString (char *data, char *dest, int destlen, int maxaccesslevel);
|
||||||
|
|
||||||
extern cvar_t rcon_level;
|
extern cvar_t rcon_level;
|
||||||
|
|
||||||
|
|
|
@ -21,12 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#ifdef SERVERONLY
|
|
||||||
#include "qwsvdef.h"
|
|
||||||
#else
|
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
#ifdef RGLQUAKE
|
||||||
#include "glquake.h"
|
#include "glquake.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MAX_Q3MAP_INDICES 0x80000
|
#define MAX_Q3MAP_INDICES 0x80000
|
||||||
#define MAX_Q3MAP_VERTEXES 0x80000
|
#define MAX_Q3MAP_VERTEXES 0x80000
|
||||||
|
|
|
@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
#define ID_INLINE
|
#define ID_INLINE
|
||||||
|
|
||||||
#define VALUE(a) ((int )(a))
|
#define VALUE(a) (*(int *)&(a))
|
||||||
#define NODE(a) ((void*)(a))
|
#define NODE(a) ((void*)(a))
|
||||||
|
|
||||||
#define NODE_START NODE( 1)
|
#define NODE_START NODE( 1)
|
||||||
|
|
|
@ -33,6 +33,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
void Cache_FreeLow (int new_low_hunk);
|
void Cache_FreeLow (int new_low_hunk);
|
||||||
void Cache_FreeHigh (int new_high_hunk);
|
void Cache_FreeHigh (int new_high_hunk);
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#define MEMDEBUG 8192 //Debugging adds sentinels (the number is the size - I have the ram)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MEMDEBUG
|
||||||
|
#define MEMDEBUG 0 //needs to be defined because it makes some bits of code simpler
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if MEMDEBUG > 0
|
||||||
|
qbyte sentinalkey;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -123,10 +135,31 @@ int Z_Allocated(void)
|
||||||
void Z_Free (void *c)
|
void Z_Free (void *c)
|
||||||
{
|
{
|
||||||
zone_t *nz;
|
zone_t *nz;
|
||||||
nz = ((zone_t *)c)-1;
|
nz = ((zone_t *)((char*)c-MEMDEBUG))-1;
|
||||||
|
|
||||||
// Z_CheckSentinals();
|
// Z_CheckSentinals();
|
||||||
|
|
||||||
|
#if MEMDEBUG>0
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
qbyte *buf;
|
||||||
|
buf = (qbyte *)(nz+1);
|
||||||
|
for (i = 0; i < MEMDEBUG; i++)
|
||||||
|
{
|
||||||
|
if (buf[i] != sentinalkey)
|
||||||
|
*(int*)0 = -3; //force a crash... this'll get our attention.
|
||||||
|
}
|
||||||
|
buf+=MEMDEBUG;
|
||||||
|
//app data
|
||||||
|
buf += nz->size;
|
||||||
|
for (i = 0; i < MEMDEBUG; i++)
|
||||||
|
{
|
||||||
|
if (buf[i] != sentinalkey)
|
||||||
|
*(int*)0 = -3; //force a crash... this'll get our attention.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// if (nz->sentinal1 != ZONESENTINAL || nz->sentinal2 != ZONESENTINAL)
|
// if (nz->sentinal1 != ZONESENTINAL || nz->sentinal2 != ZONESENTINAL)
|
||||||
// Sys_Error("zone was not z_malloced\n");
|
// Sys_Error("zone was not z_malloced\n");
|
||||||
|
|
||||||
|
@ -148,7 +181,7 @@ void Z_FreeTags(int tag)
|
||||||
{
|
{
|
||||||
next = zone->next;
|
next = zone->next;
|
||||||
if (zone->tag == tag)
|
if (zone->tag == tag)
|
||||||
Z_Free(zone+1);
|
Z_Free((char*)(zone+1)+MEMDEBUG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,9 +209,9 @@ void *Z_BaseTagMalloc (int size, int tag, qboolean clear)
|
||||||
vsprintf (buffer, descrip,argptr);
|
vsprintf (buffer, descrip,argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
|
||||||
nt = malloc(size + sizeof(zone_t)+strlen(buffer)+1);
|
nt = malloc(size + sizeof(zone_t)+strlen(buffer)+1 + MEMDEBUG*2);
|
||||||
#else
|
#else
|
||||||
nt = malloc(size + sizeof(zone_t));
|
nt = malloc(size + sizeof(zone_t)+ MEMDEBUG*2);
|
||||||
#endif
|
#endif
|
||||||
if (!nt)
|
if (!nt)
|
||||||
Sys_Error("Z_BaseTagMalloc: failed on allocation of %i bytes", size);
|
Sys_Error("Z_BaseTagMalloc: failed on allocation of %i bytes", size);
|
||||||
|
@ -192,11 +225,18 @@ void *Z_BaseTagMalloc (int size, int tag, qboolean clear)
|
||||||
zone_head->prev = nt;
|
zone_head->prev = nt;
|
||||||
zone_head = nt;
|
zone_head = nt;
|
||||||
buf = (void *)(nt+1);
|
buf = (void *)(nt+1);
|
||||||
|
|
||||||
|
#if MEMDEBUG > 0
|
||||||
|
memset(buf, sentinalkey, MEMDEBUG);
|
||||||
|
buf = (char*)buf+MEMDEBUG;
|
||||||
|
memset((char*)buf+size, sentinalkey, MEMDEBUG);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
Q_memset(buf, 0, size);
|
Q_memset(buf, 0, size);
|
||||||
|
|
||||||
#ifdef NAMEDMALLOCS
|
#ifdef NAMEDMALLOCS
|
||||||
strcpy((char *)(nt+1) + nt->size, buffer);
|
strcpy((char *)(nt+1) + nt->size + MEMDEBUG*2, buffer);
|
||||||
#endif
|
#endif
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
@ -253,8 +293,8 @@ void *BZ_Realloc(void *data, int newsize)
|
||||||
zone_t *oldzone;
|
zone_t *oldzone;
|
||||||
void *newdata;
|
void *newdata;
|
||||||
if (!data)
|
if (!data)
|
||||||
return BZ_Malloc(newsize);
|
return Z_Malloc(newsize);
|
||||||
oldzone = ((zone_t *)data)-1;
|
oldzone = ((zone_t *)((char *)data-MEMDEBUG))-1;
|
||||||
newdata = BZ_Malloc(newsize);
|
newdata = BZ_Malloc(newsize);
|
||||||
if (oldzone->size < newsize)
|
if (oldzone->size < newsize)
|
||||||
{
|
{
|
||||||
|
@ -863,11 +903,12 @@ Hunk_HighAllocName
|
||||||
*/
|
*/
|
||||||
void *Hunk_HighAllocName (int size, char *name)
|
void *Hunk_HighAllocName (int size, char *name)
|
||||||
{
|
{
|
||||||
hunk_t *h;
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
Sys_Error("High hunk was disabled");
|
Sys_Error("High hunk was disabled");
|
||||||
#endif
|
return NULL;
|
||||||
|
#else
|
||||||
|
|
||||||
|
hunk_t *h;
|
||||||
|
|
||||||
if (size < 0)
|
if (size < 0)
|
||||||
Sys_Error ("Hunk_HighAllocName: bad size: %i", size);
|
Sys_Error ("Hunk_HighAllocName: bad size: %i", size);
|
||||||
|
@ -901,6 +942,7 @@ void *Hunk_HighAllocName (int size, char *name)
|
||||||
Q_strncpyz (h->name, name, sizeof(h->name));
|
Q_strncpyz (h->name, name, sizeof(h->name));
|
||||||
|
|
||||||
return (void *)(h+1);
|
return (void *)(h+1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -915,6 +957,9 @@ clears old temp.
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
typedef struct hnktemps_s {
|
typedef struct hnktemps_s {
|
||||||
struct hnktemps_s *next;
|
struct hnktemps_s *next;
|
||||||
|
#if MEMDEBUG>0
|
||||||
|
int len;
|
||||||
|
#endif
|
||||||
} hnktemps_t;
|
} hnktemps_t;
|
||||||
hnktemps_t *hnktemps;
|
hnktemps_t *hnktemps;
|
||||||
|
|
||||||
|
@ -924,7 +969,27 @@ void Hunk_TempFree(void)
|
||||||
|
|
||||||
while (hnktemps)
|
while (hnktemps)
|
||||||
{
|
{
|
||||||
|
#if MEMDEBUG>0
|
||||||
|
int i;
|
||||||
|
qbyte *buf;
|
||||||
|
buf = (qbyte *)(hnktemps+1);
|
||||||
|
for (i = 0; i < MEMDEBUG; i++)
|
||||||
|
{
|
||||||
|
if (buf[i] != sentinalkey)
|
||||||
|
*(int*)0 = -3; //force a crash... this'll get our attention.
|
||||||
|
}
|
||||||
|
buf+=MEMDEBUG;
|
||||||
|
//app data
|
||||||
|
buf += hnktemps->len;
|
||||||
|
for (i = 0; i < MEMDEBUG; i++)
|
||||||
|
{
|
||||||
|
if (buf[i] != sentinalkey)
|
||||||
|
*(int*)0 = -3; //force a crash... this'll get our attention.
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
nt = hnktemps->next;
|
nt = hnktemps->next;
|
||||||
|
|
||||||
free(hnktemps);
|
free(hnktemps);
|
||||||
hnktemps = nt;
|
hnktemps = nt;
|
||||||
}
|
}
|
||||||
|
@ -938,6 +1003,19 @@ void *Hunk_TempAllocMore (int size)
|
||||||
{
|
{
|
||||||
void *buf;
|
void *buf;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
#if MEMDEBUG>0
|
||||||
|
hnktemps_t *nt;
|
||||||
|
nt = malloc(size + sizeof(hnktemps_t) + MEMDEBUG*2);
|
||||||
|
nt->next = hnktemps;
|
||||||
|
nt->len = size;
|
||||||
|
hnktemps = nt;
|
||||||
|
buf = (void *)(nt+1);
|
||||||
|
memset(buf, sentinalkey, MEMDEBUG);
|
||||||
|
buf = (char *)buf + MEMDEBUG;
|
||||||
|
memset(buf, 0, size);
|
||||||
|
memset((char *)buf + size, sentinalkey, MEMDEBUG);
|
||||||
|
return buf;
|
||||||
|
#else
|
||||||
hnktemps_t *nt;
|
hnktemps_t *nt;
|
||||||
nt = malloc(size + sizeof(hnktemps_t));
|
nt = malloc(size + sizeof(hnktemps_t));
|
||||||
nt->next = hnktemps;
|
nt->next = hnktemps;
|
||||||
|
@ -945,6 +1023,7 @@ void *Hunk_TempAllocMore (int size)
|
||||||
buf = (void *)(nt+1);
|
buf = (void *)(nt+1);
|
||||||
memset(buf, 0, size);
|
memset(buf, 0, size);
|
||||||
return buf;
|
return buf;
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
|
|
||||||
if (!hunk_tempactive)
|
if (!hunk_tempactive)
|
||||||
|
@ -1491,6 +1570,10 @@ void Memory_Init (void *buf, int size)
|
||||||
hunk_low_used = 0;
|
hunk_low_used = 0;
|
||||||
hunk_high_used = 0;
|
hunk_high_used = 0;
|
||||||
|
|
||||||
|
#if MEMDEBUG > 0
|
||||||
|
sentinalkey = rand();
|
||||||
|
#endif
|
||||||
|
|
||||||
Cache_Init ();
|
Cache_Init ();
|
||||||
|
|
||||||
#ifndef NOZONE
|
#ifndef NOZONE
|
||||||
|
|
|
@ -51,7 +51,7 @@ RSC=rc.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||||
# ADD CPP /nologo /G6 /W3 /GX /O2 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "NDEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "SWQUAKE" /FR /YX /FD /c
|
# ADD CPP /nologo /G6 /W3 /GX /O2 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /I "../libs/dxsdk7/include" /D "NDEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "SWQUAKE" /FR /YX /FD /c
|
||||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
@ -77,7 +77,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||||
# ADD CPP /nologo /G6 /ML /W3 /Gm /GX /ZI /Od /I "../client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SWQUAKE" /FR".\Debug/" /Fp".\Debug/qwcl.pch" /YX /Fo".\Debug/" /Fd".\Debug/" /FD /c
|
# ADD CPP /nologo /G6 /ML /W3 /Gm /GX /ZI /Od /I "../client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /I "../libs/dxsdk7/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SWQUAKE" /FR".\Debug/" /Fp".\Debug/qwcl.pch" /YX /Fo".\Debug/" /Fd".\Debug/" /FD /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
@ -103,7 +103,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||||
# ADD CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "_DEBUG" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /D "AVAIL_OGGVORBIS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
# ADD CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /I "../libs/dxsdk7/include" /D "_DEBUG" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /D "AVAIL_OGGVORBIS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
||||||
# SUBTRACT CPP /X
|
# SUBTRACT CPP /X
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
|
@ -132,7 +132,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\client" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\client" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||||
# ADD CPP /nologo /G6 /Gr /W3 /GX /O2 /Ob2 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "NDEBUG" /D "_MBCS" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /FR /YX /FD /c
|
# ADD CPP /nologo /G6 /Gr /W3 /GX /O2 /Ob2 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /I "../libs/dxsdk7/include" /D "NDEBUG" /D "_MBCS" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /FR /YX /FD /c
|
||||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
@ -159,7 +159,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client\gltod3d\sdk7\include" /I "..\client\gltod3d\D3DFrame" /I "..\dxsdk\sdk\inc" /I "..\scitech\include" /I "..\client" /D "NQPROT" /D "_DEBUG" /D "GLQUAKE" /D "SERVERDLL" /D "WIN32" /D "_WINDOWS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
# ADD BASE CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client\gltod3d\sdk7\include" /I "..\client\gltod3d\D3DFrame" /I "..\dxsdk\sdk\inc" /I "..\scitech\include" /I "..\client" /D "NQPROT" /D "_DEBUG" /D "GLQUAKE" /D "SERVERDLL" /D "WIN32" /D "_WINDOWS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
||||||
# ADD CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "GLQUAKE" /D "SWQUAKE" /D "AVAIL_DX7" /Fr /Fp".\MDebug/qwcl.pch" /YX /FD /c
|
# ADD CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../libs/dxsdk7/include" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "GLQUAKE" /D "SWQUAKE" /D "AVAIL_DX7" /D "ZQUAKETEAMPLAY" /Fr /Fp".\MDebug/qwcl.pch" /YX"quakedef.h" /FD /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
@ -170,7 +170,7 @@ BSC32=bscmake.exe
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:windows /pdb:".\GLDebug/dglqwcl.pdb" /debug /machine:I386 /out:"../../../fteglqw.exe"
|
# ADD BASE LINK32 comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:windows /pdb:".\GLDebug/dglqwcl.pdb" /debug /machine:I386 /out:"../../../fteglqw.exe"
|
||||||
# SUBTRACT BASE LINK32 /pdb:none
|
# SUBTRACT BASE LINK32 /pdb:none
|
||||||
# ADD LINK32 comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:windows /pdb:".\MDebug/dglqwcl.pdb" /debug /machine:I386 /out:"../../../ftemqw.exe"
|
# ADD LINK32 comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:windows /pdb:".\MDebug/dglqwcl.pdb" /debug /machine:I386 /out:"../../ftemqw.exe"
|
||||||
# SUBTRACT LINK32 /profile /pdb:none
|
# SUBTRACT LINK32 /profile /pdb:none
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "ftequake - Win32 MRelease"
|
!ELSEIF "$(CFG)" == "ftequake - Win32 MRelease"
|
||||||
|
@ -188,7 +188,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\client\gltod3d\sdk7\include" /I "..\client\gltod3d\D3DFrame" /I "..\dxsdk\sdk\inc" /I "..\scitech\include" /I "..\client" /D "NOSOUNDASM" /D "NDEBUG" /D "_MBCS" /D "GLQUAKE" /D "SERVERDLL" /D "NQPROT" /D "WIN32" /D "_WINDOWS" /FR /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\client\gltod3d\sdk7\include" /I "..\client\gltod3d\D3DFrame" /I "..\dxsdk\sdk\inc" /I "..\scitech\include" /I "..\client" /D "NOSOUNDASM" /D "NDEBUG" /D "_MBCS" /D "GLQUAKE" /D "SERVERDLL" /D "NQPROT" /D "WIN32" /D "_WINDOWS" /FR /YX /FD /c
|
||||||
# ADD CPP /nologo /G6 /GX /O2 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "NDEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "GLQUAKE" /D "SWQUAKE" /Fr /YX /FD /c
|
# ADD CPP /nologo /G6 /GX /O2 /I "..\client" /I "../libs/dxsdk7/include" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "NDEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "GLQUAKE" /D "SWQUAKE" /D "AVAIL_DX7" /D "ZQUAKETEAMPLAY" /Fr /YX /FD /c
|
||||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
@ -215,7 +215,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client\gltod3d\sdk7\include" /I "..\client\gltod3d\D3DFrame" /I "..\dxsdk\sdk\inc" /I "..\scitech\include" /I "..\client" /D "NQPROT" /D "_DEBUG" /D "GLQUAKE" /D "SERVERDLL" /D "WIN32" /D "_WINDOWS" /D "Q2SERVER" /D "DYNAMIC_ENTS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
# ADD BASE CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client\gltod3d\sdk7\include" /I "..\client\gltod3d\D3DFrame" /I "..\dxsdk\sdk\inc" /I "..\scitech\include" /I "..\client" /D "NQPROT" /D "_DEBUG" /D "GLQUAKE" /D "SERVERDLL" /D "WIN32" /D "_WINDOWS" /D "Q2SERVER" /D "DYNAMIC_ENTS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
||||||
# ADD CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "MINIMAL" /D "_DEBUG" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
# ADD CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /I "../libs/dxsdk7/include" /D "MINIMAL" /D "_DEBUG" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
@ -244,7 +244,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /G6 /Gr /W3 /GX /O2 /Ob2 /I "..\client\gltod3d\sdk7\include" /I "..\client\gltod3d\D3DFrame" /I "..\dxsdk\sdk\inc" /I "..\scitech\include" /I "..\client" /D "NOSOUNDASM" /D "NDEBUG" /D "_MBCS" /D "GLQUAKE" /D "SERVERDLL" /D "NQPROT" /D "WIN32" /D "_WINDOWS" /D "Q2SERVER" /D "DYNAMIC_ENTS" /FR /YX /FD /c
|
# ADD BASE CPP /nologo /G6 /Gr /W3 /GX /O2 /Ob2 /I "..\client\gltod3d\sdk7\include" /I "..\client\gltod3d\D3DFrame" /I "..\dxsdk\sdk\inc" /I "..\scitech\include" /I "..\client" /D "NOSOUNDASM" /D "NDEBUG" /D "_MBCS" /D "GLQUAKE" /D "SERVERDLL" /D "NQPROT" /D "WIN32" /D "_WINDOWS" /D "Q2SERVER" /D "DYNAMIC_ENTS" /FR /YX /FD /c
|
||||||
# ADD CPP /nologo /G6 /Gr /W3 /GX /O2 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "MINIMAL" /D "NDEBUG" /D "_MBCS" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /FR /YX /FD /c
|
# ADD CPP /nologo /G6 /Gr /W3 /GX /O2 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /I "../libs/dxsdk7/include" /D "MINIMAL" /D "NDEBUG" /D "_MBCS" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /FR /YX /FD /c
|
||||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||||
|
@ -271,7 +271,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "MINIMAL" /D "_DEBUG" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
# ADD BASE CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "MINIMAL" /D "_DEBUG" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
||||||
# ADD CPP /nologo /G6 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "MINIMAL" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SERVERONLY" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
# ADD CPP /nologo /G6 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /I "../libs/dxsdk7/include" /D "MINIMAL" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SERVERONLY" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
@ -282,7 +282,7 @@ BSC32=bscmake.exe
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:windows /pdb:".\GLDebug/dglqwcl.pdb" /debug /machine:I386 /out:"../../../fteminglqw.exe"
|
# ADD BASE LINK32 comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:windows /pdb:".\GLDebug/dglqwcl.pdb" /debug /machine:I386 /out:"../../../fteminglqw.exe"
|
||||||
# SUBTRACT BASE LINK32 /pdb:none
|
# SUBTRACT BASE LINK32 /pdb:none
|
||||||
# ADD LINK32 comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /pdb:".\GLDebug/dglqwcl.pdb" /debug /machine:I386 /out:"../../../fteminglqw.exe"
|
# ADD LINK32 comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /subsystem:console /pdb:".\GLDebug/dglqwcl.pdb" /debug /machine:I386 /out:"../../fteqwsv.exe"
|
||||||
# SUBTRACT LINK32 /pdb:none
|
# SUBTRACT LINK32 /pdb:none
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "ftequake - Win32 Release Dedicated Server"
|
!ELSEIF "$(CFG)" == "ftequake - Win32 Release Dedicated Server"
|
||||||
|
@ -300,7 +300,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "MINIMAL" /D "_DEBUG" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /D "SERVERONLY" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
# ADD BASE CPP /nologo /G5 /ML /W3 /GX /ZI /Od /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "MINIMAL" /D "_DEBUG" /D "GLQUAKE" /D "WIN32" /D "_WINDOWS" /D "SERVERONLY" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
||||||
# ADD CPP /nologo /G6 /ML /W3 /GX /O1 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /D "MINIMAL" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SERVERONLY" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
# ADD CPP /nologo /G6 /ML /W3 /GX /O1 /I "..\client" /I "../common" /I "../server" /I "../gl" /I "../sw" /I "../qclib" /I "../libs" /I "../libs/dxsdk7/include" /D "MINIMAL" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SERVERONLY" /FR".\GLDebug/" /Fp".\GLDebug/qwcl.pch" /YX /Fo".\GLDebug/" /Fd".\GLDebug/" /FD /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||||
|
@ -6492,8 +6492,8 @@ SOURCE=..\client\winquake.rc
|
||||||
|
|
||||||
!IF "$(CFG)" == "ftequake - Win32 Release"
|
!IF "$(CFG)" == "ftequake - Win32 Release"
|
||||||
|
|
||||||
# ADD BASE RSC /l 0x809 /i "\ftetgcvs\sourceforge\engine\client" /i "\ftetgcvs\temp\client" /i "\ftetgcvs\fte\QW\client"
|
# ADD BASE RSC /l 0x809 /i "\ftetgcvs\source\client" /i "\ftetgcvs\temp\client" /i "\ftetgcvs\fte\QW\client"
|
||||||
# ADD RSC /l 0x809 /i "\ftetgcvs\sourceforge\engine\client" /i "\ftetgcvs\temp\client" /i "\ftetgcvs\fte\QW\client" /d "MINIMAL"
|
# ADD RSC /l 0x809 /i "\ftetgcvs\source\client" /i "\ftetgcvs\temp\client" /i "\ftetgcvs\fte\QW\client" /d "MINIMAL"
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "ftequake - Win32 Debug"
|
!ELSEIF "$(CFG)" == "ftequake - Win32 Debug"
|
||||||
|
|
||||||
|
@ -6529,6 +6529,10 @@ SOURCE=..\client\winquake.rc
|
||||||
|
|
||||||
SOURCE=..\common\bothdefs.h
|
SOURCE=..\common\bothdefs.h
|
||||||
# End Source File
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\common\protocol.h
|
||||||
|
# End Source File
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Group "Resource Files"
|
# Begin Group "Resource Files"
|
||||||
|
|
||||||
|
|
|
@ -135,15 +135,15 @@ static void R_LerpFrames(mesh_t *mesh, galiaspose_t *p1, galiaspose_t *p2, float
|
||||||
int temp;
|
int temp;
|
||||||
vec3_t *p1v, *p2v;
|
vec3_t *p1v, *p2v;
|
||||||
vec3_t *p1n, *p2n;
|
vec3_t *p1n, *p2n;
|
||||||
(char *)p1v = (char *)p1 + p1->ofsverts;
|
p1v = (vec3_t *)((char *)p1 + p1->ofsverts);
|
||||||
(char *)p2v = (char *)p2 + p2->ofsverts;
|
p2v = (vec3_t *)((char *)p2 + p2->ofsverts);
|
||||||
|
|
||||||
(char *)p1n = (char *)p1 + p1->ofsnormals;
|
p1n = (vec3_t *)((char *)p1 + p1->ofsnormals);
|
||||||
(char *)p2n = (char *)p2 + p2->ofsnormals;
|
p2n = (vec3_t *)((char *)p2 + p2->ofsnormals);
|
||||||
|
|
||||||
if (p1v == p2v || r_nolerp.value)
|
if (p1v == p2v || r_nolerp.value)
|
||||||
{
|
{
|
||||||
(char *)mesh->normals_array = (char *)p1 + p1->ofsnormals;
|
mesh->normals_array = (vec3_t*)((char *)p1 + p1->ofsnormals);
|
||||||
if (r_nolightdir.value)
|
if (r_nolightdir.value)
|
||||||
{
|
{
|
||||||
for (i = 0; i < mesh->numvertexes; i++)
|
for (i = 0; i < mesh->numvertexes; i++)
|
||||||
|
@ -375,18 +375,18 @@ static void R_GAliasBuildMesh(mesh_t *mesh, galiasinfo_t *inf, int frame1, int f
|
||||||
numTempVertexCoords = inf->numverts;
|
numTempVertexCoords = inf->numverts;
|
||||||
}
|
}
|
||||||
|
|
||||||
(char *)mesh->indexes = (char *)inf + inf->ofs_indexes;
|
mesh->indexes = (int*)((char *)inf + inf->ofs_indexes);
|
||||||
mesh->numindexes = inf->numindexes;
|
mesh->numindexes = inf->numindexes;
|
||||||
(char *)mesh->st_array = (char *)inf + inf->ofs_st_array;
|
mesh->st_array = (vec2_t*)((char *)inf + inf->ofs_st_array);
|
||||||
mesh->lmst_array = NULL;
|
mesh->lmst_array = NULL;
|
||||||
mesh->colors_array = tempColours;
|
mesh->colors_array = tempColours;
|
||||||
mesh->normals_array = tempNormals;
|
mesh->normals_array = tempNormals;
|
||||||
mesh->xyz_array = tempVertexCoords;
|
mesh->xyz_array = tempVertexCoords;
|
||||||
mesh->numvertexes = inf->numverts;
|
mesh->numvertexes = inf->numverts;
|
||||||
(char *)mesh->trneighbors = (char *)inf + inf->ofs_trineighbours;
|
mesh->trneighbors = (int *)((char *)inf + inf->ofs_trineighbours);
|
||||||
|
|
||||||
(char *)g1 = (char *)inf + inf->groupofs + sizeof(galiasgroup_t)*frame1;
|
g1 = (galiasgroup_t*)((char *)inf + inf->groupofs + sizeof(galiasgroup_t)*frame1);
|
||||||
(char *)g2 = (char *)inf + inf->groupofs + sizeof(galiasgroup_t)*frame2;
|
g2 = (galiasgroup_t*)((char *)inf + inf->groupofs + sizeof(galiasgroup_t)*frame2);
|
||||||
|
|
||||||
if (g1 == g2) //lerping within group is only done if not changing group
|
if (g1 == g2) //lerping within group is only done if not changing group
|
||||||
{
|
{
|
||||||
|
@ -610,7 +610,7 @@ static galiastexnum_t *GL_ChooseSkin(galiasinfo_t *inf, char *modelname, entity_
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(char *)skins = (char *)inf + inf->ofsskins;
|
skins = (galiasskin_t*)((char *)inf + inf->ofsskins);
|
||||||
if (e->skinnum >= 0 && e->skinnum < inf->numskins)
|
if (e->skinnum >= 0 && e->skinnum < inf->numskins)
|
||||||
skins += e->skinnum;
|
skins += e->skinnum;
|
||||||
|
|
||||||
|
@ -1283,7 +1283,7 @@ void R_DrawGAliasModelLighting (entity_t *e)
|
||||||
GL_DrawMesh(&mesh, NULL, 0, 0);
|
GL_DrawMesh(&mesh, NULL, 0, 0);
|
||||||
|
|
||||||
if (inf->nextsurf)
|
if (inf->nextsurf)
|
||||||
(char *)inf = (char *)inf + inf->nextsurf;
|
inf = (galiasinfo_t*)((char *)inf + inf->nextsurf);
|
||||||
else
|
else
|
||||||
inf = NULL;
|
inf = NULL;
|
||||||
}
|
}
|
||||||
|
@ -1356,7 +1356,7 @@ void R_DrawGAliasShadowVolume(entity_t *e, vec3_t lightpos, float radius)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inf->nextsurf)
|
if (inf->nextsurf)
|
||||||
(char *)inf = (char *)inf + inf->nextsurf;
|
inf = (galiasinfo_t*)((char *)inf + inf->nextsurf);
|
||||||
else
|
else
|
||||||
inf = NULL;
|
inf = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,8 @@ unsigned char *d_15to8table;
|
||||||
qboolean inited15to8;
|
qboolean inited15to8;
|
||||||
extern cvar_t crosshair, cl_crossx, cl_crossy, crosshaircolor;
|
extern cvar_t crosshair, cl_crossx, cl_crossy, crosshaircolor;
|
||||||
|
|
||||||
|
static int filmtexture;
|
||||||
|
|
||||||
extern cvar_t gl_nobind;
|
extern cvar_t gl_nobind;
|
||||||
extern cvar_t gl_max_size;
|
extern cvar_t gl_max_size;
|
||||||
extern cvar_t gl_picmip;
|
extern cvar_t gl_picmip;
|
||||||
|
@ -635,7 +637,6 @@ void GLDraw_ReInit (void)
|
||||||
extern int alphaskytexture;
|
extern int alphaskytexture;
|
||||||
extern int skyboxtex[6];
|
extern int skyboxtex[6];
|
||||||
extern int lightmap_textures;
|
extern int lightmap_textures;
|
||||||
extern int filmtexture;
|
|
||||||
|
|
||||||
int maxtexsize;
|
int maxtexsize;
|
||||||
|
|
||||||
|
@ -1741,6 +1742,180 @@ void GL_Set2D (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MediaGL_ShowFrame8bit(qbyte *framedata, int inwidth, int inheight, qbyte *palette) //bottom up
|
||||||
|
{
|
||||||
|
if (!filmtexture)
|
||||||
|
{
|
||||||
|
filmtexture=texture_extension_number;
|
||||||
|
texture_extension_number++;
|
||||||
|
}
|
||||||
|
|
||||||
|
GL_Set2D ();
|
||||||
|
|
||||||
|
GL_Bind(filmtexture);
|
||||||
|
GL_Upload8Pal24(framedata, palette, inwidth, inheight, false, false); //we may need to rescale the image
|
||||||
|
// glTexImage2D (GL_TEXTURE_2D, 0, 3, roqfilm->width, roqfilm->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, framedata);
|
||||||
|
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_max);
|
||||||
|
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max);
|
||||||
|
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
glDisable(GL_ALPHA_TEST);
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glTexCoord2f(0, 0);
|
||||||
|
glVertex2f(0, 0);
|
||||||
|
glTexCoord2f(0, 1);
|
||||||
|
glVertex2f(0, vid.height);
|
||||||
|
glTexCoord2f(1, 1);
|
||||||
|
glVertex2f(vid.width, vid.height);
|
||||||
|
glTexCoord2f(1, 0);
|
||||||
|
glVertex2f(vid.width, 0);
|
||||||
|
glEnd();
|
||||||
|
glEnable(GL_ALPHA_TEST);
|
||||||
|
|
||||||
|
|
||||||
|
SCR_SetUpToDrawConsole();
|
||||||
|
if (scr_con_current)
|
||||||
|
SCR_DrawConsole (false);
|
||||||
|
|
||||||
|
M_Draw(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MediaGL_ShowFrameRGBA_32(qbyte *framedata, int inwidth, int inheight)//top down
|
||||||
|
{
|
||||||
|
if (!filmtexture)
|
||||||
|
{
|
||||||
|
filmtexture=texture_extension_number;
|
||||||
|
texture_extension_number++;
|
||||||
|
}
|
||||||
|
|
||||||
|
GL_Set2D ();
|
||||||
|
|
||||||
|
GL_Bind(filmtexture);
|
||||||
|
GL_Upload32("", (unsigned *)framedata, inwidth, inheight, false, false); //we may need to rescale the image
|
||||||
|
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
glDisable(GL_ALPHA_TEST);
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glTexCoord2f(0, 0);
|
||||||
|
glVertex2f(0, 0);
|
||||||
|
glTexCoord2f(0, 1);
|
||||||
|
glVertex2f(0, vid.height);
|
||||||
|
glTexCoord2f(1, 1);
|
||||||
|
glVertex2f(vid.width, vid.height);
|
||||||
|
glTexCoord2f(1, 0);
|
||||||
|
glVertex2f(vid.width, 0);
|
||||||
|
glEnd();
|
||||||
|
glEnable(GL_ALPHA_TEST);
|
||||||
|
|
||||||
|
|
||||||
|
SCR_SetUpToDrawConsole();
|
||||||
|
if (scr_con_current)
|
||||||
|
SCR_DrawConsole (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MediaGL_ShowFrameBGR_24_Flip(qbyte *framedata, int inwidth, int inheight)
|
||||||
|
{
|
||||||
|
//we need these as we resize it as we convert to rgba
|
||||||
|
extern int filmnwidth;
|
||||||
|
extern int filmnheight;
|
||||||
|
|
||||||
|
int y, x;
|
||||||
|
|
||||||
|
int v;
|
||||||
|
unsigned int f, fstep;
|
||||||
|
qbyte *src, *dest;
|
||||||
|
dest = uploadmemorybufferintermediate;
|
||||||
|
//change from bgr bottomup to rgba topdown
|
||||||
|
|
||||||
|
if (inwidth*inheight > sizeofuploadmemorybufferintermediate/4)
|
||||||
|
Sys_Error("MediaGL_ShowFrameBGR_24_Flip: image too big (%i*%i)", inwidth, inheight);
|
||||||
|
|
||||||
|
for (y=1 ; y<=filmnheight ; y++)
|
||||||
|
{
|
||||||
|
v = ((filmnheight - y)*(float)inheight/filmnheight);
|
||||||
|
src = framedata + v*(inwidth*3);
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/filmnwidth;
|
||||||
|
|
||||||
|
for (x=filmnwidth ; x&3 ; x--) //do the odd ones first. (bigger condition)
|
||||||
|
{
|
||||||
|
*dest++ = src[(f>>16)*3+2];
|
||||||
|
*dest++ = src[(f>>16)*3+1];
|
||||||
|
*dest++ = src[(f>>16)*3+0];
|
||||||
|
*dest++ = 255;
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
for ( ; x ; x-=4) //loop through the remaining chunks.
|
||||||
|
{
|
||||||
|
dest[0] = src[(f>>16)*3+2];
|
||||||
|
dest[1] = src[(f>>16)*3+1];
|
||||||
|
dest[2] = src[(f>>16)*3+0];
|
||||||
|
dest[3] = 255;
|
||||||
|
f += fstep;
|
||||||
|
|
||||||
|
dest[4] = src[(f>>16)*3+2];
|
||||||
|
dest[5] = src[(f>>16)*3+1];
|
||||||
|
dest[6] = src[(f>>16)*3+0];
|
||||||
|
dest[7] = 255;
|
||||||
|
f += fstep;
|
||||||
|
|
||||||
|
dest[8] = src[(f>>16)*3+2];
|
||||||
|
dest[9] = src[(f>>16)*3+1];
|
||||||
|
dest[10] = src[(f>>16)*3+0];
|
||||||
|
dest[11] = 255;
|
||||||
|
f += fstep;
|
||||||
|
|
||||||
|
dest[12] = src[(f>>16)*3+2];
|
||||||
|
dest[13] = src[(f>>16)*3+1];
|
||||||
|
dest[14] = src[(f>>16)*3+0];
|
||||||
|
dest[15] = 255;
|
||||||
|
f += fstep;
|
||||||
|
|
||||||
|
dest += 16;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!filmtexture)
|
||||||
|
{
|
||||||
|
filmtexture=texture_extension_number;
|
||||||
|
texture_extension_number++;
|
||||||
|
}
|
||||||
|
|
||||||
|
GL_Set2D ();
|
||||||
|
|
||||||
|
GL_Bind(filmtexture);
|
||||||
|
GL_Upload32("", (unsigned *)framedata, inwidth, inheight, false, false); //we may need to rescale the image
|
||||||
|
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
glDisable(GL_ALPHA_TEST);
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glTexCoord2f(0, 0);
|
||||||
|
glVertex2f(0, 0);
|
||||||
|
glTexCoord2f(0, 1);
|
||||||
|
glVertex2f(0, vid.height);
|
||||||
|
glTexCoord2f(1, 1);
|
||||||
|
glVertex2f(vid.width, vid.height);
|
||||||
|
glTexCoord2f(1, 0);
|
||||||
|
glVertex2f(vid.width, 0);
|
||||||
|
glEnd();
|
||||||
|
glEnable(GL_ALPHA_TEST);
|
||||||
|
|
||||||
|
|
||||||
|
SCR_SetUpToDrawConsole();
|
||||||
|
if (scr_con_current)
|
||||||
|
SCR_DrawConsole (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//====================================================================
|
//====================================================================
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -729,6 +729,8 @@ void GLMod_InitTextureDescs(char *mapname)
|
||||||
if (advtexturedesc)
|
if (advtexturedesc)
|
||||||
BZ_Free(advtexturedesc);
|
BZ_Free(advtexturedesc);
|
||||||
advtexturedesc = COM_LoadMallocFile(va("maps/shaders/%s.shaders", mapname));
|
advtexturedesc = COM_LoadMallocFile(va("maps/shaders/%s.shaders", mapname));
|
||||||
|
if (!advtexturedesc)
|
||||||
|
advtexturedesc = COM_LoadMallocFile(va("shaders/%s.shaders", mapname));
|
||||||
if (advtexturedesc)
|
if (advtexturedesc)
|
||||||
{
|
{
|
||||||
mapsection = advtexturedesc;
|
mapsection = advtexturedesc;
|
||||||
|
@ -741,13 +743,14 @@ void GLMod_InitTextureDescs(char *mapname)
|
||||||
defaultsection = GLMod_TD_Section(advtexturedesc, "default");
|
defaultsection = GLMod_TD_Section(advtexturedesc, "default");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void GLMod_LoadAdvancedTextureSection(char *section, char *name, int *base, int *norm, int *luma, int *alphamode, qboolean *cull) //fixme: add gloss
|
void GLMod_LoadAdvancedTextureSection(char *section, char *name, int *base, int *norm, int *luma, int *gloss, int *alphamode, qboolean *cull) //fixme: add gloss
|
||||||
{
|
{
|
||||||
char stdname[MAX_QPATH] = "";
|
char stdname[MAX_QPATH] = "";
|
||||||
char flatname[MAX_QPATH] = "";
|
char flatname[MAX_QPATH] = "";
|
||||||
char bumpname[MAX_QPATH] = "";
|
char bumpname[MAX_QPATH] = "";
|
||||||
char normname[MAX_QPATH] = "";
|
char normname[MAX_QPATH] = "";
|
||||||
char lumaname[MAX_QPATH] = "";
|
char lumaname[MAX_QPATH] = "";
|
||||||
|
char glossname[MAX_QPATH] = "";
|
||||||
|
|
||||||
section = GLMod_TD_Section(section, name);
|
section = GLMod_TD_Section(section, name);
|
||||||
|
|
||||||
|
@ -771,22 +774,29 @@ void GLMod_LoadAdvancedTextureSection(char *section, char *name, int *base, int
|
||||||
section = COM_ParseToken(section);
|
section = COM_ParseToken(section);
|
||||||
Q_strncpyz(stdname, com_token, sizeof(stdname));
|
Q_strncpyz(stdname, com_token, sizeof(stdname));
|
||||||
}
|
}
|
||||||
else if (!stricmp(com_token, "flatmap") || !stricmp(com_token, "diffuse"))
|
else if (!stricmp(com_token, "flatmap") || !stricmp(com_token, "flat")
|
||||||
|
|| !stricmp(com_token, "diffusemap") || !stricmp(com_token, "diffuse"))
|
||||||
{
|
{
|
||||||
section = COM_ParseToken(section);
|
section = COM_ParseToken(section);
|
||||||
Q_strncpyz(flatname, com_token, sizeof(flatname));
|
Q_strncpyz(flatname, com_token, sizeof(flatname));
|
||||||
}
|
}
|
||||||
else if (!stricmp(com_token, "bumpmap"))
|
else if (!stricmp(com_token, "bumpmap") || !stricmp(com_token, "bump"))
|
||||||
{
|
{
|
||||||
section = COM_ParseToken(section);
|
section = COM_ParseToken(section);
|
||||||
Q_strncpyz(bumpname, com_token, sizeof(bumpname));
|
Q_strncpyz(bumpname, com_token, sizeof(bumpname));
|
||||||
}
|
}
|
||||||
else if (!stricmp(com_token, "normalmap"))
|
else if (!stricmp(com_token, "normalmap") || !stricmp(com_token, "normal"))
|
||||||
{
|
{
|
||||||
section = COM_ParseToken(section);
|
section = COM_ParseToken(section);
|
||||||
Q_strncpyz(normname, com_token, sizeof(normname));
|
Q_strncpyz(normname, com_token, sizeof(normname));
|
||||||
}
|
}
|
||||||
else if (!stricmp(com_token, "luma") || !stricmp(com_token, "glow"))
|
else if (!stricmp(com_token, "glossmap") || !stricmp(com_token, "gloss"))
|
||||||
|
{
|
||||||
|
section = COM_ParseToken(section);
|
||||||
|
Q_strncpyz(glossname, com_token, sizeof(glossname));
|
||||||
|
}
|
||||||
|
else if (!stricmp(com_token, "luma") || !stricmp(com_token, "glow")
|
||||||
|
|| !stricmp(com_token, "ambient") || !stricmp(com_token, "ambientmap"))
|
||||||
{
|
{
|
||||||
section = COM_ParseToken(section);
|
section = COM_ParseToken(section);
|
||||||
Q_strncpyz(lumaname, com_token, sizeof(lumaname));
|
Q_strncpyz(lumaname, com_token, sizeof(lumaname));
|
||||||
|
@ -806,6 +816,8 @@ void GLMod_LoadAdvancedTextureSection(char *section, char *name, int *base, int
|
||||||
*norm = 0;
|
*norm = 0;
|
||||||
if (luma)
|
if (luma)
|
||||||
*luma = 0;
|
*luma = 0;
|
||||||
|
if (gloss)
|
||||||
|
*gloss = 0;
|
||||||
|
|
||||||
if (!*stdname && !*flatname)
|
if (!*stdname && !*flatname)
|
||||||
return;
|
return;
|
||||||
|
@ -834,21 +846,24 @@ void GLMod_LoadAdvancedTextureSection(char *section, char *name, int *base, int
|
||||||
*base = Mod_LoadHiResTexture(flatname, true, false, true);
|
*base = Mod_LoadHiResTexture(flatname, true, false, true);
|
||||||
if (luma && *lumaname)
|
if (luma && *lumaname)
|
||||||
*luma = Mod_LoadHiResTexture(lumaname, true, true, true);
|
*luma = Mod_LoadHiResTexture(lumaname, true, true, true);
|
||||||
|
|
||||||
|
if (*norm && gloss && *glossname && gl_specular.value)
|
||||||
|
*gloss = Mod_LoadHiResTexture(glossname, true, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLMod_LoadAdvancedTexture(char *name, int *base, int *norm, int *luma, int *alphamode, qboolean *cull) //fixme: add gloss
|
void GLMod_LoadAdvancedTexture(char *name, int *base, int *norm, int *luma, int *gloss, int *alphamode, qboolean *cull) //fixme: add gloss
|
||||||
{
|
{
|
||||||
if (!gl_load24bit.value)
|
if (!gl_load24bit.value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (mapsection)
|
if (mapsection)
|
||||||
{
|
{
|
||||||
GLMod_LoadAdvancedTextureSection(mapsection, name,base,norm,luma,alphamode,cull);
|
GLMod_LoadAdvancedTextureSection(mapsection, name,base,norm,luma,gloss,alphamode,cull);
|
||||||
if (*base)
|
if (*base)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (defaultsection)
|
if (defaultsection)
|
||||||
GLMod_LoadAdvancedTextureSection(defaultsection, name,base,norm,luma,alphamode,cull);
|
GLMod_LoadAdvancedTextureSection(defaultsection, name,base,norm,luma,gloss,alphamode,cull);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -927,7 +942,8 @@ void GLMod_LoadTextures (lump_t *l)
|
||||||
if (!R_AddBulleten(tx))
|
if (!R_AddBulleten(tx))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
GLMod_LoadAdvancedTexture(tx->name, &tx->gl_texturenum, &tx->gl_texturenumbumpmap, &tx->gl_texturenumfb, NULL, NULL);
|
tx->gl_texturenum = 0;
|
||||||
|
GLMod_LoadAdvancedTexture(tx->name, &tx->gl_texturenum, &tx->gl_texturenumbumpmap, &tx->gl_texturenumfb, &tx->gl_texturenumspec, NULL, NULL);
|
||||||
if (tx->gl_texturenum)
|
if (tx->gl_texturenum)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -953,9 +969,9 @@ void GLMod_LoadTextures (lump_t *l)
|
||||||
|
|
||||||
if (r_fb_bmodels.value)
|
if (r_fb_bmodels.value)
|
||||||
{
|
{
|
||||||
|
_snprintf(altname, sizeof(altname)-1, "%s_luma", mt->name);
|
||||||
if (gl_load24bit.value && r_fb_bmodels.value)
|
if (gl_load24bit.value && r_fb_bmodels.value)
|
||||||
{
|
{
|
||||||
_snprintf(altname, sizeof(altname)-1, "%s_luma", mt->name);
|
|
||||||
tx->gl_texturenumfb = Mod_LoadReplacementTexture(altname, true, false);
|
tx->gl_texturenumfb = Mod_LoadReplacementTexture(altname, true, false);
|
||||||
}
|
}
|
||||||
if (!tx->gl_texturenumfb) //generate one (if possible).
|
if (!tx->gl_texturenumfb) //generate one (if possible).
|
||||||
|
|
|
@ -2943,7 +2943,6 @@ void PPL_AddLight(dlight_t *dl)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
glStencilFunc( GL_ALWAYS, 1, ~0 );
|
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||||
|
@ -2997,6 +2996,8 @@ void PPL_AddLight(dlight_t *dl)
|
||||||
glClear(GL_STENCIL_BUFFER_BIT);
|
glClear(GL_STENCIL_BUFFER_BIT);
|
||||||
glDisable(GL_CULL_FACE);
|
glDisable(GL_CULL_FACE);
|
||||||
|
|
||||||
|
glStencilFunc( GL_ALWAYS, 1, ~0 );
|
||||||
|
|
||||||
qglStencilOpSeparateATI(GL_BACK, GL_KEEP, sincrw, GL_KEEP);
|
qglStencilOpSeparateATI(GL_BACK, GL_KEEP, sincrw, GL_KEEP);
|
||||||
qglStencilOpSeparateATI(GL_FRONT, GL_KEEP, sdecrw, GL_KEEP);
|
qglStencilOpSeparateATI(GL_FRONT, GL_KEEP, sdecrw, GL_KEEP);
|
||||||
PPL_RecursiveWorldNode(dl);
|
PPL_RecursiveWorldNode(dl);
|
||||||
|
@ -3015,12 +3016,13 @@ void PPL_AddLight(dlight_t *dl)
|
||||||
|
|
||||||
glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
|
glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
|
||||||
|
|
||||||
glCullFace(GL_BACK);
|
|
||||||
qglActiveStencilFaceEXT(GL_BACK);
|
qglActiveStencilFaceEXT(GL_BACK);
|
||||||
glStencilOp(GL_KEEP, sincrw, GL_KEEP);
|
glStencilOp(GL_KEEP, sincrw, GL_KEEP);
|
||||||
|
glStencilFunc( GL_ALWAYS, 1, ~0 );
|
||||||
|
|
||||||
qglActiveStencilFaceEXT(GL_FRONT);
|
qglActiveStencilFaceEXT(GL_FRONT);
|
||||||
glStencilOp(GL_KEEP, sdecrw, GL_KEEP);
|
glStencilOp(GL_KEEP, sdecrw, GL_KEEP);
|
||||||
|
glStencilFunc( GL_ALWAYS, 1, ~0 );
|
||||||
|
|
||||||
PPL_RecursiveWorldNode(dl);
|
PPL_RecursiveWorldNode(dl);
|
||||||
PPL_DrawShadowMeshes(dl);
|
PPL_DrawShadowMeshes(dl);
|
||||||
|
@ -3036,12 +3038,16 @@ void PPL_AddLight(dlight_t *dl)
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
|
|
||||||
glStencilFunc( GL_EQUAL, 0, ~0 );
|
glStencilFunc( GL_EQUAL, 0, ~0 );
|
||||||
|
qglActiveStencilFaceEXT(GL_BACK);
|
||||||
|
glStencilFunc( GL_EQUAL, 0, ~0 );
|
||||||
}
|
}
|
||||||
else //your graphics card sucks and lacks efficient stencil shadow techniques.
|
else //your graphics card sucks and lacks efficient stencil shadow techniques.
|
||||||
{ //centered around 0. Will only be increased then decreased less.
|
{ //centered around 0. Will only be increased then decreased less.
|
||||||
glClearStencil(0);
|
glClearStencil(0);
|
||||||
glClear(GL_STENCIL_BUFFER_BIT);
|
glClear(GL_STENCIL_BUFFER_BIT);
|
||||||
|
|
||||||
|
glStencilFunc( GL_ALWAYS, 1, ~0 );
|
||||||
|
|
||||||
glCullFace(GL_BACK);
|
glCullFace(GL_BACK);
|
||||||
glStencilOp(GL_KEEP, sincrw, GL_KEEP);
|
glStencilOp(GL_KEEP, sincrw, GL_KEEP);
|
||||||
PPL_RecursiveWorldNode(dl);
|
PPL_RecursiveWorldNode(dl);
|
||||||
|
@ -3085,22 +3091,24 @@ void PPL_DrawWorld (void)
|
||||||
dlight_t *l;
|
dlight_t *l;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
vec3_t mins, maxs;
|
||||||
|
|
||||||
int maxshadowlights = gl_maxshadowlights.value;
|
int maxshadowlights = gl_maxshadowlights.value;
|
||||||
|
|
||||||
if (maxshadowlights < 1)
|
if (maxshadowlights < 1)
|
||||||
maxshadowlights = 1;
|
maxshadowlights = 1;
|
||||||
if (qglGetError())
|
// if (qglGetError())
|
||||||
Con_Printf("GL Error before world\n");
|
// Con_Printf("GL Error before world\n");
|
||||||
//glColorMask(0,0,0,0);
|
//glColorMask(0,0,0,0);
|
||||||
PPL_BaseTextures(cl.worldmodel);
|
PPL_BaseTextures(cl.worldmodel);
|
||||||
if (qglGetError())
|
// if (qglGetError())
|
||||||
Con_Printf("GL Error during base textures\n");
|
// Con_Printf("GL Error during base textures\n");
|
||||||
//glColorMask(1,1,1,1);
|
//glColorMask(1,1,1,1);
|
||||||
PPL_BaseEntTextures();
|
PPL_BaseEntTextures();
|
||||||
// CL_NewDlightRGB(1, r_refdef.vieworg[0], r_refdef.vieworg[1]-16, r_refdef.vieworg[2]-24, 128, 1, 1, 1, 1);
|
// CL_NewDlightRGB(1, r_refdef.vieworg[0], r_refdef.vieworg[1]-16, r_refdef.vieworg[2]-24, 128, 1, 1, 1, 1);
|
||||||
|
|
||||||
if (qglGetError())
|
// if (qglGetError())
|
||||||
Con_Printf("GL Error on entities\n");
|
// Con_Printf("GL Error on entities\n");
|
||||||
|
|
||||||
if (r_shadows.value && glStencilFunc)
|
if (r_shadows.value && glStencilFunc)
|
||||||
{
|
{
|
||||||
|
@ -3114,6 +3122,18 @@ void PPL_DrawWorld (void)
|
||||||
continue; //quick check for darklight
|
continue; //quick check for darklight
|
||||||
if (!maxshadowlights--)
|
if (!maxshadowlights--)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
mins[0] = l->origin[0] - l->radius;
|
||||||
|
mins[1] = l->origin[1] - l->radius;
|
||||||
|
mins[2] = l->origin[2] - l->radius;
|
||||||
|
maxs[0] = l->origin[0] + l->radius;
|
||||||
|
maxs[1] = l->origin[1] + l->radius;
|
||||||
|
maxs[2] = l->origin[2] + l->radius;
|
||||||
|
if (R_CullBox(mins, maxs))
|
||||||
|
continue;
|
||||||
|
if (R_CullSphere(l->origin, l->radius))
|
||||||
|
continue;
|
||||||
|
|
||||||
l->color[0]*=2.5;
|
l->color[0]*=2.5;
|
||||||
l->color[1]*=2.5;
|
l->color[1]*=2.5;
|
||||||
l->color[2]*=2.5;
|
l->color[2]*=2.5;
|
||||||
|
@ -3130,13 +3150,13 @@ void PPL_DrawWorld (void)
|
||||||
glDisableClientState(GL_VERTEX_ARRAY);
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qglGetError())
|
// if (qglGetError())
|
||||||
Con_Printf("GL Error on shadow lighting\n");
|
// Con_Printf("GL Error on shadow lighting\n");
|
||||||
|
|
||||||
PPL_DrawEntFullBrights();
|
PPL_DrawEntFullBrights();
|
||||||
|
|
||||||
if (qglGetError())
|
// if (qglGetError())
|
||||||
Con_Printf("GL Error on fullbrights/details\n");
|
// Con_Printf("GL Error on fullbrights/details\n");
|
||||||
|
|
||||||
// Con_Printf("%i %i %i\n", shadowsurfcount, shadowedgecount, shadowlightfaces);
|
// Con_Printf("%i %i %i\n", shadowsurfcount, shadowedgecount, shadowlightfaces);
|
||||||
shadowsurfcount = 0;
|
shadowsurfcount = 0;
|
||||||
|
|
|
@ -405,9 +405,12 @@ void GLQ3_LightGrid(vec3_t point, vec3_t res_diffuse, vec3_t res_ambient, vec3_t
|
||||||
vec3_t vf, vf2;
|
vec3_t vf, vf2;
|
||||||
vec3_t ambient, diffuse;
|
vec3_t ambient, diffuse;
|
||||||
|
|
||||||
|
if (res_dir)
|
||||||
|
{
|
||||||
res_dir[0] = 1;
|
res_dir[0] = 1;
|
||||||
res_dir[1] = 1;
|
res_dir[1] = 1;
|
||||||
res_dir[2] = 0.1;
|
res_dir[2] = 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!lg)
|
if (!lg)
|
||||||
{
|
{
|
||||||
|
|
|
@ -156,6 +156,21 @@ qboolean R_CullBox (vec3_t mins, vec3_t maxs)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qboolean R_CullSphere (vec3_t org, float radius)
|
||||||
|
{
|
||||||
|
//four frustrum planes all point inwards in an expanding 'cone'.
|
||||||
|
int i;
|
||||||
|
float d;
|
||||||
|
|
||||||
|
for (i=0 ; i<4 ; i++)
|
||||||
|
{
|
||||||
|
d = DotProduct(frustum[i].normal, org)-frustum[i].dist;
|
||||||
|
if (d < -radius)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void R_RotateForEntity (entity_t *e)
|
void R_RotateForEntity (entity_t *e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -453,7 +453,7 @@ void R_MakeTexWad_f(void)
|
||||||
if (!scale)
|
if (!scale)
|
||||||
scale = 2;
|
scale = 2;
|
||||||
|
|
||||||
// h = FindFirstFile(va("%s/textures/*.tga", com_gamedir), &fd);
|
// h = FindFirstFile(va("%s/textures/ *.tga", com_gamedir), &fd); //if this is uncommented, clear that space... (gcc warning fix)
|
||||||
if (!shader)
|
if (!shader)
|
||||||
return;
|
return;
|
||||||
mip = BZ_Malloc(1024*1024);
|
mip = BZ_Malloc(1024*1024);
|
||||||
|
|
|
@ -3053,7 +3053,7 @@ int GLAllocBlock (int w, int h, int *x, int *y)
|
||||||
}
|
}
|
||||||
if (!lightmap[texnum])
|
if (!lightmap[texnum])
|
||||||
{
|
{
|
||||||
lightmap[texnum] = BZ_Malloc(sizeof(*lightmap[texnum]));
|
lightmap[texnum] = Z_Malloc(sizeof(*lightmap[texnum]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,8 @@ extern qboolean mouseactive; // from in_win.c
|
||||||
static HICON hIcon;
|
static HICON hIcon;
|
||||||
extern qboolean vid_isfullscreen;
|
extern qboolean vid_isfullscreen;
|
||||||
|
|
||||||
|
unsigned short origionalgammaramps[3][256];
|
||||||
|
|
||||||
#ifdef SWQUAKE
|
#ifdef SWQUAKE
|
||||||
extern
|
extern
|
||||||
#endif
|
#endif
|
||||||
|
@ -155,6 +157,7 @@ extern cvar_t vid_nopageflip;
|
||||||
extern cvar_t _vid_wait_override;
|
extern cvar_t _vid_wait_override;
|
||||||
extern cvar_t vid_stretch_by_2;
|
extern cvar_t vid_stretch_by_2;
|
||||||
extern cvar_t _windowed_mouse;
|
extern cvar_t _windowed_mouse;
|
||||||
|
extern cvar_t vid_hardwaregamma;
|
||||||
|
|
||||||
int window_center_x, window_center_y, window_x, window_y, window_width, window_height;
|
int window_center_x, window_center_y, window_x, window_y, window_width, window_height;
|
||||||
RECT window_rect;
|
RECT window_rect;
|
||||||
|
@ -591,6 +594,9 @@ int GLVID_SetMode (rendererstate_t *info, unsigned char *palette)
|
||||||
|
|
||||||
vid.recalc_refdef = 1;
|
vid.recalc_refdef = 1;
|
||||||
|
|
||||||
|
maindc = GetDC(mainwindow);
|
||||||
|
GetDeviceGammaRamp(maindc, origionalgammaramps);
|
||||||
|
|
||||||
if (!VID_AttachGL(info))
|
if (!VID_AttachGL(info))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -819,15 +825,22 @@ void GLVID_SetPalette (unsigned char *palette)
|
||||||
d_8to24rgbtable[255] &= 0xffffff; // 255 is transparent
|
d_8to24rgbtable[255] &= 0xffffff; // 255 is transparent
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL gammaworks;
|
qboolean gammaworks;
|
||||||
|
|
||||||
void GLVID_ShiftPalette (unsigned char *palette)
|
void GLVID_ShiftPalette (unsigned char *palette)
|
||||||
{
|
{
|
||||||
// extern qbyte ramps[3][256];
|
extern unsigned short ramps[3][256];
|
||||||
|
|
||||||
// VID_SetPalette (palette);
|
// VID_SetPalette (palette);
|
||||||
|
|
||||||
// gammaworks = SetDeviceGammaRamp (maindc, ramps);
|
if (vid_hardwaregamma.value) //this is needed because ATI drivers don't work properly.
|
||||||
|
gammaworks = !!SetDeviceGammaRamp (maindc, ramps);
|
||||||
|
else
|
||||||
|
gammaworks = false;
|
||||||
|
if (!gammaworks)
|
||||||
|
{
|
||||||
|
SetDeviceGammaRamp(maindc, origionalgammaramps);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -839,6 +852,8 @@ void VID_SetDefaultMode (void)
|
||||||
|
|
||||||
void GLVID_Shutdown (void)
|
void GLVID_Shutdown (void)
|
||||||
{
|
{
|
||||||
|
SetDeviceGammaRamp(maindc, origionalgammaramps);
|
||||||
|
|
||||||
VID_UnSetMode();
|
VID_UnSetMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1258,6 +1273,7 @@ qboolean GLVID_Init (rendererstate_t *info, unsigned char *palette)
|
||||||
vid.maxwarpheight = WARP_HEIGHT;
|
vid.maxwarpheight = WARP_HEIGHT;
|
||||||
vid.colormap = host_colormap;
|
vid.colormap = host_colormap;
|
||||||
|
|
||||||
|
if (hwnd_dialog)
|
||||||
DestroyWindow (hwnd_dialog);
|
DestroyWindow (hwnd_dialog);
|
||||||
|
|
||||||
Check_Gamma(palette, 0);
|
Check_Gamma(palette, 0);
|
||||||
|
@ -1269,8 +1285,6 @@ qboolean GLVID_Init (rendererstate_t *info, unsigned char *palette)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
maindc = GetDC(mainwindow);
|
|
||||||
|
|
||||||
// Check for 3DFX Extensions and initialize them.
|
// Check for 3DFX Extensions and initialize them.
|
||||||
VID_Init8bitPalette();
|
VID_Init8bitPalette();
|
||||||
|
|
||||||
|
|
|
@ -34,12 +34,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#define APIENTRY
|
#define APIENTRY
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// typedef qbyte pal77[128][128];
|
|
||||||
// pal77 *pal777to8;
|
|
||||||
qbyte *palxxxto8;
|
|
||||||
int palmask[3];
|
|
||||||
int palshift[3];
|
|
||||||
|
|
||||||
void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs);
|
void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs);
|
||||||
qboolean BoundsIntersect (vec3_t mins1, vec3_t maxs1, vec3_t mins2, vec3_t maxs2);
|
qboolean BoundsIntersect (vec3_t mins1, vec3_t maxs1, vec3_t mins2, vec3_t maxs2);
|
||||||
void ClearBounds (vec3_t mins, vec3_t maxs);
|
void ClearBounds (vec3_t mins, vec3_t maxs);
|
||||||
|
@ -257,6 +251,7 @@ void GL_Set2D (void);
|
||||||
// gl_rmain.c
|
// gl_rmain.c
|
||||||
//
|
//
|
||||||
qboolean R_CullBox (vec3_t mins, vec3_t maxs);
|
qboolean R_CullBox (vec3_t mins, vec3_t maxs);
|
||||||
|
qboolean R_CullSphere (vec3_t origin, float radius);
|
||||||
void R_RotateForEntity (entity_t *e);
|
void R_RotateForEntity (entity_t *e);
|
||||||
void R_DrawAliasModel (entity_t *e);
|
void R_DrawAliasModel (entity_t *e);
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,7 @@ the fact that it uses wrapper functions to call methods in a class could be a re
|
||||||
#define D3D_OVERLOADS
|
#define D3D_OVERLOADS
|
||||||
#define RELEASENULL(object) if (object) {object->Release();}
|
#define RELEASENULL(object) if (object) {object->Release();}
|
||||||
|
|
||||||
|
#include "dxsdk7/include/ddraw.h"
|
||||||
#include "dxsdk7/include/d3d.h"
|
#include "dxsdk7/include/d3d.h"
|
||||||
#include "dxsdk7/include/d3dx.h"
|
#include "dxsdk7/include/d3dx.h"
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,6 @@ int SendFileNameTo(char *fname, int size, void *socket)
|
||||||
int FTP_SV_makelistensocket(unsigned long blocking)
|
int FTP_SV_makelistensocket(unsigned long blocking)
|
||||||
{
|
{
|
||||||
char name[256];
|
char name[256];
|
||||||
unsigned long _true = true;
|
|
||||||
int sock;
|
int sock;
|
||||||
struct hostent *hent;
|
struct hostent *hent;
|
||||||
|
|
||||||
|
@ -264,7 +263,6 @@ iwboolean FTP_ServerThinkForConnection(FTPclient_t *cl)
|
||||||
struct sockaddr_in from;
|
struct sockaddr_in from;
|
||||||
int fromlen;
|
int fromlen;
|
||||||
char *msg, *line;
|
char *msg, *line;
|
||||||
unsigned long _true = true;
|
|
||||||
|
|
||||||
char mode[64];
|
char mode[64];
|
||||||
static char resource[8192];
|
static char resource[8192];
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
static qboolean httpserverinitied = false;
|
static qboolean httpserverinitied = false;
|
||||||
static int httpserversocket;
|
static int httpserversocket;
|
||||||
|
|
||||||
typedef enum {HTTP_WAITINGFORREQUEST,HTTP_SENDING,HTTP_RECEIVING} http_mode_t;
|
typedef enum {HTTP_WAITINGFORREQUEST,HTTP_SENDING} http_mode_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ cont:
|
||||||
else if (HTTPmarkup)
|
else if (HTTPmarkup)
|
||||||
sprintf(resource, "HTTP/0.9 200 OK\r\n\r\n");
|
sprintf(resource, "HTTP/0.9 200 OK\r\n\r\n");
|
||||||
else
|
else
|
||||||
sprintf(resource, "");
|
strcpy(resource, "");
|
||||||
msg = resource;
|
msg = resource;
|
||||||
|
|
||||||
if (*mode == 'H' || *mode == 'h')
|
if (*mode == 'H' || *mode == 'h')
|
||||||
|
|
|
@ -113,7 +113,7 @@ void *Hash_AddKey(hashtable_t *table, int key, void *data)
|
||||||
buck = qccHunkAlloc(sizeof(bucket_t));
|
buck = qccHunkAlloc(sizeof(bucket_t));
|
||||||
|
|
||||||
buck->data = data;
|
buck->data = data;
|
||||||
(int)buck->keystring = key;
|
buck->keystring = (char*)key;
|
||||||
buck->next = table->bucket[bucknum];
|
buck->next = table->bucket[bucknum];
|
||||||
table->bucket[bucknum] = buck;
|
table->bucket[bucknum] = buck;
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ void *Hash_AddKey2(hashtable_t *table, int key, void *data, bucket_t *buck)
|
||||||
int bucknum = key%table->numbuckets;
|
int bucknum = key%table->numbuckets;
|
||||||
|
|
||||||
buck->data = data;
|
buck->data = data;
|
||||||
(int)buck->keystring = key;
|
buck->keystring = (char*)key;
|
||||||
buck->next = table->bucket[bucknum];
|
buck->next = table->bucket[bucknum];
|
||||||
table->bucket[bucknum] = buck;
|
table->bucket[bucknum] = buck;
|
||||||
|
|
||||||
|
|
|
@ -68,35 +68,18 @@ int PR_InitEnts(progfuncs_t *progfuncs, int max_ents)
|
||||||
|
|
||||||
pr_max_edict_size = pr_edict_size;
|
pr_max_edict_size = pr_edict_size;
|
||||||
|
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
prinst->edicttable = PRHunkAlloc(progfuncs, maxedicts*sizeof(struct edicts_s *));
|
prinst->edicttable = PRHunkAlloc(progfuncs, maxedicts*sizeof(struct edicts_s *));
|
||||||
sv_edicts = PRHunkAlloc(progfuncs, pr_edict_size);
|
sv_edicts = PRHunkAlloc(progfuncs, pr_edict_size);
|
||||||
prinst->edicttable[0] = sv_edicts;
|
prinst->edicttable[0] = sv_edicts;
|
||||||
sv_num_edicts = 1;
|
sv_num_edicts = 1;
|
||||||
#else
|
|
||||||
sv_edicts = PRHunkAlloc(progfuncs, (pr_edict_size) * maxedicts);
|
|
||||||
|
|
||||||
{int a;
|
|
||||||
for (a = 1; a < maxedicts; a++)
|
|
||||||
{
|
|
||||||
((edictrun_t*)EDICT_NUM(progfuncs, a))->isfree = true;
|
|
||||||
((edictrun_t*)EDICT_NUM(progfuncs, a))->freetime = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
sv_num_edicts = 1;
|
|
||||||
|
|
||||||
return pr_edict_size;
|
return pr_edict_size;
|
||||||
}
|
}
|
||||||
char tempedicts[2048]; //used as a safty buffer
|
char tempedicts[2048]; //used as a safty buffer
|
||||||
void PR_Configure (progfuncs_t *progfuncs, void *mem, int mem_size, int max_progs) //can be used to wipe all memory
|
void PR_Configure (progfuncs_t *progfuncs, void *mem, int mem_size, int max_progs) //can be used to wipe all memory
|
||||||
{
|
{
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
int i;
|
int i;
|
||||||
edictrun_t *e;
|
edictrun_t *e;
|
||||||
#endif
|
|
||||||
|
|
||||||
// int a;
|
// int a;
|
||||||
pr_max_edict_size=0;
|
pr_max_edict_size=0;
|
||||||
|
@ -105,16 +88,14 @@ void PR_Configure (progfuncs_t *progfuncs, void *mem, int mem_size, int max_prog
|
||||||
QC_StartShares(progfuncs);
|
QC_StartShares(progfuncs);
|
||||||
QC_InitShares(progfuncs);
|
QC_InitShares(progfuncs);
|
||||||
|
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
for ( i=1 ; i<maxedicts; i++)
|
for ( i=1 ; i<maxedicts; i++)
|
||||||
{
|
{
|
||||||
(struct edict_s *)e = prinst->edicttable[i];
|
e = (edictrun_t *)(prinst->edicttable[i]);
|
||||||
prinst->edicttable[i] = NULL;
|
prinst->edicttable[i] = NULL;
|
||||||
// e->entnum = i;
|
// e->entnum = i;
|
||||||
if (e)
|
if (e)
|
||||||
memfree(e);
|
memfree(e);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
PRHunkFree(progfuncs, 0); //clear mem - our hunk may not be a real hunk.
|
PRHunkFree(progfuncs, 0); //clear mem - our hunk may not be a real hunk.
|
||||||
|
|
||||||
|
@ -452,17 +433,14 @@ void CloseProgs(progfuncs_t *inst)
|
||||||
extensionbuiltin_t *eb;
|
extensionbuiltin_t *eb;
|
||||||
void (VARGS *f) (void *);
|
void (VARGS *f) (void *);
|
||||||
|
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
int i;
|
int i;
|
||||||
edictrun_t *e;
|
edictrun_t *e;
|
||||||
#endif
|
|
||||||
|
|
||||||
f = inst->parms->memfree;
|
f = inst->parms->memfree;
|
||||||
|
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
for ( i=1 ; i<inst->maxedicts; i++)
|
for ( i=1 ; i<inst->maxedicts; i++)
|
||||||
{
|
{
|
||||||
(struct edict_s *)e = inst->prinst->edicttable[i];
|
e = (edictrun_t *)(inst->prinst->edicttable[i]);
|
||||||
inst->prinst->edicttable[i] = NULL;
|
inst->prinst->edicttable[i] = NULL;
|
||||||
if (e)
|
if (e)
|
||||||
{
|
{
|
||||||
|
@ -470,7 +448,6 @@ void CloseProgs(progfuncs_t *inst)
|
||||||
f(e);
|
f(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
PRHunkFree(inst, 0);
|
PRHunkFree(inst, 0);
|
||||||
while(inst->prinst->extensionbuiltin)
|
while(inst->prinst->extensionbuiltin)
|
||||||
|
|
|
@ -91,12 +91,8 @@ struct edict_s *ED_Alloc (progfuncs_t *progfuncs)
|
||||||
{
|
{
|
||||||
if (!e)
|
if (!e)
|
||||||
{
|
{
|
||||||
if (e)
|
prinst->edicttable[i] = *(struct edict_s **)&e = (void*)memalloc(pr_edict_size);
|
||||||
memfree(e);
|
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
prinst->edicttable[i] = (struct edict_s *)e = (void*)memalloc(pr_edict_size);
|
|
||||||
e->entnum = i;
|
e->entnum = i;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ED_ClearEdict (progfuncs, e);
|
ED_ClearEdict (progfuncs, e);
|
||||||
|
@ -118,12 +114,8 @@ struct edict_s *ED_Alloc (progfuncs_t *progfuncs)
|
||||||
{
|
{
|
||||||
if (!e)
|
if (!e)
|
||||||
{
|
{
|
||||||
if (e)
|
prinst->edicttable[i] = *(struct edict_s **)&e = (void*)memalloc(pr_edict_size);
|
||||||
memfree(e);
|
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
prinst->edicttable[i] = (struct edict_s *)e = (void*)memalloc(pr_edict_size);
|
|
||||||
e->entnum = i;
|
e->entnum = i;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ED_ClearEdict (progfuncs, e);
|
ED_ClearEdict (progfuncs, e);
|
||||||
|
@ -140,13 +132,13 @@ struct edict_s *ED_Alloc (progfuncs_t *progfuncs)
|
||||||
|
|
||||||
sv_num_edicts++;
|
sv_num_edicts++;
|
||||||
e = (edictrun_t*)EDICT_NUM(progfuncs, i);
|
e = (edictrun_t*)EDICT_NUM(progfuncs, i);
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
if (!e)
|
if (!e)
|
||||||
{
|
{
|
||||||
prinst->edicttable[i] = (struct edict_s *)e = (void*)memalloc(pr_edict_size);
|
prinst->edicttable[i] = *(struct edict_s **)&e = (void*)memalloc(pr_edict_size);
|
||||||
e->entnum = i;
|
e->entnum = i;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
ED_ClearEdict (progfuncs, e);
|
ED_ClearEdict (progfuncs, e);
|
||||||
|
|
||||||
if (externs->entspawn)
|
if (externs->entspawn)
|
||||||
|
@ -1545,14 +1537,13 @@ int LoadEnts(progfuncs_t *progfuncs, char *file, float killonspawnflags)
|
||||||
for (num = 0; num < numents; num++)
|
for (num = 0; num < numents; num++)
|
||||||
{
|
{
|
||||||
ed = (edictrun_t *)EDICT_NUM(progfuncs, num);
|
ed = (edictrun_t *)EDICT_NUM(progfuncs, num);
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
if (!ed)
|
if (!ed)
|
||||||
{
|
{
|
||||||
prinst->edicttable[num] = (struct edict_s *)ed = (void*)memalloc(pr_edict_size);
|
prinst->edicttable[num] = *(struct edict_s **)&ed = (void*)memalloc(pr_edict_size);
|
||||||
ed->entnum = num;
|
ed->entnum = num;
|
||||||
ed->isfree = true;
|
ed->isfree = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1566,21 +1557,20 @@ int LoadEnts(progfuncs_t *progfuncs, char *file, float killonspawnflags)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ed = (edictrun_t *)EDICT_NUM(progfuncs, num);
|
ed = (edictrun_t *)EDICT_NUM(progfuncs, num);
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
if (!ed)
|
if (!ed)
|
||||||
{
|
{
|
||||||
Sys_Error("Edict was not allocated\n");
|
Sys_Error("Edict was not allocated\n");
|
||||||
prinst->edicttable[num] = (struct edict_s *)ed = (void*)memalloc(pr_edict_size);
|
prinst->edicttable[num] = *(struct edict_s **)&ed = (void*)memalloc(pr_edict_size);
|
||||||
ed->entnum = num;
|
ed->entnum = num;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
ed->isfree = false;
|
ed->isfree = false;
|
||||||
file = ED_ParseEdict(progfuncs, file, ed);
|
file = ED_ParseEdict(progfuncs, file, ed);
|
||||||
|
|
||||||
if (killonspawnflags)
|
if (killonspawnflags)
|
||||||
{
|
{
|
||||||
var = GetEdictFieldValue (progfuncs, (struct edict_s *)ed, "spawnflags", &spawnflagscache);
|
var = GetEdictFieldValue (progfuncs, (struct edict_s *)&ed, "spawnflags", &spawnflagscache);
|
||||||
if (var)
|
if (var)
|
||||||
{
|
{
|
||||||
if ((int)var->_float & (int)killonspawnflags)
|
if ((int)var->_float & (int)killonspawnflags)
|
||||||
|
@ -1660,14 +1650,13 @@ int LoadEnts(progfuncs_t *progfuncs, char *file, float killonspawnflags)
|
||||||
for (num = 0; num < numents; num++)
|
for (num = 0; num < numents; num++)
|
||||||
{
|
{
|
||||||
ed = (edictrun_t *)EDICT_NUM(progfuncs, num);
|
ed = (edictrun_t *)EDICT_NUM(progfuncs, num);
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
if (!ed)
|
if (!ed)
|
||||||
{
|
{
|
||||||
prinst->edicttable[num] = (struct edict_s *)ed = (void*)memalloc(pr_edict_size);
|
prinst->edicttable[num] = *(struct edict_s **)&ed = (void*)memalloc(pr_edict_size);
|
||||||
ed->entnum = num;
|
ed->entnum = num;
|
||||||
ed->isfree = true;
|
ed->isfree = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1818,14 +1807,13 @@ int LoadEnts(progfuncs_t *progfuncs, char *file, float killonspawnflags)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ed = (edictrun_t *)EDICT_NUM(progfuncs, numents);
|
ed = (edictrun_t *)EDICT_NUM(progfuncs, numents);
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
if (!ed)
|
if (!ed)
|
||||||
{
|
{
|
||||||
prinst->edicttable[numents] = (struct edict_s *)ed = (void*)memalloc(pr_edict_size);
|
prinst->edicttable[numents] = *(struct edict_s **)&ed = (void*)memalloc(pr_edict_size);
|
||||||
ed->entnum = numents;
|
ed->entnum = numents;
|
||||||
ed->isfree = true;
|
ed->isfree = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
sv_num_edicts = numents;
|
sv_num_edicts = numents;
|
||||||
ed->isfree = false;
|
ed->isfree = false;
|
||||||
file = ED_ParseEdict (progfuncs, file, ed);
|
file = ED_ParseEdict (progfuncs, file, ed);
|
||||||
|
@ -1842,14 +1830,13 @@ int LoadEnts(progfuncs_t *progfuncs, char *file, float killonspawnflags)
|
||||||
for (num = 0; num < numents; num++)
|
for (num = 0; num < numents; num++)
|
||||||
{
|
{
|
||||||
ed = (edictrun_t *)EDICT_NUM(progfuncs, num);
|
ed = (edictrun_t *)EDICT_NUM(progfuncs, num);
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
if (!ed)
|
if (!ed)
|
||||||
{
|
{
|
||||||
prinst->edicttable[num] = (struct edict_s *)ed = (void*)memalloc(pr_edict_size);
|
prinst->edicttable[num] = *(struct edict_s **)&ed = (void*)memalloc(pr_edict_size);
|
||||||
ed->entnum = num;
|
ed->entnum = num;
|
||||||
ed->isfree = true;
|
ed->isfree = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2220,9 +2207,9 @@ retry:
|
||||||
|
|
||||||
fnc = pr_functions = (dfunction_t *)((qbyte *)pr_progs + pr_progs->ofs_functions);
|
fnc = pr_functions = (dfunction_t *)((qbyte *)pr_progs + pr_progs->ofs_functions);
|
||||||
pr_strings = ((char *)pr_progs + pr_progs->ofs_strings);
|
pr_strings = ((char *)pr_progs + pr_progs->ofs_strings);
|
||||||
gd16 = pr_globaldefs16 = (ddef16_t *)((qbyte *)pr_progs + pr_progs->ofs_globaldefs);
|
current_progstate->globaldefs = *(void**)&gd16 = (void *)((qbyte *)pr_progs + pr_progs->ofs_globaldefs);
|
||||||
fld16 = pr_fielddefs16 = (ddef16_t *)((qbyte *)pr_progs + pr_progs->ofs_fielddefs);
|
current_progstate->fielddefs = *(void**)&fld16 = (void *)((qbyte *)pr_progs + pr_progs->ofs_fielddefs);
|
||||||
pr_statements16 = (dstatement16_t *)((qbyte *)pr_progs + pr_progs->ofs_statements);
|
current_progstate->statements = (void *)((qbyte *)pr_progs + pr_progs->ofs_statements);
|
||||||
|
|
||||||
glob = pr_globals = (void *)((qbyte *)pr_progs + pr_progs->ofs_globals);
|
glob = pr_globals = (void *)((qbyte *)pr_progs + pr_progs->ofs_globals);
|
||||||
|
|
||||||
|
@ -2252,7 +2239,7 @@ retry:
|
||||||
s = PRHunkAlloc(progfuncs, len);
|
s = PRHunkAlloc(progfuncs, len);
|
||||||
QC_decode(progfuncs, LittleLong(*(int *)pr_statements16), len, 2, (char *)(((int *)pr_statements16)+1), s);
|
QC_decode(progfuncs, LittleLong(*(int *)pr_statements16), len, 2, (char *)(((int *)pr_statements16)+1), s);
|
||||||
|
|
||||||
pr_statements16 = (dstatement16_t *)s;
|
current_progstate->statements = (dstatement16_t *)s;
|
||||||
}
|
}
|
||||||
if (pr_progs->blockscompressed & 2) //global defs
|
if (pr_progs->blockscompressed & 2) //global defs
|
||||||
{
|
{
|
||||||
|
@ -2270,7 +2257,7 @@ retry:
|
||||||
s = PRHunkAlloc(progfuncs, len);
|
s = PRHunkAlloc(progfuncs, len);
|
||||||
QC_decode(progfuncs, LittleLong(*(int *)pr_globaldefs16), len, 2, (char *)(((int *)pr_globaldefs16)+1), s);
|
QC_decode(progfuncs, LittleLong(*(int *)pr_globaldefs16), len, 2, (char *)(((int *)pr_globaldefs16)+1), s);
|
||||||
|
|
||||||
gd16 = pr_globaldefs16 = (ddef16_t *)s;
|
gd16 = *(ddef16_t**)¤t_progstate->globaldefs = (ddef16_t *)s;
|
||||||
}
|
}
|
||||||
if (pr_progs->blockscompressed & 4) //fields
|
if (pr_progs->blockscompressed & 4) //fields
|
||||||
{
|
{
|
||||||
|
@ -2288,7 +2275,7 @@ retry:
|
||||||
s = PRHunkAlloc(progfuncs, len);
|
s = PRHunkAlloc(progfuncs, len);
|
||||||
QC_decode(progfuncs, LittleLong(*(int *)pr_fielddefs16), len, 2, (char *)(((int *)pr_fielddefs16)+1), s);
|
QC_decode(progfuncs, LittleLong(*(int *)pr_fielddefs16), len, 2, (char *)(((int *)pr_fielddefs16)+1), s);
|
||||||
|
|
||||||
pr_fielddefs16 = (ddef16_t *)s;
|
*(ddef16_t**)¤t_progstate->fielddefs = (ddef16_t *)s;
|
||||||
}
|
}
|
||||||
if (pr_progs->blockscompressed & 8) //functions
|
if (pr_progs->blockscompressed & 8) //functions
|
||||||
{
|
{
|
||||||
|
@ -2312,7 +2299,7 @@ retry:
|
||||||
s = PRHunkAlloc(progfuncs, len);
|
s = PRHunkAlloc(progfuncs, len);
|
||||||
QC_decode(progfuncs, LittleLong(*(int *)pr_globals), len, 2, (char *)(((int *)pr_globals)+1), s);
|
QC_decode(progfuncs, LittleLong(*(int *)pr_globals), len, 2, (char *)(((int *)pr_globals)+1), s);
|
||||||
|
|
||||||
glob = pr_globals = (float *)s;
|
glob = current_progstate->globals = (float *)s;
|
||||||
}
|
}
|
||||||
if (pr_progs->ofslinenums && pr_progs->blockscompressed & 64) //line numbers
|
if (pr_progs->ofslinenums && pr_progs->blockscompressed & 64) //line numbers
|
||||||
{
|
{
|
||||||
|
@ -2334,7 +2321,7 @@ retry:
|
||||||
|
|
||||||
pr_functions = fnc;
|
pr_functions = fnc;
|
||||||
// pr_strings = ((char *)pr_progs + pr_progs->ofs_strings);
|
// pr_strings = ((char *)pr_progs + pr_progs->ofs_strings);
|
||||||
gd16 = pr_globaldefs16 = (ddef16_t *)((qbyte *)pr_progs + pr_progs->ofs_globaldefs);
|
gd16 = *(ddef16_t**)¤t_progstate->globaldefs = (ddef16_t *)((qbyte *)pr_progs + pr_progs->ofs_globaldefs);
|
||||||
fld16 = (ddef16_t *)((qbyte *)pr_progs + pr_progs->ofs_fielddefs);
|
fld16 = (ddef16_t *)((qbyte *)pr_progs + pr_progs->ofs_fielddefs);
|
||||||
// pr_statements16 = (dstatement16_t *)((qbyte *)pr_progs + pr_progs->ofs_statements);
|
// pr_statements16 = (dstatement16_t *)((qbyte *)pr_progs + pr_progs->ofs_statements);
|
||||||
pr_globals = glob;
|
pr_globals = glob;
|
||||||
|
@ -2371,14 +2358,14 @@ retry:
|
||||||
if (!strncmp(fnc[i].s_name+4, eb->name+1, strlen(eb->name+1)))
|
if (!strncmp(fnc[i].s_name+4, eb->name+1, strlen(eb->name+1)))
|
||||||
{
|
{
|
||||||
fnc[i].first_statement = -0x7fffffff;
|
fnc[i].first_statement = -0x7fffffff;
|
||||||
(void*)fnc[i].profile = (void*)eb->func;
|
*(void**)&fnc[i].profile = (void*)eb->func;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(fnc[i].s_name+4, eb->name))
|
else if (!strcmp(fnc[i].s_name+4, eb->name))
|
||||||
{
|
{
|
||||||
fnc[i].first_statement = -0x7fffffff;
|
fnc[i].first_statement = -0x7fffffff;
|
||||||
(void*)fnc[i].profile = (void*)eb->func;
|
*(void**)&fnc[i].profile = (void*)eb->func;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2655,7 +2642,7 @@ retry:
|
||||||
isfriked = false;
|
isfriked = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
(char *)((int *)glob)[gd16[i].ofs] = NULL;
|
*(char **)&((int *)glob)[gd16[i].ofs] = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ev_function:
|
case ev_function:
|
||||||
|
@ -2718,7 +2705,7 @@ retry:
|
||||||
isfriked = false;
|
isfriked = false;
|
||||||
}
|
}
|
||||||
else if (isfriked != -1)
|
else if (isfriked != -1)
|
||||||
(char *)((int *)glob)[pr_globaldefs32[i].ofs] = NULL;
|
*(char **)&((int *)glob)[pr_globaldefs32[i].ofs] = NULL;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ev_function:
|
case ev_function:
|
||||||
|
@ -2777,27 +2764,14 @@ struct edict_s *EDICT_NUM(progfuncs_t *progfuncs, int n)
|
||||||
{
|
{
|
||||||
if (n < 0 || n >= maxedicts)
|
if (n < 0 || n >= maxedicts)
|
||||||
Sys_Error ("QCLIB: EDICT_NUM: bad number %i", n);
|
Sys_Error ("QCLIB: EDICT_NUM: bad number %i", n);
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
return prinst->edicttable[n];
|
return prinst->edicttable[n];
|
||||||
#else
|
|
||||||
return (struct edict_s *)((qbyte *)sv_edicts+ (n)*pr_edict_size);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int NUM_FOR_EDICT(progfuncs_t *progfuncs, struct edict_s *e)
|
int NUM_FOR_EDICT(progfuncs_t *progfuncs, struct edict_s *e)
|
||||||
{
|
{
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
edictrun_t *er = (edictrun_t*)e;
|
edictrun_t *er = (edictrun_t*)e;
|
||||||
if (er->entnum < 0 || er->entnum >= maxedicts)
|
if (er->entnum < 0 || er->entnum >= maxedicts)
|
||||||
Sys_Error ("QCLIB: NUM_FOR_EDICT: bad pointer (%i)", e);
|
Sys_Error ("QCLIB: NUM_FOR_EDICT: bad pointer (%i)", e);
|
||||||
return er->entnum;
|
return er->entnum;
|
||||||
#else
|
|
||||||
int b;
|
|
||||||
b = (qbyte *)e - (qbyte *)sv_edicts;
|
|
||||||
b = b / pr_edict_size;
|
|
||||||
|
|
||||||
if (b < 0 || b >= sv_num_edicts)
|
|
||||||
Sys_Error ("QCLIB: NUM_FOR_EDICT: bad pointer (%i)", b);
|
|
||||||
return b;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,8 +32,6 @@ typedef unsigned char qbyte;
|
||||||
#define PROGSUSED
|
#define PROGSUSED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DYNAMIC_ENTS
|
|
||||||
|
|
||||||
extern int maxedicts;
|
extern int maxedicts;
|
||||||
extern int maxprogs;
|
extern int maxprogs;
|
||||||
extern int hunksize;
|
extern int hunksize;
|
||||||
|
@ -412,10 +410,7 @@ var(int, hunksize);
|
||||||
var(extensionbuiltin_t *, extensionbuiltin);
|
var(extensionbuiltin_t *, extensionbuiltin);
|
||||||
#define extensionbuiltin prinst->extensionbuiltin
|
#define extensionbuiltin prinst->extensionbuiltin
|
||||||
|
|
||||||
#ifdef DYNAMIC_ENTS
|
|
||||||
struct edict_s **edicttable;
|
struct edict_s **edicttable;
|
||||||
#endif
|
|
||||||
|
|
||||||
} prinst_t;
|
} prinst_t;
|
||||||
extern vec3_t vec3_origin;
|
extern vec3_t vec3_origin;
|
||||||
|
|
||||||
|
|
|
@ -231,11 +231,7 @@ typedef union eval_s
|
||||||
|
|
||||||
#define PR_RegisterBuiltin(pf, name, func) (*pf->RegisterBuiltin) (pf, name, func)
|
#define PR_RegisterBuiltin(pf, name, func) (*pf->RegisterBuiltin) (pf, name, func)
|
||||||
|
|
||||||
//#ifdef DYNAMIC_ENTS
|
|
||||||
#define NEXT_EDICT(pf,o) EDICT_NUM(pf, NUM_FOR_EDICT(pf, o)+1)
|
#define NEXT_EDICT(pf,o) EDICT_NUM(pf, NUM_FOR_EDICT(pf, o)+1)
|
||||||
/*#else
|
|
||||||
#define NEXT_EDICT(pf, o) (edict_t *)(((char *)o)+ pr_edict_size)
|
|
||||||
#endif*/
|
|
||||||
#define RETURN_EDICT(pf, e) (((int *)pr_globals)[OFS_RETURN] = EDICT_TO_PROG(pf, e))
|
#define RETURN_EDICT(pf, e) (((int *)pr_globals)[OFS_RETURN] = EDICT_TO_PROG(pf, e))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// cmdlib.c
|
// cmdlib.c
|
||||||
|
|
||||||
#include "qcc.h"
|
#include "qcc.h"
|
||||||
|
#include <ctype.h>
|
||||||
//#include <sys/time.h>
|
//#include <sys/time.h>
|
||||||
|
|
||||||
#define PATHSEPERATOR '/'
|
#define PATHSEPERATOR '/'
|
||||||
|
|
|
@ -4886,7 +4886,7 @@ void QCC_PR_ParseState (void)
|
||||||
void QCC_PR_ParseAsm(void)
|
void QCC_PR_ParseAsm(void)
|
||||||
{
|
{
|
||||||
QCC_dstatement_t *patch1;
|
QCC_dstatement_t *patch1;
|
||||||
int op;
|
int op, p;
|
||||||
QCC_def_t *a, *b, *c;
|
QCC_def_t *a, *b, *c;
|
||||||
|
|
||||||
if (QCC_PR_Check("local"))
|
if (QCC_PR_Check("local"))
|
||||||
|
@ -4905,34 +4905,34 @@ QCC_dstatement_t *patch1;
|
||||||
{
|
{
|
||||||
if (pr_opcodes[op].type_a==NULL)
|
if (pr_opcodes[op].type_a==NULL)
|
||||||
{
|
{
|
||||||
(short)(int)a = (short)pr_immediate._float;
|
p = (short)pr_immediate._float;
|
||||||
QCC_PR_Lex();
|
QCC_PR_Lex();
|
||||||
patch1 = &statements[numstatements];
|
patch1 = &statements[numstatements];
|
||||||
QCC_PR_Statement3(&pr_opcodes[op], NULL, NULL, NULL);
|
QCC_PR_Statement3(&pr_opcodes[op], NULL, NULL, NULL);
|
||||||
patch1->a = (short)(int)a;
|
patch1->a = (short)(int)p;
|
||||||
}
|
}
|
||||||
else if (pr_opcodes[op].type_b==NULL)
|
else if (pr_opcodes[op].type_b==NULL)
|
||||||
{
|
{
|
||||||
a = QCC_PR_ParseValue(pr_classtype);
|
a = QCC_PR_ParseValue(pr_classtype);
|
||||||
(short)(int)b = (short)pr_immediate._float;
|
p = (short)pr_immediate._float;
|
||||||
QCC_PR_Lex();
|
QCC_PR_Lex();
|
||||||
|
|
||||||
patch1 = &statements[numstatements];
|
patch1 = &statements[numstatements];
|
||||||
QCC_PR_Statement3(&pr_opcodes[op], a, NULL, NULL);
|
QCC_PR_Statement3(&pr_opcodes[op], a, NULL, NULL);
|
||||||
|
|
||||||
patch1->b = (short)(int)b;
|
patch1->b = (short)(int)p;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
a = QCC_PR_ParseValue(pr_classtype);
|
a = QCC_PR_ParseValue(pr_classtype);
|
||||||
b = QCC_PR_ParseValue(pr_classtype);
|
b = QCC_PR_ParseValue(pr_classtype);
|
||||||
(short)(int)c = (short)pr_immediate._float;
|
p = (short)pr_immediate._float;
|
||||||
QCC_PR_Lex();
|
QCC_PR_Lex();
|
||||||
|
|
||||||
patch1 = &statements[numstatements];
|
patch1 = &statements[numstatements];
|
||||||
QCC_PR_Statement3(&pr_opcodes[op], a, b, NULL);
|
QCC_PR_Statement3(&pr_opcodes[op], a, b, NULL);
|
||||||
|
|
||||||
patch1->c = (short)(int)c;
|
patch1->c = (short)(int)p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -5082,7 +5082,7 @@ void QCC_CompoundJumps(int first, int last)
|
||||||
}
|
}
|
||||||
while (statements[statement].op == OP_GOTO)
|
while (statements[statement].op == OP_GOTO)
|
||||||
{
|
{
|
||||||
(signed)statements[st].a = statement+statements[statement].a - st;
|
*(signed*)&statements[st].a = statement+statements[statement].a - st;
|
||||||
statement = st + (signed)statements[st].a;
|
statement = st + (signed)statements[st].a;
|
||||||
optres_compound_jumps++;
|
optres_compound_jumps++;
|
||||||
}
|
}
|
||||||
|
@ -5092,7 +5092,7 @@ void QCC_CompoundJumps(int first, int last)
|
||||||
statement = st + (signed)statements[st].b;
|
statement = st + (signed)statements[st].b;
|
||||||
while (statements[statement].op == OP_GOTO)
|
while (statements[statement].op == OP_GOTO)
|
||||||
{
|
{
|
||||||
(signed)statements[st].b = statement+statements[statement].a - st;
|
*(signed*)&statements[st].b = statement+statements[statement].a - st;
|
||||||
statement = st + (signed)statements[st].b;
|
statement = st + (signed)statements[st].b;
|
||||||
optres_compound_jumps++;
|
optres_compound_jumps++;
|
||||||
}
|
}
|
||||||
|
@ -5102,7 +5102,7 @@ void QCC_CompoundJumps(int first, int last)
|
||||||
statement = st + (signed)statements[st].c;
|
statement = st + (signed)statements[st].c;
|
||||||
while (statements[statement].op == OP_GOTO)
|
while (statements[statement].op == OP_GOTO)
|
||||||
{
|
{
|
||||||
(signed)statements[st].c = statement+statements[statement].a - st;
|
*(signed*)&statements[st].c = statement+statements[statement].a - st;
|
||||||
statement = st + (signed)statements[st].c;
|
statement = st + (signed)statements[st].c;
|
||||||
optres_compound_jumps++;
|
optres_compound_jumps++;
|
||||||
}
|
}
|
||||||
|
@ -5479,7 +5479,7 @@ QCC_function_t *QCC_PR_ParseImmediateStatements (QCC_type_t *type)
|
||||||
{
|
{
|
||||||
if (!strcmp(pr_gotos[i].name, pr_labels[j].name))
|
if (!strcmp(pr_gotos[i].name, pr_labels[j].name))
|
||||||
{
|
{
|
||||||
(signed int)statements[pr_gotos[i].statementno].a += pr_labels[j].statementno - pr_gotos[i].statementno;
|
*(signed int*)&statements[pr_gotos[i].statementno].a += pr_labels[j].statementno - pr_gotos[i].statementno;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6295,7 +6295,7 @@ void QCC_PR_ParseDefs (char *classname)
|
||||||
i>>=1;
|
i>>=1;
|
||||||
}
|
}
|
||||||
if (bits != 1)
|
if (bits != 1)
|
||||||
QCC_PR_ParseWarning(WARN_ENUMFLAGS_NOTBINARY, "enumflags - %i not a binary value", (int)v);
|
QCC_PR_ParseWarning(WARN_ENUMFLAGS_NOTBINARY, "enumflags - value %i not a single bit", (int)v);
|
||||||
}
|
}
|
||||||
QCC_PR_Lex();
|
QCC_PR_Lex();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1069,7 +1069,7 @@ float QCC_PR_LexFloat (void)
|
||||||
len++;
|
len++;
|
||||||
pr_file_p++;
|
pr_file_p++;
|
||||||
c = *pr_file_p;
|
c = *pr_file_p;
|
||||||
} while ((c >= '0' && c<= '9') || c == '.'&&pr_file_p[1]!='.');
|
} while ((c >= '0' && c<= '9') || (c == '.'&&pr_file_p[1]!='.')); //only allow a . if the next isn't too...
|
||||||
pr_token[len] = 0;
|
pr_token[len] = 0;
|
||||||
return (float)atof (pr_token);
|
return (float)atof (pr_token);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1019,9 +1019,9 @@ strofs = (strofs+3)&~3;
|
||||||
for (i=0 ; i<numtypeinfos ; i++)
|
for (i=0 ; i<numtypeinfos ; i++)
|
||||||
{
|
{
|
||||||
if (qcc_typeinfo[i].aux_type)
|
if (qcc_typeinfo[i].aux_type)
|
||||||
(unsigned int)qcc_typeinfo[i].aux_type = qcc_typeinfo[i].aux_type - qcc_typeinfo;
|
qcc_typeinfo[i].aux_type = (QCC_type_t*)(qcc_typeinfo[i].aux_type - qcc_typeinfo);
|
||||||
if (qcc_typeinfo[i].next)
|
if (qcc_typeinfo[i].next)
|
||||||
(unsigned int)qcc_typeinfo[i].next = qcc_typeinfo[i].next - qcc_typeinfo;
|
qcc_typeinfo[i].next = (QCC_type_t*)(qcc_typeinfo[i].next - qcc_typeinfo);
|
||||||
qcc_typeinfo[i].name = (char *)QCC_CopyDupBackString(qcc_typeinfo[i].name);
|
qcc_typeinfo[i].name = (char *)QCC_CopyDupBackString(qcc_typeinfo[i].name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2182,13 +2182,13 @@ void QCC_PR_CommandLinePrecompilerOptions (void)
|
||||||
//optimisations.
|
//optimisations.
|
||||||
else if ( !strnicmp(myargv[i], "-O", 2) || !strnicmp(myargv[i], "/O", 2) )
|
else if ( !strnicmp(myargv[i], "-O", 2) || !strnicmp(myargv[i], "/O", 2) )
|
||||||
{
|
{
|
||||||
|
p = 0;
|
||||||
if (myargv[i][2] >= '0' && myargv[i][2] <= '3')
|
if (myargv[i][2] >= '0' && myargv[i][2] <= '3')
|
||||||
{
|
{
|
||||||
p=0;
|
|
||||||
}
|
}
|
||||||
else if (!strnicmp(myargv[i]+2, "no-", 3))
|
else if (!strnicmp(myargv[i]+2, "no-", 3))
|
||||||
{
|
{
|
||||||
if (myargv[i][5])
|
if (!myargv[i][5])
|
||||||
for (p = 0; optimisations[p].enabled; p++)
|
for (p = 0; optimisations[p].enabled; p++)
|
||||||
if ((*optimisations[p].abbrev && !stricmp(myargv[i]+5, optimisations[p].abbrev)) || !stricmp(myargv[i]+5, optimisations[p].fullname))
|
if ((*optimisations[p].abbrev && !stricmp(myargv[i]+5, optimisations[p].abbrev)) || !stricmp(myargv[i]+5, optimisations[p].fullname))
|
||||||
{
|
{
|
||||||
|
@ -2212,6 +2212,7 @@ void QCC_PR_CommandLinePrecompilerOptions (void)
|
||||||
|
|
||||||
else if ( !strnicmp(myargv[i], "-K", 2) || !strnicmp(myargv[i], "/K", 2) )
|
else if ( !strnicmp(myargv[i], "-K", 2) || !strnicmp(myargv[i], "/K", 2) )
|
||||||
{
|
{
|
||||||
|
p = 0;
|
||||||
if (!strnicmp(myargv[i]+2, "no-", 3))
|
if (!strnicmp(myargv[i]+2, "no-", 3))
|
||||||
{
|
{
|
||||||
for (p = 0; compiler_flag[p].enabled; p++)
|
for (p = 0; compiler_flag[p].enabled; p++)
|
||||||
|
@ -2236,6 +2237,7 @@ void QCC_PR_CommandLinePrecompilerOptions (void)
|
||||||
}
|
}
|
||||||
else if ( !strnicmp(myargv[i], "-F", 2) || !strnicmp(myargv[i], "/F", 2) )
|
else if ( !strnicmp(myargv[i], "-F", 2) || !strnicmp(myargv[i], "/F", 2) )
|
||||||
{
|
{
|
||||||
|
p = 0;
|
||||||
if (!strnicmp(myargv[i]+2, "no-", 3))
|
if (!strnicmp(myargv[i]+2, "no-", 3))
|
||||||
{
|
{
|
||||||
for (p = 0; compiler_flag[p].enabled; p++)
|
for (p = 0; compiler_flag[p].enabled; p++)
|
||||||
|
@ -2262,6 +2264,7 @@ void QCC_PR_CommandLinePrecompilerOptions (void)
|
||||||
|
|
||||||
else if ( !strncmp(myargv[i], "-T", 2) || !strncmp(myargv[i], "/T", 2) )
|
else if ( !strncmp(myargv[i], "-T", 2) || !strncmp(myargv[i], "/T", 2) )
|
||||||
{
|
{
|
||||||
|
p = 0;
|
||||||
for (p = 0; targets[p].name; p++)
|
for (p = 0; targets[p].name; p++)
|
||||||
if (!stricmp(myargv[i]+2, targets[p].name))
|
if (!stricmp(myargv[i]+2, targets[p].name))
|
||||||
{
|
{
|
||||||
|
@ -2281,6 +2284,7 @@ void QCC_PR_CommandLinePrecompilerOptions (void)
|
||||||
memset(qccwarningdisabled, 1, sizeof(qccwarningdisabled));
|
memset(qccwarningdisabled, 1, sizeof(qccwarningdisabled));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
p = 0;
|
||||||
if (!strnicmp(myargv[i]+2, "no-", 3))
|
if (!strnicmp(myargv[i]+2, "no-", 3))
|
||||||
{
|
{
|
||||||
for (p = 0; warningnames[p].name; p++)
|
for (p = 0; warningnames[p].name; p++)
|
||||||
|
|
|
@ -154,7 +154,7 @@ typedef unsigned char CARD8;
|
||||||
typedef CARD32 BITS32;
|
typedef CARD32 BITS32;
|
||||||
typedef CARD16 BITS16;
|
typedef CARD16 BITS16;
|
||||||
|
|
||||||
#ifndef I_NEED_OS2_H
|
#if !defined(I_NEED_OS2_H) && !defined(_WIN32)
|
||||||
typedef CARD8 BYTE;
|
typedef CARD8 BYTE;
|
||||||
typedef CARD8 BOOL;
|
typedef CARD8 BOOL;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -588,7 +588,7 @@ nextmessage:
|
||||||
{
|
{
|
||||||
cl->requestnum++;
|
cl->requestnum++;
|
||||||
|
|
||||||
if (req->reqType < 0 || req->reqType >= 256 || !XRequests[req->reqType])
|
/* if (req->reqType < 0 || req->reqType >= 256 || !XRequests[req->reqType])
|
||||||
{
|
{
|
||||||
// Con_Printf("X request %i, len %i - NOT SUPPORTED\n", req->reqType, rlen*4);
|
// Con_Printf("X request %i, len %i - NOT SUPPORTED\n", req->reqType, rlen*4);
|
||||||
|
|
||||||
|
@ -597,6 +597,7 @@ nextmessage:
|
||||||
// cl->tobedropped = true;
|
// cl->tobedropped = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
// Con_Printf("X request %i, len %i\n", req->reqType, rlen*4);
|
// Con_Printf("X request %i, len %i\n", req->reqType, rlen*4);
|
||||||
|
|
||||||
|
@ -782,7 +783,9 @@ void XWindows_TendToClients(void)
|
||||||
int addrlen;
|
int addrlen;
|
||||||
xclient_t *cl, *prev=NULL;
|
xclient_t *cl, *prev=NULL;
|
||||||
int newclient;
|
int newclient;
|
||||||
|
#ifndef MULTITHREADWIN32
|
||||||
unsigned int _true = 1;
|
unsigned int _true = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (xlistensocket != -1)
|
if (xlistensocket != -1)
|
||||||
{
|
{
|
||||||
|
@ -800,7 +803,7 @@ void XWindows_TendToClients(void)
|
||||||
|
|
||||||
#ifdef MULTITHREADWIN32
|
#ifdef MULTITHREADWIN32
|
||||||
InitializeCriticalSection (&cl->delecatesection);
|
InitializeCriticalSection (&cl->delecatesection);
|
||||||
{int tid;
|
{DWORD tid;
|
||||||
cl->threadhandle = CreateThread(NULL, 0, X_RunClient, cl, 0, &tid);
|
cl->threadhandle = CreateThread(NULL, 0, X_RunClient, cl, 0, &tid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1075,7 +1078,7 @@ void X_EvalutateCursorOwner(int movemode)
|
||||||
int wcx;
|
int wcx;
|
||||||
int wcy;
|
int wcy;
|
||||||
|
|
||||||
extern xwindow_t *xpgrabbedwindow, *xpconfinewindow;
|
extern xwindow_t *xpconfinewindow;
|
||||||
|
|
||||||
{
|
{
|
||||||
extern int mousecursor_x, mousecursor_y;
|
extern int mousecursor_x, mousecursor_y;
|
||||||
|
@ -1140,7 +1143,7 @@ void X_EvalutateCursorOwner(int movemode)
|
||||||
|
|
||||||
if (mx != x_mousex || my != x_mousey || x_windowwithcursor != cursorowner->res.id)
|
if (mx != x_mousex || my != x_mousey || x_windowwithcursor != cursorowner->res.id)
|
||||||
{
|
{
|
||||||
extern qboolean keydown[256];
|
// extern qboolean keydown[256];
|
||||||
|
|
||||||
// Con_Printf("move %i %i\n", mx, my);
|
// Con_Printf("move %i %i\n", mx, my);
|
||||||
|
|
||||||
|
@ -1157,7 +1160,7 @@ void X_EvalutateCursorOwner(int movemode)
|
||||||
xwindow_t *a,*b;
|
xwindow_t *a,*b;
|
||||||
int d1,d2;
|
int d1,d2;
|
||||||
|
|
||||||
if (XS_GetResource(x_windowwithcursor, &wnd) != x_window)
|
if (XS_GetResource(x_windowwithcursor, (void**)&wnd) != x_window)
|
||||||
wnd = rootwindow;
|
wnd = rootwindow;
|
||||||
|
|
||||||
x_windowwithcursor = cursorowner->res.id;
|
x_windowwithcursor = cursorowner->res.id;
|
||||||
|
@ -1345,7 +1348,7 @@ void X_EvalutateCursorOwner(int movemode)
|
||||||
{ //same window
|
{ //same window
|
||||||
ev.u.keyButtonPointer.child = x_windowwithcursor;
|
ev.u.keyButtonPointer.child = x_windowwithcursor;
|
||||||
|
|
||||||
if (XS_GetResource(x_windowwithcursor, &wnd) == x_window)
|
if (XS_GetResource(x_windowwithcursor, (void**)&wnd) == x_window)
|
||||||
{ //cursor still in the same child.
|
{ //cursor still in the same child.
|
||||||
int mask = PointerMotionMask;
|
int mask = PointerMotionMask;
|
||||||
if (mousestate)
|
if (mousestate)
|
||||||
|
@ -1375,7 +1378,7 @@ void X_EvalutateFocus(int movemode)
|
||||||
xEvent ev;
|
xEvent ev;
|
||||||
xwindow_t *fo, *po, *wnd;
|
xwindow_t *fo, *po, *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(x_windowwithcursor, &po) != x_window)
|
if (XS_GetResource(x_windowwithcursor, (void**)&po) != x_window)
|
||||||
po = rootwindow;
|
po = rootwindow;
|
||||||
|
|
||||||
// xfocusedwindow = NULL;
|
// xfocusedwindow = NULL;
|
||||||
|
@ -1383,7 +1386,7 @@ void X_EvalutateFocus(int movemode)
|
||||||
|
|
||||||
if (!xfocusedwindow)
|
if (!xfocusedwindow)
|
||||||
{
|
{
|
||||||
if (XS_GetResource(x_windowwithcursor, &fo) != x_window)
|
if (XS_GetResource(x_windowwithcursor, (void**)&fo) != x_window)
|
||||||
fo = rootwindow;
|
fo = rootwindow;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1393,7 +1396,6 @@ void X_EvalutateFocus(int movemode)
|
||||||
|
|
||||||
if (x_windowwithfocus != fo->res.id)
|
if (x_windowwithfocus != fo->res.id)
|
||||||
{
|
{
|
||||||
extern qboolean keydown[256];
|
|
||||||
ev.u.u.detail = 0;
|
ev.u.u.detail = 0;
|
||||||
ev.u.u.sequenceNumber = 0;
|
ev.u.u.sequenceNumber = 0;
|
||||||
ev.u.focus.mode = movemode;
|
ev.u.focus.mode = movemode;
|
||||||
|
@ -1401,7 +1403,7 @@ void X_EvalutateFocus(int movemode)
|
||||||
xwindow_t *a,*b;
|
xwindow_t *a,*b;
|
||||||
int d1,d2;
|
int d1,d2;
|
||||||
|
|
||||||
if (XS_GetResource(x_windowwithfocus, &wnd) != x_window)
|
if (XS_GetResource(x_windowwithfocus, (void**)&wnd) != x_window)
|
||||||
wnd = rootwindow;
|
wnd = rootwindow;
|
||||||
|
|
||||||
x_windowwithfocus = fo->res.id;
|
x_windowwithfocus = fo->res.id;
|
||||||
|
@ -1641,7 +1643,7 @@ void XWindows_Draw(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
XWindows_TendToClients();
|
XWindows_TendToClients();
|
||||||
Media_ShowFrame(xscreen, xscreenwidth, xscreenheight, NULL);
|
Media_ShowFrameRGBA_32 (xscreen, xscreenwidth, xscreenheight);
|
||||||
|
|
||||||
Con_DrawNotify();
|
Con_DrawNotify();
|
||||||
|
|
||||||
|
@ -1724,7 +1726,7 @@ void XWindows_Key(int key)
|
||||||
ev.u.keyButtonPointer.event = ev.u.keyButtonPointer.child;
|
ev.u.keyButtonPointer.event = ev.u.keyButtonPointer.child;
|
||||||
ev.u.keyButtonPointer.eventX = ev.u.keyButtonPointer.rootX;
|
ev.u.keyButtonPointer.eventX = ev.u.keyButtonPointer.rootX;
|
||||||
ev.u.keyButtonPointer.eventY = ev.u.keyButtonPointer.rootY;
|
ev.u.keyButtonPointer.eventY = ev.u.keyButtonPointer.rootY;
|
||||||
if (XS_GetResource(x_windowwithcursor, &wnd) == x_window)
|
if (XS_GetResource(x_windowwithcursor, (void**)&wnd) == x_window)
|
||||||
{
|
{
|
||||||
ev.u.u.sequenceNumber = xpointergrabclient->requestnum;
|
ev.u.u.sequenceNumber = xpointergrabclient->requestnum;
|
||||||
while(wnd)
|
while(wnd)
|
||||||
|
@ -1736,7 +1738,7 @@ void XWindows_Key(int key)
|
||||||
X_SendData(xpointergrabclient, &ev, sizeof(ev));
|
X_SendData(xpointergrabclient, &ev, sizeof(ev));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (XS_GetResource(ev.u.keyButtonPointer.child, &wnd) == x_window)
|
else if (XS_GetResource(ev.u.keyButtonPointer.child, (void**)&wnd) == x_window)
|
||||||
X_SendInputNotification(&ev, wnd, (ev.u.u.type==ButtonPress)?ButtonPressMask:KeyPressMask);
|
X_SendInputNotification(&ev, wnd, (ev.u.u.type==ButtonPress)?ButtonPressMask:KeyPressMask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1805,7 +1807,7 @@ void XWindows_Keyup(int key)
|
||||||
ev.u.keyButtonPointer.event = ev.u.keyButtonPointer.child;
|
ev.u.keyButtonPointer.event = ev.u.keyButtonPointer.child;
|
||||||
ev.u.keyButtonPointer.eventX = ev.u.keyButtonPointer.rootX;
|
ev.u.keyButtonPointer.eventX = ev.u.keyButtonPointer.rootX;
|
||||||
ev.u.keyButtonPointer.eventY = ev.u.keyButtonPointer.rootY;
|
ev.u.keyButtonPointer.eventY = ev.u.keyButtonPointer.rootY;
|
||||||
if (XS_GetResource(x_windowwithcursor, &wnd) == x_window)
|
if (XS_GetResource(x_windowwithcursor, (void**)&wnd) == x_window)
|
||||||
{
|
{
|
||||||
ev.u.u.sequenceNumber = xpointergrabclient->requestnum;
|
ev.u.u.sequenceNumber = xpointergrabclient->requestnum;
|
||||||
while(wnd)
|
while(wnd)
|
||||||
|
@ -1817,7 +1819,7 @@ void XWindows_Keyup(int key)
|
||||||
X_SendData(xpointergrabclient, &ev, sizeof(ev));
|
X_SendData(xpointergrabclient, &ev, sizeof(ev));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (XS_GetResource(ev.u.keyButtonPointer.child, &wnd) == x_window)
|
else if (XS_GetResource(ev.u.keyButtonPointer.child, (void**)&wnd) == x_window)
|
||||||
{
|
{
|
||||||
X_SendInputNotification(&ev, wnd, (ev.u.u.type==ButtonRelease)?ButtonReleaseMask:KeyReleaseMask);
|
X_SendInputNotification(&ev, wnd, (ev.u.u.type==ButtonRelease)?ButtonReleaseMask:KeyReleaseMask);
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,7 +262,7 @@ void XR_GetAtomName (xclient_t *cl, xReq *request)
|
||||||
|
|
||||||
xatom_t *xa;
|
xatom_t *xa;
|
||||||
|
|
||||||
if (XS_GetResource(req->id, &xa) != x_atom)
|
if (XS_GetResource(req->id, (void**)&xa) != x_atom)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadAtom, req->id, X_GetAtomName, 0);
|
X_SendError(cl, BadAtom, req->id, X_GetAtomName, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -331,12 +331,12 @@ void XR_GetProperty (xclient_t *cl, xReq *request)
|
||||||
int trailing;
|
int trailing;
|
||||||
xGetPropertyReply *rep = (xGetPropertyReply*)buffer;
|
xGetPropertyReply *rep = (xGetPropertyReply*)buffer;
|
||||||
|
|
||||||
if (XS_GetResource(req->window, &wnd) != x_window)
|
if (XS_GetResource(req->window, (void**)&wnd) != x_window)
|
||||||
{ //wait a minute, That's not a window!!!
|
{ //wait a minute, That's not a window!!!
|
||||||
X_SendError(cl, BadWindow, req->window, X_GetProperty, 0);
|
X_SendError(cl, BadWindow, req->window, X_GetProperty, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (XS_GetResource(req->property, NULL) != x_atom)
|
if (XS_GetResource(req->property, (void**)NULL) != x_atom)
|
||||||
{ //whoops
|
{ //whoops
|
||||||
X_SendError(cl, BadAtom, req->property, X_GetProperty, 0);
|
X_SendError(cl, BadAtom, req->property, X_GetProperty, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -392,7 +392,7 @@ void XR_ListProperties(xclient_t *cl, xReq *request)
|
||||||
xListPropertiesReply *rep = (xListPropertiesReply*)buffer;
|
xListPropertiesReply *rep = (xListPropertiesReply*)buffer;
|
||||||
Atom *out = (Atom *)(rep+1);
|
Atom *out = (Atom *)(rep+1);
|
||||||
|
|
||||||
if (XS_GetResource(req->id, &wnd) != x_window)
|
if (XS_GetResource(req->id, (void**)&wnd) != x_window)
|
||||||
{ //wait a minute, That's not a window!!!
|
{ //wait a minute, That's not a window!!!
|
||||||
X_SendError(cl, BadWindow, req->id, X_GetProperty, 0);
|
X_SendError(cl, BadWindow, req->id, X_GetProperty, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -430,13 +430,13 @@ void XR_ChangeProperty (xclient_t *cl, xReq *request)
|
||||||
xatom_t *atom;
|
xatom_t *atom;
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(req->window, &wnd) != x_window)
|
if (XS_GetResource(req->window, (void**)&wnd) != x_window)
|
||||||
{ //wait a minute, That's not a window!!!
|
{ //wait a minute, That's not a window!!!
|
||||||
X_SendError(cl, BadWindow, req->window, X_ChangeProperty, 0);
|
X_SendError(cl, BadWindow, req->window, X_ChangeProperty, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->property, &atom) != x_atom)
|
if (XS_GetResource(req->property, (void**)&atom) != x_atom)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadAtom, req->property, X_ChangeProperty, 0);
|
X_SendError(cl, BadAtom, req->property, X_ChangeProperty, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -494,13 +494,13 @@ void XR_DeleteProperty(xclient_t *cl, xReq *request)
|
||||||
|
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(req->window, &wnd) != x_window)
|
if (XS_GetResource(req->window, (void**)&wnd) != x_window)
|
||||||
{ //wait a minute, That's not a window!!!
|
{ //wait a minute, That's not a window!!!
|
||||||
X_SendError(cl, BadWindow, req->window, X_DeleteProperty, 0);
|
X_SendError(cl, BadWindow, req->window, X_DeleteProperty, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->property, NULL) != x_atom)
|
if (XS_GetResource(req->property, (void**)NULL) != x_atom)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadAtom, req->property, X_DeleteProperty, 0);
|
X_SendError(cl, BadAtom, req->property, X_DeleteProperty, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -532,13 +532,13 @@ void XR_GetSelectionOwner (xclient_t *cl, xReq *request)
|
||||||
xGetSelectionOwnerReply reply;
|
xGetSelectionOwnerReply reply;
|
||||||
xatom_t *atom;
|
xatom_t *atom;
|
||||||
|
|
||||||
if (XS_GetResource(req->id, &atom) != x_atom)
|
if (XS_GetResource(req->id, (void**)&atom) != x_atom)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadAtom, req->id, X_GetSelectionOwner, 0);
|
X_SendError(cl, BadAtom, req->id, X_GetSelectionOwner, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(atom->selectionownerwindowid, NULL) != x_window) //make sure the window still exists.
|
if (XS_GetResource(atom->selectionownerwindowid, (void**)NULL) != x_window) //make sure the window still exists.
|
||||||
{
|
{
|
||||||
atom->selectionownerwindowid = None;
|
atom->selectionownerwindowid = None;
|
||||||
}
|
}
|
||||||
|
@ -562,13 +562,13 @@ void XR_SetSelectionOwner (xclient_t *cl, xReq *request)
|
||||||
xatom_t *atom;
|
xatom_t *atom;
|
||||||
xwindow_t *window;
|
xwindow_t *window;
|
||||||
|
|
||||||
if (XS_GetResource(req->selection, &atom) != x_atom)
|
if (XS_GetResource(req->selection, (void**)&atom) != x_atom)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadAtom, req->selection, X_SetSelectionOwner, 0);
|
X_SendError(cl, BadAtom, req->selection, X_SetSelectionOwner, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->window, &window) != x_window) //make sure the window still exists.
|
if (XS_GetResource(req->window, (void**)&window) != x_window) //make sure the window still exists.
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->window, X_SetSelectionOwner, 0);
|
X_SendError(cl, BadWindow, req->window, X_SetSelectionOwner, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -617,7 +617,7 @@ void XR_SetInputFocus (xclient_t *cl, xReq *request)
|
||||||
xResourceReq *req = (xResourceReq *)request;
|
xResourceReq *req = (xResourceReq *)request;
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(req->id, &wnd) != x_window)
|
if (XS_GetResource(req->id, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->id, X_SetInputFocus, 0);
|
X_SendError(cl, BadDrawable, req->id, X_SetInputFocus, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -682,7 +682,7 @@ void XR_GetGeometry (xclient_t *cl, xReq *request)
|
||||||
rep.pad2 = 0;
|
rep.pad2 = 0;
|
||||||
rep.pad3 = 0;
|
rep.pad3 = 0;
|
||||||
|
|
||||||
switch(XS_GetResource(req->id, &drawable))
|
switch(XS_GetResource(req->id, (void**)&drawable))
|
||||||
{
|
{
|
||||||
case x_window:
|
case x_window:
|
||||||
wnd = (xwindow_t*)drawable;
|
wnd = (xwindow_t*)drawable;
|
||||||
|
@ -719,13 +719,13 @@ void XR_CreateWindow (xclient_t *cl, xReq *request)
|
||||||
X_SendError(cl, BadMatch, req->wid, X_CreateWindow, 0);
|
X_SendError(cl, BadMatch, req->wid, X_CreateWindow, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (XS_GetResource(req->wid, &parent) != x_none)
|
if (XS_GetResource(req->wid, (void**)&parent) != x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadIDChoice, req->wid, X_CreateWindow, 0);
|
X_SendError(cl, BadIDChoice, req->wid, X_CreateWindow, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->parent, &parent) != x_window)
|
if (XS_GetResource(req->parent, (void**)&parent) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->parent, X_CreateWindow, 0);
|
X_SendError(cl, BadWindow, req->parent, X_CreateWindow, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -750,7 +750,7 @@ void XR_CreateWindow (xclient_t *cl, xReq *request)
|
||||||
if (req->mask & CWBackPixmap)
|
if (req->mask & CWBackPixmap)
|
||||||
{
|
{
|
||||||
wnd->backpixmap = NULL;
|
wnd->backpixmap = NULL;
|
||||||
if (XS_GetResource(*parameters, &wnd->backpixmap) != x_pixmap)
|
if (XS_GetResource(*parameters, (void**)&wnd->backpixmap) != x_pixmap)
|
||||||
{
|
{
|
||||||
if (*parameters)
|
if (*parameters)
|
||||||
X_SendError(cl, BadPixmap, *parameters, X_CreateWindow, 0);
|
X_SendError(cl, BadPixmap, *parameters, X_CreateWindow, 0);
|
||||||
|
@ -898,7 +898,7 @@ void XR_ChangeWindowAttributes (xclient_t *cl, xReq *request)
|
||||||
xChangeWindowAttributesReq *req = (xChangeWindowAttributesReq *)request;
|
xChangeWindowAttributesReq *req = (xChangeWindowAttributesReq *)request;
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(req->window, &wnd) != x_window)
|
if (XS_GetResource(req->window, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->window, X_ChangeWindowAttributes, 0);
|
X_SendError(cl, BadWindow, req->window, X_ChangeWindowAttributes, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -911,7 +911,7 @@ void XR_ChangeWindowAttributes (xclient_t *cl, xReq *request)
|
||||||
if (wnd->backpixmap)
|
if (wnd->backpixmap)
|
||||||
wnd->backpixmap->references--;
|
wnd->backpixmap->references--;
|
||||||
wnd->backpixmap = NULL;
|
wnd->backpixmap = NULL;
|
||||||
if (XS_GetResource(*parameters, &wnd->backpixmap) != x_pixmap)
|
if (XS_GetResource(*parameters, (void**)&wnd->backpixmap) != x_pixmap)
|
||||||
{
|
{
|
||||||
if (*parameters)
|
if (*parameters)
|
||||||
X_SendError(cl, BadPixmap, *parameters, X_ChangeWindowAttributes, 0);
|
X_SendError(cl, BadPixmap, *parameters, X_ChangeWindowAttributes, 0);
|
||||||
|
@ -933,7 +933,7 @@ void XR_ChangeWindowAttributes (xclient_t *cl, xReq *request)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadImplementation, 0, X_ChangeWindowAttributes, 0);
|
X_SendError(cl, BadImplementation, 0, X_ChangeWindowAttributes, 0);
|
||||||
/* wnd->borderpixmap = NULL;
|
/* wnd->borderpixmap = NULL;
|
||||||
if (XS_GetResource(*parameters, &wnd->borderpixmap) != x_pixmap)
|
if (XS_GetResource(*parameters, (void**)&wnd->borderpixmap) != x_pixmap)
|
||||||
{
|
{
|
||||||
if (*parameters)
|
if (*parameters)
|
||||||
X_SendError(cl, BadPixmap, *parameters, X_ChangeWindowAttributes, 0);
|
X_SendError(cl, BadPixmap, *parameters, X_ChangeWindowAttributes, 0);
|
||||||
|
@ -1054,7 +1054,7 @@ void XR_ConfigureWindow (xclient_t *cl, xReq *request)
|
||||||
|
|
||||||
CARD32 *parm;
|
CARD32 *parm;
|
||||||
|
|
||||||
if (XS_GetResource(req->window, &wnd) != x_window)
|
if (XS_GetResource(req->window, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->window, X_ConfigureWindow, 0);
|
X_SendError(cl, BadWindow, req->window, X_ConfigureWindow, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1182,12 +1182,12 @@ void XR_ReparentWindow (xclient_t *cl, xReq *request)
|
||||||
xReparentWindowReq *req = (xReparentWindowReq *)request;
|
xReparentWindowReq *req = (xReparentWindowReq *)request;
|
||||||
xwindow_t *wnd, *parent;
|
xwindow_t *wnd, *parent;
|
||||||
|
|
||||||
if (XS_GetResource(req->window, &wnd) != x_window)
|
if (XS_GetResource(req->window, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->window, X_ReparentWindow, 0);
|
X_SendError(cl, BadWindow, req->window, X_ReparentWindow, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (XS_GetResource(req->parent, &parent) != x_window)
|
if (XS_GetResource(req->parent, (void**)&parent) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->parent, X_ReparentWindow, 0);
|
X_SendError(cl, BadWindow, req->parent, X_ReparentWindow, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1229,7 +1229,7 @@ void XR_DestroyWindow (xclient_t *cl, xReq *request)
|
||||||
xResourceReq *req = (xResourceReq *)request;
|
xResourceReq *req = (xResourceReq *)request;
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(req->id, &wnd) != x_window)
|
if (XS_GetResource(req->id, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->id, X_DestroyWindow, 0);
|
X_SendError(cl, BadWindow, req->id, X_DestroyWindow, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1249,7 +1249,7 @@ void XR_QueryTree (xclient_t *cl, xReq *request)
|
||||||
Window *cwnd;
|
Window *cwnd;
|
||||||
|
|
||||||
|
|
||||||
if (XS_GetResource(req->id, &wnd) != x_window)
|
if (XS_GetResource(req->id, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->id, X_DestroyWindow, 0);
|
X_SendError(cl, BadWindow, req->id, X_DestroyWindow, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1293,7 +1293,7 @@ void XR_GetWindowAttributes (xclient_t *cl, xReq *request)
|
||||||
|
|
||||||
xGetWindowAttributesReply rep;
|
xGetWindowAttributesReply rep;
|
||||||
|
|
||||||
if (XS_GetResource(req->id, &wnd) != x_window)
|
if (XS_GetResource(req->id, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->id, X_GetWindowAttributes, 0);
|
X_SendError(cl, BadWindow, req->id, X_GetWindowAttributes, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1495,7 +1495,7 @@ void XR_ChangeGC(xclient_t *cl, xReq *request)
|
||||||
xChangeGCReq *req = (xChangeGCReq *)request;
|
xChangeGCReq *req = (xChangeGCReq *)request;
|
||||||
xgcontext_t *gc;
|
xgcontext_t *gc;
|
||||||
|
|
||||||
if (XS_GetResource(req->gc, &gc) != x_gcontext)
|
if (XS_GetResource(req->gc, (void**)&gc) != x_gcontext)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadGC, req->gc, X_FreeGC, 0);
|
X_SendError(cl, BadGC, req->gc, X_FreeGC, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1509,7 +1509,7 @@ void XR_CreateGC(xclient_t *cl, xReq *request)
|
||||||
xCreateGCReq *req = (xCreateGCReq *)request;
|
xCreateGCReq *req = (xCreateGCReq *)request;
|
||||||
xresource_t *drawable;
|
xresource_t *drawable;
|
||||||
|
|
||||||
if (XS_GetResource(req->gc, &drawable) != x_none)
|
if (XS_GetResource(req->gc, (void**)&drawable) != x_none)
|
||||||
{
|
{
|
||||||
// if (req->gc == cl->ridbase&&drawable->owner)
|
// if (req->gc == cl->ridbase&&drawable->owner)
|
||||||
// XS_DestroyResourcesOfClient(drawable->owner);
|
// XS_DestroyResourcesOfClient(drawable->owner);
|
||||||
|
@ -1519,7 +1519,7 @@ void XR_CreateGC(xclient_t *cl, xReq *request)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
XS_GetResource(req->drawable, &drawable);
|
XS_GetResource(req->drawable, (void**)&drawable);
|
||||||
/*if (drawable->restype != x_window && drawable->restype != x_gcontext)
|
/*if (drawable->restype != x_window && drawable->restype != x_gcontext)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->drawable, X_CreateGC, 0);
|
X_SendError(cl, BadDrawable, req->drawable, X_CreateGC, 0);
|
||||||
|
@ -1533,7 +1533,7 @@ void XR_FreeGC(xclient_t *cl, xReq *request)
|
||||||
{
|
{
|
||||||
xResourceReq *req = (xResourceReq *)request;
|
xResourceReq *req = (xResourceReq *)request;
|
||||||
xresource_t *gc;
|
xresource_t *gc;
|
||||||
if (XS_GetResource(req->id, &gc) != x_gcontext)
|
if (XS_GetResource(req->id, (void**)&gc) != x_gcontext)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadGC, req->id, X_FreeGC, 0);
|
X_SendError(cl, BadGC, req->id, X_FreeGC, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1685,7 +1685,7 @@ void XR_ClearArea(xclient_t *cl, xReq *request)
|
||||||
xClearAreaReq *req = (xClearAreaReq *)request;
|
xClearAreaReq *req = (xClearAreaReq *)request;
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(req->window, &wnd) != x_window)
|
if (XS_GetResource(req->window, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->window, X_ClearArea, 0);
|
X_SendError(cl, BadWindow, req->window, X_ClearArea, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1737,14 +1737,14 @@ void XR_CopyArea(xclient_t *cl, xReq *request) //from and to pixmap or drawable.
|
||||||
int outwidth;
|
int outwidth;
|
||||||
int outheight;
|
int outheight;
|
||||||
|
|
||||||
if (XS_GetResource(req->gc, &gc) == x_none)
|
if (XS_GetResource(req->gc, (void**)&gc) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadGC, req->gc, X_PutImage, 0);
|
X_SendError(cl, BadGC, req->gc, X_PutImage, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch (XS_GetResource(req->srcDrawable, &drawable))
|
switch (XS_GetResource(req->srcDrawable, (void**)&drawable))
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
X_SendError(cl, BadDrawable, req->srcDrawable, X_PutImage, 0);
|
X_SendError(cl, BadDrawable, req->srcDrawable, X_PutImage, 0);
|
||||||
|
@ -1783,7 +1783,7 @@ void XR_CopyArea(xclient_t *cl, xReq *request) //from and to pixmap or drawable.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (XS_GetResource(req->dstDrawable, &drawable))
|
switch (XS_GetResource(req->dstDrawable, (void**)&drawable))
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
X_SendError(cl, BadDrawable, req->dstDrawable, X_PutImage, 0);
|
X_SendError(cl, BadDrawable, req->dstDrawable, X_PutImage, 0);
|
||||||
|
@ -1832,7 +1832,7 @@ void XR_MapWindow(xclient_t *cl, xReq *request)
|
||||||
xResourceReq *req = (xResourceReq *)request;
|
xResourceReq *req = (xResourceReq *)request;
|
||||||
|
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
if (XS_GetResource(req->id, &wnd) != x_window)
|
if (XS_GetResource(req->id, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->id, X_MapWindow, 0);
|
X_SendError(cl, BadWindow, req->id, X_MapWindow, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1937,7 +1937,7 @@ void XR_UnmapWindow(xclient_t *cl, xReq *request)
|
||||||
xResourceReq *req = (xResourceReq *)request;
|
xResourceReq *req = (xResourceReq *)request;
|
||||||
|
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
if (XS_GetResource(req->id, &wnd) != x_window)
|
if (XS_GetResource(req->id, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->id, X_UnmapWindow, 0);
|
X_SendError(cl, BadWindow, req->id, X_UnmapWindow, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1974,7 +1974,7 @@ void XR_MapSubwindows(xclient_t *cl, xReq *request)
|
||||||
xResourceReq *req = (xResourceReq *)request;
|
xResourceReq *req = (xResourceReq *)request;
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(req->id, &wnd) != x_window)
|
if (XS_GetResource(req->id, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->id, X_MapWindow, 0);
|
X_SendError(cl, BadWindow, req->id, X_MapWindow, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -1992,13 +1992,13 @@ void XR_CreatePixmap(xclient_t *cl, xReq *request)
|
||||||
xCreatePixmapReq *req = (xCreatePixmapReq *)request;
|
xCreatePixmapReq *req = (xCreatePixmapReq *)request;
|
||||||
|
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
if (XS_GetResource(req->drawable, &wnd) != x_window)
|
if (XS_GetResource(req->drawable, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->drawable, X_CreatePixmap, 0);
|
X_SendError(cl, BadDrawable, req->drawable, X_CreatePixmap, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->pid, &wnd) != x_none)
|
if (XS_GetResource(req->pid, (void**)&wnd) != x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadIDChoice, req->pid, X_CreatePixmap, 0);
|
X_SendError(cl, BadIDChoice, req->pid, X_CreatePixmap, 0);
|
||||||
}
|
}
|
||||||
|
@ -2010,7 +2010,7 @@ void XR_FreePixmap(xclient_t *cl, xReq *request)
|
||||||
{
|
{
|
||||||
xResourceReq *req = (xResourceReq *)request;
|
xResourceReq *req = (xResourceReq *)request;
|
||||||
xresource_t *pm;
|
xresource_t *pm;
|
||||||
if (XS_GetResource(req->id, &pm) != x_pixmap)
|
if (XS_GetResource(req->id, (void**)&pm) != x_pixmap)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadPixmap, req->id, X_FreePixmap, 0);
|
X_SendError(cl, BadPixmap, req->id, X_FreePixmap, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -2033,13 +2033,13 @@ void XR_PutImage(xclient_t *cl, xReq *request)
|
||||||
int drdepth;
|
int drdepth;
|
||||||
unsigned char *drbuffer;
|
unsigned char *drbuffer;
|
||||||
|
|
||||||
if (XS_GetResource(req->drawable, &drawable) == x_none)
|
if (XS_GetResource(req->drawable, (void**)&drawable) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->drawable, X_PutImage, 0);
|
X_SendError(cl, BadDrawable, req->drawable, X_PutImage, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->gc, &gc) == x_none)
|
if (XS_GetResource(req->gc, (void**)&gc) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadGC, req->gc, X_PutImage, 0);
|
X_SendError(cl, BadGC, req->gc, X_PutImage, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -2189,7 +2189,7 @@ void XR_GetImage(xclient_t *cl, xReq *request)
|
||||||
int drheight;
|
int drheight;
|
||||||
unsigned char *drbuffer;
|
unsigned char *drbuffer;
|
||||||
|
|
||||||
if (XS_GetResource(req->drawable, &drawable) == x_none)
|
if (XS_GetResource(req->drawable, (void**)&drawable) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->drawable, X_PutImage, 0);
|
X_SendError(cl, BadDrawable, req->drawable, X_PutImage, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -2358,13 +2358,13 @@ void XR_PolyLine(xclient_t *cl, xReq *request)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (XS_GetResource(req->drawable, &drawable) == x_none)
|
if (XS_GetResource(req->drawable, (void**)&drawable) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->drawable, X_PolyRectangle, 0);
|
X_SendError(cl, BadDrawable, req->drawable, X_PolyRectangle, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->gc, &gc) == x_none)
|
if (XS_GetResource(req->gc, (void**)&gc) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadGC, req->gc, X_PolyRectangle, 0);
|
X_SendError(cl, BadGC, req->gc, X_PolyRectangle, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -2452,13 +2452,13 @@ void XR_PolyRectangle(xclient_t *cl, xReq *request)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (XS_GetResource(req->drawable, &drawable) == x_none)
|
if (XS_GetResource(req->drawable, (void**)&drawable) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->drawable, X_PolyRectangle, 0);
|
X_SendError(cl, BadDrawable, req->drawable, X_PolyRectangle, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->gc, &gc) == x_none)
|
if (XS_GetResource(req->gc, (void**)&gc) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadGC, req->gc, X_PolyRectangle, 0);
|
X_SendError(cl, BadGC, req->gc, X_PolyRectangle, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -2542,7 +2542,7 @@ void XR_PolyRectangle(xclient_t *cl, xReq *request)
|
||||||
out = (unsigned int *)drbuffer + (rect[0] + rect[1]*drwidth);
|
out = (unsigned int *)drbuffer + (rect[0] + rect[1]*drwidth);
|
||||||
for (i = 0; i < rect[2]; i++)
|
for (i = 0; i < rect[2]; i++)
|
||||||
{
|
{
|
||||||
GCFunc(gc->fgcolour, *(char *)&out[i], gc->function, *(char *)&out[i], 0xffffff);
|
GCFunc(gc->fgcolour, *(char *)&out[i], gc->function, *(char *)&out[i], 0xff);
|
||||||
}
|
}
|
||||||
|
|
||||||
rect[3]--;
|
rect[3]--;
|
||||||
|
@ -2607,13 +2607,13 @@ void XR_PolyPoint(xclient_t *cl, xReq *request)
|
||||||
|
|
||||||
short lastpoint[2];
|
short lastpoint[2];
|
||||||
|
|
||||||
if (XS_GetResource(req->drawable, &drawable) == x_none)
|
if (XS_GetResource(req->drawable, (void**)&drawable) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->drawable, X_PolyPoint, 0);
|
X_SendError(cl, BadDrawable, req->drawable, X_PolyPoint, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->gc, &gc) != x_gcontext)
|
if (XS_GetResource(req->gc, (void**)&gc) != x_gcontext)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadGC, req->gc, X_PolyPoint, 0);
|
X_SendError(cl, BadGC, req->gc, X_PolyPoint, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -2761,13 +2761,13 @@ void XR_PolyText(xclient_t *cl, xReq *request)
|
||||||
|
|
||||||
int xpos, ypos;
|
int xpos, ypos;
|
||||||
|
|
||||||
if (XS_GetResource(req->drawable, &drawable) == x_none)
|
if (XS_GetResource(req->drawable, (void**)&drawable) == x_none)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadDrawable, req->drawable, req->reqType, 0);
|
X_SendError(cl, BadDrawable, req->drawable, req->reqType, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XS_GetResource(req->gc, &gc) != x_gcontext)
|
if (XS_GetResource(req->gc, (void**)&gc) != x_gcontext)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadGC, req->gc, req->reqType, 0);
|
X_SendError(cl, BadGC, req->gc, req->reqType, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -2861,7 +2861,7 @@ void XR_OpenFont(xclient_t *cl, xReq *request) //basically ignored. We only supp
|
||||||
|
|
||||||
void XR_ListFonts(xclient_t *cl, xReq *request) //basically ignored. We only support one font...
|
void XR_ListFonts(xclient_t *cl, xReq *request) //basically ignored. We only support one font...
|
||||||
{
|
{
|
||||||
xListFontsReq *req = (xListFontsReq *)request;
|
// xListFontsReq *req = (xListFontsReq *)request;
|
||||||
int buffer[256];
|
int buffer[256];
|
||||||
xListFontsReply *reply = (xListFontsReply *)buffer;
|
xListFontsReply *reply = (xListFontsReply *)buffer;
|
||||||
|
|
||||||
|
@ -2875,7 +2875,7 @@ void XR_ListFonts(xclient_t *cl, xReq *request) //basically ignored. We only sup
|
||||||
|
|
||||||
void XR_QueryFont(xclient_t *cl, xReq *request) //basically ignored. We only support one font...
|
void XR_QueryFont(xclient_t *cl, xReq *request) //basically ignored. We only support one font...
|
||||||
{
|
{
|
||||||
xResourceReq *req = (xResourceReq *)request;
|
// xResourceReq *req = (xResourceReq *)request;
|
||||||
char buffer[8192];
|
char buffer[8192];
|
||||||
xQueryFontReply *rep = (xQueryFontReply *)buffer;
|
xQueryFontReply *rep = (xQueryFontReply *)buffer;
|
||||||
|
|
||||||
|
@ -3064,7 +3064,7 @@ void XR_SendEvent (xclient_t *cl, xReq *request)
|
||||||
xSendEventReq *req = (xSendEventReq *)request;
|
xSendEventReq *req = (xSendEventReq *)request;
|
||||||
xwindow_t *wnd;
|
xwindow_t *wnd;
|
||||||
|
|
||||||
if (XS_GetResource(req->destination, &wnd) != x_window)
|
if (XS_GetResource(req->destination, (void**)&wnd) != x_window)
|
||||||
{
|
{
|
||||||
X_SendError(cl, BadWindow, req->destination, X_SendEvent, 0);
|
X_SendError(cl, BadWindow, req->destination, X_SendEvent, 0);
|
||||||
return;
|
return;
|
||||||
|
@ -3150,8 +3150,8 @@ void XR_GrabPointer (xclient_t *cl, xReq *request)
|
||||||
}
|
}
|
||||||
|
|
||||||
xpointergrabclient = cl;
|
xpointergrabclient = cl;
|
||||||
XS_GetResource(req->grabWindow, &xpgrabbedwindow);
|
XS_GetResource(req->grabWindow, (void**)&xpgrabbedwindow);
|
||||||
XS_GetResource(req->confineTo, &xpconfinewindow);
|
XS_GetResource(req->confineTo, (void**)&xpconfinewindow);
|
||||||
|
|
||||||
X_EvalutateCursorOwner(NotifyGrab);
|
X_EvalutateCursorOwner(NotifyGrab);
|
||||||
|
|
||||||
|
|
|
@ -936,7 +936,7 @@ void Q_InitProgs(void)
|
||||||
if (f)
|
if (f)
|
||||||
{
|
{
|
||||||
pr_globals = PR_globals(svprogfuncs, PR_CURRENT);
|
pr_globals = PR_globals(svprogfuncs, PR_CURRENT);
|
||||||
(string_t)G_INT(OFS_PARM0) = PR_SetString(svprogfuncs, as);
|
G_INT(OFS_PARM0) = (int)PR_SetString(svprogfuncs, as);
|
||||||
PR_ExecuteProgram (svprogfuncs, f);
|
PR_ExecuteProgram (svprogfuncs, f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1054,7 +1054,7 @@ void Q_InitProgs(void)
|
||||||
if (f)
|
if (f)
|
||||||
{
|
{
|
||||||
pr_globals = PR_globals(svprogfuncs, PR_CURRENT);
|
pr_globals = PR_globals(svprogfuncs, PR_CURRENT);
|
||||||
(string_t)G_INT(OFS_PARM0) = PR_SetString(svprogfuncs, as);
|
G_INT(OFS_PARM0) = (int)PR_SetString(svprogfuncs, as);
|
||||||
PR_ExecuteProgram (svprogfuncs, f);
|
PR_ExecuteProgram (svprogfuncs, f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1096,7 +1096,7 @@ void Q_InitProgs(void)
|
||||||
if (f)
|
if (f)
|
||||||
{
|
{
|
||||||
pr_globals = PR_globals(svprogfuncs, PR_CURRENT);
|
pr_globals = PR_globals(svprogfuncs, PR_CURRENT);
|
||||||
(string_t)G_INT(OFS_PARM0) = PR_SetString(svprogfuncs, as);
|
G_INT(OFS_PARM0) = (int)PR_SetString(svprogfuncs, as);
|
||||||
PR_ExecuteProgram (svprogfuncs, f);
|
PR_ExecuteProgram (svprogfuncs, f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1130,7 +1130,7 @@ qboolean PR_QCChat(char *text, int say_type)
|
||||||
if (!ChatMessage)
|
if (!ChatMessage)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
(string_t)G_INT(OFS_PARM0) = PR_SetString(svprogfuncs, text);
|
G_INT(OFS_PARM0) = (int)PR_SetString(svprogfuncs, text);
|
||||||
G_FLOAT(OFS_PARM1) = say_type;
|
G_FLOAT(OFS_PARM1) = say_type;
|
||||||
PR_ExecuteProgram (svprogfuncs, ChatMessage);
|
PR_ExecuteProgram (svprogfuncs, ChatMessage);
|
||||||
|
|
||||||
|
@ -2394,7 +2394,7 @@ void PF_LocalSound(progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
float chan = G_FLOAT(OFS_PARM1);
|
float chan = G_FLOAT(OFS_PARM1);
|
||||||
float vol = G_FLOAT(OFS_PARM2);
|
float vol = G_FLOAT(OFS_PARM2);
|
||||||
|
|
||||||
if (sfx = S_PrecacheSound(s))
|
if ((sfx = S_PrecacheSound(s)))
|
||||||
S_StartSound(cl.playernum[0], chan, sfx, cl.simorg[0], vol, 0.0);
|
S_StartSound(cl.playernum[0], chan, sfx, cl.simorg[0], vol, 0.0);
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
|
@ -814,8 +814,8 @@ void SV_Savegame_f (void)
|
||||||
|
|
||||||
if (*cl->name)
|
if (*cl->name)
|
||||||
for (len = 0; len < NUM_SPAWN_PARMS; len++)
|
for (len = 0; len < NUM_SPAWN_PARMS; len++)
|
||||||
fprintf(f, "%i (%f)\n", cl->spawn_parms[len], cl->spawn_parms[len]); //write ints as not everyone passes a float in the parms.
|
fprintf(f, "%i (%f)\n", *(int*)&cl->spawn_parms[len], cl->spawn_parms[len]); //write ints as not everyone passes a float in the parms.
|
||||||
//write floats so you can use it to debug.
|
//write floats too so you can use it to debug.
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_strncpyz(str, svs.info, sizeof(str));
|
Q_strncpyz(str, svs.info, sizeof(str));
|
||||||
|
|
|
@ -463,7 +463,7 @@ void SV_SpawnServer (char *server, char *startspot, qboolean noents, qboolean us
|
||||||
#ifndef SERVERONLY
|
#ifndef SERVERONLY
|
||||||
if (!isDedicated && !qrenderer)
|
if (!isDedicated && !qrenderer)
|
||||||
{
|
{
|
||||||
Cmd_ExecuteString("vid_restart\n", RESTRICT_LOCAL);
|
R_RestartRenderer_f();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,9 @@ cvar_t allow_download_demos = {"allow_download_demos", "1"};
|
||||||
cvar_t allow_download_maps = {"allow_download_maps", "1"};
|
cvar_t allow_download_maps = {"allow_download_maps", "1"};
|
||||||
cvar_t allow_download_anymap = {"allow_download_pakmaps", "0"};
|
cvar_t allow_download_anymap = {"allow_download_pakmaps", "0"};
|
||||||
cvar_t allow_download_root = {"allow_download_root", "0"};
|
cvar_t allow_download_root = {"allow_download_root", "0"};
|
||||||
|
cvar_t allow_download_textures = {"allow_download_textures", "1"};
|
||||||
|
cvar_t allow_download_pk3s = {"allow_download_pk3s", "1"};
|
||||||
|
cvar_t allow_download_wads = {"allow_download_wads", "1"};
|
||||||
|
|
||||||
cvar_t sv_public = {"sv_public", "1"};
|
cvar_t sv_public = {"sv_public", "1"};
|
||||||
cvar_t sv_highchars = {"sv_highchars", "1"};
|
cvar_t sv_highchars = {"sv_highchars", "1"};
|
||||||
|
@ -393,7 +396,7 @@ void SV_DropClient (client_t *drop)
|
||||||
drop->old_frags = 0;
|
drop->old_frags = 0;
|
||||||
drop->kills = 0;
|
drop->kills = 0;
|
||||||
drop->deaths = 0;
|
drop->deaths = 0;
|
||||||
if (drop->edict)
|
if (svprogfuncs && drop->edict)
|
||||||
drop->edict->v.frags = 0;
|
drop->edict->v.frags = 0;
|
||||||
drop->name[0] = 0;
|
drop->name[0] = 0;
|
||||||
memset (drop->userinfo, 0, sizeof(drop->userinfo));
|
memset (drop->userinfo, 0, sizeof(drop->userinfo));
|
||||||
|
|
|
@ -553,7 +553,7 @@ qboolean SV_PushAngles (edict_t *pusher, vec3_t move, vec3_t amove)
|
||||||
// figure movement due to the pusher's amove
|
// figure movement due to the pusher's amove
|
||||||
VectorSubtract (check->v.origin, pusher->v.origin, org);
|
VectorSubtract (check->v.origin, pusher->v.origin, org);
|
||||||
org2[0] = DotProduct (org, forward);
|
org2[0] = DotProduct (org, forward);
|
||||||
org2[1] = -DotProduct (org, right);
|
org2[1] = DotProduct (org, right);
|
||||||
org2[2] = DotProduct (org, up);
|
org2[2] = DotProduct (org, up);
|
||||||
VectorSubtract (org2, org, move2);
|
VectorSubtract (org2, org, move2);
|
||||||
VectorAdd (check->v.origin, move2, check->v.origin);
|
VectorAdd (check->v.origin, move2, check->v.origin);
|
||||||
|
|
|
@ -877,8 +877,8 @@ SV_WriteClientdataToMessage
|
||||||
*/
|
*/
|
||||||
void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg)
|
void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
#ifdef NQPROT
|
#ifdef NQPROT
|
||||||
|
int i;
|
||||||
int bits, items;
|
int bits, items;
|
||||||
edict_t *ent;
|
edict_t *ent;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1346,6 +1346,9 @@ Con_DPrintf ("UPLOAD: %d received\n", size);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Use of this function is on name only.
|
||||||
|
//Be aware that the maps directory should be restricted based on weather the file was from a pack file
|
||||||
|
//this is to preserve copyright - please do not breach due to a bug.
|
||||||
qboolean SV_AllowDownload (char *name)
|
qboolean SV_AllowDownload (char *name)
|
||||||
{
|
{
|
||||||
extern cvar_t allow_download;
|
extern cvar_t allow_download;
|
||||||
|
@ -1353,28 +1356,64 @@ qboolean SV_AllowDownload (char *name)
|
||||||
extern cvar_t allow_download_models;
|
extern cvar_t allow_download_models;
|
||||||
extern cvar_t allow_download_sounds;
|
extern cvar_t allow_download_sounds;
|
||||||
extern cvar_t allow_download_demos;
|
extern cvar_t allow_download_demos;
|
||||||
extern cvar_t allow_download_maps, allow_download_anymap;
|
extern cvar_t allow_download_maps;
|
||||||
|
extern cvar_t allow_download_textures;
|
||||||
|
extern cvar_t allow_download_pk3s;
|
||||||
|
extern cvar_t allow_download_wads;
|
||||||
extern cvar_t allow_download_root;
|
extern cvar_t allow_download_root;
|
||||||
extern int file_from_pak; // ZOID did file come from pak?
|
// extern int file_from_pak; // ZOID did file come from pak?
|
||||||
|
|
||||||
if (strstr (name, "..") || !allow_download.value
|
//allowed at all?
|
||||||
// leading dot is no good
|
if (!allow_download.value)
|
||||||
|| *name == '.'
|
|
||||||
// leading slash bad as well, must be in subdir
|
|
||||||
|| *name == '/'
|
|
||||||
// next up, skin check
|
|
||||||
|| (strncmp(name, "skins/", 6) == 0 && !allow_download_skins.value)
|
|
||||||
// now models
|
|
||||||
|| (strncmp(name, "progs/", 6) == 0 && !allow_download_models.value)
|
|
||||||
// now sounds
|
|
||||||
|| (strncmp(name, "sound/", 6) == 0 && !allow_download_sounds.value)
|
|
||||||
// now maps (note special case for maps, must not be in pak)
|
|
||||||
|| (strncmp(name, "maps/", 5) == 0 && !(allow_download_maps.value||allow_download_anymap.value))
|
|
||||||
//demos
|
|
||||||
|| (strncmp(name, "demos/", 6) == 0 && !allow_download_demos.value)
|
|
||||||
// MUST be in a subdirectory
|
|
||||||
|| (!strstr (name, "/") && !allow_download_root.value))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
//no subdirs?
|
||||||
|
if (strstr (name, "..")) //no under paths.
|
||||||
|
return false;
|
||||||
|
if (*name == '.') //relative is pointless
|
||||||
|
return false;
|
||||||
|
if (*name == '/') //no absolute.
|
||||||
|
return false;
|
||||||
|
if (strchr(name, '\\')) //no windows paths - grow up lame windows users.
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (strncmp(name, "maps/", 5) == 0 && (allow_download_maps.value))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
//skins?
|
||||||
|
if (strncmp(name, "skins/", 6) == 0 && allow_download_skins.value)
|
||||||
|
return true;
|
||||||
|
//models
|
||||||
|
if ((strncmp(name, "progs/", 6) == 0||
|
||||||
|
strncmp(name, "models/", 7) == 0) && allow_download_models.value)
|
||||||
|
return true;
|
||||||
|
//sound
|
||||||
|
if (strncmp(name, "sound/", 6) == 0 && allow_download_sounds.value)
|
||||||
|
return true;
|
||||||
|
//demos
|
||||||
|
if (strncmp(name, "demos/", 6) == 0 && allow_download_demos.value)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
//textures
|
||||||
|
if (strncmp(name, "texures/", 8) == 0 && allow_download_textures.value)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
//wads
|
||||||
|
if (strncmp(name, "wads/", 5) == 0 && allow_download_wads.value)
|
||||||
|
return true;
|
||||||
|
if (!strcmp(".wad", COM_FileExtension(name)) && allow_download_wads.value)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
//pk3s.
|
||||||
|
if (!strcmp(".pk3", COM_FileExtension(name)) && allow_download_pk3s.value)
|
||||||
|
if (strnicmp(name, "pak", 3)) //don't give out q3 pk3 files.
|
||||||
|
return true;
|
||||||
|
|
||||||
|
//root of gamedir
|
||||||
|
if (strchr(name, '/') && !allow_download_root.value)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
//any other subdirs are allowed
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -3217,6 +3256,7 @@ vec3_t offset;
|
||||||
|
|
||||||
VectorCopy (check->v.origin, pe->origin);
|
VectorCopy (check->v.origin, pe->origin);
|
||||||
VectorCopy (check->v.angles, pe->angles);
|
VectorCopy (check->v.angles, pe->angles);
|
||||||
|
pe->angles[0]*=-1; //quake is wierd.
|
||||||
pe->info = NUM_FOR_EDICT(svprogfuncs, check);
|
pe->info = NUM_FOR_EDICT(svprogfuncs, check);
|
||||||
if (check->v.solid == SOLID_BSP)
|
if (check->v.solid == SOLID_BSP)
|
||||||
pe->model = sv.models[(int)(check->v.modelindex)];
|
pe->model = sv.models[(int)(check->v.modelindex)];
|
||||||
|
|
|
@ -142,5 +142,12 @@ void D_InitTrans(void);
|
||||||
#define Trans(p, p2) (t_curlookupp[p][p2])
|
#define Trans(p, p2) (t_curlookupp[p][p2])
|
||||||
// void Set_TransLevelI(int level);
|
// void Set_TransLevelI(int level);
|
||||||
void Set_TransLevelF(float level);
|
void Set_TransLevelF(float level);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
extern qbyte *palxxxto8;
|
||||||
|
extern int palmask[3];
|
||||||
|
extern int palshift[3];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
|
//contains routines for blending images (as well as blitting 32bit to 8bit type stuff)
|
||||||
|
|
||||||
|
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
#include "d_local.h"
|
#include "d_local.h"
|
||||||
#include "r_local.h"
|
#include "r_local.h"
|
||||||
|
|
||||||
#ifdef PEXT_TRANS
|
void MakeVideoPalette(void);
|
||||||
int t_numtables;
|
int t_numtables;
|
||||||
|
|
||||||
qbyte p1multitable[] = {1, 99, 49, 97, 48, 19, 47, 93, 23, 91, 9, 89, 22, 87, 43, 17, 21, 83, 41, 81, 4, 79, 39, 77, 19, 3, 37, 73, 18, 71, 7, 69, 17, 67, 33, 13, 16, 63, 31, 61, 3, 59, 29, 57, 14, 11, 27, 53, 13, 51, 1, 49, 12, 47, 23, 9, 11, 43, 21, 41, 2, 39, 19, 37, 9, 7, 17, 33, 8, 31, 3, 29, 7, 27, 13, 1, 6, 23, 11, 21, 1, 19, 9, 17, 4, 3, 7, 13, 3, 11, 1, 9, 2, 7, 3, 1, 1, 3, 1, 1, 0};
|
qbyte p1multitable[] = {1, 99, 49, 97, 48, 19, 47, 93, 23, 91, 9, 89, 22, 87, 43, 17, 21, 83, 41, 81, 4, 79, 39, 77, 19, 3, 37, 73, 18, 71, 7, 69, 17, 67, 33, 13, 16, 63, 31, 61, 3, 59, 29, 57, 14, 11, 27, 53, 13, 51, 1, 49, 12, 47, 23, 9, 11, 43, 21, 41, 2, 39, 19, 37, 9, 7, 17, 33, 8, 31, 3, 29, 7, 27, 13, 1, 6, 23, 11, 21, 1, 19, 9, 17, 4, 3, 7, 13, 3, 11, 1, 9, 2, 7, 3, 1, 1, 3, 1, 1, 0};
|
||||||
|
@ -293,4 +296,450 @@ void Set_TransLevelF(float level) //MUST be between 0 and 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
qbyte *palxxxto8;
|
||||||
|
int palmask[3];
|
||||||
|
int palshift[3];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define FindPallete(r,g,b) palxxxto8[((r&palmask[0])>>palshift[0]) | ((g&palmask[1])<<palshift[1]) | ((b&palmask[2])<<palshift[2])]
|
||||||
|
//#define FindPallete(r,g,b) (pal777to8[r>>1][g>>1][b>>1])
|
||||||
|
qbyte GetPalette(int red, int green, int blue)
|
||||||
|
{
|
||||||
|
if (palxxxto8) //fast precalculated method
|
||||||
|
return FindPallete(red,green,blue);
|
||||||
|
else //slow, horrible method.
|
||||||
|
{
|
||||||
|
int i, best=15;
|
||||||
|
int bestdif=256*256*256, curdif;
|
||||||
|
extern qbyte *host_basepal;
|
||||||
|
qbyte *pa;
|
||||||
|
|
||||||
|
#define _abs(x) ((x)*(x))
|
||||||
|
|
||||||
|
pa = host_basepal;
|
||||||
|
for (i = 0; i < 256; i++, pa+=3)
|
||||||
|
{
|
||||||
|
curdif = _abs(red - pa[0]) + _abs(green - pa[1]) + _abs(blue - pa[2]);
|
||||||
|
if (curdif < bestdif)
|
||||||
|
{
|
||||||
|
if (curdif<1)
|
||||||
|
return i;
|
||||||
|
bestdif = curdif;
|
||||||
|
best = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return best;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MakeVideoPalette(void)
|
||||||
|
{
|
||||||
|
// pal77 *temp;
|
||||||
|
qbyte *temp;
|
||||||
|
int r, g, b;
|
||||||
|
int rs, gs, bs, size;
|
||||||
|
int rstep, gstep, bstep;
|
||||||
|
int gshift, bshift;
|
||||||
|
FILE *f;
|
||||||
|
char filename[11];
|
||||||
|
|
||||||
|
if (strlen(r_palconvbits.string) < 3)
|
||||||
|
{
|
||||||
|
// r5g6b5 is default
|
||||||
|
rs = 5;
|
||||||
|
gs = 6;
|
||||||
|
bs = 5;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// convert to int
|
||||||
|
rs = r_palconvbits.string[0] - '0';
|
||||||
|
gs = r_palconvbits.string[1] - '0';
|
||||||
|
bs = r_palconvbits.string[2] - '0';
|
||||||
|
|
||||||
|
// limit to 4-8 (can't have 3 because the forumla breaks)
|
||||||
|
if (rs < 4)
|
||||||
|
rs = 4;
|
||||||
|
else if (rs > 8)
|
||||||
|
rs = 8;
|
||||||
|
|
||||||
|
if (gs < 4)
|
||||||
|
gs = 4;
|
||||||
|
else if (gs > 8)
|
||||||
|
gs = 8;
|
||||||
|
|
||||||
|
if (bs < 4)
|
||||||
|
bs = 4;
|
||||||
|
else if (bs > 8)
|
||||||
|
bs = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_strcpy(filename, "rgb000.pal");
|
||||||
|
filename[3] = rs + '0';
|
||||||
|
filename[4] = gs + '0';
|
||||||
|
filename[5] = bs + '0';
|
||||||
|
|
||||||
|
palshift[0] = 1<<rs;
|
||||||
|
palshift[1] = 1<<gs;
|
||||||
|
palshift[2] = 1<<bs;
|
||||||
|
|
||||||
|
size = palshift[0]*palshift[1]*palshift[2];
|
||||||
|
|
||||||
|
gshift = rs;
|
||||||
|
bshift = rs+gs;
|
||||||
|
rs = 8-rs;
|
||||||
|
gs = 8-gs;
|
||||||
|
bs = 8-bs;
|
||||||
|
|
||||||
|
rstep = 1<<rs;
|
||||||
|
gstep = 1<<gs;
|
||||||
|
bstep = 1<<bs;
|
||||||
|
|
||||||
|
palmask[0] = 0xff ^ (rstep - 1);
|
||||||
|
palmask[1] = 0xff ^ (gstep - 1);
|
||||||
|
palmask[2] = 0xff ^ (bstep - 1);
|
||||||
|
|
||||||
|
palxxxto8 = Hunk_AllocName(size, "RGB data");
|
||||||
|
if (!palxxxto8)
|
||||||
|
BZ_Free(palxxxto8);
|
||||||
|
palxxxto8 = NULL;
|
||||||
|
|
||||||
|
temp = BZ_Malloc(size);
|
||||||
|
COM_FOpenFile (filename, &f);
|
||||||
|
if (f)
|
||||||
|
{
|
||||||
|
fread(temp, 1, size, f); //cached
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
palxxxto8 = temp;
|
||||||
|
|
||||||
|
// update shifts
|
||||||
|
palshift[0] = rs;
|
||||||
|
palshift[1] = (8 - palshift[0]) - gs;
|
||||||
|
palshift[2] = palshift[1] + (8 - bs);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rstep >>= 1;
|
||||||
|
gstep >>= 1;
|
||||||
|
bstep >>= 1;
|
||||||
|
|
||||||
|
for (r = palshift[0] - 1; r >= 0; r--)
|
||||||
|
for (g = palshift[1] - 1; g >= 0; g--)
|
||||||
|
for (b = palshift[2] - 1; b >= 0; b--)
|
||||||
|
{
|
||||||
|
temp[r+(g<<gshift)+(b<<bshift)] = GetPalette((r<<rs)+rstep, (g<<gs)+gstep, (b<<bs)+bstep);
|
||||||
|
}
|
||||||
|
palxxxto8 = temp;
|
||||||
|
|
||||||
|
// update shifts
|
||||||
|
palshift[0] = rs;
|
||||||
|
palshift[1] = (8 - palshift[0]) - gs;
|
||||||
|
palshift[2] = palshift[1] + (8 - bs);
|
||||||
|
|
||||||
|
if (r_palconvwrite.value)
|
||||||
|
COM_WriteFile(filename, palxxxto8, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MediaSW_ShowFrame8bit(qbyte *framedata, int inwidth, int inheight, qbyte *palette)
|
||||||
|
{
|
||||||
|
int y, x;
|
||||||
|
|
||||||
|
D_EnableBackBufferAccess (); // of all overlay stuff if drawing directly
|
||||||
|
if (r_pixbytes == 1)
|
||||||
|
{
|
||||||
|
qbyte *dest, *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
|
{
|
||||||
|
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*4;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth ; x+=4)
|
||||||
|
{
|
||||||
|
dest[x] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+1] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+2] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+3] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (r_pixbytes == 2)
|
||||||
|
{
|
||||||
|
extern int redbits, redshift;
|
||||||
|
extern int greenbits, greenshift;
|
||||||
|
extern int bluebits, blueshift;
|
||||||
|
|
||||||
|
unsigned short *dest;
|
||||||
|
qbyte *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = (unsigned short *)vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
|
{
|
||||||
|
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*4;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth; x++) //sw 32 bit rendering is bgrx
|
||||||
|
{
|
||||||
|
dest[x] = (((src[(f>>16)*4]*(1<<redbits))/256)<<redshift) + (((src[(f>>16)*4+1]*(1<<greenbits))/256)<<greenshift) + (((src[(f>>16)*4+2]*(1<<bluebits))/256)<<blueshift);
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (r_pixbytes == 4)
|
||||||
|
{
|
||||||
|
qbyte *dest, *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes*4)
|
||||||
|
{
|
||||||
|
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*4;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth*4 ; x+=4) //sw 32 bit rendering is bgrx
|
||||||
|
{
|
||||||
|
dest[x] = src[(f>>16)*4+2];
|
||||||
|
dest[x+1] = src[(f>>16)*4+1];
|
||||||
|
dest[x+2] = src[(f>>16)*4];
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Sys_Error("24 bit rendering?");
|
||||||
|
|
||||||
|
D_DisableBackBufferAccess (); // for adapters that can't stay mapped in
|
||||||
|
|
||||||
|
SCR_SetUpToDrawConsole();
|
||||||
|
if (scr_con_current)
|
||||||
|
SCR_DrawConsole (false);
|
||||||
|
|
||||||
|
M_Draw(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MediaSW_ShowFrameRGBA_32(qbyte *framedata, int inwidth, int inheight) //top down
|
||||||
|
{
|
||||||
|
int y, x;
|
||||||
|
|
||||||
|
D_EnableBackBufferAccess (); // of all overlay stuff if drawing directly
|
||||||
|
if (r_pixbytes == 1)
|
||||||
|
{
|
||||||
|
qbyte *dest, *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
|
{
|
||||||
|
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*4;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth ; x+=4)
|
||||||
|
{
|
||||||
|
dest[x] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+1] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+2] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+3] = FindPallete(src[(f>>16)*4], src[(f>>16)*4+1], src[(f>>16)*4+2]);
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (r_pixbytes == 2)
|
||||||
|
{
|
||||||
|
extern int redbits, redshift;
|
||||||
|
extern int greenbits, greenshift;
|
||||||
|
extern int bluebits, blueshift;
|
||||||
|
|
||||||
|
unsigned short *dest;
|
||||||
|
qbyte *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = (unsigned short *)vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
|
{
|
||||||
|
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*4;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth; x++) //sw 32 bit rendering is bgrx
|
||||||
|
{
|
||||||
|
dest[x] = (((src[(f>>16)*4]*(1<<redbits))/256)<<redshift) + (((src[(f>>16)*4+1]*(1<<greenbits))/256)<<greenshift) + (((src[(f>>16)*4+2]*(1<<bluebits))/256)<<blueshift);
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (r_pixbytes == 4)
|
||||||
|
{
|
||||||
|
qbyte *dest, *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes*4)
|
||||||
|
{
|
||||||
|
v = (vid.conheight - lines + y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*4;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth*4 ; x+=4) //sw 32 bit rendering is bgrx
|
||||||
|
{
|
||||||
|
dest[x] = src[(f>>16)*4+2];
|
||||||
|
dest[x+1] = src[(f>>16)*4+1];
|
||||||
|
dest[x+2] = src[(f>>16)*4];
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Sys_Error("24 bit rendering?");
|
||||||
|
|
||||||
|
D_DisableBackBufferAccess (); // for adapters that can't stay mapped in
|
||||||
|
|
||||||
|
SCR_SetUpToDrawConsole();
|
||||||
|
if (scr_con_current)
|
||||||
|
SCR_DrawConsole (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MediaSW_ShowFrameBGR_24_Flip(qbyte *framedata, int inwidth, int inheight) //input is bottom up...
|
||||||
|
{
|
||||||
|
int y, x;
|
||||||
|
|
||||||
|
D_EnableBackBufferAccess (); // of all overlay stuff if drawing directly
|
||||||
|
if (r_pixbytes == 1)
|
||||||
|
{
|
||||||
|
qbyte *dest, *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
|
{
|
||||||
|
v = (lines - y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*3;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth ; x+=4)
|
||||||
|
{
|
||||||
|
dest[x] = FindPallete(src[(f>>16)*3+2], src[(f>>16)*3+1], src[(f>>16)*3]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+1] = FindPallete(src[(f>>16)*3+2], src[(f>>16)*3+1], src[(f>>16)*3]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+2] = FindPallete(src[(f>>16)*3+2], src[(f>>16)*3+1], src[(f>>16)*3]);
|
||||||
|
f += fstep;
|
||||||
|
dest[x+3] = FindPallete(src[(f>>16)*3+2], src[(f>>16)*3+1], src[(f>>16)*3]);
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (r_pixbytes == 2)
|
||||||
|
{
|
||||||
|
extern int redbits, redshift;
|
||||||
|
extern int greenbits, greenshift;
|
||||||
|
extern int bluebits, blueshift;
|
||||||
|
|
||||||
|
unsigned short *dest;
|
||||||
|
qbyte *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = (unsigned short *)vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
|
{
|
||||||
|
v = (lines - y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*3;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth; x++) //sw 32 bit rendering is bgrx
|
||||||
|
{
|
||||||
|
dest[x] = (((src[(f>>16)*3+2]*(1<<redbits))/256)<<redshift) + (((src[(f>>16)*3+1]*(1<<greenbits))/256)<<greenshift) + (((src[(f>>16)*3+0]*(1<<bluebits))/256)<<blueshift);
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (r_pixbytes == 4)
|
||||||
|
{
|
||||||
|
unsigned int *dest;
|
||||||
|
qbyte *src;
|
||||||
|
int lines=vid.conheight;
|
||||||
|
int v;
|
||||||
|
int f, fstep;
|
||||||
|
|
||||||
|
dest = (unsigned int *)vid.conbuffer;
|
||||||
|
|
||||||
|
for (y=0 ; y<lines ; y++, dest += vid.conrowbytes)
|
||||||
|
{
|
||||||
|
v = (lines - y)*inheight/vid.conheight;
|
||||||
|
src = framedata + v*inwidth*3;
|
||||||
|
{
|
||||||
|
f = 0;
|
||||||
|
fstep = ((inwidth)*0x10000)/vid.conwidth;
|
||||||
|
for (x=0 ; x<vid.conwidth ; x++) //sw 32 bit rendering is bgrx
|
||||||
|
{
|
||||||
|
*(dest+x) = *(int *)(src + (f>>16)*3);
|
||||||
|
f += fstep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Sys_Error("24 bit rendering?");
|
||||||
|
|
||||||
|
D_DisableBackBufferAccess (); // for adapters that can't stay mapped in
|
||||||
|
|
||||||
|
SCR_SetUpToDrawConsole();
|
||||||
|
if (scr_con_current)
|
||||||
|
SCR_DrawConsole (false);
|
||||||
|
}
|
||||||
|
|
|
@ -22,7 +22,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
// vid buffer
|
// vid buffer
|
||||||
|
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
#ifdef RGLQUAKE
|
||||||
#include "glquake.h" //with sw refresh???
|
#include "glquake.h" //with sw refresh???
|
||||||
|
#endif
|
||||||
#include "d_local.h" //trans stuff
|
#include "d_local.h" //trans stuff
|
||||||
|
|
||||||
extern unsigned int *d_8to32table;
|
extern unsigned int *d_8to32table;
|
||||||
|
|
Loading…
Reference in a new issue