Decomp ItemManager::RemoveItem

This commit is contained in:
Aetias
2024-02-18 13:24:49 +01:00
parent 8f674d7f87
commit f3d0b29b42
6 changed files with 12 additions and 34 deletions
+1 -1
View File
@@ -85,7 +85,7 @@
.extern data_027e0fc8
.extern func_01fffcd8
.extern _ZNK11ItemManager7HasItemEj
.extern _ZN11ItemManager10RemoveItemEj
.extern _ZN11ItemManager10RemoveItemEi
.extern func_ov00_020d7ad4
.extern func_ov00_020c5a24
.extern _ZN11ItemManager10GiveRupeesEjj
-30
View File
@@ -3,36 +3,6 @@
.text
.global _ZN11ItemManager10RemoveItemEj
thumb_func_start _ZN11ItemManager10RemoveItemEj
_ZN11ItemManager10RemoveItemEj: ; 0x020adb00
push {r3, r4, r5, r6}
mov r2, #0x4a
lsl r2, r2, #2
add r4, r0, r2
lsr r2, r1, #5
mov r5, #0x1f
lsl r3, r2, #2
mov r6, #1
and r5, r1
ldr r2, [r4, r3]
lsl r6, r5
bic r2, r6
str r2, [r4, r3]
cmp r1, #0
blt _020adb2c
cmp r1, #0xb
bgt _020adb2c
add r0, #0xb0
ldr r2, [r0]
mov r3, #0
lsl r0, r1, #1
strh r3, [r2, r0]
_020adb2c:
pop {r3, r4, r5, r6}
bx lr
thumb_func_end _ZN11ItemManager10RemoveItemEj
.global _ZN11ItemManager15LoadFanfareItemEj
thumb_func_start _ZN11ItemManager15LoadFanfareItemEj
_ZN11ItemManager15LoadFanfareItemEj: ; 0x020adb30
+1 -1
View File
@@ -862,7 +862,7 @@ func_ov49_02196008: ; 0x02196008
ldr r0, _021960f0 ; =gItemManager
mov r1, #1
ldr r0, [r0]
blx _ZN11ItemManager10RemoveItemEj
blx _ZN11ItemManager10RemoveItemEi
ldrb r0, [r4, #0x5c9]
add r0, r0, #1
strb r0, [r4, #0x5c9]
+1 -1
View File
@@ -305,7 +305,7 @@ public:
// Item
bool HasItem(ItemFlag item) const;
void AddItem(ItemFlag item);
void RemoveItem(ItemFlag item);
void RemoveItem(s32 item);
void GiveItem(ItemId id, unk32 param2, unk32 param3);
void GiveEquipItem(ItemFlag item, u16 ammo);
+2 -1
View File
@@ -4,7 +4,8 @@
#define NULL 0
#define GET_FLAG(arr, pos) (((1 << ((pos) & 0x1f)) & (arr)[(pos) >> 5]) != 0)
#define SET_FLAG(arr, pos) ((arr)[(pos) >> 5] |= 1 << ((pos) & 0x1f))
#define SET_FLAG(arr, pos) ((arr)[((u32(pos))) >> 5] |= 1 << ((pos) & 0x1f))
#define RESET_FLAG(arr, pos) ((arr)[((u32)(pos)) >> 5] &= ~(1 << ((pos) & 0x1f)))
#ifdef NONMATCHING
#define NONMATCH
+7
View File
@@ -373,3 +373,10 @@ ARM bool ItemManager::IsTreasureSalvaged(u32 index) const {
THUMB void ItemManager::SetTreasureSalvaged(u32 index) {
SET_FLAG(&this->mSalvagedTreasureFlags, index);
}
THUMB void ItemManager::RemoveItem(s32 item) {
RESET_FLAG(this->mItemFlags.flags, item);
if (item >= ItemFlag_EQUIP_START && item <= ItemFlag_EQUIP_END) {
(*this->mAmmo)[item] = 0;
}
}