summaryrefslogtreecommitdiff
path: root/src/59_Hammer
diff options
context:
space:
mode:
authorAetias <144526980+AetiasHax@users.noreply.github.com>2025-07-31 21:22:55 +0200
committerGitHub <noreply@github.com>2025-07-31 21:22:55 +0200
commit82f54b2f075e7f6612b80edf52b37bb6377e0d49 (patch)
tree93550aa10732bc050088b5773ce3ea0d09f6e0dc /src/59_Hammer
parent8ad6359c7d3c7afcbddd7d450b7fa4b9764255b6 (diff)
EquipBombchu (#131)
* Map symbol in Game * EquipBombchu 12% * EquipBombchu 53% * EquipBombchu 71% * configure: Don't verify dsd version if `--dsd` specified * EquipBombchu 89% * Fix regression
Diffstat (limited to 'src/59_Hammer')
-rw-r--r--src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp227
-rw-r--r--src/59_Hammer/Player/EquipHammer.cpp2
2 files changed, 64 insertions, 165 deletions
diff --git a/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp b/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp
index 7fac2ba5..acaa3bd3 100644
--- a/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp
+++ b/src/59_Hammer/Actor/Navi/ActorNaviBase_59.cpp
@@ -7,8 +7,8 @@
#include "Player/PlayerBase.hpp"
#include "Player/PlayerControl.hpp"
-extern unk32 data_ov000_020dc7d0;
-extern unk32 data_ov000_020dc7e4;
+extern const ItemManager_Unk1 data_ov000_020dc7d0;
+extern const ItemManager_Unk1 data_ov000_020dc7e4;
extern u32 data_ov000_020e9370[];
extern "C" void Vec3p_RotateY(u32, Vec3p *);
extern "C" void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6,
@@ -58,200 +58,99 @@ ARM void ActorNavi::func_ov059_0219aa08() {
}
}
-struct UnkStruct {
- /* 00 */ u16 mUnk_00;
- /* 02 */ unk16 mUnk_02;
- /* 04 */ unk16 mUnk_04;
- /* 06 */ unk16 mUnk_06;
- /* 08 */ unk16 mUnk_08;
- /* 09 */ unk8 mUnk_09;
- /* 0a */ unk8 mUnk_0a;
- /* 0b */ unk8 mUnk_0b;
- /* 0c */ unk8 mUnk_0c;
- /* 0d */ unk8 mUnk_0d;
- /* 0e */ unk8 mUnk_0e;
- /* 0f */ unk8 mUnk_0f;
- /* 10 */ unk8 mUnk_10;
- /* 11 */ unk8 mUnk_11;
- /* 12 */ unk8 mUnk_12;
- /* 13 */ unk8 mUnk_13;
- /* 14 */ Vec3p mUnk_14;
- /* 14 */ unk8 mUnk_20[4];
- /* 24 */
-};
-
// non-matching
ARM void ActorNavi::func_ov059_0219aba8(u32 param1) {
- bool bVar1;
- LinkStateItem *uVar1;
- ItemManager *pIVar3;
- int uVar4;
- int iVar5;
- int uVar6;
- bool bVar7;
- Vec3p local_134;
- Vec3p local_128;
- Vec3p local_11c;
- Vec3p local_110;
- Vec3p local_104;
- Vec3p local_e4;
-
- UnkStruct auStack_e0;
- u16 local_bc;
- unk16 local_ba;
- unk16 local_b8;
- unk16 local_b6;
- unk16 local_b4;
- unk32 local_92;
- unk32 local_91;
- unk32 local_90;
- unk32 local_8f;
- unk32 local_88;
- unk32 local_87;
- unk32 local_86;
- unk32 local_85;
- unk32 local_84;
- unk32 local_83;
- UnkStruct auStack_80;
- u16 local_5c;
- unk16 local_5a;
- unk16 local_58;
- unk16 local_56;
- unk16 local_54;
- unk32 local_32;
- unk32 local_31;
- unk32 local_30;
- unk32 local_2f;
- unk32 local_28;
- unk32 local_27;
- unk32 local_26;
- unk32 local_25;
- unk32 local_24;
- unk32 local_23;
- ItemManager *puVar1;
-
switch (param1) {
- case 3:
- uVar1 = EquipHammer::GetLinkStateItem();
+ case 3: {
+ LinkStateItem *uVar1 = EquipHammer::GetLinkStateItem();
if (uVar1->mUnk_25[2] != 0 && uVar1->mUnk_25[3] != 0) {
break;
}
- local_11c.x = data_027e0fd4->mUnk_020.pos.x;
- local_11c.z = data_027e0fd4->mUnk_020.pos.z;
-
- iVar5 = gPlayerPos.y + FLOAT_TO_Q20(0.5);
- uVar4 = this->mPos.x;
- uVar6 = this->mPos.z;
-
- auStack_80.mUnk_00 = -1;
- auStack_80.mUnk_02 = 0;
- auStack_80.mUnk_04 = 0;
- auStack_80.mUnk_06 = 0;
- auStack_80.mUnk_08 = 0;
- auStack_80.mUnk_09 = 0;
- auStack_80.mUnk_0a = 0;
- auStack_80.mUnk_0b = 0;
- auStack_80.mUnk_0c = 0;
- auStack_80.mUnk_0d = 0;
- auStack_80.mUnk_0e = 0;
- auStack_80.mUnk_0f = 0;
- auStack_80.mUnk_10 = 0;
- auStack_80.mUnk_11 = 0;
- auStack_80.mUnk_12 = 0;
- local_11c.y = iVar5;
-
- local_110.x = uVar4;
- local_110.y = iVar5;
- // local_110.z = uVar6;
-
- local_e4.x = local_11c.x;
- local_e4.y = iVar5;
- local_e4.z = local_11c.z;
-
- local_5a = local_5c;
- local_58 = local_5c;
- local_56 = local_5c;
-
- if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size) ? false : true) {
- this->mPos = local_e4;
- this->mPrevPos = local_e4;
- this->mOffsetPos = local_e4;
- } else {
+ Vec3p local_11c = data_027e0fd4->mUnk_020.pos;
+
+ q20 iVar5 = gPlayerPos.y + FLOAT_TO_Q20(0.5);
+ q20 uVar4 = this->mPos.x;
+ q20 uVar6 = this->mPos.z;
+
+ UnkStruct auStack_80;
+ local_11c.y = iVar5;
+
+ Vec3p local_110 = {uVar4, iVar5, uVar6};
+
+ Vec3p local_e4 = local_11c;
+
+ // if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size, 0, 0, NULL, 0) ? false
+ if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size, this->mRef.id,
+ this->mUnk_09c.mUnk_0, this->mUnk_09c.mUnk_4, 0)
+ ? false
+ : true) {
this->mOffsetPos.x = uVar4;
this->mOffsetPos.y = iVar5;
this->mOffsetPos.z = uVar6;
+ } else {
+ this->mPos.x = local_e4.x;
+ this->mPos.y = local_e4.y;
+ this->mPos.z = local_e4.z;
+ this->mPrevPos = local_e4;
+ this->mOffsetPos = local_e4;
}
- break;
- case 4:
- uVar1 = EquipHammer::GetLinkStateItem();
+ } break;
+ case 4: {
+ LinkStateItem *uVar1 = EquipHammer::GetLinkStateItem();
if (uVar1->mUnk_25[2] != 0 && uVar1->mUnk_25[3] != 0) {
break;
}
- auStack_e0.mUnk_14.x = data_027e0fd4->mUnk_020.pos.x;
- auStack_e0.mUnk_14.y = gPlayerPos.y + FLOAT_TO_Q20(0.5);
- auStack_e0.mUnk_14.z = data_027e0fd4->mUnk_020.pos.z;
-
- bVar1 = gPlayerControl->UpdateAimWorld(&local_104);
- bVar7 = false;
- local_104.y = auStack_e0.mUnk_14.y;
- auStack_80.mUnk_00 = -1;
- auStack_80.mUnk_02 = 0;
- auStack_80.mUnk_04 = 0;
- auStack_80.mUnk_06 = 0;
- auStack_80.mUnk_08 = 0;
- auStack_80.mUnk_09 = 0;
- auStack_80.mUnk_0a = 0;
- auStack_80.mUnk_0b = 0;
- auStack_80.mUnk_0c = 0;
- auStack_80.mUnk_0d = 0;
- auStack_80.mUnk_0e = 0;
- auStack_80.mUnk_0f = 0;
- auStack_80.mUnk_10 = 0;
- auStack_80.mUnk_11 = 0;
- auStack_80.mUnk_12 = 0;
- local_ba = local_bc;
- local_b8 = local_bc;
- local_b6 = local_bc;
+ Vec3p local_f8 = data_027e0fd4->mUnk_020.pos;
+ local_f8.y = gPlayerPos.y + FLOAT_TO_Q20(0.5);
+ Vec3p local_104;
+ bool bVar1 = gPlayerControl->UpdateAimWorld(&local_104);
+ local_104.y = local_f8.y;
+ UnkStruct auStack_e0;
+ bool bVar7 = false;
+ UnkStruct auStack_80;
if (bVar1) {
- local_128 = auStack_e0.mUnk_14;
+ s32 id = this->mRef.id;
+ Vec3p local_128 = local_f8;
- // local_134.x = local_104.x;
- // local_134.y = auStack_e0.mUnk_14.y;
- // local_134.z = local_104.z;
+ Vec3p local_134;
+ local_134 = local_104;
+ local_134.y = local_f8.y;
- if (!gMapManager->func_01ffbf5c(&auStack_e0, &local_134, &local_128, this->mUnk_08c.size)) {
+ if (!gMapManager->func_01ffbf5c(&auStack_e0, &local_134, &local_128, this->mUnk_08c.size, id,
+ this->mUnk_09c.mUnk_0, this->mUnk_09c.mUnk_4, 0)) {
bVar7 = true;
}
- }
- if (!bVar7) {
- this->mPos = auStack_e0.mUnk_14;
- this->mPrevPos = auStack_e0.mUnk_14;
- this->mOffsetPos = auStack_e0.mUnk_14;
+ if (!bVar7) {
+ this->mPos = auStack_e0.mUnk_3c;
+ this->mPrevPos = auStack_e0.mUnk_3c;
+ this->mOffsetPos = auStack_e0.mUnk_3c;
+ }
+ break;
+ default:
+ this->func_ov000_020b853c();
+ break;
}
- break;
- default:
- this->func_ov000_020b853c();
- break;
+ }
}
- pIVar3 = gItemManager;
+ void *pvVar2;
switch (param1) {
case 3:
- pIVar3->func_ov00_020ad538(data_ov000_020dc7d0);
- pIVar3->func_ov000_020c0c44(&this->mUnk_2f0);
- pIVar3->func_ov000_020c0e5c(&this->mUnk_2f0, 0);
+ pvVar2 = gItemManager->func_ov00_020ad538(&data_ov000_020dc7d0);
+ this->mUnk_2f0.func_ov000_020c0c44(pvVar2);
+ this->mUnk_2f0.func_ov000_020c0e5c(0);
break;
case 4:
this->mUnk_348 = 0;
- pIVar3->func_ov00_020ad538(data_ov000_020dc7e4);
- pIVar3->func_ov000_020c0c44(&this->mUnk_2f0);
- pIVar3->func_ov000_020c0e5c(&this->mUnk_2f0, 1);
+ pvVar2 = gItemManager->func_ov00_020ad538(&data_ov000_020dc7e4);
+ this->mUnk_2f0.func_ov000_020c0c44(pvVar2);
+ this->mUnk_2f0.func_ov000_020c0e5c(1);
break;
default:
break;
diff --git a/src/59_Hammer/Player/EquipHammer.cpp b/src/59_Hammer/Player/EquipHammer.cpp
index cfccec9b..3928cb6e 100644
--- a/src/59_Hammer/Player/EquipHammer.cpp
+++ b/src/59_Hammer/Player/EquipHammer.cpp
@@ -161,7 +161,7 @@ ARM void LinkStateItem::func_ov059_02198ffc() {
local_20 = *this->GetPlayerPos();
Vec3p_Sub(&local_14, &local_20, &local_14);
- dest = Atan2(local_14.x, local_14.z);
+ dest = FX_Atan2Idx(local_14.x, local_14.z);
ApproachAngle_thunk(this->GetPlayerAngle(), dest, 0x2000);
}