more simple J2D/J3D funcs (#166)

* more simple J2D/J3D funcs

* JPABaseShape constructor

* fmt

Co-authored-by: lepelog <25211966+lepelog@users.noreply.github.com>
This commit is contained in:
Jasper St. Pierre
2021-12-06 06:51:53 -05:00
committed by GitHub
parent f7916ebde1
commit c15d8fcb3e
168 changed files with 1976 additions and 4562 deletions
+41 -12
View File
@@ -1,6 +1,7 @@
#ifndef J2DTEVS_H
#define J2DTEVS_H
#include "dolphin/gx/GX.h"
#include "dolphin/mtx/mtxvec.h"
#include "dolphin/types.h"
@@ -13,12 +14,19 @@ struct J2DTextureSRTInfo {
}; // Size: 0x14
struct J2DTexMtxInfo {
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
enum {
/* 0x0 */ DCC_NONE,
/* 0x1 */ DCC_MAYA,
};
/* 0x00 */ u8 mTexMtxType;
/* 0x01 */ u8 mTexMtxDCC;
/* 0x02 */ u8 field_0x2; // padding ?
/* 0x03 */ u8 field_0x3; // padding ?
/* 0x04 */ Vec field_0x4;
/* 0x04 */ Vec mCenter;
/* 0x10 */ J2DTextureSRTInfo mTexSRTInfo;
GXTexMtxType getTexMtxType() const { return (GXTexMtxType)mTexMtxType; }
}; // Size: 0x24
class J2DTexMtx {
@@ -29,13 +37,16 @@ public:
/* 802E9EBC */ void getTextureMtxMaya(J2DTextureSRTInfo const&, f32 (*)[4]);
private:
/* 0x00 */ J2DTexMtxInfo mTexMtxInfo;
/* 0x00 */ J2DTexMtxInfo mInfo;
/* 0x24 */ Mtx mTexMtx;
};
struct J2DIndTexOrderInfo {
/* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1;
/* 0x0 */ u8 mTexCoordID;
/* 0x1 */ u8 mTexMapID;
GXTexCoordID getTexCoordID() const { return (GXTexCoordID)mTexCoordID; }
GXTexMapID getTexMapID() const { return (GXTexMapID)mTexMapID; }
};
class J2DIndTexOrder {
@@ -44,12 +55,12 @@ public:
/* 802EA0FC */ void load(u8);
private:
/* 0x0 */ J2DIndTexOrderInfo mIndTexOrderInfo;
/* 0x0 */ J2DIndTexOrderInfo mInfo;
};
struct J2DIndTexMtxInfo {
/* 0x00 */ Mtx23 mMtx;
/* 0x18 */ u8 field_0x18;
/* 0x18 */ s8 mScaleExp;
};
class J2DIndTexMtx {
@@ -65,8 +76,11 @@ private:
}; // Size: 0x1C
struct J2DIndTexCoordScaleInfo {
/* 0x0 */ u8 field_0x0;
/* 0x0 */ u8 field_0x1;
/* 0x0 */ u8 mScaleS;
/* 0x0 */ u8 mScaleT;
GXIndTexScale getScaleS() const { return (GXIndTexScale)mScaleS; }
GXIndTexScale getScaleT() const { return (GXIndTexScale)mScaleT; }
};
class J2DIndTexCoordScale {
@@ -76,7 +90,7 @@ public:
/* 802EA0CC */ void load(u8);
private:
/* 0x0 */ J2DIndTexCoordScaleInfo mIndTexCoordScaleInfo;
/* 0x0 */ J2DIndTexCoordScaleInfo mInfo;
}; // Size: 0x2
class J2DIndTevStage {
@@ -86,6 +100,16 @@ public:
private:
/* 0x0 */ u32 mFlags;
GXIndTexStageID getIndStage() const { return (GXIndTexStageID)(mFlags & 0x03); }
GXIndTexFormat getIndFormat() const { return (GXIndTexFormat)((mFlags >> 2) & 0x03); }
GXIndTexBiasSel getBiasSel() const { return (GXIndTexBiasSel)((mFlags >> 4) & 0x07); }
GXIndTexWrap getWrapS() const { return (GXIndTexWrap)((mFlags >> 8) & 0x07); }
GXIndTexWrap getWrapT() const { return (GXIndTexWrap)((mFlags >> 11) & 0x07); }
GXIndTexMtxID getMtxSel() const { return (GXIndTexMtxID)((mFlags >> 16) & 0x0F); }
GXBool getPrev() const { return (GXBool)((mFlags >> 20) & 0x01); }
GXBool getLod() const { return (GXBool)((mFlags >> 21) & 0x01); }
GXIndTexAlphaSel getAlphaSel() const { return (GXIndTexAlphaSel)((mFlags >> 22) & 0x03); }
};
struct J2DTexCoordInfo {
@@ -156,7 +180,12 @@ private:
/* 0x7 */ u8 field_0x7;
};
struct J2DTevSwapModeInfo {};
struct J2DTevSwapModeInfo {
/* 0x0 */ u8 mR;
/* 0x1 */ u8 mG;
/* 0x2 */ u8 mB;
/* 0x3 */ u8 mA;
};
class J2DTevSwapModeTable {
public:
+4 -3
View File
@@ -10,7 +10,7 @@ class J3DMtxBuffer;
class J3DMtxCalc {
public:
/* 80325D1C */ void setMtxBuffer(J3DMtxBuffer*);
/* 80325D1C */ static void setMtxBuffer(J3DMtxBuffer*);
/* 8000D948 */ virtual ~J3DMtxCalc();
/* 80014E90 */ virtual void setAnmTransform(J3DAnmTransform*);
@@ -52,11 +52,12 @@ public:
u8 getScaleCompensate() const { return mScaleCompensate; }
J3DJoint* getYounger() { return mYounger; }
void setYounger(J3DJoint* pYounger) { mYounger = pYounger; }
void setCurrentMtxCalc(J3DMtxCalc* pMtxCalc) { mCurrentMtxCalc = pMtxCalc; }
static J3DMtxCalc* mCurrentMtxCalc;
private:
/* 0x00 */ void* field_0x0;
/* 0x00 */ void* mCallBackUserData;
/* 0x04 */ J3DJointCallBack mCallBack;
/* 0x08 */ void* field_0x8;
/* 0x0C */ J3DJoint* mChild;
@@ -65,7 +66,7 @@ private:
/* 0x16 */ u8 mMtxType;
/* 0x17 */ u8 mScaleCompensate;
/* 0x18 */ J3DTransformInfo mTransformInfo;
/* 0x38 */ f32 field_0x38;
/* 0x38 */ f32 mBoundingSphereRadius;
/* 0x3C */ Vec mMin;
/* 0x48 */ Vec mMax;
/* 0x54 */ J3DMtxCalc* mMtxCalc;
@@ -32,7 +32,11 @@ public:
/* 80325D24 */ virtual ~J3DJointTree();
u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; }
u16 getJointNum() const { return mJointNum; }
u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; }
J3DJoint* getRootNode() { return mRootNode; }
J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; }
J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; }
private:
/* 0x04 */ J3DModelHierarchy* mHierarchy;
@@ -43,13 +47,13 @@ private:
/* 0x18 */ J3DJoint** mJointNodePointer;
/* 0x1C */ u16 mJointNum;
/* 0x1E */ u16 mWEvlpMtxNum;
/* 0x20 */ u8 mWEvlpMixMtxNum;
/* 0x20 */ u32 mWEvlpMixMtxNum;
/* 0x24 */ s32 mWEvlpMixIndex;
/* 0x28 */ s32 mWEvlpMixWeight;
/* 0x2C */ Mtx* mInvJointMtx;
/* 0x30 */ s32 mWEvlpImportantMtxIdx;
/* 0x34 */ J3DDrawMtxData mDrawMtxNum;
/* 0x40 */ u8 field_0x40[4];
/* 0x34 */ J3DDrawMtxData mDrawMtxData;
/* 0x40 */ u32 field_0x40;
/* 0x44 */ JUTNameTab* mJointName;
}; // Size: 0x48
+22 -5
View File
@@ -15,6 +15,17 @@ enum J3DMdlFlag {
/* 0x8 */ J3DMdlFlag_SkinNrmCpu = 0x8,
};
struct J3DUnkCalc1 {
virtual void calc(J3DModel* model);
};
struct J3DUnkCalc2 {
virtual void unk();
virtual void calc(J3DModelData* mpModelData);
};
typedef void (*J3DCalcCallBack)(J3DModel*, u32 timing);
class J3DModel {
public:
/* 800CFFF4 */ void setBaseTRMtx(f32 (*)[4]);
@@ -45,19 +56,25 @@ public:
/* 80328350 */ virtual ~J3DModel();
J3DModelData* getModelData() { return mModelData; }
void onFlag(u32 flag) { mFlags |= flag; }
void offFlag(u32 flag) { mFlags &= ~flag; }
bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; }
Mtx& getBaseTRMtx() { return mBaseTransformMtx; }
void i_setBaseTRMtx(Mtx m) { PSMTXCopy(m, mBaseTransformMtx); }
u32 getMtxCalcMode() const { return mFlags & 0x03; }
J3DVertexBuffer* getVertexBuffer() const { return (J3DVertexBuffer*)&mVertexBuffer; }
J3DShapePacket* getShapePacket(u16 idx) const { return &mShapePacket[idx]; }
Mtx33* getBumpMtxPtr(int idx) const { return mMtxBuffer->getBumpMtxPtr(idx); }
Mtx33* getNrmMtxPtr() const { return mMtxBuffer->getNrmMtxPtr(); }
// is there a better way to handle inlines with same name as non-inlines?
MtxP i_getAnmMtx(int p1) { return mMtxBuffer->getAnmMtx(p1); }
/* 0x04 */ J3DModelData* mModelData;
/* 0x08 */ u32 mFlags;
/* 0x0C */ u32 field_0x0c;
/* 0x10 */ int field_0x10;
/* 0x0C */ u32 mDiffFlag;
/* 0x10 */ J3DCalcCallBack mCalcCallBack;
/* 0x14 */ u32 mUserArea;
/* 0x18 */ Vec mBaseScale;
/* 0x24 */ Mtx mBaseTransformMtx;
@@ -65,12 +82,12 @@ public:
/* 0x84 */ J3DMtxBuffer* mMtxBuffer;
/* 0x88 */ J3DVertexBuffer mVertexBuffer;
/* 0xC0 */ J3DMatPacket* mMatPacket;
/* 0xC4 */ J3DShapePacket** mShapePacket;
/* 0xC4 */ J3DShapePacket* mShapePacket;
/* 0xC8 */ J3DDeformData* mDeformData;
/* 0xCC */ J3DSkinDeform* mSkinDeform;
/* 0xD0 */ J3DVtxColorCalc* mVtxColorCalc;
/* 0xD4 */ int field_0xd4;
/* 0xD8 */ int field_0xd8;
/* 0xD4 */ J3DUnkCalc1* mUnkCalc1;
/* 0xD8 */ J3DUnkCalc2* mUnkCalc2;
};
#endif /* J3DMODEL_H */
@@ -25,6 +25,8 @@ public:
J3DVertexData& getVertexData() { return mVertexData; }
u16 getShapeNum() const { return mShapeTable.getShapeNum(); }
u16 getMaterialNum() const { return mMaterialTable.getMaterialNum(); }
u16 getJointNum() const { return mJointTree.getJointNum(); }
u16 getDrawMtxNum() const { return mJointTree.getDrawMtxNum(); }
J3DMaterial* getMaterialNodePointer(u16 idx) const {
return mMaterialTable.getMaterialNodePointer(idx);
}
@@ -36,14 +38,15 @@ public:
void* getVtxPosArray() const { return mVertexData.getVtxPosArray(); }
void* getVtxNrmArray() const { return mVertexData.getVtxNrmArray(); }
_GXColor* getVtxColorArray(u8 idx) const { return mVertexData.getVtxColorArray(idx); }
bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; }
bool checkBBoardFlag() const { return field_0xe == 1; }
bool checkFlag(u32 flag) const { return !!(mFlags & flag); }
bool checkBumpFlag() const { return mbHasBumpArray; }
bool checkBBoardFlag() const { return mbHasBillboard == 1; }
private:
/* 0x04 */ u32 field_0x4;
/* 0x04 */ void* mpRawData;
/* 0x08 */ u32 mFlags;
/* 0x0C */ u16 field_0xc;
/* 0x0E */ u16 field_0xe;
/* 0x0C */ u16 mbHasBumpArray;
/* 0x0E */ u16 mbHasBillboard;
/* 0x10 */ J3DJointTree mJointTree;
/* 0x58 */ J3DMaterialTable mMaterialTable;
/* 0x78 */ J3DShapeTable mShapeTable;
@@ -24,9 +24,16 @@ public:
/* 80326D3C */ void calcNrmMtx();
/* 80326EF0 */ void calcBBoardMtx();
MtxP getAnmMtx(int idx) const { return *(mMatrices[0] + idx); }
MtxP getAnmMtx(int idx) const { return mpAnmMtx[idx]; }
void setScaleFlag(int idx, u8 flag) { mScaleFlag[idx] = flag; }
void setScaleFlag(int idx, u8 flag) { mScaleFlagArray[idx] = flag; }
u32* getCurrentViewNoPtr() { return &mCurrentViewNo; }
u8* getScaleFlagArray() const { return mScaleFlagArray; }
Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr; }
Mtx33** getNrmMtxPtrPtr() const { return mpNrmMtxArr; }
Mtx33* getNrmMtxPtr() const { return mpNrmMtxArr[mCurrentViewNo]; }
Mtx33** getBumpMtxPtrPtr() const { return mpBumpMtxArr; }
Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[idx]; }
static Mtx sNoUseDrawMtx;
static Mtx33 sNoUseNrmMtx;
@@ -35,14 +42,18 @@ public:
private:
/* 0x00 */ J3DJointTree* mJointTree;
/* 0x04 */ u8* mScaleFlag;
/* 0x04 */ u8* mScaleFlagArray;
/* 0x08 */ u8* mEnvScaleFlag;
/* 0x0C */ Mtx* mMatrices[5]; // fix this later
/* 0x20 */ Mtx33* mpNrmMtxPtrPtr;
/* 0x24 */ Mtx** field_0x24;
/* 0x28 */ Mtx** mpBumpMtxPtr;
/* 0x2C */ u32 field_0x2c;
/* 0x30 */ u32* mCurrentViewNoPtr;
/* 0x0C */ Mtx* mpAnmMtx;
/* 0x10 */ Mtx* mpWeightEnvMtx;
/* 0x14 */ Mtx** mpOldDrawMtxArr;
/* 0x18 */ Mtx** mpDrawMtxArr;
/* 0x1C */ Mtx33** mpOldNrmMtxArr;
/* 0x20 */ Mtx33** mpNrmMtxArr;
/* 0x24 */ u32 field_0x24;
/* 0x28 */ Mtx33** mpBumpMtxArr;
/* 0x2C */ u32 mFlags;
/* 0x30 */ u32 mCurrentViewNo;
/* 0x34 */ Mtx** mUserAnmMtx;
public:
+23 -21
View File
@@ -21,11 +21,13 @@ struct J3DGXColor : public _GXColor {
struct J3DNBTScaleInfo {
/* 8032587C */ void operator=(J3DNBTScaleInfo const&);
/* 0x0 */ u8 field_0x0;
/* 0x0 */ u8 mbHasScale;
/* 0x4 */ Vec mScale;
}; // Size: 0x10
struct J3DNBTScale : public J3DNBTScaleInfo {};
struct J3DNBTScale : public J3DNBTScaleInfo {
Vec* getScale() { return &mScale; }
};
class J3DTexGenBlock {
public:
@@ -50,7 +52,7 @@ public:
/* 8000DFD8 */ virtual J3DTexMtx* getTexMtx(u32);
/* 80317424 */ virtual void setNBTScale(J3DNBTScale const*);
/* 80317420 */ virtual void setNBTScale(J3DNBTScale);
/* 80317334 */ virtual bool getNBTScale();
/* 80317334 */ virtual J3DNBTScale* getNBTScale();
/* 80317428 */ virtual bool getTexMtxOffset() const;
/* 80317430 */ virtual void setTexMtxOffset(u32);
/* 803171DC */ virtual ~J3DTexGenBlock();
@@ -71,7 +73,7 @@ public:
/* 8031ACD0 */ virtual void diffTexMtx();
/* 8031AD30 */ virtual void diffTexGen();
/* 80317B9C */ virtual s32 countDLSize();
/* 80322E74 */ virtual void getType();
/* 80322E74 */ virtual u32 getType();
/* 80322D3C */ virtual void setTexGenNum(u32 const*);
/* 80322D34 */ virtual void setTexGenNum(u32);
/* 80322D48 */ virtual void getTexGenNum() const;
@@ -98,7 +100,7 @@ public:
/* 8031A9E8 */ virtual void load();
/* 8031ABC0 */ virtual void patch();
/* 80317BAC */ virtual s32 countDLSize();
/* 80322C6C */ virtual void getType();
/* 80322C6C */ virtual u32 getType();
/* 80322C9C */ virtual void setNBTScale(J3DNBTScale const*);
/* 80322C78 */ virtual void setNBTScale(J3DNBTScale);
/* 80322CC0 */ virtual void getNBTScale();
@@ -116,7 +118,7 @@ public:
/* 8031A948 */ virtual void load();
/* 8031AB18 */ virtual void patch();
/* 80317BA4 */ virtual s32 countDLSize();
/* 80322DA8 */ virtual void getType();
/* 80322DA8 */ virtual u32 getType();
/* 80322DD8 */ virtual void setNBTScale(J3DNBTScale const*);
/* 80322DB4 */ virtual void setNBTScale(J3DNBTScale);
/* 80322DFC */ virtual void getNBTScale();
@@ -205,7 +207,7 @@ public:
/* 8031C0AC */ virtual void patchTexNoAndTexCoordScale();
/* 8031DFB4 */ virtual void ptrToIndex();
/* 80322974 */ virtual void indexToPtr();
/* 80322998 */ virtual void getType();
/* 80322998 */ virtual u32 getType();
/* 80317BB4 */ virtual s32 countDLSize();
/* 803229D0 */ virtual void setTexNo(u32, u16 const*);
/* 803229C0 */ virtual void setTexNo(u32, u16);
@@ -269,7 +271,7 @@ public:
/* 8031C854 */ virtual void patchTexNoAndTexCoordScale();
/* 80321FE8 */ virtual void ptrToIndex();
/* 80321FEC */ virtual void indexToPtr();
/* 80322010 */ virtual void getType();
/* 80322010 */ virtual u32 getType();
/* 80317BCC */ virtual s32 countDLSize();
/* 8032202C */ virtual void setTexNo(u32, u16 const*);
/* 8032201C */ virtual void setTexNo(u32, u16);
@@ -339,7 +341,7 @@ public:
/* 8031C558 */ virtual void patchTexNoAndTexCoordScale();
/* 803223AC */ virtual void ptrToIndex();
/* 803223B0 */ virtual void indexToPtr();
/* 803223D4 */ virtual void getType();
/* 803223D4 */ virtual u32 getType();
/* 80317BC4 */ virtual s32 countDLSize();
/* 803223F0 */ virtual void setTexNo(u32, u16 const*);
/* 803223E0 */ virtual void setTexNo(u32, u16);
@@ -409,7 +411,7 @@ public:
/* 8031CB7C */ virtual void patchTexNoAndTexCoordScale();
/* 8031DED0 */ virtual void ptrToIndex();
/* 80321C20 */ virtual void indexToPtr();
/* 80321C44 */ virtual void getType();
/* 80321C44 */ virtual u32 getType();
/* 80317BD4 */ virtual s32 countDLSize();
/* 80321C60 */ virtual void setTexNo(u32, u16 const*);
/* 80321C50 */ virtual void setTexNo(u32, u16);
@@ -479,7 +481,7 @@ public:
/* 8031C2E8 */ virtual void patchTexNoAndTexCoordScale();
/* 80322770 */ virtual void ptrToIndex();
/* 80322774 */ virtual void indexToPtr();
/* 80322798 */ virtual void getType();
/* 80322798 */ virtual u32 getType();
/* 80317BBC */ virtual s32 countDLSize();
/* 803227B4 */ virtual void setTexNo(u32, u16 const*);
/* 803227A4 */ virtual void setTexNo(u32, u16);
@@ -581,7 +583,7 @@ class J3DPEBlockXlu : public J3DPEBlock {
public:
/* 8031E98C */ virtual void load();
/* 80317BF4 */ virtual s32 countDLSize();
/* 80323258 */ virtual void getType();
/* 80323258 */ virtual u32 getType();
/* 80323264 */ virtual ~J3DPEBlockXlu();
};
@@ -589,7 +591,7 @@ class J3DPEBlockTexEdge : public J3DPEBlock {
public:
/* 8031E6C8 */ virtual void load();
/* 80317BEC */ virtual s32 countDLSize();
/* 803232C0 */ virtual void getType();
/* 803232C0 */ virtual u32 getType();
/* 803232CC */ virtual ~J3DPEBlockTexEdge();
};
@@ -597,7 +599,7 @@ class J3DPEBlockOpa : public J3DPEBlock {
public:
/* 8031E408 */ virtual void load();
/* 80317BE4 */ virtual s32 countDLSize();
/* 80323328 */ virtual void getType();
/* 80323328 */ virtual u32 getType();
/* 80323334 */ virtual ~J3DPEBlockOpa();
};
@@ -612,7 +614,7 @@ public:
/* 8031F940 */ virtual void diffFog();
/* 8031F9B8 */ virtual void diffBlend();
/* 80317C04 */ virtual s32 countDLSize();
/* 8032194C */ virtual void getType();
/* 8032194C */ virtual u32 getType();
/* 8032197C */ virtual void setFog(J3DFog);
/* 80321958 */ virtual void setFog(J3DFog*);
/* 803219A0 */ virtual void getFog();
@@ -654,7 +656,7 @@ public:
/* 80321ACC */ virtual void diff(u32);
/* 8031F0D8 */ virtual void diffBlend();
/* 80317BFC */ virtual s32 countDLSize();
/* 80321B00 */ virtual void getType();
/* 80321B00 */ virtual u32 getType();
/* 80321B28 */ virtual void setAlphaComp(J3DAlphaComp const*);
/* 80321B0C */ virtual void setAlphaComp(J3DAlphaComp const&);
/* 80321B44 */ virtual void getAlphaComp();
@@ -732,7 +734,7 @@ public:
/* 8031E328 */ virtual void diff(u32);
/* 8031E12C */ virtual void load();
/* 80317BDC */ virtual s32 countDLSize();
/* 80323390 */ virtual void getType();
/* 80323390 */ virtual u32 getType();
/* 8032339C */ virtual void setIndTexStageNum(u8);
/* 803233A4 */ virtual void getIndTexStageNum() const;
/* 803233AC */ virtual void setIndTexOrder(u32, J3DIndTexOrder);
@@ -758,7 +760,7 @@ public:
/* 803173A0 */ virtual void reset(J3DIndBlock*);
/* 80317398 */ virtual void diff(u32);
/* 8031739C */ virtual void load();
/* 803173A4 */ virtual void getType();
/* 803173A4 */ virtual u32 getType();
/* 803173B0 */ virtual ~J3DIndBlockNull();
};
@@ -830,7 +832,7 @@ public:
/* 8031A4D4 */ virtual void diffColorChan();
/* 8031A8E0 */ virtual void diffLightObj(u32);
/* 80317B94 */ virtual s32 countDLSize();
/* 80322E80 */ virtual void getType();
/* 80322E80 */ virtual u32 getType();
/* 80322EB8 */ virtual void setMatColor(u32, J3DGXColor const*);
/* 80322E8C */ virtual void setMatColor(u32, J3DGXColor);
/* 80322EE4 */ virtual void getMatColor(u32);
@@ -878,7 +880,7 @@ public:
/* 80319BB4 */ virtual void diffMatColor();
/* 80319D30 */ virtual void diffColorChan();
/* 80317B84 */ virtual s32 countDLSize();
/* 80323560 */ virtual void getType();
/* 80323560 */ virtual u32 getType();
/* 80323184 */ virtual void setMatColor(u32, J3DGXColor const*);
/* 80323158 */ virtual void setMatColor(u32, J3DGXColor);
/* 803231B0 */ virtual void getMatColor(u32);
@@ -913,7 +915,7 @@ public:
/* 8031816C */ virtual void load();
/* 8031FDE4 */ virtual void reset(J3DColorBlock*);
/* 80317B8C */ virtual s32 countDLSize();
/* 80323074 */ virtual void getType();
/* 80323074 */ virtual u32 getType();
/* 803230AC */ virtual void setAmbColor(u32, J3DGXColor const*);
/* 80323080 */ virtual void setAmbColor(u32, J3DGXColor);
/* 803230D8 */ virtual void getAmbColor(u32);
+4 -2
View File
@@ -45,6 +45,7 @@ public:
/* 80316E70 */ virtual void change();
J3DMaterial* getNext() const { return mNext; }
J3DShape* getShape() const { return mShape; }
J3DTevBlock* getTevBlock() const { return mTevBlock; }
J3DColorBlock* getColorBlock() const { return mColorBlock; }
J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; }
@@ -57,8 +58,9 @@ public:
return NULL;
}
}
J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); }
private:
public:
/* 0x04 */ J3DMaterial* mNext;
/* 0x08 */ J3DShape* mShape;
/* 0x0C */ J3DJoint* mJoint;
@@ -72,7 +74,7 @@ private:
/* 0x2C */ J3DTevBlock* mTevBlock;
/* 0x30 */ J3DIndBlock* mIndBlock;
/* 0x34 */ J3DPEBlock* mPEBlock;
/* 0x38 */ J3DMaterial* field_0x38;
/* 0x38 */ J3DMaterial* mpOrigMaterial;
/* 0x3C */ J3DMaterialAnm* mMaterialAnm;
/* 0x40 */ J3DCurrentMtx mCurrentMtx;
/* 0x48 */ J3DDisplayListObj* mSharedDLObj;
+27 -4
View File
@@ -57,6 +57,7 @@ public:
}
void addChildPacket(J3DPacket*);
J3DPacket* getNextPacket() const { return mpNextSibling; }
inline void clear() {
mpNextSibling = NULL;
@@ -81,9 +82,22 @@ public:
J3DError newSingleDisplayList(u32);
virtual void draw();
J3DDisplayListObj* getDisplayListObj() { return mpDisplayListObj; }
J3DDisplayListObj* getDisplayListObj() const { return mpDisplayListObj; }
void setDisplayListObj(J3DDisplayListObj* pObj) { mpDisplayListObj = pObj; }
void callDL() const { getDisplayListObj()->callDL(); }
enum {
LOCKED = 0x01,
};
bool checkFlag(u32 flag) const { return (mFlags & flag) != 0; }
void onFlag(u32 flag) { mFlags |= flag; }
void offFlag(u32 flag) { mFlags &= ~flag; }
void lock() { onFlag(LOCKED); }
void unlock() { offFlag(LOCKED); }
J3DTexMtx* getTexMtxObj() const { return mpTexMtx; }
public:
/* 0x10 */ u32 mFlags;
/* 0x14 */ char mPad0[0x0C]; // unk
@@ -104,11 +118,16 @@ public:
void setShape(J3DShape* pShape) { mpShape = pShape; }
void setModel(J3DModel* pModel) { mpModel = pModel; }
void setMtxBuffer(J3DMtxBuffer* pMtxBuffer) { mpMtxBuffer = pMtxBuffer; }
void setBaseMtxPtr(Mtx* pMtx) { mpBaseMtxPtr = pMtx; }
J3DShape* getShape() const { return mpShape; }
J3DModel* getModel() const { return mpModel; }
public:
/* 0x28 */ J3DShape* mpShape;
/* 0x2C */ J3DMtxBuffer* mpMtxBuffer;
/* 0x30 */ Mtx* mpViewMtx;
/* 0x30 */ Mtx* mpBaseMtxPtr;
/* 0x34 */ u32 mDiffFlag;
/* 0x38 */ J3DModel* mpModel;
}; // Size: 0x3C
@@ -121,13 +140,17 @@ public:
void endDiff();
bool isSame(J3DMatPacket*) const;
J3DShapePacket* getShapePacket() const { return mpShapePacket; }
void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; }
void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; }
virtual ~J3DMatPacket();
virtual bool entry(J3DDrawBuffer*);
virtual void draw();
public:
/* 0x28 */ J3DShapePacket* mpShapePacket;
/* 0x2C */ J3DShapePacket* mpFirstShapePacket;
/* 0x28 */ J3DShapePacket* mpInitShapePacket;
/* 0x2C */ J3DShapePacket* mpShapePacket;
/* 0x30 */ J3DMaterial* mpMaterial;
/* 0x34 */ u32 mSortFlags;
/* 0x38 */ J3DTexture* mpTexture;
+22 -5
View File
@@ -23,6 +23,13 @@ class J3DMaterial;
class J3DVertexData;
class J3DDrawMtxData;
enum J3DShpFlag {
J3DShpFlag_SkinPosCpu = 0x0004,
J3DShpFlag_SkinNrmCpu = 0x0008,
J3DShpFlag_Hidden = 0x0010,
J3DShpFlag_EnableLod = 0x0100,
};
class J3DShape {
public:
/* 80314B48 */ void initialize();
@@ -44,13 +51,23 @@ public:
void onFlag(u32 flag) { mFlags |= flag; }
void offFlag(u32 flag) { mFlags &= ~flag; }
bool checkFlag(u32 flag) { return !!(mFlags & flag); }
void setDrawMtxDataPointer(J3DDrawMtxData* pMtxData) { mDrawMtxData = pMtxData; }
void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; }
void* getVcdVatCmd() const { return mVcdVatCmd; }
void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = pVatCmd; }
void show() { offFlag(1); }
void hide() { onFlag(1); }
void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; }
void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; }
void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; }
void setNrmMtx(Mtx33** pNrmMtx) { mNrmMtx = pNrmMtx; }
bool getNBTFlag() const { return mHasNBT; }
u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
inline J3DMaterial* getMaterial() const { return mMaterial; }
inline u32 getPipeline() const { return (mFlags >> 2) & 7; }
inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; }
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
static void* sOldVcdVatCmd;
@@ -64,17 +81,17 @@ private:
/* 0x14 */ Vec mMin;
/* 0x20 */ Vec mMax;
/* 0x2C */ void* mVcdVatCmd;
/* 0x30 */ _GXAttr* mVtxDesc;
/* 0x30 */ GXVtxDescList* mVtxDesc;
/* 0x34 */ bool mHasNBT;
/* 0x38 */ J3DShapeMtx* mShapeMtx;
/* 0x3C */ J3DShapeDraw* mShapeDraw;
/* 0x38 */ J3DShapeMtx** mShapeMtx;
/* 0x3C */ J3DShapeDraw** mShapeDraw;
/* 0x40 */ J3DCurrentMtx mCurrentMtx;
/* 0x48 */ bool mHasPNMTXIdx;
/* 0x4C */ J3DVertexData* mVertexData;
/* 0x50 */ J3DDrawMtxData* mDrawMtxData;
/* 0x54 */ u8* mScaleFlagArray;
/* 0x58 */ Mtx* mDrawMtx;
/* 0x5C */ Mtx* mNrmMtx;
/* 0x58 */ Mtx** mDrawMtx;
/* 0x5C */ Mtx33** mNrmMtx;
/* 0x60 */ u32* mCurrentViewNo;
/* 0x64 */ u32 mBumpMtxOffset;
};
+21 -4
View File
@@ -4,6 +4,19 @@
#include "dolphin/mtx/mtxvec.h"
#include "dolphin/types.h"
class J3DTexMtx;
class J3DTexGenBlock;
class J3DDifferedTexMtx {
public:
/* 8031322C */ void loadExecute(f32 const (*)[4]);
static J3DTexGenBlock* sTexGenBlock;
static J3DTexMtx* sTexMtxObj;
};
extern u8 struct_804515B0[4];
class J3DShapeMtx {
public:
/* 803130A8 */ void resetMtxLoadCache();
@@ -20,10 +33,14 @@ public:
/* 80313BF0 */ virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
static u8 sMtxLoadPipeline[48];
static u8 sMtxLoadCache[20 + 4 /* padding */];
static u8 sCurrentPipeline[4];
static u8 sCurrentScaleFlag[4];
static u8 sTexMtxLoadType[4];
static u16 sMtxLoadCache[10 + 2 /* padding */];
static u32 sCurrentPipeline;
// static J3DScaleFlag sCurrentScaleFlag;
static u8* sCurrentScaleFlag;
static u32 sTexMtxLoadType;
static void setCurrentPipeline(u32 pipeline) { sCurrentPipeline = pipeline; }
static void setLODFlag(u8 flag) { struct_804515B0[1] = flag; }
private:
/* 0x04 */ u16 mUseMtxIndex;
+30 -2
View File
@@ -19,8 +19,14 @@ class J3DShape;
class J3DDrawBuffer;
class J3DTexture;
enum J3DSysFlag {
J3DSysFlag_SkinPosCpu = 0x00000004,
J3DSysFlag_SkinNrmCpu = 0x00000008,
J3DSysFlag_PostTexMtx = 0x40000000,
};
struct J3DSys {
/* 0x000 */ Mtx mMtx;
/* 0x000 */ Mtx mViewMtx;
/* 0x030 */ J3DMtxCalc* mCurrentMtxCalc;
/* 0x034 */ u32 mFlags;
/* 0x038 */ J3DModel* mModel;
@@ -31,7 +37,9 @@ struct J3DSys {
/* 0x050 */ u32 mDrawMode;
/* 0x054 */ u32 mMaterialMode;
/* 0x058 */ J3DTexture* mTexture;
/* 0x05C */ u8 field_0x5c[0x10C - 0x5C];
/* 0x05C */ u8 field_0x5c[0x104 - 0x5C];
/* 0x104 */ Mtx* mModelDrawMtx;
/* 0x104 */ Mtx33* mModelNrmMtx;
/* 0x10C */ void* mVtxPos;
/* 0x110 */ void* mVtxNrm;
/* 0x114 */ _GXColor* mVtxCol;
@@ -56,17 +64,25 @@ struct J3DSys {
/* 0x4 */ XLU,
};
Mtx* getViewMtx() { return &mViewMtx; }
void setDrawModeOpaTexEdge() { mDrawMode = OPA_TEX_EDGE; }
void setDrawModeXlu() { mDrawMode = XLU; }
void* getVtxPos() const { return mVtxPos; }
void setVtxPos(void* pVtxPos) { mVtxPos = pVtxPos; }
void* getVtxNrm() const { return mVtxNrm; }
void setVtxNrm(void* pVtxNrm) { mVtxNrm = pVtxNrm; }
void* getVtxCol() const { return mVtxCol; }
void setVtxCol(_GXColor* pVtxCol) { mVtxCol = pVtxCol; }
void setModel(J3DModel* pModel) { mModel = pModel; }
void setShapePacket(J3DShapePacket* pPacket) { mShapePacket = pPacket; }
void setMatPacket(J3DMatPacket* pPacket) { mMatPacket = pPacket; }
void setMaterialMode(u32 mode) { mMaterialMode = mode; }
void setTexture(J3DTexture* pTex) { mTexture = pTex; }
@@ -74,6 +90,18 @@ struct J3DSys {
void offFlag(u32 flag) { mFlags &= ~flag; }
bool checkFlag(u32 flag) { return mFlags & flag; }
void setModelDrawMtx(Mtx* pMtxArr) {
mModelDrawMtx = pMtxArr;
GXSetArray(GX_POS_MTX_ARRAY, mModelDrawMtx, sizeof(*mModelDrawMtx));
}
void setModelNrmMtx(Mtx33* pMtxArr) {
mModelNrmMtx = pMtxArr;
GXSetArray(GX_NRM_MTX_ARRAY, mModelNrmMtx, sizeof(*mModelNrmMtx));
}
static Mtx mCurrentMtx;
static Vec mCurrentS;
static Vec mParentS;
+11 -16
View File
@@ -3,6 +3,7 @@
#include "JSystem/JUtility/JUTTexture.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/mtx/mtx44.h"
#include "dolphin/types.h"
class J3DTexture {
@@ -18,27 +19,21 @@ public:
};
struct J3DTextureSRTInfo {
/* 0x00 */ f32 field_0x0;
/* 0x04 */ f32 field_0x4;
/* 0x08 */ s16 field_0x8;
/* 0x0C */ f32 field_0xc;
/* 0x10 */ f32 field_0x10;
/* 0x00 */ f32 mScaleX;
/* 0x04 */ f32 mScaleY;
/* 0x08 */ s16 mRotation;
/* 0x0C */ f32 mTranslationX;
/* 0x10 */ f32 mTranslationY;
}; // Size: 0x14
struct J3DTexMtxInfo {
/* 80325718 */ void operator=(J3DTexMtxInfo const&);
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
/* 0x04 */ f32 field_0x04;
/* 0x08 */ f32 field_0x08;
/* 0x0C */ f32 field_0x0c;
/* 0x10 */ J3DTextureSRTInfo field_0x10;
/* 0x24 */ Mtx mEffectMtx;
/* 0x54 */ f32 field_0x54;
/* 0x58 */ f32 field_0x58;
/* 0x5C */ f32 field_0x5c;
/* 0x60 */ f32 field_0x60;
/* 0x00 */ u8 mProjection;
/* 0x01 */ u8 mInfo;
/* 0x04 */ Vec mCenter;
/* 0x10 */ J3DTextureSRTInfo mSRT;
/* 0x24 */ Mtx44 mEffectMtx;
}; // Size: 0x64
class J3DTexMtx {
+21 -6
View File
@@ -1,6 +1,7 @@
#ifndef JGEOMETRY_H
#define JGEOMETRY_H
#include "dolphin/mtx/vec.h"
#include "dolphin/types.h"
namespace JGeometry {
@@ -10,15 +11,29 @@ struct TVec3 {
T x;
T y;
T z;
};
/*
template <>
struct TVec3<f32> {
TVec3(Vec& v) {
void set(const TVec3& other) {
x = other.x;
y = other.y;
z = other.z;
}
};
template <>
struct TVec3<f32> {
f32 x;
f32 y;
f32 z;
operator Vec*() { return (Vec*)&x; }
operator const Vec*() const { return (Vec*)&x; }
void set(const TVec3<f32>& other) {
x = other.x;
y = other.y;
z = other.z;
}
};
*/
template <typename T>
struct TVec2 {
@@ -1,6 +1,61 @@
#ifndef JPADYNAMICSBLOCK_H
#define JPADYNAMICSBLOCK_H
#include "JSystem/JGeometry.h"
#include "dolphin/types.h"
class JPAEmitterWorkData;
struct JPADynamicsBlockData {
// Common header.
/* 0x00 */ u8 mMagic[4];
/* 0x04 */ u32 mSize;
/* 0x08 */ u32 mFlags;
/* 0x0C */ u32 mResUserWork;
/* 0x10 */ JGeometry::TVec3<f32> mEmitterScl;
/* 0x1C */ JGeometry::TVec3<f32> mEmitterTrs;
/* 0x28 */ JGeometry::TVec3<f32> mEmitterDir;
/* 0x34 */ f32 mInitialVelOmni;
/* 0x38 */ f32 mInitialVelAxis;
/* 0x3C */ f32 mInitialVelRndm;
/* 0x40 */ f32 mInitialVelDir;
/* 0x44 */ f32 mSpread;
/* 0x48 */ f32 mInitialVelRatio;
/* 0x4C */ f32 mRate;
/* 0x50 */ f32 mRateRndm;
/* 0x54 */ f32 mLifeTimeRndm;
/* 0x58 */ f32 mVolumeSweep;
/* 0x5C */ f32 mVolumeMinRad;
/* 0x60 */ f32 mAirResist;
/* 0x64 */ f32 mMoment;
/* 0x68 */ JGeometry::TVec3<s16> mEmitterRot;
/* 0x6E */ s16 mMaxFrame;
/* 0x70 */ s16 mStartFrame;
/* 0x72 */ s16 mLifeTime;
/* 0x74 */ s16 mVolumeSize;
/* 0x76 */ s16 mDivNumber;
/* 0x78 */ u8 mRateStep;
/* 0x7C */ u32 field_0x7c;
};
typedef void (*JPADynamicsCalcVolumeFunc)(JPAEmitterWorkData*);
class JPADynamicsBlock {
public:
/* 8027BB18 */ JPADynamicsBlock(u8 const*);
/* 8027BB4C */ void init();
/* 8027BBE8 */ void create(JPAEmitterWorkData*);
void calc(JPAEmitterWorkData* work) { mpCalcVolumeFunc(work); }
s16 getStartFrame() const { return mpData->mStartFrame; }
u32 getResUserWork() const { return mpData->mResUserWork; }
public:
JPADynamicsBlockData* mpData;
JPADynamicsCalcVolumeFunc mpCalcVolumeFunc;
};
#endif /* JPADYNAMICSBLOCK_H */
+27
View File
@@ -3,4 +3,31 @@
#include "dolphin/types.h"
struct JPAExTexShapeData {
// Common header.
/* 0x00 */ u8 mMagic[4];
/* 0x04 */ u32 mSize;
/* 0x08 */ u32 mFlags;
/* 0x0C */ f32 mIndTexMtx[2][3];
/* 0x24 */ s8 mExpScale;
/* 0x25 */ s8 mIndTexIdx;
/* 0x26 */ s8 mSecTexIdx;
};
class JPAExTexShape {
public:
/* 8027B13C */ JPAExTexShape(u8 const*);
const f32* getIndTexMtx() const { return &mpData->mIndTexMtx[0][0]; }
s32 getExpScale() const { return mpData->mExpScale; }
u8 getIndTexIdx() const { return mpData->mIndTexIdx; }
u8 getSecTexIdx() const { return mpData->mSecTexIdx; }
bool isUseIndirect() const { return !!(mpData->mFlags & 0x01); }
bool isUseSecTex() const { return !!(mpData->mFlags & 0x0100); }
public:
const JPAExTexShapeData* mpData;
};
#endif /* JPAEXTEXSHAPE_H */
+3
View File
@@ -1,6 +1,9 @@
#ifndef JPAMATH_H
#define JPAMATH_H
#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
void JPAGetXYZRotateMtx(s16 x, s16 y, s16 z, Mtx dst);
#endif /* JPAMATH_H */
+300 -7
View File
@@ -4,15 +4,243 @@
#include "dolphin/gx/GX.h"
#include "dolphin/types.h"
class JPABaseParticle;
#include "JSystem/JGeometry.h"
#include "JSystem/JSupport/JSUList.h"
struct JPABaseEmitter {
class JKRHeap;
class JPABaseEmitter;
class JPABaseParticle;
class JPADrawInfo;
class JPAEmitterCallBack;
class JPAEmitterManager;
class JPAParticleCallBack;
class JPAResource;
class JPAResourceManager;
class JPADrawInfo {
public:
Mtx mCamMtx;
Mtx mPrjMtx;
void getCamMtx(Mtx* dst) const { PSMTXCopy(mCamMtx, *dst); }
void getPrjMtx(Mtx* dst) const { PSMTXCopy(mPrjMtx, *dst); }
};
struct JPARandom {
public:
JPARandom() { mSeed = 0; }
void set_seed(u32 seed) { mSeed = seed; }
public:
u32 mSeed;
};
template <class T>
struct JPANode {
JPANode<T>* mpPrev;
JPANode<T>* mpNext;
T mData;
};
template <class T>
struct JPAList {
JPANode<T>* mpFirst;
JPANode<T>* mpLast;
u32 mNum;
JPAList() : mpFirst(NULL), mpLast(NULL), mNum() {}
JPANode<T>* getFirst() const { return mpFirst; }
JPANode<T>* getLast() const { return mpLast; }
u32 getNum() const { return mNum; }
void push_front(JPANode<T>* node) {
if (mpFirst != NULL) {
node->mpPrev = NULL;
node->mpNext = mpFirst;
mpFirst->mpPrev = node;
mpFirst = node;
} else {
mpLast = node;
mpFirst = node;
node->mpPrev = NULL;
node->mpNext = NULL;
}
mNum++;
}
void push_back(JPANode<T>* node) {
if (mpLast != NULL) {
node->mpPrev = mpLast;
node->mpNext = NULL;
mpLast->mpNext = node;
mpLast = node;
} else {
mpFirst = node;
mpLast = node;
node->mpPrev = NULL;
node->mpNext = NULL;
}
mNum++;
}
JPANode<T>* pop_front() {
JPANode<T>* ret = NULL;
if (mNum == 1) {
ret = mpFirst;
mpLast = NULL;
mpFirst = NULL;
mNum--;
} else if (mNum) {
ret = mpFirst;
ret->mpNext->mpPrev = NULL;
mpFirst = ret->mpNext;
mNum--;
}
return ret;
}
JPANode<T>* pop_back() {
JPANode<T>* ret = NULL;
if (mNum == 1) {
ret = mpLast;
mpLast = NULL;
mpFirst = NULL;
mNum--;
} else if (mNum) {
ret = mpLast;
ret->mpPrev->mpNext = NULL;
mpLast = ret->mpPrev;
mNum--;
}
return ret;
}
};
struct JPAEmitterWorkData {
/* 0x00 */ JPABaseEmitter* mpEmtr;
/* 0x04 */ JPAResource* mpRes;
/* 0x08 */ JPAResourceManager* mpResMgr;
/* 0x0C */ JPARandom mRndm;
/* 0x10 */ JGeometry::TVec3<f32> mVolumePos;
/* 0x1C */ JGeometry::TVec3<f32> mVelOmni;
/* 0x28 */ JGeometry::TVec3<f32> mVelAxis;
/* 0x34 */ f32 mVolumeSize;
/* 0x38 */ f32 mVolumeMinRad;
/* 0x3C */ f32 mVolumeSweep;
/* 0x40 */ u32 mEmitCount;
/* 0x44 */ u32 mVolumeEmitIdx;
/* 0x48 */ Mtx mDirectionMtx;
/* 0x78 */ Mtx mRotationMtx;
/* 0xA8 */ Mtx mGlobalRot;
/* 0xD8 */ Mtx mGlobalSR;
/* 0x108 */ JGeometry::TVec3<f32> mEmitterPos;
/* 0x114 */ JGeometry::TVec3<f32> mGlobalScl;
/* 0x120 */ JGeometry::TVec3<f32> mGlobalEmtrDir;
/* 0x12C */ JGeometry::TVec3<f32> mPublicScale;
/* 0x138 */ JGeometry::TVec3<f32> mGlobalPos;
/* 0x144 */ JGeometry::TVec2<f32> mGlobalPtclScl;
/* 0x14C */ JGeometry::TVec2<f32> mPivot;
/* 0x154 */ Mtx mYBBCamMtx;
/* 0x184 */ Mtx mPosCamMtx;
/* 0x1B4 */ Mtx mPrjMtx;
/* 0x1E4 */ JPAList<JPABaseParticle>* mpAlivePtcl;
/* 0x1E8 */ JPANode<JPABaseParticle>* mpCurNode;
/* 0x1EC */ u32 mVolumeAngleNum;
/* 0x1F0 */ u32 mVolumeAngleMax;
/* 0x1F4 */ u32 mVolumeX;
/* 0x1F8 */ u32 mDivNumber;
/* 0x1FC */ f32 mScaleAnm;
/* 0x200 */ u32 mDirType;
/* 0x204 */ u32 mRotType;
/* 0x208 */ u32 mPlaneType;
/* 0x20C */ u32 mDLType;
/* 0x210 */ u32 mPrjType;
/* 0x214 */ s16 mClrKeyFrame;
/* 0x216 */ u8 mDrawCount;
};
class JPAEmitterCallBack {
public:
/* 80050368 */ void execute(JPABaseEmitter*);
/* 8005036C */ void draw(JPABaseEmitter*);
/* 80050370 */ void drawAfter(JPABaseEmitter*);
/* 80050374 */ void executeAfter(JPABaseEmitter*);
/* 8027E6A4 */ ~JPAEmitterCallBack();
};
class JPABaseEmitter {
public:
/* 8027E5EC */ ~JPABaseEmitter();
/* 8027E64C */ JPABaseEmitter();
/* 8027E6EC */ void init(JPAEmitterManager*, JPAResource*);
/* 8027EDD4 */ bool processTillStartFrame();
/* 8027EE14 */ void processTermination();
/* 8027EEB0 */ void calcEmitterGlobalPosition(JGeometry::TVec3<f32>*) const;
/* 8027EC60 */ void deleteAllParticle();
/* 8027EB60 */ void createChild(JPABaseParticle*);
/* 8027EA40 */ void createParticle();
/* 8027EF30 */ void getCurrentCreateNumber() const;
/* 8027EF40 */ void getDrawCount() const;
/* 8027EF50 */ void loadTexture(u8, _GXTexMapID);
/* 8027EB60 */ JPABaseParticle* createChild(JPABaseParticle*);
/* 8027EA40 */ JPABaseParticle* createParticle();
/* 8027EF30 */ u32 getCurrentCreateNumber() const;
/* 8027EF40 */ u8 getDrawCount() const;
/* 8027EF50 */ bool loadTexture(u8, GXTexMapID);
void setStatus(u32 status) { mStatus |= status; }
bool checkStatus(u32 status) { return !!(mStatus & status); }
u8 getResourceManagerID() const { return mResMgrID; }
u8 getGroupID() const { return mGroupID; }
public:
/* 0x00 */ Vec mLocalScl;
/* 0x0C */ Vec mLocalTrs;
/* 0x18 */ Vec mLocalDir;
/* 0x24 */ s32 mMaxFrame;
/* 0x28 */ f32 mRate;
/* 0x2C */ f32 mVolumeSweep;
/* 0x30 */ f32 mVolumeMinRad;
/* 0x34 */ f32 mAwayFromCenterSpeed;
/* 0x38 */ f32 mAwayFromAxisSpeed;
/* 0x3C */ f32 mDirSpeed;
/* 0x40 */ f32 mSpread;
/* 0x44 */ f32 mRndmDirSpeed;
/* 0x48 */ f32 mAirResist;
/* 0x4C */ JGeometry::TVec3<s16> mLocalRot;
/* 0x52 */ u16 mLifeTime;
/* 0x54 */ u16 mVolumeSize;
/* 0x56 */ u8 mRateStep;
/* 0x58 */ JSULink<JPABaseEmitter> mLink;
/* 0x68 */ Mtx mGlobalRot;
/* 0x98 */ Vec mGlobalScl;
/* 0xA4 */ JGeometry::TVec3<f32> mGlobalTrs;
/* 0xB0 */ JGeometry::TVec2<f32> mGlobalPScl;
/* 0xB8 */ GXColor mGlobalPrmClr;
/* 0xBC */ GXColor mGlobalEnvClr;
/* 0xC0 */ void* mpUserWork;
/* 0xC4 */ JPARandom mRndm;
/* 0xC8 */ JPAList<JPABaseParticle> mAlivePtclBase;
/* 0xD4 */ JPAList<JPABaseParticle> mAlivePtclChld;
/* 0xE0 */ JPAList<JPABaseParticle>* mpPtclPool;
/* 0xE4 */ JPAEmitterManager* mpEmtrMgr;
/* 0xE8 */ JPAResource* mpRes;
/* 0xEC */ JPAEmitterCallBack* mpEmtrCallBack;
/* 0xF0 */ JPAParticleCallBack* mpPtclCallBack;
/* 0xF4 */ u32 mStatus;
/* 0xF8 */ f32 mEmitCount;
/* 0xFC */ f32 mScaleOut;
/* 0x100 */ u32 mTick;
/* 0x104 */ s16 mWaitTime;
/* 0x106 */ u16 mRateStepTimer;
/* 0x108 */ GXColor mPrmClr;
/* 0x10C */ GXColor mEnvClr;
/* 0x110 */ u8 mDrawTimes;
/* 0x111 */ u8 mTexAnmIdx;
/* 0x112 */ u8 mGroupID;
/* 0x113 */ u8 mResMgrID;
};
class JPAParticleCallBack {
@@ -22,4 +250,69 @@ public:
virtual void draw(JPABaseEmitter*, JPABaseParticle*);
};
class JPABaseParticle {
public:
/* 8027EFEC */ void init_p(JPAEmitterWorkData*);
/* 8027F8C8 */ void init_c(JPAEmitterWorkData*, JPABaseParticle*);
/* 8027FFD0 */ void calc_p(JPAEmitterWorkData*);
/* 80280260 */ void calc_c(JPAEmitterWorkData*);
/* 802804C8 */ void canCreateChild(JPAEmitterWorkData*);
/* 80280548 */ f32 getWidth(JPABaseEmitter const*) const;
/* 80280568 */ f32 getHeight(JPABaseEmitter const*) const;
public:
/* 0x00 */ Vec mPosition;
/* 0x0C */ Vec mLocalPosition;
/* 0x18 */ Vec mOffsetPosition;
/* 0x24 */ Vec mVelocity;
/* 0x30 */ Vec mVelType1;
/* 0x3C */ Vec mVelType0;
/* 0x48 */ Vec mVelType2;
/* 0x54 */ Vec mBaseAxis;
/* 0x60 */ f32 mParticleScaleX;
/* 0x64 */ f32 mParticleScaleY;
/* 0x68 */ f32 mScaleOut;
/* 0x6C */ f32 mAlphaWaveRandom;
/* 0x70 */ f32 mMoment;
/* 0x74 */ f32 mDrag;
/* 0x78 */ u32 field_0x78;
/* 0x7C */ u32 mStatus;
/* 0x80 */ u16 mAge;
/* 0x82 */ u16 mLifeTime;
/* 0x84 */ f32 mTime;
/* 0x88 */ u16 mRotateAngle;
/* 0x8A */ u16 mRotateSpeed;
/* 0x8C */ GXColor mPrmClr;
/* 0x90 */ GXColor mEnvClr;
/* 0x94 */ u8 mTexAnmIdx;
/* 0x95 */ u8 mAnmRandom;
/* 0x96 */ u8 mPrmColorAlphaAnm;
};
class JPAEmitterManager {
public:
/* 8027DCA0 */ JPAEmitterManager(u32, u32, JKRHeap*, u8, u8);
/* 8027DEBC */ JPABaseEmitter* createSimpleEmitterID(JGeometry::TVec3<f32> const&, u16, u8, u8,
JPAEmitterCallBack*, JPAParticleCallBack*);
/* 8027DFA0 */ void calc(u8);
/* 8027E028 */ void draw(JPADrawInfo const*, u8);
/* 8027E220 */ void forceDeleteAllEmitter();
/* 8027E278 */ void forceDeleteGroupEmitter(u8);
/* 8027E2D8 */ void forceDeleteEmitter(JPABaseEmitter*);
/* 8027E344 */ void entryResourceManager(JPAResourceManager*, u8);
/* 8027E354 */ void clearResourceManager(u8);
/* 8027E3F4 */ void calcYBBCam();
public:
/* 0x00 */ JSUList<JPABaseEmitter>* mpGrpEmtr;
/* 0x04 */ JSUList<JPABaseEmitter> mFreeEmtrList;
/* 0x10 */ JPAList<JPABaseParticle> mPtclPool;
/* 0x1C */ JPAResourceManager** mpResMgrAry;
/* 0x20 */ JPAEmitterWorkData* mpWorkData;
/* 0x24 */ u32 mEmtrMax;
/* 0x28 */ u32 mPtclMax;
/* 0x2C */ u8 mGrpMax;
/* 0x2D */ u8 mResMax;
};
#endif /* JPAPARTICLE_H */
+69
View File
@@ -3,4 +3,73 @@
#include "dolphin/types.h"
class JKRHeap;
class JPAEmitterWorkData;
class JPABaseEmitter;
class JPABaseParticle;
class JPABaseShape;
class JPAExtraShape;
class JPAChildShape;
class JPAExTexShape;
class JPADynamicsBlock;
class JPAFieldBlock;
class JPAKeyBlock;
class JPAResource {
public:
/* 80274010 */ JPAResource();
/* 80274080 */ void init(JKRHeap*);
/* 802755E8 */ void calc(JPAEmitterWorkData*, JPABaseEmitter*);
/* 80275A94 */ void draw(JPAEmitterWorkData*, JPABaseEmitter*);
/* 80275B74 */ void drawP(JPAEmitterWorkData*);
/* 80275EB0 */ void drawC(JPAEmitterWorkData*);
/* 802761A8 */ void setPTev();
/* 8027642C */ void setCTev(JPAEmitterWorkData*);
/* 8027658C */ void calc_p(JPAEmitterWorkData*, JPABaseParticle*);
/* 80276608 */ void calc_c(JPAEmitterWorkData*, JPABaseParticle*);
/* 80276684 */ void calcField(JPAEmitterWorkData*, JPABaseParticle*);
/* 80276700 */ void calcKey(JPAEmitterWorkData*);
/* 80276840 */ void calcWorkData_c(JPAEmitterWorkData*);
/* 80276A0C */ void calcWorkData_d(JPAEmitterWorkData*);
JPABaseShape* getBsp() const { return mpBaseShape; }
JPAExtraShape* getEsp() const { return mpExtraShape; }
JPAChildShape* getCsp() const { return mpChildShape; }
JPAExTexShape* getEts() const { return mpExTexShape; }
JPADynamicsBlock* getDyn() const { return mpDynamicsBlock; }
u32 getTexIdx(u32 idx) const { return mpTDB1[idx]; }
u16 getUsrIdx() const { return mUsrIdx; }
public:
/* 0x00 */ void** mpCalcEmitterFuncList;
/* 0x04 */ void** mpDrawEmitterFuncList;
/* 0x08 */ void** mpDrawEmitterChildFuncList;
/* 0x0C */ void** mpCalcParticleFuncList;
/* 0x10 */ void** mpDrawParticleFuncList;
/* 0x14 */ void** mpCalcParticleChildFuncList;
/* 0x18 */ void** mpDrawParticleChildFuncList;
/* 0x1C */ JPABaseShape* mpBaseShape;
/* 0x20 */ JPAExtraShape* mpExtraShape;
/* 0x24 */ JPAChildShape* mpChildShape;
/* 0x28 */ JPAExTexShape* mpExTexShape;
/* 0x2C */ JPADynamicsBlock* mpDynamicsBlock;
/* 0x30 */ JPAFieldBlock** mpFieldBlocks;
/* 0x34 */ JPAKeyBlock** mpKeyBlocks;
/* 0x38 */ u16 const* mpTDB1;
/* 0x3C */ u16 mUsrIdx;
/* 0x3E */ u8 mFieldBlockNum;
/* 0x3F */ u8 mKeyBlockNum;
/* 0x40 */ u8 mTDB1Num;
/* 0x41 */ u8 mpCalcEmitterFuncListNum;
/* 0x42 */ u8 mpDrawEmitterFuncListNum;
/* 0x43 */ u8 mpDrawEmitterChildFuncListNum;
/* 0x44 */ u8 mpCalcParticleFuncListNum;
/* 0x45 */ u8 mpDrawParticleFuncListNum;
/* 0x46 */ u8 mpCalcParticleChildFuncListNum;
/* 0x47 */ u8 mpDrawParticleChildFuncListNum;
};
#endif /* JPARESOURCE_H */
@@ -1,6 +1,34 @@
#ifndef JPARESOURCEMANAGER_H
#define JPARESOURCEMANAGER_H
#include "JSystem/JParticle/JPATexture.h"
#include "dolphin/gx/GX.h"
#include "dolphin/types.h"
class JKRHeap;
class ResTIMG;
class JPAResource;
class JPAResourceManager {
public:
/* 80273E10 */ JPAResourceManager(void const*, JKRHeap*);
/* 80273E68 */ JPAResource* getResource(u16) const;
/* 80273EA8 */ bool checkUserIndexDuplication(u16) const;
/* 80273EEC */ const ResTIMG* swapTexture(ResTIMG const*, char const*);
/* 80273F8C */ void registRes(JPAResource*);
/* 80273FAC */ void registTex(JPATexture*);
/* 80273FCC */ u32 getResUserWork(u16) const;
void load(u16 idx, GXTexMapID texMapID) { mpTexArr[idx]->load(texMapID); }
public:
/* 0x00 */ JKRHeap* mpHeap;
/* 0x04 */ JPAResource** mpResArr;
/* 0x08 */ JPATexture** mpTexArr;
/* 0x0C */ u16 mResMax;
/* 0x0E */ u16 mResNum;
/* 0x10 */ u16 mTexMax;
/* 0x12 */ u16 mTexNum;
};
#endif /* JPARESOURCEMANAGER_H */
+23
View File
@@ -1,6 +1,29 @@
#ifndef JPATEXTURE_H
#define JPATEXTURE_H
#include "JSystem/JUtility/JUTTexture.h"
#include "dolphin/types.h"
struct JPATextureData {
// Probably magic / size / flags up top here, but they're unused.
/* 0x00 */ char field_0x00[0x0C];
/* 0x0C */ char mName[0x14];
/* 0x20 */ ResTIMG mResTIMG;
};
class JPATexture {
public:
JPATexture(u8 const*);
virtual ~JPATexture();
void load(GXTexMapID texMapID) { mTexture.load(texMapID); }
JUTTexture* getJUTTexture() { return &mTexture; }
const char* getName() const { return mpData->mName; }
public:
JUTTexture mTexture;
const JPATextureData* mpData;
};
#endif /* JPATEXTURE_H */
-16
View File
@@ -5,22 +5,6 @@
#include "dolphin/types.h"
#include "f_op/f_op_actor.h"
class JPAEmitterCallBack {
public:
/* 8027E6A4 */ virtual ~JPAEmitterCallBack() = 0;
/* 80050368 */ virtual void execute(JPABaseEmitter*);
/* 80050374 */ virtual void executeAfter(JPABaseEmitter*);
/* 8005036C */ virtual void draw(JPABaseEmitter*);
/* 80050370 */ virtual void drawAfter(JPABaseEmitter*);
};
struct JPAResourceManager {
/* 80273E10 */ JPAResourceManager(void const*, JKRHeap*);
/* 80273EA8 */ void checkUserIndexDuplication(u16) const;
/* 80273EEC */ void swapTexture(ResTIMG const*, char const*);
/* 80273FCC */ void getResUserWork(u16) const;
};
class dPa_levelEcallBack : public JPAEmitterCallBack {
public:
/* 8004FB18 */ virtual ~dPa_levelEcallBack();
+113 -8
View File
@@ -12,6 +12,14 @@ typedef struct _GXColor {
/* 0x1 */ u8 g;
/* 0x2 */ u8 b;
/* 0x3 */ u8 a;
_GXColor& operator=(const _GXColor& o) {
r = o.r;
g = o.g;
b = o.b;
a = o.a;
return *this;
}
} GXColor;
typedef struct _GXColorS10 {
@@ -234,7 +242,7 @@ typedef enum _GXLogicOp {
/* 0x4 */ GX_LO_INV_AND,
/* 0x5 */ GX_LO_NOOP,
/* 0x6 */ GX_LO_XOR,
/* 0x7 */ GX_LO_OP,
/* 0x7 */ GX_LO_OR,
/* 0x8 */ GX_LO_NOR,
/* 0x9 */ GX_LO_EQUIV,
/* 0xA */ GX_LO_INV,
@@ -258,7 +266,7 @@ typedef enum _GXVtxFmt {
} GXVtxFmt;
typedef enum _GXAttr {
/* 0x00 */ GX_VA_PTNMTXIDX,
/* 0x00 */ GX_VA_PNMTXIDX,
/* 0x01 */ GX_VA_TEX0MTXIDX,
/* 0x02 */ GX_VA_TEX1MTXIDX,
/* 0x03 */ GX_VA_TEX2MTXIDX,
@@ -364,8 +372,8 @@ typedef enum _GXTevColorArg {
typedef enum _GXTevColor {
/* 0x0 */ GX_CH_RED,
/* 0x1 */ GX_CH_BLUE,
/* 0x2 */ GX_CH_GREEN,
/* 0x1 */ GX_CH_GREEN,
/* 0x2 */ GX_CH_BLUE,
/* 0x3 */ GX_CH_ALPHA,
} GXTevColor;
@@ -693,6 +701,41 @@ typedef enum _GXIndTexMtxID {
/* 0xB */ GX_ITM_T2,
} GXIndTexMtxID;
typedef enum _GXIndTexFormat {
/* 0x0 */ GX_ITF_8,
/* 0x1 */ GX_ITF_5,
/* 0x2 */ GX_ITF_4,
/* 0x3 */ GX_ITF_3,
} GXIndTexFormat;
typedef enum _GXIndTexBiasSel {
/* 0x0 */ GX_ITB_NONE,
/* 0x1 */ GX_ITB_S,
/* 0x2 */ GX_ITB_T,
/* 0x3 */ GX_ITB_ST,
/* 0x4 */ GX_ITB_U,
/* 0x5 */ GX_ITB_SU,
/* 0x6 */ GX_ITB_TU,
/* 0x7 */ GX_ITB_STU,
} GXIndTexBiasSel;
typedef enum _GXIndTexAlphaSel {
/* 0x0 */ GX_ITBA_OFF,
/* 0x1 */ GX_ITBA_S,
/* 0x2 */ GX_ITBA_T,
/* 0x3 */ GX_ITBA_U,
} GXIndTexAlphaSel;
typedef enum _GXIndTexWrap {
/* 0x0 */ GX_ITW_OFF,
/* 0x1 */ GX_ITW_256,
/* 0x2 */ GX_ITW_128,
/* 0x3 */ GX_ITW_64,
/* 0x4 */ GX_ITW_32,
/* 0x5 */ GX_ITW_16,
/* 0x6 */ GX_ITW_0,
} GXIndTexWrap;
typedef enum _GXTexOffset {
/* 0x0 */ GX_TO_ZERO,
/* 0x1 */ GX_TO_SIXTEENTH,
@@ -717,6 +760,62 @@ typedef enum _GXTexCacheSize {
/* 0x3 */ GX_TEXCACHE_NONE,
} GXTexCacheSize;
typedef enum _GXPosNrmMtx {
GX_PNMTX0 = 3 * 0,
GX_PNMTX1 = 3 * 1,
GX_PNMTX2 = 3 * 2,
GX_PNMTX3 = 3 * 3,
GX_PNMTX4 = 3 * 4,
GX_PNMTX5 = 3 * 5,
GX_PNMTX6 = 3 * 6,
GX_PNMTX7 = 3 * 7,
GX_PNMTX8 = 3 * 8,
GX_PNMTX9 = 3 * 9,
} GXPosNrmMtx;
typedef enum _GXTexMtx {
GX_TEXMTX0 = 30 + 0 * 3,
GX_TEXMTX1 = 30 + 1 * 3,
GX_TEXMTX2 = 30 + 2 * 3,
GX_TEXMTX3 = 30 + 3 * 3,
GX_TEXMTX4 = 30 + 4 * 3,
GX_TEXMTX5 = 30 + 5 * 3,
GX_TEXMTX6 = 30 + 6 * 3,
GX_TEXMTX7 = 30 + 7 * 3,
GX_TEXMTX8 = 30 + 8 * 3,
GX_TEXMTX9 = 30 + 9 * 3,
GX_IDENTITY = 60,
};
typedef enum _GXPTTexMtx {
GX_PTTEXMTX0 = 64 + 0 * 3,
GX_PTTEXMTX1 = 64 + 1 * 3,
GX_PTTEXMTX2 = 64 + 2 * 3,
GX_PTTEXMTX3 = 64 + 3 * 3,
GX_PTTEXMTX4 = 64 + 4 * 3,
GX_PTTEXMTX5 = 64 + 5 * 3,
GX_PTTEXMTX6 = 64 + 6 * 3,
GX_PTTEXMTX7 = 64 + 7 * 3,
GX_PTTEXMTX8 = 64 + 8 * 3,
GX_PTTEXMTX9 = 64 + 9 * 3,
GX_PTTEXMTX10 = 64 + 10 * 3,
GX_PTTEXMTX11 = 64 + 11 * 3,
GX_PTTEXMTX12 = 64 + 12 * 3,
GX_PTTEXMTX13 = 64 + 13 * 3,
GX_PTTEXMTX14 = 64 + 14 * 3,
GX_PTTEXMTX15 = 64 + 15 * 3,
GX_PTTEXMTX16 = 64 + 16 * 3,
GX_PTTEXMTX17 = 64 + 17 * 3,
GX_PTTEXMTX18 = 64 + 18 * 3,
GX_PTTEXMTX19 = 64 + 19 * 3,
GX_PTIDENTITY = 125,
};
typedef struct _GXVtxDescList {
GXAttr attr;
GXAttrType type;
} GXVtxDescList;
extern "C" {
f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height);
u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale);
@@ -741,10 +840,13 @@ void GXSetTevColorIn(GXTevStageID, GXTevColorArg, GXTevColorArg, GXTevColorArg,
void GXSetTevAlphaIn(GXTevStageID, GXTevAlphaArg, GXTevAlphaArg, GXTevAlphaArg, GXTevAlphaArg);
void GXSetTevColorOp(GXTevStageID, GXTevOp, GXTevBias, GXTevScale, GXBool, GXTevRegID);
void GXSetTevAlphaOp(GXTevStageID, GXTevOp, GXTevBias, GXTevScale, GXBool, GXTevRegID);
void GXSetTevIndirect(GXTevStageID, _GXIndTexStageID, GXIndTexFormat, GXIndTexBiasSel,
GXIndTexMtxID, GXIndTexWrap, GXIndTexWrap, GXBool, GXBool, GXIndTexAlphaSel);
void GXSetBlendMode(GXBlendMode, GXBlendFactor, GXBlendFactor, GXLogicOp);
void GXSetVtxAttrFmt(GXVtxFmt, GXAttr, GXCompCnt, GXCompType, u32);
void GXClearVtxDesc();
void GXClearVtxDesc(void);
void GXSetVtxDesc(GXAttr, GXAttrType);
void GXSetArray(GXAttr, const void*, u8);
typedef void (*GXDrawDoneCallback)(void);
void GXSetDrawDoneCallback(GXDrawDoneCallback);
void GXDrawDone(void);
@@ -772,9 +874,11 @@ void GXPixModeSync(void);
void GXProject(f32, f32, f32, Mtx, f32*, f32*, f32*, f32*, f32*);
void GXSetAlphaCompare(GXCompare, u8, GXAlphaOp, GXCompare, u8);
void GXSetAlphaUpdate(GXBool);
void GXSetChanAmbColor(GXChannelID, GXColor);
void GXSetChanMatColor(GXChannelID, GXColor);
void GXSetClipMode(GXBool);
void GXSetCoPlanar(GXBool);
void GXSetColorUpdate(GXBool);
void GXSetCopyFilter(GXBool, u8[12][2], GXBool, u8[7]);
void GXSetCullMode(GXCullMode);
void GXSetCurrentMtx(u32);
@@ -786,7 +890,7 @@ void GXSetProjection(Mtx44, GXProjectionType);
void GXSetScissor(u32, u32, u32, u32);
void GXSetTevColorS10(GXTevRegID, GXColorS10);
void GXSetTevKAlphaSel(GXTevStageID, GXTevKAlphaSel);
void GXSetTevSwapMode(GXTevStageID, GXTevSwapSel);
void GXSetTevSwapMode(GXTevStageID, GXTevSwapSel, GXTevSwapSel);
void GXSetTevSwapModeTable(GXTevSwapSel, GXTevColor, GXTevColor, GXTevColor, GXTevColor);
void GXSetTexCoordGen2(GXTexCoordID, GXTexGenType, GXTexGenSrc, u32, GXBool, u32);
void GXSetTexCopyDst(u16, u16, GXTexFmt, GXBool);
@@ -795,7 +899,7 @@ void GXSetViewport(f32, f32, f32, f32, f32, f32);
void GXSetZCompLoc(GXBool);
void GXSetZMode(GXBool, GXCompare, GXBool);
void GXSetZTexture(GXZTexOp, GXZTexFmt, u32);
void GXClearVtxDesc(void);
void GXSetPointSize(u8, GXTexOffset);
void GXSetLineWidth(u8, GXTexOffset);
void GXSetTevDirect(GXTevStageID);
void GXSetTevKColor(GXTevKColorID, GXColor);
@@ -804,6 +908,7 @@ void GXGetScissor(u32*, u32*, u32*, u32*);
void GXSetIndTexMtx(GXIndTexMtxID, Mtx23, s8);
void GXSetIndTexCoordScale(GXIndTexStageID, GXIndTexScale, GXIndTexScale);
void GXSetIndTexOrder(GXIndTexStageID, GXTexCoordID, GXTexMapID);
void GXEnableTexOffsets(GXTexCoordID, GXBool, GXBool);
};
#endif
#endif
+2
View File
@@ -24,6 +24,8 @@ void PSMTXTransApply(const Mtx src, Mtx dst, float x, float y, float z);
void PSMTXScale(Mtx matrix, float x_scale, float y_scale, float z_scale);
void PSMTXScaleApply(const Mtx src, Mtx dst, float x_scale, float y_scale, float z_scale);
void PSMTXQuat(Mtx matrix, const Quaternion* quat);
void PSMTXMultVec(const Mtx matrix, const Vec* src, Vec* dst);
void PSMTXMultVecSR(const Mtx matrix, const Vec* src, Vec* dst);
void C_MTXLookAt(Mtx param_1, const Vec* param_2, const Vec* param_3, const Vec* param_4);
void C_MTXLightPerspective(Mtx matrix, float fov_y, float aspect, float scale_s, float scale_t,