From e023387d7b950e07bc6ecfb36f9ed6e419ff8654 Mon Sep 17 00:00:00 2001 From: Max Roncace Date: Tue, 20 Jan 2026 19:29:47 -0500 Subject: [PATCH] Add missing d_bg_* TUs (#3058) * Implement d_bg_s_capt_poly * Add d_bg_s_func * Ad d_bg_w_deform * Add empty source file for d_bg_w_hf --- configure.py | 6 +++--- include/d/d_bg_s_capt_poly.h | 18 ++++++++++++++++++ src/d/d_bg_s_capt_poly.cpp | 30 ++++++++++++++++++++++++++++++ src/d/d_bg_s_func.cpp | 6 ++++++ src/d/d_bg_w_deform.cpp | 7 +++++++ src/d/d_bg_w_hf.cpp | 11 +++++++++++ 6 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 include/d/d_bg_s_capt_poly.h create mode 100644 src/d/d_bg_s_capt_poly.cpp create mode 100644 src/d/d_bg_s_func.cpp create mode 100644 src/d/d_bg_w_deform.cpp create mode 100644 src/d/d_bg_w_hf.cpp diff --git a/configure.py b/configure.py index 56bcdde7c8b..ad863d72738 100755 --- a/configure.py +++ b/configure.py @@ -716,9 +716,9 @@ config.libs = [ Object(MatchingFor(ALL_GCN, "Shield"), "d/d_bg_plc.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_s.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_s_acch.cpp"), - Object(NonMatching, "d/d_bg_s_capt_poly.cpp"), + Object(MatchingFor(ALL_WII), "d/d_bg_s_capt_poly.cpp"), Object(MatchingFor(ALL_GCN, "Shield"), "d/d_bg_s_chk.cpp"), - Object(NonMatching, "d/d_bg_s_func.cpp"), + Object(MatchingFor("ShieldD"), "d/d_bg_s_func.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_s_gnd_chk.cpp"), # debug weak func order Object(MatchingFor(ALL_GCN), "d/d_bg_s_grp_pass_chk.cpp"), # debug weak func order Object(MatchingFor(ALL_GCN), "d/d_bg_s_lin_chk.cpp"), @@ -730,7 +730,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN, ALL_SHIELD), "d/d_bg_s_wtr_chk.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w_base.cpp"), - Object(NonMatching, "d/d_bg_w_deform.cpp"), + Object(MatchingFor("ShieldD"), "d/d_bg_w_deform.cpp"), Object(NonMatching, "d/d_bg_w_hf.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w_kcol.cpp"), Object(MatchingFor(ALL_GCN), "d/d_bg_w_sv.cpp"), diff --git a/include/d/d_bg_s_capt_poly.h b/include/d/d_bg_s_capt_poly.h new file mode 100644 index 00000000000..69a36ce247a --- /dev/null +++ b/include/d/d_bg_s_capt_poly.h @@ -0,0 +1,18 @@ +#ifndef _D_BG_S_CAPT_POLY_H +#define _D_BG_S_CAPT_POLY_H + +#include "d/d_bg_s_chk.h" +#include "SSystem/SComponent/c_m3d_g_aab.h" +#include "SSystem/SComponent/c_xyz.h" + +class dBgS_CaptPoly : public cBgS_Chk, public dBgS_Chk { +public: + dBgS_CaptPoly(); + ~dBgS_CaptPoly() {} + void Set(cXyz&, cXyz&); + + /* 0x24 */ cM3dGAab aab; + /* 0x48 */ int field_0x48; +}; + +#endif /* _D_BG_S_CAPT_POLY_H */ diff --git a/src/d/d_bg_s_capt_poly.cpp b/src/d/d_bg_s_capt_poly.cpp new file mode 100644 index 00000000000..287db6ef592 --- /dev/null +++ b/src/d/d_bg_s_capt_poly.cpp @@ -0,0 +1,30 @@ +#include "d/dolzel.h" // IWYU pragma: keep + +#include "d/d_bg_s_capt_poly.h" + +#include "JSystem/JUtility/JUTAssert.h" + +dBgS_CaptPoly::dBgS_CaptPoly() { + SetPolyPassChk(GetPolyPassChkInfo()); + SetGrpPassChk(GetGrpPassChkInfo()); + field_0x48 = 0; +} + +void dBgS_CaptPoly::Set(cXyz& min, cXyz& max) { + aab.Set(&min, &max); + + JUT_ASSERT(36, !(fpclassify(min.x) == FP_QNAN)); + JUT_ASSERT(37, !(fpclassify(min.y) == FP_QNAN)); + JUT_ASSERT(38, !(fpclassify(min.z) == FP_QNAN)); + JUT_ASSERT(39, !(fpclassify(max.x) == FP_QNAN)); + JUT_ASSERT(40, !(fpclassify(max.y) == FP_QNAN)); + // BUG: Assertion on wrong cXyz member (should be max.z) + JUT_ASSERT(41, !(fpclassify(max.y) == FP_QNAN)); + + JUT_ASSERT(45, -INF < min.x && min.x < INF); + JUT_ASSERT(46, -INF < min.y && min.y < INF); + JUT_ASSERT(47, -INF < min.z && min.z < INF); + JUT_ASSERT(48, -INF < max.x && max.x < INF); + JUT_ASSERT(49, -INF < max.y && max.y < INF); + JUT_ASSERT(50, -INF < max.z && max.z < INF); +} diff --git a/src/d/d_bg_s_func.cpp b/src/d/d_bg_s_func.cpp new file mode 100644 index 00000000000..602dda30971 --- /dev/null +++ b/src/d/d_bg_s_func.cpp @@ -0,0 +1,6 @@ +#include "d/dolzel.h" // IWYU pragma: keep + +static void dummy() { + ((dBgS*)NULL)->GetMtrlSndId(*(const cBgS_PolyInfo*)NULL); +} + diff --git a/src/d/d_bg_w_deform.cpp b/src/d/d_bg_w_deform.cpp new file mode 100644 index 00000000000..87d95c2af31 --- /dev/null +++ b/src/d/d_bg_w_deform.cpp @@ -0,0 +1,7 @@ +#include "d/dolzel.h" // IWYU pragma: keep + +static void dummy() { + ((J3DModel*)NULL)->offFlag(0); + ((J3DModel*)NULL)->onFlag(0); + ((J3DVertexBuffer*)NULL)->getCurrentVtxPos(); +} diff --git a/src/d/d_bg_w_hf.cpp b/src/d/d_bg_w_hf.cpp new file mode 100644 index 00000000000..d5b7f38e37d --- /dev/null +++ b/src/d/d_bg_w_hf.cpp @@ -0,0 +1,11 @@ +#include "d/dolzel.h" // IWYU pragma: keep + +#include "d/d_bg_w_sv.h" + +// need to pull in dBgWSv RTTI somehow but not sure if this is correct +class dBgWHf : public dBgWSv { +}; + +static void dummy() { + dBgWHf dummy; +}