diff options
| author | Aetias <144526980+AetiasHax@users.noreply.github.com> | 2025-07-31 21:22:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-31 21:22:55 +0200 |
| commit | 82f54b2f075e7f6612b80edf52b37bb6377e0d49 (patch) | |
| tree | 93550aa10732bc050088b5773ce3ea0d09f6e0dc /src/59_Hammer | |
| parent | 8ad6359c7d3c7afcbddd7d450b7fa4b9764255b6 (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.cpp | 227 | ||||
| -rw-r--r-- | src/59_Hammer/Player/EquipHammer.cpp | 2 |
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); } |
