import type.base; struct vertex { s16 X; s16 Y; s16 Z; s16 d; }; struct objShiftInfo { u32 hz[5]; s32 shiftX; s32 shiftY; s32 shiftZ; u32 hz2[5]; }; struct shadedTexturedPolyInfo1E { type::Hex hz_cho; u8 color1[3]; type::Hex gpuCmdId; type::Hex vertex1; type::Hex clut; type::Hex texCoord1Y; type::Hex texCoord1X; type::Hex color2; type::Hex vertex2; type::Hex texPage; type::Hex texCoord2Y; type::Hex texCoord2X; type::Hex color3; type::Hex vertex3; type::Hex texCoord3Y; type::Hex texCoord3X; u16 dummy; type::Hex color4; type::Hex vertex4; type::Hex texCoord4Y; type::Hex texCoord4X; u16 dummy2; }; struct shadedTexturedPoly { shadedTexturedPolyInfo1E poly1; shadedTexturedPolyInfo1E poly2; u32 vertexId1; u32 vertexId2; u32 vertexId3; u32 vertexId4; }; struct texturedPolyInfo18 { type::Hex hz_cho; u8 color1[3]; type::Hex gpuCmdId; type::Hex vertex1; type::Hex texCoord1Y; type::Hex texCoord1X; type::Hex clut; type::Hex vertex2; type::Hex texCoord2Y; type::Hex texCoord2X; type::Hex texPage; type::Hex vertex3; type::Hex texCoord3Y; type::Hex texCoord3X; u16 dummy; type::Hex vertex4; type::Hex texCoord4Y; type::Hex texCoord4X; u16 dummy2; }; struct texturedPoly { texturedPolyInfo18 poly1; texturedPolyInfo18 poly2; u32 vertexId1; u32 vertexId2; u32 vertexId3; u32 vertexId4; }; struct shadedTextured3PolyInfo17 { type::Hex hz_cho; u8 color1[3]; type::Hex gpuCmdId; type::Hex vertex1; type::Hex clut; type::Hex texCoord1Y; type::Hex texCoord1X; type::Hex color2; type::Hex vertex2; type::Hex texPage; type::Hex texCoord2Y; type::Hex texCoord2X; type::Hex color3; type::Hex vertex3; type::Hex texCoord3Y; type::Hex texCoord3X; u16 dummy; }; struct shadedTextured3Poly { shadedTextured3PolyInfo17 poly1; shadedTextured3PolyInfo17 poly2; u32 vertexId1; u32 vertexId2; u32 vertexId3; }; struct shadedPolyInfo16 { type::Hex hz_cho; u8 color1[3]; type::Hex gpuCmdId; type::Hex vertex1; type::Hex color2; type::Hex vertex2; type::Hex color3; type::Hex vertex3; type::Hex color4; type::Hex vertex4; }; struct shadedPoly { shadedPolyInfo16 poly1; shadedPolyInfo16 poly2; u32 vertexId1; u32 vertexId2; u32 vertexId3; u32 vertexId4; }; struct textured3PolyInfo13 { type::Hex hz_cho; u8 color1[3]; type::Hex gpuCmdId; type::Hex vertex1; type::Hex texCoord1Y; type::Hex texCoord1X; type::Hex clut; type::Hex vertex2; type::Hex texCoord2Y; type::Hex texCoord2X; type::Hex texPage; type::Hex vertex3; type::Hex texCoord3Y; type::Hex texCoord3X; u16 dummy; }; struct textured3Poly { textured3PolyInfo13 poly1; textured3PolyInfo13 poly2; u32 vertexId1; u32 vertexId2; u32 vertexId3; }; struct cmdChunk { u8 cmdCnt; u8 chunkSize; u16 headerFuck; if (cmdCnt == 7) { shadedTexturedPoly poly; } else if (cmdCnt == 6) { texturedPoly poly; } else if (cmdCnt == 5) { shadedPoly poly; } else if (cmdCnt == 3) { shadedTextured3Poly poly; } else if (cmdCnt == 2) { textured3Poly poly; } }; struct gpuPacket { u16 globalChunkCnt; u16 localChunkCnt; u32 objectId; cmdChunk chunks[globalChunkCnt]; }; struct sceneObject { u32 objectPtr; gpuPacket gpu @ objectPtr; }; struct p2event3d { u16 objectsCnt; u16 someObjCtr; u32 vertexArrayPtr; u32 shiftInfoPtr; sceneObject objects[objectsCnt]; vertex vertexes[(shiftInfoPtr - vertexArrayPtr)/8] @ vertexArrayPtr; objShiftInfo shiftArray[objectsCnt] @ shiftInfoPtr; }; char sourceName[16] @ 0x00; p2event3d eventScene @ 0x10;