This is a subset of csqc, with alternative entry points that can be invoked by compat wrappers.
Also added sv_gameplayfix_setmodelrealbox cvar. Default value of 1 matches QuakeSpasm, whereas a value of 0 matches vanilla quake's behaviour.
md3 support
quoth/etc bug fix
strzone bug fix
png/jpg replacement wall textures
rewrote mdl rendering to always use arrays, relaxing vertex+tri limits.
removed static ents limit
fixed ambient_level not working at high framerates.
Was sent a sample map where the texture scale was such that the
CalcSurfaceExtents mins/maxs were calculated incorrectly because of the
use of 999999 not being large enough magnitude, leading to a crash later
(maxs-mins was negative).
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1671 af15c1b1-3010-417e-b628-4374ebc0bcbd
See: https://sourceforge.net/p/quakespasm/bugs/38/
Also move its initializer to Sky_Init() and use q_strlcpy() instead
of strcpy() for copying to it in Sky_LoadSkyBox().
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1669 af15c1b1-3010-417e-b628-4374ebc0bcbd
We do not know the order of ape, or lyrics3, or musicmatch tags,
so we loop until we consume all, scanning for each tag type once.
I don't yet care about freaky broken mp3 files with double tags.
<rant> MP3 standard has no metadata format, so everyone invented
their own thing, even with extensions, until ID3v2 became dominant:
Hence the impossible mess there.</rant>
Also remove inline directive from a few detection procedures there.
(updates from my code in SDL_mixer.)
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1664 af15c1b1-3010-417e-b628-4374ebc0bcbd
so that it can be used in snd_mpg123.c, too, if needed.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1658 af15c1b1-3010-417e-b628-4374ebc0bcbd
- Updates from my code in SDL_mixer:
- Fix APE header presence detection: APEv2 doesn't guarantee header.
We rely on bit31 of the flags field of the header/footer, instead.
- Add code to skip Lyrics3 v1 / v2 tags.
- Remove the non-standard 'Extended ID3v1' tag support: None of the
significant libraries like getID3, taglib or libid3tag support it.
Not supported in most, if not all mp3 players, either.
- The 'APE before ID3v1' was duplicated code because we removed the
TAG+ support: removed it.
- Add a FIXME note about handling possible double-ID3v1 tags.
- Add a FIXME note about order of tags at the end of the file.
- A few minor tidy-ups.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1656 af15c1b1-3010-417e-b628-4374ebc0bcbd
previously, it ignored any gcc with __GNUC_MINOR__ == 0.
(patch submitted to upstream at github as PR/120)
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1652 af15c1b1-3010-417e-b628-4374ebc0bcbd
this way, SDL will convert to hardware format for us if needed.
most of the times we do get what we want. however, for example,
the WASAPI backend of SDL2 returns AUDIO_F32LSB as the obtained
format (which is not an SDL thing but a WASAPI thing) and we do
not support that. the SDL2.dll we ship with has WASAPI disabled,
but if the user replaces our dll with a one with WASAPI enabled
(official libsdl.org build or his own build) then we refuse the
obtained AUDIO_F32LSB format and run without sound. after this
patch, such a thing is transparent to us.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1639 af15c1b1-3010-417e-b628-4374ebc0bcbd
( in case someone wants to build using C++ compilers. )
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1634 af15c1b1-3010-417e-b628-4374ebc0bcbd
This raises LMBLOCK_WIDTH/HEIGHT from 128 to 256 which should
be supported everywhere and decrease draw calls
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1628 af15c1b1-3010-417e-b628-4374ebc0bcbd
TODO: look at switching to Spike's mdl code from QSS
TODO: add "exceeds standard limit" warnings
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1626 af15c1b1-3010-417e-b628-4374ebc0bcbd
line that happened if a map had an empty string worldspawn key,
detected by ASan on macOS with demo_map.bsp from SlayerTest.
Also prevent the strcpy's from overflowing the buffers in case of long
keys.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1624 af15c1b1-3010-417e-b628-4374ebc0bcbd
( also see: https://bugzilla.libsdl.org/show_bug.cgi?id=4728 )
Instead of doing it 'as-we-go' every time, skip the tags at file-open
time only once.
The former implementation had the chance of not having the full tag in
the frame, that includes a possibility of even not having the complete
tag magic in the frame leading to not identifying a tag.
The new implementation skips all the tags at file-start and file-end,
and does that only once.
Also added are detection and skipping of extended ID3v1 and APEv1 tags.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1612 af15c1b1-3010-417e-b628-4374ebc0bcbd
magnitude of the "min" one. It was possible to erroneously cause a
"bad surface extents" error with face around +/- 100K units from the origin,
since "max" was initalized to -99999.
TODO: These should probably both be changed to FLT_MAX/-FLT_MAX.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1608 af15c1b1-3010-417e-b628-4374ebc0bcbd
Fixes writing past end of buffer (crashes on some OS'es) when saving xmasjam2018_qmaster1
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1607 af15c1b1-3010-417e-b628-4374ebc0bcbd
just replaced strncpy() with q_strlcpy().
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1592 af15c1b1-3010-417e-b628-4374ebc0bcbd
(excluded 64 bit warning fix commits 9ab58e3 and 116f5b2e for now)
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1573 af15c1b1-3010-417e-b628-4374ebc0bcbd
SDL man pages are wrong. e.g. their macosx cdrom backend returns some
negative value, but not strictly -1.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1569 af15c1b1-3010-417e-b628-4374ebc0bcbd
seems like a typo in original quake source.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1561 af15c1b1-3010-417e-b628-4374ebc0bcbd
issue seems to have been added in v0.90.1.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1560 af15c1b1-3010-417e-b628-4374ebc0bcbd
"joy_exponent_move" cvar.
Previously movement was linear.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1556 af15c1b1-3010-417e-b628-4374ebc0bcbd
Fixes https://sourceforge.net/p/quakespasm/bugs/26/
(travail qte1m2.bsp button near 2772 767 -584 hurting the player
sm179_otp.bsp: left button causing the player to get stuck)
This change should probably be applied to more places in pr_cmds.c
and elsewhere, but this specific change is enough to fix these corner
cases
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1554 af15c1b1-3010-417e-b628-4374ebc0bcbd
(patch by 'yoch', from https://github.com/lvandeve/lodepng/pull/66)
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1553 af15c1b1-3010-417e-b628-4374ebc0bcbd
Fixes a regression introduced in 0.93.0 when we switched from
fixed-function fog to GLSL (for world polys), reported by ItEndsWithTens
It was visible on large polygons.
For a test case, see: https://sourceforge.net/p/quakespasm/bugs/24/
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1544 af15c1b1-3010-417e-b628-4374ebc0bcbd
model to be less annoying when testing a broken mod
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1534 af15c1b1-3010-417e-b628-4374ebc0bcbd
metlslime says:
> I was the one that at added the blue checkerboard feature.
> I didn't realize at the time how many mods relied on the behavior of
> vanilla quake to show skin 0 when the mod asks for an invalid skin. So
> I now agree, the engine should replicate vanilla quake's permissive
> behavior and maybe just put up a non-spamy console warning when the
> bad skin is first set.
TODO: The warning is currently spammy (but only if developer 1).
Would be a bit of a pain to make non-spammy.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1532 af15c1b1-3010-417e-b628-4374ebc0bcbd
This is a bug from vanilla.
Shows up in qump_vingal.bsp from QUMP, which has func_illusionary
entities with "origin" "". Example are the torch holders before
the first door in the map.
Prior to this commit the vector would possibly get a garbage value,
depending on what was on the stack.
see: http://celephais.net/board/view_thread.php?id=61523&start=53&end=61
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1527 af15c1b1-3010-417e-b628-4374ebc0bcbd
this happens for maps that exceed the signon buffer and makes it a bit less annoying
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1499 af15c1b1-3010-417e-b628-4374ebc0bcbd
- change this and "SOLID_BSP without MOVETYPE_PUSH" to Host_Error (less annoying)
- print classname and origin of entity that caused the error
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1481 af15c1b1-3010-417e-b628-4374ebc0bcbd
Set to 1 to scale forward/side/up speed by "cl_movespeedkey" (usually 2), and make "speedkey" act as "slowkey".
Change "always run" menu option to offer
"off" (cl_alwaysrun 0, cl_forwardspeed 200, cl_backspeed 200),
"vanilla" (cl_alwaysrun 0, cl_forwardspeed 400, cl_backspeed 400) and
"quakespasm" (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200).
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1480 af15c1b1-3010-417e-b628-4374ebc0bcbd
connected (e.g. right after the engine boots.) make the 'entities'
command to only print when connected.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1479 af15c1b1-3010-417e-b628-4374ebc0bcbd
image.c: define LODEPNG_NO_COMPILE_CPP for lodepng.c.
image.c: define STB_IMAGE_WRITE_STATIC for stb_image_write.h
image.c: minor whitespace tidy-up.
stb_image_write.h: remove extern declaration for now non-existing
stbi_write_tga_with_rle (missed in commit r1468).
stb_image_write.h: comment out stbi_write_jpg_to_func() which quakespasm
doesn't use.
lodepng.c (lodepng_save_file): remove unneeded (char*) cast from buffer.
lodepng.c (lodepng_read32bitInt): make it static.
lodepng.c (lodepng_get_raw_size_lct): make it static, and move below to
the place it is actually used.
lodepng.c (lodepng_info_swap): remove (unused function).
lodepng.c (readChunk_zTXt,readChunk_iTXt,addChunk_zTXt, addChunk_iTXt):
add missing const to casts on const pointers in zlib_compress() calls.
(see: https://github.com/lvandeve/lodepng/pull/34).
lodepng.c (inflateHuffmanBlock): wrong error code if huffmanDecodeSymbol
fail. (see: https://github.com/lvandeve/lodepng/pull/52).
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1471 af15c1b1-3010-417e-b628-4374ebc0bcbd
in quakespasm, and remove all others.
- image.c: disable decoder, ancillary chunks and error text support
by defining the relevant LODEPNG_NO_??? macros.
(Image_WritePNG): make use of upsidedown parameter for symmetry
with Image_WriteJPG(). print an error message in case of encoding
failure if error text support is enabled.
(Image_WriteSTB): rename to Image_WriteJPG, adjust for jpg writing
only. remove the old Image_WriteJPG wrapper.
(enum imageformat_t): remove.
(CopyFlipped): constify the data parameter.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1468 af15c1b1-3010-417e-b628-4374ebc0bcbd
~3x faster than stb_image_write and similar file size
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1467 af15c1b1-3010-417e-b628-4374ebc0bcbd
Add optional format and quality args to "screenshot" command,
can specify tga, png, jpg
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1465 af15c1b1-3010-417e-b628-4374ebc0bcbd
when entering fullscreen. Fix VID_GetDesktopFullscreen() which
was incorrectly returning "true" in regular fullscreen mode.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1459 af15c1b1-3010-417e-b628-4374ebc0bcbd
Previously, the cast was implicit since abs() takes an int,
so there is no change in behaviour.
Suppresses a clang warning that we might want fabs().
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1451 af15c1b1-3010-417e-b628-4374ebc0bcbd
directly, but define proper macros for each attribute we do or may use.
also support MSC along the way for example with the noreturn attribute.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1440 af15c1b1-3010-417e-b628-4374ebc0bcbd
Previous value of 0.001 was probably too low, may have caused
"stuck" triggers:
http://celephais.net/board/view_thread.php?id=60452&start=2935
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1439 af15c1b1-3010-417e-b628-4374ebc0bcbd
QUAKESPASM_VER_STRING for it. revise the QS_STRINGIFY macros.
fixes "the not enough actual parameters for macro QS_STRINGIFY"
warnings from my VS2005.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1436 af15c1b1-3010-417e-b628-4374ebc0bcbd
4 buffers were: mod_novis, decompressed, checkpvs, and fatpvs.
Also fix fatbytes calculation in SV_FatPVS to match the other PVS
buffers, was (numleafs+31)>>3, changed to (numleafs+7)>>3.
I am assuming the previous was a bug/typo.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1434 af15c1b1-3010-417e-b628-4374ebc0bcbd
useful for capturing debug info e.g. "entities" command which prints
a lot.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1431 af15c1b1-3010-417e-b628-4374ebc0bcbd
Not convinced there are any issues with this, and it solves these
problems:
- change to new gamedir without execing quake.rc and exit: the
config.cfg in the new gamedir will be clobbered with the settings
from the previous gamedir.
- discrepancy between -game command line arg and "game" command.
Video mode is locked during the "exec quake.rc" to prevent the mode
from changing.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1417 af15c1b1-3010-417e-b628-4374ebc0bcbd
Consider any subdirectories of the com_basedir as mods, except for
.app bundles on posix systems. Previous code was too strict
as it required progs.dat or pak files, so it excluded map packs, etc.
(useful mods could contain almost anything, e.g. just a music directory,
just a config...)
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1416 af15c1b1-3010-417e-b628-4374ebc0bcbd
Refactor printing of QUAKESPASM_VERSION/QUAKESPASM_VER_PATCH to use a new
QUAKESPASM_VER_STRING macro.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1408 af15c1b1-3010-417e-b628-4374ebc0bcbd
This allows you to move the QS window to a different monitor and
then go fullscreen on that monitor. QS will still always start on
the primary monitor.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1407 af15c1b1-3010-417e-b628-4374ebc0bcbd
This is for emulating a low-resolution pixellated look,
or possibly as a performance boost on slow graphics cards.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1406 af15c1b1-3010-417e-b628-4374ebc0bcbd
on Windows, a regression introduced in the Host_Loadgame_f rewrite r1398
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1405 af15c1b1-3010-417e-b628-4374ebc0bcbd
(a macOS thing), because it blocks for a few seconds and then fails
(on my system anyway), so it's pointless.
Fixes an annoying startup pause on macOS, which was reported as
https://sourceforge.net/p/quakespasm/bugs/15/
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1403 af15c1b1-3010-417e-b628-4374ebc0bcbd
Prevents console spam on "developer 1" if a mod calls PF_VarString often (e.g. In the Shadows textbooks).
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1402 af15c1b1-3010-417e-b628-4374ebc0bcbd
+ avoids "Loadgame buffer overflow" when loading saves from QS-Spike/DarkPlaces containing large comments
+ removes ugly } hack
+ should be a bit faster as we avoid calling fgetc for every byte
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1398 af15c1b1-3010-417e-b628-4374ebc0bcbd
Found when trying to load e1-4.bsp from https://github.com/plankatron/quakemash
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1390 af15c1b1-3010-417e-b628-4374ebc0bcbd
Fix from QS-Spike.
TODO: replace all 9999.. constants used for min/max calculations with FLT_MAX/-FLT_MAX
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1389 af15c1b1-3010-417e-b628-4374ebc0bcbd
this is for a limit breaking map in developement. TODO: these can both be made dynamically
allocated, MarkV has applied this patch.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1388 af15c1b1-3010-417e-b628-4374ebc0bcbd
Rationale is AD was hitting this and just using non-static ents instead, which is counterproductive.
2048 matches QS-Spiked.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1387 af15c1b1-3010-417e-b628-4374ebc0bcbd
run against legacy flac <= 1.1.2 with LP64 systems.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1381 af15c1b1-3010-417e-b628-4374ebc0bcbd
in Visual Studio project files. fixes C4996 warnings: "'inet_ntoa': Use
inet_ntop() or InetNtop() instead" from VS2013 and newer.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1377 af15c1b1-3010-417e-b628-4374ebc0bcbd
to prepare for and test their upcoming 2.0.5 release.
- changed Makefile.darwin so that SDL2-386 builds target
10.6+ which is an SDL2-2.0.5 requirement.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1351 af15c1b1-3010-417e-b628-4374ebc0bcbd
sbar.c: In function 'Sbar_DrawInventory':
sbar.c:673:18: warning: '%3i' directive writing between 3 and 11 bytes into a region of size 6 [-Wformat-length=]
sprintf (num, "%3i", q_min(999,cl.stats[STAT_SHELLS+i])); //johnfitz -- cap displayed value to 999
^~~
sbar.c:673:17: note: directive argument in the range [-2147483648, 999]
sprintf (num, "%3i", q_min(999,cl.stats[STAT_SHELLS+i])); //johnfitz -- cap displayed value to 999
^~~~~
sbar.c:673:3: note: format output between 4 and 12 bytes into a destination of size 6
sprintf (num, "%3i", q_min(999,cl.stats[STAT_SHELLS+i])); //johnfitz -- cap displayed value to 999
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1346 af15c1b1-3010-417e-b628-4374ebc0bcbd
because EDICT_NUM() does it already. also move ent->free=false
statement to partial zero-fill case.
Host_ClearMemory(): remove check before free(sv.edicts)
SV_Init(): initialize sv.edicts to NULL (just paranoia)
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1319 af15c1b1-3010-417e-b628-4374ebc0bcbd
ED_Alloc(), therefore such ents will have uninitialized members.
This used to lead to bad crashes with e.g. Rubicon Rumble Pack maps
since svn r1286 when we began allocating sv.edicts using malloc and
only zero-filling when necessary. So, check against sv.num_edicts
and zero-fill the ent properly when necessary.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1318 af15c1b1-3010-417e-b628-4374ebc0bcbd
MAX_MAP_LEAFS: 65535 -> 70000
MAX_LIGHTMAPS: 256 -> 512
TODO: maybe drop static arrays based on MAX_MAP_LEAFS like, see R_InitVisCache in RMQEngine.
TODO: dynamically allocate the static `lightmaps` array as well; with this last limit increase it's 32MB.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1312 af15c1b1-3010-417e-b628-4374ebc0bcbd
(just a paranoid safeguard, shouldn't happen in real life.)
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1311 af15c1b1-3010-417e-b628-4374ebc0bcbd
from global to local context, and pass them as params to SV_Accelerate()
and SV_AirAccelerate().
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1309 af15c1b1-3010-417e-b628-4374ebc0bcbd
developer cheat to teleport to a given origin, optionally looking in a given direction.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1308 af15c1b1-3010-417e-b628-4374ebc0bcbd
The warning from gl_model.c:Mod_LoadTextures() seemed
like a real bug: Eric please check and confirm.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1301 af15c1b1-3010-417e-b628-4374ebc0bcbd
just in case the compiler toolchain is a multilib one.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1298 af15c1b1-3010-417e-b628-4374ebc0bcbd