mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-10 23:02:03 +00:00
Emit RPG_EXPLODE, PIPEBOMB_EXPODE and LASERTRIP_EXPLODE from the actual EXPLOSION2 sprite instead of whatever spawned EXPLOSION2, to prevent the sound from being owned by whatever sprite happens to spawn with the ID the RPG/pipebomb/whatever had before it was removed
Add brightness/gamma/contrast cvars to Mapster32 Fix bug with WEAPON_SEMIAUTO flag for custom weapons Fix VM error with starttrack when specifying an invalid music track Fix detection of 0x1a EOF characters in CON files Fix a couple of additional sound issues Fix crash in pushmove() Fix Mapster32 textured 2D mode display being a few pixels off from the actual lines drawn Fix crash when clicking "cancel" in Mapster32 startup window Add Makefile detection to build with -march=pentium3 -mtune=generic on i686 git-svn-id: https://svn.eduke32.com/eduke32@1665 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
a346acfccb
commit
013ac85e2d
21 changed files with 221 additions and 335 deletions
|
@ -44,14 +44,16 @@ o=o
|
||||||
|
|
||||||
ifneq (0,$(RELEASE))
|
ifneq (0,$(RELEASE))
|
||||||
# Debugging disabled
|
# Debugging disabled
|
||||||
debug=-fomit-frame-pointer -funswitch-loops -O$(OPTLEVEL)
|
debug=-fomit-frame-pointer -funswitch-loops -O$(OPTLEVEL) -fno-stack-protector
|
||||||
|
LIBS=-lm
|
||||||
else
|
else
|
||||||
# Debugging enabled
|
# Debugging enabled
|
||||||
debug=-ggdb -O0 -DDEBUGGINGAIDS
|
debug=-ggdb -O0 -DDEBUGGINGAIDS -fstack-protector-all
|
||||||
ifneq (0,$(KRANDDEBUG))
|
LIBS=-lm -lssp -Wl,--enable-auto-import
|
||||||
debug+=-fno-inline -fno-inline-functions -fno-inline-functions-called-once
|
ifneq (0,$(KRANDDEBUG))
|
||||||
debug+=-DKRANDDEBUG=1
|
debug+=-fno-inline -fno-inline-functions -fno-inline-functions-called-once
|
||||||
endif
|
debug+=-DKRANDDEBUG=1
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (0,$(DEBUGANYWAY))
|
ifneq (0,$(DEBUGANYWAY))
|
||||||
|
@ -70,30 +72,12 @@ AS=nasm
|
||||||
RC=windres
|
RC=windres
|
||||||
STRIP=strip
|
STRIP=strip
|
||||||
|
|
||||||
GCC_MAJOR := $(shell $(CC) -dumpversion 2>&1 | cut -d'.' -f1)
|
|
||||||
GCC_MINOR := $(shell $(CC) -dumpversion 2>&1 | cut -d'.' -f2)
|
|
||||||
|
|
||||||
ifeq (4,$(GCC_MAJOR))
|
|
||||||
ifneq (0,$(GCC_MINOR))
|
|
||||||
# debug += -ftree-vectorize
|
|
||||||
ifneq (1,$(GCC_MINOR))
|
|
||||||
ifneq (2,$(GCC_MINOR))
|
|
||||||
# debug += -finline-small-functions -fpredictive-commoning
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq (5,$(GCC_MINOR))
|
|
||||||
# debug += -flto
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \
|
OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \
|
||||||
-funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS \
|
-funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS \
|
||||||
-I$(INC) -I$(EINC) -I$(SRC)/jmact -I$(JAUDIOLIBDIR)/include -I$(ENETDIR)/include -D_FORTIFY_SOURCE=2 \
|
-I$(INC) -I$(EINC) -I$(SRC)/jmact -I$(JAUDIOLIBDIR)/include -I$(ENETDIR)/include -D_FORTIFY_SOURCE=2 \
|
||||||
-fjump-tables -fno-stack-protector
|
-fjump-tables $(ARCH)
|
||||||
# -march=pentium3 -mtune=generic -mmmx -m3dnow -msse -mfpmath=sse
|
|
||||||
OURCXXFLAGS=-fno-exceptions -fno-rtti
|
OURCXXFLAGS=-fno-exceptions -fno-rtti
|
||||||
LIBS=-lm
|
|
||||||
|
|
||||||
NASMFLAGS = -s
|
NASMFLAGS = -s
|
||||||
EXESUFFIX=
|
EXESUFFIX=
|
||||||
|
@ -244,7 +228,7 @@ endif
|
||||||
|
|
||||||
mapster32$(EXESUFFIX): $(EDITOROBJS) $(EOBJ)/$(EDITORLIB) $(EOBJ)/$(ENGINELIB) $(JAUDIOLIBDIR)/$(JAUDIOLIB) $(ENETDIR)/$(ENETLIB)
|
mapster32$(EXESUFFIX): $(EDITOROBJS) $(EOBJ)/$(EDITORLIB) $(EOBJ)/$(ENGINELIB) $(JAUDIOLIBDIR)/$(JAUDIOLIB) $(ENETDIR)/$(ENETLIB)
|
||||||
$(LINK_STATUS)
|
$(LINK_STATUS)
|
||||||
if $(CC) $(CFLAGS) $(OURCFLAGS) -o $@ $^ $(LIBS) $(STDCPPLIB); then $(LINK_OK); else $(LINK_FAILED); fi
|
if $(CC) $(CFLAGS) $(OURCFLAGS) -o $@ $^ $(LIBS) $(STDCPPLIB) $(MISCLINKOPTS); then $(LINK_OK); else $(LINK_FAILED); fi
|
||||||
ifeq (1,$(RELEASE))
|
ifeq (1,$(RELEASE))
|
||||||
ifeq (0,$(DEBUGANYWAY))
|
ifeq (0,$(DEBUGANYWAY))
|
||||||
$(STRIP) mapster32$(EXESUFFIX)
|
$(STRIP) mapster32$(EXESUFFIX)
|
||||||
|
|
|
@ -70,14 +70,16 @@ asm=nasm
|
||||||
# Debugging and release
|
# Debugging and release
|
||||||
#
|
#
|
||||||
ifneq ($(RELEASE),0)
|
ifneq ($(RELEASE),0)
|
||||||
# Debugging disabled
|
# Debugging disabled
|
||||||
debug=-fomit-frame-pointer -funswitch-loops -O$(OPTLEVEL)
|
debug=-fomit-frame-pointer -funswitch-loops -O$(OPTLEVEL) -fno-stack-protector
|
||||||
|
LIBS=-lm
|
||||||
else
|
else
|
||||||
# Debugging enabled
|
# Debugging enabled
|
||||||
debug=-ggdb -O0 -DDEBUGGINGAIDS -DNOSDLPARACHUTE
|
debug=-ggdb -O0 -DDEBUGGINGAIDS -DNOSDLPARACHUTE -fstack-protector-all
|
||||||
ifneq (0,$(KRANDDEBUG))
|
LIBS=-lm -lssp -Wl,--enable-auto-import
|
||||||
debug+=-DKRANDDEBUG=1
|
ifneq (0,$(KRANDDEBUG))
|
||||||
endif
|
debug+=-DKRANDDEBUG=1
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (0,$(DEBUGANYWAY))
|
ifneq (0,$(DEBUGANYWAY))
|
||||||
|
@ -91,31 +93,11 @@ RC=windres
|
||||||
AR=ar
|
AR=ar
|
||||||
RANLIB=ranlib
|
RANLIB=ranlib
|
||||||
|
|
||||||
GCC_MAJOR := $(shell $(CC) -dumpversion 2>&1 | cut -d'.' -f1)
|
|
||||||
GCC_MINOR := $(shell $(CC) -dumpversion 2>&1 | cut -d'.' -f2)
|
|
||||||
|
|
||||||
ifeq (4,$(GCC_MAJOR))
|
|
||||||
# debug += -ftree-vectorize
|
|
||||||
ifneq (0,$(GCC_MINOR))
|
|
||||||
ifneq (1,$(GCC_MINOR))
|
|
||||||
ifneq (2,$(GCC_MINOR))
|
|
||||||
# this should only enable for 4.3.0 and later
|
|
||||||
# debug += -finline-small-functions -fpredictive-commoning
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq (5,$(GCC_MINOR))
|
|
||||||
# debug += -flto
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \
|
OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \
|
||||||
-Wno-char-subscripts -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS \
|
-Wno-char-subscripts -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS \
|
||||||
-DKSFORBUILD -I$(INC) -D_FORTIFY_SOURCE=2 \
|
-DKSFORBUILD -I$(INC) -D_FORTIFY_SOURCE=2 \
|
||||||
-fjump-tables -fno-stack-protector
|
-fjump-tables $(ARCH)
|
||||||
# -march=pentium3 -mtune=generic -mmmx -m3dnow -msse -mfpmath=sse
|
|
||||||
OURCXXFLAGS=-fno-exceptions -fno-rtti
|
OURCXXFLAGS=-fno-exceptions -fno-rtti
|
||||||
LIBS=
|
|
||||||
ASFLAGS=-s #-g
|
ASFLAGS=-s #-g
|
||||||
EXESUFFIX=
|
EXESUFFIX=
|
||||||
|
|
||||||
|
@ -171,7 +153,6 @@ EDITOROBJS=$(OBJ)/build.$o \
|
||||||
|
|
||||||
ifeq ($(PLATFORM),LINUX)
|
ifeq ($(PLATFORM),LINUX)
|
||||||
ASFLAGS+= -f elf
|
ASFLAGS+= -f elf
|
||||||
LIBS+= -lm
|
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),DARWIN)
|
ifeq ($(PLATFORM),DARWIN)
|
||||||
ENGINEOBJS += $(OBJ)/StartupWinController.editor.$o \
|
ENGINEOBJS += $(OBJ)/StartupWinController.editor.$o \
|
||||||
|
@ -183,20 +164,16 @@ endif
|
||||||
ifeq ($(PLATFORM),BSD)
|
ifeq ($(PLATFORM),BSD)
|
||||||
ASFLAGS+= -f elf
|
ASFLAGS+= -f elf
|
||||||
OURCFLAGS+= -I/usr/X11R6/include
|
OURCFLAGS+= -I/usr/X11R6/include
|
||||||
LIBS+= -lm
|
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),WINDOWS)
|
ifeq ($(PLATFORM),WINDOWS)
|
||||||
OURCFLAGS+= -DUNDERSCORES -I$(DXROOT)/include -I$(FMODROOTWIN)/inc # -I$(ENETROOT)/include
|
OURCFLAGS+= -DUNDERSCORES -I$(DXROOT)/include -I$(FMODROOTWIN)/inc # -I$(ENETROOT)/include
|
||||||
LIBS+= -lm -lwsock32 -lws2_32 -lwinmm #-L$(ENETROOT)
|
LIBS+= -lwsock32 -lws2_32 -lwinmm #-L$(ENETROOT)
|
||||||
ASFLAGS+= -DUNDERSCORES -f win32
|
ASFLAGS+= -DUNDERSCORES -f win32
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),BEOS)
|
ifeq ($(PLATFORM),BEOS)
|
||||||
ASFLAGS+= -f elf
|
ASFLAGS+= -f elf
|
||||||
TARGETOPTS+= -DNOASM
|
TARGETOPTS+= -DNOASM
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),SUNOS)
|
|
||||||
LIBS+= -lm
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM),SYLLABLE)
|
ifeq ($(PLATFORM),SYLLABLE)
|
||||||
ASFLAGS+= -f elf
|
ASFLAGS+= -f elf
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -16,9 +16,16 @@ SDL_FRAMEWORK = 0
|
||||||
|
|
||||||
# Overridden for OSes that don't have the cutdown stdc++ that is supc++
|
# Overridden for OSes that don't have the cutdown stdc++ that is supc++
|
||||||
STDCPPLIB=-lsupc++
|
STDCPPLIB=-lsupc++
|
||||||
|
|
||||||
BUILDCFLAGS=
|
BUILDCFLAGS=
|
||||||
|
|
||||||
|
ifndef ARCH
|
||||||
|
ifeq ($(findstring i686, $(shell uname -m)), i686)
|
||||||
|
ARCH=-march=pentium3 -mtune=generic -mmmx # -msse2 -mfpmath=sse,387 -malign-double -mstackrealign
|
||||||
|
else
|
||||||
|
ARCH=
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Detect the platform if it wasn't explicitly given to us from
|
# Detect the platform if it wasn't explicitly given to us from
|
||||||
# the outside world. This allows cross-compilation by overriding
|
# the outside world. This allows cross-compilation by overriding
|
||||||
# CC and giving us PLATFORM specifically.
|
# CC and giving us PLATFORM specifically.
|
||||||
|
|
|
@ -149,12 +149,14 @@ void showframe(int32_t);
|
||||||
int32_t setpalette(int32_t start, int32_t num);
|
int32_t setpalette(int32_t start, int32_t num);
|
||||||
//int32_t getpalette(int32_t start, int32_t num, char *dapal);
|
//int32_t getpalette(int32_t start, int32_t num, char *dapal);
|
||||||
int32_t setgamma(void);
|
int32_t setgamma(void);
|
||||||
double vid_gamma, vid_contrast, vid_brightness;
|
extern double vid_gamma, vid_contrast, vid_brightness;
|
||||||
|
|
||||||
#define DEFAULT_GAMMA 1.0
|
#define DEFAULT_GAMMA 1.0
|
||||||
#define DEFAULT_CONTRAST 1.0
|
#define DEFAULT_CONTRAST 1.0
|
||||||
#define DEFAULT_BRIGHTNESS 0.0
|
#define DEFAULT_BRIGHTNESS 0.0
|
||||||
|
|
||||||
|
#define GAMMA_CALC (int32_t)(min(max((float)((vid_gamma-1.0)*10.0),0),15))
|
||||||
|
|
||||||
int32_t switchrendermethod(int32_t,int32_t); // 0 = software, 1 = opengl | bool = reinit
|
int32_t switchrendermethod(int32_t,int32_t); // 0 = software, 1 = opengl | bool = reinit
|
||||||
|
|
||||||
int32_t wm_msgbox(char *name, char *fmt, ...);
|
int32_t wm_msgbox(char *name, char *fmt, ...);
|
||||||
|
|
|
@ -25,6 +25,8 @@ void(*keypresscallback)(int32_t,int32_t) = 0;
|
||||||
void(*mousepresscallback)(int32_t,int32_t) = 0;
|
void(*mousepresscallback)(int32_t,int32_t) = 0;
|
||||||
void(*joypresscallback)(int32_t,int32_t) = 0;
|
void(*joypresscallback)(int32_t,int32_t) = 0;
|
||||||
|
|
||||||
|
extern int16_t brightness;
|
||||||
|
|
||||||
//
|
//
|
||||||
// set{key|mouse|joy}presscallback() -- sets a callback which gets notified when keys are pressed
|
// set{key|mouse|joy}presscallback() -- sets a callback which gets notified when keys are pressed
|
||||||
//
|
//
|
||||||
|
@ -270,25 +272,37 @@ int32_t osdcmd_glinfo(const osdfuncparm_t *parm)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int32_t osdcmd_vars(const osdfuncparm_t *parm)
|
static int32_t osdcmd_cvar_set_baselayer(const osdfuncparm_t *parm)
|
||||||
{
|
{
|
||||||
int32_t showval = (parm->numparms < 1);
|
int32_t r = osdcmd_cvar_set(parm);
|
||||||
|
|
||||||
if (!Bstrcasecmp(parm->name, "r_scrcaptureformat"))
|
if (r != OSDCMD_OK) return r;
|
||||||
{
|
|
||||||
const char *fmts[] = {"TGA", "PCX"};
|
/*
|
||||||
if (showval) { OSD_Printf("r_scrcaptureformat is %s\n", fmts[captureformat]); }
|
if (!Bstrcasecmp(parm->name, "r_scrcaptureformat"))
|
||||||
else
|
|
||||||
{
|
{
|
||||||
int32_t j;
|
const char *fmts[] = {"TGA", "PCX"};
|
||||||
for (j=0; j<2; j++)
|
if (showval) { OSD_Printf("r_scrcaptureformat is %s\n", fmts[captureformat]); }
|
||||||
if (!Bstrcasecmp(parm->parms[0], fmts[j])) break;
|
else
|
||||||
if (j == 2) return OSDCMD_SHOWHELP;
|
{
|
||||||
captureformat = j;
|
int32_t j;
|
||||||
|
for (j=0; j<2; j++)
|
||||||
|
if (!Bstrcasecmp(parm->parms[0], fmts[j])) break;
|
||||||
|
if (j == 2) return OSDCMD_SHOWHELP;
|
||||||
|
captureformat = j;
|
||||||
|
}
|
||||||
|
return OSDCMD_OK;
|
||||||
}
|
}
|
||||||
return OSDCMD_OK;
|
else */
|
||||||
|
|
||||||
|
if (!Bstrcasecmp(parm->name, "vid_gamma") || !Bstrcasecmp(parm->name, "vid_brightness") || !Bstrcasecmp(parm->name, "vid_contrast"))
|
||||||
|
{
|
||||||
|
setbrightness(GAMMA_CALC,palette,0);
|
||||||
|
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
return OSDCMD_SHOWHELP;
|
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t baselayer_init(void)
|
int32_t baselayer_init(void)
|
||||||
|
@ -300,7 +314,10 @@ int32_t baselayer_init(void)
|
||||||
#ifdef SUPERBUILD
|
#ifdef SUPERBUILD
|
||||||
{ "r_novoxmips","r_novoxmips: turn off/on the use of mipmaps when rendering 8-bit voxels",(void *)&novoxmips, CVAR_BOOL, 0, 1 },
|
{ "r_novoxmips","r_novoxmips: turn off/on the use of mipmaps when rendering 8-bit voxels",(void *)&novoxmips, CVAR_BOOL, 0, 1 },
|
||||||
{ "r_voxels","r_voxels: enable/disable automatic sprite->voxel rendering",(void *)&usevoxels, CVAR_BOOL, 0, 1 },
|
{ "r_voxels","r_voxels: enable/disable automatic sprite->voxel rendering",(void *)&usevoxels, CVAR_BOOL, 0, 1 },
|
||||||
{ "r_scrcaptureformat","r_scrcaptureformat: sets the output format for screenshots (TGA or PCX)",osdcmd_vars, CVAR_FUNCPTR, 0, 0 },
|
/* { "r_scrcaptureformat","r_scrcaptureformat: sets the output format for screenshots (TGA or PCX)",osdcmd_vars, CVAR_FUNCPTR, 0, 0 },*/
|
||||||
|
{ "vid_gamma","vid_gamma <gamma>: adjusts gamma ramp",(void *)&vid_gamma, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 },
|
||||||
|
{ "vid_contrast","vid_contrast <gamma>: adjusts gamma ramp",(void *)&vid_contrast, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 },
|
||||||
|
{ "vid_brightness","vid_brightness <gamma>: adjusts gamma ramp",(void *)&vid_brightness, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 },
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -310,7 +327,7 @@ int32_t baselayer_init(void)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
OSD_RegisterFunction(cvars_engine[i].name, cvars_engine[i].helpstr,
|
OSD_RegisterFunction(cvars_engine[i].name, cvars_engine[i].helpstr,
|
||||||
cvars_engine[i].type == CVAR_FUNCPTR ? cvars_engine[i].var : osdcmd_cvar_set);
|
(cvars_engine[i].type & CVAR_FUNCPTR) ? osdcmd_cvar_set_baselayer : osdcmd_cvar_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef POLYMOST
|
#ifdef POLYMOST
|
||||||
|
|
|
@ -93,7 +93,6 @@ int32_t forcesetup = 1;
|
||||||
extern int32_t cachesize, artsize;
|
extern int32_t cachesize, artsize;
|
||||||
|
|
||||||
static int16_t oldmousebstatus = 0;
|
static int16_t oldmousebstatus = 0;
|
||||||
int16_t brightness = 0;
|
|
||||||
char game_executable[BMAX_PATH] = DEFAULT_GAME_LOCAL_EXEC;
|
char game_executable[BMAX_PATH] = DEFAULT_GAME_LOCAL_EXEC;
|
||||||
int32_t zlock = 0x7fffffff, zmode = 0, whitecol, kensplayerheight = 32;
|
int32_t zlock = 0x7fffffff, zmode = 0, whitecol, kensplayerheight = 32;
|
||||||
int16_t defaultspritecstat = 0;
|
int16_t defaultspritecstat = 0;
|
||||||
|
@ -287,7 +286,7 @@ static int32_t osdcmd_vidmode(const osdfuncparm_t *parm)
|
||||||
|
|
||||||
begindrawing(); //{{{
|
begindrawing(); //{{{
|
||||||
|
|
||||||
CLEARLINES2D(0, ydim16+STATUS2DSIZ, 0);
|
CLEARLINES2D(0, ydim16, 0);
|
||||||
|
|
||||||
ydim16 = ydim;
|
ydim16 = ydim;
|
||||||
// drawline16(0,ydim-STATUS2DSIZ,xdim-1,ydim-STATUS2DSIZ,editorcolors[1]);
|
// drawline16(0,ydim-STATUS2DSIZ,xdim-1,ydim-STATUS2DSIZ,editorcolors[1]);
|
||||||
|
@ -418,7 +417,11 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
#if defined RENDERTYPEWIN || (defined RENDERTYPESDL && !defined __APPLE__ && defined HAVE_GTK2)
|
#if defined RENDERTYPEWIN || (defined RENDERTYPESDL && !defined __APPLE__ && defined HAVE_GTK2)
|
||||||
if (i || forcesetup || cmdsetup)
|
if (i || forcesetup || cmdsetup)
|
||||||
{
|
{
|
||||||
if (quitevent || !startwin_run()) return -1;
|
if (quitevent || !startwin_run())
|
||||||
|
{
|
||||||
|
uninitengine();
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -483,8 +486,10 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
|
|
||||||
if (cursectnum == -1)
|
if (cursectnum == -1)
|
||||||
{
|
{
|
||||||
double gamma = vid_gamma;
|
double gamma = vid_gamma, brightness = vid_brightness, contrast = vid_contrast;
|
||||||
vid_gamma = 1.0;
|
vid_gamma = vid_contrast = 1.0;
|
||||||
|
vid_brightness = 0.0;
|
||||||
|
|
||||||
setbrightness(0,palette,0);
|
setbrightness(0,palette,0);
|
||||||
if (setgamemode(fullscreen, xdim2d, ydim2d, 8) < 0)
|
if (setgamemode(fullscreen, xdim2d, ydim2d, 8) < 0)
|
||||||
{
|
{
|
||||||
|
@ -496,7 +501,10 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
overheadeditor();
|
overheadeditor();
|
||||||
keystatus[buildkeys[BK_MODE2D_3D]] = 0;
|
keystatus[buildkeys[BK_MODE2D_3D]] = 0;
|
||||||
vid_gamma = gamma;
|
vid_gamma = gamma;
|
||||||
setbrightness(brightness,palette,0);
|
vid_contrast = contrast;
|
||||||
|
vid_brightness = brightness;
|
||||||
|
|
||||||
|
setbrightness(GAMMA_CALC,palette,0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -507,7 +515,7 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
Bprintf("%d * %d not supported in this graphics mode\n",xdim,ydim);
|
Bprintf("%d * %d not supported in this graphics mode\n",xdim,ydim);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
setbrightness(brightness,palette,0);
|
setbrightness(GAMMA_CALC,palette,0);
|
||||||
}
|
}
|
||||||
CANCEL:
|
CANCEL:
|
||||||
quitflag = 0;
|
quitflag = 0;
|
||||||
|
@ -1174,16 +1182,23 @@ void editinput(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keystatus[buildkeys[BK_MODE2D_3D]]) // Enter
|
if (keystatus[buildkeys[BK_MODE2D_3D]]) // Enter
|
||||||
{
|
{
|
||||||
double gamma = vid_gamma;
|
|
||||||
vid_gamma = 1.0;
|
double gamma = vid_gamma, contrast = vid_contrast, brightness = vid_brightness;
|
||||||
|
vid_gamma = vid_contrast = 1.0;
|
||||||
|
vid_brightness = 0.0;
|
||||||
|
|
||||||
setbrightness(0,palette,0);
|
setbrightness(0,palette,0);
|
||||||
keystatus[buildkeys[BK_MODE2D_3D]] = 0;
|
keystatus[buildkeys[BK_MODE2D_3D]] = 0;
|
||||||
overheadeditor();
|
overheadeditor();
|
||||||
keystatus[buildkeys[BK_MODE2D_3D]] = 0;
|
keystatus[buildkeys[BK_MODE2D_3D]] = 0;
|
||||||
vid_gamma = gamma;
|
vid_gamma = gamma;
|
||||||
setbrightness(brightness,palette,0);
|
vid_contrast = contrast;
|
||||||
|
vid_brightness = brightness;
|
||||||
|
|
||||||
|
setbrightness(GAMMA_CALC,palette,0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1432,7 +1447,8 @@ void overheadeditor(void)
|
||||||
wall[newnumwalls].y = day;
|
wall[newnumwalls].y = day;
|
||||||
}
|
}
|
||||||
|
|
||||||
ydim16 = ydim - STATUS2DSIZ2;
|
ydim16 = ydim;// - STATUS2DSIZ2;
|
||||||
|
midydim16 = ydim>>1;
|
||||||
|
|
||||||
tempint = numwalls;
|
tempint = numwalls;
|
||||||
numwalls = newnumwalls;
|
numwalls = newnumwalls;
|
||||||
|
@ -1447,19 +1463,13 @@ void overheadeditor(void)
|
||||||
|
|
||||||
if (graphicsmode)
|
if (graphicsmode)
|
||||||
{
|
{
|
||||||
int32_t ii = xyaspect;
|
|
||||||
|
|
||||||
i = yxaspect;
|
|
||||||
Bmemset(show2dsector, 255, sizeof(show2dsector));
|
Bmemset(show2dsector, 255, sizeof(show2dsector));
|
||||||
setview(0, 0, xdim-1, ydim16-1);
|
setview(0, 0, xdim-1, ydim16-1);
|
||||||
yxaspect = xyaspect = 65536;
|
|
||||||
|
|
||||||
if (graphicsmode == 2)
|
if (graphicsmode == 2)
|
||||||
totalclocklock = totalclock;
|
totalclocklock = totalclock;
|
||||||
|
|
||||||
drawmapview(pos.x, pos.y + scale((65536/zoom), ydim, 240), zoom, 1536);
|
drawmapview(pos.x, pos.y, zoom, 1536);
|
||||||
yxaspect = i;
|
|
||||||
xyaspect = ii;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
draw2dgrid(pos.x,pos.y,ang,zoom,grid);
|
draw2dgrid(pos.x,pos.y,ang,zoom,grid);
|
||||||
|
@ -4604,8 +4614,8 @@ CANCEL:
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
setbrightness(brightness,palette,0);
|
setbrightness(GAMMA_CALC,palette,0);
|
||||||
|
|
||||||
pos.z = oposz;
|
pos.z = oposz;
|
||||||
searchx = scale(searchx,xdimgame,xdim2d);
|
searchx = scale(searchx,xdimgame,xdim2d);
|
||||||
searchy = scale(searchy,ydimgame,ydim2d-STATUS2DSIZ);
|
searchy = scale(searchy,ydimgame,ydim2d-STATUS2DSIZ);
|
||||||
|
@ -5356,7 +5366,7 @@ static int32_t menuselect_pk(int32_t direction) // 20080104: jump to next (direc
|
||||||
|
|
||||||
static int32_t menuselect(void)
|
static int32_t menuselect(void)
|
||||||
{
|
{
|
||||||
int32_t listsize = (ydim16-32)/9;
|
int32_t listsize;
|
||||||
int32_t i;
|
int32_t i;
|
||||||
char ch, buffer[96], /*PK*/ *chptr;
|
char ch, buffer[96], /*PK*/ *chptr;
|
||||||
static char oldpath[BMAX_PATH];
|
static char oldpath[BMAX_PATH];
|
||||||
|
@ -5387,6 +5397,7 @@ static int32_t menuselect(void)
|
||||||
enddrawing();
|
enddrawing();
|
||||||
|
|
||||||
ydim16 = ydim-STATUS2DSIZ2;
|
ydim16 = ydim-STATUS2DSIZ2;
|
||||||
|
listsize = (ydim16-32)/9;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
|
|
@ -150,12 +150,9 @@ int32_t loadsetup(const char *fn)
|
||||||
#ifdef POLYMER
|
#ifdef POLYMER
|
||||||
if (readconfig(fp, "rendmode", val, VL) > 0) { i = Batoi(val); glrendmode = i; }
|
if (readconfig(fp, "rendmode", val, VL) > 0) { i = Batoi(val); glrendmode = i; }
|
||||||
#endif
|
#endif
|
||||||
if (readconfig(fp, "brightness", val, VL) > 0)
|
if (readconfig(fp, "vid_gamma", val, VL) > 0) vid_gamma = Bstrtod(val, NULL);
|
||||||
{
|
if (readconfig(fp, "vid_brightness", val, VL) > 0) vid_brightness = Bstrtod(val, NULL);
|
||||||
brightness = min(max(Batoi(val),0),15);
|
if (readconfig(fp, "vid_contrast", val, VL) > 0) vid_contrast = Bstrtod(val, NULL);
|
||||||
vid_gamma = 1.0 + ((float)brightness / 10.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RENDERTYPEWIN
|
#ifdef RENDERTYPEWIN
|
||||||
if (readconfig(fp, "maxrefreshfreq", val, VL) > 0) maxrefreshfreq = Batoi(val);
|
if (readconfig(fp, "maxrefreshfreq", val, VL) > 0) maxrefreshfreq = Batoi(val);
|
||||||
#endif
|
#endif
|
||||||
|
@ -355,9 +352,9 @@ int32_t writesetup(const char *fn)
|
||||||
"\n"
|
"\n"
|
||||||
#endif
|
#endif
|
||||||
"; 3D mode brightness setting\n"
|
"; 3D mode brightness setting\n"
|
||||||
"; 0 - lowest\n"
|
"vid_gamma = %f\n"
|
||||||
"; 15 - highest\n"
|
"vid_brightness = %f\n"
|
||||||
"brightness = %d\n"
|
"vid_contrast = %f\n"
|
||||||
"\n"
|
"\n"
|
||||||
"; Game executable used for map testing\n"
|
"; Game executable used for map testing\n"
|
||||||
"gameexecutable = %s\n"
|
"gameexecutable = %s\n"
|
||||||
|
@ -493,7 +490,7 @@ int32_t writesetup(const char *fn)
|
||||||
#ifdef RENDERTYPEWIN
|
#ifdef RENDERTYPEWIN
|
||||||
maxrefreshfreq, windowpos, windowx, windowy,
|
maxrefreshfreq, windowpos, windowx, windowy,
|
||||||
#endif
|
#endif
|
||||||
brightness, game_executable,
|
vid_gamma, vid_brightness, vid_contrast, game_executable,
|
||||||
#if 0
|
#if 0
|
||||||
option[7]>>4, option[2],
|
option[7]>>4, option[2],
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -9329,6 +9329,7 @@ int32_t pushmove(vec3_t *vect, int16_t *sectnum,
|
||||||
bad = -1;
|
bad = -1;
|
||||||
k--; if (k <= 0) return(bad);
|
k--; if (k <= 0) return(bad);
|
||||||
updatesector(vect->x,vect->y,sectnum);
|
updatesector(vect->x,vect->y,sectnum);
|
||||||
|
if (*sectnum < 0) return -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -165,7 +165,7 @@ int32_t OSD_RegisterCvar(const cvar_t *cvar)
|
||||||
|
|
||||||
cvars = (osdcvar_t *)Brealloc(cvars, (osdnumcvars + 1) * sizeof(osdcvar_t));
|
cvars = (osdcvar_t *)Brealloc(cvars, (osdnumcvars + 1) * sizeof(osdcvar_t));
|
||||||
|
|
||||||
hash_add(&h_cvars, cvar->name, osdnumcvars);
|
hash_replace(&h_cvars, cvar->name, osdnumcvars);
|
||||||
|
|
||||||
switch (cvar->type & (CVAR_BOOL|CVAR_INT|CVAR_UINT|CVAR_FLOAT|CVAR_DOUBLE))
|
switch (cvar->type & (CVAR_BOOL|CVAR_INT|CVAR_UINT|CVAR_FLOAT|CVAR_DOUBLE))
|
||||||
{
|
{
|
||||||
|
@ -1841,11 +1841,13 @@ int32_t OSD_RegisterFunction(const char *name, const char *help, int32_t (*func)
|
||||||
|
|
||||||
if (symb) // allow this now for reusing an alias name
|
if (symb) // allow this now for reusing an alias name
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
if (symb->func != OSD_ALIAS && symb->func != OSD_UNALIASED)
|
if (symb->func != OSD_ALIAS && symb->func != OSD_UNALIASED)
|
||||||
{
|
{
|
||||||
OSD_Printf("OSD_RegisterFunction(): \"%s\" is already defined\n", name);
|
OSD_Printf("OSD_RegisterFunction(): \"%s\" is already defined\n", name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
Bfree((char *)symb->help);
|
Bfree((char *)symb->help);
|
||||||
symb->help = help;
|
symb->help = help;
|
||||||
symb->func = func;
|
symb->func = func;
|
||||||
|
@ -1918,9 +1920,9 @@ static symbol_t *addnewsymbol(const char *name)
|
||||||
newsymb->next = t;
|
newsymb->next = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hash_add(&h_osd, name, osdnumsymbols);
|
hash_replace(&h_osd, name, osdnumsymbols);
|
||||||
name = Bstrtolower(Bstrdup(name));
|
name = Bstrtolower(Bstrdup(name));
|
||||||
hash_add(&h_osd, name, osdnumsymbols);
|
hash_replace(&h_osd, name, osdnumsymbols);
|
||||||
Bfree((void *)name);
|
Bfree((void *)name);
|
||||||
osdsymbptrs[osdnumsymbols++] = newsymb;
|
osdsymbptrs[osdnumsymbols++] = newsymb;
|
||||||
return newsymb;
|
return newsymb;
|
||||||
|
|
|
@ -4537,14 +4537,12 @@ static int32_t polymer_planeinlight(_prplane* plane, _prlight* light)
|
||||||
|
|
||||||
static void polymer_invalidateplanelights(_prplane* plane)
|
static void polymer_invalidateplanelights(_prplane* plane)
|
||||||
{
|
{
|
||||||
int32_t i = 0;
|
int32_t i = -1;
|
||||||
|
|
||||||
while (i < plane->lightcount)
|
while (++i < plane->lightcount)
|
||||||
{
|
{
|
||||||
if (plane && (plane->lights[i] != -1) && (prlights[plane->lights[i]].flags.active))
|
if (plane && (plane->lights[i] != -1) && (prlights[plane->lights[i]].flags.active))
|
||||||
prlights[plane->lights[i]].flags.invalidate = 1;
|
prlights[plane->lights[i]].flags.invalidate = 1;
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4561,21 +4559,15 @@ static void polymer_invalidatesectorlights(int16_t sectnum)
|
||||||
polymer_invalidateplanelights(&s->floor);
|
polymer_invalidateplanelights(&s->floor);
|
||||||
polymer_invalidateplanelights(&s->ceil);
|
polymer_invalidateplanelights(&s->ceil);
|
||||||
|
|
||||||
i = 0;
|
i = sec->wallnum;
|
||||||
while (i < sec->wallnum)
|
|
||||||
{
|
|
||||||
w = prwalls[sec->wallptr + i];
|
|
||||||
|
|
||||||
if (!w) {
|
while (i--)
|
||||||
i++;
|
{
|
||||||
continue;
|
if (!(w = prwalls[sec->wallptr + i])) continue;
|
||||||
}
|
|
||||||
|
|
||||||
polymer_invalidateplanelights(&w->wall);
|
polymer_invalidateplanelights(&w->wall);
|
||||||
polymer_invalidateplanelights(&w->over);
|
polymer_invalidateplanelights(&w->over);
|
||||||
polymer_invalidateplanelights(&w->mask);
|
polymer_invalidateplanelights(&w->mask);
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1663,12 +1663,12 @@ ACTOR_STATIC void G_MoveStandables(void)
|
||||||
|
|
||||||
if (T3 == 8)
|
if (T3 == 8)
|
||||||
{
|
{
|
||||||
A_PlaySound(LASERTRIP_EXPLODE,i);
|
|
||||||
for (j=0; j<5; j++) RANDOMSCRAP;
|
for (j=0; j<5; j++) RANDOMSCRAP;
|
||||||
x = s->extra;
|
x = s->extra;
|
||||||
A_RadiusDamage(i, g_tripbombBlastRadius, x>>2,x>>1,x-(x>>2),x);
|
A_RadiusDamage(i, g_tripbombBlastRadius, x>>2,x>>1,x-(x>>2),x);
|
||||||
|
|
||||||
j = A_Spawn(i,EXPLOSION2);
|
j = A_Spawn(i,EXPLOSION2);
|
||||||
|
A_PlaySound(LASERTRIP_EXPLODE,j);
|
||||||
sprite[j].ang = s->ang;
|
sprite[j].ang = s->ang;
|
||||||
sprite[j].xvel = 348;
|
sprite[j].xvel = 348;
|
||||||
A_SetSprite(j,CLIPMASK0);
|
A_SetSprite(j,CLIPMASK0);
|
||||||
|
@ -1838,9 +1838,9 @@ ACTOR_STATIC void G_MoveStandables(void)
|
||||||
sprite[j].pal = 2;
|
sprite[j].pal = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
A_Spawn(i,EXPLOSION2);
|
j = A_Spawn(i,EXPLOSION2);
|
||||||
A_PlaySound(PIPEBOMB_EXPLODE,i);
|
A_PlaySound(PIPEBOMB_EXPLODE,j);
|
||||||
A_PlaySound(GLASS_HEAVYBREAK,i);
|
A_PlaySound(GLASS_HEAVYBREAK,j);
|
||||||
|
|
||||||
if (s->hitag > 0)
|
if (s->hitag > 0)
|
||||||
{
|
{
|
||||||
|
@ -1854,9 +1854,9 @@ ACTOR_STATIC void G_MoveStandables(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
x = s->extra;
|
x = s->extra;
|
||||||
A_Spawn(i,EXPLOSION2);
|
|
||||||
A_RadiusDamage(i, g_pipebombBlastRadius,x>>2, x-(x>>1),x-(x>>2), x);
|
A_RadiusDamage(i, g_pipebombBlastRadius,x>>2, x-(x>>1),x-(x>>2), x);
|
||||||
A_PlaySound(PIPEBOMB_EXPLODE,i);
|
j = A_Spawn(i,EXPLOSION2);
|
||||||
|
A_PlaySound(PIPEBOMB_EXPLODE,j);
|
||||||
|
|
||||||
goto DETONATE;
|
goto DETONATE;
|
||||||
}
|
}
|
||||||
|
@ -1958,17 +1958,17 @@ DETONATE:
|
||||||
|
|
||||||
s->z -= (32<<8);
|
s->z -= (32<<8);
|
||||||
|
|
||||||
if ((t[3] == 1 && s->xrepeat) || s->lotag == -99)
|
|
||||||
{
|
|
||||||
x = s->extra;
|
|
||||||
A_Spawn(i,EXPLOSION2);
|
|
||||||
A_RadiusDamage(i,g_seenineBlastRadius,x>>2, x-(x>>1),x-(x>>2), x);
|
|
||||||
A_PlaySound(PIPEBOMB_EXPLODE,i);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s->xrepeat)
|
if (s->xrepeat)
|
||||||
for (x=0; x<8; x++) RANDOMSCRAP;
|
for (x=0; x<8; x++) RANDOMSCRAP;
|
||||||
|
|
||||||
|
if ((t[3] == 1 && s->xrepeat) || s->lotag == -99)
|
||||||
|
{
|
||||||
|
int32_t j = A_Spawn(i,EXPLOSION2);
|
||||||
|
x = s->extra;
|
||||||
|
A_RadiusDamage(i,g_seenineBlastRadius,x>>2, x-(x>>1),x-(x>>2), x);
|
||||||
|
A_PlaySound(PIPEBOMB_EXPLODE,j);
|
||||||
|
}
|
||||||
|
|
||||||
KILLIT(i);
|
KILLIT(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3027,6 +3027,7 @@ ACTOR_STATIC void G_MoveWeapons(void)
|
||||||
if (s->picnum == RPG)
|
if (s->picnum == RPG)
|
||||||
{
|
{
|
||||||
k = A_Spawn(i,EXPLOSION2);
|
k = A_Spawn(i,EXPLOSION2);
|
||||||
|
A_PlaySound(RPG_EXPLODE,k);
|
||||||
Bmemcpy(&sprite[k],&davect,sizeof(vec3_t));
|
Bmemcpy(&sprite[k],&davect,sizeof(vec3_t));
|
||||||
|
|
||||||
if (s->xrepeat < 10)
|
if (s->xrepeat < 10)
|
||||||
|
@ -3045,7 +3046,6 @@ ACTOR_STATIC void G_MoveWeapons(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
A_PlaySound(RPG_EXPLODE,i);
|
|
||||||
|
|
||||||
if (s->xrepeat >= 10)
|
if (s->xrepeat >= 10)
|
||||||
{
|
{
|
||||||
|
@ -3788,7 +3788,8 @@ ACTOR_STATIC void G_MoveActors(void)
|
||||||
{
|
{
|
||||||
for (l=0; l<16; l++)
|
for (l=0; l<16; l++)
|
||||||
RANDOMSCRAP;
|
RANDOMSCRAP;
|
||||||
A_PlaySound(LASERTRIP_EXPLODE,i);
|
j = A_Spawn(i,EXPLOSION2);
|
||||||
|
A_PlaySound(LASERTRIP_EXPLODE,j);
|
||||||
A_Spawn(i,PIGCOP);
|
A_Spawn(i,PIGCOP);
|
||||||
g_player[myconnectindex].ps->actors_killed++;
|
g_player[myconnectindex].ps->actors_killed++;
|
||||||
KILLIT(i);
|
KILLIT(i);
|
||||||
|
@ -4503,6 +4504,8 @@ DETONATEB:
|
||||||
|
|
||||||
if (t[2] == 2)
|
if (t[2] == 2)
|
||||||
{
|
{
|
||||||
|
int32_t j;
|
||||||
|
|
||||||
x = s->extra;
|
x = s->extra;
|
||||||
m = 0;
|
m = 0;
|
||||||
switch (DynamicTileMap[s->picnum])
|
switch (DynamicTileMap[s->picnum])
|
||||||
|
@ -4519,10 +4522,10 @@ DETONATEB:
|
||||||
}
|
}
|
||||||
|
|
||||||
A_RadiusDamage(i, m,x>>2,x>>1,x-(x>>2),x);
|
A_RadiusDamage(i, m,x>>2,x>>1,x-(x>>2),x);
|
||||||
A_Spawn(i,EXPLOSION2);
|
j = A_Spawn(i,EXPLOSION2);
|
||||||
|
A_PlaySound(PIPEBOMB_EXPLODE,j);
|
||||||
if (s->zvel == 0)
|
if (s->zvel == 0)
|
||||||
A_Spawn(i,EXPLOSION2BOT);
|
A_Spawn(i,EXPLOSION2BOT);
|
||||||
A_PlaySound(PIPEBOMB_EXPLODE,i);
|
|
||||||
for (x=0; x<8; x++)
|
for (x=0; x<8; x++)
|
||||||
RANDOMSCRAP;
|
RANDOMSCRAP;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ sound_t g_sounds[MAXSOUNDS];
|
||||||
static int16_t g_definedsndnum[MAXSOUNDS]; // maps parse order index to g_sounds index
|
static int16_t g_definedsndnum[MAXSOUNDS]; // maps parse order index to g_sounds index
|
||||||
static int16_t g_sndnum[MAXSOUNDS]; // maps current order index to g_sounds index
|
static int16_t g_sndnum[MAXSOUNDS]; // maps current order index to g_sounds index
|
||||||
int32_t g_numsounds = 0;
|
int32_t g_numsounds = 0;
|
||||||
|
static int32_t lastupdate, mousecol, mouseadd = 1, bstatus;
|
||||||
|
|
||||||
#if !defined(_WIN32)
|
#if !defined(_WIN32)
|
||||||
static int32_t usecwd = 0;
|
static int32_t usecwd = 0;
|
||||||
|
@ -2536,10 +2536,6 @@ static void ReadGamePalette()
|
||||||
ReadPaletteTable();
|
ReadPaletteTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
static char lockbyte4094;
|
|
||||||
|
|
||||||
static int32_t lastupdate, mousecol, mouseadd = 1, bstatus;
|
|
||||||
|
|
||||||
static void m32_showmouse(void)
|
static void m32_showmouse(void)
|
||||||
{
|
{
|
||||||
int32_t i, col;
|
int32_t i, col;
|
||||||
|
@ -3923,7 +3919,7 @@ ERROR_NOMEMORY:
|
||||||
|
|
||||||
static void Keys3d(void)
|
static void Keys3d(void)
|
||||||
{
|
{
|
||||||
int32_t i,changedir,tsign; // ,count,nexti
|
int32_t i = 0,changedir,tsign; // ,count,nexti
|
||||||
int32_t j, k, tempint = 0, hiz, loz;
|
int32_t j, k, tempint = 0, hiz, loz;
|
||||||
int32_t hihit, lohit;
|
int32_t hihit, lohit;
|
||||||
char smooshyalign=0, repeatpanalign=0; //, buffer[80];
|
char smooshyalign=0, repeatpanalign=0; //, buffer[80];
|
||||||
|
@ -3932,23 +3928,6 @@ static void Keys3d(void)
|
||||||
|
|
||||||
/* start Mapster32 */
|
/* start Mapster32 */
|
||||||
|
|
||||||
/*
|
|
||||||
if (sidemode != 0)
|
|
||||||
{
|
|
||||||
setviewback();
|
|
||||||
rotatesprite(320<<15,200<<15,65536,(horiz-100)<<2,4094,0,0,2+4,0,0,0,0);
|
|
||||||
lockbyte4094 = 0;
|
|
||||||
searchx = ydim-1-searchx;
|
|
||||||
searchx ^= searchy;
|
|
||||||
searchy ^= searchx;
|
|
||||||
searchx ^= searchy;
|
|
||||||
|
|
||||||
// overwritesprite(160L,170L,1153,0,1+2,0);
|
|
||||||
rotatesprite(160<<16,170<<16,65536,(100-horiz+1024)<<3,1153,0,0,2,0,0,0,0);
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (g_numsounds > 0 && AmbienceToggle)
|
if (g_numsounds > 0 && AmbienceToggle)
|
||||||
{
|
{
|
||||||
M32_MoveFX();
|
M32_MoveFX();
|
||||||
|
@ -5847,7 +5826,7 @@ static void Keys3d(void)
|
||||||
|
|
||||||
if (PRESSED_KEYSC(F11)) //F11 - brightness
|
if (PRESSED_KEYSC(F11)) //F11 - brightness
|
||||||
{
|
{
|
||||||
extern int16_t brightness;
|
static int16_t brightness;
|
||||||
|
|
||||||
brightness = brightness + (1-2*eitherSHIFT);
|
brightness = brightness + (1-2*eitherSHIFT);
|
||||||
brightness &= 15;
|
brightness &= 15;
|
||||||
|
@ -7291,21 +7270,6 @@ static int32_t osdcmd_sensitivity(const osdfuncparm_t *parm)
|
||||||
return OSDCMD_OK;
|
return OSDCMD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t osdcmd_gamma(const osdfuncparm_t *parm)
|
|
||||||
{
|
|
||||||
extern int16_t brightness;
|
|
||||||
|
|
||||||
if (parm->numparms != 1)
|
|
||||||
{
|
|
||||||
OSD_Printf("\"gamma\" \"%d\"\n",brightness);
|
|
||||||
return OSDCMD_SHOWHELP;
|
|
||||||
}
|
|
||||||
brightness = atoi(parm->parms[0]);
|
|
||||||
setbrightness(brightness,palette,0);
|
|
||||||
OSD_Printf("gamma %d\n",brightness);
|
|
||||||
return OSDCMD_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int32_t osdcmd_noclip(const osdfuncparm_t *parm)
|
static int32_t osdcmd_noclip(const osdfuncparm_t *parm)
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(parm);
|
UNREFERENCED_PARAMETER(parm);
|
||||||
|
@ -7645,8 +7609,6 @@ static int32_t registerosdcommands(void)
|
||||||
|
|
||||||
OSD_RegisterFunction("editorgridextent","editorgridextent: sets the size of the 2D mode editing grid",osdcmd_editorgridextent);
|
OSD_RegisterFunction("editorgridextent","editorgridextent: sets the size of the 2D mode editing grid",osdcmd_editorgridextent);
|
||||||
|
|
||||||
OSD_RegisterFunction("gamma","gamma <value>: changes brightness", osdcmd_gamma);
|
|
||||||
|
|
||||||
OSD_RegisterFunction("initgroupfile","initgroupfile <path>: adds a grp file into the game filesystem", osdcmd_initgroupfile);
|
OSD_RegisterFunction("initgroupfile","initgroupfile <path>: adds a grp file into the game filesystem", osdcmd_initgroupfile);
|
||||||
|
|
||||||
OSD_RegisterFunction("noclip","noclip: toggles clipping mode", osdcmd_noclip);
|
OSD_RegisterFunction("noclip","noclip: toggles clipping mode", osdcmd_noclip);
|
||||||
|
@ -8919,20 +8881,8 @@ void ExtPreCheckKeys(void) // just before drawrooms
|
||||||
}
|
}
|
||||||
|
|
||||||
if (floor_over_floor) SE40Code(pos.x,pos.y,pos.z,ang,horiz);
|
if (floor_over_floor) SE40Code(pos.x,pos.y,pos.z,ang,horiz);
|
||||||
|
|
||||||
if (purpleon) clearview(255);
|
if (purpleon) clearview(255);
|
||||||
|
|
||||||
if (sidemode)
|
|
||||||
{
|
|
||||||
lockbyte4094 = 1;
|
|
||||||
if (waloff[4094] == 0)
|
|
||||||
allocache(&waloff[4094],320L*200L,&lockbyte4094);
|
|
||||||
setviewtotile(4094,320L,200L);
|
|
||||||
searchx ^= searchy;
|
|
||||||
searchy ^= searchx;
|
|
||||||
searchx ^= searchy;
|
|
||||||
searchx = ydim-1-searchx;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
begindrawing();
|
begindrawing();
|
||||||
|
@ -9475,12 +9425,9 @@ void ExtCheckKeys(void)
|
||||||
if (qsetmode == 200) //In 3D mode
|
if (qsetmode == 200) //In 3D mode
|
||||||
{
|
{
|
||||||
Keys3d();
|
Keys3d();
|
||||||
if (sidemode != 1)
|
editinput();
|
||||||
{
|
if (infobox&2)
|
||||||
editinput();
|
m32_showmouse();
|
||||||
if (infobox&2)
|
|
||||||
m32_showmouse();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else Keys2d();
|
else Keys2d();
|
||||||
|
|
||||||
|
@ -9524,7 +9471,7 @@ void faketimerhandler(void)
|
||||||
// if (counter>=5) counter=0;
|
// if (counter>=5) counter=0;
|
||||||
|
|
||||||
sampletimer();
|
sampletimer();
|
||||||
if (totalclock < ototalclock+TICSPERFRAME || qsetmode != 200 || sidemode != 1)
|
if (totalclock < ototalclock+TICSPERFRAME || qsetmode != 200)
|
||||||
return;
|
return;
|
||||||
ototalclock = totalclock;
|
ototalclock = totalclock;
|
||||||
|
|
||||||
|
@ -9588,34 +9535,32 @@ void faketimerhandler(void)
|
||||||
if (horiz > 100) horiz--;
|
if (horiz > 100) horiz--;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int16_t brightness;
|
|
||||||
|
|
||||||
void SetBOSS1Palette(void)
|
void SetBOSS1Palette(void)
|
||||||
{
|
{
|
||||||
if (acurpalette==3) return;
|
if (acurpalette==3) return;
|
||||||
acurpalette=3;
|
acurpalette=3;
|
||||||
setbrightness(brightness,BOSS1palette,0);
|
setbrightness(GAMMA_CALC,BOSS1palette,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetSLIMEPalette(void)
|
void SetSLIMEPalette(void)
|
||||||
{
|
{
|
||||||
if (acurpalette==2) return;
|
if (acurpalette==2) return;
|
||||||
acurpalette=2;
|
acurpalette=2;
|
||||||
setbrightness(brightness,SLIMEpalette,0);
|
setbrightness(GAMMA_CALC,SLIMEpalette,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetWATERPalette(void)
|
void SetWATERPalette(void)
|
||||||
{
|
{
|
||||||
if (acurpalette==1) return;
|
if (acurpalette==1) return;
|
||||||
acurpalette=1;
|
acurpalette=1;
|
||||||
setbrightness(brightness,WATERpalette,0);
|
setbrightness(GAMMA_CALC,WATERpalette,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetGAMEPalette(void)
|
void SetGAMEPalette(void)
|
||||||
{
|
{
|
||||||
if (acurpalette==0) return;
|
if (acurpalette==0) return;
|
||||||
acurpalette=0;
|
acurpalette=0;
|
||||||
setbrightness(brightness,GAMEpalette,0);
|
setbrightness(GAMMA_CALC,GAMEpalette,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SearchSectors(int32_t dir) // <0: backwards, >=0: forwards
|
static void SearchSectors(int32_t dir) // <0: backwards, >=0: forwards
|
||||||
|
|
|
@ -37,8 +37,8 @@ extern int32_t S_LoadSound(uint32_t num);
|
||||||
extern int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos);
|
extern int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos);
|
||||||
extern int32_t S_PlaySound(int32_t num);
|
extern int32_t S_PlaySound(int32_t num);
|
||||||
extern int32_t A_PlaySound(uint32_t num,int32_t i);
|
extern int32_t A_PlaySound(uint32_t num,int32_t i);
|
||||||
extern void S_StopSound(int32_t num);
|
|
||||||
extern void S_StopEnvSound(int32_t num,int32_t i);
|
extern void S_StopEnvSound(int32_t num,int32_t i);
|
||||||
|
#define S_StopSound(num) S_StopEnvSound(num, -1)
|
||||||
extern void S_Update(void);
|
extern void S_Update(void);
|
||||||
extern void S_Cleanup(void);
|
extern void S_Cleanup(void);
|
||||||
extern void S_Callback(uint32_t num);
|
extern void S_Callback(uint32_t num);
|
||||||
|
|
|
@ -1191,6 +1191,7 @@ static int32_t C_SkipComments(void)
|
||||||
case ' ':
|
case ' ':
|
||||||
case '\t':
|
case '\t':
|
||||||
case '\r':
|
case '\r':
|
||||||
|
case 0x1a:
|
||||||
textptr++;
|
textptr++;
|
||||||
break;
|
break;
|
||||||
case '/':
|
case '/':
|
||||||
|
@ -1200,7 +1201,7 @@ static int32_t C_SkipComments(void)
|
||||||
if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug > 1)
|
if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug > 1)
|
||||||
initprintf("%s:%d: debug: got comment.\n",g_szScriptFileName,g_lineNumber);
|
initprintf("%s:%d: debug: got comment.\n",g_szScriptFileName,g_lineNumber);
|
||||||
C_NextLine();
|
C_NextLine();
|
||||||
break;
|
continue;
|
||||||
case '*': // beginning of a C style comment
|
case '*': // beginning of a C style comment
|
||||||
if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug > 1)
|
if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug > 1)
|
||||||
initprintf("%s:%d: debug: got start of comment block.\n",g_szScriptFileName,g_lineNumber);
|
initprintf("%s:%d: debug: got start of comment block.\n",g_szScriptFileName,g_lineNumber);
|
||||||
|
@ -1220,22 +1221,22 @@ static int32_t C_SkipComments(void)
|
||||||
initprintf("%s:%d: error: found `/*' with no `*/'.\n",g_szScriptFileName,g_lineNumber);
|
initprintf("%s:%d: error: found `/*' with no `*/'.\n",g_szScriptFileName,g_lineNumber);
|
||||||
g_parsingActorPtr = 0;g_processingState = g_numBraces = 0;
|
g_parsingActorPtr = 0;g_processingState = g_numBraces = 0;
|
||||||
g_numCompilerErrors++;
|
g_numCompilerErrors++;
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug > 1)
|
if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug > 1)
|
||||||
initprintf("%s:%d: debug: got end of comment block.\n",g_szScriptFileName,g_lineNumber);
|
initprintf("%s:%d: debug: got end of comment block.\n",g_szScriptFileName,g_lineNumber);
|
||||||
|
|
||||||
textptr+=2;
|
textptr+=2;
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
continue;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (ispecial(*textptr))
|
if (ispecial(*textptr))
|
||||||
{
|
{
|
||||||
textptr++;
|
textptr++;
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
case 0: // EOF
|
case 0: // EOF
|
||||||
return ((g_scriptPtr-script) > (g_scriptSize-32)) ? C_SetScriptSize(g_scriptSize<<1) : 0;
|
return ((g_scriptPtr-script) > (g_scriptSize-32)) ? C_SetScriptSize(g_scriptSize<<1) : 0;
|
||||||
|
|
|
@ -4199,7 +4199,6 @@ nullquote:
|
||||||
if (MapInfo[(uint8_t)g_musicIndex].musicfn == NULL)
|
if (MapInfo[(uint8_t)g_musicIndex].musicfn == NULL)
|
||||||
{
|
{
|
||||||
OSD_Printf(CON_ERROR "null music for map %d\n",g_errorLineNum,keyw[g_tw],g_musicIndex);
|
OSD_Printf(CON_ERROR "null music for map %d\n",g_errorLineNum,keyw[g_tw],g_musicIndex);
|
||||||
insptr++;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
S_PlayMusic(&MapInfo[(uint8_t)g_musicIndex].musicfn[0],g_musicIndex);
|
S_PlayMusic(&MapInfo[(uint8_t)g_musicIndex].musicfn[0],g_musicIndex);
|
||||||
|
|
|
@ -380,8 +380,10 @@ void Gv_ResetVars(void) /* this is called during a new game and nowhere else */
|
||||||
|
|
||||||
for (i=0; i<MAXGAMEVARS; i++)
|
for (i=0; i<MAXGAMEVARS; i++)
|
||||||
{
|
{
|
||||||
if (aGameVars[i].szLabel != NULL && aGameVars[i].dwFlags & GAMEVAR_RESET)
|
if (aGameVars[i].szLabel != NULL)
|
||||||
Gv_NewVar(aGameVars[i].szLabel,aGameVars[i].lDefault,aGameVars[i].dwFlags);
|
Gv_NewVar(aGameVars[i].szLabel,
|
||||||
|
aGameVars[i].dwFlags & GAMEVAR_NODEFAULT ? aGameVars[i].val.lValue : aGameVars[i].lDefault,
|
||||||
|
aGameVars[i].dwFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=0; i<MAXGAMEARRAYS; i++)
|
for (i=0; i<MAXGAMEARRAYS; i++)
|
||||||
|
|
|
@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
#include "duke3d.h"
|
#include "duke3d.h"
|
||||||
|
|
||||||
const char *s_buildDate = "20100617";
|
const char *s_buildDate = "20100703";
|
||||||
char *MusicPtr = NULL;
|
char *MusicPtr = NULL;
|
||||||
int32_t g_musicSize;
|
int32_t g_musicSize;
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ int32_t mousxplc, mousyplc;
|
||||||
static int32_t ppointhighlight;
|
static int32_t ppointhighlight;
|
||||||
//static int32_t counter=0;
|
//static int32_t counter=0;
|
||||||
static uint8_t nosprites=0,purpleon=0,skill=4;
|
static uint8_t nosprites=0,purpleon=0,skill=4;
|
||||||
static uint8_t framerateon=1,shadepreview=0,sidemode=0;
|
static uint8_t framerateon=1,shadepreview=0;
|
||||||
static int32_t xvel, yvel, timoff;
|
static int32_t xvel, yvel, timoff;
|
||||||
|
|
||||||
int32_t autosave=180;
|
int32_t autosave=180;
|
||||||
|
|
|
@ -1308,7 +1308,7 @@ static int32_t osdcmd_cvar_set_game(const osdfuncparm_t *parm)
|
||||||
}
|
}
|
||||||
else if (!Bstrcasecmp(parm->name, "vid_gamma"))
|
else if (!Bstrcasecmp(parm->name, "vid_gamma"))
|
||||||
{
|
{
|
||||||
ud.brightness = (int32_t)(min(max((float)((vid_gamma-1.0)*10.0),0),15));
|
ud.brightness = GAMMA_CALC;
|
||||||
ud.brightness <<= 2;
|
ud.brightness <<= 2;
|
||||||
setbrightness(ud.brightness>>2,&g_player[myconnectindex].ps->palette[0],0);
|
setbrightness(ud.brightness>>2,&g_player[myconnectindex].ps->palette[0],0);
|
||||||
|
|
||||||
|
|
|
@ -3193,9 +3193,6 @@ void getinput(int32_t snum)
|
||||||
if (BUTTON(gamefunc_Jump) && p->on_ground)
|
if (BUTTON(gamefunc_Jump) && p->on_ground)
|
||||||
jump_timer = 4;
|
jump_timer = 4;
|
||||||
|
|
||||||
if (aplWeaponFlags[g_player[snum].ps->curr_weapon][snum] & WEAPON_SEMIAUTO && BUTTON(gamefunc_Fire))
|
|
||||||
CONTROL_ClearButton(gamefunc_Fire);
|
|
||||||
|
|
||||||
loc.bits = (jump_timer > 0 || BUTTON(gamefunc_Jump))<<SK_JUMP;
|
loc.bits = (jump_timer > 0 || BUTTON(gamefunc_Jump))<<SK_JUMP;
|
||||||
|
|
||||||
if (jump_timer > 0)
|
if (jump_timer > 0)
|
||||||
|
@ -3236,6 +3233,9 @@ void getinput(int32_t snum)
|
||||||
if (BUTTON(gamefunc_Dpad_Aiming))
|
if (BUTTON(gamefunc_Dpad_Aiming))
|
||||||
vel = 0;
|
vel = 0;
|
||||||
|
|
||||||
|
if (aplWeaponFlags[g_player[snum].ps->curr_weapon][snum] & WEAPON_SEMIAUTO && BUTTON(gamefunc_Fire))
|
||||||
|
CONTROL_ClearButton(gamefunc_Fire);
|
||||||
|
|
||||||
loc.extbits = 0;
|
loc.extbits = 0;
|
||||||
// if (apScriptGameEvent[EVENT_PROCESSINPUT] || apScriptGameEvent[EVENT_MOVEFORWARD])
|
// if (apScriptGameEvent[EVENT_PROCESSINPUT] || apScriptGameEvent[EVENT_MOVEFORWARD])
|
||||||
loc.extbits |= BUTTON(gamefunc_Move_Forward) || (vel > 0);
|
loc.extbits |= BUTTON(gamefunc_Move_Forward) || (vel > 0);
|
||||||
|
|
|
@ -338,23 +338,24 @@ void S_Cleanup(void)
|
||||||
|
|
||||||
{
|
{
|
||||||
int32_t j = num & (MAXSOUNDINSTANCES-1);
|
int32_t j = num & (MAXSOUNDINSTANCES-1);
|
||||||
|
int32_t i;
|
||||||
|
|
||||||
num = (num - j) / MAXSOUNDINSTANCES;
|
num = (num - j) / MAXSOUNDINSTANCES;
|
||||||
|
|
||||||
|
i = g_sounds[num].SoundOwner[j].i;
|
||||||
|
|
||||||
if (g_sounds[num].num > MAXSOUNDINSTANCES)
|
if (g_sounds[num].num > MAXSOUNDINSTANCES)
|
||||||
OSD_Printf(OSD_ERROR "S_Cleanup(): num exceeds MAXSOUNDINSTANCES! g_sounds[%d].num %d wtf?\n", num, g_sounds[num].num);
|
OSD_Printf(OSD_ERROR "S_Cleanup(): num exceeds MAXSOUNDINSTANCES! g_sounds[%d].num %d wtf?\n", num, g_sounds[num].num);
|
||||||
|
|
||||||
if (g_sounds[num].num > 0)
|
if (g_sounds[num].num > 0)
|
||||||
{
|
|
||||||
int32_t i = g_sounds[num].SoundOwner[j].i;
|
|
||||||
|
|
||||||
// MUSICANDSFX uses t_data[0] to control restarting the sound
|
|
||||||
if (i != -1 && sprite[i].picnum == MUSICANDSFX && sector[sprite[i].sectnum].lotag < 3 && sprite[i].lotag < 999)
|
|
||||||
actor[i].t_data[0] = 0;
|
|
||||||
|
|
||||||
g_sounds[num].SoundOwner[j].i = -1;
|
|
||||||
g_sounds[num].SoundOwner[j].voice = 0;
|
|
||||||
g_sounds[num].num--;
|
g_sounds[num].num--;
|
||||||
}
|
|
||||||
|
// MUSICANDSFX uses t_data[0] to control restarting the sound
|
||||||
|
if (i != -1 && sprite[i].picnum == MUSICANDSFX && sector[sprite[i].sectnum].lotag < 3 && sprite[i].lotag < 999)
|
||||||
|
actor[i].t_data[0] = 0;
|
||||||
|
|
||||||
|
g_sounds[num].SoundOwner[j].i = -1;
|
||||||
|
g_sounds[num].SoundOwner[j].voice = 0;
|
||||||
}
|
}
|
||||||
g_soundlocks[num]--;
|
g_soundlocks[num]--;
|
||||||
}
|
}
|
||||||
|
@ -547,22 +548,22 @@ int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos)
|
||||||
(num * MAXSOUNDINSTANCES) + j);
|
(num * MAXSOUNDINSTANCES) + j);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (voice > FX_Ok)
|
if (voice <= FX_Ok)
|
||||||
{
|
{
|
||||||
g_sounds[num].SoundOwner[j].i = i;
|
g_soundlocks[num]--;
|
||||||
g_sounds[num].num++;
|
return -1;
|
||||||
g_sounds[num].SoundOwner[j].voice = voice;
|
|
||||||
return voice;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_soundlocks[num]--;
|
g_sounds[num].num++;
|
||||||
return -1;
|
g_sounds[num].SoundOwner[j].i = i;
|
||||||
|
g_sounds[num].SoundOwner[j].voice = voice;
|
||||||
|
return voice;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t S_PlaySound(int32_t num)
|
int32_t S_PlaySound(int32_t num)
|
||||||
{
|
{
|
||||||
int32_t pitch,cx;
|
int32_t pitch, cx;
|
||||||
int32_t voice;
|
int32_t voice, j;
|
||||||
|
|
||||||
if (ud.config.FXDevice < 0) return -1;
|
if (ud.config.FXDevice < 0) return -1;
|
||||||
if (ud.config.SoundToggle==0) return -1;
|
if (ud.config.SoundToggle==0) return -1;
|
||||||
|
@ -591,6 +592,17 @@ int32_t S_PlaySound(int32_t num)
|
||||||
else g_soundlocks[num]++;
|
else g_soundlocks[num]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
j = 0;
|
||||||
|
|
||||||
|
while (j < MAXSOUNDINSTANCES && g_sounds[num].SoundOwner[j].voice > 0)
|
||||||
|
j++;
|
||||||
|
|
||||||
|
if (j >= MAXSOUNDINSTANCES)
|
||||||
|
{
|
||||||
|
g_soundlocks[num]--;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
voice = (g_sounds[num].m&1) ?
|
voice = (g_sounds[num].m&1) ?
|
||||||
FX_PlayLoopedAuto(g_sounds[num].ptr, g_sounds[num].soundsiz, 0, -1,
|
FX_PlayLoopedAuto(g_sounds[num].ptr, g_sounds[num].soundsiz, 0, -1,
|
||||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].soundsiz, 65536 + num) :
|
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].soundsiz, 65536 + num) :
|
||||||
|
@ -602,6 +614,9 @@ int32_t S_PlaySound(int32_t num)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_sounds[num].num++;
|
||||||
|
g_sounds[num].SoundOwner[j].i = -1;
|
||||||
|
g_sounds[num].SoundOwner[j].voice = voice;
|
||||||
return voice;
|
return voice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,115 +626,46 @@ int32_t A_PlaySound(uint32_t num, int32_t i)
|
||||||
return i < 0 ? S_PlaySound(num) : S_PlaySound3D(num, i, (vec3_t *)&sprite[i]);
|
return i < 0 ? S_PlaySound(num) : S_PlaySound3D(num, i, (vec3_t *)&sprite[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_StopSound(int32_t num)
|
void S_StopEnvSound(int32_t num, int32_t i)
|
||||||
{
|
{
|
||||||
int32_t iter = 0;
|
int32_t j, iter = 0;
|
||||||
|
|
||||||
if (num < 0 || num > g_maxSoundPos || g_sounds[num].num <= 0)
|
if (num < 0 || num > g_maxSoundPos || g_sounds[num].num <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
retry:
|
do
|
||||||
|
|
||||||
if (iter > MAXSOUNDINSTANCES)
|
|
||||||
{
|
{
|
||||||
int32_t j=MAXSOUNDINSTANCES-1;
|
if (iter++ > MAXSOUNDINSTANCES<<1)
|
||||||
|
|
||||||
initprintf(OSD_ERROR "S_StopSound(): too many iterations! The following IDs are still active for sound %d:\n", num);
|
|
||||||
for (; j>=0; j--)
|
|
||||||
if (g_sounds[num].SoundOwner[j].voice)
|
|
||||||
initprintf("slot %d, voice %d, sprite %d\n", j, g_sounds[num].SoundOwner[j].voice, g_sounds[num].SoundOwner[j].i);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
int32_t j=MAXSOUNDINSTANCES-1;
|
|
||||||
|
|
||||||
iter++;
|
|
||||||
|
|
||||||
for (; j>=0; j--)
|
|
||||||
{
|
{
|
||||||
if (g_sounds[num].SoundOwner[j].voice)
|
initprintf(OSD_ERROR "S_StopEnvSound(): too many iterations! The following IDs are still active for sound %d:\n", num);
|
||||||
{
|
for (j=MAXSOUNDINSTANCES-1; j>=0; j--)
|
||||||
if (g_sounds[num].SoundOwner[j].voice <= FX_Ok || g_sounds[num].SoundOwner[j].voice > ud.config.NumVoices)
|
if (g_sounds[num].SoundOwner[j].i == i)
|
||||||
{
|
initprintf(OSD_ERROR "slot %d, voice %d, sprite %d\n", j, g_sounds[num].SoundOwner[j].voice, g_sounds[num].SoundOwner[j].i);
|
||||||
initprintf(OSD_ERROR "S_StopSound(): bad voice %d for sound ID %d index %d!\n", g_sounds[num].SoundOwner[j].voice, num, j);
|
return;
|
||||||
mutex_lock(&s_mutex);
|
|
||||||
dq[dnum++] = (num * MAXSOUNDINSTANCES) + j;
|
|
||||||
mutex_unlock(&s_mutex);
|
|
||||||
S_Cleanup();
|
|
||||||
goto retry;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (FX_SoundActive(g_sounds[num].SoundOwner[j].voice))
|
|
||||||
FX_StopSound(g_sounds[num].SoundOwner[j].voice);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mutex_lock(&s_mutex);
|
|
||||||
dq[dnum++] = (num * MAXSOUNDINSTANCES) + j;
|
|
||||||
mutex_unlock(&s_mutex);
|
|
||||||
}
|
|
||||||
S_Cleanup();
|
|
||||||
goto retry;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void S_StopEnvSound(int32_t num,int32_t i)
|
for (j=MAXSOUNDINSTANCES-1; j>=0; j--)
|
||||||
{
|
|
||||||
int32_t iter = 0;
|
|
||||||
|
|
||||||
if (num < 0 || num > g_maxSoundPos || g_sounds[num].num <= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
retry:
|
|
||||||
if (iter > MAXSOUNDINSTANCES)
|
|
||||||
{
|
|
||||||
int32_t j=MAXSOUNDINSTANCES-1;
|
|
||||||
|
|
||||||
initprintf(OSD_ERROR "S_StopEnvSound(): too many iterations! The following IDs are still active for sound %d:\n", num);
|
|
||||||
for (; j>=0; j--)
|
|
||||||
if (g_sounds[num].SoundOwner[j].i == i)
|
|
||||||
initprintf("slot %d, voice %d, sprite %d\n", j, g_sounds[num].SoundOwner[j].voice, g_sounds[num].SoundOwner[j].i);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
int32_t j=MAXSOUNDINSTANCES-1;
|
|
||||||
|
|
||||||
iter++;
|
|
||||||
|
|
||||||
for (; j>=0; j--)
|
|
||||||
{
|
{
|
||||||
if (g_sounds[num].SoundOwner[j].i == i)
|
if (i == -1 || g_sounds[num].SoundOwner[j].i == i)
|
||||||
{
|
{
|
||||||
if (g_sounds[num].SoundOwner[j].voice <= FX_Ok || g_sounds[num].SoundOwner[j].voice > ud.config.NumVoices)
|
if (g_sounds[num].SoundOwner[j].voice <= FX_Ok || g_sounds[num].SoundOwner[j].voice > ud.config.NumVoices)
|
||||||
{
|
|
||||||
initprintf(OSD_ERROR "S_StopEnvSound(): bad voice %d for sound ID %d index %d!\n", g_sounds[num].SoundOwner[j].voice, num, j);
|
initprintf(OSD_ERROR "S_StopEnvSound(): bad voice %d for sound ID %d index %d!\n", g_sounds[num].SoundOwner[j].voice, num, j);
|
||||||
mutex_lock(&s_mutex);
|
else if (FX_SoundActive(g_sounds[num].SoundOwner[j].voice))
|
||||||
dq[dnum++] = (num * MAXSOUNDINSTANCES) + j;
|
|
||||||
mutex_unlock(&s_mutex);
|
|
||||||
S_Cleanup();
|
|
||||||
goto retry;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (FX_SoundActive(g_sounds[num].SoundOwner[j].voice))
|
|
||||||
FX_StopSound(g_sounds[num].SoundOwner[j].voice);
|
FX_StopSound(g_sounds[num].SoundOwner[j].voice);
|
||||||
else
|
|
||||||
{
|
|
||||||
// FX_SoundActive returning false could mean one of two things: we asked to stop the sound
|
|
||||||
// right when it was done playing, or we lost track of a voice somewhere (didn't get the callback)
|
|
||||||
// the first scenario resolves itself, and this addresses the second
|
|
||||||
|
|
||||||
mutex_lock(&s_mutex);
|
// FX_SoundActive returning false could mean one of two things: we asked to stop the sound
|
||||||
dq[dnum++] = (num * MAXSOUNDINSTANCES) + j;
|
// right when it was done playing, or we lost track of a voice somewhere (didn't get the callback)
|
||||||
mutex_unlock(&s_mutex);
|
// the first scenario resolves itself, and this addresses the second
|
||||||
}
|
|
||||||
|
mutex_lock(&s_mutex);
|
||||||
|
dq[dnum++] = (num * MAXSOUNDINSTANCES) + j;
|
||||||
|
mutex_unlock(&s_mutex);
|
||||||
S_Cleanup();
|
S_Cleanup();
|
||||||
goto retry;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
while (j >= 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_Update(void)
|
void S_Update(void)
|
||||||
|
|
Loading…
Reference in a new issue