# Graphics Utility Library

## Functions

void | sceGuDepthBuffer (void *zbp, int zbw)
| Set depth buffer parameters.
void | sceGuDispBuffer (int width, int height, void *dispbp, int dispbw)
| Set display buffer parameters.
void | sceGuDrawBuffer (int psm, void *fbp, int fbw)
| Set draw buffer parameters (and store in context for buffer-swap).
void | sceGuDrawBufferList (int psm, void *fbp, int fbw)
| Set draw buffer directly, not storing parameters in the context.
int | sceGuDisplay (int state)
| Turn display on or off.
void | sceGuDepthFunc (int function)
| Select which depth-test function to use.
void | sceGuDepthMask (int mask)
| Mask depth buffer writes.
void | sceGuDepthOffset (unsigned int offset)
void | sceGuDepthRange (int near, int far)
void | sceGuFog (float near, float far, unsigned int color)
void | sceGuInit (void)
| Initalize the GU system.
void | sceGuTerm (void)
| Shutdown the GU system.
void | sceGuBreak (int a0)
void | sceGuContinue (void)
void * | sceGuSetCallback (int index, void(*callback)(int))
void | sceGuSignal (int a0, int a1)
void | sceGuSendCommandf (int cmd, float argument)
| Send raw float-command to the GE.
void | sceGuSendCommandi (int cmd, int argument)
| Send raw command to the GE.
void * | sceGuGetMemory (int size)
| Allocate memory on the current display list for temporary storage.
void | sceGuStart (int cid, void *list)
| Start filling a new display-context.
int | sceGuFinish (void)
| Finish current display list and go back to the parent context.
void | sceGuCallList (const void *list)
| Call previously generated display-list.
void | sceGuCallMode (int mode)
int | sceGuCheckList (void)
| Check how large the current display-list is.
void | sceGuSendList (int mode, const void *list, PspGeContext *context)
| Send a list to the GE directly.
void * | sceGuSwapBuffers (void)
| Swap display and draw buffer.
int | sceGuSync (int mode, int a1)
| Wait until display list has finished executing.
void | sceGuDrawArray (int prim, int vtype, int count, const void *indices, const void *vertices)
| Draw array of vertices forming primitives.
void | sceGuBeginObject (int type, int a1, const void *indices, const void *vertices)
void | sceGuEndObject (void)
void | sceGuSetStatus (int state, int status)
| Enable or disable GE state.
int | sceGuGetStatus (int state)
| Get if state is currently enabled or disabled.
void | sceGuSetAllStatus (int status)
| Set the status on all 22 available states.
int | sceGuGetAllStatus (void)
| Query status on all 22 available states.
void | sceGuEnable (int state)
| Enable GE state.
void | sceGuDisable (int state)
| Disable GE state.
void | sceGuLight (int light, int type, int components, const ScePspFVector3 *position)
| Set light parameters.
void | sceGuLightAtt (int light, float atten0, float atten1, float atten2)
| Set light attenuation.
void | sceGuLightColor (int light, int component, unsigned int color)
| Set light color.
void | sceGuLightMode (int mode)
void | sceGuLightSpot (int index, const ScePspFVector3 *direction, float f12, float f13)
void | sceGuClear (int flags)
| Clear current drawbuffer.
void | sceGuClearColor (unsigned int color)
| Set the current clear-color.
void | sceGuClearDepth (unsigned int depth)
| Set the current clear-depth.
void | sceGuClearStencil (unsigned int stencil)
| Set the current stencil clear value.
void | sceGuPixelMask (unsigned int mask)
| Set mask for which bits of the pixels to write.
void | sceGuColor (unsigned int color)
| Set current primitive color.
void | sceGuColorFunc (int func, unsigned int color, unsigned int mask)
| Set the color test function.
void | sceGuColorMaterial (int components)
| Set which color components that the material will receive.
void | sceGuAlphaFunc (int func, int value, int mask)
| Set the alpha test parameters.
void | sceGuAmbient (unsigned int color)
void | sceGuAmbientColor (unsigned int color)
void | sceGuBlendFunc (int op, int src, int dest, unsigned int srcfix, unsigned int destfix)
| Set the blending-mode.
void | sceGuMaterial (int mode, int color)
void | sceGuModelColor (unsigned int a0, unsigned int a1, unsigned int a2, unsigned int a3)
void | sceGuStencilFunc (int func, int ref, int mask)
| Set stencil function and reference value for stencil testing.
void | sceGuStencilOp (int fail, int zfail, int zpass)
| Set the stencil test actions.
void | sceGuSpecular (float power)
| Set the specular power for the material.
void | sceGuFrontFace (int order)
| Set the current face-order (for culling).
void | sceGuLogicalOp (int op)
| Set color logical operation.
void | sceGuSetDither (const ScePspIMatrix4 *matrix)
| Set ordered pixel dither matrix.
void | sceGuShadeModel (int mode)
| Set how primitives are shaded.
void | sceGuCopyImage (int psm, int sx, int sy, int width, int height, int srcw, void *src, int dx, int dy, int destw, void *dest)
| Image transfer using the GE.
void | sceGuTexEnvColor (unsigned int color)
| Specify the texture environment color.
void | sceGuTexFilter (int min, int mag)
| Set how the texture is filtered.
void | sceGuTexFlush (void)
| Flush texture page-cache.
void | sceGuTexFunc (int tfx, int tcc)
| Set how textures are applied.
void | sceGuTexImage (int mipmap, int width, int height, int tbw, const void *tbp)
| Set current texturemap.
void | sceGuTexLevelMode (unsigned int a0, float f12)
void | sceGuTexMapMode (int mode, unsigned int a1, unsigned int a2)
| Set the texture-mapping mode.
void | sceGuTexMode (int tpsm, int maxmips, int a2, int swizzle)
| Set texture-mode parameters.
void | sceGuTexOffset (float u, float v)
void | sceGuTexProjMapMode (int mode)
| Set texture projection-map mode.
void | sceGuTexScale (float u, float v)
void | sceGuTexSlope (float slope)
void | sceGuTexSync ()
void | sceGuTexWrap (int u, int v)
| Set if the texture should repeat or clamp.
void | sceGuClutLoad (int num_blocks, const void *cbp)
| Upload CLUT (Color Lookup Table).
void | sceGuClutMode (unsigned int cpsm, unsigned int a1, unsigned int a2, unsigned int a3)
| Set current CLUT mode.
void | sceGuOffset (unsigned int x, unsigned int y)
| Set virtual coordinate offset.
void | sceGuScissor (int x, int y, int w, int h)
| Set what to scissor within the current viewport.
void | sceGuViewport (int cx, int cy, int width, int height)
| Set current viewport.
void | sceGuDrawBezier (int vertex_type, int a1, int a2, const void *indices, const void *vertices)
void | sceGuPatchDivide (unsigned int a0, unsigned int a1)
void | sceGuPatchFrontFace (unsigned int a0)
void | sceGuPatchPrim (unsigned int a0)
void | sceGuSetMatrix (int type, const ScePspFMatrix4 *matrix)
| Set transform matrices.
void | sceGuBoneMatrix (unsigned int index, const ScePspFMatrix4 *matrix)
| Specify skinning matrix entry.
void | sceGuMorphWeight (int index, float weight)
| Specify morph weight entry.
void | sceGuSpriteMode (unsigned int a0, unsigned int a1, unsigned int a2, unsigned int a3)

## Function Documentation

void sceGuAlphaFunc | ( | int | func,
|  | int | value,
|  | int | mask
| ) |

Set the alpha test parameters.

Available comparison functions are:

- GU_NEVER
- GU_ALWAYS
- GU_EQUAL
- GU_NOTEQUAL
- GU_LESS
- GU_LEQUAL
- GU_GREATER
- GU_GEQUAL

Parameters:

  | func | - Specifies the alpha comparison function.
  | value | - Specifies the reference value that incoming alpha values are compared to.
  | mask | - Specifies the mask that both values are ANDed with before comparison.

void sceGuAmbient | ( | unsigned int | color | ) |

void sceGuAmbientColor | ( | unsigned int | color | ) |

void sceGuBeginObject | ( | int | type,
|  | int | a1,
|  | const void * | indices,
|  | const void * | vertices
| ) |

void sceGuBlendFunc | ( | int | op,
|  | int | src,
|  | int | dest,
|  | unsigned int | srcfix,
|  | unsigned int | destfix
| ) |

Set the blending-mode.

Keys for the blending operations:

- Cs - Source color
- Cd - Destination color
- Bs - Blend function for source fragment
- Bd - Blend function for destination fragment

Available blending-operations are:

- GU_ADD - (Cs*Bs) + (Cd*Bd)
- GU_SUBTRACT - (Cs*Bs) - (Cd*Bd)
- GU_REVERSE_SUBTRACT - (Cd*Bd) - (Cs*Bs)
- GU_MIN - Cs < Cd ? Cs : Cd
- GU_MAX - Cs < Cd ? Cd : Cs
- GU_ABS - |Cs-Cd|

Available blending-functions are:

- GU_SRC_COLOR
- GU_ONE_MINUS_SRC_COLOR
- GU_SRC_ALPHA
- GU_ONE_MINUS_SRC_ALPHA
- GU_DST_ALPHA
- GU_ONE_MINUS_DST_ALPHA
- GU_DST_COLOR
- GU_ONE_MINUS_DST_COLOR
- GU_FIX

Parameters:

  | op | - Blending Operation
  | src | - Blending function for source operand
  | dest | - Blending function for dest operand
  | srcfix | - Fix value for GU_FIX (source operand)
  | destfix | - Fix value for GU_FIX (dest operand)

void sceGuBoneMatrix | ( | unsigned int | index,
|  | const ScePspFMatrix4 * | matrix
| ) |

Specify skinning matrix entry.

To enable vertex skinning, pass GU_WEIGHTS(n), where n is between 1-8, and pass available GU_WEIGHT_??? declaration. This will change the amount of weights passed in the vertex araay, and by setting the skinning, matrices, you will multiply each vertex every weight and vertex passed.

Please see sceGuDrawArray() for vertex format information.

Parameters:

  | index | - Skinning matrix index (0-7)
  | matrix | - Matrix to set

void sceGuBreak | ( | int | a0 | ) |

void sceGuCallList | ( | const void * | list | ) |

Call previously generated display-list.

Parameters:

  | list | - Display list to call

void sceGuCallMode | ( | int | mode | ) |

int sceGuCheckList | ( | void |  | ) |

Check how large the current display-list is.

Returns:
  The size of the current display list

void sceGuClear | ( | int | flags | ) |

Clear current drawbuffer.

Available clear-flags are (OR them together to get final clear-mode):

- GU_COLOR_BUFFER_BIT - Clears the color-buffer
- GU_DEPTH_BUFFER_BIT - Clears the depth-buffer

Parameters:

  | flags | - Which part of the buffer to clear

void sceGuClearColor | ( | unsigned int | color | ) |

Set the current clear-color.

Parameters:

  | color | - Color to clear with

void sceGuClearDepth | ( | unsigned int | depth | ) |

Set the current clear-depth.

Parameters:

  | depth | - Set which depth to clear with (0x0000-0xffff)

void sceGuClearStencil | ( | unsigned int | stencil | ) |

Set the current stencil clear value.

Parameters:

  | stencil | - Set which stencil value to clear with (0-255)

void sceGuClutLoad | ( | int | num_blocks,
|  | const void * | cbp
| ) |

Upload CLUT (Color Lookup Table).

NOTE: Data must be aligned to 1 quad word (16 bytes)

Parameters:

  | num_blocks | - How many blocks of 8 entries to upload (32*8 is 256 colors)
  | cbp | - Pointer to palette (16 byte aligned)

void sceGuClutMode | ( | unsigned int | cpsm,
|  | unsigned int | a1,
|  | unsigned int | a2,
|  | unsigned int | a3
| ) |

Set current CLUT mode.

Available pixel formats for palettes are:

- GU_PSM_5650
- GU_PSM_5551
- GU_PSM_4444
- GU_PSM_8888

Parameters:

  | cpsm | - Which pixel format to use for the palette
  | a1 | - Unknown, set to 0
  | a2 | - Unknown, set to 0
  | a3 | - Unknown, set to 0

void sceGuColor | ( | unsigned int | color | ) |

Set current primitive color.

Parameters:

  | color | - Which color to use (overriden by vertex-colors)

void sceGuColorFunc | ( | int | func,
|  | unsigned int | color,
|  | unsigned int | mask
| ) |

Set the color test function.

The color test is only performed while GU_COLOR_TEST is enabled.

Available functions are:

- GU_NEVER
- GU_ALWAYS
- GU_EQUAL
- GU_NOTEQUAL

Example: Reject any pixel that does not have 0 as the blue channel

       sceGuColorFunc(GU_EQUAL,0,0xff0000);

Parameters:

  | func | - Color test function
  | color | - Color to test against
  | mask | - Mask ANDed against both source and destination when testing

void sceGuColorMaterial | ( | int | components | ) |

Set which color components that the material will receive.

The components are ORed together from the following values:

- GU_AMBIENT
- GU_DIFFUSE
- GU_SPECULAR

Parameters:

  | components | - Which components to receive

void sceGuContinue | ( | void |  | ) |

void sceGuCopyImage | ( | int | psm,
|  | int | sx,
|  | int | sy,
|  | int | width,
|  | int | height,
|  | int | srcw,
|  | void * | src,
|  | int | dx,
|  | int | dy,
|  | int | destw,
|  | void * | dest
| ) |

Image transfer using the GE.

NOTE: Data must be aligned to 1 quad word (16 bytes)

Example: Copy a fullscreen 32-bit image from RAM to VRAM

       sceGuCopyImage(GU_PSM_8888,0,0,480,272,512,pixels,0,0,512,(void*)(((unsigned int)framebuffer)+0x4000000));

Parameters:

  | psm | - Pixel format for buffer
  | sx | - Source X
  | sy | - Source Y
  | width | - Image width
  | height | - Image height
  | srcw | - Source buffer width (block aligned)
  | src | - Source pointer
  | dx | - Destination X
  | dy | - Destination Y
  | destw | - Destination buffer width (block aligned)
  | dest | - Destination pointer

void sceGuDepthBuffer | ( | void * | zbp,
|  | int | zbw
| ) |

Set depth buffer parameters.

Parameters:

  | zbp | - VRAM pointer where the depthbuffer should start
  | zbw | - The width of the depth-buffer (block-aligned)

void sceGuDepthFunc | ( | int | function | ) |

Select which depth-test function to use.

Valid choices for the depth-test are:

- GU_NEVER - No pixels pass the depth-test
- GU_ALWAYS - All pixels pass the depth-test
- GU_EQUAL - Pixels that match the depth-test pass
- GU_NOTEQUAL - Pixels that doesn't match the depth-test pass
- GU_LESS - Pixels that are less in depth passes
- GU_LEQUAL - Pixels that are less or equal in depth passes
- GU_GREATER - Pixels that are greater in depth passes
- GU_GEQUAL - Pixels that are greater or equal passes

Parameters:

  | function | - Depth test function to use

void sceGuDepthMask | ( | int | mask | ) |

Mask depth buffer writes.

Parameters:

  | mask | - GU_TRUE(1) to disable Z writes, GU_FALSE(0) to enable

void sceGuDepthOffset | ( | unsigned int | offset | ) |

void sceGuDepthRange | ( | int | near,
|  | int | far
| ) |

void sceGuDisable | ( | int | state | ) |

Disable GE state.

Look at sceGuEnable() for a list of states

Parameters:

  | state | - Which state to disable

void sceGuDispBuffer | ( | int | width,
|  | int | height,
|  | void * | dispbp,
|  | int | dispbw
| ) |

Set display buffer parameters.

Example: Setup a standard 16-bit display buffer

       sceGuDispBuffer(480,272,(void*)512*272*2,512); // 480*272, skipping the draw buffer located at address 0

Parameters:

  | width | - Width of the display buffer in pixels
  | height | - Width of the display buffer in pixels
  | dispbp | - VRAM pointer to where the display-buffer starts
  | dispbw | - Display buffer width (block aligned)

int sceGuDisplay | ( | int | state | ) |

Turn display on or off.

Available states are:

- GU_TRUE (1) - Turns display on
- GU_FALSE (0) - Turns display off

Parameters:

  | state | - Turn display on or off

Returns:
  State of the display prior to this call

void sceGuDrawArray | ( | int | prim,
|  | int | vtype,
|  | int | count,
|  | const void * | indices,
|  | const void * | vertices
| ) |

Draw array of vertices forming primitives.

Available primitive-types are:

- GU_POINTS - Single pixel points (1 vertex per primitive)
- GU_LINES - Single pixel lines (2 vertices per primitive)
- GU_LINE_STRIP - Single pixel line-strip (2 vertices for the first primitive, 1 for every following)
- GU_TRIANGLES - Filled triangles (3 vertices per primitive)
- GU_TRIANGLE_STRIP - Filled triangles-strip (3 vertices for the first primitive, 1 for every following)
- GU_TRIANGLE_FAN - Filled triangle-fan (3 vertices for the first primitive, 1 for every following)
- GU_SPRITES - Filled blocks (2 vertices per primitive)

The vertex-type decides how the vertices align and what kind of information they contain. The following flags are ORed together to compose the final vertex format:

- GU_TEXTURE_8BIT - 8-bit texture coordinates
- GU_TEXTURE_16BIT - 16-bit texture coordinates
- GU_TEXTURE_32BITF - 32-bit texture coordinates (float)

- GU_COLOR_5650 - 16-bit color (R5G6B5A0)
- GU_COLOR_5551 - 16-bit color (R5G5B5A1)
- GU_COLOR_4444 - 16-bit color (R4G4B4A4)
- GU_COLOR_8888 - 32-bit color (R8G8B8A8)

- GU_NORMAL_8BIT - 8-bit normals
- GU_NORMAL_16BIT - 16-bit normals
- GU_NORMAL_32BITF - 32-bit normals (float)

- GU_VERTEX_8BIT - 8-bit vertex position
- GU_VERTEX_16BIT - 16-bit vertex position
- GU_VERTEX_32BITF - 32-bit vertex position (float)

- GU_WEIGHT_8BIT - 8-bit weights
- GU_WEIGHT_16BIT - 16-bit weights
- GU_WEIGHT_32BITF - 32-bit weights (float)

- GU_INDEX_8BIT - 8-bit vertex index
- GU_INDEX_16BIT - 16-bit vertex index

- GU_WEIGHTS(n) - Number of weights (1-8)
- GU_VERTICES(n) - Number of vertices (1-8)

- GU_TRANSFORM_2D - Coordinate is passed directly to the rasterizer
- GU_TRANSFORM_3D - Coordinate is transformed before passed to rasterizer

NOTE: Every vertex must align to 32 bits, which means that you HAVE to pad if it does not add up!

Vertex order: [for vertices(1-8)] [texture uv] [weights (0-8)] [color] [normal] [vertex] [/for]

Example: Render 400 triangles, with floating-point texture coordinates, and floating-point position, no indices

       sceGuDrawArray(GU_TRIANGLES,GU_TEXTURE_32BITF|GU_VERTEX_32BITF,400*3,0,vertices);

Parameters:

  | prim | - What kind of primitives to render
  | vtype | - Vertex type to process
  | count | - How many vertices to process
  | indices | - Optional pointer to an index-list
  | vertices | - Optional pointer to an vertex-list

void sceGuDrawBezier | ( | int | vertex_type,
|  | int | a1,
|  | int | a2,
|  | const void * | indices,
|  | const void * | vertices
| ) |

void sceGuDrawBuffer | ( | int | psm,
|  | void * | fbp,
|  | int | fbw
| ) |

Set draw buffer parameters (and store in context for buffer-swap).

Available pixel formats are:

- GU_PSM_5650
- GU_PSM_5551
- GU_PSM_4444
- GU_PSM_8888

Example: Setup a standard 16-bit draw buffer

       sceGuDispBuffer(GU_PSM_5551,(void*)0,512);

Parameters:

  | psm | - Pixel format to use for rendering (and display)
  | fbp | - VRAM pointer to where the draw buffer starts
  | fbw | - Frame buffer width (block aligned)

void sceGuDrawBufferList | ( | int | psm,
|  | void * | fbp,
|  | int | fbw
| ) |

Set draw buffer directly, not storing parameters in the context.

Parameters:

  | psm | - Pixel format to use for rendering
  | fbp | - VRAM pointer to where the draw buffer starts
  | fbw | - Frame buffer width (block aligned)

void sceGuEnable | ( | int | state | ) |

Enable GE state.

The currently available states are:

- GU_ALPHA_TEST
- GU_DEPTH_TEST
- GU_SCISSOR_TEST
- GU_BLEND
- GU_CULL_FACE
- GU_DITHER
- GU_CLIP_PLANES
- GU_TEXTURE_2D
- GU_LIGHTING
- GU_LIGHT0
- GU_LIGHT1
- GU_LIGHT2
- GU_LIGHT3
- GU_COLOR_LOGIC_OP

Parameters:

  | state | - Which state to enable

void sceGuEndObject | ( | void |  | ) |

int sceGuFinish | ( | void |  | ) |

Finish current display list and go back to the parent context.

If the context is GU_DIRECT, the stall-address is updated so that the entire list will execute. Otherwise, only the terminating action is written to the list, depending on context-type.

This also restores control back to whatever context that was active prior to this call.

Returns:
  Size of finished display list

void sceGuFog | ( | float | near,
|  | float | far,
|  | unsigned int | color
| ) |

void sceGuFrontFace | ( | int | order | ) |

Set the current face-order (for culling).

This only has effect when culling is enabled (GU_CULL_FACE)

Culling order can be:

- GU_CW - Clockwise primitives are not culled
- GU_CCW - Counter-clockwise are not culled

Parameters:

  | order | - Which order to use

int sceGuGetAllStatus | ( | void |  | ) |

Query status on all 22 available states.

Look at sceGuEnable() for a list of states

Returns:
  Status of all 22 states as a bitmask (0-21)

void* sceGuGetMemory | ( | int | size | ) |

Allocate memory on the current display list for temporary storage.

Parameters:

  | size | - How much memory allocate

Returns:
  Memory-block ready for use

int sceGuGetStatus | ( | int | state | ) |

Get if state is currently enabled or disabled.

Look at sceGuEnable() for a list of states

Parameters:

  | state | - Which state to query about

Returns:
  Wether state is enabled or not

void sceGuInit | ( | void |  | ) |

| Initalize the GU system. This function MUST be called as the first function, otherwise state is undetermined.

void sceGuLight | ( | int | light,
|  | int | type,
|  | int | components,
|  | const ScePspFVector3 * | position
| ) |

Set light parameters.

Available light types are:

- GU_DIRECTIONAL - Directional light
- GU_POINTLIGHT - Single point of light
- GU_SPOTLIGHT - Point-light with a cone

Available light components are:

- GU_AMBIENT_AND_DIFFUSE
- GU_DIFFUSE_AND_SPECULAR
- GU_UNKNOWN_LIGHT_COMPONENT

Parameters:

  | light | - Light index
  | type | - Light type
  | components | - Light components
  | position | - Light position

void sceGuLightAtt | ( | int | light,
|  | float | atten0,
|  | float | atten1,
|  | float | atten2
| ) |

Set light attenuation.

Parameters:

  | light | - Light index
  | atten0 | - Constant attenuation factor
  | atten1 | - Linear attenuation factor
  | atten2 | - Quadratic attenuation factor

void sceGuLightColor | ( | int | light,
|  | int | component,
|  | unsigned int | color
| ) |

Set light color.

Available light components are:

- GU_AMBIENT
- GU_DIFFUSE
- GU_SPECULAR
- GU_AMBIENT_AND_DIFFUSE
- GU_DIFFUSE_AND_SPECULAR

Parameters:

  | light | - Light index
  | component | - Which component to set
  | color | - Which color to use

void sceGuLightMode | ( | int | mode | ) |

void sceGuLightSpot | ( | int | index,
|  | const ScePspFVector3 * | direction,
|  | float | f12,
|  | float | f13
| ) |

void sceGuLogicalOp | ( | int | op | ) |

Set color logical operation.

Available operations are:

- GU_CLEAR
- GU_AND
- GU_AND_REVERSE
- GU_COPY
- GU_AND_INVERTED
- GU_NOOP
- GU_XOR
- GU_OR
- GU_NOR
- GU_EQUIV
- GU_INVERTED
- GU_OR_REVERSE
- GU_COPY_INVERTED
- GU_OR_INVERTED
- GU_NAND
- GU_SET

This operation only has effect if GU_COLOR_LOGIC_OP is enabled.

Parameters:

  | op | - Operation to execute

void sceGuMaterial | ( | int | mode,
|  | int | color
| ) |

void sceGuModelColor | ( | unsigned int | a0,
|  | unsigned int | a1,
|  | unsigned int | a2,
|  | unsigned int | a3
| ) |

void sceGuMorphWeight | ( | int | index,
|  | float | weight
| ) |

Specify morph weight entry.

To enable vertex morphing, pass GU_VERTICES(n), where n is between 1-8. This will change the amount of vertices passed in the vertex array, and by setting the morph weights for every vertex entry in the array, you can blend between them.

Please see sceGuDrawArray() for vertex format information.

Parameters:

  | index | - Morph weight index (0-7)
  | weight | - Weight to set

void sceGuOffset | ( | unsigned int | x,
|  | unsigned int | y
| ) |

Set virtual coordinate offset.

The PSP has a virtual coordinate-space of 4096x4096, this controls where rendering is performed

Example: Center the virtual coordinate range

       sceGuOffset(2048-(480/2),2048-(480/2));

Parameters:

  | x | - Offset (0-4095)
  | y | - Offset (0-4095)

void sceGuPatchDivide | ( | unsigned int | a0,
|  | unsigned int | a1
| ) |

void sceGuPatchFrontFace | ( | unsigned int | a0 | ) |

void sceGuPatchPrim | ( | unsigned int | a0 | ) |

void sceGuPixelMask | ( | unsigned int | mask | ) |

Set mask for which bits of the pixels to write.

Parameters:

  | mask | - Which bits to filter against writes

void sceGuScissor | ( | int | x,
|  | int | y,
|  | int | w,
|  | int | h
| ) |

Set what to scissor within the current viewport.

Note that scissoring is only performed if the custom scissoring is enabled (GU_SCISSOR_TEST)

Parameters:

  | x | - Left of scissor region
  | y | - Top of scissor region
  | w | - Width of scissor region
  | h | - Height of scissor region

void sceGuSendCommandf | ( | int | cmd,
|  | float | argument
| ) |

Send raw float-command to the GE.

The argument is converted into a 24-bit float before transfer.

Parameters:

  | cmd | - Which command to send
  | argument | - Argument to pass along

void sceGuSendCommandi | ( | int | cmd,
|  | int | argument
| ) |

Send raw command to the GE.

Only the 24 lower bits of the argument is passed along.

Parameters:

  | cmd | - Which command to send
  | argument | - Argument to pass along

void sceGuSendList | ( | int | mode,
|  | const void * | list,
|  | PspGeContext * | context
| ) |

Send a list to the GE directly.

Available modes are:

- GU_TAIL - Place list last in the queue, so it executes in-order
- GU_HEAD - Place list first in queue so that it executes as soon as possible

Parameters:

  | mode | - Wether to place the list first or last in queue
  | list | - List to send
  | context | - Temporary storage for the GE context

void sceGuSetAllStatus | ( | int | status | ) |

Set the status on all 22 available states.

Look at sceGuEnable() for a list of states

Parameters:

  | status | - Bit-mask (0-21) containing the status of all 22 states

void* sceGuSetCallback | ( | int | index,
|  | void(*)(int) | callback
| ) |

void sceGuSetDither | ( | const ScePspIMatrix4 * | matrix | ) |

Set ordered pixel dither matrix.

This dither matrix is only applied if GU_DITHER is enabled.

Parameters:

  | matrix | - Dither matrix

void sceGuSetMatrix | ( | int | type,
|  | const ScePspFMatrix4 * | matrix
| ) |

Set transform matrices.

Available matrices are:

- GU_PROJECTION - View->Projection matrix
- GU_VIEW - World->View matrix
- GU_MODEL - Model->World matrix
- GU_TEXTURE - Texture matrix

Parameters:

  | type | - Which matrix-type to set
  | matrix | - Matrix to load

void sceGuSetStatus | ( | int | state,
|  | int | status
| ) |

Enable or disable GE state.

Look at sceGuEnable() for a list of states

Parameters:

  | state | - Which state to change
  | status | - Wether to enable or disable the state

void sceGuShadeModel | ( | int | mode | ) |

Set how primitives are shaded.

The available shading-methods are:

- GU_FLAT - Primitives are flatshaded, the last vertex-color takes effet
- GU_SMOOTH - Primtives are gouraud-shaded, all vertex-colors take effect

Parameters:

  | mode | - Which mode to use

void sceGuSignal | ( | int | a0,
|  | int | a1
| ) |

void sceGuSpecular | ( | float | power | ) |

Set the specular power for the material.

Parameters:

  | power | - Specular power

void sceGuSpriteMode | ( | unsigned int | a0,
|  | unsigned int | a1,
|  | unsigned int | a2,
|  | unsigned int | a3
| ) |

void sceGuStart | ( | int | cid,
|  | void * | list
| ) |

Start filling a new display-context.

Contexts available are:

- GU_DIRECT - Rendering is performed as list is filled
- GU_CALL - List is setup to be called from the main list
- GU_SEND - List is buffered for a later call to sceGuSendList()

The previous context-type is stored so that it can be restored at sceGuFinish().

Parameters:

  | cid | - Context Type
  | list | - Pointer to display-list (16 byte aligned)

void sceGuStencilFunc | ( | int | func,
|  | int | ref,
|  | int | mask
| ) |

Set stencil function and reference value for stencil testing.

Available functions are:

- GU_NEVER
- GU_ALWAYS
- GU_EQUAL
- GU_NOTEQUAL
- GU_LESS
- GU_LEQUAL
- GU_GREATER
- GU_GEQUAL

Parameters:

  | func | - Test function
  | ref | - The reference value for the stencil test
  | mask | - Mask that is ANDed with both the reference value and stored stencil value when the test is done

void sceGuStencilOp | ( | int | fail,
|  | int | zfail,
|  | int | zpass
| ) |

Set the stencil test actions.

Available actions are:

- GU_KEEP - Keeps the current value
- GU_ZERO - Sets the stencil buffer value to zero
- GU_REPLACE - Sets the stencil buffer value to ref, as specified by sceGuStencilFunc()
- GU_INCR - Increments the current stencil buffer value
- GU_DECR - Decrease the current stencil buffer value
- GU_INVERT - Bitwise invert the current stencil buffer value

Parameters:

  | fail | - The action to take when the stencil test fails
  | zfail | - The action to take when stencil test passes, but the depth test fails
  | zpass | - The action to take when both stencil test and depth test passes

void* sceGuSwapBuffers | ( | void |  | ) |

Swap display and draw buffer.

Returns:
  Pointer to the new drawbuffer

int sceGuSync | ( | int | mode,
|  | int | a1
| ) |

Wait until display list has finished executing.

Example: Wait for the currently executing display list

       sceGuSync(0,0);

Parameters:

  | mode | - Unknown meaning, pass 0 for now
  | a1 | - Unknown meaning, pass 0 for now

Returns:
  Unknown at this time

void sceGuTerm | ( | void |  | ) |

| Shutdown the GU system. Called when GU is no longer needed

void sceGuTexEnvColor | ( | unsigned int | color | ) |

Specify the texture environment color.

This is used in the texture function when a constant color is needed.

See sceGuTexFunc() for more information.

Parameters:

  | color | - Constant color (0x00BBGGRR)

void sceGuTexFilter | ( | int | min,
|  | int | mag
| ) |

Set how the texture is filtered.

Available filters are:

- GU_NEAREST
- GU_LINEAR
- GU_NEAREST_MIPMAP_NEAREST
- GU_LINEAR_MIPMAP_NEAREST
- GU_NEAREST_MIPMAP_LINEAR
- GU_LINEAR_MIPMAP_LINEAR

Parameters:

  | min | - Minimizing filter
  | mag | - Magnifying filter

void sceGuTexFlush | ( | void |  | ) |

| Flush texture page-cache. Do this if you have copied/rendered into an area currently in the texture-cache

void sceGuTexFunc | ( | int | tfx,
|  | int | tcc
| ) |

Set how textures are applied.

Key for the apply-modes:

- Cv - Color value result
- Ct - Texture color
- Cf - Fragment color
- Cc - Constant color (specified by sceGuTexEnvColor())

Available apply-modes are: (TFX)

- GU_TFX_MODULATE - Cv=Ct*Cf TCC_RGB: Av=Af TCC_RGBA: Av=At*Af
- GU_TFX_DECAL - TCC_RGB: Cv=Ct,Av=Af TCC_RGBA: Cv=Cf*(1-At)+Ct*At Av=Af
- GU_TFX_BLEND - Cv=(Cf*(1-Ct))+(Cc*Ct) TCC_RGB: Av=Af TCC_RGBA: Av=At*Af
- GU_TFX_REPLACE - Cv=Ct TCC_RGB: Av=Af TCC_RGBA: Av=At
- GU_TFX_ADD - Cv=Cf+Ct TCC_RGB: Av=Af TCC_RGBA: Av=At*Af

The fields TCC_RGB and TCC_RGBA specify components that differ between the two different component modes.

- GU_TFX_MODULATE - The texture is multiplied with the current diffuse fragment
- GU_TFX_REPLACE - The texture replaces the fragment
- GU_TFX_ADD - The texture is added on-top of the diffuse fragment

Available component-modes are: (TCC)

- GU_TCC_RGB - The texture alpha does not have any effect
- GU_TCC_RGBA - The texture alpha is taken into account

Parameters:

  | tfx | - Which apply-mode to use
  | tcc | - Which component-mode to use

void sceGuTexImage | ( | int | mipmap,
|  | int | width,
|  | int | height,
|  | int | tbw,
|  | const void * | tbp
| ) |

Set current texturemap.

Textures may reside in main RAM, but it has a huge speed-penalty. Swizzle textures to get maximum speed.

NOTE: Data must be aligned to 1 quad word (16 bytes)

Parameters:

  | mipmap | - Mipmap level
  | width | - Width of texture (must be a power of 2)
  | height | - Height of texture (must be a power of 2)
  | tbw | - Texture Buffer Width (block-aligned)
  | tbp | - Texture buffer pointer (16 byte aligned)

void sceGuTexLevelMode | ( | unsigned int | a0,
|  | float | f12
| ) |

void sceGuTexMapMode | ( | int | mode,
|  | unsigned int | a1,
|  | unsigned int | a2
| ) |

Set the texture-mapping mode.

Available modes are:

- GU_TEXTURE_COORDS
- GU_TEXTURE_MATRIX
- GU_ENVIRONMENT_MAP

Parameters:

  | mode | - Which mode to use
  | a1 | - Unknown
  | a2 | - Unknown

void sceGuTexMode | ( | int | tpsm,
|  | int | maxmips,
|  | int | a2,
|  | int | swizzle
| ) |

Set texture-mode parameters.

Available texture-formats are:

- GU_PSM_5650 - Hicolor, 16-bit
- GU_PSM_5551 - Hicolor, 16-bit
- GU_PSM_4444 - Hicolor, 16-bit
- GU_PSM_8888 - Truecolor, 32-bit
- GU_PSM_T4 - Indexed, 4-bit (2 pixels per byte)
- GU_PSM_T8 - Indexed, 8-bit

Parameters:

  | tpsm | - Which texture format to use
  | maxmips | - Number of mipmaps to use (0-8)
  | a2 | - Unknown, set to 0
  | swizzle | - GU_TRUE(1) to swizzle texture-reads

void sceGuTexOffset | ( | float | u,
|  | float | v
| ) |

void sceGuTexProjMapMode | ( | int | mode | ) |

Set texture projection-map mode.

Available modes are:

- GU_POSITION
- GU_UV
- GU_NORMALIZED_NORMAL
- GU_NORMAL

Parameters:

  | mode | - Which mode to use

void sceGuTexScale | ( | float | u,
|  | float | v
| ) |

void sceGuTexSlope | ( | float | slope | ) |

void sceGuTexSync | ( |  | ) |

void sceGuTexWrap | ( | int | u,
|  | int | v
| ) |

Set if the texture should repeat or clamp.

Available modes are:

- GU_REPEAT - The texture repeats after crossing the border
- GU_CLAMP - Texture clamps at the border

Parameters:

  | u | - Wrap-mode for the U direction
  | v | - Wrap-mode for the V direction

void sceGuViewport | ( | int | cx,
|  | int | cy,
|  | int | width,
|  | int | height
| ) |

Set current viewport.

Example: Setup a viewport of size (480,272) with origo at (2048,2048)

       sceGuViewport(2048,2048,480,272);

Parameters:

  | cx | - Center for horizontal viewport
  | cy | - Center for vertical viewport
  | width | - Width of viewport
  | height | - Height of viewport