diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2021-10-24 14:35:00 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-24 23:35:00 +0200 |
| commit | 5020395dfd34d4dc846e3ea228f6271bfca1c72a (patch) | |
| tree | 9b553bbfc8b0807d7f860964d6044d6ccf6d1342 /include | |
| parent | b88cb8cdc0b7a8af4df22e303ff81e0e617dbc85 (diff) | |
J2D structs + print / fix GX + MSL string headers (#157)
* J2D structs + print / fix GX + MSL string headers
* remove msl_c/string.h
Diffstat (limited to 'include')
25 files changed, 1861 insertions, 382 deletions
diff --git a/include/JSystem/J2DGraph/J2DAnimation.h b/include/JSystem/J2DGraph/J2DAnimation.h index 5d43cdd324..41e7f7f92c 100644 --- a/include/JSystem/J2DGraph/J2DAnimation.h +++ b/include/JSystem/J2DGraph/J2DAnimation.h @@ -1,98 +1,250 @@ #ifndef J2DANIMATION_H #define J2DANIMATION_H -#include "dolphin/gx/GXTexture.h" +#include "JSystem/JUtility/JUTNameTab.h" +#include "JSystem/JUtility/JUTTexture.h" +#include "dolphin/gx/GX.h" #include "dolphin/types.h" +class J2DScreen; + +class J2DAnmBase { +public: + /* 80053C94 */ virtual ~J2DAnmBase(); + /* 800569B0 */ virtual void searchUpdateMaterialID(J2DScreen*); + + s16 getFrameMax() const { return mFrameMax; } + void setFrame(f32 frame) { mFrame = frame; } + +private: + /* 0x0 */ // vtable + /* 0x4 */ u8 field_0x4[2]; + /* 0x6 */ s16 mFrameMax; + /* 0x8 */ f32 mFrame; + /* 0xC */ s32 mKind; +}; // Size: 0x10 + +class J2DAnmVtxColor : public J2DAnmBase { +public: + /* 8030A358 */ virtual ~J2DAnmVtxColor(); + /* 8030363C */ virtual void getColor(u8, u16, _GXColor*) const; + +private: + /* 0x10 */ u16 mAnmTableNum[2]; + /* 0x14 */ void* mVtxColorIndexData[2]; + /* 0x1C */ void* mVtxColorIndexPointer[2]; +}; // Size: 0x24 + struct J3DTransformInfo; struct J3DTextureSRTInfo; -class J2DScreen; -struct J2DAnmVtxColorKey { - /* 8030B704 */ void getColor(u8, u16, _GXColor*) const; - /* 8030CC20 */ ~J2DAnmVtxColorKey(); -}; +class J2DAnmVtxColorKey : public J2DAnmVtxColor { + /* 8030CC20 */ virtual ~J2DAnmVtxColorKey(); + /* 8030B704 */ virtual void getColor(u8, u16, _GXColor*) const; -struct J2DAnmVtxColorFull { - /* 8030B4C4 */ void getColor(u8, u16, _GXColor*) const; - /* 8030CC8C */ ~J2DAnmVtxColorFull(); -}; +private: + /* 0x24 */ void* field_0x24[2]; + /* 0x2C */ void* field_0x2c; + /* 0x30 */ void* field_0x30; + /* 0x34 */ void* field_0x34; + /* 0x38 */ void* field_0x38; +}; // Size: 0x3C + +class J2DAnmVtxColorFull : public J2DAnmVtxColor { +public: + /* 8030CC8C */ virtual ~J2DAnmVtxColorFull(); + /* 8030B4C4 */ virtual void getColor(u8, u16, _GXColor*) const; -struct J2DAnmVisibilityFull { +private: + /* 0x24 */ void* field_0x24[2]; + /* 0x2C */ void* field_0x2c; + /* 0x30 */ void* field_0x30; + /* 0x34 */ void* field_0x34; + /* 0x38 */ void* field_0x38; +}; // Size: 0x3C + +class J2DAnmVisibilityFull : public J2DAnmBase { +public: + /* 8030A3B4 */ virtual ~J2DAnmVisibilityFull(); /* 8030C048 */ void getVisibility(u16, u8*) const; -}; -struct J2DAnmTransformKey { - /* 801959C0 */ ~J2DAnmTransformKey(); - /* 8030AAFC */ void calcTransform(f32, u16, J3DTransformInfo*) const; - /* 8030CD7C */ void getTransform(u16, J3DTransformInfo*) const; +private: + /* 0x10 */ u16 field_0x10; + /* 0x12 */ u16 field_0x12; + /* 0x14 */ void* field_0x14; + /* 0x18 */ void* field_0x18; +}; // Size: 0x1C + +class J2DAnmTransform : public J2DAnmBase { +public: + /* 80184370 */ virtual ~J2DAnmTransform(); + /* 80191130 */ virtual void getTransform(u16, J3DTransformInfo*) const; + +private: + /* 0x10 */ f32* field_0x10; + /* 0x14 */ s16* field_0x14; + /* 0x18 */ f32* field_0x18; +}; // Size: 0x1C + +class J2DAnmTransformKey : public J2DAnmTransform { +public: + /* 801959C0 */ virtual ~J2DAnmTransformKey(); + /* 8030CD7C */ virtual void getTransform(u16, J3DTransformInfo*) const; + /* 8030AAFC */ virtual void calcTransform(f32, u16, J3DTransformInfo*) const; + +private: + /* 0x1C */ u8 field_0x1c[8]; + /* 0x24 */ void* field_0x24; + /* 0x28 */ void* field_0x28; }; -struct J2DAnmTransformFull { - /* 8030A590 */ void getTransform(u16, J3DTransformInfo*) const; - /* 8030CDAC */ ~J2DAnmTransformFull(); +class J2DAnmTransformFull : public J2DAnmTransform { +public: + /* 8030CDAC */ virtual ~J2DAnmTransformFull(); + /* 8030A590 */ virtual void getTransform(u16, J3DTransformInfo*) const; + +private: + /* 0x1C */ u8 field_0x1c[6]; + /* 0x22 */ u16 field_0x22; + /* 0x24 */ void* field_0x24; }; -struct J2DAnmTextureSRTKey { - /* 80184274 */ ~J2DAnmTextureSRTKey(); +class J2DAnmTextureSRTKey : public J2DAnmBase { +public: /* 8030B9F0 */ void calcTransform(f32, u16, J3DTextureSRTInfo*) const; - /* 8030BC60 */ void searchUpdateMaterialID(J2DScreen*); + + /* 80184274 */ virtual ~J2DAnmTextureSRTKey(); + /* 8030BC60 */ virtual void searchUpdateMaterialID(J2DScreen*); + +private: + /* 0x10 */ int field_0x10; + /* 0x14 */ int field_0x14; + /* 0x18 */ u16 mUpdateMaterialNum; + /* 0x1A */ u16 field_0x1a; + /* 0x1C */ u16 field_0x1c; + /* 0x20 */ int field_0x20; + /* 0x24 */ int field_0x24; + /* 0x28 */ int field_0x28; + /* 0x2C */ u8* mUpdateTexMtxID; + /* 0x30 */ u16* mUpdateMaterialID; + /* 0x34 */ JUTNameTab field_0x34; + /* 0x44 */ u8 field_0x44[4]; + /* 0x48 */ u16 field_0x48; + /* 0x4A */ u16 field_0x4a; + /* 0x4C */ u16 field_0x4c; + /* 0x4E */ u16 field_0x4e; + /* 0x50 */ int field_0x50; + /* 0x54 */ int field_0x54; + /* 0x58 */ int field_0x58; + /* 0x5C */ int field_0x5c; + /* 0x60 */ u8 field_0x60[8]; + /* 0x68 */ JUTNameTab field_0x68; + /* 0x78 */ u8 field_0x78[4]; + /* 0x7C */ int field_0x7c; }; -struct J2DAnmTexPattern { +class J2DAnmTexPattern : public J2DAnmBase { +public: struct J2DAnmTexPatternTIMGPointer { /* 8030CB2C */ J2DAnmTexPatternTIMGPointer(); /* 8030CB3C */ ~J2DAnmTexPatternTIMGPointer(); - }; - /* 8030BD10 */ void searchUpdateMaterialID(J2DScreen*); + /* 0x0 */ ResTIMG* mRes; + /* 0x4 */ JUTPalette* mPalette; + }; // Size: 0x8 + /* 8030BEE8 */ void getTexNo(u16, u16*) const; /* 8030BF9C */ void getResTIMG(u16) const; /* 8030BFF0 */ void getPalette(u16) const; - /* 8030CB90 */ ~J2DAnmTexPattern(); + + /* 8030CB90 */ virtual ~J2DAnmTexPattern(); + /* 8030BD10 */ virtual void searchUpdateMaterialID(J2DScreen*); + +private: + /* 0x10 */ int field_0x10; + /* 0x14 */ void* mAnmTable; + /* 0x18 */ u8 field_0x18[2]; + /* 0x1A */ u16 mUpdateMaterialNum; + /* 0x1C */ u16* mUpdaterMaterialID; + /* 0x20 */ JUTNameTab field_0x20; + /* 0x30 */ J2DAnmTexPatternTIMGPointer* mTIMGPtrArray; }; -struct J2DAnmTevRegKey { - /* 801841EC */ ~J2DAnmTevRegKey(); +class J2DAnmTevRegKey : public J2DAnmBase { +public: /* 8030C0F0 */ void getTevColorReg(u16, _GXColorS10*) const; /* 8030C3B4 */ void getTevKonstReg(u16, _GXColor*) const; - /* 8030C678 */ void searchUpdateMaterialID(J2DScreen*); -}; - -struct J2DAnmColorKey { - /* 80239BE0 */ ~J2DAnmColorKey(); - /* 8030B200 */ void getColor(u16, _GXColor*) const; -}; -struct J2DAnmColorFull { - /* 8030AFC8 */ void getColor(u16, _GXColor*) const; - /* 8030CCF8 */ ~J2DAnmColorFull(); -}; + /* 801841EC */ virtual ~J2DAnmTevRegKey(); + /* 8030C678 */ virtual void searchUpdateMaterialID(J2DScreen*); -struct J2DAnmColor { - /* 801842FC */ ~J2DAnmColor(); - /* 802EB390 */ void getColor(u16, _GXColor*) const; - /* 8030AF24 */ void searchUpdateMaterialID(J2DScreen*); +private: + /* 0x10 */ u16 mCRegUpdateMaterialNum; + /* 0x12 */ u16 mKRegUpdateMaterialNum; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u16 field_0x16; + /* 0x18 */ u16 field_0x18; + /* 0x1A */ u16 field_0x1a; + /* 0x1C */ u16 field_0x1c; + /* 0x1E */ u16 field_0x1e; + /* 0x20 */ u16 field_0x20; + /* 0x22 */ u16 field_0x22; + /* 0x24 */ u16* mCRegUpdateMaterialID; + /* 0x28 */ JUTNameTab field_0x28; + /* 0x38 */ u16* mKRegUpdateMaterialID; + /* 0x3C */ JUTNameTab field_0x3c; + /* 0x4C */ void* mAnmCRegKeyTable; + /* 0x50 */ void* mAnmKRegKeyTable; + /* 0x54 */ int field_0x54; + /* 0x58 */ int field_0x58; + /* 0x5C */ int field_0x5c; + /* 0x60 */ int field_0x60; + /* 0x64 */ int field_0x64; + /* 0x68 */ int field_0x68; + /* 0x6C */ int field_0x6c; + /* 0x70 */ int field_0x70; }; -class J2DAnmBase { +class J2DAnmColor : public J2DAnmBase { public: - /* 80053C94 */ virtual ~J2DAnmBase(); - /* 800569B0 */ virtual void searchUpdateMaterialID(J2DScreen*); + /* 801842FC */ virtual ~J2DAnmColor(); + /* 8030AF24 */ virtual void searchUpdateMaterialID(J2DScreen*); + /* 802EB390 */ virtual void getColor(u16, _GXColor*) const; - s16 getFrameMax() const { return mFrameMax; } - void setFrame(f32 frame) { mFrame = frame; } +private: + /* 0x10 */ u16 field_0x10; + /* 0x10 */ u16 field_0x12; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u16 field_0x16; + /* 0x18 */ u16 mUpdateMaterialNum; + /* 0x1C */ u16* mUpdateMaterialID; + /* 0x20 */ JUTNameTab field_0x20; +}; // Size: 0x30 + +class J2DAnmColorKey : public J2DAnmColor { +public: + /* 80239BE0 */ virtual ~J2DAnmColorKey(); + /* 8030B200 */ virtual void getColor(u16, _GXColor*) const; private: - /* 0x0 */ // vtable - /* 0x4 */ u8 field_0x4[2]; - /* 0x6 */ s16 mFrameMax; - /* 0x8 */ f32 mFrame; - /* 0xC */ int mKind; + /* 0x30 */ int field_0x30; + /* 0x34 */ int field_0x34; + /* 0x38 */ int field_0x38; + /* 0x3C */ int field_0x3c; + /* 0x40 */ int field_0x40; }; -struct J2DAnmVtxColor {}; +class J2DAnmColorFull : public J2DAnmColor { +public: + /* 8030CCF8 */ virtual ~J2DAnmColorFull(); + /* 8030AFC8 */ virtual void getColor(u16, _GXColor*) const; -struct J2DAnmTransform {}; +private: + /* 0x30 */ int field_0x30; + /* 0x34 */ int field_0x34; + /* 0x38 */ int field_0x38; + /* 0x3C */ int field_0x3c; + /* 0x40 */ int field_0x40; +}; #endif /* J2DANIMATION_H */ diff --git a/include/JSystem/J2DGraph/J2DAnmLoader.h b/include/JSystem/J2DGraph/J2DAnmLoader.h index 50facee3c4..0c2f69d007 100644 --- a/include/JSystem/J2DGraph/J2DAnmLoader.h +++ b/include/JSystem/J2DGraph/J2DAnmLoader.h @@ -1,6 +1,68 @@ #ifndef J2DANMLOADER_H #define J2DANMLOADER_H +#include "JSystem/J2DGraph/J2DAnimation.h" +#include "JSystem/J3DGraphAnimator/J3DAnimation.h" #include "dolphin/types.h" +struct J2DAnmLoaderDataBase { + /* 80308A6C */ static void load(void const*); +}; + +class J2DAnmLoader { +public: + virtual void load(void const*) = 0; + virtual void setResource(J2DAnmBase*, void const*) = 0; + /* 8030A410 */ virtual ~J2DAnmLoader(); +}; + +struct J3DAnmTransformKeyData; +struct J3DAnmTextureSRTKeyData; +struct J3DAnmColorKeyData; +struct J3DAnmVtxColorKeyData; +struct J3DAnmTevRegKeyData; +struct J3DAnmTransformFullData; +struct J3DAnmColorFullData; +struct J3DAnmTexPatternFullData; +struct J3DAnmVisibilityFullData; +struct J3DAnmVtxColorFullData; + +class J2DAnmKeyLoader_v15 : public J2DAnmLoader { +public: + /* 80309290 */ J2DAnmKeyLoader_v15(); + /* 80309570 */ void readAnmTransform(J3DAnmTransformKeyData const*); + /* 80309598 */ void setAnmTransform(J2DAnmTransformKey*, J3DAnmTransformKeyData const*); + /* 80309634 */ void readAnmTextureSRT(J3DAnmTextureSRTKeyData const*); + /* 8030965C */ void setAnmTextureSRT(J2DAnmTextureSRTKey*, J3DAnmTextureSRTKeyData const*); + /* 80309848 */ void readAnmColor(J3DAnmColorKeyData const*); + /* 80309870 */ void setAnmColor(J2DAnmColorKey*, J3DAnmColorKeyData const*); + /* 8030995C */ void readAnmVtxColor(J3DAnmVtxColorKeyData const*); + /* 80309984 */ void setAnmVtxColor(J2DAnmVtxColorKey*, J3DAnmVtxColorKeyData const*); + /* 80309FDC */ void readAnmTevReg(J3DAnmTevRegKeyData const*); + /* 8030A004 */ void setAnmTevReg(J2DAnmTevRegKey*, J3DAnmTevRegKeyData const*); + + /* 80309308 */ virtual void load(void const*); + /* 80309414 */ virtual void setResource(J2DAnmBase*, void const*); + /* 803092AC */ virtual ~J2DAnmKeyLoader_v15(); +}; + +class J2DAnmFullLoader_v15 : public J2DAnmLoader { +public: + /* 80309CE8 */ J2DAnmFullLoader_v15(); + /* 80309D60 */ void readAnmTransform(J3DAnmTransformFullData const*); + /* 80309D88 */ void setAnmTransform(J2DAnmTransformFull*, J3DAnmTransformFullData const*); + /* 80309E1C */ void readAnmColor(J3DAnmColorFullData const*); + /* 80309E44 */ void setAnmColor(J2DAnmColorFull*, J3DAnmColorFullData const*); + /* 80309F10 */ void readAnmTexPattern(J3DAnmTexPatternFullData const*); + /* 80309F38 */ void setAnmTexPattern(J2DAnmTexPattern*, J3DAnmTexPatternFullData const*); + /* 8030A190 */ void readAnmVisibility(J3DAnmVisibilityFullData const*); + /* 8030A1B8 */ void setAnmVisibility(J2DAnmVisibilityFull*, J3DAnmVisibilityFullData const*); + /* 8030A234 */ void readAnmVtxColor(J3DAnmVtxColorFullData const*); + /* 8030A25C */ void setAnmVtxColor(J2DAnmVtxColorFull*, J3DAnmVtxColorFullData const*); + + /* 80309A80 */ virtual void load(void const*); + /* 80309B8C */ virtual void setResource(J2DAnmBase*, void const*); + /* 80309D04 */ virtual ~J2DAnmFullLoader_v15(); +}; + #endif /* J2DANMLOADER_H */ diff --git a/include/JSystem/J2DGraph/J2DMatBlock.h b/include/JSystem/J2DGraph/J2DMatBlock.h index 3286f66423..0333028fb5 100644 --- a/include/JSystem/J2DGraph/J2DMatBlock.h +++ b/include/JSystem/J2DGraph/J2DMatBlock.h @@ -1,6 +1,520 @@ #ifndef J2DMATBLOCK_H #define J2DMATBLOCK_H +#include "JSystem/J2DGraph/J2DTevs.h" +#include "JSystem/JUtility/JUTResFont.h" +#include "JSystem/JUtility/JUTTexture.h" +#include "JSystem/JUtility/TColor.h" #include "dolphin/types.h" +struct J2DGXColorS10 : public GXColorS10 { + /* 802F1B90 */ J2DGXColorS10(); +}; + +struct J2DTevSwapModeInfo; + +class J2DTevBlock { +public: + /* 802F2A40 */ virtual void initialize(); + /* 802EB1D0 */ virtual void setGX(); + /* 802F2A44 */ virtual void loadTexture(_GXTexMapID, u32); + virtual void getType() = 0; + virtual s32 getMaxStage() = 0; + /* 802EB1DC */ virtual void setTexNo(u32, u16); + /* 802EA170 */ virtual void getTexNo(u32) const; + /* 802F2A48 */ virtual void setFontNo(u16); + /* 802EA164 */ virtual void getFontNo() const; + /* 802F2A4C */ virtual void setTevOrder(u32, J2DTevOrder); + /* 802EA144 */ virtual bool getTevOrder(u32); + /* 802EB1D8 */ virtual void setTevColor(u32, J2DGXColorS10); + /* 802EA13C */ virtual bool getTevColor(u32); + /* 802EB1D4 */ virtual void setTevKColor(u32, JUtility::TColor); + /* 802EA15C */ virtual bool getTevKColor(u32); + /* 802F2A50 */ virtual void setTevKColorSel(u32, u8); + /* 802EA154 */ virtual bool getTevKColorSel(u32); + /* 802F2A54 */ virtual void setTevKAlphaSel(u32, u8); + /* 802EA14C */ virtual bool getTevKAlphaSel(u32); + /* 802F2A58 */ virtual void setTevStageNum(u8); + /* 802EA17C */ virtual bool getTevStageNum() const; + /* 802F2A5C */ virtual void setTevStage(u32, J2DTevStage); + /* 802EA134 */ virtual bool getTevStage(u32); + /* 802F2A60 */ virtual void setTevSwapModeInfo(u32, J2DTevSwapModeInfo); + /* 802F2A64 */ virtual void setTevSwapModeTable(u32, J2DTevSwapModeTable); + /* 802EA12C */ virtual bool getTevSwapModeTable(u32); + /* 802F2A68 */ virtual void setIndTevStage(u32, J2DIndTevStage); + /* 802EA184 */ virtual bool getIndTevStage(u32); + /* 802F2A7C */ virtual bool insertTexture(u32, ResTIMG const*); + /* 802F2A74 */ virtual bool insertTexture(u32, ResTIMG const*, JUTPalette*); + /* 802F2A6C */ virtual bool insertTexture(u32, JUTTexture*); + /* 802F2A8C */ virtual bool setTexture(u32, ResTIMG const*); + /* 802F2A84 */ virtual bool setTexture(u32, JUTTexture*); + /* 802F2A94 */ virtual bool removeTexture(u32); + /* 802F2AA4 */ virtual bool setFont(ResFONT*); + /* 802F2A9C */ virtual bool setFont(JUTFont*); + /* 802F2AAC */ virtual bool setPalette(u32, ResTLUT const*); + /* 802F2AB4 */ virtual bool prepareTexture(u8); + /* 802EB87C */ virtual bool getTexture(u32); + /* 802EB884 */ virtual bool getPalette(u32); + /* 802F2ABC */ virtual bool getFont(); + /* 802F2AC4 */ virtual void shiftDeleteFlag(u8, bool); + /* 802F2AC8 */ virtual void setUndeleteFlag(u8); + /* 802F2ACC */ virtual void setFontUndeleteFlag(); + /* 802EB184 */ virtual ~J2DTevBlock(); +}; + +class J2DTevBlock1 : public J2DTevBlock { +public: + /* 802EB88C */ J2DTevBlock1(); + + /* 802EBA50 */ virtual void initialize(); + /* 802EC328 */ virtual void setGX(); + /* 802EC570 */ virtual void loadTexture(_GXTexMapID, u32); + /* 802F27A0 */ virtual void getType(); + /* 802F27AC */ virtual s32 getMaxStage(); + /* 802F27B4 */ virtual void setTexNo(u32, u16); + /* 802F27C4 */ virtual void getTexNo(u32) const; + /* 802F27D4 */ virtual void setFontNo(u16); + /* 802F27DC */ virtual void getFontNo() const; + /* 802F27E4 */ virtual void setTevOrder(u32, J2DTevOrder); + /* 802F2808 */ virtual void getTevOrder(u32); + /* 802F281C */ virtual void setTevColor(u32, J2DGXColorS10); + /* 802F2848 */ virtual void getTevColor(u32); + /* 802F285C */ virtual void setTevKColor(u32, JUtility::TColor); + /* 802F2888 */ virtual void getTevKColor(u32); + /* 802F289C */ virtual void setTevKColorSel(u32, u8); + /* 802F28A8 */ virtual void getTevKColorSel(u32); + /* 802F28B4 */ virtual void setTevKAlphaSel(u32, u8); + /* 802F28C0 */ virtual void getTevKAlphaSel(u32); + /* 802F28CC */ virtual void setTevStageNum(u8); + /* 802F28D0 */ virtual bool getTevStageNum() const; + /* 802F28D8 */ virtual void setTevStage(u32, J2DTevStage); + /* 802F2914 */ virtual void getTevStage(u32); + /* 802F2928 */ virtual void setTevSwapModeInfo(u32, J2DTevSwapModeInfo); + /* 802F2960 */ virtual void setTevSwapModeTable(u32, J2DTevSwapModeTable); + /* 802F2970 */ virtual void getTevSwapModeTable(u32); + /* 802F2980 */ virtual void setIndTevStage(u32, J2DIndTevStage); + /* 802F2994 */ virtual void getIndTevStage(u32); + /* 802F29A8 */ virtual void insertTexture(u32, ResTIMG const*); + /* 802EBCC0 */ virtual void insertTexture(u32, ResTIMG const*, JUTPalette*); + /* 802EBDE4 */ virtual void insertTexture(u32, JUTTexture*); + /* 802EBE8C */ virtual void setTexture(u32, ResTIMG const*); + /* 802EC01C */ virtual void setTexture(u32, JUTTexture*); + /* 802EC0A8 */ virtual void removeTexture(u32); + /* 802EC124 */ virtual void setFont(ResFONT*); + /* 802EC1D8 */ virtual void setFont(JUTFont*); + /* 802EC258 */ virtual void setPalette(u32, ResTLUT const*); + /* 802EBC0C */ virtual void prepareTexture(u8); + /* 802F29D8 */ virtual void getTexture(u32); + /* 802F29F8 */ virtual void getPalette(u32); + /* 802F2A18 */ virtual void getFont(); + /* 802EC318 */ virtual void shiftDeleteFlag(u8, bool); + /* 802F2A20 */ virtual void setUndeleteFlag(u8); + /* 802F2A30 */ virtual void setFontUndeleteFlag(); + /* 802EB998 */ virtual ~J2DTevBlock1(); + +private: + /* 0x004 */ u16 mTexNo[1]; + /* 0x006 */ u16 mFontNo; + /* 0x008 */ J2DTevOrder mTevOrder[1]; + /* 0x00C */ J2DGXColorS10 mTevColor[4]; + /* 0x02C */ J2DTevStage mTevStage[1]; + /* 0x034 */ JUtility::TColor mTevKColor[4]; + /* 0x044 */ u8 mTevKColorSel[1]; + /* 0x045 */ u8 mTevKAlphaSel[1]; + /* 0x046 */ J2DTevSwapModeTable mTevSwapModeTable[4]; + /* 0x04C */ J2DIndTevStage mIndTevStage[1]; + /* 0x050 */ JUTTexture* mTexture[1]; + /* 0x054 */ JUTPalette* mPalette[1]; + /* 0x058 */ JUTResFont* mFont; + /* 0x05C */ u8 mUndeleteFlag; +}; // Size: 0x60 + +class J2DTevBlock2 : public J2DTevBlock { +public: + /* 802EC5B8 */ J2DTevBlock2(); + + /* 802EC7A0 */ virtual void initialize(); + /* 802ED584 */ virtual void setGX(); + /* 802ED874 */ virtual void loadTexture(_GXTexMapID, u32); + /* 802F24FC */ virtual void getType(); + /* 802F2508 */ virtual s32 getMaxStage(); + /* 802F2510 */ virtual void setTexNo(u32, u16); + /* 802F2520 */ virtual void getTexNo(u32) const; + /* 802F2530 */ virtual void setFontNo(u16); + /* 802F2538 */ virtual void getFontNo() const; + /* 802F2540 */ virtual void setTevOrder(u32, J2DTevOrder); + /* 802F2564 */ virtual void getTevOrder(u32); + /* 802F2578 */ virtual void setTevColor(u32, J2DGXColorS10); + /* 802F25A4 */ virtual void getTevColor(u32); + /* 802F25B8 */ virtual void setTevKColor(u32, JUtility::TColor); + /* 802F25E4 */ virtual void getTevKColor(u32); + /* 802F25F8 */ virtual void setTevKColorSel(u32, u8); + /* 802F2604 */ virtual void getTevKColorSel(u32); + /* 802F2610 */ virtual void setTevKAlphaSel(u32, u8); + /* 802F261C */ virtual void getTevKAlphaSel(u32); + /* 802F2628 */ virtual void setTevStageNum(u8); + /* 802F2630 */ virtual void getTevStageNum() const; + /* 802F2638 */ virtual void setTevStage(u32, J2DTevStage); + /* 802F2674 */ virtual void getTevStage(u32); + /* 802F2688 */ virtual void setTevSwapModeInfo(u32, J2DTevSwapModeInfo); + /* 802F26C0 */ virtual void setTevSwapModeTable(u32, J2DTevSwapModeTable); + /* 802F26D0 */ virtual void getTevSwapModeTable(u32); + /* 802F26E0 */ virtual void setIndTevStage(u32, J2DIndTevStage); + /* 802F26F4 */ virtual void getIndTevStage(u32); + /* 802F2708 */ virtual void insertTexture(u32, ResTIMG const*); + /* 802ECAE8 */ virtual void insertTexture(u32, ResTIMG const*, JUTPalette*); + /* 802ECDE8 */ virtual void insertTexture(u32, JUTTexture*); + /* 802ECF48 */ virtual void setTexture(u32, ResTIMG const*); + /* 802ED16C */ virtual void setTexture(u32, JUTTexture*); + /* 802ED21C */ virtual void removeTexture(u32); + /* 802ED2F0 */ virtual void setFont(ResFONT*); + /* 802ED3A4 */ virtual void setFont(JUTFont*); + /* 802ED424 */ virtual void setPalette(u32, ResTLUT const*); + /* 802ECA18 */ virtual void prepareTexture(u8); + /* 802F2738 */ virtual void getTexture(u32); + /* 802F2758 */ virtual void getPalette(u32); + /* 802F2778 */ virtual void getFont(); + /* 802ED4FC */ virtual void shiftDeleteFlag(u8, bool); + /* 802F2780 */ virtual void setUndeleteFlag(u8); + /* 802F2790 */ virtual void setFontUndeleteFlag(); + /* 802EC6C8 */ virtual ~J2DTevBlock2(); + +private: + /* 0x004 */ u16 mTexNo[2]; + /* 0x008 */ u16 mFontNo; + /* 0x00A */ J2DTevOrder mTevOrder[2]; + /* 0x012 */ J2DGXColorS10 mTevColor[4]; + /* 0x032 */ u8 mTevStageNum; + /* 0x033 */ J2DTevStage mTevStage[2]; + /* 0x044 */ JUtility::TColor mTevKColor[4]; + /* 0x054 */ u8 mTevKColorSel[2]; + /* 0x056 */ u8 mTevKAlphaSel[2]; + /* 0x058 */ J2DTevSwapModeTable mTevSwapModeTable[4]; + /* 0x05C */ J2DIndTevStage mIndTevStage[2]; + /* 0x064 */ JUTTexture* mTexture[2]; + /* 0x06C */ JUTPalette* mPalette[2]; + /* 0x064 */ JUTFont* mFont; + /* 0x078 */ u8 mUndeleteFlag; +}; // Size: 0x7C + +class J2DTevBlock4 : public J2DTevBlock { +public: + /* 802ED8BC */ J2DTevBlock4(); + + /* 802EDAC4 */ virtual void initialize(); + /* 802EEA2C */ virtual void setGX(); + /* 802EED1C */ virtual void loadTexture(_GXTexMapID, u32); + /* 802F2258 */ virtual void getType(); + /* 802F2264 */ virtual s32 getMaxStage(); + /* 802F226C */ virtual void setTexNo(u32, u16); + /* 802F227C */ virtual void getTexNo(u32) const; + /* 802F228C */ virtual void setFontNo(u16); + /* 802F2294 */ virtual void getFontNo() const; + /* 802F229C */ virtual void setTevOrder(u32, J2DTevOrder); + /* 802F22C0 */ virtual void getTevOrder(u32); + /* 802F22D4 */ virtual void setTevColor(u32, J2DGXColorS10); + /* 802F2300 */ virtual void getTevColor(u32); + /* 802F2314 */ virtual void setTevKColor(u32, JUtility::TColor); + /* 802F2340 */ virtual void getTevKColor(u32); + /* 802F2354 */ virtual void setTevKColorSel(u32, u8); + /* 802F2360 */ virtual void getTevKColorSel(u32); + /* 802F236C */ virtual void setTevKAlphaSel(u32, u8); + /* 802F2378 */ virtual void getTevKAlphaSel(u32); + /* 802F2384 */ virtual void setTevStageNum(u8); + /* 802F238C */ virtual void getTevStageNum() const; + /* 802F2394 */ virtual void setTevStage(u32, J2DTevStage); + /* 802F23D0 */ virtual void getTevStage(u32); + /* 802F23E4 */ virtual void setTevSwapModeInfo(u32, J2DTevSwapModeInfo); + /* 802F241C */ virtual void setTevSwapModeTable(u32, J2DTevSwapModeTable); + /* 802F242C */ virtual void getTevSwapModeTable(u32); + /* 802F243C */ virtual void setIndTevStage(u32, J2DIndTevStage); + /* 802F2450 */ virtual void getIndTevStage(u32); + /* 802F2464 */ virtual void insertTexture(u32, ResTIMG const*); + /* 802EDE04 */ virtual void insertTexture(u32, ResTIMG const*, JUTPalette*); + /* 802EE1D4 */ virtual void insertTexture(u32, JUTTexture*); + /* 802EE364 */ virtual void setTexture(u32, ResTIMG const*); + /* 802EE5F0 */ virtual void setTexture(u32, JUTTexture*); + /* 802EE6A0 */ virtual void removeTexture(u32); + /* 802EE798 */ virtual void setFont(ResFONT*); + /* 802EE84C */ virtual void setFont(JUTFont*); + /* 802EE8CC */ virtual void setPalette(u32, ResTLUT const*); + /* 802EDD34 */ virtual void prepareTexture(u8); + /* 802F2494 */ virtual void getTexture(u32); + /* 802F24B4 */ virtual void getPalette(u32); + /* 802F24D4 */ virtual void getFont(); + /* 802EE9A4 */ virtual void shiftDeleteFlag(u8, bool); + /* 802F24DC */ virtual void setUndeleteFlag(u8); + /* 802F24EC */ virtual void setFontUndeleteFlag(); + /* 802ED9E4 */ virtual ~J2DTevBlock4(); + +private: + /* 0x004 */ u16 mTexNo[4]; + /* 0x00C */ u16 mFontNo; + /* 0x00E */ J2DTevOrder mTevOrder[4]; + /* 0x01E */ J2DGXColorS10 mTevColor[4]; + /* 0x03E */ u8 mTevStageNum; + /* 0x03F */ J2DTevStage mTevStage[4]; + /* 0x060 */ JUtility::TColor mTevKColor[4]; + /* 0x070 */ u8 mTevKColorSel[4]; + /* 0x074 */ u8 mTevKAlphaSel[4]; + /* 0x078 */ J2DTevSwapModeTable mTevSwapModeTable[4]; + /* 0x07C */ J2DIndTevStage mIndTevStage[4]; + /* 0x08C */ JUTTexture* mTexture[4]; + /* 0x09C */ JUTPalette* mPalette[4]; + /* 0x0AC */ JUTFont* mFont; + /* 0x0B0 */ u8 mUndeleteFlag; +}; // Size: 0xB4 + +class J2DTevBlock8 : public J2DTevBlock { +public: + /* 802EED64 */ J2DTevBlock8(); + + /* 802EEF6C */ virtual void initialize(); + /* 802EFEAC */ virtual void setGX(); + /* 802F019C */ virtual void loadTexture(_GXTexMapID, u32); + /* 802F1FB8 */ virtual void getType(); + /* 802F1FC4 */ virtual s32 getMaxStage(); + /* 802F1FCC */ virtual void setTexNo(u32, u16); + /* 802F1FDC */ virtual void getTexNo(u32) const; + /* 802F1FEC */ virtual void setFontNo(u16); + /* 802F1FF4 */ virtual void getFontNo() const; + /* 802F1FFC */ virtual void setTevOrder(u32, J2DTevOrder); + /* 802F2020 */ virtual void getTevOrder(u32); + /* 802F2034 */ virtual void setTevColor(u32, J2DGXColorS10); + /* 802F2060 */ virtual void getTevColor(u32); + /* 802F2074 */ virtual void setTevKColor(u32, JUtility::TColor); + /* 802F20A0 */ virtual void getTevKColor(u32); + /* 802F20B4 */ virtual void setTevKColorSel(u32, u8); + /* 802F20C0 */ virtual void getTevKColorSel(u32); + /* 802F20CC */ virtual void setTevKAlphaSel(u32, u8); + /* 802F20D8 */ virtual void getTevKAlphaSel(u32); + /* 802F20E4 */ virtual void setTevStageNum(u8); + /* 802F20EC */ virtual void getTevStageNum() const; + /* 802F20F4 */ virtual void setTevStage(u32, J2DTevStage); + /* 802F2130 */ virtual void getTevStage(u32); + /* 802F2144 */ virtual void setTevSwapModeInfo(u32, J2DTevSwapModeInfo); + /* 802F217C */ virtual void setTevSwapModeTable(u32, J2DTevSwapModeTable); + /* 802F218C */ virtual void getTevSwapModeTable(u32); + /* 802F219C */ virtual void setIndTevStage(u32, J2DIndTevStage); + /* 802F21B0 */ virtual void getIndTevStage(u32); + /* 802F21C4 */ virtual void insertTexture(u32, ResTIMG const*); + /* 802EF2B0 */ virtual void insertTexture(u32, ResTIMG const*, JUTPalette*); + /* 802EF67C */ virtual void insertTexture(u32, JUTTexture*); + /* 802EF80C */ virtual void setTexture(u32, ResTIMG const*); + /* 802EFA98 */ virtual void setTexture(u32, JUTTexture*); + /* 802EFB48 */ virtual void removeTexture(u32); + /* 802EFC40 */ virtual void setFont(ResFONT*); + /* 802EFCEC */ virtual void setFont(JUTFont*); + /* 802EFD68 */ virtual void setPalette(u32, ResTLUT const*); + /* 802EF1E0 */ virtual void prepareTexture(u8); + /* 802F21F4 */ virtual void getTexture(u32); + /* 802F2214 */ virtual void getPalette(u32); + /* 802F2234 */ virtual void getFont(); + /* 802EFE40 */ virtual void shiftDeleteFlag(u8, bool); + /* 802F223C */ virtual void setUndeleteFlag(u8); + /* 802F224C */ virtual void setFontUndeleteFlag(); + /* 802EEE8C */ virtual ~J2DTevBlock8(); + +private: + /* 0x004 */ u16 mTexNo[8]; + /* 0x014 */ u16 mFontNo; + /* 0x016 */ J2DTevOrder mTevOrder[8]; + /* 0x036 */ J2DGXColorS10 mTevColor[4]; + /* 0x056 */ u8 mTevStageNum; + /* 0x057 */ J2DTevStage mTevStage[8]; + /* 0x098 */ JUtility::TColor mTevKColor[4]; + /* 0x0A8 */ u8 mTevKColorSel[8]; + /* 0x0B0 */ u8 mTevKAlphaSel[8]; + /* 0x0B8 */ J2DTevSwapModeTable mTevSwapModeTable[4]; + /* 0x0BC */ J2DIndTevStage mIndTevStage[8]; + /* 0x0DC */ JUTTexture* mTexture[8]; + /* 0x0FC */ JUTPalette* mPalette[8]; + /* 0x11C */ JUTFont* mFont; + /* 0x120 */ u8 mUndeleteFlag; + /* 0x121 */ bool mFontUndeleteFlag; +}; + +class J2DTevBlock16 : public J2DTevBlock { +public: + /* 802F01E4 */ J2DTevBlock16(); + + /* 802F03EC */ virtual void initialize(); + /* 802F132C */ virtual void setGX(); + /* 802F161C */ virtual void loadTexture(_GXTexMapID, u32); + /* 802F1D18 */ virtual void getType(); + /* 802F1D24 */ virtual s32 getMaxStage(); + /* 802F1D2C */ virtual void setTexNo(u32, u16); + /* 802F1D3C */ virtual void getTexNo(u32) const; + /* 802F1D4C */ virtual void setFontNo(u16); + /* 802F1D54 */ virtual void getFontNo() const; + /* 802F1D5C */ virtual void setTevOrder(u32, J2DTevOrder); + /* 802F1D80 */ virtual void getTevOrder(u32); + /* 802F1D94 */ virtual void setTevColor(u32, J2DGXColorS10); + /* 802F1DC0 */ virtual void getTevColor(u32); + /* 802F1DD4 */ virtual void setTevKColor(u32, JUtility::TColor); + /* 802F1E00 */ virtual void getTevKColor(u32); + /* 802F1E14 */ virtual void setTevKColorSel(u32, u8); + /* 802F1E20 */ virtual void getTevKColorSel(u32); + /* 802F1E2C */ virtual void setTevKAlphaSel(u32, u8); + /* 802F1E38 */ virtual void getTevKAlphaSel(u32); + /* 802F1E44 */ virtual void setTevStageNum(u8); + /* 802F1E4C */ virtual void getTevStageNum() const; + /* 802F1E54 */ virtual void setTevStage(u32, J2DTevStage); + /* 802F1E90 */ virtual void getTevStage(u32); + /* 802F1EA4 */ virtual void setTevSwapModeInfo(u32, J2DTevSwapModeInfo); + /* 802F1EDC */ virtual void setTevSwapModeTable(u32, J2DTevSwapModeTable); + /* 802F1EEC */ virtual void getTevSwapModeTable(u32); + /* 802F1EFC */ virtual void setIndTevStage(u32, J2DIndTevStage); + /* 802F1F10 */ virtual void getIndTevStage(u32); + /* 802F1F24 */ virtual void insertTexture(u32, ResTIMG const*); + /* 802F0730 */ virtual void insertTexture(u32, ResTIMG const*, JUTPalette*); + /* 802F0AFC */ virtual void insertTexture(u32, JUTTexture*); + /* 802F0C8C */ virtual void setTexture(u32, ResTIMG const*); + /* 802F0F18 */ virtual void setTexture(u32, JUTTexture*); + /* 802F0FC8 */ virtual void removeTexture(u32); + /* 802F10C0 */ virtual void setFont(ResFONT*); + /* 802F116C */ virtual void setFont(JUTFont*); + /* 802F11E8 */ virtual void setPalette(u32, ResTLUT const*); + /* 802F0660 */ virtual void prepareTexture(u8); + /* 802F1F54 */ virtual void getTexture(u32); + /* 802F1F74 */ virtual void getPalette(u32); + /* 802F1F94 */ virtual void getFont(); + /* 802F12C0 */ virtual void shiftDeleteFlag(u8, bool); + /* 802F1F9C */ virtual void setUndeleteFlag(u8); + /* 802F1FAC */ virtual void setFontUndeleteFlag(); + /* 802F030C */ virtual ~J2DTevBlock16(); + +private: + /* 0x004 */ u16 mTexNo[8]; + /* 0x014 */ u16 mFontNo; + /* 0x016 */ J2DTevOrder mTevOrder[16]; + /* 0x056 */ J2DGXColorS10 mTevColor[4]; + /* 0x076 */ u8 mTevStageNum; + /* 0x077 */ J2DTevStage mTevStage[16]; + /* 0x0F8 */ JUtility::TColor mTevKColor[4]; + /* 0x108 */ u8 mTevKColorSel[16]; + /* 0x118 */ u8 mTevKAlphaSel[16]; + /* 0x128 */ J2DTevSwapModeTable mTevSwapModeTable[4]; + /* 0x12C */ J2DIndTevStage mIndTevStage[16]; + /* 0x16C */ JUTTexture* mTexture[16]; + /* 0x18C */ JUTPalette* mPalette[16]; + /* 0x1AC */ JUTFont* mFont; + /* 0x1B0 */ u8 mUndeleteFlag; + /* 0x1B1 */ bool mFontUndeleteFlag; +}; // Size: 0x1B4 + +struct J2DAlphaComp { + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; + /* 0x2 */ u8 mRef0; + /* 0x3 */ u8 mRef1; +}; + +struct J2DBlendInfo { + /* 0x0 */ u8 mType; + /* 0x1 */ u8 mSrcFactor; + /* 0x2 */ u8 mDstFactor; + /* 0x3 */ u8 mOp; +}; + +struct J2DBlend { + /* 0x0 */ J2DBlendInfo mBlendInfo; +}; + +class J2DPEBlock { +public: + /* 802F17FC */ void initialize(); + /* 802F1840 */ void setGX(); + +private: + /* 0x0 */ J2DAlphaComp mAlphaComp; + /* 0x4 */ J2DBlend mBlend; + /* 0x8 */ u8 mDither; +}; + +class J2DIndBlock { +public: + /* 802EB24C */ virtual void initialize(); + /* 802EB1CC */ virtual void setGX(); + virtual void getType() = 0; + /* 802EB250 */ virtual void setIndTexStageNum(u8); + /* 802EA1A4 */ virtual bool getIndTexStageNum() const; + /* 802EB254 */ virtual void setIndTexOrder(u32, J2DIndTexOrder); + /* 802EA19C */ virtual bool getIndTexOrder(u32); + /* 802EB258 */ virtual void setIndTexMtx(u32, J2DIndTexMtx); + /* 802EA194 */ virtual bool getIndTexMtx(u32); + /* 802EB25C */ virtual void setIndTexCoordScale(u32, J2DIndTexCoordScale); + /* 802EA18C */ virtual bool getIndTexCoordScale(u32); + /* 802EB13C */ virtual ~J2DIndBlock(); +}; + +class J2DIndBlockFull : public J2DIndBlock { +public: + /* 802F1664 */ virtual void initialize(); + /* 802F1730 */ virtual void setGX(); + /* 802F1B94 */ virtual void getType(); + /* 802F1BA0 */ virtual void setIndTexStageNum(u8); + /* 802F1BA8 */ virtual void getIndTexStageNum() const; + /* 802F1BB0 */ virtual void setIndTexOrder(u32, J2DIndTexOrder); + /* 802F1BCC */ virtual void getIndTexOrder(u32); + /* 802F1BE0 */ virtual void setIndTexMtx(u32, J2DIndTexMtx); + /* 802F1C38 */ virtual void getIndTexMtx(u32); + /* 802F1C4C */ virtual void setIndTexCoordScale(u32, J2DIndTexCoordScale); + /* 802F1C68 */ virtual void getIndTexCoordScale(u32); + /* 802F1C7C */ virtual ~J2DIndBlockFull(); + +private: + /* 0x04 */ u8 mIndTexStageNum; + /* 0x05 */ J2DIndTexOrder mIndTexOrder[4]; + /* 0x10 */ J2DIndTexMtx mIndTexMtx[3]; + /* 0x64 */ J2DIndTexCoordScale mTexCoordScale[4]; +}; + +class J2DIndBlockNull : public J2DIndBlock { + /* 802EB1E0 */ virtual void setGX(); + /* 802EB1E4 */ virtual void getType(); + /* 802EB1F0 */ virtual ~J2DIndBlockNull(); +}; + +class J2DTexGenBlock { +private: + /* 0x00 */ u32 mTexGenNum; + /* 0x04 */ J2DTexCoord mTexGenCoord[8]; + /* 0x24 */ J2DTexMtx* mTexMtx[8]; + +public: + /* 802EB510 */ void initialize(); + /* 802EB570 */ void setGX(); + /* 802EB6A4 */ void setTexMtx(u32, J2DTexMtx&); + /* 802EB7E0 */ void getTexMtx(u32, J2DTexMtx&); + + /* 802EB620 */ virtual ~J2DTexGenBlock(); +}; // Size: 0x48 + +struct J2DColorChanInfo { + /* 0x0 */ u16 field_0x0; +}; + +class J2DColorChan { +public: + /* 802EB280 */ J2DColorChan(); + +private: + /* 0x0 */ J2DColorChanInfo mColorChanInfo; +}; + +class J2DColorBlock { +private: + /* 0x00 */ JUtility::TColor mMatColor[2]; + /* 0x08 */ u8 mColorChanNum; + /* 0x0A */ J2DColorChan mColorChan[4]; + /* 0x12 */ u8 mCullMode; + +public: + /* 802EB394 */ void initialize(); + /* 802EB424 */ void setGX(); + + /* 802EB0F4 */ virtual ~J2DColorBlock(); +}; + #endif /* J2DMATBLOCK_H */ diff --git a/include/JSystem/J2DGraph/J2DMaterial.h b/include/JSystem/J2DGraph/J2DMaterial.h index 065484c208..baaee0fd61 100644 --- a/include/JSystem/J2DGraph/J2DMaterial.h +++ b/include/JSystem/J2DGraph/J2DMaterial.h @@ -2,15 +2,27 @@ #define J2DMATERIAL_H #include "JSystem/J2DGraph/J2DAnimation.h" +#include "JSystem/J2DGraph/J2DMatBlock.h" +#include "dolphin/gx/GX.h" #include "dolphin/types.h" -struct J2DMaterial { +class J2DMaterial { +public: struct J2DMaterialAnmPointer { /* 802EA79C */ J2DMaterialAnmPointer(); - }; + + /* 0x00 */ int field_0x0; + /* 0x04 */ int field_0x4; + /* 0x08 */ int field_0x8; + /* 0x0C */ int field_0xc; + /* 0x10 */ u16 field_0x10; + /* 0x12 */ u16 field_0x12[8]; + /* 0x22 */ u16 field_0x22[8]; + /* 0x32 */ u16 field_0x32[4]; + /* 0x3A */ u16 field_0x3a[4]; + }; // Size: 0x44 /* 802EA1AC */ J2DMaterial(); - /* 802EA2CC */ ~J2DMaterial(); /* 802EA38C */ void setGX(); /* 802EA410 */ void createTevBlock(int, bool); /* 802EA5C4 */ void createIndBlock(int, bool); @@ -20,6 +32,21 @@ struct J2DMaterial { /* 802EAB0C */ void setAnimation(J2DAnmTevRegKey*); /* 802EA89C */ void setAnimation(J2DAnmColor*); /* 802EAC78 */ void animation(); + + /* 802EA2CC */ virtual ~J2DMaterial(); + +private: + /* 0x04 */ int field_0x4; + /* 0x08 */ int field_0x8; + /* 0x0C */ u16 mIndex; + /* 0x0E */ bool mVisible; + /* 0x0F */ u8 mMaterialAlphaCalc; + /* 0x10 */ J2DColorBlock mColorBlock; + /* 0x28 */ J2DTexGenBlock mTexGenBlock; + /* 0x70 */ J2DTevBlock* mTevBlock; + /* 0x74 */ J2DIndBlock* mIndBlock; + /* 0x78 */ J2DPEBlock mPEBlock; + /* 0x84 */ J2DMaterialAnmPointer* mAnmPointer; }; #endif /* J2DMATERIAL_H */ diff --git a/include/JSystem/J2DGraph/J2DMaterialFactory.h b/include/JSystem/J2DGraph/J2DMaterialFactory.h index 81d080a0f9..e66d8f9bdd 100644 --- a/include/JSystem/J2DGraph/J2DMaterialFactory.h +++ b/include/JSystem/J2DGraph/J2DMaterialFactory.h @@ -1,6 +1,72 @@ #ifndef J2DMATERIALFACTORY_H #define J2DMATERIALFACTORY_H +#include "JSystem/J2DGraph/J2DManage.h" +#include "JSystem/J2DGraph/J2DMaterial.h" +#include "JSystem/JKernel/JKRArchive.h" #include "dolphin/types.h" +struct J2DMaterialBlock {}; + +struct J2DMaterialInitData; +struct J2DIndInitData; +struct J2DTevSwapModeTableInfo; +struct J2DAlphaCompInfo; + +class J2DMaterialFactory { +public: + /* 802F2AD0 */ J2DMaterialFactory(J2DMaterialBlock const&); + /* 802F2C94 */ void countStages(int) const; + /* 802F2D1C */ void create(J2DMaterial*, int, u32, J2DResReference*, J2DResReference*, + JKRArchive*) const; + /* 802F362C */ void newMatColor(int, int) const; + /* 802F36CC */ void newColorChanNum(int) const; + /* 802F3704 */ void newColorChan(int, int) const; + /* 802F3758 */ void newTexGenNum(int) const; + /* 802F3790 */ void newTexCoord(int, int) const; + /* 802F3804 */ void newTexMtx(int, int) const; + /* 802F38E0 */ void newCullMode(int) const; + /* 802F3920 */ void newTexNo(int, int) const; + /* 802F3968 */ void newFontNo(int) const; + /* 802F39A8 */ void newTevOrder(int, int) const; + /* 802F3A1C */ void newTevColor(int, int) const; + /* 802F3AB4 */ void newTevKColor(int, int) const; + /* 802F3B54 */ void newTevStageNum(int) const; + /* 802F3B8C */ void newTevStage(int, int) const; + /* 802F3BEC */ void newTevSwapModeTable(int, int) const; + /* 802F3C88 */ void newIndTexStageNum(int) const; + /* 802F3CB8 */ void newIndTexOrder(int, int) const; + /* 802F3D20 */ void newIndTexMtx(int, int) const; + /* 802F3E24 */ void newIndTevStage(int, int) const; + /* 802F3F78 */ void newIndTexCoordScale(int, int) const; + /* 802F3FE0 */ void newAlphaComp(int) const; + /* 802F405C */ void newBlend(int) const; + /* 802F40D8 */ void newDither(int) const; + +private: + /* 0x00 */ int field_0x0; + /* 0x04 */ J2DMaterialInitData* field_0x4; + /* 0x08 */ u16* field_0x8; + /* 0x0C */ J2DIndInitData* field_0xc; + /* 0x10 */ GXColor* field_0x10; + /* 0x14 */ u8* field_0x14; + /* 0x18 */ J2DColorChanInfo* field_0x18; + /* 0x1C */ u8* field_0x1c; + /* 0x20 */ J2DTexCoordInfo* field_0x20; + /* 0x24 */ J2DTexMtxInfo* field_0x24; + /* 0x28 */ u16* field_0x28; + /* 0x2C */ u16* field_0x2c; + /* 0x30 */ _GXCullMode* field_0x30; + /* 0x34 */ J2DTevOrderInfo* field_0x34; + /* 0x38 */ GXColorS10* field_0x38; + /* 0x3C */ GXColor* field_0x3c; + /* 0x40 */ u8* field_0x40; + /* 0x44 */ J2DTevStageInfo* field_0x44; + /* 0x48 */ J2DTevSwapModeInfo* field_0x48; + /* 0x4C */ J2DTevSwapModeTableInfo* field_0x4c; + /* 0x50 */ J2DAlphaCompInfo* field_0x50; + /* 0x54 */ J2DBlendInfo* field_0x54; + /* 0x58 */ u8* field_0x58; +}; + #endif /* J2DMATERIALFACTORY_H */ diff --git a/include/JSystem/J2DGraph/J2DPictureEx.h b/include/JSystem/J2DGraph/J2DPictureEx.h index 00284b8045..3b83093015 100644 --- a/include/JSystem/J2DGraph/J2DPictureEx.h +++ b/include/JSystem/J2DGraph/J2DPictureEx.h @@ -1,6 +1,102 @@ #ifndef J2DPICTUREEX_H #define J2DPICTUREEX_H +#include "JSystem/J2DGraph/J2DMaterial.h" +#include "JSystem/J2DGraph/J2DPicture.h" #include "dolphin/types.h" +class J2DPictureEx : public J2DPicture { +public: + enum stage_enum {}; + + /* 803036EC */ J2DPictureEx(J2DPane*, JSURandomInputStream*, u32, J2DMaterial*); + /* 803040E4 */ void insertCommon(u8, f32); + /* 8030437C */ void isInsert(u8) const; + /* 80304728 */ void isRemove(u8) const; + /* 803052AC */ void setTevOrder(u8, u8, bool); + /* 803053E0 */ void setTevStage(u8, u8, bool); + /* 80305688 */ void setStage(J2DTevStage*, J2DPictureEx::stage_enum); + /* 80305928 */ void setTevKColor(u8); + /* 80305C70 */ void setTevKColorSel(u8); + /* 80305D18 */ void setTevKAlphaSel(u8); + /* 80305DC0 */ void shiftSetBlendRatio(u8, f32, bool, bool); + /* 80306664 */ void getBlackWhite(JUtility::TColor*, JUtility::TColor*) const; + /* 80306824 */ void isSetBlackWhite(JUtility::TColor, JUtility::TColor) const; + + /* 8030393C */ virtual ~J2DPictureEx(); + /* 80307168 */ virtual void setCullBack(bool); + /* 803069D8 */ virtual void setCullBack(_GXCullMode); + /* 803069B8 */ virtual void setAlpha(u8); + /* 80303AB4 */ virtual void drawSelf(f32, f32, f32 (*)[3][4]); + /* 80306A24 */ virtual void isUsed(ResTIMG const*); + /* 803071A4 */ virtual void isUsed(ResFONT const*); + /* 80306A0C */ virtual void rewriteAlpha(); + /* 803071C4 */ virtual void setAnimation(J2DAnmBase*); + /* 80256064 */ virtual void setAnimation(J2DAnmTransform*); + /* 80306AC4 */ virtual void setAnimation(J2DAnmColor*); + /* 80306B1C */ virtual void setAnimation(J2DAnmTexPattern*); + /* 80306AF0 */ virtual void setAnimation(J2DAnmTextureSRTKey*); + /* 80306B48 */ virtual void setAnimation(J2DAnmTevRegKey*); + /* 80306B74 */ virtual void setAnimation(J2DAnmVisibilityFull*); + /* 80306B7C */ virtual void setAnimation(J2DAnmVtxColor*); + /* 80306C70 */ virtual void animationPane(J2DAnmTransform const*); + /* 80303640 */ virtual void initiate(ResTIMG const*, ResTLUT const*); + /* 803039CC */ virtual void prepareTexture(u8); + /* 80306ED4 */ virtual void append(ResTIMG const*, f32); + /* 80303E5C */ virtual void append(ResTIMG const*, JUTPalette*, f32); + /* 80306F04 */ virtual void append(char const*, f32); + /* 80303EA4 */ virtual void append(char const*, JUTPalette*, f32); + /* 80303EEC */ virtual void append(JUTTexture*, f32); + /* 80306FF4 */ virtual void prepend(ResTIMG const*, f32); + /* 80306FC4 */ virtual void prepend(ResTIMG const*, JUTPalette*, f32); + /* 80306F94 */ virtual void prepend(char const*, f32); + /* 80306F64 */ virtual void prepend(char const*, JUTPalette*, f32); + /* 80306F34 */ virtual void prepend(JUTTexture*, f32); + /* 80307058 */ virtual void insert(ResTIMG const*, u8, f32); + /* 80303F34 */ virtual void insert(ResTIMG const*, JUTPalette*, u8, f32); + /* 80307024 */ virtual void insert(char const*, u8, f32); + /* 80303FD8 */ virtual void insert(char const*, JUTPalette*, u8, f32); + /* 80304048 */ virtual void insert(JUTTexture*, u8, f32); + /* 8030446C */ virtual void remove(u8); + /* 80304608 */ virtual void remove(); + /* 8030466C */ virtual void remove(JUTTexture*); + /* 8030708C */ virtual void draw(f32, f32, bool, bool, bool); + /* 8030477C */ virtual void draw(f32, f32, u8, bool, bool, bool); + /* 80304890 */ virtual void draw(f32, f32, f32, f32, bool, bool, bool); + /* 80304D88 */ virtual void drawOut(f32, f32, f32, f32, f32, f32); + /* 803070D0 */ virtual void drawOut(f32, f32, f32, f32, f32, f32, f32, f32); + /* 80304EF0 */ virtual void drawOut(JGeometry::TBox2<f32> const&, JGeometry::TBox2<f32> const&); + /* 80305264 */ virtual void load(_GXTexMapID, u8); + /* 80307134 */ virtual void load(u8); + /* 80305ED4 */ virtual void setBlendColorRatio(f32, f32); + /* 80305F34 */ virtual void setBlendAlphaRatio(f32, f32); + /* 80305F94 */ virtual void changeTexture(ResTIMG const*, u8); + /* 803060DC */ virtual void changeTexture(char const*, u8); + /* 80306134 */ virtual void changeTexture(ResTIMG const*, u8, JUTPalette*); + /* 80306298 */ virtual void changeTexture(char const*, u8, JUTPalette*); + /* 803062F8 */ virtual void getTexture(u8) const; + /* 80306350 */ virtual void getTextureCount() const; + /* 80306370 */ virtual void setBlack(JUtility::TColor); + /* 803063F8 */ virtual void setWhite(JUtility::TColor); + /* 80306480 */ virtual void setBlackWhite(JUtility::TColor, JUtility::TColor); + /* 803068F8 */ virtual void getBlack() const; + /* 80306958 */ virtual void getWhite() const; + /* 80256034 */ virtual void getMaterial() const; + /* 80303B80 */ virtual void drawFullSet(f32, f32, f32, f32, f32 (*)[3][4]); + /* 80303BDC */ virtual void drawTexCoord(f32, f32, f32, f32, s16, s16, s16, s16, s16, s16, s16, + s16, f32 (*)[3][4]); + /* 80306DC8 */ virtual void getUsableTlut(u8); + +private: + /* 0x150 */ J2DMaterial* mMaterial; + /* 0x154 */ u16 field_0x154; + /* 0x156 */ u16 field_0x156; + /* 0x158 */ u16 field_0x158[4]; + /* 0x160 */ f32 field_0x160[6]; // related to blend color ratio + /* 0x178 */ f32 field_0x178[6]; // related to blend alpha ratio + /* 0x190 */ u8 field_0x190; + /* 0x194 */ int field_0x194; + /* 0x198 */ int field_0x198; +}; + #endif /* J2DPICTUREEX_H */ diff --git a/include/JSystem/J2DGraph/J2DPrint.h b/include/JSystem/J2DGraph/J2DPrint.h index b4b219dadf..7d92ef4cae 100644 --- a/include/JSystem/J2DGraph/J2DPrint.h +++ b/include/JSystem/J2DGraph/J2DPrint.h @@ -1,6 +1,68 @@ #ifndef J2DPRINT_H #define J2DPRINT_H +#include "JSystem/J2DGraph/J2DTextBox.h" +#include "JSystem/JUtility/TColor.h" +#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.h" #include "dolphin/types.h" +class J2DPrint { +public: + struct TSize { + /* 0x0 */ f32 field_0x0; + /* 0x4 */ f32 field_0x4; + }; + + /* 802F4394 */ J2DPrint(JUTFont*, f32, f32, JUtility::TColor, JUtility::TColor, + JUtility::TColor, JUtility::TColor); + /* 802F4658 */ static u8* setBuffer(size_t); + /* 802F46C4 */ void setFontSize(); + /* 802F475C */ void locate(f32, f32); + /* 802F4778 */ void print(f32, f32, u8, char const*, ...); + /* 802F4828 */ void printReturn(char const*, f32, f32, J2DTextBoxHBinding, J2DTextBoxVBinding, + f32, f32, u8); + /* 802F4B4C */ void parse(u8 const*, int, int, u16*, J2DPrint::TSize&, u8, bool); + /* 802F52E8 */ void doCtrlCode(int); + /* 802F5410 */ void doEscapeCode(u8 const**, u8); + /* 802F594C */ void initchar(); + /* 802F59C0 */ void getNumberS32(u8 const**, s32, s32, int); + /* 802F5AC4 */ void getNumberF32(u8 const**, f32, f32, int); + + /* 802F4420 */ virtual ~J2DPrint(); + + static const u8* mStrBuff; + static size_t mStrBuffSize; + +private: + /* 802F4468 */ void private_initiate(JUTFont*, f32, f32, JUtility::TColor, JUtility::TColor, + JUtility::TColor, JUtility::TColor, bool); + + /* 0x04 */ JUTFont* mFont; + /* 0x08 */ JUtility::TColor field_0x8; + /* 0x0C */ JUtility::TColor field_0xc; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ s16 field_0x20; + /* 0x22 */ u8 field_0x22; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ f32 field_0x28; + /* 0x2C */ f32 field_0x2c; + /* 0x30 */ f32 mCursorV; + /* 0x34 */ f32 field_0x34; + /* 0x38 */ JUtility::TColor field_0x38; + /* 0x3C */ JUtility::TColor field_0x3c; + /* 0x40 */ JUtility::TColor mCharColor; + /* 0x44 */ JUtility::TColor mGradColor; + /* 0x48 */ f32 field_0x48; + /* 0x4C */ f32 field_0x4c; + /* 0x50 */ f32 mFontSizeX; + /* 0x54 */ f32 mFontSizeY; + /* 0x58 */ s16 field_0x58; + /* 0x5A */ u8 field_0x5a; +}; // Size: 0x5C + +f32 J2DPrint_print_alpha_va(J2DPrint*, u8, const char*, va_list); + #endif /* J2DPRINT_H */ diff --git a/include/JSystem/J2DGraph/J2DTevs.h b/include/JSystem/J2DGraph/J2DTevs.h index aa1f85cb8f..1019ffcb7e 100644 --- a/include/JSystem/J2DGraph/J2DTevs.h +++ b/include/JSystem/J2DGraph/J2DTevs.h @@ -1,6 +1,169 @@ #ifndef J2DTEVS_H #define J2DTEVS_H +#include "dolphin/mtx/mtxvec.h" #include "dolphin/types.h" +struct J2DTextureSRTInfo { + /* 0x00 */ f32 field_0x0; + /* 0x04 */ f32 field_0x4; + /* 0x08 */ f32 field_0x8; + /* 0x0C */ f32 field_0xc; + /* 0x10 */ f32 field_0x10; +}; // Size: 0x14 + +struct J2DTexMtxInfo { + /* 0x00 */ u8 field_0x0; + /* 0x01 */ u8 field_0x1; + /* 0x02 */ u8 field_0x2; // padding ? + /* 0x03 */ u8 field_0x3; // padding ? + /* 0x04 */ Vec field_0x4; + /* 0x10 */ J2DTextureSRTInfo mTexSRTInfo; +}; // Size: 0x24 + +class J2DTexMtx { +public: + /* 802E9C90 */ void load(u32); + /* 802E9CC4 */ void calc(); + /* 802E9D2C */ void getTextureMtx(J2DTextureSRTInfo const&, Vec, f32 (*)[4]); + /* 802E9EBC */ void getTextureMtxMaya(J2DTextureSRTInfo const&, f32 (*)[4]); + +private: + /* 0x00 */ J2DTexMtxInfo mTexMtxInfo; + /* 0x24 */ Mtx mTexMtx; +}; + +struct J2DIndTexOrderInfo { + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; +}; + +class J2DIndTexOrder { +public: + /* 802EB378 */ J2DIndTexOrder(); + /* 802EA0FC */ void load(u8); + +private: + /* 0x0 */ J2DIndTexOrderInfo mIndTexOrderInfo; +}; + +struct J2DIndTexMtxInfo { + /* 0x00 */ Mtx23 mMtx; + /* 0x18 */ u8 field_0x18; +}; + +class J2DIndTexMtx { +public: + /* 802EB2E4 */ ~J2DIndTexMtx(); + /* 802EB320 */ J2DIndTexMtx(); + /* 802EA098 */ void load(u8); + /* 802E9C90 */ void load(u32); + /* 802E9CC4 */ void calc(); + +private: + /* 0x0 */ J2DIndTexMtxInfo mIndTexMtxInfo; +}; // Size: 0x1C + +struct J2DIndTexCoordScaleInfo { + /* 0x0 */ u8 field_0x0; + /* 0x0 */ u8 field_0x1; +}; + +class J2DIndTexCoordScale { +public: + /* 802EB290 */ ~J2DIndTexCoordScale(); + /* 802EB2CC */ J2DIndTexCoordScale(); + /* 802EA0CC */ void load(u8); + +private: + /* 0x0 */ J2DIndTexCoordScaleInfo mIndTexCoordScaleInfo; +}; // Size: 0x2 + +class J2DIndTevStage { +public: + /* 802EA044 */ void load(u8); + /* 802F18A0 */ J2DIndTevStage(); + +private: + /* 0x0 */ u32 mFlags; +}; + +struct J2DTexCoordInfo { + /* 0x0 */ u8 mTexGenType; + /* 0x1 */ u8 mTexGenSrc; + /* 0x2 */ u8 mTexGenMtx; + u8 padding; // ? +}; + +class J2DTexCoord { +public: + /* 802EB260 */ J2DTexCoord(); + +private: + /* 0x0 */ J2DTexCoordInfo mTexCoordInfo; +}; + +struct J2DTevOrderInfo { + /* 0x0 */ u8 mTexCoord; + /* 0x1 */ u8 mTexMap; + /* 0x2 */ u8 mColor; +}; + +class J2DTevOrder { +public: + /* 802F1B70 */ J2DTevOrder(); + +private: + /* 0x0 */ J2DTevOrderInfo mTevOrderInfo; +}; + +struct J2DTevStageInfo { + /* 0x00 */ u8 field_0x0; + /* 0x01 */ u8 field_0x1; + /* 0x02 */ u8 field_0x2; + /* 0x03 */ u8 field_0x3; + /* 0x04 */ u8 field_0x4; + /* 0x05 */ u8 field_0x5; + /* 0x06 */ u8 field_0x6; + /* 0x07 */ u8 field_0x7; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; + /* 0x0A */ u8 field_0xa; + /* 0x0B */ u8 field_0xb; + /* 0x0C */ u8 field_0xc; + /* 0x0D */ u8 field_0xd; + /* 0x0E */ u8 field_0xe; + /* 0x0F */ u8 field_0xf; + /* 0x10 */ u8 field_0x10; + /* 0x11 */ u8 field_0x11; + /* 0x12 */ u8 field_0x12; +}; + +class J2DTevStage { +public: + /* 802F4110 */ J2DTevStage(J2DTevStageInfo const&); + /* 802F1940 */ J2DTevStage(); + /* 802F19A8 */ void setTevStageInfo(J2DTevStageInfo const&); + +private: + /* 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; +}; + +struct J2DTevSwapModeInfo {}; + +class J2DTevSwapModeTable { +public: + /* 802F1934 */ J2DTevSwapModeTable(); + +private: + /* 0x0 */ u8 field_0x0; +}; + #endif /* J2DTEVS_H */ diff --git a/include/JSystem/J2DGraph/J2DTextBoxEx.h b/include/JSystem/J2DGraph/J2DTextBoxEx.h index c958db6518..38e8ff0746 100644 --- a/include/JSystem/J2DGraph/J2DTextBoxEx.h +++ b/include/JSystem/J2DGraph/J2DTextBoxEx.h @@ -1,6 +1,56 @@ #ifndef J2DTEXTBOXEX_H #define J2DTEXTBOXEX_H +#include "JSystem/J2DGraph/J2DMaterial.h" +#include "JSystem/J2DGraph/J2DPrint.h" +#include "JSystem/J2DGraph/J2DTextBox.h" #include "dolphin/types.h" +class J2DTextBoxEx : public J2DTextBox { +public: + enum stage_enum {}; + + /* 803071E4 */ J2DTextBoxEx(J2DPane*, JSURandomInputStream*, u32, J2DMaterial*); + /* 80307E0C */ void setTevOrder(bool); + /* 80307EF0 */ void setTevStage(bool); + /* 80307F94 */ void setStage(J2DTevStage*, J2DTextBoxEx::stage_enum); + /* 803084CC */ void getBlackWhite(JUtility::TColor*, JUtility::TColor*) const; + /* 80308668 */ void isSetBlackWhite(JUtility::TColor, JUtility::TColor) const; + + /* 8030751C */ virtual ~J2DTextBoxEx(); + /* 803089EC */ virtual void setCullBack(bool); + /* 803087DC */ virtual void setCullBack(_GXCullMode); + /* 803087BC */ virtual void setAlpha(u8); + /* 803075AC */ virtual void drawSelf(f32, f32, f32 (*)[3][4]); + /* 80308A28 */ virtual void isUsed(ResTIMG const*); + /* 80308828 */ virtual void isUsed(ResFONT const*); + /* 80308810 */ virtual void rewriteAlpha(); + /* 80308A4C */ virtual void setAnimation(J2DAnmBase*); + /* 80256044 */ virtual void setAnimation(J2DAnmTransform*); + /* 803088B4 */ virtual void setAnimation(J2DAnmColor*); + /* 8030890C */ virtual void setAnimation(J2DAnmTexPattern*); + /* 803088E0 */ virtual void setAnimation(J2DAnmTextureSRTKey*); + /* 80308938 */ virtual void setAnimation(J2DAnmTevRegKey*); + /* 80308964 */ virtual void setAnimation(J2DAnmVisibilityFull*); + /* 80308A48 */ virtual void setAnimation(J2DAnmVtxColor*); + /* 8030896C */ virtual void animationPane(J2DAnmTransform const*); + /* 803078AC */ virtual void draw(f32, f32); + /* 80307AF0 */ virtual void draw(f32, f32, f32, J2DTextBoxHBinding); + /* 80307D5C */ virtual void setFont(JUTFont*); + /* 80307DC0 */ virtual void getFont() const; + /* 8030823C */ virtual void setBlack(JUtility::TColor); + /* 803082C4 */ virtual void setWhite(JUtility::TColor); + /* 8030834C */ virtual void setBlackWhite(JUtility::TColor, JUtility::TColor); + /* 803086FC */ virtual void getBlack() const; + /* 8030875C */ virtual void getWhite() const; + /* 80256024 */ virtual void getMaterial() const; + +private: + /* 0x134 */ u8 field_0x134[4]; + /* 0x138 */ J2DMaterial* mMaterial; + /* 0x13C */ u16 field_0x13c; + /* 0x13E */ u16 field_0x13e; + /* 0x140 */ u8 field_0x140; +}; // Size: 0x144 + #endif /* J2DTEXTBOXEX_H */ diff --git a/include/JSystem/J2DGraph/J2DWindowEx.h b/include/JSystem/J2DGraph/J2DWindowEx.h index 262c2486a9..e5f7e29f8a 100644 --- a/include/JSystem/J2DGraph/J2DWindowEx.h +++ b/include/JSystem/J2DGraph/J2DWindowEx.h @@ -1,6 +1,68 @@ #ifndef J2DWINDOWEX_H #define J2DWINDOWEX_H +#include "JSystem/J2DGraph/J2DMaterial.h" +#include "JSystem/J2DGraph/J2DWindow.h" #include "dolphin/types.h" +class J2DWindowEx : public J2DWindow { +public: + enum stage_enum {}; + + /* 80300C94 */ J2DWindowEx(J2DPane*, JSURandomInputStream*, u32, J2DMaterial*); + /* 80300F80 */ void setMinSize(); + /* 803012CC */ void draw_private(JGeometry::TBox2<f32> const&, JGeometry::TBox2<f32> const&); + /* 80301D74 */ void drawFrameTexture(f32, f32, f32, f32, u16, u16, u16, u16, J2DMaterial*, + bool); + /* 80302284 */ void setTevOrder(bool); + /* 80302388 */ void setTevStage(bool); + /* 803024B4 */ void setStage(J2DTevStage*, J2DWindowEx::stage_enum); + /* 80302A4C */ void getBlackWhite(JUtility::TColor*, JUtility::TColor*) const; + /* 80302BE8 */ void isSetBlackWhite(JUtility::TColor, JUtility::TColor) const; + /* 8030321C */ void isNeedSetAnm(u8); + + /* 80301144 */ virtual ~J2DWindowEx(); + /* 803035C0 */ virtual void setCullBack(bool); + /* 80302D98 */ virtual void setCullBack(_GXCullMode); + /* 80302D48 */ virtual void setAlpha(u8); + /* 8030122C */ virtual void drawSelf(f32, f32, f32 (*)[3][4]); + /* 80302EDC */ virtual void isUsed(ResTIMG const*); + /* 803035FC */ virtual void isUsed(ResFONT const*); + /* 80302DF4 */ virtual void rewriteAlpha(); + /* 8030361C */ virtual void setAnimation(J2DAnmBase*); + /* 80256084 */ virtual void setAnimation(J2DAnmTransform*); + /* 80302FFC */ virtual void setAnimation(J2DAnmColor*); + /* 8030310C */ virtual void setAnimation(J2DAnmTexPattern*); + /* 80303084 */ virtual void setAnimation(J2DAnmTextureSRTKey*); + /* 80303194 */ virtual void setAnimation(J2DAnmTevRegKey*); + /* 80303274 */ virtual void setAnimation(J2DAnmVisibilityFull*); + /* 8030327C */ virtual void setAnimation(J2DAnmVtxColor*); + /* 80303370 */ virtual void animationPane(J2DAnmTransform const*); + /* 80301FC8 */ virtual void draw(JGeometry::TBox2<f32> const&); + /* 80302164 */ virtual void draw(JGeometry::TBox2<f32> const&, JGeometry::TBox2<f32> const&); + /* 80303568 */ virtual void draw(f32, f32, f32, f32); + /* 80302764 */ virtual void setBlack(JUtility::TColor); + /* 803027EC */ virtual void setWhite(JUtility::TColor); + /* 80302874 */ virtual void setBlackWhite(JUtility::TColor, JUtility::TColor); + /* 80302C88 */ virtual void getBlack() const; + /* 80302CE8 */ virtual void getWhite() const; + /* 80302E0C */ virtual void getFrameTexture(u8, u8) const; + /* 80302E74 */ virtual void getContentsTexture(u8) const; + /* 8030353C */ virtual void getMaterial(J2DWindow::TMaterial&) const; + /* 80303510 */ virtual void getFrameMaterial(u8) const; + /* 80303534 */ virtual void getContentsMaterial() const; + /* 80301994 */ virtual void drawContents(JGeometry::TBox2<f32> const&); + +private: + /* 0x148 */ J2DMaterial* mFrameMaterial[4]; + /* 0x158 */ u16 field_0x158[4]; + /* 0x160 */ J2DMaterial* mContentsMaterial; + /* 0x164 */ u16 field_0x164; + /* 0x166 */ u16 field_0x166; + /* 0x168 */ u16 field_0x168[4]; + /* 0x170 */ u8 field_0x170; + /* 0x174 */ J2DAnmVisibilityFull* mAnmVisibilityFull; + /* 0x178 */ J2DAnmVtxColor* mAnmVtxColor; +}; + #endif /* J2DWINDOWEX_H */ diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index bff2b307ae..e0b78ce035 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -3,7 +3,7 @@ #include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" #include "JSystem/J3DGraphAnimator/J3DModelData.h" -#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GX.h" #include "dolphin/types.h" class J3DAnmBase { diff --git a/include/JSystem/J3DGraphBase/J3DMatBlock.h b/include/JSystem/J3DGraphBase/J3DMatBlock.h index c62fa07850..589571f3fb 100644 --- a/include/JSystem/J3DGraphBase/J3DMatBlock.h +++ b/include/JSystem/J3DGraphBase/J3DMatBlock.h @@ -4,7 +4,7 @@ #include "JSystem/J3DGraphBase/J3DStruct.h" #include "JSystem/J3DGraphBase/J3DTevs.h" #include "JSystem/J3DGraphBase/J3DTexture.h" -#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GX.h" #include "dolphin/mtx/mtx.h" #include "dolphin/types.h" diff --git a/include/JSystem/J3DGraphBase/J3DStruct.h b/include/JSystem/J3DGraphBase/J3DStruct.h index a9ba9f82f4..ce4ab4b4e5 100644 --- a/include/JSystem/J3DGraphBase/J3DStruct.h +++ b/include/JSystem/J3DGraphBase/J3DStruct.h @@ -2,7 +2,7 @@ #define J3DSTRUCT_H #include "SSystem/SComponent/c_xyz.h" -#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GX.h" #include "dolphin/types.h" class J3DLightInfo { diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h index b5b91f4136..75a181eab4 100644 --- a/include/JSystem/J3DGraphBase/J3DSys.h +++ b/include/JSystem/J3DGraphBase/J3DSys.h @@ -1,7 +1,7 @@ #ifndef J3DSYS_H #define J3DSYS_H -#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GX.h" #include "dolphin/mtx/mtx.h" #include "dolphin/types.h" @@ -11,8 +11,6 @@ enum J3DError { kJ3DError_Alloc = 4, }; -struct _GXTexCacheSize {}; - class J3DMtxCalc; class J3DModel; class J3DMatPacket; diff --git a/include/JSystem/JUtility/JUTPalette.h b/include/JSystem/JUtility/JUTPalette.h index 5de6c98ae6..dd9ab27cf5 100644 --- a/include/JSystem/JUtility/JUTPalette.h +++ b/include/JSystem/JUtility/JUTPalette.h @@ -6,33 +6,6 @@ enum JUTTransparency { UNK0, UNK1 }; -enum _GXTlut { - /* 0x00 */ GX_TLUT0, - /* 0x01 */ GX_TLUT1, - /* 0x02 */ GX_TLUT2, - /* 0x03 */ GX_TLUT3, - /* 0x04 */ GX_TLUT4, - /* 0x05 */ GX_TLUT5, - /* 0x06 */ GX_TLUT6, - /* 0x07 */ GX_TLUT7, - /* 0x08 */ GX_TLUT8, - /* 0x09 */ GX_TLUT9, - /* 0x0A */ GX_TLUT10, - /* 0x0B */ GX_TLUT11, - /* 0x0C */ GX_TLUT12, - /* 0x0D */ GX_TLUT13, - /* 0x0E */ GX_TLUT14, - /* 0x0F */ GX_TLUT15, - /* 0x10 */ GX_BIGTLUT0, - /* 0x11 */ GX_BIGTLUT1, - /* 0x12 */ GX_BIGTLUT2, - /* 0x13 */ GX_BIGTLUT3, -}; - -enum _GXTlutFmt { - /* 0x00 */ UNK, -}; - struct ResTLUT { u8 format; u8 transparency; diff --git a/include/JSystem/JUtility/TColor.h b/include/JSystem/JUtility/TColor.h index 473f28778e..0cd2354d92 100644 --- a/include/JSystem/JUtility/TColor.h +++ b/include/JSystem/JUtility/TColor.h @@ -1,7 +1,7 @@ #ifndef TCOLOR_H #define TCOLOR_H -#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GX.h" #include "dolphin/types.h" namespace JUtility { diff --git a/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/ctype.h b/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/ctype.h index fa5cd0377c..f59c75d820 100644 --- a/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/ctype.h +++ b/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/ctype.h @@ -3,4 +3,8 @@ #include "dolphin/types.h" +extern "C" { +int tolower(int); +}; + #endif /* MSL_COMMON_SRC_CTYPE_H */ diff --git a/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/string.h b/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/string.h index 9a30c9db61..38c7f3e7ea 100644 --- a/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/string.h +++ b/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/string.h @@ -5,6 +5,17 @@ extern "C" { void* memcpy(void*, const void*, s32); +void* memset(void*, int, u32); +char* strrchr(const char*, int); +char* strchr(const char*, int); +int strncmp(const char*, const char*, u32); +int strcmp(const char*, const char*); +char* strcat(char*, const char*); +char* strncpy(char*, const char*, u32); +char* strcpy(char*, const char*); +u32 strlen(const char*); + +int stricmp(const char*, const char*); }; #endif /* MSL_COMMON_SRC_STRING_H */ diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 0065c46df8..dff6740eed 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -7,7 +7,7 @@ #include "SSystem/SComponent/c_m3d_g_cyl.h" #include "SSystem/SComponent/c_m3d_g_sph.h" #include "SSystem/SComponent/c_m3d_g_tri.h" -#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GX.h" #include "f_op/f_op_actor.h" #include "global.h" diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 9253e3b623..dffffcdc5b 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -8,7 +8,6 @@ #include "dolphin/types.h" #include "f_op/f_op_actor.h" #include "f_op/f_op_actor_mng.h" -#include "msl_c/string.h" struct stage_vrboxcol_info_class {}; diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index 85857442e7..4a35b1fc32 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -7,7 +7,7 @@ #include "JSystem/JParticle/JPAParticle.h" #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" -#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GX.h" #include "dolphin/types.h" #include "m_Do/m_Do_ext.h" @@ -328,10 +328,6 @@ private: /* 0x18 */ EVIL_EFF field_0x18[2000]; }; -struct GXFogAdjTable { - u16 field_0x0[10]; -}; - class fopAc_ac_c; class dScnKy_env_light_c { diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index cf0cdeef5d..96baf9dc29 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -1,9 +1,10 @@ #ifndef D_SAVE_D_SAVE_H #define D_SAVE_D_SAVE_H +#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/printf.h" +#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/string.h" #include "SSystem/SComponent/c_xyz.h" #include "dolphin/types.h" -#include "msl_c/string.h" #define DEFAULT_SELECT_ITEM_INDEX 0 #define MAX_SELECT_ITEM 4 diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h index 9fd2cd3121..0ca3cc2d5f 100644 --- a/include/dolphin/gx/GX.h +++ b/include/dolphin/gx/GX.h @@ -2,49 +2,123 @@ #define GX_H_ #include "dolphin/gx/GXDisplayList.h" -#include "dolphin/gx/GXTexture.h" +#include "dolphin/mtx/mtx.h" +#include "dolphin/mtx/mtx44.h" #include "dolphin/types.h" -// TODO: maybe split? +typedef struct _GXColor { + /* 0x0 */ u8 r; + /* 0x1 */ u8 g; + /* 0x2 */ u8 b; + /* 0x3 */ u8 a; +} GXColor; + +typedef struct _GXColorS10 { + /* 0x0 */ s16 r; + /* 0x2 */ s16 g; + /* 0x4 */ s16 b; + /* 0x6 */ s16 a; +} GXColorS10; + +typedef struct _GXRenderModeObj { + s32 vi_tv_mode; + u16 fb_width; + u16 efb_height; + u16 xfb_height; + u16 vi_x_origin; + u16 vi_y_origin; + u16 vi_width; + u16 vi_height; + s32 xfb_mode; + u8 field_rendering; + u8 antialiasing; + u8 sample_pattern[12][2]; + u8 vfilter[7]; +} GXRenderModeObj; + +typedef struct _GXTexObj { + /* 0x00 */ u32 texture_filter; + /* 0x04 */ u32 texture_lod; + /* 0x08 */ u32 texture_size; + /* 0x0C */ u32 texture_address; + /* 0x10 */ u32 user_data; + /* 0x14 */ u32 texture_format; + /* 0x18 */ u32 tlut_name; + /* 0x1C */ u16 texture_time_count; + /* 0x1E */ u8 texture_tile_type; + /* 0x1F */ u8 texture_flags; +} GXTexObj; + +typedef struct _GXTlutObj { + /* 0x0 */ u32 format; + /* 0x4 */ u32 address; + /* 0x8 */ u32 numEntries; +} GXTlutObj; + +typedef struct _GXLightObj { + /* 0x0 */ u32 data[16]; +} GXLightObj; + +typedef struct _GXFogAdjTable { + /* 0x0 */ u16 r[10]; +} GXFogAdjTable; + +typedef enum _GXPrimitive { + /* 0x80 */ GX_QUADS = 0x80, + /* 0x90 */ GX_TRIANGLES = 0x90, + /* 0x98 */ GX_TRIANGLESTRIP = 0x98, + /* 0xA0 */ GX_TRIANGLEFAN = 0xA0, + /* 0xA8 */ GX_LINES = 0xA8, + /* 0xB0 */ GX_LINESTRIP = 0xB0, + /* 0xB8 */ GX_POINTS = 0xB8, +} GXPrimitive; typedef enum _GXCullMode { - GX_CULL_NONE = 0, - GX_CULL_FRONT = 1, - GX_CULL_BACK = 2, - GX_CULL_ALL = 3 + /* 0x0 */ GX_CULL_NONE, + /* 0x1 */ GX_CULL_FRONT, + /* 0x2 */ GX_CULL_BACK, + /* 0x3 */ GX_CULL_ALL } GXCullMode; +typedef enum _GXBool { + /* 0x0 */ GX_FALSE, + /* 0x1 */ GX_TRUE, + /* 0x0 */ GX_DISABLE = 0, + /* 0x1 */ GX_ENABLE +} GXBool; + typedef enum _GXTexMapID { - GX_TEXMAP1 = 1, - GX_TEXMAP2 = 2, - GX_TEXMAP0 = 0, - GX_TEXMAP5 = 5, - GX_TEXMAP6 = 6, - GX_TEXMAP3 = 3, - GX_TEXMAP4 = 4, - GX_TEXMAP_NULL = 255, - GX_TEX_DISABLE = 256, - GX_TEXMAP7 = 7, - GX_MAX_TEXMAP = 8 + /* 0x000 */ GX_TEXMAP0, + /* 0x001 */ GX_TEXMAP1, + /* 0x002 */ GX_TEXMAP2, + /* 0x003 */ GX_TEXMAP3, + /* 0x004 */ GX_TEXMAP4, + /* 0x005 */ GX_TEXMAP5, + /* 0x006 */ GX_TEXMAP6, + /* 0x007 */ GX_TEXMAP7, + /* 0x008 */ GX_MAX_TEXMAP, + /* 0x0FF */ GX_TEXMAP_NULL = 255, + /* 0x100 */ GX_TEXMAP_DISABLE, } GXTexMapID; typedef enum _GXTevStageID { - /* 0x0 */ GX_TEVSTAGE0, - /* 0x1 */ GX_TEVSTAGE1, - /* 0x2 */ GX_TEVSTAGE2, - /* 0x3 */ GX_TEVSTAGE3, - /* 0x4 */ GX_TEVSTAGE4, - /* 0x5 */ GX_TEVSTAGE5, - /* 0x6 */ GX_TEVSTAGE6, - /* 0x7 */ GX_TEVSTAGE7, - /* 0x8 */ GX_TEVSTAGE8, - /* 0x9 */ GX_TEVSTAGE9, - /* 0xA */ GX_TEVSTAGE10, - /* 0xB */ GX_TEVSTAGE11, - /* 0xC */ GX_TEVSTAGE12, - /* 0xD */ GX_TEVSTAGE13, - /* 0xE */ GX_TEVSTAGE14, - /* 0xF */ GX_TEVSTAGE15, + /* 0x00 */ GX_TEVSTAGE0, + /* 0x01 */ GX_TEVSTAGE1, + /* 0x02 */ GX_TEVSTAGE2, + /* 0x03 */ GX_TEVSTAGE3, + /* 0x04 */ GX_TEVSTAGE4, + /* 0x05 */ GX_TEVSTAGE5, + /* 0x06 */ GX_TEVSTAGE6, + /* 0x07 */ GX_TEVSTAGE7, + /* 0x08 */ GX_TEVSTAGE8, + /* 0x09 */ GX_TEVSTAGE9, + /* 0x0A */ GX_TEVSTAGE10, + /* 0x0B */ GX_TEVSTAGE11, + /* 0x0C */ GX_TEVSTAGE12, + /* 0x0D */ GX_TEVSTAGE13, + /* 0x0E */ GX_TEVSTAGE14, + /* 0x0F */ GX_TEVSTAGE15, + /* 0x10 */ GX_MAX_TEVSTAGE, } GXTevStageID; typedef enum _GXTexCoordID { @@ -56,6 +130,7 @@ typedef enum _GXTexCoordID { /* 0x05 */ GX_TEXCOORD5, /* 0x06 */ GX_TEXCOORD6, /* 0x07 */ GX_TEXCOORD7, + /* 0x08 */ GX_MAXCOORD, /* 0xFF */ GX_TEXCOORD_NULL = 255, } GXTexCoordID; @@ -78,14 +153,16 @@ typedef enum _GXColorSrc { } GXColorSrc; typedef enum _GXLightID { - /* 0x00 */ GX_LIGHT0, - /* 0x02 */ GX_LIGHT1 = 0x2, - /* 0x04 */ GX_LIGHT2 = 0x4, - /* 0x08 */ GX_LIGHT3 = 0x8, - /* 0x10 */ GX_LIGHT4 = 0x10, - /* 0x20 */ GX_LIGHT5 = 0x20, - /* 0x40 */ GX_LIGHT6 = 0x40, - /* 0x80 */ GX_LIGHT7 = 0x80, + /* 0x000 */ GX_LIGHT_NULL, + /* 0x001 */ GX_LIGHT0, + /* 0x002 */ GX_LIGHT1, + /* 0x004 */ GX_LIGHT2 = 0x4, + /* 0x008 */ GX_LIGHT3 = 0x8, + /* 0x010 */ GX_LIGHT4 = 0x10, + /* 0x020 */ GX_LIGHT5 = 0x20, + /* 0x040 */ GX_LIGHT6 = 0x40, + /* 0x080 */ GX_LIGHT7 = 0x80, + /* 0x100 */ GX_MAX_LIGHT = 0x100, } GXLightID; typedef enum _GXDiffuseFn { @@ -100,6 +177,23 @@ typedef enum _GXAttnFn { /* 0x2 */ GX_AF_NONE, } GXAttnFn; +typedef enum _GXDistAttnFn { + /* 0x0 */ GX_DA_OFF, + /* 0x1 */ GX_DA_GENTLE, + /* 0x2 */ GX_DA_MEDIUM, + /* 0x3 */ GX_DA_STEEP +} GXDistAttnFn; + +typedef enum _GXSpotFn { + /* 0x0 */ GX_SP_OFF, + /* 0x1 */ GX_SP_FLAT, + /* 0x2 */ GX_SP_COS, + /* 0x3 */ GX_SP_COS2, + /* 0x4 */ GX_SP_SHARP, + /* 0x5 */ GX_SP_RING1, + /* 0x6 */ GX_SP_RING2 +} GXSpotFn; + typedef enum _GXTevMode { /* 0x0 */ GX_MODULATE, /* 0x1 */ GX_DECAL, @@ -113,13 +207,16 @@ typedef enum _GXBlendMode { /* 0x1 */ GX_BM_BLEND, /* 0x2 */ GX_BM_LOGIC, /* 0x3 */ GX_BM_SUBTRACT, + /* 0x4 */ GX_MAX_BLENDMODE, } GXBlendMode; typedef enum _GXBlendFactor { /* 0x0 */ GX_BL_ZERO, /* 0x1 */ GX_BL_ONE, /* 0x2 */ GX_BL_SRC_COLOR, + /* 0x2 */ GX_BL_DST_COLOR = 2, /* 0x3 */ GX_BL_INV_SRC_COLOR, + /* 0x3 */ GX_BL_INV_DST_COLOR = 3, /* 0x4 */ GX_BL_SRC_ALPHA, /* 0x5 */ GX_BL_INV_SRC_ALPHA, /* 0x6 */ GX_BL_DST_ALPHA, @@ -154,6 +251,7 @@ typedef enum _GXVtxFmt { /* 0x5 */ GX_VTXFMT5, /* 0x6 */ GX_VTXFMT6, /* 0x7 */ GX_VTXFMT7, + /* 0x8 */ GX_MAX_VTXFMT, } GXVtxFmt; typedef enum _GXAttr { @@ -188,28 +286,28 @@ typedef enum _GXAttr { } GXAttr; typedef enum _GXCompCnt { - /* 0x0 */ GX_TEX_S, - /* 0x0 */ GX_NRM_XYZ = 0, - /* 0x0 */ GX_CLR_RGB = 0, /* 0x0 */ GX_POS_XY = 0, - /* 0x1 */ GX_TEX_ST = 1, + /* 0x1 */ GX_POS_XYZ = 1, + /* 0x0 */ GX_NRM_XYZ = 0, /* 0x1 */ GX_NRM_NBT = 1, + /* 0x2 */ GX_NRM_NBT3 = 2, + /* 0x0 */ GX_CLR_RGB = 0, /* 0x1 */ GX_CLR_RGBA = 1, - /* 0x1 */ GX_POS_XYZ = 1, - /* 0x2 */ GX_NRM_NBT3, + /* 0x0 */ GX_TEX_S = 0, + /* 0x1 */ GX_TEX_ST = 1, } GXCompCnt; typedef enum _GXCompType { /* 0x0 */ GX_U8, - /* 0x0 */ GX_RGB565 = 0, /* 0x1 */ GX_S8, - /* 0x1 */ GX_RGB8 = 1, - /* 0x2 */ GX_RGBX8, - /* 0x2 */ GX_U16 = 2, + /* 0x2 */ GX_U16, /* 0x3 */ GX_S16, - /* 0x3 */ GX_RGBA4 = 3, + /* 0x4 */ GX_F32, + /* 0x0 */ GX_RGB565 = 0, + /* 0x1 */ GX_RGB8, + /* 0x2 */ GX_RGBX8, + /* 0x3 */ GX_RGBA4, /* 0x4 */ GX_RGBA6, - /* 0x4 */ GX_F32 = 4, /* 0x5 */ GX_RGBA8, } GXCompType; @@ -239,6 +337,7 @@ typedef enum _GXTevBias { /* 0x0 */ GX_TB_ZERO, /* 0x1 */ GX_TB_ADDHALF, /* 0x2 */ GX_TB_SUBHALF, + /* 0x3 */ GX_MAX_TEVBIAS, } GXTevBias; typedef enum _GXTevColorArg { @@ -272,6 +371,7 @@ typedef enum _GXTevScale { /* 0x1 */ GX_CS_SCALE_2, /* 0x2 */ GX_CS_SCALE_4, /* 0x3 */ GX_CS_DIVIDE_2, + /* 0x4 */ GX_MAX_TEVSCALE } GXTevScale; typedef enum _GXTevRegID { @@ -279,6 +379,7 @@ typedef enum _GXTevRegID { /* 0x1 */ GX_TEVREG0, /* 0x2 */ GX_TEVREG1, /* 0x3 */ GX_TEVREG2, + /* 0x4 */ GX_MAX_TEVREG } GXTevRegID; typedef enum _GXTevAlphaArg { @@ -287,178 +388,354 @@ typedef enum _GXTevAlphaArg { /* 0x2 */ GX_CA_A1, /* 0x3 */ GX_CA_A2, /* 0x4 */ GX_CA_TEXA, - /* 0x5 */ GX_CA_TEXB, - /* 0x6 */ GX_CA_ZERO, + /* 0x5 */ GX_CA_RASA, + /* 0x6 */ GX_CA_KONST, + /* 0x7 */ GX_CA_ZERO, } GXTevAlphaArg; -typedef struct _GXRenderModeObj { - s32 vi_tv_mode; - u16 fb_width; - u16 efb_height; - u16 xfb_height; - u16 vi_x_origin; - u16 vi_y_origin; - u16 vi_width; - u16 vi_height; - s32 xfb_mode; - u8 field_rendering; - u8 antialiasing; - u8 sample_pattern[12][2]; - u8 vfilter[7]; -} GXRenderModeObj; - -struct _GXTexObj { - u32 texture_filter; - u32 texture_lod; - u32 texture_size; - u32 texture_address; - u32 user_data; - u32 texture_format; - u32 tlut_name; - u16 texture_time_count; - u8 texture_tile_type; - u8 texture_flags; -}; +typedef enum _GXTexFmt { + /* 0x0 */ GX_TF_I4, + /* 0x1 */ GX_TF_I8, + /* 0x2 */ GX_TF_IA4, + /* 0x3 */ GX_TF_IA8, + /* 0x4 */ GX_TF_RGB565, + /* 0x5 */ GX_TF_TGB5A3, + /* 0x6 */ GX_TF_RGBA8, + /* 0x7 */ GX_TF_CI4, + /* 0x8 */ GX_TF_CI8, + /* 0x9 */ GX_TF_CI14, + /* 0xE */ GX_TF_CMPR = 14, + + /* 0x10 */ _GX_TF_ZTF = 0x10, + /* 0x20 */ _GX_TF_CTF = 0x20 +} GXTexFmt; -struct _GXTlutObj { - u32 format; - u32 address; - u32 numEntries; -}; +typedef enum _GXTlutFmt { + /* 0x0 */ GX_TL_IA8, + /* 0x1 */ GX_TL_RGB565, + /* 0x2 */ GX_TL_RGB5A3, +} GXTlutFmt; -typedef enum GXTexFmt8 { /* 8-bit version of GXTexFmt for use in structures */ - GX_CTF_A8 = 39, - GX_CTF_B8 = 42, - GX_CTF_G8 = 41, - GX_CTF_GB8 = 44, - GX_CTF_R4 = 32, - GX_CTF_R8 = 40, - GX_CTF_RA4 = 34, - GX_CTF_RA8 = 35, - GX_CTF_RG8 = 43, - GX_CTF_YUVA8 = 38, - GX_CTF_Z16L = 60, - GX_CTF_Z4 = 48, - GX_CTF_Z8L = 58, - GX_CTF_Z8M = 57, - GX_TF_CMPR = 14, - GX_TF_I4 = 0, - GX_TF_I8 = 1, - GX_TF_IA4 = 2, - GX_TF_IA8 = 3, - GX_TF_RGB565 = 4, - GX_TF_RGB5A3 = 5, - GX_TF_RGBA8 = 6, - GX_TF_Z16 = 19, - GX_TF_Z24X8 = 22, - GX_TF_Z8 = 17 +typedef enum _GXTlut { + /* 0x00 */ GX_TLUT0, + /* 0x01 */ GX_TLUT1, + /* 0x02 */ GX_TLUT2, + /* 0x03 */ GX_TLUT3, + /* 0x04 */ GX_TLUT4, + /* 0x05 */ GX_TLUT5, + /* 0x06 */ GX_TLUT6, + /* 0x07 */ GX_TLUT7, + /* 0x08 */ GX_TLUT8, + /* 0x09 */ GX_TLUT9, + /* 0x0A */ GX_TLUT10, + /* 0x0B */ GX_TLUT11, + /* 0x0C */ GX_TLUT12, + /* 0x0D */ GX_TLUT13, + /* 0x0E */ GX_TLUT14, + /* 0x0F */ GX_TLUT15, + /* 0x10 */ GX_BIGTLUT0, + /* 0x11 */ GX_BIGTLUT1, + /* 0x12 */ GX_BIGTLUT2, + /* 0x13 */ GX_BIGTLUT3, +} GXTlut; + +/* 8-bit version of GXTexFmt for use in structures */ +typedef enum _GXTexFmt8 { + /* 0x20 */ GX_CTF_R4 = (0x0 | _GX_TF_CTF), + /* 0x22 */ GX_CTF_RA4 = (0x2 | _GX_TF_CTF), + /* 0x23 */ GX_CTF_RA8 = (0x3 | _GX_TF_CTF), + /* 0x26 */ GX_CTF_YUVA8 = (0x6 | _GX_TF_CTF), + /* 0x27 */ GX_CTF_A8 = (0x7 | _GX_TF_CTF), + /* 0x28 */ GX_CTF_R8 = (0x8 | _GX_TF_CTF), + /* 0x29 */ GX_CTF_G8 = (0x9 | _GX_TF_CTF), + /* 0x2A */ GX_CTF_B8 = (0xA | _GX_TF_CTF), + /* 0x2B */ GX_CTF_RG8 = (0xB | _GX_TF_CTF), + /* 0x2C */ GX_CTF_GB8 = (0xC | _GX_TF_CTF), } GXTexFmt8; -typedef enum GXTexFmt { - _GX_TF_I4, - _GX_TF_I8, - _GX_TF_IA4, - _GX_TF_IA8, - _GX_TF_RGB565, - _GX_TF_TGB5A3, - _GX_TF_RGBA8, - _GX_TF_CMPR = 14, - _GX_TF_Z8 = 17, - _GX_TF_Z16 = 19, - _GX_TF_Z24X8 = 22, - _GX_CTF_R4 = 32, - _GX_CTF_RA4 = 34, - _GX_CTF_RA8, - _GX_CTF_YUVA8 = 38, - _GX_CTF_A8, - _GX_CTF_R8, - _GX_CTF_G8, - _GX_CTF_B8, - _GX_CTF_RG8, - _GX_CTF_GB8, - _GX_CTF_Z4 = 48, - _GX_CTF_Z8M = 57, - _GX_CTF_Z8L, - _GX_CTF_Z16L = 60 -} GXTexFmt; - -typedef enum GXTexWrapMode8 { /* Same as GXTexWrapMode, but as 1 byte for use inside structures */ - GX_CLAMP = 0, - GX_MIRROR = 2, - GX_REPEAT = 1 -} GXTexWrapMode8; - -typedef enum GXTexWrapMode { - _GX_CLAMP, - _GX_REPEAT, - _GX_MIRROR, +typedef enum _GXZTexFmt { + /* 0x11 */ GX_TF_Z8 = (0x1 | _GX_TF_ZTF), + /* 0x13 */ GX_TF_Z16 = (0x3 | _GX_TF_ZTF), + /* 0x16 */ GX_TF_Z24X8 = (0x6 | _GX_TF_ZTF), + /* 0x30 */ GX_CTF_Z4 = (0x0 | _GX_TF_ZTF | _GX_TF_CTF), + /* 0x39 */ GX_CTF_Z8M = (0x9 | _GX_TF_ZTF | _GX_TF_CTF), + /* 0x3A */ GX_CTF_Z8L = (0xA | _GX_TF_ZTF | _GX_TF_CTF), + /* 0x3C */ GX_CTF_Z16L = (0xC | _GX_TF_ZTF | _GX_TF_CTF), +} GXZTexFmt; + +typedef enum _GXTexWrapMode { + /* 0x0 */ GX_CLAMP, + /* 0x1 */ GX_REPEAT, + /* 0x2 */ GX_MIRROR, + /* 0x3 */ GX_MAX_TEXWRAP_MODE, } GXTexWrapMode; -typedef enum GXTexFilter8 { /* Same as GXTexFilter, but as 1 byte for use within structures that - store the value as a byte */ - GX_LINEAR = 1, - GX_LIN_MIP_LIN = 5, - GX_LIN_MIP_NEAR = 3, - GX_NEAR = 0, - GX_NEAR_MIP_LIN = 4, - GX_NEAR_MIP_NEAR = 2 -} GXTexFilter8; - -typedef enum GXTexFilter { - _GX_NEAR, - _GX_LINEAR, - _GX_NEAR_MIP_NEAR, - _GX_LIN_MIP_NEAR, - _GX_NEAR_MIP_LIN, - _GX_LIN_MIP_LIN, +typedef enum _GXTexFilter { + /* 0x0 */ GX_NEAR, + /* 0x1 */ GX_LINEAR, + /* 0x2 */ GX_NEAR_MIP_NEAR, + /* 0x3 */ GX_LIN_MIP_NEAR, + /* 0x4 */ GX_NEAR_MIP_LIN, + /* 0x5 */ GX_LIN_MIP_LIN, } GXTexFilter; -typedef enum GXAnisotropy { - GX_ANISO_1, - GX_ANISO_2, - GX_ANISO_4, +typedef enum _GXAnisotropy { + /* 0x0 */ GX_ANISO_1, + /* 0x1 */ GX_ANISO_2, + /* 0x2 */ GX_ANISO_4, + /* 0x3 */ GX_MAX_ANISOTROPY, } GXAnisotropy; -typedef enum GXTlutFmt { - GX_TL_IA8, - GX_TL_RGB565, - GX_TL_RGB5A3, -} GXTlutFmt; - enum GXCITexFmt { /* 0x8 */ GX_TF_C4 = 8, /* 0x8 */ GX_TF_C8, /* 0xA */ GX_TF_C14X2 }; +typedef enum _GXTexMtxType { + /* 0x0 */ GX_MTX3x4, + /* 0x1 */ GX_MTX2x4 +} GXTexMtxType; + +typedef enum _GXCompare { + /* 0x0 */ GX_NEVER, + /* 0x1 */ GX_LESS, + /* 0x2 */ GX_EQUAL, + /* 0x3 */ GX_LEQUAL, + /* 0x4 */ GX_GREATER, + /* 0x5 */ GX_NEQUAL, + /* 0x6 */ GX_GEQUAL, + /* 0x7 */ GX_ALWAYS, +} GXCompare; + +typedef enum _GXAlphaOp { + /* 0x0 */ GX_AOP_AND, + /* 0x1 */ GX_AOP_OR, + /* 0x2 */ GX_AOP_XOR, + /* 0x3 */ GX_AOP_XNOR, + /* 0x4 */ GX_MAX_ALPHAOP +} GXAlphaOp; + +typedef enum _GXFogType { + /* 0x0 */ GX_FOG_NONE, + /* 0x2 */ GX_FOG_LIN = 2, + /* 0x2 */ GX_FOG_PERSP_LIN = 2, + /* 0x4 */ GX_FOG_EXP = 4, + /* 0x4 */ GX_FOG_PERSP_EXP = 4, + /* 0x5 */ GX_FOG_EXP2, + /* 0x5 */ GX_FOG_PERSP_EXP2 = 5, + /* 0x6 */ GX_FOG_REVEXP, + /* 0x6 */ GX_FOG_PERSP_REVEXP = 6, + /* 0x7 */ GX_FOG_REVEXP2, + /* 0x7 */ GX_FOG_PERSP_REVEXP2 = 7, + /* 0xA */ GX_FOG_ORTHO_LIN = 10, + /* 0xC */ GX_FOG_ORTHO_EXP = 12, + /* 0xD */ GX_FOG_ORTHO_EXP2, + /* 0xE */ GX_FOG_ORTHO_REVEXP, + /* 0xF */ GX_FOG_ORTHO_REVEXP2, +} GXFogType; + +typedef enum _GXProjectionType { + /* 0x0 */ GX_PERSPECTIVE, + /* 0x1 */ GX_ORTHOGRAPHIC +} GXProjectionType; + +typedef enum _GXTevKAlphaSel { + /* 0x00 */ GX_TEV_KASEL_1, + /* 0x01 */ GX_TEV_KASEL_7_8, + /* 0x02 */ GX_TEV_KASEL_3_4, + /* 0x03 */ GX_TEV_KASEL_5_8, + /* 0x04 */ GX_TEV_KASEL_1_2, + /* 0x05 */ GX_TEV_KASEL_3_8, + /* 0x06 */ GX_TEV_KASEL_1_4, + /* 0x07 */ GX_TEV_KASEL_1_8, + + /* 0x10 */ GX_TEV_KASEL_K0_R = 0x10, + /* 0x11 */ GX_TEV_KASEL_K1_R, + /* 0x12 */ GX_TEV_KASEL_K2_R, + /* 0x13 */ GX_TEV_KASEL_K3_R, + /* 0x14 */ GX_TEV_KASEL_K0_G, + /* 0x15 */ GX_TEV_KASEL_K1_G, + /* 0x16 */ GX_TEV_KASEL_K2_G, + /* 0x17 */ GX_TEV_KASEL_K3_G, + /* 0x18 */ GX_TEV_KASEL_K0_B, + /* 0x19 */ GX_TEV_KASEL_K1_B, + /* 0x1A */ GX_TEV_KASEL_K2_B, + /* 0x1B */ GX_TEV_KASEL_K3_B, + /* 0x1C */ GX_TEV_KASEL_K0_A, + /* 0x1D */ GX_TEV_KASEL_K1_A, + /* 0x1E */ GX_TEV_KASEL_K2_A, + /* 0x1F */ GX_TEV_KASEL_K3_A, +} GXTevKAlphaSel; + +typedef enum _GXTevKColorSel { + /* 0x00 */ GX_TEV_KCSEL_1, + /* 0x01 */ GX_TEV_KCSEL_7_8, + /* 0x02 */ GX_TEV_KCSEL_3_4, + /* 0x03 */ GX_TEV_KCSEL_5_8, + /* 0x04 */ GX_TEV_KCSEL_1_2, + /* 0x05 */ GX_TEV_KCSEL_3_8, + /* 0x06 */ GX_TEV_KCSEL_1_4, + /* 0x07 */ GX_TEV_KCSEL_1_8, + /* 0x0C */ GX_TEV_KCSEL_K0 = 0xC, + /* 0x0D */ GX_TEV_KCSEL_K1, + /* 0x0E */ GX_TEV_KCSEL_K2, + /* 0x0F */ GX_TEV_KCSEL_K3, + /* 0x10 */ GX_TEV_KCSEL_K0_R, + /* 0x11 */ GX_TEV_KCSEL_K1_R, + /* 0x12 */ GX_TEV_KCSEL_K2_R, + /* 0x13 */ GX_TEV_KCSEL_K3_R, + /* 0x14 */ GX_TEV_KCSEL_K0_G, + /* 0x15 */ GX_TEV_KCSEL_K1_G, + /* 0x16 */ GX_TEV_KCSEL_K2_G, + /* 0x17 */ GX_TEV_KCSEL_K3_G, + /* 0x18 */ GX_TEV_KCSEL_K0_B, + /* 0x19 */ GX_TEV_KCSEL_K1_B, + /* 0x1A */ GX_TEV_KCSEL_K2_B, + /* 0x1B */ GX_TEV_KCSEL_K3_B, + /* 0x1C */ GX_TEV_KCSEL_K0_A, + /* 0x1D */ GX_TEV_KCSEL_K1_A, + /* 0x1E */ GX_TEV_KCSEL_K2_A, + /* 0x1F */ GX_TEV_KCSEL_K3_A, +} GXTevKColorSel; + +typedef enum _GXTevSwapSel { + /* 0x0 */ GX_TEV_SWAP0, + /* 0x1 */ GX_TEV_SWAP1, + /* 0x2 */ GX_TEV_SWAP2, + /* 0x3 */ GX_TEV_SWAP3, + /* 0x4 */ GX_MAX_TEVSWAP, +} GXTevSwapSel; + +typedef enum _GXTexGenType { + /* 0x0 */ GX_TG_MTX3x4, + /* 0x1 */ GX_TG_MTX2x4, + /* 0x2 */ GX_TG_BUMP0, + /* 0x3 */ GX_TG_BUMP1, + /* 0x4 */ GX_TG_BUMP2, + /* 0x5 */ GX_TG_BUMP3, + /* 0x6 */ GX_TG_BUMP4, + /* 0x7 */ GX_TG_BUMP5, + /* 0x8 */ GX_TG_BUMP6, + /* 0x9 */ GX_TG_BUMP7, + /* 0xA */ GX_TG_SRTG, +} GXTexGenType; + +typedef enum _GXTexGenSrc { + /* 0x00 */ GX_TG_POS, + /* 0x01 */ GX_TG_NRM, + /* 0x02 */ GX_TG_BINRM, + /* 0x03 */ GX_TG_TANGENT, + /* 0x04 */ GX_TG_TEX0, + /* 0x05 */ GX_TG_TEX1, + /* 0x06 */ GX_TG_TEX2, + /* 0x07 */ GX_TG_TEX3, + /* 0x08 */ GX_TG_TEX4, + /* 0x09 */ GX_TG_TEX5, + /* 0x0A */ GX_TG_TEX6, + /* 0x0B */ GX_TG_TEX7, + /* 0x0C */ GX_TG_TEXCOORD0, + /* 0x0D */ GX_TG_TEXCOORD1, + /* 0x0E */ GX_TG_TEXCOORD2, + /* 0x0F */ GX_TG_TEXCOORD3, + /* 0x10 */ GX_TG_TEXCOORD4, + /* 0x11 */ GX_TG_TEXCOORD5, + /* 0x12 */ GX_TG_TEXCOORD6, +} GXTexGenSrc; + +typedef enum _GXZTexOp { + /* 0x0 */ GX_ZT_DISABLE, + /* 0x1 */ GX_ZT_ADD, + /* 0x2 */ GX_ZT_REPLACE, + /* 0x3 */ GX_MAX_ZTEXOP, +} GXZTexOp; + +typedef enum _GXIndTexStageID { + /* 0x0 */ GX_INDTEXSTAGE0, + /* 0x1 */ GX_INDTEXSTAGE1, + /* 0x2 */ GX_INDTEXSTAGE2, + /* 0x3 */ GX_INDTEXSTAGE3, + /* 0x4 */ GX_MAX_INDTEXSTAGE, +} GXIndTexStageID; + +typedef enum _GXIndTexScale { + /* 0x0 */ GX_ITS_1, + /* 0x1 */ GX_ITS_2, + /* 0x2 */ GX_ITS_4, + /* 0x3 */ GX_ITS_8, + /* 0x4 */ GX_ITS_16, + /* 0x5 */ GX_ITS_32, + /* 0x6 */ GX_ITS_64, + /* 0x7 */ GX_ITS_128, + /* 0x8 */ GX_ITS_256, + /* 0x9 */ GX_MAX_ITSCALE, +} GXIndTexScale; + +typedef enum _GXIndTexMtxID { + /* 0x0 */ GX_ITM_OFF, + /* 0x1 */ GX_ITM_0, + /* 0x2 */ GX_ITM_1, + /* 0x3 */ GX_ITM_2, + /* 0x5 */ GX_ITM_S0 = 5, + /* 0x6 */ GX_ITM_S1, + /* 0x7 */ GX_ITM_S2, + /* 0x9 */ GX_ITM_T0 = 9, + /* 0xA */ GX_ITM_T1, + /* 0xB */ GX_ITM_T2, +} GXIndTexMtxID; + +typedef enum _GXTexOffset { + /* 0x0 */ GX_TO_ZERO, + /* 0x1 */ GX_TO_SIXTEENTH, + /* 0x2 */ GX_TO_EIGHTH, + /* 0x3 */ GX_TO_FOURTH, + /* 0x4 */ GX_TO_HALF, + /* 0x5 */ GX_TO_ONE, + /* 0x6 */ GX_MAX_TEXOFFSET, +} GXTexOffset; + +typedef enum _GXTevKColorID { + /* 0x0 */ GX_KCOLOR0, + /* 0x1 */ GX_KCOLOR1, + /* 0x2 */ GX_KCOLOR2, + /* 0x3 */ GX_KCOLOR3, +} GXTevKColorID; + +typedef enum _GXTexCacheSize { + /* 0x0 */ GX_TEXCACHE_32K, + /* 0x1 */ GX_TEXCACHE_128K, + /* 0x2 */ GX_TEXCACHE_512K, + /* 0x3 */ GX_TEXCACHE_NONE, +} GXTexCacheSize; + extern "C" { f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height); u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale); -void GXBegin(u8, u8, u16); -void GXLoadTexObj(_GXTexObj*, _GXTexMapID); -void GXInitTexObjLOD(_GXTexObj*, GXTexFilter, GXTexFilter, f32, f32, f32, s32, s32, GXAnisotropy); -void GXInitTexObj(_GXTexObj*, void*, u16, u16, GXTexFmt, GXTexWrapMode, GXTexWrapMode, s32); -void GXInitTlutObj(_GXTlutObj*, void*, GXTlutFmt, u16); -void GXLoadTlut(_GXTlutObj*, u32); -void GXInitTexObjCI(_GXTexObj*, void*, u16, u16, GXCITexFmt, GXTexWrapMode, GXTexWrapMode, s32, +void GXBegin(GXPrimitive, GXVtxFmt, u16); +void GXLoadTexObj(GXTexObj*, GXTexMapID); +void GXInitTexObjLOD(GXTexObj*, GXTexFilter, GXTexFilter, f32, f32, f32, GXBool, GXBool, + GXAnisotropy); +void GXInitTexObj(GXTexObj*, void*, u16, u16, GXTexFmt, GXTexWrapMode, GXTexWrapMode, GXBool); +void GXInitTlutObj(GXTlutObj*, void*, GXTlutFmt, u16); +void GXLoadTlut(GXTlutObj*, u32); +void GXInitTexObjCI(GXTexObj*, void*, u16, u16, GXCITexFmt, GXTexWrapMode, GXTexWrapMode, GXBool, u32); - -void GXSetNumChans(u32); -void GXSetNumTevStages(u32); -void GXSetNumTexGens(u32); -void GXSetTevOrder(u32, u32, u32, u32); -void GXSetChanCtrl(u32, u32, u32, u32, u32, u32, s32); -void GXSetTevOp(s32, s32); -void GXSetTevColor(s32, _GXColor); -void GXSetTevColorIn(s32, u32, u32, u32, u32); -void GXSetTevAlphaIn(s32, u32, u32, u32, u32); -void GXSetTevColorOp(s32, u32, u32, u32, u32, u32); -void GXSetTevAlphaOp(s32, u32, u32, u32, u32, u32); -void GXSetBlendMode(u32, u32, u32, u32); -void GXSetVtxAttrFmt(u32, u32, u32, u32, u32); +void GXSetNumChans(u8); +void GXSetNumTevStages(u8); +void GXSetNumTexGens(u8); +void GXSetTevOrder(GXTevStageID, GXTexCoordID, GXTexMapID, GXChannelID); +void GXSetChanCtrl(GXChannelID, GXBool, GXColorSrc, GXColorSrc, GXLightID, GXDiffuseFn, GXAttnFn); +void GXSetTevOp(GXTevStageID, GXTevMode); +void GXSetTevColor(GXTevRegID, GXColor); +void GXSetTevColorIn(GXTevStageID, GXTevColorArg, 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 GXSetBlendMode(GXBlendMode, GXBlendFactor, GXBlendFactor, GXLogicOp); +void GXSetVtxAttrFmt(GXVtxFmt, GXAttr, GXCompCnt, GXCompType, u32); void GXClearVtxDesc(); -void GXSetVtxDesc(u32, u32); +void GXSetVtxDesc(GXAttr, GXAttrType); typedef void (*GXDrawDoneCallback)(void); void GXSetDrawDoneCallback(GXDrawDoneCallback); void GXDrawDone(void); @@ -469,48 +746,55 @@ struct OSThread; OSThread* GXSetCurrentGXThread(void); OSThread* GXGetCurrentGXThread(void); -// Below needs proper symbols -void GXClearVtxDesc(void); -void GXCopyTex(void); -void GXGetProjectionv(void); -u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, s32 is_mip_map, u8 max_lod); -void GXGetViewportv(void); -void GXInitLightColor(void); -void GXInitLightDir(void); -void GXInitLightDistAttn(void); -void GXInitLightPos(void); -void GXInitLightSpot(void); +void GXCopyTex(void*, GXBool); +void GXGetProjectionv(f32*); +u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool is_mip_map, u8 max_lod); +void GXGetViewportv(f32*); +void GXInitLightColor(GXLightObj*, GXColor); +void GXInitLightDir(GXLightObj*, f32, f32, f32); +void GXInitLightDistAttn(GXLightObj*, f32, f32, GXDistAttnFn); +void GXInitLightPos(GXLightObj*, f32, f32, f32); +void GXInitLightSpot(GXLightObj*, f32, GXSpotFn); void GXInvalidateTexAll(void); -void GXLoadLightObjImm(void); -void GXLoadPosMtxImm(void); -void GXLoadTexMtxImm(void); +void GXLoadLightObjImm(GXLightObj*, GXLightID); +void GXLoadPosMtxImm(Mtx, u32); +void GXLoadTexMtxImm(Mtx, u32, GXTexMtxType); void GXPixModeSync(void); -void GXProject(void); -void GXSetAlphaCompare(void); -void GXSetAlphaUpdate(void); -void GXSetChanMatColor(void); -void GXSetClipMode(void); -void GXSetCoPlanar(void); -void GXSetCopyFilter(void); -void GXSetCullMode(void); -void GXSetCurrentMtx(void); -void GXSetDither(void); -void GXSetFog(void); -void GXSetFogRangeAdj(void); -void GXSetNumIndStages(void); -void GXSetProjection(void); -void GXSetScissor(void); -void GXSetTevColorS10(void); -void GXSetTevKAlphaSel(void); -void GXSetTevSwapMode(void); -void GXSetTevSwapModeTable(void); -void GXSetTexCoordGen2(void); -void GXSetTexCopyDst(void); -void GXSetTexCopySrc(void); -void GXSetViewport(void); -void GXSetZCompLoc(void); -void GXSetZMode(void); -void GXSetZTexture(void); +void GXProject(f32, f32, f32, Mtx, f32*, f32*, f32*, f32*, f32*); +void GXSetAlphaCompare(GXCompare, u8, GXAlphaOp, GXCompare, u8); +void GXSetAlphaUpdate(GXBool); +void GXSetChanMatColor(GXChannelID, GXColor); +void GXSetClipMode(GXBool); +void GXSetCoPlanar(GXBool); +void GXSetCopyFilter(GXBool, u8[12][2], GXBool, u8[7]); +void GXSetCullMode(GXCullMode); +void GXSetCurrentMtx(u32); +void GXSetDither(GXBool); +void GXSetFog(GXFogType, f32, f32, f32, f32, GXColor); +void GXSetFogRangeAdj(GXBool, u16, GXFogAdjTable*); +void GXSetNumIndStages(u8); +void GXSetProjection(Mtx44, GXProjectionType); +void GXSetScissor(u32, u32, u32, u32); +void GXSetTevColorS10(GXTevRegID, GXColorS10); +void GXSetTevKAlphaSel(GXTevStageID, GXTevKAlphaSel); +void GXSetTevSwapMode(GXTevStageID, GXTevSwapSel); +void GXSetTevSwapModeTable(GXTevSwapSel, GXTevColor, GXTevColor, GXTevColor, GXTevColor); +void GXSetTexCoordGen2(GXTexCoordID, GXTexGenType, GXTexGenSrc, u32, GXBool, u32); +void GXSetTexCopyDst(u16, u16, GXTexFmt, GXBool); +void GXSetTexCopySrc(u16, u16, u16, u16); +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 GXSetLineWidth(u8, GXTexOffset); +void GXSetTevDirect(GXTevStageID); +void GXSetTevKColor(GXTevKColorID, GXColor); +void GXSetTevKColorSel(GXTevStageID, GXTevKColorSel); +void GXGetScissor(u32*, u32*, u32*, u32*); +void GXSetIndTexMtx(GXIndTexMtxID, Mtx23, s8); +void GXSetIndTexCoordScale(GXIndTexStageID, GXIndTexScale, GXIndTexScale); +void GXSetIndTexOrder(GXIndTexStageID, GXTexCoordID, GXTexMapID); }; #endif
\ No newline at end of file diff --git a/include/dolphin/gx/GXTexture.h b/include/dolphin/gx/GXTexture.h index 1823855bf1..2f2bbfb6e0 100644 --- a/include/dolphin/gx/GXTexture.h +++ b/include/dolphin/gx/GXTexture.h @@ -3,18 +3,4 @@ #include "dolphin/types.h" -typedef struct _GXColor { - u8 r; - u8 g; - u8 b; - u8 a; -} GXColor; - -typedef struct _GXColorS10 { - s16 r; - s16 g; - s16 b; - s16 a; -} GXColorS10; - #endif /* GXTEXTURE_H */ diff --git a/include/msl_c/string.h b/include/msl_c/string.h deleted file mode 100644 index 902f205f09..0000000000 --- a/include/msl_c/string.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef MSL_STRING_H_ -#define MSL_STRING_H_ - -#include "Runtime.PPCEABI.H/__va_arg.h" -#include "dolphin/types.h" - -// TODO: move to MSL_C.PPCEABI.bare.H/ -extern "C" { -void memcpy(void*, const void*, s32); -void* memset(void* dest, int ch, u32 count); -char* strrchr(const char* s, int c); -char* strchr(const char* s, int c); -int strncmp(const char* s1, const char* s2, u32 n); -int strcmp(const char* s1, const char* s2); -int stricmp(const char*, const char*); -char* strcat(char* dest, const char* source); -char* strncpy(char* dest, const char* source, u32 n); -char* strcpy(char* dest, const char* source); -u32 strlen(const char* s); -int tolower(int); -int sprintf(char*, const char*, ...); -int printf(const char*, ...); -int snprintf(char*, u32, const char*, ...); -size_t vsnprintf(char* buffer, size_t buffer_size, const char* format, va_list args); -} - -#endif
\ No newline at end of file |
