Decompile ActorUnkAROW (83%) (#70)

* refactor: unknown arow actor to arrow

* refactor: rename ActorUnkArow_c4 and remove warning

* refactor: rename class in system files

* feat: match actorprofilearrow

* feat: progress decompilation

* feat: rename actor to ActorShotArrow

* feat: change mangled name

* feat: decompile some functions and mark unmatched functions as non-matching

* feat: progress

* feat: decompiling function 020f206c

* feat: change two fields for struct padding

* feat: remove non-matching comment on matched function

* feat: decompiling function 020f20bc

* refactor: fix .bss mangled names

* feat: decompiling 020f2134

* feat: decompiling func_ov031_020f2160

* feat: matching function func_ov031_020f21dc

* feat: use correct mangled names in jp version

* fix: change back arm9/delinks in eur version

* feat: non-matching function 020f1a64

* feat: decompile 020f2270

* feat: decompile function 020f2280

* feat: uncompile func_ov031_020f229c

* feat: match 020f22d4 add UnkSystem{4,5} as fields

* feat: reverse 020f2b8c

* feat: 020f2bbc

* feat: 020f2bec

* feat: 020f3304

* style: explicitly indicate floating values when using FLOAT_TO_Q20

* style: move external function to the top

* feat: begin of 020f3258

* feat: decompile 020f32c4

* feat: propagate mangled names changes to japan version

* feat: begin decompilation of func_ov031_020f370c

* feat: begin weird decompilation of func_ov031_020f3d4c

* feat: decompile function 020f3d04

* feat: better matching

* feat: matching function func_ov031_020f2214

* feat: decompile the function 020f3258

* feat: increase matched code

* feat: decompile function func_ov031_020f2794

* feat: decompile function func_ov031_020f18bc

* feat: decompile almost all func_ov031_020f195c

* feat: decompile 3/4 of func_ov031_020f173c

* refactor: change back function's return type to void

* feat: begin decompilation of func_ov031_020f1b04

* feat: advance decompilation of 020f1c7c

* feat: decompile 020f1e3c

* feat: decompile function func_ov031_020f1f54

* refactor: move func(Actor *) into ActorShotArrow class

* feat: introduce ActorShotArrow_194 thanks to Yanis002

* fix: use FX32 in macros over old Q20

* fix: praying magic behaviour

* revert: revert before build failure

* revert: remove all relocs.txt magic stuff

* revert: introduce back correct symbols

* revert: introduce back CORRECTLY correct symbols

* feat: rename vtable

* fix: wrong hex in comment

* feat: huge improvements

* fix: undefined 02081d7c

* fix: awful symbol name

* fix: part of mangled name in jp version

* fix: rest of the line disappeared

* fix: try to fix jp version

* fix: apply eur fix to jp

* feat: add function 020f374c

* fix: full match of 020f173c

* feat: move function in upperclass

* feat: change ActorRupee to use class function

* feat: try decompiling func_ov031_020f2ef0

* feat: improvements

* feat: improvements

* docs: add comment

* fix: build issues

* feat: improvements

* feat: improvements

* feat: forget inclusion of unkstruct

* feat: enhanced

* feat: some improvements

* style: better style

* feat: decompile function and cleanup

* refactor: remove .cache ??

* review

---------

Co-authored-by: Yanis002 <35189056+Yanis002@users.noreply.github.com>
This commit is contained in:
Alessevan
2026-06-21 19:20:15 -04:00
committed by GitHub
parent 6062d1f43c
commit f66583c194
46 changed files with 1731 additions and 410 deletions
+4 -5
View File
@@ -31,7 +31,6 @@ extern "C" void func_02097bb8(void);
extern "C" void func_ov000_0205c1f0(unk32 *, unk16);
extern "C" void func_ov000_0205c204(unk32 *, VecFx32 *, unk32, unk32, unk32);
extern "C" void func_ov000_0208bc00(UnkStruct_027e0ce0 *, unk16, unk16 *);
extern "C" void func_ov000_02098838();
extern "C" void func_ov017_020bf99c(void);
extern "C" void func_ov017_02097bec(Actor_9C *);
@@ -261,7 +260,7 @@ void ActorHeart::func_ov031_020ef2ec() {
}
void ActorHeart::func_ov031_020ef2f8() {
func_ov000_02098838();
this->func_ov000_02098838();
if (this->mVel.y > 0) {
return;
}
@@ -437,14 +436,14 @@ ActorHeart_C4::ActorHeart_C4(Actor *param1) :
this->mUnk_04 = 1;
}
bool ActorHeart_C4::vfunc_00(ActorRef ref, unk32 param_3) {
if (param_3 != 0) {
bool ActorHeart_C4::vfunc_00(ActorRef ref, unk32 param3) {
if (param3 != 0) {
ActorHeart *pHeart = this->GetActorPtr<ActorHeart>();
pHeart->mUnk_C4 = ref;
pHeart->SetState(ActorHeartState_4);
}
return this->Actor_C4::vfunc_00(ref, param_3);
return this->Actor_C4::vfunc_00(ref, param3);
}
void ActorHeart_C4::vfunc_04() {
+8 -8
View File
@@ -526,20 +526,20 @@ void ActorItemDrop::func_ov031_020fa900() {
}
}
ActorItemDrop_C4::ActorItemDrop_C4(Actor *param_1) :
Actor_C4(param_1) {
this->mUnk_20 = param_1;
ActorItemDrop_C4::ActorItemDrop_C4(Actor *param1) :
Actor_C4(param1) {
this->mUnk_20 = param1;
this->mUnk_04 = 0x1;
}
bool ActorItemDrop_C4::vfunc_00(ActorRef ref, unk32 param_2) {
if (param_2 != 0) {
bool ActorItemDrop_C4::vfunc_00(ActorRef ref, unk32 param2) {
if (param2 != 0) {
ActorItemDrop *actorDroppedItem = this->GetActorPtr<ActorItemDrop>();
actorDroppedItem->mUnk_E0 = ref;
actorDroppedItem->SetState(ActorItemDropState_4);
}
return Actor_C4::vfunc_00(ref, param_2);
return Actor_C4::vfunc_00(ref, param2);
}
void ActorItemDrop_C4::vfunc_04() {
@@ -547,9 +547,9 @@ void ActorItemDrop_C4::vfunc_04() {
Actor_C4::vfunc_04();
}
void ActorItemDrop_C4::vfunc_0C(unk32 param_1) {
void ActorItemDrop_C4::vfunc_0C(unk32 param1) {
this->GetActorPtr<ActorItemDrop>()->SetState(ActorItemDropState_1);
Actor_C4::vfunc_0C(param_1);
Actor_C4::vfunc_0C(param1);
}
void ActorItemDrop_C4::vfunc_08() {
+2 -3
View File
@@ -10,7 +10,6 @@
extern "C" void func_01ffedac(u16 *, VecFx32 *);
extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, VecFx32 *);
extern "C" unk32 func_02017158();
extern "C" void func_ov000_02098838();
extern "C" void func_ov017_020bf99c();
extern "C" void func_ov031_0210acd4(u8);
extern "C" unk32 func_ov031_0210af50(u16, unk32 *);
@@ -639,7 +638,7 @@ void ActorRupee::vfunc_20() {
}
void ActorRupee::func_ov031_020e9b88() {
func_ov000_02098838();
this->func_ov000_02098838();
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
if (this->mUnk_5C.mInitialPos.y < this->mPos.y + this->mVel.y) {
@@ -655,7 +654,7 @@ void ActorRupee::func_ov031_020e9b88() {
}
void ActorRupee::func_ov031_020e9be8() {
func_ov000_02098838();
this->func_ov000_02098838();
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
if (this->mVel.y < 0) {
File diff suppressed because it is too large Load Diff
-74
View File
@@ -1,74 +0,0 @@
//! TODO: This file was generated automatically and might contain errors
#include "Actor/ActorUnkAROW.hpp"
#include "System/SysNew.hpp"
DECL_PROFILE(ActorProfileUnkAROW);
Actor *ActorProfileUnkAROW::Create() {
return new(HeapIndex_2) ActorUnkAROW();
}
ActorProfileUnkAROW::ActorProfileUnkAROW() :
ActorProfile(ActorId_AROW) {}
ActorUnkAROW::ActorUnkAROW() {}
void ActorUnkAROW::func_ov031_020f1404(void) {}
void ActorUnkAROW::func_ov031_020f1608(void) {}
void ActorUnkAROW::func_ov031_020f173c(void) {}
void ActorUnkAROW::func_ov031_020f1868(void) {}
void ActorUnkAROW::func_ov031_020f1874(void) {}
void ActorUnkAROW::func_ov031_020f1878(void) {}
void ActorUnkAROW::func_ov031_020f18bc(void) {}
void ActorUnkAROW::func_ov031_020f1958(void) {}
void ActorUnkAROW::func_ov031_020f195c(void) {}
void ActorUnkAROW::func_ov031_020f1a64(void) {}
void ActorUnkAROW::func_ov031_020f1b04(void) {}
void ActorUnkAROW::func_ov031_020f1c24(void) {}
void ActorUnkAROW::func_ov031_020f1c7c(void) {}
void ActorUnkAROW::func_ov031_020f1dd4(void) {}
void ActorUnkAROW::func_ov031_020f1e3c(void) {}
void ActorUnkAROW::func_ov031_020f1f54(void) {}
void ActorUnkAROW::func_ov031_020f2010(void) {}
void ActorUnkAROW::func_ov031_020f206c(void) {}
void ActorUnkAROW::func_ov031_020f20bc(void) {}
void ActorUnkAROW::func_ov031_020f2134(void) {}
void ActorUnkAROW::func_ov031_020f2160(void) {}
void ActorUnkAROW::func_ov031_020f21dc(void) {}
void ActorUnkAROW::func_ov031_020f2214(void) {}
void ActorUnkAROW::func_ov031_020f2270(void) {}
void ActorUnkAROW::func_ov031_020f2280(void) {}
void ActorUnkAROW::func_ov031_020f229c(void) {}
void ActorUnkAROW::func_ov031_020f22d4(void) {}
void ActorUnkAROW::func_ov031_020f2310(void) {}
void ActorUnkAROW::func_ov031_020f2654(void) {}
void ActorUnkAROW::func_ov031_020f2794(void) {}
void ActorUnkAROW::func_ov031_020f28ac(void) {}
void ActorUnkAROW::func_ov031_020f2b8c(void) {}
void ActorUnkAROW::func_ov031_020f2bbc(void) {}
void ActorUnkAROW::func_ov031_020f2bec(void) {}
void ActorUnkAROW::func_ov031_020f2c08(void) {}
void ActorUnkAROW::func_ov031_020f2cac(void) {}
void ActorUnkAROW::func_ov031_020f2ef0(void) {}
void ActorUnkAROW::func_ov031_020f2f5c(void) {}
void ActorUnkAROW::func_ov031_020f2f9c(void) {}
void ActorUnkAROW::func_ov031_020f3000(void) {}
void ActorUnkAROW::func_ov031_020f311c(void) {}
void ActorUnkAROW::func_ov031_020f3210(void) {}
void ActorUnkAROW::func_ov031_020f3258(void) {}
void ActorUnkAROW::func_ov031_020f3288(void) {}
void ActorUnkAROW::func_ov031_020f32c4(void) {}
void ActorUnkAROW::func_ov031_020f32e0(void) {}
void ActorUnkAROW::func_ov031_020f3304(void) {}
void ActorUnkAROW::func_ov031_020f3310(void) {}
void ActorUnkAROW::func_ov031_020f33bc(void) {}
void ActorUnkAROW::func_ov031_020f370c(void) {}
void ActorUnkAROW::func_ov031_020f374c(void) {}
void ActorUnkAROW::func_ov031_020f38b0(void) {}
void ActorUnkAROW::func_ov031_020f3c38(void) {}
void ActorUnkAROW::func_ov031_020f3d04(void) {}
void ActorUnkAROW::func_ov031_020f3d4c(void) {}
ActorUnkAROW::~ActorUnkAROW() {}
ActorProfileUnkAROW::~ActorProfileUnkAROW() {}
+1 -1
View File
@@ -12,7 +12,7 @@ ActorProfileUnkSWON::ActorProfileUnkSWON() :
ActorUnkSWON::ActorUnkSWON() {}
bool ActorUnkSWON::vfunc_18(unk32 param_1) {
bool ActorUnkSWON::vfunc_18(unk32 param1) {
switch (this->mUnk_5C.mParams[0]) {
case 0x0:
if (!this->func_ov000_02098a60(0x1)) {
+3 -1
View File
@@ -102,7 +102,9 @@ void ActorUnkMRD2::func_ov075_0215b4dc(void) {}
void ActorUnkMRD2::func_ov075_0215b578(void) {}
void ActorUnkMRD2::func_ov075_0215b914(void) {}
void ActorUnkMRD2::func_ov075_0215bbe8(void) {}
void ActorUnkMRD2::func_ov075_0215bbf0(void) {}
bool ActorUnkMRD2::func_ov075_0215bbf0(ActorRef *param1, unk32 *param2) {
return false;
}
void ActorUnkMRD2::func_ov075_0215bc50(void) {}
void ActorUnkMRD2::func_ov075_0215bd40(void) {}
void ActorUnkMRD2::func_ov075_0215bd50(void) {}
+1 -1
View File
@@ -49,7 +49,7 @@ void ActorUnkIWTS::func_ov084_02152cd8(void) {}
void ActorUnkIWTS::func_ov084_02152cec(void) {}
void ActorUnkIWTS::func_ov084_02152d10(void) {}
void ActorUnkIWTS::func_ov084_02153018(void) {}
void ActorUnkIWTS::func_ov084_02153064(void) {}
bool ActorUnkIWTS::func_ov084_02153064(ActorRef *, Mat4x3p **) {}
void ActorUnkIWTS::func_ov084_021530d4(void) {}
void ActorUnkIWTS::func_ov084_0215315c(void) {}
void ActorUnkIWTS::func_ov084_02153194(void) {}