Merge remote-tracking branch 'sf/master' into qss

This commit is contained in:
Shpoike 2021-10-14 06:49:15 +01:00
commit 32015ef1e3
11 changed files with 260 additions and 188 deletions

View File

@ -3,7 +3,7 @@
<title>QuakeSpasm
<toc>
<em>Page last edited: Sep. 2021</em>
<em>Page last edited: October 2021</em>
<sect> About <p>
@ -140,6 +140,15 @@ QuakeSpasm 0.94.0 has initial support for playing the 2021 re-release content: C
<sect> Changes<p>
<sect1> Changes in 0.94.2<p>
<itemize>
<item> 2021 rerelease: Support for playing the latest update.
<item> 2021 rerelease: Fix pitch black models in lit areas in DOTM.
<item> 2021 rerelease: Fix black candles in the DOTM start map.
<item> 2021 rerelease: Look for QuakeEX.kpf under userdir, too.
</itemize>
</p>
<sect1> Changes in 0.94.1<p>
<itemize>
<item> Fix lightmap issues after vkQuake surface mark/cull optimizations merge (sf.net bug/50)
@ -307,7 +316,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<itemize>
<item> Fix dynamic light artifact where changing lightmap are rendered one frame late (bug introduced in 0.90.0).
<item> Fix texture memory leak when changing video modes with SDL2.
<item> Fix rare incorrect mdl lighting on 64-bit builds. <url url="http://forums.insideqc.com/viewtopic.php?f=3&amp;t=5620" name="(details here.)">
<item> Fix a rare incorrect mdl lighting on 64-bit builds. <url url="http://forums.insideqc.com/viewtopic.php?f=3&amp;t=5620" name="(details here.)">
<item> Fix fullbrights turning black after "kill" command (bug introduced in 0.90.0).
<item> Clear all fog values on map change to prevent colored fog carrying over to jam3_tronyn.bsp.
<item> Allow loading saves with } character in quoted strings, fixes issue with retrojam1_skacky.bsp.

View File

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

View File

@ -2135,7 +2135,6 @@ static int COM_FindFile (const char *filename, int *handle, FILE **file,
&& strcmp(ext, "ent") != 0)
Con_DPrintf ("FindFile: can't find %s\n", filename);
else Con_DPrintf2("FindFile: can't find %s\n", filename);
// Log pcx, tga, lit, ent misses only if (developer.value >= 2)
if (handle)
*handle = -1;
@ -2934,7 +2933,6 @@ void COM_ResetGameDirectories(char *newgamedirs)
//==============================================================================
//johnfitz -- dynamic gamedir stuff -- modified by QuakeSpasm team.
//==============================================================================
void ExtraMaps_NewGame (void);
static void COM_Game_f (void)
{
if (Cmd_Argc() > 1)
@ -3115,7 +3113,10 @@ void COM_InitFilesystem (void) //johnfitz -- modified based on topaz's tutorial
//this is horrible.
if (!fitzmode)
{
if (!COM_AddPackage(NULL, va("%s/QuakeEX.kpf", host_parms->userdir), "QuakeEX.kpf") && strcmp(com_basedir, host_parms->userdir))
COM_AddPackage(NULL, va("%s/QuakeEX.kpf", com_basedir), "QuakeEX.kpf");
}
i = COM_CheckParmNext (i, "-basegame");
if (i)

View File

@ -302,7 +302,7 @@ vec3_t lightcolor; //johnfitz -- lit support via lordhavoc
RecursiveLightPoint -- johnfitz -- replaced entire function for lit support via lordhavoc
=============
*/
int RecursiveLightPoint (vec3_t color, mnode_t *node, vec3_t start, vec3_t end)
int RecursiveLightPoint (vec3_t color, mnode_t *node, vec3_t rayorg, vec3_t start, vec3_t end, float *maxdist)
{
float front, back, frac;
vec3_t mid;
@ -325,7 +325,7 @@ loc0:
// LordHavoc: optimized recursion
if ((back < 0) == (front < 0))
// return RecursiveLightPoint (color, node->children[front < 0], start, end);
// return RecursiveLightPoint (color, node->children[front < 0], rayorg, start, end, maxdist);
{
node = node->children[front < 0];
goto loc0;
@ -337,7 +337,7 @@ loc0:
mid[2] = start[2] + (end[2] - start[2])*frac;
// go down front side
if (RecursiveLightPoint (color, node->children[front < 0], start, mid))
if (RecursiveLightPoint (color, node->children[front < 0], rayorg, start, mid, maxdist))
return true; // hit something
else
{
@ -351,6 +351,9 @@ loc0:
surf = cl.worldmodel->surfaces + node->firstsurface;
for (i = 0;i < node->numsurfaces;i++, surf++)
{
float sfront, sback, dist;
vec3_t raydelta;
if (surf->flags & SURF_DRAWTILED)
continue; // no lightmaps
@ -369,7 +372,32 @@ loc0:
if (ds > surf->extents[0] || dt > surf->extents[1])
continue;
if (surf->samples)
if (surf->plane->type < 3)
{
sfront = rayorg[surf->plane->type] - surf->plane->dist;
sback = end[surf->plane->type] - surf->plane->dist;
}
else
{
sfront = DotProduct(rayorg, surf->plane->normal) - surf->plane->dist;
sback = DotProduct(end, surf->plane->normal) - surf->plane->dist;
}
VectorSubtract(end, rayorg, raydelta);
dist = sfront / (sfront - sback) * VectorLength(raydelta);
if (!surf->samples)
{
// We hit a surface that is flagged as lightmapped, but doesn't have actual lightmap info.
// Instead of just returning black, we'll keep looking for nearby surfaces that do have valid samples.
// This fixes occasional pitch-black models in otherwise well-lit areas in DOTM (e.g. mge1m1, mge4m1)
// caused by overlapping surfaces with mixed lighting data.
const float nearby = 8.f;
dist += nearby;
*maxdist = q_min(*maxdist, dist);
continue;
}
if (dist < *maxdist)
{
// LordHavoc: enhanced to interpolate lighting
byte *lightmap;
@ -397,7 +425,7 @@ loc0:
}
// go down back side
return RecursiveLightPoint (color, node->children[front >= 0], mid, end);
return RecursiveLightPoint (color, node->children[front >= 0], rayorg, mid, end, maxdist);
}
}
@ -409,6 +437,7 @@ R_LightPoint -- johnfitz -- replaced entire function for lit support via lordhav
int R_LightPoint (vec3_t p)
{
vec3_t end;
float maxdist = 8192.f; //johnfitz -- was 2048
if (!cl.worldmodel->lightdata)
{
@ -418,9 +447,9 @@ int R_LightPoint (vec3_t p)
end[0] = p[0];
end[1] = p[1];
end[2] = p[2] - 8192; //johnfitz -- was 2048
end[2] = p[2] - maxdist;
lightcolor[0] = lightcolor[1] = lightcolor[2] = 0;
RecursiveLightPoint (lightcolor, cl.worldmodel->nodes, p, end);
RecursiveLightPoint (lightcolor, cl.worldmodel->nodes, p, p, end, &maxdist);
return ((lightcolor[0] + lightcolor[1] + lightcolor[2]) * (1.0f / 3.0f));
}

View File

@ -37,7 +37,6 @@ void Mod_Print (void);
Host_Quit_f
==================
*/
void Host_Quit_f (void)
{
if (key_dest != key_console && cls.state != ca_dedicated && !cls.menu_qcvm.progs)
@ -60,7 +59,7 @@ void Host_Quit_f (void)
FileList_Add
==================
*/
void FileList_Add (const char *name, filelist_item_t **list)
static void FileList_Add (const char *name, filelist_item_t **list)
{
filelist_item_t *item,*cursor,*prev;
@ -109,7 +108,7 @@ static void FileList_Clear (filelist_item_t **list)
filelist_item_t *extralevels;
void ExtraMaps_Add (const char *name)
static void ExtraMaps_Add (const char *name)
{
FileList_Add(name, &extralevels);
}
@ -200,7 +199,7 @@ void ExtraMaps_NewGame (void)
Host_Maps_f
==================
*/
void Host_Maps_f (void)
static void Host_Maps_f (void)
{
int i;
filelist_item_t *level;
@ -220,7 +219,7 @@ void Host_Maps_f (void)
filelist_item_t *modlist;
void Modlist_Add (const char *name)
static void Modlist_Add (const char *name)
{
FileList_Add(name, &modlist);
}
@ -368,7 +367,6 @@ void DemoList_Init (void)
}
}
/*
==================
Host_Mods_f -- johnfitz
@ -376,7 +374,7 @@ Host_Mods_f -- johnfitz
list all potential mod directories (contain either a pak file or a progs.dat)
==================
*/
void Host_Mods_f (void)
static void Host_Mods_f (void)
{
int i;
filelist_item_t *mod;
@ -397,7 +395,7 @@ void Host_Mods_f (void)
Host_Mapname_f -- johnfitz
=============
*/
void Host_Mapname_f (void)
static void Host_Mapname_f (void)
{
if (sv.active)
{
@ -419,7 +417,7 @@ void Host_Mapname_f (void)
Host_Status_f
==================
*/
void Host_Status_f (void)
static void Host_Status_f (void)
{
void (*print_fn) (const char *fmt, ...)
FUNCP_PRINTF(1,2);
@ -518,7 +516,7 @@ Host_God_f
Sets client to godmode
==================
*/
void Host_God_f (void)
static void Host_God_f (void)
{
if (cmd_source != src_client)
{
@ -563,7 +561,7 @@ void Host_God_f (void)
Host_Notarget_f
==================
*/
void Host_Notarget_f (void)
static void Host_Notarget_f (void)
{
if (cmd_source != src_client)
{
@ -610,7 +608,7 @@ qboolean noclip_anglehack;
Host_Noclip_f
==================
*/
void Host_Noclip_f (void)
static void Host_Noclip_f (void)
{
if (cmd_source != src_client)
{
@ -666,7 +664,7 @@ Host_SetPos_f
adapted from fteqw, originally by Alex Shadowalker
====================
*/
void Host_SetPos_f(void)
static void Host_SetPos_f(void)
{
if (cmd_source != src_client)
{
@ -727,7 +725,7 @@ Host_Fly_f
Sets client to flymode
==================
*/
void Host_Fly_f (void)
static void Host_Fly_f (void)
{
if (cmd_source != src_client)
{
@ -772,14 +770,13 @@ void Host_Fly_f (void)
//johnfitz
}
/*
==================
Host_Ping_f
==================
*/
void Host_Ping_f (void)
static void Host_Ping_f (void)
{
int i, j;
float total;
@ -812,7 +809,6 @@ SERVER TRANSITIONS
===============================================================================
*/
/*
======================
Host_Map_f
@ -822,7 +818,7 @@ map <servername>
command from the console. Active clients are kicked off.
======================
*/
void Host_Map_f (void)
static void Host_Map_f (void)
{
int i;
char name[MAX_QPATH], *p;
@ -892,7 +888,7 @@ Host_Randmap_f
Loads a random map from the "maps" list.
======================
*/
void Host_Randmap_f (void)
static void Host_Randmap_f (void)
{
int i, randlevel, numlevels;
filelist_item_t *level;
@ -929,7 +925,7 @@ Host_Changelevel_f
Goes to a new map, taking all clients along
==================
*/
void Host_Changelevel_f (void)
static void Host_Changelevel_f (void)
{
char level[MAX_QPATH];
@ -971,7 +967,7 @@ Host_Restart_f
Restarts the current server for a dead player
==================
*/
void Host_Restart_f (void)
static void Host_Restart_f (void)
{
char mapname[MAX_QPATH];
@ -1003,7 +999,7 @@ This is sent just before a server changes levels
for compatibility with quakeworld et al, we also allow this as a user-command to reconnect to the last server we tried, but we can only reliably do that when we're not already connected
==================
*/
void Host_Reconnect_Con_f (void)
static void Host_Reconnect_Con_f (void)
{
CL_Disconnect_f();
cls.demonum = -1; // stop demo loop in case this fails
@ -1014,7 +1010,7 @@ void Host_Reconnect_Con_f (void)
}
CL_EstablishConnection (NULL);
}
void Host_Reconnect_Sv_f (void)
static void Host_Reconnect_Sv_f (void)
{
if (cls.demoplayback) // cross-map demo playback fix from Baker
return;
@ -1024,7 +1020,7 @@ void Host_Reconnect_Sv_f (void)
cls.signon = 0; // need new connection messages
}
void Host_Lightstyle_f (void)
static void Host_Lightstyle_f (void)
{
CL_UpdateLightstyle(atoi(Cmd_Argv(1)), Cmd_Argv(2));
}
@ -1036,7 +1032,7 @@ Host_Connect_f
User command to connect to server
=====================
*/
void Host_Connect_f (void)
static void Host_Connect_f (void)
{
char name[MAX_QPATH];
@ -1069,7 +1065,7 @@ Host_SavegameComment
Writes a SAVEGAME_COMMENT_LENGTH character comment describing the current
===============
*/
void Host_SavegameComment (char *text)
static void Host_SavegameComment (char *text)
{
int i;
char kills[20];
@ -1099,13 +1095,12 @@ void Host_SavegameComment (char *text)
text[SAVEGAME_COMMENT_LENGTH] = '\0';
}
/*
===============
Host_Savegame_f
===============
*/
void Host_Savegame_f (void)
static void Host_Savegame_f (void)
{
char name[MAX_OSPATH];
FILE *f;
@ -1177,7 +1172,6 @@ void Host_Savegame_f (void)
fprintf (f, "%f\n", qcvm->time);
// write the light styles
for (i = 0; i < MAX_LIGHTSTYLES_VANILLA; i++)
{
if (sv.lightstyles[i])
@ -1186,7 +1180,6 @@ void Host_Savegame_f (void)
fprintf (f,"m\n");
}
ED_WriteGlobals (f);
for (i = 0; i < qcvm->num_edicts; i++)
{
@ -1235,13 +1228,12 @@ void Host_Savegame_f (void)
PR_SwitchQCVM(NULL);
}
/*
===============
Host_Loadgame_f
===============
*/
void Host_Loadgame_f (void)
static void Host_Loadgame_f (void)
{
static char *start;
@ -1480,7 +1472,7 @@ void Host_Loadgame_f (void)
Host_Name_f
======================
*/
void Host_Name_f (void)
static void Host_Name_f (void)
{
char newName[32];
@ -1505,7 +1497,7 @@ void Host_Name_f (void)
SV_UpdateInfo((host_client-svs.clients)+1, "name", newName);
}
void Host_Say(qboolean teamonly)
static void Host_Say(qboolean teamonly)
{
int j;
client_t *client;
@ -1582,20 +1574,17 @@ void Host_Say(qboolean teamonly)
Sys_Printf("%s", &text[1]);
}
void Host_Say_f(void)
static void Host_Say_f(void)
{
Host_Say(false);
}
void Host_Say_Team_f(void)
static void Host_Say_Team_f(void)
{
Host_Say(true);
}
void Host_Tell_f(void)
static void Host_Tell_f(void)
{
int j;
client_t *client;
@ -1659,13 +1648,12 @@ void Host_Tell_f(void)
host_client = save;
}
/*
==================
Host_Color_f
==================
*/
void Host_Color_f(void)
static void Host_Color_f(void)
{
const char *top, *bottom;
@ -1702,7 +1690,7 @@ void Host_Color_f(void)
Host_Kill_f
==================
*/
void Host_Kill_f (void)
static void Host_Kill_f (void)
{
if (cmd_source != src_client)
{
@ -1721,13 +1709,12 @@ void Host_Kill_f (void)
PR_ExecuteProgram (pr_global_struct->ClientKill);
}
/*
==================
Host_Pause_f
==================
*/
void Host_Pause_f (void)
static void Host_Pause_f (void)
{
//ericw -- demo pause support (inspired by MarkV)
if (cls.demoplayback)
@ -1765,13 +1752,12 @@ void Host_Pause_f (void)
//===========================================================================
/*
==================
Host_PreSpawn_f
==================
*/
void Host_PreSpawn_f (void)
static void Host_PreSpawn_f (void)
{
if (cmd_source != src_client)
{
@ -1795,7 +1781,7 @@ void Host_PreSpawn_f (void)
Host_Spawn_f
==================
*/
void Host_Spawn_f (void)
static void Host_Spawn_f (void)
{
int i;
client_t *client;
@ -1854,7 +1840,6 @@ void Host_Spawn_f (void)
PR_ExecuteProgram (pr_global_struct->PutClientInServer);
}
// send all current names, colors, and frag counts
SZ_Clear (&host_client->message);
@ -1952,7 +1937,7 @@ void Host_Spawn_f (void)
Host_Begin_f
==================
*/
void Host_Begin_f (void)
static void Host_Begin_f (void)
{
if (cmd_source != src_client)
{
@ -1965,7 +1950,6 @@ void Host_Begin_f (void)
//===========================================================================
/*
==================
Host_Kick_f
@ -1973,7 +1957,7 @@ Host_Kick_f
Kicks a user off of the server
==================
*/
void Host_Kick_f (void)
static void Host_Kick_f (void)
{
const char *who;
const char *message = NULL;
@ -2065,7 +2049,7 @@ DEBUGGING TOOLS
Host_Give_f
==================
*/
void Host_Give_f (void)
static void Host_Give_f (void)
{
const char *t;
int v;
@ -2290,7 +2274,7 @@ void Host_Give_f (void)
//johnfitz
}
edict_t *FindViewthing (void)
static edict_t *FindViewthing (void)
{
int i;
edict_t *e = NULL;
@ -2333,7 +2317,7 @@ edict_t *FindViewthing (void)
Host_Viewmodel_f
==================
*/
void Host_Viewmodel_f (void)
static void Host_Viewmodel_f (void)
{
edict_t *e;
qmodel_t *m;
@ -2366,7 +2350,7 @@ void Host_Viewmodel_f (void)
Host_Viewframe_f
==================
*/
void Host_Viewframe_f (void)
static void Host_Viewframe_f (void)
{
edict_t *e;
int f;
@ -2386,8 +2370,7 @@ void Host_Viewframe_f (void)
}
}
void PrintFrameName (qmodel_t *m, int frame)
static void PrintFrameName (qmodel_t *m, int frame)
{
aliashdr_t *hdr;
maliasframedesc_t *pframedesc;
@ -2405,7 +2388,7 @@ void PrintFrameName (qmodel_t *m, int frame)
Host_Viewnext_f
==================
*/
void Host_Viewnext_f (void)
static void Host_Viewnext_f (void)
{
edict_t *e;
qmodel_t *m;
@ -2429,7 +2412,7 @@ void Host_Viewnext_f (void)
Host_Viewprev_f
==================
*/
void Host_Viewprev_f (void)
static void Host_Viewprev_f (void)
{
edict_t *e;
qmodel_t *m;
@ -2457,13 +2440,12 @@ DEMO LOOP CONTROL
===============================================================================
*/
/*
==================
Host_Startdemos_f
==================
*/
void Host_Startdemos_f (void)
static void Host_Startdemos_f (void)
{
int i, c;
@ -2499,7 +2481,6 @@ void Host_Startdemos_f (void)
}
}
/*
==================
Host_Demos_f
@ -2507,7 +2488,7 @@ Host_Demos_f
Return to looping demos
==================
*/
void Host_Demos_f (void)
static void Host_Demos_f (void)
{
if (cls.state == ca_dedicated)
return;
@ -2524,7 +2505,7 @@ Host_Stopdemo_f
Return to looping demos
==================
*/
void Host_Stopdemo_f (void)
static void Host_Stopdemo_f (void)
{
if (cls.state == ca_dedicated)
return;

View File

@ -1788,6 +1788,7 @@ PF_finalefinished -- used by 2021 release.
*/
static void PF_finalefinished (void)
{
G_FLOAT(OFS_RETURN) = 0;
}
void PR_spawnfunc_misc_model(edict_t *self)
@ -1901,7 +1902,20 @@ builtin_t pr_ssqcbuiltins[] =
PF_sv_setspawnparms,
// 2021 release
PF_finalefinished, // void() finaleFinished = #79
PF_finalefinished, // float() finaleFinished = #79
PF_Fixme, // void localsound (entity client, string sample) = #80
PF_Fixme, // void draw_point (vector point, float colormap, float lifetime, float depthtest) = #81
PF_Fixme, // void draw_line (vector start, vector end, float colormap, float lifetime, float depthtest) = #82
PF_Fixme, // void draw_arrow (vector start, vector end, float colormap, float size, float lifetime, float depthtest) = #83
PF_Fixme, // void draw_ray (vector start, vector direction, float length, float colormap, float size, float lifetime, float depthtest) = #84
PF_Fixme, // void draw_circle (vector origin, float radius, float colormap, float lifetime, float depthtest) = #85
PF_Fixme, // void draw_bounds (vector min, vector max, float colormap, float lifetime, float depthtest) = #86
PF_Fixme, // void draw_worldtext (string s, vector origin, float size, float lifetime, float depthtest) = #87
PF_Fixme, // void draw_sphere (vector origin, float radius, float colormap, float lifetime, float depthtest) = #88
PF_Fixme, // void draw_cylinder (vector origin, float halfHeight, float radius, float colormap, float lifetime, float depthtest) = #89
PF_centerprint , // #90
PF_bprint,
PF_sprint,
};
int pr_ssqcnumbuiltins = sizeof(pr_ssqcbuiltins)/sizeof(pr_ssqcbuiltins[0]);

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 1 // helper to print a string like 0.94.1
#define QUAKESPASM_VER_PATCH 2 // helper to print a string like 0.94.2
#ifndef QUAKESPASM_VER_SUFFIX
#define QUAKESPASM_VER_SUFFIX // optional version suffix string literal like "-beta1"
#endif
@ -353,6 +353,7 @@ void ExtraMaps_Init (void);
void Modlist_Init (void);
void DemoList_Init (void);
void ExtraMaps_NewGame (void);
void DemoList_Rebuild (void);
extern int current_skill; // skill level for currently loaded level (in case

View File

@ -945,15 +945,29 @@ void R_SetupAliasLighting (entity_t *e)
int i;
int quantizedangle;
float radiansangle;
float *origin = e->origin;
float *origin;
if (!r_refdef.drawworld)
lightcolor[0] = lightcolor[1] = lightcolor[2] = 255;
else
{
if (e->eflags & EFLAGS_VIEWMODEL)
{
origin = r_refdef.vieworg;
R_LightPoint (origin);
}
else
{
vec3_t lpos;
origin = e->origin;
VectorCopy (origin, lpos);
// start the light trace from slightly above the origin
// this helps with models whose origin is below ground level, but are otherwise visible
// (e.g. some of the candles in the DOTM start map, which would otherwise appear black)
if (e->model->maxs[2] > 0)
lpos[2] += e->model->maxs[2] * 0.5f;
R_LightPoint (lpos);
}
//add dlights
for (i=0 ; i<MAX_DLIGHTS ; i++)

View File

@ -8,7 +8,7 @@
<H1>QuakeSpasm</H1>
<H2></H2>
<P><EM>Page last edited: Sep. 2021</EM></P>
<P><EM>Page last edited: October 2021</EM></P>
<P>
<H2><A NAME="toc1">1.</A> <A HREF="Quakespasm.html#s1">About </A></H2>
@ -36,25 +36,26 @@
<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.1</A>
<LI><A NAME="toc5.2">5.2</A> <A HREF="Quakespasm.html#ss5.2">Changes in 0.94.0</A>
<LI><A NAME="toc5.3">5.3</A> <A HREF="Quakespasm.html#ss5.3">Changes in 0.93.2</A>
<LI><A NAME="toc5.4">5.4</A> <A HREF="Quakespasm.html#ss5.4">Changes in 0.93.1</A>
<LI><A NAME="toc5.5">5.5</A> <A HREF="Quakespasm.html#ss5.5">Changes in 0.93.0</A>
<LI><A NAME="toc5.6">5.6</A> <A HREF="Quakespasm.html#ss5.6">Changes in 0.92.1</A>
<LI><A NAME="toc5.7">5.7</A> <A HREF="Quakespasm.html#ss5.7">Changes in 0.92.0</A>
<LI><A NAME="toc5.8">5.8</A> <A HREF="Quakespasm.html#ss5.8">Changes in 0.91.0</A>
<LI><A NAME="toc5.9">5.9</A> <A HREF="Quakespasm.html#ss5.9">Changes in 0.90.1</A>
<LI><A NAME="toc5.10">5.10</A> <A HREF="Quakespasm.html#ss5.10">Changes in 0.90.0</A>
<LI><A NAME="toc5.11">5.11</A> <A HREF="Quakespasm.html#ss5.11">Changes in 0.85.9</A>
<LI><A NAME="toc5.12">5.12</A> <A HREF="Quakespasm.html#ss5.12">Changes in 0.85.8</A>
<LI><A NAME="toc5.13">5.13</A> <A HREF="Quakespasm.html#ss5.13">Changes in 0.85.7</A>
<LI><A NAME="toc5.14">5.14</A> <A HREF="Quakespasm.html#ss5.14">Changes in 0.85.6</A>
<LI><A NAME="toc5.15">5.15</A> <A HREF="Quakespasm.html#ss5.15">Changes in 0.85.5</A>
<LI><A NAME="toc5.16">5.16</A> <A HREF="Quakespasm.html#ss5.16">Changes in 0.85.4</A>
<LI><A NAME="toc5.17">5.17</A> <A HREF="Quakespasm.html#ss5.17">Changes in 0.85.3</A>
<LI><A NAME="toc5.18">5.18</A> <A HREF="Quakespasm.html#ss5.18">Changes in 0.85.2</A>
<LI><A NAME="toc5.19">5.19</A> <A HREF="Quakespasm.html#ss5.19">Changes in 0.85.1</A>
<LI><A NAME="toc5.1">5.1</A> <A HREF="Quakespasm.html#ss5.1">Changes in 0.94.2</A>
<LI><A NAME="toc5.2">5.2</A> <A HREF="Quakespasm.html#ss5.2">Changes in 0.94.1</A>
<LI><A NAME="toc5.3">5.3</A> <A HREF="Quakespasm.html#ss5.3">Changes in 0.94.0</A>
<LI><A NAME="toc5.4">5.4</A> <A HREF="Quakespasm.html#ss5.4">Changes in 0.93.2</A>
<LI><A NAME="toc5.5">5.5</A> <A HREF="Quakespasm.html#ss5.5">Changes in 0.93.1</A>
<LI><A NAME="toc5.6">5.6</A> <A HREF="Quakespasm.html#ss5.6">Changes in 0.93.0</A>
<LI><A NAME="toc5.7">5.7</A> <A HREF="Quakespasm.html#ss5.7">Changes in 0.92.1</A>
<LI><A NAME="toc5.8">5.8</A> <A HREF="Quakespasm.html#ss5.8">Changes in 0.92.0</A>
<LI><A NAME="toc5.9">5.9</A> <A HREF="Quakespasm.html#ss5.9">Changes in 0.91.0</A>
<LI><A NAME="toc5.10">5.10</A> <A HREF="Quakespasm.html#ss5.10">Changes in 0.90.1</A>
<LI><A NAME="toc5.11">5.11</A> <A HREF="Quakespasm.html#ss5.11">Changes in 0.90.0</A>
<LI><A NAME="toc5.12">5.12</A> <A HREF="Quakespasm.html#ss5.12">Changes in 0.85.9</A>
<LI><A NAME="toc5.13">5.13</A> <A HREF="Quakespasm.html#ss5.13">Changes in 0.85.8</A>
<LI><A NAME="toc5.14">5.14</A> <A HREF="Quakespasm.html#ss5.14">Changes in 0.85.7</A>
<LI><A NAME="toc5.15">5.15</A> <A HREF="Quakespasm.html#ss5.15">Changes in 0.85.6</A>
<LI><A NAME="toc5.16">5.16</A> <A HREF="Quakespasm.html#ss5.16">Changes in 0.85.5</A>
<LI><A NAME="toc5.17">5.17</A> <A HREF="Quakespasm.html#ss5.17">Changes in 0.85.4</A>
<LI><A NAME="toc5.18">5.18</A> <A HREF="Quakespasm.html#ss5.18">Changes in 0.85.3</A>
<LI><A NAME="toc5.19">5.19</A> <A HREF="Quakespasm.html#ss5.19">Changes in 0.85.2</A>
<LI><A NAME="toc5.20">5.20</A> <A HREF="Quakespasm.html#ss5.20">Changes in 0.85.1</A>
</UL>
<P>
<H2><A NAME="toc6">6.</A> <A HREF="Quakespasm.html#s6">Copyright </A></H2>
@ -222,7 +223,18 @@ Compile time options include
<H2><A NAME="ss5.1">5.1</A> <A HREF="#toc5.1">Changes in 0.94.1</A>
<H2><A NAME="ss5.1">5.1</A> <A HREF="#toc5.1">Changes in 0.94.2</A>
</H2>
<P>
<UL>
<LI> 2021 rerelease: Support for playing the latest update.</LI>
<LI> 2021 rerelease: Fix pitch black models in lit areas in DOTM.</LI>
<LI> 2021 rerelease: Fix black candles in the DOTM start map.</LI>
<LI> 2021 rerelease: Look for QuakeEX.kpf under userdir, too.</LI>
</UL>
</P>
<H2><A NAME="ss5.2">5.2</A> <A HREF="#toc5.2">Changes in 0.94.1</A>
</H2>
<P>
@ -230,7 +242,7 @@ Compile time options include
<LI> Fix lightmap issues after vkQuake surface mark/cull optimizations merge (sf.net bug/50)</LI>
</UL>
</P>
<H2><A NAME="ss5.2">5.2</A> <A HREF="#toc5.2">Changes in 0.94.0</A>
<H2><A NAME="ss5.3">5.3</A> <A HREF="#toc5.3">Changes in 0.94.0</A>
</H2>
<P>
@ -255,7 +267,7 @@ Compile time options include
<LI> Source repository moved to git.</LI>
</UL>
</P>
<H2><A NAME="ss5.3">5.3</A> <A HREF="#toc5.3">Changes in 0.93.2</A>
<H2><A NAME="ss5.4">5.4</A> <A HREF="#toc5.4">Changes in 0.93.2</A>
</H2>
<P>
@ -268,7 +280,7 @@ Compile time options include
<LI> Update the third-party libraries. Other fixes/cleanups.</LI>
</UL>
</P>
<H2><A NAME="ss5.4">5.4</A> <A HREF="#toc5.4">Changes in 0.93.1</A>
<H2><A NAME="ss5.5">5.5</A> <A HREF="#toc5.5">Changes in 0.93.1</A>
</H2>
<P>
@ -282,7 +294,7 @@ Compile time options include
<LI> Update the third-party libraries. Other fixes/cleanups.</LI>
</UL>
</P>
<H2><A NAME="ss5.5">5.5</A> <A HREF="#toc5.5">Changes in 0.93.0</A>
<H2><A NAME="ss5.6">5.6</A> <A HREF="#toc5.6">Changes in 0.93.0</A>
</H2>
<P>
@ -325,7 +337,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Update the third-party libraries.</LI>
</UL>
</P>
<H2><A NAME="ss5.6">5.6</A> <A HREF="#toc5.6">Changes in 0.92.1</A>
<H2><A NAME="ss5.7">5.7</A> <A HREF="#toc5.7">Changes in 0.92.1</A>
</H2>
<P>
@ -335,7 +347,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Updated some of the third-party libraries.</LI>
</UL>
</P>
<H2><A NAME="ss5.7">5.7</A> <A HREF="#toc5.7">Changes in 0.92.0</A>
<H2><A NAME="ss5.8">5.8</A> <A HREF="#toc5.8">Changes in 0.92.0</A>
</H2>
<P>
@ -355,7 +367,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.8">5.8</A> <A HREF="#toc5.8">Changes in 0.91.0</A>
<H2><A NAME="ss5.9">5.9</A> <A HREF="#toc5.9">Changes in 0.91.0</A>
</H2>
@ -415,7 +427,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Raised MAX_SFX to 1024 (was 512).</LI>
</UL>
</P>
<H2><A NAME="ss5.9">5.9</A> <A HREF="#toc5.9">Changes in 0.90.1</A>
<H2><A NAME="ss5.10">5.10</A> <A HREF="#toc5.10">Changes in 0.90.1</A>
</H2>
@ -425,8 +437,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<UL>
<LI> Fix dynamic light artifact where changing lightmap are rendered one frame late (bug introduced in 0.90.0).</LI>
<LI> Fix texture memory leak when changing video modes with SDL2.</LI>
<LI> Fix rare incorrect mdl lighting on 64-bit builds.
<A HREF="http://forums.insideqc.com/viewtopic.php?f=3&amp;t=5620">(details here.)</A></LI>
<LI> Fix a rare incorrect mdl lighting on 64-bit builds. <A HREF="http://forums.insideqc.com/viewtopic.php?f=3&amp;t=5620">(details here.)</A></LI>
<LI> Fix fullbrights turning black after "kill" command (bug introduced in 0.90.0).</LI>
<LI> Clear all fog values on map change to prevent colored fog carrying over to jam3_tronyn.bsp.</LI>
<LI> Allow loading saves with } character in quoted strings, fixes issue with retrojam1_skacky.bsp.</LI>
@ -475,7 +486,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Update 3rd-party libraries.</LI>
</UL>
</P>
<H2><A NAME="ss5.10">5.10</A> <A HREF="#toc5.10">Changes in 0.90.0</A>
<H2><A NAME="ss5.11">5.11</A> <A HREF="#toc5.11">Changes in 0.90.0</A>
</H2>
<P>
@ -521,7 +532,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Other fixes and clean-ups.</LI>
</UL>
</P>
<H2><A NAME="ss5.11">5.11</A> <A HREF="#toc5.11">Changes in 0.85.9</A>
<H2><A NAME="ss5.12">5.12</A> <A HREF="#toc5.12">Changes in 0.85.9</A>
</H2>
<P>
@ -545,7 +556,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Several other minor fixes/cleanups.</LI>
</UL>
</P>
<H2><A NAME="ss5.12">5.12</A> <A HREF="#toc5.12">Changes in 0.85.8</A>
<H2><A NAME="ss5.13">5.13</A> <A HREF="#toc5.13">Changes in 0.85.8</A>
</H2>
<P>
@ -570,7 +581,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Miscellaneous source code cleanups.</LI>
</UL>
</P>
<H2><A NAME="ss5.13">5.13</A> <A HREF="#toc5.13">Changes in 0.85.7</A>
<H2><A NAME="ss5.14">5.14</A> <A HREF="#toc5.14">Changes in 0.85.7</A>
</H2>
<P>
@ -588,7 +599,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Several other small changes mostly invisible to the end-user</LI>
</UL>
</P>
<H2><A NAME="ss5.14">5.14</A> <A HREF="#toc5.14">Changes in 0.85.6</A>
<H2><A NAME="ss5.15">5.15</A> <A HREF="#toc5.15">Changes in 0.85.6</A>
</H2>
<P>
@ -599,7 +610,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Minor SDL video fixes.</LI>
</UL>
</P>
<H2><A NAME="ss5.15">5.15</A> <A HREF="#toc5.15">Changes in 0.85.5</A>
<H2><A NAME="ss5.16">5.16</A> <A HREF="#toc5.16">Changes in 0.85.5</A>
</H2>
<P>
@ -618,7 +629,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Several code updates from uHexen2 project, several code cleanups.</LI>
</UL>
</P>
<H2><A NAME="ss5.16">5.16</A> <A HREF="#toc5.16">Changes in 0.85.4</A>
<H2><A NAME="ss5.17">5.17</A> <A HREF="#toc5.17">Changes in 0.85.4</A>
</H2>
<P>
@ -636,7 +647,7 @@ quakespasm (cl_alwaysrun 1, cl_forwardspeed 200, cl_backspeed 200)
<LI> Other minor sound and cdaudio updates</LI>
</UL>
</P>
<H2><A NAME="ss5.17">5.17</A> <A HREF="#toc5.17">Changes in 0.85.3</A>
<H2><A NAME="ss5.18">5.18</A> <A HREF="#toc5.18">Changes in 0.85.3</A>
</H2>
<P>
@ -659,7 +670,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.2</A>
<H2><A NAME="ss5.19">5.19</A> <A HREF="#toc5.19">Changes in 0.85.2</A>
</H2>
<P>
@ -678,7 +689,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.1</A>
<H2><A NAME="ss5.20">5.20</A> <A HREF="#toc5.20">Changes in 0.85.1</A>
</H2>
<P>

View File

@ -19,35 +19,36 @@
4.4 Quake '2021 re-release'
5. Changes
5.1 Changes in 0.94.1
5.2 Changes in 0.94.0
5.3 Changes in 0.93.2
5.4 Changes in 0.93.1
5.5 Changes in 0.93.0
5.6 Changes in 0.92.1
5.7 Changes in 0.92.0
5.8 Changes in 0.91.0
5.8.1 Bugfixes
5.8.2 Visual improvements
5.8.3 Interface improvements
5.8.4 Code cleanup / Other
5.8.5 Raised limits
5.9 Changes in 0.90.1
5.1 Changes in 0.94.2
5.2 Changes in 0.94.1
5.3 Changes in 0.94.0
5.4 Changes in 0.93.2
5.5 Changes in 0.93.1
5.6 Changes in 0.93.0
5.7 Changes in 0.92.1
5.8 Changes in 0.92.0
5.9 Changes in 0.91.0
5.9.1 Bugfixes
5.9.2 Performance
5.9.3 Visual improvements
5.9.4 Interface improvements
5.9.5 Code cleanup
5.10 Changes in 0.90.0
5.11 Changes in 0.85.9
5.12 Changes in 0.85.8
5.13 Changes in 0.85.7
5.14 Changes in 0.85.6
5.15 Changes in 0.85.5
5.16 Changes in 0.85.4
5.17 Changes in 0.85.3
5.18 Changes in 0.85.2
5.19 Changes in 0.85.1
5.9.2 Visual improvements
5.9.3 Interface improvements
5.9.4 Code cleanup / Other
5.9.5 Raised limits
5.10 Changes in 0.90.1
5.10.1 Bugfixes
5.10.2 Performance
5.10.3 Visual improvements
5.10.4 Interface improvements
5.10.5 Code cleanup
5.11 Changes in 0.90.0
5.12 Changes in 0.85.9
5.13 Changes in 0.85.8
5.14 Changes in 0.85.7
5.15 Changes in 0.85.6
5.16 Changes in 0.85.5
5.17 Changes in 0.85.4
5.18 Changes in 0.85.3
5.19 Changes in 0.85.2
5.20 Changes in 0.85.1
6. Copyright
7. Contact
@ -56,7 +57,7 @@
______________________________________________________________________
Page last edited: Sep. 2021
Page last edited: October 2021
1. About
@ -260,13 +261,24 @@
5. Changes
5.1. Changes in 0.94.1
5.1. Changes in 0.94.2
o 2021 rerelease: Support for playing the latest update.
o 2021 rerelease: Fix pitch black models in lit areas in DOTM.
o 2021 rerelease: Fix black candles in the DOTM start map.
o 2021 rerelease: Look for QuakeEX.kpf under userdir, too.
5.2. Changes in 0.94.1
o Fix lightmap issues after vkQuake surface mark/cull optimizations
merge (sf.net bug/50)
5.2. Changes in 0.94.0
5.3. 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
@ -315,7 +327,7 @@
o Source repository moved to git.
5.3. Changes in 0.93.2
5.4. Changes in 0.93.2
o Lightmaps are now dynamically allocated (from QSS), and
BLOCK_WIDTH/HEIGHT raised from 128 to 256.
@ -335,7 +347,7 @@
o Update the third-party libraries. Other fixes/cleanups.
5.4. Changes in 0.93.1
5.5. Changes in 0.93.1
o Fixed a fog regression which was introduced in 0.93.0.
@ -353,7 +365,7 @@
o Update the third-party libraries. Other fixes/cleanups.
5.5. Changes in 0.93.0
5.6. Changes in 0.93.0
o Raise default "joy_deadzone_trigger" cvar to 0.2.
@ -438,7 +450,7 @@
o Update the third-party libraries.
5.6. Changes in 0.92.1
5.7. Changes in 0.92.1
o Fixed large menu scale factors (was broken in 0.92.0).
@ -447,7 +459,7 @@
o Updated some of the third-party libraries.
5.7. Changes in 0.92.0
5.8. Changes in 0.92.0
o SDL2 Game Controller support.
@ -484,9 +496,9 @@
o Updated some of the third-party libraries. Other fixes/clean-ups.
5.8. Changes in 0.91.0
5.9. Changes in 0.91.0
5.8.1. Bugfixes
5.9.1. Bugfixes
o Fix unwanted fog mode change upon video restart.
@ -522,7 +534,7 @@
o Prevent a possible vulnerability in MSG_ReadString (old Q1/Q2 bug).
5.8.2. Visual improvements
5.9.2. Visual improvements
o New cvars r_lavaalpha, r_slimealpha, r_telealpha for fine-tuning
specific liquid opacities (from DirectQ/RMQEngine, non-archived,
@ -533,18 +545,18 @@
o GLSL gamma is now supported on older hardware without NPOT
extension.
5.8.3. Interface improvements
5.9.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.8.4. Code cleanup / Other
5.9.4. Code cleanup / Other
o Update third-party libraries.
5.8.5. Raised limits
5.9.5. Raised limits
o Default max_edicts 8192 (was 2048) and no longer saved to
config.cfg.
@ -556,16 +568,16 @@
o Raised MAX_SFX to 1024 (was 512).
5.9. Changes in 0.90.1
5.10. Changes in 0.90.1
5.9.1. Bugfixes
5.10.1. Bugfixes
o Fix dynamic light artifact where changing lightmap are rendered one
frame late (bug introduced in 0.90.0).
o Fix texture memory leak when changing video modes with SDL2.
o Fix rare incorrect mdl lighting on 64-bit builds. (details here:
o Fix a rare incorrect mdl lighting on 64-bit builds. (details here:
http://forums.insideqc.com/viewtopic.php?f=3&t=5620)
o Fix fullbrights turning black after "kill" command (bug introduced
@ -581,13 +593,13 @@
o Fix crash on out-of-bounds skin number.
5.9.2. Performance
5.10.2. Performance
o Use multithreaded OpenGL on OS X for better performance.
o New, faster mdl renderer using GLSL. Disable with "-noglslalias".
5.9.3. Visual improvements
5.10.3. Visual improvements
o New gamma correction implementation using GLSL. Fixes all known
gamma issues (affecting the full display, persisting after
@ -601,7 +613,7 @@
o r_noshadow_list cvar added (from MarkV.)
5.9.4. Interface improvements
5.10.4. Interface improvements
o Support pausing demo playback with the "pause" command.
@ -618,14 +630,14 @@
"trying to load ent", "bad chunk length", "meshing",
"PR_AlocStringSlots: realloc'ing"
5.9.5. Code cleanup
5.10.5. Code cleanup
o Clean up IDE project files to build on fresh systems.
o Update 3rd-party libraries.
5.10. Changes in 0.90.0
5.11. Changes in 0.90.0
o Fix issues on Windows systems with DPI scaling.
@ -733,7 +745,7 @@
o Other fixes and clean-ups.
5.11. Changes in 0.85.9
5.12. Changes in 0.85.9
o Fixes for several undefined behaviors in C code (gcc-4.8 support.)
@ -780,7 +792,7 @@
o Several other minor fixes/cleanups.
5.12. Changes in 0.85.8
5.13. Changes in 0.85.8
o Made Quake shareware 1.00 and 1.01 versions to be recognized
properly.
@ -827,7 +839,7 @@
o Miscellaneous source code cleanups.
5.13. Changes in 0.85.7
5.14. Changes in 0.85.7
o Added support for cross-level demo playback
@ -853,7 +865,7 @@
o Several other small changes mostly invisible to the end-user
5.14. Changes in 0.85.6
5.15. Changes in 0.85.6
o More work for string buffer safety
@ -866,7 +878,7 @@
o Minor SDL video fixes.
5.15. Changes in 0.85.5
5.16. Changes in 0.85.5
o SDL input driver updated adding native keymap and dead key support
to the console
@ -897,7 +909,7 @@
o Several code updates from uHexen2 project, several code cleanups.
5.16. Changes in 0.85.4
5.17. Changes in 0.85.4
o Implement music (OGG, MP3, WAV) playback
@ -925,7 +937,7 @@
o Other minor sound and cdaudio updates
5.17. Changes in 0.85.3
5.18. Changes in 0.85.3
o Fix the "-dedicated" option (thanks Oz) and add platform specific
networking code (default) rather than SDL_net
@ -962,7 +974,7 @@
some other CD tweaks.
5.18. Changes in 0.85.2
5.19. Changes in 0.85.2
o Replace the old "Screen size" slider with a "Scale" slider
@ -990,7 +1002,7 @@
o Add OSX Makefile (tested?)
5.19. Changes in 0.85.1
5.20. Changes in 0.85.1
o 64 bit CPU support