1 /*
2 Copyright (C) 1997-2001 Id Software, Inc.
3 
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.
8 
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.
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
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.
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(_WIN32) && !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 
222 	.extern float_point5
223 	.extern Float2ToThe31nd
224 	.extern izistep
225 	.extern izi
226 	.extern FloatMinus2ToThe31nd
227 	.extern float_1
228 	.extern float_particle_z_clip
229 	.extern float_minus_1
230 	.extern float_0
231 	.extern fp_16
232 	.extern fp_64k
233 	.extern fp_1m
234 	.extern fp_1m_minus_1
235 	.extern fp_8
236 	.extern entryvec_table
237 	.extern advancetable
238 	.extern sstep
239 	.extern tstep
240 	.extern pspantemp
241 	.extern counttemp
242 	.extern jumptemp
243 	.extern reciprocal_table
244 	.extern DP_Count
245 	.extern DP_u
246 	.extern DP_v
247 	.extern DP_32768
248 	.extern DP_Color
249 	.extern DP_Pix
250 	.extern DP_EntryTable
251 	.extern	pbase
252 	.extern s
253 	.extern t
254 	.extern sfracf
255 	.extern tfracf
256 	.extern snext
257 	.extern tnext
258 	.extern	spancountminus1
259 	.extern zi16stepu
260 	.extern sdivz16stepu
261 	.extern tdivz16stepu
262 	.extern	zi8stepu
263 	.extern sdivz8stepu
264 	.extern tdivz8stepu
265 	.extern reciprocal_table_16
266 	.extern entryvec_table_16
267 	.extern ceil_cw
268 	.extern single_cw
269 	.extern fp_64kx64k
270 	.extern pz
271 	.extern spr8entryvec_table
272 #endif
273 
274 	.extern C(snd_scaletable)
275 	.extern C(paintbuffer)
276 	.extern C(snd_linear_count)
277 	.extern C(snd_p)
278 	.extern C(snd_vol)
279 	.extern C(snd_out)
280 	.extern C(vright)
281 	.extern C(vup)
282 	.extern C(vpn)
283 	.extern C(BOPS_Error)
284 
285 //
286 // !!! note that this file must match the corresponding C structures at all
287 // times !!!
288 //
289 
290 // plane_t structure
291 // !!! if this is changed, it must be changed in model.h too !!!
292 // !!! if the size of this is changed, the array lookup in SV_HullPointContents
293 //     must be changed too !!!
294 #define pl_normal	0
295 #define pl_dist		12
296 #define pl_type		16
297 #define pl_signbits	17
298 #define pl_pad		18
299 #define pl_size		20
300 
301 // hull_t structure
302 // !!! if this is changed, it must be changed in model.h too !!!
303 #define	hu_clipnodes		0
304 #define	hu_planes			4
305 #define	hu_firstclipnode	8
306 #define	hu_lastclipnode		12
307 #define	hu_clip_mins		16
308 #define	hu_clip_maxs		28
309 #define hu_size  			40
310 
311 // dnode_t structure
312 // !!! if this is changed, it must be changed in bspfile.h too !!!
313 #define	nd_planenum		0
314 #define	nd_children		4
315 #define	nd_mins			8
316 #define	nd_maxs			20
317 #define	nd_firstface	32
318 #define	nd_numfaces		36
319 #define nd_size			40
320 
321 // sfxcache_t structure
322 // !!! if this is changed, it much be changed in sound.h too !!!
323 #define sfxc_length		0
324 #define sfxc_loopstart	4
325 #define sfxc_speed		8
326 #define sfxc_width		12
327 #define sfxc_stereo		16
328 #define sfxc_data		20
329 
330 // channel_t structure
331 // !!! if this is changed, it much be changed in sound.h too !!!
332 #define ch_sfx			0
333 #define ch_leftvol		4
334 #define ch_rightvol		8
335 #define ch_end			12
336 #define ch_pos			16
337 #define ch_looping		20
338 #define ch_entnum		24
339 #define ch_entchannel	28
340 #define ch_origin		32
341 #define ch_dist_mult	44
342 #define ch_master_vol	48
343 #define ch_size			52
344 
345 // portable_samplepair_t structure
346 // !!! if this is changed, it much be changed in sound.h too !!!
347 #define psp_left		0
348 #define psp_right		4
349 #define psp_size		8
350 
351 
352 //
353 // !!! note that this file must match the corresponding C structures at all
354 // times !!!
355 //
356 
357 // !!! if this is changed, it must be changed in r_local.h too !!!
358 #define	NEAR_CLIP	0.01
359 
360 // !!! if this is changed, it must be changed in r_local.h too !!!
361 #define	CYCLE	128
362 
363 // espan_t structure
364 // !!! if this is changed, it must be changed in r_shared.h too !!!
365 #define espan_t_u    	0
366 #define espan_t_v	    4
367 #define espan_t_count   8
368 #define espan_t_pnext	12
369 #define espan_t_size    16
370 
371 // sspan_t structure
372 // !!! if this is changed, it must be changed in d_local.h too !!!
373 #define sspan_t_u    	0
374 #define sspan_t_v	    4
375 #define sspan_t_count   8
376 #define sspan_t_size    12
377 
378 // spanpackage_t structure
379 // !!! if this is changed, it must be changed in d_polyset.c too !!!
380 #define spanpackage_t_pdest				0
381 #define spanpackage_t_pz				4
382 #define spanpackage_t_count				8
383 #define spanpackage_t_ptex				12
384 #define spanpackage_t_sfrac				16
385 #define spanpackage_t_tfrac				20
386 #define spanpackage_t_light				24
387 #define spanpackage_t_zi				28
388 #define spanpackage_t_size				32
389 
390 // edge_t structure
391 // !!! if this is changed, it must be changed in r_shared.h too !!!
392 #define et_u			0
393 #define et_u_step		4
394 #define et_prev			8
395 #define et_next			12
396 #define et_surfs		16
397 #define et_nextremove	20
398 #define et_nearzi		24
399 #define et_owner		28
400 #define et_size			32
401 
402 // surf_t structure
403 // !!! if this is changed, it must be changed in r_shared.h too !!!
404 #define SURF_T_SHIFT	6
405 #define st_next			0
406 #define st_prev			4
407 #define st_spans		8
408 #define st_key			12
409 #define st_last_u		16
410 #define st_spanstate	20
411 #define st_flags		24
412 #define st_data			28
413 #define st_entity		32
414 #define st_nearzi		36
415 #define st_insubmodel	40
416 #define st_d_ziorigin	44
417 #define st_d_zistepu	48
418 #define st_d_zistepv	52
419 #define st_pad			56
420 #define st_size			64
421 
422 // clipplane_t structure
423 // !!! if this is changed, it must be changed in r_local.h too !!!
424 #define cp_normal		0
425 #define cp_dist			12
426 #define cp_next			16
427 #define cp_leftedge		20
428 #define cp_rightedge	21
429 #define cp_reserved		22
430 #define cp_size			24
431 
432 // medge_t structure
433 // !!! if this is changed, it must be changed in model.h too !!!
434 #define me_v				0
435 #define me_cachededgeoffset	4
436 #define me_size				8
437 
438 // mvertex_t structure
439 // !!! if this is changed, it must be changed in model.h too !!!
440 #define mv_position		0
441 #define mv_size			12
442 
443 // refdef_t structure
444 // !!! if this is changed, it must be changed in render.h too !!!
445 #define rd_vrect					0
446 #define rd_aliasvrect				20
447 #define rd_vrectright				40
448 #define rd_vrectbottom				44
449 #define rd_aliasvrectright			48
450 #define rd_aliasvrectbottom			52
451 #define rd_vrectrightedge			56
452 #define rd_fvrectx					60
453 #define rd_fvrecty					64
454 #define rd_fvrectx_adj				68
455 #define rd_fvrecty_adj				72
456 #define rd_vrect_x_adj_shift20		76
457 #define rd_vrectright_adj_shift20	80
458 #define rd_fvrectright_adj			84
459 #define rd_fvrectbottom_adj			88
460 #define rd_fvrectright				92
461 #define rd_fvrectbottom				96
462 #define rd_horizontalFieldOfView	100
463 #define rd_xOrigin					104
464 #define rd_yOrigin					108
465 #define rd_vieworg					112
466 #define rd_viewangles				124
467 #define rd_ambientlight				136
468 #define rd_size						140
469 
470 // mtriangle_t structure
471 // !!! if this is changed, it must be changed in model.h too !!!
472 #define mtri_facesfront		0
473 #define mtri_vertindex		4
474 #define mtri_size			16	// !!! if this changes, array indexing in !!!
475 								// !!! d_polysa.s must be changed to match !!!
476 #define mtri_shift			4
477 
478 #endif
479