From 0893ad86f2204eb5c45146f3798437154c39ac66 Mon Sep 17 00:00:00 2001 From: mike8699 Date: Mon, 28 Apr 2025 23:32:20 -0400 Subject: [PATCH 1/6] Decompile `ActorSwitchObject` `vfunc_08` and `vfunc_0c` --- include/Actor/Actor.hpp | 2 +- include/Actor/Dungeon/ActorSwitchObject.hpp | 2 +- src/00_Core/Actor/Actor.cpp | 2 +- src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp | 14 ++++++++++++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index f82d34ab..2906b670 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -175,7 +175,7 @@ public: /* 00 */ virtual ~Actor(); /* 08 */ virtual bool vfunc_08(); - /* 0c */ virtual void vfunc_0c(); + /* 0c */ virtual bool vfunc_0c(); /* 10 */ virtual void vfunc_10(u32 param1); /* 14 */ virtual void vfunc_14(u32 param1); /* 18 */ virtual void vfunc_18(u32 param1); diff --git a/include/Actor/Dungeon/ActorSwitchObject.hpp b/include/Actor/Dungeon/ActorSwitchObject.hpp index b2fa08d3..61cc3267 100644 --- a/include/Actor/Dungeon/ActorSwitchObject.hpp +++ b/include/Actor/Dungeon/ActorSwitchObject.hpp @@ -22,7 +22,7 @@ public: /* 00 */ virtual ~ActorSwitchObject() override; /* 08 */ virtual bool vfunc_08() override; - /* 0c */ virtual void vfunc_0c() override; + /* 0c */ virtual bool vfunc_0c() override; /* 14 */ virtual void vfunc_14(u32 param1) override; /* 18 */ virtual void vfunc_18(u32 param1) override; /* b4 */ diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index db721414..123b2abe 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -117,7 +117,7 @@ ARM bool Actor::vfunc_08() { return true; } -ARM void Actor::vfunc_0c() {} +ARM bool Actor::vfunc_0c() {} ARM void Actor::vfunc_10(u32 param1) {} ARM void Actor::vfunc_24() {} ARM void Actor::vfunc_28() {} diff --git a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp index 37c4511c..05b9790a 100644 --- a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp @@ -3,8 +3,18 @@ ActorType ActorSwitchObject::gType = ActorType(ActorTypeId_SwitchObject, (ActorCreateFunc) ActorSwitchObject::Create, NULL); ActorSwitchObject *ActorSwitchObject::Create() {} -bool ActorSwitchObject::vfunc_08() {} -void ActorSwitchObject::vfunc_0c() {} + +bool ActorSwitchObject::vfunc_08() { + Actor::vfunc_08(); + this->func_ov000_0208fc7c(); + this->mUnk_130 = 0; + return true; +} + +bool ActorSwitchObject::vfunc_0c() { + return this->func_ov00_020c1bfc(0) ? this->func_ov000_0208fc10(1) : this->func_ov000_0208fc10(0); +} + void ActorSwitchObject::vfunc_14(u32 param1) {} void ActorSwitchObject::vfunc_18(u32 param1) {} bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) {} From 4edb0b5ed547ae5abcba3350227b403d34a38324 Mon Sep 17 00:00:00 2001 From: mike8699 Date: Mon, 28 Apr 2025 23:37:39 -0400 Subject: [PATCH 2/6] Decompile `ActorSwitchObject::func_ov000_0209032c` --- src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp index 05b9790a..2a270b85 100644 --- a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp @@ -1,4 +1,5 @@ #include "Actor/Dungeon/ActorSwitchObject.hpp" +#include "Map/MapManager.hpp" ActorType ActorSwitchObject::gType = ActorType(ActorTypeId_SwitchObject, (ActorCreateFunc) ActorSwitchObject::Create, NULL); @@ -21,5 +22,12 @@ bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) {} void ActorSwitchObject::func_ov000_0208fc7c() {} bool ActorSwitchObject::func_ov000_0208fcb4() {} void ActorSwitchObject::func_ov000_0208fef8() {} -void ActorSwitchObject::func_ov000_0209032c() {} + +void ActorSwitchObject::func_ov000_0209032c() { + unk32 i; + for (i = this->mUnk_164; i < this->mUnk_168; i++) { + gMapManager->func_ov00_02084b38(i, this->mUnk_16c, 0); + } +} + ActorSwitchObject::~ActorSwitchObject() {} From 51e0e6ae1614fb4c0a66cf8c615c1c8834addf4b Mon Sep 17 00:00:00 2001 From: mike8699 Date: Mon, 28 Apr 2025 23:48:07 -0400 Subject: [PATCH 3/6] Decompile `ActorSwitchObject::func_ov000_0208fc7c` --- src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp index 2a270b85..886d32a9 100644 --- a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp @@ -19,7 +19,16 @@ bool ActorSwitchObject::vfunc_0c() { void ActorSwitchObject::vfunc_14(u32 param1) {} void ActorSwitchObject::vfunc_18(u32 param1) {} bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) {} -void ActorSwitchObject::func_ov000_0208fc7c() {} + +void ActorSwitchObject::func_ov000_0208fc7c() { + this->mUnk_158 = this->mUnk_020.mUnk_00[1]; + this->mUnk_15c = this->mUnk_020.mUnk_00[2]; + this->mUnk_164 = this->mUnk_020.mUnk_0a[1]; + this->mUnk_168 = this->mUnk_164 + this->mUnk_020.mUnk_00[0]; + this->mUnk_16c = this->mUnk_020.mUnk_08[1]; + this->mUnk_160 = this->mUnk_164; +} + bool ActorSwitchObject::func_ov000_0208fcb4() {} void ActorSwitchObject::func_ov000_0208fef8() {} From b121c829b7ad7dfdef56c0e007e4fd470c1a7dfc Mon Sep 17 00:00:00 2001 From: mike8699 Date: Tue, 29 Apr 2025 20:21:01 -0400 Subject: [PATCH 4/6] Decompile `ActorSwitchObject::func_ov000_0208fc10` --- .../Actor/Dungeon/ActorSwitchObject.cpp | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp index 886d32a9..eab92dcc 100644 --- a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp @@ -18,7 +18,26 @@ bool ActorSwitchObject::vfunc_0c() { void ActorSwitchObject::vfunc_14(u32 param1) {} void ActorSwitchObject::vfunc_18(u32 param1) {} -bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) {} + +bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) { + this->mUnk_130 = param1; + + switch (param1) { + case 0: this->func_ov00_020c1c20(0, 0); break; + case 1: + this->func_ov00_020c1c20(0, 1); + if (this->mUnk_158 == 0) { + this->mAlive = false; + } + break; + case 2: + this->func_ov000_0208fef8(); + this->mActiveFrames = 0; + break; + } + + return true; +} void ActorSwitchObject::func_ov000_0208fc7c() { this->mUnk_158 = this->mUnk_020.mUnk_00[1]; From 62b157a85064d87b3920ca76bb03260a0b803729 Mon Sep 17 00:00:00 2001 From: mike8699 Date: Sat, 31 May 2025 19:40:01 -0400 Subject: [PATCH 5/6] Decompile `ActorSwitchObject::vfunc_14` --- .../Actor/Dungeon/ActorSwitchObject.cpp | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp index eab92dcc..1d246274 100644 --- a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp @@ -16,7 +16,54 @@ bool ActorSwitchObject::vfunc_0c() { return this->func_ov00_020c1bfc(0) ? this->func_ov000_0208fc10(1) : this->func_ov000_0208fc10(0); } -void ActorSwitchObject::vfunc_14(u32 param1) {} +void ActorSwitchObject::vfunc_14(u32 param1) { + bool bVar1; + u32 uVar2; + u32 uVar3; + s32 iVar4; + s32 iVar5; + + bVar1 = this->func_ov00_020c313c(param1); + if (bVar1 == NULL) { + return; + } + uVar2 = this->mUnk_130; + switch (uVar2) { + default: + if (uVar2 == 2) { + break; + } + return; + case 0: + uVar3 = this->func_ov000_0208fcb4(); + switch (uVar3) { + case 1: this->func_ov000_0208fc10(1); return; + case 2: this->func_ov000_0208fc10(2); return; + default: return; + } + bVar1 = this->func_ov000_0208fc10(2); + return; + case 1: + iVar4 = this->func_ov000_0208fcb4(); + if (iVar4 == 1) { + return; + } + bVar1 = this->func_ov000_0208fc10(0); + return; + } + + iVar5 = this->mActiveFrames + 1; + this->mActiveFrames = iVar5; + if (iVar5 < 0x1e) { + return; + } + + this->func_ov000_0209032c(); + bVar1 = this->func_ov000_0208fc10(0); + + return; +} + void ActorSwitchObject::vfunc_18(u32 param1) {} bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) { From adc35c4e1c25c4e977d2d06a19c6a87ffdfef641 Mon Sep 17 00:00:00 2001 From: mike8699 Date: Sat, 31 May 2025 19:51:46 -0400 Subject: [PATCH 6/6] Decompile `ActorSwitchObject::vfunc_18` --- src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp index 1d246274..c767e5b9 100644 --- a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp @@ -64,7 +64,9 @@ void ActorSwitchObject::vfunc_14(u32 param1) { return; } -void ActorSwitchObject::vfunc_18(u32 param1) {} +void ActorSwitchObject::vfunc_18(u32 param1) { + this->vfunc_14(param1); +} bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) { this->mUnk_130 = param1;