1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html> 3 4<head> 5<META http-equiv="Content-Type" content="text/html; charset=windows-1252"> 6<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 7.0.0.0 for Windows"> 7<META http-equiv="Content-Style-Type" content="text/css"> 8<title>Macros</title> 9<LINK rel="stylesheet" href="../css/nitro.css" type="text/css"> 10</head> 11 12<body> 13 14<h1 align="left">Macros <img src="../image/NTR.gif"align="middle"><img src="../image/TWL.gif" align="middle"></h1> 15<h2>Description</h2> 16<TABLE border="0" width="100%"> 17 <TBODY> 18 <TR> 19 <TD width="249" align="left">GX_FX16PAIR(a, b)</TD> 20 <TD width="573">Packs two fixed-decimal <CODE>fx16</CODE> types in a <CODE>u32</CODE> type.</TD> 21 </TR> 22 <TR> 23 <TD width="249">GX_RGB(r, g, b)</TD> 24 <TD width="573">Packs each 5-bit rgb value into a <CODE>GXRgb</CODE> type.</TD> 25 </TR> 26 <TR> 27 <TD width="249">GX_RGBA(r, g, b, a)</TD> 28 <TD width="573">Packs each 5-bit rgb value and the 1-bit α value into a <CODE>GXRgba</CODE> type.</TD> 29 </TR> 30 <TR> 31 <TD width="249">GX_VECFX10(x, y, z)</TD> 32 <TD width="573">Packs normal vector and light vector information into a <CODE>VecFx10</CODE> type.</TD> 33 </TR> 34 <TR> 35 <TD width="249">GX_VECVTX10(x, y, z)</TD> 36 <TD width="573">Packs the 3-dimensional s3.6 vector into a <CODE>VecVtx10</CODE> type.</TD> 37 </TR> 38 <TR> 39 <TD width="249">GX_ST(s, t)</TD> 40 <TD width="573">Packs texture coordinates.</TD> 41 </TR> 42 <TR> 43 <TD>GX_COMP4x4_PLTT_IDX(image)</TD> 44 <TD>Calculates the palette address from the <CODE>COMP4x4</CODE> texture image address.</TD> 45 </TR> 46 </TBODY> 47</TABLE> 48<H2>Macro Definitions</H2> 49<PRE><CODE>#define GX_FX16PAIR(a, b) ((u32)((u32)(u16)(a) | ((u32)(u16)(b) << 16))) 50 51#define GX_RGB(r, g, b) ((GXRgb)(((r) << GX_RGB_R_SHIFT) | \ 52 ((g) << GX_RGB_G_SHIFT) | \ 53 ((b) << GX_RGB_B_SHIFT))) 54 55#define GX_RGBA(r, g, b, a) ((GXRgba)(((r) << GX_RGBA_R_SHIFT) | \ 56 ((g) << GX_RGBA_G_SHIFT) | \ 57 ((b) << GX_RGBA_B_SHIFT) | \ 58 ((a) << GX_RGBA_A_SHIFT))) 59 60#define GX_VECFX10(x, y, z) \ 61 ((VecFx10)(((((x) >> (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) & GX_FX10_MASK) << GX_VEC_FX10_X_SHIFT) | \ 62 ((((y) >> (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) & GX_FX10_MASK) << GX_VEC_FX10_Y_SHIFT) | \ 63 ((((z) >> (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) & GX_FX10_MASK) << GX_VEC_FX10_Z_SHIFT))) 64 65#define GX_VECVTX10(x, y, z) \ 66 ((VecVtx10) (((((x) >> (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) & GX_VTX10_MASK) << GX_VEC_VTX10_X_SHIFT) | \ 67 ((((y) >> (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) & GX_VTX10_MASK) << GX_VEC_VTX10_Y_SHIFT) | \ 68 ((((z) >> (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) & GX_VTX10_MASK) << GX_VEC_VTX10_Z_SHIFT))) 69 70#define GX_FX16ST(x) ((s16)((x) >> 8)) 71// s: fx32/fx16, t: fx32/fx16 72#define GX_ST(s, t) ((GXSt)((u16)GX_FX16ST(s) | ((u16)GX_FX16ST(t) << 16))) 73 74#define GX_COMP4x4_PLTT_IDX(image) \ 75 ((u32)(0x20000 + (((image) & 0x1ffff) >> 1) + (((image) & 0x40000) >> 2)))</CODE></PRE> 76<H2>Revision History</H2> 77<P>2004/02/23 Initial version.</P> 78<hr><p>CONFIDENTIAL</p></body> 79</html> 80