public void OP_PRIM()
{
var PrimitiveType = (GuPrimitiveType)Extract(16, 3);
var VertexCount = (ushort)Extract(0, 16);
#if PRIM_BATCH
var NextInstruction = *(GpuInstruction*)GpuDisplayList.Memory.PspAddressToPointerUnsafe(PC + 4);
if (PrimCount == 0)
{
GpuDisplayList.GpuProcessor.GpuImpl.BeforeDraw(GpuDisplayList.GpuStateStructPointer);
GpuDisplayList.GpuProcessor.GpuImpl.PrimStart(GlobalGpuState, GpuDisplayList.GpuStateStructPointer, PrimitiveType);
}
if (VertexCount > 0)
{
GpuDisplayList.GpuProcessor.GpuImpl.Prim(VertexCount);
}
if (NextInstruction.OpCode == GpuOpCodes.PRIM && ((GuPrimitiveType)BitUtils.Extract(NextInstruction.Params, 16, 3) == PrimitiveType))
{
//Console.WriteLine();
PrimCount++;
}
else
{
//Console.WriteLine("{0:X8}", PC);
PrimCount = 0;
GpuDisplayList.GpuProcessor.GpuImpl.PrimEnd();
}
#else
GpuDisplayList.GpuProcessor.GpuImpl.BeforeDraw(GpuDisplayList.GpuStateStructPointer);
GpuDisplayList.GpuProcessor.GpuImpl.PrimStart(GlobalGpuState, GpuDisplayList.GpuStateStructPointer);
GpuDisplayList.GpuProcessor.GpuImpl.Prim(GlobalGpuState, GpuDisplayList.GpuStateStructPointer, PrimitiveType, VertexCount);
GpuDisplayList.GpuProcessor.GpuImpl.PrimEnd(GlobalGpuState, GpuDisplayList.GpuStateStructPointer);
#endif
}
}