diff --git a/asm/ov00/ItemManager/ItemManager.s b/asm/ov00/ItemManager/ItemManager.s index 55a6169a..5cdda1ca 100644 --- a/asm/ov00/ItemManager/ItemManager.s +++ b/asm/ov00/ItemManager/ItemManager.s @@ -3,45 +3,6 @@ .text - .global _ZNK11ItemManager10GetMaxAmmoEj - thumb_func_start _ZNK11ItemManager10GetMaxAmmoEj -_ZNK11ItemManager10GetMaxAmmoEj: ; 0x020ad9a0 - cmp r1, #4 - beq _020ad9ba - cmp r1, #5 - beq _020ad9ae - cmp r1, #7 - beq _020ad9c6 - b _020ad9d2 -_020ad9ae: - add r0, #0xb4 - ldrh r0, [r0] - lsl r1, r0, #1 - ldr r0, _020ad9d8 ; =data_ov00_020dc6c6 - ldrh r0, [r0, r1] - bx lr -_020ad9ba: - add r0, #0xb6 - ldrh r0, [r0] - lsl r1, r0, #1 - ldr r0, _020ad9dc ; =data_ov00_020dc6cc - ldrh r0, [r0, r1] - bx lr -_020ad9c6: - add r0, #0xb8 - ldrh r0, [r0] - lsl r1, r0, #1 - ldr r0, _020ad9dc ; =data_ov00_020dc6cc - ldrh r0, [r0, r1] - bx lr -_020ad9d2: - mov r0, #1 - bx lr - nop - thumb_func_end _ZNK11ItemManager10GetMaxAmmoEj -_020ad9d8: .word data_ov00_020dc6c6 -_020ad9dc: .word data_ov00_020dc6cc - .global _ZNK11ItemManager19GetMaxShipPartCountEv thumb_func_start _ZNK11ItemManager19GetMaxShipPartCountEv _ZNK11ItemManager19GetMaxShipPartCountEv: ; 0x020ad9e0 @@ -1885,30 +1846,6 @@ _ZN11ItemManager21AddTreasurePriceShownEj: ; 0x020ae76c thumb_func_end _ZN11ItemManager21AddTreasurePriceShownEj .rodata - .global data_ov00_020dc6c4 -data_ov00_020dc6c4: ; 0x020dc6c4 - .byte 0x14, 0x00 - .global data_ov00_020dc6c6 -data_ov00_020dc6c6: ; 0x020dc6c6 - .byte 0x14, 0x00 - .global data_ov00_020dc6c8 -data_ov00_020dc6c8: ; 0x020dc6c8 - .byte 0x1e, 0x00 - .global data_ov00_020dc6ca -data_ov00_020dc6ca: ; 0x020dc6ca - .byte 0x32, 0x00 - .global data_ov00_020dc6cc -data_ov00_020dc6cc: ; 0x020dc6cc - .byte 0x0a, 0x00 - .global data_ov00_020dc6ce -data_ov00_020dc6ce: ; 0x020dc6ce - .byte 0x14, 0x00 - .global data_ov00_020dc6d0 -data_ov00_020dc6d0: ; 0x020dc6d0 - .byte 0x1e, 0x00 - .global data_ov00_020dc6d2 -data_ov00_020dc6d2: ; 0x020dc6d2 - .byte 0x00, 0x00 .data .global data_ov00_020e5c58 diff --git a/asm/ov00/ItemManager/include/ItemManager.inc b/asm/ov00/ItemManager/include/ItemManager.inc index 72a1a66c..fb73fefa 100644 --- a/asm/ov00/ItemManager/include/ItemManager.inc +++ b/asm/ov00/ItemManager/include/ItemManager.inc @@ -82,3 +82,4 @@ .extern _ZN11ItemManager14Sword_vfunc_38Ej .extern _ZN11ItemManager15Shield_vfunc_38Ej .extern _ZN11ItemManager12GetEquipItemEj +.extern _ZNK11ItemManager10GetMaxAmmoEj diff --git a/src/ItemManager.cpp b/src/ItemManager.cpp index 59793b50..582e8644 100644 --- a/src/ItemManager.cpp +++ b/src/ItemManager.cpp @@ -322,3 +322,15 @@ THUMB void ItemManager::SetUnk_09e(u32 index, u16 value) { this->mUnk_09e[index] = value; } } + +const u16 sQuiverSizes[] = {20, 20, 30, 50}; +const u16 sBombBagSizes[] = {10, 20, 30}; + +THUMB u16 ItemManager::GetMaxAmmo(ItemFlag equipId) const { + switch (equipId) { + case ItemFlag_Bow: return (sQuiverSizes + 1)[this->mQuiverSize]; + case ItemFlag_BombBag: return sBombBagSizes[this->mBombBagSize]; + case ItemFlag_BombchuBag: return sBombBagSizes[this->mBombchuBagSize]; + default: return 1; + } +}