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