void GPU_SetTextureBorderColor(GPU_TEXUNIT unit,u32 borderColor);
void GPU_SetTexEnv(u8 id, u16 rgbSources, u16 alphaSources, u16 rgbOperands, u16 alphaOperands, GPU_COMBINEFUNC rgbCombine, GPU_COMBINEFUNC alphaCombine, u32 constantColor);
-void GPU_DrawArray(GPU_Primitive_t primitive, u32 n);
+void GPU_DrawArray(GPU_Primitive_t primitive, u32 n, u32 first);
void GPU_DrawElements(GPU_Primitive_t primitive, u32* indexArray, u32 n);
void GPU_FinishDrawing();
#define GPUREG_INDEXBUFFER_CONFIG 0x0227\r
#define GPUREG_NUMVERTICES 0x0228\r
#define GPUREG_GEOSTAGE_CONFIG 0x0229\r
-#define GPUREG_022A 0x022A\r
+#define GPUREG_DRAW_VERTEX_OFFSET 0x022A\r
#define GPUREG_022B 0x022B\r
#define GPUREG_022C 0x022C\r
#define GPUREG_022D 0x022D\r
GPUCMD_AddIncrementalWrites(GPUREG_0000|GPU_TEVID[id], param, 0x00000005);
}
-void GPU_DrawArray(GPU_Primitive_t primitive, u32 n)
+void GPU_DrawArray(GPU_Primitive_t primitive, u32 n, u32 first)
{
//set primitive type
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 0x2, primitive);
GPUCMD_AddWrite(GPUREG_INDEXBUFFER_CONFIG, 0x80000000);
//pass number of vertices
GPUCMD_AddWrite(GPUREG_NUMVERTICES, n);
+ //set first vertex
+ GPUCMD_AddWrite(GPUREG_DRAW_VERTEX_OFFSET, first);
//all the following except 0x000F022E might be useless
GPUCMD_AddMaskedWrite(GPUREG_0253, 0x1, 0x00000001);
GPUCMD_AddWrite(GPUREG_INDEXBUFFER_CONFIG, 0x80000000|((u32)indexArray));
//pass number of vertices
GPUCMD_AddWrite(GPUREG_NUMVERTICES, n);
-
+
+ GPUCMD_AddWrite(GPUREG_DRAW_VERTEX_OFFSET, 0x00000000);
+
GPUCMD_AddMaskedWrite(GPUREG_GEOSTAGE_CONFIG, 0x2, 0x00000100);
GPUCMD_AddMaskedWrite(GPUREG_0253, 0x2, 0x00000100);