diff --git a/asm/include/ov05.inc b/asm/include/ov05.inc index 3219ee26..343ac88e 100644 --- a/asm/include/ov05.inc +++ b/asm/include/ov05.inc @@ -829,7 +829,7 @@ .extern func_ov09_0211ca20 .extern _ZNK11ItemManager13HasAllPotionsEv .extern _ZNK11ItemManager13HasAllPotionsEv -.extern func_ov00_020ad020 +.extern _ZN4Item18func_ov00_020ad020Ei .extern func_ov03_020fb0b0 .extern func_ov00_020a8138 .extern func_ov00_020a8158 @@ -960,9 +960,9 @@ .extern func_ov00_020a8360 .extern func_ov00_020c1500 .extern func_ov00_020a8390 -.extern func_ov00_020ad020 +.extern _ZN4Item18func_ov00_020ad020Ei .extern _ZN11ItemManager8GiveItemEjjj -.extern func_ov00_020ad020 +.extern _ZN4Item18func_ov00_020ad020Ei .extern func_ov00_020a8c78 .extern func_ov00_020a8be8 .extern func_ov00_020b4440 diff --git a/asm/include/ov14.inc b/asm/include/ov14.inc index af386d07..cda25c4c 100644 --- a/asm/include/ov14.inc +++ b/asm/include/ov14.inc @@ -4618,7 +4618,7 @@ .extern func_ov03_020fb118 .extern func_ov00_020d71a0 .extern data_ov09_0211f5dc -.extern func_ov00_020ad020 +.extern _ZN4Item18func_ov00_020ad020Ei .extern func_ov03_020fc10c .extern _ZN11ItemManager18func_ov00_020ae648Ejjj .extern func_ov03_020fab60 diff --git a/asm/include/ov15.inc b/asm/include/ov15.inc index 48bc51db..ad24b548 100644 --- a/asm/include/ov15.inc +++ b/asm/include/ov15.inc @@ -3072,7 +3072,7 @@ .extern func_ov00_0207c1b0 .extern func_ov00_020ceacc .extern func_0202e58c -.extern func_ov00_020ad020 +.extern _ZN4Item18func_ov00_020ad020Ei .extern func_ov03_020fb0b0 .extern func_ov09_0211ca20 .extern func_ov09_0211cac0 @@ -6126,7 +6126,7 @@ .extern _ZN11ItemManager15LoadFanfareItemEj .extern gItemManager .extern data_027e0fe4 -.extern func_ov00_020ad020 +.extern _ZN4Item18func_ov00_020ad020Ei .extern func_ov03_020fc10c .extern func_ov00_020d73bc .extern func_ov00_0207c1b0 diff --git a/asm/ov00/Item/Item.s b/asm/ov00/Item/Item.s new file mode 100644 index 00000000..207e0254 --- /dev/null +++ b/asm/ov00/Item/Item.s @@ -0,0 +1,77 @@ + .include "macros/function.inc" + + .text + + .global _ZN4Item18func_ov00_020ad020Ei + thumb_func_start _ZN4Item18func_ov00_020ad020Ei +_ZN4Item18func_ov00_020ad020Ei: ; 0x020ad020 + cmp r0, #0x2b + bgt _020ad02c + bge _020ad060 + cmp r0, #0x25 + beq _020ad060 + b _020ad064 +_020ad02c: + cmp r0, #0x3d + bgt _020ad034 + beq _020ad060 + b _020ad064 +_020ad034: + sub r0, #0x79 + cmp r0, #0xc + bhi _020ad064 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020ad046: ; jump table + .short _020ad060 - _020ad046 - 2 ; case 0 + .short _020ad060 - _020ad046 - 2 ; case 1 + .short _020ad060 - _020ad046 - 2 ; case 2 + .short _020ad060 - _020ad046 - 2 ; case 3 + .short _020ad064 - _020ad046 - 2 ; case 4 + .short _020ad060 - _020ad046 - 2 ; case 5 + .short _020ad064 - _020ad046 - 2 ; case 6 + .short _020ad064 - _020ad046 - 2 ; case 7 + .short _020ad064 - _020ad046 - 2 ; case 8 + .short _020ad064 - _020ad046 - 2 ; case 9 + .short _020ad064 - _020ad046 - 2 ; case 10 + .short _020ad064 - _020ad046 - 2 ; case 11 + .short _020ad060 - _020ad046 - 2 ; case 12 +_020ad060: + mov r0, #1 + bx lr +_020ad064: + mov r0, #0 + bx lr + thumb_func_end _ZN4Item18func_ov00_020ad020Ei + + .global _ZN4Item18func_ov00_020ad068Ei + thumb_func_start _ZN4Item18func_ov00_020ad068Ei +_ZN4Item18func_ov00_020ad068Ei: ; 0x020ad068 + sub r0, #0x6b + cmp r0, #5 + bhi _020ad08a + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020ad07a: ; jump table + .short _020ad086 - _020ad07a - 2 ; case 0 + .short _020ad086 - _020ad07a - 2 ; case 1 + .short _020ad086 - _020ad07a - 2 ; case 2 + .short _020ad086 - _020ad07a - 2 ; case 3 + .short _020ad086 - _020ad07a - 2 ; case 4 + .short _020ad086 - _020ad07a - 2 ; case 5 +_020ad086: + mov r0, #1 + bx lr +_020ad08a: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end _ZN4Item18func_ov00_020ad068Ei diff --git a/asm/ov00/include/ov00_020ae7a4.inc b/asm/ov00/include/ov00_020ae7a4.inc index a17efdd7..53dd4841 100644 --- a/asm/ov00/include/ov00_020ae7a4.inc +++ b/asm/ov00/include/ov00_020ae7a4.inc @@ -1167,9 +1167,9 @@ .extern func_ov05_021096bc .extern func_ov00_020a914c .extern func_ov00_020a914c -.extern func_ov00_020ad068 +.extern _ZN4Item18func_ov00_020ad068Ei .extern func_ov00_020a914c -.extern func_ov00_020ad068 +.extern _ZN4Item18func_ov00_020ad068Ei .extern func_ov00_020a914c .extern func_ov00_020b3024 .extern func_ov00_020a914c diff --git a/asm/ov00/ov00_020773c0.s b/asm/ov00/ov00_020773c0.s index a43332b4..62abfc86 100644 --- a/asm/ov00/ov00_020773c0.s +++ b/asm/ov00/ov00_020773c0.s @@ -71927,80 +71927,6 @@ func_ov00_020ad018: ; 0x020ad018 bx lr arm_func_end func_ov00_020ad018 - .global func_ov00_020ad020 - thumb_func_start func_ov00_020ad020 -func_ov00_020ad020: ; 0x020ad020 - cmp r0, #0x2b - bgt _020ad02c - bge _020ad060 - cmp r0, #0x25 - beq _020ad060 - b _020ad064 -_020ad02c: - cmp r0, #0x3d - bgt _020ad034 - beq _020ad060 - b _020ad064 -_020ad034: - sub r0, #0x79 - cmp r0, #0xc - bhi _020ad064 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020ad046: ; jump table - .short _020ad060 - _020ad046 - 2 ; case 0 - .short _020ad060 - _020ad046 - 2 ; case 1 - .short _020ad060 - _020ad046 - 2 ; case 2 - .short _020ad060 - _020ad046 - 2 ; case 3 - .short _020ad064 - _020ad046 - 2 ; case 4 - .short _020ad060 - _020ad046 - 2 ; case 5 - .short _020ad064 - _020ad046 - 2 ; case 6 - .short _020ad064 - _020ad046 - 2 ; case 7 - .short _020ad064 - _020ad046 - 2 ; case 8 - .short _020ad064 - _020ad046 - 2 ; case 9 - .short _020ad064 - _020ad046 - 2 ; case 10 - .short _020ad064 - _020ad046 - 2 ; case 11 - .short _020ad060 - _020ad046 - 2 ; case 12 -_020ad060: - mov r0, #1 - bx lr -_020ad064: - mov r0, #0 - bx lr - thumb_func_end func_ov00_020ad020 - - .global func_ov00_020ad068 - thumb_func_start func_ov00_020ad068 -func_ov00_020ad068: ; 0x020ad068 - sub r0, #0x6b - cmp r0, #5 - bhi _020ad08a - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020ad07a: ; jump table - .short _020ad086 - _020ad07a - 2 ; case 0 - .short _020ad086 - _020ad07a - 2 ; case 1 - .short _020ad086 - _020ad07a - 2 ; case 2 - .short _020ad086 - _020ad07a - 2 ; case 3 - .short _020ad086 - _020ad07a - 2 ; case 4 - .short _020ad086 - _020ad07a - 2 ; case 5 -_020ad086: - mov r0, #1 - bx lr -_020ad08a: - mov r0, #0 - bx lr - .align 2, 0 - thumb_func_end func_ov00_020ad068 - .rodata .global data_ov00_020d8770 data_ov00_020d8770: ; 0x020d8770 diff --git a/asm/ov00/ov00_020ae7a4.s b/asm/ov00/ov00_020ae7a4.s index 5b643613..56f9bd94 100644 --- a/asm/ov00/ov00_020ae7a4.s +++ b/asm/ov00/ov00_020ae7a4.s @@ -18238,7 +18238,7 @@ func_ov00_020bcefc: ; 0x020bcefc ldmeqia sp!, {r3, pc} bl func_ov00_020a914c ldr r0, [r0, #0x74] - blx func_ov00_020ad068 + blx _ZN4Item18func_ov00_020ad068Ei cmp r0, #0 moveq r0, #1 movne r0, #0 @@ -18255,7 +18255,7 @@ func_ov00_020bcf2c: ; 0x020bcf2c ldmeqia sp!, {r3, pc} bl func_ov00_020a914c ldr r0, [r0, #0x74] - blx func_ov00_020ad068 + blx _ZN4Item18func_ov00_020ad068Ei ldmia sp!, {r3, pc} arm_func_end func_ov00_020bcf2c diff --git a/asm/ov05.s b/asm/ov05.s index 7f0fd44c..38a2435d 100644 --- a/asm/ov05.s +++ b/asm/ov05.s @@ -9700,7 +9700,7 @@ _02108bd0: strne r0, [r4, #0x74] _02108be8: ldr r0, [r4, #0x74] - blx func_ov00_020ad020 + blx _ZN4Item18func_ov00_020ad020Ei cmp r0, #0 ldr r1, [r4, #0x74] beq _02108c14 @@ -10640,7 +10640,7 @@ _02109874: b _021098bc _0210989c: mov r0, r4 - blx func_ov00_020ad020 + blx _ZN4Item18func_ov00_020ad020Ei cmp r0, #0 bne _021098bc ldr r0, _021099cc ; =gItemManager @@ -10649,7 +10649,7 @@ _0210989c: blx _ZN11ItemManager8GiveItemEjjj _021098bc: mov r0, r4 - blx func_ov00_020ad020 + blx _ZN4Item18func_ov00_020ad020Ei cmp r0, #0 bne _02109914 ldr r0, _021099d0 ; =data_027e0c68 diff --git a/asm/ov14.s b/asm/ov14.s index 8ab1a820..9c70677b 100644 --- a/asm/ov14.s +++ b/asm/ov14.s @@ -61799,7 +61799,7 @@ func_ov14_021508b8: ; 0x021508b8 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] - bl func_ov00_020ad020 + bl _ZN4Item18func_ov00_020ad020Ei cmp r0, #0 beq _021508ce ldr r0, _021508dc ; =data_027e0c68 diff --git a/asm/ov15.s b/asm/ov15.s index 447808d3..b21f34a7 100644 --- a/asm/ov15.s +++ b/asm/ov15.s @@ -44494,7 +44494,7 @@ _0214526c: cmp r0, #0 beq _02145420 bl func_ov15_021464fc - blx func_ov00_020ad020 + blx _ZN4Item18func_ov00_020ad020Ei cmp r0, #0 movne r0, #0xb strneb r0, [sb, #0x34d] @@ -88280,7 +88280,7 @@ func_ov15_0216a968: ; 0x0216a968 sub sp, sp, #0x1c mov r4, r0 ldr r0, [r4, #8] - blx func_ov00_020ad020 + blx _ZN4Item18func_ov00_020ad020Ei cmp r0, #0 beq _0216a994 ldr r0, _0216aa1c ; =data_027e0c68 diff --git a/include/Item/Item.hpp b/include/Item/Item.hpp index ab759d21..be4dd102 100644 --- a/include/Item/Item.hpp +++ b/include/Item/Item.hpp @@ -48,7 +48,7 @@ enum ItemFlag_ { ItemFlag_COUNT = 128, }; -typedef u32 ItemId; +typedef s32 ItemId; enum ItemId_ { ItemId_SmallKey = 1, ItemId_GreenRupee = 2, @@ -143,3 +143,8 @@ enum ItemId_ { ItemId_Unk_133 = 133, }; + +namespace Item { + bool func_ov00_020ad020(ItemId item); + bool func_ov00_020ad068(ItemId item); +} diff --git a/src/00_Core/Item/Item.cpp b/src/00_Core/Item/Item.cpp new file mode 100644 index 00000000..522dd51d --- /dev/null +++ b/src/00_Core/Item/Item.cpp @@ -0,0 +1,8 @@ +#include "Item/Item.hpp" + +#ifdef STUBS + +bool Item::func_ov00_020ad020(ItemId item) {} +bool Item::func_ov00_020ad068(ItemId item) {} + +#endif diff --git a/src/00_Core/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp similarity index 100% rename from src/00_Core/ItemManager.cpp rename to src/00_Core/Item/ItemManager.cpp