From c6736f9c64d5087c5a9051b93c8483675987df4a Mon Sep 17 00:00:00 2001 From: Aetias Date: Sat, 6 Jan 2024 10:39:33 +0100 Subject: [PATCH] Decomp 3 `Inventory` functions --- asm/dtcm.s | 4 +- asm/global.inc | 22 ++-- asm/main.s | 108 +++++++++--------- asm/ov00/include/ov00_020773c0.inc | 4 +- asm/ov00/include/ov00_02078e00.inc | 4 +- asm/ov00/include/ov00_02079d28.inc | 8 +- asm/ov00/include/ov00_020a03e4.inc | 10 +- asm/ov00/include/ov00_020ae7a4.inc | 16 +-- asm/ov00/include/ov00_020b4940.inc | 42 +++---- asm/ov00/include/ov00_020c43c8.inc | 2 +- asm/ov00/include/ov00_020c9a68.inc | 2 +- asm/ov00/include/ov00_020d1870.inc | 26 ++--- .../inventory/Inventory_TickEquipItem.inc | 60 ++++++++++ asm/ov00/inventory/inventory.s | 104 ++--------------- asm/ov00/ov00_020773c0.s | 6 +- asm/ov00/ov00_02078e00.s | 8 +- asm/ov00/ov00_02079d28.s | 14 +-- asm/ov00/ov00_020a03e4.s | 12 +- asm/ov00/ov00_020ae7a4.s | 16 +-- asm/ov00/ov00_020b4940.s | 64 +++++------ asm/ov00/ov00_020c43c8.s | 4 +- asm/ov00/ov00_020c9a68.s | 4 +- asm/ov00/ov00_020d1870.s | 26 ++--- asm/ov03.s | 60 +++++----- asm/ov04.s | 90 +++++++-------- asm/ov05.s | 30 ++--- asm/ov08.s | 6 +- asm/ov09.s | 30 ++--- asm/ov12.s | 16 +-- asm/ov14.s | 42 +++---- asm/ov16.s | 6 +- asm/ov28.s | 12 +- asm/ov52.s | 20 ++-- asm/ov54.s | 4 +- asm/ov59.s | 12 +- include/Inventory.hpp | 54 ++++++++- include/OverlayManager.hpp | 100 ++++++++++++++++ src/Inventory.cpp | 41 ++++++- 38 files changed, 624 insertions(+), 465 deletions(-) create mode 100644 asm/ov00/inventory/Inventory_TickEquipItem.inc create mode 100644 include/OverlayManager.hpp diff --git a/asm/dtcm.s b/asm/dtcm.s index b8d161d7..a0c6f7b4 100644 --- a/asm/dtcm.s +++ b/asm/dtcm.s @@ -1892,8 +1892,8 @@ data_027e08fa: .global data_027e08fc data_027e08fc: .space 0x4 - .global data_027e0900 -data_027e0900: + .global gOverlayManager +gOverlayManager: .space 0x4 .global data_027e0904 data_027e0904: diff --git a/asm/global.inc b/asm/global.inc index 09579525..576db420 100644 --- a/asm/global.inc +++ b/asm/global.inc @@ -48264,7 +48264,7 @@ .extern data_027e08f9 .extern data_027e08fa .extern data_027e08fc -.extern data_027e0900 +.extern gOverlayManager .extern data_027e0904 .extern data_027e0908 .extern data_027e090c @@ -69873,7 +69873,7 @@ .extern data_ov00_020ee570 .extern data_ov00_020ee574 .extern data_ov00_020ee578 -.extern data_ov00_020ee57c +.extern gPlayerAnimHandler .extern data_ov00_020ee580 .extern data_ov00_020ee584 .extern data_ov00_020ee588 @@ -255656,11 +255656,11 @@ .extern func_0202ff0e .extern func_0202ff2c .extern func_0202ff30 -.extern func_0202ff44 +.extern _ZN14OverlayManager4LoadEjj .extern func_0202ff5c -.extern func_0202ff64 +.extern _ZN14OverlayManager15LoadIfNotLoadedEjj .extern func_0202ff82 -.extern func_0202ff84 +.extern _ZN14OverlayManager6UnloadEj .extern func_0202ffa0 .extern func_0202ffa4 .extern func_0202ffd0 @@ -264309,9 +264309,9 @@ .extern func_ov00_020ad3ea .extern func_ov00_020ad3f2 .extern func_ov00_020ad40a -.extern func_ov00_020ad414 -.extern func_ov00_020ad428 -.extern func_ov00_020ad434 +.extern _ZNK9Inventory16GetEquippedFairyEv +.extern _ZNK9Inventory8GetFairyEj +.extern _ZN9Inventory13TickEquipItemEv .extern func_ov00_020ad4b4 .extern func_ov00_020ad528 .extern func_ov00_020ad52c @@ -264480,7 +264480,7 @@ .extern func_ov00_020ae368 .extern func_ov00_020ae37c .extern func_ov00_020ae382 -.extern func_ov00_020ae390 +.extern _ZNK9Inventory15GetEquippedItemEv .extern func_ov00_020ae3a8 .extern func_ov00_020ae3c0 .extern func_ov00_020ae3d0 @@ -265802,7 +265802,7 @@ .extern func_ov00_020be640 .extern func_ov00_020be654 .extern func_ov00_020be674 -.extern func_ov00_020be70c +.extern LoadEquipItemModel .extern func_ov00_020be73c .extern func_ov00_020be7dc .extern func_ov00_020be8dc @@ -270922,7 +270922,7 @@ .extern func_ov03_020faa98 .extern func_ov03_020faaa4 .extern func_ov03_020faaaa -.extern func_ov03_020faab8 +.extern _ZN14OverlayManager13LoadEquipItemEj .extern func_ov03_020fab00 .extern func_ov03_020fab28 .extern func_ov03_020fab3c diff --git a/asm/main.s b/asm/main.s index 13a1eafb..f43d3e2d 100644 --- a/asm/main.s +++ b/asm/main.s @@ -58767,7 +58767,7 @@ func_0202c6c8: ; 0x0202c6c8 blx r1 _0202c6d8: mov r2, #0 - ldr r0, _0202c71c ; =data_027e0900 + ldr r0, _0202c71c ; =gOverlayManager str r2, [r4, #8] ldr r1, [r0] sub r0, r2, #1 @@ -58789,12 +58789,12 @@ _0202c6f2: bl func_020355e4 ldr r0, _0202c738 ; =data_027e0c54 bl func_02036050 - ldr r0, _0202c71c ; =data_027e0900 + ldr r0, _0202c71c ; =gOverlayManager bl func_02030008 pop {r4, pc} nop thumb_func_end func_0202c6c8 -_0202c71c: .word data_027e0900 +_0202c71c: .word gOverlayManager _0202c720: .word data_027e0dbc _0202c724: .word data_ov00_020ee734 _0202c728: .word data_027e0c68 @@ -58880,7 +58880,7 @@ _0202c75c: blx func_02033d40 ldr r0, _0202c918 ; =data_027e05f8 bl func_0203744c - ldr r0, _0202c91c ; =data_027e0900 + ldr r0, _0202c91c ; =gOverlayManager ldr r1, [r0] mov r0, #0 mvn r0, r0 @@ -58905,7 +58905,7 @@ _0202c75c: mov r1, #0 strb r1, [r0] _0202c816: - ldr r0, _0202c91c ; =data_027e0900 + ldr r0, _0202c91c ; =gOverlayManager ldr r1, [r4] bl func_0202ffa4 ldr r0, _0202c93c ; =data_027e0c54 @@ -58923,7 +58923,7 @@ _0202c816: bl func_0203d57c ldr r0, _0202c950 ; =data_027e0c68 bl func_02036490 - ldr r0, _0202c91c ; =data_027e0900 + ldr r0, _0202c91c ; =gOverlayManager ldr r1, [r0] mov r0, #0 mvn r0, r0 @@ -59018,7 +59018,7 @@ _0202c90c: .word data_027e077c _0202c910: .word data_027e0d04 _0202c914: .word data_027e0c38 _0202c918: .word data_027e05f8 -_0202c91c: .word data_027e0900 +_0202c91c: .word gOverlayManager _0202c920: .word data_ov00_020ec7dc _0202c924: .word data_027e0d78 _0202c928: .word data_027e0e2c @@ -59097,7 +59097,7 @@ _0202c9e0: ldr r0, _0202ce60 ; =data_027e0c54 bl func_02036174 mov r8, r0 - ldr r0, _0202ce68 ; =data_027e0900 + ldr r0, _0202ce68 ; =gOverlayManager ldr r1, [r0] ldr r0, [sp, #0x14] cmp r1, r0 @@ -59345,7 +59345,7 @@ _0202cd74: strb r0, [sl, #0x100] ldr r0, [r7] str r0, [sl, #0xf8] - ldr r0, _0202ce68 ; =data_027e0900 + ldr r0, _0202ce68 ; =gOverlayManager ldr r1, [r0] ldr r0, [sp, #0x14] cmp r1, r0 @@ -59400,7 +59400,7 @@ _0202ce58: .word data_027e08e4 _0202ce5c: .word 0x027ffc3c _0202ce60: .word data_027e0c54 _0202ce64: .word data_027e08fc -_0202ce68: .word data_027e0900 +_0202ce68: .word gOverlayManager _0202ce6c: .word data_027e0cbc _0202ce70: .word data_027e05f8 _0202ce74: .word data_027e08f8 @@ -59455,7 +59455,7 @@ _0202ceee: ldr r0, _0202cf24 ; =data_027e071c add r1, r5, #0 blx func_0202d77c - ldr r0, _0202cf28 ; =data_027e0900 + ldr r0, _0202cf28 ; =gOverlayManager ldr r1, [r0] mov r0, #0 mvn r0, r0 @@ -59477,7 +59477,7 @@ _0202cf1c: thumb_func_end func_0202cec8 _0202cf20: .word 0x00000102 _0202cf24: .word data_027e071c -_0202cf28: .word data_027e0900 +_0202cf28: .word gOverlayManager _0202cf2c: .word data_ov00_020eec68 _0202cf30: .word data_027e0ffc @@ -59560,7 +59560,7 @@ _0202d01c: ldr r0, _0202d098 ; =data_027e0cbc add r1, r4, #0xf0 bl func_0203d67c - ldr r1, _0202d09c ; =data_027e0900 + ldr r1, _0202d09c ; =gOverlayManager mvn r0, #0 ldr r1, [r1] cmp r1, r0 @@ -59595,7 +59595,7 @@ _0202d08c: .word data_027e0c38 _0202d090: .word data_027e0c68 _0202d094: .word data_027e071c _0202d098: .word data_027e0cbc -_0202d09c: .word data_027e0900 +_0202d09c: .word gOverlayManager _0202d0a0: .word data_027e0db0 _0202d0a4: .word data_027e077c _0202d0a8: .word data_02068894 @@ -63004,7 +63004,7 @@ _0202f370: .word func_0202f288 + 1 func_0202f374: ; 0x0202f374 push {r3, lr} sub sp, #8 - ldr r0, _0202f3dc ; =data_027e0900 + ldr r0, _0202f3dc ; =gOverlayManager ldr r1, [r0] mov r0, #0 mvn r0, r0 @@ -63052,7 +63052,7 @@ _0202f3c6: pop {r3, pc} .align 2, 0 thumb_func_end func_0202f374 -_0202f3dc: .word data_027e0900 +_0202f3dc: .word gOverlayManager _0202f3e0: .word data_027e0d38 _0202f3e4: .word data_02057718 _0202f3e8: .word data_027e0f7c @@ -63637,7 +63637,7 @@ _0202f860: _0202f88c: ldr r0, _0202f8dc ; =data_027e0618 bl func_0202cf34 - ldr r0, _0202f8e0 ; =data_027e0900 + ldr r0, _0202f8e0 ; =gOverlayManager ldr r1, [r0] mov r0, #0 mvn r0, r0 @@ -63666,7 +63666,7 @@ _0202f8d0: .word 0x00000fff _0202f8d4: .word 0x0400006c _0202f8d8: .word 0x0400106c _0202f8dc: .word data_027e0618 -_0202f8e0: .word data_027e0900 +_0202f8e0: .word gOverlayManager _0202f8e4: .word data_ov00_020ee734 .global func_0202f8e8 @@ -63713,7 +63713,7 @@ _0202f936: ldr r0, [r0] cmp r0, #6 beq _0202f986 - ldr r1, _0202f994 ; =data_027e0900 + ldr r1, _0202f994 ; =gOverlayManager ldr r0, [r1] ldr r2, [r1] mov r1, #0 @@ -63756,7 +63756,7 @@ _0202f986: _0202f988: .word data_027e080c _0202f98c: .word data_027e071c _0202f990: .word data_027e0618 -_0202f994: .word data_027e0900 +_0202f994: .word gOverlayManager _0202f998: .word data_027e0d54 _0202f99c: .word data_ov00_020ee734 @@ -63827,7 +63827,7 @@ _0202fa4a: mov r5, #1 b _0202fb34 _0202fa4e: - ldr r0, _0202fbc8 ; =data_027e0900 + ldr r0, _0202fbc8 ; =gOverlayManager ldr r1, [r0] sub r0, r5, #1 cmp r1, r0 @@ -63839,7 +63839,7 @@ _0202fa5e: mov r0, #0xc add r2, r1, #0 bl func_0200b594 - ldr r0, _0202fbc8 ; =data_027e0900 + ldr r0, _0202fbc8 ; =gOverlayManager ldr r1, [r0] mov r0, #0 mvn r0, r0 @@ -63913,7 +63913,7 @@ _0202fae8: mov r1, #0 blx func_0200b3e0 _0202fafe: - ldr r0, _0202fbc8 ; =data_027e0900 + ldr r0, _0202fbc8 ; =gOverlayManager ldr r1, [r0] mov r0, #0 mvn r0, r0 @@ -63989,7 +63989,7 @@ _0202fb82: add r1, r0, #0 blx func_0200b3e0 _0202fb92: - ldr r0, _0202fbc8 ; =data_027e0900 + ldr r0, _0202fbc8 ; =gOverlayManager ldr r1, [r0] mov r0, #0 mvn r0, r0 @@ -64018,7 +64018,7 @@ _0202fbc0: pop {r4, r5, r6, pc} nop thumb_func_end func_0202fa28 -_0202fbc8: .word data_027e0900 +_0202fbc8: .word gOverlayManager _0202fbcc: .word data_ov00_020ee734 _0202fbd0: .word data_027e0618 _0202fbd4: .word data_020561f4 @@ -64074,7 +64074,7 @@ _0202fc78: blx func_0202fa28 ldmia sp!, {r4, pc} _0202fc88: - ldr r1, _0202fd94 ; =data_027e0900 + ldr r1, _0202fd94 ; =gOverlayManager mvn r0, #0 ldr r1, [r1] cmp r1, r0 @@ -64150,7 +64150,7 @@ _0202fd78: _0202fd88: .word 0x027fffa8 _0202fd8c: .word data_027e0618 _0202fd90: .word data_ov13_0211638c -_0202fd94: .word data_027e0900 +_0202fd94: .word gOverlayManager _0202fd98: .word data_027e0d54 .global func_0202fd9c @@ -64363,9 +64363,9 @@ func_0202ff30: ; 0x0202ff30 ldmia sp!, {r4, pc} arm_func_end func_0202ff30 - .global func_0202ff44 - thumb_func_start func_0202ff44 -func_0202ff44: ; 0x0202ff44 + .global _ZN14OverlayManager4LoadEjj + thumb_func_start _ZN14OverlayManager4LoadEjj +_ZN14OverlayManager4LoadEjj: ; 0x0202ff44 push {r4, r5, r6, lr} add r5, r0, #0 mov r0, #0 @@ -64382,11 +64382,11 @@ _0202ff5c: str r4, [r5, r0] pop {r4, r5, r6, pc} .align 2, 0 - thumb_func_end func_0202ff44 + thumb_func_end _ZN14OverlayManager4LoadEjj - .global func_0202ff64 - thumb_func_start func_0202ff64 -func_0202ff64: ; 0x0202ff64 + .global _ZN14OverlayManager15LoadIfNotLoadedEjj + thumb_func_start _ZN14OverlayManager15LoadIfNotLoadedEjj +_ZN14OverlayManager15LoadIfNotLoadedEjj: ; 0x0202ff64 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r2, #0 @@ -64395,18 +64395,18 @@ func_0202ff64: ; 0x0202ff64 ldr r2, [r5, r2] cmp r2, r6 beq _0202ff82 - bl func_0202ff84 + bl _ZN14OverlayManager6UnloadEj add r0, r5, #0 add r1, r4, #0 add r2, r6, #0 - bl func_0202ff44 + bl _ZN14OverlayManager4LoadEjj _0202ff82: pop {r4, r5, r6, pc} - thumb_func_end func_0202ff64 + thumb_func_end _ZN14OverlayManager15LoadIfNotLoadedEjj - .global func_0202ff84 - thumb_func_start func_0202ff84 -func_0202ff84: ; 0x0202ff84 + .global _ZN14OverlayManager6UnloadEj + thumb_func_start _ZN14OverlayManager6UnloadEj +_ZN14OverlayManager6UnloadEj: ; 0x0202ff84 push {r3, r4, r5, lr} add r5, r0, #0 lsl r4, r1, #2 @@ -64423,7 +64423,7 @@ func_0202ff84: ; 0x0202ff84 _0202ffa0: pop {r3, r4, r5, pc} .align 2, 0 - thumb_func_end func_0202ff84 + thumb_func_end _ZN14OverlayManager6UnloadEj .global func_0202ffa4 thumb_func_start func_0202ffa4 @@ -64437,11 +64437,11 @@ func_0202ffa4: ; 0x0202ffa4 ldr r2, [r4, #4] mov r1, #1 add r6, r0, #0 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj ldr r2, [r4, #8] add r0, r6, #0 mov r1, #2 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj cmp r5, #5 bne _0202ffd0 ldr r0, _0202fffc ; =data_027e0ce0 @@ -64460,11 +64460,11 @@ _0202ffe0: ldr r2, [r4, #0xc] add r0, r6, #0 mov r1, #3 - bl func_0202ff44 + bl _ZN14OverlayManager4LoadEjj add r0, r6, #0 mov r1, #0xc add r2, r7, #0 - bl func_0202ff44 + bl _ZN14OverlayManager4LoadEjj pop {r3, r4, r5, r6, r7, pc} nop thumb_func_end func_0202ffa4 @@ -64479,10 +64479,10 @@ func_02030008: ; 0x02030008 push {r4, lr} add r4, r0, #0 mov r1, #0xc - bl func_0202ff84 + bl _ZN14OverlayManager6UnloadEj add r0, r4, #0 mov r1, #3 - bl func_0202ff84 + bl _ZN14OverlayManager6UnloadEj ldr r1, [r4, #8] ldr r0, _02030034 ; =0x00000007 cmp r1, r0 @@ -64491,7 +64491,7 @@ func_02030008: ; 0x02030008 blx func_ov07_021028a0 add r0, r4, #0 mov r1, #2 - bl func_0202ff84 + bl _ZN14OverlayManager6UnloadEj _02030030: pop {r4, pc} nop @@ -71742,7 +71742,7 @@ _02034f00: .word data_027e077c arm_func_start func_02034f04 func_02034f04: ; 0x02034f04 stmdb sp!, {r3, r4, r5, lr} - ldr r2, _02034f9c ; =data_027e0900 + ldr r2, _02034f9c ; =gOverlayManager ldr r3, _02034fa0 ; =0x0000000e ldr r2, [r2, #0x10] mov r5, r0 @@ -71784,7 +71784,7 @@ _02034f90: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_02034f04 -_02034f9c: .word data_027e0900 +_02034f9c: .word gOverlayManager _02034fa0: .word 0x0000000e _02034fa4: .word data_027e103c _02034fa8: .word data_027e077c @@ -84733,7 +84733,7 @@ func_0203e8a0: ; 0x0203e8a0 add r2, r1, #0 str r3, [sp, #4] bl func_020304d4 - ldr r5, _0203e900 ; =data_027e0900 + ldr r5, _0203e900 ; =gOverlayManager ldr r7, _0203e904 ; =data_02058090 mov r4, #3 mov r6, #0 @@ -84772,7 +84772,7 @@ _0203e8ee: .align 2, 0 thumb_func_end func_0203e8a0 _0203e8fc: .word data_02058088 -_0203e900: .word data_027e0900 +_0203e900: .word gOverlayManager _0203e904: .word data_02058090 _0203e908: .word data_02058094 @@ -110869,14 +110869,14 @@ _02050d98: .word data_027e08fc arm_func_start func_02050d9c func_02050d9c: ; 0x02050d9c ldr ip, _02050db0 ; =func_020078f4 - ldr r1, _02050db4 ; =data_027e0900 + ldr r1, _02050db4 ; =gOverlayManager mvn r0, #0 mov r2, #0x34 bx ip .align 2, 0 arm_func_end func_02050d9c _02050db0: .word func_020078f4 -_02050db4: .word data_027e0900 +_02050db4: .word gOverlayManager .global func_02050db8 arm_func_start func_02050db8 diff --git a/asm/ov00/include/ov00_020773c0.inc b/asm/ov00/include/ov00_020773c0.inc index 0b302b3d..8f76764a 100644 --- a/asm/ov00/include/ov00_020773c0.inc +++ b/asm/ov00/include/ov00_020773c0.inc @@ -100,10 +100,10 @@ .extern func_0200e880 .extern func_0200f014 .extern func_0200e8f8 -.extern func_0202ff64 +.extern _ZN14OverlayManager15LoadIfNotLoadedEjj .extern func_ov04_02100b6c .extern _ZN9SysObjectdlEPv -.extern data_027e0900 +.extern gOverlayManager .extern data_027e0d38 .extern func_ov00_020a5e9c .extern func_ov00_0209d738 diff --git a/asm/ov00/include/ov00_02078e00.inc b/asm/ov00/include/ov00_02078e00.inc index 45bce0b1..be2141f9 100644 --- a/asm/ov00/include/ov00_02078e00.inc +++ b/asm/ov00/include/ov00_02078e00.inc @@ -15,7 +15,7 @@ .extern func_02016fcc .extern data_027e0c54 .extern data_027e0d38 -.extern data_027e0900 +.extern gOverlayManager .extern data_020691a0 .extern func_ov03_020f4b7c .extern data_027e1054 @@ -53,7 +53,7 @@ .extern func_ov00_0208306c .extern data_027e0e28 .extern data_027e0d38 -.extern data_027e0900 +.extern gOverlayManager .extern data_027e0e60 .extern func_ov00_02079e04 .extern func_ov00_0207bc48 diff --git a/asm/ov00/include/ov00_02079d28.inc b/asm/ov00/include/ov00_02079d28.inc index 653435e4..57b9bcab 100644 --- a/asm/ov00/include/ov00_02079d28.inc +++ b/asm/ov00/include/ov00_02079d28.inc @@ -155,10 +155,10 @@ .extern data_027e0e2c .extern data_027e0c54 .extern data_027e0618 -.extern func_0202ff64 +.extern _ZN14OverlayManager15LoadIfNotLoadedEjj .extern func_ov04_02101188 -.extern func_0202ff64 -.extern data_027e0900 +.extern _ZN14OverlayManager15LoadIfNotLoadedEjj +.extern gOverlayManager .extern func_ov04_02100eb0 .extern func_ov40_02183dac .extern func_ov05_02100e0c @@ -208,7 +208,7 @@ .extern func_02042b40 .extern func_02042bfc .extern func_ov03_020f3c28 -.extern data_027e0900 +.extern gOverlayManager .extern func_0204f754 .extern func_0204f754 .extern func_0204f754 diff --git a/asm/ov00/include/ov00_020a03e4.inc b/asm/ov00/include/ov00_020a03e4.inc index 215d92c5..a6ea4370 100644 --- a/asm/ov00/include/ov00_020a03e4.inc +++ b/asm/ov00/include/ov00_020a03e4.inc @@ -355,7 +355,7 @@ .extern func_0203010c .extern data_027e0ce0 .extern data_027e0d38 -.extern data_027e0900 +.extern gOverlayManager .extern func_ov29_0216d918 .extern data_02057840 .extern func_0202d5dc @@ -540,8 +540,8 @@ .extern func_ov00_02079e68 .extern func_02019534 .extern data_ov00_020e9360 -.extern func_ov00_020ad414 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory16GetEquippedFairyEv +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_0207c5d4 .extern gInventory .extern data_027e0e58 @@ -863,8 +863,8 @@ .extern data_027e0fe4 .extern func_ov00_020af050 .extern data_027e0fb8 -.extern func_ov00_020ad414 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory16GetEquippedFairyEv +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_020ba458 .extern gInventory .extern func_01ff9bf8 diff --git a/asm/ov00/include/ov00_020ae7a4.inc b/asm/ov00/include/ov00_020ae7a4.inc index d2d62be6..662ef173 100644 --- a/asm/ov00/include/ov00_020ae7a4.inc +++ b/asm/ov00/include/ov00_020ae7a4.inc @@ -86,7 +86,7 @@ .extern func_ov00_02078b40 .extern func_ov00_020ad790 .extern func_ov00_020ad790 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern data_027e0f74 .extern data_027e0c68 .extern data_027e0d38 @@ -147,8 +147,8 @@ .extern data_027e0f90 .extern data_027e0e60 .extern func_ov00_020c3674 -.extern func_ov00_020ad414 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory16GetEquippedFairyEv +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_020bad18 .extern func_01ff9ec0 .extern func_ov00_020c2a0c @@ -168,8 +168,8 @@ .extern data_027e0fcc .extern data_027e0fcc .extern func_ov00_02078b40 -.extern func_ov00_020ad414 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory16GetEquippedFairyEv +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_020baca8 .extern data_027e0d38 .extern gInventory @@ -179,8 +179,8 @@ .extern func_01ff991c .extern func_01ff9c2c .extern func_01ff9e64 -.extern func_ov00_020ad414 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory16GetEquippedFairyEv +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_020ba204 .extern data_027e0f64 .extern gInventory @@ -217,7 +217,7 @@ .extern data_027e0f64 .extern data_02050f54 .extern func_ov00_020ad790 -.extern func_ov00_020ae390 +.extern _ZNK9Inventory15GetEquippedItemEv .extern func_ov00_020cf330 .extern func_01ff9cec .extern func_01ffa0f4 diff --git a/asm/ov00/include/ov00_020b4940.inc b/asm/ov00/include/ov00_020b4940.inc index 9099c36a..bbba581f 100644 --- a/asm/ov00/include/ov00_020b4940.inc +++ b/asm/ov00/include/ov00_020b4940.inc @@ -243,10 +243,10 @@ .extern func_ov00_02097750 .extern func_ov00_020a81dc .extern func_ov00_020abd84 -.extern func_ov00_020ad414 -.extern func_ov00_020ad428 -.extern func_ov00_020ad414 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory16GetEquippedFairyEv +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory16GetEquippedFairyEv +.extern _ZNK9Inventory8GetFairyEj .extern data_027e0618 .extern data_027e0f90 .extern data_027e0f64 @@ -302,42 +302,42 @@ .extern data_027e0fc8 .extern data_ov00_020e9c88 .extern data_ov00_020e9370 -.extern func_ov00_020ad414 +.extern _ZNK9Inventory16GetEquippedFairyEv .extern gInventory .extern func_01ff9e64 .extern func_01ffbf5c .extern func_ov00_02081f4c .extern data_027e0e60 .extern func_ov00_02081f4c -.extern func_ov00_020ad414 +.extern _ZNK9Inventory16GetEquippedFairyEv .extern gInventory .extern func_01ff9bc4 .extern data_027e0f90 -.extern func_ov00_020ad414 +.extern _ZNK9Inventory16GetEquippedFairyEv .extern gInventory .extern func_0202af4c .extern data_027e0fac .extern func_0202af4c .extern data_027e0fac .extern _ZN9Inventory7HasItemEj -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern _ZN9Inventory7HasItemEj -.extern func_ov00_020ad428 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory8GetFairyEj .extern _ZN9Inventory7HasItemEj -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern _ZN9Inventory7HasItemEj -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern _ZN9Inventory7HasItemEj -.extern func_ov00_020ad428 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory8GetFairyEj .extern _ZN9Inventory7HasItemEj -.extern func_ov00_020ad428 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory8GetFairyEj .extern _ZN9Inventory7HasItemEj -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern _ZN9Inventory7HasItemEj -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern gInventory .extern func_ov00_02097bbc .extern func_020368f4 @@ -369,9 +369,9 @@ .extern func_ov00_02083ee0 .extern data_ov00_020e8b08 .extern data_027e0e60 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern gInventory -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern gInventory .extern func_ov00_02081f4c .extern _ZN9SysObjectdlEPv @@ -465,7 +465,7 @@ .extern func_ov05_0210eba4 .extern func_ov00_020a81dc .extern func_ov00_020a7b8c -.extern data_027e0900 +.extern gOverlayManager .extern data_027e0fd4 .extern data_027e0fe4 .extern data_027e0fd0 diff --git a/asm/ov00/include/ov00_020c43c8.inc b/asm/ov00/include/ov00_020c43c8.inc index a0f1e3fb..9c9aa54a 100644 --- a/asm/ov00/include/ov00_020c43c8.inc +++ b/asm/ov00/include/ov00_020c43c8.inc @@ -21,7 +21,7 @@ .extern data_ov00_020e836c .extern data_ov00_020e837c .extern data_027e0d38 -.extern data_027e0900 +.extern gOverlayManager .extern func_ov29_0216d918 .extern data_ov00_020e8384 .extern func_01ffa8d4 diff --git a/asm/ov00/include/ov00_020c9a68.inc b/asm/ov00/include/ov00_020c9a68.inc index 81743eb4..a0980af9 100644 --- a/asm/ov00/include/ov00_020c9a68.inc +++ b/asm/ov00/include/ov00_020c9a68.inc @@ -424,7 +424,7 @@ .extern func_ov03_020fa5d8 .extern func_ov03_020fa644 .extern func_ov03_020fa660 -.extern data_027e0900 +.extern gOverlayManager .extern func_ov00_020a5e9c .extern func_ov00_02097738 .extern func_02036798 diff --git a/asm/ov00/include/ov00_020d1870.inc b/asm/ov00/include/ov00_020d1870.inc index 34610c61..72a8c979 100644 --- a/asm/ov00/include/ov00_020d1870.inc +++ b/asm/ov00/include/ov00_020d1870.inc @@ -12,10 +12,10 @@ .extern func_ov00_02087338 .extern func_ov00_02087ef0 .extern func_ov00_02087338 -.extern func_ov00_020ad428 -.extern func_ov00_020ad428 -.extern func_ov00_020ad428 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory8GetFairyEj .extern data_027e0fe4 .extern data_027e0f64 .extern gInventory @@ -49,12 +49,12 @@ .extern func_ov00_020bc320 .extern func_ov00_020bc398 .extern func_ov00_020c3674 -.extern func_ov00_020ad428 -.extern func_ov00_020ad428 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory8GetFairyEj +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_02089a2c .extern func_ov00_02089068 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_020ba53c .extern func_ov00_020ba4e4 .extern func_ov00_020bc2d4 @@ -246,16 +246,16 @@ .extern _ZN9SysObjectnwEmPjj .extern data_027e0fe0 .extern func_0202bbbc -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_020c3180 .extern gInventory -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern gInventory .extern func_ov00_0209a4f4 .extern func_ov00_02097810 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern func_ov00_0209a508 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern data_027e0f74 .extern gInventory .extern func_ov00_02097bcc @@ -263,7 +263,7 @@ .extern data_027e0f74 .extern func_ov00_020bcf50 .extern data_027e0fc8 -.extern func_ov00_020ad428 +.extern _ZNK9Inventory8GetFairyEj .extern gInventory .extern _ZN9SysObjectdlEPv .extern func_ov00_020beba8 diff --git a/asm/ov00/inventory/Inventory_TickEquipItem.inc b/asm/ov00/inventory/Inventory_TickEquipItem.inc new file mode 100644 index 00000000..672b205b --- /dev/null +++ b/asm/ov00/inventory/Inventory_TickEquipItem.inc @@ -0,0 +1,60 @@ +func_ov00_020ad434: // 0x020ad434 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl _ZNK9Inventory15GetEquippedItemEv + ldrh r1, [r5, #0x20] + mov r4, r0 + cmp r1, #0 + beq _020ad4b4 + sub r0, r1, #1 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x20] + cmp r0, #0 + bne _020ad4b4 + mvn r0, #0 + cmp r4, r0 + beq _020ad4b4 + lda r0, data_027e0d38 + ldr r0, [r0] + ldr r0, [r0, #0x14] + cmp r0, #1 + beq _020ad4b4 + lda r0, gOverlayManager + mov r1, r4 + bl _ZN14OverlayManager13LoadEquipItemEj + lda r0, gPlayerAnimHandler + mov r1, r4 + ldr r0, [r0] + bl LoadEquipItemModel + ldr r0, [r5, #0xac] + ldr r0, [r0, r4, lsl #2] + ldr r1, [r0] + ldr r1, [r1] + dcd 0xe12fff31 // blx r1 +_020ad4b4: + ldr r0, [r5, #0xac] + ldr r0, [r0] + ldr r1, [r0] + ldr r1, [r1, #0x30] + dcd 0xe12fff31 // blx r1 + ldr r0, [r5, #0xac] + ldr r0, [r0, #4] + ldr r1, [r0] + ldr r1, [r1, #0x30] + dcd 0xe12fff31 // blx r1 + lda r0, data_027e0d38 + ldr r0, [r0] + ldr r0, [r0, #0x14] + cmp r0, #1 + mvnne r0, #0 + cmpne r4, r0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrh r0, [r5, #0x20] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0xac] + ldr r0, [r0, r4, lsl #2] + ldr r1, [r0] + ldr r1, [r1, #0x30] + dcd 0xe12fff31 // blx r1 + ldmia sp!, {r3, r4, r5, pc} diff --git a/asm/ov00/inventory/inventory.s b/asm/ov00/inventory/inventory.s index b2e408ec..f6787dfd 100644 --- a/asm/ov00/inventory/inventory.s +++ b/asm/ov00/inventory/inventory.s @@ -3,92 +3,6 @@ .text - .global func_ov00_020ad414 - arm_func_start func_ov00_020ad414 -func_ov00_020ad414: ; 0x020ad414 - ldr r0, [r0, #0x10] - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - bx lr - arm_func_end func_ov00_020ad414 - - .global func_ov00_020ad428 - arm_func_start func_ov00_020ad428 -func_ov00_020ad428: ; 0x020ad428 - add r0, r0, r1, lsl #2 - ldr r0, [r0, #0x14] - bx lr - arm_func_end func_ov00_020ad428 - - .global func_ov00_020ad434 - arm_func_start func_ov00_020ad434 -func_ov00_020ad434: ; 0x020ad434 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl func_ov00_020ae390 - ldrh r1, [r5, #0x20] - mov r4, r0 - cmp r1, #0 - beq _020ad4b4 - sub r0, r1, #1 - strh r0, [r5, #0x20] - ldrh r0, [r5, #0x20] - cmp r0, #0 - bne _020ad4b4 - mvn r0, #0 - cmp r4, r0 - beq _020ad4b4 - ldr r0, _020ad51c ; =data_027e0d38 - ldr r0, [r0] - ldr r0, [r0, #0x14] - cmp r0, #1 - beq _020ad4b4 - ldr r0, _020ad520 ; =data_027e0900 - mov r1, r4 - blx func_ov03_020faab8 - ldr r0, _020ad524 ; =data_ov00_020ee57c - mov r1, r4 - ldr r0, [r0] - bl func_ov00_020be70c - ldr r0, [r5, #0xac] - ldr r0, [r0, r4, lsl #2] - ldr r1, [r0] - ldr r1, [r1] - blx r1 -_020ad4b4: - ldr r0, [r5, #0xac] - ldr r0, [r0] - ldr r1, [r0] - ldr r1, [r1, #0x30] - blx r1 - ldr r0, [r5, #0xac] - ldr r0, [r0, #4] - ldr r1, [r0] - ldr r1, [r1, #0x30] - blx r1 - ldr r0, _020ad51c ; =data_027e0d38 - ldr r0, [r0] - ldr r0, [r0, #0x14] - cmp r0, #1 - mvnne r0, #0 - cmpne r4, r0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r0, [r5, #0x20] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xac] - ldr r0, [r0, r4, lsl #2] - ldr r1, [r0] - ldr r1, [r1, #0x30] - blx r1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 - arm_func_end func_ov00_020ad434 -_020ad51c: .word data_027e0d38 -_020ad520: .word data_027e0900 -_020ad524: .word data_ov00_020ee57c - .global func_ov00_020ad528 arm_func_start func_ov00_020ad528 func_ov00_020ad528: ; 0x020ad528 @@ -204,7 +118,7 @@ _020ad620: cmp r0, #1 ldmeqia sp!, {r3, r4, r5, pc} mov r0, r5 - bl func_ov00_020ae390 + bl _ZNK9Inventory15GetEquippedItemEv mvn r1, #0 cmp r0, r1 ldmeqia sp!, {r3, r4, r5, pc} @@ -342,7 +256,7 @@ _020ad7c0: cmp r0, #1 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _020ad8cc ; =data_027e0900 + ldr r0, _020ad8cc ; =gOverlayManager ldr r1, _020ad8d0 ; =0x0000001d ldr r0, [r0, #0x18] cmp r0, r1 @@ -411,7 +325,7 @@ _020ad8bc: arm_func_end func_ov00_020ad790 _020ad8c4: .word data_027e0d38 _020ad8c8: .word data_027e10a4 -_020ad8cc: .word data_027e0900 +_020ad8cc: .word gOverlayManager _020ad8d0: .word 0x0000001d _020ad8d4: .word data_ov29_0217a4ac _020ad8d8: .word data_027e0e60 @@ -630,7 +544,7 @@ func_ov00_020ad9e8: ; 0x020ad9e8 mov r4, r1 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, pc} - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv cmp r0, #0 bne _020ada24 ldrb r0, [r5, #0x14d] @@ -639,7 +553,7 @@ func_ov00_020ad9e8: ; 0x020ad9e8 ldmneia sp!, {r3, r4, r5, pc} _020ada24: mov r0, r5 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv cmp r4, r0 movne r0, #0 ldmneia sp!, {r3, r4, r5, pc} @@ -1912,16 +1826,16 @@ _020ae382: thumb_func_end func_ov00_020ae368 _020ae38c: .word data_027e0e60 - .global func_ov00_020ae390 - arm_func_start func_ov00_020ae390 -func_ov00_020ae390: ; 0x020ae390 + .global _ZNK9Inventory15GetEquippedItemEv + arm_func_start _ZNK9Inventory15GetEquippedItemEv +_ZNK9Inventory15GetEquippedItemEv: ; 0x020ae390 ldr r2, [r0, #8] mvn r1, #0 cmp r2, r1 ldreq r2, [r0] mov r0, r2 bx lr - arm_func_end func_ov00_020ae390 + arm_func_end _ZNK9Inventory15GetEquippedItemEv .global func_ov00_020ae3a8 arm_func_start func_ov00_020ae3a8 diff --git a/asm/ov00/ov00_020773c0.s b/asm/ov00/ov00_020773c0.s index 1b36c96f..f23919a6 100644 --- a/asm/ov00/ov00_020773c0.s +++ b/asm/ov00/ov00_020773c0.s @@ -3312,10 +3312,10 @@ _02078b04: thumb_func_start func_ov00_02078b0c func_ov00_02078b0c: ; 0x02078b0c push {r4, lr} - ldr r0, _02078b34 ; =data_027e0900 + ldr r0, _02078b34 ; =gOverlayManager ldr r2, _02078b38 ; =0x00000004 mov r1, #2 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj ldr r0, _02078b3c ; =data_027e0d38 ldr r4, [r0] cmp r4, #0 @@ -3331,7 +3331,7 @@ _02078b2c: pop {r4, pc} .align 2, 0 thumb_func_end func_ov00_02078b0c -_02078b34: .word data_027e0900 +_02078b34: .word gOverlayManager _02078b38: .word 0x00000004 _02078b3c: .word data_027e0d38 diff --git a/asm/ov00/ov00_02078e00.s b/asm/ov00/ov00_02078e00.s index 53b8116d..828125b2 100644 --- a/asm/ov00/ov00_02078e00.s +++ b/asm/ov00/ov00_02078e00.s @@ -61,7 +61,7 @@ _02078e5e: blx func_02047280 cmp r0, #0 bne _02078e7e - ldr r0, _02078f2c ; =data_027e0900 + ldr r0, _02078f2c ; =gOverlayManager ldr r1, [r0, #4] ldr r0, _02078f30 ; =0x00000002 cmp r1, r0 @@ -149,7 +149,7 @@ _02078f1e: thumb_func_end func_ov00_02078e00 _02078f24: .word data_027e0c54 _02078f28: .word data_027e0d38 -_02078f2c: .word data_027e0900 +_02078f2c: .word gOverlayManager _02078f30: .word 0x00000002 _02078f34: .word data_ov00_020d878c _02078f38: .word data_ov00_020e1fcc @@ -617,7 +617,7 @@ _020794c8: ldrne r0, [sb] cmpne r0, #0 beq _0207955c - ldr r1, _02079674 ; =data_027e0900 + ldr r1, _02079674 ; =gOverlayManager ldr r2, _02079678 ; =0x00000003 ldr r1, [r1, #4] cmp r1, r2 @@ -719,7 +719,7 @@ _02079638: arm_func_end func_ov00_02079470 _0207966c: .word data_027e0e28 _02079670: .word data_027e0d38 -_02079674: .word data_027e0900 +_02079674: .word gOverlayManager _02079678: .word 0x00000003 _0207967c: .word data_027e0e60 diff --git a/asm/ov00/ov00_02079d28.s b/asm/ov00/ov00_02079d28.s index 60286e9a..81d25c47 100644 --- a/asm/ov00/ov00_02079d28.s +++ b/asm/ov00/ov00_02079d28.s @@ -2723,20 +2723,20 @@ _0207b52c: .word 0x04000040 func_ov00_0207b530: ; 0x0207b530 push {r4, lr} add r4, r0, #0 - ldr r0, _0207b550 ; =data_027e0900 + ldr r0, _0207b550 ; =gOverlayManager ldr r2, _0207b554 ; =0x00000004 mov r1, #2 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj add r0, r4, #0 bl func_ov04_02101188 - ldr r0, _0207b550 ; =data_027e0900 + ldr r0, _0207b550 ; =gOverlayManager ldr r2, _0207b558 ; =0x00000005 mov r1, #2 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj pop {r4, pc} .align 2, 0 thumb_func_end func_ov00_0207b530 -_0207b550: .word data_027e0900 +_0207b550: .word gOverlayManager _0207b554: .word 0x00000004 _0207b558: .word 0x00000005 @@ -3310,7 +3310,7 @@ func_ov00_0207ba90: ; 0x0207ba90 func_ov00_0207ba94: ; 0x0207ba94 push {r3, lr} add r2, r0, #0 - ldr r0, _0207baac ; =data_027e0900 + ldr r0, _0207baac ; =gOverlayManager ldr r3, [r0, #4] ldr r0, _0207bab0 ; =0x00000003 cmp r3, r0 @@ -3321,7 +3321,7 @@ _0207baa8: pop {r3, pc} nop thumb_func_end func_ov00_0207ba94 -_0207baac: .word data_027e0900 +_0207baac: .word gOverlayManager _0207bab0: .word 0x00000003 .global func_ov00_0207bab4 diff --git a/asm/ov00/ov00_020a03e4.s b/asm/ov00/ov00_020a03e4.s index f40feabb..b20d24f7 100644 --- a/asm/ov00/ov00_020a03e4.s +++ b/asm/ov00/ov00_020a03e4.s @@ -6936,7 +6936,7 @@ _020a5b90: ldr r0, [r0, #0x14] cmp r0, #1 beq _020a5bc8 - ldr r0, _020a5cbc ; =data_027e0900 + ldr r0, _020a5cbc ; =gOverlayManager ldr r1, _020a5cc0 ; =0x0000001d ldr r0, [r0, #0x18] cmp r0, r1 @@ -7009,7 +7009,7 @@ _020a5c5c: arm_func_end func_ov00_020a5b38 _020a5cb4: .word data_027e0ce0 _020a5cb8: .word data_027e0d38 -_020a5cbc: .word data_027e0900 +_020a5cbc: .word gOverlayManager _020a5cc0: .word 0x0000001d _020a5cc4: .word func_ov29_0216d918 _020a5cc8: .word data_02057840 @@ -9495,10 +9495,10 @@ func_ov00_020a7b10: ; 0x020a7b10 strb r4, [r6, #0x11] ldr r5, [r0] mov r0, r5 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r5 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r0, #0 ldrneb r1, [r6, #0x11] strneb r1, [r0, #0x11a] @@ -13719,10 +13719,10 @@ func_ov00_020aa818: ; 0x020aa818 ldr r0, _020aa840 ; =gInventory ldr r4, [r0] mov r0, r4 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r4 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj bl func_ov00_020ba458 ldmia sp!, {r4, pc} .align 2, 0 diff --git a/asm/ov00/ov00_020ae7a4.s b/asm/ov00/ov00_020ae7a4.s index c7c83219..a48b7ec7 100644 --- a/asm/ov00/ov00_020ae7a4.s +++ b/asm/ov00/ov00_020ae7a4.s @@ -868,7 +868,7 @@ _020af1f8: ldr r0, _020af288 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r0, #0 beq _020af268 ldr r1, _020af294 ; =data_027e0f94 @@ -1577,10 +1577,10 @@ func_ov00_020afb6c: ; 0x020afb6c mov r5, r0 ldr r6, [r1] mov r0, r6 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r6 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r5, #0 ldreqb r1, [sb, #0x81] cmpeq r1, #0 @@ -1882,10 +1882,10 @@ func_ov00_020aff90: ; 0x020aff90 ldr r0, _020affe8 ; =gInventory ldr r4, [r0] mov r0, r4 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r4 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r0, #0 ldmeqia sp!, {r4, r5, r6, pc} mov r1, r6 @@ -2022,10 +2022,10 @@ func_ov00_020b014c: ; 0x020b014c ldr r0, _020b0218 ; =gInventory ldr r6, [r0] mov r0, r6 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r6 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj movs r6, r0 addeq sp, sp, #0x10 ldmeqia sp!, {r4, r5, r6, pc} @@ -2725,7 +2725,7 @@ func_ov00_020b0b0c: ; 0x020b0b0c beq _020b0b80 ldr r0, _020b0de0 ; =gInventory ldr r0, [r0] - bl func_ov00_020ae390 + bl _ZNK9Inventory15GetEquippedItemEv ldr r1, _020b0de4 ; =data_027e103c str r0, [r4] ldr r0, [r1] diff --git a/asm/ov00/ov00_020b4940.s b/asm/ov00/ov00_020b4940.s index 0741c509..6a4c6d0e 100644 --- a/asm/ov00/ov00_020b4940.s +++ b/asm/ov00/ov00_020b4940.s @@ -5084,7 +5084,7 @@ _020b8978: bne _020b8b70 ldr r0, _020b8b88 ; =gInventory ldr r0, [r0] - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r4, r0 mov r0, sl ldr r1, [r0] @@ -5135,7 +5135,7 @@ _020b8a68: beq _020b8ad4 ldr r0, [r4] mov r1, r8 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r2, [r0, #8] mov r1, r6 _020b8a94: @@ -5163,7 +5163,7 @@ _020b8ad4: _020b8ae0: ldr r0, _020b8b88 ; =gInventory ldr r0, [r0] - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r4, r0 mov r0, sl ldr r1, [r0] @@ -5181,7 +5181,7 @@ _020b8ae0: ldr r0, _020b8b88 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldrb r0, [r0, #0x28e] cmp r0, #0 beq _020b8b54 @@ -6803,7 +6803,7 @@ func_ov00_020ba170: ; 0x020ba170 bne _020ba1c4 ldr r0, _020ba200 ; =gInventory ldr r0, [r0] - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r4, r0 mov r0, r5 ldr r1, [r0] @@ -6970,7 +6970,7 @@ func_ov00_020ba3b4: ; 0x020ba3b4 ldr r1, _020ba410 ; =gInventory mov r5, r0 ldr r0, [r1] - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r4, r0 mov r0, r5 ldr r1, [r0] @@ -7025,7 +7025,7 @@ func_ov00_020ba458: ; 0x020ba458 ldr r1, _020ba4e0 ; =gInventory mov r5, r0 ldr r0, [r1] - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r4, r0 mov r0, r5 ldr r1, [r0] @@ -7176,7 +7176,7 @@ _020ba618: ldr r0, _020ba870 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x24c] ldr r0, [r0, #0xc] @@ -7191,7 +7191,7 @@ _020ba650: ldr r0, _020ba870 ; =gInventory mov r1, #2 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x254] ldr r0, [r0, #0xc] @@ -7200,7 +7200,7 @@ _020ba688: ldr r0, _020ba870 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x25c] ldr r1, [r0, #0xc] @@ -7217,7 +7217,7 @@ _020ba6b0: ldr r0, _020ba870 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x24c] ldr r0, [r0, #0xc] @@ -7235,7 +7235,7 @@ _020ba6f0: ldr r0, _020ba870 ; =gInventory mov r1, #2 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x254] ldr r0, [r0, #0xc] @@ -7253,7 +7253,7 @@ _020ba730: ldr r0, _020ba870 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x24c] ldr r0, [r0, #0xc] @@ -7262,7 +7262,7 @@ _020ba768: ldr r0, _020ba870 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x25c] ldr r1, [r0, #0xc] @@ -7279,7 +7279,7 @@ _020ba790: ldr r0, _020ba870 ; =gInventory mov r1, #2 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x254] ldr r0, [r0, #0xc] @@ -7288,7 +7288,7 @@ _020ba7c8: ldr r0, _020ba870 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x25c] ldr r1, [r0, #0xc] @@ -7305,7 +7305,7 @@ _020ba7f0: ldr r0, _020ba870 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x24c] ldr r0, [r0, #0xc] @@ -7320,7 +7320,7 @@ _020ba828: ldr r0, _020ba870 ; =gInventory mov r1, #2 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #8] str r1, [r4, #0x254] ldr r0, [r0, #0xc] @@ -7931,7 +7931,7 @@ func_ov00_020bb0ac: ; 0x020bb0ac _020bb0bc: ldr r0, [r4] mov r1, r6 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj add r6, r6, #1 strb r5, [r0, #0x290] cmp r6, #3 @@ -7951,7 +7951,7 @@ func_ov00_020bb0e0: ; 0x020bb0e0 _020bb0f0: ldr r0, [r4] mov r1, r6 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj add r6, r6, #1 strb r5, [r0, #0x290] cmp r6, #3 @@ -9185,7 +9185,7 @@ _020bbd7c: .word data_027e0fd4 arm_func_start func_ov00_020bbd80 func_ov00_020bbd80: ; 0x020bbd80 stmdb sp!, {r3, r4, r5, lr} - ldr r2, _020bbe80 ; =data_027e0900 + ldr r2, _020bbe80 ; =gOverlayManager ldr r3, _020bbe84 ; =0x00000005 ldr r2, [r2, #8] mov r5, r0 @@ -9255,7 +9255,7 @@ _020bbe78: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_ov00_020bbd80 -_020bbe80: .word data_027e0900 +_020bbe80: .word gOverlayManager _020bbe84: .word 0x00000005 _020bbe88: .word data_027e0fd4 _020bbe8c: .word data_027e0fe4 @@ -12380,7 +12380,7 @@ func_ov00_020be464: ; 0x020be464 cmpne r3, lr beq _020be4bc mov r1, r6 - bl func_ov00_020be70c + bl LoadEquipItemModel ldmia sp!, {r4, r5, r6, pc} _020be4bc: mvn r1, #1 @@ -12388,7 +12388,7 @@ _020be4bc: cmpne r3, r1 ldmneia sp!, {r4, r5, r6, pc} mov r1, r6 - bl func_ov00_020be70c + bl LoadEquipItemModel ldmia sp!, {r4, r5, r6, pc} .align 2, 0 arm_func_end func_ov00_020be464 @@ -12535,7 +12535,7 @@ func_ov00_020be674: ; 0x020be674 ldmeqia sp!, {r3, r4, r5, r6, r7, pc} mov r0, r7 bl func_ov00_020c0d68 - ldr r1, _020be704 ; =data_ov00_020ee57c + ldr r1, _020be704 ; =gPlayerAnimHandler mov r5, r0 ldr r0, [r1, #4] tst r0, #1 @@ -12556,12 +12556,12 @@ func_ov00_020be674: ; 0x020be674 ldmia sp!, {r3, r4, r5, r6, r7, pc} .align 2, 0 arm_func_end func_ov00_020be674 -_020be704: .word data_ov00_020ee57c +_020be704: .word gPlayerAnimHandler _020be708: .word data_ov00_020dca3c - .global func_ov00_020be70c - arm_func_start func_ov00_020be70c -func_ov00_020be70c: ; 0x020be70c + .global LoadEquipItemModel + arm_func_start LoadEquipItemModel +LoadEquipItemModel: ; 0x020be70c stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #0x84 ldr r2, _020be7d0 ; =data_ov00_020e6e08 @@ -12613,7 +12613,7 @@ _020be73c: add sp, sp, #0x84 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 - arm_func_end func_ov00_020be70c + arm_func_end LoadEquipItemModel _020be7d0: .word data_ov00_020e6e08 _020be7d4: .word data_ov00_020e6dfc _020be7d8: .word 0x000051b0 @@ -23188,8 +23188,8 @@ data_ov00_020ee574: .global data_ov00_020ee578 data_ov00_020ee578: .space 0x4 - .global data_ov00_020ee57c -data_ov00_020ee57c: + .global gPlayerAnimHandler +gPlayerAnimHandler: .space 0x4 .global data_ov00_020ee580 data_ov00_020ee580: diff --git a/asm/ov00/ov00_020c43c8.s b/asm/ov00/ov00_020c43c8.s index 4224be8e..c2016ece 100644 --- a/asm/ov00/ov00_020c43c8.s +++ b/asm/ov00/ov00_020c43c8.s @@ -81,7 +81,7 @@ func_ov00_020c43c8: ; 0x020c43c8 ldrne r0, [r0, #0x14] cmpne r0, #1 beq _020c4508 - ldr r0, _020c4578 ; =data_027e0900 + ldr r0, _020c4578 ; =gOverlayManager ldr r1, _020c457c ; =0x0000001d ldr r0, [r0, #0x18] cmp r0, r1 @@ -118,7 +118,7 @@ _020c4568: .word data_027e0ce0 _020c456c: .word data_ov00_020e836c _020c4570: .word data_ov00_020e837c _020c4574: .word data_027e0d38 -_020c4578: .word data_027e0900 +_020c4578: .word gOverlayManager _020c457c: .word 0x0000001d _020c4580: .word func_ov29_0216d918 _020c4584: .word data_ov00_020e8384 diff --git a/asm/ov00/ov00_020c9a68.s b/asm/ov00/ov00_020c9a68.s index e0f56c24..74d632f4 100644 --- a/asm/ov00/ov00_020c9a68.s +++ b/asm/ov00/ov00_020c9a68.s @@ -8141,7 +8141,7 @@ func_ov00_020cfc9c: ; 0x020cfc9c bl func_ov00_020cf488 cmp r0, #0 ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _020cfce4 ; =data_027e0900 + ldr r0, _020cfce4 ; =gOverlayManager ldr r1, _020cfce8 ; =0x00000003 ldr r0, [r0, #4] cmp r1, r0 @@ -8154,7 +8154,7 @@ func_ov00_020cfc9c: ; 0x020cfc9c ldmia sp!, {r4, r5, r6, pc} .align 2, 0 arm_func_end func_ov00_020cfc9c -_020cfce4: .word data_027e0900 +_020cfce4: .word gOverlayManager _020cfce8: .word 0x00000003 .global func_ov00_020cfcec diff --git a/asm/ov00/ov00_020d1870.s b/asm/ov00/ov00_020d1870.s index 4d9d93f2..393bfb01 100644 --- a/asm/ov00/ov00_020d1870.s +++ b/asm/ov00/ov00_020d1870.s @@ -256,7 +256,7 @@ _020d1cdc: ldr r0, _020d1da0 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj add r0, r0, #0x200 mov r1, #0 strh r1, [r0, #0x8a] @@ -268,7 +268,7 @@ _020d1d08: ldr r0, _020d1da0 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj add r0, r0, #0x200 mov r1, #1 strh r1, [r0, #0x8a] @@ -280,7 +280,7 @@ _020d1d34: ldr r0, _020d1da0 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj add r0, r0, #0x200 mov r1, #2 strh r1, [r0, #0x8a] @@ -292,7 +292,7 @@ _020d1d60: ldr r0, _020d1da0 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj add r0, r0, #0x200 mov r1, #3 strh r1, [r0, #0x8a] @@ -874,7 +874,7 @@ _020d2560: ; jump table _020d2588: ldr r0, _020d27d8 ; =gInventory ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r3, [r0] mov r1, r4 ldr r3, [r3, #0x90] @@ -889,7 +889,7 @@ _020d25bc: ldr r0, _020d27d8 ; =gInventory sub r1, r2, #0x40 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r3, [r0] mov r1, r4 ldr r3, [r3, #0x94] @@ -906,7 +906,7 @@ _020d25f8: ldr r0, _020d27d8 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj mov r1, #1 strb r1, [r0, #0x28e] add sp, sp, #8 @@ -955,7 +955,7 @@ _020d26ac: ldr r0, _020d27d8 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r6, #4] cmp r1, #0 beq _020d26d4 @@ -3116,7 +3116,7 @@ func_ov00_020d4058: ; 0x020d4058 bl func_ov00_020d4020 mov r1, r0 mov r0, r5 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj mov r1, #0x10000 ldr r0, [r0, #0x23c] rsb r1, r1, #0 @@ -3155,7 +3155,7 @@ func_ov00_020d40d8: ; 0x020d40d8 bl func_ov00_020d4020 mov r1, r0 mov r0, r5 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r4, #0x130] cmp r1, #0 bne _020d4120 @@ -3212,7 +3212,7 @@ func_ov00_020d4134: ; 0x020d4134 bl func_ov00_020d4020 mov r1, r0 mov r0, r6 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj mov r1, r4 ldr r4, [r0] add r3, r5, #0x48 @@ -3234,7 +3234,7 @@ _020d41f4: bl func_ov00_020d4020 mov r1, r0 mov r0, r5 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r5, [r0] mov r1, r4 ldr r5, [r5, #0xbc] @@ -3314,7 +3314,7 @@ func_ov00_020d42e4: ; 0x020d42e4 bl func_ov00_020d4020 mov r1, r0 mov r0, r4 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj add r0, r0, #0x224 ldmia sp!, {r4, pc} .align 2, 0 diff --git a/asm/ov03.s b/asm/ov03.s index df595924..f652eeb0 100644 --- a/asm/ov03.s +++ b/asm/ov03.s @@ -5214,7 +5214,7 @@ func_ov03_020f1d04: ; 0x020f1d04 bl func_ov03_020f3fb4 cmp r0, #0 bne _020f1da8 - ldr r0, _020f1dc4 ; =data_027e0900 + ldr r0, _020f1dc4 ; =gOverlayManager ldr r1, _020f1dc8 ; =0x0000001d ldr r0, [r0, #0x18] mov r5, #0 @@ -5237,7 +5237,7 @@ _020f1db4: .word data_027e0f74 _020f1db8: .word data_027e0c68 _020f1dbc: .word data_027e0e28 _020f1dc0: .word data_ov09_0211f5b4 -_020f1dc4: .word data_027e0900 +_020f1dc4: .word gOverlayManager _020f1dc8: .word 0x0000001d _020f1dcc: .word data_ov29_0217a4ac @@ -7746,10 +7746,10 @@ func_ov03_020f3894: ; 0x020f3894 push {r4, lr} sub sp, #0x18 add r4, r0, #0 - ldr r0, _020f390c ; =data_027e0900 + ldr r0, _020f390c ; =gOverlayManager ldr r2, _020f3910 ; =0x00000004 mov r1, #2 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj add r0, r4, #0 mov r1, #0 bl func_ov03_020f3870 @@ -7788,15 +7788,15 @@ func_ov03_020f3894: ; 0x020f3894 add r0, r4, #0 mov r1, #1 bl func_ov04_02100c6c - ldr r0, _020f390c ; =data_027e0900 + ldr r0, _020f390c ; =gOverlayManager ldr r2, _020f391c ; =0x00000005 mov r1, #2 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj add sp, #0x18 pop {r4, pc} nop thumb_func_end func_ov03_020f3894 -_020f390c: .word data_027e0900 +_020f390c: .word gOverlayManager _020f3910: .word 0x00000004 _020f3914: .word data_027e0d54 _020f3918: .word data_ov00_020eab04 @@ -8544,7 +8544,7 @@ _020f3e1a: cmp r4, #2 bne _020f3e2e mov r1, #1 - ldr r0, _020f3e6c ; =data_027e0900 + ldr r0, _020f3e6c ; =gOverlayManager lsl r1, r1, #0xe bl func_ov03_020faa64 _020f3e2e: @@ -8578,7 +8578,7 @@ _020f3e58: thumb_func_end func_ov03_020f3e04 _020f3e64: .word data_027e0d38 _020f3e68: .word data_ov03_020ff5a4 -_020f3e6c: .word data_027e0900 +_020f3e6c: .word gOverlayManager _020f3e70: .word data_027e0ce0 .global func_ov03_020f3e74 @@ -9122,7 +9122,7 @@ _020f4292: ldr r1, [r0, #0x20] blx func_ov03_020fa874 _020f42b2: - ldr r0, _020f4300 ; =data_027e0900 + ldr r0, _020f4300 ; =gOverlayManager ldr r1, [r0, #8] ldr r0, _020f4304 ; =0x00000005 cmp r1, r0 @@ -9158,7 +9158,7 @@ _020f42f0: .word data_ov03_020ff5a4 _020f42f4: .word data_027e0718 _020f42f8: .word data_027e103c _020f42fc: .word data_027e0cbc -_020f4300: .word data_027e0900 +_020f4300: .word gOverlayManager _020f4304: .word 0x00000005 _020f4308: .word data_027e0fc8 @@ -11838,7 +11838,7 @@ func_ov03_020f59d4: ; 0x020f59d4 beq _020f5a6c ldr r0, _020f5a94 ; =gInventory ldr r0, [r0] - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv cmp r0, #2 ldrsh r0, [r4, #0xe] mov r1, #4 @@ -13061,7 +13061,7 @@ _020f68d8: _020f693c: ldr r0, _020f69c8 ; =gInventory ldr r0, [r0] - bl func_ov00_020ae390 + bl _ZNK9Inventory15GetEquippedItemEv cmp r0, #7 bne _020f69a8 ldr r0, _020f69c8 ; =gInventory @@ -13541,7 +13541,7 @@ _020f6f58: cmp r7, #0x10 mov r0, r5 movge r7, #0x10 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv cmp r0, #2 moveq r5, #1 str r6, [sp] @@ -15917,7 +15917,7 @@ func_ov03_020f8bb0: ; 0x020f8bb0 mov r1, #0x14 mov r2, #0x18 blx func_0204f614 - ldr r0, _020f8d34 ; =data_027e0900 + ldr r0, _020f8d34 ; =gOverlayManager ldr r1, _020f8d38 ; =0x0000001a ldr r0, [r0, #0x18] cmp r1, r0 @@ -16079,7 +16079,7 @@ _020f8c22: thumb_func_end func_ov03_020f8bb0 _020f8d2c: .word func_ov03_020f121c - 1 _020f8d30: .word func_ov03_020f1220 - 1 -_020f8d34: .word data_027e0900 +_020f8d34: .word gOverlayManager _020f8d38: .word 0x0000001a _020f8d3c: .word data_027e0ce0 _020f8d40: .word func_ov03_020f8d50 @@ -18357,14 +18357,14 @@ _020faa0c: _020faa10: ldr r2, _020faa1c ; =0x0000000f _020faa12: - ldr r3, _020faa20 ; =func_0202ff64 + ldr r3, _020faa20 ; =_ZN14OverlayManager15LoadIfNotLoadedEjj mov r1, #4 bx r3 .align 2, 0 thumb_func_end func_ov03_020fa9f0 _020faa18: .word 0x0000000e _020faa1c: .word 0x0000000f -_020faa20: .word func_0202ff64 +_020faa20: .word _ZN14OverlayManager15LoadIfNotLoadedEjj .global func_ov03_020faa24 thumb_func_start func_ov03_020faa24 @@ -18383,14 +18383,14 @@ _020faa34: _020faa38: ldr r2, _020faa44 ; =0x00000012 _020faa3a: - ldr r3, _020faa48 ; =func_0202ff64 + ldr r3, _020faa48 ; =_ZN14OverlayManager15LoadIfNotLoadedEjj mov r1, #5 bx r3 .align 2, 0 thumb_func_end func_ov03_020faa24 _020faa40: .word 0x00000011 _020faa44: .word 0x00000012 -_020faa48: .word func_0202ff64 +_020faa48: .word _ZN14OverlayManager15LoadIfNotLoadedEjj .global func_ov03_020faa4c thumb_func_start func_ov03_020faa4c @@ -18400,12 +18400,12 @@ func_ov03_020faa4c: ; 0x020faa4c ldr r2, _020faa5c ; =data_ov03_020ff92c mov r1, #6 ldr r2, [r2, r3] - ldr r3, _020faa60 ; =func_0202ff64 + ldr r3, _020faa60 ; =_ZN14OverlayManager15LoadIfNotLoadedEjj bx r3 nop thumb_func_end func_ov03_020faa4c _020faa5c: .word data_ov03_020ff92c -_020faa60: .word func_0202ff64 +_020faa60: .word _ZN14OverlayManager15LoadIfNotLoadedEjj .global func_ov03_020faa64 thumb_func_start func_ov03_020faa64 @@ -18430,7 +18430,7 @@ _020faa7a: ldr r0, [sp] ldr r2, [r2, r3] add r1, r6, #7 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj add r6, r6, #1 add r4, r4, #4 add r5, r5, #4 @@ -18452,15 +18452,15 @@ func_ov03_020faaa4: ; 0x020faaa4 _020faaaa: add r0, r5, #0 add r1, r4, #7 - bl func_0202ff84 + bl _ZN14OverlayManager6UnloadEj sub r4, r4, #1 bpl _020faaaa pop {r3, r4, r5, pc} thumb_func_end func_ov03_020faaa4 - .global func_ov03_020faab8 - thumb_func_start func_ov03_020faab8 -func_ov03_020faab8: ; 0x020faab8 + .global _ZN14OverlayManager13LoadEquipItemEj + thumb_func_start _ZN14OverlayManager13LoadEquipItemEj +_ZN14OverlayManager13LoadEquipItemEj: ; 0x020faab8 mov r2, #0 mvn r2, r2 cmp r1, #0xa @@ -18507,11 +18507,11 @@ _020faafa: _020faafe: ldr r2, _020fab10 ; =0x00000037 _020fab00: - ldr r3, _020fab24 ; =func_0202ff64 + ldr r3, _020fab24 ; =_ZN14OverlayManager15LoadIfNotLoadedEjj mov r1, #0xb bx r3 nop - thumb_func_end func_ov03_020faab8 + thumb_func_end _ZN14OverlayManager13LoadEquipItemEj _020fab08: .word 0x00000035 _020fab0c: .word 0x00000036 _020fab10: .word 0x00000037 @@ -18519,7 +18519,7 @@ _020fab14: .word 0x00000038 _020fab18: .word 0x00000039 _020fab1c: .word 0x0000003a _020fab20: .word 0x0000003b -_020fab24: .word func_0202ff64 +_020fab24: .word _ZN14OverlayManager15LoadIfNotLoadedEjj .global func_ov03_020fab28 thumb_func_start func_ov03_020fab28 diff --git a/asm/ov04.s b/asm/ov04.s index e8d7eec6..00011fa4 100644 --- a/asm/ov04.s +++ b/asm/ov04.s @@ -237,45 +237,45 @@ _02100cb4: add r5, r0, #0 cmp r5, #2 bne _02100cfc - ldr r0, _02100d80 ; =data_027e0900 + ldr r0, _02100d80 ; =gOverlayManager mov r1, #0xb - bl func_0202ff84 - ldr r0, _02100d80 ; =data_027e0900 + bl _ZN14OverlayManager6UnloadEj + ldr r0, _02100d80 ; =gOverlayManager bl func_ov03_020faaa4 - ldr r0, _02100d80 ; =data_027e0900 + ldr r0, _02100d80 ; =gOverlayManager mov r1, #6 - bl func_0202ff84 - ldr r0, _02100d80 ; =data_027e0900 + bl _ZN14OverlayManager6UnloadEj + ldr r0, _02100d80 ; =gOverlayManager mov r1, #5 - bl func_0202ff84 - ldr r0, _02100d80 ; =data_027e0900 + bl _ZN14OverlayManager6UnloadEj + ldr r0, _02100d80 ; =gOverlayManager add r1, r5, #0 bl func_ov03_020fa9f0 b _02100d38 _02100cfc: - ldr r0, _02100d80 ; =data_027e0900 + ldr r0, _02100d80 ; =gOverlayManager add r1, r5, #0 bl func_ov03_020fa9f0 - ldr r0, _02100d80 ; =data_027e0900 + ldr r0, _02100d80 ; =gOverlayManager add r1, r5, #0 bl func_ov03_020faa24 add r0, r4, #0 blx func_ov00_02078b64 add r1, r0, #0 - ldr r0, _02100d80 ; =data_027e0900 + ldr r0, _02100d80 ; =gOverlayManager bl func_ov03_020faa4c ldr r0, [r4, #0x14] cmp r0, #1 bne _02100d38 - ldr r0, _02100d80 ; =data_027e0900 + ldr r0, _02100d80 ; =gOverlayManager mov r1, #0xb - bl func_0202ff84 - ldr r0, _02100d80 ; =data_027e0900 + bl _ZN14OverlayManager6UnloadEj + ldr r0, _02100d80 ; =gOverlayManager bl func_ov03_020faaa4 - ldr r0, _02100d80 ; =data_027e0900 + ldr r0, _02100d80 ; =gOverlayManager ldr r2, _02100d84 ; =0x00000028 mov r1, #7 - bl func_0202ff44 + bl _ZN14OverlayManager4LoadEjj _02100d38: ldr r1, _02100d88 ; =data_027e0ce0 mov r0, #4 @@ -308,7 +308,7 @@ _02100d6a: _02100d74: .word data_02068ed8 _02100d78: .word data_0206902c _02100d7c: .word data_027e0618 -_02100d80: .word data_027e0900 +_02100d80: .word gOverlayManager _02100d84: .word 0x00000028 _02100d88: .word data_027e0ce0 _02100d8c: .word data_027e0f7c @@ -335,26 +335,26 @@ _02100da8: bne _02100dde cmp r6, #0 bne _02100dde - ldr r0, _02100de4 ; =data_027e0900 + ldr r0, _02100de4 ; =gOverlayManager mov r1, #0xb - bl func_0202ff84 - ldr r0, _02100de4 ; =data_027e0900 + bl _ZN14OverlayManager6UnloadEj + ldr r0, _02100de4 ; =gOverlayManager bl func_ov03_020faaa4 - ldr r0, _02100de4 ; =data_027e0900 + ldr r0, _02100de4 ; =gOverlayManager mov r1, #6 - bl func_0202ff84 - ldr r0, _02100de4 ; =data_027e0900 + bl _ZN14OverlayManager6UnloadEj + ldr r0, _02100de4 ; =gOverlayManager mov r1, #5 - bl func_0202ff84 - ldr r0, _02100de4 ; =data_027e0900 + bl _ZN14OverlayManager6UnloadEj + ldr r0, _02100de4 ; =gOverlayManager mov r1, #4 - bl func_0202ff84 + bl _ZN14OverlayManager6UnloadEj _02100dde: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end func_ov04_02100d90 _02100de0: .word data_027e0618 -_02100de4: .word data_027e0900 +_02100de4: .word gOverlayManager .global func_ov04_02100de8 thumb_func_start func_ov04_02100de8 @@ -9423,7 +9423,7 @@ _021055a6: _021055a8: cmp r0, #0 beq _021055d2 - ldr r0, _021055f8 ; =data_027e0900 + ldr r0, _021055f8 ; =gOverlayManager ldr r1, _021055fc ; =0x0000001e ldr r0, [r0, #0x1c] cmp r1, r0 @@ -9457,7 +9457,7 @@ _021055ea: thumb_func_end func_ov04_02105578 _021055f0: .word data_027e0fec _021055f4: .word data_027e0d38 -_021055f8: .word data_027e0900 +_021055f8: .word gOverlayManager _021055fc: .word 0x0000001e _02105600: .word data_027e10b4 _02105604: .word data_027e10b8 @@ -9488,7 +9488,7 @@ _0210562c: _0210562e: cmp r0, #0 beq _0210564e - ldr r0, _021056a4 ; =data_027e0900 + ldr r0, _021056a4 ; =gOverlayManager ldr r1, _021056a8 ; =0x0000001e ldr r0, [r0, #0x1c] cmp r1, r0 @@ -9547,7 +9547,7 @@ _0210569c: .align 2, 0 thumb_func_end func_ov04_02105608 _021056a0: .word data_027e0d38 -_021056a4: .word data_027e0900 +_021056a4: .word gOverlayManager _021056a8: .word 0x0000001e _021056ac: .word data_027e10b4 _021056b0: .word data_027e10b8 @@ -17679,7 +17679,7 @@ _02109438: blx func_ov00_02078b40 cmp r0, #2 beq _0210945c - ldr r0, _0210948c ; =data_027e0900 + ldr r0, _0210948c ; =gOverlayManager ldr r1, [r0, #0x18] ldr r0, _02109490 ; =0x0000001d cmp r1, r0 @@ -17707,7 +17707,7 @@ _0210947c: .word 0x00001333 _02109480: .word data_027e0e60 _02109484: .word data_027e0618 _02109488: .word data_027e0d38 -_0210948c: .word data_027e0900 +_0210948c: .word gOverlayManager _02109490: .word 0x0000001d _02109494: .word data_027e1048 _02109498: .word data_027e104c @@ -21457,7 +21457,7 @@ func_ov04_0210b184: ; 0x0210b184 ldr r0, [r0] add r0, #0x78 strb r1, [r0] - ldr r0, _0210b1c4 ; =data_027e0900 + ldr r0, _0210b1c4 ; =gOverlayManager ldr r1, [r0, #0x18] ldr r0, _0210b1c8 ; =0x0000001d cmp r1, r0 @@ -21479,7 +21479,7 @@ _0210b1bc: nop thumb_func_end func_ov04_0210b184 _0210b1c0: .word data_027e0fb8 -_0210b1c4: .word data_027e0900 +_0210b1c4: .word gOverlayManager _0210b1c8: .word 0x0000001d _0210b1cc: .word data_027e0ce0 @@ -24953,14 +24953,14 @@ func_ov04_0210cc58: ; 0x0210cc58 add r1, r2, #0 blx func_ov00_0207d7a4 add r1, r0, #0 - ldr r0, _0210cc78 ; =data_027e0900 + ldr r0, _0210cc78 ; =gOverlayManager bl func_ov03_020faa64 _0210cc72: pop {r3, pc} .align 2, 0 thumb_func_end func_ov04_0210cc58 _0210cc74: .word data_027e0618 -_0210cc78: .word data_027e0900 +_0210cc78: .word gOverlayManager .global func_ov04_0210cc7c arm_func_start func_ov04_0210cc7c @@ -27931,7 +27931,7 @@ _0210e74a: mov r6, #1 cmp r1, #1 beq _0210e768 - ldr r1, _0210ea74 ; =data_027e0900 + ldr r1, _0210ea74 ; =gOverlayManager ldr r2, [r1, #0x18] ldr r1, _0210ea78 ; =0x0000001d cmp r2, r1 @@ -28304,7 +28304,7 @@ _0210ea30: b _0210eaa8 .align 2, 0 _0210ea70: .word data_027e0d38 -_0210ea74: .word data_027e0900 +_0210ea74: .word gOverlayManager _0210ea78: .word 0x0000001d _0210ea7c: .word func_ov29_0216d918 _0210ea80: .word data_02057878 @@ -29865,7 +29865,7 @@ _0210f600: .word data_ov00_020e8d8c thumb_func_start func_ov04_0210f604 func_ov04_0210f604: ; 0x0210f604 push {r3, lr} - ldr r0, _0210f628 ; =data_ov00_020ee57c + ldr r0, _0210f628 ; =gPlayerAnimHandler ldr r0, [r0] cmp r0, #0 bne _0210f626 @@ -29878,13 +29878,13 @@ func_ov04_0210f604: ; 0x0210f604 beq _0210f622 bl func_ov04_0210f650 _0210f622: - ldr r1, _0210f628 ; =data_ov00_020ee57c + ldr r1, _0210f628 ; =gPlayerAnimHandler str r0, [r1] _0210f626: pop {r3, pc} .align 2, 0 thumb_func_end func_ov04_0210f604 -_0210f628: .word data_ov00_020ee57c +_0210f628: .word gPlayerAnimHandler _0210f62c: .word data_027e0ce0 _0210f630: .word 0x000051b8 @@ -29892,19 +29892,19 @@ _0210f630: .word 0x000051b8 thumb_func_start func_ov04_0210f634 func_ov04_0210f634: ; 0x0210f634 push {r3, lr} - ldr r0, _0210f64c ; =data_ov00_020ee57c + ldr r0, _0210f64c ; =gPlayerAnimHandler ldr r0, [r0] cmp r0, #0 beq _0210f648 blx _ZN9SysObjectdlEPv - ldr r0, _0210f64c ; =data_ov00_020ee57c + ldr r0, _0210f64c ; =gPlayerAnimHandler mov r1, #0 str r1, [r0] _0210f648: pop {r3, pc} nop thumb_func_end func_ov04_0210f634 -_0210f64c: .word data_ov00_020ee57c +_0210f64c: .word gPlayerAnimHandler .global func_ov04_0210f650 thumb_func_start func_ov04_0210f650 diff --git a/asm/ov05.s b/asm/ov05.s index 772d15c5..54dad4e0 100644 --- a/asm/ov05.s +++ b/asm/ov05.s @@ -5427,7 +5427,7 @@ func_ov05_02105140: ; 0x02105140 movne r0, #0 cmp r0, #0 beq _021051b8 - ldr r0, _021052ec ; =data_027e0900 + ldr r0, _021052ec ; =gOverlayManager ldr r1, _021052f0 ; =0x0000001e ldr r0, [r0, #0x1c] cmp r1, r0 @@ -5524,7 +5524,7 @@ _021052cc: arm_func_end func_ov05_02105140 _021052e4: .word data_027e0ff4 _021052e8: .word data_027e0d38 -_021052ec: .word data_027e0900 +_021052ec: .word gOverlayManager _021052f0: .word 0x0000001e _021052f4: .word data_027e10b4 _021052f8: .word data_027e0f74 @@ -10295,21 +10295,21 @@ _02109420: ldr r0, _02109524 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj mov r4, r0 b _02109464 _02109438: ldr r0, _02109524 ; =gInventory mov r1, #2 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj mov r4, r0 b _02109464 _02109450: ldr r0, _02109524 ; =gInventory mov r1, r4 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj mov r4, r0 _02109464: cmp r4, #0 @@ -10737,10 +10737,10 @@ func_ov05_021099dc: ; 0x021099dc mov r5, r0 ldr r4, [r1] mov r0, r4 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r4 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldrsh r1, [r5, #0x80] mov r4, r0 cmp r1, #4 @@ -12059,15 +12059,15 @@ _0210aba8: ldr r0, _0210ad74 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, _0210ad74 ; =gInventory mov r4, r0 ldr r7, [r1] mov r0, r7 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r7 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r5, r4 bne _0210ac7c mov r0, #0x10000 @@ -12107,10 +12107,10 @@ _0210ac7c: ldr r0, _0210ad74 ; =gInventory ldr r4, [r0] mov r0, r4 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r4 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r0, r5 mov r0, r6 beq _0210ad00 @@ -14073,7 +14073,7 @@ _0210c824: ldr r2, [r7, #0x2c] mov r1, #0 str r2, [sp, #0x14] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, _0210c950 ; =data_027e0e60 mov r4, r0 ldr r0, [r1] @@ -20360,7 +20360,7 @@ func_ov05_02111e20: ; 0x02111e20 bl func_ov05_021121cc ldr r0, [r4, #0xec] bl func_ov00_020a4e30 - ldr r0, _02111f30 ; =data_027e0900 + ldr r0, _02111f30 ; =gOverlayManager ldr r1, _02111f34 ; =0x0000001d ldr r0, [r0, #0x18] cmp r0, r1 @@ -20428,7 +20428,7 @@ _02111f04: ldmia sp!, {r4, pc} .align 2, 0 arm_func_end func_ov05_02111e20 -_02111f30: .word data_027e0900 +_02111f30: .word gOverlayManager _02111f34: .word 0x0000001d _02111f38: .word data_027e0d38 _02111f3c: .word data_ov61_0217a4ac diff --git a/asm/ov08.s b/asm/ov08.s index a4352772..9279d9eb 100644 --- a/asm/ov08.s +++ b/asm/ov08.s @@ -201,10 +201,10 @@ func_ov08_02112e84: ; 0x02112e84 func_ov08_02112e88: ; 0x02112e88 stmdb sp!, {r3, lr} blx func_020425e0 - ldr r0, _02112ec8 ; =data_027e0900 + ldr r0, _02112ec8 ; =gOverlayManager ldr r2, _02112ecc ; =0x00000000 mov r1, #0 - blx func_0202ff44 + blx _ZN14OverlayManager4LoadEjj ldr r0, _02112ed0 ; =data_ov00_020ee734 bl func_ov08_021131ac ldr r0, _02112ed4 ; =data_027e0d54 @@ -217,7 +217,7 @@ func_ov08_02112e88: ; 0x02112e88 ldmia sp!, {r3, pc} .align 2, 0 arm_func_end func_ov08_02112e88 -_02112ec8: .word data_027e0900 +_02112ec8: .word gOverlayManager _02112ecc: .word 0x00000000 _02112ed0: .word data_ov00_020ee734 _02112ed4: .word data_027e0d54 diff --git a/asm/ov09.s b/asm/ov09.s index 3f83d6dc..29b6d0ca 100644 --- a/asm/ov09.s +++ b/asm/ov09.s @@ -139,10 +139,10 @@ _02112d24: ldr r0, _02112d5c ; =data_027e0d38 ldr r0, [r0] bl func_ov04_02100bcc - ldr r0, _02112d60 ; =data_027e0900 + ldr r0, _02112d60 ; =gOverlayManager ldr r2, _02112d64 ; =0x00000005 mov r1, #2 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj add r0, r5, #0 add sp, #0x18 pop {r3, r4, r5, pc} @@ -155,7 +155,7 @@ _02112d50: .word data_027e0718 _02112d54: .word data_027e0618 _02112d58: .word data_ov00_020eab04 _02112d5c: .word data_027e0d38 -_02112d60: .word data_027e0900 +_02112d60: .word gOverlayManager _02112d64: .word 0x00000005 .global func_ov09_02112d68 @@ -355,7 +355,7 @@ _02112f48: ldr r1, [r1, #0x14] cmp r1, #1 ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _02112fdc ; =data_027e0900 + ldr r0, _02112fdc ; =gOverlayManager ldr r1, _02112fe0 ; =0x0000001d ldr r0, [r0, #0x18] cmp r0, r1 @@ -389,7 +389,7 @@ _02112fc8: _02112fd0: .word data_027e0d38 _02112fd4: .word data_027e1060 _02112fd8: .word data_ov09_0211f5dc -_02112fdc: .word data_027e0900 +_02112fdc: .word gOverlayManager _02112fe0: .word 0x0000001d _02112fe4: .word data_ov61_0217a4ac _02112fe8: .word data_ov09_0211f5b4 @@ -843,10 +843,10 @@ _021134d0: mov r1, #0x13 mov r2, #0 bl func_ov00_0207c0ac - ldr r0, _0211352c ; =data_027e0900 + ldr r0, _0211352c ; =gOverlayManager ldr r2, _02113530 ; =0x00000002 mov r1, #1 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj mov r1, #0x4a ldrsh r1, [r4, r1] ldr r0, [r4, #0x40] @@ -860,7 +860,7 @@ _0211351c: .word 0xffff7fff _02113520: .word data_027e103c _02113524: .word data_027e0c68 _02113528: .word data_027e0d54 -_0211352c: .word data_027e0900 +_0211352c: .word gOverlayManager _02113530: .word 0x00000002 .global func_ov09_02113534 @@ -904,10 +904,10 @@ _02113560: _0211357a: ldr r0, [r4, #0x40] blx func_ov02_020f4d9c - ldr r0, _021135bc ; =data_027e0900 + ldr r0, _021135bc ; =gOverlayManager ldr r2, _021135c0 ; =0x00000003 mov r1, #1 - bl func_0202ff64 + bl _ZN14OverlayManager15LoadIfNotLoadedEjj ldr r0, _021135c4 ; =data_027e0c68 blx func_02036d6c add r0, r4, #0 @@ -929,7 +929,7 @@ _021135ae: _021135b0: .word data_027e077c _021135b4: .word 0x04000304 _021135b8: .word 0xffff7fff -_021135bc: .word data_027e0900 +_021135bc: .word gOverlayManager _021135c0: .word 0x00000003 _021135c4: .word data_027e0c68 _021135c8: .word data_027e103c @@ -17501,7 +17501,7 @@ _0211ca7c: str r5, [r0] ldr r0, _0211cab0 ; =data_ov09_0211f298 str r4, [r0] - ldr r0, _0211cab4 ; =data_027e0900 + ldr r0, _0211cab4 ; =gOverlayManager ldr r1, [r0, #8] ldr r0, _0211cab8 ; =0x00000005 cmp r1, r0 @@ -17525,7 +17525,7 @@ _0211ca94: _0211caa8: .word gInventory _0211caac: .word data_ov09_0211f294 _0211cab0: .word data_ov09_0211f298 -_0211cab4: .word data_027e0900 +_0211cab4: .word gOverlayManager _0211cab8: .word 0x00000005 _0211cabc: .word data_027e1058 @@ -17568,7 +17568,7 @@ _0211cae8: _0211cb04: ldr r0, _0211cb2c ; =data_ov09_0211f308 str r5, [r0] - ldr r0, _0211cb30 ; =data_027e0900 + ldr r0, _0211cb30 ; =gOverlayManager ldr r1, [r0, #8] ldr r0, _0211cb34 ; =0x00000005 cmp r1, r0 @@ -17588,7 +17588,7 @@ _0211cb18: thumb_func_end func_ov09_0211cac0 _0211cb28: .word gInventory _0211cb2c: .word data_ov09_0211f308 -_0211cb30: .word data_027e0900 +_0211cb30: .word gOverlayManager _0211cb34: .word 0x00000005 _0211cb38: .word data_027e105c diff --git a/asm/ov12.s b/asm/ov12.s index 32de429b..2be8e50c 100644 --- a/asm/ov12.s +++ b/asm/ov12.s @@ -8541,7 +8541,7 @@ _02119ac4: ldr r0, _02119dc4 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r0, _02119dc8 ; =data_027e0fd4 ldr r4, [r0] ldrb r0, [r4, #0x54] @@ -10224,7 +10224,7 @@ _0211b130: addne sp, sp, #0x20 ldmneia sp!, {r4, r5, r6, pc} _0211b150: - ldr r0, _0211b298 ; =data_ov00_020ee57c + ldr r0, _0211b298 ; =gPlayerAnimHandler mov r1, r4 ldr r0, [r0] bl func_ov00_020be540 @@ -10309,7 +10309,7 @@ _0211b21c: .align 2, 0 arm_func_end func_ov12_0211b0f0 _0211b294: .word data_ov00_020dca38 -_0211b298: .word data_ov00_020ee57c +_0211b298: .word gPlayerAnimHandler _0211b29c: .word data_ov12_02134754 .global func_ov12_0211b2a0 @@ -10478,13 +10478,13 @@ _0211b4d0: .word data_ov00_020dc894 .global func_ov12_0211b4d4 arm_func_start func_ov12_0211b4d4 func_ov12_0211b4d4: ; 0x0211b4d4 - ldr r0, _0211b4e4 ; =data_ov00_020ee57c + ldr r0, _0211b4e4 ; =gPlayerAnimHandler ldr ip, _0211b4e8 ; =func_ov00_020be674 ldr r0, [r0] bx ip .align 2, 0 arm_func_end func_ov12_0211b4d4 -_0211b4e4: .word data_ov00_020ee57c +_0211b4e4: .word gPlayerAnimHandler _0211b4e8: .word func_ov00_020be674 .global func_ov12_0211b4ec @@ -15414,10 +15414,10 @@ func_ov12_0211f594: ; 0x0211f594 ldr r0, _0211f66c ; =data_027e0d38 ldr r0, [r0] blx func_ov04_02100bcc - ldr r0, _0211f670 ; =data_027e0900 + ldr r0, _0211f670 ; =gOverlayManager ldr r2, _0211f674 ; =0x00000005 mov r1, #2 - blx func_0202ff64 + blx _ZN14OverlayManager15LoadIfNotLoadedEjj bl func_ov12_0212e274 ldr r0, _0211f664 ; =data_ov12_0213dd0c ldr r0, [r0] @@ -15439,7 +15439,7 @@ _0211f648: _0211f664: .word data_ov12_0213dd0c _0211f668: .word data_ov12_02137c64 _0211f66c: .word data_027e0d38 -_0211f670: .word data_027e0900 +_0211f670: .word gOverlayManager _0211f674: .word 0x00000005 .global func_ov12_0211f678 diff --git a/asm/ov14.s b/asm/ov14.s index 01f564e2..5a17bd9a 100644 --- a/asm/ov14.s +++ b/asm/ov14.s @@ -400,7 +400,7 @@ func_ov14_0211fab0: ; 0x0211fab0 mov r4, r0 addne sp, sp, #8 ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _0211fc78 ; =data_027e0900 + ldr r1, _0211fc78 ; =gOverlayManager ldr r2, _0211fc7c ; =0x0000003a ldr r1, [r1, #0x2c] cmp r2, r1 @@ -518,7 +518,7 @@ _0211fc48: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_ov14_0211fab0 -_0211fc78: .word data_027e0900 +_0211fc78: .word gOverlayManager _0211fc7c: .word 0x0000003a _0211fc80: .word data_027e077c _0211fc84: .word data_027e0fb8 @@ -4548,7 +4548,7 @@ func_ov14_02123254: ; 0x02123254 bne _021232b8 ldr r0, _02123550 ; =gInventory ldr r0, [r0] - bl func_ov00_020ae390 + bl _ZNK9Inventory15GetEquippedItemEv cmp r0, #2 beq _021232b8 mov r0, r5 @@ -36800,7 +36800,7 @@ func_ov14_0213d17c: ; 0x0213d17c arm_func_start func_ov14_0213d184 func_ov14_0213d184: ; 0x0213d184 stmdb sp!, {r3, lr} - ldr r2, _0213d1a8 ; =data_027e0900 + ldr r2, _0213d1a8 ; =gOverlayManager ldr r3, _0213d1ac ; =0x00000035 ldr r2, [r2, #0x2c] cmp r3, r2 @@ -36810,7 +36810,7 @@ func_ov14_0213d184: ; 0x0213d184 ldmia sp!, {r3, pc} .align 2, 0 arm_func_end func_ov14_0213d184 -_0213d1a8: .word data_027e0900 +_0213d1a8: .word gOverlayManager _0213d1ac: .word 0x00000035 .global func_ov14_0213d1b0 @@ -39530,7 +39530,7 @@ func_ov14_0213f104: ; 0x0213f104 beq _0213f170 ldr r0, _0213f318 ; =gInventory ldr r0, [r0] - bl func_ov00_020ad434 + bl _ZN9Inventory13TickEquipItemEv ldrb r0, [r4, #0x5d] cmp r0, #0 beq _0213f158 @@ -41325,7 +41325,7 @@ func_ov14_021404f4: ; 0x021404f4 mov r6, r0 ldrb r0, [r6, #0x149] ldr r4, [r6, #0x490] - ldr r3, _021406a8 ; =data_ov00_020ee57c + ldr r3, _021406a8 ; =gPlayerAnimHandler cmp r0, #0 ldreqb r0, [r6, #0x14a] cmpeq r0, #0 @@ -41345,7 +41345,7 @@ func_ov14_021404f4: ; 0x021404f4 bl func_ov00_020be4dc mov r0, r6 bl func_ov00_020b4738 - ldr r0, _021406a8 ; =data_ov00_020ee57c + ldr r0, _021406a8 ; =gPlayerAnimHandler ldr r0, [r0] add r0, r0, #0x5000 ldrb r0, [r0, #0x1b4] @@ -41355,13 +41355,13 @@ func_ov14_021404f4: ; 0x021404f4 bl func_ov00_020b43f0 add r0, r6, #0x120 bl func_ov00_020b43f0 - ldr r0, _021406a8 ; =data_ov00_020ee57c + ldr r0, _021406a8 ; =gPlayerAnimHandler mov r1, #0 ldr r0, [r0] add r0, r0, #0x5000 strb r1, [r0, #0x1b4] _02140590: - ldr r0, _021406a8 ; =data_ov00_020ee57c + ldr r0, _021406a8 ; =gPlayerAnimHandler mov r3, #0 ldr r0, [r0] mov r1, #0x18 @@ -41436,7 +41436,7 @@ _02140618: ldmia sp!, {r4, r5, r6, pc} .align 2, 0 arm_func_end func_ov14_021404f4 -_021406a8: .word data_ov00_020ee57c +_021406a8: .word gPlayerAnimHandler _021406ac: .word 0x020dca3a _021406b0: .word data_027e0fc4 _021406b4: .word data_ov00_020dc884 @@ -41465,7 +41465,7 @@ _021406f4: _021406fc: mov r3, #0 _02140700: - ldr r0, _02140718 ; =data_ov00_020ee57c + ldr r0, _02140718 ; =gPlayerAnimHandler ldr ip, _0214071c ; =func_ov00_020be464 ldr r1, [r2, #0x100] ldr r0, [r0] @@ -41473,19 +41473,19 @@ _02140700: bx ip .align 2, 0 arm_func_end func_ov14_021406bc -_02140718: .word data_ov00_020ee57c +_02140718: .word gPlayerAnimHandler _0214071c: .word func_ov00_020be464 .global func_ov14_02140720 arm_func_start func_ov14_02140720 func_ov14_02140720: ; 0x02140720 - ldr r0, _02140730 ; =data_ov00_020ee57c + ldr r0, _02140730 ; =gPlayerAnimHandler ldr ip, _02140734 ; =func_ov00_020be674 ldr r0, [r0] bx ip .align 2, 0 arm_func_end func_ov14_02140720 -_02140730: .word data_ov00_020ee57c +_02140730: .word gPlayerAnimHandler _02140734: .word func_ov00_020be674 .global func_ov14_02140738 @@ -46036,7 +46036,7 @@ func_ov14_02143fc0: ; 0x02143fc0 ldr r0, [r5, #0x2c] cmp r0, #0 beq _02144024 - ldr r1, _0214406c ; =data_027e0900 + ldr r1, _0214406c ; =gOverlayManager ldr r2, _02144070 ; =0x0000003a ldr r1, [r1, #0x2c] cmp r2, r1 @@ -46073,7 +46073,7 @@ _0214404c: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_ov14_02143fc0 -_0214406c: .word data_027e0900 +_0214406c: .word gOverlayManager _02144070: .word 0x0000003a _02144074: .word data_027e1098 @@ -46259,7 +46259,7 @@ func_ov14_021442c4: ; 0x021442c4 ldr r0, [r5, #0x2c] cmp r0, #0 beq _0214431c - ldr r1, _021443e4 ; =data_027e0900 + ldr r1, _021443e4 ; =gOverlayManager ldr r2, _021443e8 ; =0x0000003a ldr r1, [r1, #0x2c] cmp r2, r1 @@ -46341,7 +46341,7 @@ _021443dc: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_ov14_021442c4 -_021443e4: .word data_027e0900 +_021443e4: .word gOverlayManager _021443e8: .word 0x0000003a .global func_ov14_021443ec @@ -46538,7 +46538,7 @@ func_ov14_02144650: ; 0x02144650 ldr r0, [r5, #0x2c] cmp r0, #0 beq _02144684 - ldr r1, _021446bc ; =data_027e0900 + ldr r1, _021446bc ; =gOverlayManager ldr r2, _021446c0 ; =0x0000003a ldr r1, [r1, #0x2c] cmp r2, r1 @@ -46563,7 +46563,7 @@ _021446a4: ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_ov14_02144650 -_021446bc: .word data_027e0900 +_021446bc: .word gOverlayManager _021446c0: .word 0x0000003a .global func_ov14_021446c4 diff --git a/asm/ov16.s b/asm/ov16.s index cf258dcb..c87b2cc3 100644 --- a/asm/ov16.s +++ b/asm/ov16.s @@ -568,11 +568,11 @@ func_ov16_0211fd68: ; 0x0211fd68 ldr r0, [r0] cmp r0, #2 bne _0211fdc4 - ldr r0, _0211fdd8 ; =data_027e0900 + ldr r0, _0211fdd8 ; =gOverlayManager mov r1, #1 blx func_0202ffa4 bl func_ov08_02112e88 - ldr r0, _0211fdd8 ; =data_027e0900 + ldr r0, _0211fdd8 ; =gOverlayManager blx func_02030008 mov r0, #4 str r0, [r4, #4] @@ -586,7 +586,7 @@ _0211fdc4: arm_func_end func_ov16_0211fd68 _0211fdd0: .word data_027e071c _0211fdd4: .word 0x027ffc20 -_0211fdd8: .word data_027e0900 +_0211fdd8: .word gOverlayManager .global func_ov16_0211fddc arm_func_start func_ov16_0211fddc diff --git a/asm/ov28.s b/asm/ov28.s index 7889d6c7..ae6d4154 100644 --- a/asm/ov28.s +++ b/asm/ov28.s @@ -6677,7 +6677,7 @@ _02172c54: ldmeqia sp!, {r4, r5, pc} ldr r0, _02172f10 ; =gInventory ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r0, #0 beq _02172ee4 add r1, r5, #0x100 @@ -8966,20 +8966,20 @@ func_ov28_0217496c: ; 0x0217496c strb lr, [sp, #0x14] strb lr, [sp, #0x15] bl func_ov00_020838e8 - ldr r0, _02174a10 ; =data_027e0900 + ldr r0, _02174a10 ; =gOverlayManager ldr r2, _02174a14 ; =0x00000004 mov r1, #2 - blx func_0202ff64 + blx _ZN14OverlayManager15LoadIfNotLoadedEjj ldr r0, _02174a0c ; =data_027e0e60 mov r2, #1 ldr r0, [r0] add r1, sp, #0 strb r2, [sp, #0x15] bl func_ov00_02082b3c - ldr r0, _02174a10 ; =data_027e0900 + ldr r0, _02174a10 ; =gOverlayManager ldr r2, _02174a18 ; =0x00000005 mov r1, #2 - blx func_0202ff64 + blx _ZN14OverlayManager15LoadIfNotLoadedEjj mov r0, r4 mov r1, #0 bl func_ov28_02174a1c @@ -8988,7 +8988,7 @@ func_ov28_0217496c: ; 0x0217496c .align 2, 0 arm_func_end func_ov28_0217496c _02174a0c: .word data_027e0e60 -_02174a10: .word data_027e0900 +_02174a10: .word gOverlayManager _02174a14: .word 0x00000004 _02174a18: .word 0x00000005 diff --git a/asm/ov52.s b/asm/ov52.s index d5e19620..0a928859 100644 --- a/asm/ov52.s +++ b/asm/ov52.s @@ -420,18 +420,18 @@ func_ov52_02195908: ; 0x02195908 add r2, sp, #0 mov r1, #2 bl func_ov00_020838e8 - ldr r0, _02195a0c ; =data_027e0900 + ldr r0, _02195a0c ; =gOverlayManager ldr r2, _02195a10 ; =0x00000004 mov r1, #2 - blx func_0202ff64 + blx _ZN14OverlayManager15LoadIfNotLoadedEjj ldr r0, _02195a08 ; =data_027e0e60 add r1, sp, #0 ldr r0, [r0] bl func_ov00_02082b3c - ldr r0, _02195a0c ; =data_027e0900 + ldr r0, _02195a0c ; =gOverlayManager ldr r2, _02195a14 ; =0x00000005 mov r1, #2 - blx func_0202ff64 + blx _ZN14OverlayManager15LoadIfNotLoadedEjj ldr r1, _02195a18 ; =data_027e0fb8 mov r2, #0 ldr r3, [r1] @@ -451,7 +451,7 @@ func_ov52_02195908: ; 0x02195908 arm_func_end func_ov52_02195908 _02195a04: .word data_027e0f74 _02195a08: .word data_027e0e60 -_02195a0c: .word data_027e0900 +_02195a0c: .word gOverlayManager _02195a10: .word 0x00000004 _02195a14: .word 0x00000005 _02195a18: .word data_027e0fb8 @@ -496,18 +496,18 @@ _02195a60: strb r4, [sp, #0x14] strb r4, [sp, #0x15] bl func_ov00_020838e8 - ldr r0, _02195b3c ; =data_027e0900 + ldr r0, _02195b3c ; =gOverlayManager ldr r2, _02195b40 ; =0x00000004 mov r1, #2 - blx func_0202ff64 + blx _ZN14OverlayManager15LoadIfNotLoadedEjj ldr r0, _02195b38 ; =data_027e0e60 add r1, sp, #0 ldr r0, [r0] bl func_ov00_02082b3c - ldr r0, _02195b3c ; =data_027e0900 + ldr r0, _02195b3c ; =gOverlayManager ldr r2, _02195b44 ; =0x00000005 mov r1, #2 - blx func_0202ff64 + blx _ZN14OverlayManager15LoadIfNotLoadedEjj ldr r0, _02195b48 ; =data_027e0fb8 mov r1, r4 ldr r3, [r0] @@ -534,7 +534,7 @@ _02195a60: arm_func_end func_ov52_02195a20 _02195b34: .word data_ov52_02197c40 _02195b38: .word data_027e0e60 -_02195b3c: .word data_027e0900 +_02195b3c: .word gOverlayManager _02195b40: .word 0x00000004 _02195b44: .word 0x00000005 _02195b48: .word data_027e0fb8 diff --git a/asm/ov54.s b/asm/ov54.s index ab4522f5..83505d1e 100644 --- a/asm/ov54.s +++ b/asm/ov54.s @@ -393,10 +393,10 @@ _021991a8: ldr r0, _021992c4 ; =gInventory ldr r4, [r0] mov r0, r4 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r4 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r0, #0 beq _0219920c bl func_ov00_020ba3b4 diff --git a/asm/ov59.s b/asm/ov59.s index 194606d5..e13de883 100644 --- a/asm/ov59.s +++ b/asm/ov59.s @@ -23,7 +23,7 @@ func_ov59_02198d00: ; 0x02198d00 ldr r0, _02198e1c ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj cmp r0, #0 beq _02198d5c ldr r0, [r0, #0x3b8] @@ -339,7 +339,7 @@ _021990c4: mov r5, r0 ldr r0, [r1] mov r1, #0 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj mov r4, r0 mov r0, r6 bl func_ov00_020a8db8 @@ -509,7 +509,7 @@ func_ov59_0219931c: ; 0x0219931c ldr r0, _02199338 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj bl func_ov00_020b853c ldmia sp!, {r3, pc} .align 2, 0 @@ -2473,16 +2473,16 @@ func_ov59_0219b020: ; 0x0219b020 ldr r1, _0219b108 ; =gInventory mov r4, r0 ldr r0, [r1] - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv cmp r0, #0 beq _0219b0a4 ldr r0, _0219b108 ; =gInventory ldr r5, [r0] mov r0, r5 - bl func_ov00_020ad414 + bl _ZNK9Inventory16GetEquippedFairyEv mov r1, r0 mov r0, r5 - bl func_ov00_020ad428 + bl _ZNK9Inventory8GetFairyEj ldr r1, [r0, #0x48] str r1, [r4, #0x48] ldr r1, [r0, #0x4c] diff --git a/include/Inventory.hpp b/include/Inventory.hpp index f1391fa7..05f9217f 100644 --- a/include/Inventory.hpp +++ b/include/Inventory.hpp @@ -1,10 +1,24 @@ #pragma once #include "types.h" +#include "lib/math.h" +#include "global.h" #include "SysNew.hpp" #include "Item.hpp" #include "Player/EquipItem.hpp" +#include "Player/EquipBomb.hpp" +#include "Player/EquipBombchu.hpp" +#include "Player/EquipBoomerang.hpp" +#include "Player/EquipBow.hpp" +#include "Player/EquipHammer.hpp" +#include "Player/EquipItem.hpp" +#include "Player/EquipPotion.hpp" +#include "Player/EquipRope.hpp" +#include "Player/EquipScoop.hpp" +#include "Player/EquipShield.hpp" +#include "Player/EquipSword.hpp" #include "Actors/Navi/Navi.hpp" +#include "OverlayManager.hpp" #define MAX_HOURGLASS_SECONDS 1500 // 25 minutes @@ -95,6 +109,26 @@ struct ShipParts { /* 9 */ }; +struct UnkStruct_027e0d38 { + /* 00 */ unk8 mUnk_00; + /* 01 */ unk8 mUnk_01[3]; // padding? + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1c */ unk16 mUnk_1c; + /* 1e */ unk8 mUnk_1e; + /* 1f */ unk8 mUnk_1f; + /* 20 */ unk8 mUnk_20; + /* 21 */ unk8 mUnk_21; + /* 22 */ unk8 mUnk_22[2]; // padding? + /* 24 */ void *mUnk_24; + /* 28 */ void *mUnk_28; + /* 2c */ +}; + struct SaveInventory { /* 00 */ ItemFlags itemFlags; /* 10 */ u32 salvagedTreasureFlags; @@ -131,9 +165,7 @@ private: /* 008 */ ItemFlag mForcedItem; // game crashes when any item besides this one is equipped /* 00c */ u32 mHourglassSandFrames; /* 010 */ FairyId mEquippedFairy; - /* 014 */ Navi *mNaviCourage; - /* 018 */ Navi *mNaviPower; - /* 01c */ Navi *mNaviWisdom; + /* 014 */ Navi *mFairies[FairyId_COUNT]; /* 020 */ u16 mEquipLoadTimer; /* 022 */ u16 mNumRupees; /* 024 */ u8 mNumGems[Gem_COUNT]; @@ -175,6 +207,22 @@ public: void ClearPrevEquippedItem(); void Save(SaveInventory *save); void Load(const SaveInventory *save); + + FairyId GetEquippedFairy() const; + Navi* GetFairy(FairyId id) const; + + void TickEquipItem(); + ItemFlag GetEquippedItem() const; // 020ae390 + void Sword_vfunc_38(); // 020ad5bc + void Shield_vfunc_38(); // 020ad5d8 + void EquipItem_vfunc_38(unk32 param1, unk32 param2, unk32 param3); // 020ad5f4 + + void* GetIslandData(u32 index); // 020ad52c + void* GetDungeonData(u32 index); // 020ad588 + + void func_020ad538(unk32 param1); // 020ad538 + void func_020ad560(unk32 param1); // 020ad560 + void func_020ad594(unk32 param1); // 020ad594 bool HasItem(ItemFlag item); }; diff --git a/include/OverlayManager.hpp b/include/OverlayManager.hpp new file mode 100644 index 00000000..ce0a68fe --- /dev/null +++ b/include/OverlayManager.hpp @@ -0,0 +1,100 @@ +#pragma once + +#include "types.h" +#include "Item.hpp" + +typedef u32 OverlayId; +enum OverlayId_ { + OverlayId_Core, + OverlayId_01, + OverlayId_02, + OverlayId_03, + OverlayId_Memory, + OverlayId_05, + OverlayId_06, + OverlayId_07, + OverlayId_08, + OverlayId_09, + OverlayId_10, + OverlayId_11, + OverlayId_12, + OverlayId_13, + OverlayId_14, + OverlayId_15, + OverlayId_16, + OverlayId_17, + OverlayId_18, + OverlayId_19, + OverlayId_20, + OverlayId_21, + OverlayId_22, + OverlayId_23, + OverlayId_24, + OverlayId_25, + OverlayId_26, + OverlayId_27, + OverlayId_28, + OverlayId_29, + OverlayId_30, + OverlayId_31, + OverlayId_32, + OverlayId_33, + OverlayId_34, + OverlayId_35, + OverlayId_36, + OverlayId_37, + OverlayId_38, + OverlayId_39, + OverlayId_40, + OverlayId_41, + OverlayId_42, + OverlayId_43, + OverlayId_44, + OverlayId_45, + OverlayId_46, + OverlayId_47, + OverlayId_48, + OverlayId_49, + OverlayId_50, + OverlayId_51, + OverlayId_52, + OverlayId_PlayerBoomerang, + OverlayId_PlayerScoop, + OverlayId_PlayerBomb, + OverlayId_PlayerBow, + OverlayId_PlayerRope, + OverlayId_PlayerBombchu, + OverlayId_PlayerHammer, + OverlayId_60, + OverlayId_61, +}; + +typedef u32 OverlayIndex; +enum OverlayIndex_ { + OverlayIndex_Core, + OverlayIndex_1, + OverlayIndex_2, + OverlayIndex_3, + OverlayIndex_4, + OverlayIndex_5, + OverlayIndex_6, + OverlayIndex_7, + OverlayIndex_8, + OverlayIndex_9, + OverlayIndex_10, + OverlayIndex_EquipItem, + OverlayIndex_12, + OverlayIndex_COUNT, +}; + +class OverlayManager { + OverlayId mLoadedOverlays[OverlayIndex_COUNT]; + +public: + void Unload(OverlayIndex index); + void Load(OverlayIndex index, OverlayId id); + void LoadIfNotLoaded(OverlayIndex index, OverlayId id); + void LoadEquipItem(ItemFlag equipId); +}; + +extern OverlayManager gOverlayManager; diff --git a/src/Inventory.cpp b/src/Inventory.cpp index 4ab8ec08..969eb26d 100644 --- a/src/Inventory.cpp +++ b/src/Inventory.cpp @@ -1,6 +1,4 @@ #include "Inventory.hpp" -#include "lib/math.h" -#include "global.h" extern u32 *data_027e0ce0[]; @@ -151,3 +149,42 @@ NONMATCH void Inventory::Load(const SaveInventory *save) { #endif } #pragma thumb off + +#pragma interworking on +FairyId Inventory::GetEquippedFairy() const { + FairyId fairy = this->mEquippedFairy; + if (fairy == FairyId_None) return FairyId_Courage; + return fairy; +} + +Navi* Inventory::GetFairy(FairyId id) const { + return this->mFairies[id]; +} +#pragma interworking off + +extern UnkStruct_027e0d38 *data_027e0d38; +extern unk32 gPlayerAnimHandler; +extern "C" void LoadEquipItemModel(unk32 param1, ItemFlag param2); +extern "C" void _ZNK9Inventory15GetEquippedItemEv(); +extern "C" void _ZN14OverlayManager13LoadEquipItemEj(); +NONMATCH void Inventory::TickEquipItem(void) { + #ifndef NONMATCHING + #include "../asm/ov00/inventory/Inventory_TickEquipItem.inc" + #else + ItemFlag equip = this->GetEquippedItem(); + if (this->mEquipLoadTimer != 0) { + this->mEquipLoadTimer -= 1; + if (this->mEquipLoadTimer == 0 && equip != ItemFlag_None && data_027e0d38->mUnk_14 != 1) { + gOverlayManager.LoadEquipItem(equip); + LoadEquipItemModel(gPlayerAnimHandler, equip); + (*this->mEquipItems)[equip]->vfunc_00(); + } + } + (*this->mEquipItems)[ItemFlag_OshusSword]->vfunc_30(); + (*this->mEquipItems)[ItemFlag_WoodenShield]->vfunc_30(); + if (data_027e0d38->mUnk_14 == 1) return; + if (equip != ItemFlag_None && this->mEquipLoadTimer == 0) { + (*this->mEquipItems)[equip]->vfunc_30(); + } + #endif +}