From 1d5c9da99bd601dc7dbcc1cd8817c1fe4d0beac3 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Wed, 26 Jun 2024 22:50:12 -0700 Subject: [PATCH] m_do_ext work also jsys documentation --- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 10 +- .../J3DGraphAnimator/J3DMaterialAttach.h | 6 +- .../JSystem/J3DGraphAnimator/J3DModelData.h | 6 +- include/JSystem/J3DGraphBase/J3DSys.h | 1 + include/dolphin/gx/GX.h | 84 ++-- include/m_Do/m_Do_ext.h | 13 +- .../J3DGraphAnimator/J3DMaterialAttach.cpp | 33 +- src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp | 420 +++++++++--------- src/JSystem/J3DGraphLoader/J3DModelLoader.cpp | 30 +- src/m_Do/m_Do_ext.cpp | 334 +++++++++++++- 10 files changed, 635 insertions(+), 302 deletions(-) diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index 5c732255e..480d24d59 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -283,15 +283,15 @@ struct J3DAnmClusterFullData { struct J3DAnmTransformKeyData { /* 0x00 */ JUTDataBlockHeader mHeader; - /* 0x08 */ u8 field_0x8; - /* 0x09 */ u8 field_0x9; + /* 0x08 */ u8 mAttribute; + /* 0x09 */ u8 mDecShift; /* 0x0A */ s16 mFrameMax; /* 0x0C */ u16 field_0xc; /* 0x10 */ int field_0x10; /* 0x14 */ s32 mTableOffset; - /* 0x18 */ s32 field_0x18; - /* 0x1c */ s32 field_0x1c; - /* 0x20 */ s32 field_0x20; + /* 0x18 */ s32 mScaleOffset; + /* 0x1c */ s32 mRotOffset; + /* 0x20 */ s32 mTransOffset; }; struct J3DAnmClusterKeyData { diff --git a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h index 2702be18c..5b90ff721 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h +++ b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h @@ -45,7 +45,7 @@ public: JUTNameTab* getMaterialName() const { return mMaterialName; } u16 getMaterialNum() const { return mMaterialNum; } - bool isLocked() { return field_0x20 == 1; } + bool isLocked() { return mbIsLocked == 1; } private: friend class J3DJointTree; @@ -57,10 +57,10 @@ private: /* 0x08 */ J3DMaterial** mMaterialNodePointer; /* 0x0C */ JUTNameTab* mMaterialName; /* 0x10 */ u16 mUniqueMatNum; - /* 0x14 */ J3DMaterial* field_0x14; + /* 0x14 */ J3DMaterial* mMaterialBase; /* 0x18 */ J3DTexture* mTexture; /* 0x1C */ JUTNameTab* mTextureName; - /* 0x20 */ u16 field_0x20; + /* 0x20 */ u16 mbIsLocked; }; // Size: 0x24 #endif /* J3DMATERIALATTACH_H */ diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index c6fa872a3..023787e34 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -79,9 +79,9 @@ public: u16 checkBumpFlag() const { return mbHasBumpArray; } void setBumpFlag(u32 flag) { mbHasBumpArray = flag; } bool checkBBoardFlag() const { return mbHasBillboard == 1; } - void entryTexMtxAnimator(J3DAnmTextureSRTKey* anm) { mMaterialTable.entryTexMtxAnimator(anm); } - void entryTevRegAnimator(J3DAnmTevRegKey* anm) { mMaterialTable.entryTevRegAnimator(anm); } - void entryMatColorAnimator(J3DAnmColor* anm) { mMaterialTable.entryMatColorAnimator(anm); } + s32 entryTexMtxAnimator(J3DAnmTextureSRTKey* anm) { return mMaterialTable.entryTexMtxAnimator(anm); } + s32 entryTevRegAnimator(J3DAnmTevRegKey* anm) { return mMaterialTable.entryTevRegAnimator(anm); } + s32 entryMatColorAnimator(J3DAnmColor* anm) { return mMaterialTable.entryMatColorAnimator(anm); } void setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm* pTexAnm, J3DTexMtxAnm* pDualAnmR) { mMaterialTable.setTexMtxAnimator(pAnm, pTexAnm, pDualAnmR); } diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h index 1b192c86c..73257ed15 100644 --- a/include/JSystem/J3DGraphBase/J3DSys.h +++ b/include/JSystem/J3DGraphBase/J3DSys.h @@ -7,6 +7,7 @@ // Perhaps move to a new J3DEnum.h? enum J3DError { J3DErrType_Success = 0, + J3DErrType_Locked = 2, J3DErrType_OutOfMemory = 4, }; diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h index 8e15fe71d..9a3f56797 100644 --- a/include/dolphin/gx/GX.h +++ b/include/dolphin/gx/GX.h @@ -44,23 +44,46 @@ typedef union { volatile PPCWGPipe GXFIFO : 0xCC008000; +// Direct +inline void GXPosition2f32(f32 x, f32 z) { + GXFIFO.f32 = x; + GXFIFO.f32 = z; +} + inline void GXPosition3f32(f32 x, f32 y, f32 z) { GXFIFO.f32 = x; GXFIFO.f32 = y; GXFIFO.f32 = z; } +inline void GXPosition2s8(s8 x, s8 y) { + GXFIFO.s8 = x; + GXFIFO.s8 = y; +} + +inline void GXPosition3s8(s8 x, s8 y, s8 z) { + GXFIFO.s8 = x; + GXFIFO.s8 = y; + GXFIFO.s8 = z; +} + +inline void GXPosition2u16(u16 x, u16 y) { + GXFIFO.u16 = x; + GXFIFO.u16 = y; +} + +inline void GXPosition3s16(s16 x, s16 y, s16 z) { + GXFIFO.s16 = x; + GXFIFO.s16 = y; + GXFIFO.s16 = z; +} + inline void GXNormal3f32(f32 x, f32 y, f32 z) { GXFIFO.f32 = x; GXFIFO.f32 = y; GXFIFO.f32 = z; } -inline void GXPosition2f32(f32 x, f32 z) { - GXFIFO.f32 = x; - GXFIFO.f32 = z; -} - inline void GXColor1u32(u32 c) { GXFIFO.u32 = c; } @@ -79,36 +102,6 @@ inline void GXTexCoord1x8(u8 s) { GXFIFO.u8 = s; } -inline void GXPosition2u16(u16 x, u16 y) { - GXFIFO.u16 = x; - GXFIFO.u16 = y; -} - -inline void GXPosition1x16(u16 x) { - GXFIFO.u16 = x; -} - -inline void GXPosition1x8(u8 x) { - GXFIFO.u8 = x; -} - -inline void GXPosition3s8(s8 x, s8 y, s8 z) { - GXFIFO.s8 = x; - GXFIFO.s8 = y; - GXFIFO.s8 = z; -} - -inline void GXPosition2s8(s8 x, s8 y) { - GXFIFO.s8 = x; - GXFIFO.s8 = y; -} - -inline void GXPosition3s16(s16 x, s16 y, s16 z) { - GXFIFO.s16 = x; - GXFIFO.s16 = y; - GXFIFO.s16 = z; -} - inline void GXTexCoord2s8(s8 x, s8 y) { GXFIFO.s8 = x; GXFIFO.s8 = y; @@ -124,6 +117,27 @@ inline void GXTexCoord2s16(const s16 u, const s16 v) { GXFIFO.s16 = v; } +// Indexed +inline void GXPosition1x8(u8 x) { + GXFIFO.u8 = x; +} + +inline void GXPosition1x16(u16 x) { + GXFIFO.u16 = x; +} + +inline void GXNormal1x8(u8 x) { + GXFIFO.u8 = x; +} + +inline void GXColor1x16(u16 x) { + GXFIFO.u16 = x; +} + +inline void GXTexCoord1x16(u16 x) { + GXFIFO.u16 = x; +} + inline void GFWriteBPCmd(u32 param_1) { GXFIFO.u8 = 0x61; GXFIFO.u32 = param_1; diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index cde1bb016..3019e8c7e 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -582,11 +582,10 @@ public: public: /* 0x08 */ GXColor mColor; /* 0x0C */ dKy_tevstr_c* mpTevStr; - /* 0x10 */ s16 mNumLines; - /* 0x12 */ s16 mNumSegmentsPerLine; - /* 0x14 */ u16 m14; - /* 0x16 */ u8 m16; - /* 0x17 */ u8 m17[0x18 - 0x17]; + /* 0x10 */ u16 mNumLines; + /* 0x12 */ u16 mMaxSegments; + /* 0x14 */ u16 mNumSegments; + /* 0x16 */ u8 mCurArr; /* 0x18 */ mDoExt_3Dline_c* mpLines; }; @@ -604,8 +603,8 @@ public: /* 0x28 */ GXColor mColor; /* 0x2C */ dKy_tevstr_c* mpTevStr; /* 0x30 */ u16 mNumLines; - /* 0x32 */ u16 m32; - /* 0x34 */ u16 m34; + /* 0x32 */ u16 mMaxSegments; + /* 0x34 */ u16 mNumSegments; /* 0x36 */ u8 mCurArr; /* 0x37 */ u8 m37[0x38 - 0x37]; /* 0x38 */ mDoExt_3Dline_c* mpLines; diff --git a/src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp b/src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp index 5848d49b6..dcb493ffa 100644 --- a/src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp @@ -6,6 +6,7 @@ #include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" +#include "JSystem/J3DGraphBase/J3DSys.h" /* 802F5C48-802F5C70 .text clear__16J3DMaterialTableFv */ void J3DMaterialTable::clear() { @@ -13,10 +14,10 @@ void J3DMaterialTable::clear() { mMaterialNodePointer = NULL; mMaterialName = NULL; mUniqueMatNum = 0; - field_0x14 = NULL; + mMaterialBase = NULL; mTexture = NULL; mTextureName = NULL; - field_0x20 = 0; + mbIsLocked = 0; } /* 802F5C70-802F5CAC .text __ct__16J3DMaterialTableFv */ @@ -33,8 +34,8 @@ s32 J3DMaterialTable::entryMatColorAnimator(J3DAnmColor* pAnm) { s32 ret = 0; u16 materialNum = pAnm->getUpdateMaterialNum(); - if (field_0x20 == 1) - return 2; + if (isLocked()) + return J3DErrType_Locked; for (u16 i = 0; i < materialNum; i++) { u16 materialID = pAnm->getUpdateMaterialID(i); @@ -56,8 +57,8 @@ s32 J3DMaterialTable::entryTexMtxAnimator(J3DAnmTextureSRTKey* pAnm) { s32 ret = 0; u16 materialNum = pAnm->getUpdateMaterialNum(); - if (field_0x20 == 1) - return 2; + if (isLocked()) + return J3DErrType_Locked; for (u16 i = 0; i < materialNum; i++) { u16 materialID = pAnm->getUpdateMaterialID(i); @@ -106,8 +107,8 @@ s32 J3DMaterialTable::entryTevRegAnimator(J3DAnmTevRegKey* pAnm) { u16 cRegMaterialNum = pAnm->getCRegUpdateMaterialNum(); u16 kRegMaterialNum = pAnm->getKRegUpdateMaterialNum(); - if (field_0x20 == 1) - return 2; + if (isLocked()) + return J3DErrType_Locked; for (u16 i = 0; i < cRegMaterialNum; i++) { u16 materialID = pAnm->getCRegUpdateMaterialID(i); @@ -234,8 +235,8 @@ s32 J3DMaterialTable::setMatColorAnimator(J3DAnmColor* pAnm, J3DMatColorAnm* pAn s32 ret = 0; u16 materialNum = pAnm->getUpdateMaterialNum(); - if (field_0x20 == 1) - return 2; + if (isLocked()) + return J3DErrType_Locked; for (u16 i = 0; i < materialNum; i++) { u16 materialID = pAnm->getUpdateMaterialID(i); @@ -256,8 +257,8 @@ s32 J3DMaterialTable::setTexNoAnimator(J3DAnmTexPattern* pAnm, J3DTexNoAnm* pAnm s32 ret = 0; u16 materialNum = pAnm->getUpdateMaterialNum(); - if (field_0x20 == 1) - return 2; + if (isLocked()) + return J3DErrType_Locked; for (u16 i = 0; i < materialNum; i++) { u16 materialID = pAnm->getUpdateMaterialID(i); @@ -280,8 +281,8 @@ s32 J3DMaterialTable::setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm* s32 ret = 0; u16 materialNum = pAnm->getUpdateMaterialNum(); - if (field_0x20 == 1) - return 2; + if (isLocked()) + return J3DErrType_Locked; for (u16 i = 0; i < materialNum; i++) { u16 materialID = pAnm->getUpdateMaterialID(i); @@ -319,8 +320,8 @@ s32 J3DMaterialTable::setTevRegAnimator(J3DAnmTevRegKey* pAnm, J3DTevColorAnm* p u16 cRegMaterialNum = pAnm->getCRegUpdateMaterialNum(); u16 kRegMaterialNum = pAnm->getKRegUpdateMaterialNum(); - if (field_0x20 == 1) - return 2; + if (isLocked()) + return J3DErrType_Locked; for (u16 i = 0; i < cRegMaterialNum; i++) { if (pAnm->getCRegUpdateMaterialID(i) != 0xFFFF) { diff --git a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp index 225301dde..27372f84c 100644 --- a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp @@ -85,8 +85,8 @@ J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data) { } /* 802FF6C8-802FF9EC .text setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv */ -void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_1, const void* param_2) { - const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2; +void J3DAnmLoaderDataBase::setResource(J3DAnmBase* dst, const void* data) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)data; if (!header) { return; } @@ -96,64 +96,64 @@ void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_1, const void* param_2) switch (header->mType) { case 'bck1': { J3DAnmKeyLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'bpk1': { J3DAnmKeyLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'blk1': { J3DAnmKeyLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'btk1': { J3DAnmKeyLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'brk1': { J3DAnmKeyLoader_v15 loader; - if (param_1->getKind() == 5) { - loader.setResource(param_1, param_2); + if (dst->getKind() == 5) { + loader.setResource(dst, data); } break; } case 'bxk1': { J3DAnmKeyLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'bca1': { J3DAnmFullLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'bpa1': { J3DAnmFullLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'btp1': { J3DAnmFullLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'bla1': { J3DAnmFullLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'bxa1': { J3DAnmFullLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } case 'bva1': { J3DAnmFullLoader_v15 loader; - loader.setResource(param_1, param_2); + loader.setResource(dst, data); break; } default: { @@ -176,8 +176,8 @@ J3DAnmKeyLoader_v15::J3DAnmKeyLoader_v15() {} J3DAnmKeyLoader_v15::~J3DAnmKeyLoader_v15() {} /* 802FFADC-802FFC28 .text load__20J3DAnmFullLoader_v15FPCv */ -J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) { - const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_1; +J3DAnmBase* J3DAnmFullLoader_v15::load(const void* dst) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)dst; const JUTDataBlockHeader* block = &header->mFirstBlock; for (int i = 0; i < header->mBlockNum; i++) { switch (block->mType) { @@ -209,39 +209,39 @@ J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) { } /* 802FFC28-802FFDD4 .text setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv */ -void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) { - const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2; +void J3DAnmFullLoader_v15::setResource(J3DAnmBase* dst, const void* data) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)data; const JUTDataBlockHeader* block = &header->mFirstBlock; for (int i = 0; i < header->mBlockNum; i++) { switch (block->mType) { case 'ANF1': - if (param_1->getKind() == 0) { - setAnmTransform((J3DAnmTransformFull*)param_1, (const J3DAnmTransformFullData*)block); + if (dst->getKind() == 0) { + setAnmTransform((J3DAnmTransformFull*)dst, (const J3DAnmTransformFullData*)block); } break; case 'PAF1': - if (param_1->getKind() == 1) { - setAnmColor((J3DAnmColorFull*)param_1, (const J3DAnmColorFullData*)block); + if (dst->getKind() == 1) { + setAnmColor((J3DAnmColorFull*)dst, (const J3DAnmColorFullData*)block); } break; case 'TPT1': - if (param_1->getKind() == 2) { - setAnmTexPattern((J3DAnmTexPattern*)param_1, (const J3DAnmTexPatternFullData*)block); + if (dst->getKind() == 2) { + setAnmTexPattern((J3DAnmTexPattern*)dst, (const J3DAnmTexPatternFullData*)block); } break; case 'CLF1': - if (param_1->getKind() == 3) { - setAnmCluster((J3DAnmClusterFull*)param_1, (const J3DAnmClusterFullData*)block); + if (dst->getKind() == 3) { + setAnmCluster((J3DAnmClusterFull*)dst, (const J3DAnmClusterFullData*)block); } break; case 'VAF1': - if (param_1->getKind() == 6) { - setAnmVisibility((J3DAnmVisibilityFull*)param_1, (const J3DAnmVisibilityFullData*)block); + if (dst->getKind() == 6) { + setAnmVisibility((J3DAnmVisibilityFull*)dst, (const J3DAnmVisibilityFullData*)block); } break; case 'VCF1': - if (param_1->getKind() == 7) { - setAnmVtxColor((J3DAnmVtxColorFull*)param_1, (const J3DAnmVtxColorFullData*)block); + if (dst->getKind() == 7) { + setAnmVtxColor((J3DAnmVtxColorFull*)dst, (const J3DAnmVtxColorFullData*)block); } break; default: @@ -253,93 +253,93 @@ void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) } /* 802FFDD4-802FFDFC .text readAnmTransform__20J3DAnmFullLoader_v15FPC23J3DAnmTransformFullData */ -void J3DAnmFullLoader_v15::readAnmTransform(const J3DAnmTransformFullData* param_1) { - setAnmTransform((J3DAnmTransformFull*)mAnm, param_1); +void J3DAnmFullLoader_v15::readAnmTransform(const J3DAnmTransformFullData* dst) { + setAnmTransform((J3DAnmTransformFull*)mAnm, dst); } /* 802FFDFC-802FFE90 .text setAnmTransform__20J3DAnmFullLoader_v15FP19J3DAnmTransformFullPC23J3DAnmTransformFullData */ -void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull* param_1, const J3DAnmTransformFullData* param_2) { - param_1->field_0x22 = param_2->field_0xc; - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mFrame = 0.0f; - param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mScaleData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mScaleValOffset); - param_1->mRotData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mRotValOffset); - param_1->mTransData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTransValOffset); +void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull* dst, const J3DAnmTransformFullData* data) { + dst->field_0x22 = data->field_0xc; + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mAnmTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mScaleData = JSUConvertOffsetToPtr(data, (void*)data->mScaleValOffset); + dst->mRotData = JSUConvertOffsetToPtr(data, (void*)data->mRotValOffset); + dst->mTransData = JSUConvertOffsetToPtr(data, (void*)data->mTransValOffset); } /* 802FFE90-802FFEB8 .text readAnmColor__20J3DAnmFullLoader_v15FPC19J3DAnmColorFullData */ -void J3DAnmFullLoader_v15::readAnmColor(const J3DAnmColorFullData* param_1) { - setAnmColor((J3DAnmColorFull*)mAnm, param_1); +void J3DAnmFullLoader_v15::readAnmColor(const J3DAnmColorFullData* dst) { + setAnmColor((J3DAnmColorFull*)mAnm, dst); } /* 802FFEB8-802FFF84 .text setAnmColor__20J3DAnmFullLoader_v15FP15J3DAnmColorFullPC19J3DAnmColorFullData */ -void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* param_1, const J3DAnmColorFullData* param_2) { - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mFrame = 0.0f; - param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum; - param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mColorR = JSUConvertOffsetToPtr(param_2, (void*)param_2->mRValuesOffset); - param_1->mColorG = JSUConvertOffsetToPtr(param_2, (void*)param_2->mGValuesOffset); - param_1->mColorB = JSUConvertOffsetToPtr(param_2, (void*)param_2->mBValuesOffset); - param_1->mColorA = JSUConvertOffsetToPtr(param_2, (void*)param_2->mAValuesOffset); - param_1->mUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateMaterialIDOffset); - param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTabOffset)); +void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* dst, const J3DAnmColorFullData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mUpdateMaterialNum = data->mUpdateMaterialNum; + dst->mAnmTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mColorR = JSUConvertOffsetToPtr(data, (void*)data->mRValuesOffset); + dst->mColorG = JSUConvertOffsetToPtr(data, (void*)data->mGValuesOffset); + dst->mColorB = JSUConvertOffsetToPtr(data, (void*)data->mBValuesOffset); + dst->mColorA = JSUConvertOffsetToPtr(data, (void*)data->mAValuesOffset); + dst->mUpdateMaterialID = JSUConvertOffsetToPtr(data, (void*)data->mUpdateMaterialIDOffset); + dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(data, (void*)data->mNameTabOffset)); } /* 802FFF84-802FFFAC .text readAnmTexPattern__20J3DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData */ -void J3DAnmFullLoader_v15::readAnmTexPattern(const J3DAnmTexPatternFullData* param_1) { - setAnmTexPattern((J3DAnmTexPattern*)mAnm, param_1); +void J3DAnmFullLoader_v15::readAnmTexPattern(const J3DAnmTexPatternFullData* dst) { + setAnmTexPattern((J3DAnmTexPattern*)mAnm, dst); } /* 802FFFAC-80300050 .text setAnmTexPattern__20J3DAnmFullLoader_v15FP16J3DAnmTexPatternPC24J3DAnmTexPatternFullData */ -void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern* param_1, const J3DAnmTexPatternFullData* param_2) { - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mFrame = 0.0f; - param_1->mUpdateMaterialNum = param_2->field_0xc; - param_1->field_0x18 = param_2->field_0xe; - param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mTextureIndex = JSUConvertOffsetToPtr(param_2, (void*)param_2->mValuesOffset); - param_1->mUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateMaterialIDOffset); - param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTabOffset)); +void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern* dst, const J3DAnmTexPatternFullData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mUpdateMaterialNum = data->field_0xc; + dst->field_0x18 = data->field_0xe; + dst->mAnmTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mTextureIndex = JSUConvertOffsetToPtr(data, (void*)data->mValuesOffset); + dst->mUpdateMaterialID = JSUConvertOffsetToPtr(data, (void*)data->mUpdateMaterialIDOffset); + dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(data, (void*)data->mNameTabOffset)); } /* 80300050-80300078 .text readAnmVisibility__20J3DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData */ -void J3DAnmFullLoader_v15::readAnmVisibility(const J3DAnmVisibilityFullData* param_1) { - setAnmVisibility((J3DAnmVisibilityFull*)mAnm, param_1); +void J3DAnmFullLoader_v15::readAnmVisibility(const J3DAnmVisibilityFullData* dst) { + setAnmVisibility((J3DAnmVisibilityFull*)mAnm, dst); } /* 80300078-803000F4 .text setAnmVisibility__20J3DAnmFullLoader_v15FP20J3DAnmVisibilityFullPC24J3DAnmVisibilityFullData */ -void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* param_1, const J3DAnmVisibilityFullData* param_2) { - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mFrame = 0.0f; - param_1->mUpdateMaterialNum = param_2->field_0xc; - param_1->field_0x12 = param_2->field_0xe; - param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mVisibility = JSUConvertOffsetToPtr(param_2, (void*)param_2->mValuesOffset); +void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* dst, const J3DAnmVisibilityFullData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mUpdateMaterialNum = data->field_0xc; + dst->field_0x12 = data->field_0xe; + dst->mAnmTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mVisibility = JSUConvertOffsetToPtr(data, (void*)data->mValuesOffset); } /* 803000F4-8030011C .text readAnmCluster__20J3DAnmFullLoader_v15FPC21J3DAnmClusterFullData */ -void J3DAnmFullLoader_v15::readAnmCluster(const J3DAnmClusterFullData* param_1) { - setAnmCluster((J3DAnmClusterFull*)mAnm, param_1); +void J3DAnmFullLoader_v15::readAnmCluster(const J3DAnmClusterFullData* dst) { + setAnmCluster((J3DAnmClusterFull*)mAnm, dst); } /* 8030011C-80300188 .text setAnmCluster__20J3DAnmFullLoader_v15FP17J3DAnmClusterFullPC21J3DAnmClusterFullData */ -void J3DAnmFullLoader_v15::setAnmCluster(J3DAnmClusterFull* param_1, const J3DAnmClusterFullData* param_2) { - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mFrame = 0.0f; - param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mWeight = JSUConvertOffsetToPtr(param_2, (void*)param_2->mWeightOffset); +void J3DAnmFullLoader_v15::setAnmCluster(J3DAnmClusterFull* dst, const J3DAnmClusterFullData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mAnmTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mWeight = JSUConvertOffsetToPtr(data, (void*)data->mWeightOffset); } /* 80300188-803001B0 .text readAnmVtxColor__20J3DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData */ -void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData* param_1) { - setAnmVtxColor((J3DAnmVtxColorFull*)mAnm, param_1); +void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData* dst) { + setAnmVtxColor((J3DAnmVtxColorFull*)mAnm, dst); } /* 803001B0-80300318 .text setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData */ @@ -368,8 +368,8 @@ void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst, const J3DAnmV } /* 80300318-80300464 .text load__19J3DAnmKeyLoader_v15FPCv */ -J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) { - const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_1; +J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* dst) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)dst; const JUTDataBlockHeader* block = &header->mFirstBlock; for (int i = 0; i < header->mBlockNum; i++) { switch (block->mType) { @@ -401,39 +401,39 @@ J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) { } /* 80300464-80300610 .text setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv */ -void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) { - const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2; +void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* dst, const void* data) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)data; const JUTDataBlockHeader* block = &header->mFirstBlock; for (int i = 0; i < header->mBlockNum; i++) { switch (block->mType) { case 'ANK1': - if (param_1->getKind() == 0) { - setAnmTransform((J3DAnmTransformKey*)param_1, (const J3DAnmTransformKeyData*)block); + if (dst->getKind() == 0) { + setAnmTransform((J3DAnmTransformKey*)dst, (const J3DAnmTransformKeyData*)block); } break; case 'PAK1': - if (param_1->getKind() == 1) { - setAnmColor((J3DAnmColorKey*)param_1, (const J3DAnmColorKeyData*)block); + if (dst->getKind() == 1) { + setAnmColor((J3DAnmColorKey*)dst, (const J3DAnmColorKeyData*)block); } break; case 'CLK1': - if (param_1->getKind() == 3) { - setAnmCluster((J3DAnmClusterKey*)param_1, (const J3DAnmClusterKeyData*)block); + if (dst->getKind() == 3) { + setAnmCluster((J3DAnmClusterKey*)dst, (const J3DAnmClusterKeyData*)block); } break; case 'TTK1': - if (param_1->getKind() == 4) { - setAnmTextureSRT((J3DAnmTextureSRTKey*)param_1, (const J3DAnmTextureSRTKeyData*)block); + if (dst->getKind() == 4) { + setAnmTextureSRT((J3DAnmTextureSRTKey*)dst, (const J3DAnmTextureSRTKeyData*)block); } break; case 'TRK1': - if (param_1->getKind() == 5) { - setAnmTevReg((J3DAnmTevRegKey*)param_1, (const J3DAnmTevRegKeyData*)block); + if (dst->getKind() == 5) { + setAnmTevReg((J3DAnmTevRegKey*)dst, (const J3DAnmTevRegKeyData*)block); } break; case 'VCK1': - if (param_1->getKind() == 7) { - setAnmVtxColor((J3DAnmVtxColorKey*)param_1, (const J3DAnmVtxColorKeyData*)block); + if (dst->getKind() == 7) { + setAnmVtxColor((J3DAnmVtxColorKey*)dst, (const J3DAnmVtxColorKeyData*)block); } break; default: @@ -445,149 +445,149 @@ void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) } /* 80300610-80300638 .text readAnmTransform__19J3DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */ -void J3DAnmKeyLoader_v15::readAnmTransform(const J3DAnmTransformKeyData* param_1) { - setAnmTransform((J3DAnmTransformKey*)mAnm, param_1); +void J3DAnmKeyLoader_v15::readAnmTransform(const J3DAnmTransformKeyData* dst) { + setAnmTransform((J3DAnmTransformKey*)mAnm, dst); } /* 80300638-803006D4 .text setAnmTransform__19J3DAnmKeyLoader_v15FP18J3DAnmTransformKeyPC22J3DAnmTransformKeyData */ -void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey* param_1, const J3DAnmTransformKeyData* param_2) { - param_1->field_0x22 = param_2->field_0xc; - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mDecShift = param_2->field_0x9; - param_1->mFrame = 0.0f; - param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mScaleData = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x18); - param_1->mRotData = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x1c); - param_1->mTransData = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x20); +void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey* dst, const J3DAnmTransformKeyData* data) { + dst->field_0x22 = data->field_0xc; + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->mAttribute; + dst->mDecShift = data->mDecShift; + dst->mFrame = 0.0f; + dst->mAnmTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mScaleData = JSUConvertOffsetToPtr(data, (void*)data->mScaleOffset); + dst->mRotData = JSUConvertOffsetToPtr(data, (void*)data->mRotOffset); + dst->mTransData = JSUConvertOffsetToPtr(data, (void*)data->mTransOffset); } /* 803006D4-803006FC .text readAnmTextureSRT__19J3DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */ -void J3DAnmKeyLoader_v15::readAnmTextureSRT(const J3DAnmTextureSRTKeyData* param_1) { - setAnmTextureSRT((J3DAnmTextureSRTKey*)mAnm, param_1); +void J3DAnmKeyLoader_v15::readAnmTextureSRT(const J3DAnmTextureSRTKeyData* dst) { + setAnmTextureSRT((J3DAnmTextureSRTKey*)mAnm, dst); } /* 803006FC-803008D8 .text setAnmTextureSRT__19J3DAnmKeyLoader_v15FP19J3DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData */ -void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1, const J3DAnmTextureSRTKeyData* param_2) { - param_1->mTrackNum = param_2->field_0xc; - param_1->mFrameMax = param_2->field_0xa; - param_1->mAttribute = param_2->field_0x8; - param_1->mDecShift = param_2->field_0x9; - param_1->mFrame = 0.0f; - param_1->mTrackNum = param_2->field_0xc; - param_1->mScaleNum = param_2->field_0xe; - param_1->mRotNum = param_2->field_0x10; - param_1->mTransNum = param_2->field_0x12; - param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateMatIDOffset); - param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTab1Offset)); - param_1->mUpdateTexMtxID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateTexMtxIDOffset); - param_1->mSRTCenter = JSUConvertOffsetToPtr(param_2, (void*)param_2->unkOffset); - param_1->mScaleData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mScaleValOffset); - param_1->mRotData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mRotValOffset); - param_1->mTransData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTransValOffset); - if (param_2->mNameTab2Offset) { - param_1->mPostUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTab2Offset)); +void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* dst, const J3DAnmTextureSRTKeyData* data) { + dst->mTrackNum = data->field_0xc; + dst->mFrameMax = data->field_0xa; + dst->mAttribute = data->field_0x8; + dst->mDecShift = data->field_0x9; + dst->mFrame = 0.0f; + dst->mTrackNum = data->field_0xc; + dst->mScaleNum = data->field_0xe; + dst->mRotNum = data->field_0x10; + dst->mTransNum = data->field_0x12; + dst->mAnmTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mUpdateMaterialID = JSUConvertOffsetToPtr(data, (void*)data->mUpdateMatIDOffset); + dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(data, (void*)data->mNameTab1Offset)); + dst->mUpdateTexMtxID = JSUConvertOffsetToPtr(data, (void*)data->mUpdateTexMtxIDOffset); + dst->mSRTCenter = JSUConvertOffsetToPtr(data, (void*)data->unkOffset); + dst->mScaleData = JSUConvertOffsetToPtr(data, (void*)data->mScaleValOffset); + dst->mRotData = JSUConvertOffsetToPtr(data, (void*)data->mRotValOffset); + dst->mTransData = JSUConvertOffsetToPtr(data, (void*)data->mTransValOffset); + if (data->mNameTab2Offset) { + dst->mPostUpdateMaterialName.setResource(JSUConvertOffsetToPtr(data, (void*)data->mNameTab2Offset)); } - param_1->mPostTrackNum = param_2->field_0x34; - param_1->field_0x4c = param_2->field_0x36; - param_1->field_0x4e = param_2->field_0x38; - param_1->field_0x50 = param_2->field_0x3a; - param_1->field_0x64 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mInfoTable2Offset); - param_1->mPostUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x40); - param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x48); - param_1->mPostSRTCenter = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x4c); - param_1->field_0x54 = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x50); - param_1->field_0x58 = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x54); - param_1->field_0x5c = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x58); - switch (param_2->field_0x5c) { + dst->mPostTrackNum = data->field_0x34; + dst->field_0x4c = data->field_0x36; + dst->field_0x4e = data->field_0x38; + dst->field_0x50 = data->field_0x3a; + dst->field_0x64 = JSUConvertOffsetToPtr(data, (void*)data->mInfoTable2Offset); + dst->mPostUpdateMaterialID = JSUConvertOffsetToPtr(data, (void*)data->field_0x40); + dst->mPostUpdateTexMtxID = JSUConvertOffsetToPtr(data, (void*)data->field_0x48); + dst->mPostSRTCenter = JSUConvertOffsetToPtr(data, (void*)data->field_0x4c); + dst->field_0x54 = JSUConvertOffsetToPtr(data, (void*)data->field_0x50); + dst->field_0x58 = JSUConvertOffsetToPtr(data, (void*)data->field_0x54); + dst->field_0x5c = JSUConvertOffsetToPtr(data, (void*)data->field_0x58); + switch (data->field_0x5c) { case 0: case 1: - param_1->mTexMtxCalcType = param_2->field_0x5c; + dst->mTexMtxCalcType = data->field_0x5c; break; default: - param_1->mTexMtxCalcType = 0; + dst->mTexMtxCalcType = 0; break; } } /* 803008D8-80300900 .text readAnmColor__19J3DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */ -void J3DAnmKeyLoader_v15::readAnmColor(const J3DAnmColorKeyData* param_1) { - setAnmColor((J3DAnmColorKey*)mAnm, param_1); +void J3DAnmKeyLoader_v15::readAnmColor(const J3DAnmColorKeyData* dst) { + setAnmColor((J3DAnmColorKey*)mAnm, dst); } /* 80300900-803009EC .text setAnmColor__19J3DAnmKeyLoader_v15FP14J3DAnmColorKeyPC18J3DAnmColorKeyData */ -void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* param_1, const J3DAnmColorKeyData* param_2) { - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mFrame = 0.0f; - param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum; - param_1->field_0x10 = param_2->field_0x10; - param_1->field_0x12 = param_2->field_0x12; - param_1->field_0x14 = param_2->field_0x14; - param_1->field_0x16 = param_2->field_0x16; - param_1->mTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mColorR = JSUConvertOffsetToPtr(param_2, (void*)param_2->mRValOffset); - param_1->mColorG = JSUConvertOffsetToPtr(param_2, (void*)param_2->mGValOffset); - param_1->mColorB = JSUConvertOffsetToPtr(param_2, (void*)param_2->mBValOffset); - param_1->mColorA = JSUConvertOffsetToPtr(param_2, (void*)param_2->mAValOffset); - param_1->mUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateMaterialIDOffset); - param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTabOffset)); +void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* dst, const J3DAnmColorKeyData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mUpdateMaterialNum = data->mUpdateMaterialNum; + dst->field_0x10 = data->field_0x10; + dst->field_0x12 = data->field_0x12; + dst->field_0x14 = data->field_0x14; + dst->field_0x16 = data->field_0x16; + dst->mTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mColorR = JSUConvertOffsetToPtr(data, (void*)data->mRValOffset); + dst->mColorG = JSUConvertOffsetToPtr(data, (void*)data->mGValOffset); + dst->mColorB = JSUConvertOffsetToPtr(data, (void*)data->mBValOffset); + dst->mColorA = JSUConvertOffsetToPtr(data, (void*)data->mAValOffset); + dst->mUpdateMaterialID = JSUConvertOffsetToPtr(data, (void*)data->mUpdateMaterialIDOffset); + dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(data, (void*)data->mNameTabOffset)); } /* 803009EC-80300A14 .text readAnmCluster__19J3DAnmKeyLoader_v15FPC20J3DAnmClusterKeyData */ -void J3DAnmKeyLoader_v15::readAnmCluster(const J3DAnmClusterKeyData* param_1) { - setAnmCluster((J3DAnmClusterKey*)mAnm, param_1); +void J3DAnmKeyLoader_v15::readAnmCluster(const J3DAnmClusterKeyData* dst) { + setAnmCluster((J3DAnmClusterKey*)mAnm, dst); } /* 80300A14-80300A80 .text setAnmCluster__19J3DAnmKeyLoader_v15FP16J3DAnmClusterKeyPC20J3DAnmClusterKeyData */ -void J3DAnmKeyLoader_v15::setAnmCluster(J3DAnmClusterKey* param_1, const J3DAnmClusterKeyData* param_2) { - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mFrame = 0.0f; - param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); - param_1->mWeight = JSUConvertOffsetToPtr(param_2, (void*)param_2->mWeightOffset); +void J3DAnmKeyLoader_v15::setAnmCluster(J3DAnmClusterKey* dst, const J3DAnmClusterKeyData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mAnmTable = JSUConvertOffsetToPtr(data, (void*)data->mTableOffset); + dst->mWeight = JSUConvertOffsetToPtr(data, (void*)data->mWeightOffset); } /* 80300A80-80300AA8 .text readAnmTevReg__19J3DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData */ -void J3DAnmKeyLoader_v15::readAnmTevReg(const J3DAnmTevRegKeyData* param_1) { - setAnmTevReg((J3DAnmTevRegKey*)mAnm, param_1); +void J3DAnmKeyLoader_v15::readAnmTevReg(const J3DAnmTevRegKeyData* dst) { + setAnmTevReg((J3DAnmTevRegKey*)mAnm, dst); } /* 80300AA8-80300C34 .text setAnmTevReg__19J3DAnmKeyLoader_v15FP15J3DAnmTevRegKeyPC19J3DAnmTevRegKeyData */ -void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey* param_1, const J3DAnmTevRegKeyData* param_2) { - param_1->mFrameMax = param_2->mFrameMax; - param_1->mAttribute = param_2->field_0x8; - param_1->mFrame = 0.0f; - param_1->mCRegUpdateMaterialNum = param_2->mCRegUpdateMaterialNum; - param_1->mAnmCRegKeyTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCRegTableOffset); - param_1->mCRegUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCRegUpdateMaterialIDOffset); - param_1->mCRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mCRegNameTabOffset)); - param_1->mKRegUpdateMaterialNum = param_2->mKRegUpdateMaterialNum; - param_1->mAnmKRegKeyTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKRegTableOffset); - param_1->mKRegUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKRegUpdateMaterialIDOffset); - param_1->mKRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mKRegNameTabOffset)); - param_1->mCRegDataCountR = param_2->field_0x10; - param_1->mCRegDataCountG = param_2->field_0x12; - param_1->mCRegDataCountB = param_2->field_0x14; - param_1->mCRegDataCountA = param_2->field_0x16; - param_1->mAnmCRegDataR = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCRValuesOffset); - param_1->mAnmCRegDataG = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCGValuesOffset); - param_1->mAnmCRegDataB = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCBValuesOffset); - param_1->mAnmCRegDataA = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCAValuesOffset); - param_1->mKRegDataCountR = param_2->field_0x18; - param_1->mKRegDataCountG = param_2->field_0x1a; - param_1->mKRegDataCountB = param_2->field_0x1c; - param_1->mKRegDataCountA = param_2->field_0x1e; - param_1->mAnmKRegDataR = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKRValuesOffset); - param_1->mAnmKRegDataG = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKGValuesOffset); - param_1->mAnmKRegDataB = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKBValuesOffset); - param_1->mAnmKRegDataA = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKAValuesOffset); +void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey* dst, const J3DAnmTevRegKeyData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mCRegUpdateMaterialNum = data->mCRegUpdateMaterialNum; + dst->mAnmCRegKeyTable = JSUConvertOffsetToPtr(data, (void*)data->mCRegTableOffset); + dst->mCRegUpdateMaterialID = JSUConvertOffsetToPtr(data, (void*)data->mCRegUpdateMaterialIDOffset); + dst->mCRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr(data, (void*)data->mCRegNameTabOffset)); + dst->mKRegUpdateMaterialNum = data->mKRegUpdateMaterialNum; + dst->mAnmKRegKeyTable = JSUConvertOffsetToPtr(data, (void*)data->mKRegTableOffset); + dst->mKRegUpdateMaterialID = JSUConvertOffsetToPtr(data, (void*)data->mKRegUpdateMaterialIDOffset); + dst->mKRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr(data, (void*)data->mKRegNameTabOffset)); + dst->mCRegDataCountR = data->field_0x10; + dst->mCRegDataCountG = data->field_0x12; + dst->mCRegDataCountB = data->field_0x14; + dst->mCRegDataCountA = data->field_0x16; + dst->mAnmCRegDataR = JSUConvertOffsetToPtr(data, (void*)data->mCRValuesOffset); + dst->mAnmCRegDataG = JSUConvertOffsetToPtr(data, (void*)data->mCGValuesOffset); + dst->mAnmCRegDataB = JSUConvertOffsetToPtr(data, (void*)data->mCBValuesOffset); + dst->mAnmCRegDataA = JSUConvertOffsetToPtr(data, (void*)data->mCAValuesOffset); + dst->mKRegDataCountR = data->field_0x18; + dst->mKRegDataCountG = data->field_0x1a; + dst->mKRegDataCountB = data->field_0x1c; + dst->mKRegDataCountA = data->field_0x1e; + dst->mAnmKRegDataR = JSUConvertOffsetToPtr(data, (void*)data->mKRValuesOffset); + dst->mAnmKRegDataG = JSUConvertOffsetToPtr(data, (void*)data->mKGValuesOffset); + dst->mAnmKRegDataB = JSUConvertOffsetToPtr(data, (void*)data->mKBValuesOffset); + dst->mAnmKRegDataA = JSUConvertOffsetToPtr(data, (void*)data->mKAValuesOffset); } /* 80300C34-80300C5C .text readAnmVtxColor__19J3DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData */ -void J3DAnmKeyLoader_v15::readAnmVtxColor(const J3DAnmVtxColorKeyData* param_1) { - setAnmVtxColor((J3DAnmVtxColorKey*)mAnm, param_1); +void J3DAnmKeyLoader_v15::readAnmVtxColor(const J3DAnmVtxColorKeyData* dst) { + setAnmVtxColor((J3DAnmVtxColorKey*)mAnm, dst); } /* 80300C5C-80300DC4 .text setAnmVtxColor__19J3DAnmKeyLoader_v15FP17J3DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData */ diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp index e809580ec..881413b68 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp @@ -392,15 +392,15 @@ void J3DModelLoader_v26::readMaterial(const J3DMaterialBlock* i_block, u32 i_fla } mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum]; if (i_flags & 0x200000) { - mpMaterialTable->field_0x14 = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum]; + mpMaterialTable->mMaterialBase = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum]; } else { - mpMaterialTable->field_0x14 = NULL; + mpMaterialTable->mMaterialBase = NULL; } if (i_flags & 0x200000) { for (u16 i = 0; i < mpMaterialTable->mUniqueMatNum; i++) { - factory.create(&mpMaterialTable->field_0x14[i], + factory.create(&mpMaterialTable->mMaterialBase[i], J3DMaterialFactory::MATERIAL_TYPE_NORMAL, i, i_flags); - mpMaterialTable->field_0x14[i].mDiffFlag = (u32)&mpMaterialTable->field_0x14[i] >> 4; + mpMaterialTable->mMaterialBase[i].mDiffFlag = (u32)&mpMaterialTable->mMaterialBase[i] >> 4; } } for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) { @@ -410,9 +410,9 @@ void J3DModelLoader_v26::readMaterial(const J3DMaterialBlock* i_block, u32 i_fla if (i_flags & 0x200000) { for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) { mpMaterialTable->mMaterialNodePointer[i]->mDiffFlag = - (u32)&mpMaterialTable->field_0x14[factory.getMaterialID(i)] >> 4; + (u32)&mpMaterialTable->mMaterialBase[factory.getMaterialID(i)] >> 4; mpMaterialTable->mMaterialNodePointer[i]->mpOrigMaterial = - &mpMaterialTable->field_0x14[factory.getMaterialID(i)]; + &mpMaterialTable->mMaterialBase[factory.getMaterialID(i)]; } } else { for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) { @@ -435,14 +435,14 @@ void J3DModelLoader_v21::readMaterial_v21(const J3DMaterialBlock_v21* i_block, u } mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum]; if (i_flags & 0x200000) { - mpMaterialTable->field_0x14 = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum]; + mpMaterialTable->mMaterialBase = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum]; } else { - mpMaterialTable->field_0x14 = NULL; + mpMaterialTable->mMaterialBase = NULL; } if (i_flags & 0x200000) { for (u16 i = 0; i < mpMaterialTable->mUniqueMatNum; i++) { - factory.create(&mpMaterialTable->field_0x14[i], i, i_flags); - mpMaterialTable->field_0x14[i].mDiffFlag = (u32)&mpMaterialTable->field_0x14[i] >> 4; + factory.create(&mpMaterialTable->mMaterialBase[i], i, i_flags); + mpMaterialTable->mMaterialBase[i].mDiffFlag = (u32)&mpMaterialTable->mMaterialBase[i] >> 4; } } for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) { @@ -451,9 +451,9 @@ void J3DModelLoader_v21::readMaterial_v21(const J3DMaterialBlock_v21* i_block, u if (i_flags & 0x200000) { for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) { mpMaterialTable->mMaterialNodePointer[i]->mDiffFlag = - (u32)&mpMaterialTable->field_0x14[factory.getMaterialID(i)] >> 4; + (u32)&mpMaterialTable->mMaterialBase[factory.getMaterialID(i)] >> 4; mpMaterialTable->mMaterialNodePointer[i]->mpOrigMaterial = - &mpMaterialTable->field_0x14[factory.getMaterialID(i)]; + &mpMaterialTable->mMaterialBase[factory.getMaterialID(i)]; } } else { for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) { @@ -563,7 +563,7 @@ void J3DModelLoader::readPatchedMaterial(const J3DMaterialBlock* i_block, u32 i_ mpMaterialTable->mMaterialName = NULL; } mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum]; - mpMaterialTable->field_0x14 = NULL; + mpMaterialTable->mMaterialBase = NULL; for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) { mpMaterialTable->mMaterialNodePointer[i] = factory.create(NULL, J3DMaterialFactory::MATERIAL_TYPE_PATCHED, i, i_flags); @@ -576,7 +576,7 @@ void J3DModelLoader::readPatchedMaterial(const J3DMaterialBlock* i_block, u32 i_ void J3DModelLoader::readMaterialDL(const J3DMaterialDLBlock* i_block, u32 i_flags) { J3DMaterialFactory factory(*i_block); if (mpMaterialTable->mMaterialNum == 0) { - mpMaterialTable->field_0x20 = 1; + mpMaterialTable->mbIsLocked = 1; mpMaterialTable->mMaterialNum = i_block->mMaterialNum; mpMaterialTable->mUniqueMatNum = i_block->mMaterialNum; if (i_block->mpNameTable != NULL) { @@ -586,7 +586,7 @@ void J3DModelLoader::readMaterialDL(const J3DMaterialDLBlock* i_block, u32 i_fla mpMaterialTable->mMaterialName = NULL; } mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum]; - mpMaterialTable->field_0x14 = NULL; + mpMaterialTable->mMaterialBase = NULL; for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) { mpMaterialTable->mMaterialNodePointer[i] = factory.create( NULL, J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, (u32)i_flags // cast fixes regalloc diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 015df60b3..be0f069ca 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -1815,13 +1815,69 @@ u8 l_toonMat1DL[] ALIGN_DECL(32) = { }; /* 800143B8-80014580 .text init__15mDoExt_3Dline_cFUsii */ -int mDoExt_3Dline_c::init(u16, int, int) { - /* Nonmatching */ +int mDoExt_3Dline_c::init(u16 numSegments, int hasSize, int hasTex) { + mpSegments = new cXyz[numSegments]; + if (mpSegments == NULL) + return FALSE; + + if (hasSize) { + mpSize = new u8[numSegments]; + if (mpSize == NULL) + return FALSE; + } else { + mpSize = NULL; + } + + u32 numArr = numSegments * 2; + mPosArr[0] = new cXyz[numArr]; + if (mPosArr[0] == NULL) + return FALSE; + + mPosArr[1] = new cXyz[numArr]; + if (mPosArr[1] == NULL) + return FALSE; + + if (hasTex) { + mTexArr[0] = new cXy[numArr]; + if (mTexArr[0] == NULL) + return FALSE; + + mTexArr[1] = new cXy[numArr]; + if (mTexArr[1] == NULL) + return FALSE; + + cXy* tex0 = mTexArr[0]; + cXy* tex1 = mTexArr[1]; + for (s32 i = 0; i < numSegments; i++) { + tex0[0].x = 0.0f; + tex1[0].x = 0.0f; + tex0[1].x = 1.0f; + tex1[1].x = 1.0f; + + tex0 += 2; + tex1 += 2; + } + } + + return TRUE; } /* 80014584-80014664 .text init__19mDoExt_3DlineMat0_cFUsUsi */ -int mDoExt_3DlineMat0_c::init(u16, u16, int) { +int mDoExt_3DlineMat0_c::init(u16 numLines, u16 numSegments, int hasSize) { /* Nonmatching */ + mNumLines = numLines; + mMaxSegments = numSegments; + mpLines = new mDoExt_3Dline_c[numLines]; + if (mpLines == NULL) + return FALSE; + + for (s32 i = 0; i < numLines; i++) + if (!mpLines[i].init(numSegments, hasSize, FALSE)) + return FALSE; + + mpNextLineMat = NULL; + mCurArr = 0; + return TRUE; } /* 80014664-800146A0 .text __dt__15mDoExt_3Dline_cFv */ @@ -1858,12 +1914,118 @@ void mDoExt_3DlineMat0_c::setMaterial() { /* 80014798-800148B4 .text draw__19mDoExt_3DlineMat0_cFv */ void mDoExt_3DlineMat0_c::draw() { - /* Nonmatching */ + GXSetTevColor(GX_TEVREG2, mColor); + if (mpTevStr != NULL) { + GXSetTevColorS10(GX_TEVREG0, mpTevStr->mColorC0); + GXSetTevColor(GX_TEVREG1, mpTevStr->mColorK0); + } + + mDoExt_3Dline_c* line = mpLines; + u16 numTriStrip = mNumSegments * 2; + for (s32 i = 0; i < mNumLines; i++) { + GXSetArray(GX_VA_POS, line->mPosArr[mCurArr], sizeof(cXyz)); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, numTriStrip); + for (u16 j = 0; j < numTriStrip;) { + GXPosition1x16(j); + GXNormal1x8(0); + j++; + + GXPosition1x16(j); + GXNormal1x8(1); + j++; + } + GXEnd(); + line++; + } + + mCurArr ^= 1; } /* 800148B4-80014E04 .text update__19mDoExt_3DlineMat0_cFUsfR8_GXColorUsP12dKy_tevstr_c */ -void mDoExt_3DlineMat0_c::update(u16, f32, GXColor&, u16, dKy_tevstr_c*) { +void mDoExt_3DlineMat0_c::update(u16 segs, f32 size, GXColor& newColor, u16 space, dKy_tevstr_c* pTevStr) { /* Nonmatching */ + cXyz eyeDelta; + cXyz delta; + cXyz nextP0; + cXyz nextP1; + + mColor = newColor; + mpTevStr = pTevStr; + mNumSegments = segs; + if (mNumSegments > mMaxSegments) + mNumSegments = mMaxSegments; + + view_class* view = dComIfGd_getView(); + mDoExt_3Dline_c* line = mpLines; + + f32 spacing; + if (space != 0) { + spacing = size / space; + } else { + spacing = 0.0f; + } + + u32 posArrSize = mNumSegments * 2 * sizeof(cXyz); + + for (s32 i = 0; i < mNumLines; i++) { + cXyz* pos = line->mpSegments; + cXyz* dstPos = line->mPosArr[mCurArr]; + f32 r_size = size; + + delta = pos[1] - pos[0]; + + eyeDelta = pos[0] - view->mLookat.mEye; + delta = delta.outprod(eyeDelta); + f32 scale = delta.abs(); + if (scale != 0.0f) + scale = size / scale; + VECScale(&delta, &delta, scale); + + dstPos[0] = pos[0] + delta; + dstPos[1] = pos[0] - delta; + + pos++; + cXyz* r_dstPos = &dstPos[2]; + nextP0 = pos[0] + delta; + nextP1 = pos[0] - delta; + + for (s32 j = mNumSegments - 2; j > 0;) { + if (j < space) + r_size -= spacing; + + delta = pos[1] - pos[0]; + + eyeDelta = pos[0] - view->mLookat.mEye; + delta = delta.outprod(eyeDelta); + scale = delta.abs(); + if (scale != 0.0f) + scale = r_size / scale; + + VECScale(&delta, &delta, scale); + VECAdd(&nextP0, &(pos[0] + delta), &nextP0); + VECAdd(&nextP1, &(pos[0] - delta), &nextP1); + + r_dstPos[0] = nextP0 * 0.5f; + r_dstPos[1] = nextP1 * 0.5f; + r_dstPos += 2; + + pos++; + nextP0 = pos[0] + delta; + nextP1 = pos[0] - delta; + j--; + } + + if (space != 0) { + r_dstPos[0] = pos[0]; + r_dstPos[1] = pos[0]; + } else { + r_dstPos[0] = nextP0; + r_dstPos[1] = nextP1; + } + + DCStoreRangeNoSync(dstPos, posArrSize); + line++; + } } /* 80014E04-80015328 .text update__19mDoExt_3DlineMat0_cFUsR8_GXColorP12dKy_tevstr_c */ @@ -1872,8 +2034,28 @@ void mDoExt_3DlineMat0_c::update(u16, GXColor&, dKy_tevstr_c*) { } /* 80015328-800154C4 .text init__19mDoExt_3DlineMat1_cFUsUsP7ResTIMGi */ -int mDoExt_3DlineMat1_c::init(u16, u16, ResTIMG*, int) { - /* Nonmatching */ +int mDoExt_3DlineMat1_c::init(u16 numLines, u16 numSegments, ResTIMG* i_img, int hasSize) { + mNumLines = numLines; + mMaxSegments = numSegments; + mpLines = new mDoExt_3Dline_c[numLines]; + if (mpLines == NULL) + return FALSE; + + for (s32 i = 0; i < numLines; i++) + if (!mpLines[i].init(numSegments, hasSize, TRUE)) + return FALSE; + + mpNextLineMat = NULL; + mCurArr = 0; + GXInitTexObj(&mTexObj, (&i_img->format + i_img->imageOffset), i_img->width, i_img->height, + (GXTexFmt)i_img->format, (GXTexWrapMode)i_img->wrapS, (GXTexWrapMode)i_img->wrapT, + (GXBool)(i_img->mipmapCount > 1)); + GXInitTexObjLOD(&mTexObj, (GXTexFilter)i_img->minFilter, (GXTexFilter)i_img->magFilter, + i_img->minLOD * 0.125f, i_img->maxLOD * 0.125f, i_img->LODBias * 0.01f, + (GXBool)i_img->biasClamp, (GXBool)i_img->doEdgeLOD, + (GXAnisotropy)i_img->maxAnisotropy); + + return TRUE; } /* 800154C4-800155DC .text setMaterial__19mDoExt_3DlineMat1_cFv */ @@ -1907,11 +2089,147 @@ void mDoExt_3DlineMat1_c::setMaterial() { /* 800155DC-80015764 .text draw__19mDoExt_3DlineMat1_cFv */ void mDoExt_3DlineMat1_c::draw() { /* Nonmatching */ + GXLoadTexObj(&mTexObj, GX_TEXMAP0); + u16 h = GXGetTexObjHeight(&mTexObj); + u16 w = GXGetTexObjWidth(&mTexObj); + GXSetTexCoordScaleManually(GX_TEXCOORD0, GX_TRUE, w, h); + GXSetTevColor(GX_TEVREG2, mColor); + if (mpTevStr != NULL) { + GXSetTevColorS10(GX_TEVREG0, mpTevStr->mColorC0); + GXSetTevColor(GX_TEVREG1, mpTevStr->mColorK0); + } + + mDoExt_3Dline_c* line = mpLines; + u16 numTriStrip = mNumSegments * 2; + for (s32 i = 0; i < mNumLines; i++) { + GXSetArray(GX_VA_POS, line->mPosArr[mCurArr], sizeof(cXyz)); + GXSetArray(GX_VA_TEX0, line->mTexArr[mCurArr], sizeof(cXy)); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, numTriStrip); + for (u16 j = 0; j < numTriStrip;) { + GXPosition1x16(j); + GXNormal1x8(0); + GXTexCoord1x16(j); + j++; + + GXPosition1x16(j); + GXNormal1x8(1); + GXTexCoord1x16(j); + j++; + } + GXEnd(); + line++; + } + + GXSetTexCoordScaleManually(GX_TEXCOORD0, GX_FALSE, 0, 0); + mCurArr ^= 1; } /* 80015764-80015E54 .text update__19mDoExt_3DlineMat1_cFUsfR8_GXColorUsP12dKy_tevstr_c */ -void mDoExt_3DlineMat1_c::update(u16, f32, GXColor&, u16, dKy_tevstr_c*) { +void mDoExt_3DlineMat1_c::update(u16 segs, f32 size, GXColor& newColor, u16 space, dKy_tevstr_c* pTevStr) { /* Nonmatching */ + cXyz eyeDelta; + cXyz delta; + cXyz nextP0; + cXyz nextP1; + + mColor = newColor; + mpTevStr = pTevStr; + mNumSegments = segs; + if (mNumSegments > mMaxSegments) + mNumSegments = mMaxSegments; + + view_class* view = dComIfGd_getView(); + mDoExt_3Dline_c* line = mpLines; + + f32 spacing; + if (space != 0) { + spacing = size / space; + } else { + spacing = 0.0f; + } + + u32 posArrSize = mNumSegments * 2 * sizeof(cXyz); + u32 texArrSize = mNumSegments * 2 * sizeof(cXy); + + f32 dist = 0.0f; + for (s32 i = 0; i < mNumLines; i++) { + cXyz* pos = line->mpSegments; + + cXyz* dstPos = line->mPosArr[mCurArr]; + cXy* dstTex = line->mTexArr[mCurArr]; + f32 r_size = size; + + dstTex[0].y = dist; + dstTex[1].y = dist; + + delta = pos[1] - pos[0]; + f32 mag = delta.abs(); + + dist += mag * 0.1f; + eyeDelta = pos[0] - view->mLookat.mEye; + delta = delta.outprod(eyeDelta); + f32 scale = delta.abs(); + if (scale != 0.0f) + scale = size / scale; + VECScale(&delta, &delta, scale); + + dstPos[0] = pos[0] + delta; + dstPos[1] = pos[0] - delta; + + pos++; + cXyz* r_dstPos = &dstPos[2]; + cXy* r_dstTex = &dstTex[1]; + nextP0 = pos[0] + delta; + nextP1 = pos[0] - delta; + + for (s32 j = mNumSegments - 2; j > 0;) { + if (j < space) + r_size -= spacing; + + dstTex[2].y = dist; + dstTex[3].y = dist; + + delta = pos[1] - pos[0]; + f32 mag = delta.abs(); + + dist += mag * 0.1f; + eyeDelta = pos[0] - view->mLookat.mEye; + delta = delta.outprod(eyeDelta); + scale = delta.abs(); + if (scale != 0.0f) + scale = r_size / scale; + + VECScale(&delta, &delta, scale); + VECAdd(&nextP0, &(pos[0] + delta), &nextP0); + VECAdd(&nextP1, &(pos[0] - delta), &nextP1); + + r_dstPos[2] = nextP0 * 0.5f; + r_dstPos[3] = nextP1 * 0.5f; + + pos++; + nextP0 = pos[0] + delta; + nextP1 = pos[0] - delta; + + j--; + r_dstTex++; + r_dstPos += 2; + } + + r_dstTex[0].y = dist; + r_dstTex[1].y = dist; + + if (space != 0) { + r_dstPos[0] = pos[0]; + r_dstPos[1] = pos[0]; + } else { + r_dstPos[0] = nextP0; + r_dstPos[1] = nextP1; + } + + DCStoreRangeNoSync(dstPos, posArrSize); + DCStoreRangeNoSync(dstTex, texArrSize); + line++; + } } /* 80015E54-80016518 .text update__19mDoExt_3DlineMat1_cFUsR8_GXColorP12dKy_tevstr_c */