|
|
1.1 root 1: ;---------------------------- Include File Header ---------------------------;
2: ; lines.inc
3: ;
4: ; Line drawing constants and structures.
5: ;
6: ; NOTE: This file mirrors LINES.H. Changes here must be reflected in
7: ; the .h file!
8: ;
9: ;----------------------------------------------------------------------------;
10:
11: ; We have special strip routines when all strips have at most this many
12: ; pixels:
13:
14: MAX_SHORT_STROKE_LENGTH equ 15
15:
16: ; # of strip drawers in every group:
17:
18: NUM_STRIP_DRAW_DIRECTIONS equ 4
19:
20: ; # of strip drawers for doing either solid lines or styled lines:
21:
22: NUM_STRIP_DRAW_STYLES equ 8
23:
24: STYLE_MAX_COUNT equ 16
25: STYLE_MAX_VALUE equ 3fffh
26: RUN_MAX equ 20
27: STRIP_MAX equ 100
28: STYLE_DENSITY equ 3
29:
30: ; Flip and round flags:
31:
32: FL_H_ROUND_DOWN equ 00000080h ; Set if x = 1/2 rounds to x = 1
33: FL_V_ROUND_DOWN equ 00008000h ; Set if y = 1/2 rounds to y = 1
34:
35: FL_FLIP_D equ 00000005h ; Diagonal flip
36: FL_FLIP_V equ 00000008h ; Vertical flip
37: FL_FLIP_SLOPE_ONE equ 00000010h ; If slope is exactly one
38: FL_FLIP_HALF equ 00000002h ; Half flip
39: FL_FLIP_H equ 00000200h ; Horizontal (right-to-left) exchange
40:
41: FL_ROUND_MASK equ 0000001ch ; Rounding is dependent on diagonal,
42: FL_ROUND_SHIFT equ 2 ; vertical flips and if slope is one
43:
44: FL_RECTLCLIP_MASK equ 0000000ch ; When we unflip to do clipping, we
45: FL_RECTLCLIP_SHIFT equ 2 ; only have to look at diagonal and
46: ; vertical flips
47:
48: FL_STRIP_MASK equ 00000003h ; Which strip drawer we call is based
49: FL_STRIP_SHIFT equ 0 ; on if we did diagonal and/or half
50: ; flips
51:
52: FL_SIMPLE_CLIP equ 00000020h ; Denotes our clipping complexity
53: FL_COMPLEX_CLIP equ 00000040h
54: FL_CLIP equ (FL_SIMPLE_CLIP + FL_COMPLEX_CLIP)
55:
56: FL_SET equ 00000800h ; If ROP is such that we don't have to
57: ; read video memory
58: FL_ARBITRARYSTYLED equ 00000400h ; If the line is styled
59: FL_STYLED equ (FL_ARBITRARYSTYLED)
60:
61: FL_STRIP_ARRAY_MASK equ 00000C00h ; Which strip arrays we look up depends
62: FL_STRIP_ARRAY_SHIFT equ 10 ; on if we're doing style and/or have
63: ; a 'set' style ROP
64:
65: ; Simple flag bits in high byte:
66:
67: FL_DONT_DO_HALF_FLIP equ 00002000h
68: FL_PHYSICAL_DEVICE equ 00004000h
69:
70: ; Miscellaneous DDA defines:
71:
72: F equ 16
73: FLOG2 equ 4
74:
75: STRIPS struc
76: ST_cStrips dd ?
77: ST_flFlips dd ?
78: ST_ptlStart dd 2 dup(?)
79: ST_alStrips dd STRIP_MAX dup (?)
80: STRIPS ends
81:
82: LINESTATE struc
83: LS_lNextScan dd ?
84: LS_chAnd db ?
85: LS_chXor db ?
86: LS_filler1 db 2 dup (?)
87: LS_pspStart dd ?
88: LS_pspEnd dd ?
89: LS_psp dd ?
90: LS_spRemaining dd ?
91: LS_spTotal dd ?
92: LS_spTotal2 dd ?
93: LS_spNext dd ?
94: LS_spComplex dd ?
95: LS_aspRtoL dd ?
96: LS_aspLtoR dd ?
97: LS_jStyleMask db ?
98: LS_filler2 db 3 dup (?)
99: LS_xyDensity dd ?
100: LS_cStyle dd ?
101: LS_ulStyleMaskLtoR dd ?
102: LS_ulStyleMaskRtoL dd ?
103: LS_jStartMask db ?
104: LS_filler3 db 3 dup (?)
105: LINESTATE ends
106:
107: RUN struc
108: RUN_iStart dd ?
109: RUN_iStop dd ?
110: RUN ends
111:
112:
113: ; S3 Equates
114:
115: FIFO_7_STATUS equ 0080h
116: FIFO_6_STATUS equ 0040h
117: FIFO_5_STATUS equ 0020h
118: FIFO_4_STATUS equ 0010h
119: FIFO_3_STATUS equ 0008h
120: FIFO_2_STATUS equ 0004h
121: FIFO_1_STATUS equ 0002h
122: FIFO_0_STATUS equ 0001h
123:
124: FIFO_1_EMPTY equ FIFO_7_STATUS
125: FIFO_2_EMPTY equ FIFO_6_STATUS
126: FIFO_3_EMPTY equ FIFO_5_STATUS
127: FIFO_4_EMPTY equ FIFO_4_STATUS
128: FIFO_5_EMPTY equ FIFO_3_STATUS
129: FIFO_6_EMPTY equ FIFO_2_STATUS
130: FIFO_7_EMPTY equ FIFO_1_STATUS
131: FIFO_8_EMPTY equ FIFO_0_STATUS
132:
133: DRAWING_DIRECTION_0 equ 0000h
134: DRAWING_DIRECTION_45 equ 0020h
135: DRAWING_DIRECTION_90 equ 0040h
136: DRAWING_DIRECTION_135 equ 0060h
137: DRAWING_DIRECTION_180 equ 0080h
138: DRAWING_DIRECTION_225 equ 00A0h
139: DRAWING_DIRECTION_270 equ 00C0h
140: DRAWING_DIRECTION_315 equ 00E0h
141:
142: PLUS_X equ 0020h
143: PLUS_Y equ 0080h
144: MAJOR_Y equ 0040h
145: DRAW equ 0010h
146: DIR_TYPE_XY equ 0000h
147: DIR_TYPE_RADIAL equ 0008h
148: MULTIPLE_PIXELS equ 0002h
149: WRITE equ 0001h
150: DRAW_LINE equ 2000h
151: LAST_PIXEL_OFF equ 0004h
152:
153: DEFAULT_DRAW_CMD equ (DRAW_LINE+DRAW+DIR_TYPE_XY+MULTIPLE_PIXELS+WRITE+ \
154: LAST_PIXEL_OFF)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.