diff options
| author | Jasper St. Pierre <jstpierre@mecheye.net> | 2023-09-30 10:14:17 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-30 10:14:17 -0700 |
| commit | 836bf25fc747cb71d2d519814d6a89379326b4bd (patch) | |
| tree | 02d9f7f579bca010a06e1d62373605365eef3b62 /include/JSystem/J3DGraphBase | |
| parent | afda3600836631850822a4a89ba5058f477cf313 (diff) | |
| parent | 8888b85dd395069adb77a0c055f423c0d716853f (diff) | |
Merge pull request #496 from Jcw87/J3DTevs
J3DTevs
Diffstat (limited to 'include/JSystem/J3DGraphBase')
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DMatBlock.h | 33 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DStruct.h | 115 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DTevs.h | 95 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DTexture.h | 20 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphBase/J3DTransform.h | 21 |
5 files changed, 161 insertions, 123 deletions
diff --git a/include/JSystem/J3DGraphBase/J3DMatBlock.h b/include/JSystem/J3DGraphBase/J3DMatBlock.h index ecce31cc..47cbc21e 100644 --- a/include/JSystem/J3DGraphBase/J3DMatBlock.h +++ b/include/JSystem/J3DGraphBase/J3DMatBlock.h @@ -14,17 +14,6 @@ struct J3DGXColor : public GXColor { J3DGXColor() {} }; -struct J3DNBTScale : public J3DNBTScaleInfo { - J3DNBTScale() {} - J3DNBTScale(J3DNBTScaleInfo const& info) { - mbHasScale = info.mbHasScale; - mScale = info.mScale; - } - Vec* getScale() { return &mScale; } -}; - -extern const J3DNBTScaleInfo j3dDefaultNBTScaleInfo; - class J3DTexGenBlock { public: virtual void reset(J3DTexGenBlock*); @@ -536,8 +525,6 @@ private: /* 0x18 */ J3DIndTevStage mIndTevStage[1]; }; // Size: 0x1C -extern const u16 j3dDefaultZModeID; - inline u16 calcZModeID(u8 param_0, u8 param_1, u8 param_2) { return ((param_1 * 2) & 0x1FE) + (param_0 * 0x10) + param_2; } @@ -568,15 +555,6 @@ struct J3DZMode { /* 0x0 */ u16 mZModeID; }; -struct J3DBlendInfo { - /* 0x0 */ u8 mType; - /* 0x1 */ u8 mSrcFactor; - /* 0x2 */ u8 mDstFactor; - /* 0x3 */ u8 mOp; -}; - -extern const J3DBlendInfo j3dDefaultBlendInfo; - struct J3DBlend : public J3DBlendInfo { J3DBlend() { *(J3DBlendInfo*)this = j3dDefaultBlendInfo; } @@ -613,8 +591,6 @@ struct J3DAlphaCompInfo { /* 0x7 */ u8 field_0x7; }; -extern const u16 j3dDefaultAlphaCmpID; - inline u32 calcAlphaCmpID(u32 param_1, u32 param_2, u32 param_3) { return ((param_1 & 0xff) << 5) + ((param_2 & 0xff) << 3) + (param_3 & 0xff); } @@ -892,15 +868,6 @@ public: virtual ~J3DIndBlockNull(); }; -struct J3DColorChanInfo { - /* 0x0 */ u8 field_0x0; - /* 0x1 */ u8 field_0x1; - /* 0x2 */ u8 field_0x2; - /* 0x3 */ u8 field_0x3; - /* 0x4 */ u8 field_0x4; - /* 0x5 */ u8 field_0x5; -}; - /* inline u32 setChanCtrlMacro(u8 param_0, GXColorSrc param_1, GXColorSrc param_2, u32 param_3, GXDiffuseFn param_4, GXAttnFn param_5) { GXDiffuseFn r31; diff --git a/include/JSystem/J3DGraphBase/J3DStruct.h b/include/JSystem/J3DGraphBase/J3DStruct.h index 4b2988a1..d1a0c403 100644 --- a/include/JSystem/J3DGraphBase/J3DStruct.h +++ b/include/JSystem/J3DGraphBase/J3DStruct.h @@ -17,23 +17,6 @@ public: /* 0x28 */ Vec mDistAtten; }; // Size = 0x34 -extern "C" extern J3DLightInfo const j3dDefaultLightInfo; - -class J3DLightObj { -public: - /* 80018C0C */ J3DLightObj() { mInfo = j3dDefaultLightInfo; } - /* 80323590 */ void load(u32) const; - - J3DLightInfo& getLightInfo() { return mInfo; } - J3DLightObj& operator=(J3DLightObj const& other) { - mInfo = other.mInfo; - return *this; - } - - /* 0x00 */ J3DLightInfo mInfo; - /* 0x34 */ u8 field_0x34[64]; -}; // Size = 0x74 - struct J3DTextureSRTInfo { /* 0x00 */ f32 mScaleX; /* 0x04 */ f32 mScaleY; @@ -47,10 +30,11 @@ struct J3DTexMtxInfo { /* 80325794 */ void setEffectMtx(Mtx); /* 0x00 */ u8 mProjection; - /* 0x01 */ s8 mInfo; + /* 0x01 */ u8 mInfo; + /* 0x02 */ u8 padding[2]; /* 0x04 */ Vec mCenter; /* 0x10 */ J3DTextureSRTInfo mSRT; - /* 0x24 */ Mtx44 mEffectMtx; + /* 0x24 */ Mtx44 mEffectMtx; }; // Size: 0x64 struct J3DIndTexMtxInfo { @@ -77,4 +61,97 @@ struct J3DNBTScaleInfo { inline void operator=(const J3DNBTScaleInfo & other) { mbHasScale = other.mbHasScale; mScale = other.mScale; } }; // Size: 0x10 +struct J3DIndTexOrderInfo { + /* 0x0 */ u8 mCoord; + /* 0x1 */ u8 mMap; + /* 0x2 */ u8 field_0x2; + /* 0x3 */ u8 field_0x3; +}; + +struct J3DTevSwapModeInfo { + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; +}; + +struct J3DTevSwapModeTableInfo { + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; + /* 0x2 */ u8 field_0x2; + /* 0x3 */ u8 field_0x3; +}; + +struct J3DTevStageInfo { + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; + /* 0x2 */ u8 field_0x2; + /* 0x3 */ u8 field_0x3; + /* 0x4 */ u8 field_0x4; + /* 0x5 */ u8 field_0x5; + /* 0x6 */ u8 field_0x6; + /* 0x7 */ u8 field_0x7; + /* 0x8 */ u8 field_0x8; + /* 0x9 */ u8 field_0x9; + /* 0xA */ u8 field_0xa; + /* 0xB */ u8 field_0xb; + /* 0xC */ u8 field_0xc; + /* 0xD */ u8 field_0xd; + /* 0xE */ u8 field_0xe; + /* 0xF */ u8 field_0xf; + /* 0x10 */ u8 field_0x10; + /* 0x11 */ u8 field_0x11; + /* 0x12 */ u8 field_0x12; + /* 0x13 */ u8 field_0x13; +}; + +struct J3DIndTevStageInfo { + /* 0x0 */ u8 mIndStage; + /* 0x1 */ u8 mIndFormat; + /* 0x2 */ u8 mBiasSel; + /* 0x3 */ u8 mMtxSel; + /* 0x4 */ u8 mWrapS; + /* 0x5 */ u8 mWrapT; + /* 0x6 */ u8 mPrev; + /* 0x7 */ u8 mLod; + /* 0x8 */ u8 mAlphaSel; +}; + +struct J3DTexCoordInfo { + /* 0x0 */ u8 mTexGenType __attribute__((aligned(4))); + /* 0x1 */ u8 mTexGenSrc; + /* 0x2 */ u8 mTexGenMtx; +}; + +struct J3DIndTexCoordScaleInfo { + /* 0x0 */ u8 mScaleS; + /* 0x1 */ u8 mScaleT; + /* 0x2 */ u8 field_0x2; + /* 0x3 */ u8 field_0x3; +}; + +struct J3DBlendInfo { + /* 0x0 */ u8 mType; + /* 0x1 */ u8 mSrcFactor; + /* 0x2 */ u8 mDstFactor; + /* 0x3 */ u8 mOp; +}; + +struct J3DTevOrderInfo { + /* 0x0 */ u8 mTexCoord __attribute__((aligned(2))); + /* 0x1 */ u8 mTexMap; + /* 0x2 */ u8 mColorChan; +}; + +struct J3DColorChanInfo { + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; + /* 0x2 */ u8 field_0x2; + /* 0x3 */ u8 field_0x3; + /* 0x4 */ u8 field_0x4; + /* 0x5 */ u8 field_0x5; + /* 0x6 */ u8 field_0x6; + /* 0x7 */ u8 field_0x7; +}; + +STATIC_ASSERT(sizeof(J3DTevStageInfo) == 0x14); + #endif /* J3DSTRUCT_H */ diff --git a/include/JSystem/J3DGraphBase/J3DTevs.h b/include/JSystem/J3DGraphBase/J3DTevs.h index b5404090..762356cb 100644 --- a/include/JSystem/J3DGraphBase/J3DTevs.h +++ b/include/JSystem/J3DGraphBase/J3DTevs.h @@ -2,33 +2,34 @@ #define J3DTEVS_H #include "JSystem/J3DGraphBase/J3DGD.h" +#include "JSystem/J3DGraphBase/J3DStruct.h" extern u8 j3dTevSwapTableTable[1024]; -struct J3DTevStageInfo { - /* 0x0 */ u8 field_0x0; - /* 0x1 */ u8 field_0x1; - /* 0x2 */ u8 field_0x2; - /* 0x3 */ u8 field_0x3; - /* 0x4 */ u8 field_0x4; - /* 0x5 */ u8 field_0x5; - /* 0x6 */ u8 field_0x6; - /* 0x7 */ u8 field_0x7; - /* 0x8 */ u8 field_0x8; - /* 0x9 */ u8 field_0x9; - /* 0xA */ u8 field_0xa; - /* 0xB */ u8 field_0xb; - /* 0xC */ u8 field_0xc; - /* 0xD */ u8 field_0xd; - /* 0xE */ u8 field_0xe; - /* 0xF */ u8 field_0xf; - /* 0x10 */ u8 field_0x10; - /* 0x11 */ u8 field_0x11; - /* 0x12 */ u8 field_0x12; - /* 0x13 */ u8 field_0x13; -}; - -STATIC_ASSERT(sizeof(J3DTevStageInfo) == 0x14); +extern const J3DLightInfo j3dDefaultLightInfo; +extern const J3DTexCoordInfo j3dDefaultTexCoordInfo[8]; +extern const J3DTexMtxInfo j3dDefaultTexMtxInfo; +extern const J3DIndTexMtxInfo j3dDefaultIndTexMtxInfo; +extern const J3DTevStageInfo j3dDefaultTevStageInfo; +extern const J3DIndTevStageInfo j3dDefaultIndTevStageInfo; +extern const J3DFogInfo j3dDefaultFogInfo; +extern const J3DNBTScaleInfo j3dDefaultNBTScaleInfo; + +extern const GXColor j3dDefaultColInfo; +extern const GXColor j3dDefaultAmbInfo; +extern const u8 j3dDefaultColorChanNum; +extern const J3DTevOrderInfo j3dDefaultTevOrderInfoNull; +extern const J3DIndTexOrderInfo j3dDefaultIndTexOrderNull; +extern const GXColorS10 j3dDefaultTevColor; +extern const J3DIndTexCoordScaleInfo j3dDefaultIndTexCoordScaleInfo; +extern const GXColor j3dDefaultTevKColor; +extern const J3DTevSwapModeInfo j3dDefaultTevSwapMode; +extern const J3DTevSwapModeTableInfo j3dDefaultTevSwapModeTable; +extern const J3DBlendInfo j3dDefaultBlendInfo; +extern const J3DColorChanInfo j3dDefaultColorChanInfo; +extern const u16 j3dDefaultTevSwapTableID; +extern const u16 j3dDefaultAlphaCmpID; +extern const u16 j3dDefaultZModeID; struct J3DTevStageTevSwapModeInfo { u8 field_0x0_29 : 2; @@ -37,8 +38,7 @@ struct J3DTevStageTevSwapModeInfo { struct J3DTevStage { J3DTevStage() { - // TODO - // setTevStageInfo(j3dDefaultTevStageInfo); + setTevStageInfo(j3dDefaultTevStageInfo); mTevSwapModeInfo.field_0x0_29 = 0; mTevSwapModeInfo.field_0x0_31 = 0; } @@ -74,18 +74,6 @@ struct J3DTevStage { /* 0x7 */ J3DTevStageTevSwapModeInfo mTevSwapModeInfo; }; -struct J3DIndTevStageInfo { - /* 0x0 */ u8 mIndStage; - /* 0x1 */ u8 mIndFormat; - /* 0x2 */ u8 mBiasSel; - /* 0x3 */ u8 mMtxSel; - /* 0x4 */ u8 mWrapS; - /* 0x5 */ u8 mWrapT; - /* 0x6 */ u8 mPrev; - /* 0x7 */ u8 mLod; - /* 0x8 */ u8 mAlphaSel; -}; - struct J3DIndTevStage { J3DIndTevStage(); @@ -96,12 +84,6 @@ struct J3DIndTevStage { /* 0x0 */ u32 mInfo; }; -struct J3DTevOrderInfo { - /* 0x0 */ u8 mTexCoord __attribute__((aligned(2))); - /* 0x1 */ u8 mTexMap; - /* 0x2 */ u8 mColorChan; -}; - struct J3DTevOrder : public J3DTevOrderInfo { J3DTevOrder(); @@ -120,11 +102,30 @@ struct J3DTevSwapModeTable { /* 0x0 */ u8 field_0x0; }; // Size: 0x1 -struct J3DTevSwapModeInfo { - /* 0x0 */ u8 field_0x0; +class J3DLightObj { +public: + /* 80018C0C */ J3DLightObj() { mInfo = j3dDefaultLightInfo; } + /* 80323590 */ void load(u32) const; + + J3DLightInfo& getLightInfo() { return mInfo; } + J3DLightObj& operator=(J3DLightObj const& other) { + mInfo = other.mInfo; + return *this; + } + + /* 0x00 */ J3DLightInfo mInfo; + /* 0x34 */ u8 field_0x34[64]; +}; // Size = 0x74 + +struct J3DNBTScale : public J3DNBTScaleInfo { + J3DNBTScale() {} + J3DNBTScale(J3DNBTScaleInfo const& info) { + mbHasScale = info.mbHasScale; + mScale = info.mScale; + } + Vec* getScale() { return &mScale; } }; -struct J3DNBTScale; class J3DTexCoord; void loadTexCoordGens(u32, J3DTexCoord*); void loadNBTScale(J3DNBTScale& param_0); diff --git a/include/JSystem/J3DGraphBase/J3DTexture.h b/include/JSystem/J3DGraphBase/J3DTexture.h index c091f403..dba348b2 100644 --- a/include/JSystem/J3DGraphBase/J3DTexture.h +++ b/include/JSystem/J3DGraphBase/J3DTexture.h @@ -58,7 +58,7 @@ public: GDOverflowCheck(53); J3DGDLoadTexMtxImm((Mtx&)mMtx, i * 3 + 30, (GXTexMtxType)mTexMtxInfo.mProjection); }; - void calc(f32 const (*)[4]); + void calc(); void calcTexMtx(f32 const (*)[4]); void calcPostTexMtx(f32 const (*)[4]); void loadTexMtx(u32) const; @@ -71,26 +71,16 @@ public: private: /* 0x00 */ J3DTexMtxInfo mTexMtxInfo; /* 0x64 */ Mtx mMtx; -}; // Size: 0x94 - -struct J3DTexCoordInfo { - /* 0x0 */ u8 mTexGenType __attribute__((aligned(4))); - /* 0x1 */ u8 mTexGenSrc; - /* 0x2 */ u8 mTexGenMtx; -}; + /* 0x94 */ Mtx field_0x94; +}; // Size: 0xc4 struct J3DTexCoord : public J3DTexCoordInfo { J3DTexCoord(); + u8 getTexGenType() { return mTexGenType; } + u8 getTexGenSrc() { return mTexGenSrc; } u8 getTexGenMtx() { return mTexGenMtx & 0xff; } void setTexGenMtx(u8 v) { mTexGenMtx = v; } }; // Size: 0x4 -struct J3DDefaultTexCoordInfo { - /* 0x0 */ u8 mTexGenType; - /* 0x1 */ u8 mTexGenSrc; - /* 0x2 */ u8 mTexGenMtx; - /* 0x3 */ u8 pad; -}; - #endif /* J3DTEXTURE_H */ diff --git a/include/JSystem/J3DGraphBase/J3DTransform.h b/include/JSystem/J3DGraphBase/J3DTransform.h index f005d80a..384e9119 100644 --- a/include/JSystem/J3DGraphBase/J3DTransform.h +++ b/include/JSystem/J3DGraphBase/J3DTransform.h @@ -4,6 +4,8 @@ #include "JSystem/JGeometry.h" #include "dolphin/mtx/mtxvec.h" +struct J3DTextureSRTInfo; + struct J3DTransformInfo { /* 0x00 */ JGeometry::TVec3<f32> mScale; /* 0x0C */ JGeometry::TVec3<s16> mRotation; @@ -15,19 +17,22 @@ extern Vec const j3dDefaultScale; extern Mtx const j3dDefaultMtx; extern f32 PSMulUnit01[2]; +void J3DGQRSetup7(u32 param_0, u32 param_1, u32 param_2, u32 param_3); +f32 J3DCalcZValue(MtxP m, Vec v); void J3DCalcBBoardMtx(Mtx); void J3DCalcYBBoardMtx(Mtx); - +void J3DPSCalcInverseTranspose(f32 (*param_0)[4], f32 (*param_1)[3]); void J3DGetTranslateRotateMtx(J3DTransformInfo const&, Mtx); void J3DGetTranslateRotateMtx(s16, s16, s16, f32, f32, f32, Mtx); -void J3DPSCalcInverseTranspose(f32 (*param_0)[4], f32 (*param_1)[3]); -void J3DGQRSetup7(u32 param_0, u32 param_1, u32 param_2, u32 param_3); - +void J3DGetTextureMtx(const J3DTextureSRTInfo&, Vec, f32(*)[4]); +void J3DGetTextureMtxOld(const J3DTextureSRTInfo&, Vec, f32(*)[4]); +void J3DGetTextureMtxMaya(const J3DTextureSRTInfo&, f32(*)[4]); +void J3DGetTextureMtxMayaOld(const J3DTextureSRTInfo&, f32(*)[4]); void J3DScaleNrmMtx(Mtx, const Vec&); void J3DScaleNrmMtx33(Mtx33, const Vec&); - -void J3DPSMtx33Copy(register Mtx3P src, register Mtx3P dst); -void J3DPSMtx33CopyFrom34(register MtxP src, register Mtx3P dst); +void J3DMtxProjConcat(f32(*)[4], f32(*)[4], f32(*)[4]); +void J3DPSMtx33Copy(Mtx3P src, Mtx3P dst); +void J3DPSMtx33CopyFrom34(MtxP src, Mtx3P dst); // regalloc issues inline void J3DPSMulMtxVec(register MtxP mtx, register Vec* vec, register Vec* dst) { @@ -196,6 +201,4 @@ inline void J3DPSMulMtxVec(register Mtx3P mtx, register SVec* vec, register SVec } } -f32 J3DCalcZValue(register MtxP m, register Vec v); - #endif /* J3DTRANSFORM_H */ |
