mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
155 lines
3.8 KiB
C
155 lines
3.8 KiB
C
#ifndef J2DINDBLOCK_H
|
|
#define J2DINDBLOCK_H
|
|
|
|
#include "types.h"
|
|
#include "JSystem/J3D/J3DTypes.h"
|
|
#include "dolphin/gx.h"
|
|
|
|
#ifdef __cplusplus
|
|
typedef float Mtx23[2][3];
|
|
|
|
struct J2DIndTexCoordScaleInfo {
|
|
|
|
GXIndTexScale getScaleS() const {
|
|
return (GXIndTexScale)mScaleS;
|
|
}
|
|
GXIndTexScale getScaleT() const {
|
|
return (GXIndTexScale)mScaleT;
|
|
}
|
|
|
|
u8 mScaleS; // _00
|
|
u8 mScaleT; // _01
|
|
};
|
|
|
|
/**
|
|
* @size{0x2}
|
|
*/
|
|
struct J2DIndTexCoordScale {
|
|
J2DIndTexCoordScale();
|
|
|
|
~J2DIndTexCoordScale() {
|
|
}
|
|
|
|
void load(u8);
|
|
|
|
J2DIndTexCoordScaleInfo mScaleInfo; // _00
|
|
};
|
|
|
|
struct J2DIndTexMtxInfo {
|
|
Mtx23 mMtx; // _00
|
|
s8 mScale; // _18
|
|
};
|
|
|
|
/**
|
|
* @size{0x1C}
|
|
*/
|
|
struct J2DIndTexMtx {
|
|
J2DIndTexMtx();
|
|
|
|
~J2DIndTexMtx() {
|
|
}
|
|
|
|
void load(u8);
|
|
|
|
J2DIndTexMtxInfo mMtxInfo; // _00
|
|
};
|
|
|
|
extern J2DIndTexMtxInfo j2dDefaultIndTexMtxInfo;
|
|
|
|
/**
|
|
* @size{0x2}
|
|
*/
|
|
struct J2DIndTexOrder {
|
|
J2DIndTexOrder();
|
|
void load(u8);
|
|
|
|
u8 mCoord; // _00
|
|
u8 mMap; // _01
|
|
};
|
|
|
|
struct J2DIndBlock {
|
|
virtual void initialize() {
|
|
} // _08 (weak)
|
|
virtual void setGX() {
|
|
} // _0C (weak)
|
|
virtual u32 getType() = 0; // _10
|
|
virtual void setIndTexStageNum(u8 texStageNum) {
|
|
} // _14 (weak)
|
|
virtual u8 getIndTexStageNum() const {
|
|
return 0;
|
|
} // _18 (weak)
|
|
virtual void setIndTexOrder(unsigned long index, J2DIndTexOrder order) {
|
|
} // _1C (weak)
|
|
virtual J2DIndTexOrder* getIndTexOrder(unsigned long index) {
|
|
return nullptr;
|
|
} // _20 (weak)
|
|
virtual void setIndTexMtx(unsigned long index, J2DIndTexMtx texMtx) {
|
|
} // _24 (weak)
|
|
virtual J2DIndTexMtx* getIndTexMtx(unsigned long index) {
|
|
return nullptr;
|
|
} // _28 (weak)
|
|
virtual void setIndTexCoordScale(unsigned long index, J2DIndTexCoordScale scale) {
|
|
} // _2C (weak)
|
|
virtual J2DIndTexCoordScale* getIndTexCoordScale(unsigned long index) {
|
|
return nullptr;
|
|
} // _30 (weak)
|
|
virtual ~J2DIndBlock() {
|
|
} // _34 (weak)
|
|
|
|
// _00 VTBL
|
|
};
|
|
|
|
struct J2DIndBlockNull : public J2DIndBlock {
|
|
inline J2DIndBlockNull() : J2DIndBlock() {
|
|
}
|
|
|
|
virtual void setGX(); // _0C (weak)
|
|
virtual u32 getType(); // _10 (weak)
|
|
virtual ~J2DIndBlockNull(); // _34 (weak)
|
|
};
|
|
|
|
struct J2DIndBlockFull : public J2DIndBlock {
|
|
inline J2DIndBlockFull() : J2DIndBlock(), mTexOrders(), mTexMtxes(), mTexCoordScales() {
|
|
initialize();
|
|
}
|
|
|
|
virtual void initialize(); // _08
|
|
virtual void setGX(); // _0C
|
|
virtual u32 getType() {
|
|
return JBT_IndFull;
|
|
} // _10 (weak)
|
|
virtual void setIndTexStageNum(u8 texStageNum) {
|
|
mTexStageNum = texStageNum;
|
|
} // _14 (weak)
|
|
virtual u8 getIndTexStageNum() const {
|
|
return mTexStageNum;
|
|
} // _18 (weak)
|
|
virtual void setIndTexOrder(unsigned long index, J2DIndTexOrder order) {
|
|
mTexOrders[index] = order;
|
|
} // _1C (weak)
|
|
virtual J2DIndTexOrder* getIndTexOrder(unsigned long index) {
|
|
return mTexOrders + index;
|
|
} // _20 (weak)
|
|
virtual void setIndTexMtx(unsigned long, J2DIndTexMtx); // _24 (weak)
|
|
virtual J2DIndTexMtx* getIndTexMtx(unsigned long index) {
|
|
return mTexMtxes + index;
|
|
} // _28 (weak)
|
|
virtual void setIndTexCoordScale(unsigned long index, J2DIndTexCoordScale scale) {
|
|
mTexCoordScales[index] = scale;
|
|
} // _2C (weak)
|
|
virtual J2DIndTexCoordScale* getIndTexCoordScale(unsigned long index) {
|
|
return mTexCoordScales + index;
|
|
} // _30 (weak)
|
|
virtual ~J2DIndBlockFull() {
|
|
} // _34 (weak)
|
|
|
|
u8 mTexStageNum; // _04
|
|
J2DIndTexOrder mTexOrders[4]; // _05
|
|
u32 : 0;
|
|
J2DIndTexMtx mTexMtxes[3]; // _10
|
|
J2DIndTexCoordScale mTexCoordScales[4]; // _64
|
|
};
|
|
#endif
|
|
|
|
#endif
|