mirror of
https://github.com/zeldaret/ph
synced 2026-07-09 06:03:28 -04:00
Decomp ItemManager::LoadFanfareItem
This commit is contained in:
+6
-202
@@ -3,202 +3,6 @@
|
||||
|
||||
.text
|
||||
|
||||
.global _ZN11ItemManager15LoadFanfareItemEj
|
||||
thumb_func_start _ZN11ItemManager15LoadFanfareItemEj
|
||||
_ZN11ItemManager15LoadFanfareItemEj: ; 0x020adb30
|
||||
push {r4, r5, lr}
|
||||
sub sp, #0x10c
|
||||
add r5, r0, #0
|
||||
mov r0, #0x46
|
||||
lsl r0, r0, #2
|
||||
str r1, [r5, r0]
|
||||
cmp r1, #0x2b
|
||||
beq _020adb54
|
||||
cmp r1, #0x25
|
||||
beq _020adb54
|
||||
cmp r1, #0x79
|
||||
blt _020adb4c
|
||||
cmp r1, #0x7c
|
||||
ble _020adb54
|
||||
_020adb4c:
|
||||
cmp r1, #0x7e
|
||||
beq _020adb54
|
||||
cmp r1, #0x85
|
||||
bne _020adb5c
|
||||
_020adb54:
|
||||
ldr r0, _020adc8c ; =data_027e1058
|
||||
ldr r0, [r0]
|
||||
ldr r1, [r0]
|
||||
b _020adc7c
|
||||
_020adb5c:
|
||||
cmp r1, #0x30
|
||||
blt _020adb76
|
||||
cmp r1, #0x37
|
||||
bgt _020adb76
|
||||
ldr r0, _020adc90 ; =data_027e105c
|
||||
sub r1, #0x30
|
||||
ldr r0, [r0]
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl LoadTreasureItemFanfare
|
||||
add r1, r0, #0
|
||||
b _020adc7c
|
||||
_020adb76:
|
||||
cmp r1, #0x7d
|
||||
bne _020adb82
|
||||
ldr r0, _020adc90 ; =data_027e105c
|
||||
ldr r0, [r0]
|
||||
ldr r1, [r0]
|
||||
b _020adc7c
|
||||
_020adb82:
|
||||
add r3, sp, #0x8c
|
||||
mov r2, #0x80
|
||||
mov r0, #0
|
||||
_020adb88:
|
||||
strb r0, [r3]
|
||||
add r3, r3, #1
|
||||
sub r2, r2, #1
|
||||
bne _020adb88
|
||||
add r3, sp, #0xc
|
||||
mov r2, #0x80
|
||||
mov r0, #0
|
||||
_020adb96:
|
||||
strb r0, [r3]
|
||||
add r3, r3, #1
|
||||
sub r2, r2, #1
|
||||
bne _020adb96
|
||||
mov r4, #0
|
||||
cmp r1, #0x28
|
||||
bne _020adbb4
|
||||
add r0, r5, #0
|
||||
add r0, #0xb4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #1
|
||||
blt _020adbb4
|
||||
ldr r0, _020adc94 ; =data_ov00_020e5df8
|
||||
ldr r4, [r0, #4]
|
||||
b _020adc22
|
||||
_020adbb4:
|
||||
cmp r1, #0x29
|
||||
bne _020adbc8
|
||||
add r0, r5, #0
|
||||
add r0, #0xb6
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #1
|
||||
blt _020adbc8
|
||||
ldr r0, _020adc94 ; =data_ov00_020e5df8
|
||||
ldr r4, [r0, #8]
|
||||
b _020adc22
|
||||
_020adbc8:
|
||||
cmp r1, #0x2a
|
||||
bne _020adbdc
|
||||
add r0, r5, #0
|
||||
add r0, #0xb8
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #1
|
||||
blt _020adbdc
|
||||
ldr r0, _020adc94 ; =data_ov00_020e5df8
|
||||
ldr r4, [r0, #0xc]
|
||||
b _020adc22
|
||||
_020adbdc:
|
||||
cmp r1, #0x3e
|
||||
bne _020adbe6
|
||||
ldr r0, _020adc98 ; =data_ov00_020e5c78
|
||||
ldr r4, [r0, #0x2c]
|
||||
b _020adc22
|
||||
_020adbe6:
|
||||
cmp r1, #0x46
|
||||
bge _020adbf2
|
||||
ldr r0, _020adc9c ; =data_ov00_020e5c9c
|
||||
lsl r1, r1, #2
|
||||
ldr r4, [r0, r1]
|
||||
b _020adc22
|
||||
_020adbf2:
|
||||
cmp r1, #0x71
|
||||
blt _020adc04
|
||||
cmp r1, #0x79
|
||||
bge _020adc04
|
||||
sub r1, #0x71
|
||||
ldr r0, _020adca0 ; =data_ov00_020e5db4
|
||||
lsl r1, r1, #2
|
||||
ldr r4, [r0, r1]
|
||||
b _020adc22
|
||||
_020adc04:
|
||||
cmp r1, #0x7f
|
||||
blt _020adc16
|
||||
cmp r1, #0x88
|
||||
bge _020adc16
|
||||
sub r1, #0x7f
|
||||
ldr r0, _020adca4 ; =data_ov00_020e5dd4
|
||||
lsl r1, r1, #2
|
||||
ldr r4, [r0, r1]
|
||||
b _020adc22
|
||||
_020adc16:
|
||||
cmp r1, #0x4b
|
||||
blt _020adc22
|
||||
cmp r1, #0x6a
|
||||
bgt _020adc22
|
||||
ldr r0, _020adc94 ; =data_ov00_020e5df8
|
||||
ldr r4, [r0]
|
||||
_020adc22:
|
||||
cmp r4, #0
|
||||
bne _020adc2a
|
||||
ldr r0, _020adc98 ; =data_ov00_020e5c78
|
||||
ldr r4, [r0, #0x20]
|
||||
_020adc2a:
|
||||
ldr r1, _020adc94 ; =data_ov00_020e5df8
|
||||
add r0, sp, #0x8c
|
||||
ldr r1, [r1, #0x10]
|
||||
blx strcat
|
||||
add r0, sp, #0x8c
|
||||
add r1, r4, #0
|
||||
blx strcat
|
||||
ldr r1, _020adc94 ; =data_ov00_020e5df8
|
||||
add r0, sp, #0x8c
|
||||
ldr r1, [r1, #0x14]
|
||||
blx strcat
|
||||
ldr r1, _020adc94 ; =data_ov00_020e5df8
|
||||
add r0, sp, #0xc
|
||||
ldr r1, [r1, #0x10]
|
||||
blx strcat
|
||||
add r0, sp, #0xc
|
||||
add r1, r4, #0
|
||||
blx strcat
|
||||
ldr r1, _020adc94 ; =data_ov00_020e5df8
|
||||
add r0, sp, #0xc
|
||||
ldr r1, [r1, #0x18]
|
||||
blx strcat
|
||||
mov r3, #0
|
||||
str r3, [sp]
|
||||
str r3, [sp, #4]
|
||||
mov r0, #1
|
||||
str r0, [sp, #8]
|
||||
mov r0, #0x12
|
||||
lsl r0, r0, #4
|
||||
ldr r0, [r5, r0]
|
||||
add r1, sp, #0x8c
|
||||
add r2, sp, #0xc
|
||||
bl func_ov00_02079ffc
|
||||
add r1, r0, #0
|
||||
_020adc7c:
|
||||
mov r0, #0x45
|
||||
lsl r0, r0, #2
|
||||
ldr r0, [r5, r0]
|
||||
ldr r2, [r0]
|
||||
ldr r2, [r2, #0xc]
|
||||
blx r2
|
||||
add sp, #0x10c
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
thumb_func_end _ZN11ItemManager15LoadFanfareItemEj
|
||||
_020adc8c: .word data_027e1058
|
||||
_020adc90: .word data_027e105c
|
||||
_020adc94: .word data_ov00_020e5df8
|
||||
_020adc98: .word data_ov00_020e5c78
|
||||
_020adc9c: .word data_ov00_020e5c9c
|
||||
_020adca0: .word data_ov00_020e5db4
|
||||
_020adca4: .word data_ov00_020e5dd4
|
||||
|
||||
.global _ZNK11ItemManager19GetFanfareItemScaleEP5Vec3p
|
||||
thumb_func_start _ZNK11ItemManager19GetFanfareItemScaleEP5Vec3p
|
||||
_ZNK11ItemManager19GetFanfareItemScaleEP5Vec3p: ; 0x020adca8
|
||||
@@ -1717,8 +1521,8 @@ data_ov00_020e5c70: ; 0x020e5c70
|
||||
data_ov00_020e5c74: ; 0x020e5c74
|
||||
.ascii "anc"
|
||||
.byte 0x00
|
||||
.global data_ov00_020e5c78
|
||||
data_ov00_020e5c78: ; 0x020e5c78
|
||||
.global sUnknownItemModelNames
|
||||
sUnknownItemModelNames: ; 0x020e5c78
|
||||
.word data_ov00_020e5c74
|
||||
.global data_ov00_020e5c7c
|
||||
data_ov00_020e5c7c: ; 0x020e5c7c
|
||||
@@ -1744,8 +1548,8 @@ data_ov00_020e5c94: ; 0x020e5c94
|
||||
.global data_ov00_020e5c98
|
||||
data_ov00_020e5c98: ; 0x020e5c98
|
||||
.word data_ov00_020e5e14
|
||||
.global data_ov00_020e5c9c
|
||||
data_ov00_020e5c9c: ; 0x020e5c9c
|
||||
.global sItemModelNames
|
||||
sItemModelNames: ; 0x020e5c9c
|
||||
.word data_ov00_020e5e18
|
||||
.global data_ov00_020e5ca0
|
||||
data_ov00_020e5ca0: ; 0x020e5ca0
|
||||
@@ -2005,8 +1809,8 @@ data_ov00_020e5df0: ; 0x020e5df0
|
||||
.global data_ov00_020e5df4
|
||||
data_ov00_020e5df4: ; 0x020e5df4
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.global data_ov00_020e5df8
|
||||
data_ov00_020e5df8: ; 0x020e5df8
|
||||
.global sSpecialItemModelNames
|
||||
sSpecialItemModelNames: ; 0x020e5df8
|
||||
.word data_ov00_020e6030
|
||||
.global data_ov00_020e5dfc
|
||||
data_ov00_020e5dfc: ; 0x020e5dfc
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
.extern Divide
|
||||
.extern _ZN10PlayerBase18func_ov00_020a7c00Ei
|
||||
.extern _ZN11ItemManager12GetItemModelEj
|
||||
.extern _ZN11ItemManager15LoadFanfareItemEj
|
||||
.extern _ZN11ItemManager15LoadFanfareItemEi
|
||||
.extern _ZN11ItemManager18func_ov00_020ae648Ejjj
|
||||
.extern _ZN11ItemManager8GiveItemEjjj
|
||||
.extern _ZN13LinkStateBase10GetStateIdEv
|
||||
|
||||
+2
-2
@@ -9726,7 +9726,7 @@ _02108c34:
|
||||
ldr r0, _02108cf0 ; =gItemManager
|
||||
ldr r1, [r4, #0x74]
|
||||
ldr r0, [r0]
|
||||
blx _ZN11ItemManager15LoadFanfareItemEj
|
||||
blx _ZN11ItemManager15LoadFanfareItemEi
|
||||
ldr r0, [r4, #0x74]
|
||||
mov r2, #1
|
||||
cmp r0, #0x81
|
||||
@@ -9884,7 +9884,7 @@ _02108e44:
|
||||
ldr r0, _02108e88 ; =gItemManager
|
||||
mov r1, r4
|
||||
ldr r0, [r0]
|
||||
blx _ZN11ItemManager15LoadFanfareItemEj
|
||||
blx _ZN11ItemManager15LoadFanfareItemEi
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
arm_func_end func_ov05_02108e08
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
.extern _ZN11ItemManager12GetEquipItemEi
|
||||
.extern _ZN11ItemManager12GetItemModelEj
|
||||
.extern _ZN11ItemManager13TickEquipItemEv
|
||||
.extern _ZN11ItemManager15LoadFanfareItemEj
|
||||
.extern _ZN11ItemManager15LoadFanfareItemEi
|
||||
.extern _ZN11ItemManager15SetEquippedItemEi
|
||||
.extern _ZN11ItemManager17EquipPreviousItemEv
|
||||
.extern _ZN11ItemManager18EquipItem_vfunc_38Ei
|
||||
|
||||
@@ -26983,7 +26983,7 @@ _0215074c:
|
||||
ldr r0, _02150764 ; =gItemManager
|
||||
add r1, r4, #0
|
||||
ldr r0, [r0]
|
||||
bl _ZN11ItemManager15LoadFanfareItemEj
|
||||
bl _ZN11ItemManager15LoadFanfareItemEi
|
||||
add r0, r5, #0
|
||||
mov r1, #0
|
||||
bl func_ov14_02150848
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
.extern _ZN10PlayerBase9AddHealthEs
|
||||
.extern _ZN11ItemManager10GiveRupeesEjj
|
||||
.extern _ZN11ItemManager10SetUnk_09eEjt
|
||||
.extern _ZN11ItemManager15LoadFanfareItemEj
|
||||
.extern _ZN11ItemManager15LoadFanfareItemEi
|
||||
.extern _ZN11ItemManager18func_ov00_020ad528Ev
|
||||
.extern _ZN11ItemManager18func_ov00_020ae648Ejjj
|
||||
.extern _ZN11ItemManager19SetTreasureSalvagedEj
|
||||
|
||||
+2
-2
@@ -44543,7 +44543,7 @@ _02145334:
|
||||
ldr r0, _0214581c ; =gItemManager
|
||||
mov r1, r5
|
||||
ldr r0, [r0]
|
||||
blx _ZN11ItemManager15LoadFanfareItemEj
|
||||
blx _ZN11ItemManager15LoadFanfareItemEi
|
||||
mov r0, r6
|
||||
mov r1, #1
|
||||
bl func_ov15_0216e168
|
||||
@@ -88262,7 +88262,7 @@ _0216a93c:
|
||||
ldr r0, _0216a95c ; =gItemManager
|
||||
mov r1, r4
|
||||
ldr r0, [r0]
|
||||
blx _ZN11ItemManager15LoadFanfareItemEj
|
||||
blx _ZN11ItemManager15LoadFanfareItemEi
|
||||
mov r0, r5
|
||||
bl func_ov15_0216a968
|
||||
add sp, sp, #4
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
extern "C" {
|
||||
#include <string.h>
|
||||
}
|
||||
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
#include "lib/math.h"
|
||||
|
||||
@@ -380,3 +380,66 @@ THUMB void ItemManager::RemoveItem(ItemFlag item) {
|
||||
(*mAmmo)[item] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
extern ItemModel **data_027e1058;
|
||||
extern ItemModel **data_027e105c;
|
||||
extern "C" ItemModel* func_ov00_02079ffc(void*, const char *modelName, const char *textureName, unk32 param4, unk8 param5, unk8 param6, bool param7);
|
||||
extern "C" ItemModel* LoadTreasureItemFanfare(ItemModel**, s32 treasureType, bool, bool);
|
||||
extern const char *sUnknownItemModelNames[];
|
||||
extern const char *data_ov00_020e5dd4[];
|
||||
extern const char *data_ov00_020e5db4[];
|
||||
extern const char *sItemModelNames[];
|
||||
extern const char *sSpecialItemModelNames[];
|
||||
THUMB void ItemManager::LoadFanfareItem(ItemId id) {
|
||||
mFanfareItem = id;
|
||||
|
||||
ItemModel *model;
|
||||
if (
|
||||
id == ItemId_Unk_43 ||
|
||||
id == ItemId_Cannon ||
|
||||
(id >= ItemId_GOLDEN_SHIP_START && id <= ItemId_GOLDEN_SHIP_END) ||
|
||||
id == ItemId_Unk_126 ||
|
||||
id == ItemId_Unk_133
|
||||
) {
|
||||
model = *data_027e1058;
|
||||
} else if (
|
||||
id >= ItemId_TREASURE_START &&
|
||||
id <= ItemId_TREASURE_END
|
||||
) {
|
||||
model = LoadTreasureItemFanfare(data_027e105c, id - ItemId_TREASURE_START, true, false);
|
||||
} else if (id == ItemId_Unk_125) {
|
||||
model = *data_027e105c;
|
||||
} else {
|
||||
char modelName[0x80] = {};
|
||||
char textureName[0x80] = {};
|
||||
const char *itemName = NULL;
|
||||
if (id == ItemId_Quiver && (s32) mQuiverSize >= 1) {
|
||||
itemName = sSpecialItemModelNames[1];
|
||||
} else if (id == ItemId_BigBombBag && (s32) mBombBagSize >= 1) {
|
||||
itemName = sSpecialItemModelNames[2];
|
||||
} else if (id == ItemId_BigBombchuBag && (s32) mBombchuBagSize >= 1) {
|
||||
itemName = sSpecialItemModelNames[3];
|
||||
} else if (id == ItemId_HerosNewClothes) {
|
||||
itemName = sUnknownItemModelNames[11];
|
||||
} else if (id < ItemId_Unk_70) {
|
||||
itemName = sItemModelNames[id];
|
||||
} else if (id >= ItemId_SwordsmanScroll && id < ItemId_GoldenChimney) {
|
||||
itemName = data_ov00_020e5db4[id - ItemId_SwordsmanScroll];
|
||||
} else if (id >= ItemId_CycloneSlate && id < ItemId_Unk_136) {
|
||||
itemName = data_ov00_020e5dd4[id - ItemId_CycloneSlate];
|
||||
} else if (id >= ItemId_TREASURE_CHART_START && id <= ItemId_TREASURE_CHART_END) {
|
||||
itemName = sSpecialItemModelNames[0];
|
||||
}
|
||||
if (!itemName) {
|
||||
itemName = sUnknownItemModelNames[8];
|
||||
}
|
||||
strcat(modelName, sSpecialItemModelNames[4]);
|
||||
strcat(modelName, itemName);
|
||||
strcat(modelName, sSpecialItemModelNames[5]);
|
||||
strcat(textureName, sSpecialItemModelNames[4]);
|
||||
strcat(textureName, itemName);
|
||||
strcat(textureName, sSpecialItemModelNames[6]);
|
||||
model = func_ov00_02079ffc(mFanfareItemModel, modelName, textureName, 0, 0, 0, true);
|
||||
}
|
||||
mUnk_114->vfunc_0c(model);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user