From 2a3133f999200a207e09c22d846ff100af485a9c Mon Sep 17 00:00:00 2001 From: Aetias Date: Sun, 18 Feb 2024 12:59:14 +0100 Subject: [PATCH] Decomp `ItemManager::AddItem` --- asm/ov00/ItemManager/ItemManager.s | 25 +------------------------ include/global.h | 3 ++- src/ItemManager.cpp | 4 ++++ 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/asm/ov00/ItemManager/ItemManager.s b/asm/ov00/ItemManager/ItemManager.s index 5e2ebe3f..40a5381e 100644 --- a/asm/ov00/ItemManager/ItemManager.s +++ b/asm/ov00/ItemManager/ItemManager.s @@ -3,29 +3,6 @@ .text - .global _ZN11ItemManager7AddItemEj - thumb_func_start _ZN11ItemManager7AddItemEj -_ZN11ItemManager7AddItemEj: ; 0x020ada98 - push {r4, r5} - mov r2, #0x4a - lsl r2, r2, #2 - add r2, r0, r2 - lsr r0, r1, #5 - lsl r0, r0, #2 - mov r3, #0x1f - mov r4, #1 - and r1, r3 - add r3, r4, #0 - ldr r5, [r2, r0] - lsl r3, r1 - add r1, r5, #0 - orr r1, r3 - str r1, [r2, r0] - pop {r4, r5} - bx lr - .align 2, 0 - thumb_func_end _ZN11ItemManager7AddItemEj - .global _ZNK11ItemManager21HasShipPartPriceShownEj arm_func_start _ZNK11ItemManager21HasShipPartPriceShownEj _ZNK11ItemManager21HasShipPartPriceShownEj: ; 0x020adabc @@ -1266,7 +1243,7 @@ _ZN11ItemManager17EquipPreviousItemEv: ; 0x020ae3c0 bx ip .align 2, 0 arm_func_end _ZN11ItemManager17EquipPreviousItemEv -_020ae3cc: .word _ZN11ItemManager15SetEquippedItemEj - 1 +_020ae3cc: .word _ZN11ItemManager15SetEquippedItemEj .global _ZN11ItemManager13ForceEquipItemEj thumb_func_start _ZN11ItemManager13ForceEquipItemEj diff --git a/include/global.h b/include/global.h index d46492c5..28d2c481 100644 --- a/include/global.h +++ b/include/global.h @@ -3,7 +3,8 @@ #define NULL 0 -#define GET_FLAG(arr, pos) (((1 << ((pos) & 0x1f)) & (arr)[pos >> 5]) != 0) +#define GET_FLAG(arr, pos) (((1 << ((pos) & 0x1f)) & (arr)[(pos) >> 5]) != 0) +#define SET_FLAG(arr, pos) ((arr)[(pos) >> 5] |= 1 << ((pos) & 0x1f)) #ifdef NONMATCHING #define NONMATCH diff --git a/src/ItemManager.cpp b/src/ItemManager.cpp index 7966d046..39c81fc9 100644 --- a/src/ItemManager.cpp +++ b/src/ItemManager.cpp @@ -361,3 +361,7 @@ ARM u32 ItemManager::GetFairyLevel(FairyId id) const { ARM bool ItemManager::HasItem(ItemFlag item) const { return GET_FLAG(this->mItemFlags.flags, item); } + +THUMB void ItemManager::AddItem(ItemFlag item) { + SET_FLAG(this->mItemFlags.flags, item); +}