PLAYSTATION PRIMITIVE LIST'S MEMBER VARIABLES FORMAT
PRIMITIVE LIST'S MEMBER VARIABLES FORMAT
U_CHAR FLAG - options for primitive
{
bit 0; - LGT. Light source calculation
0 - On. Light source calculation is carried out
1 - Off. Light source calculation is not carried out
bit 1; - FCE. Determines if primitive is one or two faced
0 - Primitive has one face
1 - Primitive has two faces
bit 2; - GRD. Determines single or gradient pigment
0 - Primitive has one solid pigment
1 - Primitive has different pigments at each vertex
bits 3-7; - ignored
}
Note: Most of these bits are set or cleared according to which type of primitive is being created. Messing around with these may cause unexpected drawing or crashes. The only bit you may want to edit manually is FCE.
U_CHAR MODE - options for primitive
{
bit 0; - TGE. Brightness calculation at time of calculation
0 - On. Calculates light
1 - Off. Draws texture as is (without lighting)
bit 1; - ABE. Activates translucency when rendered
0 - Off. Primitive is rendered solid.
1 - On. Primitive is rendered semitranslucent.
bit 2; - TME. Sets whether a texture is used or not
0 - Off. No texture is rendered.
1 - On. A texture is rendered.
bit 3; - displays whether a 3 or 4 sided polygon
0 - 3 sided polygon
1 - 4 sided polygon
bit 4; - IIP. Shading mode
0 - Flat shading
1 - Gouraud shading
bits 5-7; - Code. Defines which sort of entity to draw.
0 - Polygon (3 sided or 4 sided)
1 - Straight line
2 - Sprite
}
Possible values of ABR (semitransparency method)
Note: Most of these bits are set or cleared according to which type of primitive is being created. Messing around with these may cause unexpected drawing or crashes. The only bit you may want to edit manually is ABE.
For semitransparency to be used when the TMD is rendered, bit 30 of the GsDOBJ's attribute member must be set. To control the semitransparency method, alter the ABR bits of the primitive's TSB member (see below).
U_SHORT CBA - position of CLUT in VRAM for primitives with textures
{
bits 0-5; - upper 6 bits of 10 bits of X coordinate value
for CLUT in VRAM
bits 6-14; - 9 bits of Y coordinate value for CLUT in VRAM
bit 15; - ignored
}
For example -
u_long CLUT_X_POS = 640;
u_long CLUT_Y_POS = 480;
u_short CBA = (CLUT_X_POS >> 4) + (CLUT_Y_POS << 6);
U_SHORT TSB - information about image for primitives with textures
{
bits 0-4; - texture page number of texture
bits 5-6; - ABR. Semitransparency method (see below)
bits 7-8; - TPF. Colour mode of the texture (see below)
bits 9-15; - ignored
}
Possible values of ABR (semitransparency method)
Note: For semitransparency to be used when the TMD is rendered, bit 30 of the GsDOBJ's attribute member must be set, and the ABE bit of the primitive's mode member must be set (see above).
0 - 50% background +50% polygon
1 - 100% background +100% polygon
2 - 100% background - 100% polygon
3 - 100% background + 25% polygon
Possible values of TPF (colour mode)
0 - 4 bit texture and CLUT
1 - 8 bit texture and CLUT
2 - 15 bit texture with no CLUT
For example -
u_long IMG_X_POS = 640;
u_long IMG_Y_POS = 0;
u_long ABR = 1; // 100% back + 100% polygon
u_long TPF = 0; // 16 colour texture
u_short TXT_TPAGE;
TXT_TPAGE = GetTPage((int) TPF, (int) ABR, IMG_X_POS, IMG_Y_POS);
u_short TSB = (TXT_TPAGE) + (ABR << 5) + (TPF << 7);