19fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/*
29fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamCopyright (C) 1996-1997 Id Software, Inc.
39fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
49fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamThis program is free software; you can redistribute it and/or
59fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreammodify it under the terms of the GNU General Public License
69fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamas published by the Free Software Foundation; either version 2
79fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamof the License, or (at your option) any later version.
89fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
99fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamThis program is distributed in the hope that it will be useful,
109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreambut WITHOUT ANY WARRANTY; without even the implied warranty of
119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamSee the GNU General Public License for more details.
149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamYou should have received a copy of the GNU General Public License
169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamalong with this program; if not, write to the Free Software
179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream*/
209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//
219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// d_varsa.s
229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//
239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#include "asm_i386.h"
259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#include "quakeasm.h"
269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#include "asm_draw.h"
279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#include "d_ifacea.h"
289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#if	id386
309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.data
329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//-------------------------------------------------------
349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// global refresh variables
359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//-------------------------------------------------------
369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// FIXME: put all refresh variables into one contiguous block. Make into one
389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// big structure, like cl or sv?
399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.align	4
419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_sdivzstepu)
429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_tdivzstepu)
439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_zistepu)
449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_sdivzstepv)
459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_tdivzstepv)
469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_zistepv)
479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_sdivzorigin)
489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_tdivzorigin)
499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_ziorigin)
509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_sdivzstepu):	.single	0
519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_tdivzstepu):	.single	0
529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_zistepu):		.single	0
539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_sdivzstepv):	.single	0
549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_tdivzstepv):	.single	0
559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_zistepv):		.single	0
569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_sdivzorigin):	.single	0
579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_tdivzorigin):	.single	0
589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_ziorigin):		.single	0
599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(sadjust)
619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(tadjust)
629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(bbextents)
639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(bbextentt)
649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(sadjust):			.long	0
659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(tadjust):			.long	0
669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(bbextents):		.long	0
679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(bbextentt):		.long	0
689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(cacheblock)
709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_viewbuffer)
719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(cachewidth)
729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_pzbuffer)
739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_zrowbytes)
749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	C(d_zwidth)
759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(cacheblock):		.long	0
769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(cachewidth):		.long	0
779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_viewbuffer):	.long	0
789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_pzbuffer):		.long	0
799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_zrowbytes):		.long	0
809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamC(d_zwidth):		.long	0
819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//-------------------------------------------------------
849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// ASM-only variables
859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//-------------------------------------------------------
869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	izi
879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamizi:			.long	0
889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	pbase, s, t, sfracf, tfracf, snext, tnext
909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	spancountminus1, zi16stepu, sdivz16stepu, tdivz16stepu
919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	zi8stepu, sdivz8stepu, tdivz8stepu, pz
929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreams:				.long	0
939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamt:				.long	0
949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamsnext:			.long	0
959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtnext:			.long	0
969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamsfracf:			.long	0
979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtfracf:			.long	0
989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreampbase:			.long	0
999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamzi8stepu:		.long	0
1009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamsdivz8stepu:	.long	0
1019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtdivz8stepu:	.long	0
1029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamzi16stepu:		.long	0
1039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamsdivz16stepu:	.long	0
1049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtdivz16stepu:	.long	0
1059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamspancountminus1: .long	0
1069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreampz:				.long	0
1079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	izistep
1099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamizistep:				.long	0
1109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//-------------------------------------------------------
1129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// local variables for d_draw16.s
1139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//-------------------------------------------------------
1149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	reciprocal_table_16, entryvec_table_16
1169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13,
1179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// 1/14, and 1/15 in 0.32 form
1189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamreciprocal_table_16:	.long	0x40000000, 0x2aaaaaaa, 0x20000000
1199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream						.long	0x19999999, 0x15555555, 0x12492492
1209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream						.long	0x10000000, 0xe38e38e, 0xccccccc, 0xba2e8ba
1219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream						.long	0xaaaaaaa, 0x9d89d89, 0x9249249, 0x8888888
1229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef NeXT
1249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry2_16
1259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry3_16
1269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry4_16
1279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry5_16
1289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry6_16
1299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry7_16
1309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry8_16
1319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry9_16
1329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry10_16
1339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry11_16
1349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry12_16
1359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry13_16
1369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry14_16
1379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry15_16
1389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry16_16
1399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif
1409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamentryvec_table_16:	.long	0, Entry2_16, Entry3_16, Entry4_16
1429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream					.long	Entry5_16, Entry6_16, Entry7_16, Entry8_16
1439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream					.long	Entry9_16, Entry10_16, Entry11_16, Entry12_16
1449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream					.long	Entry13_16, Entry14_16, Entry15_16, Entry16_16
1459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//-------------------------------------------------------
1479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// local variables for d_parta.s
1489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//-------------------------------------------------------
1499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	DP_Count, DP_u, DP_v, DP_32768, DP_Color, DP_Pix, DP_EntryTable
1509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamDP_Count:		.long	0
1519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamDP_u:			.long	0
1529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamDP_v:			.long	0
1539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamDP_32768:		.single	32768.0
1549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamDP_Color:		.long	0
1559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamDP_Pix:			.long	0
1569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef NeXT
1599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern DP_1x1
1609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern DP_2x2
1619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern DP_3x3
1629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern DP_4x4
1639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif
1649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamDP_EntryTable:	.long	DP_1x1, DP_2x2, DP_3x3, DP_4x4
1669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//
1689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// advancetable is 8 bytes, but points to the middle of that range so negative
1699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// offsets will work
1709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream//
1719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	advancetable, sstep, tstep, pspantemp, counttemp, jumptemp
1729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamadvancetable:	.long	0, 0
1739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamsstep:			.long	0
1749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtstep:			.long	0
1759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreampspantemp:		.long	0
1779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamcounttemp:		.long	0
1789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamjumptemp:		.long	0
1799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// 1/2, 1/3, 1/4, 1/5, 1/6, and 1/7 in 0.32 form
1819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl	reciprocal_table, entryvec_table
1829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamreciprocal_table:	.long	0x40000000, 0x2aaaaaaa, 0x20000000
1839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream					.long	0x19999999, 0x15555555, 0x12492492
1849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef NeXT
1869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry2_8
1879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry3_8
1889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry4_8
1899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry5_8
1909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry6_8
1919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry7_8
1929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Entry8_8
1939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif
1949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamentryvec_table:	.long	0, Entry2_8, Entry3_8, Entry4_8
1969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream				.long	Entry5_8, Entry6_8, Entry7_8, Entry8_8
1979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
1989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef NeXT
1999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Spr8Entry2_8
2009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Spr8Entry3_8
2019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Spr8Entry4_8
2029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Spr8Entry5_8
2039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Spr8Entry6_8
2049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Spr8Entry7_8
2059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream	.extern Spr8Entry8_8
2069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif
2079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
2089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream.globl spr8entryvec_table
2099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamspr8entryvec_table:	.long	0, Spr8Entry2_8, Spr8Entry3_8, Spr8Entry4_8
2109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream					.long	Spr8Entry5_8, Spr8Entry6_8, Spr8Entry7_8, Spr8Entry8_8
2119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
2129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif	// id386
2139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream
214