git-svn-id: https://svn.eduke32.com/eduke32@1312 1a8010ca-5511-0410-912e-c29ae57300e0

This commit is contained in:
terminx 2009-04-12 21:52:49 +00:00
parent 39b1908be8
commit ec71eebecb
15 changed files with 329 additions and 93 deletions

View file

@ -23,7 +23,7 @@ flags_link=/RELEASE
!endif
DXROOT=c:\sdks\dx6
DXROOT="U:\SDKs\Microsoft DirectX SDK (April 2007)
MSSDKROOT="N:\Program Files\Microsoft Visual Studio 9.0\VC
PLATFORMSDK="N:\Program Files\Microsoft Visual Studio 9.0\VC\PlatformSDK
@ -36,7 +36,7 @@ MT=mt
CFLAGS= /MD /J /nologo $(flags_cl) \
/I$(INC) /I$(EINC)\ /I$(SRC)\jmact /I$(SRC)\jaudiolib /I$(MSSDKROOT)\include" /I$(PLATFORMSDK)\include" \
/DNOCOPYPROTECT /D "_CRT_SECURE_NO_DEPRECATE" -W2 $(ENGINEOPTS) \
/I$(DXROOT)\include /DRENDERTYPEWIN=1
/I$(DXROOT)\include" /DRENDERTYPEWIN=1
LIBS=user32.lib gdi32.lib shell32.lib dxguid.lib winmm.lib wsock32.lib comctl32.lib \
/NODEFAULTLIB:libFLAC.lib /NODEFAULTLIB:glu32.lib /NODEFAULTLIB:LIBCMT.lib /NODEFAULTLIB:LIBCMTD.lib
@ -146,15 +146,15 @@ EDITOROBJS=$(OBJ)\astub.$o \
all: eduke32$(EXESUFFIX) mapster32$(EXESUFFIX) # duke3d_w32$(EXESUFFIX);
eduke32$(EXESUFFIX): $(GAMEOBJS) $(EOBJ)\$(ENGINELIB)
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(MT) -manifest $@.manifest $(RSRC)\manifest.game.xml -hashupdate -outputresource:$@ -out:$@.manifest
mapster32$(EXESUFFIX): $(EDITOROBJS) $(EOBJ)\$(ENGINELIB) $(EOBJ)\$(EDITORLIB)
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(MT) -manifest $@.manifest $(RSRC)\manifest.build.xml -hashupdate -outputresource:$@ -out:$@.manifest
duke3d_w32$(EXESUFFIX): $(OBJ)/wrapper.$o
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(MT) -manifest $@.manifest -outputresource:$@
!include Makefile.deps

View file

@ -19,15 +19,15 @@ asm=masm
ENGINELIB=engine.lib
EDITORLIB=build.lib
DXROOT=c:\sdks\dx6
MSSDKROOT="C:\Program Files\Microsoft Visual Studio 8\VC
PLATFORMSDK="C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK
DXROOT="U:\SDKs\Microsoft DirectX SDK (April 2007)
MSSDKROOT="N:\Program Files\Microsoft Visual Studio 9.0\VC
PLATFORMSDK="N:\Program Files\Microsoft Visual Studio 9.0\VC\PlatformSDK
# ENETROOT=$(SRC)\enet
# /D these to enable certain features of the port's compile process
# NOASM When defined, uses C instead of assembly code
# NOASM When defined, uses C instead of assembly code
!ifdef NOASM
TARGETOPTS=/DNOASM
TARGETOPTS=/DNOASM
!endif
!ifdef DEBUG
@ -45,18 +45,18 @@ CC=cl
AS=ml
RC=rc
LINK=link /opt:nowin98 /opt:ref /nologo
CFLAGS=$(CFLAGS) /nologo /MD /J $(flags_cl) $(TARGETOPTS) /I$(INC) /I$(DXROOT)\include /I$(MSSDKROOT)\include" /I$(PLATFORMSDK)\include" # /I$(ENETROOT)\include"
CFLAGS=$(CFLAGS) /nologo /MD /J $(flags_cl) $(TARGETOPTS) /I$(INC) /I$(DXROOT)\include" /I$(MSSDKROOT)\include" /I$(PLATFORMSDK)\include" # /I$(ENETROOT)\include"
ASFLAGS=/nologo /coff /c
EXESUFFIX=.exe
!ifdef DEBUG
CFLAGS=$(CFLAGS) /DDEBUGGINGAIDS
!endif
ENGINEOBJS= \
!ifdef NOASM
$(OBJ)\a-c.$o \
!else
$(OBJ)\a.$o \
ENGINEOBJS= \
!ifdef NOASM
$(OBJ)\a-c.$o \
!else
$(OBJ)\a.$o \
!endif
$(OBJ)\baselayer.$o \
$(OBJ)\cache1d.$o \
@ -127,23 +127,23 @@ $(OBJ)\$(EDITORLIB): $(EDITOROBJS)
# the tools
kextract$(EXESUFFIX): $(OBJ)\kextract.$o $(OBJ)\compat.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(MT) -manifest $@.manifest -outputresource:$@
kgroup$(EXESUFFIX): $(OBJ)\kgroup.$o $(OBJ)\compat.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(MT) -manifest $@.manifest -outputresource:$@
transpal$(EXESUFFIX): $(OBJ)\transpal.$o $(OBJ)\pragmas.$o $(OBJ)\compat.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(MT) -manifest $@.manifest -outputresource:$@
wad2map$(EXESUFFIX): $(OBJ)\wad2map.$o $(OBJ)\pragmas.$o $(OBJ)\compat.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(MT) -manifest $@.manifest -outputresource:$@
wad2art$(EXESUFFIX): $(OBJ)\wad2art.$o $(OBJ)\pragmas.$o $(OBJ)\compat.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS) msvcrt.lib
$(MT) -manifest $@.manifest -outputresource:$@
# DEPENDENCIES

View file

@ -279,7 +279,7 @@ void polymer_setanimatesprites(animatespritesptr animatesprites,
// CORE
static void polymer_displayrooms(int16_t sectnum);
static void polymer_drawplane(_prplane* plane);
static void polymer_inb4mirror(GLfloat* buffer, GLfloat* plane);
static inline void polymer_inb4mirror(GLfloat* buffer, GLfloat* plane);
static void polymer_animatesprites(void);
// SECTORS
static int32_t polymer_initsector(int16_t sectnum);
@ -295,12 +295,12 @@ static void polymer_updatewall(int16_t wallnum);
static void polymer_drawwall(int16_t sectnum, int16_t wallnum);
// HSR
static void polymer_buffertoplane(GLfloat* buffer, GLushort* indices, int32_t indicecount, GLfloat* plane, GLfloat* t, GLfloat* b, GLfloat* n);
static void polymer_crossproduct(GLfloat* in_a, GLfloat* in_b, GLfloat* out);
static void polymer_transformpoint(float* inpos, float* pos, float* matrix);
static void polymer_pokesector(int16_t sectnum);
static inline void polymer_crossproduct(GLfloat* in_a, GLfloat* in_b, GLfloat* out);
static inline void polymer_transformpoint(float* inpos, float* pos, float* matrix);
static inline void polymer_pokesector(int16_t sectnum);
static void polymer_extractfrustum(GLfloat* modelview, GLfloat* projection, float* frustum);
static int32_t polymer_planeinfrustum(_prplane *plane, float* frustum);
static void polymer_scansprites(int16_t sectnum, spritetype* tsprite, int32_t* spritesortcnt);
static inline void polymer_scansprites(int16_t sectnum, spritetype* tsprite, int32_t* spritesortcnt);
// SKIES
static void polymer_getsky(void);
static void polymer_drawsky(int16_t tilenum);
@ -321,7 +321,7 @@ static void polymer_compileprogram(int32_t programbits);
static void polymer_resetlights(void);
static void polymer_addlight(_prlight light);
static int32_t polymer_planeinlight(_prplane* plane, _prlight* light);
static void polymer_culllight(char lightindex);
static inline void polymer_culllight(char lightindex);
static void polymer_prepareshadows(void);
static void polymer_applylights(void);
// RENDER TARGETS

View file

@ -237,7 +237,7 @@ int32_t baselayer_init(void)
" 2 - Polygonal textured software\n"
#ifdef USE_OPENGL
" 3 - Polygonal OpenGL\n"
// " 4 - great justice renderer\n"
" 4 - Great justice renderer\n"
#endif
,
osdfunc_setrendermode);

View file

@ -5733,8 +5733,8 @@ void uninitengine(void)
Bfree(tsprite);
if (spriteext != NULL)
Bfree(spriteext);
if (spritesmooth != NULL)
Bfree(spritesmooth);
// if (spritesmooth != NULL)
// Bfree(spritesmooth);
#endif
}
@ -6824,8 +6824,8 @@ int32_t loadboard(char *filename, char fromwhere, int32_t *daposx, int32_t *dapo
kclose(fil);
#if defined(POLYMOST) && defined(USE_OPENGL)
memset(spriteext, 0, sizeof(spriteext_t) * MAXSPRITES);
memset(spritesmooth, 0, sizeof(spritesmooth_t) * (MAXSPRITES+MAXUNIQHUDID));
Bmemset(spriteext, 0, sizeof(spriteext_t) * MAXSPRITES);
Bmemset(spritesmooth, 0, sizeof(spritesmooth_t) * (MAXSPRITES+MAXUNIQHUDID));
# ifdef POLYMER
if (rendmode == 4)
@ -7827,10 +7827,7 @@ int32_t setgamemode(char davidoption, int32_t daxdim, int32_t daydim, int32_t da
}
# ifdef POLYMER
if (rendmode == 4)
{
polymer_init();
// polymer_glinit();
}
#endif
#endif
qsetmode = 200;

View file

@ -37,7 +37,7 @@ _prwall *prwalls[MAXWALLS];
_prplane spriteplane;
_prmaterial mdspritematerial;
GLfloat vertsprite[4 * 5] =
static GLfloat vertsprite[4 * 5] =
{
-0.5f, 0.0f, 0.0f,
0.0f, 1.0f,
@ -49,7 +49,7 @@ GLfloat vertsprite[4 * 5] =
0.0f, 0.0f,
};
GLfloat horizsprite[4 * 5] =
static GLfloat horizsprite[4 * 5] =
{
-0.5f, 0.0f, -0.5f,
0.0f, 1.0f,
@ -61,7 +61,7 @@ GLfloat horizsprite[4 * 5] =
0.0f, 0.0f,
};
GLfloat skyboxdata[4 * 5 * 6] =
static GLfloat skyboxdata[4 * 5 * 6] =
{
// -ZY
-0.5f, -0.5f, 0.5f,
@ -142,7 +142,7 @@ int32_t gamelightcount;
_prlight framelights[PR_MAXLIGHTS];
int32_t framelightcount;
GLfloat shadowBias[] =
static GLfloat shadowBias[] =
{
0.5, 0.0, 0.0, 0.0,
0.0, 0.5, 0.0, 0.0,
@ -552,24 +552,13 @@ int32_t polymer_init(void)
if (pr_verbosity >= 1) OSD_Printf("Initalizing Polymer subsystem...\n");
i = 0;
while (i < MAXSECTORS)
{
prsectors[i] = NULL;
i++;
}
i = 0;
while (i < MAXWALLS)
{
prwalls[i] = NULL;
i++;
}
Bmemset(&prsectors[0], sizeof(prsectors[0]) * MAXSECTORS, 0);
Bmemset(&prwalls[0], sizeof(prwalls[0]) * MAXWALLS, 0);
prtess = bgluNewTess();
if (prtess == 0)
{
if (pr_verbosity >= 1) OSD_Printf("PR : Tesselator initialization failed.\n");
OSD_Printf("PR : Tesselator initialization failed.\n");
return (0);
}
@ -892,19 +881,19 @@ void polymer_drawsprite(int32_t snum)
}
if (((tspr->cstat>>4) & 3) == 0)
xratio = (float)(tspr->xrepeat) * 32.0f / 160.0f;
xratio = (float)(tspr->xrepeat) * 0.20f;
else
xratio = (float)(tspr->xrepeat) / 4.0f;
xratio = (float)(tspr->xrepeat) * 0.25f;
yratio = (float)(tspr->yrepeat) / 4.0f;
yratio = (float)(tspr->yrepeat) * 0.25f;
xsize = tilesizx[curpicnum];
ysize = tilesizy[curpicnum];
if (usehightile && h_xsize[curpicnum])
{
xsize = h_xsize[curpicnum];
ysize = h_ysize[curpicnum];
} else {
xsize = tilesizx[curpicnum];
ysize = tilesizy[curpicnum];
}
xsize *= xratio;
@ -1035,6 +1024,13 @@ void polymer_setanimatesprites(animatespritesptr animatesprites,
asi.smoothratio = smoothratio;
}
static int16_t sectorqueue[MAXSECTORS];
static int16_t querydelay[MAXSECTORS];
static GLuint queryid[MAXWALLS];
static int16_t drawingstate[MAXSECTORS];
static spritetype localtsprite[MAXSPRITESONSCREEN];
static int16_t localmaskwall[MAXWALLSB];
// CORE
static void polymer_displayrooms(int16_t dacursectnum)
{
@ -1044,16 +1040,11 @@ static void polymer_displayrooms(int16_t dacursectnum)
int16_t doquery;
int32_t front;
int32_t back;
int16_t sectorqueue[MAXSECTORS];
int16_t querydelay[MAXSECTORS];
GLuint queryid[MAXWALLS];
int16_t drawingstate[MAXSECTORS];
GLfloat localmodelviewmatrix[16];
GLfloat localprojectionmatrix[16];
float frustum[5 * 4];
int32_t localspritesortcnt;
spritetype localtsprite[MAXSPRITESONSCREEN];
int16_t localmaskwall[MAXWALLSB], localmaskwallcnt;
int16_t localmaskwallcnt;
_prmirror mirrorlist[10];
int mirrorcount;
int32_t gx, gy, gz, px, py, pz;
@ -1423,7 +1414,7 @@ static void polymer_drawplane(_prplane* plane)
plane->drawn = 1;
}
static void polymer_inb4mirror(GLfloat* buffer, GLfloat* plane)
static inline void polymer_inb4mirror(GLfloat* buffer, GLfloat* plane)
{
float pv;
float reflectionmatrix[16];
@ -2406,7 +2397,7 @@ static void polymer_buffertoplane(GLfloat* buffer, GLushort* indices, in
norm = plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2];
if (norm >= 15000) // hack to work around a precision issue with slopes
if (norm >= 5000) // hack to work around a precision issue with slopes
{
// normalize the normal/plane equation and calculate its plane norm
norm = -sqrt(norm);
@ -2476,14 +2467,14 @@ static void polymer_buffertoplane(GLfloat* buffer, GLushort* indices, in
while (i < indicecount);
}
static void polymer_crossproduct(GLfloat* in_a, GLfloat* in_b, GLfloat* out)
static inline void polymer_crossproduct(GLfloat* in_a, GLfloat* in_b, GLfloat* out)
{
out[0] = in_a[1] * in_b[2] - in_a[2] * in_b[1];
out[1] = in_a[2] * in_b[0] - in_a[0] * in_b[2];
out[2] = in_a[0] * in_b[1] - in_a[1] * in_b[0];
}
static void polymer_transformpoint(float* inpos, float* pos, float* matrix)
static inline void polymer_transformpoint(float* inpos, float* pos, float* matrix)
{
pos[0] = inpos[0] * matrix[0] +
inpos[1] * matrix[4] +
@ -2499,7 +2490,7 @@ static void polymer_transformpoint(float* inpos, float* pos, float* matr
+ matrix[14];
}
static void polymer_pokesector(int16_t sectnum)
static inline void polymer_pokesector(int16_t sectnum)
{
sectortype *sec;
_prsector *s;
@ -2580,7 +2571,7 @@ static int32_t polymer_planeinfrustum(_prplane *plane, float* frustum)
return (1);
}
static void polymer_scansprites(int16_t sectnum, spritetype* localtsprite, int32_t* localspritesortcnt)
static inline void polymer_scansprites(int16_t sectnum, spritetype* localtsprite, int32_t* localspritesortcnt)
{
int32_t i;
spritetype *spr;
@ -3803,7 +3794,7 @@ static int32_t polymer_planeinlight(_prplane* plane, _prlight* light)
return 1;
}
static void polymer_culllight(char lightindex)
static inline void polymer_culllight(char lightindex)
{
_prlight* light;
int32_t front;

View file

@ -2680,8 +2680,88 @@ static void G_MoveWeapons(void)
switch (DynamicTileMap[s->picnum])
{
case FREEZEBLAST__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = 2048;
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 128;
gamelights[gamelightcount].color[1] = 128;
gamelights[gamelightcount].color[2] = 255;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
break;
case COOLEXPLOSION1__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = 3072;
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 128;
gamelights[gamelightcount].color[1] = 0;
gamelights[gamelightcount].color[2] = 255;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
break;
case SHRINKSPARK__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = tilesizx[s->picnum]*tilesizy[s->picnum];
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 128;
gamelights[gamelightcount].color[1] = 255;
gamelights[gamelightcount].color[2] = 128;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
break;
case RPG__STATIC:
if (ActorExtra[i].picnum != BOSS2 && s->xrepeat >= 10 && sector[s->sectnum].lotag != 2)
case FIRELASER__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = tilesizx[s->picnum]*tilesizy[s->picnum];
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 255;
gamelights[gamelightcount].color[1] = 80;
gamelights[gamelightcount].color[2] = 0;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
if (DynamicTileMap[s->picnum] == RPG__STATIC && ActorExtra[i].picnum != BOSS2 &&
s->xrepeat >= 10 && sector[s->sectnum].lotag != 2)
{
j = A_Spawn(i,SMALLSMOKE);
sprite[j].z += (1<<8);
@ -3323,6 +3403,47 @@ static void G_MoveActors(void)
}
switch (DynamicTileMap[switchpicnum])
{
case ATOMICHEALTH__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = 2048;
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 128;
gamelights[gamelightcount].color[1] = 128;
gamelights[gamelightcount].color[2] = 255;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
break;
case FIRE__STATIC:
case FIRE2__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = tilesizx[s->picnum]*tilesizy[s->picnum];
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 255;
gamelights[gamelightcount].color[1] = 80;
gamelights[gamelightcount].color[2] = 0;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
break;
case DUCK__STATIC:
case TARGET__STATIC:
if (s->cstat&32)
@ -5063,11 +5184,77 @@ static void G_MoveMisc(void) // STATNUM 5
case FORCERIPPLE__STATIC:
case TRANSPORTERSTAR__STATIC:
case TRANSPORTERBEAM__STATIC:
{
switch (DynamicTileMap[switchpicnum])
{
case BURNING__STATIC:
case BURNING2__STATIC:
case EXPLOSION2__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = tilesizx[s->picnum]*tilesizy[s->picnum];
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 255;
gamelights[gamelightcount].color[1] = 80;
gamelights[gamelightcount].color[2] = 0;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
break;
case FORCERIPPLE__STATIC:
case TRANSPORTERSTAR__STATIC:
case TRANSPORTERBEAM__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = tilesizx[s->picnum]*tilesizy[s->picnum];
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 80;
gamelights[gamelightcount].color[1] = 80;
gamelights[gamelightcount].color[2] = 255;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
break;
case SHRINKEREXPLOSION__STATIC:
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z;
gamelights[gamelightcount].range = tilesizx[s->picnum]*tilesizy[s->picnum];
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 128;
gamelights[gamelightcount].color[1] = 255;
gamelights[gamelightcount].color[2] = 128;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
break;
}
if (!actorscrptr[sprite[i].picnum])
goto BOLT;
p = A_FindPlayer(s,&x);
A_Execute(i,p,x);
goto BOLT;
}
case SHELL__STATIC:
case SHOTGUNSHELL__STATIC:
@ -7612,8 +7799,6 @@ int32_t A_CheckSwitchTile(int32_t i)
void G_MoveWorld(void)
{
gamelightcount = 0;
G_MoveZombieActors(); //ST 2
G_MoveWeapons(); //ST 4
G_MoveTransports(); //ST 9

View file

@ -228,7 +228,7 @@ void G_PlayAnim(const char *fn,char t)
walock[TILE_ANIM] = 219+t;
allocache((intptr_t *)&animbuf,length,&walock[TILE_ANIM]);
allocache((intptr_t *)&animbuf,length+1,&walock[TILE_ANIM]);
tilesizx[TILE_ANIM] = 200;
tilesizy[TILE_ANIM] = 320;

View file

@ -52,7 +52,7 @@ extern "C" {
#include "macros.h"
#define APPNAME "EDuke32"
#define VERSION " 1.5.0devel"
#define VERSION " 2.0.0devel"
// this is checked against http://eduke32.com/VERSION
extern const char *s_buildDate;
#define HEAD2 APPNAME VERSION

View file

@ -7369,6 +7369,7 @@ PALONLY:
case FLOORFLAME__STATIC:
#ifdef POLYMER
/*
framelights[framelightcount].radius = 0;
framelights[framelightcount].sector = t->sectnum;
@ -7401,6 +7402,7 @@ PALONLY:
}
framelightcount++;
*/
#endif
if (t->picnum == EXPLOSION2)
{
@ -7418,6 +7420,7 @@ PALONLY:
t->z = sector[t->sectnum].floorz;
t->shade = -127;
#ifdef POLYMER
/*
framelights[framelightcount].radius = 0;
framelights[framelightcount].sector = t->sectnum;
@ -7435,12 +7438,14 @@ PALONLY:
framelights[framelightcount].priority = 0;
framelightcount++;
*/
#endif
break;
case COOLEXPLOSION1__STATIC:
t->shade = -127;
t->picnum += (s->shade>>1);
#ifdef POLYMER
/*
framelights[framelightcount].radius = 0;
framelights[framelightcount].sector = t->sectnum;
@ -7458,6 +7463,7 @@ PALONLY:
framelights[framelightcount].priority = 0;
framelightcount++;
*/
#endif
break;
case PLAYERONWATER__STATIC:
@ -8441,11 +8447,13 @@ static void G_HandleLocalKeys(void)
if (i == 5 && g_player[myconnectindex].ps->fta > 0 && g_player[myconnectindex].ps->ftq == 26)
{
i = (VOLUMEALL?MAXVOLUMES*MAXLEVELS:6);
g_musicIndex++;
while ((MapInfo[(uint8_t)g_musicIndex].musicfn == NULL) && g_musicIndex < i)
g_musicIndex = (g_musicIndex+1)%i;
while (MapInfo[(uint8_t)g_musicIndex].musicfn == NULL)
{
g_musicIndex++;
if (g_musicIndex == i)
g_musicIndex = 0;
if (g_musicIndex >= i)
g_musicIndex = 0;
}
if (MapInfo[(uint8_t)g_musicIndex].musicfn != NULL)
{
if (S_PlayMusic(&MapInfo[(uint8_t)g_musicIndex].musicfn[0],g_musicIndex))
@ -12803,6 +12811,8 @@ static int32_t G_DoMoveThings(void)
if (ud.recstat == 1) G_DemoRecord();
gamelightcount = 0;
if (ud.pause_on == 0)
{
g_globalRandom = krand();

View file

@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//-------------------------------------------------------------------------
#include "duke3d.h"
const char *s_buildDate = "20090313";
const char *s_buildDate = "20090412";
char *MusicPtr = NULL;
int32_t g_musicSize;

View file

@ -32,6 +32,7 @@ Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
#include "mpu401.h"
#include "compat.h"
#include "osd.h"
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
@ -51,7 +52,7 @@ MIDIEVENTHEAD;
#define PAD(x) ((((x)+3)&(~3)))
#define BUFFERLEN (32*4*4)
#define NUMBUFFERS 6
#define NUMBUFFERS 8
static char eventbuf[NUMBUFFERS][BUFFERLEN];
static int32_t eventcnt[NUMBUFFERS];
static MIDIHDR bufferheaders[NUMBUFFERS];
@ -91,7 +92,7 @@ void MPU_FinishBuffer(int32_t buffer)
bufferheaders[buffer].dwBytesRecorded = eventcnt[buffer];
midiOutPrepareHeader((HMIDIOUT)hmido, &bufferheaders[buffer], sizeof(MIDIHDR));
midiStreamOut(hmido, &bufferheaders[buffer], sizeof(MIDIHDR));
// printf("Sending %d bytes (buffer %d)\n",eventcnt[buffer],buffer);
// OSD_Printf("Sending %d bytes (buffer %d)\n",eventcnt[buffer],buffer);
_MPU_BuffersWaiting++;
}
@ -128,7 +129,7 @@ void CALLBACK MPU_MIDICallback(HMIDIOUT handle, UINT uMsg, DWORD dwInstance, DWO
if (dwParam1 == (uint32_t)&bufferheaders[i])
{
eventcnt[i] = 0; // marks the buffer as free
// printf("Finished buffer %d\n",i);
// OSD_Printf("Finished buffer %d\n",i);
_MPU_BuffersWaiting--;
break;
}
@ -171,7 +172,7 @@ void MPU_SendMidi(char *data, int32_t count)
nextbuffer = MPU_GetNextBuffer();
if (nextbuffer < 0)
{
// printf("All buffers full!\n");
// OSD_Printf("All buffers full!\n");
return;
}
MPU_FinishBuffer(_MPU_CurrentBuffer);
@ -193,7 +194,7 @@ void MPU_SendMidi(char *data, int32_t count)
nextbuffer = MPU_GetNextBuffer();
if (nextbuffer < 0)
{
// printf("All buffers full!\n");
// OSD_Printf("All buffers full!\n");
return;
}
MPU_FinishBuffer(_MPU_CurrentBuffer);

View file

@ -2111,8 +2111,50 @@ void P_FireWeapon(DukePlayer_t *p)
if (!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_NOVISIBLE))
{
spritetype *s = &sprite[p->i];
lastvisinc = totalclock+32;
p->visibility = 0;
gamelights[gamelightcount].radius = 0;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x;
gamelights[gamelightcount].y = s->y;
gamelights[gamelightcount].z = s->z-PHEIGHT;
gamelights[gamelightcount].range = 4096;
gamelights[gamelightcount].range -= rand()%((gamelights[gamelightcount].range>>3)+1);
gamelights[gamelightcount].color[0] = 255;
gamelights[gamelightcount].color[1] = 80;
gamelights[gamelightcount].color[2] = 0;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
gamelights[gamelightcount].sector = s->sectnum;
gamelights[gamelightcount].x = s->x+((sintable[(p->ang+512)&2047])>>5);
gamelights[gamelightcount].y = s->y+((sintable[(p->ang)&2047])>>5);
gamelights[gamelightcount].z = s->z-PHEIGHT;
gamelights[gamelightcount].range = 8192;
gamelights[gamelightcount].angle = (s->ang+1024)&2047;
gamelights[gamelightcount].horiz = 100;
gamelights[gamelightcount].radius = 256;
gamelights[gamelightcount].faderadius = 200;
gamelights[gamelightcount].color[0] = 255;
gamelights[gamelightcount].color[1] = 80;
gamelights[gamelightcount].color[2] = 0;
gamelights[gamelightcount].priority = 0;
gamelightcount++;
}
/* if( //!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_CHECKATRELOAD) &&

View file

@ -214,7 +214,7 @@ void S_MenuSound(void)
void _playmusic(const char *fn)
{
int32_t fp, l;
int32_t fp, l, i;
if (fn == NULL) return;
@ -223,18 +223,27 @@ void _playmusic(const char *fn)
fp = kopen4loadfrommod((char *)fn,0);
if (fp == -1) return;
if (fp == -1)
{
OSD_Printf(OSD_ERROR "S_PlayMusic(): error: can't open '%s' for playback!",fn);
return;
}
l = kfilelength(fp);
MUSIC_StopSong();
if (!MusicPtr) MusicPtr = Bcalloc(1, l);
else MusicPtr = Brealloc(MusicPtr, l);
MusicPtr = Brealloc(MusicPtr, l);
if ((i = kread(fp, (char *)MusicPtr, l)) != l)
{
OSD_Printf(OSD_ERROR "S_PlayMusic(): error: read %d bytes from '%s', needed %d\n",i, fn, l);
kclose(fp);
return;
}
kclose(fp);
g_musicSize=l;
kread(fp, (char *)MusicPtr, l);
kclose(fp);
// FIXME: I need this to get the music volume initialized (not sure why) -- Jim Bentler
MUSIC_SetVolume(ud.config.MusicVolume);
MUSIC_PlaySong((char *)MusicPtr, MUSIC_LoopSong);

View file

@ -197,6 +197,7 @@ char Net_RandomSync(void)
updatecrc(crc,Net_PlayerSync2() & 255);
updatecrc(crc,Net_WeaponSync() & 255);
updatecrc(crc,Net_ActorSync() & 255);
updatecrc(crc,Net_MapSync() & 255);
}
return ((uint8_t) crc & 255);