From 8ea0c6dfdfbd6ab359a42b6f8bcc7ef223d5d214 Mon Sep 17 00:00:00 2001 From: Aetias Date: Tue, 16 Jan 2024 17:46:57 +0100 Subject: [PATCH] Match 10 `ItemManager` functions --- asm/include/ov12.inc | 4 +- asm/include/ov14.inc | 2 +- asm/ov00/ItemManager/ItemManager.s | 134 ------------------ .../ItemManager/ItemManager_TickEquipItem.inc | 60 -------- asm/ov00/ItemManager/include/ItemManager.inc | 2 + asm/ov12.s | 4 +- asm/ov14.s | 2 +- include/ItemManager.hpp | 8 +- include/Player/EquipBomb.hpp | 2 +- include/Player/EquipBombchu.hpp | 2 +- include/Player/EquipBoomerang.hpp | 2 +- include/Player/EquipBow.hpp | 2 +- include/Player/EquipHammer.hpp | 2 +- include/Player/EquipItem.hpp | 2 +- include/Player/EquipPotion.hpp | 2 +- include/Player/EquipRope.hpp | 2 +- include/Player/EquipScoop.hpp | 2 +- include/Player/EquipShield.hpp | 2 +- include/Player/EquipSword.hpp | 2 +- src/ItemManager.cpp | 61 +++++++- 20 files changed, 78 insertions(+), 221 deletions(-) delete mode 100644 asm/ov00/ItemManager/ItemManager_TickEquipItem.inc diff --git a/asm/include/ov12.inc b/asm/include/ov12.inc index ede61211..422500ca 100644 --- a/asm/include/ov12.inc +++ b/asm/include/ov12.inc @@ -700,8 +700,8 @@ .extern data_02050f54 .extern func_ov00_020a9bec .extern func_ov00_020b4944 -.extern _ZN11ItemManager14Shield_vfunc_38Ev -.extern _ZN11ItemManager17EquipItem_vfunc_38Ev +.extern _ZN11ItemManager15Shield_vfunc_38Ej +.extern _ZN11ItemManager18EquipItem_vfunc_38Ej .extern gItemManager .extern func_ov00_020d7b20 .extern data_ov00_020dc878 diff --git a/asm/include/ov14.inc b/asm/include/ov14.inc index ac17bc50..95c4d56e 100644 --- a/asm/include/ov14.inc +++ b/asm/include/ov14.inc @@ -3271,7 +3271,7 @@ .extern func_ov00_02083ee0 .extern data_027e0e60 .extern func_ov00_020b4944 -.extern _ZN11ItemManager17EquipItem_vfunc_38Ev +.extern _ZN11ItemManager18EquipItem_vfunc_38Ej .extern gItemManager .extern func_ov05_02102c2c .extern data_ov00_020e9370 diff --git a/asm/ov00/ItemManager/ItemManager.s b/asm/ov00/ItemManager/ItemManager.s index e2cce97b..4649b8f1 100644 --- a/asm/ov00/ItemManager/ItemManager.s +++ b/asm/ov00/ItemManager/ItemManager.s @@ -3,140 +3,6 @@ .text - .global _ZN11ItemManager18func_ov00_020ad528Ev - arm_func_start _ZN11ItemManager18func_ov00_020ad528Ev -_ZN11ItemManager18func_ov00_020ad528Ev: ; 0x020ad528 - bx lr - arm_func_end _ZN11ItemManager18func_ov00_020ad528Ev - - .global _ZN11ItemManager12GetItemModelEj - arm_func_start _ZN11ItemManager12GetItemModelEj -_ZN11ItemManager12GetItemModelEj: ; 0x020ad52c - add r0, r0, r1, lsl #2 - ldr r0, [r0, #0xc0] - bx lr - arm_func_end _ZN11ItemManager12GetItemModelEj - - .global _ZNK11ItemManager18func_ov00_020ad538Ej - arm_func_start _ZNK11ItemManager18func_ov00_020ad538Ej -_ZNK11ItemManager18func_ov00_020ad538Ej: ; 0x020ad538 - stmdb sp!, {r4, lr} - ldr r0, _020ad55c ; =data_027e0fc4 - mov r4, r1 - ldr r0, [r0] - mov r1, #6 - blx func_ov00_020bb3a8 - mov r1, r4 - bl func_ov00_020c0bdc - ldmia sp!, {r4, pc} - .align 2, 0 - arm_func_end _ZNK11ItemManager18func_ov00_020ad538Ej -_020ad55c: .word data_027e0fc4 - - .global _ZNK11ItemManager18func_ov00_020ad560Ej - arm_func_start _ZNK11ItemManager18func_ov00_020ad560Ej -_ZNK11ItemManager18func_ov00_020ad560Ej: ; 0x020ad560 - stmdb sp!, {r4, lr} - ldr r0, _020ad584 ; =data_027e0fc4 - mov r4, r1 - ldr r0, [r0] - mov r1, #7 - blx func_ov00_020bb3a8 - mov r1, r4 - bl func_ov00_020c0bdc - ldmia sp!, {r4, pc} - .align 2, 0 - arm_func_end _ZNK11ItemManager18func_ov00_020ad560Ej -_020ad584: .word data_027e0fc4 - - .global _ZN11ItemManager19GetDungeonItemModelEj - arm_func_start _ZN11ItemManager19GetDungeonItemModelEj -_ZN11ItemManager19GetDungeonItemModelEj: ; 0x020ad588 - add r0, r0, r1, lsl #2 - ldr r0, [r0, #0x100] - bx lr - arm_func_end _ZN11ItemManager19GetDungeonItemModelEj - - .global _ZNK11ItemManager18func_ov00_020ad594Ej - arm_func_start _ZNK11ItemManager18func_ov00_020ad594Ej -_ZNK11ItemManager18func_ov00_020ad594Ej: ; 0x020ad594 - stmdb sp!, {r4, lr} - ldr r0, _020ad5b8 ; =data_027e0fc4 - mov r4, r1 - ldr r0, [r0] - mov r1, #0xb - blx func_ov00_020bb3a8 - mov r1, r4 - bl func_ov00_020c0bdc - ldmia sp!, {r4, pc} - .align 2, 0 - arm_func_end _ZNK11ItemManager18func_ov00_020ad594Ej -_020ad5b8: .word data_027e0fc4 - - .global _ZN11ItemManager13Sword_vfunc_38Ev - arm_func_start _ZN11ItemManager13Sword_vfunc_38Ev -_ZN11ItemManager13Sword_vfunc_38Ev: ; 0x020ad5bc - stmdb sp!, {r3, lr} - ldr r0, [r0, #0xac] - ldr r0, [r0] - ldr r2, [r0] - ldr r2, [r2, #0x38] - blx r2 - ldmia sp!, {r3, pc} - arm_func_end _ZN11ItemManager13Sword_vfunc_38Ev - - .global _ZN11ItemManager14Shield_vfunc_38Ev - arm_func_start _ZN11ItemManager14Shield_vfunc_38Ev -_ZN11ItemManager14Shield_vfunc_38Ev: ; 0x020ad5d8 - stmdb sp!, {r3, lr} - ldr r0, [r0, #0xac] - ldr r0, [r0, #4] - ldr r2, [r0] - ldr r2, [r2, #0x38] - blx r2 - ldmia sp!, {r3, pc} - arm_func_end _ZN11ItemManager14Shield_vfunc_38Ev - - .global _ZN11ItemManager17EquipItem_vfunc_38Ev - arm_func_start _ZN11ItemManager17EquipItem_vfunc_38Ev -_ZN11ItemManager17EquipItem_vfunc_38Ev: ; 0x020ad5f4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _020ad670 ; =data_027e0618 - mov r5, r0 - ldr r2, [r2] - mov r4, r1 - cmp r2, #6 - beq _020ad620 - bl _ZN11ItemManager13Sword_vfunc_38Ev - mov r0, r5 - mov r1, r4 - bl _ZN11ItemManager14Shield_vfunc_38Ev -_020ad620: - ldr r0, _020ad674 ; =data_027e0d38 - ldr r0, [r0] - ldr r0, [r0, #0x14] - cmp r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl _ZNK11ItemManager15GetEquippedItemEv - mvn r1, #0 - cmp r0, r1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r1, [r5, #0x20] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r2, [r5, #0xac] - mov r1, r4 - ldr r0, [r2, r0, lsl #2] - ldr r2, [r0] - ldr r2, [r2, #0x38] - blx r2 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 - arm_func_end _ZN11ItemManager17EquipItem_vfunc_38Ev -_020ad670: .word data_027e0618 -_020ad674: .word data_027e0d38 - .global _ZN11ItemManager18func_ov00_020ad678Ejjj arm_func_start _ZN11ItemManager18func_ov00_020ad678Ejjj _ZN11ItemManager18func_ov00_020ad678Ejjj: ; 0x020ad678 diff --git a/asm/ov00/ItemManager/ItemManager_TickEquipItem.inc b/asm/ov00/ItemManager/ItemManager_TickEquipItem.inc deleted file mode 100644 index 19b353ff..00000000 --- a/asm/ov00/ItemManager/ItemManager_TickEquipItem.inc +++ /dev/null @@ -1,60 +0,0 @@ -func_ov00_020ad434: // 0x020ad434 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl _ZNK11ItemManager15GetEquippedItemEv - ldrh r1, [r5, #0x20] - mov r4, r0 - cmp r1, #0 - beq _020ad4b4 - sub r0, r1, #1 - strh r0, [r5, #0x20] - ldrh r0, [r5, #0x20] - cmp r0, #0 - bne _020ad4b4 - mvn r0, #0 - cmp r4, r0 - beq _020ad4b4 - lda r0, data_027e0d38 - ldr r0, [r0] - ldr r0, [r0, #0x14] - cmp r0, #1 - beq _020ad4b4 - lda r0, gOverlayManager - mov r1, r4 - bl _ZN14OverlayManager13LoadEquipItemEj - lda r0, gPlayerAnimHandler - mov r1, r4 - ldr r0, [r0] - bl LoadEquipItemModel - ldr r0, [r5, #0xac] - ldr r0, [r0, r4, lsl #2] - ldr r1, [r0] - ldr r1, [r1] - dcd 0xe12fff31 // blx r1 -_020ad4b4: - ldr r0, [r5, #0xac] - ldr r0, [r0] - ldr r1, [r0] - ldr r1, [r1, #0x30] - dcd 0xe12fff31 // blx r1 - ldr r0, [r5, #0xac] - ldr r0, [r0, #4] - ldr r1, [r0] - ldr r1, [r1, #0x30] - dcd 0xe12fff31 // blx r1 - lda r0, data_027e0d38 - ldr r0, [r0] - ldr r0, [r0, #0x14] - cmp r0, #1 - mvnne r0, #0 - cmpne r4, r0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r0, [r5, #0x20] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xac] - ldr r0, [r0, r4, lsl #2] - ldr r1, [r0] - ldr r1, [r1, #0x30] - dcd 0xe12fff31 // blx r1 - ldmia sp!, {r3, r4, r5, pc} diff --git a/asm/ov00/ItemManager/include/ItemManager.inc b/asm/ov00/ItemManager/include/ItemManager.inc index ea49f805..d65f6792 100644 --- a/asm/ov00/ItemManager/include/ItemManager.inc +++ b/asm/ov00/ItemManager/include/ItemManager.inc @@ -79,3 +79,5 @@ .extern func_ov00_020d73bc .extern gItemManager .extern data_ov00_020eec68 +.extern _ZN11ItemManager14Sword_vfunc_38Ej +.extern _ZN11ItemManager15Shield_vfunc_38Ej diff --git a/asm/ov12.s b/asm/ov12.s index a7158900..29416a1a 100644 --- a/asm/ov12.s +++ b/asm/ov12.s @@ -10803,12 +10803,12 @@ func_ov12_0211b8bc: ; 0x0211b8bc ldr r0, _0211b994 ; =gItemManager mov r1, r4 ldr r0, [r0] - bl _ZN11ItemManager14Shield_vfunc_38Ev + bl _ZN11ItemManager15Shield_vfunc_38Ej _0211b96c: ldr r0, _0211b994 ; =gItemManager mov r1, r4 ldr r0, [r0] - bl _ZN11ItemManager17EquipItem_vfunc_38Ev + bl _ZN11ItemManager18EquipItem_vfunc_38Ej _0211b97c: ldr r0, [r5, #0x230] mov r1, #0 diff --git a/asm/ov14.s b/asm/ov14.s index 6aa87159..d8275209 100644 --- a/asm/ov14.s +++ b/asm/ov14.s @@ -42817,7 +42817,7 @@ func_ov14_021419d8: ; 0x021419d8 ldr r0, _02141a70 ; =gItemManager ldrb r1, [r4, #0x4c0] ldr r0, [r0] - bl _ZN11ItemManager17EquipItem_vfunc_38Ev + bl _ZN11ItemManager18EquipItem_vfunc_38Ej ldrb r0, [r4, #0x4c0] cmp r0, #0 ldmneia sp!, {r4, pc} diff --git a/include/ItemManager.hpp b/include/ItemManager.hpp index 0b8ff369..af048827 100644 --- a/include/ItemManager.hpp +++ b/include/ItemManager.hpp @@ -248,10 +248,10 @@ public: void ClearPrevEquippedItem(); void TickEquipItem(); ItemFlag GetEquippedItem() const; - void Sword_vfunc_38(); - void Shield_vfunc_38(); - void EquipItem_vfunc_38(unk32 param1, unk32 param2, unk32 param3); - void func_ov00_020ad678(unk32 *param1, ItemFlag equipId); + void Sword_vfunc_38(unk32 param1); + void Shield_vfunc_38(unk32 param1); + void EquipItem_vfunc_38(unk32 param1); + void func_ov00_020ad678(Vec3p *param1, ItemFlag equipId); void EquipItem_vfunc_2c(ItemFlag equipId); EquipItem* GetEquipItem(ItemFlag equipId); unk32 func_ov00_020ad790(unk32 param1); diff --git a/include/Player/EquipBomb.hpp b/include/Player/EquipBomb.hpp index 0ea9793a..52075aa7 100644 --- a/include/Player/EquipBomb.hpp +++ b/include/Player/EquipBomb.hpp @@ -22,7 +22,7 @@ public: /* 18 */ virtual void vfunc_18() override; // func_ov55_02198d8c /* 30 */ virtual void vfunc_30() override; // func_ov55_02198da4 - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_ov55_2198df8 + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov55_2198df8 /* 50 */ virtual void vfunc_50(); // func_ov14_0213d228 /* 54 */ }; diff --git a/include/Player/EquipBombchu.hpp b/include/Player/EquipBombchu.hpp index a072f5ff..99f55dc3 100644 --- a/include/Player/EquipBombchu.hpp +++ b/include/Player/EquipBombchu.hpp @@ -38,6 +38,6 @@ public: /* 30 */ virtual void vfunc_30() override; // func_ov58_0219906c /* 34 */ virtual void vfunc_34(unk16 *param1) override; // func_ov58_0213ecb4 - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_ov58_02199170 + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov58_02199170 /* 50 */ }; diff --git a/include/Player/EquipBoomerang.hpp b/include/Player/EquipBoomerang.hpp index 863c99c6..4a17f51d 100644 --- a/include/Player/EquipBoomerang.hpp +++ b/include/Player/EquipBoomerang.hpp @@ -27,6 +27,6 @@ public: /* 1c */ virtual void vfunc_1c() override; // func_ov53_021990d0 /* 30 */ virtual void vfunc_30() override; // func_ov53_0219913c - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_ov53_02199318 + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov53_02199318 /* 50 */ }; diff --git a/include/Player/EquipBow.hpp b/include/Player/EquipBow.hpp index 8771f23f..74c9415b 100644 --- a/include/Player/EquipBow.hpp +++ b/include/Player/EquipBow.hpp @@ -24,6 +24,6 @@ public: /* 18 */ virtual void vfunc_18() override; // func_ov56_02198d84 /* 30 */ virtual void vfunc_30() override; // func_ov56_02198de4 - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_ov56_02198df8 + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov56_02198df8 /* 50 */ }; diff --git a/include/Player/EquipHammer.hpp b/include/Player/EquipHammer.hpp index 39d6cd1a..da0fef3b 100644 --- a/include/Player/EquipHammer.hpp +++ b/include/Player/EquipHammer.hpp @@ -30,7 +30,7 @@ public: /* 2c */ virtual unk32 vfunc_2c() override; // func_ov59_02198fcc /* 30 */ virtual void vfunc_30() override; // func_ov59_02198e6c - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_0v59_02198fc8 + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_0v59_02198fc8 /* 3c */ virtual bool vfunc_3c(void *param1, unk32 param2, unk32 param3) const override; // func_ov14_0213ee10 /* 4c */ virtual unk32 vfunc_4c() const override; // func_ov14_0213eea8 /* 50 */ diff --git a/include/Player/EquipItem.hpp b/include/Player/EquipItem.hpp index 895f335f..4009bbf0 100644 --- a/include/Player/EquipItem.hpp +++ b/include/Player/EquipItem.hpp @@ -31,7 +31,7 @@ public: /* 2c */ virtual u32 vfunc_2c(); // func_ov00_020be964 /* 30 */ virtual void vfunc_30() = 0; /* 34 */ virtual void vfunc_34(unk16 *param1); // func_ov00_020be96c - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) = 0; + /* 38 */ virtual void vfunc_38(unk32 param1) = 0; /* 3c */ virtual bool vfunc_3c(void *param1, unk32 param2, unk32 param3) const; // func_ov00_020beb90 /* 40 */ virtual unk32 vfunc_40() const; // func_ov00_020be970 /* 44 */ virtual unk32 vfunc_44(unk32 param1) const; // func_ov00_020be978 diff --git a/include/Player/EquipPotion.hpp b/include/Player/EquipPotion.hpp index 0cec8c87..9e2cf635 100644 --- a/include/Player/EquipPotion.hpp +++ b/include/Player/EquipPotion.hpp @@ -21,7 +21,7 @@ public: /* 1c */ virtual void vfunc_1c() override; // func_ov55_021991b0 /* 30 */ virtual void vfunc_30() override; // func_ov55_02199274 - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_0v55_02199278 + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_0v55_02199278 /* 50 */ }; diff --git a/include/Player/EquipRope.hpp b/include/Player/EquipRope.hpp index f56919d4..de6ce69d 100644 --- a/include/Player/EquipRope.hpp +++ b/include/Player/EquipRope.hpp @@ -34,6 +34,6 @@ public: /* 1c */ virtual void vfunc_1c() override; // func_ov57_0219935c /* 30 */ virtual void vfunc_30() override; // func_ov57_02199744 - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_ov57_021998f0 + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov57_021998f0 /* 50 */ }; diff --git a/include/Player/EquipScoop.hpp b/include/Player/EquipScoop.hpp index 6b605824..452a1a16 100644 --- a/include/Player/EquipScoop.hpp +++ b/include/Player/EquipScoop.hpp @@ -18,7 +18,7 @@ public: /* 18 */ virtual void vfunc_18() override; // func_0v54_02198d2c /* 30 */ virtual void vfunc_30() override; // func_ov54_02198e04 - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_ov54_02198e4c + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov54_02198e4c /* 40 */ virtual unk32 vfunc_40() const override; // func_ov54_02198d30 /* 44 */ virtual unk32 vfunc_44(unk32 param1) const override; // func_ov54_02198d38 /* 48 */ virtual unk32 vfunc_48(unk32 param1) const override; // func_ov54_02198d48 diff --git a/include/Player/EquipShield.hpp b/include/Player/EquipShield.hpp index 6578ea00..2e554108 100644 --- a/include/Player/EquipShield.hpp +++ b/include/Player/EquipShield.hpp @@ -29,7 +29,7 @@ public: /* 1c */ virtual void vfunc_1c(); // func_ov00_020c07f8 /* 30 */ virtual void vfunc_30() override; // func_ov00_020c0804 - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_ov00_020c086c + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov00_020c086c /* 3c */ virtual bool vfunc_3c(void *param1, unk32 param2, unk32 param3) const; // func_ov00_020c0a88 /* 50 */ }; diff --git a/include/Player/EquipSword.hpp b/include/Player/EquipSword.hpp index 7d0bece0..85aaecb3 100644 --- a/include/Player/EquipSword.hpp +++ b/include/Player/EquipSword.hpp @@ -52,7 +52,7 @@ public: /* 28 */ virtual bool UpdateInUse(unk32 param1) override; /* 2c */ virtual u32 vfunc_2c() override; // func_ov00_020c0674 /* 30 */ virtual void vfunc_30() override; // func_ov00_020bf538 - /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3) override; // func_ov00_020bff94 + /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov00_020bff94 /* 3c */ virtual bool vfunc_3c(void *param1, unk32 param2, unk32 param3) const override; // func_ov00_020c01dc /* 50 */ }; diff --git a/src/ItemManager.cpp b/src/ItemManager.cpp index 4b53fa8a..d914e729 100644 --- a/src/ItemManager.cpp +++ b/src/ItemManager.cpp @@ -160,17 +160,13 @@ FairyId ItemManager::GetEquippedFairy() const { Navi* ItemManager::GetFairy(FairyId id) const { return this->mFairies[id]; } -#pragma interworking off extern UnkStruct_027e0d38 *data_027e0d38; extern unk32 gPlayerAnimHandler; extern "C" void LoadEquipItemModel(unk32 param1, ItemFlag param2); extern "C" void _ZNK11ItemManager15GetEquippedItemEv(); extern "C" void _ZN14OverlayManager13LoadEquipItemEj(); -NONMATCH void ItemManager::TickEquipItem(void) { - #ifndef NONMATCHING - #include "../asm/ov00/ItemManager/ItemManager_TickEquipItem.inc" - #else +void ItemManager::TickEquipItem(void) { ItemFlag equip = this->GetEquippedItem(); if (this->mEquipLoadTimer != 0) { this->mEquipLoadTimer -= 1; @@ -186,5 +182,58 @@ NONMATCH void ItemManager::TickEquipItem(void) { if (equip != ItemFlag_None && this->mEquipLoadTimer == 0) { (*this->mEquipItems)[equip]->vfunc_30(); } - #endif +} + +void ItemManager::func_ov00_020ad528() {} + +ItemModel* ItemManager::GetItemModel(ItemModelId id) { + return this->mItemModels[id]; +} +#pragma interworking off + +extern unk32 data_027e0fc4; +extern "C" void* func_ov00_020bb3a8(unk32 param1, u32 index); +extern "C" void func_ov00_020c0bdc(void *param1, unk32 param2); +void ItemManager::func_ov00_020ad538(unk32 param1) const { + void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 6); + func_ov00_020c0bdc(unk1, param1); +} + +void ItemManager::func_ov00_020ad560(unk32 param1) const { + void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 7); + func_ov00_020c0bdc(unk1, param1); +} + +#pragma interworking on +ItemModel* ItemManager::GetDungeonItemModel(u32 index) { + return this->mDungeonItemModels[index]; +} +#pragma interworking off + +void ItemManager::func_ov00_020ad594(unk32 param1) const { + void* unk1 = func_ov00_020bb3a8(data_027e0fc4, 11); + func_ov00_020c0bdc(unk1, param1); +} + +void ItemManager::Sword_vfunc_38(unk32 param1) { + (*this->mEquipItems)[ItemFlag_OshusSword]->vfunc_38(param1); +} + +void ItemManager::Shield_vfunc_38(unk32 param1) { + (*this->mEquipItems)[ItemFlag_WoodenShield]->vfunc_38(param1); +} + +extern unk32 data_027e0618; +void ItemManager::EquipItem_vfunc_38(unk32 param1) { + if (data_027e0618 != 6) { + this->Sword_vfunc_38(param1); + this->Shield_vfunc_38(param1); + } + if (data_027e0d38->mUnk_14 == 1) return; + + ItemFlag equip = this->GetEquippedItem(); + if (equip == ItemFlag_None) return; + if (this->mEquipLoadTimer > 0) return; + + (*this->mEquipItems)[equip]->vfunc_38(param1); }