summaryrefslogtreecommitdiff
path: root/include/m_Do
diff options
context:
space:
mode:
authorMax Roncace <me@caseif.net>2026-01-04 20:20:35 -0500
committerGitHub <noreply@github.com>2026-01-04 17:20:35 -0800
commitb72be3074adae802510f47643cac7bfc1fd6e9c7 (patch)
tree5e26ecdcb7fcf570ee63814fe4a61332bbf34495 /include/m_Do
parent7cf1038865d2ea49adf12c122889119bcea4af34 (diff)
m_Do_ext retail linked + debug improvements (#3009)
Diffstat (limited to 'include/m_Do')
-rw-r--r--include/m_Do/m_Do_ext.h508
-rw-r--r--include/m_Do/m_Do_main.h2
-rw-r--r--include/m_Do/m_Do_mtx.h3
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);