gDPSetConvert [Macro]

Function

gDPSetConvert

Sets the matrix coefficients for converting from YUV pixels to RGB

Syntax

#include <ultra64.h>        /* gbi.h */
gDPSetConvert(Gfx *gdl, s32 k0, s32 k1, s32 k2, s32 k3, s32 k4, s32 k5)
gsDPSetConvert(         s32 k0, s32 k1, s32 k2, s32 k3, s32 k4, s32 k5)

Arguments

gdl
Display list pointer.
k0
K0 term of the YUV-RGB conversion matrix (9-bit precision, -256~255).
k1
K1 term of the YUV-RGB conversion matrix (9-bit precision, -256~255).
k2
K2 term of the YUV-RGB conversion matrix (9-bit precision, -256~255).
k3
K3 term of the YUV-RGB conversion matrix (9-bit precision, -256~255).
k4
K4 term of the YUV-RGB conversion matrix (9-bit precision, -256~255).
k5
K5 term of the YUV-RGB conversion matrix (9-bit precision, -256~255).

Description

Sets the matrix coefficients used to convert YUV pixels into RGB. Conceptually, the equations are as shown below:
R = C0 * (Y-16) + C1 * V
G = C0 * (Y-16) + C2 * U - C3 * V
B = C0 * (Y-16) + C4 * U

Color conversion in the RDP is performed via the texture filter (TF) and the color combiner (CC).
The following calculations are executed in the TF:
R' = Y + K0 * V
G' = Y + K1 * U + K2 * V
B' = Y + K3 * U

The following calculations are executed in the CC:
R = (R' - K4) * K5 + R'
G = (G' - K4) * K5 + G'
B = (B' - K4) * K5 + B'

The relationships between Cn and Kn are shown below:
K0 = C1/C0
K1 = C2/C0
K2 = C3/C0
K3 = C4/C0
K4 = 16 + 16/(C0 - 1.0)
K5 = C0 - 1.0

The values normally used for the conversion from YUV to RGB are shown below:
K0 = 175
K1 = -43
K2 = -89
K3 = 222
K4 = 114
K5 = 42

Note

The CC and TF must be appropriately set when executing a color conversion. To learn more about these settings, see gDPSetCombineMode and gDPSetTextureConvert.

For further details, see Sections 12.5.2 "Color Space Conversion" and 12.6 "CC: Color Combiner" in the N64 Programming Manual.