mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-09 12:35:59 -04:00
m_do_ext work
also jsys documentation
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
// Perhaps move to a new J3DEnum.h?
|
||||
enum J3DError {
|
||||
J3DErrType_Success = 0,
|
||||
J3DErrType_Locked = 2,
|
||||
J3DErrType_OutOfMemory = 4,
|
||||
};
|
||||
|
||||
|
||||
+49
-35
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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<J3DAnmTransformFullTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mScaleValOffset);
|
||||
param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRotValOffset);
|
||||
param_1->mTransData = JSUConvertOffsetToPtr<f32>(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<J3DAnmTransformFullTable>(data, (void*)data->mTableOffset);
|
||||
dst->mScaleData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mScaleValOffset);
|
||||
dst->mRotData = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRotValOffset);
|
||||
dst->mTransData = JSUConvertOffsetToPtr<f32>(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<J3DAnmColorFullTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mColorR = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mRValuesOffset);
|
||||
param_1->mColorG = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mGValuesOffset);
|
||||
param_1->mColorB = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mBValuesOffset);
|
||||
param_1->mColorA = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mAValuesOffset);
|
||||
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset);
|
||||
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<J3DAnmColorFullTable>(data, (void*)data->mTableOffset);
|
||||
dst->mColorR = JSUConvertOffsetToPtr<u8>(data, (void*)data->mRValuesOffset);
|
||||
dst->mColorG = JSUConvertOffsetToPtr<u8>(data, (void*)data->mGValuesOffset);
|
||||
dst->mColorB = JSUConvertOffsetToPtr<u8>(data, (void*)data->mBValuesOffset);
|
||||
dst->mColorA = JSUConvertOffsetToPtr<u8>(data, (void*)data->mAValuesOffset);
|
||||
dst->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mUpdateMaterialIDOffset);
|
||||
dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<J3DAnmTexPatternFullTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mTextureIndex = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mValuesOffset);
|
||||
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset);
|
||||
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<J3DAnmTexPatternFullTable>(data, (void*)data->mTableOffset);
|
||||
dst->mTextureIndex = JSUConvertOffsetToPtr<u16>(data, (void*)data->mValuesOffset);
|
||||
dst->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mUpdateMaterialIDOffset);
|
||||
dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<J3DAnmVisibilityFullTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mVisibility = JSUConvertOffsetToPtr<u8>(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<J3DAnmVisibilityFullTable>(data, (void*)data->mTableOffset);
|
||||
dst->mVisibility = JSUConvertOffsetToPtr<u8>(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<J3DAnmClusterFullTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mWeight = JSUConvertOffsetToPtr<f32>(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<J3DAnmClusterFullTable>(data, (void*)data->mTableOffset);
|
||||
dst->mWeight = JSUConvertOffsetToPtr<f32>(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<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x18);
|
||||
param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->field_0x1c);
|
||||
param_1->mTransData = JSUConvertOffsetToPtr<f32>(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<J3DAnmTransformKeyTable>(data, (void*)data->mTableOffset);
|
||||
dst->mScaleData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mScaleOffset);
|
||||
dst->mRotData = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRotOffset);
|
||||
dst->mTransData = JSUConvertOffsetToPtr<f32>(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<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMatIDOffset);
|
||||
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTab1Offset));
|
||||
param_1->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mUpdateTexMtxIDOffset);
|
||||
param_1->mSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->unkOffset);
|
||||
param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mScaleValOffset);
|
||||
param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRotValOffset);
|
||||
param_1->mTransData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mTransValOffset);
|
||||
if (param_2->mNameTab2Offset) {
|
||||
param_1->mPostUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<J3DAnmTransformKeyTable>(data, (void*)data->mTableOffset);
|
||||
dst->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mUpdateMatIDOffset);
|
||||
dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mNameTab1Offset));
|
||||
dst->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(data, (void*)data->mUpdateTexMtxIDOffset);
|
||||
dst->mSRTCenter = JSUConvertOffsetToPtr<Vec>(data, (void*)data->unkOffset);
|
||||
dst->mScaleData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mScaleValOffset);
|
||||
dst->mRotData = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRotValOffset);
|
||||
dst->mTransData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mTransValOffset);
|
||||
if (data->mNameTab2Offset) {
|
||||
dst->mPostUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mInfoTable2Offset);
|
||||
param_1->mPostUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->field_0x40);
|
||||
param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->field_0x48);
|
||||
param_1->mPostSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->field_0x4c);
|
||||
param_1->field_0x54 = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x50);
|
||||
param_1->field_0x58 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->field_0x54);
|
||||
param_1->field_0x5c = JSUConvertOffsetToPtr<f32>(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<J3DAnmTransformKeyTable>(data, (void*)data->mInfoTable2Offset);
|
||||
dst->mPostUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->field_0x40);
|
||||
dst->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(data, (void*)data->field_0x48);
|
||||
dst->mPostSRTCenter = JSUConvertOffsetToPtr<Vec>(data, (void*)data->field_0x4c);
|
||||
dst->field_0x54 = JSUConvertOffsetToPtr<f32>(data, (void*)data->field_0x50);
|
||||
dst->field_0x58 = JSUConvertOffsetToPtr<s16>(data, (void*)data->field_0x54);
|
||||
dst->field_0x5c = JSUConvertOffsetToPtr<f32>(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<J3DAnmColorKeyTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mColorR = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRValOffset);
|
||||
param_1->mColorG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mGValOffset);
|
||||
param_1->mColorB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mBValOffset);
|
||||
param_1->mColorA = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mAValOffset);
|
||||
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset);
|
||||
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<J3DAnmColorKeyTable>(data, (void*)data->mTableOffset);
|
||||
dst->mColorR = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRValOffset);
|
||||
dst->mColorG = JSUConvertOffsetToPtr<s16>(data, (void*)data->mGValOffset);
|
||||
dst->mColorB = JSUConvertOffsetToPtr<s16>(data, (void*)data->mBValOffset);
|
||||
dst->mColorA = JSUConvertOffsetToPtr<s16>(data, (void*)data->mAValOffset);
|
||||
dst->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mUpdateMaterialIDOffset);
|
||||
dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<J3DAnmClusterKeyTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mWeight = JSUConvertOffsetToPtr<f32>(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<J3DAnmClusterKeyTable>(data, (void*)data->mTableOffset);
|
||||
dst->mWeight = JSUConvertOffsetToPtr<f32>(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<J3DAnmCRegKeyTable>(param_2, (void*)param_2->mCRegTableOffset);
|
||||
param_1->mCRegUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mCRegUpdateMaterialIDOffset);
|
||||
param_1->mCRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mCRegNameTabOffset));
|
||||
param_1->mKRegUpdateMaterialNum = param_2->mKRegUpdateMaterialNum;
|
||||
param_1->mAnmKRegKeyTable = JSUConvertOffsetToPtr<J3DAnmKRegKeyTable>(param_2, (void*)param_2->mKRegTableOffset);
|
||||
param_1->mKRegUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mKRegUpdateMaterialIDOffset);
|
||||
param_1->mKRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<s16>(param_2, (void*)param_2->mCRValuesOffset);
|
||||
param_1->mAnmCRegDataG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCGValuesOffset);
|
||||
param_1->mAnmCRegDataB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCBValuesOffset);
|
||||
param_1->mAnmCRegDataA = JSUConvertOffsetToPtr<s16>(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<s16>(param_2, (void*)param_2->mKRValuesOffset);
|
||||
param_1->mAnmKRegDataG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKGValuesOffset);
|
||||
param_1->mAnmKRegDataB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKBValuesOffset);
|
||||
param_1->mAnmKRegDataA = JSUConvertOffsetToPtr<s16>(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<J3DAnmCRegKeyTable>(data, (void*)data->mCRegTableOffset);
|
||||
dst->mCRegUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mCRegUpdateMaterialIDOffset);
|
||||
dst->mCRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mCRegNameTabOffset));
|
||||
dst->mKRegUpdateMaterialNum = data->mKRegUpdateMaterialNum;
|
||||
dst->mAnmKRegKeyTable = JSUConvertOffsetToPtr<J3DAnmKRegKeyTable>(data, (void*)data->mKRegTableOffset);
|
||||
dst->mKRegUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mKRegUpdateMaterialIDOffset);
|
||||
dst->mKRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(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<s16>(data, (void*)data->mCRValuesOffset);
|
||||
dst->mAnmCRegDataG = JSUConvertOffsetToPtr<s16>(data, (void*)data->mCGValuesOffset);
|
||||
dst->mAnmCRegDataB = JSUConvertOffsetToPtr<s16>(data, (void*)data->mCBValuesOffset);
|
||||
dst->mAnmCRegDataA = JSUConvertOffsetToPtr<s16>(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<s16>(data, (void*)data->mKRValuesOffset);
|
||||
dst->mAnmKRegDataG = JSUConvertOffsetToPtr<s16>(data, (void*)data->mKGValuesOffset);
|
||||
dst->mAnmKRegDataB = JSUConvertOffsetToPtr<s16>(data, (void*)data->mKBValuesOffset);
|
||||
dst->mAnmKRegDataA = JSUConvertOffsetToPtr<s16>(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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
+326
-8
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user