From 3c1323cf0dce40fa4bdf04a0a6b2f466c1be6eb5 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Sun, 30 Nov 2025 00:32:11 -0500 Subject: [PATCH] d_a_npc_moir OK (#2894) * d_a_npc_moir OK * Remove old comment --- configure.py | 2 +- src/d/actor/d_a_npc_moir.cpp | 8 +++++++- src/d/actor/d_a_obj_dust.cpp | 1 - 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/configure.py b/configure.py index 74e7b85029d..c70f7d28f9e 100755 --- a/configure.py +++ b/configure.py @@ -1911,7 +1911,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_npc_midp"), ActorRel(MatchingFor(ALL_GCN, "ShieldD"), "d_a_npc_mk"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_moi"), - ActorRel(NonMatching, "d_a_npc_moir"), + ActorRel(MatchingFor(ALL_GCN), "d_a_npc_moir"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_myna2"), ActorRel(MatchingFor(ALL_GCN), "d_a_npc_ne"), ActorRel(MatchingFor(ALL_GCN, "ShieldD"), "d_a_npc_p2"), diff --git a/src/d/actor/d_a_npc_moir.cpp b/src/d/actor/d_a_npc_moir.cpp index da3acb45bf0..77a4a5f507a 100644 --- a/src/d/actor/d_a_npc_moir.cpp +++ b/src/d/actor/d_a_npc_moir.cpp @@ -1962,8 +1962,14 @@ void daNpcMoiR_c::checkHeadGear() { } } +static void dummy() { + // This dummy function is needed to fix JMath::TSinCosTable::sinShort not being inlined in daNpcMoiR_c::ctrlBtk. + // It's unclear why that happens, or why an unused dummy function calling the inline fixes it. + // Seems like a compiler bug of some sort. + cM_ssin(0); +} + /* 80A8210C-80A821E0 00608C 00D4+00 1/0 0/0 0/0 .text ctrlBtk__11daNpcMoiR_cFv */ -// NONMATCHING inlining issues BOOL daNpcMoiR_c::ctrlBtk() { if (mpMatAnm != NULL) { J3DAnmTextureSRTKey* anm = NULL; diff --git a/src/d/actor/d_a_obj_dust.cpp b/src/d/actor/d_a_obj_dust.cpp index 7a9e3250d55..5271e916f4f 100644 --- a/src/d/actor/d_a_obj_dust.cpp +++ b/src/d/actor/d_a_obj_dust.cpp @@ -208,7 +208,6 @@ int daObjDust_c::Create() { } /* 80BE2B30-80BE2E9C 0008F0 036C+00 1/0 0/0 0/0 .text Execute__11daObjDust_cFPPA3_A4_f */ -// NONMATCHING somehow this needs to not inline TSinCosTable<13,f32>::sinShort int daObjDust_c::Execute(Mtx** i_mtx) { fopAcM_seStartLevel(this, Z2SE_OBJ_FLOATBOARD, 0); daPy_py_c* player = daPy_getPlayerActorClass();