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) << 8) | ((op3) << 16) | ((op4) << 24))) 123#define GX_PACK_SWAPBUFFERS_PARAM(am, zw) \ 124 ((u32) (((am) << REG_G3_SWAP_BUFFERS_XS_SHIFT) | \ 125 ((zw) << REG_G3_SWAP_BUFFERS_DP_SHIFT))) 126#define GX_PACK_MTXMODE_PARAM(mode) ((u32) ((mode) << 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) << REG_G3_LIGHT_VECTOR_LNUM_SHIFT)) 133#define GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb) \ 134 ((u32)((rgb) | \ 135 ((u32)(lightID) << REG_G3_LIGHT_COLOR_LNUM_SHIFT))) 136#define GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor) \ 137 ((u32)((diffuse) | \ 138 ((ambient) << REG_G3_DIF_AMB_AMBIENT_RED_SHIFT) | \ 139 (((IsSetVtxColor) != FALSE) << REG_G3_DIF_AMB_C_SHIFT))) 140#define GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess) \ 141 ((u32)((specular) | \ 142 ((emission) << REG_G3_SPE_EMI_EMISSION_RED_SHIFT) | \ 143 (((IsShininess) != FALSE) << REG_G3_SPE_EMI_S_SHIFT))) 144#define GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc) \ 145 ((u32)(((light) << REG_G3_POLYGON_ATTR_LE_SHIFT) | \ 146 ((polyMode) << REG_G3_POLYGON_ATTR_PM_SHIFT) | \ 147 ((cullMode) << REG_G3_POLYGON_ATTR_BK_SHIFT) | \ 148 (misc) | \ 149 ((polygonID) << REG_G3_POLYGON_ATTR_ID_SHIFT) | \ 150 ((alpha) << REG_G3_POLYGON_ATTR_ALPHA_SHIFT))) 151#define GX_PACK_BEGIN_PARAM(primitive) \ 152 ((u32)((primitive) << 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) >> 3) | \ 163 ((texFmt) << REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT) | \ 164 ((texGen) << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT) | \ 165 ((s) << REG_G3_TEXIMAGE_PARAM_V_SIZE_SHIFT) | \ 166 ((t) << REG_G3_TEXIMAGE_PARAM_T_SIZE_SHIFT) | \ 167 ((repeat) << REG_G3_TEXIMAGE_PARAM_RS_SHIFT) | \ 168 ((flip) << REG_G3_TEXIMAGE_PARAM_FS_SHIFT) | \ 169 ((pltt0) << REG_G3_TEXIMAGE_PARAM_TR_SHIFT))) 170#define GX_PACK_TEXPLTTBASE_PARAM(addr, texFmt) \ 171 ((u32)((addr) >> (4 - ((texFmt) == GX_TEXFMT_PLTT4)))) 172#define GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2) \ 173 ((u32)((x1) | ((y1) << 8) | ((x2) << 16) | ((y2) << 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