Fix for the problem that SDL applications exited
[AROS-Contrib.git] / Games / Quake / pr_comp.h
blobb237ed5f21234e8877dd8acdd7c1db91089ff8c0
1 /*
2 Copyright (C) 1996-1997 Id Software, Inc.
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 See the GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 // this file is shared by quake and qcc
23 typedef int func_t;
24 typedef int string_t;
26 typedef enum {ev_void, ev_string, ev_float, ev_vector, ev_entity, ev_field, ev_function, ev_pointer} etype_t;
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
42 enum {
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,
54 OP_EQ_F,
55 OP_EQ_V,
56 OP_EQ_S,
57 OP_EQ_E,
58 OP_EQ_FNC,
60 OP_NE_F,
61 OP_NE_V,
62 OP_NE_S,
63 OP_NE_E,
64 OP_NE_FNC,
66 OP_LE,
67 OP_GE,
68 OP_LT,
69 OP_GT,
71 OP_LOAD_F,
72 OP_LOAD_V,
73 OP_LOAD_S,
74 OP_LOAD_ENT,
75 OP_LOAD_FLD,
76 OP_LOAD_FNC,
78 OP_ADDRESS,
80 OP_STORE_F,
81 OP_STORE_V,
82 OP_STORE_S,
83 OP_STORE_ENT,
84 OP_STORE_FLD,
85 OP_STORE_FNC,
87 OP_STOREP_F,
88 OP_STOREP_V,
89 OP_STOREP_S,
90 OP_STOREP_ENT,
91 OP_STOREP_FLD,
92 OP_STOREP_FNC,
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,
116 OP_BITAND,
117 OP_BITOR
121 typedef struct statement_s
123 unsigned short op;
124 short a,b,c;
125 } dstatement_t;
127 typedef struct
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)
136 #define MAX_PARMS 8
138 typedef struct
140 int first_statement; // negative numbers are builtins
141 int parm_start;
142 int locals; // total ints of parms + locals
144 int profile; // runtime
146 int s_name;
147 int s_file; // source file defined in
149 int numparms;
150 byte parm_size[MAX_PARMS];
151 } dfunction_t;
154 #define PROG_VERSION 6
155 typedef struct
157 int version;
158 int crc; // check of header file
160 int ofs_statements;
161 int numstatements; // statement 0 is an error
163 int ofs_globaldefs;
164 int numglobaldefs;
166 int ofs_fielddefs;
167 int numfielddefs;
169 int ofs_functions;
170 int numfunctions; // function 0 is an empty
172 int ofs_strings;
173 int numstrings; // first string is a null string
175 int ofs_globals;
176 int numglobals;
178 int entityfields;
179 } dprograms_t;