From 59e806bc7709a0b19ff2ad6c9ca382d866b3fab4 Mon Sep 17 00:00:00 2001 From: Mityno Date: Mon, 1 Jun 2026 20:38:25 +0200 Subject: [PATCH 1/2] Decompile func_ov063_0215c250 and func_ov063_0215c290 --- include/Actor/ActorUnkRMSF.hpp | 6 ++++-- src/063_Shrine/Actor/ActorUnkRMSF.cpp | 27 +++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/include/Actor/ActorUnkRMSF.hpp b/include/Actor/ActorUnkRMSF.hpp index 0e7c0b9a2..04beaee52 100644 --- a/include/Actor/ActorUnkRMSF.hpp +++ b/include/Actor/ActorUnkRMSF.hpp @@ -26,13 +26,15 @@ class ActorUnkRMSF : public Actor { /* 4C */ virtual ~ActorUnkRMSF() override; - void func_ov063_0215c250(void); - void func_ov063_0215c290(void); + unk32 func_ov063_0215c250(void); + unk32 func_ov063_0215c290(void); }; class ActorProfileUnkRMSF : public ActorProfile_Derived1 { public: /* 00 (base) */ + /* 3A */ STRUCT_PAD(0x3A, 0x8C); + /* 8C */ unk32 mUnk_8C; ActorProfileUnkRMSF(); ~ActorProfileUnkRMSF(); diff --git a/src/063_Shrine/Actor/ActorUnkRMSF.cpp b/src/063_Shrine/Actor/ActorUnkRMSF.cpp index 671c16da1..b7cbc1dfd 100644 --- a/src/063_Shrine/Actor/ActorUnkRMSF.cpp +++ b/src/063_Shrine/Actor/ActorUnkRMSF.cpp @@ -2,6 +2,13 @@ #include "Actor/ActorUnkRMSF.hpp" #include "System/SysNew.hpp" +#include "profile.hpp" +#include "types.h" + +extern "C" unk32 *func_0200f05c(unk32, char *); + +char data_ov063_021625b8[0x10] = "RMSF_wall"; +char data_ov063_021625c8[0x10] = "RMSF"; ARM DECL_PROFILE(ActorProfileUnkRMSF); @@ -14,8 +21,24 @@ ARM ActorProfileUnkRMSF::ActorProfileUnkRMSF() : ARM ActorUnkRMSF::ActorUnkRMSF() {} -ARM void ActorUnkRMSF::func_ov063_0215c250(void) {} -ARM void ActorUnkRMSF::func_ov063_0215c290(void) {} +ARM unk32 ActorUnkRMSF::func_ov063_0215c250(void) { + unk32 var1 = GET_PROFILE(ActorProfileUnkRMSF)->mUnk_8C; + unk32 *var2; + if (var1 != 0 && (var2 = func_0200f05c(var1 + 8, data_ov063_021625c8), var2 != 0)) { + return var1 + *var2; + } + return 0; +} + +ARM unk32 ActorUnkRMSF::func_ov063_0215c290(void) { + unk32 var1 = GET_PROFILE(ActorProfileUnkRMSF)->mUnk_8C; + unk32 *var2; + if (var1 != 0 && (var2 = func_0200f05c(var1 + 8, data_ov063_021625b8), var2 != 0)) { + return var1 + *var2; + } + return 0; +} ARM ActorUnkRMSF::~ActorUnkRMSF() {} + ARM ActorProfileUnkRMSF::~ActorProfileUnkRMSF() {} From 78d470bd56a6fbcfad66a25b75eaa10e76fc9421 Mon Sep 17 00:00:00 2001 From: Mityno Date: Mon, 1 Jun 2026 20:39:52 +0200 Subject: [PATCH 2/2] Decompile ActorUnkRMSF::~ActorUnkRMSF Unsure what the added ldr/str instructions are --- include/Actor/ActorUnkRMSF.hpp | 4 +++- src/063_Shrine/Actor/ActorUnkRMSF.cpp | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/Actor/ActorUnkRMSF.hpp b/include/Actor/ActorUnkRMSF.hpp index 04beaee52..3ac9a6813 100644 --- a/include/Actor/ActorUnkRMSF.hpp +++ b/include/Actor/ActorUnkRMSF.hpp @@ -20,7 +20,9 @@ class ActorUnkRMSF_c4 : public Actor_c4 { class ActorUnkRMSF : public Actor { public: /* 00 (base) */ - /* 94 */ + /* 94 */ unk32 mUnk_94; + /* 98 */ STRUCT_PAD(0x98, 0xF4); + /* F4 */ unk32 mUnk_F4; ActorUnkRMSF(); diff --git a/src/063_Shrine/Actor/ActorUnkRMSF.cpp b/src/063_Shrine/Actor/ActorUnkRMSF.cpp index b7cbc1dfd..10cd683c3 100644 --- a/src/063_Shrine/Actor/ActorUnkRMSF.cpp +++ b/src/063_Shrine/Actor/ActorUnkRMSF.cpp @@ -6,6 +6,7 @@ #include "types.h" extern "C" unk32 *func_0200f05c(unk32, char *); +extern "C" void func_0x02057b8c(unk32 *); char data_ov063_021625b8[0x10] = "RMSF_wall"; char data_ov063_021625c8[0x10] = "RMSF"; @@ -39,6 +40,9 @@ ARM unk32 ActorUnkRMSF::func_ov063_0215c290(void) { return 0; } -ARM ActorUnkRMSF::~ActorUnkRMSF() {} +ARM ActorUnkRMSF::~ActorUnkRMSF() { + func_0x02057b8c(&this->mUnk_F4); + func_0x02057b8c(&this->mUnk_94); +} ARM ActorProfileUnkRMSF::~ActorProfileUnkRMSF() {}