]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - progsvm.h
only send prydoncursor related buttons, if cl_prydoncursor is 1
[xonotic/darkplaces.git] / progsvm.h
index 5136c4c3be165616662f98401f442c3b26d22a12..6c048ba4af03f4f554b1fede58831a45b385cd02 100644 (file)
--- a/progsvm.h
+++ b/progsvm.h
@@ -33,6 +33,10 @@ The code uses void pointers instead.
 #include "progdefs.h"                  // generated by program cdefs
 #include "clprogdefs.h"                        // generated by program cdefs
 
+#ifndef DP_SMALLMEMORY
+#define PROFILING
+#endif
+
 // forward declaration of clgecko_t
 struct clgecko_s;
 
@@ -40,6 +44,7 @@ typedef struct prvm_stack_s
 {
        int                             s;
        mfunction_t             *f;
+       double                  tprofile_acc;
        double                  profile_acc;
        double                  builtinsprofile_acc;
 } prvm_stack_t;
@@ -116,12 +121,21 @@ typedef struct prvm_edict_s
 //============================================================================
 #define PRVM_OP_STATE          1
 
+#ifdef DP_SMALLMEMORY
+#define        PRVM_MAX_STACK_DEPTH            128
+#define        PRVM_LOCALSTACK_SIZE            2048
+
+#define PRVM_MAX_OPENFILES 16
+#define PRVM_MAX_OPENSEARCHES 8
+#define PRVM_MAX_GECKOINSTANCES 1
+#else
 #define        PRVM_MAX_STACK_DEPTH            1024
 #define        PRVM_LOCALSTACK_SIZE            16384
 
 #define PRVM_MAX_OPENFILES 256
 #define PRVM_MAX_OPENSEARCHES 128
 #define PRVM_MAX_GECKOINSTANCES 32
+#endif
 
 typedef void (*prvm_builtin_t) (void);
 
@@ -174,6 +188,7 @@ typedef struct prvm_prog_fieldoffsets_s
        int dimension_hit; // ssqc / csqc
        int dimension_solid; // ssqc / csqc
        int disableclientprediction; // ssqc
+       int discardabledemo; // ssqc
        int dphitcontentsmask; // ssqc / csqc
        int drawonlytoclient; // ssqc
        int effects; // ssqc / csqc
@@ -253,6 +268,13 @@ typedef struct prvm_prog_fieldoffsets_s
        int enemy; // ssqc / csqc (physics)
        int aiment; // ssqc / csqc (physics)
        int movedir; // ssqc / csqc (physics)
+
+       int camera_transform; // csqc (warpzones)
+
+       int userwavefunc_param0; // csqc (userwavefunc)
+       int userwavefunc_param1; // csqc (userwavefunc)
+       int userwavefunc_param2; // csqc (userwavefunc)
+       int userwavefunc_param3; // csqc (userwavefunc)
 }
 prvm_prog_fieldoffsets_t;
 
@@ -289,6 +311,7 @@ typedef struct prvm_prog_globaloffsets_s
        int dmg_origin; // csqc
        int sb_showscores; // csqc
        int drawfont; // csqc / menu
+       int drawfontscale; // csqc / menu
        int require_spawnfunc_prefix; // ssqc
        int worldstatus; // ssqc
        int servertime; // csqc
@@ -301,6 +324,11 @@ typedef struct prvm_prog_globaloffsets_s
        int gettaginfo_right; // ssqc / csqc
        int gettaginfo_up; // ssqc / csqc
        int transparent_offset; // csqc
+
+       int particles_alphamin; // csqc
+       int particles_alphamax; // csqc
+       int particles_colormin; // csqc
+       int particles_colormax; // csqc
 }
 prvm_prog_globaloffsets_t;
 
@@ -346,12 +374,16 @@ typedef struct prvm_prog_funcoffsets_s
 }
 prvm_prog_funcoffsets_t;
 
+// stringbuffer flags
+#define STRINGBUFFER_SAVED     1 // saved in savegames
+
 typedef struct prvm_stringbuffer_s
 {
        int max_strings;
        int num_strings;
        char **strings;
        const char *origin;
+       unsigned char flags;
 }
 prvm_stringbuffer_t;
 
@@ -467,6 +499,9 @@ typedef struct prvm_prog_s
        qboolean                        loaded;
        qboolean                        leaktest_active;
 
+       // translation buffer (only needs to be freed on unloading progs, type is private to prvm_edict.c)
+       void *po;
+
        // printed together with backtraces
        const char *statestring;
 
@@ -539,9 +574,15 @@ void VM_Cmd_Reset(void);
 
 void PRVM_Init (void);
 
+#ifdef PROFILING
 void MVM_ExecuteProgram (func_t fnum, const char *errormessage);
 void CLVM_ExecuteProgram (func_t fnum, const char *errormessage);
 void SVVM_ExecuteProgram (func_t fnum, const char *errormessage);
+#else
+#define MVM_ExecuteProgram SVVM_ExecuteProgram
+#define CLVM_ExecuteProgram SVVM_ExecuteProgram
+void SVVM_ExecuteProgram (func_t fnum, const char *errormessage);
+#endif
 #define PRVM_ExecuteProgram prog->ExecuteProgram
 
 #define PRVM_Alloc(buffersize) _PRVM_Alloc(buffersize, __FILE__, __LINE__)
@@ -551,7 +592,7 @@ void *_PRVM_Alloc (size_t buffersize, const char *filename, int fileline);
 void _PRVM_Free (void *buffer, const char *filename, int fileline);
 void _PRVM_FreeAll (const char *filename, int fileline);
 
-void PRVM_Profile (int maxfunctions, int mininstructions, int sortby);
+void PRVM_Profile (int maxfunctions, double mintime, int sortby);
 void PRVM_Profile_f (void);
 void PRVM_ChildProfile_f (void);
 void PRVM_CallProfile_f (void);