diff options
| author | Max Roncace <me@caseif.net> | 2026-01-02 11:24:40 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-02 08:24:40 -0800 |
| commit | 7cf1038865d2ea49adf12c122889119bcea4af34 (patch) | |
| tree | dddcede70cc116392e77effd8831f0168dc72e76 /include | |
| parent | c3213e0c67cb60974569b4f20e84d85816b9ba8b (diff) | |
d_particle debug improvements (#3010)
Diffstat (limited to 'include')
| -rw-r--r-- | include/JSystem/JGeometry.h | 28 | ||||
| -rw-r--r-- | include/JSystem/JParticle/JPAEmitter.h | 22 | ||||
| -rw-r--r-- | include/d/d_particle.h | 76 | ||||
| -rw-r--r-- | include/d/dolzel_base.pch | 1 | ||||
| -rw-r--r-- | include/m_Do/m_Do_mtx.h | 4 |
5 files changed, 64 insertions, 67 deletions
diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h index f080c91f72..c90d3bdc81 100644 --- a/include/JSystem/JGeometry.h +++ b/include/JSystem/JGeometry.h @@ -119,9 +119,9 @@ struct TVec3<s16> { } void set(s16 x_, s16 y_, s16 z_) { - x = x_; - y = y_; - z = z_; + x = (s16)x_; + y = (s16)y_; + z = (s16)z_; } }; @@ -175,17 +175,17 @@ inline void mulInternal(__REGISTER const f32* a, __REGISTER const f32* b, __REGI template <> struct TVec3<f32> : public Vec { - inline TVec3(const Vec& i_vec) { + TVec3(const Vec& i_vec) { setTVec3f(&i_vec.x, &x); } - inline TVec3(const TVec3<f32>& i_vec) { + TVec3(const TVec3<f32>& i_vec) { setTVec3f(&i_vec.x, &x); } template<class U> TVec3(U x, U y, U z) { - set(x, y, z); + set((U)x, (U)y, (U)z); } TVec3() {} @@ -195,9 +195,9 @@ struct TVec3<f32> : public Vec { template<class U> void set(const TVec3<U>& other) { - x = other.x; - y = other.y; - z = other.z; + x = (U)other.x; + y = (U)other.y; + z = (U)other.z; } void set(const Vec& other) { @@ -208,9 +208,9 @@ struct TVec3<f32> : public Vec { template<class U> void set(U x_, U y_, U z_) { - x = x_; - y = y_; - z = z_; + x = (U)x_; + y = (U)y_; + z = (U)z_; } inline void add(const TVec3<f32>& b) { @@ -359,9 +359,9 @@ struct TVec3<f32> : public Vec { } void cross(const TVec3<f32>& a, const TVec3<f32>& b) { - VECCrossProduct(a, b, *this); + PSVECCrossProduct(&a, &b, this); } - + f32 setLength(f32 len) { f32 sq = squared(); if (sq <= TUtil<f32>::epsilon()) { diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index ebf82df33e..9ce16e8f22 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -79,8 +79,6 @@ public: virtual void executeAfter(JPABaseEmitter*) {} virtual void draw(JPABaseEmitter*) {} virtual void drawAfter(JPABaseEmitter*) {} - - //~JPAEmitterCallBack(); }; enum { @@ -160,34 +158,16 @@ public: mGlobalPScl.y = height; } void setGlobalParticleScale(const JGeometry::TVec3<f32>& scale) { - mGlobalPScl.set(scale.x, scale.y); + mGlobalPScl.set((f32)scale.x, (f32)scale.y); } void setGlobalParticleScale(f32 scaleX, f32 scaleY) { mGlobalPScl.set(scaleX, scaleY); } void getGlobalParticleScale(JGeometry::TVec3<f32>& scale) const { - //TODO: Possible fakematch. Debug and Wii indicate TVec3::set, but using it breaks regalloc - // in dPa_gen_b_light8PcallBack::draw on GCN (where the call to set would normally be - // inlined). -#if PLATFORM_GCN - scale.x = mGlobalPScl.x; - scale.y = mGlobalPScl.y; - scale.z = 1.0f; -#else scale.set(mGlobalPScl.x, mGlobalPScl.y, 1.0f); -#endif } void getGlobalParticleScale(JGeometry::TVec3<f32>* scale) const { - //TODO: Possible fakematch. Debug and Wii indicate TVec3::set, but using it breaks regalloc - // in dPa_gen_b_light8PcallBack::draw on GCN (where the call to set would normally be - // inlined). -#if PLATFORM_GCN - scale->x = mGlobalPScl.x; - scale->y = mGlobalPScl.y; - scale->z = 1.0f; -#else scale->set(mGlobalPScl.x, mGlobalPScl.y, 1.0f); -#endif } void setGlobalScale(const JGeometry::TVec3<f32>& scale) { mGlobalScl.set(scale); diff --git a/include/d/d_particle.h b/include/d/d_particle.h index dd90e5735a..a57a6918b7 100644 --- a/include/d/d_particle.h +++ b/include/d/d_particle.h @@ -18,7 +18,7 @@ class JKRSolidHeap; class dKy_tevstr_c; class fopAc_ac_c; -class dPa_levelEcallBack : public JPAEmitterCallBack { +class dPa_levelEcallBack : public JPAEmitterCallBack { public: virtual ~dPa_levelEcallBack() { cleanup(); } virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) = 0; @@ -55,18 +55,17 @@ public: /* 0x10 */ dPa_simpleData_c* mData; }; // Size: 0x14 -class dPa_modelPcallBack : public JPAParticleCallBack { -public: - virtual ~dPa_modelPcallBack() {} - virtual void draw(JPABaseEmitter*, JPABaseParticle*); -}; - class dPa_windPcallBack : public JPAParticleCallBack { public: virtual ~dPa_windPcallBack() {} virtual void execute(JPABaseEmitter*, JPABaseParticle*); }; +class dPa_modelPcallBack : public JPAParticleCallBack { +public: + virtual void draw(JPABaseEmitter*, JPABaseParticle*); +}; + class dPa_modelEcallBack : public dPa_levelEcallBack { public: struct model_c { @@ -127,7 +126,9 @@ public: class dPa_selectTexEcallBack : public dPa_levelEcallBack { public: - dPa_selectTexEcallBack(u8 param_0) { field_0x4 = param_0; } + dPa_selectTexEcallBack(u8 param_0) { + field_0x4 = (u8)param_0; + } virtual ~dPa_selectTexEcallBack() {} virtual void draw(JPABaseEmitter*); @@ -136,6 +137,20 @@ public: /* 0x4 */ u8 field_0x4; }; +class dPa_setColorEcallBack : public dPa_levelEcallBack { +public: + dPa_setColorEcallBack(const GXColor& color) { mColor = color; } + + virtual ~dPa_setColorEcallBack() {} + virtual void draw(JPABaseEmitter* i_emitter) { + UNUSED(i_emitter); + GXSetTevColor(GX_TEVREG1, mColor); + } + virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8) {} + + /* 0x4 */ GXColor mColor; +}; + class dPa_followEcallBack : public dPa_levelEcallBack { public: dPa_followEcallBack(u8 param_0 = 0, u8 param_1 = 0); @@ -149,7 +164,7 @@ public: void remove() { end(); } JPABaseEmitter* getEmitter() { return mpEmitter; } - bool isEnd() { + int isEnd() { return field_0x10 & 1; } @@ -171,25 +186,32 @@ public: class dPa_light8EcallBack : public dPa_levelEcallBack { public: - virtual ~dPa_light8EcallBack() {} virtual void draw(JPABaseEmitter*); - virtual void drawAfter(JPABaseEmitter*) { dPa_cleanupGX(); } + virtual void drawAfter(JPABaseEmitter* i_emitter) { + UNUSED(i_emitter); + dPa_cleanupGX(); + } virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8); }; class dPa_gen_b_light8EcallBack : public dPa_levelEcallBack { public: - virtual ~dPa_gen_b_light8EcallBack() {} virtual void draw(JPABaseEmitter*); - virtual void drawAfter(JPABaseEmitter*) { dPa_cleanupGX(); } + virtual void drawAfter(JPABaseEmitter* i_emitter) { + UNUSED(i_emitter); + dPa_cleanupGX(); + } virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8); }; class dPa_gen_d_light8EcallBack : public dPa_levelEcallBack { public: - virtual ~dPa_gen_d_light8EcallBack() {} virtual void draw(JPABaseEmitter*); - virtual void drawAfter(JPABaseEmitter*) { dPa_cleanupGX(); } + virtual void drawAfter(JPABaseEmitter* i_emitter) { + UNUSED(i_emitter); + dPa_cleanupGX(); + } + virtual void execute(JPABaseEmitter*); virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8); }; @@ -247,17 +269,6 @@ private: /* 0x14 */ cXyz const* field_0x14; }; -class dPa_setColorEcallBack : public dPa_levelEcallBack { -public: - dPa_setColorEcallBack(const GXColor& color) { mColor = color; } - - virtual ~dPa_setColorEcallBack() {} - virtual void draw(JPABaseEmitter*) { GXSetTevColor(GX_TEVREG1, mColor); } - virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8) {} - - /* 0x4 */ GXColor mColor; -}; - class dPa_simpleData_c { public: ~dPa_simpleData_c(); @@ -295,10 +306,10 @@ public: void onEventMove() { mStatus |= 2; } void offEventMove() { mStatus &= ~2; } #endif - bool isEventMove() { return mStatus & 2; } + BOOL isEventMove() { return mStatus & 2; } void offActive() { mStatus &= (u8)~1; } - bool isActive() { return mStatus & 1; } + BOOL isActive() { return mStatus & 1; } u16 getNameId() { return mNameId; } dPa_levelEcallBack* getCallback() { return mCallback; } @@ -434,7 +445,7 @@ public: } static JPAEmitterManager* getEmitterManager() { return mEmitterMng; } - static int getEmitterNum() { return mEmitterMng->getEmitterNumber(); }; + int getEmitterNum() { return mEmitterMng->getEmitterNumber(); }; static dPa_light8PcallBack* getLight8PcallBack() { return &mLight8PcallBack; @@ -498,10 +509,11 @@ private: /* 0x019 */ u8 field_0x19; /* 0x01A */ u8 field_0x1a; /* 0x01B */ u8 field_0x1b; +#if DEBUG + /* 0x01C */ dPa_simpleEcallBack field_0x1c[48]; +#else /* 0x01C */ dPa_simpleEcallBack field_0x1c[25]; - #if DEBUG - u8 unk_0x210[0x1CC]; - #endif +#endif /* 0x210 */ level_c field_0x210; #if DEBUG u8 mSceneCount; diff --git a/include/d/dolzel_base.pch b/include/d/dolzel_base.pch index 0c900c21a1..46c707b504 100644 --- a/include/d/dolzel_base.pch +++ b/include/d/dolzel_base.pch @@ -30,6 +30,7 @@ #include "JSystem/J2DGraph/J2DPictureEx.h" // IWYU pragma: export #include "JSystem/J2DGraph/J2DScreen.h" // IWYU pragma: export #include "JSystem/J2DGraph/J2DTextBoxEx.h" // IWYU pragma: export +#include "JSystem/JParticle/JPAEmitter.h" // IWYU pragma: export #include "JSystem/JUtility/JUTFont.h" // IWYU pragma: export #include "JSystem/JUtility/JUTReport.h" // IWYU pragma: export diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index a85f7e9b4f..793416ca4e 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -146,6 +146,10 @@ inline void mDoMtx_quat(Mtx m, const Quaternion* q) { MTXQuat(m, q); } +inline void cMtx_identity(Mtx mtx) { + mDoMtx_identity(mtx); +} + inline void cMtx_inverse(const Mtx a, Mtx b) { mDoMtx_inverse(a, b); } |
