These macros pack the geometry command parameters. Parameters with word counts of 1 are defined.
Macros | Corresponding API |
GX_PACK_OP(op1, op2, op3, op4) | Packs command code in u32 type |
GX_PACK_SWAPBUFFERS_PARAM(am, zw) | G3*_SwapBuffers |
GX_PACK_MTXMODE_PARAM(mode) | G3*_MtxMode |
GX_PACK_POPMTX_PARAM(num) | G3*_PopMtx |
GX_PACK_STOREMTX_PARAM(num) | G3*_StoreMtx |
GX_PACK_RESTOREMTX_PARAM(num) | G3*_RestoreMtx |
GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z) | G3*_LightVector |
GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor) | G3*_MaterialColorDiffAmb |
GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess) | G3*_MaterialColorSpecEmi |
GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc) | G3*_PolygonAttr |
GX_PACK_BEGIN_PARAM(primitive) | G3*_Begin |
GX_PACK_COLOR_PARAM(rgb) | G3*_Color |
GX_PACK_NORMAL_PARAM(x, y, z) | G3*_Normal |
GX_PACK_VTX10_PARAM(x, y, z) | G3*_Vtx10 |
GX_PACK_VTXXY_PARAM(x, y) | G3*_VtxXY |
GX_PACK_VTXXZ_PARAM(x, z) | G3*_VtxXZ |
GX_PACK_VTXYZ_PARAM(y, z) | G3*_VtxYZ |
GX_PACK_VTXDIFF_PARAM(x, y, z) | G3*_VtxDiff |
GX_PACK_TEXCOORD_PARAM(s, t) | G3*_TexCoord |
GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr) | G3*_TexImageParam |
GX_PACK_TEXPLTTBASE_PARAM(addr, texFmt) | G3*_TexPlttBase |
GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2) | G3*_ViewPort |
GX_PACK_VECTORTEST_PARAM(x, y, z) | G3*_VectorTest |
#define GX_PACK_OP(op1, op2, op3, op4) \
((u32)((op1) | ((op2) << 8) | ((op3) << 16) | ((op4) << 24)))
#define GX_PACK_SWAPBUFFERS_PARAM(am, zw) \
((u32) (((am) << REG_G3_SWAP_BUFFERS_XS_SHIFT) | \
((zw) << REG_G3_SWAP_BUFFERS_DP_SHIFT)))
#define GX_PACK_MTXMODE_PARAM(mode) ((u32) (mode << REG_G3_MTX_MODE_M_SHIFT))
#define GX_PACK_POPMTX_PARAM(num) ((u32) (num))
#define GX_PACK_STOREMTX_PARAM(num) ((u32) (num))
#define GX_PACK_RESTOREMTX_PARAM(num) ((u32) (num))
#define GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z) \
((u32)GX_VECFX10((x), (y), (z)) | \
((u32)(lightID) << REG_G3_LIGHT_VECTOR_LNUM_SHIFT))
#define GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb) \
((u32)((rgb) | \
((u32)(lightID) << REG_G3_LIGHT_COLOR_LNUM_SHIFT)))
#define GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor) \
((u32)((diffuse) | \
((ambient) << REG_G3_DIF_AMB_AMBIENT_RED_SHIFT) | \
((IsSetVtxColor != FALSE) << REG_G3_DIF_AMB_C_SHIFT)))
#define GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess) \
((u32)((specular) | \
((emission) << REG_G3_SPE_EMI_EMISSION_RED_SHIFT) | \
((IsShininess != FALSE) << REG_G3_SPE_EMI_S_SHIFT)))
#define GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc) \
((u32)(((light) << REG_G3_POLYGON_ATTR_LE_SHIFT) | \
((polyMode) << REG_G3_POLYGON_ATTR_PM_SHIFT) | \
((cullMode) << REG_G3_POLYGON_ATTR_BK_SHIFT) | \
(misc) | \
((polygonID) << REG_G3_POLYGON_ATTR_ID_SHIFT) | \
((alpha) << REG_G3_POLYGON_ATTR_ALPHA_SHIFT)))
#define GX_PACK_BEGIN_PARAM(primitive) \
((u32)((primitive) << REG_G3_BEGIN_VTXS_TYPE_SHIFT))
#define GX_PACK_COLOR_PARAM(rgb) ((u32)(rgb))
#define GX_PACK_NORMAL_PARAM(x, y, z) ((u32)GX_VECFX10((x), (y), (z)))
#define GX_PACK_VTX10_PARAM(x, y, z) ((u32)GX_VECVTX10((x), (y), (z)))
#define GX_PACK_VTXXY_PARAM(x, y) (GX_FX16PAIR((x), (y)))
#define GX_PACK_VTXXZ_PARAM(x, z) (GX_FX16PAIR((x), (z)))
#define GX_PACK_VTXYZ_PARAM(y, z) (GX_FX16PAIR((y), (z)))
#define GX_PACK_VTXDIFF_PARAM(x, y, z) (GX_VECVTXDIFF((x), (y), (z)))
#define GX_PACK_TEXCOORD_PARAM(s, t) (GX_ST((s), (t)))
#define GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr) \
((u32)(((addr) >> 3) | \
((texFmt) << REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT) | \
((texGen) << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT) | \
((s) << REG_G3_TEXIMAGE_PARAM_V_SIZE_SHIFT) | \
((t) << REG_G3_TEXIMAGE_PARAM_T_SIZE_SHIFT) | \
((repeat) << REG_G3_TEXIMAGE_PARAM_RS_SHIFT) | \
((flip) << REG_G3_TEXIMAGE_PARAM_FS_SHIFT) | \
((pltt0) << REG_G3_TEXIMAGE_PARAM_TR_SHIFT)))
#define GX_PACK_TEXPLTTBASE_PARAM(addr, texFmt) \
((u32)((addr) >> (4 - ((texFmt) == GX_TEXFMT_PLTT4))))
#define GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2) \
((u32)(x1 | (y1 << 8) | (x2 << 16) | (y2 << 24)))
#define GX_PACK_VECTORTEST_PARAM(x, y, z) ((u32)GX_VECFX10((x), (y), (z)))
02/23/2004 Initial version.