summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2026-03-08 22:05:58 -0400
committerelijah-thomas774 <elijahthomas774@gmail.com>2026-04-06 23:23:17 -0400
commit19ccd68a75ae7f9a2926d7c16402ee0844d5af8f (patch)
treebb330f65fa51fc9e02b2866ebdc4aa7bccc010df
parent413682ed6f9a004893916af850fc13fd21c46703 (diff)
timingB and createHeap 100%
-rw-r--r--include/d/a/e/d_a_en_base.h3
-rw-r--r--include/m/m3d/m_anmmdl.h7
-rw-r--r--src/REL/d/a/e/d_a_e_remly.cpp27
3 files changed, 35 insertions, 2 deletions
diff --git a/include/d/a/e/d_a_en_base.h b/include/d/a/e/d_a_en_base.h
index 48c9f920..81ef2761 100644
--- a/include/d/a/e/d_a_en_base.h
+++ b/include/d/a/e/d_a_en_base.h
@@ -77,6 +77,9 @@ public:
void fn_80030400(m3d::mdl_c &, u8, bool, u8);
void fn_800306d0();
void fn_80030700();
+
+ static void fn_80030980(m3d::mdl_c &, s32, bool markDirty);
+
void fn_80030c20(u32 flags, f32, f32, f32, f32);
s32 someEnemyDamageCollisionStuffMaybe(dColliderLinkedList &list, u16 *pOutFlags);
diff --git a/include/m/m3d/m_anmmdl.h b/include/m/m3d/m_anmmdl.h
index cb8ec945..29cf6e2e 100644
--- a/include/m/m3d/m_anmmdl.h
+++ b/include/m/m3d/m_anmmdl.h
@@ -60,6 +60,13 @@ public:
void setAnmFile(void *data) {
mAnmFile = nw4r::g3d::ResFile(data);
}
+ nw4r::g3d::ResFile getAnmFile() {
+ return mAnmFile;
+ }
+
+ nw4r::g3d::ResFile getMdlFile() {
+ return mMdlFile;
+ }
protected:
nw4r::g3d::ResFile mMdlFile;
diff --git a/src/REL/d/a/e/d_a_e_remly.cpp b/src/REL/d/a/e/d_a_e_remly.cpp
index 4538ae90..7ad1addd 100644
--- a/src/REL/d/a/e/d_a_e_remly.cpp
+++ b/src/REL/d/a/e/d_a_e_remly.cpp
@@ -23,6 +23,7 @@
#include "m/m_mtx.h"
#include "m/m_quat.h"
#include "m/m_vec.h"
+#include "nw4r/g3d/res/g3d_resanmtexpat.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "nw4r/g3d/res/g3d_resmdl.h"
#include "nw4r/g3d/res/g3d_resnode.h"
@@ -81,10 +82,32 @@ STATE_DEFINE(dAcEremly_c, NightRet);
STATE_DEFINE(dAcEremly_c, NightJumpAttack);
STATE_DEFINE(dAcEremly_c, BirthWait);
-void dAcEremly_c::callback_c::timingB(u32 nodeId, nw4r::g3d::WorldMtxManip *result, nw4r::g3d::ResMdl) {}
+void dAcEremly_c::callback_c::timingB(u32 nodeId, nw4r::g3d::WorldMtxManip *result, nw4r::g3d::ResMdl resMdl) {
+ static u32 headNode = resMdl.GetResNode("head").GetID();
+
+ if (nodeId == headNode) {
+ mMtx_c m;
+ result->GetMtx(m);
+ m.ZXYrotM(mAng);
+ result->SetMtx(m);
+ }
+}
bool dAcEremly_c::createHeap() {
- nw4r::g3d::ResFile res(getOarcResFile("Remly"));
+ TRY_CREATE(mMdl.create(*this, getOarcResFile("Remly"), "Remly", "RemlyWalk", 0x133));
+ fn_80030980(mMdl.getModel(), 1, false);
+
+ mMdl.getModel().setCallback(&mMdlCallback);
+
+ nw4r::g3d::ResFile res = mMdl.getMdlFile();
+ nw4r::g3d::ResMdl resMdl = mMdl.getModel().getResMdl();
+ nw4r::g3d::ResAnmTexPat resTexPat = res.GetResAnmTexPat("RemlyWink");
+
+ bool result;
+ TRY_CREATE2(mTexPat.create(resMdl, resTexPat, &mAllocator, nullptr, 1));
+ mMdl.getModel().setAnm(mTexPat);
+
+ return true;
}
int dAcEremly_c::actorCreate() {