mirror of
https://github.com/zeldaret/ph
synced 2026-05-25 23:35:11 -04:00
Decomp ItemManager::RemoveItem
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
@@ -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]
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user