Page 2 of 4

Re: Old school quake, well not quite but

Posted: Mon Mar 20, 2017 6:47 pm
by frag.machine
toneddu2000 wrote:
frag.machine wrote:IIRC the VM is not even initialized (let alone running) during demo playback...
:?: And how's possible that demos run quakec code (weapon,ai, gameplay, etc.) if VM is not initialized? Did I miss something?
Quake demos are just network packets stored in a binary file. The client reads it back into the network message buffers and then treats it as normal network messages coming from a server. There is no server running (and thus no QuakeC involved) during demo playback.

Re: Old school quake, well not quite but

Posted: Tue Mar 21, 2017 6:13 am
by revelator
Heh didnt know that :) i guess thats why some mods who wanted something a bit more special like zerstoerer used cutscenes like demos.
Not that cutscenes are without problems either...

Btw fixing the broken lightpoint code had the curious side effect of turning off the somewhat colored appearance my engine has been (suffering ?) from,
it looks a bit bland now compared to before but i guess it just takes some getting used to after the massive overdose of colored lighting :smile:

Somehow i broke malice while hunting the before mentioned bugs sigh, now i get a heap collision error on the first map, and a bad lmp if i increase heap size :shock:

Re: Old school quake, well not quite but

Posted: Tue Mar 21, 2017 8:03 am
by revelator
So i got hipnotic to run but

Image

see the problem with this

Image

broken rotation on doors it seems, funny thing is it only happens at certain angles but looks like crap when it happens.

Re: Old school quake, well not quite but

Posted: Tue Mar 21, 2017 11:43 pm
by qbism
Yeah, demo parsing is separate from vm. Good opportunity to code bug checks in demo parser :)

Re: Old school quake, well not quite but

Posted: Wed Mar 22, 2017 8:17 am
by toneddu2000
frag.machine wrote:Quake demos are just network packets stored in a binary file. The client reads it back into the network message buffers and then treats it as normal network messages coming from a server. There is no server running (and thus no QuakeC involved) during demo playback.
ah ok, understood, now. Thanks for the clarification, frag.machine. But, when client reads demo binary file, it loads its quakec to understand what sound play or what weapon model show, right? Either way I couldn't understand how demo could play

Re: Old school quake, well not quite but

Posted: Wed Mar 22, 2017 3:45 pm
by Spike
demos replace the server. there is no ssqc running at all when _playing_ demos, same as clients don't load any ssqc when connecting to remote servers.

Re: Old school quake, well not quite but

Posted: Wed Mar 22, 2017 4:09 pm
by mh
Yeah, if you're crashing inside the VM while playing a demo, then you're more likely to have a bad pointer transferring execution to random memory locations than you are to have anything wrong with the VM.

Re: Old school quake, well not quite but

Posted: Thu Mar 23, 2017 3:15 pm
by revelator
Got that much :) i found atleast some of the problem and it seems related to avirox rotating bmodel code,
i might have broken something when i implemented it off the tutorial here,
but comparing the code brought me no answers so its probably something deeper in the code that messes up things.

I can run hipnotic with the bug check off now but it looks like shite with these doors messing up like that :S

Also found other bugs that i newer had suspected would cause so many problems, one was from when i took over this engine.

Code: Select all

/*
============
R_LightPoint
============
*/
void R_LightPoint(vec3_t p, vec3_t colour)
{
	vec3_t		start;
	vec3_t		end;
	int			lnum;
	vec3_t		dist;
	float		add;
	int			x;
	model_t		*mod;
	model_t		*shortest;

	if(!cl.worldmodel->lightdata)
	{
		colour[0] = 255;
		colour[1] = 255;
		colour[2] = 255;
		return;
	}

	// set up end point
	// this must be done seperately for each model checked as it's passed as a pointer to
	// RecursiveLightPoint, and therefore may have it's value changed
	end[0] = p[0];
	end[1] = p[1];
	end[2] = p[2] - 2048;

	// nothing hit yet
	lightplane = NULL;

	// do the world first
	RecursiveLightPoint(cl.worldmodel->nodes, p, end);

	// did we hit?
	if(lightplane)
	{
		// copy out the data
		cl.worldmodel->lightplane = lightplane;
		cl.worldmodel->lightspot[0] = lightspot[0];
		cl.worldmodel->lightspot[1] = lightspot[1];
		cl.worldmodel->lightspot[2] = lightspot[2];
		cl.worldmodel->pointcolour[0] = pointcolour[0];
		cl.worldmodel->pointcolour[1] = pointcolour[1];
		cl.worldmodel->pointcolour[2] = pointcolour[2];
	}
	else
	{
		// set to valid data for shortest path testing
		cl.worldmodel->lightplane = NULL;
		cl.worldmodel->lightspot[2] = -1000000;
		cl.worldmodel->pointcolour[0] = 0;
		cl.worldmodel->pointcolour[1] = 0;
		cl.worldmodel->pointcolour[2] = 0;
	}

	// find the shortest path - this will be the model with the highest value in lightspot[2]
	// init it to the worldmodel first
	shortest = cl.worldmodel;

	// now check the brush models
	for(x = 0; x < cl_numvisedicts; x++)
	{
		mod = cl_visedicts[x]->model;

		// no more models
		if(!mod)
		{
			break;
		}

		// don;t do * models (their data comes from the world)
		// the check here was wrong since it's inception, it was set to only allow '*' models and not the other way around Oo
		if(ISTURBTEX(mod->name))
		{
			continue;
		}

		// make sure we only get brush models
		if(mod->type != mod_brush)
		{
			continue;
		}

		// set up start point
		// offset the start [0] and [1] points by entity origin to do func_train bmodels
		// this is positioned above the model to account for moving bmodels (note the "-" in [2])
		start[0] = p[0] + cl_visedicts[x]->origin[0];
		start[1] = p[1] + cl_visedicts[x]->origin[1];
		start[2] = p[2] - cl_visedicts[x]->origin[2];

		// set up end point
		// this must be done seperately for each model checked as it's passed as a pointer to
		// RecursiveLightPoint, and therefore may have it's value changed
		// offset the end [0] and [1] points by entity origin to do func_train bmodels
		end[0] = p[0] + cl_visedicts[x]->origin[0];
		end[1] = p[1] + cl_visedicts[x]->origin[1];
		end[2] = p[2] - 2048 + cl_visedicts[x]->origin[2];

		// NULL it again
		lightplane = NULL;

		// and do it
		RecursiveLightPoint(mod->nodes + mod->hulls[0].firstclipnode, start, end);

		// did we hit?
		if(lightplane)
		{
			// copy out the data
			mod->lightplane = lightplane;
			mod->lightspot[0] = lightspot[0];
			mod->lightspot[1] = lightspot[1];

			// store the colour for this model.  it hit but we don't know if it's the shortest
			// yet, so each model must store it's own colour
			mod->pointcolour[0] = pointcolour[0];
			mod->pointcolour[1] = pointcolour[1];
			mod->pointcolour[2] = pointcolour[2];

			// add origin[2] cos the bmodel may move!!!
			// it's official.  i'm a stupid twit.  i was using the origin of the *model* originally,
			// not of the *entity*.  this works just fine.
			mod->lightspot[2] = lightspot[2] + cl_visedicts[x]->origin[2];

			// check for shortest path
			if(mod->lightspot[2] > shortest->lightspot[2])
			{
				shortest = mod;
			}
		}
		else
		{
			mod->lightplane = NULL;
			mod->pointcolour[0] = 0;
			mod->pointcolour[1] = 0;
			mod->pointcolour[2] = 0;
		}
	}

	// copy the shortest out to the globals
	lightplane = shortest->lightplane;
	lightspot[0] = shortest->lightspot[0];
	lightspot[1] = shortest->lightspot[1];
	lightspot[2] = shortest->lightspot[2];

	// store pointcolour back to colour
	if(!lightplane)
	{
		// hit nothing
		colour[0] = 0.0f;
		colour[1] = 0.0f;
		colour[2] = 0.0f;
	}
	else
	{
		// take the pointcolour from the shortest
		// (previous Realms took the global pointcolour, which may or may not have been the shortest)
		colour[0] = shortest->pointcolour[0];
		colour[1] = shortest->pointcolour[1];
		colour[2] = shortest->pointcolour[2];
	}

	// and add dynamic lights
	for(lnum = 0; lnum < MAX_DLIGHTS; lnum++)
	{
		if(cl_dlights[lnum].die >= cl.time)
		{
			VectorSubtract(p, cl_dlights[lnum].origin, dist);
			add = cl_dlights[lnum].radius - Length(dist);

			if(add > 0.0f)
			{
				VectorMA(colour, add, cl_dlights[lnum].RGB, colour);
			}
		}
	}
}


notice the check for turb models ? originally it was if(mod->name[0] != '*') continue; :S and the problem same in stainmaps.
This meant light started behaving rather strange at times (certainly made this engine extremely colorfull) but also caused weird behaviour with certain water surfs.
Not blaming anyone its an honest mistake that might have cropped up because of lack of sleep on the coders side, god knows i had many of those nights myself.

Re: Old school quake, well not quite but

Posted: Fri Mar 24, 2017 6:44 am
by revelator
Was indeed the rotating bmodel code that caused the bug,
i looked over the tutorial yesterday and noticed that there had been a few changes since i implemented it.

One of the functions im not 100% certain with still is this one

Code: Select all

void SV_FindTouchedLeafs(edict_t *ent, mnode_t *node, byte *pvs)
{
	mplane_t	*splitplane;
	int			sides;
	int			leafnum;

loc0:
	// ent already touches a leaf
	if(ent->touchleaf)
	{
		return;
	}

	// hit solid
	if(node->contents == CONTENTS_SOLID)
	{
		return;
	}

	// add an efrag if the node is a leaf
	// this is used for sending ents to the client so it needs to stay
	if(node->contents < 0)
	{
loc1:
		leafnum = ((mleaf_t *) node) - sv.worldmodel->leafs - 1;

		if((pvs[leafnum >> 3] & (1 << (leafnum & 7))))
		{
			ent->touchleaf = true;
		}
		return;
	}

	// NODE_MIXED
	splitplane = node->plane;
	sides = BOX_ON_PLANE_SIDE(ent->v.absmin, ent->v.absmax, splitplane);

	// recurse down the contacted sides, start dropping out if we hit anything
	if((sides & 1) && !ent->touchleaf && node->children[0]->contents != CONTENTS_SOLID)
	{
		if(!(sides & 2) && node->children[0]->contents < 0)
		{
			node = node->children[0];
			goto loc1;
		}
		else if(!(sides & 2))
		{
			node = node->children[0];
			goto loc0;
		}
		else
		{
			SV_FindTouchedLeafs(ent, node->children[0], pvs);
		}
	}

	if((sides & 2) && !ent->touchleaf && node->children[1]->contents != CONTENTS_SOLID)
	{
		// test for a leaf and drop out if so, otherwise it's a node so go round again
		node = node->children[1];

		if(node->contents < 0)
		{
			goto loc1;
		}
		else
		{
			goto loc0;
		}
	}
}
Where there any problems related to this function ? i could not quite grasp from one of the last comments if i had to revert everything to bakers version.

Re: Old school quake, well not quite but

Posted: Sat Mar 25, 2017 8:46 pm
by revelator
Holy hellhole batman :shock:

Code: Select all

Flad profil:

Hver stikprøve regnes som 0.01 seconds.
  %    kumulativ     selv              selv   totalt          
  tid   seconds   seconds     kald   s/kald   s/kald  navn    
 27.88     67.24    67.24                             _mcount_private
 23.06    122.85    55.61 3455449516     0.00     0.00  Sys_DoubleTime
  8.82    144.13    21.28     1492     0.01     0.01  MakeSpec
  6.52    159.85    15.72 756397056     0.00     0.00  BoxFilter
  5.21    172.41    12.56                             inflate
  3.45    180.74     8.33 3455424386     0.00     0.00  Host_Frame
  3.06    188.12     7.38 3455424386     0.00     0.00  _Host_Frame
  2.96    195.25     7.13 3455424386     0.00     0.00  Host_FilterTime
  2.62    201.58     6.33        1     6.33   113.43  WinMain@16
  1.73    205.74     4.16 174098534     0.00     0.00  R_GetVertexLightValue
  1.53    209.44     3.70 520397338     0.00     0.00  unzReadCurrentFile
  1.16    212.24     2.80                             fmod
  1.12    214.94     2.70 520397327     0.00     0.00  COM_FRead
  0.97    217.29     2.35                             crc32
  0.92    219.51     2.23                             _fentry__
  0.89    221.66     2.14      441     0.00     0.05  MakeDOT3
  0.75    223.46     1.80                             updatewindow
  0.58    224.87     1.41                             GL_ProcessTexturePass
  0.57    226.24     1.37     2098     0.00     0.00  GL_LoadTGA
  0.50    227.44     1.21   253591     0.00     0.00  GL_DrawAliasFrame
  0.44    228.51     1.07      176     0.01     0.01  GL_ResampleTexture
  0.40    229.47     0.96                             _setjmp3
  0.36    230.35     0.88 520396884     0.00     0.00  COM_FGetc
  0.34    231.16     0.81 189099264     0.00     0.00  ReadPixel
  0.23    231.73     0.56 520400025     0.00     0.00  COM_GetFileByHandle
  0.22    232.26     0.53        1     0.53     0.62  Sys_Quit
  0.20    232.74     0.48    23902     0.00     0.00  R_StencilHazeParticles
  0.16    233.13     0.40 87049267     0.00     0.00  R_SetVertexLightValue
  0.14    233.47     0.33    23999     0.00     0.00  R_RecursiveWorldNode
  0.12    233.76     0.30    67072     0.00     0.00  R_MarkLights
  0.12    234.06     0.30    60634     0.00     0.00  R_AddTransformedBSPBModelToList
  0.12    234.36     0.29    23999     0.00     0.00  R_KillParticles
  0.12    234.65     0.29   928929     0.00     0.00  RecursiveLightPoint
  0.12    234.94     0.29   329886     0.00     0.00  R_AddDynamicLights
  0.12    235.22     0.28    46091     0.00     0.00  R_DrawTorchSmokeEffect
  0.11    235.49     0.27    23999     0.00     0.00  R_DrawSmokeParticles
  0.11    235.75     0.26        1     0.26     0.26  Heap_PageIn
  0.10    236.00     0.25 55439360     0.00     0.00  R_UpdateTorchSmokeParticle
  0.10    236.25     0.25    25023     0.00     0.00  R_UpdateTorchSmokeParticles
  0.10    236.50     0.25    23999     0.00     0.00  R_DrawSurfaceChain
  0.10    236.73     0.23   179266     0.00     0.00  R_DrawAliasModelShadow
  0.09    236.95     0.22  4420335     0.00     0.00  R_SetupSurfaceVArrayVerts
  0.09    237.16     0.21    21302     0.00     0.00  R_UpdateParticles
  0.08    237.36     0.20 29361062     0.00     0.00  BoxOnPlaneSide
  0.08    237.55     0.19    36159     0.00     0.00  R_DrawParticleChain
  0.06    237.70     0.15    23999     0.00     0.00  R_DrawWaterSurfaces
  0.06    237.84     0.14 47274816     0.00     0.00  PackFloatInByte
  0.06    237.98     0.14                             unzlocal_getByte
  0.05    238.10     0.12                             memcpy
  0.04    238.19     0.09   330814     0.00     0.00  R_BuildLightMap
  0.04    238.28     0.09   330814     0.00     0.00  R_StoreLightmap
  0.04    238.37     0.09   207731     0.00     0.00  R_LightPoint
  0.04    238.46     0.09   207731     0.00     0.00  R_SetupAliasFrame
  0.04    238.55     0.09   160778     0.00     0.00  Mod_PointInLeaf
  0.04    238.64     0.09        1     0.09     0.09  COM_ShutdownFileSystem
  0.03    238.72     0.08    24008     0.00     0.00  CL_RelinkEntities
  0.03    238.79     0.07    23902     0.00     0.00  R_HeatHazePickup
  0.03    238.87     0.07 61094991     0.00     0.00  fread_file_func
  0.03    238.94     0.07  7968327     0.00     0.00  R_CullSphere
  0.03    239.00     0.07      160     0.00     0.00  va
  0.02    239.06     0.06  6164762     0.00     0.00  R_CullBox
  0.02    239.12     0.06  4056531     0.00     0.00  R_AnimateSurfaceLight
  0.02    239.18     0.06   229242     0.00     0.00  SND_PaintChannelFrom8
  0.02    239.24     0.06    55602     0.00     0.00  StripLength
  0.02    239.30     0.06    49995     0.00     0.00  R_DrawLavaStencilSmoke
  0.02    239.36     0.06                             MD5Transform
  0.02    239.41     0.05   107927     0.00     0.00  R_StainSurf
  0.02    239.46     0.05    26816     0.00     0.00  LMAllocBlock
  0.02    239.51     0.05    13663     0.00     0.00  R_CausticPickup
  0.02    239.55     0.04 40909800     0.00     0.00  Q_rand
  0.02    239.59     0.04   207731     0.00     0.00  R_RotateForEntity
  0.02    239.63     0.04    23999     0.00     0.00  R_AnimateLight
  0.02    239.67     0.04    23999     0.00     0.00  R_InitTextureChains
  0.02    239.71     0.04    23999     0.00     0.00  R_MarkLeaves
  0.02    239.75     0.04        2     0.02     0.03  R_InitTorchSmokeParticles
  0.01    239.78     0.03  4420335     0.00     0.00  R_TextureAnimation
  0.01    239.81     0.03   655121     0.00     0.00  unzGoToNextFile
  0.01    239.84     0.03    77604     0.00     0.00  R_StainNode
  0.01    239.87     0.03    55602     0.00     0.00  FanLength
  0.01    239.90     0.03    48106     0.00     0.00  S_PaintChannels
  0.01    239.93     0.03    23999     0.00     0.00  R_AddBModelsToDrawList
  0.01    239.96     0.03    23999     0.00     0.00  R_BloomBlend
  0.01    239.99     0.03    23999     0.00     0.00  R_Bloom_GeneratexDiamonds
  0.01    240.02     0.03    23902     0.00     0.00  R_DrawTurbFog
  0.01    240.05     0.03    19236     0.00     0.00  R_LumaPickup
  0.01    240.07     0.02  1518368     0.00     0.00  Normalize
  0.01    240.09     0.02  1365489     0.00     0.00  SND_Spatialize
  0.01    240.11     0.02   655901     0.00     0.00  unzGetCurrentFileInfo
  0.01    240.13     0.02   653948     0.00     0.00  unzStringFileNameCompare
  0.01    240.15     0.02   389825     0.00     0.00  R_TransformVArrayVerts
  0.01    240.17     0.02   232747     0.00     0.00  S_LoadSound
  0.01    240.19     0.02   214892     0.00     0.00  R_LeafForEntity
  0.01    240.21     0.02   207731     0.00     0.00  R_DrawAliasModel
  0.01    240.23     0.02    96236     0.00     0.00  R_TransformEntity
  0.01    240.25     0.02    47998     0.00     0.00  R_SetupGL
  0.01    240.27     0.02    47804     0.00     0.00  R_DrawSkyLists
  0.01    240.29     0.02    24031     0.00     0.00  SCR_UpdateScreen
  0.01    240.31     0.02    24008     0.00     0.00  S_Update
  0.01    240.33     0.02    23999     0.00     0.00  R_Bloom_DownsampleView
  0.01    240.35     0.02    23999     0.00     0.00  R_DrawAliasEntities
  0.01    240.37     0.02    23999     0.00     0.00  R_DrawSkyPickup
  0.01    240.39     0.02    23999     0.00     0.00  R_MarkPortals
  0.01    240.41     0.02    22893     0.00     0.00  V_CalcRefdef
  0.01    240.43     0.02      784     0.00     0.00  fopen_file_func
  0.01    240.45     0.02      212     0.00     0.00  GL_QuantumLumaHackery
  0.01    240.47     0.02                             R_DepthSortAliasEntities
  0.01    240.49     0.02                             png_read_filter_row_paeth_multibyte_pixel
  0.01    240.51     0.02                             unzlocal_getLong
  0.01    240.53     0.02                             unzlocal_getShort
  0.01    240.54     0.01  2186979     0.00     0.00  Draw_SingleScaledCharacter
  0.01    240.56     0.01    15292     0.00     0.00  R_RocketTrail
  0.01    240.57     0.01        1     0.01     0.01  R_InitVertexLights
  0.00    240.59     0.01   811871     0.00     0.00  LongNoSwap
  0.00    240.59     0.01   458117     0.00     0.00  Draw_Pic
  0.00    240.60     0.01   376909     0.00     0.00  LerpAngles
  0.00    240.62     0.01   210282     0.00     0.00  anglemod
  0.00    240.62     0.01   179579     0.00     0.00  CL_ParseUpdate
  0.00    240.63     0.01   120235     0.00     0.00  R_PushDlights
  0.00    240.65     0.01    76332     0.00     0.00  HUD_DrawIndividualWeapon
  0.00    240.66     0.01    68068     0.00     0.00  HUD_DrawNum
  0.00    240.66     0.01    62873     0.00     0.00  R_TurbDepthOn
  0.00    240.68     0.01    49554     0.00     0.00  R_ParticleSprite
  0.00    240.69     0.01    47998     0.00     0.00  GL_SetPerspective
  0.00    240.69     0.01    44675     0.00     0.00  R_StoreEfrags
  0.00    240.71     0.01    28290     0.00     0.00  Snd_WriteLinearBlastStereo16
  0.00    240.72     0.01    24125     0.00     0.00  GL_Set2D
  0.00    240.72     0.01    24098     0.00     0.00  IN_Accumulate
  0.00    240.74     0.01    24026     0.00     0.00  Con_CheckResize
  0.00    240.75     0.01    24026     0.00     0.00  GL_EndRendering
  0.00    240.75     0.01    24026     0.00     0.00  Sbar_Draw3DBrushes
  0.00    240.76     0.01    24008     0.00     0.00  CL_UpdateTEnts
  0.00    240.78     0.01    24008     0.00     0.00  S_UpdateAmbientSounds
  0.00    240.78     0.01    24005     0.00     0.00  R_RenderView
  0.00    240.79     0.01    24003     0.00     0.00  CL_SendMove
  0.00    240.81     0.01    23999     0.00     0.00  R_Clear
  0.00    240.81     0.01    23999     0.00     0.00  R_CullAliasEntities
  0.00    240.82     0.01    23999     0.00     0.00  R_CullBrushEntities
  0.00    240.84     0.01    23999     0.00     0.00  R_DrawSpriteEntities
  0.00    240.84     0.01    23999     0.00     0.00  R_DrawViewModel
  0.00    240.85     0.01    23999     0.00     0.00  R_InitRegularTMUs
  0.00    240.87     0.01    23999     0.00     0.00  R_KillTMUs
  0.00    240.88     0.01    23999     0.00     0.00  R_ShouldDrawViewModel
  0.00    240.88     0.01    23999     0.00     0.00  R_TransSortBrushEntities
  0.00    240.90     0.01    22893     0.00     0.00  Draw_XHair
  0.00    240.91     0.01    22893     0.00     0.00  V_CalcFloats
  0.00    240.91     0.01    22893     0.00     0.00  V_CalcGunAngle
  0.00    240.93     0.01    22796     0.00     0.00  HUD_DrawAmmoCount
  0.00    240.94     0.01    22796     0.00     0.00  HUD_DrawFaceBSP
  0.00    240.94     0.01    22796     0.00     0.00  Sbar_DrawAmmo
  0.00    240.96     0.01    11653     0.00     0.00  CL_ParseServerMessage
  0.00    240.97     0.01     5368     0.00     0.00  MarkPVSForLeaf
  0.00    240.97     0.01     2716     0.00     0.00  MSG_ReadString
  0.00    240.99     0.01      780     0.00     0.00  unzLocateFile
  0.00    241.00     0.01      231     0.00     0.00  Mod_CalcAliasBounds
  0.00    241.00     0.01      215     0.00     0.00  MarkLeafsForSurf
  0.00    241.01     0.01      206     0.00     0.00  SV_Physics_Client
  0.00    241.03     0.01       99     0.00     0.00  Draw_TextBox
  0.00    241.03     0.01        3     0.00     0.00  R_InitBLTable
  0.00    241.04     0.01                             R_DepthSortBrushEntities
  0.00    241.06     0.01                             __chkstk_ms
  0.00    241.06     0.01                             __sinl_internal
  0.00    241.07     0.01                             ceil
  0.00    241.09     0.01                             cos
  0.00    241.09     0.01                             floor
  0.00    241.10     0.01                             fread
  0.00    241.12     0.01                             inflate_table
  0.00    241.12     0.01    45585     0.00     0.00  CharBlockEnd
  0.00    241.12     0.01    23999     0.00     0.00  R_RenderDrawList
  0.00    241.13     0.01    11221     0.00     0.00  CL_ParseClientdata
  0.00    241.13     0.01      719     0.00     0.00  CL_ParseBaseline
  0.00    241.14     0.01       54     0.00     0.00  M_Quit_Draw
  0.00    241.15     0.01        1     0.01     0.63  M_Quit_Key
  0.00    241.15     0.00 82748236     0.00     0.00  fill_fopen_filefunc
  0.00    241.15     0.00  2186979     0.00     0.00  Draw_SingleCharacter
  0.00    241.15     0.00  1334550     0.00     0.00  fseek_file_func
  0.00    241.15     0.00   752211     0.00     0.00  ShortNoSwap
  0.00    241.15     0.00   640690     0.00     0.00  MSG_ReadByte
  0.00    241.15     0.00   377010     0.00     0.00  LerpVectors
  0.00    241.15     0.00   333621     0.00     0.00  R_CullModelForEntity
  0.00    241.15     0.00   309017     0.00     0.00  MSG_ReadShort
  0.00    241.15     0.00   305729     0.00     0.00  Draw_TransPic
  0.00    241.15     0.00   301630     0.00     0.00  R_BoxContainsPoint
  0.00    241.15     0.00   269270     0.00     0.00  Draw_Character
  0.00    241.15     0.00   268199     0.00     0.00  MSG_ReadCoord
  0.00    241.15     0.00   260077     0.00     0.00  Heap_Init
  0.00    241.15     0.00   243872     0.00     0.00  SZ_GetSpace
  0.00    241.15     0.00   240030     0.00     0.00  CL_KeyState
  0.00    241.15     0.00   215378     0.00     0.00  FloatNoSwap
  0.00    241.15     0.00   204871     0.00     0.00  MSG_ReadChar
  0.00    241.15     0.00   183626     0.00     0.00  GL_CheckError
  0.00    241.15     0.00   180149     0.00     0.00  CL_EntityNum
  0.00    241.15     0.00   171628     0.00     0.00  CRC_ProcessByte
  0.00    241.15     0.00   171338     0.00     0.00  GL_MakeAliasModelDisplayLists
  0.00    241.15     0.00   149735     0.00     0.00  HUD_DrawHUDModel
  0.00    241.15     0.00   145448     0.00     0.00  Q_sqrt
  0.00    241.15     0.00   145442     0.00     0.00  MSG_WriteByte
  0.00    241.15     0.00   136776     0.00     0.00  HUD_SetHUDState
  0.00    241.15     0.00   131428     0.00     0.00  Length
  0.00    241.15     0.00   117845     0.00     0.00  MSG_ReadAngle
  0.00    241.15     0.00    96236     0.00     0.00  R_AddTransformedBModelToList
  0.00    241.15     0.00    96236     0.00     0.00  R_InverseTransform
  0.00    241.15     0.00    95996     0.00     0.00  R_SignbitsForPlane
  0.00    241.15     0.00    93466     0.00     0.00  NormalizeFast
  0.00    241.15     0.00    85312     0.00     0.00  MD5_Compare
  0.00    241.15     0.00    73658     0.00     0.00  Sbar_itoa
  0.00    241.15     0.00    72618     0.00     0.00  MSG_WriteShort
  0.00    241.15     0.00    72024     0.00     0.00  MSG_WriteAngle
  0.00    241.15     0.00    71672     0.00     0.00  AngleVectors
  0.00    241.15     0.00    52107     0.00     0.00  V_CalcPowerupCshift
  0.00    241.15     0.00    50718     0.00     0.00  Heap_MemAlloc
  0.00    241.15     0.00    50458     0.00     0.00  Heap_MemAllocFree
  0.00    241.15     0.00    50289     0.00     0.00  R_TurbDepthOff
  0.00    241.15     0.00    48106     0.00     0.00  GetSoundtime
  0.00    241.15     0.00    48106     0.00     0.00  SNDDMA_GetDMAPos
  0.00    241.15     0.00    48106     0.00     0.00  SNDDMA_Submit
  0.00    241.15     0.00    48106     0.00     0.00  S_Update_
  0.00    241.15     0.00    48052     0.00     0.00  V_DropCShift
  0.00    241.15     0.00    47998     0.00     0.00  GL_SetViewPort
  0.00    241.15     0.00    47368     0.00     0.00  MSG_ReadByteShort
  0.00    241.15     0.00    46789     0.00     0.00  R_SetupAliasDraw
  0.00    241.15     0.00    46789     0.00     0.00  R_ShutdownAliasDraw
  0.00    241.15     0.00    46077     0.00     0.00  Cmd_Argc
  0.00    241.15     0.00    45786     0.00     0.00  angledelta
  0.00    241.15     0.00    45585     0.00     0.00  CharBlockBegin
  0.00    241.15     0.00    36409     0.00     0.00  Cvar_WriteVariables
  0.00    241.15     0.00    35661     0.00     0.00  CL_GetMessage
  0.00    241.15     0.00    35578     0.00     0.00  PF_WriteEntity
  0.00    241.15     0.00    35314     0.00     0.00  Heap_ZAlloc
  0.00    241.15     0.00    34830     0.00     0.00  M_DrawCharacter
  0.00    241.15     0.00    33615     0.00     0.00  R_UploadSingleLightmap
  0.00    241.15     0.00    32703     0.00     0.00  va_vsnprintf
  0.00    241.15     0.00    31518     0.00     0.00  va_snprintf
  0.00    241.15     0.00    29119     0.00     0.00  R_InitTorchSmokeParticle
  0.00    241.15     0.00    28081     0.00     0.00  V_CalcBlend
  0.00    241.15     0.00    28080     0.00     0.00  Mod_CalcSurfaceExtents
  0.00    241.15     0.00    28064     0.00     0.00  S_TransferPaintBuffer
  0.00    241.15     0.00    28064     0.00     0.00  S_TransferStereo16
  0.00    241.15     0.00    26846     0.00     0.00  GL_BuildPolygonFromSurface
  0.00    241.15     0.00    26816     0.00     0.00  GL_CreateSurfaceLightmap
  0.00    241.15     0.00    26670     0.00     0.00  SCR_CalcFov
  0.00    241.15     0.00    25826     0.00     0.00  COM_ParseString
  0.00    241.15     0.00    25607     0.00     0.00  SZ_Write
  0.00    241.15     0.00    25422     0.00     0.00  Cvar_FindVar
  0.00    241.15     0.00    25134     0.00     0.00  Cmd_Argv
  0.00    241.15     0.00    25024     0.00     0.00  SetNetTime
  0.00    241.15     0.00    24527     0.00     0.00  SZ_Clear
  0.00    241.15     0.00    24522     0.00     0.00  Cvar_Set
  0.00    241.15     0.00    24102     0.00     0.00  MSG_WriteFloat
  0.00    241.15     0.00    24098     0.00     0.00  S_ExtraUpdate
  0.00    241.15     0.00    24044     0.00     0.00  Cvar_SetValue
  0.00    241.15     0.00    24026     0.00     0.00  GL_BeginRendering
  0.00    241.15     0.00    24026     0.00     0.00  SCR_SetBrightness
  0.00    241.15     0.00    24026     0.00     0.00  SCR_SetUpToDrawConsole
  0.00    241.15     0.00    24026     0.00     0.00  V_RenderView
  0.00    241.15     0.00    24026     0.00     0.00  V_UpdatePalette
  0.00    241.15     0.00    24013     0.00     0.00  Sys_SendKeyEvents
  0.00    241.15     0.00    24012     0.00     0.00  CL_ReadFromServer
  0.00    241.15     0.00    24012     0.00     0.00  CL_SendCmd
  0.00    241.15     0.00    24012     0.00     0.00  Cbuf_Execute
  0.00    241.15     0.00    24012     0.00     0.00  Host_GetConsoleCommands
  0.00    241.15     0.00    24012     0.00     0.00  NET_Poll
  0.00    241.15     0.00    24012     0.00     0.00  Sys_ConsoleInput
  0.00    241.15     0.00    24008     0.00     0.00  CL_LerpPoint
  0.00    241.15     0.00    24005     0.00     0.00  CL_DecayLights
  0.00    241.15     0.00    24005     0.00     0.00  V_AddIdle
  0.00    241.15     0.00    24003     0.00     0.00  CL_AdjustAngles
  0.00    241.15     0.00    24003     0.00     0.00  CL_BaseMove
  0.00    241.15     0.00    24003     0.00     0.00  IN_MouseMove
  0.00    241.15     0.00    24003     0.00     0.00  IN_Move
  0.00    241.15     0.00    24003     0.00     0.00  V_StopPitchDrift
  0.00    241.15     0.00    24002     0.00     0.00  IN_MouseEvent
  0.00    241.15     0.00    23999     0.00     0.00  R_Bloom_DrawEffect
  0.00    241.15     0.00    23999     0.00     0.00  R_DrawParticles
  0.00    241.15     0.00    23999     0.00     0.00  R_DrawWorld
  0.00    241.15     0.00    23999     0.00     0.00  R_ExtractFrustum
  0.00    241.15     0.00    23999     0.00     0.00  R_InitDetailOnlyTMU
  0.00    241.15     0.00    23999     0.00     0.00  R_InitSurfVArrays
  0.00    241.15     0.00    23999     0.00     0.00  R_PolyBlend
  0.00    241.15     0.00    23999     0.00     0.00  R_RenderScene
  0.00    241.15     0.00    23999     0.00     0.00  R_SetupFrame
  0.00    241.15     0.00    23999     0.00     0.00  R_TransSortAliasEntities
  0.00    241.15     0.00    23999     0.00     0.00  V_SetContentsColor
  0.00    241.15     0.00    23902     0.00     0.00  R_FragOff
  0.00    241.15     0.00    23795     0.00     0.00  Cmd_TokenizeString
  0.00    241.15     0.00    22991     0.00     0.00  V_CalcRoll
  0.00    241.15     0.00    22908     0.00     0.00  M_Draw
  0.00    241.15     0.00    22908     0.00     0.00  SCR_CheckDrawCenterString
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawConsole
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawNet
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawPause
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawRam
  0.00    241.15     0.00    22908     0.00     0.00  SCR_DrawTurtle
  0.00    241.15     0.00    22908     0.00     0.00  Sbar_Draw
  0.00    241.15     0.00    22893     0.00     0.00  Draw_XHairWrapper
  0.00    241.15     0.00    22893     0.00     0.00  V_BoundOffsets
  0.00    241.15     0.00    22893     0.00     0.00  V_CalcBob
  0.00    241.15     0.00    22893     0.00     0.00  V_CalcViewRoll
  0.00    241.15     0.00    22893     0.00     0.00  V_DriftPitch
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawAmmo
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawArmour
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawBits
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawPowerups
  0.00    241.15     0.00    22796     0.00     0.00  HUD_DrawWeapons
  0.00    241.15     0.00    22796     0.00     0.00  Sbar_Draw3DModels
  0.00    241.15     0.00    22796     0.00     0.00  Sbar_DrawArmor
  0.00    241.15     0.00    22789     0.00     0.00  Con_DrawNotify
  0.00    241.15     0.00    22643     0.00     0.00  R_SetupAliasShadowDraw
  0.00    241.15     0.00    22643     0.00     0.00  R_ShutdownAliasShadowDraw
  0.00    241.15     0.00    21623     0.00     0.00  Draw_CachePic
  0.00    241.15     0.00    21302     0.00     0.00  R_ExecStateChangeForParticles
  0.00    241.15     0.00    17374     0.00     0.00  R_FragOn
  0.00    241.15     0.00    14112     0.00     0.00  R_RemoveEfrags
  0.00    241.15     0.00    11751     0.00     0.00  MSG_BeginReading
  0.00    241.15     0.00    11322     0.00     0.00  MSG_ReadFloat
  0.00    241.15     0.00    11251     0.00     0.00  MSG_ReadLong
  0.00    241.15     0.00    10740     0.00     0.00  R_DrawLavaSmokeEffect
  0.00    241.15     0.00    10352     0.00     0.00  Mod_LeafPVS
  0.00    241.15     0.00    10194     0.00     0.00  BoundPoly
  0.00    241.15     0.00     8890     0.00     0.00  strlcpy
  0.00    241.15     0.00     8311     0.00     0.00  R_AddStain
  0.00    241.15     0.00     8288     0.00     0.00  R_DrawSpriteModel
  0.00    241.15     0.00     7948     0.00     0.00  COM_FOpenFile
  0.00    241.15     0.00     7948     0.00     0.00  COM_FOpenFileRead
  0.00    241.15     0.00     7948     0.00     0.00  COM_HandleForFile
  0.00    241.15     0.00     7874     0.00     0.00  HUD_DrawIndividualPowerup
  0.00    241.15     0.00     7300     0.00     0.00  R_SetupVolumeEffect
  0.00    241.15     0.00     7300     0.00     0.00  R_ShutDownVolumeEffect
  0.00    241.15     0.00     6024     0.00     0.00  SNDGetLittleLong
  0.00    241.15     0.00     5663     0.00     0.00  CL_AllocDlight
  0.00    241.15     0.00     5590     0.00     0.00  Mod_DecompressVis
  0.00    241.15     0.00     5590     0.00     0.00  Sbar_IntermissionNumber
  0.00    241.15     0.00     5276     0.00     0.00  HUD_DrawIndividualBit
  0.00    241.15     0.00     4952     0.00     0.00  pr_ChkEdict
  0.00    241.15     0.00     4518     0.00     0.00  COM_FGetcLittleShort
  0.00    241.15     0.00     4232     0.00     0.00  pr_ChkEField
  0.00    241.15     0.00     3879     0.00     0.00  MD5Update
  0.00    241.15     0.00     3857     0.00     0.00  SCR_DrawCenterString
  0.00    241.15     0.00     3717     0.00     0.00  SND_PickChannel
  0.00    241.15     0.00     3717     0.00     0.00  S_StartSound
  0.00    241.15     0.00     3685     0.00     0.00  MSG_ReadByteShort2
  0.00    241.15     0.00     3599     0.00     0.00  Mod_RadiusFromBounds
  0.00    241.15     0.00     3431     0.00     0.00  CL_ParseStartSoundPacket
  0.00    241.15     0.00     3242     0.00     0.00  SV_AddToFatPVS
  0.00    241.15     0.00     3242     0.00     0.00  SV_FatPVS
  0.00    241.15     0.00     3177     0.00     0.00  Mod_LoadAliasFrame
  0.00    241.15     0.00     3148     0.00     0.00  R_SetupAliasUnderwaterDraw
  0.00    241.15     0.00     3148     0.00     0.00  R_ShutdownAliasUnderwaterDraw
  0.00    241.15     0.00     2890     0.00     0.00  GL_InitTextureSlot
  0.00    241.15     0.00     2631     0.00     0.00  FindNextChunk
  0.00    241.15     0.00     2572     0.00     0.00  FindChunk
  0.00    241.15     0.00     2541     0.00     0.00  GL_LoadPNG
  0.00    241.15     0.00     2210     0.00     0.00  Sys_Printf
  0.00    241.15     0.00     1929     0.00     0.00  SNDGetLittleShort
  0.00    241.15     0.00     1926     0.00     0.00  COM_Read
  0.00    241.15     0.00     1838     0.00     0.00  pr_ChkGlobalsF
  0.00    241.15     0.00     1811     0.00     0.00  CL_NewTempEntity
  0.00    241.15     0.00     1734     0.00     0.00  COM_FCloseFile
  0.00    241.15     0.00     1645     0.00     0.00  pr_ChkFunction
  0.00    241.15     0.00     1564     0.00     0.00  unzGoToFirstFile
  0.00    241.15     0.00     1427     0.00     0.01  GL_TryForExternalTexture
  0.00    241.15     0.00     1345     0.00     0.00  GL_LoadBMP
  0.00    241.15     0.00     1345     0.00     0.00  GL_LoadPCX
  0.00    241.15     0.00     1293     0.00     0.00  MD5Final
  0.00    241.15     0.00     1293     0.00     0.00  MD5Init
  0.00    241.15     0.00     1293     0.00     0.00  MD5_Checksum
  0.00    241.15     0.00     1291     0.00     0.00  R_ParseParticleEffect
  0.00    241.15     0.00     1290     0.00     0.00  R_BloodParticleSplash
  0.00    241.15     0.00     1273     0.00     0.00  GL_UploadTextureToOpenGL
  0.00    241.15     0.00     1270     0.00     0.00  GL_MakeTextureObjects
  0.00    241.15     0.00     1246     0.00     0.00  CL_KeepaliveMessage
  0.00    241.15     0.00     1236     0.00     0.00  COM_FileBase
  0.00    241.15     0.00     1118     0.00     0.00  Sbar_IntermissionOverlay
  0.00    241.15     0.00     1112     0.00     0.00  V_CalcIntermissionRefdef
  0.00    241.15     0.00     1071     0.00     0.00  R_SmokeEffect
  0.00    241.15     0.00     1055     0.00     0.00  Mod_FindName
  0.00    241.15     0.00     1042     0.00     0.00  PR_EnterFunction
  0.00    241.15     0.00     1042     0.00     0.00  PR_LeaveFunction
  0.00    241.15     0.00      970     0.00     0.00  GL_SubdivideSurface
  0.00    241.15     0.00      970     0.00     0.00  SubdividePolygon
  0.00    241.15     0.00      953     0.00     0.00  COM_LoadTempFile
  0.00    241.15     0.00      949     0.00     0.00  CL_ParseTEnt
  0.00    241.15     0.00      947     0.00     0.00  Heap_ScratchZAlloc
  0.00    241.15     0.00      945     0.00     0.00  Con_DPrintf
  0.00    241.15     0.00      902     0.00     0.00  Cmd_ExecuteString
  0.00    241.15     0.00      856     0.00     0.00  strlcat
  0.00    241.15     0.00      843     0.00     0.02  GL_LoadQuakeTexture
  0.00    241.15     0.00      828     0.00     0.00  pr_GetString
  0.00    241.15     0.00      784     0.00     0.00  unzOpen
  0.00    241.15     0.00      784     0.00     0.00  unzOpen2
  0.00    241.15     0.00      782     0.00     0.00  fclose_file_func
  0.00    241.15     0.00      782     0.00     0.00  ftell_file_func
  0.00    241.15     0.00      782     0.00     0.00  unzClose
  0.00    241.15     0.00      780     0.00     0.00  unzCloseCurrentFile
  0.00    241.15     0.00      780     0.00     0.00  unzOpenCurrentFile
  0.00    241.15     0.00      780     0.00     0.00  unzOpenCurrentFile3
  0.00    241.15     0.00      770     0.00     0.00  GL_GetTextureSlotInCache
  0.00    241.15     0.00      709     0.00     0.00  pr_ChkGlobals
  0.00    241.15     0.00      707     0.00     0.00  R_RunGunshotEffect
  0.00    241.15     0.00      687     0.00     0.02  Mod_ForName
  0.00    241.15     0.00      687     0.00     0.02  Mod_LoadModel
  0.00    241.15     0.00      643     0.00     0.00  GetWavinfo
  0.00    241.15     0.00      643     0.00     0.00  ResampleSfx
  0.00    241.15     0.00      634     0.00     0.00  S_FindName
  0.00    241.15     0.00      634     0.00     0.00  S_PrecacheSound
  0.00    241.15     0.00      621     0.00     0.00  SV_RunThink
  0.00    241.15     0.00      607     0.00     0.00  Cbuf_AddText
  0.00    241.15     0.00      594     0.00     0.00  M_PrintWhite
  0.00    241.15     0.00      571     0.00     0.00  Con_Linefeed
  0.00    241.15     0.00      540     0.00     0.00  M_Print
  0.00    241.15     0.00      521     0.00     0.00  Key_Event
  0.00    241.15     0.00      514     0.00     0.00  MD5_Copy
  0.00    241.15     0.00      499     0.00     0.00  Loop_GetMessage
  0.00    241.15     0.00      499     0.00     0.00  NET_GetMessage
  0.00    241.15     0.00      483     0.00     0.00  Cbuf_AddText2
  0.00    241.15     0.00      472     0.00     0.00  Con_Printf
  0.00    241.15     0.00      465     0.00     0.00  Con_Print
  0.00    241.15     0.00      442     0.00     0.00  Con_SafePrintf
  0.00    241.15     0.00      409     0.00     0.00  V_cshift_f
  0.00    241.15     0.00      404     0.00     0.00  Cvar_VariableValue
  0.00    241.15     0.00      404     0.00     0.00  PF_cvar
  0.00    241.15     0.00      402     0.00     0.00  R_AddTexturesToListForModel
  0.00    241.15     0.00      398     0.00     0.00  MSG_WriteString
  0.00    241.15     0.00      352     0.00     0.00  MakeResamplePoint
  0.00    241.15     0.00      335     0.00     0.00  PR_ExecuteProgram
  0.00    241.15     0.00      318     0.00     0.00  GL_FlushTextureCache
  0.00    241.15     0.00      303     0.00     0.00  MSG_WriteCoord
  0.00    241.15     0.00      284     0.00     0.00  MarkSurfaceVolumesInLeaf
  0.00    241.15     0.00      254     0.00     0.00  CL_ParseStaticSound
  0.00    241.15     0.00      254     0.00     0.00  S_StaticSound
  0.00    241.15     0.00      241     0.00     0.00  Mod_FloodFillSkin
  0.00    241.15     0.00      231     0.00     0.00  BuildTris
  0.00    241.15     0.00      231     0.00     0.02  Mod_LoadAliasModel
  0.00    241.15     0.00      231     0.00     0.02  Mod_LoadAllSkins
  0.00    241.15     0.00      208     0.00     0.00  PF_VarString
  0.00    241.15     0.00      198     0.00     0.00  SV_ClipMoveToEntity
  0.00    241.15     0.00      198     0.00     0.00  SV_ClipToLinks
  0.00    241.15     0.00      198     0.00     0.00  SV_HullForEntity
  0.00    241.15     0.00      198     0.00     0.00  SV_Move
  0.00    241.15     0.00      198     0.00     0.00  SV_MoveBounds
  0.00    241.15     0.00      194     0.00     0.00  Loop_SendUnreliableMessage
  0.00    241.15     0.00      194     0.00     0.00  NET_SendUnreliableMessage
  0.00    241.15     0.00      193     0.00     0.00  W_CleanupName
  0.00    241.15     0.00      184     0.00     0.00  SwapPic
  0.00    241.15     0.00      177     0.00     0.00  Cmd_Exists
  0.00    241.15     0.00      177     0.00     0.00  Cvar_RegisterVariable
  0.00    241.15     0.00      175     0.00     0.00  Cvar_Command
  0.00    241.15     0.00      165     0.00     0.00  Key_SetBinding
  0.00    241.15     0.00      149     0.00     0.00  CL_ParseStatic
  0.00    241.15     0.00      149     0.00     0.00  R_AddEfrags
  0.00    241.15     0.00      149     0.00     0.00  R_SplitEntityOnNode
  0.00    241.15     0.00      146     0.00     0.00  Heap_Alloc
  0.00    241.15     0.00      144     0.00     0.00  Cmd_AddCommand
  0.00    241.15     0.00      144     0.00     0.00  Cvar_VariableString
  0.00    241.15     0.00      137     0.00     0.00  MHGLGetProcAddress
  0.00    241.15     0.00      137     0.00     0.00  R_ParticleExplosion
  0.00    241.15     0.00      136     0.00     0.00  CL_AllocDlightForTEnt
  0.00    241.15     0.00      136     0.00     0.00  R_SmokeSplash
  0.00    241.15     0.00      135     0.00     0.00  M_DrawTransPic
  0.00    241.15     0.00      134     0.00     0.00  SCR_CenterPrint
  0.00    241.15     0.00      123     0.00     0.00  SV_LinkEdict
  0.00    241.15     0.00      114     0.00     0.00  NUM_FOR_EDICT
  0.00    241.15     0.00      114     0.00     0.00  PF_lightstyle
  0.00    241.15     0.00      109     0.00     0.00  pr_GetEdict
  0.00    241.15     0.00      108     0.00     0.00  PF_localcmd
  0.00    241.15     0.00      107     0.00     0.00  InsertLinkBefore
  0.00    241.15     0.00      107     0.00     0.00  PF_bprint
  0.00    241.15     0.00      107     0.00     0.00  SV_BroadcastPrintf
  0.00    241.15     0.00      107     0.00     0.00  SV_UnlinkEdict
  0.00    241.15     0.00      107     0.00     0.00  pr_String
  0.00    241.15     0.00      106     0.00     0.00  Loop_CanSendMessage
  0.00    241.15     0.00      106     0.00     0.00  Loop_SendMessage
  0.00    241.15     0.00      106     0.00     0.00  NET_CanSendMessage
  0.00    241.15     0.00      106     0.00     0.00  NET_SendMessage
  0.00    241.15     0.00      106     0.00     0.00  RemoveLink
  0.00    241.15     0.00      104     0.00     0.00  Key_Bind_f
  0.00    241.15     0.00      104     0.00     0.00  Key_StringToKeynum
  0.00    241.15     0.00      104     0.00     0.00  MSG_WriteLong
  0.00    241.15     0.00      103     0.00     0.00  SV_Physics
  0.00    241.15     0.00      103     0.00     0.00  SV_Physics_Pusher
  0.00    241.15     0.00      103     0.00     0.00  SV_TouchLinks
  0.00    241.15     0.00      102     0.00     0.00  Loop_CheckNewConnections
  0.00    241.15     0.00      102     0.00     0.00  MSG_WriteByteShort
  0.00    241.15     0.00      102     0.00     0.00  NET_CheckNewConnections
  0.00    241.15     0.00      102     0.00     0.00  SV_ModelIndex
  0.00    241.15     0.00      101     0.00     0.00  Datagram_CheckNewConnections
  0.00    241.15     0.00      101     0.00     0.00  Host_ServerFrame
  0.00    241.15     0.00      101     0.00     0.00  MSG_WriteChar
  0.00    241.15     0.00      101     0.00     0.00  PF_centerprint
  0.00    241.15     0.00      101     0.00     0.00  SV_CheckForNewClients
  0.00    241.15     0.00      101     0.00     0.00  SV_CheckVelocity
  0.00    241.15     0.00      101     0.00     0.00  SV_CleanupEnts
  0.00    241.15     0.00      101     0.00     0.00  SV_ClearDatagram
  0.00    241.15     0.00      101     0.00     0.00  SV_ReadClientMessage
  0.00    241.15     0.00      101     0.00     0.00  SV_RunClients
  0.00    241.15     0.00      101     0.00     0.00  SV_SendClientMessages
  0.00    241.15     0.00      101     0.00     0.00  SV_UpdateToReliableMessages
  0.00    241.15     0.00      101     0.00     0.00  V_BonusFlash_f
  0.00    241.15     0.00      101     0.00     0.00  WINS_CheckNewConnections
  0.00    241.15     0.00       99     0.00     0.00  DrawMenuBackground
  0.00    241.15     0.00       99     0.00     0.00  PF_makevectors
  0.00    241.15     0.00       99     0.00     0.00  SV_AddGravity
  0.00    241.15     0.00       99     0.00     0.00  SV_CheckStuck
  0.00    241.15     0.00       99     0.00     0.00  SV_CheckWater
  0.00    241.15     0.00       99     0.00     0.00  SV_FlyMove
  0.00    241.15     0.00       99     0.00     0.00  SV_HullPointContents
  0.00    241.15     0.00       99     0.00     0.00  SV_PointContents
  0.00    241.15     0.00       99     0.00     0.00  SV_SetIdealPitch
  0.00    241.15     0.00       99     0.00     0.00  SV_TestEntityPosition
  0.00    241.15     0.00       99     0.00     0.00  SV_WalkMove
  0.00    241.15     0.00       99     0.00     0.00  SV_WriteClientdataToMessage
  0.00    241.15     0.00       98     0.00     0.00  SV_AirAccelerate
  0.00    241.15     0.00       98     0.00     0.00  SV_AirMove
  0.00    241.15     0.00       98     0.00     0.00  SV_ClientThink
  0.00    241.15     0.00       98     0.00     0.00  SV_DropPunchAngle
  0.00    241.15     0.00       98     0.00     0.00  SV_SendClientDatagram
  0.00    241.15     0.00       98     0.00     0.00  SV_WriteEntitiesToClient
  0.00    241.15     0.00       95     0.00     0.00  SV_ReadClientMove
  0.00    241.15     0.00       92     0.00     0.00  PR_CheckEmptyString
  0.00    241.15     0.00       88     0.00     0.00  MarkStragglePVSForLeaf
  0.00    241.15     0.00       66     0.00     0.00  Draw_ConsoleBackground
  0.00    241.15     0.00       66     0.00     0.00  PF_precache_sound
  0.00    241.15     0.00       64     0.00     0.02  GL_AllocateLightmap
  0.00    241.15     0.00       61     0.00     0.00  COM_CheckParm
  0.00    241.15     0.00       50     0.00     0.00  V_ParseDamage
  0.00    241.15     0.00       48     0.00     0.02  Mod_LoadSpriteFrame
  0.00    241.15     0.00       46     0.00     0.00  Draw_FadeScreen
  0.00    241.15     0.00       45     0.00     0.00  M_DrawPic
  0.00    241.15     0.00       45     0.00     0.00  M_Main_Draw
  0.00    241.15     0.00       40     0.00     0.00  R_RunParticleEffect
  0.00    241.15     0.00       39     0.00     0.00  Mod_CheckWorldMap
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadBSPLighting
  0.00    241.15     0.00       39     0.00     0.20  Mod_LoadBrushModel
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadClipnodes
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadEdges
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadEntities
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadFaces
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadLeafs
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadLighting
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadMarksurfaces
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadNodes
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadPlanes
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadSubmodels
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadSurfedges
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadTexinfo
  0.00    241.15     0.00       39     0.00     0.20  Mod_LoadTextures
  0.00    241.15     0.00       39     0.00     0.00  Mod_LoadVertexes
  0.00    241.15     0.00       39     0.00     0.00  Mod_MakeHull0
  0.00    241.15     0.00       39     0.00     0.00  Mod_SetParent
  0.00    241.15     0.00       35     0.00     0.02  Mod_Load3DSkinnedWidget
  0.00    241.15     0.00       34     0.00     0.00  R_TeleportSplash
  0.00    241.15     0.00       32     0.00     0.00  CL_ParseBeam
  0.00    241.15     0.00       32     0.00     0.02  Mod_Load3DWidget
  0.00    241.15     0.00       31     0.00     0.00  GL_MakeDisplayListObjects
  0.00    241.15     0.00       30     0.00     0.00  W_GetLumpName
  0.00    241.15     0.00       30     0.00     0.00  W_GetLumpinfo
  0.00    241.15     0.00       29     0.00     0.02  Draw_PicFromWad
  0.00    241.15     0.00       26     0.00     0.00  Key_KeynumToString
  0.00    241.15     0.00       26     0.00     0.00  Mod_DrawWidgetFrame
  0.00    241.15     0.00       26     0.00     0.02  PF_precache_model
  0.00    241.15     0.00       25     0.00     0.00  CL_SignonReply
  0.00    241.15     0.00       24     0.00     0.00  Mod_SetupWidgetFrame
  0.00    241.15     0.00       24     0.00     0.01  R_TranslatePlayerSkin
  0.00    241.15     0.00       23     0.00     0.00  COM_ParseToken
  0.00    241.15     0.00       23     0.00     0.00  GL_SetLiquidColour
  0.00    241.15     0.00       22     0.00     0.00  CDAudio_Stop
  0.00    241.15     0.00       21     0.00     0.00  EDICT_NUM
  0.00    241.15     0.00       21     0.00     0.00  S_ClearBuffer
  0.00    241.15     0.00       21     0.00     0.00  S_StopAllSounds
  0.00    241.15     0.00       20     0.00     0.00  Con_DrawConsole
  0.00    241.15     0.00       20     0.00     0.00  Con_DrawInput
  0.00    241.15     0.00       19     0.00     0.00  ED_FindField
  0.00    241.15     0.00       15     0.00     0.00  Mod_LoadAliasGroup
  0.00    241.15     0.00       14     0.00     0.00  pr_GetEString
  0.00    241.15     0.00       13     0.00     0.01  CL_NewTranslation
  0.00    241.15     0.00       13     0.00     0.00  Cbuf_InsertText
  0.00    241.15     0.00       13     0.00     0.00  Cmd_Alias_f
  0.00    241.15     0.00       13     0.00     0.00  Cmd_CopyString
  0.00    241.15     0.00       12     0.00     0.00  CL_Disconnect
  0.00    241.15     0.00       12     0.00     0.00  MIDAS_Stop
  0.00    241.15     0.00       12     0.00     0.07  Mod_LoadSpriteModel
  0.00    241.15     0.00       11     0.00     0.00  ED_FindFieldOffset
  0.00    241.15     0.00       11     0.00     0.00  Heap_FreeToLowMark
  0.00    241.15     0.00        9     0.00     0.00  CDAudio_Play
  0.00    241.15     0.00        9     0.00     0.00  MapKey
  0.00    241.15     0.00        8     0.00     0.00  Con_ClearNotify
  0.00    241.15     0.00        8     0.00     0.00  ED_ChkEdict
  0.00    241.15     0.00        8     0.00     0.00  ED_ParseEpair
  0.00    241.15     0.00        7     0.00     0.00  ED_Alloc
  0.00    241.15     0.00        7     0.00     0.00  ED_ClearEdict
  0.00    241.15     0.00        7     0.00     0.00  Heap_LowMark
  0.00    241.15     0.00        6     0.00     0.00  CL_ClearState
  0.00    241.15     0.00        6     0.00     2.19  CL_ParseServerInfo
  0.00    241.15     0.00        6     0.00     0.00  COM_LoadHunkFile
  0.00    241.15     0.00        6     0.00     0.00  COM_LoadPackFile
  0.00    241.15     0.00        6     0.00     0.00  Draw_AlphaPic
  0.00    241.15     0.00        6     0.00     0.20  GL_BuildLightmaps
  0.00    241.15     0.00        6     0.00     0.00  GL_TextureAging
  0.00    241.15     0.00        6     0.00     0.00  Host_ClearMemory
  0.00    241.15     0.00        6     0.00     0.00  Mod_ClearAll
  0.00    241.15     0.00        6     0.00     0.00  R_BuildTextureList
  0.00    241.15     0.00        6     0.00     0.00  R_ClearLightmaps
  0.00    241.15     0.00        6     0.00     0.00  R_ClearParticles
  0.00    241.15     0.00        6     0.00     0.00  R_FindWorldSpawnEntry
  0.00    241.15     0.00        6     0.00     0.00  R_InitColourTexture
  0.00    241.15     0.00        6     0.00     0.20  R_NewMap
  0.00    241.15     0.00        6     0.00     0.00  SCR_EndLoadingPlaque
  0.00    241.15     0.00        6     0.00     0.00  S_ClearAll
  0.00    241.15     0.00        6     0.00     0.00  WorldVolumeCarve
  0.00    241.15     0.00        5     0.00     0.00  CL_CloseDemoFile
  0.00    241.15     0.00        5     0.00     0.00  CL_PlayDemo_f
  0.00    241.15     0.00        5     0.00     0.00  CL_StopPlayback
  0.00    241.15     0.00        5     0.00     0.00  COM_DefaultExtension
  0.00    241.15     0.00        5     0.00     0.00  COM_FOpenDemoFile
  0.00    241.15     0.00        5     0.00     0.01  GL_LoadBitmapResourceTexture
  0.00    241.15     0.00        5     0.00     0.00  IN_ActivateMouse
  0.00    241.15     0.00        5     0.00     0.00  Mod_DrawWidgetBrushModel
  0.00    241.15     0.00        5     0.00     0.00  PF_Spawn
  0.00    241.15     0.00        5     0.00     0.00  R_InitSky
  0.00    241.15     0.00        4     0.00     0.00  COM_LoadPK3File
  0.00    241.15     0.00        4     0.00     0.00  CRC_Block
  0.00    241.15     0.00        4     0.00     0.00  Cmd_Exec_f
  0.00    241.15     0.00        4     0.00     0.00  ED_NewString
  0.00    241.15     0.00        4     0.00     0.00  GL_CheckExtension
  0.00    241.15     0.00        4     0.00     0.00  Host_EndGame
  0.00    241.15     0.00        4     0.00     0.00  Loop_Close
  0.00    241.15     0.00        3     0.00     0.00  CL_FixIntermission
  0.00    241.15     0.00        3     0.00     0.00  COM_LoadHeapFile
  0.00    241.15     0.00        3     0.00     0.00  ED_FindFunction
  0.00    241.15     0.00        3     0.00     0.00  ED_ParseEdict
  0.00    241.15     0.00        3     0.00     0.00  Host_ShutdownServer
  0.00    241.15     0.00        3     0.00     0.00  IN_DeactivateMouse
  0.00    241.15     0.00        3     0.00     0.00  IN_HideMouse
  0.00    241.15     0.00        3     0.00     0.00  IN_ShowMouse
  0.00    241.15     0.00        3     0.00     0.00  IN_StartupMouse
  0.00    241.15     0.00        3     0.00     0.21  M_Keydown
  0.00    241.15     0.00        3     0.00     0.00  R_SetAnisotropicFilter
  0.00    241.15     0.00        3     0.00     0.00  SZ_Alloc
  0.00    241.15     0.00        3     0.00     0.00  S_LocalSound
  0.00    241.15     0.00        3     0.00     0.00  SetMinMaxSize
  0.00    241.15     0.00        3     0.00     0.00  VID_SetPalette
  0.00    241.15     0.00        2     0.00     0.00  AppActivate
  0.00    241.15     0.00        2     0.00     0.00  COM_AddGameDirectory
  0.00    241.15     0.00        2     0.00     0.31  ClearAllStates
  0.00    241.15     0.00        2     0.00     0.00  ClearLink
  0.00    241.15     0.00        2     0.00     0.00  Cmd_Wait_f
  0.00    241.15     0.00        2     0.00     0.00  ED_Free
  0.00    241.15     0.00        2     0.00     0.00  GL_AlphaMaskTexture
  0.00    241.15     0.00        2     0.00     0.00  GL_RemakeSurfaceLightmaps
  0.00    241.15     0.00        2     0.00     0.00  IN_ClearStates
  0.00    241.15     0.00        2     0.00     0.00  IN_Shutdown
  0.00    241.15     0.00        2     0.00     0.00  IN_UpdateClipCursor
  0.00    241.15     0.00        2     0.00     0.00  Key_ClearStates
  0.00    241.15     0.00        2     0.00     0.00  Key_Unbindall_f
  0.00    241.15     0.00        2     0.00     0.00  M_Main_Key
  0.00    241.15     0.00        2     0.00     0.00  NET_Close
  0.00    241.15     0.00        2     0.00     0.00  NET_FreeQSocket
  0.00    241.15     0.00        2     0.00     0.00  NET_NewQSocket
  0.00    241.15     0.00        2     0.00     0.00  PF_Find
  0.00    241.15     0.00        2     0.00     0.00  PF_Remove
  0.00    241.15     0.00        2     0.00     0.00  PF_setsize
  0.00    241.15     0.00        2     0.00     0.00  R_Bloom_InitBackUpTexture
  0.00    241.15     0.00        2     0.00     0.00  R_Bloom_InitEffectTexture
  0.00    241.15     0.00        2     0.00     0.00  R_Bloom_InitTextures
  0.00    241.15     0.00        2     0.00     0.04  R_InitParticles
  0.00    241.15     0.00        2     0.00     0.00  SCR_BeginLoadingPlaque
  0.00    241.15     0.00        2     0.00     0.00  SNDDMA_Shutdown
  0.00    241.15     0.00        2     0.00     0.00  S_BlockSound
  0.00    241.15     0.00        2     0.00     0.00  VID_EnumFullDIB
  0.00    241.15     0.00        2     0.00     0.00  VID_UpdateWindowStatus
  0.00    241.15     0.00        2     0.00     0.00  WINS_CloseSocket
  0.00    241.15     0.00        2     0.00     0.00  WINS_Listen
  0.00    241.15     0.00        2     0.00     0.00  WINS_OpenSocket
  0.00    241.15     0.00        2     0.00     0.00  unzGetGlobalInfo
  0.00    241.15     0.00        1     0.00     0.00  CDAudio_Init
  0.00    241.15     0.00        1     0.00     0.00  CDAudio_Pause
  0.00    241.15     0.00        1     0.00     0.00  CDAudio_Resume
  0.00    241.15     0.00        1     0.00     0.00  CDAudio_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  CL_EstablishConnection
  0.00    241.15     0.00        1     0.00     0.00  CL_Init
  0.00    241.15     0.00        1     0.00     0.00  CL_InitInput
  0.00    241.15     0.00        1     0.00     0.00  CL_InitTEnts
  0.00    241.15     0.00        1     0.00     0.00  COM_CheckRegistered
  0.00    241.15     0.00        1     0.00     0.00  COM_FileLength
  0.00    241.15     0.00        1     0.00     0.00  COM_Init
  0.00    241.15     0.00        1     0.00     0.00  COM_InitArgv
  0.00    241.15     0.00        1     0.00     0.00  COM_InitFilesystem
  0.00    241.15     0.00        1     0.00     0.00  CRC_Init
  0.00    241.15     0.00        1     0.00     0.00  Cbuf_Init
  0.00    241.15     0.00        1     0.00     0.00  Chase_Init
  0.00    241.15     0.00        1     0.00     0.00  Cmd_Init
  0.00    241.15     0.00        1     0.00     0.00  Cmd_StuffCmds_f
  0.00    241.15     0.00        1     0.00     0.00  Con_Init
  0.00    241.15     0.00        1     0.00     0.00  Cvar_SetDirect
  0.00    241.15     0.00        1     0.00     0.00  Cvar_SetValueDirect
  0.00    241.15     0.00        1     0.00     0.00  Datagram_Init
  0.00    241.15     0.00        1     0.00     0.00  Datagram_Listen
  0.00    241.15     0.00        1     0.00     0.00  Datagram_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  DeinitConProc
  0.00    241.15     0.00        1     0.00     0.05  Draw_Init
  0.00    241.15     0.00        1     0.00     0.00  ED_FindEdictFieldValues
  0.00    241.15     0.00        1     0.00     0.00  ED_LoadFromFile
  0.00    241.15     0.00        1     0.00     0.00  GL_DeleteAllTextures
  0.00    241.15     0.00        1     0.00     0.00  GL_GetFunctionPointers
  0.00    241.15     0.00        1     0.00     0.00  GL_Init
  0.00    241.15     0.00        1     0.00     0.00  GL_InitRenderState
  0.00    241.15     0.00        1     0.00     0.00  GL_InitShaders
  0.00    241.15     0.00        1     0.00     0.00  GL_InitState
  0.00    241.15     0.00        1     0.00     0.00  GL_InitTextureCache
  0.00    241.15     0.00        1     0.00     0.00  GL_SetupState
  0.00    241.15     0.00        1     0.00     0.00  Host_Begin_f
  0.00    241.15     0.00        1     0.00     0.00  Host_Color_f
  0.00    241.15     0.00        1     0.00     0.00  Host_Connect_f
  0.00    241.15     0.00        1     0.00     0.00  Host_FindMaxClients
  0.00    241.15     0.00        1     0.00     1.66  Host_Init
  0.00    241.15     0.00        1     0.00     0.00  Host_InitCommands
  0.00    241.15     0.00        1     0.00     0.00  Host_InitLocal
  0.00    241.15     0.00        1     0.00     0.00  Host_InitVCR
  0.00    241.15     0.00        1     0.00     0.03  Host_Map_f
  0.00    241.15     0.00        1     0.00     0.00  Host_Name_f
  0.00    241.15     0.00        1     0.00     0.00  Host_PreSpawn_f
  0.00    241.15     0.00        1     0.00     0.62  Host_Quit_f
  0.00    241.15     0.00        1     0.00     0.00  Host_Reconnect_f
  0.00    241.15     0.00        1     0.00     0.09  Host_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  Host_Spawn_f
  0.00    241.15     0.00        1     0.00     0.00  Host_WriteConfiguration
  0.00    241.15     0.00        1     0.00     0.00  IN_Impulse
  0.00    241.15     0.00        1     0.00     0.00  IN_Init
  0.00    241.15     0.00        1     0.00     0.00  Key_Init
  0.00    241.15     0.00        1     0.00     0.00  Key_WriteBindings
  0.00    241.15     0.00        1     0.00     0.00  Loop_Connect
  0.00    241.15     0.00        1     0.00     0.00  Loop_Init
  0.00    241.15     0.00        1     0.00     0.00  Loop_Listen
  0.00    241.15     0.00        1     0.00     0.00  Loop_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  MIDAS_Init
  0.00    241.15     0.00        1     0.00     0.00  M_Init
  0.00    241.15     0.00        1     0.00     0.00  M_Menu_Main_f
  0.00    241.15     0.00        1     0.00     0.00  M_Menu_Quit_f
  0.00    241.15     0.00        1     0.00     0.00  M_ToggleMenu_f
  0.00    241.15     0.00        1     0.00     0.00  Mod_Init
  0.00    241.15     0.00        1     0.00     0.00  NET_Connect
  0.00    241.15     0.00        1     0.00     0.00  NET_Init
  0.00    241.15     0.00        1     0.00     0.00  NET_SendToAll
  0.00    241.15     0.00        1     0.00     0.00  NET_SendToAll2
  0.00    241.15     0.00        1     0.00     0.00  NET_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  PF_ftos
  0.00    241.15     0.00        1     0.00     0.00  PF_setmodel
  0.00    241.15     0.00        1     0.00     0.00  PF_setorigin
  0.00    241.15     0.00        1     0.00     0.00  PR_Init
  0.00    241.15     0.00        1     0.00     0.00  PR_LoadProgs
  0.00    241.15     0.00        1     0.00     0.00  PR_RunClear
  0.00    241.15     0.00        1     0.00     0.00  Q_randinit
  0.00    241.15     0.00        1     0.00     0.13  R_Init
  0.00    241.15     0.00        1     0.00     0.00  R_InitBloomTextures
  0.00    241.15     0.00        1     0.00     0.01  R_InitCausticTexture
  0.00    241.15     0.00        1     0.00     0.00  R_InitDSTTex
  0.00    241.15     0.00        1     0.00     0.00  R_InitDetailTexture
  0.00    241.15     0.00        1     0.00     0.00  R_InitFractalNoise
  0.00    241.15     0.00        1     0.00     0.06  R_InitHCTextures
  0.00    241.15     0.00        1     0.00     0.00  R_InitNormCubeMap
  0.00    241.15     0.00        1     0.00     0.01  R_InitParticleTexture
  0.00    241.15     0.00        1     0.00     0.03  R_InitSkySphere
  0.00    241.15     0.00        1     0.00     0.03  R_InitSurfStuff
  0.00    241.15     0.00        1     0.00     0.00  R_InitTextures
  0.00    241.15     0.00        1     0.00     0.01  R_InitXHairTexture
  0.00    241.15     0.00        1     0.00     0.05  SCR_Init
  0.00    241.15     0.00        1     0.00     0.00  SCR_SizeUp_f
  0.00    241.15     0.00        1     0.00     0.00  SNDDMA_Init
  0.00    241.15     0.00        1     0.00     0.00  SNDDMA_InitDirect
  0.00    241.15     0.00        1     0.00     0.00  SND_InitScaletable
  0.00    241.15     0.00        1     0.00     0.00  SV_ClearWorld
  0.00    241.15     0.00        1     0.00     0.00  SV_ConnectClient
  0.00    241.15     0.00        1     0.00     0.00  SV_CreateAreaNode
  0.00    241.15     0.00        1     0.00     0.00  SV_CreateBaseline
  0.00    241.15     0.00        1     0.00     0.00  SV_DropClient
  0.00    241.15     0.00        1     0.00     0.00  SV_Init
  0.00    241.15     0.00        1     0.00     0.00  SV_InitBoxHull
  0.00    241.15     0.00        1     0.00     0.00  SV_SendServerinfo
  0.00    241.15     0.00        1     0.00     0.03  SV_SpawnServer
  0.00    241.15     0.00        1     0.00     0.00  S_FreeSound
  0.00    241.15     0.00        1     0.00     0.00  S_Init
  0.00    241.15     0.00        1     0.00     0.00  S_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  S_Startup
  0.00    241.15     0.00        1     0.00     0.00  S_UnblockSound
  0.00    241.15     0.00        1     0.00     1.11  Sbar_Init
  0.00    241.15     0.00        1     0.00     0.00  Sys_Init
  0.00    241.15     0.00        1     0.00     0.00  Sys_InitDoubleTime
  0.00    241.15     0.00        1     0.00     0.31  VID_Init
  0.00    241.15     0.00        1     0.00     0.00  VID_InitDIB
  0.00    241.15     0.00        1     0.00     0.00  VID_InitFullDIB
  0.00    241.15     0.00        1     0.00     0.00  VID_Menu_Init
  0.00    241.15     0.00        1     0.00     0.00  VID_Restart
  0.00    241.15     0.00        1     0.00     0.00  VID_SetFullDIBMode
  0.00    241.15     0.00        1     0.00     0.31  VID_SetMode
  0.00    241.15     0.00        1     0.00     0.00  VID_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  VID_SyncCvars
  0.00    241.15     0.00        1     0.00     0.00  VID_Unlock
  0.00    241.15     0.00        1     0.00     0.00  V_Init
  0.00    241.15     0.00        1     0.00     0.00  WINS_GetLocalAddress
  0.00    241.15     0.00        1     0.00     0.00  WINS_Init
  0.00    241.15     0.00        1     0.00     0.00  WINS_Shutdown
  0.00    241.15     0.00        1     0.00     0.00  WIPX_Init
  0.00    241.15     0.00        1     0.00     0.00  WIPX_OpenSocket
  0.00    241.15     0.00        1     0.00     0.00  W_FreeWadFile
  0.00    241.15     0.00        1     0.00     0.00  W_LoadWadFile
  0.00    241.15     0.00        1     0.00     0.00  bSetupPixelFormat
profiled the code to see why its slower than even tenebrae, Notice the Calls to Host_Frame and a few others yikes.

Re: Old school quake, well not quite but

Posted: Mon Mar 27, 2017 3:23 pm
by mh
Is this the one that does a glReadPixels every frame and then computes bloom on the CPU? That was another piece of crap that needs to be killed.

Re: Old school quake, well not quite but

Posted: Mon Mar 27, 2017 10:59 pm
by revelator
Not to my knowledge ?, i adapted the bloom code from kmquake2 cant remember if i ever used a version that relied on glReadPixels but i cant rule it out.
Its been some years since i last had a look at this code. Early versions might have used the glare code from tenebrae so in that case yes but i since moved on cause it was to freaking slow. Atm the it seems to use a lot of time inside Sys_DoubleTime not sure why it calls this function like 1000 times a frame but even stranger that it causes the engine to stall as much as it does the first 50 or so frames. After that it settles and runs fine, but definatly something i need to to look after a fix for.

I also started cutting down some fat on checking for leafs since i noticed i had quite a few superflous checks in place where they where not needed, the original code allready did a better job at that so total timewaster on my side. Doing that helped a bit but it still stalls a little.

The bloom code uses matrix operations but could have been better written, it does the job ok though (maybe a bit over the top at times) as i have it in my demonquake engine as well and im not suffering any slowdowns with that one so i guess i can rule out bloom to be the culprit here.

Just in case here is the bloom code ->

Code: Select all

/*
Copyright (C) 1997-2001 Id Software, Inc.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/
// r_bloom.c: 2D lighting post process effect


//http://www.quakesrc.org/forums/viewtopic.php?t=4340&start=0

#include "gl_state.h"
#include "glquake.h"

/*
==============================================================================

						LIGHT BLOOMS

==============================================================================
*/

static float Diamond8x[8][8] =
{
	{0.0f, 0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f, 0.0f},
	{0.0f, 0.0f, 0.2f, 0.3f, 0.3f, 0.2f, 0.0f, 0.0f},
	{0.0f, 0.2f, 0.4f, 0.6f, 0.6f, 0.4f, 0.2f, 0.0f},
	{0.1f, 0.3f, 0.6f, 0.9f, 0.9f, 0.6f, 0.3f, 0.1f},
	{0.1f, 0.3f, 0.6f, 0.9f, 0.9f, 0.6f, 0.3f, 0.1f},
	{0.0f, 0.2f, 0.4f, 0.6f, 0.6f, 0.4f, 0.2f, 0.0f},
	{0.0f, 0.0f, 0.2f, 0.3f, 0.3f, 0.2f, 0.0f, 0.0f},
	{0.0f, 0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f, 0.0f}
};

static float Diamond6x[6][6] =
{
	{0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f},
	{0.0f, 0.3f, 0.5f, 0.5f, 0.3f, 0.0f},
	{0.1f, 0.5f, 0.9f, 0.9f, 0.5f, 0.1f},
	{0.1f, 0.5f, 0.9f, 0.9f, 0.5f, 0.1f},
	{0.0f, 0.3f, 0.5f, 0.5f, 0.3f, 0.0f},
	{0.0f, 0.0f, 0.1f, 0.1f, 0.0f, 0.0f}
};

static float Diamond4x[4][4] =
{
	{0.3f, 0.4f, 0.4f, 0.3f},
	{0.4f, 0.9f, 0.9f, 0.4f},
	{0.4f, 0.9f, 0.9f, 0.4f},
	{0.3f, 0.4f, 0.4f, 0.3f}
};

static int		BLOOM_SIZE;

cvar_t			r_bloom = {"r_bloom", "1"};
cvar_t			r_bloom_alpha = {"r_bloom_alpha", "0.2"};
cvar_t			r_bloom_diamond_size = {"r_bloom_diamond_size", "8"};
cvar_t			r_bloom_intensity = {"r_bloom_intensity", "2"};
cvar_t			r_bloom_darken = {"r_bloom_darken", "4"};
cvar_t			r_bloom_sample_size = {"r_bloom_sample_size", "32"};
cvar_t			r_bloom_fast_sample = {"r_bloom_fast_sample", "0"};

static int		r_bloomscreentexture;
static int		r_bloomeffecttexture;
static int		r_bloombackuptexture;
static int		r_bloomdownsamplingtexture;

static int		r_screendownsamplingtexture_size;
static int		screen_texture_width, screen_texture_height;
static int      r_screenbackuptexture_width, r_screenbackuptexture_height;

//current refdef size:
static int	curView_x;
static int	curView_y;
static int	curView_width;
static int	curView_height;

//texture coordinates of screen data inside screentexture
static float screenText_tcw;
static float screenText_tch;

static int	sample_width;
static int	sample_height;

//texture coordinates of adjusted textures
static float sampleText_tcw;
static float sampleText_tch;

//this macro is in sample size workspace coordinates
#define R_Bloom_SamplePass( xpos, ypos, r, g, b, a  )				\
    glColor4f( r, g, b, a );										\
    glBegin(GL_QUADS);												\
    glTexCoord2f(	0,						sampleText_tch);		\
    glVertex2f(	xpos,						ypos);					\
    glTexCoord2f(	0,						0);						\
    glVertex2f(	xpos,						ypos+sample_height);	\
    glTexCoord2f(	sampleText_tcw,			0);						\
    glVertex2f(	xpos+sample_width,			ypos+sample_height);	\
    glTexCoord2f(	sampleText_tcw,			sampleText_tch);		\
    glVertex2f(	xpos+sample_width,			ypos);					\
    glEnd();

#define R_Bloom_Quad( x, y, width, height, textwidth, textheight, r, g, b, a  )	\
    glColor4f( r, g, b, a );													\
    glBegin(GL_QUADS);															\
    glTexCoord2f(	0,			textheight);									\
    glVertex2f(	x,				y);												\
    glTexCoord2f(	0,			0);												\
    glVertex2f(	x,				y+height);										\
    glTexCoord2f(	textwidth,	0);												\
    glVertex2f(	x+width,		y+height);										\
    glTexCoord2f(	textwidth,	textheight);									\
    glVertex2f(	x+width,		y);												\
    glEnd();

/*
=================
R_Bloom_InitBackUpTexture
=================
*/
void R_Bloom_InitBackUpTexture(int width, int height)
{
	byte	*data;

	data = malloc(width * height * 4);

	memset(data, 0, width * height * 4);

	r_screenbackuptexture_width = width;
	r_screenbackuptexture_height = height;

	r_bloombackuptexture = GL_UploadTextureToOpenGL(data, width, height, TEX_NOCOMPRESS);

	free(data);
}

/*
=================
R_Bloom_InitEffectTexture
=================
*/
void R_Bloom_InitEffectTexture(void)
{
	byte	*data;
	float	bloomsizecheck;

	if(r_bloom_sample_size.value < 32)
	{
		Cvar_SetValue("r_bloom_sample_size", 32);
	}

	//make sure bloom size is a power of 2
	BLOOM_SIZE = (int)r_bloom_sample_size.value;
	bloomsizecheck = (float)BLOOM_SIZE;

	while(bloomsizecheck > 1.0f)
	{
		bloomsizecheck /= 2.0f;
	}

	if(bloomsizecheck != 1.0f)
	{
		BLOOM_SIZE = 32;

		while(BLOOM_SIZE < r_bloom_sample_size.value)
		{
			BLOOM_SIZE *= 2;
		}
	}

	//make sure bloom size doesn't have stupid values
	if(BLOOM_SIZE > screen_texture_width || BLOOM_SIZE > screen_texture_height)
	{
		BLOOM_SIZE = min(screen_texture_width, screen_texture_height);
	}

	if(BLOOM_SIZE != r_bloom_sample_size.value)
	{
		Cvar_SetValue("r_bloom_sample_size", BLOOM_SIZE);
	}
	data = malloc(BLOOM_SIZE * BLOOM_SIZE * 4);
	memset(data, 0, BLOOM_SIZE * BLOOM_SIZE * 4);

	r_bloomeffecttexture = GL_UploadTextureToOpenGL(data, BLOOM_SIZE, BLOOM_SIZE, TEX_NOCOMPRESS);

	free(data);
}

/*
=================
R_Bloom_InitTextures
=================
*/
void R_Bloom_InitTextures(void)
{
	byte	*data;
	int		size;

	//find closer power of 2 to screen size
	for(screen_texture_width = 1; screen_texture_width < glwidth; screen_texture_width *= 2);
	for(screen_texture_height = 1; screen_texture_height < glheight; screen_texture_height *= 2);

	//init the screen texture
	size = screen_texture_width * screen_texture_height * 4;
	data = malloc(size);
	memset(data, 255, size);

	r_bloomscreentexture = GL_UploadTextureToOpenGL(data, screen_texture_width, screen_texture_height, TEX_NOCOMPRESS);

	free(data);

	//validate bloom size and init the bloom effect texture
	R_Bloom_InitEffectTexture();

	//if screensize is more than 2x the bloom effect texture, set up for stepped downsampling
	r_bloomdownsamplingtexture = 0;
	r_screendownsamplingtexture_size = 0;

	if(glwidth > (BLOOM_SIZE * 2) && !r_bloom_fast_sample.value)
	{
		r_screendownsamplingtexture_size = (int)(BLOOM_SIZE * 2);
		data = malloc(r_screendownsamplingtexture_size * r_screendownsamplingtexture_size * 4);
		memset(data, 0, r_screendownsamplingtexture_size * r_screendownsamplingtexture_size * 4);
		r_bloomdownsamplingtexture = GL_UploadTextureToOpenGL(data, r_screendownsamplingtexture_size, r_screendownsamplingtexture_size, TEX_NOCOMPRESS);
		free(data);
	}

	//Init the screen backup texture
	if(r_screendownsamplingtexture_size)
	{
		R_Bloom_InitBackUpTexture(r_screendownsamplingtexture_size, r_screendownsamplingtexture_size);
	}
	else
	{
		R_Bloom_InitBackUpTexture(BLOOM_SIZE, BLOOM_SIZE);
	}
}

/*
=================
R_InitBloomTextures
=================
*/
void R_InitBloomTextures(void)
{
	Cvar_RegisterVariable(&r_bloom);
	Cvar_RegisterVariable(&r_bloom_alpha);
	Cvar_RegisterVariable(&r_bloom_diamond_size);
	Cvar_RegisterVariable(&r_bloom_intensity);
	Cvar_RegisterVariable(&r_bloom_darken);
	Cvar_RegisterVariable(&r_bloom_sample_size);
	Cvar_RegisterVariable(&r_bloom_fast_sample);
	BLOOM_SIZE = 0;

	if(r_bloom.value)
	{
		r_bloomscreentexture = 0;	//this came from a vid_restart, where none of the textures are valid any more.
		R_Bloom_InitTextures();
	}
}

/*
=================
R_Bloom_DrawEffect
=================
*/
void R_Bloom_DrawEffect(void)
{
	glBindTexture(GL_TEXTURE_2D, r_bloomeffecttexture);
	glEnable(GL_BLEND);
	glBlendFunc(GL_ONE, GL_ONE);
	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
	glColor4f(r_bloom_alpha.value, r_bloom_alpha.value, r_bloom_alpha.value, 1.0f);

	glBegin(GL_QUADS);
	glTexCoord2f(0,							sampleText_tch);
	glVertex2f(curView_x,					curView_y);
	glTexCoord2f(0,							0);
	glVertex2f(curView_x,					curView_y + curView_height);
	glTexCoord2f(sampleText_tcw,				0);
	glVertex2f(curView_x + curView_width,	curView_y + curView_height);
	glTexCoord2f(sampleText_tcw,				sampleText_tch);
	glVertex2f(curView_x + curView_width,	curView_y);
	glEnd();

	glDisable(GL_BLEND);
}

/*
=================
R_Bloom_GeneratexDiamonds
=================
*/
void R_Bloom_GeneratexDiamonds(void)
{
	int				i, j;
	static float	intensity;

	//set up sample size workspace
	glViewport(0, 0, sample_width, sample_height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0, sample_width, sample_height, 0, -10, 100);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

	//copy small scene into r_bloomeffecttexture
	glBindTexture(GL_TEXTURE_2D, r_bloomeffecttexture);
	glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height);

	//start modifying the small scene corner
	glEnable(GL_BLEND);

	//darkening passes
	if(r_bloom_darken.value)
	{
		glBlendFunc(GL_DST_COLOR, GL_ZERO);
		glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

		for(i = 0; i < r_bloom_darken.value ; i++)
		{
			R_Bloom_SamplePass(0, 0, 1.0f, 1.0f, 1.0f, 1.0f);
		}
		glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height);
	}

	//bluring passes
	glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);

	if(r_bloom_diamond_size.value > 7 || r_bloom_diamond_size.value <= 3)
	{
		if(r_bloom_diamond_size.value != 8)
		{
			Cvar_SetValue("r_bloom_diamond_size", 8);
		}

		for(i = 0; i < r_bloom_diamond_size.value; i++)
		{
			for(j = 0; j < r_bloom_diamond_size.value; j++)
			{
				intensity = r_bloom_intensity.value * 0.3 * Diamond8x[i][j];

				if(intensity < 0.01f)
				{
					continue;
				}
				R_Bloom_SamplePass(i - 4, j - 4, intensity, intensity, intensity, 1.0);
			}
		}
	}
	else if(r_bloom_diamond_size.value > 5)
	{
		if(r_bloom_diamond_size.value != 6)
		{
			Cvar_SetValue("r_bloom_diamond_size", 6);
		}

		for(i = 0; i < r_bloom_diamond_size.value; i++)
		{
			for(j = 0; j < r_bloom_diamond_size.value; j++)
			{
				intensity = r_bloom_intensity.value * 0.5 * Diamond6x[i][j];

				if(intensity < 0.01f)
				{
					continue;
				}
				R_Bloom_SamplePass(i - 3, j - 3, intensity, intensity, intensity, 1.0);
			}
		}
	}
	else if(r_bloom_diamond_size.value > 3)
	{
		if(r_bloom_diamond_size.value != 4)
		{
			Cvar_SetValue("r_bloom_diamond_size", 4);
		}

		for(i = 0; i < r_bloom_diamond_size.value; i++)
		{
			for(j = 0; j < r_bloom_diamond_size.value; j++)
			{
				intensity = r_bloom_intensity.value * 0.8f * Diamond4x[i][j];

				if(intensity < 0.01f)
				{
					continue;
				}
				R_Bloom_SamplePass(i - 2, j - 2, intensity, intensity, intensity, 1.0);
			}
		}
	}
	glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height);

	//restore full screen workspace
	glViewport(0, 0, glwidth, glheight);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0, glwidth, glheight, 0, -10, 100);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

/*
=================
R_Bloom_DownsampleView
=================
*/
void R_Bloom_DownsampleView(void)
{
	glDisable(GL_BLEND);

	//stepped downsample
	if(r_screendownsamplingtexture_size)
	{
		int		midsample_width = r_screendownsamplingtexture_size * sampleText_tcw;
		int		midsample_height = r_screendownsamplingtexture_size * sampleText_tch;

		//copy the screen and draw resized
		glBindTexture(GL_TEXTURE_2D, r_bloomscreentexture);
		glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, curView_x, glheight - (curView_y + curView_height), curView_width, curView_height);
		R_Bloom_Quad(0,  glheight - midsample_height, midsample_width, midsample_height, screenText_tcw, screenText_tch,  1.0f, 1.0f, 1.0f, 1.0f);

		//now copy into Downsampling (mid-sized) texture
		glBindTexture(GL_TEXTURE_2D, r_bloomdownsamplingtexture);
		glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, midsample_width, midsample_height);

		//now draw again in bloom size
		R_Bloom_Quad(0,  glheight - sample_height, sample_width, sample_height, sampleText_tcw, sampleText_tch, 0.5f, 0.5f, 0.5f, 1.0f);

		//now blend the big screen texture into the bloom generation space (hoping it adds some blur)
		glEnable(GL_BLEND);
		glBlendFunc(GL_ONE, GL_ONE);
		glBindTexture(GL_TEXTURE_2D, r_bloomscreentexture);
		R_Bloom_Quad(0,  glheight - sample_height, sample_width, sample_height, screenText_tcw, screenText_tch, 0.5f, 0.5f, 0.5f, 1.0f);
		glDisable(GL_BLEND);
	}
	else
	{
		//downsample simple
		glBindTexture(GL_TEXTURE_2D, r_bloomscreentexture);
		glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, curView_x, glheight - (curView_y + curView_height), curView_width, curView_height);
		R_Bloom_Quad(0, glheight - sample_height, sample_width, sample_height, screenText_tcw, screenText_tch, 1.0f, 1.0f, 1.0f, 1.0f);
	}
}

/*
=================
R_BloomBlend
=================
*/
void R_BloomBlend(void)
{
	// skip if no lightdata etc.
	if(!r_bloom.value || !r_worldentity.model || !cl.worldmodel || !cl.worldmodel->lightdata)
	{
		return;
	}

	if(!BLOOM_SIZE || screen_texture_width < glwidth || screen_texture_height < glheight)
	{
		R_Bloom_InitTextures();
	}

	if(screen_texture_width < BLOOM_SIZE || screen_texture_height < BLOOM_SIZE)
	{
		return;
	}

	//set up full screen workspace
	glViewport(0, 0, glwidth, glheight);
	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
	glDisable(GL_DEPTH_TEST);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0, glwidth, glheight, 0, -10, 100);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glDisable(GL_CULL_FACE);
	glDisable(GL_BLEND);
	glActiveTexture(GL_TEXTURE0);
	glEnable(GL_TEXTURE_2D);

	//set up current sizes
	curView_x = scr_vrect.x * ((float)glwidth / vid.width);
	curView_y = scr_vrect.y * ((float)glheight / vid.height);
	curView_width = scr_vrect.width * ((float)glwidth / vid.width);
	curView_height = scr_vrect.height * ((float)glheight / vid.height);
	screenText_tcw = ((float)curView_width / (float)screen_texture_width);
	screenText_tch = ((float)curView_height / (float)screen_texture_height);

	if(scr_vrect.height > scr_vrect.width)
	{
		sampleText_tcw = ((float)scr_vrect.width / (float)scr_vrect.height);
		sampleText_tch = 1.0f;
	}
	else
	{
		sampleText_tcw = 1.0f;
		sampleText_tch = ((float)scr_vrect.height / (float)scr_vrect.width);
	}
	sample_width = BLOOM_SIZE * sampleText_tcw;
	sample_height = BLOOM_SIZE * sampleText_tch;

	//copy the screen space we'll use to work into the backup texture
	glBindTexture(GL_TEXTURE_2D, r_bloombackuptexture);
	glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, r_screenbackuptexture_width, r_screenbackuptexture_height);

	//create the bloom image
	R_Bloom_DownsampleView();
	R_Bloom_GeneratexDiamonds();

	//restore the screen-backup to the screen
	glDisable(GL_BLEND);
	glBindTexture(GL_TEXTURE_2D, r_bloombackuptexture);
	R_Bloom_Quad(0, glheight - r_screenbackuptexture_height, r_screenbackuptexture_width, r_screenbackuptexture_height, 1.0, 1.0, 1, 1, 1, 1);
	R_Bloom_DrawEffect();
	R_SetupGL();
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glActiveTexture(GL_TEXTURE0);
	glEnable(GL_TEXTURE_2D);
}
Probably a better way to write this one (GLSL). Also its quite messy :/

Re: Old school quake, well not quite but

Posted: Tue Mar 28, 2017 10:50 am
by Barnes
I'm use this code more time ago and it better then tenebrae bloom. But glsl bloom better.

Re: Old school quake, well not quite but

Posted: Tue Mar 28, 2017 2:07 pm
by revelator
For what it does no its not that bad :), shaders would be better ofc and i might do that sometime.

I might be on the track of what is causing these stalls, i noticed they happen every time realm printed something on the screen,
so im going to have a look at what is going on behind the scenes. Might be something as simple as a bad ptr somewhere in the console print code, well in that case dooh but atleast it would be fixed :lol:

Re: Old school quake, well not quite but

Posted: Tue Mar 28, 2017 4:25 pm
by Spike
revelator wrote:I might be on the track of what is causing these stalls, i noticed they happen every time realm printed something on the screen
in the vanilla source (including quakespasm etc), Con_Printf redraws the screen. This ensures that the prints become visible even if the code following that print crash or infinite loop or whatever. This is a significant extra issue if you have vsync enabled.

Its trivial to just comment out the screen redraw, but do note that much of the networking code has stalls with those redraws being required to let the user know that it hasn't crashed, so a full fix isn't quite so trivial as it may first seem. Presumably you can just add in explicit redraws into the places that need them.