diff options
| author | Max Roncace <me@caseif.net> | 2026-01-04 20:20:35 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-04 17:20:35 -0800 |
| commit | b72be3074adae802510f47643cac7bfc1fd6e9c7 (patch) | |
| tree | 5e26ecdcb7fcf570ee63814fe4a61332bbf34495 /include/m_Do | |
| parent | 7cf1038865d2ea49adf12c122889119bcea4af34 (diff) | |
m_Do_ext retail linked + debug improvements (#3009)
Diffstat (limited to 'include/m_Do')
| -rw-r--r-- | include/m_Do/m_Do_ext.h | 508 | ||||
| -rw-r--r-- | include/m_Do/m_Do_main.h | 2 | ||||
| -rw-r--r-- | include/m_Do/m_Do_mtx.h | 3 |
3 files changed, 279 insertions, 234 deletions
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 00a8144bc3..14c3f36e37 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -2,8 +2,10 @@ #define M_DO_M_DO_EXT_H #include "JSystem/J3DGraphAnimator/J3DAnimation.h" +#include "JSystem/J3DGraphAnimator/J3DJoint.h" #include "JSystem/J3DGraphAnimator/J3DModel.h" #include "Z2AudioLib/Z2SoundObject.h" +#include "d/d_kankyo_tev_str.h" #include "m_Do/m_Do_audio.h" #include "m_Do/m_Do_mtx.h" @@ -16,16 +18,11 @@ struct ResTIMG; class Z2Creature; namespace mDoExt { + extern u8 CurrentHeapAdjustVerbose; extern u8 HeapAdjustVerbose; extern u8 HeapAdjustQuiet; }; -#if DEBUG -void DummyCheckHeap_init(); -void DummyCheckHeap_create(); -void DummyCheckHeap_destroy(); -#endif - class mDoExt_baseAnm { public: mDoExt_baseAnm() {} @@ -244,49 +241,98 @@ private: /* 0x4 */ J3DAnmTransform* mAnmTransform; }; // Size: 0x8 -class mDoExt_invJntPacket : public J3DPacket { +class mDoExt_McaMorfCallBack1_c { public: - mDoExt_invJntPacket() {} + virtual int execute(u16, J3DTransformInfo*) = 0; +}; - virtual void draw(); - virtual ~mDoExt_invJntPacket() {} +class mDoExt_McaMorfCallBack2_c { +public: + virtual void execute(u16) = 0; +}; - void setJoint(J3DModel* i_model, u16 param_1, u8 param_2) { - field_0x10 = i_model; - field_0x14 = param_1; - field_0x16 = param_2; +class mDoExt_MtxCalcOldFrame { +public: + void initOldFrameMorf(f32, u16, u16); + void decOldFrameMorfCounter(); + + mDoExt_MtxCalcOldFrame(J3DTransformInfo* i_transinf, Quaternion* i_quat) { + mOldFrameTransInfo = i_transinf; + mOldFrameQuaternion = i_quat; + mOldFrameRate = 0.0f; + mOldFrameFlg = false; + mOldFrameStartJoint = 0; + mOldFrameEndJoint = 0; + mOldFrameMorfCounter = 0.0f; + field_0x8 = 0.0f; + field_0x10 = 0.0f; + field_0x14 = 0.0f; } + u8 getOldFrameFlg() { return mOldFrameFlg; } + void onOldFrameFlg() { mOldFrameFlg = true; } + void offOldFrameFlg() { mOldFrameFlg = false; } + f32 getOldFrameRate() { return mOldFrameRate; } + J3DTransformInfo* getOldFrameTransInfo(int i) { return &mOldFrameTransInfo[i]; } + u16 getOldFrameStartJoint() { return mOldFrameStartJoint; } + u16 getOldFrameEndJoint() { return mOldFrameEndJoint; } + Quaternion* getOldFrameQuaternion(int i_no) { return &mOldFrameQuaternion[i_no]; } + f32 getOldFrameMorfCounter() { return mOldFrameMorfCounter; } + private: - /* 0x10 */ J3DModel* field_0x10; - /* 0x14 */ u16 field_0x14; - /* 0x16 */ u8 field_0x16; -}; // Size: 0x18 + /* 0x00 */ u8 mOldFrameFlg; + /* 0x04 */ f32 mOldFrameMorfCounter; + /* 0x08 */ f32 field_0x8; + /* 0x0C */ f32 mOldFrameRate; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ u16 mOldFrameStartJoint; + /* 0x1A */ u16 mOldFrameEndJoint; + /* 0x1C */ J3DTransformInfo* mOldFrameTransInfo; + /* 0x20 */ Quaternion* mOldFrameQuaternion; +}; // Size: 0x24 -class mDoExt_invisibleModel { -public: - mDoExt_invisibleModel() {} - int create(J3DModel* i_model, u8 param_1); - void entryJoint(cXyz*); - void entryDL(cXyz*); +struct mDoExt_MtxCalcAnmBlendTbl + : public J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya, J3DMtxCalcJ3DSysInitMaya> { + mDoExt_MtxCalcAnmBlendTbl(int num, mDoExt_AnmRatioPack* anmRatio) { + mNum = num; + mAnmRatio = anmRatio; + for (int i = 0; i < mNum; i++) { + if (!mAnmRatio[i].getAnmTransform()) { + mAnmRatio[i].setRatio(0.0f); + } + } + } - /* 0x0 */ J3DModel* mModel; - /* 0x4 */ mDoExt_invJntPacket* mpPackets; -}; + J3DAnmTransform* getAnm(int i) { return mAnmRatio[i].getAnmTransform(); } + f32 getRatio(int i) { return mAnmRatio[i].getRatio(); } -class mDoExt_zelAnime : public Z2SoundObjAnime { -public: - void* field_0x48; -}; + virtual ~mDoExt_MtxCalcAnmBlendTbl() {} + virtual void calc(); -class mDoExt_McaMorfCallBack1_c { -public: - virtual int execute(u16, J3DTransformInfo*) = 0; -}; + /* 0x4 */ int mNum; + /* 0x8 */ mDoExt_AnmRatioPack* mAnmRatio; +}; // Size: 0x0C -class mDoExt_McaMorfCallBack2_c { +STATIC_ASSERT(sizeof(mDoExt_MtxCalcAnmBlendTbl) == 0x0C); + +struct mDoExt_MtxCalcAnmBlendTblOld : public mDoExt_MtxCalcAnmBlendTbl { + mDoExt_MtxCalcAnmBlendTblOld(mDoExt_MtxCalcOldFrame* oldFrame, int num, + mDoExt_AnmRatioPack* anmRatio) + : mDoExt_MtxCalcAnmBlendTbl(num, anmRatio) { + mOldFrame = oldFrame; + } + virtual ~mDoExt_MtxCalcAnmBlendTblOld() {} + virtual void calc(); + + /* 0xC */ mDoExt_MtxCalcOldFrame* mOldFrame; +}; // Size: 0x10 + +STATIC_ASSERT(sizeof(mDoExt_MtxCalcAnmBlendTblOld) == 0x10); + +class mDoExt_zelAnime : public Z2SoundObjAnime { public: - virtual void execute(u16) = 0; + void* field_0x48; }; class mDoExt_morf_c @@ -329,6 +375,34 @@ public: /* 0x34 */ f32 field_0x34; }; +class mDoExt_McaMorf : public mDoExt_morf_c { +public: + mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*, + mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, + int, void*, u32, u32); + int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, + J3DAnmTransform*, int, f32, int, int, int, void*, u32, u32); + void setAnm(J3DAnmTransform* i_bck, int i_mode, f32 i_morf, f32 i_speed, f32 i_startF, f32 i_endF, void* i_bas); + u32 play(Vec*, u32, s8); + void entryDL(); + void modelCalc(); + void getTransform(u16, J3DTransformInfo*); + + virtual ~mDoExt_McaMorf(); + virtual void calc(); + + J3DModel* getModel() { return mpModel; } + +private: + /* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1; + /* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2; + /* 0x40 */ cXyz mTranslateScale; + /* 0x4C */ mDoExt_zelAnime* mpSound; + /* 0x50 */ bool field_0x50; + /* 0x51 */ bool field_0x51; + /* 0x52 */ bool field_0x52; +}; + class mDoExt_McaMorfSO : public mDoExt_morf_c { public: mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*, @@ -367,34 +441,6 @@ private: /* 0x55 */ bool mMorfNone; }; -class mDoExt_McaMorf : public mDoExt_morf_c { -public: - mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, - int, void*, u32, u32); - int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, - J3DAnmTransform*, int, f32, int, int, int, void*, u32, u32); - void setAnm(J3DAnmTransform* i_bck, int i_mode, f32 i_morf, f32 i_speed, f32 i_startF, f32 i_endF, void* i_bas); - u32 play(Vec*, u32, s8); - void entryDL(); - void modelCalc(); - void getTransform(u16, J3DTransformInfo*); - - virtual ~mDoExt_McaMorf(); - virtual void calc(); - - J3DModel* getModel() { return mpModel; } - -private: - /* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1; - /* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2; - /* 0x40 */ cXyz mTranslateScale; - /* 0x4C */ mDoExt_zelAnime* mpSound; - /* 0x50 */ bool field_0x50; - /* 0x51 */ bool field_0x51; - /* 0x52 */ bool field_0x52; -}; - class mDoExt_McaMorf2 : public mDoExt_morf_c { public: mDoExt_McaMorf2(J3DModelData*, mDoExt_McaMorfCallBack1_c*, @@ -429,85 +475,6 @@ private: /* 0x4C */ void* mpBas; }; -class mDoExt_MtxCalcOldFrame { -public: - void initOldFrameMorf(f32, u16, u16); - void decOldFrameMorfCounter(); - - mDoExt_MtxCalcOldFrame(J3DTransformInfo* i_transinf, Quaternion* i_quat) { - mOldFrameTransInfo = i_transinf; - mOldFrameQuaternion = i_quat; - mOldFrameRate = 0.0f; - mOldFrameFlg = false; - mOldFrameStartJoint = 0; - mOldFrameEndJoint = 0; - mOldFrameMorfCounter = 0.0f; - field_0x8 = 0.0f; - field_0x10 = 0.0f; - field_0x14 = 0.0f; - } - - u8 getOldFrameFlg() { return mOldFrameFlg; } - void onOldFrameFlg() { mOldFrameFlg = true; } - void offOldFrameFlg() { mOldFrameFlg = false; } - f32 getOldFrameRate() { return mOldFrameRate; } - J3DTransformInfo* getOldFrameTransInfo(int i) { return &mOldFrameTransInfo[i]; } - u16 getOldFrameStartJoint() { return mOldFrameStartJoint; } - u16 getOldFrameEndJoint() { return mOldFrameEndJoint; } - Quaternion* getOldFrameQuaternion(int i_no) { return &mOldFrameQuaternion[i_no]; } - f32 getOldFrameMorfCounter() { return mOldFrameMorfCounter; } - -private: - /* 0x00 */ u8 mOldFrameFlg; - /* 0x04 */ f32 mOldFrameMorfCounter; - /* 0x08 */ f32 field_0x8; - /* 0x0C */ f32 mOldFrameRate; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ f32 field_0x14; - /* 0x18 */ u16 mOldFrameStartJoint; - /* 0x1A */ u16 mOldFrameEndJoint; - /* 0x1C */ J3DTransformInfo* mOldFrameTransInfo; - /* 0x20 */ Quaternion* mOldFrameQuaternion; -}; // Size: 0x24 - -struct mDoExt_MtxCalcAnmBlendTbl - : public J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya, J3DMtxCalcJ3DSysInitMaya> { - mDoExt_MtxCalcAnmBlendTbl(int num, mDoExt_AnmRatioPack* anmRatio) { - mNum = num; - mAnmRatio = anmRatio; - for (int i = 0; i < mNum; i++) { - if (!mAnmRatio[i].getAnmTransform()) { - mAnmRatio[i].setRatio(0.0f); - } - } - } - - J3DAnmTransform* getAnm(int i) { return mAnmRatio[i].getAnmTransform(); } - f32 getRatio(int i) { return mAnmRatio[i].getRatio(); } - - virtual ~mDoExt_MtxCalcAnmBlendTbl() {} - virtual void calc(); - - /* 0x4 */ int mNum; - /* 0x8 */ mDoExt_AnmRatioPack* mAnmRatio; -}; // Size: 0x0C - -STATIC_ASSERT(sizeof(mDoExt_MtxCalcAnmBlendTbl) == 0x0C); - -struct mDoExt_MtxCalcAnmBlendTblOld : public mDoExt_MtxCalcAnmBlendTbl { - mDoExt_MtxCalcAnmBlendTblOld(mDoExt_MtxCalcOldFrame* oldFrame, int num, - mDoExt_AnmRatioPack* anmRatio) - : mDoExt_MtxCalcAnmBlendTbl(num, anmRatio) { - mOldFrame = oldFrame; - } - virtual ~mDoExt_MtxCalcAnmBlendTblOld() {} - virtual void calc(); - - /* 0xC */ mDoExt_MtxCalcOldFrame* mOldFrame; -}; // Size: 0x10 - -STATIC_ASSERT(sizeof(mDoExt_MtxCalcAnmBlendTblOld) == 0x10); - struct mDoExt_3Dline_field_0x10_c { s8 x; s8 y; @@ -534,52 +501,53 @@ public: /* 0x1C */ mDoExt_3Dline_field_0x18_c* field_0x1c; }; -class mDoExt_3DlineMat_c { -public: - virtual int getMaterialID() = 0; - virtual void setMaterial() = 0; - virtual void draw() = 0; +class mDoExt_offCupOnAupPacket : public J3DPacket { + virtual void draw(); + virtual ~mDoExt_offCupOnAupPacket(); +}; - /* 0x4 */ mDoExt_3DlineMat_c* field_0x4; +class mDoExt_onCupOffAupPacket : public J3DPacket { + virtual void draw(); + virtual ~mDoExt_onCupOffAupPacket(); }; -class mDoExt_3DlineMatSortPacket : public J3DPacket { +class mDoExt_invJntPacket : public J3DPacket { public: - mDoExt_3DlineMatSortPacket() { mp3DlineMat = NULL; } - - void reset() { mp3DlineMat = NULL; } - void setMatDark(mDoExt_3DlineMat_c* i_mat) { setMat(i_mat); } + mDoExt_invJntPacket() {} - void setMat(mDoExt_3DlineMat_c*); virtual void draw(); - virtual ~mDoExt_3DlineMatSortPacket() {} + virtual ~mDoExt_invJntPacket() {} + + void setJoint(J3DModel* i_model, u16 param_1, u8 param_2) { + field_0x10 = i_model; + field_0x14 = param_1; + field_0x16 = param_2; + } private: - /* 0x10 */ mDoExt_3DlineMat_c* mp3DlineMat; -}; + /* 0x10 */ J3DModel* field_0x10; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u8 field_0x16; +}; // Size: 0x18 -class dKy_tevstr_c; -class mDoExt_3DlineMat1_c : public mDoExt_3DlineMat_c { +class mDoExt_invisibleModel { public: - int init(u16, u16, ResTIMG*, int); - void update(int, GXColor&, dKy_tevstr_c*); - void update(int, f32, GXColor&, u16, dKy_tevstr_c*); - int getMaterialID() { return 1; } - void setMaterial(); - void draw(); + mDoExt_invisibleModel() {} + int create(J3DModel* i_model, u8 param_1); + void entryJoint(cXyz*); + void entryDL(cXyz*); - cXyz* getPos(int i_idx) { return mpLines[i_idx].field_0x0; } - f32* getSize(int i_idx) { return mpLines[i_idx].field_0x4; } + /* 0x0 */ J3DModel* mModel; + /* 0x4 */ mDoExt_invJntPacket* mpPackets; +}; -private: - /* 0x08 */ GXTexObj mTextureObject; - /* 0x28 */ GXColor mColor; - /* 0x2C */ dKy_tevstr_c* mpTevStr; - /* 0x30 */ u16 mNumLines; - /* 0x32 */ u16 field_0x32; - /* 0x34 */ u16 field_0x34; - /* 0x36 */ u8 mIsDrawn; - /* 0x38 */ mDoExt_3Dline_c* mpLines; +class mDoExt_3DlineMat_c { +public: + virtual int getMaterialID() = 0; + virtual void setMaterial() = 0; + virtual void draw() = 0; + + /* 0x4 */ mDoExt_3DlineMat_c* field_0x4; }; class mDoExt_3DlineMat0_c : public mDoExt_3DlineMat_c { @@ -605,44 +573,49 @@ private: /* 0x18 */ mDoExt_3Dline_c* field_0x18; }; -class mDoExt_cubePacket : public J3DPacket { +class dKy_tevstr_c; +class mDoExt_3DlineMat1_c : public mDoExt_3DlineMat_c { public: - mDoExt_cubePacket(cXyz& i_position, cXyz& i_size, csXyz& i_angle, const GXColor& i_color); + int init(u16, u16, ResTIMG*, int); + void update(int, GXColor&, dKy_tevstr_c*); + void update(int, f32, GXColor&, u16, dKy_tevstr_c*); + int getMaterialID() { return 1; } + void setMaterial(); + void draw(); - virtual void draw(); - virtual ~mDoExt_cubePacket() {} + cXyz* getPos(int i_idx) { return mpLines[i_idx].field_0x0; } + f32* getSize(int i_idx) { return mpLines[i_idx].field_0x4; } - /* 0x10 */ cXyz mPosition; - /* 0x1C */ cXyz mSize; - /* 0x28 */ csXyz mAngle; - /* 0x2E */ GXColor mColor; +private: + /* 0x08 */ GXTexObj mTextureObject; + /* 0x28 */ GXColor mColor; + /* 0x2C */ dKy_tevstr_c* mpTevStr; + /* 0x30 */ u16 mNumLines; + /* 0x32 */ u16 field_0x32; + /* 0x34 */ u16 field_0x34; + /* 0x36 */ u8 mIsDrawn; + /* 0x38 */ mDoExt_3Dline_c* mpLines; }; -class mDoExt_cylinderPacket : public J3DPacket { +class mDoExt_3DlineMat2_c : public mDoExt_3DlineMat_c { public: - mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ); - - virtual void draw(); - virtual ~mDoExt_cylinderPacket() {} - - /* 0x10 */ cXyz mPosition; - /* 0x1C */ f32 mRadius; - /* 0x20 */ f32 mHeight; - /* 0x24 */ GXColor mColor; - /* 0x28 */ u8 mClipZ; + int getMaterialID() { return 2; } + void setMaterial(); }; -class mDoExt_spherePacket : public J3DPacket { +class mDoExt_3DlineMatSortPacket : public J3DPacket { public: - mDoExt_spherePacket(cXyz& i_position, f32 i_size, const GXColor& i_color, u8 i_clipZ); + mDoExt_3DlineMatSortPacket() { mp3DlineMat = NULL; } + + void reset() { mp3DlineMat = NULL; } + void setMatDark(mDoExt_3DlineMat_c* i_mat) { setMat(i_mat); } + void setMat(mDoExt_3DlineMat_c*); virtual void draw(); - virtual ~mDoExt_spherePacket() {} + virtual ~mDoExt_3DlineMatSortPacket() {} - /* 0x10 */ cXyz mPosition; - /* 0x1C */ f32 mSize; - /* 0x20 */ GXColor mColor; - /* 0x24 */ u8 mClipZ; +private: + /* 0x10 */ mDoExt_3DlineMat_c* mp3DlineMat; }; class mDoExt_cube8pPacket : public J3DPacket { @@ -656,6 +629,19 @@ public: /* 0x70 */ GXColor mColor; }; +class mDoExt_cubePacket : public J3DPacket { +public: + mDoExt_cubePacket(cXyz& i_position, cXyz& i_size, csXyz& i_angle, const GXColor& i_color); + + virtual void draw(); + virtual ~mDoExt_cubePacket() {} + + /* 0x10 */ cXyz mPosition; + /* 0x1C */ cXyz mSize; + /* 0x28 */ csXyz mAngle; + /* 0x2E */ GXColor mColor; +}; + class mDoExt_trianglePacket : public J3DPacket { public: mDoExt_trianglePacket(cXyz* i_points, const GXColor& i_color, u8 i_clipZ); @@ -694,16 +680,31 @@ public: /* 0x2D */ u8 mWidth; }; -class mDoExt_cylinderMPacket : public J3DPacket { +class mDoExt_ArrowPacket : public J3DPacket { public: - mDoExt_cylinderMPacket(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ); + mDoExt_ArrowPacket(cXyz& i_position, cXyz& param_1, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth); virtual void draw(); - virtual ~mDoExt_cylinderMPacket() {} + virtual ~mDoExt_ArrowPacket() {} - /* 0x10 */ Mtx mMatrix; - /* 0x40 */ GXColor mColor; - /* 0x44 */ u8 mClipZ; + /* 0x10 */ cXyz mStart; + /* 0x1C */ cXyz mEnd; + /* 0x28 */ GXColor mColor; + /* 0x2C */ u8 mClipZ; + /* 0x2D */ u8 mLineWidth; +}; + +class mDoExt_pointPacket : public J3DPacket { +public: + mDoExt_pointPacket(cXyz& i_position, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth); + + virtual void draw(); + virtual ~mDoExt_pointPacket() {} + + /* 0x10 */ cXyz mPosition; + /* 0x1C */ GXColor mColor; + /* 0x20 */ u8 mClipZ; + /* 0x21 */ u8 mLineWidth; }; class mDoExt_circlePacket : public J3DPacket { @@ -720,31 +721,43 @@ public: /* 0x25 */ u8 mLineWidth; }; -class mDoExt_ArrowPacket : public J3DPacket { +class mDoExt_spherePacket : public J3DPacket { public: - mDoExt_ArrowPacket(cXyz& i_position, cXyz& param_1, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth); + mDoExt_spherePacket(cXyz& i_position, f32 i_size, const GXColor& i_color, u8 i_clipZ); virtual void draw(); - virtual ~mDoExt_ArrowPacket() {} + virtual ~mDoExt_spherePacket() {} - /* 0x10 */ cXyz mStart; - /* 0x1C */ cXyz mEnd; - /* 0x28 */ GXColor mColor; - /* 0x2C */ u8 mClipZ; - /* 0x2D */ u8 mLineWidth; + /* 0x10 */ cXyz mPosition; + /* 0x1C */ f32 mSize; + /* 0x20 */ GXColor mColor; + /* 0x24 */ u8 mClipZ; }; -class mDoExt_pointPacket : public J3DPacket { +class mDoExt_cylinderPacket : public J3DPacket { public: - mDoExt_pointPacket(cXyz& i_position, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth); + mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ); virtual void draw(); - virtual ~mDoExt_pointPacket() {} + virtual ~mDoExt_cylinderPacket() {} /* 0x10 */ cXyz mPosition; - /* 0x1C */ GXColor mColor; - /* 0x20 */ u8 mClipZ; - /* 0x21 */ u8 mLineWidth; + /* 0x1C */ f32 mRadius; + /* 0x20 */ f32 mHeight; + /* 0x24 */ GXColor mColor; + /* 0x28 */ u8 mClipZ; +}; + +class mDoExt_cylinderMPacket : public J3DPacket { +public: + mDoExt_cylinderMPacket(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ); + + virtual void draw(); + virtual ~mDoExt_cylinderMPacket() {} + + /* 0x10 */ Mtx mMatrix; + /* 0x40 */ GXColor mColor; + /* 0x44 */ u8 mClipZ; }; inline void mDoExt_bckAnmRemove(J3DModelData* i_modelData) { @@ -757,6 +770,8 @@ void mDoExt_destroySolidHeap(JKRSolidHeap* i_heap); u32 mDoExt_adjustSolidHeap(JKRSolidHeap* i_heap); void mDoExt_restoreCurrentHeap(); JKRExpHeap* mDoExt_getGameHeap(); +void mDoExt_setSafeGameHeapSize(); +size_t mDoExt_getSafeGameHeapSize(); void mDoExt_destroySolidHeap(JKRSolidHeap* i_heap); JKRHeap* mDoExt_setCurrentHeap(JKRHeap* i_heap); JKRExpHeap* mDoExt_getArchiveHeap(); @@ -768,13 +783,13 @@ JKRExpHeap* mDoExt_getZeldaHeap(); JKRExpHeap* mDoExt_getJ2dHeap(); JKRExpHeap* mDoExt_getHostIOHeap(); JKRExpHeap* mDoExt_getDbPrintHeap(); -JKRExpHeap* mDoExt_createDbPrintHeap(u32 heapSize, JKRHeap* i_heap); -JKRAssertHeap* mDoExt_createAssertHeap(JKRHeap* i_heap); -JKRExpHeap* mDoExt_createCommandHeap(u32 heapSize, JKRHeap* i_heap); -JKRExpHeap* mDoExt_createArchiveHeap(u32 heapSize, JKRHeap* i_heap); -JKRExpHeap* mDoExt_createJ2dHeap(u32 heapSize, JKRHeap* i_heap); -JKRExpHeap* mDoExt_createZeldaHeap(u32 heapSize, JKRHeap* i_heap); -JKRExpHeap* mDoExt_createGameHeap(u32 heapSize, JKRHeap* i_heap); +JKRExpHeap* mDoExt_createDbPrintHeap(u32 heapSize, JKRHeap* parentHeap); +JKRAssertHeap* mDoExt_createAssertHeap(JKRHeap* parentHeap); +JKRExpHeap* mDoExt_createCommandHeap(u32 heapSize, JKRHeap* parentHeap); +JKRExpHeap* mDoExt_createArchiveHeap(u32 heapSize, JKRHeap* parentHeap); +JKRExpHeap* mDoExt_createJ2dHeap(u32 heapSize, JKRHeap* parentHeap); +JKRExpHeap* mDoExt_createZeldaHeap(u32 heapSize, JKRHeap* parentHeap); +JKRExpHeap* mDoExt_createGameHeap(u32 heapSize, JKRHeap* parentHeap); JKRSolidHeap* mDoExt_createSolidHeapToCurrent(JKRHeap** o_heap, u32 i_size, JKRHeap* i_parent, u32 i_alignment); JKRSolidHeap* mDoExt_createSolidHeapToCurrent(u32 i_size, JKRHeap* i_parent, u32 i_alignment); @@ -810,9 +825,10 @@ void mDoExt_setupShareTexture(J3DModelData* i_modelData, J3DModelData* i_shareMo void mDoExt_btkAnmRemove(J3DModelData* i_modelData); void mDoExt_modelTexturePatch(J3DModelData* i_modelData); -#if VERSION == VERSION_SHIELD_DEBUG -s32 mDoExt_getSafeZeldaHeapSize(); -void mDoExt_addSafeZeldaHeapSize(s32); +void mDoExt_setSafeZeldaHeapSize(); +void mDoExt_addSafeZeldaHeapSize(intptr_t); +intptr_t mDoExt_getSafeZeldaHeapSize(); +#if DEBUG JKRHeap* mDoExt_createHostIOHeap(u32, JKRHeap*); #endif @@ -822,9 +838,33 @@ JUTFont* mDoExt_getSubFont(); JUTFont* mDoExt_getRubyFont(); void mDoExt_removeSubFont(); +class DummyCheckHeap : public JKRDisposer { +public: + DummyCheckHeap(); + ~DummyCheckHeap(); + int isVirgin(); + JKRHeap* getHeap(); + void setHeap(JKRHeap*); + + /* 0x18 */ void* mAlloc; + /* 0x18 */ int mSize; + /* 0x20 */ JKRHeap* mHeap; +}; + +int DummyCheckHeap_init(); + +int DummyCheckHeap_create(); + +void DummyCheckHeap_destroy(); + +int DummyCheckHeap_isVirgin(); + +void DummyCheckHeap_check(); + extern JKRExpHeap* zeldaHeap; extern JKRExpHeap* gameHeap; extern JKRExpHeap* archiveHeap; extern JKRExpHeap* commandHeap; +extern DummyCheckHeap* dch; #endif /* M_DO_M_DO_EXT_H */ diff --git a/include/m_Do/m_Do_main.h b/include/m_Do/m_Do_main.h index 1229687094..99dc3876b8 100644 --- a/include/m_Do/m_Do_main.h +++ b/include/m_Do/m_Do_main.h @@ -6,6 +6,8 @@ class JKRExpHeap; +extern OSThread mainThread; + void version_check(); s32 LOAD_COPYDATE(void*); diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index 793416ca4e..01085fb9a0 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -5,6 +5,9 @@ #include "SSystem/SComponent/c_xyz.h" #include <dolphin/mtx.h> +extern u8 g_printCurrentHeapDebug; +extern u8 g_printOtherHeapDebug; + void mDoMtx_XYZrotS(Mtx, s16, s16, s16); void mDoMtx_XYZrotM(Mtx, s16, s16, s16); void mDoMtx_ZXYrotS(Mtx, s16, s16, s16); |
