nxdk_pgraph_tests
A collection of tests for the Xbox nv2a graphics processor
Loading...
Searching...
No Matches
nxdk_ext.h
1
#ifndef NXDK_EXT_H__
2
#define NXDK_EXT_H__
3
4
// TODO: upstream missing nv2a defines
5
// See
6
// https://github.com/xqemu/xqemu/blob/f9b9a9bad88b3b2df53a1b01db6a37783aa2eb27/hw/xbox/nv2a/nv2a_shaders.c#L296-L312
7
#define NV2A_VERTEX_ATTR_POSITION 0
8
#define NV2A_VERTEX_ATTR_WEIGHT 1
9
#define NV2A_VERTEX_ATTR_NORMAL 2
10
#define NV2A_VERTEX_ATTR_DIFFUSE 3
11
#define NV2A_VERTEX_ATTR_SPECULAR 4
12
#define NV2A_VERTEX_ATTR_FOG_COORD 5
13
#define NV2A_VERTEX_ATTR_POINT_SIZE 6
14
#define NV2A_VERTEX_ATTR_BACK_DIFFUSE 7
15
#define NV2A_VERTEX_ATTR_BACK_SPECULAR 8
16
#define NV2A_VERTEX_ATTR_TEXTURE0 9
17
#define NV2A_VERTEX_ATTR_TEXTURE1 10
18
#define NV2A_VERTEX_ATTR_TEXTURE2 11
19
#define NV2A_VERTEX_ATTR_TEXTURE3 12
20
// These do not have a default semantic but are usable from custom vertex shaders.
21
#define NV2A_VERTEX_ATTR_13 13
22
#define NV2A_VERTEX_ATTR_14 14
23
#define NV2A_VERTEX_ATTR_15 15
24
25
#define NV097_SET_WEIGHT2F 0x16A0
26
#define NV097_SET_WEIGHT3F 0x16B0
27
28
#define NV097_SET_ZMIN_MAX_CONTROL_CULL_NEAR_FAR_EN_FALSE 0
29
#define NV097_SET_ZMIN_MAX_CONTROL_CULL_NEAR_FAR_EN_TRUE NV097_SET_ZMIN_MAX_CONTROL_CULL_NEAR_FAR
30
#define NV097_SET_ZMIN_MAX_CONTROL_ZCLAMP_EN_CULL 0
31
#define NV097_SET_ZMIN_MAX_CONTROL_ZCLAMP_EN_CLAMP NV097_SET_ZMIN_MAX_CONTROL_ZCLAMP_CLAMP
32
#define NV097_SET_ZMIN_MAX_CONTROL_CULL_IGNORE_W_FALSE 0
33
#define NV097_SET_ZMIN_MAX_CONTROL_CULL_IGNORE_W_TRUE NV097_SET_ZMIN_MAX_CONTROL_CULL_IGNORE_W
34
35
// Naming from xemu's nv2a_regs.h, to be used with nxdk's NV_IMAGE_BLIT definitions.
36
#define NV09F_SET_OPERATION_BLEND_AND 0x02
37
#define NV09F_SET_OPERATION_SRCCOPY 0x03
38
#define NV09F_SET_OPERATION_SRCCOPY_PREMULT 0x04
39
#define NV09F_SET_OPERATION_BLEND_AND_PREMULT 0x05
40
41
#define NV_IMAGE_BLIT_SET_BETA 0x0194
42
#define NV_IMAGE_BLIT_SET_BETA4 0x0198
43
44
#define NV012_BETA 0x00000012
// Alpha factor
45
#define NV012_SET_BETA 0x0300
46
47
#define NV072_BETA_4 0x00000072
// RGBA factor
48
#define NV072_SET_BETA 0x0300
49
50
#define NV04_SURFACE_2D_FORMAT_Y8 0x00000001
51
#define NV04_SURFACE_2D_FORMAT_X1R5G5B5_Z1R5G5B5 0x00000002
52
#define NV04_SURFACE_2D_FORMAT_X1R5G5B5_X1R5G5B5 0x00000003
53
#define NV04_SURFACE_2D_FORMAT_R5G6B5 0x00000004
54
#define NV04_SURFACE_2D_FORMAT_Y16 0x00000005
55
#define NV04_SURFACE_2D_FORMAT_X8R8G8B8_Z8R8G8B8 0x00000006
56
#define NV04_SURFACE_2D_FORMAT_X8R8G8B8_X8R8G8B8 0x00000007
57
#define NV04_SURFACE_2D_FORMAT_X1A7R8G8B8_Z1A7R8G8B8 0x00000008
58
#define NV04_SURFACE_2D_FORMAT_X1A7R8G8B8_X1A7R8G8B8 0x00000009
59
#define NV04_SURFACE_2D_FORMAT_A8R8G8B8 0x0000000a
60
#define NV04_SURFACE_2D_FORMAT_Y32 0x0000000b
61
62
// From https://github.com/xemu-project/xemu/pull/1937#issuecomment-2692650398
63
#define NV097_SET_CONTROL0_TEXTURE_PERSPECTIVE_ENABLE (1 << 20)
64
65
// Used to set light parameters for lights beyond 0.
66
// Supported params:
67
// NV097_SET_LIGHT_AMBIENT_COLOR
68
// NV097_SET_LIGHT_DIFFUSE_COLOR
69
// NV097_SET_LIGHT_SPECULAR_COLOR
70
// NV097_SET_LIGHT_LOCAL_RANGE
71
// NV097_SET_LIGHT_INFINITE_HALF_VECTOR
72
// NV097_SET_LIGHT_INFINITE_DIRECTION
73
// NV097_SET_LIGHT_SPOT_FALLOFF
74
// NV097_SET_LIGHT_SPOT_DIRECTION
75
// NV097_SET_LIGHT_LOCAL_POSITION
76
// NV097_SET_LIGHT_LOCAL_ATTENUATION
77
#define SET_LIGHT(i, param) ((param) + (i) * 128)
78
79
// Used to set light parameters for back lights beyond 0.
80
// Supported params:
81
// NV097_SET_BACK_LIGHT_AMBIENT_COLOR
82
// NV097_SET_BACK_LIGHT_DIFFUSE_COLOR
83
// NV097_SET_BACK_LIGHT_SPECULAR_COLOR
84
#define SET_BACK_LIGHT(i, param) ((param) + (i) * 64)
85
86
// Used to enable/disable a specific light.
87
// Mode must be one of the `NV097_SET_LIGHT_ENABLE_MASK_LIGHT0_*` values.
88
#define LIGHT_MODE(i, mode) ((mode) << (2 * (i)))
89
90
#define NV097_SET_SPECULAR_PARAMS 0x9E0
91
#define NV097_SET_SPECULAR_PARAMS_BACK 0x1E28
92
#define NV097_SET_MATERIAL_ALPHA_BACK 0x17AC
93
#define NV097_SET_SCENE_AMBIENT_COLOR_BACK 0x17A0
94
#define NV097_SET_MATERIAL_EMISSION_BACK 0x17B0
95
96
#define NV042_SET_PITCH 0x304
97
#define NV042_SET_COLOR_FORMAT NV04_CONTEXT_SURFACES_2D_FORMAT
98
#define NV042_SET_COLOR_FORMAT_LE_A8R8G8B8 0x0A
99
100
#define NV05C_SET_COLOR_FORMAT_LE_X16R5G6B5 0x00000001
101
#define NV05C_SET_COLOR_FORMAT_LE_X17R5G5B5 0x00000002
102
#define NV05C_SET_COLOR_FORMAT_LE_X8R8G8B8 0x00000003
103
104
// NV_PGRAPH_TEXFILTER0_CONVOLUTION_KERNEL from xemu.
105
#define NV097_SET_TEXTURE_FILTER_CONVOLUTION_KERNEL 0x0000E000
106
107
#define NV062_SET_COLOR_FORMAT NV10_CONTEXT_SURFACES_2D_FORMAT
108
#define NV062_SET_PITCH NV10_CONTEXT_SURFACES_2D_PITCH
109
#define NV062_SET_OFFSET_SOURCE NV10_CONTEXT_SURFACES_2D_OFFSET_SRC
110
#define NV062_SET_OFFSET_DESTIN NV10_CONTEXT_SURFACES_2D_OFFSET_DST
111
112
#define NV09F_CONTROL_POINT_IN NV_IMAGE_BLIT_POINT_IN
113
#define NV09F_CONTROL_POINT_OUT NV_IMAGE_BLIT_POINT_OUT
114
#define NV09F_SIZE NV_IMAGE_BLIT_SIZE
115
116
#define NV097_SET_SMOOTHING_CONTROL 0x00001D7C
117
118
#define NV097_SET_STENCIL_FUNC_V_NEVER 0x200
119
#define NV097_SET_STENCIL_FUNC_V_LESS 0x201
120
#define NV097_SET_STENCIL_FUNC_V_EQUAL 0x202
121
#define NV097_SET_STENCIL_FUNC_V_LEQUAL 0x203
122
#define NV097_SET_STENCIL_FUNC_V_GREATER 0x204
123
#define NV097_SET_STENCIL_FUNC_V_NOTEQUAL 0x205
124
#define NV097_SET_STENCIL_FUNC_V_GEQUAL 0x206
125
#define NV097_SET_STENCIL_FUNC_V_ALWAYS 0x207
126
127
// NV_PVIDEO_INTR is already defined in outer.h
128
#define NV_PVIDEO_INTR_BUFFER_0 (1 << 0)
129
#define NV_PVIDEO_INTR_BUFFER_1 (1 << 4)
130
#define NV_PVIDEO_INTR_EN 0x00008140
131
#define NV_PVIDEO_INTR_EN_BUFFER_0 (1 << 0)
132
#define NV_PVIDEO_INTR_EN_BUFFER_1 (1 << 4)
133
#define NV_PVIDEO_BUFFER 0x00008700
134
#define NV_PVIDEO_BUFFER_0_USE (1 << 0)
135
#define NV_PVIDEO_BUFFER_1_USE (1 << 4)
136
#define NV_PVIDEO_STOP 0x00008704
137
#define NV_PVIDEO_BASE 0x00008900
138
#define NV_PVIDEO_LIMIT 0x00008908
139
#define NV_PVIDEO_LUMINANCE 0x00008910
140
#define NV_PVIDEO_CHROMINANCE 0x00008918
141
#define NV_PVIDEO_OFFSET 0x00008920
142
#define NV_PVIDEO_SIZE_IN 0x00008928
143
#define NV_PVIDEO_SIZE_IN_WIDTH 0x000007FF
144
#define NV_PVIDEO_SIZE_IN_HEIGHT 0x07FF0000
145
#define NV_PVIDEO_POINT_IN 0x00008930
146
#define NV_PVIDEO_POINT_IN_S 0x00007FFF
147
#define NV_PVIDEO_POINT_IN_T 0xFFFE0000
148
#define NV_PVIDEO_DS_DX 0x00008938
149
#define NV_PVIDEO_DT_DY 0x00008940
150
#define NV_PVIDEO_POINT_OUT 0x00008948
151
#define NV_PVIDEO_POINT_OUT_X 0x00000FFF
152
#define NV_PVIDEO_POINT_OUT_Y 0x0FFF0000
153
#define NV_PVIDEO_SIZE_OUT 0x00008950
154
#define NV_PVIDEO_SIZE_OUT_WIDTH 0x00000FFF
155
#define NV_PVIDEO_SIZE_OUT_HEIGHT 0x0FFF0000
156
#define NV_PVIDEO_FORMAT 0x00008958
157
#define NV_PVIDEO_FORMAT_PITCH 0x00001FFF
158
#define NV_PVIDEO_FORMAT_COLOR 0x00030000
159
#define NV_PVIDEO_FORMAT_COLOR_LE_CR8YB8CB8YA8 1
160
#define NV_PVIDEO_FORMAT_DISPLAY (1 << 20)
161
#define NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY 1
162
#define NV_PVIDEO_COLOR_KEY 0x00008B00
163
#define NV_PVIDEO_COLOR_KEY_RED 0x00FF0000
164
#define NV_PVIDEO_COLOR_KEY_GREEN 0x0000FF00
165
#define NV_PVIDEO_COLOR_KEY_BLUE 0x000000FF
166
#define NV_PVIDEO_COLOR_KEY_ALPHA 0xFF000000
167
168
#define NV097_SET_SWATH_WIDTH 0x000009f8
169
#define NV097_SET_SWATH_WIDTH_V_00 0x00
170
#define NV097_SET_SWATH_WIDTH_V_01 0x01
171
#define NV097_SET_SWATH_WIDTH_V_02 0x02
172
#define NV097_SET_SWATH_WIDTH_V_03 0x03
173
#define NV097_SET_SWATH_WIDTH_V_04 0x04
174
#define NV097_SET_SWATH_WIDTH_V_OFF 0x0F
175
176
#endif
// NXDK_EXT_H__
src
nxdk_ext.h
Generated by
1.9.8