This commit is contained in:
Caroline Madsen 2024-10-15 16:59:31 -04:00 committed by GitHub
parent 9895999b7b
commit 9f58034704
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
26 changed files with 1502 additions and 1647 deletions

View File

@ -988,10 +988,10 @@ config.libs = [
[
Object(Matching, "JSystem/J3DGraphAnimator/J3DShapeTable.cpp"),
Object(Matching, "JSystem/J3DGraphAnimator/J3DJointTree.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DModelData.cpp"),
Object(Equivalent, "JSystem/J3DGraphAnimator/J3DModelData.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DModel.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DAnimation.cpp"),
Object(Matching, "JSystem/J3DGraphAnimator/J3DModel.cpp"),
Object(Equivalent, "JSystem/J3DGraphAnimator/J3DAnimation.cpp"),
Object(Matching, "JSystem/J3DGraphAnimator/J3DMaterialAnm.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DSkinDeform.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DCluster.cpp"),
@ -1005,7 +1005,7 @@ config.libs = [
Object(NonMatching, "JSystem/J3DGraphLoader/J3DMaterialFactory.cpp"),
Object(NonMatching, "JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp"),
Object(NonMatching, "JSystem/J3DGraphLoader/J3DClusterLoader.cpp"),
Object(NonMatching, "JSystem/J3DGraphLoader/J3DModelLoader.cpp"),
Object(Equivalent, "JSystem/J3DGraphLoader/J3DModelLoader.cpp"),
Object(NonMatching, "JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp"),
Object(NonMatching, "JSystem/J3DGraphLoader/J3DJointFactory.cpp"),
Object(NonMatching, "JSystem/J3DGraphLoader/J3DShapeFactory.cpp"),

View File

@ -1,6 +1,7 @@
#ifndef J2DANIMATION_H
#define J2DANIMATION_H
#include "JSystem/JMath/JMath.h"
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
typedef struct _GXColor GXColor;
@ -468,37 +469,6 @@ public:
template <typename T>
inline f32 J2DHermiteInterpolation(f32, T*, T*, T*, T*, T*, T*);
inline f32 JMAHermiteInterpolation(register f32 p1, register f32 p2, register f32 p3,
register f32 p4, register f32 p5, register f32 p6,
register f32 p7) {
register f32 ff25;
register f32 ff31;
register f32 ff30;
register f32 ff29;
register f32 ff28;
register f32 ff27;
register f32 ff26;
// clang-format off
asm {
fsubs ff31, p1, p2
fsubs ff30, p5, p2
fdivs ff29, ff31, ff30
fmuls ff28,ff29,ff29
fadds ff25,ff29,ff29
fsubs ff27,ff28,ff29
fsubs ff30, p3, p6
fmsubs ff26,ff25,ff27,ff28
fmadds ff25,p4,ff27,p4
fmadds ff26,ff26,ff30,p3
fmadds ff25,p7,ff27,ff25
fmsubs ff25,ff29,p4,ff25
fnmsubs ff25,ff31,ff25,ff26
}
// clang-format on
return ff25;
}
template <>
inline f32 J2DHermiteInterpolation<f32>(f32 f1, f32* f2, f32* f3, f32* f4, f32* f5, f32* f6,
f32* f7) {

View File

@ -464,7 +464,7 @@ public:
mFrame = 0.0f;
}
virtual ~J3DAnmBase();
virtual ~J3DAnmBase() {}
virtual s32 getKind() const = 0;
u8 getAttribute() const { return mAttribute; }
@ -486,7 +486,7 @@ class J3DAnmTransform : public J3DAnmBase {
public:
/* 80328E40 */ J3DAnmTransform(s16, f32*, s16*, f32*);
/* 8003B93C */ virtual ~J3DAnmTransform();
/* 8003B93C */ virtual ~J3DAnmTransform() {}
/* 8003C77C */ virtual s32 getKind() const;
virtual void getTransform(u16, J3DTransformInfo*) const = 0;
@ -528,8 +528,8 @@ class J3DAnmTransformFull : public J3DAnmTransform {
public:
J3DAnmTransformFull() : J3DAnmTransform(0, NULL, NULL, NULL) { mAnmTable = NULL; }
/* 8032C2AC */ virtual ~J3DAnmTransformFull();
/* 8032C318 */ virtual s32 getKind() const;
/* 8032C2AC */ virtual ~J3DAnmTransformFull() {}
/* 8032C318 */ virtual s32 getKind() const { return 9; }
/* 80328E90 */ virtual void getTransform(u16, J3DTransformInfo*) const;
/* 0x20 */ J3DAnmTransformFullTable* mAnmTable;
@ -541,8 +541,8 @@ public:
*/
class J3DAnmTransformFullWithLerp : public J3DAnmTransformFull {
public:
/* 8032C228 */ virtual ~J3DAnmTransformFullWithLerp();
/* 8032C2A4 */ virtual s32 getKind() const;
/* 8032C228 */ virtual ~J3DAnmTransformFullWithLerp() {}
/* 8032C2A4 */ virtual s32 getKind() const { return 16; }
/* 803291F0 */ virtual void getTransform(u16, J3DTransformInfo*) const;
}; // Size: 0x24
@ -561,8 +561,8 @@ public:
/* 8032B0C0 */ void searchUpdateMaterialID(J3DMaterialTable*);
/* 8032B1D4 */ void searchUpdateMaterialID(J3DModelData*);
/* 8032C198 */ virtual ~J3DAnmTextureSRTKey();
/* 8032C220 */ virtual s32 getKind() const;
/* 8032C198 */ virtual ~J3DAnmTextureSRTKey() {}
/* 8032C220 */ virtual s32 getKind() const { return 4; }
void getTransform(u16 param_0, J3DTextureSRTInfo* pSRTInfo) const {
calcTransform(getFrame(), param_0, pSRTInfo);
@ -615,8 +615,8 @@ public:
/* 8032B004 */ void searchUpdateMaterialID(J3DMaterialTable*);
/* 8032B09C */ void searchUpdateMaterialID(J3DModelData*);
/* 8032BD20 */ virtual ~J3DAnmTexPattern();
/* 8032BD94 */ virtual s32 getKind() const;
/* 8032BD20 */ virtual ~J3DAnmTexPattern() {}
/* 8032BD94 */ virtual s32 getKind() const { return 2; }
u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; }
u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; }
@ -643,8 +643,8 @@ public:
/* 8032B780 */ void searchUpdateMaterialID(J3DMaterialTable*);
/* 8032B87C */ void searchUpdateMaterialID(J3DModelData*);
/* 8032BD9C */ virtual ~J3DAnmTevRegKey();
/* 8032BE24 */ virtual s32 getKind() const;
/* 8032BD9C */ virtual ~J3DAnmTevRegKey() {}
/* 8032BE24 */ virtual s32 getKind() const { return 5; }
u16 getCRegUpdateMaterialNum() const { return mCRegUpdateMaterialNum; }
u16 getKRegUpdateMaterialNum() const { return mKRegUpdateMaterialNum; }
@ -693,9 +693,9 @@ public:
/* 8032A828 */ J3DAnmColor();
/* 8032A8A4 */ void searchUpdateMaterialID(J3DMaterialTable*);
/* 8032BCAC */ virtual ~J3DAnmColor();
/* 8032BF44 */ virtual s32 getKind() const;
/* 8032BF4C */ virtual void getColor(u16, _GXColor*) const;
/* 8032BCAC */ virtual ~J3DAnmColor() {}
/* 8032BF44 */ virtual s32 getKind() const { return 1; }
/* 8032BF4C */ virtual void getColor(u16, GXColor*) const {}
u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; }
bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; }
@ -718,15 +718,15 @@ class J3DAnmColorKey : public J3DAnmColor {
public:
/* 8032AB00 */ J3DAnmColorKey();
/* 8032BE2C */ virtual ~J3DAnmColorKey();
/* 8032BEB0 */ virtual s32 getKind() const;
/* 8032AB54 */ virtual void getColor(u16, _GXColor*) const;
/* 8032BE2C */ virtual ~J3DAnmColorKey() {}
/* 8032BEB0 */ virtual s32 getKind() const { return 11; }
/* 8032AB54 */ virtual void getColor(u16, GXColor*) const;
/* 0x2C */ s16* field_0x2c;
/* 0x30 */ s16* field_0x30;
/* 0x34 */ s16* field_0x34;
/* 0x38 */ s16* field_0x38;
/* 0x3C */ J3DAnmColorKeyTable* field_0x3c;
/* 0x2C */ s16* mColorR;
/* 0x30 */ s16* mColorG;
/* 0x34 */ s16* mColorB;
/* 0x38 */ s16* mColorA;
/* 0x3C */ J3DAnmColorKeyTable* mAnmTable;
};
/**
@ -737,9 +737,9 @@ class J3DAnmColorFull : public J3DAnmColor {
public:
/* 8032AB00 */ J3DAnmColorFull();
/* 8032BE2C */ virtual ~J3DAnmColorFull();
/* 8032BEB0 */ virtual s32 getKind() const;
/* 8032AB54 */ virtual void getColor(u16, _GXColor*) const;
/* 8032BE2C */ virtual ~J3DAnmColorFull() {}
/* 8032BEB0 */ virtual s32 getKind() const { return 10; }
/* 8032AB54 */ virtual void getColor(u16, GXColor*) const;
/* 0x2C */ u8* mColorR;
/* 0x30 */ u8* mColorG;
@ -756,9 +756,9 @@ class J3DAnmVtxColor : public J3DAnmBase {
public:
J3DAnmVtxColor();
virtual ~J3DAnmVtxColor();
virtual s32 getKind() const;
virtual void getColor(u8, u16, _GXColor*) const;
virtual ~J3DAnmVtxColor() {}
virtual s32 getKind() const { return 7; }
virtual void getColor(u8, u16, GXColor*) const {}
/* 0x0C */ u16 mAnmTableNum[2];
/* 0x10 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2];
@ -772,15 +772,15 @@ class J3DAnmVtxColorKey : public J3DAnmVtxColor {
public:
/* 8032A4E0 */ J3DAnmVtxColorKey();
/* 8032BF50 */ virtual ~J3DAnmVtxColorKey();
/* 8032BFBC */ virtual s32 getKind() const;
/* 8032A53C */ virtual void getColor(u8, u16, _GXColor*) const;
/* 8032BF50 */ virtual ~J3DAnmVtxColorKey() {}
/* 8032BFBC */ virtual s32 getKind() const { return 15; }
/* 8032A53C */ virtual void getColor(u8, u16, GXColor*) const;
/* 0x1C */ J3DAnmColorKeyTable* mpTable[2];
/* 0x24 */ s16* mColorR;
/* 0x28 */ s16* mColorG;
/* 0x2C */ s16* mColorB;
/* 0x30 */ s16* mColorA;
/* 0x18 */ J3DAnmColorKeyTable* mpTable[2];
/* 0x20 */ s16* mColorR;
/* 0x24 */ s16* mColorG;
/* 0x28 */ s16* mColorB;
/* 0x2C */ s16* mColorA;
};
/**
@ -791,15 +791,15 @@ class J3DAnmVtxColorFull : public J3DAnmVtxColor {
public:
/* 8032A30C */ J3DAnmVtxColorFull();
/* 8032BFC4 */ virtual ~J3DAnmVtxColorFull();
/* 8032C030 */ virtual s32 getKind() const;
/* 8032A368 */ virtual void getColor(u8, u16, _GXColor*) const;
/* 8032BFC4 */ virtual ~J3DAnmVtxColorFull() {}
/* 8032C030 */ virtual s32 getKind() const { return 14; }
/* 8032A368 */ virtual void getColor(u8, u16, GXColor*) const;
/* 0x1C */ J3DAnmColorFullTable* mpTable[2];
/* 0x24 */ u8* mColorR;
/* 0x28 */ u8* mColorG;
/* 0x2C */ u8* mColorB;
/* 0x30 */ u8* mColorA;
/* 0x18 */ J3DAnmColorFullTable* mpTable[2];
/* 0x20 */ u8* mColorR;
/* 0x24 */ u8* mColorG;
/* 0x28 */ u8* mColorB;
/* 0x2C */ u8* mColorA;
};
/**
@ -810,9 +810,9 @@ class J3DAnmCluster : public J3DAnmBase {
public:
J3DAnmCluster(s16 param_1, f32* param_2) : J3DAnmBase(param_1) { mWeight = param_2; }
/* 8032BCAC */ virtual ~J3DAnmCluster();
/* 8032BF44 */ virtual s32 getKind() const;
/* 8032BF4C */ virtual f32 getWeight(u16) const;
/* 8032BCAC */ virtual ~J3DAnmCluster() {}
/* 8032BF44 */ virtual s32 getKind() const { return 3; }
/* 8032BF4C */ virtual f32 getWeight(u16) const { return 1.0f; }
/* 0x0C */ f32* mWeight;
}; // Size: 0x10
@ -825,8 +825,8 @@ class J3DAnmClusterFull : public J3DAnmCluster {
public:
J3DAnmClusterFull() : J3DAnmCluster(0, 0) { mAnmTable = NULL; }
/* 8032BCAC */ virtual ~J3DAnmClusterFull();
/* 8032BF44 */ virtual s32 getKind() const;
/* 8032BCAC */ virtual ~J3DAnmClusterFull() {}
/* 8032BF44 */ virtual s32 getKind() const { return 12; }
/* 8032BF4C */ virtual f32 getWeight(u16) const;
/* 0x10 */ J3DAnmClusterFullTable* mAnmTable;
@ -840,8 +840,8 @@ class J3DAnmClusterKey : public J3DAnmCluster {
public:
J3DAnmClusterKey() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; }
/* 8032C044 */ virtual ~J3DAnmClusterKey();
/* 8032C0B0 */ virtual s32 getKind() const;
/* 8032C044 */ virtual ~J3DAnmClusterKey() {}
/* 8032C0B0 */ virtual s32 getKind() const { return 13; }
/* 8032A218 */ virtual f32 getWeight(u16) const;
/* 0x10 */ J3DAnmClusterKeyTable* mAnmTable;

View File

@ -2,6 +2,7 @@
#define J3DJOINT_H
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
class J3DAnmTransform;
class J3DJoint;
@ -16,7 +17,7 @@ class J3DMtxCalc {
public:
/* 80325D1C */ static void setMtxBuffer(J3DMtxBuffer*);
/* 8000D948 */ virtual ~J3DMtxCalc();
/* 8000D948 */ virtual ~J3DMtxCalc() {}
/* 80014E90 */ virtual void setAnmTransform(J3DAnmTransform*);
/* 80014E9C */ virtual J3DAnmTransform* getAnmTransform();
/* 80014E8C */ virtual void setAnmTransform(u8, J3DAnmTransform*);
@ -34,29 +35,6 @@ public:
static J3DJoint* mJoint;
}; // Size: 0x4
/**
* @ingroup jsystem-j3d
*
*/
class J3DMtxCalcNoAnmBase : public J3DMtxCalc {
public:
/* 8000FA8C */ virtual ~J3DMtxCalcNoAnmBase();
};
/**
* @ingroup jsystem-j3d
*
*/
template <class A, class B>
class J3DMtxCalcNoAnm : public J3DMtxCalcNoAnmBase {
public:
J3DMtxCalcNoAnm() {}
virtual ~J3DMtxCalcNoAnm() {}
virtual void init(const Vec& param_0, const Mtx& param_1);
virtual void calc();
};
class J3DJoint;
typedef int (*J3DJointCallBack)(J3DJoint*, int);
/**
@ -85,6 +63,7 @@ public:
J3DMtxCalc* getMtxCalc() { return mMtxCalc; }
J3DMtxCalc* getCurrentMtxCalc() { return mCurrentMtxCalc; };
J3DJoint* getChild() { return mChild; }
u8 getMtxType() { return (mKind & 0xf0) >> 4; }
void setMtxType(u8 type) { mKind = (mKind & ~0xf0) | (type << 4); }
static J3DMtxCalc* mCurrentMtxCalc;
@ -109,6 +88,39 @@ private:
/* 0x58 */ J3DMaterial* mMesh;
}; // Size: 0x5C
/**
* @ingroup jsystem-j3d
*
*/
class J3DMtxCalcNoAnmBase : public J3DMtxCalc {
public:
/* 8000FA8C */ virtual ~J3DMtxCalcNoAnmBase() {}
};
/**
* @ingroup jsystem-j3d
*
*/
template <class A, class B>
class J3DMtxCalcNoAnm : public J3DMtxCalcNoAnmBase {
public:
J3DMtxCalcNoAnm() {}
virtual ~J3DMtxCalcNoAnm() {}
virtual void init(const Vec& param_0, const Mtx& param_1) { B::init(param_0, param_1); }
virtual void calc() { A::calcTransform(mJoint->getTransformInfo()); }
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMtxCalcJ3DSysInitSoftimage {
/* 8032ECAC */ static void init(const Vec& param_0, const Mtx& param_1) {
J3DSys::mCurrentS = param_0;
MTXCopy(param_1, J3DSys::mCurrentMtx);
}
};
/**
* @ingroup jsystem-j3d
*

View File

@ -44,14 +44,14 @@ public:
/* 80325C00 */ void findImportantMtxIndex();
/* 80325CAC */ virtual void calc(J3DMtxBuffer*, Vec const&, f32 const (&)[3][4]);
/* 80325D24 */ virtual ~J3DJointTree();
/* 80325D24 */ virtual ~J3DJointTree() {}
J3DModelHierarchy const* getHierarchy() { return mHierarchy; }
void setHierarchy(J3DModelHierarchy* hierarchy) { mHierarchy = hierarchy; }
void setBasicMtxCalc(J3DMtxCalc* calc) { mBasicMtxCalc = calc; }
u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; }
u8 getWEvlpMixMtxNum(u16 idx) const { return mWEvlpMixMtxNum[idx]; }
u16 * getWEvlpMixIndex() const { return mWEvlpMixIndex; }
u16 * getWEvlpMixMtxIndex() const { return mWEvlpMixMtxIndex; }
f32 * getWEvlpMixWeight() const { return mWEvlpMixWeight; }
u16 * getWEvlpImportantMtxIndex() const { return mWEvlpImportantMtxIdx; }
u16 getDrawFullWgtMtxNum() const { return mDrawMtxData.mDrawFullWgtMtxNum; }
@ -82,7 +82,7 @@ private:
/* 0x1C */ u16 mJointNum;
/* 0x1E */ u16 mWEvlpMtxNum;
/* 0x20 */ u8* mWEvlpMixMtxNum;
/* 0x24 */ u16* mWEvlpMixIndex;
/* 0x24 */ u16* mWEvlpMixMtxIndex;
/* 0x28 */ f32* mWEvlpMixWeight;
/* 0x2C */ Mtx* mInvJointMtx;
/* 0x30 */ u16* mWEvlpImportantMtxIdx;

View File

@ -72,7 +72,7 @@ public:
/* 803276EC */ virtual void calcMaterial();
/* 80327858 */ virtual void calcDiffTexMtx();
/* 80327F40 */ virtual void viewCalc();
/* 80328350 */ virtual ~J3DModel();
/* 80328350 */ virtual ~J3DModel() {}
J3DModelData* getModelData() { return mModelData; }

View File

@ -25,7 +25,7 @@ public:
/* 803260CC */ void syncJ3DSysPointers() const;
/* 803260F8 */ void syncJ3DSysFlags() const;
/* 8032617C */ virtual ~J3DModelData();
/* 8032617C */ virtual ~J3DModelData() {}
J3DMaterialTable& getMaterialTable() { return mMaterialTable; }
JUTNameTab* getMaterialName() const { return mMaterialTable.getMaterialName(); }
@ -54,7 +54,7 @@ public:
J3DTexture* getTexture() const { return mMaterialTable.getTexture(); }
JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); }
u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); }
u16* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixIndex(); }
u16* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixMtxIndex(); }
f32* getWEvlpMixWeight() const { return mJointTree.getWEvlpMixWeight(); }
u8 getWEvlpMixMtxNum(u16 idx) const { return mJointTree.getWEvlpMixMtxNum(idx); }
u16* getWEvlpImportantMtxIndex() const { return mJointTree.getWEvlpImportantMtxIndex(); }

View File

@ -37,7 +37,7 @@ public:
u8 getEnvScaleFlag(int idx) const { return mpEvlpScaleFlagArr[idx]; }
Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr[1]; }
Mtx* getDrawMtxPtr() const { return mpDrawMtxArr[1][mCurrentViewNo]; }
Mtx* getDrawMtx(u16 idx) const { return &mpDrawMtxArr[1][mCurrentViewNo][idx]; }
Mtx* getDrawMtx(int idx) const { return &mpDrawMtxArr[1][mCurrentViewNo][idx]; }
Mtx33** getNrmMtxPtrPtr() const { return mpNrmMtxArr[1]; }
Mtx33* getNrmMtxPtr() const { return mpNrmMtxArr[1][mCurrentViewNo]; }
Mtx33* getNrmMtx(u16 idx) const { return &mpNrmMtxArr[1][mCurrentViewNo][idx]; }
@ -45,6 +45,10 @@ public:
Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[1][idx][mCurrentViewNo]; }
J3DJointTree* getJointTree() const { return mJointTree; }
void setNrmMtx(int idx, Mtx* mtx) {
J3DPSMtx33CopyFrom34(*mtx, mpNrmMtxArr[1][mCurrentViewNo][idx]);
}
void swapDrawMtx() {
Mtx* tmp = mpDrawMtxArr[0][mCurrentViewNo];
mpDrawMtxArr[0][mCurrentViewNo] = mpDrawMtxArr[1][mCurrentViewNo];
@ -70,13 +74,13 @@ private:
/* 0x10 */ Mtx* mpWeightEvlpMtx;
/* 0x14 */ Mtx** mpDrawMtxArr[2];
/* 0x1C */ Mtx33** mpNrmMtxArr[2];
/* 0x28 */ Mtx33*** mpBumpMtxArr[2];
/* 0x24 */ Mtx33*** mpBumpMtxArr[2];
/* 0x2C */ u32 mFlags;
/* 0x30 */ u32 mCurrentViewNo;
/* 0x34 */ Mtx* mpUserAnmMtx;
public:
/* 803283B4 */ virtual ~J3DMtxBuffer();
/* 803283B4 */ virtual ~J3DMtxBuffer() {}
};
void J3DCalcViewBaseMtx(f32 (*param_0)[4], Vec const& param_1, f32 const (&param_2)[3][4],

View File

@ -22,7 +22,7 @@ public:
/* 80325910 */ void initShapeNodes(J3DDrawMtxData*, J3DVertexData*);
/* 8032597C */ void sortVcdVatCmd();
virtual ~J3DShapeTable();
virtual ~J3DShapeTable() {}
u16 getShapeNum() const { return mShapeNum; }
J3DShape* getShapeNodePointer(u16 idx) const { return mShapeNodePointer[idx]; }

View File

@ -89,7 +89,9 @@ public:
/* 8032EBCC */ void normalizeWeight(int, f32*);
void offFlag(u32 i_flag) { mFlags &= ~i_flag; }
bool checkFlag(u32 i_flag) { return mFlags & i_flag; }
void setAnmCluster(J3DAnmCluster* anm) { mAnmCluster = anm; }
void normalize(f32* i_vec) { VECNormalize((Vec*)i_vec, (Vec*)i_vec); }
/* 0x00 */ J3DDeformData* mDeformData;
/* 0x04 */ J3DAnmCluster* mAnmCluster;

View File

@ -123,6 +123,7 @@ public:
void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; }
bool getNBTFlag() const { return mHasNBT; }
u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
void setBumpMtxOffset(u32 offset) { mBumpMtxOffset = offset; }
GXVtxDescList* getVtxDesc() const { return mVtxDesc; }
J3DMaterial* getMaterial() const { return mMaterial; }

View File

@ -15,6 +15,7 @@ public:
Mtx& getMtx(u16 idx) { return mpTexMtx[idx]; }
Mtx44& getEffectMtx(u16 idx) { return mpEffectMtx[idx]; }
u16 getNumTexMtx() { return mTexMtxNum; }
void setMtx(u16 idx, Mtx const* mtx) { MTXCopy(*mtx, mpTexMtx[idx]); }
/* 0x00 */ Mtx* mpTexMtx;
/* 0x04 */ Mtx44* mpEffectMtx;

View File

@ -268,8 +268,7 @@ public:
/* 80337010 */ u32 calcSizePatchedMaterial(J3DMaterialBlock const*, u32);
/* 803370A0 */ u32 calcSizeMaterialDL(J3DMaterialDLBlock const*, u32);
// Remove when J3DModelLoader.cc is ok
#ifndef NON_VIRTUAL_J3DModelLoader
/* 803347E0 */ virtual J3DModelData* load(void const*, u32);
/* 80334ABC */ virtual J3DMaterialTable* loadMaterialTable(void const*);
/* 80334C20 */ virtual J3DModelData* loadBinaryDisplayList(void const*, u32);
@ -278,32 +277,13 @@ public:
/* 80336A98 */ virtual u32 calcLoadBinaryDisplayListSize(void const*, u32);
/* 80336794 */ virtual u16 countMaterialNum(void const*);
/* 80334EE0 */ virtual void setupBBoardInfo();
/* 80336450 */ virtual ~J3DModelLoader();
/* 8033649C */ virtual void readMaterial(J3DMaterialBlock const*, u32);
/* 80336498 */ virtual void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A4 */ virtual void readMaterialTable(J3DMaterialBlock const*, u32);
/* 803364A0 */ virtual void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A8 */ virtual u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
/* 803364B0 */ virtual u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
#else
/* 803347E0 */ J3DModelData* load(void const*, u32);
/* 80334ABC */ J3DMaterialTable* loadMaterialTable(void const*);
/* 80334C20 */ J3DModelData* loadBinaryDisplayList(void const*, u32);
/* 803367D4 */ u32 calcLoadSize(void const*, u32);
/* 803369A0 */ u32 calcLoadMaterialTableSize(void const*);
/* 80336A98 */ u32 calcLoadBinaryDisplayListSize(void const*, u32);
/* 80336794 */ u16 countMaterialNum(void const*);
/* 80334EE0 */ void setupBBoardInfo();
/* 80336450 */ ~J3DModelLoader();
/* 8033649C */ void readMaterial(J3DMaterialBlock const*, u32);
/* 80336498 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
/* 803364A0 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
/* 803364A8 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
/* 803364B0 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
/* 0x00 */ void* _vtable;
#endif
/* 80336450 */ virtual ~J3DModelLoader() {}
/* 8033649C */ virtual void readMaterial(J3DMaterialBlock const*, u32) {}
/* 80336498 */ virtual void readMaterial_v21(J3DMaterialBlock_v21 const*, u32) {}
/* 803364A4 */ virtual void readMaterialTable(J3DMaterialBlock const*, u32) {}
/* 803364A0 */ virtual void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32) {}
/* 803364A8 */ virtual u32 calcSizeMaterial(J3DMaterialBlock const*, u32) { return false; }
/* 803364B0 */ virtual u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32) { return false; }
/* 0x04 */ J3DModelData* mpModelData;
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
@ -319,44 +299,24 @@ public:
* @ingroup jsystem-j3d
*
*/
class J3DModelLoader_v21 { // : public J3DModelLoader {
class J3DModelLoader_v21 : public J3DModelLoader {
public:
/* 803363F4 */ ~J3DModelLoader_v21() {}
/* 80335890 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
/* 80335E20 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
/* 0x00 */ void* _vtable;
/* 0x04 */ J3DModelData* mpModelData;
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1A */ u16 mEnvelopeSize;
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoader_v26 { // : public J3DModelLoader {
class J3DModelLoader_v26 : public J3DModelLoader {
public:
/* 80336398 */ ~J3DModelLoader_v26() {}
/* 80335614 */ void readMaterial(J3DMaterialBlock const*, u32);
/* 80335CE4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
/* 80336DB4 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
/* 80336F60 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
/* 0x00 */ void* _vtable;
/* 0x04 */ J3DModelData* mpModelData;
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1A */ u16 mEnvelopeSize;
};
/**

View File

@ -13,7 +13,10 @@ struct TAngleConstant_;
*/
template<>
struct TAngleConstant_<f32> {
static inline f32 RADIAN_DEG360() { return 6.2831855f; }
static f32 RADIAN_DEG090() { return 1.5707964f; }
static f32 RADIAN_DEG180() { return 3.1415927f; }
static f32 RADIAN_DEG360() { return 6.2831855f; }
static f32 RADIAN_TO_DEGREE_FACTOR() { return 180.0f / RADIAN_DEG180(); }
};
/**
@ -72,12 +75,32 @@ struct TAtanTable {
struct TAsinAcosTable {
f32 table[1025];
u8 pad[0x1C];
f32 acos_(f32 x) {
if (x >= 1.0f) {
return 0.0f;
} else if (x <= -1.0f) {
return TAngleConstant_<f32>::RADIAN_DEG180();
} else if (x < 0.0f) {
return table[(u32)(-x * 1023.5f)] + TAngleConstant_<f32>::RADIAN_DEG090();
} else {
return TAngleConstant_<f32>::RADIAN_DEG090() - table[(u32)(x * 1023.5f)];
}
}
f32 acosDegree(f32 x) {
return acos_(x) * TAngleConstant_<f32>::RADIAN_TO_DEGREE_FACTOR();
}
};
namespace JMath {
extern TSinCosTable<13, f32> sincosTable_;
extern TAtanTable atanTable_;
extern TAsinAcosTable asinAcosTable_;
inline f32 acosDegree(f32 x) {
return asinAcosTable_.acosDegree(x);
}
}; // namespace JMath
inline f32 JMASCosShort(s16 v) {

View File

@ -34,6 +34,37 @@ inline f32 JMAFastSqrt(register f32 input) {
}
}
inline f32 JMAHermiteInterpolation(register f32 p1, register f32 p2, register f32 p3,
register f32 p4, register f32 p5, register f32 p6,
register f32 p7) {
register f32 ff25;
register f32 ff31;
register f32 ff30;
register f32 ff29;
register f32 ff28;
register f32 ff27;
register f32 ff26;
// clang-format off
asm {
fsubs ff31, p1, p2
fsubs ff30, p5, p2
fdivs ff29, ff31, ff30
fmuls ff28,ff29,ff29
fadds ff25,ff29,ff29
fsubs ff27,ff28,ff29
fsubs ff30, p3, p6
fmsubs ff26,ff25,ff27,ff28
fmadds ff25,p4,ff27,p4
fmadds ff26,ff26,ff30,p3
fmadds ff25,p7,ff27,ff25
fmsubs ff25,ff29,p4,ff25
fnmsubs ff25,ff31,ff25,ff26
}
// clang-format on
return ff25;
}
namespace JMath {
inline f32 fastReciprocal(f32 value) {

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,8 @@
#include "JSystem/J3DGraphAnimator/J3DCluster.h"
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "dol2asm.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "dolphin/base/PPCArch.h"
#include "dolphin/os.h"
#ifdef DEBUG
@ -20,42 +21,6 @@
#define J3D_ASSERT(COND)
#endif
//
// Forward References:
//
extern "C" void __ct__13J3DDeformDataFv();
extern "C" void offAllFlag__13J3DDeformDataFUl();
extern "C" void deform__13J3DDeformDataFP8J3DModel();
extern "C" void deform__13J3DDeformDataFP15J3DVertexBuffer();
extern "C" void setAnm__13J3DDeformDataFP13J3DAnmCluster();
extern "C" void __ct__11J3DDeformerFP13J3DDeformData();
extern "C" void deform__11J3DDeformerFP15J3DVertexBufferUs();
extern "C" void deform_VtxPosF32__11J3DDeformerFP15J3DVertexBufferP10J3DClusterP13J3DClusterKeyPf();
extern "C" void deform_VtxNrmF32__11J3DDeformerFP15J3DVertexBufferP10J3DClusterP13J3DClusterKeyPf();
extern "C" void deform__11J3DDeformerFP15J3DVertexBufferUsPf();
extern "C" void normalizeWeight__11J3DDeformerFiPf();
//
// External References:
//
extern "C" void PPCSync();
extern "C" void __cvt_fp2unsigned();
extern "C" void _savegpr_21();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_21();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" f32 asinAcosTable___5JMath[1032];
//
// Declarations:
//
/* 8032E1F8-8032E230 328B38 0038+00 0/0 1/1 0/0 .text __ct__13J3DDeformDataFv */
J3DDeformData::J3DDeformData() {
mClusterNum = 0;
@ -145,68 +110,169 @@ void J3DDeformer::deform(J3DVertexBuffer* buffer, u16 param_1) {
}
}
/* ############################################################################################## */
/* 80456470-80456474 004A70 0004+00 2/2 0/0 0/0 .sdata2 @830 */
SECTION_SDATA2 static f32 lit_830 = 1.0f;
/* 80456474-80456478 004A74 0004+00 1/1 0/0 0/0 .sdata2 @840 */
SECTION_SDATA2 static f32 lit_840 = 1.0f;
/* 80456478-8045647C 004A78 0004+00 1/1 0/0 0/0 .sdata2 None */
SECTION_SDATA2 static f32 data_80456478 = -1.0f;
/* 8045647C-80456480 004A7C 0004+00 3/3 0/0 0/0 .sdata2 @866 */
SECTION_SDATA2 static u8 lit_866[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 8032E4A4-8032E60C 328DE4 0168+00 1/1 0/0 0/0 .text
* deform_VtxPosF32__11J3DDeformerFP15J3DVertexBufferP10J3DClusterP13J3DClusterKeyPf */
void J3DDeformer::deform_VtxPosF32(J3DVertexBuffer* param_0, J3DCluster* param_1,
J3DClusterKey* param_2, f32* param_3) {
// NONMATCHING
void J3DDeformer::deform_VtxPosF32(J3DVertexBuffer* i_buffer, J3DCluster* i_cluster,
J3DClusterKey* i_key, f32* i_weights) {
int posNum = i_cluster->mPosNum;
int keyNum = i_cluster->mKeyNum;
f32* vtxPosArray = (f32*)i_buffer->getVtxPosArrayPointer(0);
f32* deformVtxPos = mDeformData->getVtxPos();
u16* iVar9 = i_cluster->field_0x18;
for (int i = 0; i < posNum; i++) {
int index = iVar9[i] * 3;
vtxPosArray[index] = 0.0f;
vtxPosArray[index + 1] = 0.0f;
vtxPosArray[index + 2] = 0.0f;
}
f32 local_58[2] = {1.0f, -1.0f};
for (u16 i = 0; i < posNum; i++) {
int index = i_cluster->field_0x18[i] * 3;
for (u16 j = 0; j < keyNum; j++) {
int uVar7 = ((u16*)i_key[j].field_0x4)[i];
f32* deform = &deformVtxPos[(uVar7 & ~0xE000) * 3];
f32 deform0 = deform[0];
f32 deform1 = deform[1];
f32 deform2 = deform[2];
deform0 *= local_58[((uVar7 & 0x8000) >> 0xF)];
deform1 *= local_58[((uVar7 & 0x4000) >> 0xE)];
deform2 *= local_58[((uVar7 & 0x2000) >> 0xD)];
vtxPosArray[index] += deform0 * i_weights[j];
vtxPosArray[index + 1] += deform1 * i_weights[j];
vtxPosArray[index + 2] += deform2 * i_weights[j];
}
}
}
/* ############################################################################################## */
/* 80456480-80456484 004A80 0004+00 1/1 0/0 0/0 .sdata2 @1020 */
SECTION_SDATA2 static f32 lit_1020 = -1.0f;
/* 80456484-80456488 004A84 0004+00 1/1 0/0 0/0 .sdata2 @1021 */
SECTION_SDATA2 static f32 lit_1021 = 3.1415927410125732f;
/* 80456488-8045648C 004A88 0004+00 1/1 0/0 0/0 .sdata2 @1022 */
SECTION_SDATA2 static f32 lit_1022 = 1023.5f;
/* 8045648C-80456490 004A8C 0004+00 1/1 0/0 0/0 .sdata2 @1023 */
SECTION_SDATA2 static f32 lit_1023 = 1.5707963705062866f;
/* 80456490-80456494 004A90 0004+00 1/1 0/0 0/0 .sdata2 @1024 */
SECTION_SDATA2 static f32 lit_1024 = 57.2957763671875f;
/* 80456494-80456498 004A94 0004+00 1/1 0/0 0/0 .sdata2 @1025 */
SECTION_SDATA2 static f32 lit_1025 = 180.0f;
/* 80456498-804564A0 004A98 0008+00 1/1 0/0 0/0 .sdata2 @1027 */
SECTION_SDATA2 static f64 lit_1027 = 4503599627370496.0 /* cast u32 to float */;
/* 8032E60C-8032EAB4 328F4C 04A8+00 1/1 0/0 0/0 .text
* deform_VtxNrmF32__11J3DDeformerFP15J3DVertexBufferP10J3DClusterP13J3DClusterKeyPf */
void J3DDeformer::deform_VtxNrmF32(J3DVertexBuffer* param_0, J3DCluster* param_1,
J3DClusterKey* param_2, f32* param_3) {
// NONMATCHING
// NONMATCHING one missing mr
void J3DDeformer::deform_VtxNrmF32(J3DVertexBuffer* i_buffer, J3DCluster* i_cluster,
J3DClusterKey* i_key, f32* i_weights) {
f32* vtxNrmArray = (f32*)i_buffer->getVtxNrmArrayPointer(0);
f32* deformVtxNrm = mDeformData->getVtxNrm();
f32* iVar13 = field_0xc;
u16 keyNum = i_cluster->mKeyNum;
int uVar2 = i_cluster->field_0x16;
for (u16 i = 0; i < i_cluster->field_0x14; i++) {
int index = i * 3;
iVar13[index] = 0.0f;
iVar13[index + 1] = 0.0f;
iVar13[index + 2] = 0.0f;
for (u16 j = 0; j < keyNum; j++) {
int uVar3 = ((u16*)i_key[j].field_0x8)[i];
f32 deform0, deform1, deform2;
if (uVar3 & 0x8000) {
deform0 = -deformVtxNrm[(uVar3 & ~0xE000) * 3];
} else {
deform0 = deformVtxNrm[(uVar3 & ~0xE000) * 3];
}
if (uVar3 & 0x4000) {
deform1 = -deformVtxNrm[(uVar3 & ~0xE000) * 3 + 1];
} else {
deform1 = deformVtxNrm[(uVar3 & ~0xE000) * 3 + 1];
}
if (uVar3 & 0x2000) {
deform2 = -deformVtxNrm[(uVar3 & ~0xE000) * 3 + 2];
} else {
deform2 = deformVtxNrm[(uVar3 & ~0xE000) * 3 + 2];
}
iVar13[index] += deform0 * i_weights[j];
iVar13[index + 1] += deform1 * i_weights[j];
iVar13[index + 2] += deform2 * i_weights[j];
}
normalize(&iVar13[index]);
}
for (u16 i = 0; i < uVar2; i++) {
J3DClusterVertex* clusterVtx = &i_cluster->mClusterVertex[i];
Vec vec;
vec.x = 0.0f;
vec.y = 0.0f;
vec.z = 0.0f;
f32 scale = 1.0f / clusterVtx->mNum;
for (u16 j = 0; j < clusterVtx->mNum; j++) {
int index = clusterVtx->field_0x4[j] * 3;
vec.x += scale * iVar13[index];
vec.y += scale * iVar13[index + 1];
vec.z += scale * iVar13[index + 2];
}
normalize((f32*)&vec);
for (u16 j = 0; j < clusterVtx->mNum; j++) {
u16 tmp = clusterVtx->field_0x8[j];
if (tmp == 0xffff) {
continue;
}
int index = tmp * 3;
int index2 = clusterVtx->field_0x4[j] * 3;
f32 dot = vec.x * iVar13[index2] + vec.y * iVar13[index2 + 1]
+ vec.z * iVar13[index2 + 2];
f32 angle;
if (dot >= 1.0f) {
angle = 0.0f;
} else if (dot > -1.0f) {
angle = JMath::acosDegree(dot);
} else {
angle = 180.0f;
}
if (angle <= i_cluster->mMinAngle) {
vtxNrmArray[index] = vec.x;
vtxNrmArray[index + 1] = vec.y;
vtxNrmArray[index + 2] = vec.z;
} else if (angle > i_cluster->mMaxAngle) {
int index3 = clusterVtx->field_0x4[j];
Vec* iVar13a = (Vec*)iVar13;
vtxNrmArray[index] = iVar13a[index3].x;
vtxNrmArray[index + 1] = iVar13a[index3].y;
vtxNrmArray[index + 2] = iVar13a[index3].z;
} else {
f32 weight1 = (angle - i_cluster->mMinAngle)
/ (i_cluster->mMaxAngle - i_cluster->mMinAngle);
f32 weight2 = 1.0f - weight1;
vtxNrmArray[index] = weight1 * iVar13[index2] + weight2 * vec.x;
vtxNrmArray[index + 1] = weight1 * iVar13[index2 + 1] + weight2 * vec.y;
vtxNrmArray[index + 2] = weight1 * iVar13[index2 + 2] + weight2 * vec.z;
}
}
}
}
/* 8032EAB4-8032EBCC 3293F4 0118+00 1/1 0/0 0/0 .text deform__11J3DDeformerFP15J3DVertexBufferUsPf
*/
void J3DDeformer::deform(J3DVertexBuffer* param_0, u16 param_1, f32* param_2) {
// NONMATCHING
void J3DDeformer::deform(J3DVertexBuffer* i_buffer, u16 param_1, f32* i_weights) {
if (checkFlag(2) && i_buffer->getVertexData()->getVtxPosType() == 4) {
J3DCluster* cluster = mDeformData->getClusterPointer(param_1);
u16 offset = 0;
for (u16 i = 0; i < param_1; i++) {
offset += mDeformData->getClusterPointer(i)->mKeyNum + 1;
}
J3DClusterKey* clusterKey = mDeformData->getClusterKeyPointer(offset);
normalizeWeight(cluster->mKeyNum, i_weights);
deform_VtxPosF32(i_buffer, cluster, clusterKey, i_weights);
if (checkFlag(1) && cluster->mFlags != 0 && i_buffer->getVertexData()->getVtxNrmType() == 4)
{
deform_VtxNrmF32(i_buffer, cluster, clusterKey, i_weights);
}
}
}
/* 8032EBCC-8032EC28 32950C 005C+00 1/1 0/0 0/0 .text normalizeWeight__11J3DDeformerFiPf
*/
void J3DDeformer::normalizeWeight(int param_0, f32* param_1) {
// NONMATCHING
void J3DDeformer::normalizeWeight(int i_keyNum, f32* i_weights) {
f32 totalWeight = 0.0f;
for (u16 i = 0; i < i_keyNum; i++) {
totalWeight += i_weights[i];
}
f32 scale = 1.0f / totalWeight;
for (u16 i = 0; i < i_keyNum; i++) {
i_weights[i] *= scale;
}
}

View File

@ -4,7 +4,6 @@
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JMath/JMath.h"
#include "dol2asm.h"
#include "m_Do/m_Do_mtx.h"
/* 8032EC28-8032ECAC 329568 0084+00 0/0 1/1 0/0 .text

View File

@ -6,9 +6,9 @@
/* 80325A18-80325A9C 320358 0084+00 0/0 1/1 0/0 .text __ct__12J3DJointTreeFv */
J3DJointTree::J3DJointTree()
: mHierarchy(NULL), mFlags(0), mModelDataType(0), mRootNode(NULL), mBasicMtxCalc(NULL),
mJointNodePointer(NULL), mJointNum(0), mWEvlpMtxNum(0), mWEvlpMixMtxNum(0), mWEvlpMixIndex(0),
mWEvlpMixWeight(0), mInvJointMtx(NULL), mWEvlpImportantMtxIdx(0), field_0x40(0),
mJointName(NULL) {}
mJointNodePointer(NULL), mJointNum(0), mWEvlpMtxNum(0), mWEvlpMixMtxNum(0),
mWEvlpMixMtxIndex(0), mWEvlpMixWeight(0), mInvJointMtx(NULL), mWEvlpImportantMtxIdx(0),
field_0x40(0), mJointName(NULL) {}
/* 80325A9C-80325C00 3203DC 0164+00 1/0 2/2 0/0 .text
* makeHierarchy__12J3DJointTreeFP8J3DJointPPC17J3DModelHierarchyP16J3DMaterialTableP13J3DShapeTable
@ -86,7 +86,7 @@ void J3DJointTree::findImportantMtxIndex() {
const s32 wEvlpMtxNum = getWEvlpMtxNum();
u32 tableIdx = 0;
const u16 drawFullWgtMtxNum = getDrawFullWgtMtxNum();
const u16 * wEvlpMixIndex = getWEvlpMixIndex();
const u16 * wEvlpMixIndex = getWEvlpMixMtxIndex();
const f32 * wEvlpMixWeight = getWEvlpMixWeight();
u16 * wEvlpImportantMtxIdx = getWEvlpImportantMtxIndex();
@ -132,6 +132,3 @@ void J3DJointTree::calc(J3DMtxBuffer* pMtxBuffer, Vec const& scale, f32 const (&
void J3DMtxCalc::setMtxBuffer(J3DMtxBuffer* mtxBuffer) {
J3DMtxCalc::mMtxBuffer = mtxBuffer;
}
/* 80325D24-80325D88 320664 0064+00 1/0 0/0 0/0 .text __dt__12J3DJointTreeFv */
J3DJointTree::~J3DJointTree() {}

View File

@ -7,46 +7,6 @@
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void clear__16J3DMaterialTableFv();
extern "C" void __ct__16J3DMaterialTableFv();
extern "C" void __dt__16J3DMaterialTableFv();
extern "C" void removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor();
extern "C" void removeTexNoAnimator__16J3DMaterialTableFP16J3DAnmTexPattern();
extern "C" void removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey();
extern "C" void removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey();
extern "C" void createTexMtxForAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey();
extern "C" void entryMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor();
extern "C" void entryTexNoAnimator__16J3DMaterialTableFP16J3DAnmTexPattern();
extern "C" void entryTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey();
extern "C" void entryTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey();
//
// External References:
//
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void __as__13J3DTexMtxInfoFRC13J3DTexMtxInfo();
extern "C" void setMatColorAnm__14J3DMaterialAnmFiP14J3DMatColorAnm();
extern "C" void setTexMtxAnm__14J3DMaterialAnmFiP12J3DTexMtxAnm();
extern "C" void setTexNoAnm__14J3DMaterialAnmFiP11J3DTexNoAnm();
extern "C" void setTevColorAnm__14J3DMaterialAnmFiP14J3DTevColorAnm();
extern "C" void setTevKColorAnm__14J3DMaterialAnmFiP15J3DTevKColorAnm();
extern "C" void _savegpr_22();
extern "C" void _savegpr_24();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _restgpr_22();
extern "C" void _restgpr_24();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" extern void* __vt__11J3DTexNoAnm[3];
/* 8032F5A8-8032F5D0 329EE8 0028+00 0/0 1/1 0/0 .text clear__16J3DMaterialTableFv */
void J3DMaterialTable::clear() {
@ -250,8 +210,7 @@ int J3DMaterialTable::entryTexNoAnimator(J3DAnmTexPattern* param_1) {
/* 8032FCC4-8032FE70 32A604 01AC+00 0/0 14/14 6/6 .text
* entryTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey */
// getUpdateTexMtxID u8 issue / getSRTCenter
#ifdef NONMATCHING
// NONMATCHING getUpdateTexMtxID u8 issue
int J3DMaterialTable::entryTexMtxAnimator(J3DAnmTextureSRTKey* param_1) {
int rv = 0;
u16 materialNum = param_1->getUpdateMaterialNum();
@ -275,10 +234,13 @@ int J3DMaterialTable::entryTexMtxAnimator(J3DAnmTextureSRTKey* param_1) {
material->getTexCoord(texMtxID)->setTexGenMtx(texMtxID * 3 + 30);
}
J3DTexMtxInfo& iVar3 = material->getTexMtx(texMtxID)->getTexMtxInfo();
iVar3.mInfo = (iVar3.mInfo & 0x3f)| (param_1->getTexMtxCalcType() << 7);
iVar3.mCenter.x = param_1->getSRTCenter(i)->x;
iVar3.mCenter.y = param_1->getSRTCenter(i)->y;
iVar3.mCenter.z = param_1->getSRTCenter(i)->z;
iVar3.mInfo = (iVar3.mInfo & 0x3f) | (param_1->getTexMtxCalcType() << 7);
Vec* vec = param_1->getSRTCenter(i);
iVar3.mCenter.x = vec->x;
vec = param_1->getSRTCenter(i);
iVar3.mCenter.y = vec->y;
vec = param_1->getSRTCenter(i);
iVar3.mCenter.z = vec->z;
J3DTexMtxAnm texMtxAnm(i, param_1);
materialAnm->setTexMtxAnm(texMtxID, &texMtxAnm);
}
@ -287,11 +249,6 @@ int J3DMaterialTable::entryTexMtxAnimator(J3DAnmTextureSRTKey* param_1) {
}
return rv;
}
#else
int J3DMaterialTable::entryTexMtxAnimator(J3DAnmTextureSRTKey* param_0) {
// NONMATCHING
}
#endif
/* 8032FE70-8032FFEC 32A7B0 017C+00 0/0 10/10 4/4 .text
* entryTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey */

View File

@ -6,106 +6,8 @@
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "dol2asm.h"
#include "dolphin/os.h"
//
// Forward References:
//
extern "C" void initialize__8J3DModelFv();
extern "C" void entryModelData__8J3DModelFP12J3DModelDataUlUl();
extern "C" void createShapePacket__8J3DModelFP12J3DModelData();
extern "C" void createMatPacket__8J3DModelFP12J3DModelDataUl();
extern "C" void newDifferedDisplayList__8J3DModelFUl();
extern "C" void lock__8J3DModelFv();
extern "C" void unlock__8J3DModelFv();
extern "C" void calcMaterial__8J3DModelFv();
extern "C" void calcDiffTexMtx__8J3DModelFv();
extern "C" void diff__8J3DModelFv();
extern "C" void setDeformData__8J3DModelFP13J3DDeformDataUl();
extern "C" void setSkinDeform__8J3DModelFP13J3DSkinDeformUl();
extern "C" void calcAnmMtx__8J3DModelFv();
extern "C" void calcWeightEnvelopeMtx__8J3DModelFv();
extern "C" void update__8J3DModelFv();
extern "C" void calc__8J3DModelFv();
extern "C" void entry__8J3DModelFv();
extern "C" void viewCalc__8J3DModelFv();
extern "C" void calcNrmMtx__8J3DModelFv();
extern "C" void calcBumpMtx__8J3DModelFv();
extern "C" void calcBBoardMtx__8J3DModelFv();
extern "C" void prepareShapePackets__8J3DModelFv();
extern "C" void __dt__8J3DModelFv();
extern "C" void __dt__12J3DMtxBufferFv();
//
// External References:
//
extern "C" void* __nw__FUl();
extern "C" void* __nwa__FUl();
extern "C" void __dl__FPv();
extern "C" void setVertexData__15J3DVertexBufferFP13J3DVertexData();
extern "C" void __dt__15J3DVertexBufferFv();
extern "C" void copyLocalVtxArray__15J3DVertexBufferFUl();
extern "C" void allocTransformedVtxPosArray__15J3DVertexBufferFv();
extern "C" void allocTransformedVtxNrmArray__15J3DVertexBufferFv();
extern "C" void single_To_Double__17J3DDisplayListObjFv();
extern "C" void newDisplayList__13J3DDrawPacketFUl();
extern "C" void newSingleDisplayList__13J3DDrawPacketFUl();
extern "C" void __ct__12J3DMatPacketFv();
extern "C" void __dt__12J3DMatPacketFv();
extern "C" void addShapePacket__12J3DMatPacketFP14J3DShapePacket();
extern "C" void __ct__14J3DShapePacketFv();
extern "C" void __dt__14J3DShapePacketFv();
extern "C" void newDifferedDisplayList__14J3DShapePacketFUl();
extern "C" void calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f();
extern "C" void countDLSize__11J3DMaterialFv();
extern "C" void newSharedDisplayList__11J3DMaterialFUl();
extern "C" void newSingleSharedDisplayList__11J3DMaterialFUl();
extern "C" void syncJ3DSysFlags__12J3DModelDataCFv();
extern "C" void initialize__12J3DMtxBufferFv();
extern "C" void create__12J3DMtxBufferFP12J3DModelDataUl();
extern "C" void calcWeightEnvelopeMtx__12J3DMtxBufferFv();
extern "C" void calcDrawMtx__12J3DMtxBufferFUlRC3VecRA3_A4_Cf();
extern "C" void calcNrmMtx__12J3DMtxBufferFv();
extern "C" void calcBBoardMtx__12J3DMtxBufferFv();
extern "C" void J3DCalcViewBaseMtx__FPA4_fRC3VecRA3_A4_CfPA4_f();
extern "C" void initSkinInfo__13J3DSkinDeformFP12J3DModelData();
extern "C" void initMtxIndexArray__13J3DSkinDeformFP12J3DModelData();
extern "C" void changeFastSkinDL__13J3DSkinDeformFP12J3DModelData();
extern "C" void transformVtxPosNrm__13J3DSkinDeformFP12J3DModelData();
extern "C" void deform__13J3DSkinDeformFP8J3DModel();
extern "C" void calc__15J3DVtxColorCalcFP8J3DModel();
extern "C" void offAllFlag__13J3DDeformDataFUl();
extern "C" void deform__13J3DDeformDataFP8J3DModel();
extern "C" void entryIn__8J3DJointFv();
extern "C" void __construct_new_array();
extern "C" void _savegpr_23();
extern "C" void _savegpr_25();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_23();
extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
//
// Declarations:
//
/* ############################################################################################## */
/* 80456428-80456430 004A28 0004+04 1/1 0/0 0/0 .sdata2 @896 */
SECTION_SDATA2 static f32 lit_896[1 + 1 /* padding */] = {
1.0f,
/* padding */
0.0f,
};
/* 80327100-80327184 321A40 0084+00 0/0 3/3 0/0 .text initialize__8J3DModelFv */
void J3DModel::initialize() {
mModelData = NULL;
@ -131,27 +33,6 @@ void J3DModel::initialize() {
mUnkCalc2 = NULL;
}
/* ############################################################################################## */
/* 803CED20-803CED44 02BE40 0024+00 1/1 3/3 0/0 .data __vt__8J3DModel */
SECTION_DATA extern void* __vt__8J3DModel[9] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)update__8J3DModelFv,
(void*)entry__8J3DModelFv,
(void*)calc__8J3DModelFv,
(void*)calcMaterial__8J3DModelFv,
(void*)calcDiffTexMtx__8J3DModelFv,
(void*)viewCalc__8J3DModelFv,
(void*)__dt__8J3DModelFv,
};
/* 803CED44-803CED50 02BE64 000C+00 2/2 0/0 0/0 .data __vt__12J3DMtxBuffer */
SECTION_DATA extern void* __vt__12J3DMtxBuffer[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DMtxBufferFv,
};
/* 80327184-80327300 321AC4 017C+00 0/0 3/3 0/0 .text
* entryModelData__8J3DModelFP12J3DModelDataUlUl */
s32 J3DModel::entryModelData(J3DModelData* p_modelData, u32 modelFlag, u32 mtxBufferFlag) {
@ -373,38 +254,29 @@ void J3DModel::calcMaterial() {
}
/* 80327858-803279A0 322198 0148+00 1/0 0/0 0/0 .text calcDiffTexMtx__8J3DModelFv */
#if defined NON_MATCHING
// NONMATCHING regalloc
void J3DModel::calcDiffTexMtx() {
// regalloc
j3dSys.setModel(this);
u16 num;
num = getModelData()->getMaterialNum();
for (u16 i = 0; i < num; i++) {
j3dSys.setMatPacket(getMatPacket(i));
J3DMaterial* materialNode = getModelData()->getMaterialNodePointer(i);
for (u16 num = mModelData->getMaterialNum(), i = 0; i < num; i++) {
j3dSys.setMatPacket(&mMatPacket[i]);
J3DMaterial* materialNode = mModelData->getMaterialNodePointer(i);
materialNode->calcDiffTexMtx(getAnmMtx(materialNode->getJoint()->getJntNo()));
}
num = getModelData()->getShapeNum();
for (u16 i = 0; i < num; i++) {
for (u16 num = mModelData->getShapeNum(), i = 0; i < num; i++) {
J3DShapePacket* shapePacket = getShapePacket(i);
J3DTexGenBlock* texGenBlock =
getModelData()->getShapeNodePointer(i)->getMaterial()->getTexGenBlock();
mModelData->getShapeNodePointer(i)->getMaterial()->getTexGenBlock();
for (u16 j = 0; (int)j < 8; j++) {
J3DTexMtx* texMtxNode = texGenBlock->getTexMtx(j);
J3DTexMtxObj* texMtxObj = shapePacket->getTexMtxObj();
if (texMtxNode != NULL && texMtxObj != NULL) {
MTXCopy(texMtxNode->getMtx(), texMtxObj->getMtx(j));
texMtxObj->setMtx(j, &texMtxNode->getMtx());
}
}
}
}
#else
void J3DModel::calcDiffTexMtx() {
// NONMATCHING
}
#endif
/* 803279A0-80327A2C 3222E0 008C+00 0/0 2/2 0/0 .text diff__8J3DModelFv */
void J3DModel::diff() {
@ -668,12 +540,3 @@ void J3DModel::prepareShapePackets() {
}
}
}
/* 80328350-803283B4 322C90 0064+00 1/0 0/0 0/0 .text __dt__8J3DModelFv */
J3DModel::~J3DModel() {}
/* 803283B4-803283FC 322CF4 0048+00 1/0 0/0 0/0 .text __dt__12J3DMtxBufferFv */
extern "C" void __dt__12J3DMtxBufferFv() {
// asm J3DMtxBuffer::~J3DMtxBuffer() {
// NONMATCHING
}

View File

@ -6,47 +6,8 @@
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "dol2asm.h"
#include "dolphin/os.h"
//
// Forward References:
//
extern "C" void clear__12J3DModelDataFv();
extern "C" void __ct__12J3DModelDataFv();
extern "C" void newSharedDisplayList__12J3DModelDataFUl();
extern "C" void indexToPtr__12J3DModelDataFv();
extern "C" void makeSharedDL__12J3DModelDataFv();
extern "C" void simpleCalcMaterial__12J3DModelDataFUsPA4_f();
extern "C" void syncJ3DSysPointers__12J3DModelDataCFv();
extern "C" void syncJ3DSysFlags__12J3DModelDataCFv();
extern "C" void __dt__13J3DShapeTableFv();
extern "C" void __dt__12J3DModelDataFv();
//
// External References:
//
extern "C" void __dl__FPv();
extern "C" void __ct__13J3DVertexDataFv();
extern "C" void __dt__14J3DDrawMtxDataFv();
extern "C" void countDLSize__11J3DMaterialFv();
extern "C" void newSharedDisplayList__11J3DMaterialFUl();
extern "C" void newSingleSharedDisplayList__11J3DMaterialFUl();
extern "C" void __ct__12J3DJointTreeFv();
extern "C" void __ct__16J3DMaterialTableFv();
extern "C" void __dt__16J3DMaterialTableFv();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__12J3DJointTree[4 + 1 /* padding */];
//
// Declarations:
//
/* 80325D88-80325DA0 3206C8 0018+00 1/1 2/2 0/0 .text clear__12J3DModelDataFv */
void J3DModelData::clear() {
mpRawData = 0;
@ -55,21 +16,6 @@ void J3DModelData::clear() {
mbHasBillboard = 0;
}
/* ############################################################################################## */
/* 803CED08-803CED14 02BE28 000C+00 3/3 0/0 0/0 .data __vt__13J3DShapeTable */
SECTION_DATA extern void* __vt__13J3DShapeTable[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__13J3DShapeTableFv,
};
/* 803CED14-803CED20 02BE34 000C+00 2/2 0/0 0/0 .data __vt__12J3DModelData */
SECTION_DATA extern void* __vt__12J3DModelData[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DModelDataFv,
};
/* 80325DA0-80325E14 3206E0 0074+00 0/0 2/2 0/0 .text __ct__12J3DModelDataFv */
J3DModelData::J3DModelData() {
clear();
@ -169,14 +115,3 @@ void J3DModelData::syncJ3DSysFlags() const {
j3dSys.offFlag(J3DSysFlag_PostTexMtx);
}
}
/* 80326134-8032617C 320A74 0048+00 1/0 0/0 0/0 .text __dt__13J3DShapeTableFv */
extern "C" void __dt__13J3DShapeTableFv() {
// asm J3DShapeTable::~J3DShapeTable() {
// NONMATCHING
}
/* 8032617C-80326214 320ABC 0098+00 1/0 0/0 0/0 .text __dt__12J3DModelDataFv */
J3DModelData::~J3DModelData() {
// NONMATCHING
}

View File

@ -4,55 +4,8 @@
//
#include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void initialize__12J3DMtxBufferFv();
extern "C" void create__12J3DMtxBufferFP12J3DModelDataUl();
extern "C" void createAnmMtx__12J3DMtxBufferFP12J3DModelData();
extern "C" void createWeightEnvelopeMtx__12J3DMtxBufferFP12J3DModelData();
extern "C" void setNoUseDrawMtx__12J3DMtxBufferFv();
extern "C" void createDoubleDrawMtx__12J3DMtxBufferFP12J3DModelDataUl();
extern "C" void createBumpMtxArray__12J3DMtxBufferFP12J3DModelDataUl();
extern "C" void calcWeightEnvelopeMtx__12J3DMtxBufferFv();
extern "C" void calcDrawMtx__12J3DMtxBufferFUlRC3VecRA3_A4_Cf();
extern "C" void calcNrmMtx__12J3DMtxBufferFv();
extern "C" void calcBBoardMtx__12J3DMtxBufferFv();
extern "C" void J3DCalcViewBaseMtx__FPA4_fRC3VecRA3_A4_CfPA4_f();
extern "C" u8 sNoUseDrawMtx__12J3DMtxBuffer[48];
extern "C" u8 sNoUseNrmMtx__12J3DMtxBuffer[36 + 4 /* padding */];
extern "C" void* sNoUseDrawMtxPtr__12J3DMtxBuffer;
extern "C" void* sNoUseNrmMtxPtr__12J3DMtxBuffer;
//
// External References:
//
extern "C" void* __nwa__FUl();
extern "C" void* __nwa__FUli();
extern "C" void J3DCalcBBoardMtx__FPA4_f();
extern "C" void J3DCalcYBBoardMtx__FPA4_f();
extern "C" void J3DPSCalcInverseTranspose__FPA4_fPA3_f();
extern "C" void J3DPSMtxArrayConcat__FPA4_fPA4_fPA4_fUl();
extern "C" void countBumpMtxNum__8J3DShapeCFv();
extern "C" void _savegpr_19();
extern "C" void _savegpr_24();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_19();
extern "C" void _restgpr_24();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
//
// Declarations:
//
/* 80326214-80326258 320B54 0044+00 0/0 1/1 0/0 .text initialize__12J3DMtxBufferFv */
void J3DMtxBuffer::initialize() {
@ -156,7 +109,6 @@ s32 J3DMtxBuffer::createWeightEnvelopeMtx(J3DModelData* p_modelData) {
return kJ3DError_Success;
}
/* ############################################################################################## */
/* 804371C0-804371F0 063EE0 0030+00 1/0 0/0 0/0 .bss sNoUseDrawMtx__12J3DMtxBuffer */
Mtx J3DMtxBuffer::sNoUseDrawMtx;
@ -226,13 +178,71 @@ s32 J3DMtxBuffer::createDoubleDrawMtx(J3DModelData* p_modelData, u32 num) {
/* 80326664-803268D4 320FA4 0270+00 1/1 0/0 0/0 .text
* createBumpMtxArray__12J3DMtxBufferFP12J3DModelDataUl */
s32 J3DMtxBuffer::createBumpMtxArray(J3DModelData* param_0, u32 param_1) {
// NONMATCHING
s32 J3DMtxBuffer::createBumpMtxArray(J3DModelData* i_modelData, u32 param_1) {
if (i_modelData->getModelDataType() == 0) {
u32 bumpMtxNum = 0;
u16 materialCount = 0;
u16 materialNum = i_modelData->getMaterialNum();
for (u16 j = 0; j < materialNum; j++) {
J3DMaterial* material = i_modelData->getMaterialNodePointer(j);
if (material->getNBTScale()->mbHasScale == true) {
bumpMtxNum += material->getShape()->countBumpMtxNum();
materialCount++;
}
}
if ((u16)bumpMtxNum != 0 && param_1 != 0) {
for (int i = 0; i < 2; i++) {
mpBumpMtxArr[i] = new Mtx33**[(u16)materialCount];
if (mpBumpMtxArr[i] == NULL) {
return kJ3DError_Alloc;
}
}
}
for (int i = 0; i < 2; i++) {
u32 offset = 0;
u16 materialNum = i_modelData->getMaterialNum();
for (u16 j = 0; j < materialNum; j++) {
J3DMaterial* material = i_modelData->getMaterialNodePointer(j);
if (material->getNBTScale()->mbHasScale == true) {
mpBumpMtxArr[i][offset] = new Mtx33*[param_1];
if (mpBumpMtxArr[i][offset] == NULL) {
return kJ3DError_Alloc;
}
material->getShape()->setBumpMtxOffset(offset);
offset++;
}
}
}
for (int i = 0; i < 2; i++) {
u32 offset = 0;
u16 materialNum = i_modelData->getMaterialNum();
for (u16 j = 0; j < materialNum; j++) {
J3DMaterial* material = i_modelData->getMaterialNodePointer(j);
if (material->getNBTScale()->mbHasScale == true) {
for (int k = 0; k < param_1; k++) {
mpBumpMtxArr[i][offset][k] = new (0x20) Mtx33[i_modelData->getDrawMtxNum()];
if (mpBumpMtxArr[i][offset][k] == NULL) {
return kJ3DError_Alloc;
}
}
offset++;
}
}
}
if (materialCount != 0) {
i_modelData->setBumpFlag(1);
}
}
return kJ3DError_Success;
}
/* ############################################################################################## */
/* 80450978-80450980 0003F8 0008+00 1/1 0/0 0/0 .sdata J3DUnit01 */
SECTION_SDATA static u8 J3DUnit01[8] = {
static u8 J3DUnit01[8] = {
0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00,
};
@ -243,32 +253,99 @@ void J3DMtxBuffer::calcWeightEnvelopeMtx() {
/* 80326ACC-80326D3C 32140C 0270+00 0/0 1/1 0/0 .text
* calcDrawMtx__12J3DMtxBufferFUlRC3VecRA3_A4_Cf */
void J3DMtxBuffer::calcDrawMtx(u32 param_0, Vec const& param_1, f32 const (&param_2)[3][4]) {
// NONMATCHING
void J3DMtxBuffer::calcDrawMtx(u32 param_0, Vec const& param_1, Mtx const& param_2) {
MtxP viewMtx;
Mtx viewBaseMtx;
u16 fullWgtNum;
switch (param_0) {
case 0:
viewMtx = j3dSys.getViewMtx();
fullWgtNum = mJointTree->getDrawFullWgtMtxNum();
for (u16 i = 0; i < fullWgtNum; i++) {
MTXConcat(viewMtx, getAnmMtx(mJointTree->getDrawMtxIndex(i)), *getDrawMtx(i));
}
if (mJointTree->getDrawMtxNum() > fullWgtNum) {
J3DPSMtxArrayConcat(viewMtx, *mpWeightEvlpMtx, *getDrawMtx(fullWgtNum),
mJointTree->getWEvlpMtxNum());
}
break;
case 1:
fullWgtNum = mJointTree->getDrawFullWgtMtxNum();
for (u16 i = 0; i < fullWgtNum; i++) {
MTXCopy(getAnmMtx(mJointTree->getDrawMtxIndex(i)), *getDrawMtx(i));
}
fullWgtNum = mJointTree->getDrawFullWgtMtxNum();
for (u16 i = 0; i < fullWgtNum; i++) {
MTXCopy(getWeightAnmMtx(i), *getDrawMtx(mJointTree->getDrawFullWgtMtxNum() + i));
}
break;
case 2:
J3DCalcViewBaseMtx(j3dSys.getViewMtx(), param_1, param_2, viewBaseMtx);
fullWgtNum = mJointTree->getDrawFullWgtMtxNum();
for (u16 i = 0; i < fullWgtNum; i++) {
MTXConcat(viewBaseMtx, getAnmMtx(mJointTree->getDrawMtxIndex(i)), *getDrawMtx(i));
}
if (mJointTree->getDrawMtxNum() > mJointTree->getDrawFullWgtMtxNum()) {
J3DPSMtxArrayConcat(viewBaseMtx, *mpWeightEvlpMtx,
*getDrawMtx(mJointTree->getDrawFullWgtMtxNum()),
mJointTree->getWEvlpMtxNum());
}
break;
}
}
extern void J3DPSCalcInverseTranspose(Mtx p1, Mtx33 p2);
/* 80326D3C-80326EF0 32167C 01B4+00 0/0 1/1 0/0 .text calcNrmMtx__12J3DMtxBufferFv */
void J3DMtxBuffer::calcNrmMtx() {
// NONMATCHING
u16 drawMtxNum = mJointTree->getDrawMtxNum();
for (u16 i = 0; i < drawMtxNum; i++) {
if (mJointTree->getDrawMtxFlag(i) == 0) {
if (getScaleFlag(mJointTree->getDrawMtxIndex(i)) == 1) {
setNrmMtx(i, getDrawMtx(i));
} else {
J3DPSCalcInverseTranspose(*getDrawMtx(i), *getNrmMtx(i));
}
} else {
if (getEnvScaleFlag(mJointTree->getDrawMtxIndex(i)) == 1) {
setNrmMtx(i, getDrawMtx(i));
} else {
J3DPSCalcInverseTranspose(*getDrawMtx(i), *getNrmMtx(i));
}
}
}
}
/* ############################################################################################## */
/* 80456420-80456424 004A20 0004+00 1/1 0/0 0/0 .sdata2 @1320 */
SECTION_SDATA2 static f32 lit_1320 = 1.0f;
/* 80456424-80456428 004A24 0004+00 1/1 0/0 0/0 .sdata2 @1321 */
SECTION_SDATA2 static u8 lit_1321[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 80326EF0-80327048 321830 0158+00 0/0 1/1 0/0 .text calcBBoardMtx__12J3DMtxBufferFv */
void J3DMtxBuffer::calcBBoardMtx() {
// NONMATCHING
u16 drawMtxNum = mJointTree->getDrawMtxNum();
for (u16 i = 0; i < drawMtxNum; i++) {
if (mJointTree->getDrawMtxFlag(i) == 0) {
u16 index = mJointTree->getDrawMtxIndex(i);
if (mJointTree->getJointNodePointer(index)->getMtxType() == 1) {
MtxP drawMtx = *getDrawMtx(i);
J3DCalcBBoardMtx(drawMtx);
Mtx33* nrmMtx = getNrmMtx(i);
(*nrmMtx)[0][0] = 1.0f / drawMtx[0][0];
(*nrmMtx)[0][1] = 0.0f;
(*nrmMtx)[0][2] = 0.0f;
(*nrmMtx)[1][0] = 0.0f;
(*nrmMtx)[1][1] = 1.0f / drawMtx[1][1];
(*nrmMtx)[1][2] = 0.0f;
(*nrmMtx)[2][0] = 0.0f;
(*nrmMtx)[2][1] = 0.0f;
(*nrmMtx)[2][2] = 1.0f / drawMtx[2][2];
} else if (mJointTree->getJointNodePointer(index)->getMtxType() == 2) {
MtxP drawMtx = *getDrawMtx(i);
J3DCalcYBBoardMtx(drawMtx);
Mtx33* nrmMtx = getNrmMtx(i);
J3DPSCalcInverseTranspose(drawMtx, *nrmMtx);
}
}
}
}
/* 80327048-80327100 321988 00B8+00 1/1 1/1 0/0 .text
@ -292,4 +369,4 @@ void J3DCalcViewBaseMtx(Mtx view, Vec const& scale, const Mtx& base, Mtx dst) {
m[2][3] = base[2][3];
MTXConcat(view, m, dst);
}
}

View File

@ -795,12 +795,12 @@ void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* param_1, const J3DAnmColor
param_1->field_0xe = param_2->field_0x12;
param_1->field_0x10 = param_2->field_0x14;
param_1->field_0x12 = param_2->field_0x16;
param_1->field_0x3c =
param_1->mAnmTable =
JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(param_2, (void*)param_2->mTableOffset);
param_1->field_0x2c = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRValOffset);
param_1->field_0x30 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mGValOffset);
param_1->field_0x34 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mBValOffset);
param_1->field_0x38 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mAValOffset);
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(
@ -942,4 +942,4 @@ extern "C" void func_80339860(void* _this, void const* param_0, void const* para
// NONMATCHING
}
/* 803A2130-803A2130 02E790 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 803A2130-803A2130 02E790 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */

View File

@ -3,8 +3,6 @@
// Translation Unit: J3DModelLoader
//
#define NON_VIRTUAL_J3DModelLoader
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "JSystem/J3DGraphLoader/J3DJointFactory.h"
#include "JSystem/J3DGraphLoader/J3DMaterialFactory.h"
@ -16,251 +14,8 @@
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JSupport/JSupport.h"
#include "dolphin/os.h"
#include "dol2asm.h"
//
// Types:
//
struct J3DAnmTransform {};
//
// Forward References:
//
extern "C" void __ct__14J3DModelLoaderFv();
extern "C" void load__22J3DModelLoaderDataBaseFPCvUl();
extern "C" void load__14J3DModelLoaderFPCvUl();
extern "C" void loadMaterialTable__14J3DModelLoaderFPCv();
extern "C" void loadBinaryDisplayList__14J3DModelLoaderFPCvUl();
extern "C" void setupBBoardInfo__14J3DModelLoaderFv();
extern "C" void readInformation__14J3DModelLoaderFPC17J3DModelInfoBlockUl();
extern "C" static void getFmtType__FP17_GXVtxAttrFmtList7_GXAttr();
extern "C" void readVertex__14J3DModelLoaderFPC14J3DVertexBlock();
extern "C" void readEnvelop__14J3DModelLoaderFPC16J3DEnvelopeBlock();
extern "C" void readDraw__14J3DModelLoaderFPC12J3DDrawBlock();
extern "C" void readJoint__14J3DModelLoaderFPC13J3DJointBlock();
extern "C" void readMaterial__18J3DModelLoader_v26FPC16J3DMaterialBlockUl();
extern "C" void readMaterial_v21__18J3DModelLoader_v21FPC20J3DMaterialBlock_v21Ul();
extern "C" void readShape__14J3DModelLoaderFPC13J3DShapeBlockUl();
extern "C" void readTexture__14J3DModelLoaderFPC15J3DTextureBlock();
extern "C" void readMaterialTable__18J3DModelLoader_v26FPC16J3DMaterialBlockUl();
extern "C" void readMaterialTable_v21__18J3DModelLoader_v21FPC20J3DMaterialBlock_v21Ul();
extern "C" void readTextureTable__14J3DModelLoaderFPC15J3DTextureBlock();
extern "C" void readPatchedMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl();
extern "C" void readMaterialDL__14J3DModelLoaderFPC18J3DMaterialDLBlockUl();
extern "C" void modifyMaterial__14J3DModelLoaderFUl();
extern "C" void __dt__18J3DModelLoader_v26Fv();
extern "C" void __dt__18J3DModelLoader_v21Fv();
extern "C" void __dt__14J3DModelLoaderFv();
extern "C" void readMaterial_v21__14J3DModelLoaderFPC20J3DMaterialBlock_v21Ul();
extern "C" void readMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl();
extern "C" void readMaterialTable_v21__14J3DModelLoaderFPC20J3DMaterialBlock_v21Ul();
extern "C" void readMaterialTable__14J3DModelLoaderFPC16J3DMaterialBlockUl();
extern "C" bool calcSizeMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl();
extern "C" bool calcSizeMaterialTable__14J3DModelLoaderFPC16J3DMaterialBlockUl();
extern "C" void func_803364B8(void* _this);
extern "C" void func_80336524(void* _this, Vec const&, f32 const (&)[3][4]);
extern "C" void func_8033656C(void* _this);
extern "C" void func_80336594(void* _this);
extern "C" void func_80336600(void* _this, Vec const&, f32 const (&)[3][4]);
extern "C" void func_80336628(void* _this);
extern "C" void __ct__11J3DMaterialFv();
extern "C" void __dt__10J3DTextureFv();
extern "C" ResTIMG* func_803366EC(void const*, void const*);
extern "C" Mtx* func_80336704(void const*, void const*);
extern "C" void* func_8033671C(void const*, void const*);
extern "C" _GXVtxAttrFmtList* func_80336734(void const*, void const*);
extern "C" J3DModelHierarchy* func_8033674C(void const*, void const*);
extern "C" J3DShapeInitData* func_80336764(void const*, void const*);
extern "C" u16* func_8033677C(void const*, void const*);
extern "C" extern char const* const J3DModelLoader__stringBase0;
//
// External References:
//
extern "C" void setAnmTransform__10J3DMtxCalcFUcP15J3DAnmTransform();
extern "C" void setAnmTransform__10J3DMtxCalcFP15J3DAnmTransform();
extern "C" bool getAnmTransform__10J3DMtxCalcFUc();
extern "C" bool getAnmTransform__10J3DMtxCalcFv();
extern "C" void setWeight__10J3DMtxCalcFUcf();
extern "C" void getWeight__10J3DMtxCalcCFUc();
extern "C" void getTotalFreeSize__7JKRHeapFv();
extern "C" void* __nw__FUl();
extern "C" void* __nwa__FUl();
extern "C" void* __nwa__FUli();
extern "C" void __dl__FPv();
extern "C" void __ct__10JUTNameTabFPC7ResNTAB();
extern "C" u8* func_802F4260(void const*, void const*);
extern "C" u16* func_802F42C0(void const*, void const*);
extern "C" ResNTAB* func_8030A530(void const*, void const*);
extern "C" f32* func_8030A560(void const*, void const*);
extern "C" void initialize__11J3DMaterialFv();
extern "C" void initShapeNodes__13J3DShapeTableFP14J3DDrawMtxDataP13J3DVertexData();
extern "C" void sortVcdVatCmd__13J3DShapeTableFv();
extern "C" void
makeHierarchy__12J3DJointTreeFP8J3DJointPPC17J3DModelHierarchyP16J3DMaterialTableP13J3DShapeTable();
extern "C" void findImportantMtxIndex__12J3DJointTreeFv();
extern "C" void clear__12J3DModelDataFv();
extern "C" void __ct__12J3DModelDataFv();
extern "C" void indexToPtr__12J3DModelDataFv();
extern "C" void init__25J3DMtxCalcJ3DSysInitBasicFRC3VecRA3_A4_Cf();
extern "C" void calcTransform__28J3DMtxCalcCalcTransformBasicFRC16J3DTransformInfo();
extern "C" void calcTransform__32J3DMtxCalcCalcTransformSoftimageFRC16J3DTransformInfo();
extern "C" void clear__16J3DMaterialTableFv();
extern "C" void __ct__16J3DMaterialTableFv();
extern "C" void __ct__18J3DMaterialFactoryFRC16J3DMaterialBlock();
extern "C" void __ct__18J3DMaterialFactoryFRC18J3DMaterialDLBlock();
extern "C" void countUniqueMaterials__18J3DMaterialFactoryFv();
extern "C" void
create__18J3DMaterialFactoryCFP11J3DMaterialQ218J3DMaterialFactory12MaterialTypeiUl();
extern "C" void modifyPatchedCurrentMtx__18J3DMaterialFactoryCFP11J3DMateriali();
extern "C" void __dt__11J3DMaterialFv();
extern "C" void __ct__22J3DMaterialFactory_v21FRC20J3DMaterialBlock_v21();
extern "C" void countUniqueMaterials__22J3DMaterialFactory_v21Fv();
extern "C" void create__22J3DMaterialFactory_v21CFP11J3DMaterialiUl();
extern "C" void countMaterialNum__14J3DModelLoaderFPCv();
extern "C" void calcLoadSize__14J3DModelLoaderFPCvUl();
extern "C" void calcLoadMaterialTableSize__14J3DModelLoaderFPCv();
extern "C" void calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl();
extern "C" void calcSizeMaterial__18J3DModelLoader_v26FPC16J3DMaterialBlockUl();
extern "C" void calcSizeMaterialTable__18J3DModelLoader_v26FPC16J3DMaterialBlockUl();
extern "C" void __ct__15J3DJointFactoryFRC13J3DJointBlock();
extern "C" void create__15J3DJointFactoryFi();
extern "C" void __ct__15J3DShapeFactoryFRC13J3DShapeBlock();
extern "C" void create__15J3DShapeFactoryFiUlP14_GXVtxDescList();
extern "C" void allocVcdVatCmdBuffer__15J3DShapeFactoryFUl();
extern "C" void __construct_new_array();
extern "C" void _savegpr_24();
extern "C" void _savegpr_25();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_24();
extern "C" void _restgpr_25();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* data_803A3360[11];
extern "C" extern void* __vt__19J3DMtxCalcNoAnmBase[11];
extern "C" extern void* __vt__10J3DMtxCalc[11 + 1 /* padding */];
extern "C" extern void* __vt__11J3DMaterial[12];
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" f32 mCurrentS__6J3DSys[3];
extern "C" u8 sCurrentHeap__7JKRHeap[4];
extern "C" u8 mJoint__10J3DMtxCalc[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 803CF108-803CF14C 02C228 0044+00 2/2 0/0 0/0 .data __vt__18J3DModelLoader_v21 */
SECTION_DATA extern void* __vt__18J3DModelLoader_v21[17] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)load__14J3DModelLoaderFPCvUl,
(void*)loadMaterialTable__14J3DModelLoaderFPCv,
(void*)loadBinaryDisplayList__14J3DModelLoaderFPCvUl,
(void*)calcLoadSize__14J3DModelLoaderFPCvUl,
(void*)calcLoadMaterialTableSize__14J3DModelLoaderFPCv,
(void*)calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl,
(void*)countMaterialNum__14J3DModelLoaderFPCv,
(void*)setupBBoardInfo__14J3DModelLoaderFv,
(void*)__dt__18J3DModelLoader_v21Fv,
(void*)readMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl,
(void*)readMaterial_v21__18J3DModelLoader_v21FPC20J3DMaterialBlock_v21Ul,
(void*)readMaterialTable__14J3DModelLoaderFPC16J3DMaterialBlockUl,
(void*)readMaterialTable_v21__18J3DModelLoader_v21FPC20J3DMaterialBlock_v21Ul,
(void*)calcSizeMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl,
(void*)calcSizeMaterialTable__14J3DModelLoaderFPC16J3DMaterialBlockUl,
};
/* 803CF14C-803CF190 02C26C 0044+00 2/2 0/0 0/0 .data __vt__18J3DModelLoader_v26 */
SECTION_DATA extern void* __vt__18J3DModelLoader_v26[17] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)load__14J3DModelLoaderFPCvUl,
(void*)loadMaterialTable__14J3DModelLoaderFPCv,
(void*)loadBinaryDisplayList__14J3DModelLoaderFPCvUl,
(void*)calcLoadSize__14J3DModelLoaderFPCvUl,
(void*)calcLoadMaterialTableSize__14J3DModelLoaderFPCv,
(void*)calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl,
(void*)countMaterialNum__14J3DModelLoaderFPCv,
(void*)setupBBoardInfo__14J3DModelLoaderFv,
(void*)__dt__18J3DModelLoader_v26Fv,
(void*)readMaterial__18J3DModelLoader_v26FPC16J3DMaterialBlockUl,
(void*)readMaterial_v21__14J3DModelLoaderFPC20J3DMaterialBlock_v21Ul,
(void*)readMaterialTable__18J3DModelLoader_v26FPC16J3DMaterialBlockUl,
(void*)readMaterialTable_v21__14J3DModelLoaderFPC20J3DMaterialBlock_v21Ul,
(void*)calcSizeMaterial__18J3DModelLoader_v26FPC16J3DMaterialBlockUl,
(void*)calcSizeMaterialTable__18J3DModelLoader_v26FPC16J3DMaterialBlockUl,
};
/* 803CF190-803CF1BC 02C2B0 002C+00 2/2 0/0 0/0 .data
* __vt__83J3DMtxCalcNoAnm<32J3DMtxCalcCalcTransformSoftimage,29J3DMtxCalcJ3DSysInitSoftimage> */
SECTION_DATA extern void* data_803CF190[11] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)func_803364B8,
(void*)setAnmTransform__10J3DMtxCalcFP15J3DAnmTransform,
(void*)getAnmTransform__10J3DMtxCalcFv,
(void*)setAnmTransform__10J3DMtxCalcFUcP15J3DAnmTransform,
(void*)getAnmTransform__10J3DMtxCalcFUc,
(void*)setWeight__10J3DMtxCalcFUcf,
(void*)getWeight__10J3DMtxCalcCFUc,
(void*)func_80336524,
(void*)func_8033656C,
};
/* 803CF1BC-803CF1E8 02C2DC 002C+00 2/2 0/0 0/0 .data
* __vt__75J3DMtxCalcNoAnm<28J3DMtxCalcCalcTransformBasic,25J3DMtxCalcJ3DSysInitBasic> */
SECTION_DATA extern void* data_803CF1BC[11] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)func_80336594,
(void*)setAnmTransform__10J3DMtxCalcFP15J3DAnmTransform,
(void*)getAnmTransform__10J3DMtxCalcFv,
(void*)setAnmTransform__10J3DMtxCalcFUcP15J3DAnmTransform,
(void*)getAnmTransform__10J3DMtxCalcFUc,
(void*)setWeight__10J3DMtxCalcFUcf,
(void*)getWeight__10J3DMtxCalcCFUc,
(void*)func_80336600,
(void*)func_80336628,
};
/* 803CF1E8-803CF1F4 02C308 000C+00 4/4 0/0 0/0 .data __vt__10J3DTexture */
SECTION_DATA extern void* __vt__10J3DTexture[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__10J3DTextureFv,
};
/* 803CF1F4-803CF238 02C314 0044+00 5/5 0/0 0/0 .data __vt__14J3DModelLoader */
SECTION_DATA extern void* __vt__14J3DModelLoader[17] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)load__14J3DModelLoaderFPCvUl,
(void*)loadMaterialTable__14J3DModelLoaderFPCv,
(void*)loadBinaryDisplayList__14J3DModelLoaderFPCvUl,
(void*)calcLoadSize__14J3DModelLoaderFPCvUl,
(void*)calcLoadMaterialTableSize__14J3DModelLoaderFPCv,
(void*)calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl,
(void*)countMaterialNum__14J3DModelLoaderFPCv,
(void*)setupBBoardInfo__14J3DModelLoaderFv,
(void*)__dt__14J3DModelLoaderFv,
(void*)readMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl,
(void*)readMaterial_v21__14J3DModelLoaderFPC20J3DMaterialBlock_v21Ul,
(void*)readMaterialTable__14J3DModelLoaderFPC16J3DMaterialBlockUl,
(void*)readMaterialTable_v21__14J3DModelLoaderFPC20J3DMaterialBlock_v21Ul,
(void*)calcSizeMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl,
(void*)calcSizeMaterialTable__14J3DModelLoaderFPC16J3DMaterialBlockUl,
};
/* 8033468C-803346BC 32EFCC 0030+00 1/1 0/0 0/0 .text __ct__14J3DModelLoaderFv */
#ifdef NONMATCHING
// matches once vtable ordering is correct
J3DModelLoader::J3DModelLoader() :
mpModelData(NULL),
mpMaterialTable(NULL),
@ -271,15 +26,8 @@ J3DModelLoader::J3DModelLoader() :
mEnvelopeSize(0) {
/* empty function */
}
#else
J3DModelLoader::J3DModelLoader() {
// NONMATCHING
}
#endif
/* 803346BC-803347E0 32EFFC 0124+00 0/0 4/4 0/0 .text load__22J3DModelLoaderDataBaseFPCvUl */
#ifdef NONMATCHING
// matches once vtable ordering is correct
J3DModelData* J3DModelLoaderDataBase::load(void const* i_data, u32 i_flags) {
if (i_data == NULL) {
return NULL;
@ -297,18 +45,6 @@ J3DModelData* J3DModelLoaderDataBase::load(void const* i_data, u32 i_flags) {
}
return NULL;
}
#else
J3DModelData* J3DModelLoaderDataBase::load(void const* param_0, u32 param_1) {
// NONMATCHING
}
#endif
/* ############################################################################################## */
/* 803A20B0-803A20B0 02E710 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803A20B0 = "Unknown data block\n";
#pragma pop
/* 803347E0-80334ABC 32F120 02DC+00 4/1 0/0 0/0 .text load__14J3DModelLoaderFPCvUl */
J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
@ -370,8 +106,6 @@ J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
/* 80334ABC-80334C20 32F3FC 0164+00 3/0 0/0 0/0 .text loadMaterialTable__14J3DModelLoaderFPCv */
#ifdef NONMATCHING
// weak fn ordering
J3DMaterialTable* J3DModelLoader::loadMaterialTable(void const* i_data) {
mpMaterialTable = new J3DMaterialTable();
mpMaterialTable->clear();
@ -399,11 +133,6 @@ J3DMaterialTable* J3DModelLoader::loadMaterialTable(void const* i_data) {
}
return mpMaterialTable;
}
#else
J3DMaterialTable* J3DModelLoader::loadMaterialTable(void const* param_0) {
// NONMATCHING
}
#endif
/* 80334C20-80334EE0 32F560 02C0+00 3/0 0/0 0/0 .text
* loadBinaryDisplayList__14J3DModelLoaderFPCvUl */
@ -416,10 +145,11 @@ J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_fl
J3DModelFileData const* data = (J3DModelFileData*)i_data;
J3DModelBlock const* block = data->mBlocks;
for (u32 block_no = 0; block_no < data->mBlockNum; block_no++) {
s32 flags;
switch (block->mBlockType) {
case 'INF1':
s32 flags2 = i_flags;
readInformation((J3DModelInfoBlock*)block, flags2);
flags = i_flags;
readInformation((J3DModelInfoBlock*)block, flags);
break;
case 'VTX1':
readVertex((J3DVertexBlock*)block);
@ -444,7 +174,7 @@ J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_fl
modifyMaterial(i_flags);
break;
case 'MAT3':
s32 flags = 0x50100000;
flags = 0x50100000;
flags |= (i_flags & 0x3000000);
mpMaterialBlock = (J3DMaterialBlock*)block;
if (((u32)i_flags & 0x3000) == 0) {
@ -468,14 +198,6 @@ J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_fl
return mpModelData;
}
/* ############################################################################################## */
/* 803A20B0-803A20B0 02E710 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803A20C4 = "WRONG SHAPE MATRIX TYPE (__FILE__)\n";
#pragma pop
/* 80334EE0-80335048 32F820 0168+00 3/0 0/0 0/0 .text setupBBoardInfo__14J3DModelLoaderFv
*/
void J3DModelLoader::setupBBoardInfo() {
@ -483,12 +205,11 @@ void J3DModelLoader::setupBBoardInfo() {
J3DMaterial* mesh = mpModelData->getJointNodePointer(i)->getMesh();
if (mesh != NULL) {
u16 shape_index = mesh->getShape()->getIndex();
// u16* index_table = JSUConvertOffsetToPtr<u16>(mpShapeBlock, mpShapeBlock->mpIndexTable);
u16* index_table = func_8033677C(mpShapeBlock, mpShapeBlock->mpIndexTable);
u16* index_table = JSUConvertOffsetToPtr<u16>(mpShapeBlock,
(u32)mpShapeBlock->mpIndexTable);
J3DShapeInitData* shape_init_data =
// JSUConvertOffsetToPtr<J3DShapeInitData>(mpShapeBlock,
// mpShapeBlock->mpShapeInitData);
func_80336764(mpShapeBlock, mpShapeBlock->mpShapeInitData);
JSUConvertOffsetToPtr<J3DShapeInitData>(mpShapeBlock,
(u32)mpShapeBlock->mpShapeInitData);
J3DJoint* joint;
switch (shape_init_data[index_table[shape_index]].mShapeMtxType) {
case 0:
@ -519,8 +240,6 @@ void J3DModelLoader::setupBBoardInfo() {
/* 80335048-803351A4 32F988 015C+00 2/2 0/0 0/0 .text
* readInformation__14J3DModelLoaderFPC17J3DModelInfoBlockUl */
#ifdef NONMATCHING
// will match once generics located correctly
void J3DModelLoader::readInformation(J3DModelInfoBlock const* i_block, u32 i_flags) {
mpModelData->mFlags = i_flags | i_block->mFlags;
mpModelData->getJointTree().setFlag(mpModelData->mFlags);
@ -541,11 +260,6 @@ void J3DModelLoader::readInformation(J3DModelInfoBlock const* i_block, u32 i_fla
mpModelData->getVertexData().mVtxNum = i_block->mVtxNum;
mpModelData->setHierarchy(JSUConvertOffsetToPtr<J3DModelHierarchy>(i_block, i_block->mpHierarchy));
}
#else
void J3DModelLoader::readInformation(J3DModelInfoBlock const* i_block, u32 i_flags) {
// NONMATCHING
}
#endif
/* 803351A4-803351D0 32FAE4 002C+00 1/1 0/0 0/0 .text getFmtType__FP17_GXVtxAttrFmtList7_GXAttr */
static _GXCompType getFmtType(_GXVtxAttrFmtList* i_fmtList, _GXAttr i_attr) {
@ -562,23 +276,17 @@ static _GXCompType getFmtType(_GXVtxAttrFmtList* i_fmtList, _GXAttr i_attr) {
void J3DModelLoader::readVertex(J3DVertexBlock const* i_block) {
J3DVertexData& vertex_data = mpModelData->getVertexData();
vertex_data.mVtxAttrFmtList =
// JSUConvertOffsetToPtr<GXVtxAttrFmtList>(i_block, i_block->mpVtxAttrFmtList);
func_80336734(i_block, i_block->mpVtxAttrFmtList);
// vertex_data.mVtxPosArray = JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxPosArray);
vertex_data.mVtxPosArray = func_8033671C(i_block, i_block->mpVtxPosArray);
// vertex_data.mVtxNrmArray = JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxNrmArray);
vertex_data.mVtxNrmArray = func_8033671C(i_block, i_block->mpVtxNrmArray);
// vertex_data.mVtxNBTArray = JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxNBTArray);
vertex_data.mVtxNBTArray = func_8033671C(i_block, i_block->mpVtxNBTArray);
JSUConvertOffsetToPtr<GXVtxAttrFmtList>(i_block, i_block->mpVtxAttrFmtList);
vertex_data.mVtxPosArray = JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxPosArray);
vertex_data.mVtxNrmArray = JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxNrmArray);
vertex_data.mVtxNBTArray = JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxNBTArray);
for (int i = 0; i < 2; i++) {
vertex_data.mVtxColorArray[i] =
// (GXColor*)JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxColorArray[i]);
(GXColor*)func_8033671C(i_block, i_block->mpVtxColorArray[i]);
(GXColor*)JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxColorArray[i]);
}
for (int i = 0; i < 8; i++) {
vertex_data.mVtxTexCoordArray[i] =
// JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxTexCoordArray[i]);
func_8033671C(i_block, i_block->mpVtxTexCoordArray[i]);
JSUConvertOffsetToPtr<void>(i_block, i_block->mpVtxTexCoordArray[i]);
}
_GXCompType nrm_type = getFmtType(vertex_data.mVtxAttrFmtList, GX_VA_NRM);
@ -629,14 +337,12 @@ void J3DModelLoader::readEnvelop(J3DEnvelopeBlock const* i_block) {
mpModelData->getJointTree().mWEvlpMtxNum = i_block->mWEvlpMtxNum;
mpModelData->getJointTree().mWEvlpMixMtxNum =
JSUConvertOffsetToPtr<u8>(i_block, i_block->mpWEvlpMixMtxNum);
mpModelData->getJointTree().mWEvlpMixIndex =
mpModelData->getJointTree().mWEvlpMixMtxIndex =
JSUConvertOffsetToPtr<u16>(i_block, i_block->mpWEvlpMixIndex);
mpModelData->getJointTree().mWEvlpMixWeight =
// JSUConvertOffsetToPtr<f32>(i_block, i_block->mpWEvlpMixWeight);
func_8030A560(i_block, i_block->mpWEvlpMixWeight);
JSUConvertOffsetToPtr<f32>(i_block, i_block->mpWEvlpMixWeight);
mpModelData->getJointTree().mInvJointMtx =
// JSUConvertOffsetToPtr<Mtx>(i_block, i_block->mpInvJointMtx);
func_80336704(i_block, i_block->mpInvJointMtx);
JSUConvertOffsetToPtr<Mtx>(i_block, i_block->mpInvJointMtx);
}
/* 80335480-80335530 32FDC0 00B0+00 2/2 0/0 0/0 .text readDraw__14J3DModelLoaderFPC12J3DDrawBlock
@ -664,8 +370,7 @@ void J3DModelLoader::readJoint(J3DJointBlock const* i_block) {
mpModelData->getJointTree().mJointNum = i_block->mJointNum;
if (i_block->mpNameTable != NULL) {
mpModelData->getJointTree().mJointName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpModelData->getJointTree().mJointName = NULL;
}
@ -684,8 +389,7 @@ void J3DModelLoader_v26::readMaterial(J3DMaterialBlock const* i_block, u32 i_fla
mpMaterialTable->mUniqueMatNum = factory.countUniqueMaterials();
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpMaterialTable->mMaterialName = NULL;
}
@ -729,8 +433,7 @@ void J3DModelLoader_v21::readMaterial_v21(J3DMaterialBlock_v21 const* i_block, u
mpMaterialTable->mUniqueMatNum = factory.countUniqueMaterials();
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpMaterialTable->mMaterialName = NULL;
}
@ -772,8 +475,7 @@ void J3DModelLoader::readShape(J3DShapeBlock const* i_block, u32 i_flags) {
shape_table->mShapeNum = i_block->mShapeNum;
if (i_block->mpNameTable != NULL) {
shape_table->mShapeName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
shape_table->mShapeName = NULL;
}
@ -792,26 +494,17 @@ void J3DModelLoader::readShape(J3DShapeBlock const* i_block, u32 i_flags) {
/* 80335C18-80335CE4 330558 00CC+00 2/2 0/0 0/0 .text
* readTexture__14J3DModelLoaderFPC15J3DTextureBlock */
#ifdef NONMATCHING
// weak fn ordering
void J3DModelLoader::readTexture(J3DTextureBlock const* i_block) {
u16 texture_num = i_block->mTextureNum;
// ResTIMG* texture_res = JSUConvertOffsetToPtr<ResTIMG>(i_block, i_block->mpTextureRes);
ResTIMG* texture_res = func_803366EC(i_block, i_block->mpTextureRes);
ResTIMG* texture_res = JSUConvertOffsetToPtr<ResTIMG>(i_block, i_block->mpTextureRes);
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mTextureName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpMaterialTable->mTextureName = NULL;
}
mpMaterialTable->mTexture = new J3DTexture(texture_num, texture_res);
}
#else
void J3DModelLoader::readTexture(J3DTextureBlock const* param_0) {
// NONMATCHING
}
#endif
/* 80335CE4-80335E20 330624 013C+00 1/0 0/0 0/0 .text
* readMaterialTable__18J3DModelLoader_v26FPC16J3DMaterialBlockUl */
@ -820,8 +513,7 @@ void J3DModelLoader_v26::readMaterialTable(J3DMaterialBlock const* i_block, u32
mpMaterialTable->mMaterialNum = i_block->mMaterialNum;
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpMaterialTable->mMaterialName = NULL;
}
@ -843,8 +535,7 @@ void J3DModelLoader_v21::readMaterialTable_v21(J3DMaterialBlock_v21 const* i_blo
mpMaterialTable->mMaterialNum = i_block->mMaterialNum;
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpMaterialTable->mMaterialName = NULL;
}
@ -861,26 +552,17 @@ void J3DModelLoader_v21::readMaterialTable_v21(J3DMaterialBlock_v21 const* i_blo
/* 80335F5C-80336028 33089C 00CC+00 1/1 0/0 0/0 .text
* readTextureTable__14J3DModelLoaderFPC15J3DTextureBlock */
#ifdef NONMATCHING
// weak fn ordering
void J3DModelLoader::readTextureTable(J3DTextureBlock const* i_block) {
u16 texture_num = i_block->mTextureNum;
// ResTIMG* texture_res = JSUConvertOffsetToPtr<ResTIMG>(i_block, i_block->mpTextureRes);
ResTIMG* texture_res = func_803366EC(i_block, i_block->mpTextureRes);
ResTIMG* texture_res = JSUConvertOffsetToPtr<ResTIMG>(i_block, i_block->mpTextureRes);
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mTextureName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpMaterialTable->mTextureName = NULL;
}
mpMaterialTable->mTexture = new J3DTexture(texture_num, texture_res);
}
#else
void J3DModelLoader::readTextureTable(J3DTextureBlock const* param_0) {
// NONMATCHING
}
#endif
/* 80336028-80336168 330968 0140+00 1/1 0/0 0/0 .text
* readPatchedMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl */
@ -890,8 +572,7 @@ void J3DModelLoader::readPatchedMaterial(J3DMaterialBlock const* i_block, u32 i_
mpMaterialTable->mUniqueMatNum = factory.countUniqueMaterials();
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpMaterialTable->mMaterialName = NULL;
}
@ -916,8 +597,7 @@ void J3DModelLoader::readMaterialDL(J3DMaterialDLBlock const* i_block, u32 i_fla
mpMaterialTable->mUniqueMatNum = i_block->mMaterialNum;
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
// new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
new JUTNameTab(func_8030A530(i_block, i_block->mpNameTable));
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
} else {
mpMaterialTable->mMaterialName = NULL;
}
@ -951,148 +631,3 @@ void J3DModelLoader::modifyMaterial(u32 i_flags) {
}
}
}
/* 80336398-803363F4 330CD8 005C+00 1/0 0/0 0/0 .text __dt__18J3DModelLoader_v26Fv */
// J3DModelLoader_v26::~J3DModelLoader_v26() {
extern "C" void __dt__18J3DModelLoader_v26Fv() {
// NONMATCHING
}
/* 803363F4-80336450 330D34 005C+00 1/0 0/0 0/0 .text __dt__18J3DModelLoader_v21Fv */
// J3DModelLoader_v21::~J3DModelLoader_v21() {
extern "C" void __dt__18J3DModelLoader_v21Fv() {
// NONMATCHING
}
/* 80336450-80336498 330D90 0048+00 1/0 0/0 0/0 .text __dt__14J3DModelLoaderFv */
J3DModelLoader::~J3DModelLoader() {
// NONMATCHING
}
/* 80336498-8033649C 330DD8 0004+00 2/0 0/0 0/0 .text
* readMaterial_v21__14J3DModelLoaderFPC20J3DMaterialBlock_v21Ul */
void J3DModelLoader::readMaterial_v21(J3DMaterialBlock_v21 const* param_0, u32 param_1) {
/* empty function */
}
/* 8033649C-803364A0 330DDC 0004+00 2/0 0/0 0/0 .text
* readMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl */
void J3DModelLoader::readMaterial(J3DMaterialBlock const* param_0, u32 param_1) {
/* empty function */
}
/* 803364A0-803364A4 330DE0 0004+00 2/0 0/0 0/0 .text
* readMaterialTable_v21__14J3DModelLoaderFPC20J3DMaterialBlock_v21Ul */
void J3DModelLoader::readMaterialTable_v21(J3DMaterialBlock_v21 const* param_0, u32 param_1) {
/* empty function */
}
/* 803364A4-803364A8 330DE4 0004+00 2/0 0/0 0/0 .text
* readMaterialTable__14J3DModelLoaderFPC16J3DMaterialBlockUl */
void J3DModelLoader::readMaterialTable(J3DMaterialBlock const* param_0, u32 param_1) {
/* empty function */
}
/* 803364A8-803364B0 330DE8 0008+00 2/0 0/0 0/0 .text
* calcSizeMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl */
u32 J3DModelLoader::calcSizeMaterial(J3DMaterialBlock const* param_0, u32 param_1) {
return false;
}
/* 803364B0-803364B8 330DF0 0008+00 2/0 0/0 0/0 .text
* calcSizeMaterialTable__14J3DModelLoaderFPC16J3DMaterialBlockUl */
u32 J3DModelLoader::calcSizeMaterialTable(J3DMaterialBlock const* param_0, u32 param_1) {
return false;
}
/* 803364B8-80336524 330DF8 006C+00 1/0 0/0 0/0 .text
* __dt__83J3DMtxCalcNoAnm<32J3DMtxCalcCalcTransformSoftimage,29J3DMtxCalcJ3DSysInitSoftimage>Fv */
extern "C" void func_803364B8(void* _this) {
// NONMATCHING
}
/* 80336524-8033656C 330E64 0048+00 1/0 0/0 0/0 .text
* init__83J3DMtxCalcNoAnm<32J3DMtxCalcCalcTransformSoftimage,29J3DMtxCalcJ3DSysInitSoftimage>FRC3VecRA3_A4_Cf
*/
extern "C" void func_80336524(void* _this, Vec const& param_0, f32 const (&param_1)[3][4]) {
// NONMATCHING
}
/* 8033656C-80336594 330EAC 0028+00 1/0 0/0 0/0 .text
* calc__83J3DMtxCalcNoAnm<32J3DMtxCalcCalcTransformSoftimage,29J3DMtxCalcJ3DSysInitSoftimage>Fv */
extern "C" void func_8033656C(void* _this) {
// NONMATCHING
}
/* 80336594-80336600 330ED4 006C+00 1/0 0/0 0/0 .text
* __dt__75J3DMtxCalcNoAnm<28J3DMtxCalcCalcTransformBasic,25J3DMtxCalcJ3DSysInitBasic>Fv */
extern "C" void func_80336594(void* _this) {
// NONMATCHING
}
/* 80336600-80336628 330F40 0028+00 1/0 0/0 0/0 .text
* init__75J3DMtxCalcNoAnm<28J3DMtxCalcCalcTransformBasic,25J3DMtxCalcJ3DSysInitBasic>FRC3VecRA3_A4_Cf
*/
extern "C" void func_80336600(void* _this, Vec const& param_0, f32 const (&param_1)[3][4]) {
// NONMATCHING
}
/* 80336628-80336650 330F68 0028+00 1/0 0/0 0/0 .text
* calc__75J3DMtxCalcNoAnm<28J3DMtxCalcCalcTransformBasic,25J3DMtxCalcJ3DSysInitBasic>Fv */
extern "C" void func_80336628(void* _this) {
// NONMATCHING
}
/* 80336650-803366A4 330F90 0054+00 2/2 0/0 0/0 .text __ct__11J3DMaterialFv */
// J3DMaterial::J3DMaterial() {
extern "C" void __ct__11J3DMaterialFv() {
// NONMATCHING
}
/* 803366A4-803366EC 330FE4 0048+00 1/0 0/0 0/0 .text __dt__10J3DTextureFv */
// J3DTexture::~J3DTexture() {
extern "C" void __dt__10J3DTextureFv() {
// NONMATCHING
}
/* 803366EC-80336704 33102C 0018+00 2/2 0/0 0/0 .text JSUConvertOffsetToPtr<7ResTIMG>__FPCvPCv */
extern "C" ResTIMG* func_803366EC(void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 80336704-8033671C 331044 0018+00 1/1 0/0 0/0 .text JSUConvertOffsetToPtr<A3_A4_f>__FPCvPCv */
extern "C" Mtx* func_80336704(void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 8033671C-80336734 33105C 0018+00 1/1 0/0 0/0 .text JSUConvertOffsetToPtr<v>__FPCvPCv
*/
extern "C" void* func_8033671C(void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 80336734-8033674C 331074 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<17_GXVtxAttrFmtList>__FPCvPCv */
extern "C" _GXVtxAttrFmtList* func_80336734(void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 8033674C-80336764 33108C 0018+00 1/1 1/1 0/0 .text
* JSUConvertOffsetToPtr<17J3DModelHierarchy>__FPCvPCv */
extern "C" J3DModelHierarchy* func_8033674C(void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 80336764-8033677C 3310A4 0018+00 1/1 1/1 0/0 .text
* JSUConvertOffsetToPtr<16J3DShapeInitData>__FPCvUl */
extern "C" J3DShapeInitData* func_80336764(void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 8033677C-80336794 3310BC 0018+00 1/1 2/2 0/0 .text JSUConvertOffsetToPtr<Us>__FPCvUl
*/
extern "C" u16* func_8033677C(void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 803A20B0-803A20B0 02E710 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */

View File

@ -1414,11 +1414,6 @@ J3DMtxCalcAnmBase::~J3DMtxCalcAnmBase() {
// NONMATCHING
}
/* 8000D948-8000D990 008288 0048+00 1/0 0/0 0/0 .text __dt__10J3DMtxCalcFv */
J3DMtxCalc::~J3DMtxCalc() {
// NONMATCHING
}
/* 8000D990-8000D9CC 0082D0 003C+00 0/0 5/5 31/31 .text
* changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform */
void mDoExt_bckAnm::changeBckOnly(J3DAnmTransform* i_bck) {