Commit Graph

58 Commits

Author SHA1 Message Date
Eric Wasylishen 6924a94fa6 Mod_LoadAliasModel: don't corrupt memory if MAXALIASTRIS exceeded
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1625 af15c1b1-3010-417e-b628-4374ebc0bcbd
2019-09-12 04:06:55 +00:00
Eric Wasylishen 68faa57c6d CalcSurfaceExtents: adjust bogus initial "max" texture coord to match the
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
2019-03-18 07:22:54 +00:00
Ozkan Sezer 9dd0a76812 r1550 merged a bad patch. merging the correct one...
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1551 af15c1b1-3010-417e-b628-4374ebc0bcbd
2018-01-08 15:28:05 +00:00
Ozkan Sezer a7deed353e Mod_DecompressVis: warn every case of vis data buffer overrun, not once.
also remove the #if 0'ed out code.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1550 af15c1b1-3010-417e-b628-4374ebc0bcbd
2018-01-08 08:28:17 +00:00
Eric Wasylishen 413272b977 Mod_DecompressVis: don't overflow output buffer given invalid visdata
Fixes crash on death32c.bsp:
http://sourceforge.net/p/quakespasm/bugs/25/

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1548 af15c1b1-3010-417e-b628-4374ebc0bcbd
2018-01-08 05:02:14 +00:00
Ozkan Sezer a23a75efa3 gl_model.c (Mod_SetExtraFlags): remove bogus !mod->name check.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1535 af15c1b1-3010-417e-b628-4374ebc0bcbd
2017-11-16 07:00:02 +00:00
Eric Wasylishen d3377b9358 gl_model.c: (Mod_LoadModel): change Sys_Error to Host_Error for missing
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
2017-11-14 07:20:29 +00:00
Eric Wasylishen 6b2affaebc r_alias: add MF_HOLEY (0x4000) model flag, from QSS.
(MarkV compatible).
For more info see: http://celephais.net/board/view_thread.php?id=61351&start=1&end=1

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1463 af15c1b1-3010-417e-b628-4374ebc0bcbd
2017-08-04 19:45:11 +00:00
Eric Wasylishen e87a1b8d9d drop MAX_MAP_LEAFS limit and move 4 static buffers to use realloc().
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
2017-07-26 04:27:16 +00:00
Eric Wasylishen 4fe5f6956f Adjust "exceeds standard limit of" debug warnings to include the actual QS limit.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1386 af15c1b1-3010-417e-b628-4374ebc0bcbd
2017-03-30 06:26:16 +00:00
Eric Wasylishen fc78971b59 Only print "maps/*.lit loaded" messages on develoepr 2, the are spam on developer 1.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1357 af15c1b1-3010-417e-b628-4374ebc0bcbd
2016-10-22 18:38:58 +00:00
Ozkan Sezer f3af6bf791 Fixed -Wmisleading-indentation warnings from new gcc6.
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
2016-04-28 21:47:12 +00:00
Eric Wasylishen e007116a5d Alias model VBO renderer: restructure so each model is stored in a separate VBO and load them in Mod_LoadAliasModel, rather than R_NewMap.
Initially I thought that we would never need to draw an alias model that hadn't been precached when R_NewMap runs, but this assumption turned out to be incorrect. This fixes the issue where progs/bolt.mdl wasn't rendering in the Scourge Done Slick demos.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1253 af15c1b1-3010-417e-b628-4374ebc0bcbd
2015-09-20 20:10:49 +00:00
Eric Wasylishen 01faf4e5b6 new cvars: r_lavaalpha, r_slimealpha, r_telealpha for fine-tuning specific liquid opacities (from DirectQ, RMQEngine)
new worldspawn keys: _wateralpha, _lavaalpha, _slimealpha, _telealpha, _skyfog (unique to Quakespasm)

The lava/slime/telealpha cvars are non-archived, and default to 0, which means to use the value of r_wateralpha, so they have no effect by default.

The worldspawn keys allow custom maps to set these values in a way that only applies while the map is loaded, and doesn't change the cvar value. (similar to the behaviour of the "fog" worldspawn key.) They are accepted with or without the underscore, like "fog".

see also:
http://forums.insideqc.com/viewtopic.php?f=3&t=5532
http://celephais.net/board/view_thread.php?id=60452&start=937

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1238 af15c1b1-3010-417e-b628-4374ebc0bcbd
2015-07-26 21:51:25 +00:00
Eric Wasylishen 064753591f gl_model.c: Mod_LoadTextures: avoid crash on broken maps such as jam2_tronyn.bsp or kellbase1.bsp, where we try to read texture pixel data past the end of the texture lump (crashing because the textue lump is the last thing in the .bsp file buffer).
This would only hapen on OS X or Linux (perhaps just luck or windows is more leniant about reading ~40 bytes past the end of a malloc). Note this will only handle cases where the lump size is recorded as being too small, we will still crash if the bsp file itself is truncated since there are generally no checks against the whole .bsp file buffer size.

FYI, the corruption in jam2_tronyn.bsp was caused by a bug in tyrutils which is fixed now: http://disenchant.net/git/?p=tyrutils&a=commit&h=5111c5485c96918b937843715f9b8f51f263e40e
Not sure about kellbase1.bsp (quoth).

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1228 af15c1b1-3010-417e-b628-4374ebc0bcbd
2015-06-12 02:26:10 +00:00
Eric Wasylishen 621fa18dd8 Move more spammy message from "developer 1" to "developer 2", continued:
- .ent, .lit not found in COM_FindFile (they will usually be missing, we print a message with "develoepr 1" when they are found)
- "trying to load" .ent file
- "bad chunk length"

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1214 af15c1b1-3010-417e-b628-4374ebc0bcbd
2015-05-25 18:38:37 +00:00
Eric Wasylishen 1f3c1a711a Make "exceeds standard limit of" messages only display when developer cvar is set, with a new Con_DWarning function.
Have heard these are confusing players and mappers/modders; people assume there is an error or a limit in QS is exceeded, but the messages are only about exceeding the limits in vanilla WinQuake/GLQuake.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1211 af15c1b1-3010-417e-b628-4374ebc0bcbd
2015-05-25 01:48:03 +00:00
Eric Wasylishen 95e0be7afe add r_noshadow_list cvar (from MarkV), removing hardcoded list of models to not have shadows
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1210 af15c1b1-3010-417e-b628-4374ebc0bcbd
2015-05-18 18:00:49 +00:00
Ozkan Sezer 1eb675b5b3 Mod_LoadAllSkins(): change name[] size from 32 to 64 (MAX_QPATH) -- consistent with fbr_mask_name[]
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1172 af15c1b1-3010-417e-b628-4374ebc0bcbd
2015-02-27 14:00:49 +00:00
Ozkan Sezer b9032b7815 copyright years, general tidy-up, remove unused d_ifacea.h.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@1059 af15c1b1-3010-417e-b628-4374ebc0bcbd
2014-09-22 08:55:46 +00:00
Eric Wasylishen d10512a72b Fence texture support on brush models, e.g. for rmqdemo2 e1m6rq.bsp. Based on Baker's implementation in Fitz Mark V. Consistent with Fitz Mark V, RMQEngine, FTEQW rendering.
Not implemented for world polys (afaik it's useless for world polys) but could be added if needed.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@970 af15c1b1-3010-417e-b628-4374ebc0bcbd
2014-08-19 02:20:12 +00:00
Ozkan Sezer b5e0d90e28 reset all models and set mod_numknown to 0 upon gamedir changes.
fixes issue described at:
http://celephais.net/board/view_thread.php?id=60452&start=825
also see http://forums.inside3d.com/viewtopic.php?f=12&t=5509


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@942 af15c1b1-3010-417e-b628-4374ebc0bcbd
2014-07-30 09:33:03 +00:00
Ozkan Sezer 34246dfc3b restore compilation with g++, some whitespace tidy-up.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@934 af15c1b1-3010-417e-b628-4374ebc0bcbd
2014-07-12 07:50:57 +00:00
Ozkan Sezer bfab14040b gl_model.c (CalcSurfaceExtents): fix a lighting glitch due to floating point precision. patch from Eric Wasylishen.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@908 af15c1b1-3010-417e-b628-4374ebc0bcbd
2014-04-28 06:10:12 +00:00
Ozkan Sezer 1eb360205b BSP2 support. patch kindly provided by Eric Wasylishen (see the patch
tracker entry #11 at http://sourceforge.net/p/quakespasm/patches/11/)

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@881 af15c1b1-3010-417e-b628-4374ebc0bcbd
2013-12-25 09:10:28 +00:00
Ozkan Sezer 5e4849c61f replace all ctype.h functions/macros and strcasecmp/strncasecmp()
by locale-insensitive versions, new header q_ctype.h.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@868 af15c1b1-3010-417e-b628-4374ebc0bcbd
2013-09-25 17:01:40 +00:00
Ozkan Sezer b01498b8bd gl_model.c: change the 'ignored' messages from external lit and ent
files back to developer mode.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@841 af15c1b1-3010-417e-b628-4374ebc0bcbd
2013-03-10 11:29:02 +00:00
Ozkan Sezer a9f5180540 gl_model.c (Mod_LoadTexinfo): although the end result in memory
doesn't change, load the texinfo in a way consistent with the
layout of the vecs in the mtexinfo_t struct. from a recent commit
in tyr-quake git repo.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@786 af15c1b1-3010-417e-b628-4374ebc0bcbd
2012-11-11 09:55:55 +00:00
Ozkan Sezer dbdd675552 renamed model_t to qmodel_t in order to avoid conflicts on solaris.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@676 af15c1b1-3010-417e-b628-4374ebc0bcbd
2012-05-30 08:56:06 +00:00
Ozkan Sezer 19953bd399 silenced -Wsign-compare warnings.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@575 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-12-29 19:06:08 +00:00
Ozkan Sezer 1928f2e1b8 * first shot at cvar flag system and cvar layer clean-ups :
- removed the archive and server members of cvar_t structure
  which are now represented by the CVAR_ARCHIVE, CVAR_NOTIFY
  and CVAR_SERVERINFO flags.
- added new Cvar_SetROM and Cvar_SetValueROM functions to 
  set vars marked as CVAR_ROM (read-only vars) programaticaly
- added Cvar_SetCallback() as a new function to assign (or
  remove) a callback function to a cvar.
- changed Cvar_RegisterVariable() to only accept a var pointer
  as in original quake
- moved notification handling from Cvar_Set() to callbacks.
- changed Cvar_Set() so that it doesn't reallocate the var's
  string buffer if nothing is changed, nor does it run the
  var's callback.
- changed the 'registered' and 'cmdline' cvars to be read-only
  so that the users can't change it using the console.  (and
  with 'registered' flagged as CVAR_ROM, the 'static_registered'
  thing is no longer required)
- added comment that sending cmdline upon CCREQ_RULE_INFO is
  evil...
- more to follow later.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@566 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-12-28 22:01:33 +00:00
Ozkan Sezer 5f0d6b07d1 finally nailed the SubdividePolygon() segfault when running as a dedicated
server: R_Init() isn't called for dedicated server therefore gl_subdivide_size
was used without being registered hence divisions by zero when using its value
member. Geez.. Moved its registration to Mod_Init() and we are good.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@565 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-12-28 17:37:30 +00:00
Ozkan Sezer fb2f45126e changed many strcpy and strncpy into q_strlcpy
and strcat and strncat into q_strlcat

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@560 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-12-27 13:15:31 +00:00
Ozkan Sezer 983af887bf changed many sprintf() calls into q_snprintf().
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@557 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-12-27 10:50:42 +00:00
Ozkan Sezer 07b572b642 better buffer size safety with COM_StripExtension, COM_FileBase and COM_DefaultExtension
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@554 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-12-27 08:04:02 +00:00
Ozkan Sezer 8625074bb4 gl_model.c (Mod_SetExtraFlags): Fixed r_nolerp_list.string parsing code
of fitzquake: the loop was able to go beyond the null terminator of the
cvar.  (Besides, it would technically yield a false positive because of
strncmp(), but much less likely..)

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@517 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-12-14 14:21:12 +00:00
Ozkan Sezer b9ee5bef26 gl_model.c: Added new external_ents cvar for Mod_LoadEntities()
in parallel to the old QIP code.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@484 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-09-15 07:51:11 +00:00
Ozkan Sezer 09110d97b5 * Removed some useless memset calls onto newly hunk allocated memory.
Hunk_Alloc() already clears the memory before returning it.
* Some minor cleanups.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@465 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-07-05 06:28:42 +00:00
Ozkan Sezer e25c9d2716 gl_model.c (Mod_LoadEntities): Added support for loading external entity files.
Adding a cvar to control this option should follow later.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@458 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-06-11 05:03:04 +00:00
Ozkan Sezer 305be5e835 * gl_model.c: relaxed searchpath requirements for external lit file
loading: they are now allowed from the same game directory as the
  map itself as well as from a searchpath with a higher priority.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@428 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-03-01 18:00:30 +00:00
Ozkan Sezer dbaa22dd78 * gl_model.c: changed the `ignored' messages from Con_DPrintf
to Con_Printf for external lit files.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@418 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-02-17 06:38:52 +00:00
Ozkan Sezer 945262b863 min/max macros: renamed them to q_min and q_max, moved them common.h.
removed the inline versions which only handled integers.  moved CLAMP
macro to common.h.  Adjusted all places for the renamed macros.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@386 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-01-10 10:35:40 +00:00
Ozkan Sezer db70c054fa gl_model.c (Mod_LoadLighting): Check the path_id of the lit file and
accept only if it is coming from the same game directory as for the map
itself.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@372 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-01-02 22:02:11 +00:00
Ozkan Sezer 51301e043c gl_model.h (model_t): Added a path_id member to store the
information about the game directory from where the model is
loaded.
gl_model.c (Mod_LoadModel): Send the path_id member of the
model to FS_Load* function, instead of NULL.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@371 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-01-02 21:55:26 +00:00
Ozkan Sezer c583b5b541 common.c (searchpath_t): Added new member `path_id', an unsigned
int identifier assigned to the game directory. Remember that main
<install_dir>/game1 and the unix <userdir>/game1 have the same id.
The id starts as 1 for the first data1 directory. For every new
directory, the value is the left-shifted version of the previous
one.  Made COM_FindFile() to accept a path_id pointer argument
and storing the id in it if it isn't NULL. Made COM_OpenFile(),
COM_FOpenFile() and all COM_Load* functions to accept a path_id
pointer argument similarly. Adjusted callers accordingly.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@370 af15c1b1-3010-417e-b628-4374ebc0bcbd
2011-01-02 21:45:16 +00:00
Ozkan Sezer 4ccfbc0ec1 Mod_LoadLighting: free the allocated hunk memory in case of broken or
unsupported lit file.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@360 af15c1b1-3010-417e-b628-4374ebc0bcbd
2010-12-31 09:05:44 +00:00
Ozkan Sezer 906df3f650 const correctness changes.
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@300 af15c1b1-3010-417e-b628-4374ebc0bcbd
2010-08-29 02:22:55 +00:00
Ozkan Sezer 66ec5d11dc gl_model.c (Mod_LoadAliasModel, Mod_LoadSpriteModel): add some enum casts
to make things more compatible with C++.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@299 af15c1b1-3010-417e-b628-4374ebc0bcbd
2010-08-24 10:41:41 +00:00
Ozkan Sezer a7d57b4b51 * renamed Length() to VectorLength() for consistency with its friends.
* mathlib.c: Removed the unnecessary sqrt() prototype.
(VectorLength): Made it to just return sqrt(DotProduct(arg,arg))
(VectorNormalize): Calculate the length as sqrt(DotProduct(arg,arg)).
* mathlib.h (CLAMP): Renamed the macro arguments from min and max to
_minval and _maxval.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@248 af15c1b1-3010-417e-b628-4374ebc0bcbd
2010-08-01 19:22:46 +00:00
Ozkan Sezer ea4bad07b8 * gl_model.c (Mod_LoadFaces): Do not call GL_SubdivideSurface() in dedicated
servers, otherwise we segfault in SubdividePolygon() at the BoundPoly() call.
This is a workaround, the actual problem is yet to be looked into.


git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@185 af15c1b1-3010-417e-b628-4374ebc0bcbd
2010-06-19 14:16:05 +00:00