From 40e593461fd7c0005f33b13cc6b297f4cba1ef74 Mon Sep 17 00:00:00 2001 From: Yanis42 <35189056+Yanis42@users.noreply.github.com> Date: Mon, 15 Apr 2024 23:54:15 +0200 Subject: initial work --- src/00_Core/Actor/Actor.cpp | 1 + src/14_Land/Actor/ActorRupee.cpp | 434 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 417 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index d0b2d086..719cad35 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -105,5 +105,6 @@ void Actor::vfunc_b0() {} void Actor::GetLinkPos(Vec3p *result) {} void Actor::GetLinkDummyPos(Vec3p *result) {} Actor_UnkStruct_09c::Actor_UnkStruct_09c() {} +Actor_UnkStruct_012::Actor_UnkStruct_012() {} #endif diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 20d98de4..0fb129d7 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -1,25 +1,423 @@ #include "Actor/ActorRupee.hpp" - -#ifdef STUBS +#include "Item/ItemManager.hpp" Resource ActorRupee::gResource; ActorType ActorRupee::gType; -ActorRupee* ActorRupee::Create() {} -ActorRupee::ActorRupee() {} -bool ActorRupee::vfunc_08() {} -bool ActorRupee::vfunc_60() {} +extern u32 **data_027e0fe0[]; +extern u32 data_ov14_021589b4[]; + + +u32 func_01fffd04(void*, u32); +void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum); + +extern u32 data_ov00_020e9370[]; +bool func_ov00_020c313c(); +void func_ov00_0207a1c8(bool *param_1, bool 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); +void func_ov00_02083fb0(u32* param1, void* param2, Vec3p* param3); +u16 GetRupeeValue(RupeeId id); +extern u32 data_ov00_020eec9c[]; +extern PlayerLinkBase *data_027e0fc8; // gPlayerLink +extern void *data_027e0e60; + +// void func_ov05_02102c2c(int param_1, int param_2, Vec3p *param_3); +// void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, s16 param_5); +// extern u32 sRupeePalettes[]; + +ActorRupee* ActorRupee::Create() { + ActorRupee* newRupee = new(*data_027e0fe0[0], 4) ActorRupee(); + return newRupee; +} + +// match? +ActorRupee::ActorRupee() { + mRupeeId = 8; + mUnk_15c = 0; +} + +// https://decomp.me/scratch/1qjCc +extern "C" void _ZN10ActorRupee18func_ov14_0213b204Ei(); +bool NONMATCH(ActorRupee::vfunc_08)() { + #ifndef NONMATCHING + #include "../../../asm/ov14/Actor/ActorRupee_vfunc_08.inc" + #else + u32 *puVar2; // undefined + u32 uVar4; + u32 dVar5; + u32 uVar6; + u32 iVar7; + u32 uVar8; + u32 uVar9; + u32 uVar10; + u32 uVar11; + u32 iVar12; + + mRupeeId = mUnk_020.mUnk_00[0]; + + dVar5 = func_ov14_0213b70c(mRupeeId) ? data_ov14_021589b4[9] : FLOAT_TO_Q20(0.666); + iVar7 = (s32)dVar5 >> 1; + + mHitbox.pos.x = 0; + mHitbox.pos.y = iVar7; + mHitbox.pos.z = 0; + mHitbox.size = iVar7; + mUnk_08c.pos = mHitbox.pos; + mUnk_08c.size = mHitbox.size; + mUnk_0a4.mUnk_04.x = 0; + mUnk_0a4.mUnk_04.y = iVar7; + mUnk_0a4.mUnk_04.z = 0; + mUnk_0a4.mUnk_10 = iVar7 + FLOAT_TO_Q20(1.0); + mUnk_09c.mUnk_0 &= 0xFFFFFF4F; + mUnk_09c.mUnk_3 = 1; + mMaxFall = mUnk_08c.size - 1; + + puVar2 = data_027e0764; + + if (mUnk_03c >= 0) { + func_ov14_0213b204(1); + } else { + switch(mUnk_144) { + case 0: + mVel.x = 0; + mVel.y = 0; + mVel.z = 0; + func_ov14_0213b204(0); + break; + case 1: + uVar8 = PTR_DWORD_overlay_d_14__0213b108[8]; + uVar4 = PTR_DWORD_overlay_d_14__0213b108[uVar8]; + + uVar9 = PTR_DWORD_overlay_d_14__0213b108[16]; + iVar7 = PTR_DWORD_overlay_d_14__0213b108[12]; + uVar11 = uVar9 + uVar4; + + iVar12 = PTR_DWORD_overlay_d_14__0213b108[20]; + uVar6 = (u64)uVar11 * (u64)uVar8; + uVar10 = ( + iVar12 + + (iVar7 * PTR_DWORD_overlay_d_14__0213b108[0]) + + (uVar8 * PTR_DWORD_overlay_d_14__0213b108[4]) + + ((uVar4) >> 0x20) + // + CARRY4(uVar9, uVar4) + ); + + uVar4 = uVar9 + uVar6; + PTR_DWORD_overlay_d_14__0213b108[0] = uVar11; + puVar2[4] = uVar10; + + puVar2[0] = uVar4; + uVar6 = ( + iVar12 + + (iVar7 * uVar11) + + (uVar8 * uVar10) + + ((u64)uVar11 * (FP_1(uVar8) >> 0x20)) + // + CARRY4(uVar9, uVar6) + ); + uVar11 = uVar4 * uVar8; + + PTR_DWORD_overlay_d_14__0213b108[4] = uVar6; + puVar2 = PTR_DWORD_overlay_d_14__0213b108; + uVar4 = ( + iVar12 + + (iVar7 * uVar4) + + (uVar8 * uVar6) + + ((u64)uVar4 * (FP_1(uVar8) >> 0x20)) + // + CARRY4(uVar9, uVar11) + ); + + PTR_DWORD_overlay_d_14__0213b108[0] = uVar9 + uVar11; + puVar2[4] = uVar4; + + mVel.x = (s32)((u64)uVar4 * FLOAT_TO_Q20(0.1335) >> 0x20) - FLOAT_TO_Q20(0.0666); + mVel.y = (s32)((u64)uVar6 * FLOAT_TO_Q20(0.2) >> 0x20) + FLOAT_TO_Q20(0.3333); + mVel.z = (s32)((u64)uVar10 * FLOAT_TO_Q20(0.1335) >> 0x20) - FLOAT_TO_Q20(0.0666); + func_ov14_0213b204(0); + break; + case 2: + mVel.x = 0; + mVel.y = FLOAT_TO_Q20(0.5); + mVel.z = 0; + func_ov14_0213b204(0); + break; + case 3: + func_ov14_0213b204(5); + break; + } + } + + return true; + #endif +} + +bool ActorRupee::vfunc_60() { + return func_ov14_0213b70c(mRupeeId); +} + void ActorRupee::vfunc_64() {} -void ActorRupee::Move() {} -ItemId ActorRupee::GetRupeeCutsceneItemId() {} -void ActorRupee::func_ov14_0213b204(unk32 param1) {} -void ActorRupee::Update(bool param1) {} -void ActorRupee::vfunc_14(u32 param1) {} -void ActorRupee::vfunc_18(u32 param1) {} -void ActorRupee::vfunc_20(s32 param1) {} -void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4) {} -void ActorRupee::func_ov14_0213b6a4(RupeeId id, void *param2) {} -bool ActorRupee::func_ov14_0213b70c(RupeeId id) {} -ActorRupee::~ActorRupee() {} -#endif +void ActorRupee::Move() { + s32 size; + + ApplyGravity(); + func_01ff9bc4(&mPos, &mVel, &mPos); // Vec3p::Add() + mUnk_09c.mUnk_3 = 1; + size = mMaxFall = mUnk_08c.size - 1; + + size += mUnk_018; + if (size < mPos.y) { + mUnk_09c.mUnk_0 = 0x49; + } else { + mUnk_09c.mUnk_0 = 0xcb; + } + + if (func_01fffd04(this, 0)) { + mVel.x = 0; + mVel.z = 0; + } +} + +ItemId ActorRupee::GetRupeeCutsceneItemId() { + switch (mRupeeId) { + case RupeeId_Green: + return ItemId_None; + + case RupeeId_Blue: + return ItemId_None; + + case RupeeId_Red: + return ItemId_None; + + case RupeeId_BigGreen: + return ItemId_BigGreenRupee; + + case RupeeId_BigRed: + return ItemId_BigRedRupee; + + case RupeeId_Gold: + return ItemId_GoldRupee; + + case RupeeId_Rupoor10: + return ItemId_Rupoor10; + + case RupeeId_Rupoor50: + return ItemId_Rupoor50; + + default: + break; + } + + return ItemId_None; +} + +void ActorRupee::func_ov14_0213b204(unk32 param1) { + switch (param1) { + case 0: + mVisible = true; + break; + case 1: + case 2: + case 3: + case 4: + case 5: + mVel.x = 0; + mVel.y = 0; + mVel.z = 0; + break; + } + + mActiveFrames = 0; + mUnk_130 = param1; +} + +void ActorRupee::Update(bool param1) { + ItemId cutsceneItemId; + s32 uVar3; + Vec3p local_1c; + u32 local_20; + u16 rupeeValue; + + mPrevPos = mPos; + IncreaseActiveFrames(); + + if ((mUnk_130 != 3) && (++mUnk_15c >= 6) && CollidesWithPlayer(PlayerCollide_PickupFlags)) { + cutsceneItemId = GetRupeeCutsceneItemId(); + + if (cutsceneItemId >= 0) { + if (data_027e0fc8->PlayItemCutscene(cutsceneItemId)) { + Kill(); + } else { + func_ov14_0213b204(3); + } + } else { + ItemManager* pItem = gItemManager; + rupeeValue = GetRupeeValue(mRupeeId); + pItem->GiveRupees(rupeeValue, false); + uVar3 = -1; + + switch (mRupeeId) { + case RupeeId_Green: + uVar3 = 0xfa; + break; + case RupeeId_Blue: + uVar3 = 0xfb; + break; + case RupeeId_Red: + uVar3 = 0xfc; + break; + default: + break; + } + + func_ov00_020d7ad4(data_ov00_020eec9c, uVar3); + Kill(); + } + } + + if (!(mUnk_130 != 0 && mUnk_130 != 1 && mUnk_130 != 2)) { + if (func_ov00_020c2c0c()) { + func_ov14_0213b204(4); + } else if (func_ov00_020c2d54()) { + func_ov14_0213b204(5); + } + } + + switch (mUnk_130) { + case 0: + Move(); + if (mUnk_111) { + local_1c = mPos; + func_ov00_02083fb0(&local_20, data_027e0e60, &local_1c); + if (((local_20 >> 5) & 3) == 2) { + Kill(); + } else { + func_ov14_0213b204(1); + } + } + break; + case 3: + PlayerLinkBase* pLink = data_027e0fc8; + if (pLink->PlayItemCutscene(GetRupeeCutsceneItemId())) { + Kill(); + } + break; + case 1: + if (param1) { + mActiveFrames = 0; + } + if ((mUnk_03c < 0) && (mActiveFrames >= 180)) { + func_ov14_0213b204(2); + } + break; + case 2: + if (param1) { + mActiveFrames = 0; + } + if (mActiveFrames >= 60) { + Kill(); + } + break; + case 4: + if (!func_ov00_020c2c70()) { + func_ov14_0213b204(1); + } + break; + case 5: + if (!func_ov00_020c2de4()) { + func_ov14_0213b204(1); + } + break; + default: + break; + } + + KillInBounds(); +} + +void ActorRupee::vfunc_14(bool param1) { + if (func_ov00_020c313c(param1)) { + Update(false); + } + func_ov00_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); +} + +void ActorRupee::vfunc_18(bool param1) { + if (func_ov00_020c313c(param1)) { + Update(true); + } + func_ov00_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); +} + +void ActorRupee::vfunc_20(bool param1) { + if (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) { + if (mUnk_130 == 2 && mActiveFrames % 8 < 4) { + return; + } + + if (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) { + func_ov14_0213b5f4(mRupeeId, param1, &mPos, true); + } + } +} + +void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4) { + Actor_UnkStruct_012 unk_class; + static u32 data_ov14_02153e28[] = { // sRupeePalettes + 0x9, // RupeeId_Green + 0xA, // RupeeId_Blue + 0x8, // RupeeId_Red + 0x9, // RupeeId_BigGreen + 0x8, // RupeeId_BigRed + 0xB, // RupeeId_Gold + 0xC, // RupeeId_Rupoor10 + 0xC, // RupeeId_Rupoor50 + }; + + func_ov14_0213b6a4(id, &unk_class); + func_0202bc38(param2, param3, data_ov14_02153e28[id], &unk_class, 0); + + if (param4) { + u32 var = func_ov14_0213b70c(id) ? 0x4cd : 0x400; + func_ov05_02102c2c(&data_ov00_020e9370[0], 0, param3, var, var, 0, 0x1f, 0, 1, 1); + } +} + +void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) { + param2->mUnk_04 = 3; + + if (func_ov14_0213b70c(id)) { + param2->mUnk_08 = 2; + param2->mUnk_0c = 2; + param2->mUnk_14 = data_ov14_021589b4[0x8]; + param2->mUnk_18 = data_ov14_021589b4[0x9]; + } else { + param2->mUnk_08 = 2; + param2->mUnk_0c = 2; + param2->mUnk_14 = 0x2aa; + param2->mUnk_18 = 0xaa8; + } +} + +bool ActorRupee::func_ov14_0213b70c(RupeeId id) { + switch (id) { + case RupeeId_BigGreen: + case RupeeId_BigRed: + case RupeeId_Gold: + case RupeeId_Rupoor50: + return true; + + default: + break; + } + + return false; +} + +ActorRupee::~ActorRupee() {} -- cgit v1.2.3 From 2577871c94a173768503c15eade891269acdd348 Mon Sep 17 00:00:00 2001 From: Yanis42 <35189056+Yanis42@users.noreply.github.com> Date: Tue, 16 Apr 2024 00:58:58 +0200 Subject: improved vfunc_20 a bit --- src/14_Land/Actor/ActorRupee.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 0fb129d7..60fac224 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -355,15 +355,10 @@ void ActorRupee::vfunc_18(bool param1) { func_ov00_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); } +#define VFUNC20_COND (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) void ActorRupee::vfunc_20(bool param1) { - if (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) { - if (mUnk_130 == 2 && mActiveFrames % 8 < 4) { - return; - } - - if (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) { - func_ov14_0213b5f4(mRupeeId, param1, &mPos, true); - } + if (VFUNC20_COND && !(mUnk_130 == 2 && mActiveFrames % 8 < 4) && VFUNC20_COND) { + func_ov14_0213b5f4(mRupeeId, param1, &mPos, true); } } -- cgit v1.2.3 From e38046cd56ed543aa741a0e26cf055739b63eefc Mon Sep 17 00:00:00 2001 From: Yanis42 <35189056+Yanis42@users.noreply.github.com> Date: Wed, 17 Apr 2024 00:39:42 +0200 Subject: fix some build issues --- src/14_Land/Actor/ActorRupee.cpp | 50 +++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 60fac224..89537646 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -4,34 +4,40 @@ Resource ActorRupee::gResource; ActorType ActorRupee::gType; +static u32 data_ov14_021589d4 = 0x00000000; + +static u32 data_ov14_021589d8[] = { + 0x00000000, + 0x00000000, + 0x00000000, +}; + +static char data_ov14_021589b4[] = "anc"; + extern u32 **data_027e0fe0[]; -extern u32 data_ov14_021589b4[]; -u32 func_01fffd04(void*, u32); -void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum); +extern "C" void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum); +extern "C" u32 func_01fffd04(void*, u32); extern u32 data_ov00_020e9370[]; -bool func_ov00_020c313c(); -void func_ov00_0207a1c8(bool *param_1, bool param_2, Vec3p *param_3); +extern "C" bool func_ov00_020c313c(); +extern "C" void func_ov00_0207a1c8(bool *param_1, bool 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, +extern "C" void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool); +extern "C" 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); -void func_ov00_02083fb0(u32* param1, void* param2, Vec3p* param3); -u16 GetRupeeValue(RupeeId id); +extern "C" void func_ov00_020d7ad4(u32* param1, u32 param2); +extern "C" void func_ov00_02083fb0(u32* param1, void* param2, Vec3p* param3); +extern "C" u16 func_ov00_020c5a24(RupeeId id); // GetRupeeValue + extern u32 data_ov00_020eec9c[]; extern PlayerLinkBase *data_027e0fc8; // gPlayerLink extern void *data_027e0e60; -// void func_ov05_02102c2c(int param_1, int param_2, Vec3p *param_3); -// void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, s16 param_5); -// extern u32 sRupeePalettes[]; - ActorRupee* ActorRupee::Create() { ActorRupee* newRupee = new(*data_027e0fe0[0], 4) ActorRupee(); return newRupee; @@ -45,6 +51,13 @@ ActorRupee::ActorRupee() { // https://decomp.me/scratch/1qjCc 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(); +extern "C" u32 data_027e0764[]; bool NONMATCH(ActorRupee::vfunc_08)() { #ifndef NONMATCHING #include "../../../asm/ov14/Actor/ActorRupee_vfunc_08.inc" @@ -62,7 +75,7 @@ bool NONMATCH(ActorRupee::vfunc_08)() { mRupeeId = mUnk_020.mUnk_00[0]; - dVar5 = func_ov14_0213b70c(mRupeeId) ? data_ov14_021589b4[9] : FLOAT_TO_Q20(0.666); + dVar5 = func_ov14_0213b70c(mRupeeId) ? data_ov14_021589d8[0] : FLOAT_TO_Q20(0.666); iVar7 = (s32)dVar5 >> 1; mHitbox.pos.x = 0; @@ -237,6 +250,7 @@ void ActorRupee::func_ov14_0213b204(unk32 param1) { mUnk_130 = param1; } +extern "C" void _ZN11ItemManager10GiveRupeesEjj(); void ActorRupee::Update(bool param1) { ItemId cutsceneItemId; s32 uVar3; @@ -258,7 +272,7 @@ void ActorRupee::Update(bool param1) { } } else { ItemManager* pItem = gItemManager; - rupeeValue = GetRupeeValue(mRupeeId); + rupeeValue = func_ov00_020c5a24(mRupeeId); pItem->GiveRupees(rupeeValue, false); uVar3 = -1; @@ -390,8 +404,8 @@ void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) { if (func_ov14_0213b70c(id)) { param2->mUnk_08 = 2; param2->mUnk_0c = 2; - param2->mUnk_14 = data_ov14_021589b4[0x8]; - param2->mUnk_18 = data_ov14_021589b4[0x9]; + param2->mUnk_14 = data_ov14_021589d4; // data_ov14_021589b4[8] + param2->mUnk_18 = data_ov14_021589d8[0]; // data_ov14_021589b4[9] } else { param2->mUnk_08 = 2; param2->mUnk_0c = 2; -- cgit v1.2.3 From 808cd5bf0f73c3f785880b3f2950bde5c3d6f7c2 Mon Sep 17 00:00:00 2001 From: Yanis42 <35189056+Yanis42@users.noreply.github.com> Date: Wed, 17 Apr 2024 13:59:41 +0200 Subject: fixed build issues and function non-matchings --- src/14_Land/Actor/ActorRupee.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 89537646..7cde3474 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -4,7 +4,7 @@ Resource ActorRupee::gResource; ActorType ActorRupee::gType; -static u32 data_ov14_021589d4 = 0x00000000; +static u32 data_ov14_021589d4[] = { 0x00000000 }; static u32 data_ov14_021589d8[] = { 0x00000000, @@ -12,7 +12,7 @@ static u32 data_ov14_021589d8[] = { 0x00000000, }; -static char data_ov14_021589b4[] = "anc"; +static char* data_ov14_021589b4 = "anc"; extern u32 **data_027e0fe0[]; @@ -24,8 +24,6 @@ extern u32 data_ov00_020e9370[]; extern "C" bool func_ov00_020c313c(); extern "C" void func_ov00_0207a1c8(bool *param_1, bool param_2, Vec3p *param_3); -// --- - extern "C" void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool); extern "C" 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); @@ -38,6 +36,9 @@ extern u32 data_ov00_020eec9c[]; extern PlayerLinkBase *data_027e0fc8; // gPlayerLink extern void *data_027e0e60; +extern "C" bool func_ov00_020bce48(PlayerLinkBase* implicit, ItemId cutsceneItemId); +extern "C" void func_ov00_0207a13c(Actor_UnkStruct_012* implicit); + ActorRupee* ActorRupee::Create() { ActorRupee* newRupee = new(*data_027e0fe0[0], 4) ActorRupee(); return newRupee; @@ -250,7 +251,7 @@ void ActorRupee::func_ov14_0213b204(unk32 param1) { mUnk_130 = param1; } -extern "C" void _ZN11ItemManager10GiveRupeesEjj(); +extern "C" void _ZN11ItemManager10GiveRupeesEjj(ItemManager* implicit, u16 amount, unk32 param2); void ActorRupee::Update(bool param1) { ItemId cutsceneItemId; s32 uVar3; @@ -265,7 +266,7 @@ void ActorRupee::Update(bool param1) { cutsceneItemId = GetRupeeCutsceneItemId(); if (cutsceneItemId >= 0) { - if (data_027e0fc8->PlayItemCutscene(cutsceneItemId)) { + if (/*data_027e0fc8->*/func_ov00_020bce48(data_027e0fc8, cutsceneItemId)) { Kill(); } else { func_ov14_0213b204(3); @@ -273,7 +274,8 @@ void ActorRupee::Update(bool param1) { } else { ItemManager* pItem = gItemManager; rupeeValue = func_ov00_020c5a24(mRupeeId); - pItem->GiveRupees(rupeeValue, false); + _ZN11ItemManager10GiveRupeesEjj(pItem, rupeeValue, false); // GiveRupees + // pItem->GiveRupees(rupeeValue, false); // giverupees uVar3 = -1; switch (mRupeeId) { @@ -318,7 +320,7 @@ void ActorRupee::Update(bool param1) { break; case 3: PlayerLinkBase* pLink = data_027e0fc8; - if (pLink->PlayItemCutscene(GetRupeeCutsceneItemId())) { + if (/*pLink->*/func_ov00_020bce48(pLink, GetRupeeCutsceneItemId())) { Kill(); } break; @@ -389,6 +391,7 @@ 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); @@ -404,8 +407,8 @@ void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) { if (func_ov14_0213b70c(id)) { param2->mUnk_08 = 2; param2->mUnk_0c = 2; - param2->mUnk_14 = data_ov14_021589d4; // data_ov14_021589b4[8] - param2->mUnk_18 = data_ov14_021589d8[0]; // data_ov14_021589b4[9] + param2->mUnk_14 = data_ov14_021589d4[8]; // data_ov14_021589b4[8] + param2->mUnk_18 = data_ov14_021589d8[8]; // data_ov14_021589b4[9] } else { param2->mUnk_08 = 2; param2->mUnk_0c = 2; -- cgit v1.2.3 From c7fd0dd4bdbce1b7d6e29a17e11cbcf92981875f Mon Sep 17 00:00:00 2001 From: Yanis42 <35189056+Yanis42@users.noreply.github.com> Date: Fri, 19 Apr 2024 21:57:52 +0200 Subject: fix more matching issues --- src/14_Land/Actor/ActorRupee.cpp | 75 +++++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 7cde3474..40994a69 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -4,6 +4,15 @@ Resource ActorRupee::gResource; ActorType ActorRupee::gType; +static char data_ov14_021589b4[] = "anc"; +static char data_ov14_021589b8[] = "bow"; +static char data_ov14_021589bc[] = "hul"; +static char data_ov14_021589c0[] = "can"; +static char data_ov14_021589c4[] = "dco"; +static char data_ov14_021589c8[] = "pdl"; +static char data_ov14_021589cc[] = "fnl"; +static char data_ov14_021589d0[] = "brg"; + static u32 data_ov14_021589d4[] = { 0x00000000 }; static u32 data_ov14_021589d8[] = { @@ -12,44 +21,72 @@ static u32 data_ov14_021589d8[] = { 0x00000000, }; -static char* data_ov14_021589b4 = "anc"; extern u32 **data_027e0fe0[]; - extern "C" void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum); extern "C" u32 func_01fffd04(void*, u32); - extern u32 data_ov00_020e9370[]; extern "C" bool func_ov00_020c313c(); extern "C" void func_ov00_0207a1c8(bool *param_1, bool param_2, Vec3p *param_3); - extern "C" void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool); extern "C" 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); - extern "C" void func_ov00_020d7ad4(u32* param1, u32 param2); extern "C" void func_ov00_02083fb0(u32* param1, void* param2, Vec3p* param3); extern "C" u16 func_ov00_020c5a24(RupeeId id); // GetRupeeValue - extern u32 data_ov00_020eec9c[]; extern PlayerLinkBase *data_027e0fc8; // gPlayerLink extern void *data_027e0e60; - extern "C" bool func_ov00_020bce48(PlayerLinkBase* implicit, ItemId cutsceneItemId); extern "C" void func_ov00_0207a13c(Actor_UnkStruct_012* implicit); +extern "C" void _ZN5ActorD2Ev(); +extern "C" void _ZN9SysObjectdlEPv(); +extern "C" ActorRupee* _ZN5ActorC2Ev(ActorRupee *thisx); +extern "C" void _ZN10ActorRupeeD2Ev(); +extern "C" void* _ZTV10ActorRupee = _ZN10ActorRupeeD2Ev; + +extern "C" { + void func_0203e784(ActorType *param_1, u32 type, ActorCreateFunc createFunc, void* param_4); + void func_0203e7b4(); + void func_0204f8d4(void *object, void *cleanupFunc, Resource *resource); +} + +#pragma section init begin +void func_ov14_0215517c() { + func_0203e784(&ActorRupee::gType, 0x52555059, (ActorCreateFunc)ActorRupee::Create, NULL); + func_0204f8d4(&ActorRupee::gType, func_0203e7b4, &ActorRupee::gResource); + data_ov14_021589d8[7] = 0x000003bb; + data_ov14_021589d8[8] = 0x00000eeb; +} +#pragma section init end + +#pragma section pinit begin +extern "C" void* data_ov14_0215591c = func_ov14_0215517c; +#pragma section pinit end ActorRupee* ActorRupee::Create() { ActorRupee* newRupee = new(*data_027e0fe0[0], 4) ActorRupee(); return newRupee; } -// match? -ActorRupee::ActorRupee() { - mRupeeId = 8; - mUnk_15c = 0; +extern "C" asm ActorRupee* _ZN10ActorRupeeC1Ev(ActorRupee *thisx) { +#ifndef NONMATCHING + #include "../../../asm/ov14/Actor/ActorRupee_ActorRupee.inc" +#else + _ZN5ActorC2Ev(thisx); + _ZTV10ActorRupee = thisx; + thisx->mRupeeId = 8; + thisx->mUnk_15c = 0; + return thisx; +#endif } +// ActorRupee::ActorRupee() { +// mRupeeId = 8; +// mUnk_15c = 0; +// } + // https://decomp.me/scratch/1qjCc extern "C" void _ZN10ActorRupee18func_ov14_0213b204Ei(); extern "C" void _ZN10ActorRupee18func_ov14_0213b70cEj(); @@ -380,7 +417,7 @@ void ActorRupee::vfunc_20(bool param1) { void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4) { Actor_UnkStruct_012 unk_class; - static u32 data_ov14_02153e28[] = { // sRupeePalettes + static const u32 data_ov14_02153e28[] = { // sRupeePalettes 0x9, // RupeeId_Green 0xA, // RupeeId_Blue 0x8, // RupeeId_Red @@ -432,4 +469,16 @@ bool ActorRupee::func_ov14_0213b70c(RupeeId id) { return false; } -ActorRupee::~ActorRupee() {} +extern "C" asm void _ZN10ActorRupeeD0Ev() { + #ifndef NONMATCHING + #include "../../../asm/ov14/Actor/ActorRupee__ZN10ActorRupeeD0Ev.inc" + #endif +} + +extern "C" asm void _ZN10ActorRupeeD2Ev() { + #ifndef NONMATCHING + #include "../../../asm/ov14/Actor/ActorRupee__ZN10ActorRupeeD2Ev.inc" + #endif +} + +// ActorRupee::~ActorRupee() {} -- cgit v1.2.3 From efd86d8156d3cf1cbca5bf3ba68c05dcb70b9745 Mon Sep 17 00:00:00 2001 From: Yanis42 <35189056+Yanis42@users.noreply.github.com> Date: Sun, 21 Apr 2024 01:06:46 +0200 Subject: more data stuff --- src/14_Land/Actor/ActorRupee.cpp | 79 ++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 40994a69..41d6b27a 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -1,17 +1,46 @@ #include "Actor/ActorRupee.hpp" #include "Item/ItemManager.hpp" -Resource ActorRupee::gResource; -ActorType ActorRupee::gType; -static char data_ov14_021589b4[] = "anc"; -static char data_ov14_021589b8[] = "bow"; -static char data_ov14_021589bc[] = "hul"; -static char data_ov14_021589c0[] = "can"; -static char data_ov14_021589c4[] = "dco"; -static char data_ov14_021589c8[] = "pdl"; -static char data_ov14_021589cc[] = "fnl"; -static char data_ov14_021589d0[] = "brg"; +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_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); + void func_ov00_02083fb0(u32* param1, void* param2, Vec3p* param3); + 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(); + void func_0203e784(ActorType *param_1, u32 type, ActorCreateFunc createFunc, void* param_4); + void func_0203e7b4(); + void func_0204f8d4(void *object, void *cleanupFunc, Resource *resource); +} + +static char data_ov14_02158998[] = "fnl"; +static char data_ov14_02158994[] = "brg"; +static char data_ov14_0215899c[] = "pdl"; +static char data_ov14_021589a0[] = "dco"; +static char data_ov14_021589a4[] = "can"; +static char data_ov14_021589a8[] = "hul"; +static char data_ov14_021589ac[] = "bow"; +static char data_ov14_021589b0[] = "anc"; + +static char* data_ov14_021589d0 = data_ov14_021589b0; +static char* data_ov14_021589cc = data_ov14_021589ac; +static char* data_ov14_021589c8 = data_ov14_021589a8; +static char* data_ov14_021589c4 = data_ov14_021589a4; +static char* data_ov14_021589c0 = data_ov14_021589a0; +static char* data_ov14_021589bc = data_ov14_0215899c; +static char* data_ov14_021589b8 = data_ov14_02158998; +static char* data_ov14_021589b4 = data_ov14_02158994; static u32 data_ov14_021589d4[] = { 0x00000000 }; @@ -21,36 +50,16 @@ static u32 data_ov14_021589d8[] = { 0x00000000, }; +extern "C" void* _ZTV10ActorRupee = _ZN10ActorRupeeD2Ev; -extern u32 **data_027e0fe0[]; - -extern "C" void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum); -extern "C" u32 func_01fffd04(void*, u32); extern u32 data_ov00_020e9370[]; -extern "C" bool func_ov00_020c313c(); -extern "C" void func_ov00_0207a1c8(bool *param_1, bool param_2, Vec3p *param_3); -extern "C" void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool); -extern "C" 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); -extern "C" void func_ov00_020d7ad4(u32* param1, u32 param2); -extern "C" void func_ov00_02083fb0(u32* param1, void* param2, Vec3p* param3); -extern "C" u16 func_ov00_020c5a24(RupeeId id); // GetRupeeValue extern u32 data_ov00_020eec9c[]; -extern PlayerLinkBase *data_027e0fc8; // gPlayerLink extern void *data_027e0e60; -extern "C" bool func_ov00_020bce48(PlayerLinkBase* implicit, ItemId cutsceneItemId); -extern "C" void func_ov00_0207a13c(Actor_UnkStruct_012* implicit); -extern "C" void _ZN5ActorD2Ev(); -extern "C" void _ZN9SysObjectdlEPv(); -extern "C" ActorRupee* _ZN5ActorC2Ev(ActorRupee *thisx); -extern "C" void _ZN10ActorRupeeD2Ev(); -extern "C" void* _ZTV10ActorRupee = _ZN10ActorRupeeD2Ev; +extern PlayerLinkBase *data_027e0fc8; // gPlayerLink +extern u32 **data_027e0fe0[]; -extern "C" { - void func_0203e784(ActorType *param_1, u32 type, ActorCreateFunc createFunc, void* param_4); - void func_0203e7b4(); - void func_0204f8d4(void *object, void *cleanupFunc, Resource *resource); -} +Resource ActorRupee::gResource; +ActorType ActorRupee::gType; #pragma section init begin void func_ov14_0215517c() { -- cgit v1.2.3 From 5f9ed124164aca86632f03f7953103d1fc409395 Mon Sep 17 00:00:00 2001 From: Yanis42 <35189056+Yanis42@users.noreply.github.com> Date: Sun, 21 Apr 2024 13:40:14 +0200 Subject: progress? --- src/14_Land/Actor/ActorRupee.cpp | 60 ++++++++++------------------------------ 1 file changed, 15 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 41d6b27a..a7eb3ab3 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -2,6 +2,9 @@ #include "Item/ItemManager.hpp" + +// char* data_ov14_021589b4 = *data_ov14_02158994; + extern "C" { void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum); u32 func_01fffd04(void*, u32); @@ -19,37 +22,13 @@ extern "C" { void _ZN9SysObjectdlEPv(); ActorRupee* _ZN5ActorC2Ev(ActorRupee *thisx); void _ZN10ActorRupeeD2Ev(); - void func_0203e784(ActorType *param_1, u32 type, ActorCreateFunc createFunc, void* param_4); - void func_0203e7b4(); - void func_0204f8d4(void *object, void *cleanupFunc, Resource *resource); -} -static char data_ov14_02158998[] = "fnl"; -static char data_ov14_02158994[] = "brg"; -static char data_ov14_0215899c[] = "pdl"; -static char data_ov14_021589a0[] = "dco"; -static char data_ov14_021589a4[] = "can"; -static char data_ov14_021589a8[] = "hul"; -static char data_ov14_021589ac[] = "bow"; -static char data_ov14_021589b0[] = "anc"; - -static char* data_ov14_021589d0 = data_ov14_021589b0; -static char* data_ov14_021589cc = data_ov14_021589ac; -static char* data_ov14_021589c8 = data_ov14_021589a8; -static char* data_ov14_021589c4 = data_ov14_021589a4; -static char* data_ov14_021589c0 = data_ov14_021589a0; -static char* data_ov14_021589bc = data_ov14_0215899c; -static char* data_ov14_021589b8 = data_ov14_02158998; -static char* data_ov14_021589b4 = data_ov14_02158994; - -static u32 data_ov14_021589d4[] = { 0x00000000 }; - -static u32 data_ov14_021589d8[] = { - 0x00000000, - 0x00000000, - 0x00000000, -}; + u32 data_ov14_021589b4; + u32 data_ov14_021589d4; + u32 data_ov14_021589d8; +} +/* inline */ char *data_ov14_02158994[8] = { "brg", "fnl", "pdl", "dco", "can", "hul", "bow", "anc" }; // gShipParts extern "C" void* _ZTV10ActorRupee = _ZN10ActorRupeeD2Ev; extern u32 data_ov00_020e9370[]; @@ -58,21 +37,12 @@ extern void *data_027e0e60; extern PlayerLinkBase *data_027e0fc8; // gPlayerLink extern u32 **data_027e0fe0[]; -Resource ActorRupee::gResource; -ActorType ActorRupee::gType; - -#pragma section init begin -void func_ov14_0215517c() { - func_0203e784(&ActorRupee::gType, 0x52555059, (ActorCreateFunc)ActorRupee::Create, NULL); - func_0204f8d4(&ActorRupee::gType, func_0203e7b4, &ActorRupee::gResource); - data_ov14_021589d8[7] = 0x000003bb; - data_ov14_021589d8[8] = 0x00000eeb; -} -#pragma section init end +ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc)ActorRupee::Create, NULL); +ActorType_UnkClass data_ov14_021589f4 = ActorType_UnkClass(0x3bb, 0xeeb); -#pragma section pinit begin -extern "C" void* data_ov14_0215591c = func_ov14_0215517c; -#pragma section pinit end +// #pragma section pinit begin +// extern "C" void* data_ov14_0215591c = func_ov14_0215517c; +// #pragma section pinit end ActorRupee* ActorRupee::Create() { ActorRupee* newRupee = new(*data_027e0fe0[0], 4) ActorRupee(); @@ -453,8 +423,8 @@ void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) { if (func_ov14_0213b70c(id)) { param2->mUnk_08 = 2; param2->mUnk_0c = 2; - param2->mUnk_14 = data_ov14_021589d4[8]; // data_ov14_021589b4[8] - param2->mUnk_18 = data_ov14_021589d8[8]; // data_ov14_021589b4[9] + param2->mUnk_14 = data_ov14_021589f4.unk_00; + param2->mUnk_18 = data_ov14_021589f4.unk_04; } else { param2->mUnk_08 = 2; param2->mUnk_0c = 2; -- cgit v1.2.3 From 40a3b9d85177d30fd2f438ec3240c9f1bb258337 Mon Sep 17 00:00:00 2001 From: Aetias Date: Fri, 3 May 2024 19:21:42 +0200 Subject: Remangle `MapManager::func_ov00_02083fb0` --- src/00_Core/Map/MapManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 802043ac..409dc9bd 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -133,7 +133,7 @@ void MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3) {} void MapManager::func_ov00_02083f44(Vec3p *param_2) {} unk8 MapManager::MapData_vfunc_6c() {} unk8 MapManager::MapData_vfunc_70() {} -unk8 MapManager::func_ov00_02083fb0(unk32 param_1, MapManager *param_2, unk32 param_3) {} +unk8 MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) {} void MapManager::func_ov00_02084024(unk32 param_2, AABB *param_3) {} unk8 MapManager::MapData_vfunc_54() {} unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) {} -- cgit v1.2.3 From 8977783337f6b2407fbcd36c7337ec63343d6898 Mon Sep 17 00:00:00 2001 From: Aetias Date: Fri, 3 May 2024 19:22:24 +0200 Subject: Use demangled funcs --- src/14_Land/Actor/ActorRupee.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index a7eb3ab3..4ccd230f 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -1,5 +1,6 @@ #include "Actor/ActorRupee.hpp" #include "Item/ItemManager.hpp" +#include "Map/MapManager.hpp" @@ -14,7 +15,6 @@ extern "C" { 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); - void func_ov00_02083fb0(u32* param1, void* param2, Vec3p* param3); u16 func_ov00_020c5a24(RupeeId id); // GetRupeeValue bool func_ov00_020bce48(PlayerLinkBase* implicit, ItemId cutsceneItemId); void func_ov00_0207a13c(Actor_UnkStruct_012* implicit); @@ -33,7 +33,6 @@ extern "C" void* _ZTV10ActorRupee = _ZN10ActorRupeeD2Ev; extern u32 data_ov00_020e9370[]; extern u32 data_ov00_020eec9c[]; -extern void *data_027e0e60; extern PlayerLinkBase *data_027e0fc8; // gPlayerLink extern u32 **data_027e0fe0[]; @@ -267,7 +266,7 @@ void ActorRupee::func_ov14_0213b204(unk32 param1) { mUnk_130 = param1; } -extern "C" void _ZN11ItemManager10GiveRupeesEjj(ItemManager* implicit, u16 amount, unk32 param2); +extern "C" void _ZN11ItemManager10GiveRupeesEsb(ItemManager* implicit, u16 amount, unk32 param2); void ActorRupee::Update(bool param1) { ItemId cutsceneItemId; s32 uVar3; @@ -290,8 +289,7 @@ void ActorRupee::Update(bool param1) { } else { ItemManager* pItem = gItemManager; rupeeValue = func_ov00_020c5a24(mRupeeId); - _ZN11ItemManager10GiveRupeesEjj(pItem, rupeeValue, false); // GiveRupees - // pItem->GiveRupees(rupeeValue, false); // giverupees + pItem->GiveRupees(rupeeValue, false); // giverupees uVar3 = -1; switch (mRupeeId) { @@ -326,7 +324,7 @@ void ActorRupee::Update(bool param1) { Move(); if (mUnk_111) { local_1c = mPos; - func_ov00_02083fb0(&local_20, data_027e0e60, &local_1c); + MapManager::func_ov00_02083fb0(&local_20, gMapManager, &local_1c); if (((local_20 >> 5) & 3) == 2) { Kill(); } else { -- cgit v1.2.3 From fb63b9271dbd79492f54384084e64725676be745 Mon Sep 17 00:00:00 2001 From: Aetias Date: Tue, 10 Sep 2024 20:18:52 +0200 Subject: Remove non-matching functions and `progress.py` --- src/00_Core/Item/ItemManager.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src') diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index e20081d4..dccd4205 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -241,10 +241,7 @@ extern "C" bool _ZN10MapManager18func_ov00_020849f8Ei(void *param1); extern "C" bool _ZN14PlayerLinkBase18func_ov00_020bbd80Ei(unk32 param1, unk32 param2); extern "C" bool _ZNK11ItemManager7HasItemEi(); extern "C" void _ZN11ItemManager12GetEquipItemEi(); -ARM bool NONMATCH(ItemManager::func_ov00_020ad790)(unk32 param1) { - #ifndef NONMATCHING - #include "../asm/ov00/Item/ItemManager_func_ov00_020ad790.inc" - #else +ARM bool ItemManager::func_ov00_020ad790(unk32 param1) { unk32 unk1 = func_ov00_02078b40(data_027e0d38); if (unk1 == 2) return func_ov15_02136670(data_027e10a4); if (data_027e0d38->mUnk_14 == 1) return false; @@ -269,7 +266,6 @@ ARM bool NONMATCH(ItemManager::func_ov00_020ad790)(unk32 param1) { return this->GetEquipItem(equipId)->IsUsable(param1); } return false; - #endif } THUMB ShipType ItemManager::GetEquippedShipPart(ShipPart part) const { -- cgit v1.2.3 From 514f8e43da82d09fa346c1d63af042a93731f557 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sat, 14 Sep 2024 10:55:59 +0200 Subject: Fix `ItemManager` error --- src/00_Core/Item/ItemManager.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index dccd4205..0f28dd2f 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -237,7 +237,6 @@ extern "C" unk32 func_ov00_02078b40(UnkStruct_027e0d38 *param1); extern void *data_027e10a4; extern "C" bool func_ov15_02136670(void *param1); extern unk8 data_ov29_0217a4ac[]; -extern "C" bool _ZN10MapManager18func_ov00_020849f8Ei(void *param1); extern "C" bool _ZN14PlayerLinkBase18func_ov00_020bbd80Ei(unk32 param1, unk32 param2); extern "C" bool _ZNK11ItemManager7HasItemEi(); extern "C" void _ZN11ItemManager12GetEquipItemEi(); @@ -251,7 +250,7 @@ ARM bool ItemManager::func_ov00_020ad790(unk32 param1) { } ItemFlag equipId = mForcedItem; - bool unk2 = !gMapManager->func_ov00_020849f8(); + bool unk2 = !gMapManager->func_ov00_020849f8(equipId); if ( mEquippedItem != ItemFlag_None && (unk2 || (u32) mEquippedItem - 9 <= 1) && -- cgit v1.2.3 From 74a29deff311fb7bc51028ae9bf4272d7835cb8c Mon Sep 17 00:00:00 2001 From: Aetias Date: Sat, 12 Oct 2024 16:16:17 +0200 Subject: Remove `elfkill` --- src/00_Core/Actor/Actor.cpp | 4 +--- src/Main/Actor/ActorType.cpp | 4 ---- 2 files changed, 1 insertion(+), 7 deletions(-) (limited to 'src') diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index b15fee13..04994a03 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -53,7 +53,6 @@ const UnkStruct3 sUnkTable[] = { { 2, 2 }, }; -KILL(_ZN19Actor_UnkStruct_020C2Ev) Actor_UnkStruct_020::Actor_UnkStruct_020(): mUnk_0c(-1), mUnk_0d(0), @@ -69,8 +68,7 @@ Actor_UnkStruct_020::Actor_UnkStruct_020(): } } -KILL(_ZN5ActorC1Ev) -ARM Actor::Actor(): +ARM Actor::Actor() : mType(ActorTypeId_Null), mRef(-1, -1), mUnk_010(0), diff --git a/src/Main/Actor/ActorType.cpp b/src/Main/Actor/ActorType.cpp index 39579811..69282898 100644 --- a/src/Main/Actor/ActorType.cpp +++ b/src/Main/Actor/ActorType.cpp @@ -2,10 +2,6 @@ ActorTypeList sActorTypeList; -// Kill duplicate dtors -KILL(_ZN9ActorTypeC2EjPFP5ActorvEPFivE) -KILL(_ZN9ActorTypeD2Ev) - ARM ActorType::ActorType(ActorTypeId id, ActorCreateFunc create, unk32 (*unk_08)()) { this->id = id; this->create = create; -- cgit v1.2.3 From 0b6c727e36a764c1eee496ab80b14a5da00f21c5 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sat, 12 Oct 2024 16:16:32 +0200 Subject: Add `.clang-format` --- src/00_Core/Actor/Actor.cpp | 139 +++++++++++++---------------- src/00_Core/Actor/ActorManager.cpp | 7 +- src/00_Core/Item/ItemManager.cpp | 145 ++++++++++++++----------------- src/00_Core/Map/Course.cpp | 8 +- src/00_Core/Map/MapBase.cpp | 6 +- src/00_Core/Map/MapManager.cpp | 10 ++- src/00_Core/Player/LinkStateBase.cpp | 26 +++--- src/00_Core/Player/LinkStateFollow.cpp | 2 +- src/00_Core/Player/LinkStateInteract.cpp | 2 +- src/00_Core/Player/LinkStateItem.cpp | 4 +- src/00_Core/Player/PlayerBase.cpp | 4 +- src/00_Core/Player/PlayerControl.cpp | 2 +- src/00_Core/Save/AdventureFlags.cpp | 8 +- src/14_Land/Actor/ActorRupee.cpp | 2 +- src/Main/Actor/ActorType.cpp | 8 +- 15 files changed, 167 insertions(+), 206 deletions(-) (limited to 'src') diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 04994a03..57f405b8 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -1,5 +1,5 @@ extern "C" { - #include +#include } #include "Actor/Actor.hpp" @@ -13,7 +13,7 @@ extern "C" { #include "Player/TouchControl.hpp" #include "Save/AdventureFlags.hpp" -static char *sShipTypes[] = { "brg", "anc", "bow", "hul", "can", "dco", "pdl", "fnl" }; +static char *sShipTypes[] = {"brg", "anc", "bow", "hul", "can", "dco", "pdl", "fnl"}; struct UnkStruct3 { /* 0 */ s16 mUnk_0; @@ -21,44 +21,16 @@ struct UnkStruct3 { /* 3 */ }; const UnkStruct3 sUnkTable[] = { - { 0xff, 2 }, - { 0xff, 2 }, - { 0xff, 2 }, - { 0xff, 2 }, - { 0xff, 2 }, - { 6, 2 }, - { 4, 2 }, - { 4, 2 }, - { 4, 2 }, - { 1, 2 }, - { 12, 2 }, - { 4, 2 }, - { 4, 2 }, - { 8, 2 }, - { 12, 2 }, - { 2, 2 }, - { 2, 2 }, - { 20, 2 }, - { 20, 2 }, - { 1, 2 }, - { 4, 2 }, - { 4, 2 }, - { 4, 2 }, - { 8, 2 }, - { 4, 2 }, - { 0xff, 2 }, - { 20, 2 }, - { 6, 2 }, - { 6, 2 }, - { 2, 2 }, + {0xff, 2}, {0xff, 2}, {0xff, 2}, {0xff, 2}, {0xff, 2}, {6, 2}, {4, 2}, {4, 2}, {4, 2}, {1, 2}, + {12, 2}, {4, 2}, {4, 2}, {8, 2}, {12, 2}, {2, 2}, {2, 2}, {20, 2}, {20, 2}, {1, 2}, + {4, 2}, {4, 2}, {4, 2}, {8, 2}, {4, 2}, {0xff, 2}, {20, 2}, {6, 2}, {6, 2}, {2, 2}, }; -Actor_UnkStruct_020::Actor_UnkStruct_020(): +Actor_UnkStruct_020::Actor_UnkStruct_020() : mUnk_0c(-1), mUnk_0d(0), mUnk_0e(1), - mUnk_10(-1) -{ + mUnk_10(-1) { for (s32 i = 0; i < 4; ++i) { mUnk_00[i] = 0; } @@ -122,20 +94,19 @@ ARM Actor::Actor() : mActiveFrames(0), mUnk_13c(0), mUnk_140(0), - mUnk_144(0) -{ + mUnk_144(0) { mUnk_014.x = 0; mUnk_014.y = 0; mUnk_014.z = 0; - mPos.x = 0; - mPos.y = 0; - mPos.z = 0; + mPos.x = 0; + mPos.y = 0; + mPos.z = 0; mPrevPos.x = 0; mPrevPos.y = 0; mPrevPos.z = 0; - mVel.x = 0; - mVel.y = 0; - mVel.z = 0; + mVel.x = 0; + mVel.y = 0; + mVel.z = 0; } ARM Actor::~Actor() {} @@ -196,7 +167,8 @@ struct UnkStruct1 { }; extern void *data_027e0d3c; extern unk32 data_02063e4c; -extern "C" bool func_ov00_02079470(void *param1, Vec3p *param2, unk32 param3, unk32 param4, unk32 *param5, unk32 *param6, unk32 param7, unk32 param8); +extern "C" bool func_ov00_02079470(void *param1, Vec3p *param2, unk32 param3, unk32 param4, unk32 *param5, unk32 *param6, + unk32 param7, unk32 param8); extern "C" void func_01ffbe34(UnkStruct1 *param1); extern "C" void func_020313c8(unk32 *param1, unk32 param2, unk32 param3, u32 param4, UnkStruct1 *param5); ARM void Actor::vfunc_1c(u16 *param1) { @@ -229,7 +201,7 @@ ARM bool Actor::SetUnk_11b() { ARM bool Actor::SetVelocity(Vec3p *vel) { if (!mUnk_11b) return false; - mVel = *vel; + mVel = *vel; mUnk_11b = false; return true; } @@ -295,13 +267,9 @@ extern s32 data_027e103c; ARM bool Actor::func_ov00_020c198c() { u32 unk1 = data_027e077c.mUnk_0; u32 unk2 = data_027e077c.mUnk_4; - if ( - data_027e077c.mUnk_0 != data_027e077c.mUnk_4 - || (data_02056be4[unk1] & 1) != 0 - || (data_02056be4[unk2] & 4) != 0 - || func_ov05_02103f4c(data_027e103c) - || gPlayer->mHealth <= 0 - ) { + if (data_027e077c.mUnk_0 != data_027e077c.mUnk_4 || (data_02056be4[unk1] & 1) != 0 || (data_02056be4[unk2] & 4) != 0 || + func_ov05_02103f4c(data_027e103c) || gPlayer->mHealth <= 0) + { return false; } if (gPlayerLink && !gPlayerLink->func_ov00_020bd304()) return false; @@ -319,8 +287,7 @@ ARM bool KillPickupsFilter::Filter(Actor *actor) { case ActorTypeId_FLAL: case ActorTypeId_FLBM: case ActorTypeId_FLBT: - case ActorTypeId_FLTM: - { + case ActorTypeId_FLTM: { actor->Kill(); return true; } @@ -336,16 +303,16 @@ ARM void Actor::KillPickupItemActors() { ARM bool Actor::TrySetTransform(Transform *transform) { mPrevPos = mPos; - mPos = transform->pos; - mAngle = transform->angle; + mPos = transform->pos; + mAngle = transform->angle; mVisible = transform->visible; return true; } ARM void Actor::SetTransform(Transform *transform) { mPrevPos = mPos; - mPos = transform->pos; - mAngle = transform->angle; + mPos = transform->pos; + mAngle = transform->angle; mVisible = transform->visible; } @@ -376,7 +343,8 @@ ARM bool Actor::vfunc_4c(unk32 *param1) { ARM bool Actor::IsNearLink() { Vec3p playerPos = gPlayerPos; - q20 z = playerPos.z; + + q20 z = playerPos.z; q20 dx = abs(playerPos.x - mPos.x); if (dx > FLOAT_TO_Q20(10.0)) return false; q20 dz = abs(playerPos.z - mPos.z); @@ -457,38 +425,42 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { if (this->CollidesWithPlayer(flags & PlayerCollide_Sword)) { Knockback knockback; knockback.mUnk_00 = gPlayer->EquipItem_vfunc_2c(); - knockback.vec = vecFromPlayer; + knockback.vec = vecFromPlayer; knockback.mUnk_10 = 0; - knockback.actor = NULL; + knockback.actor = NULL; + result = this->vfunc_48(&knockback); } else if (this->CollidesWithPlayer(flags & PlayerCollide_Shield)) { Knockback knockback; knockback.mUnk_00 = 0; - knockback.vec = vecFromPlayer; + knockback.vec = vecFromPlayer; if ((s32) gItemManager->GetActiveFairyLevel(FairyId_Wisdom) >= 1) { knockback.mUnk_10 = 3; } else { knockback.mUnk_10 = 2; } knockback.actor = NULL; + result = this->vfunc_48(&knockback); } else if (this->CollidesWithPlayer(flags & PlayerCollide_Hammer)) { Knockback knockback; knockback.mUnk_00 = gPlayer->EquipItem_vfunc_2c(); - knockback.vec = vecFromPlayer; + knockback.vec = vecFromPlayer; knockback.mUnk_10 = 4; - knockback.actor = NULL; + knockback.actor = NULL; + result = this->vfunc_48(&knockback); } else if (this->CollidesWithPlayer(flags & PlayerCollide_Gongoron)) { Knockback knockback; knockback.mUnk_00 = gPlayerLink->vfunc_78(); - knockback.vec = vecFromPlayer; + knockback.vec = vecFromPlayer; if (knockback.mUnk_00 != 0) { knockback.mUnk_10 = 9; } else { knockback.mUnk_10 = 2; } knockback.actor = NULL; + result = this->vfunc_48(&knockback); } } @@ -499,8 +471,8 @@ ARM bool Actor::CollidesWithShield(Cylinder *param1) { Vec3p vecFromPlayer; Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); s32 currAngle = gPlayerAngle; - s32 angle = Atan2(vecFromPlayer.x, vecFromPlayer.z); - s32 angleDiff = (s16)angle - currAngle; + s32 angle = Atan2(vecFromPlayer.x, vecFromPlayer.z); + s32 angleDiff = (s16) angle - currAngle; if (angleDiff < 0) angleDiff = -angleDiff; if (angleDiff <= DEG_TO_ANG(90) && gPlayer->EquipCollidesWith(param1, ItemFlag_WoodenShield)) { return true; @@ -556,6 +528,7 @@ ARM bool Actor::func_ov00_020c243c(ActorTypeId *actorTypes, Actor **out) { if (actor->mType == ActorTypeId_Arrow || actor->mType == ActorTypeId_SBEM) { q20 cos = COS(actor->mAngle); q20 sin = SIN(actor->mAngle); + knockback.vec.x = sin; knockback.vec.y = 0; knockback.vec.z = cos; @@ -563,7 +536,7 @@ ARM bool Actor::func_ov00_020c243c(ActorTypeId *actorTypes, Actor **out) { Vec3p_Sub(&mPos, &actor->mPrevPos, &knockback.vec); } knockback.mUnk_00 = actor->mUnk_125; - knockback.actor = actor; + knockback.actor = actor; switch (actor->mType) { case ActorTypeId_SBEM: { @@ -597,8 +570,7 @@ ARM bool Actor::func_ov00_020c243c(ActorTypeId *actorTypes, Actor **out) { case ActorTypeId_BKEY: case ActorTypeId_FORC: case ActorTypeId_FLTB: - case ActorTypeId_TSUB: - { + case ActorTypeId_TSUB: { knockback.mUnk_10 = 10; } break; @@ -676,12 +648,14 @@ ARM q20 Actor::XzDistanceToLink() { Vec3p src; Vec3p_CopyXZ(&mPos, &src); Vec3p dest = gPlayerPos; + dest.y = 0; return Vec3p_Distance(&src, &dest); } ARM s16 Actor::GetAngleTo(Vec3p *vec) { s16 angle = mAngle; + q20 dz = vec->z - mPos.z; q20 dx = vec->x - mPos.x; if (dx != 0 || dz != 0) { @@ -698,10 +672,11 @@ extern "C" void func_0202d95c(Vec3p *param1, q20 param2); ARM void Actor::func_ov00_020c2988(Vec3p *param1, q20 param2, Vec3p *param3) { q20 z1 = param1->z; q20 z0 = mPos.z; + param3->x = param1->x - mPos.x; param3->y = 0; param3->z = z1 - z0; - q20 dist = this->XzDistanceTo(param1); + q20 dist = this->XzDistanceTo(param1); if (dist < param2) param2 = dist; func_0202d95c(param3, param2); } @@ -717,8 +692,8 @@ ARM bool Actor::func_ov00_020c29ec(q20 param1) { } ARM void Actor::GetHitbox(Cylinder *hitbox) { - hitbox->size = mHitbox.size; - u32 angle = 2 * (mAngle >> 4); + hitbox->size = mHitbox.size; + u32 angle = 2 * (mAngle >> 4); hitbox->pos.x = mPos.x; hitbox->pos.y = mPos.y; hitbox->pos.z = mPos.z; @@ -730,8 +705,8 @@ ARM void Actor::GetHitbox(Cylinder *hitbox) { } ARM void Actor::GetUnk_08c(Cylinder *param1) { - param1->size = mUnk_08c.size; - u32 angle = 2 * (mAngle >> 4); + param1->size = mUnk_08c.size; + u32 angle = 2 * (mAngle >> 4); param1->pos.x = mPos.x; param1->pos.y = mPos.y; param1->pos.z = mPos.z; @@ -778,8 +753,8 @@ ARM bool Actor::func_ov00_020c2c70() { return boomerang != NULL; } -ARM EquipBoomerang* Actor::GetEquipBoomerang() { - return (EquipBoomerang*) ItemManager::GetEquipItemUnchecked(ItemFlag_Boomerang); +ARM EquipBoomerang *Actor::GetEquipBoomerang() { + return (EquipBoomerang *) ItemManager::GetEquipItemUnchecked(ItemFlag_Boomerang); } ARM bool Actor::func_ov00_020c2d54() { @@ -804,6 +779,7 @@ ARM bool Actor::func_ov00_020c2de4() { Vec3p vel; EquipRope *rope = EquipSword::GetEquipRope(); + Actor *actor = rope->func_ov14_0213d420(); if (actor) { Vec3p_Sub(&actor->mPos, &mPos, &vel); @@ -820,6 +796,7 @@ ARM bool Actor::func_ov00_020c2de4() { ARM bool Actor::func_ov00_020c2e7c() { bool result = false; + EquipRope *rope = EquipSword::GetEquipRope(); if (!mUnk_11d) { s32 unk1 = rope->func_ov14_0213ddd4(this); @@ -839,6 +816,7 @@ ARM bool Actor::func_ov00_020c2ebc() { ARM bool Actor::func_ov00_020c2ed4() { EquipRope *rope = EquipSword::GetEquipRope(); + s32 index = rope->func_ov14_0213d440(mRef.id); if (index >= 0) { bool unk1 = rope->func_ov14_0213d420(); @@ -868,6 +846,7 @@ ARM bool Actor::func_ov00_020c2ed4() { ARM bool Actor::IsHitboxTouched(bool param1) { q20 size = mHitbox.size; + bool result = false; if (size >= 0) { Vec3p pos = mPos; @@ -899,7 +878,7 @@ ARM bool Actor::func_ov00_020c3094() { return result; } -ARM Vec3p* Actor::GetPos() { +ARM Vec3p *Actor::GetPos() { return &mPos; } @@ -946,6 +925,7 @@ ARM void Actor::vfunc_ac() {} ARM void Actor::func_ov00_020c3200(s32 param1) { const UnkStruct3 *entry = &sUnkTable[param1]; + mUnk_122 = sUnkTable[param1].mUnk_0; mUnk_120 = sUnkTable[param1].mUnk_0; mUnk_124 = entry->mUnk_2; @@ -963,7 +943,7 @@ ARM void Actor::GetLinkPos(Vec3p *result) { ARM void Actor::GetLinkDummyPos(Vec3p *result) { ActorRef dummyRef; ActorManager::FindActorByType(&dummyRef, gActorManager, ActorTypeId_PlayerDummy); - ActorPlayerDummy *dummy = (ActorPlayerDummy*) gActorManager->GetActor(&dummyRef); + ActorPlayerDummy *dummy = (ActorPlayerDummy *) gActorManager->GetActor(&dummyRef); if (dummy != NULL && dummy->mUnk_16e == 0) { *result = dummy->mPos; return; @@ -977,4 +957,3 @@ Actor_UnkStruct_09c::Actor_UnkStruct_09c() { mUnk_3 = 0; mUnk_4 = 0; } - diff --git a/src/00_Core/Actor/ActorManager.cpp b/src/00_Core/Actor/ActorManager.cpp index 472eede2..467196d7 100644 --- a/src/00_Core/Actor/ActorManager.cpp +++ b/src/00_Core/Actor/ActorManager.cpp @@ -3,18 +3,17 @@ void ActorManager::DeleteActor(u32 index, bool param2) {} void ActorManager::func_ov00_020c3484(ActorRef *ref, Actor *actor, unk32 param3) {} void ActorManager::Actor_vfunc_10(u32 param1) {} -Actor* ActorManager::FindActorById(u32 id) {} -Actor* ActorManager::GetActor(ActorRef *ref) {} +Actor *ActorManager::FindActorById(u32 id) {} +Actor *ActorManager::GetActor(ActorRef *ref) {} bool FilterActor::Filter(Actor *actor) {} s32 ActorManager::FilterActors(FilterActorBase *filter, ActorList *filteredActors) {} void ActorManager::FindActorByType(ActorRef *ref, ActorManager *manager, ActorTypeId type) {} void ActorManager::FindNearestActorOfType(ActorRef *ref, ActorManager *manager, ActorTypeId type, Vec3p *pos) {} bool ActorManager::func_ov00_020c398c(u32 index) {} void ActorManager::func_ov00_020c399c(u32 index, Cylinder *cylinder) {} -Actor* ActorManager::func_ov00_020c39ac(u32 index, const ActorTypeId *actorTypes, bool param3) {} +Actor *ActorManager::func_ov00_020c39ac(u32 index, const ActorTypeId *actorTypes, bool param3) {} s32 ActorManager::func_ov00_020c3b2c(s32 *param1) {} s32 ActorManager::func_ov00_020c3bb0(unk32 param1, s32 *param2) {} void ActorManager::func_ov00_020c3ce8(unk32 param1, unk32 param2) {} void ActorManager::Actor_vfunc_28() {} bool ActorManager::ActorTypeIsOneOf(u32 type, ActorTypeId *types) {} - diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index 0f28dd2f..46a0add0 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -1,10 +1,10 @@ #include "Item/ItemManager.hpp" #include "Player/PlayerLinkBase.hpp" -static const char *sShipPartTypes[] = { "anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg" }; +static const char *sShipPartTypes[] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; extern u32 *data_027e0ce0[]; -THUMB ItemManager* ItemManager::Create() { +THUMB ItemManager *ItemManager::Create() { gItemManager = new(data_027e0ce0[1], 4) ItemManager(); return gItemManager; } @@ -24,12 +24,12 @@ THUMB void ItemManager::Save(SaveItemManager *save) { for (s32 i = 0; i < NUM_POTIONS; ++i) { save->potions[i] = mPotions[i]; } - save->numBombs = (u8) (*mAmmo)[ItemFlag_BombBag]; - save->numBombchus = (u8) (*mAmmo)[ItemFlag_BombchuBag]; - save->numArrows = (u8) (*mAmmo)[ItemFlag_Bow]; - save->equippedItem = (u8) mEquippedItem; + save->numBombs = (u8) (*mAmmo)[ItemFlag_BombBag]; + save->numBombchus = (u8) (*mAmmo)[ItemFlag_BombchuBag]; + save->numArrows = (u8) (*mAmmo)[ItemFlag_Bow]; + save->equippedItem = (u8) mEquippedItem; save->salvagedTreasureFlags = mSalvagedTreasureFlags; - save->hourglassSeconds = FastDivide(mHourglassSandFrames, 60); + save->hourglassSeconds = FastDivide(mHourglassSandFrames, 60); for (s32 i = 0; i < Gem_COUNT; ++i) { save->numGems[i] = mNumGems[i]; } @@ -48,8 +48,8 @@ THUMB void ItemManager::Save(SaveItemManager *save) { save->unk_9f[i] = mUnk_098[i]; save->unk_82[i] = mUnk_09e[i]; } - save->quiverSize = mQuiverSize; - save->bombBagSize = mBombBagSize; + save->quiverSize = mQuiverSize; + save->bombBagSize = mBombBagSize; save->bombchuBagSize = mBombchuBagSize; if (mEquippedFairy == FairyId_None) { save->equippedFairy = 3; @@ -61,21 +61,20 @@ THUMB void ItemManager::Save(SaveItemManager *save) { THUMB void ItemManager::Load(const SaveItemManager *save) { mItemFlags = save->itemFlags; mNumRupees = save->numRupees; - mHourglassSandFrames = save->hourglassSeconds <= MAX_HOURGLASS_SECONDS - ? save->hourglassSeconds * 60 - : MAX_HOURGLASS_SECONDS * 60; + mHourglassSandFrames = + save->hourglassSeconds <= MAX_HOURGLASS_SECONDS ? save->hourglassSeconds * 60 : MAX_HOURGLASS_SECONDS * 60; for (s32 i = ItemFlag_EQUIP_START; i < ItemFlag_EQUIP_END; ++i) { if (GET_FLAG(mItemFlags.flags, (u32) i)) { (*mAmmo)[i] = 1; } } - (*mAmmo)[ItemFlag_BombBag] = save->numBombs; + (*mAmmo)[ItemFlag_BombBag] = save->numBombs; (*mAmmo)[ItemFlag_BombchuBag] = save->numBombchus; - (*mAmmo)[ItemFlag_Bow] = save->numArrows; + (*mAmmo)[ItemFlag_Bow] = save->numArrows; for (s32 i = 0; i < NUM_POTIONS; ++i) { mPotions[i] = save->potions[i]; } - mEquippedItem = save->equippedItem; + mEquippedItem = save->equippedItem; mSalvagedTreasureFlags = save->salvagedTreasureFlags; for (s32 i = 0; i < Gem_COUNT; ++i) { mNumGems[i] = save->numGems[i]; @@ -95,10 +94,10 @@ THUMB void ItemManager::Load(const SaveItemManager *save) { mUnk_098[i] = save->unk_9f[i]; mUnk_09e[i] = save->unk_82[i]; } - mQuiverSize = save->quiverSize; - mBombBagSize = save->bombBagSize; + mQuiverSize = save->quiverSize; + mBombBagSize = save->bombBagSize; mBombchuBagSize = save->bombchuBagSize; - mEquippedFairy = save->equippedFairy; + mEquippedFairy = save->equippedFairy; if (mEquippedFairy >= FairyId_COUNT) { mEquippedFairy = FairyId_None; } @@ -121,7 +120,7 @@ ARM FairyId ItemManager::GetEquippedFairy() const { return fairy; } -ARM ActorNavi* ItemManager::GetFairy(FairyId id) const { +ARM ActorNavi *ItemManager::GetFairy(FairyId id) const { return mFairies[id]; } @@ -150,29 +149,29 @@ ARM void ItemManager::TickEquipItem(void) { ARM void ItemManager::func_ov00_020ad528() {} -ARM ItemModel* ItemManager::GetItemModel(ItemModelId id) { +ARM ItemModel *ItemManager::GetItemModel(ItemModelId id) { return mItemModels[id]; } extern unk32 data_027e0fc4; -extern "C" void* func_ov00_020bb3a8(unk32 param1, u32 index); +extern "C" void *func_ov00_020bb3a8(unk32 param1, u32 index); extern "C" void func_ov00_020c0bdc(void *param1, unk32 param2); ARM void ItemManager::func_ov00_020ad538(unk32 param1) const { - void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 6); + void *unk1 = func_ov00_020bb3a8(data_027e0fc4, 6); func_ov00_020c0bdc(unk1, param1); } ARM void ItemManager::func_ov00_020ad560(unk32 param1) const { - void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 7); + void *unk1 = func_ov00_020bb3a8(data_027e0fc4, 7); func_ov00_020c0bdc(unk1, param1); } -ARM ItemModel* ItemManager::GetDungeonItemModel(u32 index) { +ARM ItemModel *ItemManager::GetDungeonItemModel(u32 index) { return mDungeonItemModels[index]; } ARM void ItemManager::func_ov00_020ad594(unk32 param1) const { - void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 11); + void *unk1 = func_ov00_020bb3a8(data_027e0fc4, 11); func_ov00_020c0bdc(unk1, param1); } @@ -191,7 +190,7 @@ ARM void ItemManager::EquipItem_vfunc_38(unk32 param1) { this->Shield_vfunc_38(param1); } if (data_027e0d38->mUnk_14 == 1) return; - + ItemFlag equip = this->GetEquippedItem(); if (equip == ItemFlag_None) return; if (mEquipLoadTimer > 0) return; @@ -215,7 +214,7 @@ ARM s32 ItemManager::EquipItem_vfunc_2c(ItemFlag equipId) { return (*mEquipItems)[equipId]->vfunc_2c(); } -ARM EquipItem* ItemManager::GetEquipItem(ItemFlag equipId) { +ARM EquipItem *ItemManager::GetEquipItem(ItemFlag equipId) { if (equipId == ItemFlag_None) { return NULL; } else { @@ -248,18 +247,15 @@ ARM bool ItemManager::func_ov00_020ad790(unk32 param1) { if (gOverlayManager.mLoadedOverlays[OverlayIndex_6] == OverlayId_29 && data_ov29_0217a4ac[0x54] != 0) { return false; } - + ItemFlag equipId = mForcedItem; - bool unk2 = !gMapManager->func_ov00_020849f8(equipId); - if ( - mEquippedItem != ItemFlag_None && - (unk2 || (u32) mEquippedItem - 9 <= 1) && - (gPlayerLink == 0 || gPlayerLink->func_ov00_020bbd80(param1)) && - this->HasItem(mEquippedItem) - ) { + bool unk2 = !gMapManager->func_ov00_020849f8(equipId); + if (mEquippedItem != ItemFlag_None && (unk2 || (u32) mEquippedItem - 9 <= 1) && + (gPlayerLink == 0 || gPlayerLink->func_ov00_020bbd80(param1)) && this->HasItem(mEquippedItem)) + { equipId = mEquippedItem; } - + if (equipId != ItemFlag_None) { if (mEquipLoadTimer != 0) return param1 == 0; return this->GetEquipItem(equipId)->IsUsable(param1); @@ -303,7 +299,7 @@ THUMB u16 ItemManager::GetUnk_09e(u32 index) const { THUMB s32 ItemManager::GetUnk_09e_Divided(u32 index) const { q20 quotient = Divide(INT_TO_Q20(mUnk_09e[index]), FLOAT_TO_Q20(2.54)); - s32 result = ROUND_Q20(quotient); + s32 result = ROUND_Q20(quotient); if (result < 1) result = 1; return result; } @@ -318,7 +314,7 @@ THUMB void ItemManager::SetUnk_09e(u32 index, u16 value) { } } -const u16 sQuiverSizes[] = {20, 20, 30, 50}; +const u16 sQuiverSizes[] = {20, 20, 30, 50}; const u16 sBombBagSizes[] = {10, 20, 30}; THUMB u16 ItemManager::GetMaxAmmo(ItemFlag equipId) const { @@ -378,9 +374,10 @@ THUMB void ItemManager::RemoveItem(ItemFlag item) { extern ItemModel **data_027e1058; extern ItemModel **data_027e105c; -extern "C" ItemModel* func_ov00_02079ffc(void*, const char *modelName, const char *textureName, unk32 param4, unk8 param5, unk8 param6, bool param7); -extern "C" ItemModel* LoadTreasureItemFanfare(ItemModel**, s32 treasureType, bool, bool); -static char *sDefaultItemModel = "key"; +extern "C" ItemModel *func_ov00_02079ffc(void *, const char *modelName, const char *textureName, unk32 param4, unk8 param5, + unk8 param6, bool param7); +extern "C" ItemModel *LoadTreasureItemFanfare(ItemModel **, s32 treasureType, bool, bool); +static char *sDefaultItemModel = "key"; static char *sItemModelNames[70] = { [ItemId_None] = "key", [ItemId_SmallKey] = "key", @@ -475,37 +472,24 @@ static char *sItemModelNames3[9] = { [ItemId_Unk_135 - ItemId_CycloneSlate] = NULL, }; char *sSpecialItemModelNames[7] = { - "mapTakara\0\0", - "arrowpodL\0\0", - "bmbagL\0", - "bcbagL\0", - "Player/get/gd_\0", - ".nsbmd\0", - ".nsbtx\0", + "mapTakara\0\0", "arrowpodL\0\0", "bmbagL\0", "bcbagL\0", "Player/get/gd_\0", ".nsbmd\0", ".nsbtx\0", }; THUMB void ItemManager::LoadFanfareItem(ItemId id) { mFanfareItem = id; - + ItemModel *model; - if ( - id == ItemId_Unk_43 || - id == ItemId_Cannon || - (id >= ItemId_GOLDEN_SHIP_START && id <= ItemId_GOLDEN_SHIP_END) || - id == ItemId_Unk_126 || - id == ItemId_Unk_133 - ) { + if (id == ItemId_Unk_43 || id == ItemId_Cannon || (id >= ItemId_GOLDEN_SHIP_START && id <= ItemId_GOLDEN_SHIP_END) || + id == ItemId_Unk_126 || id == ItemId_Unk_133) + { model = *data_027e1058; - } else if ( - id >= ItemId_TREASURE_START && - id <= ItemId_TREASURE_END - ) { + } else if (id >= ItemId_TREASURE_START && id <= ItemId_TREASURE_END) { model = LoadTreasureItemFanfare(data_027e105c, id - ItemId_TREASURE_START, true, false); } else if (id == ItemId_Unk_125) { model = *data_027e105c; } else { - char modelName[0x80] = {}; + char modelName[0x80] = {}; char textureName[0x80] = {}; - const char *itemName = NULL; + const char *itemName = NULL; if (id == ItemId_Quiver && (s32) mQuiverSize >= 1) { itemName = sSpecialItemModelNames[1]; } else if (id == ItemId_BigBombBag && (s32) mBombBagSize >= 1) { @@ -769,11 +753,11 @@ THUMB void ItemManager::GiveItem(ItemId id) { break; } } break; - + case ItemId_SandOfHours: { mHourglassSandFrames += 3600; } break; - + case ItemId_GoldenChimney: { gAdventureFlags->Set(AdventureFlag_ReceivedGoldenChimney, true); GiveShipPart(ShipPart_Chimney, ShipType_Golden); @@ -809,7 +793,7 @@ THUMB void ItemManager::GiveItem(ItemId id) { case ItemId_Rupoor50: { this->GiveRupees(-50, true); } break; - + case ItemId_None: break; case ItemId_Unk_5: break; case ItemId_Unk_16: break; @@ -822,11 +806,9 @@ THUMB void ItemManager::GiveItem(ItemId id) { } } break; } - if ( - gAdventureFlags->Get(AdventureFlag_Azurine) && - gAdventureFlags->Get(AdventureFlag_Crimsonine) && - gAdventureFlags->Get(AdventureFlag_Aquanine) - ) { + if (gAdventureFlags->Get(AdventureFlag_Azurine) && gAdventureFlags->Get(AdventureFlag_Crimsonine) && + gAdventureFlags->Get(AdventureFlag_Aquanine)) + { gAdventureFlags->Set(AdventureFlag_Unk_128, true); } } @@ -836,7 +818,7 @@ THUMB void ItemManager::GiveEquipItem(ItemFlag item, u16 ammo) { SET_FLAG(mItemFlags.flags, flag); this->GetEquipItem(item)->GiveAmmo(ammo); if (mEquippedItem == ItemFlag_None) { - this->mEquippedItem = item; + this->mEquippedItem = item; this->mEquipLoadTimer = 1; } } @@ -893,8 +875,8 @@ ARM ItemFlag ItemManager::GetEquippedItem() const { ARM bool ItemManager::SetEquippedItem(ItemFlag equipId) { mPrevEquippedItem = mEquippedItem; - mEquippedItem = equipId; - mEquipLoadTimer = 2; + mEquippedItem = equipId; + mEquipLoadTimer = 2; return true; } @@ -907,7 +889,7 @@ THUMB void ItemManager::ForceEquipItem(ItemFlag equipId) { if (i == equipId) continue; (*mEquipItems)[i - ItemFlag_EQUIP_START]->UpdateInUse(0); } - mForcedItem = equipId; + mForcedItem = equipId; mEquipLoadTimer = 1; } @@ -961,12 +943,10 @@ ARM bool ItemManager::HasPotion(u32 index) const { switch (mPotions[index]) { case Potion_Red: case Potion_Purple: - case Potion_Yellow: - return true; - + case Potion_Yellow: return true; + case Potion_None: - default: - return false; + default: return false; } } @@ -1027,7 +1007,7 @@ THUMB void ItemManager::PlayItemFanfareSfx(ItemId item) { case ItemId_GoldRupee: { sfx = SfxId_Fanfare_GoldRupee; } break; - + case ItemId_SmallKey: case ItemId_GreenRupee: case ItemId_BlueRupee: @@ -1035,7 +1015,7 @@ THUMB void ItemManager::PlayItemFanfareSfx(ItemId item) { sfx = SfxId_Fanfare_Rupee; } break; - case ItemId_Rupoor10: + case ItemId_Rupoor10: case ItemId_Rupoor50: { sfx = SfxId_Fanfare_Rupoor; } break; @@ -1048,13 +1028,14 @@ THUMB void ItemManager::PlayItemFanfareSfx(ItemId item) { case ItemId_HeartContainer: { sfx = SfxId_Fanfare_HeartContainer; } break; - + default: { sfx = SfxId_Fanfare_Treasure; } break; } if (gItemManager->mFanfareSfx != SfxId_None) { sfx = gItemManager->mFanfareSfx; + gItemManager->mFanfareSfx = SfxId_None; } PlaySoundEffect(&data_ov00_020eec68, sfx); diff --git a/src/00_Core/Map/Course.cpp b/src/00_Core/Map/Course.cpp index 316b05ee..4771048d 100644 --- a/src/00_Core/Map/Course.cpp +++ b/src/00_Core/Map/Course.cpp @@ -2,12 +2,12 @@ void Course::GetDungeonProgress(CourseProgress *param_2) {} void Course::func_ov00_0207ca28(s32 param_2, unk32 param_3, unk32 param_4) {} -char* Course::SetCourseName(char *src) {} +char *Course::SetCourseName(char *src) {} void Course::func_ov00_0207ca78(unk32 param_2, unk8 param_3, unk32 param_4) {} bool Course::func_ov00_0207caa8(s32 param_2, unk32 *param_3, unk8 *param_4) {} unk32 Course::func_ov00_0207cb30(s32 param_2) {} void Course::FindMapGridPos(Vec2b *pos, Course *param_2, u32 map) {} -Vec3p* Course::FindMapCenter(unk32 map) {} +Vec3p *Course::FindMapCenter(unk32 map) {} void Course::func_ov00_0207cbe8(s32 param_2) {} unk8 Course::func_ov00_0207cc24(s32 param_2) {} unk32 Course::FindMapData_Unk_08(unk32 map) {} @@ -47,5 +47,5 @@ void Course::SetMapDataFlag3(unk32 param_2, bool param_3) {} bool Course::GetMapDataFlag3(unk32 param_2) {} void Course::SetMapDataFlag4(unk32 param_2, unk32 param_3) {} bool Course::GetMapDataFlag4(unk32 param_2) {} -MapData* Course::FindMapData(u32 map) {} -MapData* Course::FindCurrentMapData() {} +MapData *Course::FindMapData(u32 map) {} +MapData *Course::FindCurrentMapData() {} diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 1afc8c29..8d6d3c96 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -29,7 +29,7 @@ unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} unk8 MapBase::vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {} unk32 MapBase::vfunc_70(Vec3p *param_2) {} -s32* MapBase::vfunc_74(Vec3p *param_2) {} +s32 *MapBase::vfunc_74(Vec3p *param_2) {} unk8 MapBase::func_ov00_0207f100() {} bool MapBase::func_ov00_0207f104(unk32 param_2, unk32 param_3) {} unk32 MapBase::func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3) {} @@ -74,7 +74,7 @@ unk8 MapBase::GetTriggerBoundingBoxes(unk32 param_2, AABB *param_3, unk32 param_ unk32 MapBase::GetOverlappingTrigger(Vec3p *param_2) {} bool TriggerBase::Overlaps() {} unk8 MapBase::FindTrigger(unk32 type) {} -unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase * *triggers, unk32 capacity) {} +unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity) {} bool MapBase::IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3) {} bool MapBase::AnyTrigger_func_0c(unk32 type) {} unk32 TriggerBase::vfunc_0c() {} @@ -99,7 +99,7 @@ bool MapBase::func_ov00_02080824(unk32 param_2, unk32 param_3) {} bool MapBase::AddUnk_130(unk32 param_2) {} bool MapBase::func_ov00_020809b8(unk32 param_2) {} unk8 MapBase::func_ov00_02080a78(Vec3p *param_2) {} -void MapBase_Unk2::func_ov00_02080ad0(TriggerBase * *param_2, TriggerBase * *param_3) {} +void MapBase_Unk2::func_ov00_02080ad0(TriggerBase **param_2, TriggerBase **param_3) {} unk8 MapBase::func_ov00_02080b24(Vec2b *param_2) {} void MapBase::func_ov00_02080d08(unk32 param_2) {} void MapBase::vfunc_bc() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 93dc3579..83ebbbf7 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -17,7 +17,7 @@ unk8 MapManager::func_ov00_02082454(unk32 param_2, unk32 param_3) {} unk8 MapManager::func_ov00_02082494(unk32 param_2) {} unk8 MapManager::func_ov00_020824cc(unk32 param_2) {} unk8 MapManager::func_ov00_02082504() {} -unk8 * MapManager::func_ov00_02082538() {} +unk8 *MapManager::func_ov00_02082538() {} void MapManager::func_ov00_02082594() {} void MapManager::func_ov00_020825ac() {} s32 MapManager::GetCourseFilePath(char *courseName, char *buf) {} @@ -39,7 +39,7 @@ bool MapManager::func_ov00_020828f8(s32 *param_2) {} unk8 MapManager::GetCourseData_Unk_b0() {} s32 MapManager::func_ov00_02082914(unk32 param_2) {} unk8 MapManager::func_ov00_02082acc() {} -unk32 * MapManager::func_ov00_02082adc() {} +unk32 *MapManager::func_ov00_02082adc() {} unk8 MapManager::func_ov00_02082af4() {} bool MapManager::func_ov00_02082b3c(s32 param_2) {} unk8 MapManager::func_ov00_02082d08() {} @@ -196,5 +196,7 @@ unk8 MapManager::func_ov00_020858b0() {} s32 MapManager::func_ov00_02085a34(unk32 param_2, unk32 param_3) {} unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) {} unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) {} -bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, Vec3p *param_8) {} -bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, Vec3p *param_8, Vec3p *param_9) {} +bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, + Vec3p *param_8) {} +bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, + Vec3p *param_8, Vec3p *param_9) {} diff --git a/src/00_Core/Player/LinkStateBase.cpp b/src/00_Core/Player/LinkStateBase.cpp index abe7bd34..7479667e 100644 --- a/src/00_Core/Player/LinkStateBase.cpp +++ b/src/00_Core/Player/LinkStateBase.cpp @@ -14,7 +14,7 @@ void LinkStateBase::ChangeLinkSubState(LinkStateId id, s32 subState) {} void LinkStateBase::EquipItem_vfunc_28() {} void LinkStateBase::UpdateSwordShieldInUse() {} void LinkStateBase::func_ov00_020a81b8(unk32 param1, unk32 param2) {} -LinkStateItem* LinkStateBase::GetLinkItemState() {} +LinkStateItem *LinkStateBase::GetLinkItemState() {} void LinkStateBase::LookAt(Vec3p *target) {} void LinkStateBase::func_ov00_020a81fc() {} void LinkStateBase::AddHealth(s16 amount) {} @@ -57,29 +57,29 @@ bool LinkStateBase::HasFlags_PlayerLinkBase_Unk48(u16 flags) {} unk8 LinkStateBase::Get_PlayerLinkBase_Unk5e() {} unk32 LinkStateBase::Get_PlayerControlData_Unk004() {} PlayerCharacter LinkStateBase::GetCurrentCharacter() {} -PlayerControlData* LinkStateBase::GetPlayerControlData() {} +PlayerControlData *LinkStateBase::GetPlayerControlData() {} LinkStateId LinkStateBase::GetStateId() {} s32 LinkStateBase::GetHealth() {} s32 LinkStateBase::GetCurrentCharacterHealth() {} bool LinkStateBase::func_ov00_020a8c34() {} -Vec3p* LinkStateBase::GetPlayerPos() {} -Vec3p* LinkStateBase::GetPlayerVel() {} -unk8* LinkStateBase::func_ov00_020a8c64() {} -s16* LinkStateBase::GetPlayerAngle() {} -void* LinkStateBase::GetPlayer_Unk18() {} +Vec3p *LinkStateBase::GetPlayerPos() {} +Vec3p *LinkStateBase::GetPlayerVel() {} +unk8 *LinkStateBase::func_ov00_020a8c64() {} +s16 *LinkStateBase::GetPlayerAngle() {} +void *LinkStateBase::GetPlayer_Unk18() {} s32 LinkStateBase::Get_PlayerControlData_Unk32() {} -Actor* LinkStateBase::GetGrabActor() {} -ActorRef* LinkStateBase::GetGrabActorRef() {} +Actor *LinkStateBase::GetGrabActor() {} +ActorRef *LinkStateBase::GetGrabActorRef() {} unk32 LinkStateBase::Grab() {} s32 LinkStateBase::Get_PlayerLinkBase_Unk44() {} bool LinkStateBase::IsEquipBeingUsed(ItemFlag id) {} -EquipItem* LinkStateBase::GetEquipItem(ItemFlag id) {} -void* LinkStateBase::func_ov00_020a8d40() {} +EquipItem *LinkStateBase::GetEquipItem(ItemFlag id) {} +void *LinkStateBase::func_ov00_020a8d40() {} unk32 LinkStateBase::func_ov00_020a8d50() {} unk32 LinkStateBase::func_ov00_020a8d6c() {} s32 LinkStateBase::PlayerControlData_vfunc_14(s32 param1) {} unk32 LinkStateBase::Get_PlayerControlData_Unk100() {} unk32 LinkStateBase::Get_PlayerControlData_Unk120() {} s32 LinkStateBase::Get_PlayerLinkBase_Unk38() {} -DebugHierarchy* LinkStateBase::GetDebugHierarchy0() {} -DebugHierarchy* LinkStateBase::GetDebugHierarchy1() {} +DebugHierarchy *LinkStateBase::GetDebugHierarchy0() {} +DebugHierarchy *LinkStateBase::GetDebugHierarchy1() {} diff --git a/src/00_Core/Player/LinkStateFollow.cpp b/src/00_Core/Player/LinkStateFollow.cpp index 69d173dd..4ffbb0a4 100644 --- a/src/00_Core/Player/LinkStateFollow.cpp +++ b/src/00_Core/Player/LinkStateFollow.cpp @@ -6,7 +6,7 @@ void LinkStateFollow::MoveTowardTarget() {} void LinkStateFollow::OnStateLeave(s32 param1) {} bool LinkStateFollow::vfunc_24(s32 param1) {} bool LinkStateFollow::vfunc_28() {} -LinkStateCutscene* LinkStateFollow::GetLinkStateCutscene() {} +LinkStateCutscene *LinkStateFollow::GetLinkStateCutscene() {} bool LinkStateFollow::vfunc_34(Vec3p *param1) {} bool LinkStateFollow::func_ov00_020a9180(Vec3p *param1) {} bool LinkStateFollow::func_ov00_020a9210(Vec3p *param1, Actor *param2) {} diff --git a/src/00_Core/Player/LinkStateInteract.cpp b/src/00_Core/Player/LinkStateInteract.cpp index 6cbda713..cf71654d 100644 --- a/src/00_Core/Player/LinkStateInteract.cpp +++ b/src/00_Core/Player/LinkStateInteract.cpp @@ -9,7 +9,7 @@ void LinkStateInteract::OnStateLeave(s32 param1) {} bool LinkStateInteract::func_ov00_020aa818() {} void LinkStateInteract::func_ov00_020aa844(Actor *param1) {} bool LinkStateInteract::vfunc_20(s32 param1) {} -LinkStateRoll* LinkStateInteract::GetLinkStateRoll() {} +LinkStateRoll *LinkStateInteract::GetLinkStateRoll() {} bool LinkStateInteract::vfunc_24(s32 param1) {} bool LinkStateInteract::vfunc_34(Vec3p *param1) {} void LinkStateInteract::SetGrabActorVelocity(Vec3p *velocity) {} diff --git a/src/00_Core/Player/LinkStateItem.cpp b/src/00_Core/Player/LinkStateItem.cpp index eaf3c8b6..ecedca78 100644 --- a/src/00_Core/Player/LinkStateItem.cpp +++ b/src/00_Core/Player/LinkStateItem.cpp @@ -4,7 +4,7 @@ void LinkStateItem::vfunc_00() {} LinkStateId LinkStateItem::GetId() {} s32 LinkStateItem::IsHammerEquipped() {} void LinkStateItem::OnStateLeave(s32 param1) {} -EquipBombchu* LinkStateItem::GetEquipBombchu() {} -LinkStateMove* LinkStateItem::GetLinkStateMove() {} +EquipBombchu *LinkStateItem::GetEquipBombchu() {} +LinkStateMove *LinkStateItem::GetLinkStateMove() {} bool LinkStateItem::func_ov00_020abf70() {} bool LinkStateItem::vfunc_28() {} diff --git a/src/00_Core/Player/PlayerBase.cpp b/src/00_Core/Player/PlayerBase.cpp index 4736b928..a33dc210 100644 --- a/src/00_Core/Player/PlayerBase.cpp +++ b/src/00_Core/Player/PlayerBase.cpp @@ -5,8 +5,8 @@ ItemFlag PlayerBase::GetEquipId() {} bool PlayerBase::CanMove() {} void PlayerBase::SetUpdatePos(bool updatePos) {} void PlayerBase::SetVisible(bool visible) {} -EquipSword* PlayerBase::GetEquipSword() {} -EquipShield* PlayerBase::GetEquipShield() {} +EquipSword *PlayerBase::GetEquipSword() {} +EquipShield *PlayerBase::GetEquipShield() {} void PlayerBase::LookAt(Vec3p *target) {} bool PlayerBase::func_ov00_020a7c00(s32 param1) {} bool PlayerBase::CollidesWith(Cylinder *cylinder) {} diff --git a/src/00_Core/Player/PlayerControl.cpp b/src/00_Core/Player/PlayerControl.cpp index f51d0a89..6cf39bda 100644 --- a/src/00_Core/Player/PlayerControl.cpp +++ b/src/00_Core/Player/PlayerControl.cpp @@ -4,7 +4,7 @@ bool PlayerControl::func_ov00_020aeeac() {} void PlayerControl::func_ov00_020aeef8() {} void PlayerControl::func_ov00_020aef30() {} void PlayerControl::UpdateAim() {} -Actor* PlayerControl::GetFollowActor() {} +Actor *PlayerControl::GetFollowActor() {} bool PlayerControl::func_ov00_020af01c(unk8 *param1) {} void PlayerControl::SetUnk_80() {} void PlayerControl::StopFollowing() {} diff --git a/src/00_Core/Save/AdventureFlags.cpp b/src/00_Core/Save/AdventureFlags.cpp index 14f377c1..03bb6c76 100644 --- a/src/00_Core/Save/AdventureFlags.cpp +++ b/src/00_Core/Save/AdventureFlags.cpp @@ -32,14 +32,14 @@ unk32 AdventureFlags::Get_FlagsUnk_44(int index) {} unk32 AdventureFlags::Get_FlagsUnk_30(int index) {} bool AdventureFlags::Get_FlagsUnk_00(int index, FlagsUnk2 *result) {} bool AdventureFlags::Get_FlagsUnk_18(int index, FlagsUnk2 *result) {} -FlagsUnk* AdventureFlags::Get_FlagsUnk(int index) {} +FlagsUnk *AdventureFlags::Get_FlagsUnk(int index) {} bool AdventureFlags::func_ov00_02097e6c() {} bool AdventureFlags::func_ov00_02097e7c() {} bool AdventureFlags::func_ov00_02097ea4() {} unk32 AdventureFlags::func_ov00_02097ecc() {} -void* AdventureFlags::func_ov00_02097f8c() {} -void* AdventureFlags::func_ov00_02097fac() {} -void* AdventureFlags::func_ov00_02097fd0() {} +void *AdventureFlags::func_ov00_02097f8c() {} +void *AdventureFlags::func_ov00_02097fac() {} +void *AdventureFlags::func_ov00_02097fd0() {} void AdventureFlags::func_ov00_02097ff4(bool param1, bool param2) {} unk32 AdventureFlags::func_ov00_02098058() {} bool AdventureFlags::func_ov00_02098064(unk32 param1) {} diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 5288f3bd..8725dd4f 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -2,7 +2,7 @@ ActorType ActorRupee::gType; -ActorRupee* ActorRupee::Create() {} +ActorRupee *ActorRupee::Create() {} ActorRupee::ActorRupee() {} bool ActorRupee::vfunc_08() {} bool ActorRupee::vfunc_60() {} diff --git a/src/Main/Actor/ActorType.cpp b/src/Main/Actor/ActorType.cpp index 69282898..ec5f564f 100644 --- a/src/Main/Actor/ActorType.cpp +++ b/src/Main/Actor/ActorType.cpp @@ -3,11 +3,11 @@ ActorTypeList sActorTypeList; ARM ActorType::ActorType(ActorTypeId id, ActorCreateFunc create, unk32 (*unk_08)()) { - this->id = id; + this->id = id; this->create = create; this->unk_08 = unk_08; this->unk_0c = 0; - this->next = NULL; + this->next = NULL; this->Register(); sActorTypeList.tail = this; } @@ -37,13 +37,13 @@ ARM void ActorType::Register() { ARM void ActorType::Unregister() { ActorType *actorType; - ActorType **current = &sActorTypeList.head; + ActorType **current = &sActorTypeList.head; ActorType **previous = NULL; for (actorType = sActorTypeList.head; actorType != NULL; actorType = actorType->next) { if (actorType == this) break; previous = current; - current = &actorType->next; + current = &actorType->next; } if (previous != NULL) { -- cgit v1.2.3 From 8181d30b8731685395f7499117648413ae3898a3 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sat, 19 Oct 2024 13:38:06 +0200 Subject: Remove nonmatching functions --- src/14_Land/Actor/ActorRupee.cpp | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 5f55847f..c4add821 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -47,15 +47,11 @@ ActorRupee *ActorRupee::Create() { } extern "C" asm ActorRupee *_ZN10ActorRupeeC1Ev(ActorRupee *thisx) { -#ifndef NONMATCHING - #include "../../../asm/ov14/Actor/ActorRupee_ActorRupee.inc" -#else _ZN5ActorC2Ev(thisx); _ZTV10ActorRupee = thisx; thisx->mRupeeId = 8; thisx->mUnk_15c = 0; return thisx; -#endif } // ActorRupee::ActorRupee() { @@ -72,10 +68,7 @@ extern "C" void _ZN10ActorRupee8vfunc_20Ei(); extern "C" void _ZN10ActorRupee8vfunc_60Ev(); extern "C" void _ZN10ActorRupee8vfunc_64Ev(); extern "C" u32 data_027e0764[]; -bool NONMATCH(ActorRupee::vfunc_08)() { -#ifndef NONMATCHING - #include "../../../asm/ov14/Actor/ActorRupee_vfunc_08.inc" -#else +bool ActorRupee::vfunc_08() { u32 *puVar2; // undefined u32 uVar4; u32 dVar5; @@ -168,7 +161,6 @@ bool NONMATCH(ActorRupee::vfunc_08)() { } return true; -#endif } bool ActorRupee::vfunc_60() { @@ -411,16 +403,8 @@ bool ActorRupee::func_ov14_0213b70c(RupeeId id) { return false; } -extern "C" asm void _ZN10ActorRupeeD0Ev() { -#ifndef NONMATCHING - #include "../../../asm/ov14/Actor/ActorRupee__ZN10ActorRupeeD0Ev.inc" -#endif -} +extern "C" asm void _ZN10ActorRupeeD0Ev() {} -extern "C" asm void _ZN10ActorRupeeD2Ev() { -#ifndef NONMATCHING - #include "../../../asm/ov14/Actor/ActorRupee__ZN10ActorRupeeD2Ev.inc" -#endif -} +extern "C" asm void _ZN10ActorRupeeD2Ev() {} // ActorRupee::~ActorRupee() {} -- cgit v1.2.3 From fb9d00b87f47a043b1f4a314be6607085947d3c8 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sun, 20 Oct 2024 10:39:09 +0200 Subject: Fix build; add RNG code --- src/14_Land/Actor/ActorRupee.cpp | 81 +++++++++++----------------------------- 1 file changed, 22 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index c4add821..091202b6 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -1,6 +1,7 @@ #include "Actor/ActorRupee.hpp" #include "Item/ItemManager.hpp" #include "Map/MapManager.hpp" +#include "System/Random.hpp" // char* data_ov14_021589b4 = *data_ov14_02158994; @@ -23,7 +24,7 @@ extern "C" { u32 data_ov14_021589b4; u32 data_ov14_021589d4; - u32 data_ov14_021589d8; + u32 *data_ov14_021589d8; } /* inline */ char *data_ov14_02158994[8] = {"brg", "fnl", "pdl", "dco", "can", "hul", "bow", "anc"}; // gShipParts @@ -46,13 +47,13 @@ ActorRupee *ActorRupee::Create() { return newRupee; } -extern "C" asm ActorRupee *_ZN10ActorRupeeC1Ev(ActorRupee *thisx) { - _ZN5ActorC2Ev(thisx); - _ZTV10ActorRupee = thisx; - thisx->mRupeeId = 8; - thisx->mUnk_15c = 0; - return thisx; -} +// extern "C" asm ActorRupee *_ZN10ActorRupeeC1Ev(ActorRupee *thisx) { +// _ZN5ActorC2Ev(thisx); +// _ZTV10ActorRupee = thisx; +// thisx->mRupeeId = 8; +// thisx->mUnk_15c = 0; +// return thisx; +// } // ActorRupee::ActorRupee() { // mRupeeId = 8; @@ -60,6 +61,7 @@ extern "C" asm ActorRupee *_ZN10ActorRupeeC1Ev(ActorRupee *thisx) { // } // 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(); @@ -67,22 +69,13 @@ extern "C" void _ZN10ActorRupee8vfunc_18Ej(); extern "C" void _ZN10ActorRupee8vfunc_20Ei(); extern "C" void _ZN10ActorRupee8vfunc_60Ev(); extern "C" void _ZN10ActorRupee8vfunc_64Ev(); -extern "C" u32 data_027e0764[]; bool ActorRupee::vfunc_08() { - u32 *puVar2; // undefined - u32 uVar4; u32 dVar5; - u32 uVar6; u32 iVar7; - u32 uVar8; - u32 uVar9; - u32 uVar10; - u32 uVar11; - u32 iVar12; mRupeeId = mUnk_020.mUnk_00[0]; - dVar5 = func_ov14_0213b70c(mRupeeId) ? data_ov14_021589d8[0] : FLOAT_TO_Q20(0.666); + dVar5 = func_ov14_0213b70c(mRupeeId) ? *data_ov14_021589d8 : FLOAT_TO_Q20(0.666); iVar7 = (s32) dVar5 >> 1; mHitbox.pos.x = 0; @@ -99,8 +92,6 @@ bool ActorRupee::vfunc_08() { mUnk_09c.mUnk_3 = 1; mMaxFall = mUnk_08c.size - 1; - puVar2 = data_027e0764; - if (mUnk_03c >= 0) { func_ov14_0213b204(1); } else { @@ -112,42 +103,14 @@ bool ActorRupee::vfunc_08() { func_ov14_0213b204(0); break; case 1: - uVar8 = PTR_DWORD_overlay_d_14__0213b108[8]; - uVar4 = PTR_DWORD_overlay_d_14__0213b108[uVar8]; - - uVar9 = PTR_DWORD_overlay_d_14__0213b108[16]; - iVar7 = PTR_DWORD_overlay_d_14__0213b108[12]; - uVar11 = uVar9 + uVar4; - - iVar12 = PTR_DWORD_overlay_d_14__0213b108[20]; - uVar6 = (u64) uVar11 * (u64) uVar8; - uVar10 = (iVar12 + (iVar7 * PTR_DWORD_overlay_d_14__0213b108[0]) + - (uVar8 * PTR_DWORD_overlay_d_14__0213b108[4]) + ((uVar4) >> 0x20) - // + CARRY4(uVar9, uVar4) - ); - - uVar4 = uVar9 + uVar6; - PTR_DWORD_overlay_d_14__0213b108[0] = uVar11; - puVar2[4] = uVar10; - - puVar2[0] = uVar4; - uVar6 = (iVar12 + (iVar7 * uVar11) + (uVar8 * uVar10) + ((u64) uVar11 * (FP_1(uVar8) >> 0x20)) - // + CARRY4(uVar9, uVar6) - ); - uVar11 = uVar4 * uVar8; - - PTR_DWORD_overlay_d_14__0213b108[4] = uVar6; - puVar2 = PTR_DWORD_overlay_d_14__0213b108; - uVar4 = (iVar12 + (iVar7 * uVar4) + (uVar8 * uVar6) + ((u64) uVar4 * (FP_1(uVar8) >> 0x20)) - // + CARRY4(uVar9, uVar11) - ); - - PTR_DWORD_overlay_d_14__0213b108[0] = uVar9 + uVar11; - puVar2[4] = uVar4; - - mVel.x = (s32) ((u64) uVar4 * FLOAT_TO_Q20(0.1335) >> 0x20) - FLOAT_TO_Q20(0.0666); - mVel.y = (s32) ((u64) uVar6 * FLOAT_TO_Q20(0.2) >> 0x20) + FLOAT_TO_Q20(0.3333); - mVel.z = (s32) ((u64) uVar10 * FLOAT_TO_Q20(0.1335) >> 0x20) - FLOAT_TO_Q20(0.0666); + q20 x = gRandom->Next(FLOAT_TO_Q20(0.1335)); + q20 y = gRandom->Next(FLOAT_TO_Q20(0.2)); + q20 z = gRandom->Next(FLOAT_TO_Q20(0.1335)); + + mVel.x = x - FLOAT_TO_Q20(0.0666); + mVel.y = y + FLOAT_TO_Q20(0.3333); + mVel.z = z - FLOAT_TO_Q20(0.0666); + func_ov14_0213b204(0); break; case 2: @@ -177,14 +140,14 @@ void ActorRupee::Move() { mUnk_09c.mUnk_3 = 1; size = mMaxFall = mUnk_08c.size - 1; - size += mUnk_018; + size += mUnk_014.y; if (size < mPos.y) { mUnk_09c.mUnk_0 = 0x49; } else { mUnk_09c.mUnk_0 = 0xcb; } - if (func_01fffd04(this, 0)) { + if (this->func_01fffd04(0)) { mVel.x = 0; mVel.z = 0; } @@ -353,7 +316,7 @@ void ActorRupee::vfunc_20(bool param1) { void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4) { Actor_UnkStruct_012 unk_class; static const u32 data_ov14_02153e28[] = { - // sRupeePalettes + // sRupeePalettes 0x9, // RupeeId_Green 0xA, // RupeeId_Blue 0x8, // RupeeId_Red -- cgit v1.2.3 From 29d76fbe45f6e88d345975f548433281bccaae40 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sun, 20 Oct 2024 12:36:47 +0200 Subject: Decomp `ActorRupee` --- src/14_Land/Actor/ActorRupee.cpp | 76 +++++++++++----------------------------- 1 file changed, 20 insertions(+), 56 deletions(-) (limited to 'src') 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() {} -- cgit v1.2.3 From 52e0ac185a5a3570e166ddfaddb4662863ed3d63 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sun, 20 Oct 2024 16:51:14 +0200 Subject: Decomp `ActorRupee` --- src/00_Core/Actor/Actor.cpp | 2 +- src/00_Core/Item/ItemManager.cpp | 2 +- src/14_Land/Actor/ActorRupee.cpp | 48 +++++++++++++++++++--------------------- 3 files changed, 25 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 4150b42f..3f1f2850 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -187,7 +187,7 @@ ARM void Actor::vfunc_1c(u16 *param1) { } } -ARM void Actor::vfunc_20(s32 param1) {} +ARM void Actor::vfunc_20(bool param1) {} ARM void Actor::SetUnk_129(bool value) { if (mUnk_128) mUnk_129 = value; diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index 66fba02a..9b4a71fb 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -839,7 +839,7 @@ ARM s32 ItemManager::GetMaxRupees() const { extern void *data_027e103c; extern "C" s32 func_ov00_020cf374(void *param1, bool param2); extern "C" void func_ov05_02104004(void *param1); -ARM void ItemManager::GiveRupees(s16 amount, bool param2) { +ARM void ItemManager::GiveRupees(s32 amount, bool param2) { s32 newRupees = mNumRupees + amount; if (newRupees > this->GetMaxRupees()) { newRupees = this->GetMaxRupees(); diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 78a0cf07..f45f2c7a 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -5,26 +5,25 @@ #include "System/Random.hpp" extern "C" { - void func_01ff9bc4(Vec3p *a, Vec3p *b, Vec3p *sum); - void func_ov00_0207a1c8(bool *param_1, unk32 param_2, Vec3p *param_3); + void func_ov000_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); + void func_ov005_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_ov000_020d7ad4(u32 *param1, u32 param2); } u16 GetRupeeValue(RupeeId id); 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 u32 *data_ov014_021589d8; +extern u32 data_ov000_020e9370[]; +extern u32 data_ov000_020eec9c[]; extern u32 **data_027e0fe0[]; ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc) ActorRupee::Create, NULL); #pragma section force_data begin -ActorType_UnkClass data_ov14_021589f4 = ActorType_UnkClass(0x3bb, 0xeeb); +ActorType_UnkClass data_ov014_021589f4 = ActorType_UnkClass(FLOAT_TO_Q21(0.4662), FLOAT_TO_Q19(0.4661)); #pragma section force_data end ActorRupee *ActorRupee::Create() { @@ -44,7 +43,7 @@ bool ActorRupee::vfunc_08() { mRupeeId = mUnk_020.mUnk_00[0]; - dVar5 = func_ov14_0213b70c(mRupeeId) ? *data_ov14_021589d8 : FLOAT_TO_Q20(0.666); + dVar5 = func_ov14_0213b70c(mRupeeId) ? *data_ov014_021589d8 : FLOAT_TO_Q20(0.666); iVar7 = (s32) dVar5 >> 1; mHitbox.pos.x = 0; @@ -105,7 +104,7 @@ void ActorRupee::Move() { s32 size; ApplyGravity(); - func_01ff9bc4(&mPos, &mVel, &mPos); // Vec3p::Add() + Vec3p_Add(&mPos, &mVel, &mPos); // Vec3p::Add() mUnk_09c.mUnk_3 = 1; size = mMaxFall = mUnk_08c.size - 1; @@ -164,7 +163,6 @@ void ActorRupee::func_ov14_0213b204(unk32 param1) { mUnk_130 = param1; } -extern "C" void _ZN11ItemManager10GiveRupeesEsb(ItemManager *implicit, u16 amount, unk32 param2); void ActorRupee::Update(bool param1) { ItemId cutsceneItemId; s32 uVar3; @@ -185,9 +183,9 @@ void ActorRupee::Update(bool param1) { func_ov14_0213b204(3); } } else { - ItemManager *pItem = gItemManager; - rupeeValue = GetRupeeValue(mRupeeId); - pItem->GiveRupees(rupeeValue, false); // giverupees + ItemManager *pItemMgr = gItemManager; + rupeeValue = GetRupeeValue(mRupeeId); + pItemMgr->GiveRupees(rupeeValue, false); uVar3 = -1; switch (mRupeeId) { @@ -197,7 +195,7 @@ void ActorRupee::Update(bool param1) { default: break; } - func_ov00_020d7ad4(data_ov00_020eec9c, uVar3); + func_ov000_020d7ad4(data_ov000_020eec9c, uVar3); Kill(); } } @@ -265,14 +263,14 @@ void ActorRupee::vfunc_14(u32 param1) { if (func_ov00_020c313c(param1)) { Update(false); } - func_ov00_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); + func_ov000_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); } void ActorRupee::vfunc_18(u32 param1) { if (func_ov00_020c313c(param1)) { Update(true); } - func_ov00_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); + func_ov000_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos); } #define VFUNC20_COND (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) @@ -284,7 +282,7 @@ void ActorRupee::vfunc_20(bool param1) { void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4) { Actor_UnkStruct_012 unk_class; - static const u32 data_ov14_02153e28[] = { + static const u32 data_ov014_02153e28[] = { // sRupeePalettes 0x9, // RupeeId_Green 0xA, // RupeeId_Blue @@ -297,11 +295,11 @@ void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, boo }; func_ov14_0213b6a4(id, &unk_class); - func_0202bc38(param2, param3, data_ov14_02153e28[id], &unk_class, 0); + func_0202bc38(param2, param3, data_ov014_02153e28[id], &unk_class, 0); if (param4) { u32 var = func_ov14_0213b70c(id) ? 0x4cd : 0x400; - func_ov05_02102c2c(&data_ov00_020e9370[0], 0, param3, var, var, 0, 0x1f, 0, 1, 1); + func_ov005_02102c2c(&data_ov000_020e9370[0], 0, param3, var, var, 0, 0x1f, 0, 1, 1); } } @@ -311,13 +309,13 @@ void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) { if (func_ov14_0213b70c(id)) { param2->mUnk_08 = 2; param2->mUnk_0c = 2; - param2->mUnk_14 = data_ov14_021589f4.unk_00; - param2->mUnk_18 = data_ov14_021589f4.unk_04; + param2->mUnk_14 = data_ov014_021589f4.unk_00; + param2->mUnk_18 = data_ov014_021589f4.unk_04; } else { param2->mUnk_08 = 2; param2->mUnk_0c = 2; - param2->mUnk_14 = 0x2aa; - param2->mUnk_18 = 0xaa8; + param2->mUnk_14 = FLOAT_TO_Q21(0.333); + param2->mUnk_18 = FLOAT_TO_Q19(0.333); } } -- cgit v1.2.3