mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
J3DShapeMtx progress
This commit is contained in:
@@ -72,22 +72,22 @@ public:
|
||||
kVcdVatDLSize = 0xC0,
|
||||
};
|
||||
|
||||
/* 80314B48 */ void initialize();
|
||||
/* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32);
|
||||
/* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr);
|
||||
/* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
|
||||
/* 80314E28 */ u32 countBumpMtxNum() const;
|
||||
/* 80314EEC */ void loadVtxArray() const;
|
||||
/* 80314F5C */ bool isSameVcdVatCmd(J3DShape*);
|
||||
/* 80314F98 */ void makeVtxArrayCmd();
|
||||
/* 80315260 */ void makeVcdVatCmd();
|
||||
/* 80315300 */ void loadPreDrawSetting() const;
|
||||
/* 80315398 */ void setArrayAndBindPipeline() const;
|
||||
void initialize();
|
||||
void addTexMtxIndexInDL(_GXAttr, u32);
|
||||
void addTexMtxIndexInVcd(_GXAttr);
|
||||
void calcNBTScale(Vec const&, Mtx33*, Mtx33*);
|
||||
u32 countBumpMtxNum() const;
|
||||
void loadVtxArray() const;
|
||||
bool isSameVcdVatCmd(J3DShape*);
|
||||
void makeVtxArrayCmd();
|
||||
void makeVcdVatCmd();
|
||||
void loadPreDrawSetting() const;
|
||||
void setArrayAndBindPipeline() const;
|
||||
|
||||
/* 803155E0 */ virtual void draw() const;
|
||||
/* 8031544C */ virtual void drawFast() const;
|
||||
/* 80315628 */ virtual void simpleDraw() const;
|
||||
/* 803156AC */ virtual void simpleDrawCache() const;
|
||||
virtual void draw() const;
|
||||
virtual void drawFast() const;
|
||||
virtual void simpleDraw() const;
|
||||
virtual void simpleDrawCache() const;
|
||||
|
||||
void onFlag(u32 flag) { mFlags |= flag; }
|
||||
void offFlag(u32 flag) { mFlags &= ~flag; }
|
||||
|
||||
@@ -27,13 +27,10 @@ public:
|
||||
static J3DTexMtxObj* sTexMtxObj;
|
||||
};
|
||||
|
||||
extern u8 struct_804515B0;
|
||||
extern u8 struct_804515B1;
|
||||
extern u8 struct_804515B2;
|
||||
extern u8 struct_804515B3;
|
||||
|
||||
class J3DShapeMtx {
|
||||
public:
|
||||
typedef void (J3DShapeMtx::*MtxLoadIndx)(int mtxNo, u16 index) const;
|
||||
|
||||
J3DShapeMtx(u16 useMtxIndex) : mUseMtxIndex(useMtxIndex) {}
|
||||
|
||||
void resetMtxLoadCache();
|
||||
@@ -49,25 +46,58 @@ public:
|
||||
virtual void load() const;
|
||||
virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
|
||||
|
||||
static u8 sMtxLoadPipeline[48];
|
||||
static u16 sMtxLoadCache[10 + 2 /* padding */];
|
||||
static MtxLoadIndx sMtxLoadPipeline[4];
|
||||
static u32 sCurrentPipeline;
|
||||
// static J3DScaleFlag sCurrentScaleFlag;
|
||||
static u8* sCurrentScaleFlag;
|
||||
static u8 sNBTFlag;
|
||||
static u32 sTexMtxLoadType;
|
||||
|
||||
static void setCurrentPipeline(u32 pipeline) { sCurrentPipeline = pipeline; }
|
||||
static void setLODFlag(u8 flag) { struct_804515B1 = flag; }
|
||||
static u8 getLODFlag() { return struct_804515B1; }
|
||||
static void resetMtxLoadCache();
|
||||
|
||||
private:
|
||||
protected:
|
||||
/* 0x04 */ u16 mUseMtxIndex;
|
||||
};
|
||||
|
||||
class J3DShapeMtxImm : public J3DShapeMtx {
|
||||
public:
|
||||
typedef void (J3DShapeMtxImm::*MtxLoadImm)(int mtxNo, u16 index) const;
|
||||
|
||||
J3DShapeMtxImm(u16 useMtxIndex) : J3DShapeMtx(useMtxIndex) {}
|
||||
|
||||
virtual ~J3DShapeMtxImm();
|
||||
virtual u32 getType() const;
|
||||
virtual void load() const;
|
||||
virtual void loadNrmMtx(int, u16) const;
|
||||
|
||||
void loadMtxImm_PNGP(int, u16) const;
|
||||
void loadMtxImm_PCPU(int, u16) const;
|
||||
void loadMtxImm_NCPU(int, u16) const;
|
||||
void loadMtxImm_PNCPU(int, u16) const;
|
||||
void loadMtxImm_PNGP_LOD(int, u16) const;
|
||||
|
||||
static MtxLoadImm sMtxLoadPipeline[4];
|
||||
};
|
||||
|
||||
class J3DShapeMtxMultiImm : public J3DShapeMtxImm {
|
||||
public:
|
||||
J3DShapeMtxMultiImm(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {}
|
||||
|
||||
virtual ~J3DShapeMtxMultiImm();
|
||||
virtual u32 getType() const;
|
||||
virtual u32 getUseMtxNum() const;
|
||||
virtual u32 getUseMtxIndex(u16) const;
|
||||
virtual void load() const;
|
||||
virtual void loadNrmMtx(int, u16) const;
|
||||
|
||||
private:
|
||||
/* 0x6 */ u16 mUseMtxNum;
|
||||
/* 0x8 */ u16* mUseMtxIndexTable;
|
||||
};
|
||||
|
||||
class J3DShapeMtxConcatView : public J3DShapeMtx {
|
||||
public:
|
||||
typedef void (J3DShapeMtxConcatView::*MtxLoadConcatView)(int mtxNo, u16 index) const;
|
||||
|
||||
J3DShapeMtxConcatView(u16 useMtxIndex) : J3DShapeMtx(useMtxIndex) {}
|
||||
|
||||
virtual ~J3DShapeMtxConcatView();
|
||||
@@ -82,9 +112,26 @@ public:
|
||||
void loadMtxConcatView_PNCPU(int, u16) const;
|
||||
void loadMtxConcatView_PNGP_LOD(int, u16) const;
|
||||
|
||||
static u8 sMtxLoadPipeline[48];
|
||||
static u8 sMtxLoadLODPipeline[48];
|
||||
static u8 sMtxPtrTbl[8];
|
||||
static MtxLoadConcatView sMtxLoadPipeline[4];
|
||||
static Mtx * sMtxPtrTbl[2];
|
||||
};
|
||||
|
||||
class J3DShapeMtxBBoardImm : public J3DShapeMtxImm {
|
||||
public:
|
||||
J3DShapeMtxBBoardImm(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {}
|
||||
|
||||
virtual ~J3DShapeMtxBBoardImm();
|
||||
virtual u32 getType() const;
|
||||
virtual void load() const;
|
||||
};
|
||||
|
||||
class J3DShapeMtxYBBoardImm : public J3DShapeMtxImm {
|
||||
public:
|
||||
J3DShapeMtxYBBoardImm(u16 useMtxIndex) : J3DShapeMtxImm(useMtxIndex) {}
|
||||
|
||||
virtual ~J3DShapeMtxYBBoardImm();
|
||||
virtual u32 getType() const;
|
||||
virtual void load() const;
|
||||
};
|
||||
|
||||
class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView {
|
||||
@@ -115,7 +162,7 @@ public:
|
||||
virtual u32 getUseMtxNum() const;
|
||||
virtual u32 getUseMtxIndex(u16) const;
|
||||
virtual void load() const;
|
||||
virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
|
||||
virtual void calcNBTScale(Vec const&, Mtx33*, Mtx33*);
|
||||
|
||||
private:
|
||||
/* 0x6 */ u16 mUseMtxNum;
|
||||
@@ -141,4 +188,4 @@ private:
|
||||
/* 0x8 */ u16* mUseMtxIndexTable;
|
||||
};
|
||||
|
||||
#endif /* J3DSHAPEMTX_H */
|
||||
#endif /* J3DSHAPEMTX_H */
|
||||
|
||||
@@ -30,45 +30,7 @@ enum J3DSysFlag {
|
||||
};
|
||||
|
||||
struct J3DSys {
|
||||
/* 0x000 */ Mtx mViewMtx;
|
||||
/* 0x030 */ J3DMtxCalc* mCurrentMtxCalc;
|
||||
/* 0x034 */ u32 mFlags;
|
||||
/* 0x038 */ J3DModel* mModel;
|
||||
/* 0x03C */ J3DMatPacket* mMatPacket;
|
||||
/* 0x040 */ J3DShapePacket* mShapePacket;
|
||||
/* 0x044 */ J3DShape* mShape;
|
||||
/* 0x048 */ J3DDrawBuffer* mDrawBuffer[2];
|
||||
/* 0x050 */ u32 mDrawMode;
|
||||
/* 0x054 */ u32 mMaterialMode;
|
||||
/* 0x058 */ J3DTexture* mTexture;
|
||||
/* 0x05C */ u8 field_0x5c[0x04];
|
||||
/* 0x060 */ u32 mTexCacheRegionNum;
|
||||
/* 0x064 */ GXTexRegion mTexCacheRegion[8];
|
||||
/* 0x0E4 */ u8 field_0xe4[0x20];
|
||||
/* 0x104 */ void* field_0x104;
|
||||
/* 0x108 */ Mtx* mModelDrawMtx;
|
||||
/* 0x10C */ Mtx33* mModelNrmMtx;
|
||||
/* 0x110 */ void* mVtxPos;
|
||||
/* 0x114 */ void* mVtxNrm;
|
||||
/* 0x118 */ _GXColor* mVtxCol;
|
||||
/* 0x11C */ Vec* mNBTScale;
|
||||
/* 0x120 */ void* field_0x120;
|
||||
/* 0x124 */ void* field_0x124;
|
||||
|
||||
J3DSys();
|
||||
void loadPosMtxIndx(int, u16) const;
|
||||
void loadNrmMtxIndx(int, u16) const;
|
||||
void setTexCacheRegion(_GXTexCacheSize);
|
||||
void drawInit();
|
||||
void reinitGX();
|
||||
void reinitGenMode();
|
||||
void reinitLighting();
|
||||
void reinitTransform();
|
||||
void reinitTexture();
|
||||
void reinitTevStages();
|
||||
void reinitIndStages();
|
||||
void reinitPixelProc();
|
||||
|
||||
public:
|
||||
enum DrawMode {
|
||||
/* 0x3 */ OPA_TEX_EDGE = 3,
|
||||
/* 0x4 */ XLU,
|
||||
@@ -130,11 +92,51 @@ struct J3DSys {
|
||||
void setViewMtx(Mtx m) { MTXCopy(m, mViewMtx); }
|
||||
|
||||
J3DModel* getModel() { return mModel; }
|
||||
Vec& getNBTScale() { return *mNBTScale; }
|
||||
|
||||
static Mtx mCurrentMtx;
|
||||
static Vec mCurrentS;
|
||||
static Vec mParentS;
|
||||
static u16 sTexCoordScaleTable[32];
|
||||
|
||||
/* 0x000 */ Mtx mViewMtx;
|
||||
/* 0x030 */ J3DMtxCalc* mCurrentMtxCalc;
|
||||
/* 0x034 */ u32 mFlags;
|
||||
/* 0x038 */ J3DModel* mModel;
|
||||
/* 0x03C */ J3DMatPacket* mMatPacket;
|
||||
/* 0x040 */ J3DShapePacket* mShapePacket;
|
||||
/* 0x044 */ J3DShape* mShape;
|
||||
/* 0x048 */ J3DDrawBuffer* mDrawBuffer[2];
|
||||
/* 0x050 */ u32 mDrawMode;
|
||||
/* 0x054 */ u32 mMaterialMode;
|
||||
/* 0x058 */ J3DTexture* mTexture;
|
||||
/* 0x05C */ u8 field_0x5c[0x04];
|
||||
/* 0x060 */ u32 mTexCacheRegionNum;
|
||||
/* 0x064 */ GXTexRegion mTexCacheRegion[8];
|
||||
/* 0x0E4 */ u8 field_0xe4[0x20];
|
||||
/* 0x104 */ void* field_0x104;
|
||||
/* 0x108 */ Mtx* mModelDrawMtx;
|
||||
/* 0x10C */ Mtx33* mModelNrmMtx;
|
||||
/* 0x110 */ void* mVtxPos;
|
||||
/* 0x114 */ void* mVtxNrm;
|
||||
/* 0x118 */ _GXColor* mVtxCol;
|
||||
/* 0x11C */ void* field_0x11c;
|
||||
/* 0x120 */ void* field_0x120;
|
||||
/* 0x124 */ Vec* mNBTScale;
|
||||
|
||||
J3DSys();
|
||||
void loadPosMtxIndx(int, u16) const;
|
||||
void loadNrmMtxIndx(int, u16) const;
|
||||
void setTexCacheRegion(_GXTexCacheSize);
|
||||
void drawInit();
|
||||
void reinitGX();
|
||||
void reinitGenMode();
|
||||
void reinitLighting();
|
||||
void reinitTransform();
|
||||
void reinitTexture();
|
||||
void reinitTevStages();
|
||||
void reinitIndStages();
|
||||
void reinitPixelProc();
|
||||
};
|
||||
|
||||
extern u32 j3dDefaultViewNo;
|
||||
|
||||
@@ -44,9 +44,9 @@ void J3DShape::initialize() {
|
||||
}
|
||||
|
||||
/* 802DD1FC-802DD27C .text calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f */
|
||||
void J3DShape::calcNBTScale(Vec const& param_0, Mtx33* param_1, Mtx33* param_2) {
|
||||
void J3DShape::calcNBTScale(Vec const& scale, Mtx33* pSrc, Mtx33* pDst) {
|
||||
for (u16 i = 0; i < getMtxGroupNum(); i++)
|
||||
getShapeMtx(i)->calcNBTScale(param_0, param_1, param_2);
|
||||
getShapeMtx(i)->calcNBTScale(scale, pSrc, pDst);
|
||||
}
|
||||
|
||||
/* 802DD27C-802DD2F0 .text countBumpMtxNum__8J3DShapeCFv */
|
||||
|
||||
@@ -4,136 +4,282 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/J3DGraphBase/J3DGD.h"
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShapeDraw.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
|
||||
extern void J3DFifoLoadNrmMtxImm(Mtx, u32);
|
||||
extern void J3DFifoLoadNrmMtxImm3x3(Mtx33, u32);
|
||||
extern void J3DFifoLoadPosMtxImm(Mtx, u32);
|
||||
extern void J3DPSMtx33Copy(Mtx33, Mtx33);
|
||||
extern void J3DScaleNrmMtx(Mtx, Vec const &);
|
||||
extern void J3DScaleNrmMtx33(Mtx33, Vec const &);
|
||||
extern void J3DCalcBBoardMtx(Mtx);
|
||||
|
||||
u32 J3DShapeMtx::sCurrentPipeline;
|
||||
|
||||
/* 802DB9D8-802DBA1C .text loadMtxIndx_PNGP__11J3DShapeMtxCFiUs */
|
||||
void J3DShapeMtx::loadMtxIndx_PNGP(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtx::loadMtxIndx_PNGP(int mtxNo, u16 index) const {
|
||||
J3DFifoLoadIndx(GX_CMD_LOAD_INDX_A, index, 0xB000 | ((u16)(mtxNo * 0x0C)));
|
||||
J3DFifoLoadIndx(GX_CMD_LOAD_INDX_B, index, 0x8000 | ((u16)((mtxNo * 0x09) + 0x400)));
|
||||
}
|
||||
|
||||
/* 802DBA1C-802DBA7C .text loadMtxIndx_PCPU__11J3DShapeMtxCFiUs */
|
||||
void J3DShapeMtx::loadMtxIndx_PCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtx::loadMtxIndx_PCPU(int mtxNo, u16 index) const {
|
||||
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
j3dSys.loadNrmMtxIndx(mtxNo, index);
|
||||
}
|
||||
|
||||
/* 802DBA7C-802DBAC8 .text loadMtxIndx_NCPU__11J3DShapeMtxCFiUs */
|
||||
void J3DShapeMtx::loadMtxIndx_NCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtx::loadMtxIndx_NCPU(int mtxNo, u16 index) const {
|
||||
j3dSys.loadPosMtxIndx(mtxNo, index);
|
||||
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
}
|
||||
|
||||
/* 802DBAC8-802DBB20 .text loadMtxIndx_PNCPU__11J3DShapeMtxCFiUs */
|
||||
void J3DShapeMtx::loadMtxIndx_PNCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtx::loadMtxIndx_PNCPU(int mtxNo, u16 index) const {
|
||||
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
}
|
||||
|
||||
/* 802DBB20-802DBB94 .text loadMtxImm_PNGP__14J3DShapeMtxImmCFiUs */
|
||||
void J3DShapeMtxImm::loadMtxImm_PNGP(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxImm::loadMtxImm_PNGP(int mtxNo, u16 index) const {
|
||||
J3DFifoLoadPosMtxImm(j3dSys.getModelDrawMtx(index), mtxNo * 3);
|
||||
loadNrmMtx(mtxNo, index);
|
||||
}
|
||||
|
||||
/* 802DBB94-802DBC00 .text loadMtxImm_PCPU__14J3DShapeMtxImmCFiUs */
|
||||
void J3DShapeMtxImm::loadMtxImm_PCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxImm::loadMtxImm_PCPU(int mtxNo, u16 index) const {
|
||||
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
loadNrmMtx(mtxNo, index);
|
||||
}
|
||||
|
||||
/* 802DBC00-802DBC60 .text loadMtxImm_NCPU__14J3DShapeMtxImmCFiUs */
|
||||
void J3DShapeMtxImm::loadMtxImm_NCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxImm::loadMtxImm_NCPU(int mtxNo, u16 index) const {
|
||||
J3DFifoLoadPosMtxImm(j3dSys.getModelDrawMtx(index), mtxNo * 3);
|
||||
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
}
|
||||
|
||||
/* 802DBC60-802DBCB8 .text loadMtxImm_PNCPU__14J3DShapeMtxImmCFiUs */
|
||||
void J3DShapeMtxImm::loadMtxImm_PNCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxImm::loadMtxImm_PNCPU(int mtxNo, u16 index) const {
|
||||
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
}
|
||||
|
||||
/* 802DBCB8-802DBD44 .text loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs */
|
||||
void J3DShapeMtxConcatView::loadMtxConcatView_PNGP(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxConcatView::loadMtxConcatView_PNGP(int mtxNo, u16 index) const {
|
||||
Mtx mtx;
|
||||
MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(index), mtx);
|
||||
J3DFifoLoadPosMtxImm(mtx, mtxNo * 3);
|
||||
loadNrmMtx(mtxNo, index, mtx);
|
||||
}
|
||||
|
||||
/* 802DBD44-802DBDD4 .text loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs */
|
||||
void J3DShapeMtxConcatView::loadMtxConcatView_PCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxConcatView::loadMtxConcatView_PCPU(int mtxNo, u16 index) const {
|
||||
Mtx mtx;
|
||||
MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(index), mtx);
|
||||
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
loadNrmMtx(mtxNo, index, mtx);
|
||||
}
|
||||
|
||||
/* 802DBDD4-802DBE4C .text loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs */
|
||||
void J3DShapeMtxConcatView::loadMtxConcatView_NCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxConcatView::loadMtxConcatView_NCPU(int mtxNo, u16 index) const {
|
||||
Mtx mtx;
|
||||
MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(index), mtx);
|
||||
J3DFifoLoadPosMtxImm(mtx, mtxNo * 3);
|
||||
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
}
|
||||
|
||||
/* 802DBE4C-802DBEA4 .text loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs */
|
||||
void J3DShapeMtxConcatView::loadMtxConcatView_PNCPU(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxConcatView::loadMtxConcatView_PNCPU(int mtxNo, u16 index) const {
|
||||
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), mtxNo * 3);
|
||||
}
|
||||
|
||||
J3DShapeMtx::MtxLoadIndx J3DShapeMtx::sMtxLoadPipeline[] = {
|
||||
&J3DShapeMtx::loadMtxIndx_PNGP,
|
||||
&J3DShapeMtx::loadMtxIndx_PCPU,
|
||||
&J3DShapeMtx::loadMtxIndx_NCPU,
|
||||
&J3DShapeMtx::loadMtxIndx_PNCPU,
|
||||
};
|
||||
|
||||
/* 802DBEA4-802DBF00 .text load__11J3DShapeMtxCFv */
|
||||
void J3DShapeMtx::load() const {
|
||||
/* Nonmatching */
|
||||
MtxLoadIndx f = sMtxLoadPipeline[sCurrentPipeline];
|
||||
(this->*f)(0, mUseMtxIndex);
|
||||
}
|
||||
|
||||
/* 802DBF00-802DBF60 .text calcNBTScale__11J3DShapeMtxFRC3VecPA3_A3_fPA3_A3_f */
|
||||
void J3DShapeMtx::calcNBTScale(const Vec&, float(*)[3][3], float(*)[3][3]) {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtx::calcNBTScale(const Vec& scale, Mtx33* pSrc, Mtx33* pDst) {
|
||||
J3DPSMtx33Copy(pSrc[mUseMtxIndex], pDst[mUseMtxIndex]);
|
||||
J3DScaleNrmMtx33(pDst[mUseMtxIndex], scale);
|
||||
}
|
||||
|
||||
J3DShapeMtxImm::MtxLoadImm J3DShapeMtxImm::sMtxLoadPipeline[] = {
|
||||
&J3DShapeMtxImm::loadMtxImm_PNGP,
|
||||
&J3DShapeMtxImm::loadMtxImm_PCPU,
|
||||
&J3DShapeMtxImm::loadMtxImm_NCPU,
|
||||
&J3DShapeMtxImm::loadMtxImm_PNCPU,
|
||||
};
|
||||
|
||||
/* 802DBF60-802DBFBC .text load__14J3DShapeMtxImmCFv */
|
||||
void J3DShapeMtxImm::load() const {
|
||||
/* Nonmatching */
|
||||
MtxLoadImm f = sMtxLoadPipeline[sCurrentPipeline];
|
||||
(this->*f)(0, mUseMtxIndex);
|
||||
}
|
||||
|
||||
J3DShapeMtxConcatView::MtxLoadConcatView J3DShapeMtxConcatView::sMtxLoadPipeline[] = {
|
||||
&J3DShapeMtxConcatView::loadMtxConcatView_PNGP,
|
||||
&J3DShapeMtxConcatView::loadMtxConcatView_PCPU,
|
||||
&J3DShapeMtxConcatView::loadMtxConcatView_NCPU,
|
||||
&J3DShapeMtxConcatView::loadMtxConcatView_PNCPU,
|
||||
};
|
||||
|
||||
Mtx * J3DShapeMtxConcatView::sMtxPtrTbl[2];
|
||||
|
||||
/* 802DBFBC-802DC08C .text load__21J3DShapeMtxConcatViewCFv */
|
||||
void J3DShapeMtxConcatView::load() const {
|
||||
/* Nonmatching */
|
||||
sMtxPtrTbl[0] = j3dSys.getModel()->mpNodeMtx;
|
||||
sMtxPtrTbl[1] = j3dSys.getModel()->mpWeightEnvMtx;
|
||||
|
||||
MtxLoadConcatView f = sMtxLoadPipeline[sCurrentPipeline];
|
||||
j3dSys.setModelDrawMtx(sMtxPtrTbl[j3dSys.getModel()->getModelData()->getDrawMtxFlag(mUseMtxIndex)]);
|
||||
(this->*f)(0, j3dSys.getModel()->getModelData()->getDrawMtxIndex(mUseMtxIndex));
|
||||
}
|
||||
|
||||
/* 802DC08C-802DC184 .text loadNrmMtx__14J3DShapeMtxImmCFiUs */
|
||||
void J3DShapeMtxImm::loadNrmMtx(int, unsigned short) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxImm::loadNrmMtx(int mtxNo, u16 index) const {
|
||||
if (J3DShapeMtx::sCurrentScaleFlag[index] == 1) {
|
||||
if (J3DShapeMtx::sNBTFlag == 0) {
|
||||
J3DFifoLoadNrmMtxImm(j3dSys.getModelDrawMtx(index), 0);
|
||||
} else {
|
||||
Mtx33 mtx;
|
||||
J3DPSMtx33CopyFrom34(j3dSys.getModelDrawMtx(index), mtx);
|
||||
J3DScaleNrmMtx33(mtx, j3dSys.getNBTScale());
|
||||
J3DFifoLoadNrmMtxImm3x3(mtx, 0);
|
||||
}
|
||||
} else {
|
||||
Mtx33 mtx;
|
||||
J3DPSCalcInverseTranspose(j3dSys.getModelDrawMtx(index), mtx);
|
||||
|
||||
if (J3DShapeMtx::sNBTFlag == 0) {
|
||||
J3DFifoLoadNrmMtxImm(j3dSys.getModelDrawMtx(index), 0);
|
||||
} else {
|
||||
J3DScaleNrmMtx33(mtx, j3dSys.getNBTScale());
|
||||
J3DFifoLoadNrmMtxImm3x3(mtx, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DC184-802DC254 .text loadNrmMtx__21J3DShapeMtxConcatViewCFiUsPA4_f */
|
||||
void J3DShapeMtxConcatView::loadNrmMtx(int, unsigned short, float(*)[4]) const {
|
||||
/* Nonmatching */
|
||||
void J3DShapeMtxConcatView::loadNrmMtx(int mtxNo, u16 index, Mtx mtx) const {
|
||||
}
|
||||
|
||||
/* 802DC254-802DC2F4 .text load__16J3DShapeMtxMultiCFv */
|
||||
void J3DShapeMtxMulti::load() const {
|
||||
/* Nonmatching */
|
||||
MtxLoadIndx f = sMtxLoadPipeline[sCurrentPipeline];
|
||||
|
||||
for (s32 i = 0; i < mUseMtxNum; i++) {
|
||||
if (mUseMtxIndexTable[i] != 0xFFFF) {
|
||||
(this->*f)(i, mUseMtxIndexTable[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DC2F4-802DC388 .text calcNBTScale__16J3DShapeMtxMultiFRC3VecPA3_A3_fPA3_A3_f */
|
||||
void J3DShapeMtxMulti::calcNBTScale(const Vec&, float(*)[3][3], float(*)[3][3]) {
|
||||
void J3DShapeMtxMulti::calcNBTScale(const Vec&, Mtx33*, Mtx33*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 802DC388-802DC428 .text load__19J3DShapeMtxMultiImmCFv */
|
||||
void J3DShapeMtxMultiImm::load() const {
|
||||
/* Nonmatching */
|
||||
MtxLoadImm f = sMtxLoadPipeline[sCurrentPipeline];
|
||||
|
||||
for (s32 i = 0; i < mUseMtxNum; i++) {
|
||||
if (mUseMtxIndexTable[i] != 0xFFFF) {
|
||||
(this->*f)(i, mUseMtxIndexTable[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DC428-802DC524 .text load__26J3DShapeMtxMultiConcatViewCFv */
|
||||
void J3DShapeMtxMultiConcatView::load() const {
|
||||
/* Nonmatching */
|
||||
sMtxPtrTbl[0] = j3dSys.getModel()->mpNodeMtx;
|
||||
sMtxPtrTbl[1] = j3dSys.getModel()->mpWeightEnvMtx;
|
||||
|
||||
MtxLoadConcatView f = sMtxLoadPipeline[sCurrentPipeline];
|
||||
|
||||
for (s32 i = 0; i < mUseMtxNum; i++) {
|
||||
u16 useMtxIndex = mUseMtxIndexTable[i];
|
||||
if (useMtxIndex != 0xFFFF) {
|
||||
u16 drawMtxIndex = j3dSys.getModel()->getModelData()->getDrawMtxIndex(useMtxIndex);
|
||||
j3dSys.setModelDrawMtx(sMtxPtrTbl[j3dSys.getModel()->getModelData()->getDrawMtxFlag(useMtxIndex)]);
|
||||
(this->*f)(i, drawMtxIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DC524-802DC620 .text loadNrmMtx__19J3DShapeMtxMultiImmCFiUs */
|
||||
void J3DShapeMtxMultiImm::loadNrmMtx(int, unsigned short) const {
|
||||
void J3DShapeMtxMultiImm::loadNrmMtx(int mtxNo, u16 index) const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 802DC620-802DC6F4 .text loadNrmMtx__26J3DShapeMtxMultiConcatViewCFiUsPA4_f */
|
||||
void J3DShapeMtxMultiConcatView::loadNrmMtx(int, unsigned short, float(*)[4]) const {
|
||||
void J3DShapeMtxMultiConcatView::loadNrmMtx(int, u16, Mtx) const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 802DC6F4-802DC7B8 .text load__20J3DShapeMtxBBoardImmCFv */
|
||||
void J3DShapeMtxBBoardImm::load() const {
|
||||
/* Nonmatching */
|
||||
Mtx mtx;
|
||||
MTXCopy(j3dSys.getModelDrawMtx(mUseMtxIndex), mtx);
|
||||
J3DCalcBBoardMtx(mtx);
|
||||
J3DFifoLoadPosMtxImm(mtx, 0);
|
||||
|
||||
mtx[0][0] = 1.0f / mtx[0][0];
|
||||
mtx[1][1] = 1.0f / mtx[1][1];
|
||||
mtx[2][2] = 1.0f / mtx[2][2];
|
||||
mtx[0][3] = 0.0f;
|
||||
mtx[1][3] = 0.0f;
|
||||
mtx[2][3] = 0.0f;
|
||||
|
||||
if (sNBTFlag == 0) {
|
||||
J3DFifoLoadNrmMtxImm(mtx, 0);
|
||||
} else {
|
||||
J3DScaleNrmMtx(mtx, j3dSys.getNBTScale());
|
||||
J3DFifoLoadNrmMtxImm(mtx, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DC7B8-802DC8C0 .text load__27J3DShapeMtxBBoardConcatViewCFv */
|
||||
void J3DShapeMtxBBoardConcatView::load() const {
|
||||
/* Nonmatching */
|
||||
u16 drawMtxIndex = j3dSys.getModel()->getModelData()->getDrawMtxIndex(mUseMtxIndex);
|
||||
|
||||
Mtx mtx;
|
||||
if (j3dSys.getModel()->getModelData()->getDrawMtxFlag(mUseMtxIndex) == 0) {
|
||||
MTXConcat(j3dSys.getViewMtx(), j3dSys.getModel()->mpNodeMtx[drawMtxIndex], mtx);
|
||||
} else {
|
||||
MTXConcat(j3dSys.getViewMtx(), j3dSys.getModel()->mpWeightEnvMtx[drawMtxIndex], mtx);
|
||||
}
|
||||
|
||||
J3DCalcBBoardMtx(mtx);
|
||||
J3DFifoLoadPosMtxImm(mtx, 0);
|
||||
|
||||
mtx[0][0] = 1.0f / mtx[0][0];
|
||||
mtx[1][1] = 1.0f / mtx[1][1];
|
||||
mtx[2][2] = 1.0f / mtx[2][2];
|
||||
mtx[0][3] = 0.0f;
|
||||
mtx[1][3] = 0.0f;
|
||||
mtx[2][3] = 0.0f;
|
||||
|
||||
if (sNBTFlag == 0) {
|
||||
J3DFifoLoadNrmMtxImm(mtx, 0);
|
||||
} else {
|
||||
J3DScaleNrmMtx(mtx, j3dSys.getNBTScale());
|
||||
J3DFifoLoadNrmMtxImm(mtx, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DC8C0-802DC9B8 .text load__21J3DShapeMtxYBBoardImmCFv */
|
||||
@@ -167,13 +313,13 @@ J3DShapeMtxYBBoardConcatView::~J3DShapeMtxYBBoardConcatView() {
|
||||
}
|
||||
|
||||
/* 802DCBF4-802DCC00 .text getType__21J3DShapeMtxYBBoardImmCFv */
|
||||
void J3DShapeMtxYBBoardImm::getType() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxYBBoardImm::getType() const {
|
||||
return 'SMYB';
|
||||
}
|
||||
|
||||
/* 802DCC00-802DCC08 .text getUseMtxIndex__11J3DShapeMtxCFUs */
|
||||
void J3DShapeMtx::getUseMtxIndex(unsigned short) const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtx::getUseMtxIndex(u16 i) const {
|
||||
return mUseMtxIndex;
|
||||
}
|
||||
|
||||
/* 802DCC08-802DCC74 .text __dt__21J3DShapeMtxYBBoardImmFv */
|
||||
@@ -187,8 +333,8 @@ J3DShapeMtxBBoardConcatView::~J3DShapeMtxBBoardConcatView() {
|
||||
}
|
||||
|
||||
/* 802DCCF0-802DCCFC .text getType__20J3DShapeMtxBBoardImmCFv */
|
||||
void J3DShapeMtxBBoardImm::getType() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxBBoardImm::getType() const {
|
||||
return 'SMBB';
|
||||
}
|
||||
|
||||
/* 802DCCFC-802DCD68 .text __dt__20J3DShapeMtxBBoardImmFv */
|
||||
@@ -202,22 +348,22 @@ J3DShapeMtxMultiConcatView::~J3DShapeMtxMultiConcatView() {
|
||||
}
|
||||
|
||||
/* 802DCDE4-802DCDF0 .text getType__26J3DShapeMtxMultiConcatViewCFv */
|
||||
void J3DShapeMtxMultiConcatView::getType() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMultiConcatView::getType() const {
|
||||
return 'SMMI';
|
||||
}
|
||||
|
||||
/* 802DCDF0-802DCDF8 .text getUseMtxNum__26J3DShapeMtxMultiConcatViewCFv */
|
||||
void J3DShapeMtxMultiConcatView::getUseMtxNum() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMultiConcatView::getUseMtxNum() const {
|
||||
return mUseMtxNum;
|
||||
}
|
||||
|
||||
/* 802DCDF8-802DCE08 .text getUseMtxIndex__26J3DShapeMtxMultiConcatViewCFUs */
|
||||
void J3DShapeMtxMultiConcatView::getUseMtxIndex(unsigned short) const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMultiConcatView::getUseMtxIndex(u16 i) const {
|
||||
return mUseMtxIndexTable[i];
|
||||
}
|
||||
|
||||
/* 802DCE08-802DCE0C .text loadNrmMtx__26J3DShapeMtxMultiConcatViewCFiUs */
|
||||
void J3DShapeMtxMultiConcatView::loadNrmMtx(int, unsigned short) const {
|
||||
void J3DShapeMtxMultiConcatView::loadNrmMtx(int mtxNo, u16 index) const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -227,18 +373,18 @@ J3DShapeMtxMultiImm::~J3DShapeMtxMultiImm() {
|
||||
}
|
||||
|
||||
/* 802DCE78-802DCE84 .text getType__19J3DShapeMtxMultiImmCFv */
|
||||
void J3DShapeMtxMultiImm::getType() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMultiImm::getType() const {
|
||||
return 'SMMI';
|
||||
}
|
||||
|
||||
/* 802DCE84-802DCE8C .text getUseMtxNum__19J3DShapeMtxMultiImmCFv */
|
||||
void J3DShapeMtxMultiImm::getUseMtxNum() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMultiImm::getUseMtxNum() const {
|
||||
return mUseMtxNum;
|
||||
}
|
||||
|
||||
/* 802DCE8C-802DCE9C .text getUseMtxIndex__19J3DShapeMtxMultiImmCFUs */
|
||||
void J3DShapeMtxMultiImm::getUseMtxIndex(unsigned short) const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMultiImm::getUseMtxIndex(u16 i) const {
|
||||
return mUseMtxIndexTable[i];
|
||||
}
|
||||
|
||||
/* 802DCE9C-802DCEF8 .text __dt__16J3DShapeMtxMultiFv */
|
||||
@@ -247,18 +393,18 @@ J3DShapeMtxMulti::~J3DShapeMtxMulti() {
|
||||
}
|
||||
|
||||
/* 802DCEF8-802DCF04 .text getType__16J3DShapeMtxMultiCFv */
|
||||
void J3DShapeMtxMulti::getType() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMulti::getType() const {
|
||||
return 'SMML';
|
||||
}
|
||||
|
||||
/* 802DCF04-802DCF0C .text getUseMtxNum__16J3DShapeMtxMultiCFv */
|
||||
void J3DShapeMtxMulti::getUseMtxNum() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMulti::getUseMtxNum() const {
|
||||
return mUseMtxNum;
|
||||
}
|
||||
|
||||
/* 802DCF0C-802DCF1C .text getUseMtxIndex__16J3DShapeMtxMultiCFUs */
|
||||
void J3DShapeMtxMulti::getUseMtxIndex(unsigned short) const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxMulti::getUseMtxIndex(u16 i) const {
|
||||
return mUseMtxIndexTable[i];
|
||||
}
|
||||
|
||||
/* 802DCF1C-802DCF88 .text __dt__21J3DShapeMtxConcatViewFv */
|
||||
@@ -267,12 +413,12 @@ J3DShapeMtxConcatView::~J3DShapeMtxConcatView() {
|
||||
}
|
||||
|
||||
/* 802DCF88-802DCF94 .text getType__21J3DShapeMtxConcatViewCFv */
|
||||
void J3DShapeMtxConcatView::getType() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxConcatView::getType() const {
|
||||
return 'SMCV';
|
||||
}
|
||||
|
||||
/* 802DCF94-802DCF98 .text loadNrmMtx__21J3DShapeMtxConcatViewCFiUs */
|
||||
void J3DShapeMtxConcatView::loadNrmMtx(int, unsigned short) const {
|
||||
void J3DShapeMtxConcatView::loadNrmMtx(int mtxNo, u16 index) const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -282,8 +428,8 @@ J3DShapeMtxImm::~J3DShapeMtxImm() {
|
||||
}
|
||||
|
||||
/* 802DCFF4-802DD000 .text getType__14J3DShapeMtxImmCFv */
|
||||
void J3DShapeMtxImm::getType() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtxImm::getType() const {
|
||||
return 'SMIM';
|
||||
}
|
||||
|
||||
/* 802DD000-802DD048 .text __dt__11J3DShapeMtxFv */
|
||||
@@ -292,6 +438,6 @@ J3DShapeMtx::~J3DShapeMtx() {
|
||||
}
|
||||
|
||||
/* 802DD048-802DD054 .text getType__11J3DShapeMtxCFv */
|
||||
void J3DShapeMtx::getType() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapeMtx::getType() const {
|
||||
return 'SMTX';
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ J3DSys::J3DSys() {
|
||||
mVtxPos = NULL;
|
||||
mVtxNrm = NULL;
|
||||
mVtxCol = NULL;
|
||||
mNBTScale = NULL;
|
||||
field_0x11c = NULL;
|
||||
field_0x104 = NULL;
|
||||
field_0x120 = NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user