Merge tag 'quakespasm-0.94.6' into qss

This commit is contained in:
Shpoike 2022-07-15 14:56:57 +01:00
commit 1b911ae1f8
28 changed files with 306 additions and 303 deletions

View File

@ -7,14 +7,14 @@
<sect> About <p>
<url url="http://quakespasm.sourceforge.net" name="QuakeSpasm">
is a modern, cross-platform Quake engine based on <url url="http://www.celephais.net/fitzquake" name="FitzQuake">.
QuakeSpasm is a modern cross-platform Quake engine based on FitzQuake.
</p><p>
It includes support for 64 bit CPUs and custom music playback, a new
sound driver, some graphical niceities, and numerous bug-fixes and other improvements.
</p><p>
Quakespasm utilizes either the SDL or SDL2 frameworks, so choose which one works best for you.
SDL is probably less buggy, but SDL2 has nicer features and smoother mouse input - though no CD support.
Quakespasm utilizes SDL-1.2 or SDL2 frameworks, choose one which works best for you.
SDL2 has nicer features, smoother mouse input and better support for newer operating systems,
but no CD-ROM support.
<sect> Downloads <p>
@ -50,8 +50,8 @@ Quakespasm can play various external music formats, including MP3, OGG and FLAC.
<itemize>
<item>Tracks should be named like "track02.ogg", "track03.ogg" ... (there is no track01) and placed into "Quake/id1/music".
<item>Unix users may need some extra libraries installed: "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG.
<item>As of 0.90.0, music is played back at 44100 Hz by default with no need to adjust "-sndspeed".
<item>Use the "-noextmusic" option to disable this feature.
<item>As of 0.90.0, music is played back at 44100 Hz by default with no need to adjust "-sndspeed".
<item>See <url url="Quakespasm-Music.txt"> for more details.
</itemize>
@ -122,15 +122,11 @@ Compile time options include
<item><bf>make SDL_CONFIG=</bf><em>/PATH/TO/sdl-config</em> for unusual SDL installations
<item><bf>make USE_SDL2=1</bf> to compile against SDL2 instead of SDL-1.2
</itemize>
<sect1> Windows <p>
QuakeSpasm developers cross-compile windows binaries using <url url="http://mingw-w64.sf.net" name="MinGW-w64"> and <url url="https://mingw.osdn.io" name="MinGW">.
The project can also be built using Microsoft Visual Studio 2005 and newer versions.</p>
<sect1> Mac OS X <p>
A Quakespasm App (including program launcher and update framework) can be made using the <bf>Xcode</bf> template found in the MacOSX directory.
Alternatively, have a look at <bf>Makefile.darwin</bf> for more instructions on building from a console.
</p>
@ -140,6 +136,17 @@ QuakeSpasm 0.94.0 has initial support for playing the 2021 re-release content: C
<sect> Changes<p>
<sect1> Changes in 0.94.6<p>
<itemize>
<item> Server protocol size check fixes for sounds and particles.
<item> An invalid memory access fix in the jpg screenshot writer.
<item> Basic dependency tracking in Makefiles.
<item> Backported a few fixes to the bundled SDL2-2.0.22 version.
<item> Minor build fix for C++ compilers.
<item> Other small improvements elsewhere in the code.
</itemize>
</p>
<sect1> Changes in 0.94.5<p>
<itemize>
<item> Compatibility with new SDL2 versioning scheme.
@ -323,24 +330,20 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<item> Prevent a possible buffer overflow in Cbuf_Execute (old Q1/Q2 bug).
<item> Prevent a possible vulnerability in MSG_ReadString (old Q1/Q2 bug).
</itemize>
<sect2> Visual improvements
<itemize>
<item> New cvars r_lavaalpha, r_slimealpha, r_telealpha for fine-tuning specific liquid opacities (from DirectQ/RMQEngine, non-archived, default to 0), and new worldspawn keys _wateralpha, _lavaalpha, _slimealpha, _telealpha, _skyfog (unique to Quakespasm, similar to the behaviour of the "fog" worldspawn key).
<item> GLSL gamma is now supported on older hardware without NPOT extension.
</itemize>
<sect2> Interface improvements
<itemize>
<item> New r_pos command to show player position.
<item> NaN detection in traceline with "developer 1" set now warns instead of errors.
</itemize>
<sect2> Code cleanup / Other
<itemize>
<item> Update third-party libraries.
</itemize>
<sect2> Raised limits
<itemize>
<item> Default max_edicts 8192 (was 2048) and no longer saved to config.cfg.
@ -362,13 +365,11 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<item> Fix viewmodel not lerping on extended-limit maps.
<item> Fix crash on out-of-bounds skin number.
</itemize>
<sect2> Performance
<itemize>
<item> Use multithreaded OpenGL on OS X for better performance.
<item> New, faster mdl renderer using GLSL. Disable with "-noglslalias".
</itemize>
<sect2> Visual improvements
<itemize>
<item> New gamma correction implementation using GLSL. Fixes all known gamma issues (affecting the full display, persisting after quitting, or darkening the screen on OS X). Disable with "-noglslgamma".
@ -376,7 +377,6 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<item> Shadows use stencil buffer to avoid overlapping artifacts (from MarkV.)
<item> r_noshadow_list cvar added (from MarkV.)
</itemize>
<sect2> Interface improvements
<itemize>
<item> Support pausing demo playback with the "pause" command.
@ -385,7 +385,6 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<item> Silence "exceeded standard limit" messages unless developer cvar is >= 1.
<item> Some spam moved from developer 1 to 2: "can't find tga/lit/ent", "trying to load ent", "bad chunk length", "meshing", "PR_AlocStringSlots: realloc'ing"
</itemize>
<sect2> Code cleanup
<itemize>
<item> Clean up IDE project files to build on fresh systems.
@ -594,7 +593,6 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<item>Changes to cvar persistence gl_flashblend (default 0), r_shadow, r_wateralpha, r_dynamic, r_novis
</itemize>
<sect> Copyright <p>
<itemize>
<item>Quake and Quakespasm are released under the <url url="http://www.gnu.org/licenses/gpl-2.0.html" name="GNU GENERAL PUBLIC LICENSE Version 2">

View File

@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.94.5</string>
<string>0.94.6</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>LSApplicationCategoryType</key>

View File

@ -71,7 +71,7 @@ assert can have unique static variables associated with it.
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
# define SDL_FUNCTION __func__
#elif ((__GNUC__ >= 2) || defined(_MSC_VER) || defined (__WATCOMC__))
#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__))
# define SDL_FUNCTION __FUNCTION__
#else
# define SDL_FUNCTION "???"

View File

@ -1,2 +1,2 @@
#define SDL_REVISION "@1594e60f8c154d3c8cea175fe88694e5aaf5e7bc"
#define SDL_REVISION "@a788189020ac220e3c44e1383e0a1621b3309f8f"
#define SDL_REVISION_NUMBER 0

View File

@ -61,6 +61,8 @@ extern "C" {
*/
#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */
/**
* \brief A collection of pixels used in software blitting.
*
@ -88,7 +90,7 @@ typedef struct SDL_Surface
SDL_Rect clip_rect; /**< Read-only */
/** info for fast blit mapping to other surfaces */
struct SDL_BlitMap *map; /**< Private */
SDL_BlitMap *map; /**< Private */
/** Reference count -- used when freeing surface */
int refcount; /**< Read-mostly */

View File

@ -34,7 +34,7 @@
#define _begin_code_h
#ifndef SDL_DEPRECATED
# if (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */
# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */
# define SDL_DEPRECATED __attribute__((deprecated))
# else
# define SDL_DEPRECATED

View File

@ -55,7 +55,7 @@ PKG_CONFIG ?= pkg-config
CPUFLAGS=
LDFLAGS =
DFLAGS ?=
CFLAGS ?= -Wall -Wno-trigraphs
CFLAGS ?= -Wall -Wno-trigraphs -MMD
CFLAGS += $(call check_gcc,-std=gnu11,)
CFLAGS += $(CPUFLAGS)
ifneq ($(DEBUG),0)
@ -65,7 +65,7 @@ do_strip=
else
DFLAGS += -DNDEBUG
CFLAGS += -O2
# -fno-asynchronous-unwind-tables
#CFLAGS += -fno-asynchronous-unwind-tables
CFLAGS += $(call check_gcc,-fweb,)
CFLAGS += $(call check_gcc,-frename-registers,)
cmd_strip=$(STRIP) $(1)
@ -198,23 +198,8 @@ endif
LIBS := $(COMMON_LIBS) $(NET_LIBS) $(CODECLIBS)
# ---------------------------
# targets
# ---------------------------
.PHONY: clean debug release
DEFAULT_TARGET := quakespasm
# ---------------------------
# rules
# ---------------------------
%.o: %.c
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
# ----------------------------------------------------------------------------
# objects
# ----------------------------------------------------------------------------
# ---------------------------
MUSIC_OBJS:= bgmusic.o \
snd_codec.o \
@ -236,7 +221,6 @@ SYSOBJ_GL_VID:= gl_vidsdl.o
SYSOBJ_NET := net_bsd.o net_udp.o
SYSOBJ_SYS := pl_linux.o sys_sdl_unix.o
SYSOBJ_MAIN:= main_sdl.o
SYSOBJ_RES :=
GLOBJS = \
gl_refrag.o \
@ -303,24 +287,32 @@ OBJS := strlcat.o \
sv_user.o \
world.o \
zone.o \
$(SYSOBJ_SYS) $(SYSOBJ_MAIN) $(SYSOBJ_RES)
$(SYSOBJ_SYS) $(SYSOBJ_MAIN)
# ------------------------
# Linux build rules
# ------------------------
# ---------------------------
# targets / rules
# ---------------------------
.PHONY: clean debug release
DEFAULT_TARGET := quakespasm
all: $(DEFAULT_TARGET)
%.o: %.c
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
quakespasm: $(OBJS)
$(LINKER) $(OBJS) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@
$(call do_strip,$@)
image.o: lodepng.c lodepng.h stb_image_write.h
release: quakespasm
debug:
$(error Use "make DEBUG=1")
clean:
rm -f $(shell find . \( -name '*~' -o -name '#*#' -o -name '*.o' -o -name '*.res' -o -name $(DEFAULT_TARGET) \) -print)
$(RM) *.o *.d $(DEFAULT_TARGET)
install: quakespasm
cp quakespasm /usr/local/games/quake
sinclude $(OBJS:.o=.d)

View File

@ -50,12 +50,12 @@ CC ?= gcc
LINKER = $(CC)
LIPO ?= lipo
STRIP ?= strip
STRIP ?= strip -S
CPUFLAGS=
LDFLAGS =
DFLAGS ?=
CFLAGS ?= -Wall
CFLAGS ?= -Wall -MMD
# @rpath can be used when targeting 10.5+
USE_RPATH=0
# require 10.5 for 64 bit builds
@ -97,7 +97,7 @@ do_strip=
else
DFLAGS += -DNDEBUG
CFLAGS += -O2
# -fno-asynchronous-unwind-tables
#CFLAGS += -fno-asynchronous-unwind-tables
CFLAGS += $(call check_gcc,-fweb,)
CFLAGS += $(call check_gcc,-frename-registers,)
cmd_strip=$(STRIP) $(1)
@ -222,27 +222,8 @@ endif
LIBS := $(COMMON_LIBS) $(NET_LIBS) $(CODEC_LINK) $(CODECLIBS)
# ---------------------------
# targets
# ---------------------------
.PHONY: clean debug release
DEFAULT_TARGET := quakespasm
# ---------------------------
# rules
# ---------------------------
%.o: %.c
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
%.o: %.m
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
%.o: ../MacOSX/%.m
$(CC) $(DFLAGS) -c -I../MacOSX $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
# ----------------------------------------------------------------------------
# objects
# ----------------------------------------------------------------------------
# ---------------------------
MUSIC_OBJS:= bgmusic.o \
snd_codec.o \
@ -331,21 +312,34 @@ OBJS := strlcat.o \
sv_user.o \
world.o \
zone.o \
$(SYSOBJ_SYS) $(SYSOBJ_LAUNCHER) $(SYSOBJ_MAIN)
$(SYSOBJ_SYS) \
$(SYSOBJ_LAUNCHER) $(SYSOBJ_MAIN)
# ------------------------
# darwin build rules
# ------------------------
# ---------------------------
# targets / rules
# ---------------------------
.PHONY: clean debug release
DEFAULT_TARGET := quakespasm
all: $(DEFAULT_TARGET)
%.o: %.c
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
%.o: %.m
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
%.o: ../MacOSX/%.m
$(CC) $(DFLAGS) -c -I../MacOSX $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
quakespasm: $(OBJS)
$(LINKER) $(OBJS) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@
$(call do_strip,$@)
image.o: lodepng.c lodepng.h stb_image_write.h
release: quakespasm
debug:
$(error Use "make DEBUG=1")
clean:
rm -f $(shell find . \( -name '*~' -o -name '#*#' -o -name '*.o' -o -name '*.res' -o -name $(DEFAULT_TARGET) \) -print)
$(RM) *.o *.d $(DEFAULT_TARGET)
sinclude $(OBJS:.o=.d)

View File

@ -53,7 +53,7 @@ LDFLAGS += -Wl,--large-address-aware #don't crash out with larger hunk sizes
LDFLAGS += $(QSS_LDFLAGS)
LDFLAGS += -Wl,--no-insert-timestamp #prevent non-determinism in the exe header. mustn't be used for dlls.
DFLAGS ?=
CFLAGS ?= -m32 -Wall -Wno-trigraphs
CFLAGS ?= -m32 -Wall -Wno-trigraphs -MMD
CFLAGS += $(call check_gcc,-std=gnu11,)
CFLAGS += $(CPUFLAGS)
CFLAGS += $(QSS_CFLAGS)
@ -64,7 +64,7 @@ do_strip=
else
DFLAGS += -DNDEBUG
CFLAGS += -O2
# -fno-asynchronous-unwind-tables
#CFLAGS += -fno-asynchronous-unwind-tables
CFLAGS += $(call check_gcc,-fweb,)
CFLAGS += $(call check_gcc,-frename-registers,)
cmd_strip=$(STRIP) $(1)
@ -185,25 +185,8 @@ endif
LIBS := $(COMMON_LIBS) $(NET_LIBS) $(CODEC_LINK) $(CODECLIBS)
# ---------------------------
# targets
# ---------------------------
.PHONY: clean debug release
DEFAULT_TARGET := quakespasm.exe
# ---------------------------
# rules
# ---------------------------
%.o: %.c
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
%.res: ../Windows/%.rc
$(WINDRES) -I../Windows --output-format=coff --target=pe-i386 -o $@ $<
# ----------------------------------------------------------------------------
# objects
# ----------------------------------------------------------------------------
# ---------------------------
MUSIC_OBJS:= bgmusic.o \
snd_codec.o \
@ -291,21 +274,31 @@ OBJS := strlcat.o \
sv_user.o \
world.o \
zone.o \
$(SYSOBJ_SYS) $(SYSOBJ_MAIN) $(SYSOBJ_RES)
$(SYSOBJ_SYS) $(SYSOBJ_MAIN)
# ------------------------
# MinGW build rules
# ------------------------
# ---------------------------
# targets / rules
# ---------------------------
quakespasm.exe: $(OBJS)
$(LINKER) $(OBJS) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@
.PHONY: clean debug release
DEFAULT_TARGET := quakespasm.exe
all: $(DEFAULT_TARGET)
%.o: %.c
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
%.res: ../Windows/%.rc
$(WINDRES) -I../Windows --output-format=coff --target=pe-i386 -o $@ $<
quakespasm.exe: $(OBJS) $(SYSOBJ_RES)
$(LINKER) $(OBJS) $(SYSOBJ_RES) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@
$(call do_strip,$@)
image.o: lodepng.c lodepng.h stb_image_write.h
release: quakespasm.exe
debug:
$(error Use "make DEBUG=1")
clean:
rm -f $(shell find . \( -name '*~' -o -name '#*#' -o -name '*.o' -o -name '*.res' -o -name $(DEFAULT_TARGET) \) -print)
$(RM) *.o *.d *.res $(DEFAULT_TARGET)
sinclude $(OBJS:.o=.d)

View File

@ -50,7 +50,7 @@ LDFLAGS = -m64 -mwindows -static-libgcc
LDFLAGS += $(QSS_LDFLAGS)
LDFLAGS += -Wl,--no-insert-timestamp #prevent non-determinism in the exe header. mustn't be used for dlls.
DFLAGS ?=
CFLAGS ?= -m64 -Wall -Wno-trigraphs
CFLAGS ?= -m64 -Wall -Wno-trigraphs -MMD
CFLAGS += $(call check_gcc,-std=gnu11,)
CFLAGS += $(CPUFLAGS)
CFLAGS += $(QSS_CFLAGS)
@ -61,7 +61,7 @@ do_strip=
else
DFLAGS += -DNDEBUG
CFLAGS += -O2
# -fno-asynchronous-unwind-tables
#CFLAGS += -fno-asynchronous-unwind-tables
CFLAGS += $(call check_gcc,-fweb,)
CFLAGS += $(call check_gcc,-frename-registers,)
cmd_strip=$(STRIP) $(1)
@ -177,25 +177,8 @@ endif
LIBS := $(COMMON_LIBS) $(NET_LIBS) $(CODEC_LINK) $(CODECLIBS)
# ---------------------------
# targets
# ---------------------------
.PHONY: clean debug release
DEFAULT_TARGET := quakespasm.exe
# ---------------------------
# rules
# ---------------------------
%.o: %.c
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
%.res: ../Windows/%.rc
$(WINDRES) -I../Windows --output-format=coff --target=pe-x86-64 -o $@ $<
# ----------------------------------------------------------------------------
# objects
# ----------------------------------------------------------------------------
# ---------------------------
MUSIC_OBJS:= bgmusic.o \
snd_codec.o \
@ -283,21 +266,31 @@ OBJS := strlcat.o \
sv_user.o \
world.o \
zone.o \
$(SYSOBJ_SYS) $(SYSOBJ_MAIN) $(SYSOBJ_RES)
$(SYSOBJ_SYS) $(SYSOBJ_MAIN)
# ------------------------
# MinGW-w64 build rules
# ------------------------
# ---------------------------
# targets / rules
# ---------------------------
quakespasm.exe: $(OBJS)
$(LINKER) $(OBJS) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@
.PHONY: clean debug release
DEFAULT_TARGET := quakespasm.exe
all: $(DEFAULT_TARGET)
%.o: %.c
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
%.res: ../Windows/%.rc
$(WINDRES) -I../Windows --output-format=coff --target=pe-x86-64 -o $@ $<
quakespasm.exe: $(OBJS) $(SYSOBJ_RES)
$(LINKER) $(OBJS) $(SYSOBJ_RES) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@
$(call do_strip,$@)
image.o: lodepng.c lodepng.h stb_image_write.h
release: quakespasm.exe
debug:
$(error Use "make DEBUG=1")
clean:
rm -f $(shell find . \( -name '*~' -o -name '#*#' -o -name '*.o' -o -name '*.res' -o -name $(DEFAULT_TARGET) \) -print)
$(RM) *.o *.d *.res $(DEFAULT_TARGET)
sinclude $(OBJS:.o=.d)

View File

@ -301,7 +301,9 @@ void Cmd_Exec_f (void)
Cbuf_InsertText ("\n"); //just in case there was no trailing \n.
Cbuf_InsertText (f);
if (f != default_cfg) {
Hunk_FreeToLowMark (mark);
}
}

View File

@ -42,8 +42,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#undef min
#undef max
#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \
(defined(__cplusplus) && (__cplusplus >= 201103L))
#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L))
#define GENERIC_TYPES(x, separator) \
x(int, i) separator \
x(unsigned int, u) separator \

View File

@ -588,9 +588,7 @@ typedef struct targaheader_s {
unsigned char pixel_size, attributes;
} targaheader_t;
#define TARGAHEADERSIZE 18 //size on disk
targaheader_t targa_header;
#define TARGAHEADERSIZE 18 /* size on disk */
int fgetLittleShort (FILE *f)
{
@ -676,6 +674,7 @@ byte *Image_LoadTGA (FILE *fin, int *width, int *height)
int realrow; //johnfitz -- fix for upside-down targas
qboolean upside_down; //johnfitz -- fix for upside-down targas
stdio_buffer_t *buf;
targaheader_t targa_header;
targa_header.id_length = fgetc(fin);
targa_header.colormap_type = fgetc(fin);
@ -1152,10 +1151,11 @@ qboolean Image_WritePNG (const char *name, byte *data, int width, int height, in
#endif
lodepng_state_cleanup (&state);
free (png);
lodepng_free (png); /* png was allocated by lodepng */
free (filters);
if (!upsidedown)
if (!upsidedown) {
free (flipped);
}
return (error == 0);
}

View File

@ -87,6 +87,8 @@ int main(int argc, char *argv[])
Sys_Init();
Sys_Printf("Initializing "ENGINE_NAME_AND_VER"\n");
parms.memsize = DEFAULT_MEMORY;
if (COM_CheckParm("-heapsize"))
{ //in kb
@ -106,13 +108,6 @@ int main(int argc, char *argv[])
if (!parms.membase)
Sys_Error ("Not enough memory free; check disk space\n");
Sys_Printf("Quake %1.2f (c) id Software\n", VERSION);
Sys_Printf("GLQuake %1.2f (c) id Software\n", GLQUAKE_VERSION);
Sys_Printf("FitzQuake %1.2f (c) John Fitzgibbons\n", FITZQUAKE_VERSION);
Sys_Printf("FitzQuake SDL port (c) SleepwalkR, Baker\n");
Sys_Printf("QuakeSpasm " QUAKESPASM_VER_STRING " (c) Ozkan Sezer, Eric Wasylishen & others\n");
Sys_Printf("QuakeSpasm-Spiked (c) Spike\n");
Sys_Printf("Host_Init\n");
Host_Init();

View File

@ -37,7 +37,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define FITZQUAKE_VERSION 0.85 //johnfitz
#define QUAKESPASM_VERSION 0.94
#define QUAKESPASM_VER_PATCH 5 // helper to print a string like 0.94.4
#define QUAKESPASM_VER_PATCH 6 // helper to print a string like 0.94.6
#ifndef QUAKESPASM_VER_SUFFIX
#define QUAKESPASM_VER_SUFFIX // optional version suffix string literal like "-beta1"
#endif

View File

@ -93,6 +93,7 @@ static qboolean S_XMP_CodecOpenStream (snd_stream_t *stream)
moddata = (byte *) Hunk_Alloc(len);
FS_fread(moddata, 1, len, &stream->fh);
if (xmp_load_module_from_memory(c, moddata, len) < 0) {
Hunk_FreeToLowMark(mark);
Con_DPrintf("Could not load module %s\n", stream->name);
goto err1;
}

View File

@ -381,7 +381,7 @@ static int stbiw__jpg_processDU(stbi__write_context *s, int *bitBuf, int *bitCnt
int startpos = i;
int nrzeroes;
unsigned short bits[2];
for (; DU[i]==0 && i<=end0pos; ++i) {
for (; i<=end0pos && DU[i]==0; ++i) {
}
nrzeroes = i-startpos;
if ( nrzeroes >= 16 ) {

View File

@ -1565,7 +1565,7 @@ void SV_StartParticle (vec3_t org, vec3_t dir, int color, int count)
{
int i, v;
if (sv.datagram.cursize > MAX_DATAGRAM-16)
if (sv.datagram.cursize > MAX_DATAGRAM-18)
return;
MSG_WriteByte (&sv.datagram, svc_particle);
MSG_WriteCoord (&sv.datagram, org[0], sv.protocolflags);
@ -1601,7 +1601,7 @@ Larger attenuations will drop off. (max 4 attenuation)
*/
void SV_StartSound2 (edict_t *entity, float *origin, int channel, const char *sample, int volume, float attenuation, float speed, int flags, float timeoffset)
{
unsigned int sound_num, ent;
unsigned int sound_num, ent, msgsize;
int i, field_mask, client_mask;
int p;
client_t *cl;
@ -1623,7 +1623,7 @@ void SV_StartSound2 (edict_t *entity, float *origin, int channel, const char *sa
else if (channel > 7)
Con_DPrintf ("SV_StartSound: channel = %i\n", channel);
if (sv.datagram.cursize > MAX_DATAGRAM-16)
if (sv.datagram.cursize > MAX_DATAGRAM-21)
return;
// find precache number for sound
@ -1641,11 +1641,12 @@ void SV_StartSound2 (edict_t *entity, float *origin, int channel, const char *sa
ent = NUM_FOR_EDICT(entity);
msgsize = 2+4+2+12;
field_mask = 0;
if (volume != DEFAULT_SOUND_PACKET_VOLUME)
field_mask |= SND_VOLUME;
field_mask |= SND_VOLUME, msgsize+=1;
if (attenuation != DEFAULT_SOUND_PACKET_ATTENUATION)
field_mask |= SND_ATTENUATION;
field_mask |= SND_ATTENUATION, msgsize+=1;
//johnfitz -- PROTOCOL_FITZQUAKE
if (ent >= 8192 || channel >= 8)
@ -1662,9 +1663,10 @@ void SV_StartSound2 (edict_t *entity, float *origin, int channel, const char *sa
if (flags & CF_NOREVERB) field_mask |= SND_FTE_NOREVERB;
if (flags & CF_FOLLOW) field_mask |= SND_FTE_FOLLOW;
if (flags & CF_NOREPLACE) field_mask |= SND_FTE_NOREPLACE;
if (flags & CF_SENDVELOCITY) field_mask |= SND_FTE_VELOCITY;
if (speed && speed != 1) field_mask |= SND_FTE_PITCHADJ;
if (timeoffset) field_mask |= SND_FTE_TIMEOFS;
if (flags & CF_SENDVELOCITY) field_mask |= SND_FTE_VELOCITY, msgsize+=6;
if (speed && speed != 1) field_mask |= SND_DP_PITCH, msgsize+=2;
if (timeoffset) field_mask |= SND_FTE_TIMEOFS, msgsize+=2;
if (field_mask > 0xff) field_mask |= SND_FTE_MOREFLAGS, msgsize += 9; //too lazy to figure out the actual size.
//
for (p = 0; p < svs.maxclients; p++)
@ -1690,6 +1692,9 @@ void SV_StartSound2 (edict_t *entity, float *origin, int channel, const char *sa
if (!(cl->protocol_pext2&PEXT2_REPLACEMENTDELTAS))
client_mask &= (SND_VOLUME|SND_ATTENUATION|SND_LARGEENTITY|SND_LARGESOUND);
if (msg->cursize+msgsize > msg->maxsize)
continue; //sacrifice it so as to not crash the client out.
// directed messages go only to the entity the are targeted on
MSG_WriteByte (msg, svc_sound);
MSG_WriteByte (msg, client_mask&0xff);
@ -1779,6 +1784,9 @@ void SV_LocalSound (client_t *client, const char *sample)
field_mask = SND_LARGESOUND;
}
if (msg->cursize+19 > msg->maxsize)
return;
MSG_WriteByte (msg, svc_sound);
MSG_WriteByte (msg, field_mask);
if (field_mask & SND_ATTENUATION)

View File

@ -18,14 +18,13 @@
<P>
<H2><A NAME="toc3">3.</A> <A HREF="Quakespasm.html#s3">Hints </A></H2>
<UL>
<LI><A NAME="toc3.1">3.1</A> <A HREF="Quakespasm.html#ss3.1">Music Playback</A>
<LI><A NAME="toc3.2">3.2</A> <A HREF="Quakespasm.html#ss3.2">Controller Support</A>
</UL>
<P>
<H2><A NAME="toc4">4.</A> <A HREF="Quakespasm.html#s4">Compiling and Installation</A></H2>
<UL>
<LI><A NAME="toc4.1">4.1</A> <A HREF="Quakespasm.html#ss4.1">Linux/Unix </A>
<LI><A NAME="toc4.2">4.2</A> <A HREF="Quakespasm.html#ss4.2">Windows </A>
@ -33,32 +32,33 @@
<LI><A NAME="toc4.4">4.4</A> <A HREF="Quakespasm.html#ss4.4">Quake '2021 re-release' </A>
</UL>
<P>
<H2><A NAME="toc5">5.</A> <A HREF="Quakespasm.html#s5">Changes</A></H2>
<H2><A NAME="toc5">5.</A> <A HREF="Quakespasm.html#s5">Changes</A></H2>
<UL>
<LI><A NAME="toc5.1">5.1</A> <A HREF="Quakespasm.html#ss5.1">Changes in 0.94.5</A>
<LI><A NAME="toc5.2">5.2</A> <A HREF="Quakespasm.html#ss5.2">Changes in 0.94.4</A>
<LI><A NAME="toc5.3">5.3</A> <A HREF="Quakespasm.html#ss5.3">Changes in 0.94.3</A>
<LI><A NAME="toc5.4">5.4</A> <A HREF="Quakespasm.html#ss5.4">Changes in 0.94.2</A>
<LI><A NAME="toc5.5">5.5</A> <A HREF="Quakespasm.html#ss5.5">Changes in 0.94.1</A>
<LI><A NAME="toc5.6">5.6</A> <A HREF="Quakespasm.html#ss5.6">Changes in 0.94.0</A>
<LI><A NAME="toc5.7">5.7</A> <A HREF="Quakespasm.html#ss5.7">Changes in 0.93.2</A>
<LI><A NAME="toc5.8">5.8</A> <A HREF="Quakespasm.html#ss5.8">Changes in 0.93.1</A>
<LI><A NAME="toc5.9">5.9</A> <A HREF="Quakespasm.html#ss5.9">Changes in 0.93.0</A>
<LI><A NAME="toc5.10">5.10</A> <A HREF="Quakespasm.html#ss5.10">Changes in 0.92.1</A>
<LI><A NAME="toc5.11">5.11</A> <A HREF="Quakespasm.html#ss5.11">Changes in 0.92.0</A>
<LI><A NAME="toc5.12">5.12</A> <A HREF="Quakespasm.html#ss5.12">Changes in 0.91.0</A>
<LI><A NAME="toc5.13">5.13</A> <A HREF="Quakespasm.html#ss5.13">Changes in 0.90.1</A>
<LI><A NAME="toc5.14">5.14</A> <A HREF="Quakespasm.html#ss5.14">Changes in 0.90.0</A>
<LI><A NAME="toc5.15">5.15</A> <A HREF="Quakespasm.html#ss5.15">Changes in 0.85.9</A>
<LI><A NAME="toc5.16">5.16</A> <A HREF="Quakespasm.html#ss5.16">Changes in 0.85.8</A>
<LI><A NAME="toc5.17">5.17</A> <A HREF="Quakespasm.html#ss5.17">Changes in 0.85.7</A>
<LI><A NAME="toc5.18">5.18</A> <A HREF="Quakespasm.html#ss5.18">Changes in 0.85.6</A>
<LI><A NAME="toc5.19">5.19</A> <A HREF="Quakespasm.html#ss5.19">Changes in 0.85.5</A>
<LI><A NAME="toc5.20">5.20</A> <A HREF="Quakespasm.html#ss5.20">Changes in 0.85.4</A>
<LI><A NAME="toc5.21">5.21</A> <A HREF="Quakespasm.html#ss5.21">Changes in 0.85.3</A>
<LI><A NAME="toc5.22">5.22</A> <A HREF="Quakespasm.html#ss5.22">Changes in 0.85.2</A>
<LI><A NAME="toc5.23">5.23</A> <A HREF="Quakespasm.html#ss5.23">Changes in 0.85.1</A>
<LI><A NAME="toc5.1">5.1</A> <A HREF="Quakespasm.html#ss5.1">Changes in 0.94.6</A>
<LI><A NAME="toc5.2">5.2</A> <A HREF="Quakespasm.html#ss5.2">Changes in 0.94.5</A>
<LI><A NAME="toc5.3">5.3</A> <A HREF="Quakespasm.html#ss5.3">Changes in 0.94.4</A>
<LI><A NAME="toc5.4">5.4</A> <A HREF="Quakespasm.html#ss5.4">Changes in 0.94.3</A>
<LI><A NAME="toc5.5">5.5</A> <A HREF="Quakespasm.html#ss5.5">Changes in 0.94.2</A>
<LI><A NAME="toc5.6">5.6</A> <A HREF="Quakespasm.html#ss5.6">Changes in 0.94.1</A>
<LI><A NAME="toc5.7">5.7</A> <A HREF="Quakespasm.html#ss5.7">Changes in 0.94.0</A>
<LI><A NAME="toc5.8">5.8</A> <A HREF="Quakespasm.html#ss5.8">Changes in 0.93.2</A>
<LI><A NAME="toc5.9">5.9</A> <A HREF="Quakespasm.html#ss5.9">Changes in 0.93.1</A>
<LI><A NAME="toc5.10">5.10</A> <A HREF="Quakespasm.html#ss5.10">Changes in 0.93.0</A>
<LI><A NAME="toc5.11">5.11</A> <A HREF="Quakespasm.html#ss5.11">Changes in 0.92.1</A>
<LI><A NAME="toc5.12">5.12</A> <A HREF="Quakespasm.html#ss5.12">Changes in 0.92.0</A>
<LI><A NAME="toc5.13">5.13</A> <A HREF="Quakespasm.html#ss5.13">Changes in 0.91.0</A>
<LI><A NAME="toc5.14">5.14</A> <A HREF="Quakespasm.html#ss5.14">Changes in 0.90.1</A>
<LI><A NAME="toc5.15">5.15</A> <A HREF="Quakespasm.html#ss5.15">Changes in 0.90.0</A>
<LI><A NAME="toc5.16">5.16</A> <A HREF="Quakespasm.html#ss5.16">Changes in 0.85.9</A>
<LI><A NAME="toc5.17">5.17</A> <A HREF="Quakespasm.html#ss5.17">Changes in 0.85.8</A>
<LI><A NAME="toc5.18">5.18</A> <A HREF="Quakespasm.html#ss5.18">Changes in 0.85.7</A>
<LI><A NAME="toc5.19">5.19</A> <A HREF="Quakespasm.html#ss5.19">Changes in 0.85.6</A>
<LI><A NAME="toc5.20">5.20</A> <A HREF="Quakespasm.html#ss5.20">Changes in 0.85.5</A>
<LI><A NAME="toc5.21">5.21</A> <A HREF="Quakespasm.html#ss5.21">Changes in 0.85.4</A>
<LI><A NAME="toc5.22">5.22</A> <A HREF="Quakespasm.html#ss5.22">Changes in 0.85.3</A>
<LI><A NAME="toc5.23">5.23</A> <A HREF="Quakespasm.html#ss5.23">Changes in 0.85.2</A>
<LI><A NAME="toc5.24">5.24</A> <A HREF="Quakespasm.html#ss5.24">Changes in 0.85.1</A>
</UL>
<P>
<H2><A NAME="toc6">6.</A> <A HREF="Quakespasm.html#s6">Copyright </A></H2>
@ -72,14 +72,14 @@
<HR>
<H2><A NAME="s1">1.</A> <A HREF="#toc1">About </A></H2>
<P>
<A HREF="http://quakespasm.sourceforge.net">QuakeSpasm</A>
is a modern, cross-platform Quake engine based on
<A HREF="http://www.celephais.net/fitzquake">FitzQuake</A>.</P>
<P>QuakeSpasm is a modern cross-platform Quake engine based on FitzQuake.</P>
<P>It includes support for 64 bit CPUs and custom music playback, a new
sound driver, some graphical niceities, and numerous bug-fixes and other improvements.</P>
<P>Quakespasm utilizes either the SDL or SDL2 frameworks, so choose which one works best for you.
SDL is probably less buggy, but SDL2 has nicer features and smoother mouse input - though no CD support.</P>
<P>Quakespasm utilizes SDL-1.2 or SDL2 frameworks, choose one which works best for you.
SDL2 has nicer features, smoother mouse input and better support for newer operating systems,
but no CD-ROM support.</P>
<H2><A NAME="s2">2.</A> <A HREF="#toc2">Downloads </A></H2>
<P>
@ -117,8 +117,8 @@ where DRIVER may be alsa, dsp, pulse, esd ...</LI>
<UL>
<LI>Tracks should be named like "track02.ogg", "track03.ogg" ... (there is no track01) and placed into "Quake/id1/music".</LI>
<LI>Unix users may need some extra libraries installed: "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG.</LI>
<LI>As of 0.90.0, music is played back at 44100 Hz by default with no need to adjust "-sndspeed".</LI>
<LI>Use the "-noextmusic" option to disable this feature.</LI>
<LI>As of 0.90.0, music is played back at 44100 Hz by default with no need to adjust "-sndspeed".</LI>
<LI>See
<A HREF="Quakespasm-Music.txt">Quakespasm-Music.txt</A> for more details.</LI>
</UL>
@ -174,13 +174,12 @@ where DRIVER may be alsa, dsp, pulse, esd ...</LI>
<H2><A NAME="s4">4.</A> <A HREF="#toc4">Compiling and Installation</A></H2>
<P>See the Downloads section to get the sourcecode, then below for platform specific instructions.
Quakespasm can also be built with the cross-platform Codeblocks.<BR>
Quakespasm's (optional) custom data is now stored in the file <B>quakespasm.pak</B>. This file should be placed alongside your quakespasm binary and <B>id1</B> directory.</P>
<H2><A NAME="ss4.1">4.1</A> <A HREF="#toc4.1">Linux/Unix </A>
</H2>
<P>After extracting the source tarball, "cd Quake" and edit the Makefile for music options. </P>
<P><EM>Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files.</EM></P>
<P>Then type "make" to compile the program, and copy the "quakespasm" binary (and "quakespasm.pak") to your Quake game directory.<BR>
@ -195,25 +194,37 @@ Compile time options include
<H2><A NAME="ss4.2">4.2</A> <A HREF="#toc4.2">Windows </A>
</H2>
<P>QuakeSpasm developers cross-compile windows binaries using
<A HREF="http://mingw-w64.sf.net">MinGW-w64</A> and
<A HREF="https://mingw.osdn.io">MinGW</A>.</P>
<P>The project can also be built using Microsoft Visual Studio 2005 and newer versions.</P>
<H2><A NAME="ss4.3">4.3</A> <A HREF="#toc4.3">Mac OS X </A>
</H2>
<P>A Quakespasm App (including program launcher and update framework) can be made using the <B>Xcode</B> template found in the MacOSX directory.</P>
<P>Alternatively, have a look at <B>Makefile.darwin</B> for more instructions on building from a console.</P>
<H2><A NAME="ss4.4">4.4</A> <A HREF="#toc4.4">Quake '2021 re-release' </A>
</H2>
<P>QuakeSpasm 0.94.0 has initial support for playing the 2021 re-release content: Copy the quakespasm binary to your rerelease installation and run quakespasm as you normally do.</P>
<H2><A NAME="s5">5.</A> <A HREF="#toc5">Changes</A></H2>
<H2><A NAME="ss5.1">5.1</A> <A HREF="#toc5.1">Changes in 0.94.5</A>
<H2><A NAME="ss5.1">5.1</A> <A HREF="#toc5.1">Changes in 0.94.6</A>
</H2>
<P>
<UL>
<LI> Server protocol size check fixes for sounds and particles.</LI>
<LI> An invalid memory access fix in the jpg screenshot writer.</LI>
<LI> Basic dependency tracking in Makefiles.</LI>
<LI> Backported a few fixes to the bundled SDL2-2.0.22 version.</LI>
<LI> Minor build fix for C++ compilers.</LI>
<LI> Other small improvements elsewhere in the code.</LI>
</UL>
</P>
<H2><A NAME="ss5.2">5.2</A> <A HREF="#toc5.2">Changes in 0.94.5</A>
</H2>
<P>
<UL>
@ -226,7 +237,7 @@ Compile time options include
</UL>
</P>
<H2><A NAME="ss5.2">5.2</A> <A HREF="#toc5.2">Changes in 0.94.4</A>
<H2><A NAME="ss5.3">5.3</A> <A HREF="#toc5.3">Changes in 0.94.4</A>
</H2>
<P>
<UL>
@ -248,7 +259,7 @@ Compile time options include
</UL>
</P>
<H2><A NAME="ss5.3">5.3</A> <A HREF="#toc5.3">Changes in 0.94.3</A>
<H2><A NAME="ss5.4">5.4</A> <A HREF="#toc5.4">Changes in 0.94.3</A>
</H2>
<P>
<UL>
@ -258,7 +269,7 @@ Compile time options include
</UL>
</P>
<H2><A NAME="ss5.4">5.4</A> <A HREF="#toc5.4">Changes in 0.94.2</A>
<H2><A NAME="ss5.5">5.5</A> <A HREF="#toc5.5">Changes in 0.94.2</A>
</H2>
<P>
<UL>
@ -269,7 +280,7 @@ Compile time options include
</UL>
</P>
<H2><A NAME="ss5.5">5.5</A> <A HREF="#toc5.5">Changes in 0.94.1</A>
<H2><A NAME="ss5.6">5.6</A> <A HREF="#toc5.6">Changes in 0.94.1</A>
</H2>
<P>
<UL>
@ -277,7 +288,7 @@ Compile time options include
</UL>
</P>
<H2><A NAME="ss5.6">5.6</A> <A HREF="#toc5.6">Changes in 0.94.0</A>
<H2><A NAME="ss5.7">5.7</A> <A HREF="#toc5.7">Changes in 0.94.0</A>
</H2>
<P>
<UL>
@ -302,7 +313,7 @@ Compile time options include
</UL>
</P>
<H2><A NAME="ss5.7">5.7</A> <A HREF="#toc5.7">Changes in 0.93.2</A>
<H2><A NAME="ss5.8">5.8</A> <A HREF="#toc5.8">Changes in 0.93.2</A>
</H2>
<P>
<UL>
@ -315,7 +326,7 @@ Compile time options include
</UL>
</P>
<H2><A NAME="ss5.8">5.8</A> <A HREF="#toc5.8">Changes in 0.93.1</A>
<H2><A NAME="ss5.9">5.9</A> <A HREF="#toc5.9">Changes in 0.93.1</A>
</H2>
<P>
<UL>
@ -329,7 +340,7 @@ Compile time options include
</UL>
</P>
<H2><A NAME="ss5.9">5.9</A> <A HREF="#toc5.9">Changes in 0.93.0</A>
<H2><A NAME="ss5.10">5.10</A> <A HREF="#toc5.10">Changes in 0.93.0</A>
</H2>
<P>
<UL>
@ -372,7 +383,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.10">5.10</A> <A HREF="#toc5.10">Changes in 0.92.1</A>
<H2><A NAME="ss5.11">5.11</A> <A HREF="#toc5.11">Changes in 0.92.1</A>
</H2>
<P>
<UL>
@ -382,7 +393,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.11">5.11</A> <A HREF="#toc5.11">Changes in 0.92.0</A>
<H2><A NAME="ss5.12">5.12</A> <A HREF="#toc5.12">Changes in 0.92.0</A>
</H2>
<P>
<UL>
@ -401,8 +412,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Updated some of the third-party libraries. Other fixes/clean-ups.</LI>
</UL>
</P>
<H2><A NAME="ss5.12">5.12</A> <A HREF="#toc5.12">Changes in 0.91.0</A>
<H2><A NAME="ss5.13">5.13</A> <A HREF="#toc5.13">Changes in 0.91.0</A>
</H2>
<H3>Bugfixes</H3>
<P>
@ -452,7 +462,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.13">5.13</A> <A HREF="#toc5.13">Changes in 0.90.1</A>
<H2><A NAME="ss5.14">5.14</A> <A HREF="#toc5.14">Changes in 0.90.1</A>
</H2>
<H3>Bugfixes</H3>
<P>
@ -502,7 +512,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.14">5.14</A> <A HREF="#toc5.14">Changes in 0.90.0</A>
<H2><A NAME="ss5.15">5.15</A> <A HREF="#toc5.15">Changes in 0.90.0</A>
</H2>
<P>
<UL>
@ -548,7 +558,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.15">5.15</A> <A HREF="#toc5.15">Changes in 0.85.9</A>
<H2><A NAME="ss5.16">5.16</A> <A HREF="#toc5.16">Changes in 0.85.9</A>
</H2>
<P>
<UL>
@ -572,7 +582,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.16">5.16</A> <A HREF="#toc5.16">Changes in 0.85.8</A>
<H2><A NAME="ss5.17">5.17</A> <A HREF="#toc5.17">Changes in 0.85.8</A>
</H2>
<P>
<UL>
@ -597,7 +607,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.17">5.17</A> <A HREF="#toc5.17">Changes in 0.85.7</A>
<H2><A NAME="ss5.18">5.18</A> <A HREF="#toc5.18">Changes in 0.85.7</A>
</H2>
<P>
<UL>
@ -615,7 +625,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.18">5.18</A> <A HREF="#toc5.18">Changes in 0.85.6</A>
<H2><A NAME="ss5.19">5.19</A> <A HREF="#toc5.19">Changes in 0.85.6</A>
</H2>
<P>
<UL>
@ -626,7 +636,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.19">5.19</A> <A HREF="#toc5.19">Changes in 0.85.5</A>
<H2><A NAME="ss5.20">5.20</A> <A HREF="#toc5.20">Changes in 0.85.5</A>
</H2>
<P>
<UL>
@ -645,7 +655,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.20">5.20</A> <A HREF="#toc5.20">Changes in 0.85.4</A>
<H2><A NAME="ss5.21">5.21</A> <A HREF="#toc5.21">Changes in 0.85.4</A>
</H2>
<P>
<UL>
@ -663,7 +673,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.21">5.21</A> <A HREF="#toc5.21">Changes in 0.85.3</A>
<H2><A NAME="ss5.22">5.22</A> <A HREF="#toc5.22">Changes in 0.85.3</A>
</H2>
<P>
<UL>
@ -685,7 +695,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.22">5.22</A> <A HREF="#toc5.22">Changes in 0.85.2</A>
<H2><A NAME="ss5.23">5.23</A> <A HREF="#toc5.23">Changes in 0.85.2</A>
</H2>
<P>
<UL>
@ -703,7 +713,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
</UL>
</P>
<H2><A NAME="ss5.23">5.23</A> <A HREF="#toc5.23">Changes in 0.85.1</A>
<H2><A NAME="ss5.24">5.24</A> <A HREF="#toc5.24">Changes in 0.85.1</A>
</H2>
<P>
<UL>

View File

@ -19,39 +19,40 @@
4.4 Quake '2021 re-release'
5. Changes
5.1 Changes in 0.94.5
5.2 Changes in 0.94.4
5.3 Changes in 0.94.3
5.4 Changes in 0.94.2
5.5 Changes in 0.94.1
5.6 Changes in 0.94.0
5.7 Changes in 0.93.2
5.8 Changes in 0.93.1
5.9 Changes in 0.93.0
5.10 Changes in 0.92.1
5.11 Changes in 0.92.0
5.12 Changes in 0.91.0
5.12.1 Bugfixes
5.12.2 Visual improvements
5.12.3 Interface improvements
5.12.4 Code cleanup / Other
5.12.5 Raised limits
5.13 Changes in 0.90.1
5.1 Changes in 0.94.6
5.2 Changes in 0.94.5
5.3 Changes in 0.94.4
5.4 Changes in 0.94.3
5.5 Changes in 0.94.2
5.6 Changes in 0.94.1
5.7 Changes in 0.94.0
5.8 Changes in 0.93.2
5.9 Changes in 0.93.1
5.10 Changes in 0.93.0
5.11 Changes in 0.92.1
5.12 Changes in 0.92.0
5.13 Changes in 0.91.0
5.13.1 Bugfixes
5.13.2 Performance
5.13.3 Visual improvements
5.13.4 Interface improvements
5.13.5 Code cleanup
5.14 Changes in 0.90.0
5.15 Changes in 0.85.9
5.16 Changes in 0.85.8
5.17 Changes in 0.85.7
5.18 Changes in 0.85.6
5.19 Changes in 0.85.5
5.20 Changes in 0.85.4
5.21 Changes in 0.85.3
5.22 Changes in 0.85.2
5.23 Changes in 0.85.1
5.13.2 Visual improvements
5.13.3 Interface improvements
5.13.4 Code cleanup / Other
5.13.5 Raised limits
5.14 Changes in 0.90.1
5.14.1 Bugfixes
5.14.2 Performance
5.14.3 Visual improvements
5.14.4 Interface improvements
5.14.5 Code cleanup
5.15 Changes in 0.90.0
5.16 Changes in 0.85.9
5.17 Changes in 0.85.8
5.18 Changes in 0.85.7
5.19 Changes in 0.85.6
5.20 Changes in 0.85.5
5.21 Changes in 0.85.4
5.22 Changes in 0.85.3
5.23 Changes in 0.85.2
5.24 Changes in 0.85.1
6. Copyright
7. Contact
@ -66,17 +67,15 @@
1. About
QuakeSpasm <http://quakespasm.sourceforge.net> is a modern, cross-
platform Quake engine based on FitzQuake
<http://www.celephais.net/fitzquake>.
QuakeSpasm is a modern cross-platform Quake engine based on FitzQuake.
It includes support for 64 bit CPUs and custom music playback, a new
sound driver, some graphical niceities, and numerous bug-fixes and
other improvements.
Quakespasm utilizes either the SDL or SDL2 frameworks, so choose which
one works best for you. SDL is probably less buggy, but SDL2 has
nicer features and smoother mouse input - though no CD support.
Quakespasm utilizes SDL-1.2 or SDL2 frameworks, choose one which works
best for you. SDL2 has nicer features, smoother mouse input and better
support for newer operating systems, but no CD-ROM support.
2. Downloads
@ -131,11 +130,11 @@
o Unix users may need some extra libraries installed: "libmad" or
"libmpg123" for MP3, and "libogg" and "libvorbis" for OGG.
o Use the "-noextmusic" option to disable this feature.
o As of 0.90.0, music is played back at 44100 Hz by default with no
need to adjust "-sndspeed".
o Use the "-noextmusic" option to disable this feature.
o See Quakespasm-Music.txt for more details.
3.2. Controller Support
@ -266,7 +265,22 @@
5. Changes
5.1. Changes in 0.94.5
5.1. Changes in 0.94.6
o Server protocol size check fixes for sounds and particles.
o An invalid memory access fix in the jpg screenshot writer.
o Basic dependency tracking in Makefiles.
o Backported a few fixes to the bundled SDL2-2.0.22 version.
o Minor build fix for C++ compilers.
o Other small improvements elsewhere in the code.
5.2. Changes in 0.94.5
o Compatibility with new SDL2 versioning scheme.
@ -283,7 +297,7 @@
o Backported a few fixes to the bundled SDL2-2.0.22 version.
5.2. Changes in 0.94.4
5.3. Changes in 0.94.4
o Fixed getting stuck with loading plaque upon attempting to load a
bad save from the menu
@ -319,7 +333,7 @@
patches.
5.3. Changes in 0.94.3
5.4. Changes in 0.94.3
o Handle sky textures with non-standard sizes and warn about them
(e.g. ad_tears)
@ -331,7 +345,7 @@
o Updated included SDL2 to latest version 2.0.18.
5.4. Changes in 0.94.2
5.5. Changes in 0.94.2
o 2021 rerelease: Support for playing the latest update.
@ -342,13 +356,13 @@
o 2021 rerelease: Look for QuakeEX.kpf under userdir, too.
5.5. Changes in 0.94.1
5.6. Changes in 0.94.1
o Fix lightmap issues after vkQuake surface mark/cull optimizations
merge (sf.net bug/50)
5.6. Changes in 0.94.0
5.7. Changes in 0.94.0
o Initial support for playing the 'Quake 2021 re-release' content
(thanks to Andrei Drexler for bulk of the work, Guillaume Plourde
@ -397,7 +411,7 @@
o Source repository moved to git.
5.7. Changes in 0.93.2
5.8. Changes in 0.93.2
o Lightmaps are now dynamically allocated (from QSS), and
BLOCK_WIDTH/HEIGHT raised from 128 to 256.
@ -417,7 +431,7 @@
o Update the third-party libraries. Other fixes/cleanups.
5.8. Changes in 0.93.1
5.9. Changes in 0.93.1
o Fixed a fog regression which was introduced in 0.93.0.
@ -435,7 +449,7 @@
o Update the third-party libraries. Other fixes/cleanups.
5.9. Changes in 0.93.0
5.10. Changes in 0.93.0
o Raise default "joy_deadzone_trigger" cvar to 0.2.
@ -520,7 +534,7 @@
o Update the third-party libraries.
5.10. Changes in 0.92.1
5.11. Changes in 0.92.1
o Fixed large menu scale factors (was broken in 0.92.0).
@ -529,7 +543,7 @@
o Updated some of the third-party libraries.
5.11. Changes in 0.92.0
5.12. Changes in 0.92.0
o SDL2 Game Controller support.
@ -566,9 +580,9 @@
o Updated some of the third-party libraries. Other fixes/clean-ups.
5.12. Changes in 0.91.0
5.13. Changes in 0.91.0
5.12.1. Bugfixes
5.13.1. Bugfixes
o Fix unwanted fog mode change upon video restart.
@ -604,7 +618,7 @@
o Prevent a possible vulnerability in MSG_ReadString (old Q1/Q2 bug).
5.12.2. Visual improvements
5.13.2. Visual improvements
o New cvars r_lavaalpha, r_slimealpha, r_telealpha for fine-tuning
specific liquid opacities (from DirectQ/RMQEngine, non-archived,
@ -615,18 +629,18 @@
o GLSL gamma is now supported on older hardware without NPOT
extension.
5.12.3. Interface improvements
5.13.3. Interface improvements
o New r_pos command to show player position.
o NaN detection in traceline with "developer 1" set now warns instead
of errors.
5.12.4. Code cleanup / Other
5.13.4. Code cleanup / Other
o Update third-party libraries.
5.12.5. Raised limits
5.13.5. Raised limits
o Default max_edicts 8192 (was 2048) and no longer saved to
config.cfg.
@ -638,9 +652,9 @@
o Raised MAX_SFX to 1024 (was 512).
5.13. Changes in 0.90.1
5.14. Changes in 0.90.1
5.13.1. Bugfixes
5.14.1. Bugfixes
o Fix dynamic light artifact where changing lightmap are rendered one
frame late (bug introduced in 0.90.0).
@ -663,13 +677,13 @@
o Fix crash on out-of-bounds skin number.
5.13.2. Performance
5.14.2. Performance
o Use multithreaded OpenGL on OS X for better performance.
o New, faster mdl renderer using GLSL. Disable with "-noglslalias".
5.13.3. Visual improvements
5.14.3. Visual improvements
o New gamma correction implementation using GLSL. Fixes all known
gamma issues (affecting the full display, persisting after
@ -683,7 +697,7 @@
o r_noshadow_list cvar added (from MarkV.)
5.13.4. Interface improvements
5.14.4. Interface improvements
o Support pausing demo playback with the "pause" command.
@ -700,14 +714,14 @@
"trying to load ent", "bad chunk length", "meshing",
"PR_AlocStringSlots: realloc'ing"
5.13.5. Code cleanup
5.14.5. Code cleanup
o Clean up IDE project files to build on fresh systems.
o Update 3rd-party libraries.
5.14. Changes in 0.90.0
5.15. Changes in 0.90.0
o Fix issues on Windows systems with DPI scaling.
@ -815,7 +829,7 @@
o Other fixes and clean-ups.
5.15. Changes in 0.85.9
5.16. Changes in 0.85.9
o Fixes for several undefined behaviors in C code (gcc-4.8 support.)
@ -862,7 +876,7 @@
o Several other minor fixes/cleanups.
5.16. Changes in 0.85.8
5.17. Changes in 0.85.8
o Made Quake shareware 1.00 and 1.01 versions to be recognized
properly.
@ -909,7 +923,7 @@
o Miscellaneous source code cleanups.
5.17. Changes in 0.85.7
5.18. Changes in 0.85.7
o Added support for cross-level demo playback
@ -935,7 +949,7 @@
o Several other small changes mostly invisible to the end-user
5.18. Changes in 0.85.6
5.19. Changes in 0.85.6
o More work for string buffer safety
@ -948,7 +962,7 @@
o Minor SDL video fixes.
5.19. Changes in 0.85.5
5.20. Changes in 0.85.5
o SDL input driver updated adding native keymap and dead key support
to the console
@ -979,7 +993,7 @@
o Several code updates from uHexen2 project, several code cleanups.
5.20. Changes in 0.85.4
5.21. Changes in 0.85.4
o Implement music (OGG, MP3, WAV) playback
@ -1007,7 +1021,7 @@
o Other minor sound and cdaudio updates
5.21. Changes in 0.85.3
5.22. Changes in 0.85.3
o Fix the "-dedicated" option (thanks Oz) and add platform specific
networking code (default) rather than SDL_net
@ -1044,7 +1058,7 @@
some other CD tweaks.
5.22. Changes in 0.85.2
5.23. Changes in 0.85.2
o Replace the old "Screen size" slider with a "Scale" slider
@ -1072,7 +1086,7 @@
o Add OSX Makefile (tested?)
5.23. Changes in 0.85.1
5.24. Changes in 0.85.1
o 64 bit CPU support

View File

@ -71,7 +71,7 @@ assert can have unique static variables associated with it.
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
# define SDL_FUNCTION __func__
#elif ((__GNUC__ >= 2) || defined(_MSC_VER) || defined (__WATCOMC__))
#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__))
# define SDL_FUNCTION __FUNCTION__
#else
# define SDL_FUNCTION "???"

View File

@ -1,2 +1,2 @@
#define SDL_REVISION "@1594e60f8c154d3c8cea175fe88694e5aaf5e7bc"
#define SDL_REVISION "@a788189020ac220e3c44e1383e0a1621b3309f8f"
#define SDL_REVISION_NUMBER 0

View File

@ -61,6 +61,8 @@ extern "C" {
*/
#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */
/**
* \brief A collection of pixels used in software blitting.
*
@ -88,7 +90,7 @@ typedef struct SDL_Surface
SDL_Rect clip_rect; /**< Read-only */
/** info for fast blit mapping to other surfaces */
struct SDL_BlitMap *map; /**< Private */
SDL_BlitMap *map; /**< Private */
/** Reference count -- used when freeing surface */
int refcount; /**< Read-mostly */

View File

@ -34,7 +34,7 @@
#define _begin_code_h
#ifndef SDL_DEPRECATED
# if (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */
# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */
# define SDL_DEPRECATED __attribute__((deprecated))
# else
# define SDL_DEPRECATED

Binary file not shown.

Binary file not shown.