public unsafe static void Update() { SFXRender.commandBuffer.Clear(); if (SFX.SFX_BeginRender()) { SFXRender.primCount = 0; SFXMeshBase.drOffsetX = 0; SFXMeshBase.drOffsetY = 0; SFXRender.meshEmpty = new List <SFXMesh>(SFXRender.meshOrigin); for (Int32 i = 0; i < SFXRender.MESH_MAX; i++) { SFXRender.meshEmpty[i].Begin(); } SFXRender.meshOpa = new List <SFXMesh>(); SFXRender.meshAdd = new List <SFXMesh>(); SFXRender.meshSub = new List <SFXMesh>(); SFXRender.meshTexOpa = new List <SFXMesh>(); SFXRender.meshTexAddPS = new List <SFXMesh>(); SFXRender.meshTexAddBL = new List <SFXMesh>(); SFXRender.meshTexSub = new List <SFXMesh>(); SFXRender.meshLineOpa = new List <SFXMesh>(); SFXRender.meshLineAdd = new List <SFXMesh>(); SFXRender.meshLineSub = new List <SFXMesh>(); SFXMesh.gPosIndex = 0; SFXMesh.gTexIndex = 0; SFXMesh.gColIndex = 0; for (;;) { Int32 num = 0; PSX_LIBGPU.P_TAG *ptr = (PSX_LIBGPU.P_TAG *)((void *)SFX.SFX_GetPrim(ref num)); if (ptr == null) { break; } SFXMesh.zDepth = (Single)(-(Single)num); SFXRender.Add(ptr); SFXRender.primCount++; } SFXRender.PushCommandBuffer(); } }
public unsafe static PSXGPU.FF9DebugPrimType ff9debugGetPrimType(PSX_LIBGPU.P_TAG *ObjPtr, Boolean CheckLength) { UInt32 len = ObjPtr->getLen(); if (ObjPtr != null) { if (CheckLength && len == 0u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_OTENTRY); } if (ObjPtr->code == 128 && len == 4u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_OTEND); } if ((ObjPtr->code & 252) == 32) { if (CheckLength && len != 4u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_POLY_F3); } else if ((ObjPtr->code & 252) == 36) { if (CheckLength && len != 7u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_POLY_FT3); } else if ((ObjPtr->code & 252) == 48) { if (CheckLength && len != 6u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_POLY_G3); } else if ((ObjPtr->code & 252) == 52) { if (CheckLength && len != 9u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_POLY_GT3); } else if ((ObjPtr->code & 252) == 40) { if (CheckLength && len != 5u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_POLY_F4); } else if ((ObjPtr->code & 252) == 44) { if (CheckLength && len != 9u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_POLY_FT4); } else if ((ObjPtr->code & 252) == 56) { if (CheckLength && len != 8u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_POLY_G4); } else if ((ObjPtr->code & 252) == 60) { if (CheckLength && len != 12u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_POLY_GT4); } else if ((ObjPtr->code & 252) == 116) { if (CheckLength && len != 3u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_SPRT_8); } else if ((ObjPtr->code & 252) == 124) { if (CheckLength && len != 3u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_SPRT_16); } else if ((ObjPtr->code & 252) == 100) { if (CheckLength && len != 4u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_SPRT); } else if ((ObjPtr->code & 252) == 104) { if (CheckLength && len != 2u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_TILE_1); } else if ((ObjPtr->code & 252) == 112) { if (CheckLength && len != 2u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_TILE_8); } else if ((ObjPtr->code & 252) == 120) { if (CheckLength && len != 2u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_TILE_16); } else if ((ObjPtr->code & 252) == 96) { if (CheckLength && len != 3u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_TILE); } else if ((ObjPtr->code & 252) == 64) { if (CheckLength && len != 3u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_LINE_F2); } else if ((ObjPtr->code & 252) == 80) { if (CheckLength && len != 4u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_LINE_G2); } else if ((ObjPtr->code & 252) == 72) { if (CheckLength && len != 5u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_LINE_F3); } else if ((ObjPtr->code & 252) == 88) { if (CheckLength && len != 7u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_LINE_G3); } else if ((ObjPtr->code & 252) == 76) { if (CheckLength && len != 6u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_LINE_F4); } else if ((ObjPtr->code & 252) == 92) { if (CheckLength && len != 9u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_LINE_G4); } else { if (ObjPtr->code == 226) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_TWIN); } if (ObjPtr->code == 228 && len == 2u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_AREA); } if (ObjPtr->code == 229) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_OFFSET); } if (ObjPtr->code == 225 && len == 2u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_MODE); } if (ObjPtr->code == 227 && len == 9u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_ENV); } if (ObjPtr->code == 231) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_MOVE); } if (ObjPtr->code == 160) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_LOAD); } if (ObjPtr->code == 225) { if (CheckLength && len != 1u) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_MARGE); } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_TPAGE); } else if (ObjPtr->code == 230) { return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_DR_STP); } } } return(PSXGPU.FF9DebugPrimType.FF9DEBUG_PRIMTYPE_UNKNOWN); }
public unsafe static void Add(PSX_LIBGPU.P_TAG *tag) { Int32 num = (Int32)(tag->code & 252); if (num == 32) { UInt32 meshKey = SFXKey.GetCurrentABR(tag->code); SFXMesh mesh = SFXRender.GetMesh(meshKey, tag->code); mesh.PolyF3((PSX_LIBGPU.POLY_F3 *)tag); return; } if (num == 36) { if (SFX.currentEffectID != 149) { SFXRender.PolyFT3((PSX_LIBGPU.POLY_FT3 *)tag); } return; } if (num == 40) { UInt32 meshKey = SFXKey.GetCurrentABR(tag->code); SFXMesh mesh = SFXRender.GetMesh(meshKey, tag->code); mesh.PolyF4((PSX_LIBGPU.POLY_F4 *)tag); return; } if (num == 44) { SFXRender.PolyFT4((PSX_LIBGPU.POLY_FT4 *)tag, 0u); return; } if (num == 48) { UInt32 meshKey = SFXKey.GetCurrentABR(tag->code); SFXMesh mesh = SFXRender.GetMesh(meshKey, tag->code); mesh.PolyG3((PSX_LIBGPU.POLY_G3 *)tag); return; } if (num == 52) { SFXRender.PolyGT3((PSX_LIBGPU.POLY_GT3 *)tag); return; } if (num == 56) { UInt32 meshKey = SFXKey.GetCurrentABR(tag->code); SFXMesh mesh = SFXRender.GetMesh(meshKey, tag->code); mesh.PolyG4((PSX_LIBGPU.POLY_G4 *)tag); return; } if (num == 60) { if (SFX.currentEffectID != 126 && SFX.currentEffectID != 149 && SFX.currentEffectID != 395) { SFXRender.PolyGT4((PSX_LIBGPU.POLY_GT4 *)tag); } return; } if (num == 64) { UInt32 meshKey = SFXKey.GetCurrentABR(tag->code) | 134217728u; SFXMesh mesh = SFXRender.GetMesh(meshKey, tag->code); mesh.LineF2((PSX_LIBGPU.LINE_F2 *)tag); return; } if (num == 68) { SFXRender.PolyBFT4((PSX_LIBGPU.POLY_FT4 *)tag); return; } if (num == 72) { SFXRender.PolyBGT4((PSX_LIBGPU.POLY_GT4 *)tag); return; } if (num == 76) { SFXRender.PolyFT4((PSX_LIBGPU.POLY_FT4 *)tag, 33554432u); return; } if (num == 80) { UInt32 meshKey = SFXKey.GetCurrentABR(tag->code) | 134217728u; SFXMesh mesh = SFXRender.GetMesh(meshKey, tag->code); mesh.LineG2((PSX_LIBGPU.LINE_G2 *)tag); return; } if (num == 96) { SFXRender.TILE((PSX_LIBGPU.TILE *)tag, (Int32)((PSX_LIBGPU.TILE *)tag)->w, (Int32)((PSX_LIBGPU.TILE *)tag)->h); return; } if (num == 100) { SFXRender.SPRT((PSX_LIBGPU.SPRT *)tag, (Int32)((PSX_LIBGPU.SPRT *)tag)->w, (Int32)((PSX_LIBGPU.SPRT *)tag)->h); return; } if (num == 104) { SFXRender.TILE((PSX_LIBGPU.TILE *)tag, 1, 1); return; } if (num == 112) { SFXRender.TILE((PSX_LIBGPU.TILE *)tag, 8, 8); return; } if (num == 116) { SFXRender.SPRT((PSX_LIBGPU.SPRT *)tag, 8, 8); return; } if (num == 120) { SFXRender.TILE((PSX_LIBGPU.TILE *)tag, 16, 16); return; } if (num != 124) { switch (tag->code) { case 225: if (tag->getLen() == 1u) { SFXRender.DR_TPAGE((PSX_LIBGPU.DR_TPAGE *)tag); } else { SFXRender.DR_TPAGE((PSX_LIBGPU.DR_TPAGE *)tag); } break; case 228: SFXRender.DR_AREA((PSX_LIBGPU.DR_AREA *)tag); break; case 229: SFXRender.DR_OFFSET((PSX_LIBGPU.DR_OFFSET *)tag); break; case 231: if (SFX.currentEffectID != 395 && SFX.currentEffectID != 126) { SFXRender.DR_MOVE((PSX_LIBGPU.DR_MOVE *)tag); } break; } return; } SFXRender.SPRT((PSX_LIBGPU.SPRT *)tag, 16, 16); }