Files
tp/include/JSystem/J3DGraphBase/J3DSys.h
T

152 lines
4.4 KiB
C++
Raw Normal View History

2021-03-28 22:49:05 +02:00
#ifndef J3DSYS_H
#define J3DSYS_H
2024-01-19 16:22:19 -08:00
#include "dolphin/gx.h"
2021-03-28 22:49:05 +02:00
#include "dolphin/types.h"
2021-05-10 08:54:07 -07:00
// Perhaps move to a new J3DEnum.h?
enum J3DError {
kJ3DError_Success = 0,
kJ3DError_Alloc = 4,
};
2022-01-25 12:24:14 -08:00
enum J3DSysDrawBuffer {
/* 0x0 */ J3DSys_OPA_BUFFER_e,
/* 0x1 */ J3DSys_XLU_BUFFER_e
2022-01-25 12:24:14 -08:00
};
class J3DMtxCalc;
class J3DModel;
class J3DMatPacket;
class J3DShapePacket;
class J3DShape;
class J3DDrawBuffer;
class J3DTexture;
2023-09-30 04:10:06 -07:00
struct J3DTexCoordScaleInfo {
/* 0x0 */ u16 field_0x00;
/* 0x2 */ u16 field_0x02;
/* 0x4 */ u16 field_0x04;
/* 0x6 */ u16 field_0x06;
};
2021-12-06 06:51:53 -05:00
enum J3DSysFlag {
J3DSysFlag_SkinPosCpu = 0x00000004,
J3DSysFlag_SkinNrmCpu = 0x00000008,
J3DSysFlag_PostTexMtx = 0x40000000,
};
struct J3DSys {
2021-12-06 06:51:53 -05:00
/* 0x000 */ Mtx mViewMtx;
2021-10-11 09:38:53 -07:00
/* 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;
2022-04-23 15:27:56 -07:00
/* 0x05C */ u8 field_0x5c[0x04];
/* 0x060 */ u32 mTexCacheRegionNum;
/* 0x064 */ GXTexRegion mTexCacheRegion[8];
/* 0x0E4 */ u8 field_0xe4[0x20];
2021-12-06 06:51:53 -05:00
/* 0x104 */ Mtx* mModelDrawMtx;
2022-04-23 15:38:37 -07:00
/* 0x108 */ Mtx33* mModelNrmMtx;
2021-10-11 09:38:53 -07:00
/* 0x10C */ void* mVtxPos;
/* 0x110 */ void* mVtxNrm;
/* 0x114 */ _GXColor* mVtxCol;
/* 0x118 */ Vec* mNBTScale;
/* 8030FDE8 */ J3DSys();
/* 8030FEC0 */ void loadPosMtxIndx(int, u16) const;
/* 8030FEE4 */ void loadNrmMtxIndx(int, u16) const;
/* 8030FF0C */ void setTexCacheRegion(_GXTexCacheSize);
/* 803100BC */ void drawInit();
/* 8031073C */ void reinitGX();
/* 8031079C */ void reinitGenMode();
/* 803107E8 */ void reinitLighting();
/* 80310894 */ void reinitTransform();
/* 80310998 */ void reinitTexture();
/* 80310A3C */ void reinitTevStages();
/* 80310D44 */ void reinitIndStages();
/* 80310E3C */ void reinitPixelProc();
enum DrawMode {
/* 0x3 */ OPA_TEX_EDGE = 3,
/* 0x4 */ XLU,
};
2022-01-25 12:24:14 -08:00
MtxP getViewMtx() { return mViewMtx; }
2021-12-06 06:51:53 -05:00
void setDrawModeOpaTexEdge() { mDrawMode = OPA_TEX_EDGE; }
void setDrawModeXlu() { mDrawMode = XLU; }
2021-12-06 06:51:53 -05:00
void* getVtxPos() const { return mVtxPos; }
2021-10-11 09:38:53 -07:00
void setVtxPos(void* pVtxPos) { mVtxPos = pVtxPos; }
2021-12-06 06:51:53 -05:00
void* getVtxNrm() const { return mVtxNrm; }
2021-10-11 09:38:53 -07:00
void setVtxNrm(void* pVtxNrm) { mVtxNrm = pVtxNrm; }
2021-12-06 06:51:53 -05:00
void* getVtxCol() const { return mVtxCol; }
2021-10-11 09:38:53 -07:00
void setVtxCol(_GXColor* pVtxCol) { mVtxCol = pVtxCol; }
void setModel(J3DModel* pModel) { mModel = pModel; }
2021-12-06 06:51:53 -05:00
void setShapePacket(J3DShapePacket* pPacket) { mShapePacket = pPacket; }
void setMatPacket(J3DMatPacket* pPacket) { mMatPacket = pPacket; }
2023-07-09 20:21:18 +03:00
J3DMatPacket* getMatPacket() { return mMatPacket; }
2021-12-06 06:51:53 -05:00
void setMaterialMode(u32 mode) { mMaterialMode = mode; }
2021-10-11 09:38:53 -07:00
2023-10-10 13:40:37 -07:00
void setCurrentMtxCalc(J3DMtxCalc * pCalc) { mCurrentMtxCalc = pCalc; }
J3DMtxCalc * getCurrentMtxCalc() const { return mCurrentMtxCalc; }
2021-10-11 09:38:53 -07:00
void setTexture(J3DTexture* pTex) { mTexture = pTex; }
2022-10-04 21:17:53 -07:00
J3DTexture* getTexture() { return mTexture; }
void setNBTScale(Vec* scale) { mNBTScale = scale; }
2023-12-12 23:42:38 -05:00
Vec* getNBTScale() { return mNBTScale; }
2021-10-11 09:38:53 -07:00
void onFlag(u32 flag) { mFlags |= flag; }
void offFlag(u32 flag) { mFlags &= ~flag; }
2021-12-06 06:51:53 -05:00
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));
}
2022-01-25 12:24:14 -08:00
// Type 0: Opa Buffer
// Type 1: Xlu Buffer
void setDrawBuffer(J3DDrawBuffer* buffer, int type) { mDrawBuffer[type] = buffer; }
// Type 0: Opa Buffer
// Type 1: Xlu Buffer
J3DDrawBuffer* getDrawBuffer(int type) { return mDrawBuffer[type]; }
2022-04-23 22:17:28 -07:00
Mtx& getModelDrawMtx(u16 no) const { return mModelDrawMtx[no]; }
J3DShapePacket* getShapePacket() const { return mShapePacket; }
void setViewMtx(Mtx m) { MTXCopy(m, mViewMtx); }
2022-01-25 12:24:14 -08:00
J3DModel* getModel() { return mModel; }
static Mtx mCurrentMtx;
2021-10-11 09:38:53 -07:00
static Vec mCurrentS;
static Vec mParentS;
2023-09-30 04:10:06 -07:00
static J3DTexCoordScaleInfo sTexCoordScaleTable[8];
};
2023-07-10 04:46:15 +03:00
extern u32 j3dDefaultViewNo;
extern J3DSys j3dSys;
2021-03-28 22:49:05 +02:00
#endif /* J3DSYS_H */