Decomp ItemManager::LoadDungeonItemModels

This commit is contained in:
Aetias
2024-04-30 18:38:48 +02:00
parent 102fc098fa
commit b046f33b3c
4 changed files with 41 additions and 45 deletions
-45
View File
@@ -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
+15
View File
@@ -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;
+1
View File
@@ -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"
+25
View File
@@ -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);
}
}