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>DLMacro</title>
9<LINK rel="stylesheet" href="../css/nitro.css" type="text/css">
10</head>
11
12<body>
13
14<h1 align="left">Macros for Writing Display Lists <img src="../image/NTR.gif"align="middle"><img src="../image/TWL.gif" align="middle"></h1>
15<h2>Description</h2>
16<P>These macros pack the geometry command parameters. Parameters with word counts of 1 are defined.<br>
17</P>
18<TABLE border="0" width="100%">
19  <TBODY>
20    <TR>
21      <TD width="568">Macros</TD>
22      <TD width="233">Corresponding API</TD>
23    </TR>
24    <TR>
25      <TD width="568">GX_PACK_OP(op1, op2, op3, op4)</TD>
26      <TD width="233">Packs command code in <CODE>u32</CODE> type</TD>
27    </TR>
28    <TR>
29      <TD width="568">GX_PACK_SWAPBUFFERS_PARAM(am, zw)</TD>
30      <TD width="233"><CODE><A href="g3/G3_SwapBuffers.html">G3*_SwapBuffers()</A></CODE></TD>
31    </TR>
32    <TR>
33      <TD width="568">GX_PACK_MTXMODE_PARAM(mode)</TD>
34      <TD width="233"><CODE><A href="g3/G3_MtxMode.html">G3*_MtxMode()</A></CODE></TD>
35    </TR>
36    <TR>
37      <TD width="568">GX_PACK_POPMTX_PARAM(num)</TD>
38      <TD width="233"><CODE><A href="g3/G3_PopMtx.html" target="_self">G3*_PopMtx()</A></CODE></TD>
39    </TR>
40    <TR>
41      <TD width="568">GX_PACK_STOREMTX_PARAM(num)</TD>
42      <TD width="233"><CODE><A href="g3/G3_StoreMtx.html" target="_self">G3*_StoreMtx()</A></CODE></TD>
43    </TR>
44    <TR>
45      <TD width="568">GX_PACK_RESTOREMTX_PARAM(num)</TD>
46      <TD width="233"><CODE><A href="g3/G3_RestoreMtx.html" target="_self">G3*_RestoreMtx()</A></CODE></TD>
47    </TR>
48    <TR>
49      <TD width="568">GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z)</TD>
50      <TD width="233"><CODE><A href="g3/G3_LightVector.html" target="_self">G3*_LightVector()</A></CODE></TD>
51    </TR>
52    <TR>
53      <TD width="568">GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor)</TD>
54      <TD width="233"><CODE><A href="g3/G3_MaterialColorDiffAmb.html" target="_self">G3*_MaterialColorDiffAmb()</A></CODE></TD>
55    </TR>
56    <TR>
57      <TD width="568">GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess)</TD>
58      <TD width="233"><CODE><A href="g3/G3_MaterialColorSpecEmi.html" target="_self">G3*_MaterialColorSpecEmi()</A></CODE></TD>
59    </TR>
60    <TR>
61      <TD width="568">GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha,
62      misc)</TD>
63      <TD width="233"><CODE><A href="g3/G3_PolygonAttr.html" target="_self">G3*_PolygonAttr()</A></CODE></TD>
64    </TR>
65    <TR>
66      <TD width="568">GX_PACK_BEGIN_PARAM(primitive)</TD>
67      <TD width="233"><CODE><A href="g3/G3_Begin.html" target="_self">G3*_Begin()</A></CODE></TD>
68    </TR>
69    <TR>
70      <TD width="568">GX_PACK_COLOR_PARAM(rgb)</TD>
71      <TD width="233"><CODE><A href="g3/G3_Color.html" target="_self">G3*_Color()</A></CODE></TD>
72    </TR>
73    <TR>
74      <TD width="568">GX_PACK_NORMAL_PARAM(x, y, z)</TD>
75      <TD width="233"><CODE><A href="g3/G3_Normal.html" target="_self">G3*_Normal()</A></CODE></TD>
76    </TR>
77    <TR>
78      <TD width="568">GX_PACK_VTX10_PARAM(x, y, z)</TD>
79      <TD width="233"><CODE><A href="g3/G3_Vtx10.html" target="_self">G3*_Vtx10()</A></CODE></TD>
80    </TR>
81    <TR>
82      <TD width="568">GX_PACK_VTXXY_PARAM(x, y)</TD>
83      <TD width="233"><CODE><A href="g3/G3_VtxXY.html" target="_self">G3*_VtxXY()</A></CODE></TD>
84    </TR>
85    <TR>
86      <TD width="568">GX_PACK_VTXXZ_PARAM(x, z)</TD>
87      <TD width="233"><CODE><A href="g3/G3_VtxXZ.html" target="_self">G3*_VtxXZ()</A></CODE></TD>
88    </TR>
89    <TR>
90      <TD width="568">GX_PACK_VTXYZ_PARAM(y, z)</TD>
91      <TD width="233"><CODE><A href="g3/G3_VtxYZ.html" target="_self">G3*_VtxYZ()</A></CODE></TD>
92    </TR>
93    <TR>
94      <TD width="568">GX_PACK_VTXDIFF_PARAM(x, y, z)</TD>
95      <TD width="233"><CODE><A href="g3/G3_VtxDiff.html" target="_self">G3*_VtxDiff()</A></CODE></TD>
96    </TR>
97    <TR>
98      <TD width="568">GX_PACK_TEXCOORD_PARAM(s, t)</TD>
99      <TD width="233"><CODE><A href="g3/G3_TexCoord.html" target="_self">G3*_TexCoord()</A></CODE></TD>
100    </TR>
101    <TR>
102      <TD width="568">GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr)</TD>
103      <TD width="233"><CODE><A href="g3/G3_TexImageParam.html" target="_self">G3*_TexImageParam()</A></CODE></TD>
104    </TR>
105    <TR>
106      <TD>GX_PACK_TEXPLTTBASE_PARAM(addr, texFmt)</TD>
107      <TD><CODE><A href="g3/G3_TexPlttBase.html" target="_self">G3*_TexPlttBase()</A></CODE></TD>
108    </TR>
109    <TR>
110      <TD>GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2)</TD>
111      <TD><CODE><A href="g3/G3_ViewPort.html" target="_self">G3*_ViewPort()</A></CODE></TD>
112    </TR>
113    <TR>
114      <TD>GX_PACK_VECTORTEST_PARAM(x, y, z)</TD>
115      <TD><CODE><A href="g3/G3_VectorTest.html" target="_self">G3*_VectorTest()</A></CODE></TD>
116    </TR>
117  </TBODY>
118</TABLE>
119<H2>Definition of macros</H2>
120<PRE><CODE>
121#define GX_PACK_OP(op1, op2, op3, op4) \
122    ((u32)((op1) | ((op2) &lt;&lt; 8) | ((op3) &lt;&lt; 16) | ((op4) &lt;&lt; 24)))
123#define GX_PACK_SWAPBUFFERS_PARAM(am, zw) \
124    ((u32) (((am) &lt;&lt; REG_G3_SWAP_BUFFERS_XS_SHIFT) | \
125            ((zw) &lt;&lt; REG_G3_SWAP_BUFFERS_DP_SHIFT)))
126#define GX_PACK_MTXMODE_PARAM(mode)    ((u32) ((mode) &lt;&lt; REG_G3_MTX_MODE_M_SHIFT))
127#define GX_PACK_POPMTX_PARAM(num)      ((u32) (num))
128#define GX_PACK_STOREMTX_PARAM(num)    ((u32) (num))
129#define GX_PACK_RESTOREMTX_PARAM(num)  ((u32) (num))
130#define GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z)        \
131    ((u32)GX_VECFX10((x), (y), (z))                      | \
132     ((u32)(lightID) &lt;&lt; REG_G3_LIGHT_VECTOR_LNUM_SHIFT))
133#define GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb)                   \
134    ((u32)((rgb)                                               | \
135           ((u32)(lightID) &lt;&lt; REG_G3_LIGHT_COLOR_LNUM_SHIFT)))
136#define GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor)   \
137    ((u32)((diffuse)                                           | \
138           ((ambient) &lt;&lt; REG_G3_DIF_AMB_AMBIENT_RED_SHIFT)     | \
139           (((IsSetVtxColor) != FALSE) &lt;&lt; REG_G3_DIF_AMB_C_SHIFT)))
140#define GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess)   \
141    ((u32)((specular)                                          | \
142           ((emission) &lt;&lt; REG_G3_SPE_EMI_EMISSION_RED_SHIFT)   | \
143           (((IsShininess) != FALSE) &lt;&lt; REG_G3_SPE_EMI_S_SHIFT)))
144#define GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc) \
145    ((u32)(((light) &lt;&lt; REG_G3_POLYGON_ATTR_LE_SHIFT)     | \
146           ((polyMode) &lt;&lt; REG_G3_POLYGON_ATTR_PM_SHIFT)  | \
147           ((cullMode) &lt;&lt; REG_G3_POLYGON_ATTR_BK_SHIFT)  | \
148           (misc)                                        | \
149           ((polygonID) &lt;&lt; REG_G3_POLYGON_ATTR_ID_SHIFT) | \
150           ((alpha) &lt;&lt; REG_G3_POLYGON_ATTR_ALPHA_SHIFT)))
151#define GX_PACK_BEGIN_PARAM(primitive)                 \
152    ((u32)((primitive) &lt;&lt; REG_G3_BEGIN_VTXS_TYPE_SHIFT))
153#define GX_PACK_COLOR_PARAM(rgb)       ((u32)(rgb))
154#define GX_PACK_NORMAL_PARAM(x, y, z)  ((u32)GX_VECFX10((x), (y), (z)))
155#define GX_PACK_VTX10_PARAM(x, y, z)   ((u32)GX_VECVTX10((x), (y), (z)))
156#define GX_PACK_VTXXY_PARAM(x, y)      (GX_FX16PAIR((x), (y)))
157#define GX_PACK_VTXXZ_PARAM(x, z)      (GX_FX16PAIR((x), (z)))
158#define GX_PACK_VTXYZ_PARAM(y, z)      (GX_FX16PAIR((y), (z)))
159#define GX_PACK_VTXDIFF_PARAM(x, y, z) (GX_VECVTXDIFF((x), (y), (z)))
160#define GX_PACK_TEXCOORD_PARAM(s, t)   (GX_ST((s), (t)))
161#define GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr) \
162    ((u32)(((addr) &gt;&gt; 3)                                    | \
163           ((texFmt) &lt;&lt; REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT) | \
164           ((texGen) &lt;&lt; REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT)   | \
165           ((s) &lt;&lt; REG_G3_TEXIMAGE_PARAM_V_SIZE_SHIFT)      | \
166           ((t) &lt;&lt; REG_G3_TEXIMAGE_PARAM_T_SIZE_SHIFT)      | \
167           ((repeat) &lt;&lt; REG_G3_TEXIMAGE_PARAM_RS_SHIFT)     | \
168           ((flip) &lt;&lt; REG_G3_TEXIMAGE_PARAM_FS_SHIFT)       | \
169           ((pltt0) &lt;&lt; REG_G3_TEXIMAGE_PARAM_TR_SHIFT)))
170#define GX_PACK_TEXPLTTBASE_PARAM(addr, texFmt) \
171    ((u32)((addr) &gt;&gt; (4 - ((texFmt) == GX_TEXFMT_PLTT4))))
172#define GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2)                \
173    ((u32)((x1) | ((y1) &lt;&lt; 8) | ((x2) &lt;&lt; 16) | ((y2) &lt;&lt; 24)))
174#define GX_PACK_VECTORTEST_PARAM(x, y, z) ((u32)GX_VECFX10((x), (y), (z)))</CODE></PRE>
175<H2>Revision History</H2>
176<P>2004/02/23 Initial version.</P>
177<hr><p>CONFIDENTIAL</p></body>
178</html>
179