summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2024-04-30 18:05:13 +0200
committerAetias <aetias@outlook.com>2024-04-30 18:05:13 +0200
commit4f44cc2f9362f72155f4a8c5dafe4de3dafabe9e (patch)
tree03e1eb5a189dbe5a26355d8b94692411698c3914
parent458ede60df2dcb919372888e94e4b1fc5d691afb (diff)
Decomp `ItemManager::UpgradeQuiver`
-rw-r--r--asm/ov00/Item/ItemManager.s27
-rw-r--r--include/Item/ItemManager.hpp1
-rw-r--r--src/00_Core/Item/ItemManager.cpp5
3 files changed, 6 insertions, 27 deletions
diff --git a/asm/ov00/Item/ItemManager.s b/asm/ov00/Item/ItemManager.s
index 84a6b996..a06b1777 100644
--- a/asm/ov00/Item/ItemManager.s
+++ b/asm/ov00/Item/ItemManager.s
@@ -3,33 +3,6 @@
.text
- .global _ZN11ItemManager13UpgradeQuiverEv
- thumb_func_start _ZN11ItemManager13UpgradeQuiverEv
-_ZN11ItemManager13UpgradeQuiverEv: ; 0x020ae458
- push {r4, lr}
- add r4, r0, #0
- add r0, #0xb4
- ldrh r0, [r0]
- cmp r0, #2
- bhs _020ae472
- add r0, r4, #0
- add r0, #0xb4
- ldrh r0, [r0]
- add r1, r0, #1
- add r0, r4, #0
- add r0, #0xb4
- strh r1, [r0]
-_020ae472:
- add r0, r4, #0
- mov r1, #5
- bl _ZNK11ItemManager10GetMaxAmmoEi
- add r4, #0xb0
- ldr r1, [r4]
- strh r0, [r1, #0xa]
- pop {r4, pc}
- .align 2, 0
- thumb_func_end _ZN11ItemManager13UpgradeQuiverEv
-
.global _ZN11ItemManager14UpgradeBombBagEv
thumb_func_start _ZN11ItemManager14UpgradeBombBagEv
_ZN11ItemManager14UpgradeBombBagEv: ; 0x020ae484
diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp
index 61d477f1..bdb75c62 100644
--- a/include/Item/ItemManager.hpp
+++ b/include/Item/ItemManager.hpp
@@ -19,6 +19,7 @@ extern "C" {
#include "Render/ModelRender.hpp"
#define MAX_HOURGLASS_SECONDS 1500 // 25 minutes
+#define MAX_AMMO_UPGRADE 2
typedef s32 FairyId;
enum FairyId_ {
diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp
index d5c88bb3..d98baa4a 100644
--- a/src/00_Core/Item/ItemManager.cpp
+++ b/src/00_Core/Item/ItemManager.cpp
@@ -827,3 +827,8 @@ ARM void ItemManager::UpdateSwordShieldInUse() {
this->GetEquipItem(ItemFlag_OshusSword)->UpdateInUse(1);
this->GetEquipItem(ItemFlag_WoodenShield)->UpdateInUse(1);
}
+
+THUMB void ItemManager::UpgradeQuiver() {
+ if (mQuiverSize < MAX_AMMO_UPGRADE) mQuiverSize += 1;
+ (*mAmmo)[ItemFlag_Bow] = this->GetMaxAmmo(ItemFlag_Bow);
+}