# G3*_TexImageParam

## C Specification

      #include <nitro/gx/g3imm.h>
      #include <nitro/gx/g3b.h>
      #include <nitro/gx/g3c.h>

      void G3_TexImageParam(
          GXTexFmt texFmt,
          GXTexGen texGen,
          GXTexSizeS s,
          GXTexSizeT t,
          GXTexRepeat repeat,
          GXTexFlip flip,
          GXTexPlttColor0 pltt0,
          u32 addr
      );

      // Below are APIs for creating the display list (command list):
      void G3B_TexImageParam(GXDLInfo* info, ...);
      void G3C_TexImageParam(GXDLInfo* info, ...);
      void G3BS_TexImageParam(GXDLInfo* info, ...);
      void G3CS_TexImageParam(GXDLInfo* info, ...);

## Arguments

info | Command List Information
texFmt | Texture format
texGen | Texture coordinate conversion mode
s | Texture size `s`
t | Texture size `t`
repeat | Repeat settings
flip | Flip settings (valid only when `repeat` is enabled.)
pltt0 | Flag for selecting whether to use color 0 in the palette or use it as a transparent color
addr | Specifies the start offset address of the texture in the texture slot.

## Return Values

None.

## Description

Specifies texture parameters. The `G3*_TexImageParam` command is normally issued before `G3*_Begin` but can be issued between `G3*_Begin` and `G3*_End`. If it is issued during this interval, a different texture parameter can be set for each polygon in `G3*_Begin` and `G3*_End`.

`GX_TEXFMT_NONE` | No texture
`GX_TEXFMT_A3I5` | Translucent texture (3-bit alpha, 5-bit palette color number)
`GX_TEXFMT_PLTT4` | 4-color palette texture
`GX_TEXFMT_PLTT16` | 16-color palette texture
`GX_TEXFMT_PLTT256` | 256-color palette texture
`GX_TEXFMT_COMP4x4` | 4x4 text compressed texture
`GX_TEXFMT_A5I3` | Translucent texture (5-bit alpha, 3-bit palette color number)
`GX_TEXFMT_DIRECT` | Direct texture

`GX_TEXGEN_NONE` | No texture coordinate conversion xyxyxy
`GX_TEXGEN_TEXCOORD` | TexCoord source
`GX_TEXGEN_NORMAL` | Normal source
`GX_TEXGEN_VERTEX` | Vertex source

`GX_TEXSIZE_S8` | 8 texels along S-axis
`GX_TEXSIZE_S16` | 16 texels along S-axis
`GX_TEXSIZE_S32` | 32 texels along S-axis
`GX_TEXSIZE_S64` | 64 texels along S-axis
`GX_TEXSIZE_S128` | 128 texels along S-axis
`GX_TEXSIZE_S256` | 256 texels along S-axis
`GX_TEXSIZE_S512` | 512 texels along S-axis
`GX_TEXSIZE_S1024` | 1024 texels along S-axis

`GX_TEXSIZE_T8` | 8 texels along T-axis
`GX_TEXSIZE_T16` | 16 texels along T-axis
`GX_TEXSIZE_T32` | 32 texels along T-axis
`GX_TEXSIZE_T64` | 64 texels along T-axis
`GX_TEXSIZE_T128` | 128 texels along T-axis
`GX_TEXSIZE_T256` | 256 texels along T-axis
`GX_TEXSIZE_T512` | 512 texels along T-axis
`GX_TEXSIZE_T1024` | 1024 texels along T-axis

`GX_TEXREPEAT_NONE` | No repeat
`GX_TEXREPEAT_S` | Repeat along S-axis
`GX_TEXREPEAT_T` | Repeat along T-axis
`GX_TEXREPEAT_ST` | Repeat along both S- and T-axes

`GX_TEXFLIP_NONE` | No flip
`GX_TEXFLIP_S` | Flip along S-axis
`GX_TEXFLIP_T` | Flip along T-axis
`GX_TEXFLIP_ST` | Flip along both S- and T-axes

`GX_TEXPLTTCOLOR0_TRNS` | Regard `Color0` as transparent
`GX_TEXPLTTCOLOR0_USE` | Enable palette color 0 set value

The following is the type definition for the list types.

    typedef enum
    {
        GX_TEXFMT_NONE = 0,
        GX_TEXFMT_A3I5 = 1,
        GX_TEXFMT_PLTT4 = 2,
        GX_TEXFMT_PLTT16 = 3,
        GX_TEXFMT_PLTT256 = 4,
        GX_TEXFMT_COMP4x4 = 5,
        GX_TEXFMT_A5I3 = 6,
        GX_TEXFMT_DIRECT = 7
    }
    GXTexFmt;

    #define GX_TEXFMT_ALPHA ((GXTexFmt)GX_TEXFMT_A5I3) // Obsolete name

    typedef enum
    {
        GX_TEXGEN_NONE = 0,
        GX_TEXGEN_TEXCOORD = 1,
        GX_TEXGEN_NORMAL = 2,
        GX_TEXGEN_VERTEX = 3
    }
    GXTexGen;

    typedef enum
    {
        GX_TEXSIZE_S8 = 0,
        GX_TEXSIZE_S16 = 1,
        GX_TEXSIZE_S32 = 2,
        GX_TEXSIZE_S64 = 3,
        GX_TEXSIZE_S128 = 4,
        GX_TEXSIZE_S256 = 5,
        GX_TEXSIZE_S512 = 6,
        GX_TEXSIZE_S1024 = 7
    }
    GXTexSizeS;

    typedef enum
    {
        GX_TEXSIZE_T8 = 0,
        GX_TEXSIZE_T16 = 1,
        GX_TEXSIZE_T32 = 2,
        GX_TEXSIZE_T64 = 3,
        GX_TEXSIZE_T128 = 4,
        GX_TEXSIZE_T256 = 5,
        GX_TEXSIZE_T512 = 6,
        GX_TEXSIZE_T1024 = 7
    }
    GXTexSizeT;

    typedef enum
    {
        GX_TEXREPEAT_NONE = 0,
        GX_TEXREPEAT_S = 1,
        GX_TEXREPEAT_T = 2,
        GX_TEXREPEAT_ST = 3
    }
    GXTexRepeat;

    typedef enum
    {
        GX_TEXFLIP_NONE = 0,
        GX_TEXFLIP_S = 1,
        GX_TEXFLIP_T = 2,
        GX_TEXFLIP_ST = 3
    }
    GXTexFlip;

    typedef enum
    {
        GX_TEXPLTTCOLOR0_USE = 0,
        GX_TEXPLTTCOLOR0_TRNS = 1
    }
    GXTexPlttColor0;

## See Also

`G3*_TexPlttBase`, `G3*_TexCoord`

## Revision History

01/19/2004 Initial version

CONFIDENTIAL