diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 65e60aea..c71ab32a 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -2920,7 +2920,7 @@ func_ov000_020c56d8 kind:function(arm,size=0x9c) addr:0x20c56d8 func_ov000_020c5774 kind:function(arm,size=0x88) addr:0x20c5774 func_ov000_020c57fc kind:function(arm,size=0x128) addr:0x20c57fc func_ov000_020c5924 kind:function(arm,size=0x100) addr:0x20c5924 -func_ov000_020c5a24 kind:function(arm,size=0x38) addr:0x20c5a24 +_Z13GetRupeeValuej kind:function(arm,size=0x38) addr:0x20c5a24 func_ov000_020c5a5c kind:function(arm,size=0xd8) addr:0x20c5a5c func_ov000_020c5b34 kind:function(arm,size=0xb8) addr:0x20c5b34 func_ov000_020c5bec kind:function(arm,size=0x40) addr:0x20c5bec diff --git a/config/eur/arm9/overlays/ov014/relocs.txt b/config/eur/arm9/overlays/ov014/relocs.txt index dd7bc1cb..2893de9a 100644 --- a/config/eur/arm9/overlays/ov014/relocs.txt +++ b/config/eur/arm9/overlays/ov014/relocs.txt @@ -3214,7 +3214,7 @@ from:0x0213ae80 kind:arm_call to:0x0202e9dc module:main from:0x0213ae8c kind:arm_call to:0x0213ae98 module:overlay(14) from:0x0213ae94 kind:load to:0x027e0fe0 module:dtcm from:0x0213aea0 kind:arm_call to:0x020c1554 module:overlay(0) -from:0x0213aec8 kind:load to:0x021589e4 module:overlay(14) +from:0x0213aec8 kind:load to:0x021589dc add:8 module:overlay(14) from:0x0213aee0 kind:arm_call to:0x0213b70c module:overlay(14) from:0x0213af70 kind:arm_call to:0x0213b204 module:overlay(14) from:0x0213afac kind:arm_call to:0x0213b204 module:overlay(14) diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index 27b5de82..921e70c8 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -793,9 +793,9 @@ _ZN10ActorRupee18func_ov14_0213b204Ei kind:function(arm,size=0x50) addr:0x213b20 _ZN10ActorRupee6UpdateEb kind:function(arm,size=0x2c8) addr:0x213b254 _ZN10ActorRupee8vfunc_14Ej kind:function(arm,size=0x38) addr:0x213b51c _ZN10ActorRupee8vfunc_18Ej kind:function(arm,size=0x38) addr:0x213b554 -_ZN10ActorRupee8vfunc_20Ei kind:function(arm,size=0x68) addr:0x213b58c +_ZN10ActorRupee8vfunc_20Eb kind:function(arm,size=0x68) addr:0x213b58c _ZN10ActorRupee18func_ov14_0213b5f4EjiP5Vec3pb kind:function(arm,size=0xb0) addr:0x213b5f4 -_ZN10ActorRupee18func_ov14_0213b6a4EjPv kind:function(arm,size=0x68) addr:0x213b6a4 +_ZN10ActorRupee18func_ov14_0213b6a4EjP19Actor_UnkStruct_012 kind:function(arm,size=0x68) addr:0x213b6a4 _ZN10ActorRupee18func_ov14_0213b70cEj kind:function(arm,size=0x3c) addr:0x213b70c _ZN10ActorRupeeD0Ev kind:function(arm,size=0x1c) addr:0x213b748 _ZN10ActorRupeeD2Ev kind:function(arm,size=0x14) addr:0x213b764 @@ -1684,7 +1684,7 @@ func_ov014_0215507c kind:function(arm,size=0x40) addr:0x215507c func_ov014_021550bc kind:function(arm,size=0x40) addr:0x21550bc func_ov014_021550fc kind:function(arm,size=0x40) addr:0x21550fc func_ov014_0215513c kind:function(arm,size=0x40) addr:0x215513c -func_ov014_0215517c kind:function(arm,size=0x5c) addr:0x215517c +__sinit_ActorRupee.cpp kind:function(arm,size=0x5c) addr:0x215517c func_ov014_021551d8 kind:function(arm,size=0x40) addr:0x21551d8 func_ov014_02155218 kind:function(arm,size=0x38) addr:0x2155218 func_ov014_02155250 kind:function(arm,size=0x3c) addr:0x2155250 @@ -1902,7 +1902,9 @@ data_ov014_021589a8 kind:data(any) addr:0x21589a8 data_ov014_021589ac kind:data(any) addr:0x21589ac data_ov014_021589b0 kind:data(any) addr:0x21589b0 data_ov014_021589b4 kind:data(any) addr:0x21589b4 -_ZTV10ActorRupee kind:data(any) addr:0x21589e4 +data_ov014_021589d4 kind:data(any) addr:0x21589d4 +data_ov014_021589d8 kind:data(any) addr:0x21589d8 +_ZTV10ActorRupee kind:data(any) addr:0x21589dc data_ov014_02158aa0 kind:data(any) addr:0x2158aa0 data_ov014_02158b60 kind:data(any) addr:0x2158b60 data_ov014_02158b64 kind:data(any) addr:0x2158b64 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 88d2aba4..9814c92c 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -2920,7 +2920,7 @@ func_ov000_020c56d8 kind:function(arm,size=0x9c) addr:0x20c5678 func_ov000_020c5774 kind:function(arm,size=0x88) addr:0x20c5714 func_ov000_020c57fc kind:function(arm,size=0x128) addr:0x20c579c func_ov000_020c5924 kind:function(arm,size=0x100) addr:0x20c58c4 -func_ov000_020c5a24 kind:function(arm,size=0x38) addr:0x20c59c4 +_Z13GetRupeeValuej kind:function(arm,size=0x38) addr:0x20c59c4 func_ov000_020c5a5c kind:function(arm,size=0xd8) addr:0x20c59fc func_ov000_020c5b34 kind:function(arm,size=0xb8) addr:0x20c5ad4 func_ov000_020c5bec kind:function(arm,size=0x40) addr:0x20c5b8c diff --git a/config/usa/arm9/overlays/ov014/relocs.txt b/config/usa/arm9/overlays/ov014/relocs.txt index 7a9d94d7..c7441ced 100644 --- a/config/usa/arm9/overlays/ov014/relocs.txt +++ b/config/usa/arm9/overlays/ov014/relocs.txt @@ -3214,7 +3214,7 @@ from:0x0213addc kind:arm_call to:0x0202e9d8 module:main from:0x0213ade8 kind:arm_call to:0x0213adf4 module:overlay(14) from:0x0213adf0 kind:load to:0x027e0fe0 module:dtcm from:0x0213adfc kind:arm_call to:0x020c14f4 module:overlay(0) -from:0x0213ae24 kind:load to:0x02158944 module:overlay(14) +from:0x0213ae24 kind:load to:0x0215893c add:8 module:overlay(14) from:0x0213ae3c kind:arm_call to:0x0213b668 module:overlay(14) from:0x0213aecc kind:arm_call to:0x0213b160 module:overlay(14) from:0x0213af08 kind:arm_call to:0x0213b160 module:overlay(14) diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index cc99c40b..405b4f55 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -793,9 +793,9 @@ _ZN10ActorRupee18func_ov14_0213b204Ei kind:function(arm,size=0x50) addr:0x213b16 _ZN10ActorRupee6UpdateEb kind:function(arm,size=0x2c8) addr:0x213b1b0 _ZN10ActorRupee8vfunc_14Ej kind:function(arm,size=0x38) addr:0x213b478 _ZN10ActorRupee8vfunc_18Ej kind:function(arm,size=0x38) addr:0x213b4b0 -_ZN10ActorRupee8vfunc_20Ei kind:function(arm,size=0x68) addr:0x213b4e8 +_ZN10ActorRupee8vfunc_20Eb kind:function(arm,size=0x68) addr:0x213b4e8 _ZN10ActorRupee18func_ov14_0213b5f4EjiP5Vec3pb kind:function(arm,size=0xb0) addr:0x213b550 -_ZN10ActorRupee18func_ov14_0213b6a4EjPv kind:function(arm,size=0x68) addr:0x213b600 +_ZN10ActorRupee18func_ov14_0213b6a4EjP19Actor_UnkStruct_012 kind:function(arm,size=0x68) addr:0x213b600 _ZN10ActorRupee18func_ov14_0213b70cEj kind:function(arm,size=0x3c) addr:0x213b668 _ZN10ActorRupeeD0Ev kind:function(arm,size=0x1c) addr:0x213b6a4 _ZN10ActorRupeeD2Ev kind:function(arm,size=0x14) addr:0x213b6c0 @@ -1684,7 +1684,7 @@ func_ov014_0215507c kind:function(arm,size=0x40) addr:0x2154fd8 func_ov014_021550bc kind:function(arm,size=0x40) addr:0x2155018 func_ov014_021550fc kind:function(arm,size=0x40) addr:0x2155058 func_ov014_0215513c kind:function(arm,size=0x40) addr:0x2155098 -func_ov014_0215517c kind:function(arm,size=0x5c) addr:0x21550d8 +__sinit_ActorRupee.cpp kind:function(arm,size=0x5c) addr:0x21550d8 func_ov014_021551d8 kind:function(arm,size=0x40) addr:0x2155134 func_ov014_02155218 kind:function(arm,size=0x38) addr:0x2155174 func_ov014_02155250 kind:function(arm,size=0x3c) addr:0x21551ac @@ -1902,7 +1902,9 @@ data_ov014_021589a8 kind:data(any) addr:0x2158908 data_ov014_021589ac kind:data(any) addr:0x215890c data_ov014_021589b0 kind:data(any) addr:0x2158910 data_ov014_021589b4 kind:data(any) addr:0x2158914 -_ZTV10ActorRupee kind:data(any) addr:0x2158944 +data_ov014_021589d4 kind:data(any) addr:0x2158934 +data_ov014_021589d8 kind:data(any) addr:0x2158938 +_ZTV10ActorRupee kind:data(any) addr:0x215893c data_ov014_02158aa0 kind:data(any) addr:0x2158a00 data_ov014_02158b60 kind:data(any) addr:0x2158ac0 data_ov014_02158b64 kind:data(any) addr:0x2158ac4 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 1063bf76..64402237 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -178,7 +178,7 @@ public: /* 14 */ virtual void vfunc_14(u32 param1); /* 18 */ virtual void vfunc_18(u32 param1); /* 1c */ virtual void vfunc_1c(u16 *param1); - /* 20 */ virtual void vfunc_20(s32 param1); + /* 20 */ virtual void vfunc_20(bool param1); /* 24 */ virtual void vfunc_24(); /* 28 */ virtual void vfunc_28(); /* 2c */ virtual s32 vfunc_2c(); diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp index 681a82a9..56519394 100644 --- a/include/Actor/ActorRupee.hpp +++ b/include/Actor/ActorRupee.hpp @@ -34,8 +34,8 @@ public: /* 00 */ virtual ~ActorRupee() override; /* 08 */ virtual bool vfunc_08() override; - /* 14 */ virtual void vfunc_14(bool param1) override; - /* 18 */ virtual void vfunc_18(bool param1) override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; /* 20 */ virtual void vfunc_20(bool param1) override; /* 60 */ virtual bool vfunc_60() override; /* 64 */ virtual void vfunc_64() override; diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 091202b6..78a0cf07 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -1,74 +1,43 @@ #include "Actor/ActorRupee.hpp" #include "Item/ItemManager.hpp" #include "Map/MapManager.hpp" +#include "Player/PlayerLinkBase.hpp" #include "System/Random.hpp" -// char* data_ov14_021589b4 = *data_ov14_02158994; - extern "C" { void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum); - u32 func_01fffd04(void *, u32); - bool func_ov00_020c313c(); - void func_ov00_0207a1c8(bool *param_1, bool param_2, Vec3p *param_3); + void func_ov00_0207a1c8(bool *param_1, unk32 param_2, Vec3p *param_3); void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool); void func_ov05_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, int param_7, char param_8, char param_9, char param_10); void func_ov00_020d7ad4(u32 *param1, u32 param2); - u16 func_ov00_020c5a24(RupeeId id); // GetRupeeValue - bool func_ov00_020bce48(PlayerLinkBase *implicit, ItemId cutsceneItemId); - void func_ov00_0207a13c(Actor_UnkStruct_012 *implicit); - void _ZN5ActorD2Ev(); - void _ZN9SysObjectdlEPv(); - ActorRupee *_ZN5ActorC2Ev(ActorRupee *thisx); - void _ZN10ActorRupeeD2Ev(); - - u32 data_ov14_021589b4; - u32 data_ov14_021589d4; - u32 *data_ov14_021589d8; } +u16 GetRupeeValue(RupeeId id); -/* inline */ char *data_ov14_02158994[8] = {"brg", "fnl", "pdl", "dco", "can", "hul", "bow", "anc"}; // gShipParts -extern "C" void *_ZTV10ActorRupee = _ZN10ActorRupeeD2Ev; +char *gShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; +extern u32 *data_ov14_021589d8; extern u32 data_ov00_020e9370[]; extern u32 data_ov00_020eec9c[]; -extern PlayerLinkBase *data_027e0fc8; // gPlayerLink extern u32 **data_027e0fe0[]; -ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc) ActorRupee::Create, NULL); -ActorType_UnkClass data_ov14_021589f4 = ActorType_UnkClass(0x3bb, 0xeeb); +ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc) ActorRupee::Create, NULL); -// #pragma section pinit begin -// extern "C" void* data_ov14_0215591c = func_ov14_0215517c; -// #pragma section pinit end +#pragma section force_data begin +ActorType_UnkClass data_ov14_021589f4 = ActorType_UnkClass(0x3bb, 0xeeb); +#pragma section force_data end ActorRupee *ActorRupee::Create() { ActorRupee *newRupee = new(*data_027e0fe0[0], 4) ActorRupee(); return newRupee; } -// extern "C" asm ActorRupee *_ZN10ActorRupeeC1Ev(ActorRupee *thisx) { -// _ZN5ActorC2Ev(thisx); -// _ZTV10ActorRupee = thisx; -// thisx->mRupeeId = 8; -// thisx->mUnk_15c = 0; -// return thisx; -// } - -// ActorRupee::ActorRupee() { -// mRupeeId = 8; -// mUnk_15c = 0; -// } +ActorRupee::ActorRupee() { + mRupeeId = 8; + mUnk_15c = 0; +} // https://decomp.me/scratch/1qjCc -#define FP_1(n) (u64)((n) << 0x800) -extern "C" void _ZN10ActorRupee18func_ov14_0213b204Ei(); -extern "C" void _ZN10ActorRupee18func_ov14_0213b70cEj(); -extern "C" void _ZN10ActorRupee8vfunc_14Ei(); -extern "C" void _ZN10ActorRupee8vfunc_18Ej(); -extern "C" void _ZN10ActorRupee8vfunc_20Ei(); -extern "C" void _ZN10ActorRupee8vfunc_60Ev(); -extern "C" void _ZN10ActorRupee8vfunc_64Ev(); bool ActorRupee::vfunc_08() { u32 dVar5; u32 iVar7; @@ -210,14 +179,14 @@ void ActorRupee::Update(bool param1) { cutsceneItemId = GetRupeeCutsceneItemId(); if (cutsceneItemId >= 0) { - if (/*data_027e0fc8->*/ func_ov00_020bce48(data_027e0fc8, cutsceneItemId)) { + if (gPlayerLink->func_ov00_020bce48(cutsceneItemId)) { Kill(); } else { func_ov14_0213b204(3); } } else { ItemManager *pItem = gItemManager; - rupeeValue = func_ov00_020c5a24(mRupeeId); + rupeeValue = GetRupeeValue(mRupeeId); pItem->GiveRupees(rupeeValue, false); // giverupees uVar3 = -1; @@ -255,8 +224,8 @@ void ActorRupee::Update(bool param1) { } break; case 3: - PlayerLinkBase *pLink = data_027e0fc8; - if (/*pLink->*/ func_ov00_020bce48(pLink, GetRupeeCutsceneItemId())) { + PlayerLinkBase *pLink = gPlayerLink; + if (pLink->func_ov00_020bce48(GetRupeeCutsceneItemId())) { Kill(); } break; @@ -292,14 +261,14 @@ void ActorRupee::Update(bool param1) { KillInBounds(); } -void ActorRupee::vfunc_14(bool param1) { +void ActorRupee::vfunc_14(u32 param1) { if (func_ov00_020c313c(param1)) { Update(false); } func_ov00_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); } -void ActorRupee::vfunc_18(bool param1) { +void ActorRupee::vfunc_18(u32 param1) { if (func_ov00_020c313c(param1)) { Update(true); } @@ -327,7 +296,6 @@ void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, boo 0xC, // RupeeId_Rupoor50 }; - func_ov00_0207a13c(&unk_class); func_ov14_0213b6a4(id, &unk_class); func_0202bc38(param2, param3, data_ov14_02153e28[id], &unk_class, 0); @@ -366,8 +334,4 @@ bool ActorRupee::func_ov14_0213b70c(RupeeId id) { return false; } -extern "C" asm void _ZN10ActorRupeeD0Ev() {} - -extern "C" asm void _ZN10ActorRupeeD2Ev() {} - -// ActorRupee::~ActorRupee() {} +ActorRupee::~ActorRupee() {}