citro3d/source/drawArrays.c

27 lines
842 B
C
Raw Normal View History

2014-12-20 21:34:19 +01:00
#include "context.h"
void C3D_DrawArrays(GPU_Primitive_t primitive, int first, int size)
2014-12-20 21:34:19 +01:00
{
C3Di_UpdateContext();
// Set primitive type
2015-03-05 17:56:33 +01:00
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 2, primitive);
GPUCMD_AddMaskedWrite(GPUREG_025F, 2, 0x00000001);
2014-12-20 21:34:19 +01:00
// The index buffer is not used, but 0x000F0227 is still required
2015-03-05 17:56:33 +01:00
GPUCMD_AddWrite(GPUREG_INDEXBUFFER_CONFIG, 0x80000000);
2014-12-20 21:34:19 +01:00
// Number of vertices
GPUCMD_AddWrite(GPUREG_NUMVERTICES, size);
// First vertex
GPUCMD_AddWrite(GPUREG_DRAW_VERTEX_OFFSET, first);
2014-12-20 21:34:19 +01:00
// Unknown commands
2015-03-05 17:56:33 +01:00
GPUCMD_AddMaskedWrite(GPUREG_0253, 1, 0x00000001);
2014-12-20 21:34:19 +01:00
2015-03-05 17:56:33 +01:00
GPUCMD_AddMaskedWrite(GPUREG_0245, 1, 0x00000000);
GPUCMD_AddWrite(GPUREG_DRAWARRAYS, 0x00000001);
GPUCMD_AddMaskedWrite(GPUREG_0245, 1, 0x00000001);
GPUCMD_AddWrite(GPUREG_0231, 0x00000001);
2014-12-20 21:34:19 +01:00
C3Di_GetContext()->flags |= C3DiF_NeedFinishDrawing;
}