summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYanis <35189056+Yanis002@users.noreply.github.com>2025-07-16 13:14:03 +0200
committerGitHub <noreply@github.com>2025-07-16 13:14:03 +0200
commitce9f96d932c0028262821ff3fc39a4b05c977285 (patch)
tree472cfbb5d063d08e04d3b8b3250281da3c3fccb5
parent93b942b2de0b78961dbb5c52fb491c96c6f4656d (diff)
Match `00_Core/Actor/Dungeon/ActorEventIcon.cpp` (#119)
* match ActorEventIcon * mark as complete
-rw-r--r--config/eur/arm9/overlays/ov000/delinks.txt1
-rw-r--r--config/eur/arm9/overlays/ov000/relocs.txt2
-rw-r--r--config/eur/arm9/overlays/ov000/symbols.txt8
-rw-r--r--config/eur/arm9/symbols.txt2
-rw-r--r--config/usa/arm9/overlays/ov000/delinks.txt1
-rw-r--r--config/usa/arm9/overlays/ov000/relocs.txt2
-rw-r--r--config/usa/arm9/overlays/ov000/symbols.txt8
-rw-r--r--config/usa/arm9/symbols.txt2
-rw-r--r--include/Actor/Dungeon/ActorEventIcon.hpp5
-rw-r--r--include/Unknown/UnkStruct_0202e1a0.hpp4
-rw-r--r--include/Unknown/UnkStruct_02035064.hpp2
-rw-r--r--src/00_Core/Actor/Dungeon/ActorEventIcon.cpp155
12 files changed, 166 insertions, 26 deletions
diff --git a/config/eur/arm9/overlays/ov000/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt
index 2981bdf4..9fcaf6f8 100644
--- a/config/eur/arm9/overlays/ov000/delinks.txt
+++ b/config/eur/arm9/overlays/ov000/delinks.txt
@@ -28,6 +28,7 @@ src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp:
.sbss start:0x020ecd64 end:0x020ecd84
src/00_Core/Actor/Dungeon/ActorEventIcon.cpp:
+ complete
.text start:0x020904f4 end:0x020908f8
.init start:0x020df6f8 end:0x020df738
.ctor start:0x020e1ecc end:0x020e1ed0
diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt
index 190c2319..3b4be288 100644
--- a/config/eur/arm9/overlays/ov000/relocs.txt
+++ b/config/eur/arm9/overlays/ov000/relocs.txt
@@ -2313,7 +2313,7 @@ from:0x02090518 kind:arm_call to:0x02090524 module:overlay(0)
from:0x02090520 kind:load to:0x027e0fe0 module:dtcm
from:0x0209052c kind:arm_call to:0x020c1554 module:overlay(0)
from:0x02090548 kind:arm_call to:0x02035064 module:main
-from:0x0209057c kind:load to:0x020e2aa8 module:overlay(0)
+from:0x0209057c kind:load to:0x020e2aa0 add:8 module:overlay(0)
from:0x020905c0 kind:arm_call to:0x020350b4 module:main
from:0x020905d8 kind:arm_call to:0x020351b8 module:main
from:0x020905fc kind:arm_call to:0x020350b4 module:main
diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt
index 74fa30f5..c9c6efa3 100644
--- a/config/eur/arm9/overlays/ov000/symbols.txt
+++ b/config/eur/arm9/overlays/ov000/symbols.txt
@@ -960,7 +960,7 @@ func_ov000_0209048c kind:function(arm,size=0x38) addr:0x0209048c
func_ov000_020904c4 kind:function(arm,size=0x14) addr:0x020904c4
func_ov000_020904d8 kind:function(arm,size=0x1c) addr:0x020904d8
_ZN14ActorEventIcon6CreateEv kind:function(arm,size=0x30) addr:0x020904f4
-_ZN14ActorEventIconC2Ev kind:function(arm,size=0x5c) addr:0x02090524
+_ZN14ActorEventIconC1Ev kind:function(arm,size=0x5c) addr:0x02090524
_ZN14ActorEventIcon4InitEv kind:function(arm,size=0xb0) addr:0x02090580
_ZN14ActorEventIcon8vfunc_14Ej kind:function(arm,size=0xc) addr:0x02090630
_ZN14ActorEventIcon8vfunc_18Ej kind:function(arm,size=0xc) addr:0x0209063c
@@ -3940,7 +3940,7 @@ __sinit_ov000_020df4cc kind:function(arm,size=0x174) addr:0x020df4cc
__sinit_ov000_020df640 kind:function(arm,size=0x38) addr:0x020df640
__sinit_ActorSwitchObject.cpp kind:function(arm,size=0x40) addr:0x020df678
__sinit_ov000_020df6b8 kind:function(arm,size=0x40) addr:0x020df6b8
-__sinit_ActorEventIcon.cpp kind:function(arm,size=0x40) addr:0x020df6f8
+__sinit_ActorEventIcon.cpp kind:function(arm,size=0x40) addr:0x020df6f8 local
__sinit_ov000_020df738 kind:function(arm,size=0x38) addr:0x020df738
__sinit_ov000_020df770 kind:function(arm,size=0x20) addr:0x020df770
__sinit_ov000_020df790 kind:function(arm,size=0x1718) addr:0x020df790
@@ -4066,7 +4066,7 @@ data_ov000_020e2870 kind:data(any) addr:0x020e2870
data_ov000_020e289c kind:data(any) addr:0x020e289c
_ZTV17ActorSwitchObject kind:data(any) addr:0x020e2930
data_ov000_020e29ec kind:data(any) addr:0x020e29ec
-_ZTV14ActorEventIcon kind:data(any) addr:0x020e2aa8
+_ZTV14ActorEventIcon kind:data(any) addr:0x020e2aa0
data_ov000_020e2b64 kind:data(any) addr:0x020e2b64
data_ov000_020e2bb4 kind:data(any) addr:0x020e2bb4
data_ov000_020e2c04 kind:data(any) addr:0x020e2c04
@@ -5849,7 +5849,7 @@ data_ov000_020ecd64 kind:bss addr:0x020ecd64
_ZN17ActorSwitchObject5gTypeE kind:bss addr:0x020ecd70
data_ov000_020ecd84 kind:bss addr:0x020ecd84
data_ov000_020ecd90 kind:bss addr:0x020ecd90
-data_ov000_020ecda4 kind:bss addr:0x020ecda4
+@558 kind:bss addr:0x020ecda4 local
_ZN14ActorEventIcon5gTypeE kind:bss addr:0x020ecdb0
data_ov000_020ecdc4 kind:bss addr:0x020ecdc4
data_ov000_020ecdcc kind:bss addr:0x020ecdcc
diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt
index 59241971..4be3fe36 100644
--- a/config/eur/arm9/symbols.txt
+++ b/config/eur/arm9/symbols.txt
@@ -1719,7 +1719,7 @@ func_0203490c kind:function(arm,size=0x30) addr:0x0203490c
func_0203493c kind:function(arm,size=0x48) addr:0x0203493c
func_02034984 kind:function(arm,size=0x48) addr:0x02034984
func_020349cc kind:function(arm,size=0x50) addr:0x020349cc
-func_02034a1c kind:function(arm,size=0xf0) addr:0x02034a1c
+_ZN18UnkStruct_0203506413func_02034a1cEiiP18UnkStruct_01ffbe34 kind:function(arm,size=0xf0) addr:0x02034a1c
func_02034b0c kind:function(arm,size=0x4c) addr:0x02034b0c
func_02034b58 kind:function(arm,size=0x38) addr:0x02034b58
func_02034b90 kind:function(arm,size=0x38) addr:0x02034b90
diff --git a/config/usa/arm9/overlays/ov000/delinks.txt b/config/usa/arm9/overlays/ov000/delinks.txt
index 2b777930..963fb43f 100644
--- a/config/usa/arm9/overlays/ov000/delinks.txt
+++ b/config/usa/arm9/overlays/ov000/delinks.txt
@@ -28,6 +28,7 @@ src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp:
.sbss start:0x020ecd04 end:0x020ecd24
src/00_Core/Actor/Dungeon/ActorEventIcon.cpp:
+ complete
.text start:0x02090494 end:0x02090898
.init start:0x020df698 end:0x020df6d8
.ctor start:0x020e1e6c end:0x020e1e70
diff --git a/config/usa/arm9/overlays/ov000/relocs.txt b/config/usa/arm9/overlays/ov000/relocs.txt
index 8d0854cd..444265ad 100644
--- a/config/usa/arm9/overlays/ov000/relocs.txt
+++ b/config/usa/arm9/overlays/ov000/relocs.txt
@@ -2313,7 +2313,7 @@ from:0x020904b8 kind:arm_call to:0x020904c4 module:overlay(0)
from:0x020904c0 kind:load to:0x027e0fe0 module:dtcm
from:0x020904cc kind:arm_call to:0x020c14f4 module:overlay(0)
from:0x020904e8 kind:arm_call to:0x02035020 module:main
-from:0x0209051c kind:load to:0x020e2a48 module:overlay(0)
+from:0x0209051c kind:load to:0x020e2a40 add:8 module:overlay(0)
from:0x02090560 kind:arm_call to:0x02035070 module:main
from:0x02090578 kind:arm_call to:0x02035174 module:main
from:0x0209059c kind:arm_call to:0x02035070 module:main
diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt
index fa4df74f..86737deb 100644
--- a/config/usa/arm9/overlays/ov000/symbols.txt
+++ b/config/usa/arm9/overlays/ov000/symbols.txt
@@ -960,7 +960,7 @@ func_ov000_0209048c kind:function(arm,size=0x38) addr:0x0209042c
func_ov000_020904c4 kind:function(arm,size=0x14) addr:0x02090464
func_ov000_020904d8 kind:function(arm,size=0x1c) addr:0x02090478
_ZN14ActorEventIcon6CreateEv kind:function(arm,size=0x30) addr:0x02090494
-_ZN14ActorEventIconC2Ev kind:function(arm,size=0x5c) addr:0x020904c4
+_ZN14ActorEventIconC1Ev kind:function(arm,size=0x5c) addr:0x020904c4
_ZN14ActorEventIcon4InitEv kind:function(arm,size=0xb0) addr:0x02090520
_ZN14ActorEventIcon8vfunc_14Ej kind:function(arm,size=0xc) addr:0x020905d0
_ZN14ActorEventIcon8vfunc_18Ej kind:function(arm,size=0xc) addr:0x020905dc
@@ -3940,7 +3940,7 @@ __sinit_ov000_020df4cc kind:function(arm,size=0x174) addr:0x020df46c
__sinit_ov000_020df640 kind:function(arm,size=0x38) addr:0x020df5e0
__sinit_ActorSwitchObject.cpp kind:function(arm,size=0x40) addr:0x020df618
__sinit_ov000_020df6b8 kind:function(arm,size=0x40) addr:0x020df658
-__sinit_ActorEventIcon.cpp kind:function(arm,size=0x40) addr:0x020df698
+__sinit_ActorEventIcon.cpp kind:function(arm,size=0x40) addr:0x020df698 local
__sinit_ov000_020df738 kind:function(arm,size=0x38) addr:0x020df6d8
__sinit_ov000_020df770 kind:function(arm,size=0x20) addr:0x020df710
__sinit_ov000_020df790 kind:function(arm,size=0x1718) addr:0x020df730
@@ -4066,7 +4066,7 @@ data_ov000_020e2870 kind:data(any) addr:0x020e2810
data_ov000_020e289c kind:data(any) addr:0x020e283c
_ZTV17ActorSwitchObject kind:data(any) addr:0x020e28d0
data_ov000_020e29ec kind:data(any) addr:0x020e298c
-_ZTV14ActorEventIcon kind:data(any) addr:0x020e2a48
+_ZTV14ActorEventIcon kind:data(any) addr:0x020e2a40
data_ov000_020e2b64 kind:data(any) addr:0x020e2b04
data_ov000_020e2bb4 kind:data(any) addr:0x020e2b54
data_ov000_020e2c04 kind:data(any) addr:0x020e2ba4
@@ -5849,7 +5849,7 @@ data_ov000_020ecd64 kind:bss addr:0x020ecd04
_ZN17ActorSwitchObject5gTypeE kind:bss addr:0x020ecd10
data_ov000_020ecd84 kind:bss addr:0x020ecd24
data_ov000_020ecd90 kind:bss addr:0x020ecd30
-data_ov000_020ecda4 kind:bss addr:0x020ecd44
+@558 kind:bss addr:0x020ecd44 local
_ZN14ActorEventIcon5gTypeE kind:bss addr:0x020ecd50
data_ov000_020ecdc4 kind:bss addr:0x020ecd64
data_ov000_020ecdcc kind:bss addr:0x020ecd6c
diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt
index 68451708..14c1bb5a 100644
--- a/config/usa/arm9/symbols.txt
+++ b/config/usa/arm9/symbols.txt
@@ -1719,7 +1719,7 @@ func_0203490c kind:function(arm,size=0x30) addr:0x020348c8
func_0203493c kind:function(arm,size=0x48) addr:0x020348f8
func_02034984 kind:function(arm,size=0x48) addr:0x02034940
func_020349cc kind:function(arm,size=0x50) addr:0x02034988
-func_02034a1c kind:function(arm,size=0xf0) addr:0x020349d8
+_ZN18UnkStruct_0203506413func_02034a1cEiiP18UnkStruct_01ffbe34 kind:function(arm,size=0xf0) addr:0x020349d8
func_02034b0c kind:function(arm,size=0x4c) addr:0x02034ac8
func_02034b58 kind:function(arm,size=0x38) addr:0x02034b14
func_02034b90 kind:function(arm,size=0x38) addr:0x02034b4c
diff --git a/include/Actor/Dungeon/ActorEventIcon.hpp b/include/Actor/Dungeon/ActorEventIcon.hpp
index a7a86751..774905aa 100644
--- a/include/Actor/Dungeon/ActorEventIcon.hpp
+++ b/include/Actor/Dungeon/ActorEventIcon.hpp
@@ -12,9 +12,10 @@ public:
static ActorType gType;
/* 000 (base) */
- /* 158 */ void *mUnk_158;
+ /* 158 */ u32 mUnk_158;
/* 15c */ u32 mUnk_15c;
/* 160 */ UnkStruct_02035064 mUnk_160;
+ /* 1e8 */
/* 00 */ virtual ~ActorEventIcon() override;
/* 08 */ virtual bool Init() override;
@@ -25,6 +26,6 @@ public:
static ActorEventIcon *Create();
ActorEventIcon();
- u32 func_ov000_02090648(u32 param1);
+ void func_ov000_02090648(u32 param1);
bool func_ov000_02090774(u32 param1);
};
diff --git a/include/Unknown/UnkStruct_0202e1a0.hpp b/include/Unknown/UnkStruct_0202e1a0.hpp
index d6d6a793..aacd6144 100644
--- a/include/Unknown/UnkStruct_0202e1a0.hpp
+++ b/include/Unknown/UnkStruct_0202e1a0.hpp
@@ -5,10 +5,10 @@
// astruct_11
struct UnkStruct_0202e1a0 {
- /* 00 */ unk16 mUnk_00;
+ /* 00 */ u16 mUnk_00;
/* 02 */ unk16 mUnk_02;
/* 04 */ s32 mUnk_04;
- /* 08 */ u32 mUnk_08;
+ /* 08 */ s32 mUnk_08;
/* 0c */ s32 mUnk_0c;
/* 10 */ s32 mUnk_10;
/* 14 */ s32 mUnk_14;
diff --git a/include/Unknown/UnkStruct_02035064.hpp b/include/Unknown/UnkStruct_02035064.hpp
index a55b8808..425683de 100644
--- a/include/Unknown/UnkStruct_02035064.hpp
+++ b/include/Unknown/UnkStruct_02035064.hpp
@@ -36,7 +36,7 @@ public:
/* 74 */ u16 *mUnk_74;
/* 78 */ s32 *mUnk_78;
/* 7c */ u32 mUnk_7c;
- /* 80 */ u16 mUnk_80;
+ /* 80 */ s16 mUnk_80;
/* 82 */ unk16 mUnk_82;
/* 84 */ unk16 mUnk_84;
/* 86 */ bool mUnk_86;
diff --git a/src/00_Core/Actor/Dungeon/ActorEventIcon.cpp b/src/00_Core/Actor/Dungeon/ActorEventIcon.cpp
index 22e35d8e..a99cee25 100644
--- a/src/00_Core/Actor/Dungeon/ActorEventIcon.cpp
+++ b/src/00_Core/Actor/Dungeon/ActorEventIcon.cpp
@@ -1,13 +1,150 @@
#include "Actor/Dungeon/ActorEventIcon.hpp"
+#include "Player/PlayerBase.hpp"
+#include "Save/AdventureFlags.hpp"
+extern u32 **data_027e0fe0[];
+extern void *data_027e0d3c;
+extern "C" unk32 func_ov000_02079470(void *, Vec3p *, unk32, unk32, unk32 *, unk32 *, unk32, unk32);
+
+#pragma section sbss begin
ActorType ActorEventIcon::gType = ActorType(ActorTypeId_EventIcon, (ActorCreateFunc) ActorEventIcon::Create, NULL);
+#pragma section sbss end
+
+ARM ActorEventIcon *ActorEventIcon::Create() {
+ return new(*data_027e0fe0[0], 4) ActorEventIcon();
+}
+
+ARM ActorEventIcon::ActorEventIcon() :
+ mUnk_158(0),
+ mUnk_15c(0) {
+ this->mHitbox.pos.x = 0;
+ this->mHitbox.pos.y = 0x4000;
+ this->mHitbox.pos.z = 0;
+ this->mHitbox.size = 0x4000;
+
+ this->mUnk_08c.pos.x = 0;
+ this->mUnk_08c.pos.y = 0x4000;
+ this->mUnk_08c.pos.z = 0;
+ this->mUnk_08c.size = 0x4000;
+}
+
+ARM bool ActorEventIcon::Init() {
+ switch (this->mUnk_144) {
+ case 1:
+ case 2:
+ this->mUnk_15c = 0xFFFFFFF2;
+ this->mUnk_160.func_020350b4(3, 3, 0x19, 0, 0);
+ this->mUnk_160.func_020351b8(true, false, false, false);
+ break;
+ default:
+ this->mUnk_15c = 0xFFFFFFF4;
+ this->mUnk_160.func_020350b4(3, 0, 0x19, 0, 0);
+ this->mUnk_160.func_020351b8(false, false, false, false);
+ break;
+ }
+
+ this->func_ov000_02090774(0);
+ return true;
+}
+
+ARM void ActorEventIcon::vfunc_14(u32 param1) {
+ func_ov000_02090648(param1);
+}
+
+ARM void ActorEventIcon::vfunc_18(u32 param1) {
+ func_ov000_02090648(param1);
+}
+
+ARM void ActorEventIcon::func_ov000_02090648(u32 param1) {
+ if (!this->func_ov00_020c313c(param1)) {
+ return;
+ }
+
+ this->mPrevPos = this->mPos;
+
+ switch (this->mUnk_130) {
+ case 0:
+ switch (this->mUnk_140) {
+ case 0:
+ if (Vec3p_Distance(&this->mPos, &gPlayerPos) <= 0x1000) {
+ this->func_ov000_02090774(1);
+ return;
+ }
+ break;
+ case 1: break;
+ case 2:
+ if (this->mUnk_160.mUnk_5c.mUnk_08 >= 0x5A000 && Vec3p_Distance(&this->mPos, &gPlayerPos) > 0x1000) {
+ this->func_ov000_02090774(1);
+ return;
+ }
+ break;
+ default: break;
+ }
+
+ if (this->mUnk_160.mUnk_5c.mUnk_00 == 1) {
+ if (this->mUnk_160.mUnk_5c.func_0202e58c() != 0) {
+ func_ov000_02090774(1);
+ }
+ } else {
+ if (!gAdventureFlags->func_ov00_02097738()) {
+ this->mUnk_158++;
+ }
+
+ if (this->mUnk_158 >= 0x258) {
+ func_ov000_02090774(1);
+ }
+ }
+ break;
+ case 1: break;
+ default: break;
+ }
+
+ this->mUnk_160.func_0203516c();
+}
+
+ARM bool ActorEventIcon::func_ov000_02090774(u32 param1) {
+ this->mUnk_130 = param1;
+
+ switch (this->mUnk_130) {
+ case 0: this->mUnk_158 = 0; break;
+ case 1: this->mAlive = false; break;
+ default: break;
+ }
+
+ return true;
+}
+
+ARM void ActorEventIcon::vfunc_1c(u16 *param1) {
+ unk32 iStack_c;
+ unk32 iStack_10;
+
+ if (((*param1 & 4) == 0) && ((*param1 & 8) == 0)) {
+ return;
+ }
+
+ if (func_ov000_02079470(data_027e0d3c, &this->mPos, 0, 0, &iStack_c, &iStack_10, 0, 0) != 0) {
+ switch (this->mUnk_144) {
+ case 1:
+ if (this->mUnk_160.mUnk_80 >= 8) {
+ iStack_10 -= 8;
+ } else {
+ iStack_10 -= 0xe;
+ }
+ break;
+ case 2:
+ iStack_c++;
+
+ if (this->mUnk_160.mUnk_80 >= 8) {
+ iStack_10 -= 0xb;
+ } else {
+ iStack_10 -= 0x11;
+ }
+ break;
+ default: iStack_10 += this->mUnk_15c; break;
+ }
+
+ this->mUnk_160.func_02034a1c(iStack_c, iStack_10, 0);
+ }
+}
-ActorEventIcon *ActorEventIcon::Create() {}
-ActorEventIcon::ActorEventIcon() {}
-bool ActorEventIcon::Init() {}
-void ActorEventIcon::vfunc_14(u32 param1) {}
-void ActorEventIcon::vfunc_18(u32 param1) {}
-u32 ActorEventIcon::func_ov000_02090648(u32 param1) {}
-bool ActorEventIcon::func_ov000_02090774(u32 param1) {}
-void ActorEventIcon::vfunc_1c(u16 *param1) {}
-ActorEventIcon::~ActorEventIcon() {}
+ARM ActorEventIcon::~ActorEventIcon() {}