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 &alpha; 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) &lt;&lt; 16)))
50
51#define GX_RGB(r, g, b)           ((GXRgb)(((r) &lt;&lt; GX_RGB_R_SHIFT) | \
52                                                 ((g) &lt;&lt; GX_RGB_G_SHIFT) | \
53                                                 ((b) &lt;&lt; GX_RGB_B_SHIFT)))
54
55#define GX_RGBA(r, g, b, a)       ((GXRgba)(((r) &lt;&lt; GX_RGBA_R_SHIFT) | \
56                                                  ((g) &lt;&lt; GX_RGBA_G_SHIFT) | \
57                                                  ((b) &lt;&lt; GX_RGBA_B_SHIFT) | \
58                                                  ((a) &lt;&lt; GX_RGBA_A_SHIFT)))
59
60#define GX_VECFX10(x, y, z) \
61    ((VecFx10)(((((x) &gt;&gt; (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) &amp; GX_FX10_MASK) &lt;&lt; GX_VEC_FX10_X_SHIFT) | \
62               ((((y) &gt;&gt; (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) &amp; GX_FX10_MASK) &lt;&lt; GX_VEC_FX10_Y_SHIFT) | \
63               ((((z) &gt;&gt; (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) &amp; GX_FX10_MASK) &lt;&lt; GX_VEC_FX10_Z_SHIFT)))
64
65#define GX_VECVTX10(x, y, z) \
66    ((VecVtx10) (((((x) &gt;&gt; (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) &amp; GX_VTX10_MASK) &lt;&lt; GX_VEC_VTX10_X_SHIFT) | \
67                 ((((y) &gt;&gt; (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) &amp; GX_VTX10_MASK) &lt;&lt; GX_VEC_VTX10_Y_SHIFT) | \
68                 ((((z) &gt;&gt; (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) &amp; GX_VTX10_MASK) &lt;&lt; GX_VEC_VTX10_Z_SHIFT)))
69
70#define GX_FX16ST(x)                   ((s16)((x) &gt;&gt; 8))
71// s: fx32/fx16, t: fx32/fx16
72#define GX_ST(s, t)                    ((GXSt)((u16)GX_FX16ST(s) | ((u16)GX_FX16ST(t) &lt;&lt; 16)))
73
74#define GX_COMP4x4_PLTT_IDX(image) \
75    ((u32)(0x20000 + (((image) &amp; 0x1ffff) &gt;&gt; 1) + (((image) &amp; 0x40000) &gt;&gt; 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