Match 10 ItemManager functions

This commit is contained in:
Aetias
2024-01-16 17:46:57 +01:00
parent 18ccb308d8
commit 8ea0c6dfdf
20 changed files with 78 additions and 221 deletions
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
-134
View File
@@ -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
@@ -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}
@@ -79,3 +79,5 @@
.extern func_ov00_020d73bc
.extern gItemManager
.extern data_ov00_020eec68
.extern _ZN11ItemManager14Sword_vfunc_38Ej
.extern _ZN11ItemManager15Shield_vfunc_38Ej
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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}
+4 -4
View File
@@ -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);
+1 -1
View File
@@ -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 */
};
+1 -1
View File
@@ -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 */
};
+1 -1
View File
@@ -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 */
};
+1 -1
View File
@@ -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 */
};
+1 -1
View File
@@ -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 */
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 */
};
+1 -1
View File
@@ -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 */
};
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 */
};
+1 -1
View File
@@ -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 */
};
+55 -6
View File
@@ -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);
}