mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-24 10:40:46 +00:00
Patch from hunter_rus
git-svn-id: https://svn.eduke32.com/eduke32@723 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
a56eb92f1c
commit
67e2466b0e
28 changed files with 324 additions and 226 deletions
|
@ -16,6 +16,7 @@
|
|||
|
||||
SUPERBUILD ?= 1
|
||||
POLYMOST ?= 1
|
||||
POLYMER ?= 1
|
||||
USE_OPENGL ?= 1
|
||||
NOASM ?= 0
|
||||
LINKED_GTK ?= 0
|
||||
|
@ -88,8 +89,10 @@ ENGINEOBJS+= \
|
|||
$(OBJ)/mmulti.$o \
|
||||
$(OBJ)/osd.$o \
|
||||
$(OBJ)/pragmas.$o \
|
||||
$(OBJ)/scriptfile.$o \
|
||||
$(OBJ)/polymer.$o
|
||||
$(OBJ)/scriptfile.$o
|
||||
ifeq (1,$(POLYMER))
|
||||
ENGINEOBJS+= $(OBJ)/polymer.$o
|
||||
endif
|
||||
|
||||
EDITOROBJS=$(OBJ)/build.$o \
|
||||
$(OBJ)/config.$o
|
||||
|
|
|
@ -155,3 +155,10 @@ ifneq (0,$(LINKED_GTK))
|
|||
BUILDCFLAGS+= -DLINKED_GTK
|
||||
endif
|
||||
|
||||
ifneq (0,$(POLYMER))
|
||||
ifneq (0,$(POLYMOST))
|
||||
ifneq (0,$(USE_OPENGL))
|
||||
BUILDCFLAGS+= -DPOLYMER
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -481,9 +481,11 @@ _equation equation(int x1, int y1, int x2, int y2);
|
|||
int sameside(_equation* eq, _point2d* p1, _point2d* p2);
|
||||
int wallvisible(short wallnum);
|
||||
|
||||
#ifdef POLYMER
|
||||
// polymer stuff for the game to provide it with the animatessprites ptr
|
||||
typedef void (*animatespritesptr)(int, int, int, int);
|
||||
EXTERN void polymer_setanimatesprites(animatespritesptr, int, int, int, int);
|
||||
#endif
|
||||
|
||||
#define STATUS2DSIZ 144
|
||||
void qsetmode640350(void);
|
||||
|
@ -565,7 +567,7 @@ int md_undefinemodel(int modelid);
|
|||
#define MAXPALCONV 200
|
||||
void clearconv();
|
||||
void setpalconv(int pal,int pal1,int pal2);
|
||||
void getpalmap(int stage,int *pal1,int *pal2);
|
||||
void getpalmap(int *stage,int *pal1,int *pal2);
|
||||
int checkpalmaps(int pal);
|
||||
void applypalmap(char *pic, char *palmap, int size, int pal);
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ void slopevlin(intptr_t p, int i, intptr_t slopaloffs, int cnt, int bx, int by)
|
|||
unsigned int u, v;
|
||||
|
||||
bz = asm3; bzinc = (asm1>>3);
|
||||
slopalptr = (int* )slopaloffs;
|
||||
slopalptr = (int*)slopaloffs;
|
||||
for (;cnt>0;cnt--)
|
||||
{
|
||||
i = krecip(bz>>6); bz += bzinc;
|
||||
|
|
|
@ -3162,6 +3162,7 @@ void overheadeditor(void)
|
|||
drawline16(0,searchy,8,searchy,15);
|
||||
|
||||
col = 15-((gridlock<<1)+gridlock);
|
||||
if (joinsector[0] >= 0)col = 11;
|
||||
drawline16(searchx,searchy-8,searchx,searchy-1,col);
|
||||
drawline16(searchx+1,searchy-8,searchx+1,searchy-1,col);
|
||||
drawline16(searchx,searchy+2,searchx,searchy+9,col);
|
||||
|
@ -5587,6 +5588,7 @@ void overheadeditor(void)
|
|||
printmessage16("Arrow must be inside a sector before entering 3D mode.");
|
||||
}
|
||||
CANCEL:
|
||||
if (keystatus[1] > 0 && joinsector[0] >= 0){keystatus[1]=0;joinsector[0]=-1;}
|
||||
if (keystatus[1] > 0)
|
||||
{
|
||||
keystatus[1] = 0;
|
||||
|
|
|
@ -100,12 +100,12 @@ int dynamicgtk_init(void)
|
|||
GETDLSYM(gtk_text_buffer_delete_mark)
|
||||
GETDLSYM(gtk_text_buffer_get_end_iter)
|
||||
GETDLSYM(gtk_text_buffer_insert)
|
||||
// FIXME: should I put a #if !GTK_CHECK_VERSION(2,6,0)
|
||||
// around these three, or should I not care??
|
||||
// FIXME: should I put a #if !GTK_CHECK_VERSION(2,6,0)
|
||||
// around these three, or should I not care??
|
||||
GETDLSYM(gtk_text_iter_backward_cursor_position)
|
||||
GETDLSYM(gtk_text_iter_equal)
|
||||
GETDLSYM(gtk_text_buffer_delete_interactive)
|
||||
//
|
||||
//
|
||||
GETDLSYM(gtk_text_view_get_buffer)
|
||||
GETDLSYM(gtk_text_view_get_type)
|
||||
GETDLSYM(gtk_text_view_new)
|
||||
|
|
|
@ -27,9 +27,11 @@
|
|||
# endif
|
||||
# ifdef USE_OPENGL
|
||||
# include "glbuild.h"
|
||||
# ifdef POLYMER
|
||||
# include "polymer.h"
|
||||
# endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
|
||||
|
@ -3188,7 +3190,7 @@ static void drawsprite(int snum)
|
|||
# endif
|
||||
return;
|
||||
}
|
||||
# ifdef USE_OPENGL
|
||||
# ifdef POLYMER
|
||||
if (rendmode == 4)
|
||||
{
|
||||
bglEnable(GL_ALPHA_TEST);
|
||||
|
@ -4124,6 +4126,7 @@ static void drawmaskwall(short damaskwallcnt)
|
|||
//============================================================================= //POLYMOST BEGINS
|
||||
#ifdef POLYMOST
|
||||
if (rendmode == 3) { polymost_drawmaskwall(damaskwallcnt); return; }
|
||||
# ifdef POLYMER
|
||||
if (rendmode == 4)
|
||||
{
|
||||
bglEnable(GL_ALPHA_TEST);
|
||||
|
@ -4136,6 +4139,7 @@ static void drawmaskwall(short damaskwallcnt)
|
|||
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
//============================================================================= //POLYMOST ENDS
|
||||
|
||||
|
@ -4626,7 +4630,9 @@ static void dorotatesprite(int sx, int sy, int z, short a, short picnum, signed
|
|||
//============================================================================= //POLYMOST BEGINS
|
||||
#ifdef POLYMOST
|
||||
if (rendmode >= 3) { polymost_dorotatesprite(sx,sy,z,a,picnum,dashade,dapalnum,dastat,cx1,cy1,cx2,cy2,uniqid); return; }
|
||||
# ifdef POLYMER
|
||||
if (rendmode == 4) { polymer_rotatesprite(sx,sy,z,a,picnum,dashade,dapalnum,dastat,cx1,cy1,cx2,cy2); return; }
|
||||
#endif
|
||||
#endif
|
||||
//============================================================================= //POLYMOST ENDS
|
||||
|
||||
|
@ -5855,6 +5861,7 @@ void drawrooms(int daposx, int daposy, int daposz,
|
|||
dmost[0] = shortptr2[0]-windowy1;
|
||||
|
||||
#ifdef POLYMOST
|
||||
# ifdef POLYMER
|
||||
if (rendmode == 4)
|
||||
{
|
||||
polymer_glinit();
|
||||
|
@ -5863,6 +5870,7 @@ void drawrooms(int daposx, int daposy, int daposz,
|
|||
gloy1 = 0;
|
||||
return;
|
||||
}
|
||||
# endif
|
||||
|
||||
//============================================================================= //POLYMOST BEGINS
|
||||
polymost_drawrooms();
|
||||
|
@ -6127,7 +6135,7 @@ void drawmasks(void)
|
|||
_equation maskeq, p1eq, p2eq;
|
||||
_point2d dot, dot2, middle, pos, spr;
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
#ifdef POLYMER
|
||||
if ((rendmode == 4) && 0)
|
||||
{
|
||||
polymer_drawmasks();
|
||||
|
@ -6812,10 +6820,10 @@ int loadboard(char *filename, char fromwhere, int *daposx, int *daposy, int *dap
|
|||
sprite[i].hitag = B_LITTLE16(sprite[i].hitag);
|
||||
sprite[i].extra = B_LITTLE16(sprite[i].extra);
|
||||
|
||||
if(sprite[i].sectnum<0||sprite[i].sectnum>=MYMAXSECTORS)
|
||||
if (sprite[i].sectnum<0||sprite[i].sectnum>=MYMAXSECTORS)
|
||||
{
|
||||
initprintf("Map error: sprite #%d(%d,%d) with wrong sector(%d)\n",i,sprite[i].x,sprite[i].y,sprite[i].sectnum);
|
||||
sprite[i].sectnum=MYMAXSECTORS-1;
|
||||
initprintf("Map error: sprite #%d(%d,%d) with wrong sector(%d)\n",i,sprite[i].x,sprite[i].y,sprite[i].sectnum);
|
||||
sprite[i].sectnum=MYMAXSECTORS-1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6834,8 +6842,10 @@ int loadboard(char *filename, char fromwhere, int *daposx, int *daposy, int *dap
|
|||
memset(spriteext, 0, sizeof(spriteexttype) * MAXSPRITES);
|
||||
memset(spritesmooth, 0, sizeof(spritesmooth));
|
||||
|
||||
# ifdef POLYMER
|
||||
if (rendmode == 4)
|
||||
polymer_loadboard();
|
||||
#endif
|
||||
#endif
|
||||
guniqhudid = 0;
|
||||
|
||||
|
@ -7768,8 +7778,10 @@ int setgamemode(char davidoption, int daxdim, int daydim, int dabpp)
|
|||
polymost_glreset();
|
||||
polymost_glinit();
|
||||
}
|
||||
# ifdef POLYMER
|
||||
if (rendmode == 4)
|
||||
polymer_glinit();
|
||||
#endif
|
||||
#endif
|
||||
qsetmode = 200;
|
||||
return(0);
|
||||
|
@ -7844,9 +7856,9 @@ void nextpage(void)
|
|||
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<MAXSPRITES;i++)
|
||||
if((mdpause&&spriteext[i].mdanimtims)||(spriteext[i].flags & SPREXT_NOMDANIM))
|
||||
spriteext[i].mdanimtims+=mdtims-omdtims;
|
||||
for (i=0;i<MAXSPRITES;i++)
|
||||
if ((mdpause&&spriteext[i].mdanimtims)||(spriteext[i].flags & SPREXT_NOMDANIM))
|
||||
spriteext[i].mdanimtims+=mdtims-omdtims;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -11863,8 +11875,13 @@ int setrendermode(int renderer)
|
|||
else if (renderer > 4) renderer = 4;
|
||||
}
|
||||
|
||||
# ifdef POLYMER
|
||||
if (renderer == 4)
|
||||
polymer_init();
|
||||
# else
|
||||
if (renderer == 4)
|
||||
renderer = 3;
|
||||
# endif
|
||||
|
||||
rendmode = renderer;
|
||||
#endif
|
||||
|
|
|
@ -146,7 +146,7 @@ GLboolean(APIENTRY * bglUnmapBufferARB)(GLenum target);
|
|||
// Occlusion queries
|
||||
void (APIENTRY * bglGenQueriesARB)(GLsizei n, GLuint *ids);
|
||||
void (APIENTRY * bglDeleteQueriesARB)(GLsizei n, const GLuint *ids);
|
||||
GLboolean (APIENTRY * bglIsQueryARB)(GLuint id);
|
||||
GLboolean(APIENTRY * bglIsQueryARB)(GLuint id);
|
||||
void (APIENTRY * bglBeginQueryARB)(GLenum target, GLuint id);
|
||||
void (APIENTRY * bglEndQueryARB)(GLenum target);
|
||||
void (APIENTRY * bglGetQueryivARB)(GLenum target, GLenum pname, GLint *params);
|
||||
|
|
|
@ -392,19 +392,14 @@ void setpalconv(int pal,int pal1,int pal2)
|
|||
}
|
||||
|
||||
|
||||
void getpalmap(int stage,int *pal1,int *pal2)
|
||||
void getpalmap(int *i,int *pal1,int *pal2)
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<MAXPALCONV;i++)
|
||||
if (palconv[i].pal==*pal2)
|
||||
for (;*i<MAXPALCONV&&palconv[*i].pal1;(*i)++)
|
||||
if (palconv[*i].pal==*pal2)
|
||||
{
|
||||
if (!stage)
|
||||
{
|
||||
*pal1=palconv[i].pal1;
|
||||
*pal2=palconv[i].pal2;
|
||||
return;
|
||||
}
|
||||
stage--;
|
||||
*pal1=palconv[*i].pal1;
|
||||
*pal2=palconv[*i].pal2;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -415,7 +410,7 @@ int checkpalmaps(int pal)
|
|||
for (stage=0;stage<MAXPALCONV;stage++)
|
||||
{
|
||||
int pal1=0,pal2=pal;
|
||||
getpalmap(stage,&pal1,&pal2);
|
||||
getpalmap(&stage,&pal1,&pal2);
|
||||
if (!pal)break;
|
||||
if (pal1)val|=1<<(pal1-SPECPAL);
|
||||
}
|
||||
|
@ -435,6 +430,12 @@ void applypalmap(char *pic, char *palmap, int size, int pal)
|
|||
pic[r]=((pic[r]*(255-a)+hictinting[pal].r*a)*palmap[r])/255/255;
|
||||
pic[g]=((pic[g]*(255-a)+hictinting[pal].g*a)*palmap[g])/255/255;
|
||||
pic[b]=((pic[b]*(255-a)+hictinting[pal].b*a)*palmap[b])/255/255;
|
||||
|
||||
/*
|
||||
pic[r]=((255*(255-a)+hictinting[pal].r*a)*palmap[r])/255/255;
|
||||
pic[g]=((255*(255-a)+hictinting[pal].g*a)*palmap[g])/255/255;
|
||||
pic[b]=((255*(255-a)+hictinting[pal].b*a)*palmap[b])/255/255;
|
||||
*/
|
||||
if (glinfo.bgra)swapchar(&pic[r], &pic[b]);
|
||||
r+=4;g+=4;b+=4;
|
||||
}
|
||||
|
@ -449,7 +450,7 @@ static void applypalmapSkin(char *pic, int sizx, int sizy, int pal)
|
|||
{
|
||||
int pal1=0,pal2=pal;
|
||||
mdskinmap_t *sk;
|
||||
getpalmap(stage,&pal1,&pal2);
|
||||
getpalmap(&stage,&pal1,&pal2);
|
||||
if (!pal1)return;
|
||||
|
||||
for (sk = modelhead->skinmap; sk; sk = sk->next)
|
||||
|
|
|
@ -225,17 +225,20 @@ static int _internal_osdfunc_vars(const osdfuncparm_t *parm)
|
|||
osdrows = atoi(parm->parms[0]);
|
||||
if (osdrows < 1) osdrows = 1;
|
||||
else if (osdrows > osdmaxrows) osdrows = osdmaxrows;
|
||||
if(osdrowscur!=-1)osdrowscur = osdrows;
|
||||
return OSDCMD_OK;
|
||||
}
|
||||
} else
|
||||
if (!Bstrcasecmp(parm->name, "logcutoff")) {
|
||||
if (showval) { OSD_Printf("logcutoff is %d\n", logcutoff); return OSDCMD_OK; }
|
||||
else {
|
||||
logcutoff = atoi(parm->parms[0]);
|
||||
if (osdrowscur!=-1)osdrowscur = osdrows;
|
||||
return OSDCMD_OK;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (!Bstrcasecmp(parm->name, "logcutoff"))
|
||||
{
|
||||
if (showval) { OSD_Printf("logcutoff is %d\n", logcutoff); return OSDCMD_OK; }
|
||||
else
|
||||
{
|
||||
logcutoff = atoi(parm->parms[0]);
|
||||
return OSDCMD_OK;
|
||||
}
|
||||
}
|
||||
return OSDCMD_SHOWHELP;
|
||||
}
|
||||
|
||||
|
@ -963,12 +966,12 @@ void OSD_Printf(const char *fmt, ...)
|
|||
Bvsnprintf(tmpstr, 1024, fmt, va);
|
||||
va_end(va);
|
||||
|
||||
if(linecnt<logcutoff)
|
||||
if (linecnt<logcutoff)
|
||||
{
|
||||
if (osdlog&&(!logcutoff||linecnt<logcutoff))
|
||||
Bfputs(tmpstr, osdlog);
|
||||
}
|
||||
else if(linecnt==logcutoff)
|
||||
else if (linecnt==logcutoff)
|
||||
{
|
||||
Bfputs("\nMaximal log size reached. Logging stopped.\nSet the \"logcutoff\" console variable to a higher value if you need a longer log.\n", osdlog);
|
||||
linecnt=logcutoff+1;
|
||||
|
|
|
@ -20,26 +20,28 @@ _prwall *prwalls[MAXWALLS];
|
|||
|
||||
GLfloat skybox[16];
|
||||
|
||||
GLfloat vertsprite[4 * 5] = {
|
||||
GLfloat vertsprite[4 * 5] =
|
||||
{
|
||||
-0.5f, 0.0f, 0.0f,
|
||||
0.0f, 1.0f,
|
||||
0.5f, 0.0f, 0.0f,
|
||||
1.0f, 1.0f,
|
||||
0.5f, 1.0f, 0.0f,
|
||||
1.0f, 0.0f,
|
||||
0.0f, 1.0f,
|
||||
0.5f, 0.0f, 0.0f,
|
||||
1.0f, 1.0f,
|
||||
0.5f, 1.0f, 0.0f,
|
||||
1.0f, 0.0f,
|
||||
-0.5f, 1.0f, 0.0f,
|
||||
0.0f, 0.0f,
|
||||
0.0f, 0.0f,
|
||||
};
|
||||
|
||||
GLfloat horizsprite[4 * 5] = {
|
||||
GLfloat horizsprite[4 * 5] =
|
||||
{
|
||||
-0.5f, 0.0f, -0.5f,
|
||||
0.0f, 1.0f,
|
||||
0.5f, 0.0f, -0.5f,
|
||||
1.0f, 1.0f,
|
||||
0.5f, 0.0f, 0.5f,
|
||||
1.0f, 0.0f,
|
||||
0.0f, 1.0f,
|
||||
0.5f, 0.0f, -0.5f,
|
||||
1.0f, 1.0f,
|
||||
0.5f, 0.0f, 0.5f,
|
||||
1.0f, 0.0f,
|
||||
-0.5f, 0.0f, 0.5f,
|
||||
0.0f, 0.0f,
|
||||
0.0f, 0.0f,
|
||||
};
|
||||
|
||||
// CONTROL
|
||||
|
@ -248,8 +250,8 @@ void polymer_drawrooms(int daposx, int daposy, int daposz, short
|
|||
|
||||
// external view (editor)
|
||||
if ((dacursectnum < 0) || (dacursectnum >= numsectors) ||
|
||||
(daposz > sector[dacursectnum].floorz) ||
|
||||
(daposz < sector[dacursectnum].ceilingz))
|
||||
(daposz > sector[dacursectnum].floorz) ||
|
||||
(daposz < sector[dacursectnum].ceilingz))
|
||||
{
|
||||
i = 0;
|
||||
while (i < numsectors)
|
||||
|
@ -458,62 +460,62 @@ void polymer_drawsprite(int snum)
|
|||
|
||||
switch ((tspr->cstat>>4) & 3)
|
||||
{
|
||||
case 0:
|
||||
bglMatrixMode(GL_MODELVIEW);
|
||||
bglPushMatrix();
|
||||
case 0:
|
||||
bglMatrixMode(GL_MODELVIEW);
|
||||
bglPushMatrix();
|
||||
|
||||
spritemodelview[12] = curmodelviewmatrix[0] * spos[0] +
|
||||
curmodelviewmatrix[4] * spos[1] +
|
||||
curmodelviewmatrix[8] * spos[2] +
|
||||
curmodelviewmatrix[12];
|
||||
spritemodelview[13] = curmodelviewmatrix[1] * spos[0] +
|
||||
curmodelviewmatrix[5] * spos[1] +
|
||||
curmodelviewmatrix[9] * spos[2] +
|
||||
curmodelviewmatrix[13];
|
||||
spritemodelview[14] = curmodelviewmatrix[2] * spos[0] +
|
||||
curmodelviewmatrix[6] * spos[1] +
|
||||
curmodelviewmatrix[10] * spos[2] +
|
||||
curmodelviewmatrix[14];
|
||||
spritemodelview[12] = curmodelviewmatrix[0] * spos[0] +
|
||||
curmodelviewmatrix[4] * spos[1] +
|
||||
curmodelviewmatrix[8] * spos[2] +
|
||||
curmodelviewmatrix[12];
|
||||
spritemodelview[13] = curmodelviewmatrix[1] * spos[0] +
|
||||
curmodelviewmatrix[5] * spos[1] +
|
||||
curmodelviewmatrix[9] * spos[2] +
|
||||
curmodelviewmatrix[13];
|
||||
spritemodelview[14] = curmodelviewmatrix[2] * spos[0] +
|
||||
curmodelviewmatrix[6] * spos[1] +
|
||||
curmodelviewmatrix[10] * spos[2] +
|
||||
curmodelviewmatrix[14];
|
||||
|
||||
bglLoadMatrixd(spritemodelview);
|
||||
bglRotatef((gtang * 90.0f), 0.0f, 0.0f, -1.0f);
|
||||
bglTranslatef((float)(-xoff)/1000.0f, (float)(yoff)/1000.0f, 0.0f);
|
||||
bglScalef((float)(xsize) / 1000.0f, (float)(ysize) / 1000.0f, 1.0f / 1000.0f);
|
||||
bglLoadMatrixd(spritemodelview);
|
||||
bglRotatef((gtang * 90.0f), 0.0f, 0.0f, -1.0f);
|
||||
bglTranslatef((float)(-xoff)/1000.0f, (float)(yoff)/1000.0f, 0.0f);
|
||||
bglScalef((float)(xsize) / 1000.0f, (float)(ysize) / 1000.0f, 1.0f / 1000.0f);
|
||||
|
||||
bglPolygonOffset(0.0f, 0.0f);
|
||||
break;
|
||||
case 1:
|
||||
bglMatrixMode(GL_MODELVIEW);
|
||||
bglPushMatrix();
|
||||
bglPolygonOffset(0.0f, 0.0f);
|
||||
break;
|
||||
case 1:
|
||||
bglMatrixMode(GL_MODELVIEW);
|
||||
bglPushMatrix();
|
||||
|
||||
ang = (float)((tspr->ang + 1024) & 2047) / (2048.0f / 360.0f);
|
||||
ang = (float)((tspr->ang + 1024) & 2047) / (2048.0f / 360.0f);
|
||||
|
||||
bglTranslatef(spos[0], spos[1], spos[2]);
|
||||
bglRotatef(-ang, 0.0f, 1.0f, 0.0f);
|
||||
bglTranslatef((float)(-xoff), (float)(yoff), 0.0f);
|
||||
bglScalef((float)(xsize), (float)(ysize), 1.0f);
|
||||
bglTranslatef(spos[0], spos[1], spos[2]);
|
||||
bglRotatef(-ang, 0.0f, 1.0f, 0.0f);
|
||||
bglTranslatef((float)(-xoff), (float)(yoff), 0.0f);
|
||||
bglScalef((float)(xsize), (float)(ysize), 1.0f);
|
||||
|
||||
prsectors[tspr->sectnum]->wallsproffset += 0.5f;
|
||||
bglPolygonOffset(-prsectors[tspr->sectnum]->wallsproffset,
|
||||
-prsectors[tspr->sectnum]->wallsproffset);
|
||||
break;
|
||||
case 2:
|
||||
bglMatrixMode(GL_MODELVIEW);
|
||||
bglPushMatrix();
|
||||
prsectors[tspr->sectnum]->wallsproffset += 0.5f;
|
||||
bglPolygonOffset(-prsectors[tspr->sectnum]->wallsproffset,
|
||||
-prsectors[tspr->sectnum]->wallsproffset);
|
||||
break;
|
||||
case 2:
|
||||
bglMatrixMode(GL_MODELVIEW);
|
||||
bglPushMatrix();
|
||||
|
||||
ang = (float)((tspr->ang + 1024) & 2047) / (2048.0f / 360.0f);
|
||||
ang = (float)((tspr->ang + 1024) & 2047) / (2048.0f / 360.0f);
|
||||
|
||||
bglTranslatef(spos[0], spos[1], spos[2]);
|
||||
bglRotatef(-ang, 0.0f, 1.0f, 0.0f);
|
||||
bglTranslatef((float)(-xoff), 1.0f, (float)(yoff));
|
||||
bglScalef((float)(xsize), 1.0f, (float)(ysize));
|
||||
bglTranslatef(spos[0], spos[1], spos[2]);
|
||||
bglRotatef(-ang, 0.0f, 1.0f, 0.0f);
|
||||
bglTranslatef((float)(-xoff), 1.0f, (float)(yoff));
|
||||
bglScalef((float)(xsize), 1.0f, (float)(ysize));
|
||||
|
||||
curspritedata = horizsprite;
|
||||
curspritedata = horizsprite;
|
||||
|
||||
prsectors[tspr->sectnum]->floorsproffset += 0.5f;
|
||||
bglPolygonOffset(-prsectors[tspr->sectnum]->floorsproffset,
|
||||
-prsectors[tspr->sectnum]->floorsproffset);
|
||||
break;
|
||||
prsectors[tspr->sectnum]->floorsproffset += 0.5f;
|
||||
bglPolygonOffset(-prsectors[tspr->sectnum]->floorsproffset,
|
||||
-prsectors[tspr->sectnum]->floorsproffset);
|
||||
break;
|
||||
}
|
||||
|
||||
bglMatrixMode(GL_TEXTURE);
|
||||
|
@ -598,7 +600,7 @@ static void polymer_displayrooms(short dacursectnum)
|
|||
while (i < sec->wallnum)
|
||||
{
|
||||
if (((wallvisible(sec->wallptr + i))) &&
|
||||
(polymer_portalinfrustum(sec->wallptr + i, frustum)))
|
||||
(polymer_portalinfrustum(sec->wallptr + i, frustum)))
|
||||
{
|
||||
if (mirrorfrom[depth] != (sec->wallptr + i))
|
||||
polymer_drawwall(dacursectnum, sec->wallptr + i);
|
||||
|
@ -606,7 +608,7 @@ static void polymer_displayrooms(short dacursectnum)
|
|||
if ((wal->cstat&48) == 16) localmaskwall[localmaskwallcnt++] = sec->wallptr + i;
|
||||
|
||||
if ((wal->nextsector != -1) &&
|
||||
(drawingstate[wal->nextsector] == 0))
|
||||
(drawingstate[wal->nextsector] == 0))
|
||||
{
|
||||
sectorqueue[back++] = wal->nextsector;
|
||||
drawingstate[wal->nextsector] = 1;
|
||||
|
@ -627,8 +629,8 @@ static void polymer_displayrooms(short dacursectnum)
|
|||
if (querydelay[sectorqueue[front]] == 0)
|
||||
{
|
||||
bglGetQueryObjectivARB(queryid[sectorqueue[front]],
|
||||
GL_QUERY_RESULT_ARB,
|
||||
&result);
|
||||
GL_QUERY_RESULT_ARB,
|
||||
&result);
|
||||
bglDeleteQueriesARB(1, &queryid[sectorqueue[front]]);
|
||||
if (!result)
|
||||
{
|
||||
|
@ -656,14 +658,14 @@ static void polymer_displayrooms(short dacursectnum)
|
|||
while (i < sec->wallnum)
|
||||
{
|
||||
if ((wallvisible(sec->wallptr + i)) &&
|
||||
(polymer_portalinfrustum(sec->wallptr + i, frustum)))
|
||||
(polymer_portalinfrustum(sec->wallptr + i, frustum)))
|
||||
{
|
||||
polymer_drawwall(sectorqueue[front], sec->wallptr + i);
|
||||
// mask
|
||||
if ((wal->cstat&48) == 16) localmaskwall[localmaskwallcnt++] = sec->wallptr + i;
|
||||
|
||||
if ((wal->nextsector != -1) &&
|
||||
(drawingstate[wal->nextsector] == 0))
|
||||
(drawingstate[wal->nextsector] == 0))
|
||||
{
|
||||
polymer_pokesector(wal->nextsector);
|
||||
sectorqueue[back++] = wal->nextsector;
|
||||
|
@ -675,7 +677,7 @@ static void polymer_displayrooms(short dacursectnum)
|
|||
nextwal = &wall[nextsec->wallptr];
|
||||
|
||||
if ((nextsec->ceilingstat & 1) &&
|
||||
(nextsec->floorz == nextsec->ceilingz))
|
||||
(nextsec->floorz == nextsec->ceilingz))
|
||||
{
|
||||
querydelay[wal->nextsector] = -1;
|
||||
i++;
|
||||
|
@ -695,9 +697,9 @@ static void polymer_displayrooms(short dacursectnum)
|
|||
while (j < nextsec->wallnum)
|
||||
{
|
||||
if ((nextwal->nextwall == (sec->wallptr + i)) ||
|
||||
((nextwal->nextwall != -1) &&
|
||||
(wallvisible(nextwal->nextwall)) &&
|
||||
(polymer_portalinfrustum(nextwal->nextwall, frustum))))
|
||||
((nextwal->nextwall != -1) &&
|
||||
(wallvisible(nextwal->nextwall)) &&
|
||||
(polymer_portalinfrustum(nextwal->nextwall, frustum))))
|
||||
{
|
||||
w = prwalls[nextwal->nextwall];
|
||||
bglVertexPointer(3, GL_FLOAT, 5 * sizeof(GLfloat), w->portal);
|
||||
|
@ -769,7 +771,7 @@ static void polymer_drawplane(short sectnum, short wallnum, GLuint glpic
|
|||
{
|
||||
|
||||
if ((depth < 1) && (plane != NULL) &&
|
||||
(wallnum >= 0) && (wall[wallnum].overpicnum == 560)) // insert mirror condition here
|
||||
(wallnum >= 0) && (wall[wallnum].overpicnum == 560)) // insert mirror condition here
|
||||
{
|
||||
int gx, gy, gz, px, py, pz;
|
||||
float coeff;
|
||||
|
@ -876,7 +878,7 @@ static void polymer_drawplane(short sectnum, short wallnum, GLuint glpic
|
|||
OMGDRAWSHIT;
|
||||
|
||||
if ((depth < 1) && (plane != NULL) &&
|
||||
(wallnum >= 0) && (wall[wallnum].overpicnum == 560)) // insert mirror condition here
|
||||
(wallnum >= 0) && (wall[wallnum].overpicnum == 560)) // insert mirror condition here
|
||||
{
|
||||
bglDisable(GL_STENCIL_TEST);
|
||||
bglClear(GL_STENCIL_BUFFER_BIT);
|
||||
|
@ -1005,10 +1007,10 @@ static int polymer_updatesector(short sectnum)
|
|||
}
|
||||
|
||||
if ((s->controlstate == 2) ||
|
||||
(sec->floorz != s->floorz) ||
|
||||
(sec->ceilingz != s->ceilingz) ||
|
||||
(sec->floorheinum != s->floorheinum) ||
|
||||
(sec->ceilingheinum != s->ceilingheinum))
|
||||
(sec->floorz != s->floorz) ||
|
||||
(sec->ceilingz != s->ceilingz) ||
|
||||
(sec->floorheinum != s->floorheinum) ||
|
||||
(sec->ceilingheinum != s->ceilingheinum))
|
||||
{
|
||||
wallinvalidate = 1;
|
||||
|
||||
|
@ -1036,14 +1038,14 @@ static int polymer_updatesector(short sectnum)
|
|||
if (picanm[ceilingpicnum]&192) ceilingpicnum += animateoffs(ceilingpicnum,sectnum);
|
||||
|
||||
if ((s->controlstate != 2) && (!needfloor) &&
|
||||
(sec->floorstat == s->floorstat) &&
|
||||
(sec->ceilingstat == s->ceilingstat) &&
|
||||
(floorpicnum == s->floorpicnum) &&
|
||||
(ceilingpicnum == s->ceilingpicnum) &&
|
||||
(sec->floorxpanning == s->floorxpanning) &&
|
||||
(sec->ceilingxpanning == s->ceilingxpanning) &&
|
||||
(sec->floorypanning == s->floorypanning) &&
|
||||
(sec->ceilingypanning == s->ceilingypanning))
|
||||
(sec->floorstat == s->floorstat) &&
|
||||
(sec->ceilingstat == s->ceilingstat) &&
|
||||
(floorpicnum == s->floorpicnum) &&
|
||||
(ceilingpicnum == s->ceilingpicnum) &&
|
||||
(sec->floorxpanning == s->floorxpanning) &&
|
||||
(sec->ceilingxpanning == s->ceilingxpanning) &&
|
||||
(sec->floorypanning == s->floorypanning) &&
|
||||
(sec->ceilingypanning == s->ceilingypanning))
|
||||
goto attributes;
|
||||
|
||||
wal = &wall[sec->wallptr];
|
||||
|
@ -1072,7 +1074,7 @@ static int polymer_updatesector(short sectnum)
|
|||
loadtile(curpicnum);
|
||||
|
||||
if (((sec->floorstat & 64) || (sec->ceilingstat & 64)) &&
|
||||
((secangcos == 2) && (secangsin == 2)))
|
||||
((secangcos == 2) && (secangsin == 2)))
|
||||
{
|
||||
ang = (getangle(wall[wal->point2].x - wal->x, wall[wal->point2].y - wal->y) + 512) & 2047;
|
||||
secangcos = (float)(sintable[(ang+512)&2047]) / 16383.0f;
|
||||
|
@ -1132,10 +1134,10 @@ static int polymer_updatesector(short sectnum)
|
|||
attributes:
|
||||
|
||||
if ((s->controlstate != 2) &&
|
||||
(sec->floorshade == s->floorshade) &&
|
||||
(sec->floorpal == s->floorpal) &&
|
||||
(floorpicnum == s->floorpicnum) &&
|
||||
(ceilingpicnum == s->ceilingpicnum))
|
||||
(sec->floorshade == s->floorshade) &&
|
||||
(sec->floorpal == s->floorpal) &&
|
||||
(floorpicnum == s->floorpicnum) &&
|
||||
(ceilingpicnum == s->ceilingpicnum))
|
||||
goto finish;
|
||||
|
||||
i = 0;
|
||||
|
@ -1407,21 +1409,21 @@ static void polymer_updatewall(short wallnum)
|
|||
nwallpicnum = 0;
|
||||
|
||||
if ((w->controlstate != 2) &&
|
||||
(w->invalidid == invalid) &&
|
||||
(wal->cstat == w->cstat) &&
|
||||
(wallpicnum == w->picnum) &&
|
||||
(wal->pal == w->pal) &&
|
||||
(wal->xpanning == w->xpanning) &&
|
||||
(wal->ypanning == w->ypanning) &&
|
||||
(wal->xrepeat == w->xrepeat) &&
|
||||
(wal->yrepeat == w->yrepeat) &&
|
||||
(walloverpicnum == w->overpicnum) &&
|
||||
(wal->shade == w->shade) &&
|
||||
((nwallnum == -1) ||
|
||||
((nwallpicnum == w->nwallpicnum) &&
|
||||
(wall[nwallnum].xpanning == w->nwallxpanning) &&
|
||||
(wall[nwallnum].ypanning == w->nwallypanning) &&
|
||||
(wall[nwallnum].cstat == w->nwallcstat))))
|
||||
(w->invalidid == invalid) &&
|
||||
(wal->cstat == w->cstat) &&
|
||||
(wallpicnum == w->picnum) &&
|
||||
(wal->pal == w->pal) &&
|
||||
(wal->xpanning == w->xpanning) &&
|
||||
(wal->ypanning == w->ypanning) &&
|
||||
(wal->xrepeat == w->xrepeat) &&
|
||||
(wal->yrepeat == w->yrepeat) &&
|
||||
(walloverpicnum == w->overpicnum) &&
|
||||
(wal->shade == w->shade) &&
|
||||
((nwallnum == -1) ||
|
||||
((nwallpicnum == w->nwallpicnum) &&
|
||||
(wall[nwallnum].xpanning == w->nwallxpanning) &&
|
||||
(wall[nwallnum].ypanning == w->nwallypanning) &&
|
||||
(wall[nwallnum].cstat == w->nwallcstat))))
|
||||
{
|
||||
w->controlstate = 1;
|
||||
return; // screw you guys I'm going home
|
||||
|
@ -1475,7 +1477,7 @@ static void polymer_updatewall(short wallnum)
|
|||
w->wallfbglpic = 0;
|
||||
|
||||
w->wallcolor[0] = w->wallcolor[1] = w->wallcolor[2] =
|
||||
((float)(numpalookups-min(max(wal->shade,0),numpalookups)))/((float)numpalookups);
|
||||
((float)(numpalookups-min(max(wal->shade,0),numpalookups)))/((float)numpalookups);
|
||||
w->wallcolor[3] = 1.0f;
|
||||
|
||||
if (pth && (pth->flags & 2) && (pth->palnum != wal->pal))
|
||||
|
@ -1531,9 +1533,9 @@ static void polymer_updatewall(short wallnum)
|
|||
nnwallnum = wall[nwallnum].point2;
|
||||
|
||||
if (((s->floorbuffer[((wallnum - sec->wallptr) * 5) + 1] != ns->floorbuffer[((nnwallnum - nsec->wallptr) * 5) + 1]) ||
|
||||
(s->floorbuffer[((wal->point2 - sec->wallptr) * 5) + 1] != ns->floorbuffer[((nwallnum - nsec->wallptr) * 5) + 1])) &&
|
||||
((s->floorbuffer[((wallnum - sec->wallptr) * 5) + 1] <= ns->floorbuffer[((nnwallnum - nsec->wallptr) * 5) + 1]) ||
|
||||
(s->floorbuffer[((wal->point2 - sec->wallptr) * 5) + 1] <= ns->floorbuffer[((nwallnum - nsec->wallptr) * 5) + 1])))
|
||||
(s->floorbuffer[((wal->point2 - sec->wallptr) * 5) + 1] != ns->floorbuffer[((nwallnum - nsec->wallptr) * 5) + 1])) &&
|
||||
((s->floorbuffer[((wallnum - sec->wallptr) * 5) + 1] <= ns->floorbuffer[((nnwallnum - nsec->wallptr) * 5) + 1]) ||
|
||||
(s->floorbuffer[((wal->point2 - sec->wallptr) * 5) + 1] <= ns->floorbuffer[((nwallnum - nsec->wallptr) * 5) + 1])))
|
||||
underwall = 1;
|
||||
|
||||
if ((underwall) || (wal->cstat & 16))
|
||||
|
@ -1572,7 +1574,7 @@ static void polymer_updatewall(short wallnum)
|
|||
w->wallfbglpic = 0;
|
||||
|
||||
w->wallcolor[0] = w->wallcolor[1] = w->wallcolor[2] =
|
||||
((float)(numpalookups-min(max(curshade,0),numpalookups)))/((float)numpalookups);
|
||||
((float)(numpalookups-min(max(curshade,0),numpalookups)))/((float)numpalookups);
|
||||
w->wallcolor[3] = 1.0f;
|
||||
|
||||
if (pth && (pth->flags & 2) && (pth->palnum != curpal))
|
||||
|
@ -1629,9 +1631,9 @@ static void polymer_updatewall(short wallnum)
|
|||
}
|
||||
|
||||
if (((s->ceilbuffer[((wallnum - sec->wallptr) * 5) + 1] != ns->ceilbuffer[((nnwallnum - nsec->wallptr) * 5) + 1]) ||
|
||||
(s->ceilbuffer[((wal->point2 - sec->wallptr) * 5) + 1] != ns->ceilbuffer[((nwallnum - nsec->wallptr) * 5) + 1])) &&
|
||||
((s->ceilbuffer[((wallnum - sec->wallptr) * 5) + 1] >= ns->ceilbuffer[((nnwallnum - nsec->wallptr) * 5) + 1]) ||
|
||||
(s->ceilbuffer[((wal->point2 - sec->wallptr) * 5) + 1] >= ns->ceilbuffer[((nwallnum - nsec->wallptr) * 5) + 1])))
|
||||
(s->ceilbuffer[((wal->point2 - sec->wallptr) * 5) + 1] != ns->ceilbuffer[((nwallnum - nsec->wallptr) * 5) + 1])) &&
|
||||
((s->ceilbuffer[((wallnum - sec->wallptr) * 5) + 1] >= ns->ceilbuffer[((nnwallnum - nsec->wallptr) * 5) + 1]) ||
|
||||
(s->ceilbuffer[((wal->point2 - sec->wallptr) * 5) + 1] >= ns->ceilbuffer[((nwallnum - nsec->wallptr) * 5) + 1])))
|
||||
overwall = 1;
|
||||
|
||||
if ((overwall) || (wal->cstat & 16))
|
||||
|
@ -1662,7 +1664,7 @@ static void polymer_updatewall(short wallnum)
|
|||
w->maskglpic = pth ? pth->glpic : 0;
|
||||
|
||||
w->maskcolor[0] = w->maskcolor[1] = w->maskcolor[2] =
|
||||
((float)(numpalookups-min(max(wal->shade,0),numpalookups)))/((float)numpalookups);
|
||||
((float)(numpalookups-min(max(wal->shade,0),numpalookups)))/((float)numpalookups);
|
||||
w->maskcolor[3] = 1.0f;
|
||||
|
||||
if (pth && (pth->flags & 2) && (pth->palnum != wal->pal))
|
||||
|
@ -1691,7 +1693,7 @@ static void polymer_updatewall(short wallnum)
|
|||
w->overfbglpic = 0;
|
||||
|
||||
w->overcolor[0] = w->overcolor[1] = w->overcolor[2] =
|
||||
((float)(numpalookups-min(max(wal->shade,0),numpalookups)))/((float)numpalookups);
|
||||
((float)(numpalookups-min(max(wal->shade,0),numpalookups)))/((float)numpalookups);
|
||||
w->overcolor[3] = 1.0f;
|
||||
|
||||
if (pth && (pth->flags & 2) && (pth->palnum != wal->pal))
|
||||
|
@ -1828,8 +1830,8 @@ static void polymer_drawwall(short sectnum, short wallnum)
|
|||
}
|
||||
|
||||
if ((sector[sectnum].ceilingstat & 1) &&
|
||||
((wall[wallnum].nextsector == -1) ||
|
||||
!(sector[wall[wallnum].nextsector].ceilingstat & 1)))
|
||||
((wall[wallnum].nextsector == -1) ||
|
||||
!(sector[wall[wallnum].nextsector].ceilingstat & 1)))
|
||||
{
|
||||
bglColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
||||
bglVertexPointer(3, GL_FLOAT, 0, w->cap);
|
||||
|
@ -1849,7 +1851,8 @@ static void polymer_buffertoplane(GLfloat* buffer, GLushort* indices, in
|
|||
int i;
|
||||
|
||||
i = 0;
|
||||
do {
|
||||
do
|
||||
{
|
||||
vec1[0] = buffer[(INDICE(1)) + 0] - buffer[(INDICE(0)) + 0];
|
||||
vec1[1] = buffer[(INDICE(1)) + 1] - buffer[(INDICE(0)) + 1];
|
||||
vec1[2] = buffer[(INDICE(1)) + 2] - buffer[(INDICE(0)) + 2];
|
||||
|
@ -1974,8 +1977,8 @@ static void polymer_scansprites(short sectnum, spritetype* localtsprite,
|
|||
{
|
||||
spr = &sprite[i];
|
||||
if ((((spr->cstat&0x8000) == 0) || (showinvisibility)) &&
|
||||
(spr->xrepeat > 0) && (spr->yrepeat > 0) &&
|
||||
(*localspritesortcnt < MAXSPRITESONSCREEN))
|
||||
(spr->xrepeat > 0) && (spr->yrepeat > 0) &&
|
||||
(*localspritesortcnt < MAXSPRITESONSCREEN))
|
||||
{
|
||||
copybufbyte(spr,&localtsprite[*localspritesortcnt],sizeof(spritetype));
|
||||
localtsprite[(*localspritesortcnt)++].owner = i;
|
||||
|
|
|
@ -437,12 +437,7 @@ pthtyp * gltexcache(int dapicnum, int dapalnum, int dameth)
|
|||
if (pth2->flags & 8) pth->flags |= 8; //hasalpha
|
||||
pth->hicr = si;
|
||||
pth->next = gltexcachead[j];
|
||||
if (pth->palmap)
|
||||
{
|
||||
//_initprintf("Realloc #%d->#%d\n",pth2->palmap, pth->palmap);
|
||||
pth->palmap=malloc(pth->size*4);
|
||||
memcpy(pth->palmap, pth2->palmap, pth->size*4);
|
||||
}
|
||||
|
||||
gltexcachead[j] = pth;
|
||||
return(pth);
|
||||
}
|
||||
|
@ -1449,18 +1444,23 @@ failure:
|
|||
return -1;
|
||||
}
|
||||
// --------------------------------------------------- JONOF'S COMPRESSED TEXTURE CACHE STUFF
|
||||
static void applypalmapsT(char *pic, int sizx, int sizy, int pal)
|
||||
static void applypalmapsT(char *pic, int sizx, int sizy, int dapic,int dapalnum, int dameth)
|
||||
{
|
||||
//_initprintf("%d\n",pal);
|
||||
int stage;
|
||||
pthtyp *pichead1=pichead;
|
||||
|
||||
for (stage=0;stage<MAXPALCONV;stage++)
|
||||
{
|
||||
int pal1=0,pal2=pal;
|
||||
int pal1=0,pal2=dapalnum;
|
||||
pthtyp *pth;
|
||||
getpalmap(stage,&pal1,&pal2);
|
||||
getpalmap(&stage,&pal1,&pal2);
|
||||
if (!pal1)return;
|
||||
|
||||
for (pth=pichead; pth; pth=pth->next)
|
||||
//_initprintf("Pal: %d\n",pal1);
|
||||
if (hicfindsubst(dapic, pal1, 0))
|
||||
gltexcache(dapic, pal1, dameth);
|
||||
for (pth=pichead1; pth; pth=pth->next)
|
||||
if (pth->palnum ==pal1&&pth->palmap)break;
|
||||
if (!pth||pth->size!=sizx*sizy)continue;
|
||||
|
||||
|
@ -1549,7 +1549,7 @@ int gloadtile_hi(int dapic,int dapalnum, int facen, hicreplctyp *hicr, int damet
|
|||
pic = (coltype *)calloc(xsiz,ysiz*sizeof(coltype)); if (!pic) { free(picfil); return 1; }
|
||||
|
||||
if (kprender(picfil,picfillen,(int)pic,xsiz*sizeof(coltype),xsiz,ysiz,0,0)) { free(picfil); free(pic); return -2; }
|
||||
applypalmapsT((char *)pic,tsizx,tsizy,dapalnum);
|
||||
applypalmapsT((char *)pic,tsizx,tsizy,dapic,dapalnum,dameth);
|
||||
|
||||
r=(glinfo.bgra)?hictinting[dapalnum].r:hictinting[dapalnum].b;
|
||||
g=hictinting[dapalnum].g;
|
||||
|
@ -1632,7 +1632,6 @@ int gloadtile_hi(int dapic,int dapalnum, int facen, hicreplctyp *hicr, int damet
|
|||
memcpy(pth->palmap,pic,pth->size*4);
|
||||
}
|
||||
cachefil=0;
|
||||
//_initprintf("#%d\n",pth->palmap);
|
||||
}
|
||||
fixtransparency(pic,tsizx,tsizy,xsiz,ysiz,dameth);
|
||||
uploadtexture(doalloc,xsiz,ysiz,intexfmt,texfmt,pic,-1,tsizy,dameth);
|
||||
|
@ -1806,12 +1805,6 @@ void drawpoly(double *dpx, double *dpy, int n, int method)
|
|||
{
|
||||
float hackscx, hackscy;
|
||||
|
||||
int pal1;
|
||||
if (usehightile)
|
||||
for (pal1=SPECPAL;pal1<=REDPAL;pal1++)
|
||||
if (hicfindsubst(globalpicnum, pal1, 0))
|
||||
gltexcache(globalpicnum, pal1, method&(~3));
|
||||
|
||||
if (skyclamphack) method |= 4;
|
||||
pth = gltexcache(globalpicnum,globalpal,method&(~3));
|
||||
|
||||
|
@ -3789,7 +3782,10 @@ static void polymost_drawalls(int bunch)
|
|||
yoffs=(i-tilesizy[globalpicnum])*(255./i);
|
||||
if (!(nwal->cstat&4))
|
||||
{
|
||||
if (ypan>256-yoffs){ypan-=yoffs;initprintf("FL\n");}
|
||||
if (ypan>256-yoffs)
|
||||
{
|
||||
ypan-=yoffs;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -5911,7 +5907,6 @@ void polymost_precache(int dapicnum, int dapalnum, int datype)
|
|||
// basically this just means walls are repeating
|
||||
// while sprites are clamped
|
||||
int mid;
|
||||
int pal1;
|
||||
|
||||
if (rendmode < 3) return;
|
||||
|
||||
|
@ -5919,9 +5914,7 @@ void polymost_precache(int dapicnum, int dapalnum, int datype)
|
|||
|
||||
//OSD_Printf("precached %d %d type %d\n", dapicnum, dapalnum, datype);
|
||||
hicprecaching = 1;
|
||||
for (pal1=SPECPAL;pal1<=REDPAL;pal1++)
|
||||
if (hicfindsubst(globalpicnum, pal1, 0))
|
||||
gltexcache(globalpicnum, pal1, (datype & 1) << 2);
|
||||
|
||||
|
||||
gltexcache(dapicnum, dapalnum, (datype & 1) << 2);
|
||||
hicprecaching = 0;
|
||||
|
|
|
@ -227,7 +227,8 @@ int initsystem(void)
|
|||
linked->major, linked->minor, linked->patch);
|
||||
|
||||
if (SDL_VERSIONNUM(linked->major,linked->minor,linked->patch) < SDL_REQUIREDVERSION)
|
||||
{ /*reject running under SDL versions older than what is stated in sdl_inc.h */
|
||||
{
|
||||
/*reject running under SDL versions older than what is stated in sdl_inc.h */
|
||||
initprintf("You need at least v%d.%d.%d of SDL to run this game\n",SDL_MIN_X,SDL_MIN_Y,SDL_MIN_Z);
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -70,14 +70,14 @@ static void PopulateForm(void)
|
|||
Bsprintf(buf, "%d x %d %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp);
|
||||
j = ComboBox_AddString(hwnd3d, buf);
|
||||
(void)ComboBox_SetItemData(hwnd3d, j, i);
|
||||
if (i == mode3d) (void)ComboBox_SetCurSel(hwnd3d, j);
|
||||
if (i == mode3d)(void)ComboBox_SetCurSel(hwnd3d, j);
|
||||
|
||||
// only 8-bit modes get used for 2D
|
||||
if (validmode[i].bpp != 8 || validmode[i].xdim < 640 || validmode[i].ydim < 480) continue;
|
||||
Bsprintf(buf, "%d x %d", validmode[i].xdim, validmode[i].ydim);
|
||||
j = ComboBox_AddString(hwnd2d, buf);
|
||||
(void)ComboBox_SetItemData(hwnd2d, j, i);
|
||||
if (i == mode2d) (void)ComboBox_SetCurSel(hwnd2d, j);
|
||||
if (i == mode2d)(void)ComboBox_SetCurSel(hwnd2d, j);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -47,6 +47,7 @@ int _buildargc = 0;
|
|||
const char **_buildargv = NULL;
|
||||
static char *argvbuf = NULL;
|
||||
extern int app_main(int argc, const char *argv[]);
|
||||
extern void app_crashhandler(void);
|
||||
|
||||
// Windows crud
|
||||
static HINSTANCE hInstance = 0;
|
||||
|
@ -250,6 +251,7 @@ static void SignalHandler(int signum)
|
|||
{
|
||||
case SIGSEGV:
|
||||
printOSD("Fatal Signal caught: SIGSEGV. Bailing out.\n");
|
||||
app_crashhandler();
|
||||
uninitsystem();
|
||||
if (stdout) fclose(stdout);
|
||||
break;
|
||||
|
|
|
@ -7,6 +7,7 @@ ALROOT=AL
|
|||
# Engine options
|
||||
SUPERBUILD = 1
|
||||
POLYMOST = 1
|
||||
POLYMER = 1
|
||||
USE_OPENGL = 1
|
||||
NOASM = 0
|
||||
LINKED_GTK = 0
|
||||
|
|
|
@ -6025,6 +6025,32 @@ int ExtInit(void)
|
|||
return rv;
|
||||
}
|
||||
|
||||
#ifdef RENDERTYPEWIN
|
||||
void app_crashhandler(void)
|
||||
{
|
||||
if (levelname[0])
|
||||
{
|
||||
char *f;
|
||||
fixspritesectors(); //Do this before saving!
|
||||
updatesector(startposx,startposy,&startsectnum);
|
||||
if (pathsearchmode) f = levelname;
|
||||
else
|
||||
{
|
||||
// virtual filesystem mode can't save to directories so drop the file into
|
||||
// the current directory
|
||||
f = strrchr(levelname, '/');
|
||||
if (!f) f = levelname; else f++;
|
||||
}
|
||||
ExtPreSaveMap();
|
||||
saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum);
|
||||
ExtSaveMap(f);
|
||||
message("Board saved");
|
||||
asksave = 0;
|
||||
keystatus[0x1f] = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void ExtUnInit(void)
|
||||
{
|
||||
int i;
|
||||
|
@ -6234,11 +6260,20 @@ static void Keys2d3d(void)
|
|||
{
|
||||
if (levelname[0])
|
||||
{
|
||||
char *f;
|
||||
fixspritesectors(); //Do this before saving!
|
||||
updatesector(startposx,startposy,&startsectnum);
|
||||
if (pathsearchmode) f = levelname;
|
||||
else
|
||||
{
|
||||
// virtual filesystem mode can't save to directories so drop the file into
|
||||
// the current directory
|
||||
f = strrchr(levelname, '/');
|
||||
if (!f) f = levelname; else f++;
|
||||
}
|
||||
ExtPreSaveMap();
|
||||
saveboard(levelname,&startposx,&startposy,&startposz,&startang,&startsectnum);
|
||||
ExtSaveMap(levelname);
|
||||
saveboard(f,&startposx,&startposy,&startposz,&startang,&startsectnum);
|
||||
ExtSaveMap(f);
|
||||
message("Board saved");
|
||||
asksave = 0;
|
||||
keystatus[0x1f] = 0;
|
||||
|
|
|
@ -641,7 +641,6 @@ int32 CONFIG_ReadSetup(void)
|
|||
|
||||
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLParallaxSkyClamping", &r_parallaxskyclamping);
|
||||
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLParallaxSkyPanning", &r_parallaxskypanning);
|
||||
|
||||
dummy = usemodels;
|
||||
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "UseModels",&dummy);
|
||||
usemodels = dummy != 0;
|
||||
|
|
|
@ -36,6 +36,9 @@ extern "C" {
|
|||
#include "a.h"
|
||||
#include "build.h"
|
||||
#if defined(POLYMOST) && defined(USE_OPENGL)
|
||||
# include "polymost.h"
|
||||
#endif
|
||||
#ifdef POLYMER
|
||||
# include "polymer.h"
|
||||
#endif
|
||||
#include "cache1d.h"
|
||||
|
|
|
@ -4042,8 +4042,10 @@ void displayrooms(int snum,int smoothratio)
|
|||
#ifdef SE40
|
||||
se40code(s->x,s->y,s->z,ud.cameraang,s->yvel,smoothratio);
|
||||
#endif
|
||||
#ifdef POLYMER
|
||||
if (rendmode == 4)
|
||||
polymer_setanimatesprites(animatesprites, s->x, s->y, ud.cameraang, smoothratio);
|
||||
#endif
|
||||
drawrooms(s->x,s->y,s->z-(4<<8),ud.cameraang,s->yvel,s->sectnum);
|
||||
animatesprites(s->x,s->y,ud.cameraang,smoothratio);
|
||||
drawmasks();
|
||||
|
@ -4216,8 +4218,10 @@ void displayrooms(int snum,int smoothratio)
|
|||
gotpic[MIRROR>>3] &= ~(1<<(MIRROR&7));
|
||||
}
|
||||
|
||||
#ifdef POLYMER
|
||||
if (rendmode == 4)
|
||||
polymer_setanimatesprites(animatesprites, ud.camerax,ud.cameray,ud.cameraang,smoothratio);
|
||||
#endif
|
||||
drawrooms(ud.camerax,ud.cameray,ud.cameraz,ud.cameraang,ud.camerahoriz,ud.camerasect);
|
||||
animatesprites(ud.camerax,ud.cameray,ud.cameraang,smoothratio);
|
||||
drawmasks();
|
||||
|
@ -10181,6 +10185,14 @@ void backtomenu(void)
|
|||
else wm_setapptitle(HEAD);
|
||||
}
|
||||
|
||||
#ifdef RENDERTYPEWIN
|
||||
void app_crashhandler(void)
|
||||
{
|
||||
closedemowrite();
|
||||
sendquit();
|
||||
}
|
||||
#endif
|
||||
|
||||
void app_main(int argc,const char **argv)
|
||||
{
|
||||
int i, j;
|
||||
|
@ -11053,7 +11065,7 @@ RECHECK:
|
|||
ud.recstat = 2;
|
||||
which_demo++;
|
||||
if (which_demo == 10) which_demo = 1;
|
||||
if (enterlevel(MODE_DEMO)) return 1;
|
||||
if (enterlevel(MODE_DEMO)) ud.recstat = foundemo = 0;
|
||||
}
|
||||
|
||||
if (foundemo == 0 || in_menu || KB_KeyWaiting() || numplayers > 1)
|
||||
|
@ -11924,8 +11936,8 @@ static int domovethings(void)
|
|||
pan3dsound();
|
||||
}
|
||||
|
||||
#ifdef POLYMER
|
||||
//polymer invalidate
|
||||
#if defined(POLYMOST) && defined(USE_OPENGL)
|
||||
updatesectors = 1;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -450,6 +450,7 @@ static const char *keyw[] =
|
|||
"resizearray", // 318
|
||||
"writearraytofile", // 319
|
||||
"readarrayfromfile", // 320
|
||||
"starttrackvar", // 321
|
||||
"<null>"
|
||||
};
|
||||
|
||||
|
@ -3287,6 +3288,7 @@ static int parsecommand(void)
|
|||
case CON_SAVEGAMEVAR:
|
||||
case CON_READGAMEVAR:
|
||||
case CON_USERQUOTE:
|
||||
case CON_STARTTRACKVAR:
|
||||
transvar();
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -810,4 +810,5 @@ enum keywords
|
|||
CON_RESIZEARRAY, // 318
|
||||
CON_WRITEARRAYTOFILE, // 319
|
||||
CON_READARRAYFROMFILE, // 320
|
||||
CON_STARTTRACKVAR, // 321
|
||||
};
|
||||
|
|
|
@ -5597,8 +5597,10 @@ static int parse(void)
|
|||
gotpic[MIRROR>>3] &= ~(1<<(MIRROR&7));
|
||||
}
|
||||
|
||||
#ifdef POLYMER
|
||||
if (rendmode == 4)
|
||||
polymer_setanimatesprites(animatesprites, x,y,a,smoothratio);
|
||||
#endif
|
||||
drawrooms(x,y,z,a,horiz,sect);
|
||||
display_mirror = 2;
|
||||
animatesprites(x,y,a,smoothratio);
|
||||
|
@ -7027,6 +7029,13 @@ static int parse(void)
|
|||
playmusic(&map[(unsigned char)music_select].musicfn[0],music_select);
|
||||
break;
|
||||
|
||||
case CON_STARTTRACKVAR:
|
||||
insptr++;
|
||||
music_select=(ud.volume_number*MAXLEVELS)+(GetGameVarID(*(insptr++), g_i, g_p));
|
||||
if (map[(unsigned char)music_select].musicfn != NULL)
|
||||
playmusic(&map[(unsigned char)music_select].musicfn[0],music_select);
|
||||
break;
|
||||
|
||||
case CON_GETTEXTURECEILING:
|
||||
insptr++;
|
||||
SetGameVarID(g_iTextureID, sector[g_sp->sectnum].ceilingpicnum, g_i, g_p);
|
||||
|
|
|
@ -694,12 +694,14 @@ cvar[] =
|
|||
#if defined(POLYMOST) && defined(USE_OPENGL)
|
||||
{ "r_anamorphic", "r_anamorphic: enable/disable widescreen mode", (void*)&glwidescreen, CVAR_BOOL, 0, 0, 1 },
|
||||
{ "r_projectionhack", "r_projectionhack: enable/disable projection hack", (void*)&glprojectionhacks, CVAR_BOOL, 0, 0, 1 },
|
||||
# ifdef POLYMER
|
||||
// polymer cvars
|
||||
{ "pr_occlusionculling", "pr_occlusionculling: insert description that noone will ever read", (void*)&pr_occlusionculling, CVAR_INT, 0, 0, 512 },
|
||||
{ "pr_fov", "pr_fov: sets the field of vision in build angle", (void*)&pr_fov, CVAR_INT, 0, 0, 1023},
|
||||
{ "pr_billboardingmode", "pr_billboardingmode: face sprite display method. 0: classic mode; 1: polymost mode", (void*)&pr_billboardingmode, CVAR_INT, 0, 0, 1 },
|
||||
{ "pr_verbosity", "pr_verbosity: verbosity level of the polymer renderer", (void*)&pr_verbosity, CVAR_INT, 0, 0, 3 },
|
||||
{ "pr_wireframe", "pr_wireframe: toggles wireframe mode", (void*)&pr_wireframe, CVAR_INT, 0, 0, 1 },
|
||||
#endif
|
||||
#endif
|
||||
{ "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 0, 1 },
|
||||
|
||||
|
@ -954,19 +956,19 @@ static int osdcmd_bind(const osdfuncparm_t *parm)
|
|||
|
||||
if (parm->numparms==1&&!Bstrcasecmp(parm->parms[0],"showkeys"))
|
||||
{
|
||||
for(i=0;keynames[i].name;i++)OSD_Printf("%s\n",keynames[i].name);
|
||||
for (i=0;keynames[i].name;i++)OSD_Printf("%s\n",keynames[i].name);
|
||||
return OSDCMD_OK;
|
||||
}
|
||||
if (parm->numparms==0)
|
||||
{
|
||||
OSD_Printf("Keybindings:\n");
|
||||
for(i=0;i<MAXBOUNDKEYS;i++)if(*boundkeys[i].name)
|
||||
OSD_Printf("%-11s = %s\n",boundkeys[i].key,boundkeys[i].name);
|
||||
for (i=0;i<MAXBOUNDKEYS;i++)if (*boundkeys[i].name)
|
||||
OSD_Printf("%-11s = %s\n",boundkeys[i].key,boundkeys[i].name);
|
||||
return OSDCMD_OK;
|
||||
}
|
||||
|
||||
if (parm->numparms < 2) return OSDCMD_SHOWHELP;
|
||||
for(i=0;keynames[i].name;i++)if(!Bstrcasecmp(parm->parms[0],keynames[i].name))break;
|
||||
for (i=0;keynames[i].name;i++)if (!Bstrcasecmp(parm->parms[0],keynames[i].name))break;
|
||||
if (!keynames[i].name) return OSDCMD_SHOWHELP;
|
||||
|
||||
Bstrncpy(boundkeys[keynames[i].id].name,parm->parms[1], MAXSCRIPTFILENAMELENGTH-1);
|
||||
|
|
|
@ -213,9 +213,9 @@ void _playmusic(const char *fn)
|
|||
l = kfilelength(fp);
|
||||
MUSIC_StopSong();
|
||||
Musicsize=0;
|
||||
if(!MusicPtr)
|
||||
if (!MusicPtr)
|
||||
MusicPtr=Bcalloc(1,l * sizeof(char));
|
||||
else MusicPtr=Brealloc(MusicPtr,l * sizeof(char));
|
||||
else MusicPtr=Brealloc(MusicPtr,l * sizeof(char));
|
||||
Musicsize=l;
|
||||
|
||||
kread(fp, (unsigned char *)MusicPtr, l);
|
||||
|
@ -231,9 +231,9 @@ void _playmusic(const char *fn)
|
|||
int playmusic(const char *fn, const int sel)
|
||||
{
|
||||
Musicsize=0;
|
||||
if(map[sel].musicfn1 != NULL)
|
||||
if (map[sel].musicfn1 != NULL)
|
||||
_playmusic(map[sel].musicfn1);
|
||||
if(!Musicsize)
|
||||
if (!Musicsize)
|
||||
{
|
||||
_playmusic(fn);
|
||||
return 0;
|
||||
|
@ -254,7 +254,7 @@ int loadsound(unsigned int num)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if(g_sounds[num].filename1)fp = kopen4load(g_sounds[num].filename1,loadfromgrouponly);
|
||||
if (g_sounds[num].filename1)fp = kopen4load(g_sounds[num].filename1,loadfromgrouponly);
|
||||
if (fp == -1)fp = kopen4load(g_sounds[num].filename,loadfromgrouponly);
|
||||
if (fp == -1)
|
||||
{
|
||||
|
@ -404,22 +404,22 @@ int xyzsound(int num,int i,int x,int y,int z)
|
|||
voice = FX_PlayLoopedVOC(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
||||
pitch,sndist>>6,sndist>>6,0,g_sounds[num].pr,num);
|
||||
else
|
||||
if (*g_sounds[num].ptr == 'O')
|
||||
voice = FX_PlayLoopedOGG(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
||||
pitch,sndist>>6,sndist>>6,0,g_sounds[num].pr,num);
|
||||
else
|
||||
voice = FX_PlayLoopedWAV(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
||||
pitch,sndist>>6,sndist>>6,0,g_sounds[num].pr,num);
|
||||
if (*g_sounds[num].ptr == 'O')
|
||||
voice = FX_PlayLoopedOGG(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
||||
pitch,sndist>>6,sndist>>6,0,g_sounds[num].pr,num);
|
||||
else
|
||||
voice = FX_PlayLoopedWAV(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
||||
pitch,sndist>>6,sndist>>6,0,g_sounds[num].pr,num);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*g_sounds[num].ptr == 'C')
|
||||
voice = FX_PlayVOC3D(g_sounds[ num ].ptr,pitch,sndang>>6,sndist>>6, g_sounds[num].pr, num);
|
||||
else
|
||||
if (*g_sounds[num].ptr == 'O')
|
||||
voice = FX_PlayOGG3D(g_sounds[ num ].ptr,pitch,sndang>>6,sndist>>6, g_sounds[num].pr, num);
|
||||
else
|
||||
voice = FX_PlayWAV3D(g_sounds[ num ].ptr,pitch,sndang>>6,sndist>>6, g_sounds[num].pr, num);
|
||||
if (*g_sounds[num].ptr == 'O')
|
||||
voice = FX_PlayOGG3D(g_sounds[ num ].ptr,pitch,sndang>>6,sndist>>6, g_sounds[num].pr, num);
|
||||
else
|
||||
voice = FX_PlayWAV3D(g_sounds[ num ].ptr,pitch,sndang>>6,sndist>>6, g_sounds[num].pr, num);
|
||||
}
|
||||
|
||||
if (voice > FX_Ok)
|
||||
|
@ -487,22 +487,22 @@ void sound(int num)
|
|||
voice = FX_PlayLoopedOGG(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
||||
}
|
||||
else
|
||||
{
|
||||
start = (int)*(unsigned short *)(g_sounds[num].ptr + 0x14);
|
||||
voice = FX_PlayLoopedWAV(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
||||
}
|
||||
else
|
||||
{
|
||||
start = (int)*(unsigned short *)(g_sounds[num].ptr + 0x14);
|
||||
voice = FX_PlayLoopedWAV(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*g_sounds[num].ptr == 'C')
|
||||
voice = FX_PlayVOC3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
||||
else
|
||||
if (*g_sounds[num].ptr == 'O')
|
||||
voice = FX_PlayOGG3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
||||
else
|
||||
voice = FX_PlayWAV3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
||||
if (*g_sounds[num].ptr == 'O')
|
||||
voice = FX_PlayOGG3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
||||
else
|
||||
voice = FX_PlayWAV3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
||||
}
|
||||
|
||||
if (voice > FX_Ok) return;
|
||||
|
|
|
@ -88,7 +88,7 @@ static void PopulateForm(int pgs)
|
|||
Bsprintf(buf, "%d x %d %dbpp", validmode[i].xdim, validmode[i].ydim, validmode[i].bpp);
|
||||
j = ComboBox_AddString(hwnd, buf);
|
||||
(void)ComboBox_SetItemData(hwnd, j, i);
|
||||
if (i == mode) (void)ComboBox_SetCurSel(hwnd, j);
|
||||
if (i == mode)(void)ComboBox_SetCurSel(hwnd, j);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -144,7 +144,7 @@ static void PopulateForm(int pgs)
|
|||
Bsprintf(buf, "%s\t%s", grpfiles[i].name, fg->name);
|
||||
j = ListBox_AddString(hwnd, buf);
|
||||
(void)ListBox_SetItemData(hwnd, j, (LPARAM)fg);
|
||||
if (!Bstrcasecmp(fg->name, settings.selectedgrp)) (void)ListBox_SetCurSel(hwnd, j);
|
||||
if (!Bstrcasecmp(fg->name, settings.selectedgrp))(void)ListBox_SetCurSel(hwnd, j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue