summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/rdpfetch.h
blob: 56c54fbd6411604d70b46da6b46ade3aaf54d73f (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
INLINE UINT32 FETCH_TEXEL_RGBA4_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA4_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA4_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA8_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA8_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA8_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA16_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA16_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA16_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA32_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA32_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_RGBA32_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_YUV16(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI4_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI4_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI4_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI8_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI8_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI8_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI16_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI16_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_CI16_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA4_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA4_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA4_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA8_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA8_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA8_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA16_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA16_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_IA16_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_I4_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_I4_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_I4_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_I8_TLUT_EN0(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_I8_TLUT_EN1(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_I8_TLUT_NEN(UINT32 s, UINT32 t);
INLINE UINT32 FETCH_TEXEL_INVALID(UINT32 s, UINT32 t);

static UINT32 (*rdp_fetch_texel_func[128])(UINT32, UINT32) =
{
	// 4-bit accessors
	FETCH_TEXEL_RGBA4_TLUT_NEN, FETCH_TEXEL_RGBA4_TLUT_NEN, FETCH_TEXEL_RGBA4_TLUT_EN0, FETCH_TEXEL_RGBA4_TLUT_EN1,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_CI4_TLUT_NEN,	FETCH_TEXEL_CI4_TLUT_NEN,	FETCH_TEXEL_CI4_TLUT_EN0,	FETCH_TEXEL_CI4_TLUT_EN1,
	FETCH_TEXEL_IA4_TLUT_NEN,	FETCH_TEXEL_IA4_TLUT_NEN,	FETCH_TEXEL_IA4_TLUT_EN0,	FETCH_TEXEL_IA4_TLUT_EN1,
	FETCH_TEXEL_I4_TLUT_NEN,	FETCH_TEXEL_I4_TLUT_NEN,	FETCH_TEXEL_I4_TLUT_EN0,	FETCH_TEXEL_I4_TLUT_EN1,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,

	// 8-bit accessors
	FETCH_TEXEL_RGBA8_TLUT_NEN, FETCH_TEXEL_RGBA8_TLUT_NEN, FETCH_TEXEL_RGBA8_TLUT_EN0, FETCH_TEXEL_RGBA8_TLUT_EN1,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_CI8_TLUT_NEN,	FETCH_TEXEL_CI8_TLUT_NEN,	FETCH_TEXEL_CI8_TLUT_EN0,	FETCH_TEXEL_CI8_TLUT_EN1,
	FETCH_TEXEL_IA8_TLUT_NEN,	FETCH_TEXEL_IA8_TLUT_NEN,	FETCH_TEXEL_IA8_TLUT_EN0,	FETCH_TEXEL_IA8_TLUT_EN1,
	FETCH_TEXEL_I8_TLUT_NEN,	FETCH_TEXEL_I8_TLUT_NEN,	FETCH_TEXEL_I8_TLUT_EN0,	FETCH_TEXEL_I8_TLUT_EN1,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,

	// 16-bit accessors
	FETCH_TEXEL_RGBA16_TLUT_NEN,FETCH_TEXEL_RGBA16_TLUT_NEN,FETCH_TEXEL_RGBA16_TLUT_EN0,FETCH_TEXEL_RGBA16_TLUT_EN1,
	FETCH_TEXEL_YUV16,			FETCH_TEXEL_YUV16,			FETCH_TEXEL_YUV16,			FETCH_TEXEL_YUV16,
	FETCH_TEXEL_CI16_TLUT_NEN,	FETCH_TEXEL_CI16_TLUT_NEN,	FETCH_TEXEL_CI16_TLUT_EN0,	FETCH_TEXEL_CI16_TLUT_EN1,
	FETCH_TEXEL_IA16_TLUT_NEN,	FETCH_TEXEL_IA16_TLUT_NEN,	FETCH_TEXEL_IA16_TLUT_EN0,	FETCH_TEXEL_IA16_TLUT_EN1,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,

	// 32-bit accessors
	FETCH_TEXEL_RGBA32_TLUT_NEN,FETCH_TEXEL_RGBA32_TLUT_NEN,FETCH_TEXEL_RGBA32_TLUT_EN0,FETCH_TEXEL_RGBA32_TLUT_EN1,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
	FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,		FETCH_TEXEL_INVALID,
};