From 0025e7abb16506fc5e18b56cea8c512d43782751 Mon Sep 17 00:00:00 2001 From: gromchek Date: Tue, 2 Dec 2025 22:02:39 +0300 Subject: [PATCH] feat(profile): VBBList struct; clarify fields name --- .../3.3.5a-windows-386/include/map/CMapObj.h | 21 ++++----- .../3.3.5a-windows-386/include/map/VBBList.h | 43 +++++++++++++++++++ 2 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 profile/3.3.5a-windows-386/include/map/VBBList.h diff --git a/profile/3.3.5a-windows-386/include/map/CMapObj.h b/profile/3.3.5a-windows-386/include/map/CMapObj.h index 9a24ad7..2fd3d1c 100644 --- a/profile/3.3.5a-windows-386/include/map/CMapObj.h +++ b/profile/3.3.5a-windows-386/include/map/CMapObj.h @@ -6,6 +6,7 @@ #include "map/WMOchunks.h" #include "tempest/vector.h" #include "storm/list.h" +#include "map/VBBList.h" DECLARE_STRUCT(CMapObj); DECLARE_STRUCT(CMapObjGroup); @@ -19,9 +20,9 @@ struct CMapObj int32_t objectIndex; int32_t unk_04; int32_t unk_08; - int32_t unk_0C; + CMapObj* mapObjPtr1; int32_t unk_10; - int32_t unk_14; + CMapObj* mapObjPtr2; int32_t unk_18; char m_wmoName[260]; SMOHeader *header; @@ -77,17 +78,17 @@ struct CMapObj struct CMapObjGroup { int32_t objectIndex; - int32_t unk_04; - int32_t unk_08; - int32_t unk_0C; - int32_t unk_10; - int32_t unk_14; + VBBList_Block* vertsBlock; + VBBList_Block* transparencyVertsBlock; + VBBList_Block* indicesBlock; + VBBList_Block* liquidVertsBlock; + VBBList_Block* liquidIndicesBlock; float timer; - int32_t unk_1C; + void* unk_1C; int32_t unk_20; int32_t unk_24; int32_t unk_28; - int32_t unk_2C; + int16_t unk_2C[2]; int32_t flags; CAaBox bbox; float distToCamera; @@ -120,7 +121,7 @@ struct CMapObjGroup int32_t unk_CC; int32_t unkFlags; int32_t unk_D4; - int32_t unk_D8; + int32_t minimapTag; char* groupName; SMOPoly* polyList; uint16_t* indices; diff --git a/profile/3.3.5a-windows-386/include/map/VBBList.h b/profile/3.3.5a-windows-386/include/map/VBBList.h new file mode 100644 index 0000000..0275d33 --- /dev/null +++ b/profile/3.3.5a-windows-386/include/map/VBBList.h @@ -0,0 +1,43 @@ +#ifndef VBBLIST_H +#define VBBLIST_H + +DECLARE_STRUCT(VBBList); +DECLARE_STRUCT(VBBList_Block); + +#include "system/types.h" +#include "gx/buffer.h" + +struct VBBList_Block +{ + VBBList_Block* next; + VBBList_Block* prev; + EGxPoolUsage poolUsage; + uint32_t offset; + uint32_t capacity; + CGxPool* pool; + CGxBuf* buffer; + VBBList_Block** listHead; +}; + +struct VBBList +{ + int32_t singlePool; + EGxPoolTarget target; + EGxPoolUsage usage; + + CGxPool* pool; + + uint32_t unk_10; + + //singlePool == true + VBBList_Block* listHeadA; + VBBList_Block* freeCandidate; + + uint32_t unk_1C; + + //singlePool == false + VBBList_Block* listHeadB; + VBBList_Block* allBlocks; +}; + +#endif \ No newline at end of file