Debug build improvements (#1170)

This commit is contained in:
LagoLunatic
2026-08-16 12:09:07 -04:00
committed by GitHub
parent 80c7719636
commit e08dff3c73
26 changed files with 1445 additions and 33 deletions
@@ -81,7 +81,10 @@ public:
void setAnmIndex(u16 index) { mAnmIndex = index; }
bool getAnmFlag() const { return mAnmFlag; }
void setAnmFlag(bool flag) { mAnmFlag = flag; }
void setAnmTransform(J3DAnmTextureSRTKey* transform) { mAnmTransform = transform; }
void setAnmTransform(J3DAnmTextureSRTKey* transform) {
J3D_ASSERT(0, transform != NULL, "Error : null pointer.");
mAnmTransform = transform;
}
void calc(J3DTextureSRTInfo* pSRTInfo) const;
private:
+2
View File
@@ -30,6 +30,8 @@ public:
void setVisible(bool visible) { mVisible = visible; }
JUTFont* getFont() const { return mFont; }
void setCharColor(JUtility::TColor color) { mColor = color; };
static JUTDbPrint* sDebugPrint;
private:
+4
View File
@@ -15,6 +15,7 @@ class cCcD_TriAttr;
class cCcD_AabAttr;
class cCcD_CylAttr;
class cCcD_SphAttr;
typedef struct _GXColor GXColor;
enum cCcD_AtSPrm_e {
/* 0x01 */ cCcD_AtSPrm_Set_e = 0x01,
@@ -590,6 +591,9 @@ public:
virtual cCcD_GObjInf* GetGObjInf() { return NULL; }
virtual cCcD_ShapeAttr const* GetShapeAttr() const { return NULL; }
virtual cCcD_ShapeAttr* GetShapeAttr() { return NULL; }
#ifdef DEBUG
virtual void Draw(GXColor const&) {}
#endif
void ct() {
mFlags = 0;
}
+8
View File
@@ -20,6 +20,12 @@ public:
/* 0x2804 */ int mObjTgCount;
/* 0x2808 */ int mObjCoCount;
/* 0x280C */ int mObjCount;
#if DEBUG
int mObjAtDrawCount;
int mObjTgDrawCount;
int mObjCoDrawCount;
int mObjDrawCount;
#endif
/* 0x2810 */ cCcD_DivideArea mDivideArea;
/* 0x2850 vtable */
@@ -63,6 +69,8 @@ public:
virtual void SetCoGCorrectProc(cCcD_Obj*, cCcD_Obj*);
}; // Size = 0x2850
#if !DEBUG
STATIC_ASSERT(sizeof(cCcS) == 0x2854);
#endif
#endif /* C_CC_S_H */
+4
View File
@@ -165,4 +165,8 @@ inline f32 cM3d_LenSq(const Vec* a, const Vec* b) {
return VECSquareDistance(a, b);
}
#ifdef DEBUG
bool cM3d_UpMtx(const Vec& param_1, Mtx param_2);
#endif
#endif
+12
View File
@@ -513,6 +513,9 @@ public:
void MoveCTg(cXyz&);
virtual ~dCcD_Cyl() {}
dCcD_Cyl() {}
#ifdef DEBUG
virtual void Draw(GXColor const&);
#endif
}; // Size = 0x130
STATIC_ASSERT(sizeof(dCcD_Cyl) == 0x130);
@@ -525,6 +528,9 @@ public:
dCcD_Sph() {}
void Set(dCcD_SrcSph const&);
#ifdef DEBUG
virtual void Draw(GXColor const&);
#endif
void StartCAt(cXyz&);
void MoveCAt(cXyz&);
virtual cCcD_ShapeAttr* GetShapeAttr() { return (cCcD_ShapeAttr*)this; }
@@ -546,6 +552,9 @@ public:
void CalcTgVec();
virtual ~dCcD_Cps() {}
dCcD_Cps() {}
#ifdef DEBUG
virtual void Draw(GXColor const&);
#endif
}; // Size = 0x138
// Triangle
@@ -558,6 +567,9 @@ public:
virtual cCcD_ShapeAttr* GetShapeAttr() { return this; }
virtual ~dCcD_Tri() {}
dCcD_Tri() {}
#ifdef DEBUG
virtual void Draw(GXColor const&);
#endif
}; // Size: 0x150
dCcD_GObjInf* dCcD_GetGObjInf(cCcD_Obj* param_0);
+2
View File
@@ -62,6 +62,8 @@ public:
/* 0x2854 */ dCcMassS_Mng mMass_Mng;
}; // Size = 0x29F4
#if !DEBUG
STATIC_ASSERT(sizeof(dCcS) == 0x29F4);
#endif
#endif /* D_CC_D_CC_S_H */
+11
View File
@@ -911,6 +911,9 @@ public:
/* 0x1BFC0 */ dRes_control_c mResControl;
/* 0x1D1C0 */ u8 field_0x1d1c0;
/* 0x1D1C1 */ u8 mBrightness;
#ifdef DEBUG
u8 mIsDebugMode;
#endif
};
#if VERSION > VERSION_JPN
@@ -4414,6 +4417,14 @@ inline void dComIfG_TimerStop(int timer) {
inline u8 dComIfG_getBrightness() { return g_dComIfG_gameInfo.mBrightness; }
inline void dComIfG_setBrightness(u8 v) { g_dComIfG_gameInfo.mBrightness = v; }
inline BOOL dComIfG_isDebugMode() {
#ifdef DEBUG
return g_dComIfG_gameInfo.mIsDebugMode;
#else
return FALSE;
#endif
}
class scene_class;
BOOL dComIfG_resetToOpening(scene_class* i_scene);
+34
View File
@@ -0,0 +1,34 @@
#ifndef D_DEBUG_PAD_H
#define D_DEBUG_PAD_H
#include "JSystem/JUtility/TColor.h"
class dDebugPad_c {
public:
enum Mode_e {
MODE_CAMERA_e,
MODE_LIGHT_e,
MODE_WINDTEST_e,
MODE_SDCARD_e,
MODE_MAX_e,
};
dDebugPad_c();
bool Active() { return mIsActive; }
bool Update();
bool Report(int, int, JUtility::TColor, const char*, ...);
bool Enable(s32);
bool Trigger();
static const char mode_name[MODE_MAX_e][9];
/* 0x0 */ bool mIsActive;
/* 0x1 */ u8 mTrigger;
/* 0x4 */ s32 mMode;
};
extern dDebugPad_c dDebugPad;
#endif
+126
View File
@@ -0,0 +1,126 @@
#ifndef D_DEBUG_VIEWER_H
#define D_DEBUG_VIEWER_H
#include "dolphin/gx/GX.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "SSystem/SComponent/c_xyz.h"
#include "SSystem/SComponent/c_sxyz.h"
class J3DPacket;
J3DPacket* dDbVw_setDrawPacketList(J3DPacket* i_packet, int i_bufferType);
void dDbVw_deleteDrawPacketList();
void dDbVw_drawCube8p(int i_bufferType, cXyz* i_points, const GXColor& i_color);
void dDbVw_drawCube(int i_bufferType, cXyz& i_pos, cXyz& i_size, csXyz& i_angle, const GXColor& i_color);
void dDbVw_drawTriangle(int i_bufferType, cXyz* i_points, const GXColor& i_color, u8 i_clipZ);
void dDbVw_drawQuad(int i_bufferType, cXyz* i_points, const GXColor& i_color, u8 i_clipZ);
void dDbVw_drawQuad(int i_bufferType, cXyz* param_1, cXyz* param_2, cXyz* i_pos, s16 i_rotY, const GXColor& i_color, u8 i_clipZ);
void dDbVw_drawLine(int i_bufferType, cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width);
void dDbVw_drawArrow(int i_bufferType, cXyz& i_pos, cXyz& param_2, const GXColor& i_color, u8 i_clipZ, u8 i_width);
void dDbVw_drawPoint(int i_bufferType, cXyz& i_pos, const GXColor& i_color, u8 i_clipZ, u8 i_width);
void dDbVw_drawCircle(int i_bufferType, cXyz& i_pos, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_width);
void dDbVw_drawSphere(int i_bufferType, cXyz& i_pos, f32 i_size, const GXColor& i_color, u8 i_clipZ);
void dDbVw_drawCylinder(int i_bufferType, cXyz& i_pos, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ);
void dDbVw_drawCylinderM(int i_bufferType, Mtx i_mtx, const GXColor& i_color, u8 i_clipZ);
void dDbVw_drawCube8pXlu(cXyz* i_points, const GXColor& i_color);
inline void dDbVw_drawCube8pOpa(cXyz* i_points, const GXColor& i_color) {
dDbVw_drawCube8p(J3DSysDrawBuf_Opa, i_points, i_color);
}
inline void dDbVw_drawCube8pXlu(cXyz* i_points, const GXColor& i_color) {
dDbVw_drawCube8p(J3DSysDrawBuf_Xlu, i_points, i_color);
}
inline void dDbVw_drawCubeOpa(cXyz& i_pos, cXyz& i_size, csXyz& i_angle, const GXColor& i_color) {
dDbVw_drawCube(J3DSysDrawBuf_Opa, i_pos, i_size, i_angle, i_color);
}
inline void dDbVw_drawCubeXlu(cXyz& i_pos, cXyz& i_size, csXyz& i_angle, const GXColor& i_color) {
dDbVw_drawCube(J3DSysDrawBuf_Xlu, i_pos, i_size, i_angle, i_color);
}
inline void dDbVw_drawTriangleOpa(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawTriangle(J3DSysDrawBuf_Opa, i_points, i_color, i_clipZ);
}
inline void dDbVw_drawTriangleXlu(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawTriangle(J3DSysDrawBuf_Xlu, i_points, i_color, i_clipZ);
}
inline void dDbVw_drawQuadOpa(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawQuad(J3DSysDrawBuf_Opa, i_points, i_color, i_clipZ);
}
inline void dDbVw_drawQuadXlu(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawQuad(J3DSysDrawBuf_Xlu, i_points, i_color, i_clipZ);
}
inline void dDbVw_drawQuadOpa(cXyz* param_1, cXyz* param_2, cXyz* i_pos, s16 i_rotY, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawQuad(J3DSysDrawBuf_Opa, param_1, param_2, i_pos, i_rotY, i_color, i_clipZ);
}
inline void dDbVw_drawQuadXlu(cXyz* param_1, cXyz* param_2, cXyz* i_pos, s16 i_rotY, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawQuad(J3DSysDrawBuf_Xlu, param_1, param_2, i_pos, i_rotY, i_color, i_clipZ);
}
inline void dDbVw_drawLineOpa(cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width) {
dDbVw_drawLine(J3DSysDrawBuf_Opa, i_start, i_end, i_color, i_clipZ, i_width);
}
inline void dDbVw_drawLineXlu(cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width) {
dDbVw_drawLine(J3DSysDrawBuf_Xlu, i_start, i_end, i_color, i_clipZ, i_width);
}
inline void dDbVw_drawArrowOpa(cXyz& i_pos, cXyz& param_2, const GXColor& i_color, u8 i_clipZ, u8 i_width) {
dDbVw_drawArrow(J3DSysDrawBuf_Opa, i_pos, param_2, i_color, i_clipZ, i_width);
}
inline void dDbVw_drawArrowXlu(cXyz& i_pos, cXyz& param_2, const GXColor& i_color, u8 i_clipZ, u8 i_width) {
dDbVw_drawArrow(J3DSysDrawBuf_Xlu, i_pos, param_2, i_color, i_clipZ, i_width);
}
inline void dDbVw_drawPointOpa(cXyz& i_pos, const GXColor& i_color, u8 i_clipZ, u8 i_width) {
dDbVw_drawPoint(J3DSysDrawBuf_Opa, i_pos, i_color, i_clipZ, i_width);
}
inline void dDbVw_drawPointXlu(cXyz& i_pos, const GXColor& i_color, u8 i_clipZ, u8 i_width) {
dDbVw_drawPoint(J3DSysDrawBuf_Xlu, i_pos, i_color, i_clipZ, i_width);
}
inline void dDbVw_drawCircleOpa(cXyz& i_pos, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_width) {
dDbVw_drawCircle(J3DSysDrawBuf_Opa, i_pos, i_radius, i_color, i_clipZ, i_width);
}
inline void dDbVw_drawCircleXlu(cXyz& i_pos, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_width) {
dDbVw_drawCircle(J3DSysDrawBuf_Xlu, i_pos, i_radius, i_color, i_clipZ, i_width);
}
inline void dDbVw_drawSphereOpa(cXyz& i_pos, f32 i_size, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawSphere(J3DSysDrawBuf_Opa, i_pos, i_size, i_color, i_clipZ);
}
inline void dDbVw_drawSphereXlu(cXyz& i_pos, f32 i_size, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawSphere(J3DSysDrawBuf_Xlu, i_pos, i_size, i_color, i_clipZ);
}
inline void dDbVw_drawCylinderOpa(cXyz& i_pos, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawCylinder(J3DSysDrawBuf_Opa, i_pos, i_radius, i_height, i_color, i_clipZ);
}
inline void dDbVw_drawCylinderXlu(cXyz& i_pos, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawCylinder(J3DSysDrawBuf_Xlu, i_pos, i_radius, i_height, i_color, i_clipZ);
}
inline void dDbVw_drawCylinderMOpa(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawCylinderM(J3DSysDrawBuf_Opa, i_mtx, i_color, i_clipZ);
}
inline void dDbVw_drawCylinderMXlu(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ) {
dDbVw_drawCylinderM(J3DSysDrawBuf_Xlu, i_mtx, i_color, i_clipZ);
}
int dDbVw_Report(int x, int y, char const* string, ...);
#endif /* D_DEBUG_VIEWER_H */
+1
View File
@@ -17,6 +17,7 @@
#include "dolphin/gx/GXTev.h" // IWYU pragma: export
#include "dolphin/gx/GXTexture.h" // IWYU pragma: export
#include "dolphin/gx/GXTransform.h" // IWYU pragma: export
#include "dolphin/gx/GXDraw.h" // IWYU pragma: export
#include "dolphin/os/OSUtil.h"
+8
View File
@@ -8,6 +8,14 @@ extern "C" {
#endif
void GXDrawCylinder(u8 numEdges);
void GXDrawTorus(f32 rc, u8 numc, u8 numt);
void GXDrawSphere(u8 numMajor, u8 numMinor);
void GXDrawCube(void);
void GXDrawDodeca(void);
void GXDrawOctahedron(void);
void GXDrawIcosahedron(void);
void GXDrawSphere1(u8 depth);
u32 GXGenNormalTable(u8 depth, f32* table);
#ifdef __cplusplus
};
+1
View File
@@ -25,6 +25,7 @@
#include "dolphin/os/OSSync.h" // IWYU pragma: export
#include "dolphin/os/OSThread.h" // IWYU pragma: export
#include "dolphin/os/OSTime.h" // IWYU pragma: export
#include "dolphin/os/OSStopwatch.h" // IWYU pragma: export
#include "dolphin/os/OSUtil.h" // IWYU pragma: export
#ifdef __cplusplus
+21
View File
@@ -0,0 +1,21 @@
#ifndef OSSTOPWATCH_H
#define OSSTOPWATCH_H
struct OSStopwatch {
char * name;
long long total;
unsigned long hits;
long long min;
long long max;
long long last;
int running;
};
void OSInitStopwatch(struct OSStopwatch * sw, char * name);
void OSStartStopwatch(struct OSStopwatch * sw);
void OSStopStopwatch(struct OSStopwatch * sw);
long long OSCheckStopwatch(struct OSStopwatch * sw);
void OSResetStopwatch(struct OSStopwatch * sw);
void OSDumpStopwatch(struct OSStopwatch * sw);
#endif /* OSSTOPWATCH_H */
+3
View File
@@ -4,6 +4,9 @@
#include "JSystem/JUtility/JUTGamePad.h"
#include "SSystem/SComponent/c_API_controller_pad.h"
// Controller Ports 1 - 4
enum { PAD_1, PAD_2, PAD_3, PAD_4 };
extern JUTGamePad* g_mDoCPd_gamePad[4];
extern interface_of_controller_pad g_mDoCPd_cpadInfo[4];
+142 -12
View File
@@ -6,6 +6,7 @@
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/JUtility/JUTFont.h"
#include "JAZelAudio/JAIZelAnime.h"
#include "SSystem/SComponent/c_sxyz.h"
#include "d/d_kankyo.h"
class JKRArchive;
@@ -655,18 +656,147 @@ private:
/* 0x38 */ mDoExt_3Dline_c* mpLines;
};
// The following classes only appear in the debug maps and seem unused:
// mDoExt_ArrowPacket
// mDoExt_circlePacket
// mDoExt_cube8pPacket
// mDoExt_cubePacket
// mDoExt_cylinderMPacket
// mDoExt_cylinderPacket
// mDoExt_linePacket
// mDoExt_pointPacket
// mDoExt_quadPacket
// mDoExt_spherePacket
// mDoExt_trianglePacket
class mDoExt_cube8pPacket : public J3DPacket {
public:
mDoExt_cube8pPacket(cXyz* i_points, const GXColor& i_color);
virtual void draw();
virtual ~mDoExt_cube8pPacket() {}
/* 0x10 */ cXyz mPoints[8];
/* 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);
virtual void draw();
virtual ~mDoExt_trianglePacket() {}
/* 0x10 */ cXyz mPoints[3];
/* 0x34 */ GXColor mColor;
/* 0x38 */ u8 mClipZ;
};
class mDoExt_quadPacket : public J3DPacket {
public:
mDoExt_quadPacket(cXyz* i_points, const GXColor& i_color, u8 i_clipZ);
virtual void draw();
virtual ~mDoExt_quadPacket() {}
/* 0x10 */ cXyz mPoints[4];
/* 0x40 */ GXColor mColor;
/* 0x44 */ u8 mClipZ;
};
class mDoExt_linePacket : public J3DPacket {
public:
mDoExt_linePacket(cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width);
virtual void draw();
virtual ~mDoExt_linePacket() {}
/* 0x10 */ cXyz mStart;
/* 0x1C */ cXyz mEnd;
/* 0x28 */ GXColor mColor;
/* 0x2C */ u8 mClipZ;
/* 0x2D */ u8 mWidth;
};
class mDoExt_ArrowPacket : public J3DPacket {
public:
mDoExt_ArrowPacket(cXyz& i_position, cXyz& param_1, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth);
virtual void draw();
virtual ~mDoExt_ArrowPacket() {}
/* 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 {
public:
mDoExt_circlePacket(cXyz& i_position, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth);
virtual void draw();
virtual ~mDoExt_circlePacket() {}
/* 0x10 */ cXyz mPosition;
/* 0x1C */ f32 mRadius;
/* 0x20 */ GXColor mColor;
/* 0x24 */ u8 mClipZ;
/* 0x25 */ u8 mLineWidth;
};
class mDoExt_spherePacket : public J3DPacket {
public:
mDoExt_spherePacket(cXyz& i_position, f32 i_size, const GXColor& i_color, u8 i_clipZ);
virtual void draw();
virtual ~mDoExt_spherePacket() {}
/* 0x10 */ cXyz mPosition;
/* 0x1C */ f32 mSize;
/* 0x20 */ GXColor mColor;
/* 0x24 */ u8 mClipZ;
};
class mDoExt_cylinderPacket : public J3DPacket {
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;
};
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) {
i_modelData->getJointNodePointer(0)->setMtxCalc(NULL);