qboolean cdPlayLooping = false;
unsigned char cdPlayTrack;
+cl_cdstate_t cd;
static void CDAudio_Eject (void)
{
*/
+typedef struct cl_cdstate_s
+{
+ qboolean Valid;
+ qboolean Playing;
+ qboolean PlayLooping;
+ unsigned char PlayTrack;
+}
+cl_cdstate_t;
+
+//extern cl_cdstate_t cd;
+
extern qboolean cdValid;
extern qboolean cdPlaying;
extern qboolean cdPlayLooping;
keyname[l] = 0;
if (!COM_ParseToken(&data, false))
break;
- if (developer.integer >= 2)
+ if (developer.integer >= 100)
Con_Printf("key: %s %s\n", keyname, com_token);
if (!strcmp(keyname, "message"))
{
return;
}
- if (developer.integer)
+ if (developer.integer >= 100)
Con_Printf("Cvar_SetQuick({\"%s\", \"%s\", %i, \"%s\"}, \"%s\");\n", var->name, var->string, var->flags, var->defstring, value);
Cvar_SetQuick_Internal(var, value);
cvar_t *current, *next, *cvar;
char *oldstr;
- if (developer.integer)
+ if (developer.integer >= 100)
Con_Printf("Cvar_RegisterVariable({\"%s\", \"%s\", %i});\n", variable->name, variable->string, variable->flags);
// first check to see if it has already been defined
{
if (cvar->flags & CVAR_ALLOCATED)
{
- if (developer.integer)
+ if (developer.integer >= 100)
Con_Printf("... replacing existing allocated cvar {\"%s\", \"%s\", %i}\n", cvar->name, cvar->string, cvar->flags);
// fixed variables replace allocated ones
// (because the engine directly accesses fixed variables)
int hashindex;
cvar_t *current, *next, *cvar;
- if (developer.integer)
+ if (developer.integer >= 100)
Con_Printf("Cvar_Get(\"%s\", \"%s\", %i);\n", name, value, flags);
// first check to see if it has already been defined
// Found it
if (!diff)
{
- if (!quiet)
- Con_DPrintf("FS_FindFile: %s in %s\n",
+ if (!quiet && developer.integer >= 10)
+ Con_Printf("FS_FindFile: %s in %s\n",
pak->files[middle].name, pak->filename);
if (index != NULL)
dpsnprintf(netpath, sizeof(netpath), "%s%s", search->filename, name);
if (FS_SysFileExists (netpath))
{
- if (!quiet)
- Con_DPrintf("FS_FindFile: %s\n", netpath);
+ if (!quiet && developer.integer >= 10)
+ Con_Printf("FS_FindFile: %s\n", netpath);
if (index != NULL)
*index = -1;
}
}
- if (!quiet)
- Con_DPrintf("FS_FindFile: can't find %s\n", name);
+ if (!quiet && developer.integer >= 10)
+ Con_Printf("FS_FindFile: can't find %s\n", name);
if (index != NULL)
*index = -1;
Mem_Free(f);
if (data)
{
- Con_DPrintf("loaded image %s (%dx%d)\n", name, image_width, image_height);
+ if (developer.integer >= 10)
+ Con_Printf("loaded image %s (%dx%d)\n", name, image_width, image_height);
if (developer_memorydebug.integer)
Mem_CheckSentinelsGlobal();
return data;
version = LittleLong(pchunk->version);
recordsize = LittleLong(pchunk->recordsize);
numrecords = LittleLong(pchunk->numrecords);
- if (developer.integer)
+ if (developer.integer >= 100)
Con_Printf("%s: %s %x: %i * %i = %i\n", loadmodel->name, pchunk->id, version, recordsize, numrecords, recordsize * numrecords);
if (version != 0x1e83b9 && version != 0x1e9179 && version != 0x2e)
Con_Printf ("%s: chunk %s has unknown version %x (0x1e83b9, 0x1e9179 and 0x2e are currently supported), trying to load anyway!\n", loadmodel->name, pchunk->id, version);
version = LittleLong(pchunk->version);
recordsize = LittleLong(pchunk->recordsize);
numrecords = LittleLong(pchunk->numrecords);
- if (developer.integer)
+ if (developer.integer >= 100)
Con_Printf("%s: %s %x: %i * %i = %i\n", animname, pchunk->id, version, recordsize, numrecords, recordsize * numrecords);
if (version != 0x1e83b9 && version != 0x1e9179 && version != 0x2e)
Con_Printf ("%s: chunk %s has unknown version %x (0x1e83b9, 0x1e9179 and 0x2e are currently supported), trying to load anyway!\n", animname, pchunk->id, version);
/*
if (!strncmp(string, "ping", 4))
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Received ping from %s, sending ack\n", UDP_AddrToString(readaddr));
NetConn_WriteString(mysocket, "\377\377\377\377ack", peeraddress);
return true;
switch (c)
{
case CCREP_ACCEPT:
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREP_ACCEPT from %s.\n", addressstring2);
if (cls.connect_trying)
{
}
break;
case CCREP_REJECT:
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREP_REJECT from %s.\n", addressstring2);
cls.connect_trying = false;
M_Update_Return_Reason((char *)data);
break;
#if 0
case CCREP_SERVER_INFO:
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREP_SERVER_INFO from %s.\n", addressstring2);
if (cls.state != ca_dedicated)
{
break;
case CCREP_PLAYER_INFO:
// we got a CCREP_PLAYER_INFO??
- //if (developer.integer)
+ //if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREP_PLAYER_INFO from %s.\n", addressstring2);
break;
case CCREP_RULE_INFO:
// we got a CCREP_RULE_INFO??
- //if (developer.integer)
+ //if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREP_RULE_INFO from %s.\n", addressstring2);
break;
#endif
stringbuf[length] = 0;
string = stringbuf;
- if (developer.integer)
+ if (developer.integer >= 10)
{
LHNETADDRESS_ToString(peeraddress, addressstring2, sizeof(addressstring2), true);
Con_Printf("NetConn_ServerParsePacket: %s sent us a command:\n", addressstring2);
// check engine protocol
if (strcmp(SearchInfostring(string, "protocol"), "darkplaces 3"))
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending \"reject Wrong game protocol.\" to %s.\n", addressstring2);
NetConn_WriteString(mysocket, "\377\377\377\377reject Wrong game protocol.", peeraddress);
}
{
// client is still trying to connect,
// so we send a duplicate reply
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending duplicate accept to %s.\n", addressstring2);
NetConn_WriteString(mysocket, "\377\377\377\377accept", peeraddress);
}
{
// allocated connection
LHNETADDRESS_ToString(peeraddress, conn->address, sizeof(conn->address), true);
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending \"accept\" to %s.\n", conn->address);
NetConn_WriteString(mysocket, "\377\377\377\377accept", peeraddress);
// now set up the client
else
{
// server is full
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending \"reject Server is full.\" to %s.\n", addressstring2);
NetConn_WriteString(mysocket, "\377\377\377\377reject Server is full.", peeraddress);
}
if (NetConn_BuildStatusResponse(challenge, response, sizeof(response), false))
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Sending reply to master %s - %s\n", addressstring2, response);
NetConn_WriteString(mysocket, response, peeraddress);
}
if (NetConn_BuildStatusResponse(challenge, response, sizeof(response), true))
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Sending reply to client %s - %s\n", addressstring2, response);
NetConn_WriteString(mysocket, response, peeraddress);
}
/*
if (!strncmp(string, "ping", 4))
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Received ping from %s, sending ack\n", UDP_AddrToString(readaddr));
NetConn_WriteString(mysocket, "\377\377\377\377ack", peeraddress);
return true;
switch (c)
{
case CCREQ_CONNECT:
- //if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREQ_CONNECT from %s.\n", addressstring2);
if (length >= (int)strlen("QUAKE") + 1 + 1)
{
if (memcmp(data, "QUAKE", strlen("QUAKE") + 1) != 0 || (int)data[strlen("QUAKE") + 1] != NET_PROTOCOL_VERSION)
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending CCREP_REJECT \"Incompatible version.\" to %s.\n", addressstring2);
SZ_Clear(&net_message);
// save space for the header, filled in later
{
// client is still trying to connect,
// so we send a duplicate reply
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending duplicate CCREP_ACCEPT to %s.\n", addressstring2);
SZ_Clear(&net_message);
// save space for the header, filled in later
// connect to the client
// everything is allocated, just fill in the details
strlcpy (conn->address, addressstring2, sizeof (conn->address));
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending CCREP_ACCEPT to %s.\n", addressstring2);
// send back the info about the server connection
SZ_Clear(&net_message);
}
else
{
- //if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending CCREP_REJECT \"Server is full.\" to %s.\n", addressstring2);
// no room; try to let player know
SZ_Clear(&net_message);
break;
#if 0
case CCREQ_SERVER_INFO:
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREQ_SERVER_INFO from %s.\n", addressstring2);
if (sv.active && !strcmp(MSG_ReadString(), "QUAKE"))
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: sending CCREP_SERVER_INFO to %s.\n", addressstring2);
SZ_Clear(&net_message);
// save space for the header, filled in later
}
break;
case CCREQ_PLAYER_INFO:
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREQ_PLAYER_INFO from %s.\n", addressstring2);
if (sv.active)
{
}
break;
case CCREQ_RULE_INFO:
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("Datagram_ParseConnectionless: received CCREQ_RULE_INFO from %s.\n", addressstring2);
if (sv.active)
{
if (VM_FILES[filenum] == NULL)
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("VM_fopen: %s: %s mode %s failed\n", PRVM_NAME, filename, modestring);
PRVM_G_FLOAT(OFS_RETURN) = -1;
}
else
{
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("VM_fopen: %s: %s mode %s opened as #%i\n", PRVM_NAME, filename, modestring, filenum);
PRVM_G_FLOAT(OFS_RETURN) = filenum;
}
Con_Printf("VM_fclose: no such file handle %i (or file has been closed) in %s\n", filenum, PRVM_NAME);
return;
}
- if (developer.integer)
+ if (developer.integer >= 10)
Con_Printf("VM_fclose: %s: #%i closed\n", PRVM_NAME, filenum);
FS_Close(VM_FILES[filenum]);
VM_FILES[filenum] = NULL;
if (c != '\n')
FS_UnGetc(VM_FILES[filenum], (unsigned char)c);
}
- if (developer.integer >= 3)
+ if (developer.integer >= 100)
Con_Printf("fgets: %s: %s\n", PRVM_NAME, string);
if (c >= 0 || end)
PRVM_G_INT(OFS_RETURN) = PRVM_SetEngineString(string);
VM_VarString(1, string, sizeof(string));
if ((stringlength = (int)strlen(string)))
FS_Write(VM_FILES[filenum], string, stringlength);
- if (developer.integer)
+ if (developer.integer >= 100)
Con_Printf("fputs: %s: %s\n", PRVM_NAME, string);
}
if (prog->knownstrings[i] == s)
return -1 - i;
// new unknown engine string
- if (developer.integer >= 3)
+ if (developer.integer >= 100)
Con_Printf("new engine string %p\n", s);
for (i = prog->firstfreeknownstring;i < prog->numknownstrings;i++)
if (!prog->knownstrings[i])
}
}
- Con_DPrintf("static light built: %f %f %f : %f %f %f box, %i shadow volume triangles (in %i meshes)\n", rtlight->cullmins[0], rtlight->cullmins[1], rtlight->cullmins[2], rtlight->cullmaxs[0], rtlight->cullmaxs[1], rtlight->cullmaxs[2], shadowtris, shadowmeshes);
+ if (developer.integer >= 10)
+ Con_Printf("static light built: %f %f %f : %f %f %f box, %i shadow volume triangles (in %i meshes)\n", rtlight->cullmins[0], rtlight->cullmins[1], rtlight->cullmins[2], rtlight->cullmaxs[0], rtlight->cullmaxs[1], rtlight->cullmaxs[2], shadowtris, shadowmeshes);
}
void R_RTLight_Uncompile(rtlight_t *rtlight)
-d (Morphed) bug darkplaces renderer: Morphed's colormapping experiments in nexuiz show a difference in gloss color with GLSL vs dot3 path, http://img494.imageshack.us/img494/8745/nexuiz0000258lf.jpg http://www.nexuiz.com/forums/index.php?showtopic=1531 - and apparently it looks right or wrong depending on view point, suddenly switching (Morphed)
-d (Mr Fribbles) feature darkplaces particles: reimplement quake effects for a cl_particles_quake mode (Mr Fribbles, metlslime)
-d (QuakeMatt) change darkplaces menu: remove gl_combine from menu as it's not saved to config and really shouldn't be changed except when debugging drivers (QuakeMatt)
+-d (Sajt) bug dpmod: shouldn't get double kill for killing something and its corpse (Sajt)
-d (Speedy) feature darkplaces init: add -demolooponly option which makes escape key quit, and disables all other keys (Speedy)
-d (Spike) change darkplaces prvm: disable the unknown opcode error in progs loading so that fteqcc fastarrays progs will load (Spike)
-d (Toddd) bug darkplaces client: fix gl_flashblend, it's still drawing rtdlights even when gl_flashblend is on (Toddd)
-d (flum) bug darkplaces client: corona on your own muzzleflash is annoying when looking down because it can be seen, disable corona on all muzzleflashes (flum)
-d (hyenur) change dpmod: make cells only 30 damage, they're too powerful now (hyenur)
-d (innovati) bug darkplaces WGL client: fix GDI input init/shutdown, it is using weird mouse acceleration and not restoring it on exit (innovati)
+-d (innovati) bug dpmod: respawning still on fire (innovati)
-d (lcatlnx) bug darkplaces sound: sound is sometimes coming from the wrong side apparently (lcatlnx)
-d (mashakos) bug darkplaces input: fix the mouse move when console is raised in glx, probably by ignoring the first move after console raise (mashakos)
-d (mrinsane) bug darkplaces renderer: r_wateralpha 1 water that has lightmapping is black in r_shadow_realtime_world 1 mode, but only if the map was loaded in r_shadow_realtime_world 1 mode, if started in 0 and then going to 1 it does not have black water, this is probably lightmap updates not occurring in rtworld mode (mrinsane)
-d (yummyluv) feature darkplaces protocol: add buttons 9-16 (yummyluv)
-f (James D) bug darkplaces server: losing runes on episode completion, completing episode 1 then 2 then 3 causes it to forget 1, then 4 causes it to forget 2 and 3, making it impossible to open the boss gate (James D)
-f (Wazat) bug darkplaces: client's slowmo detection (measuring packet times and comparing to game time changes) may be making the game unpleasant (Wazat)
-0 change darkplaces client: particles shouldn't be using contents checks to decide whether to die, they should use movement traces
-0 bug darkplaces renderer: deluxemaps are not detected in some maps that do have them? (SavageX)
0 bug darkplaces client: GAME_NEHAHRA: make sure cutscenes and movies work, got a report of seeing a black screen (NightFright)
0 bug darkplaces client: fix cl_bobmodel bug which momentarily jolts the gun when you pass through a trigger, pick up an item, etc, Sajt thinks this is related to console prints as well as centerprint (Sajt)
0 bug darkplaces client: prydon cursor highlighting of EF_SELECTABLE entities flickers with lower server framerate than client framerate (carni)
0 bug darkplaces csqc: engine-based rocket entities have a trail but they don't glow if csqc is used
0 bug darkplaces loader: make rtlight entity loader support q3map/q3map2 lights properly, they use a spawnflag for LINEAR mode, by default they use 1/(x*x) falloff (Carni, motorsep)
0 bug darkplaces loader: occasional crash due to memory corruption when doing "deathmatch 1;map start" during demo loop (Willis)
+0 bug darkplaces renderer: deluxemaps are not detected in some maps that do have them? (SavageX)
0 bug darkplaces renderer: modify r_showtris_polygonoffset to push back all filled geometry, not lines, because polygonoffset will not affect GL_LINES at all
0 bug darkplaces renderer: monsters teleporting in really slow down rendering, perhaps the teleport light is casting huge shadows? new information suggests it is the particles. (romi, lcatlnx)
0 bug darkplaces renderer: r_wateralpha on maps that are not watervised shows sky, this is a known glquake bug but it is fixable in darkplaces at load time by marking opposite-content (water-empty, empty-water) leafs as visible in their pvs sets, this involves checking the portal flow... (knghtbrd)
+0 bug darkplaces renderer: showfps values 2 and 3 are printing bogus numbers like -2 billion (Willis)
0 bug darkplaces server: Blood Mage monsters are stuck in place apparently (steven a)
0 bug darkplaces server: SV_PushMove is ignoring model type in its angles_x handling, where as the renderer checks only model type to determine angles_x handling (Urre)
0 bug darkplaces server: SV_PushMove's call to SV_ClipMoveToEntity should do a trace, not just a point test, to support hollow pusher models (Urre)
0 bug dpmod: monsters falling out of level? (Sajt)
0 bug dpmod: monsters shouldn't constantly do sightsounds on a slain player, it's annoying and silly
0 bug dpmod: monsters that spawn underwater shouldn't drown, just because it somewhat breaks the intended behavior of maps
-0 bug dpmod: respawning still on fire (innovati)
-0 bug dpmod: shouldn't get double kill for killing something and its corpse (Sajt)
0 bug dpmod: test for any unnamed death messages that might be happening
0 bug hmap2 -qbsp: errors still occur in mrinsane's newmap.map file, tyrqbsp does not have these problems (mrinsane)
0 bug hmap2 -qbsp: portal clipped away errors and a crash occur in vaccui (Epicenter)
0 bug hmap2: figure out why there is a subtle difference between bmodel lighting and wall lighting, something to do with nudges causing different attenuation? (Urre)
0 bug hmap: strip .map extension from filename if present
0 change darkplaces client: disable all possible 'cheat' things unless -developer is given on commandline, this includes r_show*, r_test, gl_lightmaps, r_fullbright
+0 change darkplaces client: particles shouldn't be using contents checks to decide whether to die, they should use movement traces
0 change darkplaces client: restrict wateralpha and such cvars according to what is permitted in qw serverinfo?
0 change darkplaces extensions: edit FRIK_FILE documentation to mention that fgets uses its own separate buffer, so only one fgets can be done at a time without uzing strzone, but that darkplaces uses standard tempstrings for fgets (it doesn't - change it!) and mention DP_QC_MULTIPLETEMPSTRINGS (FrikaC)
0 change darkplaces extensions: edit FRIK_FILE documentation to mention that strcat uses its own separate buffer, and that a = strcat(a, b);a = strcat(a, c); works correctly despite this, also mention that in DP strcat uses standard tempstrings, and mention DP_QC_MULTIPLETEMPSTRINGS (FrikaC)
{
#endif
pool->realsize -= sizeof(memheader_t) + mem->size + sizeof(int);
- if (developer.integer)
+ if (developer_memorydebug.integer)
memset(mem, 0xBF, sizeof(memheader_t) + mem->size + sizeof(int));
free(mem);
#if MEMCLUMPING