1 /*
2  * Copyright (C) 1997-2001 Id Software, Inc.
3  *
4  * This program is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU General Public License as published by the Free
6  * Software Foundation; either version 2 of the License, or (at your option)
7  * any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.
12  *
13  * See the GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along with
16  * this program; if not, write to the Free Software Foundation, Inc., 59
17  * Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18  *
19  */
20 #ifndef __ASM_I386__
21 #define __ASM_I386__
22 
23 #ifdef ELF
24 #define C(label) label
25 #else
26 #define C(label) _##label
27 #endif
28 
29 
30 /* #define GLQUAKE	1 */
31 
32 #if !defined(WINDED)
33 
34 #if defined(_M_IX86)
35 #define __i386__	1
36 #endif
37 
38 #endif
39 
40 #ifdef __i386__
41 #define id386	1
42 #else
43 #define id386	0
44 #endif
45 
46 /* !!! must be kept the same as in d_iface.h !!! */
47 #define TRANSPARENT_COLOR	255
48 
49 #ifndef GLQUAKE
50 	.extern		C      (d_zistepu)
51 	.extern		C      (d_pzbuffer)
52 	.extern		C      (d_zistepv)
53 	.extern		C      (d_zrowbytes)
54 	.extern		C      (d_ziorigin)
55 	.extern		C      (r_turb_s)
56 	.extern		C      (r_turb_t)
57 	.extern		C      (r_turb_pdest)
58 	.extern		C      (r_turb_spancount)
59 	.extern		C      (r_turb_turb)
60 	.extern		C      (r_turb_pbase)
61 	.extern		C      (r_turb_sstep)
62 	.extern		C      (r_turb_tstep)
63 	.extern		C      (r_bmodelactive)
64 	.extern		C      (d_sdivzstepu)
65 	.extern		C      (d_tdivzstepu)
66 	.extern		C      (d_sdivzstepv)
67 	.extern		C      (d_tdivzstepv)
68 	.extern		C      (d_sdivzorigin)
69 	.extern		C      (d_tdivzorigin)
70 	.extern		C      (sadjust)
71 	.extern		C      (tadjust)
72 	.extern		C      (bbextents)
73 	.extern		C      (bbextentt)
74 	.extern		C      (cacheblock)
75 	.extern		C      (d_viewbuffer)
76 	.extern		C      (cachewidth)
77 	.extern		C      (d_pzbuffer)
78 	.extern		C      (d_zrowbytes)
79 	.extern		C      (d_zwidth)
80 	.extern		C      (d_scantable)
81 	.extern		C      (r_lightptr)
82 	.extern		C      (r_numvblocks)
83 	.extern		C      (prowdestbase)
84 	.extern		C      (pbasesource)
85 	.extern		C      (r_lightwidth)
86 	.extern		C      (lightright)
87 	.extern		C      (lightrightstep)
88 	.extern		C      (lightdeltastep)
89 	.extern		C      (lightdelta)
90 	.extern		C      (lightright)
91 	.extern		C      (lightdelta)
92 	.extern		C      (sourcetstep)
93 	.extern		C      (surfrowbytes)
94 	.extern		C      (lightrightstep)
95 	.extern		C      (lightdeltastep)
96 	.extern		C      (r_sourcemax)
97 	.extern		C      (r_stepback)
98 	.extern		C      (colormap)
99 	.extern		C      (blocksize)
100 	.extern		C      (sourcesstep)
101 	.extern		C      (lightleft)
102 	.extern		C      (blockdivshift)
103 	.extern		C      (blockdivmask)
104 	.extern		C      (lightleftstep)
105 	.extern		C      (r_origin)
106 	.extern		C      (r_ppn)
107 	.extern		C      (r_pup)
108 	.extern		C      (r_pright)
109 	.extern		C      (ycenter)
110 	.extern		C      (xcenter)
111 	.extern		C      (d_vrectbottom_particle)
112 	.extern		C      (d_vrectright_particle)
113 	.extern		C      (d_vrecty)
114 	.extern		C      (d_vrectx)
115 	.extern		C      (d_pix_shift)
116 	.extern		C      (d_pix_min)
117 	.extern		C      (d_pix_max)
118 	.extern		C      (d_y_aspect_shift)
119 	.extern		C      (screenwidth)
120 	.extern		C      (r_leftclipped)
121 	.extern		C      (r_leftenter)
122 	.extern		C      (r_rightclipped)
123 	.extern		C      (r_rightenter)
124 	.extern		C      (modelorg)
125 	.extern		C      (xscale)
126 	.extern		C      (r_refdef)
127 	.extern		C      (yscale)
128 	.extern		C      (r_leftexit)
129 	.extern		C      (r_rightexit)
130 	.extern		C      (r_lastvertvalid)
131 	.extern		C      (cacheoffset)
132 	.extern		C      (newedges)
133 	.extern		C      (removeedges)
134 	.extern		C      (r_pedge)
135 	.extern		C      (r_framecount)
136 	.extern		C      (r_u1)
137 	.extern		C      (r_emitted)
138 	.extern		C      (edge_p)
139 	.extern		C      (surface_p)
140 	.extern		C      (surfaces)
141 	.extern		C      (r_lzi1)
142 	.extern		C      (r_v1)
143 	.extern		C      (r_ceilv1)
144 	.extern		C      (r_nearzi)
145 	.extern		C      (r_nearzionly)
146 	.extern		C      (edge_aftertail)
147 	.extern		C      (edge_tail)
148 	.extern		C      (current_iv)
149 	.extern		C      (edge_head_u_shift20)
150 	.extern		C      (span_p)
151 	.extern		C      (edge_head)
152 	.extern		C      (fv)
153 	.extern		C      (edge_tail_u_shift20)
154 	.extern		C      (r_apverts)
155 	.extern		C      (r_anumverts)
156 	.extern		C      (aliastransform)
157 	.extern		C      (r_avertexnormals)
158 	.extern		C      (r_plightvec)
159 	.extern		C      (r_ambientlight)
160 	.extern		C      (r_shadelight)
161 	.extern		C      (aliasxcenter)
162 	.extern		C      (aliasycenter)
163 	.extern		C      (a_sstepxfrac)
164 	.extern		C      (r_affinetridesc)
165 	.extern		C      (acolormap)
166 	.extern		C      (d_pcolormap)
167 	.extern		C      (r_affinetridesc)
168 	.extern		C      (d_sfrac)
169 	.extern		C      (d_ptex)
170 	.extern		C      (d_pedgespanpackage)
171 	.extern		C      (d_tfrac)
172 	.extern		C      (d_light)
173 	.extern		C      (d_zi)
174 	.extern		C      (d_pdest)
175 	.extern		C      (d_pz)
176 	.extern		C      (d_aspancount)
177 	.extern		C      (erroradjustup)
178 	.extern		C      (errorterm)
179 	.extern		C      (d_xdenom)
180 	.extern		C      (r_p0)
181 	.extern		C      (r_p1)
182 	.extern		C      (r_p2)
183 	.extern		C      (a_tstepxfrac)
184 	.extern		C      (r_sstepx)
185 	.extern		C      (r_tstepx)
186 	.extern		C      (a_ststepxwhole)
187 	.extern		C      (zspantable)
188 	.extern		C      (skintable)
189 	.extern		C      (r_zistepx)
190 	.extern		C      (erroradjustdown)
191 	.extern		C      (d_countextrastep)
192 	.extern		C      (ubasestep)
193 	.extern		C      (a_ststepxwhole)
194 	.extern		C      (a_tstepxfrac)
195 	.extern		C      (r_lstepx)
196 	.extern		C      (a_spans)
197 	.extern		C      (erroradjustdown)
198 	.extern		C      (d_pdestextrastep)
199 	.extern		C      (d_pzextrastep)
200 	.extern		C      (d_sfracextrastep)
201 	.extern		C      (d_ptexextrastep)
202 	.extern		C      (d_countextrastep)
203 	.extern		C      (d_tfracextrastep)
204 	.extern		C      (d_lightextrastep)
205 	.extern		C      (d_ziextrastep)
206 	.extern		C      (d_pdestbasestep)
207 	.extern		C      (d_pzbasestep)
208 	.extern		C      (d_sfracbasestep)
209 	.extern		C      (d_ptexbasestep)
210 	.extern		C      (ubasestep)
211 	.extern		C      (d_tfracbasestep)
212 	.extern		C      (d_lightbasestep)
213 	.extern		C      (d_zibasestep)
214 	.extern		C      (zspantable)
215 	.extern		C      (r_lstepy)
216 	.extern		C      (r_sstepy)
217 	.extern		C      (r_tstepy)
218 	.extern		C      (r_zistepy)
219 	.extern		C      (D_PolysetSetEdgeTable)
220 	.extern		C      (D_RasterizeAliasPolySmooth)
221 	.extern		float_point5
222 	.extern		Float2ToThe31nd
223 	.extern		izistep
224 	.extern		izi
225 	.extern		FloatMinus2ToThe31nd
226 	.extern		float_1
227 	.extern		float_particle_z_clip
228 	.extern		float_minus_1
229 	.extern		float_0
230 	.extern		fp_16
231 	.extern		fp_64k
232 	.extern		fp_1m
233 	.extern		fp_1m_minus_1
234 	.extern		fp_8
235 	.extern		entryvec_table
236 	.extern		advancetable
237 	.extern		sstep
238 	.extern		tstep
239 	.extern		pspantemp
240 	.extern		counttemp
241 	.extern		jumptemp
242 	.extern		reciprocal_table
243 	.extern		DP_Count
244 	.extern		DP_u
245 	.extern		DP_v
246 	.extern		DP_32768
247 	.extern		DP_Color
248 	.extern		DP_Pix
249 	.extern		DP_EntryTable
250 	.extern		pbase
251 	.extern		s
252 	.extern		t
253 	.extern		sfracf
254 	.extern		tfracf
255 	.extern		snext
256 	.extern		tnext
257 	.extern		spancountminus1
258 	.extern		zi16stepu
259 	.extern		sdivz16stepu
260 	.extern		tdivz16stepu
261 	.extern		zi8stepu
262 	.extern		sdivz8stepu
263 	.extern		tdivz8stepu
264 	.extern		reciprocal_table_16
265 	.extern		entryvec_table_16
266 	.extern		ceil_cw
267 	.extern		single_cw
268 	.extern		fp_64kx64k
269 	.extern		pz
270 	.extern		spr8entryvec_table
271 #endif
272 
273 	.extern		C      (snd_scaletable)
274 	.extern		C      (paintbuffer)
275 	.extern		C      (snd_linear_count)
276 	.extern		C      (snd_p)
277 	.extern		C      (snd_vol)
278 	.extern		C      (snd_out)
279 	.extern		C      (vright)
280 	.extern		C      (vup)
281 	.extern		C      (vpn)
282 	.extern		C      (BOPS_Error)
283 //
284 /* !!! note that this file must match the corresponding C structures at all */
285 /* times !!! */
286               //
287 
288 /* plane_t structure */
289 /* !!! if this is changed, it must be changed in model.h too !!! */
290 
291 /*
292  * !!! if the size of this is changed, the array lookup in
293  * SV_HullPointContents
294  */
295 /* must be changed too !!! */
296 #define pl_normal	0
297 #define pl_dist		12
298 #define pl_type		16
299 #define pl_signbits	17
300 #define pl_pad		18
301 #define pl_size		20
302 
303 /* hull_t structure */
304 /* !!! if this is changed, it must be changed in model.h too !!! */
305 #define	hu_clipnodes		0
306 #define	hu_planes			4
307 #define	hu_firstclipnode	8
308 #define	hu_lastclipnode		12
309 #define	hu_clip_mins		16
310 #define	hu_clip_maxs		28
311 #define hu_size  			40
312 
313 /* dnode_t structure */
314 /* !!! if this is changed, it must be changed in bspfile.h too !!! */
315 #define	nd_planenum		0
316 #define	nd_children		4
317 #define	nd_mins			8
318 #define	nd_maxs			20
319 #define	nd_firstface	32
320 #define	nd_numfaces		36
321 #define nd_size			40
322 
323 /* sfxcache_t structure */
324 /* !!! if this is changed, it much be changed in sound.h too !!! */
325 #define sfxc_length		0
326 #define sfxc_loopstart	4
327 #define sfxc_speed		8
328 #define sfxc_width		12
329 #define sfxc_stereo		16
330 #define sfxc_data		20
331 
332 /* channel_t structure */
333 /* !!! if this is changed, it much be changed in sound.h too !!! */
334 #define ch_sfx			0
335 #define ch_leftvol		4
336 #define ch_rightvol		8
337 #define ch_end			12
338 #define ch_pos			16
339 #define ch_looping		20
340 #define ch_entnum		24
341 #define ch_entchannel	28
342 #define ch_origin		32
343 #define ch_dist_mult	44
344 #define ch_master_vol	48
345 #define ch_size			52
346 
347 /* portable_samplepair_t structure */
348 /* !!! if this is changed, it much be changed in sound.h too !!! */
349 #define psp_left		0
350 #define psp_right		4
351 #define psp_size		8
352 
353 
354               //
355 /* !!! note that this file must match the corresponding C structures at all */
356 /* times !!! */
357               //
358 
359 /* !!! if this is changed, it must be changed in r_local.h too !!! */
360 #define	NEAR_CLIP	0.01
361 
362 /* !!! if this is changed, it must be changed in r_local.h too !!! */
363 #define	CYCLE	128
364 
365 /* espan_t structure */
366 /* !!! if this is changed, it must be changed in r_shared.h too !!! */
367 #define espan_t_u    	0
368 #define espan_t_v	    4
369 #define espan_t_count   8
370 #define espan_t_pnext	12
371 #define espan_t_size    16
372 
373 /* sspan_t structure */
374 /* !!! if this is changed, it must be changed in d_local.h too !!! */
375 #define sspan_t_u    	0
376 #define sspan_t_v	    4
377 #define sspan_t_count   8
378 #define sspan_t_size    12
379 
380 /* spanpackage_t structure */
381 /* !!! if this is changed, it must be changed in d_polyset.c too !!! */
382 #define spanpackage_t_pdest				0
383 #define spanpackage_t_pz				4
384 #define spanpackage_t_count				8
385 #define spanpackage_t_ptex				12
386 #define spanpackage_t_sfrac				16
387 #define spanpackage_t_tfrac				20
388 #define spanpackage_t_light				24
389 #define spanpackage_t_zi				28
390 #define spanpackage_t_size				32
391 
392 /* edge_t structure */
393 /* !!! if this is changed, it must be changed in r_shared.h too !!! */
394 #define et_u			0
395 #define et_u_step		4
396 #define et_prev			8
397 #define et_next			12
398 #define et_surfs		16
399 #define et_nextremove	20
400 #define et_nearzi		24
401 #define et_owner		28
402 #define et_size			32
403 
404 /* surf_t structure */
405 /* !!! if this is changed, it must be changed in r_shared.h too !!! */
406 #define SURF_T_SHIFT	6
407 #define st_next			0
408 #define st_prev			4
409 #define st_spans		8
410 #define st_key			12
411 #define st_last_u		16
412 #define st_spanstate	20
413 #define st_flags		24
414 #define st_data			28
415 #define st_entity		32
416 #define st_nearzi		36
417 #define st_insubmodel	40
418 #define st_d_ziorigin	44
419 #define st_d_zistepu	48
420 #define st_d_zistepv	52
421 #define st_pad			56
422 #define st_size			64
423 
424 /* clipplane_t structure */
425 /* !!! if this is changed, it must be changed in r_local.h too !!! */
426 #define cp_normal		0
427 #define cp_dist			12
428 #define cp_next			16
429 #define cp_leftedge		20
430 #define cp_rightedge	21
431 #define cp_reserved		22
432 #define cp_size			24
433 
434 /* medge_t structure */
435 /* !!! if this is changed, it must be changed in model.h too !!! */
436 #define me_v				0
437 #define me_cachededgeoffset	4
438 #define me_size				8
439 
440 /* mvertex_t structure */
441 /* !!! if this is changed, it must be changed in model.h too !!! */
442 #define mv_position		0
443 #define mv_size			12
444 
445 /* refdef_t structure */
446 /* !!! if this is changed, it must be changed in render.h too !!! */
447 #define rd_vrect					0
448 #define rd_aliasvrect				20
449 #define rd_vrectright				40
450 #define rd_vrectbottom				44
451 #define rd_aliasvrectright			48
452 #define rd_aliasvrectbottom			52
453 #define rd_vrectrightedge			56
454 #define rd_fvrectx					60
455 #define rd_fvrecty					64
456 #define rd_fvrectx_adj				68
457 #define rd_fvrecty_adj				72
458 #define rd_vrect_x_adj_shift20		76
459 #define rd_vrectright_adj_shift20	80
460 #define rd_fvrectright_adj			84
461 #define rd_fvrectbottom_adj			88
462 #define rd_fvrectright				92
463 #define rd_fvrectbottom				96
464 #define rd_horizontalFieldOfView	100
465 #define rd_xOrigin					104
466 #define rd_yOrigin					108
467 #define rd_vieworg					112
468 #define rd_viewangles				124
469 #define rd_ambientlight				136
470 #define rd_size						140
471 
472 /* mtriangle_t structure */
473 /* !!! if this is changed, it must be changed in model.h too !!! */
474 #define mtri_facesfront		0
475 #define mtri_vertindex		4
476 #define mtri_size			16	/* !!! if this changes, array indexing in !!! */
477 /* !!! d_polysa.s must be changed to match !!! */
478 #define mtri_shift			4
479 
480 #endif
481