*/
// com_crc16.c
-#include "quakedef.h"
+#include "darkplaces.h"
/*
============================================================================
<ClInclude Include="csprogs.h" />\r
<ClInclude Include="curves.h" />\r
<ClInclude Include="cvar.h" />\r
+ <ClInclude Include="darkplaces.h" />\r
<ClInclude Include="dpvsimpledecode.h" />\r
<ClInclude Include="draw.h" />\r
<ClInclude Include="fs.h" />\r
<ClInclude Include="csprogs.h" />\r
<ClInclude Include="curves.h" />\r
<ClInclude Include="cvar.h" />\r
+ <ClInclude Include="darkplaces.h" />\r
<ClInclude Include="dpvsimpledecode.h" />\r
<ClInclude Include="draw.h" />\r
<ClInclude Include="fs.h" />\r
--- /dev/null
+/*
+Copyright (C) 1996-1997 Id Software, Inc.
+Copyright (C) 2020 Ashley Rose Hale (LadyHavoc)
+Copyright (C) 2020 David Knapp (Cloudwalk)
+
+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.
+
+*/
+
+/* darkplaces.h - Master definitions file for Darkplaces engine */
+
+#ifndef DARKPLACES_H
+#define DARKPLACES_H
+
+extern const char *buildstring;
+extern char engineversion[128];
+
+#ifdef __APPLE__
+# include <TargetConditionals.h>
+#endif
+
+#include <sys/types.h>
+#include <ctype.h>
+#include <math.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+
+#include "sys.h"
+#include "qtypes.h"
+#include "qdefs.h"
+#include "zone.h"
+#include "thread.h"
+#include "com_list.h"
+#include "common.h"
+#include "fs.h"
+#include "host.h"
+#include "cvar.h"
+#include "cmd.h"
+#include "console.h"
+#include "lhnet.h"
+#include "mathlib.h"
+#include "matrixlib.h"
+
+extern cvar_t developer;
+extern cvar_t developer_entityparsing;
+extern cvar_t developer_extra;
+extern cvar_t developer_insane;
+extern cvar_t developer_loadfile;
+extern cvar_t developer_loading;
+extern cvar_t host_isclient;
+extern cvar_t sessionid;
+
+#endif
#include <dirent.h>
#endif
-#include "quakedef.h"
+#include "darkplaces.h"
// LadyHavoc: some portable directory listing code I wrote for lmp2pcx, now used in darkplaces to load id1/*.pak and such...
-#include "quakedef.h"
+#include "darkplaces.h"
#include "hmac.h"
qbool hmac(
//
//LadyHavoc: rewrote most of this.
-#include "quakedef.h"
+#include "darkplaces.h"
#include "image.h"
#include "image_png.h"
*/
-#include "quakedef.h"
+#include "darkplaces.h"
+#include "cl_screen.h"
#include "image.h"
#include "jpeg.h"
#include "image_png.h"
#endif
#ifndef STANDALONETEST
-#include "quakedef.h"
+#include "darkplaces.h"
#endif
#include <stdlib.h>
-#include "quakedef.h"
-
+#include "darkplaces.h"
#include <math.h>
-#include "matrixlib.h"
#ifdef _MSC_VER
#pragma warning(disable : 4244) // LadyHavoc: MSVC++ 4 x86, double/float
$Id$
*/
-#include "quakedef.h"
+#include "darkplaces.h"
-#include <string.h> /* XoXus: needed for memset call */
#include "mdfour.h"
/* NOTE: This code makes no attempt to be fast!
#ifndef MODEL_SHARED_H
#define MODEL_SHARED_H
+#include "bspfile.h"
+
typedef enum synctype_e {ST_SYNC=0, ST_RAND } synctype_t;
/*
#define NET_MINRATE 1000 ///< limits "rate" and "sv_maxrate" cvars
+// In Quake, any char in 0..32 counts as whitespace
+//#define ISWHITESPACE(ch) ((unsigned char) ch <= (unsigned char) ' ')
+#define ISWHITESPACE(ch) (!(ch) || (ch) == ' ' || (ch) == '\t' || (ch) == '\r' || (ch) == '\n')
+#define ISCOMMENT(ch, pos) ch[pos] == '/' && ch[pos + 1] == '/' && (pos == 0 || ISWHITESPACE(ch[pos - 1]))
+// This also includes extended characters, and ALL control chars
+#define ISWHITESPACEORCONTROL(ch) ((signed char) (ch) <= (signed char) ' ')
+
+#ifdef PRVM_64
+#define FLOAT_IS_TRUE_FOR_INT(x) ((x) & 0x7FFFFFFFFFFFFFFF) // also match "negative zero" doubles of value 0x8000000000000000
+#define FLOAT_LOSSLESS_FORMAT "%.17g"
+#define VECTOR_LOSSLESS_FORMAT "%.17g %.17g %.17g"
+#else
+#define FLOAT_IS_TRUE_FOR_INT(x) ((x) & 0x7FFFFFFF) // also match "negative zero" floats of value 0x80000000
+#define FLOAT_LOSSLESS_FORMAT "%.9g"
+#define VECTOR_LOSSLESS_FORMAT "%.9g %.9g %.9g"
+#endif
+
+// originally this was _MSC_VER
+// but here we want to test the system libc, which on win32 is borked, and NOT the compiler
+#ifdef WIN32
+#define INT_LOSSLESS_FORMAT_SIZE "I64"
+#define INT_LOSSLESS_FORMAT_CONVERT_S(x) ((__int64)(x))
+#define INT_LOSSLESS_FORMAT_CONVERT_U(x) ((unsigned __int64)(x))
+#else
+#define INT_LOSSLESS_FORMAT_SIZE "j"
+#define INT_LOSSLESS_FORMAT_CONVERT_S(x) ((intmax_t)(x))
+#define INT_LOSSLESS_FORMAT_CONVERT_U(x) ((uintmax_t)(x))
+#endif
+
#endif
#ifndef QUAKEDEF_H
#define QUAKEDEF_H
-#ifdef __APPLE__
-# include <TargetConditionals.h>
-#endif
-
-#include <sys/types.h>
-#include <ctype.h>
-#include <math.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <limits.h>
-
-#include "qtypes.h"
-
-extern const char *buildstring;
-extern char engineversion[128];
+#include "darkplaces.h"
#define GAMENAME "id1"
-
-#include "qdefs.h"
-#include "qstats.h"
+#define STARTCONFIGFILENAME "quake.rc"
+#define CONFIGFILENAME "config.cfg"
// moveflags values
#define MOVEFLAG_VALID 0x80000000
//===========================================
-#include "zone.h"
-#include "thread.h"
-#include "fs.h"
-#include "common.h"
-#include "com_list.h"
-#include "cvar.h"
-#include "bspfile.h"
-#include "sys.h"
#include "vid.h"
-#include "mathlib.h"
#include "r_textures.h"
#include "screen.h"
#include "netconn.h"
#include "protocol.h"
-#include "cmd.h"
-#include "host.h"
#include "sbar.h"
#include "sound.h"
#include "model_shared.h"
#include "input.h"
#include "keys.h"
-#include "console.h"
#ifdef CONFIG_MENU
#include "menu.h"
#endif
#include "csprogs.h"
-
-extern qbool noclip_anglehack;
-
-extern cvar_t developer;
-extern cvar_t developer_entityparsing;
-extern cvar_t developer_extra;
-extern cvar_t developer_insane;
-extern cvar_t developer_loadfile;
-extern cvar_t developer_loading;
-
-extern cvar_t sessionid;
-
-#define STARTCONFIGFILENAME "quake.rc"
-#define CONFIGFILENAME "config.cfg"
-
-/* Preprocessor macros to identify platform
- DP_OS_NAME - "friendly" name of the OS, for humans to read
- DP_OS_STR - "identifier" of the OS, more suited for code to use
- DP_ARCH_STR - "identifier" of the processor architecture
- */
-#if defined(__ANDROID__) /* must come first because it also defines linux */
-# define DP_OS_NAME "Android"
-# define DP_OS_STR "android"
-# define USE_GLES2 1
-# define USE_RWOPS 1
-# define LINK_TO_ZLIB 1
-# define LINK_TO_LIBVORBIS 1
-#ifdef USEXMP
-# define LINK_TO_LIBXMP 1 // nyov: if someone can test with the android NDK compiled libxmp?
-#endif
-# define DP_MOBILETOUCH 1
-# define DP_FREETYPE_STATIC 1
-#elif TARGET_OS_IPHONE /* must come first because it also defines MACOSX */
-# define DP_OS_NAME "iPhoneOS"
-# define DP_OS_STR "iphoneos"
-# define USE_GLES2 1
-# define LINK_TO_ZLIB 1
-# define LINK_TO_LIBVORBIS 1
-# define DP_MOBILETOUCH 1
-# define DP_FREETYPE_STATIC 1
-#elif defined(__linux__)
-# define DP_OS_NAME "Linux"
-# define DP_OS_STR "linux"
-#elif defined(_WIN64)
-# define DP_OS_NAME "Windows64"
-# define DP_OS_STR "win64"
-#elif defined(WIN32)
-# define DP_OS_NAME "Windows"
-# define DP_OS_STR "win32"
-#elif defined(__FreeBSD__)
-# define DP_OS_NAME "FreeBSD"
-# define DP_OS_STR "freebsd"
-#elif defined(__NetBSD__)
-# define DP_OS_NAME "NetBSD"
-# define DP_OS_STR "netbsd"
-#elif defined(__OpenBSD__)
-# define DP_OS_NAME "OpenBSD"
-# define DP_OS_STR "openbsd"
-#elif defined(__DragonFly__)
-# define DP_OS_NAME "DragonFlyBSD"
-# define DP_OS_STR "dragonflybsd"
-#elif defined(MACOSX)
-# define DP_OS_NAME "Mac OS X"
-# define DP_OS_STR "osx"
-#elif defined(__MORPHOS__)
-# define DP_OS_NAME "MorphOS"
-# define DP_OS_STR "morphos"
-#elif defined (sun) || defined (__sun)
-# if defined (__SVR4) || defined (__svr4__)
-# define DP_OS_NAME "Solaris"
-# define DP_OS_STR "solaris"
-# else
-# define DP_OS_NAME "SunOS"
-# define DP_OS_STR "sunos"
-# endif
-#else
-# define DP_OS_NAME "Unknown"
-# define DP_OS_STR "unknown"
-#endif
-
-#if defined(__GNUC__) || (__clang__)
-# if defined(__i386__)
-# define DP_ARCH_STR "686"
-# define SSE_POSSIBLE
-# ifdef __SSE__
-# define SSE_PRESENT
-# endif
-# ifdef __SSE2__
-# define SSE2_PRESENT
-# endif
-# elif defined(__x86_64__)
-# define DP_ARCH_STR "x86_64"
-# define SSE_PRESENT
-# define SSE2_PRESENT
-# elif defined(__powerpc__)
-# define DP_ARCH_STR "ppc"
-# endif
-#elif defined(_WIN64)
-# define DP_ARCH_STR "x86_64"
-# define SSE_PRESENT
-# define SSE2_PRESENT
-#elif defined(WIN32)
-# define DP_ARCH_STR "x86"
-# define SSE_POSSIBLE
-#endif
-
-#ifdef SSE_PRESENT
-# define SSE_POSSIBLE
-#endif
-
-#ifdef NO_SSE
-# undef SSE_PRESENT
-# undef SSE_POSSIBLE
-# undef SSE2_PRESENT
-#endif
-
-#ifdef SSE_POSSIBLE
-// runtime detection of SSE/SSE2 capabilities for x86
-qbool Sys_HaveSSE(void);
-qbool Sys_HaveSSE2(void);
-#else
-#define Sys_HaveSSE() false
-#define Sys_HaveSSE2() false
-#endif
-
#include "glquake.h"
-
#include "palette.h"
-extern cvar_t host_isclient;
+
+extern qbool noclip_anglehack;
/// skill level for currently loaded level (in case the user changes the cvar while the level is running, this reflects the level actually in use)
extern int current_skill;
// debug protocol exploits.
#define DEMOMSG_CLIENT_TO_SERVER 0x80000000
-// In Quake, any char in 0..32 counts as whitespace
-//#define ISWHITESPACE(ch) ((unsigned char) ch <= (unsigned char) ' ')
-#define ISWHITESPACE(ch) (!(ch) || (ch) == ' ' || (ch) == '\t' || (ch) == '\r' || (ch) == '\n')
-#define ISCOMMENT(ch, pos) ch[pos] == '/' && ch[pos + 1] == '/' && (pos == 0 || ISWHITESPACE(ch[pos - 1]))
-// This also includes extended characters, and ALL control chars
-#define ISWHITESPACEORCONTROL(ch) ((signed char) (ch) <= (signed char) ' ')
-
-
-#ifdef PRVM_64
-#define FLOAT_IS_TRUE_FOR_INT(x) ((x) & 0x7FFFFFFFFFFFFFFF) // also match "negative zero" doubles of value 0x8000000000000000
-#define FLOAT_LOSSLESS_FORMAT "%.17g"
-#define VECTOR_LOSSLESS_FORMAT "%.17g %.17g %.17g"
-#else
-#define FLOAT_IS_TRUE_FOR_INT(x) ((x) & 0x7FFFFFFF) // also match "negative zero" floats of value 0x80000000
-#define FLOAT_LOSSLESS_FORMAT "%.9g"
-#define VECTOR_LOSSLESS_FORMAT "%.9g %.9g %.9g"
-#endif
-
-// originally this was _MSC_VER
-// but here we want to test the system libc, which on win32 is borked, and NOT the compiler
-#ifdef WIN32
-#define INT_LOSSLESS_FORMAT_SIZE "I64"
-#define INT_LOSSLESS_FORMAT_CONVERT_S(x) ((__int64)(x))
-#define INT_LOSSLESS_FORMAT_CONVERT_U(x) ((unsigned __int64)(x))
-#else
-#define INT_LOSSLESS_FORMAT_SIZE "j"
-#define INT_LOSSLESS_FORMAT_CONVERT_S(x) ((intmax_t)(x))
-#define INT_LOSSLESS_FORMAT_CONVERT_U(x) ((uintmax_t)(x))
-#endif
-
#endif
*/
-#include "quakedef.h"
+#include "darkplaces.h"
#include "snd_main.h"
#include "snd_ogg.h"
#include "snd_xmp.h"
#endif
+void SCR_PushLoadingScreen (const char *, float);
+void SCR_PopLoadingScreen (qbool);
/*
====================
*/
-#include "quakedef.h"
+#include "darkplaces.h"
#include "snd_main.h"
#include "snd_ogg.h"
#include "snd_wav.h"
#include <math.h>
#include <SDL.h>
-#include "quakedef.h"
+#include "darkplaces.h"
+#include "vid.h"
#include "snd_main.h"
*/
-#include "quakedef.h"
+#include "darkplaces.h"
#include "snd_main.h"
#include "snd_wav.h"
#ifndef SND_WAV_H
#define SND_WAV_H
+#include "qtypes.h"
+#include "sound.h"
+#include "snd_main.h"
extern const snd_fetcher_t wav_fetcher;
*/
-#include "quakedef.h"
+#include "darkplaces.h"
#include "snd_main.h"
#include "snd_xmp.h"
#include "qtypes.h"
#include "cvar.h"
+/* Preprocessor macros to identify platform
+ DP_OS_NAME - "friendly" name of the OS, for humans to read
+ DP_OS_STR - "identifier" of the OS, more suited for code to use
+ DP_ARCH_STR - "identifier" of the processor architecture
+ */
+#if defined(__ANDROID__) /* must come first because it also defines linux */
+# define DP_OS_NAME "Android"
+# define DP_OS_STR "android"
+# define USE_GLES2 1
+# define USE_RWOPS 1
+# define LINK_TO_ZLIB 1
+# define LINK_TO_LIBVORBIS 1
+#ifdef USEXMP
+# define LINK_TO_LIBXMP 1 // nyov: if someone can test with the android NDK compiled libxmp?
+#endif
+# define DP_MOBILETOUCH 1
+# define DP_FREETYPE_STATIC 1
+#elif TARGET_OS_IPHONE /* must come first because it also defines MACOSX */
+# define DP_OS_NAME "iPhoneOS"
+# define DP_OS_STR "iphoneos"
+# define USE_GLES2 1
+# define LINK_TO_ZLIB 1
+# define LINK_TO_LIBVORBIS 1
+# define DP_MOBILETOUCH 1
+# define DP_FREETYPE_STATIC 1
+#elif defined(__linux__)
+# define DP_OS_NAME "Linux"
+# define DP_OS_STR "linux"
+#elif defined(_WIN64)
+# define DP_OS_NAME "Windows64"
+# define DP_OS_STR "win64"
+#elif defined(WIN32)
+# define DP_OS_NAME "Windows"
+# define DP_OS_STR "win32"
+#elif defined(__FreeBSD__)
+# define DP_OS_NAME "FreeBSD"
+# define DP_OS_STR "freebsd"
+#elif defined(__NetBSD__)
+# define DP_OS_NAME "NetBSD"
+# define DP_OS_STR "netbsd"
+#elif defined(__OpenBSD__)
+# define DP_OS_NAME "OpenBSD"
+# define DP_OS_STR "openbsd"
+#elif defined(__DragonFly__)
+# define DP_OS_NAME "DragonFlyBSD"
+# define DP_OS_STR "dragonflybsd"
+#elif defined(MACOSX)
+# define DP_OS_NAME "Mac OS X"
+# define DP_OS_STR "osx"
+#elif defined(__MORPHOS__)
+# define DP_OS_NAME "MorphOS"
+# define DP_OS_STR "morphos"
+#elif defined (sun) || defined (__sun)
+# if defined (__SVR4) || defined (__svr4__)
+# define DP_OS_NAME "Solaris"
+# define DP_OS_STR "solaris"
+# else
+# define DP_OS_NAME "SunOS"
+# define DP_OS_STR "sunos"
+# endif
+#else
+# define DP_OS_NAME "Unknown"
+# define DP_OS_STR "unknown"
+#endif
+
+#if defined(__GNUC__) || (__clang__)
+# if defined(__i386__)
+# define DP_ARCH_STR "686"
+# define SSE_POSSIBLE
+# ifdef __SSE__
+# define SSE_PRESENT
+# endif
+# ifdef __SSE2__
+# define SSE2_PRESENT
+# endif
+# elif defined(__x86_64__)
+# define DP_ARCH_STR "x86_64"
+# define SSE_PRESENT
+# define SSE2_PRESENT
+# elif defined(__powerpc__)
+# define DP_ARCH_STR "ppc"
+# endif
+#elif defined(_WIN64)
+# define DP_ARCH_STR "x86_64"
+# define SSE_PRESENT
+# define SSE2_PRESENT
+#elif defined(WIN32)
+# define DP_ARCH_STR "x86"
+# define SSE_POSSIBLE
+#endif
+
+#ifdef SSE_PRESENT
+# define SSE_POSSIBLE
+#endif
+
+#ifdef NO_SSE
+# undef SSE_PRESENT
+# undef SSE_POSSIBLE
+# undef SSE2_PRESENT
+#endif
+
+#ifdef SSE_POSSIBLE
+// runtime detection of SSE/SSE2 capabilities for x86
+qbool Sys_HaveSSE(void);
+qbool Sys_HaveSSE2(void);
+#else
+#define Sys_HaveSSE() false
+#define Sys_HaveSSE2() false
+#endif
+
typedef struct sys_s
{
int argc;
+#include "darkplaces.h"
#ifdef WIN32
#include <io.h>
#endif
#endif
-#include "quakedef.h"
-
sys_t sys;
// =======================================================================
#include <signal.h>
-#include "quakedef.h"
+#include "darkplaces.h"
sys_t sys;
-#include "quakedef.h"
+#include "darkplaces.h"
#include "utf8lib.h"
+#include "draw.h"
/*
================================================================================
*/
// Z_zone.c
-#include "quakedef.h"
-#include "thread.h"
+#include "darkplaces.h"
+
+void R_TextureStats_Print(qbool, qbool, qbool);
+void GL_Mesh_ListVBOs(qbool);
#ifdef WIN32
#include <windows.h>
#include <unistd.h>
#endif
-#ifdef _MSC_VER
-#include <vadefs.h>
-#else
-#include <stdint.h>
-#endif
#define MEMHEADER_SENTINEL_FOR_ADDRESS(p) ((sentinel_seed ^ (unsigned int) (uintptr_t) (p)) + sentinel_seed)
unsigned int sentinel_seed;