summaryrefslogtreecommitdiff
path: root/apps/plugins/sdl/progs/quake/pr_comp.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/sdl/progs/quake/pr_comp.h')
-rw-r--r--apps/plugins/sdl/progs/quake/pr_comp.h180
1 files changed, 180 insertions, 0 deletions
diff --git a/apps/plugins/sdl/progs/quake/pr_comp.h b/apps/plugins/sdl/progs/quake/pr_comp.h
new file mode 100644
index 0000000000..483e8e6a82
--- /dev/null
+++ b/apps/plugins/sdl/progs/quake/pr_comp.h
@@ -0,0 +1,180 @@
1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19*/
20
21// this file is shared by quake and qcc
22
23typedef int func_t;
24typedef int string_t;
25
26typedef int etype_t;
27enum {ev_void, ev_string, ev_float, ev_vector, ev_entity, ev_field, ev_function, ev_pointer};
28
29#define OFS_NULL 0
30#define OFS_RETURN 1
31#define OFS_PARM0 4 // leave 3 ofs for each parm to hold vectors
32#define OFS_PARM1 7
33#define OFS_PARM2 10
34#define OFS_PARM3 13
35#define OFS_PARM4 16
36#define OFS_PARM5 19
37#define OFS_PARM6 22
38#define OFS_PARM7 25
39#define RESERVED_OFS 28
40
41
42enum {
43 OP_DONE,
44 OP_MUL_F,
45 OP_MUL_V,
46 OP_MUL_FV,
47 OP_MUL_VF,
48 OP_DIV_F,
49 OP_ADD_F,
50 OP_ADD_V,
51 OP_SUB_F,
52 OP_SUB_V,
53
54 OP_EQ_F,
55 OP_EQ_V,
56 OP_EQ_S,
57 OP_EQ_E,
58 OP_EQ_FNC,
59
60 OP_NE_F,
61 OP_NE_V,
62 OP_NE_S,
63 OP_NE_E,
64 OP_NE_FNC,
65
66 OP_LE,
67 OP_GE,
68 OP_LT,
69 OP_GT,
70
71 OP_LOAD_F,
72 OP_LOAD_V,
73 OP_LOAD_S,
74 OP_LOAD_ENT,
75 OP_LOAD_FLD,
76 OP_LOAD_FNC,
77
78 OP_ADDRESS,
79
80 OP_STORE_F,
81 OP_STORE_V,
82 OP_STORE_S,
83 OP_STORE_ENT,
84 OP_STORE_FLD,
85 OP_STORE_FNC,
86
87 OP_STOREP_F,
88 OP_STOREP_V,
89 OP_STOREP_S,
90 OP_STOREP_ENT,
91 OP_STOREP_FLD,
92 OP_STOREP_FNC,
93
94 OP_RETURN,
95 OP_NOT_F,
96 OP_NOT_V,
97 OP_NOT_S,
98 OP_NOT_ENT,
99 OP_NOT_FNC,
100 OP_IF,
101 OP_IFNOT,
102 OP_CALL0,
103 OP_CALL1,
104 OP_CALL2,
105 OP_CALL3,
106 OP_CALL4,
107 OP_CALL5,
108 OP_CALL6,
109 OP_CALL7,
110 OP_CALL8,
111 OP_STATE,
112 OP_GOTO,
113 OP_AND,
114 OP_OR,
115
116 OP_BITAND,
117 OP_BITOR
118};
119
120
121typedef struct statement_s
122{
123 unsigned short op;
124 short a,b,c;
125} dstatement_t;
126
127typedef struct
128{
129 unsigned short type; // if DEF_SAVEGLOBGAL bit is set
130 // the variable needs to be saved in savegames
131 unsigned short ofs;
132 int s_name;
133} ddef_t;
134#define DEF_SAVEGLOBAL (1<<15)
135
136#define MAX_PARMS 8
137
138typedef struct
139{
140 int first_statement; // negative numbers are builtins
141 int parm_start;
142 int locals; // total ints of parms + locals
143
144 int profile; // runtime
145
146 int s_name;
147 int s_file; // source file defined in
148
149 int numparms;
150 byte parm_size[MAX_PARMS];
151} dfunction_t;
152
153
154#define PROG_VERSION 6
155typedef struct
156{
157 int version;
158 int crc; // check of header file
159
160 int ofs_statements;
161 int numstatements; // statement 0 is an error
162
163 int ofs_globaldefs;
164 int numglobaldefs;
165
166 int ofs_fielddefs;
167 int numfielddefs;
168
169 int ofs_functions;
170 int numfunctions; // function 0 is an empty
171
172 int ofs_strings;
173 int numstrings; // first string is a null string
174
175 int ofs_globals;
176 int numglobals;
177
178 int entityfields;
179} dprograms_t;
180