From f27b60d4fef5d3d081a2fe231169219416c877c8 Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Sat, 8 Feb 2025 22:25:31 +0100 Subject: match most of OverlayManager.cpp --- src/Main/System/OverlayManager.cpp | 90 +++++++++++++++++++++++++++++++++++--- 1 file changed, 85 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Main/System/OverlayManager.cpp b/src/Main/System/OverlayManager.cpp index 9c50ebb6..8446eaa8 100644 --- a/src/Main/System/OverlayManager.cpp +++ b/src/Main/System/OverlayManager.cpp @@ -1,7 +1,87 @@ +#include "global.h" #include "System/OverlayManager.hpp" +#include "nds/Overlay.h" -void OverlayManager::Load(OverlayIndex index, OverlayId id) {} -void OverlayManager::LoadIfNotLoaded(OverlayIndex index, OverlayId id) {} -void OverlayManager::Unload(OverlayIndex index) {} -void OverlayManager::LoadOverlaySetup(s32 index) {} -void OverlayManager::UnloadOverlaySetup() {} +struct UnkStruct_020ee698 { + /* 00 */ unk8 mUnk_00[0x2C]; + /* 2c */ unk32 mUnk_2c; + /* 30 */ +}; +extern UnkStruct_020ee698 data_ov000_020ee698; + +struct OverlaySetup { + /* 00 */ unk8 mUnk_00; + /* 01 */ unk8 mUnk_01; + /* 02 */ unk8 mUnk_02; + /* 03 */ unk8 mUnk_03; + /* 04 */ OverlayId slot1Overlay; + /* 08 */ OverlayId slot2Overlay; + /* 0c */ OverlayId slot3Overlay; + /* 10 */ OverlayId slot12Overlay; + /* 14 */ void* mUnk_14; + /* 18 */ void* mUnk_18; + /* 1c */ +}; +extern OverlaySetup gOverlaySetups[]; + +extern u32 *data_027e0ce0[]; +extern "C" void func_ov007_02102850(u32**); +extern "C" void func_ov007_021028a0(u32**); + +THUMB void OverlayManager::Load(OverlayIndex index, OverlayId id) { + if (id != OverlayId_None) { + Overlay_Load(NULL, id); + } + + this->mLoadedOverlays[index] = id; +} + +// non-matching (regalloc) +THUMB void OverlayManager::LoadIfNotLoaded(OverlayIndex index, OverlayId id) { + if (this->mLoadedOverlays[index] != id) { + this->Unload(index); + this->Load(index, id); + } +} + +THUMB void OverlayManager::Unload(OverlayIndex index) { + if (this->mLoadedOverlays[index] != OverlayId_None) { + Overlay_Unload(NULL, this->mLoadedOverlays[index]); + this->mLoadedOverlays[index] = OverlayId_None; + } +} + +//! TODO: solve the .word issue with the overlay IDs +//! both functions should match otherwise +THUMB void OverlayManager::LoadOverlaySetup(s32 index) { + OverlayId overlayId; + OverlaySetup* pSetup; + + pSetup = &gOverlaySetups[index]; + + this->LoadIfNotLoaded(OverlayIndex_1, pSetup->slot1Overlay); + this->LoadIfNotLoaded(OverlayIndex_2, pSetup->slot2Overlay); + + if (index == 5) { + func_ov007_02102850(data_027e0ce0); + } else { + overlayId = pSetup->slot12Overlay; + + if (index == 6 && data_ov000_020ee698.mUnk_2c == 2) { + overlayId = OverlayId_61; + } + + this->Load(OverlayIndex_3, pSetup->slot3Overlay); + this->Load(OverlayIndex_12, overlayId); + } +} + +THUMB void OverlayManager::UnloadOverlaySetup() { + this->Unload(OverlayIndex_12); + this->Unload(OverlayIndex_3); + + if (this->mLoadedOverlays[2] == OverlayId_07) { + func_ov007_021028a0(data_027e0ce0); + this->Unload(OverlayIndex_2); + } +} -- cgit v1.2.3 From 25fef6bba19b0c3b016dc09c3aa9490d6ee2cddd Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Sat, 8 Feb 2025 22:31:43 +0100 Subject: format? --- src/Main/System/OverlayManager.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/Main/System/OverlayManager.cpp b/src/Main/System/OverlayManager.cpp index 8446eaa8..8ba3f925 100644 --- a/src/Main/System/OverlayManager.cpp +++ b/src/Main/System/OverlayManager.cpp @@ -1,5 +1,5 @@ -#include "global.h" #include "System/OverlayManager.hpp" +#include "global.h" #include "nds/Overlay.h" struct UnkStruct_020ee698 { @@ -18,15 +18,15 @@ struct OverlaySetup { /* 08 */ OverlayId slot2Overlay; /* 0c */ OverlayId slot3Overlay; /* 10 */ OverlayId slot12Overlay; - /* 14 */ void* mUnk_14; - /* 18 */ void* mUnk_18; + /* 14 */ void *mUnk_14; + /* 18 */ void *mUnk_18; /* 1c */ }; extern OverlaySetup gOverlaySetups[]; extern u32 *data_027e0ce0[]; -extern "C" void func_ov007_02102850(u32**); -extern "C" void func_ov007_021028a0(u32**); +extern "C" void func_ov007_02102850(u32 **); +extern "C" void func_ov007_021028a0(u32 **); THUMB void OverlayManager::Load(OverlayIndex index, OverlayId id) { if (id != OverlayId_None) { @@ -55,7 +55,7 @@ THUMB void OverlayManager::Unload(OverlayIndex index) { //! both functions should match otherwise THUMB void OverlayManager::LoadOverlaySetup(s32 index) { OverlayId overlayId; - OverlaySetup* pSetup; + OverlaySetup *pSetup; pSetup = &gOverlaySetups[index]; @@ -66,11 +66,11 @@ THUMB void OverlayManager::LoadOverlaySetup(s32 index) { func_ov007_02102850(data_027e0ce0); } else { overlayId = pSetup->slot12Overlay; - + if (index == 6 && data_ov000_020ee698.mUnk_2c == 2) { overlayId = OverlayId_61; } - + this->Load(OverlayIndex_3, pSetup->slot3Overlay); this->Load(OverlayIndex_12, overlayId); } -- cgit v1.2.3 From 222f3f7daaa5787ff967a1db78876cdfc3f8aa10 Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Sat, 8 Feb 2025 23:07:14 +0100 Subject: match OverlayManager::LoadIfNotLoaded (thanks to Maide) --- src/Main/System/OverlayManager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Main/System/OverlayManager.cpp b/src/Main/System/OverlayManager.cpp index 8ba3f925..8fff1fc6 100644 --- a/src/Main/System/OverlayManager.cpp +++ b/src/Main/System/OverlayManager.cpp @@ -36,9 +36,10 @@ THUMB void OverlayManager::Load(OverlayIndex index, OverlayId id) { this->mLoadedOverlays[index] = id; } -// non-matching (regalloc) THUMB void OverlayManager::LoadIfNotLoaded(OverlayIndex index, OverlayId id) { - if (this->mLoadedOverlays[index] != id) { + OverlayId loadedId = this->mLoadedOverlays[index]; + + if (loadedId != id) { this->Unload(index); this->Load(index, id); } -- cgit v1.2.3 From 10db9067430c77b2b6cd2b14da018b81a5f43c84 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sun, 9 Feb 2025 13:13:49 +0100 Subject: Add MapOverworld --- src/18_Overworld/Map/MapOverworld.cpp | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/18_Overworld/Map/MapOverworld.cpp (limited to 'src') diff --git a/src/18_Overworld/Map/MapOverworld.cpp b/src/18_Overworld/Map/MapOverworld.cpp new file mode 100644 index 00000000..5737ea54 --- /dev/null +++ b/src/18_Overworld/Map/MapOverworld.cpp @@ -0,0 +1,38 @@ +#include "Map/MapOverworld.hpp" + +MapOverworld::MapOverworld(u32 width, u32 height) : + MapBase(width, height) {} +MapOverworld::~MapOverworld() {} +void MapOverworld::vfunc_08(u32 param_2, u32 param_3, Course *param_4) {} +void MapOverworld::vfunc_14() {} +void MapOverworld::vfunc_1c(bool param_2) {} +void MapOverworld::func_ov018_0215bfc8() {} +void MapOverworld::vfunc_20(s32 param_2) {} +void MapOverworld::vfunc_2c() {} +void MapOverworld::vfunc_94() {} +unk32 MapOverworld::vfunc_a4() {} +unk32 MapOverworld::vfunc_54() {} +unk32 MapOverworld::vfunc_58() {} +unk32 MapOverworld::vfunc_5c() {} +unk32 MapOverworld::vfunc_60() {} +unk32 MapOverworld::vfunc_64() {} +u32 MapOverworld::func_ov018_0215c34c() {} +u32 MapOverworld::func_ov018_0215c368() {} +s32 MapOverworld::func_ov018_0215c380(u8 *param1) {} +void MapOverworld::vfunc_bc() {} +void MapOverworld::vfunc_98() {} +void MapOverworld::vfunc_c0() {} +unk32 MapOverworld::vfunc_78() {} +unk32 MapOverworld::vfunc_7c() {} +unk32 MapOverworld::vfunc_80() {} +unk8 MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} +void MapOverworld::func_ov018_0215c650() {} +void MapOverworld::func_ov018_0215c6ac() {} +void MapOverworld::func_ov018_0215c6d0() {} +MapOverworld_Unk1::MapOverworld_Unk1(u32 param1, u8 *param2, unk32 param3) : + UnkStruct_ov000_020c0c08(0, param2) {} +void MapOverworld::func_ov018_0215c9ac() {} +void func_ov018_0215ca24(s32 param1) {} +void func_ov018_0215ca3c(s32 param1, s32 param2, unk32 param3, unk32 param4) {} +void func_ov018_0215ca8c(s32 param1) {} +void MapOverworld::vfunc_4c() {} -- cgit v1.2.3 From 046c7d7ac8bcac7d8bfea833c624557260ab5ab5 Mon Sep 17 00:00:00 2001 From: Aetias Date: Tue, 4 Mar 2025 20:59:04 +0100 Subject: Delink `ActorEventIcon` --- src/00_Core/Actor/Dungeon/ActorEventIcon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/00_Core/Actor/Dungeon/ActorEventIcon.cpp b/src/00_Core/Actor/Dungeon/ActorEventIcon.cpp index 8e943095..94e7381d 100644 --- a/src/00_Core/Actor/Dungeon/ActorEventIcon.cpp +++ b/src/00_Core/Actor/Dungeon/ActorEventIcon.cpp @@ -8,6 +8,6 @@ bool ActorEventIcon::vfunc_08() {} void ActorEventIcon::vfunc_14(u32 param1) {} void ActorEventIcon::vfunc_18(u32 param1) {} u32 ActorEventIcon::func_ov000_02090648(u32 param1) {} -bool func_ov000_02090774(u32 param1) {} +bool ActorEventIcon::func_ov000_02090774(u32 param1) {} void ActorEventIcon::vfunc_1c(u16 *param1) {} ActorEventIcon::~ActorEventIcon() {} -- cgit v1.2.3 From 3c223d570c19e1b244705bfb5893d51f30a17f80 Mon Sep 17 00:00:00 2001 From: Aetias Date: Thu, 6 Mar 2025 00:14:06 +0100 Subject: Delink `ActorNavi` --- src/00_Core/Actor/Navi/ActorNavi.cpp | 32 ++++++++++++++++++++++++++++++++ src/04_Load/Actor/Navi/ActorNavi.cpp | 3 +++ 2 files changed, 35 insertions(+) create mode 100644 src/00_Core/Actor/Navi/ActorNavi.cpp create mode 100644 src/04_Load/Actor/Navi/ActorNavi.cpp (limited to 'src') diff --git a/src/00_Core/Actor/Navi/ActorNavi.cpp b/src/00_Core/Actor/Navi/ActorNavi.cpp new file mode 100644 index 00000000..5c4c18f4 --- /dev/null +++ b/src/00_Core/Actor/Navi/ActorNavi.cpp @@ -0,0 +1,32 @@ +#include "Actor/Navi/ActorNavi.hpp" +#include "Player/EquipHammer.hpp" + +ActorType ActorNavi::gType = ActorType(ActorTypeId_Navi, (ActorCreateFunc) ActorNavi::Create, NULL); +UnkStruct_ov000_020b8110 data_ov000_020ee1cc; + +ActorNavi *ActorNavi::Create() {} +UnkStruct_ov000_020b8110::UnkStruct_ov000_020b8110() : + UnkStruct_ov000_020beba8(7) {} +UnkStruct_ov000_020b8110::~UnkStruct_ov000_020b8110() {} +void UnkStruct_ov000_020b8110::vfunc_08(unk16 *param1) {} +void UnkStruct_ov000_020b8110::vfunc_18(s32 *param1) {} +void UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {} +void ActorNavi::func_ov000_020b8200() {} +void ActorNavi::vfunc_c4() {} +void ActorNavi::vfunc_c8() {} +void ActorNavi::vfunc_b4() {} +s32 ActorNavi::vfunc_b8() {} +void ActorNavi::vfunc_d4() {} +void ActorNavi::vfunc_d0() {} +void ActorNavi::SetActive(bool active) {} +void ActorNavi::vfunc_e0() {} +void ActorNavi::vfunc_d8() {} +void ActorNavi::vfunc_20(bool param1) {} +bool ActorNavi::vfunc_cc(unk32 *param1) {} +bool ActorNavi::vfunc_c0(Vec3p *param1) {} +void ActorNavi::vfunc_e8() {} +bool ActorNavi::vfunc_8c() {} +void ActorNavi::vfunc_ec() {} +EquipHammer *GetEquipHammer() {} +void ActorNavi::func_ov000_020b853c() {} +ActorNavi::~ActorNavi() {} diff --git a/src/04_Load/Actor/Navi/ActorNavi.cpp b/src/04_Load/Actor/Navi/ActorNavi.cpp new file mode 100644 index 00000000..12939c04 --- /dev/null +++ b/src/04_Load/Actor/Navi/ActorNavi.cpp @@ -0,0 +1,3 @@ +#include "Actor/Navi/ActorNavi.hpp" + +ActorNavi::ActorNavi() {} -- cgit v1.2.3 From 1998ff3444b3a264cdaace5b10194ca0270ce260 Mon Sep 17 00:00:00 2001 From: Aetias Date: Thu, 6 Mar 2025 20:34:34 +0100 Subject: Delink `ActorForceNavi` --- src/00_Core/Actor/Navi/ActorForceNavi.cpp | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/00_Core/Actor/Navi/ActorForceNavi.cpp (limited to 'src') diff --git a/src/00_Core/Actor/Navi/ActorForceNavi.cpp b/src/00_Core/Actor/Navi/ActorForceNavi.cpp new file mode 100644 index 00000000..6037082d --- /dev/null +++ b/src/00_Core/Actor/Navi/ActorForceNavi.cpp @@ -0,0 +1,7 @@ +#include "Actor/Navi/ActorForceNavi.hpp" + +ActorType ActorForceNavi::gType = ActorType(ActorTypeId_ForceNavi, (ActorCreateFunc) ActorForceNavi::Create, NULL); + +ActorForceNavi *ActorForceNavi::Create() {} +void ActorForceNavi::vfunc_b4() {} +ActorForceNavi::~ActorForceNavi() {} -- cgit v1.2.3 From 656ec5779cccb3f8e2146299ab9af1d4bb95d7c4 Mon Sep 17 00:00:00 2001 From: Aetias Date: Fri, 7 Mar 2025 19:25:02 +0100 Subject: Delink `ActorWisdomNavi` --- src/00_Core/Actor/Navi/ActorWisdomNavi.cpp | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/00_Core/Actor/Navi/ActorWisdomNavi.cpp (limited to 'src') diff --git a/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp b/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp new file mode 100644 index 00000000..2567dc03 --- /dev/null +++ b/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp @@ -0,0 +1,7 @@ +#include "Actor/Navi/ActorWisdomNavi.hpp" + +ActorType ActorWisdomNavi::gType = ActorType(ActorTypeId_WisdomNavi, (ActorCreateFunc) ActorWisdomNavi::Create, NULL); + +ActorWisdomNavi *ActorWisdomNavi::Create() {} +void ActorWisdomNavi::vfunc_b4() {} +ActorWisdomNavi::~ActorWisdomNavi() {} -- cgit v1.2.3 From 44ba14e823fd9d67fd92166f5370683fad56f428 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sat, 8 Mar 2025 11:46:49 +0100 Subject: Decomp `ActorForceNavi` and `ActorWisdomNavi` 100% --- src/00_Core/Actor/Navi/ActorForceNavi.cpp | 13 ++++++++++--- src/00_Core/Actor/Navi/ActorNavi.cpp | 2 +- src/00_Core/Actor/Navi/ActorWisdomNavi.cpp | 13 ++++++++++--- src/00_Core/Item/ItemManager.cpp | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/00_Core/Actor/Navi/ActorForceNavi.cpp b/src/00_Core/Actor/Navi/ActorForceNavi.cpp index 6037082d..04b83c13 100644 --- a/src/00_Core/Actor/Navi/ActorForceNavi.cpp +++ b/src/00_Core/Actor/Navi/ActorForceNavi.cpp @@ -1,7 +1,14 @@ #include "Actor/Navi/ActorForceNavi.hpp" +#pragma section sbss begin ActorType ActorForceNavi::gType = ActorType(ActorTypeId_ForceNavi, (ActorCreateFunc) ActorForceNavi::Create, NULL); +#pragma section sbss end -ActorForceNavi *ActorForceNavi::Create() {} -void ActorForceNavi::vfunc_b4() {} -ActorForceNavi::~ActorForceNavi() {} +extern u32 **data_027e0fe0[]; +ActorForceNavi *ActorForceNavi::Create() { + return new(*data_027e0fe0[0], 4) ActorForceNavi(); +} + +ARM FairyId ActorForceNavi::GetFairyId() { + return FairyId_Power; +} diff --git a/src/00_Core/Actor/Navi/ActorNavi.cpp b/src/00_Core/Actor/Navi/ActorNavi.cpp index 5c4c18f4..7c195178 100644 --- a/src/00_Core/Actor/Navi/ActorNavi.cpp +++ b/src/00_Core/Actor/Navi/ActorNavi.cpp @@ -14,7 +14,7 @@ void UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {} void ActorNavi::func_ov000_020b8200() {} void ActorNavi::vfunc_c4() {} void ActorNavi::vfunc_c8() {} -void ActorNavi::vfunc_b4() {} +FairyId ActorNavi::GetFairyId() {} s32 ActorNavi::vfunc_b8() {} void ActorNavi::vfunc_d4() {} void ActorNavi::vfunc_d0() {} diff --git a/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp b/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp index 2567dc03..84c02e33 100644 --- a/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp +++ b/src/00_Core/Actor/Navi/ActorWisdomNavi.cpp @@ -1,7 +1,14 @@ #include "Actor/Navi/ActorWisdomNavi.hpp" +#pragma section sbss begin ActorType ActorWisdomNavi::gType = ActorType(ActorTypeId_WisdomNavi, (ActorCreateFunc) ActorWisdomNavi::Create, NULL); +#pragma section sbss end -ActorWisdomNavi *ActorWisdomNavi::Create() {} -void ActorWisdomNavi::vfunc_b4() {} -ActorWisdomNavi::~ActorWisdomNavi() {} +extern u32 **data_027e0fe0[]; +ARM ActorWisdomNavi *ActorWisdomNavi::Create() { + return new(*data_027e0fe0[0], 4) ActorWisdomNavi(); +} + +ARM FairyId ActorWisdomNavi::GetFairyId() { + return FairyId_Wisdom; +} diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index 96fbad4c..3344c74e 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -126,7 +126,7 @@ ARM FairyId ItemManager::GetEquippedFairy() const { return fairy; } -ARM ActorNavi *ItemManager::GetFairy(FairyId id) const { +ARM ActorNaviBase *ItemManager::GetFairy(FairyId id) const { return mFairies[id]; } -- cgit v1.2.3 From a8dc7ef705f777cc725e1ec08918fc8c2d61b60a Mon Sep 17 00:00:00 2001 From: Aetias Date: Sat, 8 Mar 2025 12:35:55 +0100 Subject: Delink and 81% decomp `ActorActionObject` --- src/00_Core/Actor/Actor.cpp | 4 +- src/00_Core/Actor/Dungeon/ActorActionObject.cpp | 85 +++++++++++++++++++++++++ src/00_Core/Player/PlayerLinkBase.cpp | 2 +- 3 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 src/00_Core/Actor/Dungeon/ActorActionObject.cpp (limited to 'src') diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index f008064d..572ead78 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -318,8 +318,8 @@ ARM void Actor::SetTransform(Transform *transform) { ARM void Actor::vfunc_a8() {} -ARM void Actor::func_Ov00_020c1bfc(s32 param1) { - gMapManager->func_ov00_02084be0(mUnk_020.mUnk_0a[param1], mUnk_020.mUnk_08[param1]); +ARM bool Actor::func_Ov00_020c1bfc(s32 param1) { + return gMapManager->func_ov00_02084be0(mUnk_020.mUnk_0a[param1], mUnk_020.mUnk_08[param1]); } ARM void Actor::func_ov00_020c1c20(s32 param1, unk32 param2) { diff --git a/src/00_Core/Actor/Dungeon/ActorActionObject.cpp b/src/00_Core/Actor/Dungeon/ActorActionObject.cpp new file mode 100644 index 00000000..fdef3d9e --- /dev/null +++ b/src/00_Core/Actor/Dungeon/ActorActionObject.cpp @@ -0,0 +1,85 @@ +#include "Actor/Dungeon/ActorActionObject.hpp" +#include "Map/MapManager.hpp" +#include "Player/LinkStateBase.hpp" +#include "Player/PlayerLinkBase.hpp" +#include "Save/AdventureFlags.hpp" + +#pragma section sbss begin +ActorType ActorActionObject::gType = ActorType(ActorTypeId_ActionObject, (ActorCreateFunc) ActorActionObject::Create, NULL); +#pragma section sbss end + +extern u32 **data_027e0fe0[]; +ARM ActorActionObject *ActorActionObject::Create() { + return new(*data_027e0fe0[0], 4) ActorActionObject(); +} + +ARM ActorActionObject::ActorActionObject() {} + +ARM ActorActionObject::~ActorActionObject() {} + +// non-matching +ARM bool ActorActionObject::vfunc_08() { + mGravity = 0; + mHitbox.pos = gVec3p_ZERO; + mHitbox.size = -1; + mUnk_08c.pos = mHitbox.pos; + mUnk_08c.size = mHitbox.size; + mUnk_0a4.mUnk_04 = gVec3p_ZERO; + mUnk_0a4.mUnk_10 = -1; + mVisible = false; + mUnk_130 = 0; + return true; +} + +ARM void ActorActionObject::vfunc_14(u32 param1) { + if (!this->func_ov00_020c313c(param1)) { + return; + } + + u32 flag = mUnk_020.mUnk_00[2]; + bool bVar3; + switch (mUnk_020.mUnk_00[0]) { + case 0: bVar3 = true; break; + case 1: + if (gPlayerLink->mGrabActor.id != -1 && gPlayerLink->GetStateId() == LinkStateId_Move) { + bVar3 = true; + } else { + bVar3 = false; + } + break; + case 2: + if (gPlayerLink->mGrabActor.id == -1 && gPlayerLink->GetStateId() == LinkStateId_Move) { + bVar3 = true; + } else { + bVar3 = false; + } + break; + default: bVar3 = false; break; + } + + if (!bVar3) { + return; + } + if (!gMapManager->func_ov00_020836dc((u32) mUnk_020.mUnk_00[1], 0)) { + return; + } + if (mUnk_020.mUnk_0a[0] != 0 && !this->func_Ov00_020c1bfc(0)) { + return; + } + if (flag != 0 && !gAdventureFlags->Get(flag)) { + return; + } + + PlayerLinkBase *link = gPlayerLink; + if (link != NULL && link->vfunc_18(7)) { + if (mUnk_020.mUnk_00[3] == 1) { + link->func_ov000_020bcf50(&mPos, 0x800); + } + this->func_ov00_020c1c20(1, 1); + this->Kill(); + } +} + +ARM void ActorActionObject::vfunc_18(u32 param1) { + this->func_ov00_020c313c(param1); +} diff --git a/src/00_Core/Player/PlayerLinkBase.cpp b/src/00_Core/Player/PlayerLinkBase.cpp index 897932c8..bc248044 100644 --- a/src/00_Core/Player/PlayerLinkBase.cpp +++ b/src/00_Core/Player/PlayerLinkBase.cpp @@ -20,7 +20,7 @@ bool PlayerLinkBase::func_ov000_020bba00() {} bool PlayerLinkBase::func_ov000_020bba14() {} bool PlayerLinkBase::func_ov000_020bba28() {} void PlayerLinkBase::func_ov000_020bba48() {} -void PlayerLinkBase::vfunc_18(s32 param1) {} +bool PlayerLinkBase::vfunc_18(s32 param1) {} bool PlayerLinkBase::CanMove() {} bool PlayerLinkBase::vfunc_58() {} bool PlayerLinkBase::vfunc_5c() {} -- cgit v1.2.3 From 59648074067128dbe6306b9fdb80af3f6abfa91b Mon Sep 17 00:00:00 2001 From: Aetias Date: Sun, 9 Mar 2025 09:57:20 +0100 Subject: Fix accidental capital letter in `func_Ov00_020c1bfc` --- src/00_Core/Actor/Actor.cpp | 2 +- src/00_Core/Actor/Dungeon/ActorActionObject.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 572ead78..74f0da25 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -318,7 +318,7 @@ ARM void Actor::SetTransform(Transform *transform) { ARM void Actor::vfunc_a8() {} -ARM bool Actor::func_Ov00_020c1bfc(s32 param1) { +ARM bool Actor::func_ov00_020c1bfc(s32 param1) { return gMapManager->func_ov00_02084be0(mUnk_020.mUnk_0a[param1], mUnk_020.mUnk_08[param1]); } diff --git a/src/00_Core/Actor/Dungeon/ActorActionObject.cpp b/src/00_Core/Actor/Dungeon/ActorActionObject.cpp index fdef3d9e..0a2c3970 100644 --- a/src/00_Core/Actor/Dungeon/ActorActionObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorActionObject.cpp @@ -63,7 +63,7 @@ ARM void ActorActionObject::vfunc_14(u32 param1) { if (!gMapManager->func_ov00_020836dc((u32) mUnk_020.mUnk_00[1], 0)) { return; } - if (mUnk_020.mUnk_0a[0] != 0 && !this->func_Ov00_020c1bfc(0)) { + if (mUnk_020.mUnk_0a[0] != 0 && !this->func_ov00_020c1bfc(0)) { return; } if (flag != 0 && !gAdventureFlags->Get(flag)) { -- cgit v1.2.3