123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- /*
- Copyright (C) 1996-1997 Id Software, Inc.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
- //
- // d_varsa.s
- //
- #include "asm_i386.h"
- #include "quakeasm.h"
- #include "asm_draw.h"
- #include "d_ifacea.h"
- #if id386
- .data
- //-------------------------------------------------------
- // global refresh variables
- //-------------------------------------------------------
- // FIXME: put all refresh variables into one contiguous block. Make into one
- // big structure, like cl or sv?
- .align 4
- .globl C(d_sdivzstepu)
- .globl C(d_tdivzstepu)
- .globl C(d_zistepu)
- .globl C(d_sdivzstepv)
- .globl C(d_tdivzstepv)
- .globl C(d_zistepv)
- .globl C(d_sdivzorigin)
- .globl C(d_tdivzorigin)
- .globl C(d_ziorigin)
- C(d_sdivzstepu): .single 0
- C(d_tdivzstepu): .single 0
- C(d_zistepu): .single 0
- C(d_sdivzstepv): .single 0
- C(d_tdivzstepv): .single 0
- C(d_zistepv): .single 0
- C(d_sdivzorigin): .single 0
- C(d_tdivzorigin): .single 0
- C(d_ziorigin): .single 0
- .globl C(sadjust)
- .globl C(tadjust)
- .globl C(bbextents)
- .globl C(bbextentt)
- C(sadjust): .long 0
- C(tadjust): .long 0
- C(bbextents): .long 0
- C(bbextentt): .long 0
- .globl C(cacheblock)
- .globl C(d_viewbuffer)
- .globl C(cachewidth)
- .globl C(d_pzbuffer)
- .globl C(d_zrowbytes)
- .globl C(d_zwidth)
- C(cacheblock): .long 0
- C(cachewidth): .long 0
- C(d_viewbuffer): .long 0
- C(d_pzbuffer): .long 0
- C(d_zrowbytes): .long 0
- C(d_zwidth): .long 0
- //-------------------------------------------------------
- // ASM-only variables
- //-------------------------------------------------------
- .globl izi
- izi: .long 0
- .globl pbase, s, t, sfracf, tfracf, snext, tnext
- .globl spancountminus1, zi16stepu, sdivz16stepu, tdivz16stepu
- .globl zi8stepu, sdivz8stepu, tdivz8stepu, pz
- s: .long 0
- t: .long 0
- snext: .long 0
- tnext: .long 0
- sfracf: .long 0
- tfracf: .long 0
- pbase: .long 0
- zi8stepu: .long 0
- sdivz8stepu: .long 0
- tdivz8stepu: .long 0
- zi16stepu: .long 0
- sdivz16stepu: .long 0
- tdivz16stepu: .long 0
- spancountminus1: .long 0
- pz: .long 0
- .globl izistep
- izistep: .long 0
- //-------------------------------------------------------
- // local variables for d_draw16.s
- //-------------------------------------------------------
- .globl reciprocal_table_16, entryvec_table_16
- // 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13,
- // 1/14, and 1/15 in 0.32 form
- reciprocal_table_16: .long 0x40000000, 0x2aaaaaaa, 0x20000000
- .long 0x19999999, 0x15555555, 0x12492492
- .long 0x10000000, 0xe38e38e, 0xccccccc, 0xba2e8ba
- .long 0xaaaaaaa, 0x9d89d89, 0x9249249, 0x8888888
- #ifndef NeXT
- .extern Entry2_16
- .extern Entry3_16
- .extern Entry4_16
- .extern Entry5_16
- .extern Entry6_16
- .extern Entry7_16
- .extern Entry8_16
- .extern Entry9_16
- .extern Entry10_16
- .extern Entry11_16
- .extern Entry12_16
- .extern Entry13_16
- .extern Entry14_16
- .extern Entry15_16
- .extern Entry16_16
- #endif
- entryvec_table_16: .long 0, Entry2_16, Entry3_16, Entry4_16
- .long Entry5_16, Entry6_16, Entry7_16, Entry8_16
- .long Entry9_16, Entry10_16, Entry11_16, Entry12_16
- .long Entry13_16, Entry14_16, Entry15_16, Entry16_16
- //-------------------------------------------------------
- // local variables for d_parta.s
- //-------------------------------------------------------
- .globl DP_Count, DP_u, DP_v, DP_32768, DP_Color, DP_Pix, DP_EntryTable
- DP_Count: .long 0
- DP_u: .long 0
- DP_v: .long 0
- DP_32768: .single 32768.0
- DP_Color: .long 0
- DP_Pix: .long 0
- #ifndef NeXT
- .extern DP_1x1
- .extern DP_2x2
- .extern DP_3x3
- .extern DP_4x4
- #endif
- DP_EntryTable: .long DP_1x1, DP_2x2, DP_3x3, DP_4x4
- //
- // advancetable is 8 bytes, but points to the middle of that range so negative
- // offsets will work
- //
- .globl advancetable, sstep, tstep, pspantemp, counttemp, jumptemp
- advancetable: .long 0, 0
- sstep: .long 0
- tstep: .long 0
- pspantemp: .long 0
- counttemp: .long 0
- jumptemp: .long 0
- // 1/2, 1/3, 1/4, 1/5, 1/6, and 1/7 in 0.32 form
- .globl reciprocal_table, entryvec_table
- reciprocal_table: .long 0x40000000, 0x2aaaaaaa, 0x20000000
- .long 0x19999999, 0x15555555, 0x12492492
- #ifndef NeXT
- .extern Entry2_8
- .extern Entry3_8
- .extern Entry4_8
- .extern Entry5_8
- .extern Entry6_8
- .extern Entry7_8
- .extern Entry8_8
- #endif
- entryvec_table: .long 0, Entry2_8, Entry3_8, Entry4_8
- .long Entry5_8, Entry6_8, Entry7_8, Entry8_8
- #ifndef NeXT
- .extern Spr8Entry2_8
- .extern Spr8Entry3_8
- .extern Spr8Entry4_8
- .extern Spr8Entry5_8
- .extern Spr8Entry6_8
- .extern Spr8Entry7_8
- .extern Spr8Entry8_8
- #endif
-
- .globl spr8entryvec_table
- spr8entryvec_table: .long 0, Spr8Entry2_8, Spr8Entry3_8, Spr8Entry4_8
- .long Spr8Entry5_8, Spr8Entry6_8, Spr8Entry7_8, Spr8Entry8_8
- #endif // id386
|