CSPspEmu.Core.Gpu.Run.GpuDisplayListRunner.OP_PRIM C# (CSharp) Method

OP_PRIM() public method

Primitive Kick - draw PRIMitive
public OP_PRIM ( ) : void
return void
		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
		}
	}
GpuDisplayListRunner