1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
/***************************************************************************
Atari Jaguar blitter
****************************************************************************
------------------------------------------------------------
BLITTER REGISTERS
------------------------------------------------------------
F02200-F022FF R/W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Blitter registers
F02200 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A1_BASE - A1 base register
F02204 W -------- ---xxxxx -xxxxxxx xxxxx-xx A1_FLAGS - A1 flags register
W -------- ---x---- -------- -------- (YSIGNSUB - invert sign of Y delta)
W -------- ----x--- -------- -------- (XSIGNSUB - invert sign of X delta)
W -------- -----x-- -------- -------- (Y add control)
W -------- ------xx -------- -------- (X add control)
W -------- -------- -xxxxxx- -------- (width in 6-bit floating point)
W -------- -------- -------x xx------ (ZOFFS1-6 - Z data offset)
W -------- -------- -------- --xxx--- (PIXEL - pixel size)
W -------- -------- -------- ------xx (PITCH1-4 - data phrase pitch)
F02208 W -xxxxxxx xxxxxxxx -xxxxxxx xxxxxxxx A1_CLIP - A1 clipping size
W -xxxxxxx xxxxxxxx -------- -------- (height)
W -------- -------- -xxxxxxx xxxxxxxx (width)
F0220C R/W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A1_PIXEL - A1 pixel pointer
R/W xxxxxxxx xxxxxxxx -------- -------- (Y pixel value)
R/W -------- -------- xxxxxxxx xxxxxxxx (X pixel value)
F02210 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A1_STEP - A1 step value
W xxxxxxxx xxxxxxxx -------- -------- (Y step value)
W -------- -------- xxxxxxxx xxxxxxxx (X step value)
F02214 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A1_FSTEP - A1 step fraction value
W xxxxxxxx xxxxxxxx -------- -------- (Y step fraction value)
W -------- -------- xxxxxxxx xxxxxxxx (X step fraction value)
F02218 R/W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A1_FPIXEL - A1 pixel pointer fraction
R/W xxxxxxxx xxxxxxxx -------- -------- (Y pixel fraction value)
R/W -------- -------- xxxxxxxx xxxxxxxx (X pixel fraction value)
F0221C W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A1_INC - A1 increment
W xxxxxxxx xxxxxxxx -------- -------- (Y increment)
W -------- -------- xxxxxxxx xxxxxxxx (X increment)
F02220 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A1_FINC - A1 increment fraction
W xxxxxxxx xxxxxxxx -------- -------- (Y increment fraction)
W -------- -------- xxxxxxxx xxxxxxxx (X increment fraction)
F02224 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A2_BASE - A2 base register
F02228 W -------- ---xxxxx -xxxxxxx xxxxx-xx A2_FLAGS - A2 flags register
W -------- ---x---- -------- -------- (YSIGNSUB - invert sign of Y delta)
W -------- ----x--- -------- -------- (XSIGNSUB - invert sign of X delta)
W -------- -----x-- -------- -------- (Y add control)
W -------- ------xx -------- -------- (X add control)
W -------- -------- -xxxxxx- -------- (width in 6-bit floating point)
W -------- -------- -------x xx------ (ZOFFS1-6 - Z data offset)
W -------- -------- -------- --xxx--- (PIXEL - pixel size)
W -------- -------- -------- ------xx (PITCH1-4 - data phrase pitch)
F0222C W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A2_MASK - A2 window mask
F02230 R/W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A2_PIXEL - A2 pixel pointer
R/W xxxxxxxx xxxxxxxx -------- -------- (Y pixel value)
R/W -------- -------- xxxxxxxx xxxxxxxx (X pixel value)
F02234 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx A2_STEP - A2 step value
W xxxxxxxx xxxxxxxx -------- -------- (Y step value)
W -------- -------- xxxxxxxx xxxxxxxx (X step value)
F02238 W -xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_CMD - command register
W -x------ -------- -------- -------- (SRCSHADE - modify source intensity)
W --x----- -------- -------- -------- (BUSHI - hi priority bus)
W ---x---- -------- -------- -------- (BKGWREN - writeback destination)
W ----x--- -------- -------- -------- (DCOMPEN - write inhibit from data comparator)
W -----x-- -------- -------- -------- (BCOMPEN - write inhibit from bit coparator)
W ------x- -------- -------- -------- (CMPDST - compare dest instead of src)
W -------x xxx----- -------- -------- (logical operation)
W -------- ---xxx-- -------- -------- (ZMODE - Z comparator mode)
W -------- ------x- -------- -------- (ADDDSEL - select sum of src & dst)
W -------- -------x -------- -------- (PATDSEL - select pattern data)
W -------- -------- x------- -------- (TOPNEN - enable carry into top intensity nibble)
W -------- -------- -x------ -------- (TOPBEN - enable carry into top intensity byte)
W -------- -------- --x----- -------- (ZBUFF - enable Z updates in inner loop)
W -------- -------- ---x---- -------- (GOURD - enable gouraud shading in inner loop)
W -------- -------- ----x--- -------- (DSTA2 - reverses A2/A1 roles)
W -------- -------- -----x-- -------- (UPDA2 - add A2 step to A2 in outer loop)
W -------- -------- ------x- -------- (UPDA1 - add A1 step to A1 in outer loop)
W -------- -------- -------x -------- (UPDA1F - add A1 fraction step to A1 in outer loop)
W -------- -------- -------- x------- (diagnostic use)
W -------- -------- -------- -x------ (CLIP_A1 - clip A1 to window)
W -------- -------- -------- --x----- (DSTWRZ - enable dest Z write in inner loop)
W -------- -------- -------- ---x---- (DSTENZ - enable dest Z read in inner loop)
W -------- -------- -------- ----x--- (DSTEN - enables dest data read in inner loop)
W -------- -------- -------- -----x-- (SRCENX - enable extra src read at start of inner)
W -------- -------- -------- ------x- (SRCENZ - enables source Z read in inner loop)
W -------- -------- -------- -------x (SRCEN - enables source data read in inner loop)
F02238 R xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_CMD - status register
R xxxxxxxx xxxxxxxx -------- -------- (inner count)
R -------- -------- xxxxxxxx xxxxxx-- (diagnostics)
R -------- -------- -------- ------x- (STOPPED - when stopped in collision detect)
R -------- -------- -------- -------x (IDLE - when idle)
F0223C W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_COUNT - counters register
W xxxxxxxx xxxxxxxx -------- -------- (outer loop count)
W -------- -------- xxxxxxxx xxxxxxxx (inner loop count)
F02240-F02247 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_SRCD - source data register
F02248-F0224F W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_DSTD - destination data register
F02250-F02257 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_DSTZ - destination Z register
F02258-F0225F W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_SRCZ1 - source Z register 1
F02260-F02267 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_SRCZ2 - source Z register 2
F02268-F0226F W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_PATD - pattern data register
F02270 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_IINC - intensity increment
F02274 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_ZINC - Z increment
F02278 W -------- -------- -------- -----xxx B_STOP - collision control
W -------- -------- -------- -----x-- (STOPEN - enable blitter collision stops)
W -------- -------- -------- ------x- (ABORT - abort after stop)
W -------- -------- -------- -------x (RESUME - resume after stop)
F0227C W -------- xxxxxxxx xxxxxxxx xxxxxxxx B_I3 - intensity 3
F02280 W -------- xxxxxxxx xxxxxxxx xxxxxxxx B_I2 - intensity 2
F02284 W -------- xxxxxxxx xxxxxxxx xxxxxxxx B_I1 - intensity 1
F02288 W -------- xxxxxxxx xxxxxxxx xxxxxxxx B_I0 - intensity 0
F0228C W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_Z3 - Z3
F02290 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_Z2 - Z2
F02294 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_Z1 - Z1
F02298 W xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx B_Z0 - Z0
****************************************************************************/
/* mask for flags that are always handled dynamically or ignored */
#define DYNAMIC_COMMAND_MASK 0x00000704
#define DYNAMIC_FLAGS_MASK 0xffe0fe04
#define STATIC_COMMAND_MASK (~DYNAMIC_COMMAND_MASK)
#define STATIC_FLAGS_MASK (~DYNAMIC_FLAGS_MASK)
/* blitter registers */
enum
{
A1_BASE, A1_FLAGS, A1_CLIP, A1_PIXEL,
A1_STEP, A1_FSTEP, A1_FPIXEL, A1_INC,
A1_FINC, A2_BASE, A2_FLAGS, A2_MASK,
A2_PIXEL, A2_STEP, B_CMD, B_COUNT,
B_SRCD_H, B_SRCD_L, B_DSTD_H, B_DSTD_L,
B_DSTZ_H, B_DSTZ_L, B_SRCZ1_H, B_SRCZ1_L,
B_SRCZ2_H, B_SRCZ2_L, B_PATD_H, B_PATD_L,
B_IINC, B_ZINC, B_STOP, B_I3,
B_I2, B_I1, B_I0, B_Z3,
B_Z2, B_Z1, B_Z0,
BLITTER_REGS
};
|