d_resource 99%

J3DAnm vtable
This commit is contained in:
Jasper St. Pierre
2023-10-02 22:38:14 -07:00
parent 6ea08a5c37
commit b83f5a71fd
3 changed files with 31 additions and 19 deletions
+15 -12
View File
@@ -281,10 +281,8 @@ STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34);
class J3DAnmBase {
public:
J3DAnmBase(s16 i_frameMax) {
mAttribute = 0;
field_0x5 = 0;
mFrameMax = i_frameMax;
mFrame = 0.0f;
mFrameMax = i_frameMax;
}
virtual ~J3DAnmBase();
@@ -303,7 +301,12 @@ private:
class J3DAnmTransform : public J3DAnmBase {
public:
J3DAnmTransform(s16, f32*, s16*, f32*);
J3DAnmTransform(s16 i_frameMax, f32* p1, s16* p2, f32* p3) : J3DAnmBase(i_frameMax) {
field_0x10 = p2;
field_0x14 = p3;
field_0x18 = 0;
field_0xc = p1;
}
virtual ~J3DAnmTransform();
virtual s32 getKind() const;
@@ -313,17 +316,17 @@ private:
/* 0x0C */ f32* field_0xc;
/* 0x10 */ s16* field_0x10;
/* 0x14 */ f32* field_0x14;
/* 0x18 */ s16 field_0x18;
/* 0x1A */ s16 field_0x1a;
/* 0x1C */ s16 field_0x1c;
/* 0x1E */ s16 field_0x1e;
}; // Size: 0x20
/* 0x18 */ s32 field_0x18;
/* 0x1C */ s16 field_0x1a;
/* 0x1E */ s16 field_0x1c;
/* 0x20 */ s16 field_0x1e;
}; // Size: 0x22
class J3DAnmTransformKey : public J3DAnmTransform {
public:
J3DAnmTransformKey() : J3DAnmTransform(0, NULL, NULL, NULL) {
field_0x20 = 0;
field_0x24 = 0;
field_0x28 = 0;
}
void calcTransform(f32, u16, J3DTransformInfo*) const;
@@ -333,9 +336,9 @@ public:
virtual void getTransform(u16, J3DTransformInfo*) const;
private:
/* 0x20 */ int field_0x20;
/* 0x24 */ int field_0x24;
}; // Size: 0x28
/* 0x28 */ int field_0x28;
}; // Size: 0x2C
class J3DAnmTransformFull : public J3DAnmTransform {
public:
+1 -1
View File
@@ -217,7 +217,7 @@ public:
void* getBas() { return mBas; }
private:
/* 0x28 */ void* mBas;
/* 0x2C */ void* mBas;
};
class mDoExt_MtxCalcOldFrame {
+15 -6
View File
@@ -91,7 +91,7 @@ static void setToonTex(J3DModelData* pModel) {
J3DTevBlock * pTevBlock = pMaterial->getTevBlock();
if (pTevBlock != NULL) {
GXColorS10 * pTev3 = pTevBlock->getTevColor(3);
GXColorS10 * pTev3 = &pTevBlock->getTevColor(3)->mColor;
if (pTev3 != NULL)
pTev3->a = pTevBlock->getTevStageNum();
@@ -131,7 +131,7 @@ static void setToonTex(J3DMaterialTable* pMaterialTable) {
J3DTevBlock * pTevBlock = pMaterial->getTevBlock();
if (pTevBlock != NULL) {
GXColorS10 * pTev3 = pTevBlock->getTevColor(3);
GXColorS10 * pTev3 = &pTevBlock->getTevColor(3)->mColor;
if (pTev3 != NULL)
pTev3->a = pTevBlock->getTevStageNum();
}
@@ -142,8 +142,6 @@ static void setToonTex(J3DMaterialTable* pMaterialTable) {
/* 8006DFD4-8006E7A4 .text loadResource__11dRes_info_cFv */
int dRes_info_c::loadResource() {
// nonmatching, missing mDoExt_transAnmBas anm case
JUT_ASSERT(0x254, mRes == 0);
s32 fileNum = mpArchive->countFile();
@@ -317,8 +315,19 @@ int dRes_info_c::loadResource() {
pRes = J3DClusterLoaderDataBase::load(pRes);
if (pRes == NULL)
return -1;
} else if (resType == 'BCKS' || resType == 'BCK') {
// TODO
} else if (resType == 'BCKS' || resType == 'BCK ') {
void *pBasData;
if (*((u32*)((char*)pRes + 0x1C)) != 0xFFFFFFFF)
pBasData = (void*)(*((u32*)((char*)pRes + 0x1C)) + ((u32)pRes));
else
pBasData = NULL;
mDoExt_transAnmBas *pAnm = new mDoExt_transAnmBas(pBasData);
if (pAnm == NULL)
return -1;
J3DAnmLoaderDataBase::setResource(pAnm, pRes);
pRes = pAnm;
} else if (resType == 'BTP ' || resType == 'BTK ' || resType == 'BPK ' || resType == 'BRK ' || resType == 'BLK ' || resType == 'BVA ') {
pRes = J3DAnmLoaderDataBase::load(pRes);
if (pRes == NULL)