From 86889daa658ee09a7a76008627aeeeb9f25cb365 Mon Sep 17 00:00:00 2001 From: Aetias Date: Tue, 30 Apr 2024 17:49:06 +0200 Subject: [PATCH] Decomp `ItemManager::GiveKeys` --- asm/ov00/Item/ItemManager.s | 27 +-------------------------- include/Map/Course.hpp | 2 ++ src/00_Core/Item/ItemManager.cpp | 8 +++++++- 3 files changed, 10 insertions(+), 27 deletions(-) diff --git a/asm/ov00/Item/ItemManager.s b/asm/ov00/Item/ItemManager.s index b17db746..07ae53b7 100644 --- a/asm/ov00/Item/ItemManager.s +++ b/asm/ov00/Item/ItemManager.s @@ -2,31 +2,6 @@ .include "ov00/Item/ItemManager.inc" .text - .global _ZN11ItemManager8GiveKeysEj - thumb_func_start _ZN11ItemManager8GiveKeysEj -_ZN11ItemManager8GiveKeysEj: ; 0x020ae368 - push {r4, lr} - ldr r0, _020ae38c ; =gMapManager - add r4, r1, #0 - ldr r0, [r0] - blx _ZN10MapManager10GetNumKeysEv - add r1, r4, r0 - cmp r1, #8 - blt _020ae37c - mov r1, #8 -_020ae37c: - cmp r1, #0 - bgt _020ae382 - mov r1, #0 -_020ae382: - ldr r0, _020ae38c ; =gMapManager - ldr r0, [r0] - blx _ZN10MapManager10SetNumKeysEi - pop {r4, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager8GiveKeysEj -_020ae38c: .word gMapManager - .global _ZNK11ItemManager15GetEquippedItemEv arm_func_start _ZNK11ItemManager15GetEquippedItemEv _ZNK11ItemManager15GetEquippedItemEv: ; 0x020ae390 @@ -57,7 +32,7 @@ _ZN11ItemManager17EquipPreviousItemEv: ; 0x020ae3c0 bx ip .align 2, 0 arm_func_end _ZN11ItemManager17EquipPreviousItemEv -_020ae3cc: .word _ZN11ItemManager15SetEquippedItemEi - 1 +_020ae3cc: .word _ZN11ItemManager15SetEquippedItemEi .global _ZN11ItemManager13ForceEquipItemEi thumb_func_start _ZN11ItemManager13ForceEquipItemEi diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 1768ae85..352cae1b 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -8,6 +8,8 @@ #include "Physics/AABB.hpp" #include "System/SysNew.hpp" +#define MAX_KEYS 8 + typedef unk32 CourseType; enum CourseType_ { CourseType_Normal = 0, diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index baf6e76b..ac550e81 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -1,5 +1,4 @@ #include "Item/ItemManager.hpp" -#include "Map/MapManager.hpp" extern u32 *data_027e0ce0[]; @@ -785,3 +784,10 @@ ARM void ItemManager::GiveRupees(s16 amount, bool param2) { ARM unk32 ItemManager::GetNumKeys() const { return gMapManager->GetNumKeys(); } + +THUMB void ItemManager::GiveKeys(u32 amount) { + s32 keys = amount + gMapManager->GetNumKeys(); + if (keys >= MAX_KEYS) keys = MAX_KEYS; + if (keys <= 0) keys = 0; + gMapManager->SetNumKeys(keys); +}