summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/jagblit.h
blob: cfbd35dceacdf228abbfc5f574852784be843f2b (plain) (blame)
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
140
141
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
/***************************************************************************

    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 comparator)
                      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
};