diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h index 26e4f4c36..742a0888e 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJoint.h +++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h @@ -46,6 +46,7 @@ public: J3DJoint(); void entryIn(); void recursiveCalc(); + void addMesh(J3DMaterial*); J3DMaterial* getMesh() { return mMesh; } u16 getJntNo() const { return mJntNo; } diff --git a/include/JSystem/J3DGraphAnimator/J3DJointTree.h b/include/JSystem/J3DGraphAnimator/J3DJointTree.h index e7324aee4..dee523852 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJointTree.h +++ b/include/JSystem/J3DGraphAnimator/J3DJointTree.h @@ -25,16 +25,18 @@ struct J3DDrawMtxData { }; // Size: 0xC class J3DShapeTable; +class J3DShape; class J3DJointTree { public: - J3DJointTree(); - void makeHierarchy(J3DJoint*, J3DModelHierarchy const**, J3DMaterialTable*, J3DShapeTable*); + J3DJointTree() { clear(); } + void clear(); + void makeHierarchy(J3DNode*, const J3DModelHierarchy**, J3DMaterialTable*, J3DShape**); void findImportantMtxIndex(); - virtual void calc(J3DMtxBuffer*, Vec const&, f32 const (&)[3][4]); - virtual ~J3DJointTree(); + virtual ~J3DJointTree() {} + J3DDrawMtxData * getDrawMtxData() { return &mDrawMtxData; } u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; } u8 getWEvlpMixMtxNum(u16 idx) const { return mWEvlpMixMtxNum[idx]; } u16 * getWEvlpMixIndex() const { return mWEvlpMixIndex; } diff --git a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h index 5182c354c..38b5c7e22 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h +++ b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h @@ -39,12 +39,16 @@ public: J3DTexture* getTexture() const { return mTexture; } JUTNameTab* getTextureName() const { return mTextureName; } + void setTexture(J3DTexture* pTexture) { mTexture = pTexture; } + void setTextureName(JUTNameTab* pTextureName) { mTextureName = pTextureName; } JUTNameTab* getMaterialName() const { return mMaterialName; } u16 getMaterialNum() const { return mMaterialNum; } private: + friend class J3DJointTree; + /* 0x04 */ u16 mMaterialNum; /* 0x06 */ u16 mUniqueMatNum; /* 0x08 */ J3DMaterial** mMaterialNodePointer; diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index 3f5bd7d30..bbf3da2ae 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -11,22 +11,29 @@ typedef struct _GXColor GXColor; class JUTNameTab; +enum J3DMaterialCopyFlag { + J3DMatCopyFlag_Material = 0x01, + J3DMatCopyFlag_Texture = 0x02, +}; + class J3DModelData { public: void clear(); J3DModelData(); s32 newSharedDisplayList(u32); + bool isDeformablePositionFormat() const; void indexToPtr(); void makeSharedDL(); - void simpleCalcMaterial(u16, f32 (*)[4]); - void syncJ3DSysPointers() const; - void syncJ3DSysFlags() const; + void initShapeNodes(); + void sortVcdVatCmd(); + void setMaterialTable(J3DMaterialTable*, J3DMaterialCopyFlag); virtual ~J3DModelData(); J3DMaterialTable& getMaterialTable() { return mMaterialTable; } JUTNameTab* getMaterialName() const { return mMaterialTable.getMaterialName(); } J3DVertexData& getVertexData() { return mVertexData; } + GXVtxAttrFmtList* getVtxAttrFmtList() const { return ((J3DVertexData*)&mVertexData)->getVtxAttrFmtList(); } u16 getShapeNum() const { return mShapeTable.getShapeNum(); } u16 getMaterialNum() const { return mMaterialTable.getMaterialNum(); } u16 getJointNum() const { return mJointTree.getJointNum(); } @@ -36,6 +43,7 @@ public: } u32 getVtxNum() const { return mVertexData.getVtxNum(); } u32 getNrmNum() const { return mVertexData.getNrmNum(); } + J3DDrawMtxData * getDrawMtxData() { return mJointTree.getDrawMtxData(); } u8 getDrawMtxFlag(u16 idx) const { return mJointTree.getDrawMtxFlag(idx); } u16 getDrawMtxIndex(u16 idx) const { return mJointTree.getDrawMtxIndex(idx); } J3DShape* getShapeNodePointer(u16 idx) const { return mShapeTable.getShapeNodePointer(idx); } @@ -45,6 +53,8 @@ public: Mtx& getInvJointMtx(s32 idx) const { return mJointTree.getInvJointMtx(idx); } J3DTexture* getTexture() const { return mMaterialTable.getTexture(); } JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); } + void setTexture(J3DTexture* pTexture) { mMaterialTable.setTexture(pTexture); } + void setTextureName(JUTNameTab* pTextureName) { mMaterialTable.setTextureName(pTextureName); } u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); } u16* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixIndex(); } f32* getWEvlpMixWeight() const { return mJointTree.getWEvlpMixWeight(); } @@ -74,10 +84,6 @@ public: int removeMatColorAnimator(J3DAnmColor* anm) { return mMaterialTable.removeMatColorAnimator(anm); } - void syncJ3DSys() { - syncJ3DSysFlags(); - syncJ3DSysPointers(); - } private: /* 0x04 */ void* mpRawData; diff --git a/include/JSystem/J3DGraphAnimator/J3DNode.h b/include/JSystem/J3DGraphAnimator/J3DNode.h index 342c3d3fb..ec61c56f1 100644 --- a/include/JSystem/J3DGraphAnimator/J3DNode.h +++ b/include/JSystem/J3DGraphAnimator/J3DNode.h @@ -11,7 +11,8 @@ public: virtual void init(Vec const& param_0, Mtx*); virtual void entryIn(); virtual void calcIn(); - virtual u32 getType(); + virtual void calcOut(); + virtual u32 getType() const; virtual ~J3DNode(); J3DNode(); diff --git a/include/JSystem/J3DGraphAnimator/J3DShapeTable.h b/include/JSystem/J3DGraphAnimator/J3DShapeTable.h index 321d8b1c2..e67c58717 100644 --- a/include/JSystem/J3DGraphAnimator/J3DShapeTable.h +++ b/include/JSystem/J3DGraphAnimator/J3DShapeTable.h @@ -8,22 +8,16 @@ class JUTNameTab; class J3DShapeTable { public: - J3DShapeTable() { + inline void clear() { mShapeNum = 0; mShapeNodePointer = NULL; } - void hide(); - void show(); - void initShapeNodes(J3DDrawMtxData*, J3DVertexData*); - void sortVcdVatCmd(); - - virtual ~J3DShapeTable(); - u16 getShapeNum() const { return mShapeNum; } J3DShape* getShapeNodePointer(u16 idx) const { return mShapeNodePointer[idx]; } private: + /* 0x0 */ void *field_0x0; /* 0x4 */ u16 mShapeNum; /* 0x8 */ J3DShape** mShapeNodePointer; }; // Size: 0x0C diff --git a/include/JSystem/J3DGraphBase/J3DShapeDraw.h b/include/JSystem/J3DGraphBase/J3DShapeDraw.h index 2293fd633..0dbd4dc88 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeDraw.h +++ b/include/JSystem/J3DGraphBase/J3DShapeDraw.h @@ -5,12 +5,10 @@ class J3DShapeDraw { public: - /* 80314924 */ u32 countVertex(u32); - /* 80314974 */ void addTexMtxIndexInDL(u32, u32, u32); - /* 80314ABC */ J3DShapeDraw(u8 const*, u32); - /* 80314AD4 */ void draw() const; + J3DShapeDraw(u8 const*, u32); + void draw() const; - /* 80314B00 */ virtual ~J3DShapeDraw(); + virtual ~J3DShapeDraw() {} u8* getDisplayList() const { return (u8*)mDisplayList; } u32 getDisplayListSize() const { return mDisplayListSize; } diff --git a/include/JSystem/J3DGraphBase/J3DShapeMtx.h b/include/JSystem/J3DGraphBase/J3DShapeMtx.h index 5435ed7df..4a9c0c1e5 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeMtx.h +++ b/include/JSystem/J3DGraphBase/J3DShapeMtx.h @@ -39,7 +39,7 @@ public: void loadMtxIndx_NCPU(int, u16) const; void loadMtxIndx_PNCPU(int, u16) const; - virtual ~J3DShapeMtx(); + virtual ~J3DShapeMtx() {} virtual u32 getType() const; virtual u32 getUseMtxNum() const; virtual u32 getUseMtxIndex(u16) const; @@ -64,7 +64,7 @@ public: J3DShapeMtxImm(u16 useMtxIndex) : J3DShapeMtx(useMtxIndex) {} - virtual ~J3DShapeMtxImm(); + virtual ~J3DShapeMtxImm() {} virtual u32 getType() const; virtual void load() const; virtual void loadNrmMtx(int, u16) const; @@ -82,7 +82,7 @@ class J3DShapeMtxMultiImm : public J3DShapeMtxImm { public: J3DShapeMtxMultiImm(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {} - virtual ~J3DShapeMtxMultiImm(); + virtual ~J3DShapeMtxMultiImm() {} virtual u32 getType() const; virtual u32 getUseMtxNum() const; virtual u32 getUseMtxIndex(u16) const; @@ -94,13 +94,13 @@ private: /* 0x8 */ u16* mUseMtxIndexTable; }; -class J3DShapeMtxConcatView : public J3DShapeMtx { +class J3DShapeMtxConcatView : public J3DShapeMtxImm { public: typedef void (J3DShapeMtxConcatView::*MtxLoadConcatView)(int mtxNo, u16 index) const; - J3DShapeMtxConcatView(u16 useMtxIndex) : J3DShapeMtx(useMtxIndex) {} + J3DShapeMtxConcatView(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {} - virtual ~J3DShapeMtxConcatView(); + virtual ~J3DShapeMtxConcatView() {} virtual u32 getType() const; virtual void load() const; virtual void loadNrmMtx(int, u16) const; @@ -120,7 +120,7 @@ class J3DShapeMtxBBoardImm : public J3DShapeMtxImm { public: J3DShapeMtxBBoardImm(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {} - virtual ~J3DShapeMtxBBoardImm(); + virtual ~J3DShapeMtxBBoardImm() {} virtual u32 getType() const; virtual void load() const; }; @@ -129,7 +129,7 @@ class J3DShapeMtxYBBoardImm : public J3DShapeMtxImm { public: J3DShapeMtxYBBoardImm(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {} - virtual ~J3DShapeMtxYBBoardImm(); + virtual ~J3DShapeMtxYBBoardImm() {} virtual u32 getType() const; virtual void load() const; }; @@ -138,7 +138,7 @@ class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView { public: J3DShapeMtxYBBoardConcatView(u16 useMtxIndex) : J3DShapeMtxConcatView(useMtxIndex) {} - virtual ~J3DShapeMtxYBBoardConcatView(); + virtual ~J3DShapeMtxYBBoardConcatView() {} virtual u32 getType() const; virtual void load() const; }; @@ -147,7 +147,7 @@ class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView { public: J3DShapeMtxBBoardConcatView(u16 useMtxIndex) : J3DShapeMtxConcatView(useMtxIndex) {} - virtual ~J3DShapeMtxBBoardConcatView(); + virtual ~J3DShapeMtxBBoardConcatView() {} virtual u32 getType() const; virtual void load() const; }; @@ -157,7 +157,7 @@ public: J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable) : J3DShapeMtx(useMtxIndex), mUseMtxNum(useMtxNum), mUseMtxIndexTable(useMtxIndexTable) {} - virtual ~J3DShapeMtxMulti(); + virtual ~J3DShapeMtxMulti() {} virtual u32 getType() const; virtual u32 getUseMtxNum() const; virtual u32 getUseMtxIndex(u16) const; @@ -175,7 +175,7 @@ public: : J3DShapeMtxConcatView(useMtxIndex), mUseMtxNum(useMtxNum), mUseMtxIndexTable(useMtxIndexTable) {} - virtual ~J3DShapeMtxMultiConcatView(); + virtual ~J3DShapeMtxMultiConcatView() {} virtual u32 getType() const; virtual u32 getUseMtxNum() const; virtual u32 getUseMtxIndex(u16) const; diff --git a/include/JSystem/J3DGraphBase/J3DVertex.h b/include/JSystem/J3DGraphBase/J3DVertex.h index 5598f4914..f6252a53d 100644 --- a/include/JSystem/J3DGraphBase/J3DVertex.h +++ b/include/JSystem/J3DGraphBase/J3DVertex.h @@ -24,6 +24,8 @@ public: J3DVertexData(); ~J3DVertexData(); + inline void clear() { mPacketNum = 0; } + void* getVtxPosArray() const { return mVtxPosArray; } void* getVtxNrmArray() const { return mVtxNrmArray; } GXColor* getVtxColorArray(u8 idx) const { return mVtxColorArray[idx]; } diff --git a/src/JSystem/J3DGraphAnimator/J3DModelData.cpp b/src/JSystem/J3DGraphAnimator/J3DModelData.cpp index c9c69e6b3..3c04517bf 100644 --- a/src/JSystem/J3DGraphAnimator/J3DModelData.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DModelData.cpp @@ -4,64 +4,179 @@ // #include "JSystem/J3DGraphAnimator/J3DModelData.h" +#include "JSystem/J3DGraphAnimator/J3DShapeTable.h" +#include "JSystem/JUtility/JUTNameTab.h" #include "dolphin/types.h" /* 802ECF30-802ECF70 .text clear__12J3DJointTreeFv */ void J3DJointTree::clear() { - /* Nonmatching */ + mHierarchy = NULL; + mFlags = 0; + mModelDataType = 0; + mRootNode = NULL; + mBasicMtxCalc = NULL; + mJointNum = NULL; + mJointNodePointer = NULL; + field_0x40 = NULL; + mWEvlpMtxNum = 0; + mWEvlpMixMtxNum = NULL; + mWEvlpMixIndex = NULL; + mWEvlpMixWeight = NULL; + mInvJointMtx = NULL; + mJointName = NULL; } /* 802ECF70-802ED108 .text makeHierarchy__12J3DJointTreeFP7J3DNodePPC17J3DModelHierarchyP16J3DMaterialTablePP8J3DShape */ -void J3DJointTree::makeHierarchy(J3DNode*, const J3DModelHierarchy**, J3DMaterialTable*, J3DShape**) { - /* Nonmatching */ +void J3DJointTree::makeHierarchy(J3DNode* pRootNode, const J3DModelHierarchy** pHierarchy, J3DMaterialTable* pMaterialTable, J3DShape** pShapeTable) { + enum { + kTypeEnd = 0x00, + kTypeBeginChild = 0x01, + kTypeEndChild = 0x02, + kTypeJoint = 0x10, + kTypeMaterial = 0x11, + kTypeShape = 0x12, + }; + + J3DNode * pCurNode = pRootNode; + + while (true) { + J3DNode * pNewNode = NULL; + J3DMaterial * pNewMaterial = NULL; + J3DShape * pNewShape = NULL; + const J3DModelHierarchy * inf = *pHierarchy; + + switch (inf->mType) { + case kTypeBeginChild: + *pHierarchy = inf + 1; + makeHierarchy(pCurNode, pHierarchy, pMaterialTable, pShapeTable); + break; + case kTypeEndChild: + *pHierarchy = inf + 1; + return; + case kTypeEnd: + return; + case kTypeJoint: + { + J3DJoint ** pJoints = mJointNodePointer; + *pHierarchy = inf + 1; + pNewNode = pJoints[inf->mValue]; + } + break; + case kTypeMaterial: + *pHierarchy = inf + 1; + pNewMaterial = pMaterialTable->mMaterialNodePointer[inf->mValue]; + break; + case kTypeShape: + *pHierarchy = inf + 1; + pNewShape = pShapeTable[inf->mValue]; + break; + } + + if (pNewNode != NULL) { + pCurNode = pNewNode; + if (pRootNode == NULL) + mRootNode = (J3DJoint*)pNewNode; + else + pRootNode->appendChild(pNewNode); + } else if (pNewMaterial != NULL && pRootNode->getType() == 'NJNT') { + ((J3DJoint*)pRootNode)->addMesh(pNewMaterial); + pNewMaterial->mJoint = ((J3DJoint*)pRootNode); + } else if (pNewShape != NULL && pNewNode->getType() == 'NJNT') { + pNewMaterial = ((J3DJoint*)pRootNode)->getMesh(); + pNewMaterial->mShape = pNewShape; + pNewShape->mMaterial = pNewMaterial; + } + } } /* 802ED108-802ED130 .text clear__12J3DModelDataFv */ void J3DModelData::clear() { - /* Nonmatching */ + mpRawData = NULL; + mFlags = 0; + mbHasBumpArray = 0; + mbHasBillboard = 0; + mShapeTable.clear(); + mName = NULL; + mVertexData.clear(); } /* 802ED130-802ED1A8 .text __ct__12J3DModelDataFv */ J3DModelData::J3DModelData() { - /* Nonmatching */ + clear(); } /* 802ED1A8-802ED238 .text __dt__12J3DModelDataFv */ J3DModelData::~J3DModelData() { - /* Nonmatching */ } /* 802ED238-802ED2A4 .text initShapeNodes__12J3DModelDataFv */ void J3DModelData::initShapeNodes() { - /* Nonmatching */ + for (u16 i = 0; i < getShapeNum(); i++) { + J3DShape *pShape = getShapeNodePointer(i); + pShape->setDrawMtxDataPointer(getDrawMtxData()); + pShape->setVertexDataPointer(&getVertexData()); + pShape->makeVcdVatCmd(); + } } /* 802ED2A4-802ED340 .text sortVcdVatCmd__12J3DModelDataFv */ void J3DModelData::sortVcdVatCmd() { - /* Nonmatching */ + for (u16 i = 0; i < getShapeNum(); i++) + for (u16 j = 0; j < i; j++) + if (getShapeNodePointer(i)->isSameVcdVatCmd(getShapeNodePointer(j))) + getShapeNodePointer(i)->setVcdVatCmd(getShapeNodePointer(j)->getVcdVatCmd()); } /* 802ED340-802ED3E8 .text indexToPtr__12J3DModelDataFv */ void J3DModelData::indexToPtr() { - /* Nonmatching */ + j3dSys.setTexture(getTexture()); + + GDLObj dlObj; + for (u16 i = 0; i < getMaterialNum(); i++) { + J3DDisplayListObj *pDLObj = getMaterialNodePointer(i)->getSharedDisplayListObj(); + GDInitGDLObj(&dlObj, pDLObj->getDisplayList(0), pDLObj->getDisplayListSize()); + GDSetCurrent(&dlObj); + getMaterialNodePointer(i)->getTevBlock()->indexToPtr(); + } + + GDSetCurrent(NULL); } /* 802ED3E8-802ED434 .text isDeformablePositionFormat__12J3DModelDataCFv */ -void J3DModelData::isDeformablePositionFormat() const { - /* Nonmatching */ +bool J3DModelData::isDeformablePositionFormat() const { + GXVtxAttrFmtList *vtxAttr = getVtxAttrFmtList(); + + for (; vtxAttr->mAttrib != GX_VA_NULL; vtxAttr++) { + switch (vtxAttr->mAttrib) { + case GX_VA_POS: + if (vtxAttr->mCompType == GX_F32 && vtxAttr->mCompCnt == GX_POS_XYZ) + return true; + break; + } + } + + return false; } /* 802ED434-802ED4F4 .text setMaterialTable__12J3DModelDataFP16J3DMaterialTable19J3DMaterialCopyFlag */ -void J3DModelData::setMaterialTable(J3DMaterialTable*, J3DMaterialCopyFlag) { - /* Nonmatching */ +void J3DModelData::setMaterialTable(J3DMaterialTable* pMaterialTable, J3DMaterialCopyFlag flag) { + if (flag & J3DMatCopyFlag_Material) { + for (u16 i = 0; i < pMaterialTable->getMaterialNum(); i++) { + JUTNameTab *pMaterialName = getMaterialName(); + const char *pName = pMaterialTable->getMaterialName()->getName(i); + s32 nameIndex = pMaterialName->getIndex(pName); + if (nameIndex != -1) + getMaterialNodePointer(nameIndex)->copy(pMaterialTable->getMaterialNodePointer(i)); + } + } + + if ((flag & J3DMatCopyFlag_Texture) && pMaterialTable->getTexture()->getNum() != 0) { + setTexture(pMaterialTable->getTexture()); + setTextureName(pMaterialTable->getTextureName()); + } } /* 802ED4F4-802ED500 .text getType__7J3DNodeCFv */ -void J3DNode::getType() const { - /* Nonmatching */ -} - -/* 802ED500-802ED564 .text __dt__12J3DJointTreeFv */ -J3DJointTree::~J3DJointTree() { - /* Nonmatching */ +u32 J3DNode::getType() const { + return 'NNON'; } diff --git a/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp b/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp index ade45064f..73acec3dc 100644 --- a/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp +++ b/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp @@ -20,6 +20,11 @@ extern void J3DCalcBBoardMtx(Mtx); u32 J3DShapeMtx::sCurrentPipeline; +/* 802DD048-802DD054 .text getType__11J3DShapeMtxCFv */ +u32 J3DShapeMtx::getType() const { + return 'SMTX'; +} + /* 802DB9D8-802DBA1C .text loadMtxIndx_PNGP__11J3DShapeMtxCFiUs */ void J3DShapeMtx::loadMtxIndx_PNGP(int mtxNo, u16 index) const { J3DFifoLoadIndx(GX_CMD_LOAD_INDX_A, index, 0xB000 | ((u16)(mtxNo * 0x0C))); @@ -282,6 +287,16 @@ void J3DShapeMtxBBoardConcatView::load() const { } } +/* 802DCF88-802DCF94 .text getType__21J3DShapeMtxConcatViewCFv */ +u32 J3DShapeMtxConcatView::getType() const { + return 'SMCV'; +} + +/* 802DCF94-802DCF98 .text loadNrmMtx__21J3DShapeMtxConcatViewCFiUs */ +void J3DShapeMtxConcatView::loadNrmMtx(int mtxNo, u16 index) const { + /* Nonmatching */ +} + /* 802DC8C0-802DC9B8 .text load__21J3DShapeMtxYBBoardImmCFv */ void J3DShapeMtxYBBoardImm::load() const { /* Nonmatching */ @@ -292,26 +307,6 @@ void J3DShapeMtxYBBoardConcatView::load() const { /* Nonmatching */ } -/* 802DCAEC-802DCB04 .text __ct__12J3DShapeDrawFPCUcUl */ -J3DShapeDraw::J3DShapeDraw(const unsigned char*, unsigned long) { - /* Nonmatching */ -} - -/* 802DCB04-802DCB30 .text draw__12J3DShapeDrawCFv */ -void J3DShapeDraw::draw() const { - /* Nonmatching */ -} - -/* 802DCB30-802DCB78 .text __dt__12J3DShapeDrawFv */ -J3DShapeDraw::~J3DShapeDraw() { - /* Nonmatching */ -} - -/* 802DCB78-802DCBF4 .text __dt__28J3DShapeMtxYBBoardConcatViewFv */ -J3DShapeMtxYBBoardConcatView::~J3DShapeMtxYBBoardConcatView() { - /* Nonmatching */ -} - /* 802DCBF4-802DCC00 .text getType__21J3DShapeMtxYBBoardImmCFv */ u32 J3DShapeMtxYBBoardImm::getType() const { return 'SMYB'; @@ -322,31 +317,11 @@ u32 J3DShapeMtx::getUseMtxIndex(u16 i) const { return mUseMtxIndex; } -/* 802DCC08-802DCC74 .text __dt__21J3DShapeMtxYBBoardImmFv */ -J3DShapeMtxYBBoardImm::~J3DShapeMtxYBBoardImm() { - /* Nonmatching */ -} - -/* 802DCC74-802DCCF0 .text __dt__27J3DShapeMtxBBoardConcatViewFv */ -J3DShapeMtxBBoardConcatView::~J3DShapeMtxBBoardConcatView() { - /* Nonmatching */ -} - /* 802DCCF0-802DCCFC .text getType__20J3DShapeMtxBBoardImmCFv */ u32 J3DShapeMtxBBoardImm::getType() const { return 'SMBB'; } -/* 802DCCFC-802DCD68 .text __dt__20J3DShapeMtxBBoardImmFv */ -J3DShapeMtxBBoardImm::~J3DShapeMtxBBoardImm() { - /* Nonmatching */ -} - -/* 802DCD68-802DCDE4 .text __dt__26J3DShapeMtxMultiConcatViewFv */ -J3DShapeMtxMultiConcatView::~J3DShapeMtxMultiConcatView() { - /* Nonmatching */ -} - /* 802DCDE4-802DCDF0 .text getType__26J3DShapeMtxMultiConcatViewCFv */ u32 J3DShapeMtxMultiConcatView::getType() const { return 'SMMI'; @@ -367,11 +342,6 @@ void J3DShapeMtxMultiConcatView::loadNrmMtx(int mtxNo, u16 index) const { /* Nonmatching */ } -/* 802DCE0C-802DCE78 .text __dt__19J3DShapeMtxMultiImmFv */ -J3DShapeMtxMultiImm::~J3DShapeMtxMultiImm() { - /* Nonmatching */ -} - /* 802DCE78-802DCE84 .text getType__19J3DShapeMtxMultiImmCFv */ u32 J3DShapeMtxMultiImm::getType() const { return 'SMMI'; @@ -387,11 +357,6 @@ u32 J3DShapeMtxMultiImm::getUseMtxIndex(u16 i) const { return mUseMtxIndexTable[i]; } -/* 802DCE9C-802DCEF8 .text __dt__16J3DShapeMtxMultiFv */ -J3DShapeMtxMulti::~J3DShapeMtxMulti() { - /* Nonmatching */ -} - /* 802DCEF8-802DCF04 .text getType__16J3DShapeMtxMultiCFv */ u32 J3DShapeMtxMulti::getType() const { return 'SMML'; @@ -407,37 +372,18 @@ u32 J3DShapeMtxMulti::getUseMtxIndex(u16 i) const { return mUseMtxIndexTable[i]; } -/* 802DCF1C-802DCF88 .text __dt__21J3DShapeMtxConcatViewFv */ -J3DShapeMtxConcatView::~J3DShapeMtxConcatView() { - /* Nonmatching */ -} - -/* 802DCF88-802DCF94 .text getType__21J3DShapeMtxConcatViewCFv */ -u32 J3DShapeMtxConcatView::getType() const { - return 'SMCV'; -} - -/* 802DCF94-802DCF98 .text loadNrmMtx__21J3DShapeMtxConcatViewCFiUs */ -void J3DShapeMtxConcatView::loadNrmMtx(int mtxNo, u16 index) const { - /* Nonmatching */ -} - -/* 802DCF98-802DCFF4 .text __dt__14J3DShapeMtxImmFv */ -J3DShapeMtxImm::~J3DShapeMtxImm() { - /* Nonmatching */ -} - /* 802DCFF4-802DD000 .text getType__14J3DShapeMtxImmCFv */ u32 J3DShapeMtxImm::getType() const { return 'SMIM'; } -/* 802DD000-802DD048 .text __dt__11J3DShapeMtxFv */ -J3DShapeMtx::~J3DShapeMtx() { - /* Nonmatching */ +/* 802DCAEC-802DCB04 .text __ct__12J3DShapeDrawFPCUcUl */ +J3DShapeDraw::J3DShapeDraw(const u8* pDL, u32 size) { + mDisplayList = (void*) pDL; + mDisplayListSize = size; } -/* 802DD048-802DD054 .text getType__11J3DShapeMtxCFv */ -u32 J3DShapeMtx::getType() const { - return 'SMTX'; +/* 802DCB04-802DCB30 .text draw__12J3DShapeDrawCFv */ +void J3DShapeDraw::draw() const { + GXCallDisplayList(mDisplayList, mDisplayListSize); }