diff options
| author | Aetias <aetias@outlook.com> | 2024-04-30 18:38:48 +0200 |
|---|---|---|
| committer | Aetias <aetias@outlook.com> | 2024-04-30 18:38:48 +0200 |
| commit | b046f33b3c30da618b494ac5be61a4e7ffc6e956 (patch) | |
| tree | df2ba3663cbea99bf921ae3a296d4d9f9609a62d | |
| parent | 102fc098fa59af662c5b21bac49157cfaa23a0dc (diff) | |
Decomp `ItemManager::LoadDungeonItemModels`
| -rw-r--r-- | asm/ov00/Item/ItemManager.s | 45 | ||||
| -rw-r--r-- | include/DTCM/UnkStruct_027e0f78.hpp | 15 | ||||
| -rw-r--r-- | include/Item/ItemManager.hpp | 1 | ||||
| -rw-r--r-- | src/00_Core/Item/ItemManager.cpp | 25 |
4 files changed, 41 insertions, 45 deletions
diff --git a/asm/ov00/Item/ItemManager.s b/asm/ov00/Item/ItemManager.s index 74b706e5..cfbe2a4c 100644 --- a/asm/ov00/Item/ItemManager.s +++ b/asm/ov00/Item/ItemManager.s @@ -3,51 +3,6 @@ .text - .global _ZN11ItemManager21LoadDungeonItemModelsEv - thumb_func_start _ZN11ItemManager21LoadDungeonItemModelsEv -_ZN11ItemManager21LoadDungeonItemModelsEv: ; 0x020ae5fc - push {r3, r4, r5, r6, r7, lr} - ldr r7, _020ae644 ; =data_027e0f78 - add r5, r0, #0 - mov r4, #0 -_020ae604: - mov r0, #1 - lsl r0, r0, #8 - ldr r0, [r5, r0] - cmp r0, #0 - beq _020ae638 - cmp r4, #2 - beq _020ae61a - cmp r4, #3 - beq _020ae61a - cmp r4, #4 - bne _020ae622 -_020ae61a: - ldr r2, [r7] - ldrh r1, [r2, #0x1e] - ldrh r6, [r2, #0x1c] - b _020ae628 -_020ae622: - ldr r2, [r7] - ldrh r1, [r2, #0x1a] - ldrh r6, [r2, #0x18] -_020ae628: - blx func_020196bc - mov r0, #1 - lsl r0, r0, #8 - ldr r0, [r5, r0] - add r1, r6, #0 - blx func_020196fc -_020ae638: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #5 - blt _020ae604 - pop {r3, r4, r5, r6, r7, pc} - nop - thumb_func_end _ZN11ItemManager21LoadDungeonItemModelsEv -_020ae644: .word data_027e0f78 - .global _ZN11ItemManager18func_ov00_020ae648Ejjj thumb_func_start _ZN11ItemManager18func_ov00_020ae648Ejjj _ZN11ItemManager18func_ov00_020ae648Ejjj: ; 0x020ae648 diff --git a/include/DTCM/UnkStruct_027e0f78.hpp b/include/DTCM/UnkStruct_027e0f78.hpp new file mode 100644 index 00000000..04353f37 --- /dev/null +++ b/include/DTCM/UnkStruct_027e0f78.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_027e0f78 { + /* 00 */ unk8 mUnk_00[0x18]; + /* 18 */ u16 mUnk_18; + /* 1a */ u16 mUnk_1a; + /* 1c */ u16 mUnk_1c; + /* 1e */ u16 mUnk_1e; + /* 20 */ +}; + +extern UnkStruct_027e0f78 *data_027e0f78; diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index 666ae6de..46c2d70b 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -9,6 +9,7 @@ extern "C" { #include "lib/math.h"
#include "Actor/ActorNavi.hpp"
+#include "DTCM/UnkStruct_027e0f78.hpp"
#include "Save/AdventureFlags.hpp"
#include "Item/Item.hpp"
#include "Map/MapManager.hpp"
diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index 03cc2f19..b77717eb 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -889,3 +889,28 @@ ARM bool ItemManager::HasPurplePotion() const { }
return false;
}
+
+extern "C" void func_020196bc(ItemModel *param1, unk32 param2);
+extern "C" void func_020196fc(ItemModel *param1, unk32 param2);
+THUMB void ItemManager::LoadDungeonItemModels() {
+ for (s32 i = 0; i < DungeonItemModelId_COUNT; ++i) {
+ if (mDungeonItemModels[i] == NULL) continue;
+
+ u16 unk1, unk2;
+ switch (i) {
+ case DungeonItemModelId_RoundCrystal:
+ case DungeonItemModelId_SquareCrystal:
+ case DungeonItemModelId_TriangleCrystal: {
+ unk1 = data_027e0f78->mUnk_1e;
+ unk2 = data_027e0f78->mUnk_1c;
+ } break;
+
+ default: {
+ unk1 = data_027e0f78->mUnk_1a;
+ unk2 = data_027e0f78->mUnk_18;
+ } break;
+ }
+ func_020196bc(mDungeonItemModels[i], unk1);
+ func_020196fc(mDungeonItemModels[i], unk2);
+ }
+}
|
