diff --git a/asm/dtcm.inc b/asm/dtcm.inc new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/asm/dtcm.inc @@ -0,0 +1 @@ +#pragma once diff --git a/asm/dtcm.s b/asm/dtcm.s index f5396ec0..efa2e951 100644 --- a/asm/dtcm.s +++ b/asm/dtcm.s @@ -1,3 +1,4 @@ + .include "dtcm.inc" .include "macros/function.inc" .data diff --git a/asm/include/itcm.inc b/asm/itcm.inc similarity index 100% rename from asm/include/itcm.inc rename to asm/itcm.inc diff --git a/asm/itcm.s b/asm/itcm.s index 915fc25b..8bbd3d49 100644 --- a/asm/itcm.s +++ b/asm/itcm.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/itcm.inc" + .include "itcm.inc" .text diff --git a/asm/include/main.inc b/asm/main.inc similarity index 100% rename from asm/include/main.inc rename to asm/main.inc diff --git a/asm/main.s b/asm/main.s index fcd06488..58da0628 100644 --- a/asm/main.s +++ b/asm/main.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/main.inc" + .include "main.inc" .text .ifdef EUR diff --git a/asm/ov00/Item/Item.inc b/asm/ov00/Item/Item.inc new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/asm/ov00/Item/Item.inc @@ -0,0 +1 @@ +#pragma once diff --git a/asm/ov00/Item/Item.s b/asm/ov00/Item/Item.s index e75d9efd..469d6e6c 100644 --- a/asm/ov00/Item/Item.s +++ b/asm/ov00/Item/Item.s @@ -1,3 +1,4 @@ + .include "ov00/Item/Item.inc" .include "macros/function.inc" .text diff --git a/asm/ov00/Item/include/ItemManager.inc b/asm/ov00/Item/ItemManager.inc similarity index 100% rename from asm/ov00/Item/include/ItemManager.inc rename to asm/ov00/Item/ItemManager.inc diff --git a/asm/ov00/Item/ItemManager.s b/asm/ov00/Item/ItemManager.s index 87783a2d..e2a2a4a6 100644 --- a/asm/ov00/Item/ItemManager.s +++ b/asm/ov00/Item/ItemManager.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/Item/include/ItemManager.inc" + .include "ov00/Item/ItemManager.inc" .text diff --git a/asm/ov00/Player/include/LinkStateBase.inc b/asm/ov00/Player/LinkStateBase.inc similarity index 94% rename from asm/ov00/Player/include/LinkStateBase.inc rename to asm/ov00/Player/LinkStateBase.inc index b86d4073..c1c42df5 100644 --- a/asm/ov00/Player/include/LinkStateBase.inc +++ b/asm/ov00/Player/LinkStateBase.inc @@ -4,7 +4,8 @@ .extern _ZN10PlayerBase6LookAtEP5Vec3p .extern _ZN11ItemManager12GetEquipItemEi .extern _ZN11ItemManager22UpdateSwordShieldInUseEv -.extern _ZN13LinkStateRoll18func_ov00_020aeeacEv +.extern _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv +.extern _ZN13PlayerControl18func_ov00_020af4a4Ev .extern data_02050f54 .extern data_027e0618 .extern data_027e0c68 @@ -33,7 +34,6 @@ .extern func_ov00_0208b180 .extern func_ov00_02097bbc .extern func_ov00_020a5e9c -.extern func_ov00_020af4a4 .extern func_ov00_020b1498 .extern func_ov00_020b1a4c .extern func_ov00_020b44d4 diff --git a/asm/ov00/Player/LinkStateBase.s b/asm/ov00/Player/LinkStateBase.s index 9848fda1..50b43eeb 100644 --- a/asm/ov00/Player/LinkStateBase.s +++ b/asm/ov00/Player/LinkStateBase.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/Player/include/LinkStateBase.inc" + .include "ov00/Player/LinkStateBase.inc" .text @@ -68,7 +68,7 @@ _020a8010: ; jump table _020a8030: cmp r4, #0 beq _020a8048 - bl _ZN13LinkStateRoll18func_ov00_020aeeacEv + bl _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv cmp r0, #0 movne r0, #1 ldmneia sp!, {r3, r4, r5, r6, r7, pc} @@ -83,7 +83,7 @@ _020a8050: bl _ZN13LinkStateBase29HasFlags_PlayerLinkBase_Unk48Et cmp r0, #0 bne _020a807c - bl _ZN13LinkStateRoll18func_ov00_020aeeacEv + bl _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv cmp r0, #0 movne r0, #1 ldmneia sp!, {r3, r4, r5, r6, r7, pc} @@ -113,7 +113,7 @@ _020a80c8: beq _020a80e8 ldr r0, _020a8104 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af4a4 + bl _ZN13PlayerControl18func_ov00_020af4a4Ev cmp r0, #0 movne r0, #1 ldmneia sp!, {r3, r4, r5, r6, r7, pc} diff --git a/asm/ov00/Player/include/LinkStateDamage.inc b/asm/ov00/Player/LinkStateDamage.inc similarity index 100% rename from asm/ov00/Player/include/LinkStateDamage.inc rename to asm/ov00/Player/LinkStateDamage.inc diff --git a/asm/ov00/Player/LinkStateDamage.s b/asm/ov00/Player/LinkStateDamage.s index f063f875..9b3ad819 100644 --- a/asm/ov00/Player/LinkStateDamage.s +++ b/asm/ov00/Player/LinkStateDamage.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/Player/include/LinkStateDamage.inc" + .include "ov00/Player/LinkStateDamage.inc" .text diff --git a/asm/ov00/Player/include/LinkStateInteract.inc b/asm/ov00/Player/LinkStateInteract.inc similarity index 87% rename from asm/ov00/Player/include/LinkStateInteract.inc rename to asm/ov00/Player/LinkStateInteract.inc index f156a0bd..b67d9ad2 100644 --- a/asm/ov00/Player/include/LinkStateInteract.inc +++ b/asm/ov00/Player/LinkStateInteract.inc @@ -28,6 +28,13 @@ .extern _ZN13LinkStateBase6LookAtEP5Vec3p .extern _ZN13LinkStateBase8vfunc_24Ei .extern _ZN13LinkStateBase8vfunc_28Ev +.extern _ZN13PlayerControl13StopFollowingEv +.extern _ZN13PlayerControl14GetFollowActorEv +.extern _ZN13PlayerControl18func_ov00_020afe88Eib +.extern _ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb +.extern _ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p +.extern _ZN13PlayerControl18func_ov00_020b0ad0EP5Actor +.extern _ZN13PlayerControl9SetUnk_80Ev .extern _ZNK11ItemManager16GetEquippedFairyEv .extern _ZNK11ItemManager8GetFairyEi .extern data_02050f54 @@ -48,13 +55,6 @@ .extern func_0202da8c .extern func_020350b4 .extern func_020351b8 -.extern func_ov00_020aeffc -.extern func_ov00_020af044 -.extern func_ov00_020af050 -.extern func_ov00_020afe88 -.extern func_ov00_020b049c -.extern func_ov00_020b05e8 -.extern func_ov00_020b0ad0 .extern func_ov00_020ba458 .extern func_ov00_020c1908 .extern func_ov00_020c2a0c diff --git a/asm/ov00/Player/LinkStateInteract.s b/asm/ov00/Player/LinkStateInteract.s index 0e217b83..302551b5 100644 --- a/asm/ov00/Player/LinkStateInteract.s +++ b/asm/ov00/Player/LinkStateInteract.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/Player/include/LinkStateInteract.inc" + .include "ov00/Player/LinkStateInteract.inc" .text @@ -282,7 +282,7 @@ _020aa590: _020aa5a0: ldr r0, _020aa78c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev ldr r1, _020aa790 ; =data_ov00_020e592c mov r0, r4 mov r2, #1 @@ -345,7 +345,7 @@ _020aa674: _020aa684: ldr r0, _020aa78c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev ldr r0, _020aa7a8 ; =data_027e0fe4 add r1, r4, #0x10 ldr r0, [r0] @@ -406,7 +406,7 @@ _020aa74c: _020aa75c: ldr r0, _020aa78c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev b _020aa778 _020aa76c: mov r0, r4 @@ -441,7 +441,7 @@ _ZN17LinkStateInteract12OnStateLeaveEi: ; 0x020aa7b0 ldrb r1, [r0, #0x80] cmp r1, #0 beq _020aa7d4 - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv _020aa7d4: mov r0, r4 bl _ZN13LinkStateBase12GetGrabActorEv @@ -810,7 +810,7 @@ _020aacf4: ldr r0, _020ab3cc ; =data_027e0fb8 add r1, r4, #0x18 ldr r0, [r0] - bl func_ov00_020b05e8 + bl _ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p cmp r0, #0 beq _020aad64 _020aad3c: @@ -831,7 +831,7 @@ _020aad64: mov r2, r5 ldr r0, [r0] add r1, r4, #0x18 - bl func_ov00_020b049c + bl _ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb cmp r0, #0 beq _020aadb0 _020aad88: @@ -867,7 +867,7 @@ _020aadbc: ldr r2, _020ab3cc ; =data_027e0fb8 ldr r1, [r0, #0xe0] ldr r0, [r2] - bl func_ov00_020b0ad0 + bl _ZN13PlayerControl18func_ov00_020b0ad0EP5Actor cmp r0, #0 beq _020aae2c mov r0, r4 @@ -897,12 +897,12 @@ _020aae54: ldr r1, [r6, #0x12c] ldr r0, [r0] moveq r2, #0 - bl func_ov00_020afe88 + bl _ZN13PlayerControl18func_ov00_020afe88Eib cmp r0, #0 bne _020aae90 ldr r0, _020ab3cc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv add sp, sp, #0xc8 mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} @@ -999,7 +999,7 @@ _020aafd8: bge _020aaff4 ldr r0, _020ab3cc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev _020aaff4: add sp, sp, #0xc8 mov r0, #0 @@ -1120,7 +1120,7 @@ _020ab170: strb r1, [r2, #0x79] strb r1, [r2, #0x7b] ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev mov r0, #3 str r0, [r4, #4] ldr r1, [sp, #0x14] @@ -1253,7 +1253,7 @@ _020ab38c: _020ab398: ldr r0, _020ab3cc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv add sp, sp, #0xc8 mov r0, #1 ldmia sp!, {r4, r5, r6, r7, r8, pc} @@ -1561,7 +1561,7 @@ _ZN17LinkStateInteract18func_ov00_020ab770EP5Vec3p: ; 0x020ab770 mov r6, r0 ldr r0, [r2] mov r5, r1 - bl func_ov00_020aeffc + bl _ZN13PlayerControl14GetFollowActorEv movs r4, r0 beq _020ab7a8 mov r0, r6 diff --git a/asm/ov00/Player/include/LinkStateItem.inc b/asm/ov00/Player/LinkStateItem.inc similarity index 95% rename from asm/ov00/Player/include/LinkStateItem.inc rename to asm/ov00/Player/LinkStateItem.inc index 90d69366..74d2b300 100644 --- a/asm/ov00/Player/include/LinkStateItem.inc +++ b/asm/ov00/Player/LinkStateItem.inc @@ -3,6 +3,7 @@ .extern _ZN13LinkStateBase12OnStateLeaveEi .extern _ZN13LinkStateBase18EquipItem_vfunc_28Ev .extern _ZN13LinkStateBase8vfunc_34EP5Vec3p +.extern _ZN13PlayerControl13StopFollowingEv .extern data_027e0f74 .extern data_027e0fb8 .extern data_027e103c @@ -10,7 +11,6 @@ .extern func_01fffcd8 .extern func_01fffcec .extern func_ov00_02097b9c -.extern func_ov00_020af050 .extern func_ov00_020b7e6c .extern func_ov00_020cf01c .extern func_ov00_020cf9dc diff --git a/asm/ov00/Player/LinkStateItem.s b/asm/ov00/Player/LinkStateItem.s index 5a7961e0..6ce1ab84 100644 --- a/asm/ov00/Player/LinkStateItem.s +++ b/asm/ov00/Player/LinkStateItem.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/Player/include/LinkStateItem.inc" + .include "ov00/Player/LinkStateItem.inc" .text @@ -150,7 +150,7 @@ _020abf20: ldrb r1, [r0, #0x80] cmp r1, #0 beq _020abf38 - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv _020abf38: mov r0, #0 strb r0, [r5, #0x26] diff --git a/asm/ov00/Player/include/LinkStateRoll.inc b/asm/ov00/Player/LinkStateRoll.inc similarity index 88% rename from asm/ov00/Player/include/LinkStateRoll.inc rename to asm/ov00/Player/LinkStateRoll.inc index 76ebe90e..45e2b8f3 100644 --- a/asm/ov00/Player/include/LinkStateRoll.inc +++ b/asm/ov00/Player/LinkStateRoll.inc @@ -20,18 +20,17 @@ .extern _ZN13LinkStateBase8vfunc_24Ei .extern _ZN13LinkStateBase8vfunc_28Ev .extern _ZN13LinkStateBase8vfunc_34EP5Vec3p +.extern _ZN13PlayerControl13StopFollowingEv +.extern _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv +.extern _ZN13PlayerControl18func_ov00_020b034cEv +.extern _ZN13PlayerControl18func_ov00_020b12d0EPs .extern data_02050f54 -.extern data_02056be4 .extern data_027e0618 -.extern data_027e077c .extern data_027e0e58 .extern data_027e0fb8 .extern data_ov00_020eec9c .extern func_ov00_0207c39c .extern func_ov00_0207c444 -.extern func_ov00_020af050 -.extern func_ov00_020b034c -.extern func_ov00_020b12d0 .extern func_ov00_020b4c2c .extern func_ov00_020b7e6c .extern func_ov00_020d7a84 diff --git a/asm/ov00/Player/LinkStateRoll.s b/asm/ov00/Player/LinkStateRoll.s index 852c16f8..dae807b8 100644 --- a/asm/ov00/Player/LinkStateRoll.s +++ b/asm/ov00/Player/LinkStateRoll.s @@ -1,4 +1,4 @@ - .include "ov00/Player/include/LinkStateRoll.inc" + .include "ov00/Player/LinkStateRoll.inc" .include "macros/function.inc" .text @@ -117,7 +117,7 @@ _020ae7e8: _020ae8f0: ldr r0, _020aeb18 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv ldr r1, _020aeb1c ; =data_ov00_020e6078 mov r0, r4 mov r2, #1 @@ -366,7 +366,7 @@ _ZN13LinkStateRoll8vfunc_20Ei: ; 0x020aec10 bl _ZN13LinkStateBase14GetPlayerAngleEv mov r1, r0 mov r0, r6 - bl func_ov00_020b12d0 + bl _ZN13PlayerControl18func_ov00_020b12d0EPs cmp r0, #0 beq _020aecc8 mov r0, r5 @@ -421,12 +421,12 @@ _020aed08: blt _020aed70 ldr r0, _020aed84 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv cmp r0, #0 ble _020aed70 ldr r0, _020aed84 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv mov r2, #0 mov r1, r0 mov r0, r5 @@ -496,7 +496,7 @@ _020aee14: bl func_ov05_0211139c cmp r0, #0 bne _020aee48 - bl _ZN13LinkStateRoll18func_ov00_020aeeacEv + bl _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv cmp r0, #0 beq _020aee48 mov r0, #1 @@ -542,33 +542,6 @@ _ZN13LinkStateRoll18func_ov00_020aee84Ev: ; 0x020aee84 bx lr arm_func_end _ZN13LinkStateRoll18func_ov00_020aee84Ev - .global _ZN13LinkStateRoll18func_ov00_020aeeacEv - arm_func_start _ZN13LinkStateRoll18func_ov00_020aeeacEv -_ZN13LinkStateRoll18func_ov00_020aeeacEv: ; 0x020aeeac - ldr r0, _020aeef0 ; =data_027e077c - ldr r2, _020aeef4 ; =data_02056be4 - ldr r1, [r0] - mov r3, r1 - ldrb r1, [r2, r1] - tst r1, #1 - bne _020aeed4 - ldrb r1, [r2, r3] - tst r1, #4 - beq _020aeedc -_020aeed4: - mov r0, #0 - bx lr -_020aeedc: - ldr r0, [r0, #4] - cmp r3, r0 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 - arm_func_end _ZN13LinkStateRoll18func_ov00_020aeeacEv -_020aeef0: .word data_027e077c -_020aeef4: .word data_02056be4 - .data .global data_ov00_020e6078 data_ov00_020e6078: ; 0x020e6078 diff --git a/asm/ov00/Player/include/PlayerBase.inc b/asm/ov00/Player/PlayerBase.inc similarity index 95% rename from asm/ov00/Player/include/PlayerBase.inc rename to asm/ov00/Player/PlayerBase.inc index fad2d820..594eaac5 100644 --- a/asm/ov00/Player/include/PlayerBase.inc +++ b/asm/ov00/Player/PlayerBase.inc @@ -1,6 +1,7 @@ #pragma once .extern _ZN11ItemManager18EquipItem_vfunc_2cEi .extern _ZN11ItemManager18EquipItem_vfunc_3cEP5Vec4pi +.extern _ZN13PlayerControl9UpdateAimEv .extern _ZNK11ItemManager16GetEquippedFairyEv .extern _ZNK11ItemManager8GetFairyEi .extern data_027e0c54 @@ -25,7 +26,6 @@ .extern func_ov00_0208ae94 .extern func_ov00_0208f030 .extern func_ov00_02097700 -.extern func_ov00_020aef68 .extern func_ov00_020c357c .extern func_ov04_0210b258 .extern func_ov04_0210b280 diff --git a/asm/ov00/Player/PlayerBase.s b/asm/ov00/Player/PlayerBase.s index 3f16690c..7a30d8ba 100644 --- a/asm/ov00/Player/PlayerBase.s +++ b/asm/ov00/Player/PlayerBase.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/Player/include/PlayerBase.inc" + .include "ov00/Player/PlayerBase.inc" .text @@ -358,7 +358,7 @@ _ZN10PlayerBase18TeleportToEntranceEib: ; 0x020a7e70 ldr r0, _020a7f78 ; =data_027e0fb8 str r5, [r1, #8] ldr r0, [r0] - blx func_ov00_020aef68 + blx _ZN13PlayerControl9UpdateAimEv ldr r0, _020a7f7c ; =data_027e0fe4 ldrb r1, [sp, #0x18] ldr r0, [r0] diff --git a/asm/ov00/Player/PlayerControl.inc b/asm/ov00/Player/PlayerControl.inc new file mode 100644 index 00000000..c1c0a674 --- /dev/null +++ b/asm/ov00/Player/PlayerControl.inc @@ -0,0 +1,79 @@ +#pragma once +.extern _ZN11ItemManager12GetEquipItemEi +.extern _ZN11ItemManager18func_ov00_020ad790Ei +.extern _ZNK11ItemManager15GetEquippedItemEv +.extern _ZNK11ItemManager16GetEquippedFairyEv +.extern _ZNK11ItemManager8GetFairyEi +.extern _ZNK11ItemManager9HasPotionEj +.extern data_02050f54 +.extern data_02056be4 +.extern data_027e05f8 +.extern data_027e077c +.extern data_027e0c68 +.extern data_027e0d0c +.extern data_027e0d38 +.extern data_027e0e2c +.extern data_027e0e60 +.extern data_027e0f64 +.extern data_027e0f74 +.extern data_027e0f90 +.extern data_027e0f94 +.extern data_027e0fac +.extern data_027e0fc8 +.extern data_027e0fcc +.extern data_027e0fe4 +.extern data_027e0ffc +.extern data_027e103c +.extern data_ov00_020eec60 +.extern data_ov00_020eec9c +.extern func_01ff991c +.extern func_01ff992c +.extern func_01ff9958 +.extern func_01ff9bf8 +.extern func_01ff9c2c +.extern func_01ff9cec +.extern func_01ff9e64 +.extern func_01ff9ec0 +.extern func_01ffa0f4 +.extern func_01ffe468 +.extern func_02002c14 +.extern func_0202b2e8 +.extern func_0202d95c +.extern func_ov00_02078b40 +.extern func_ov00_02083a1c +.extern func_ov00_02083c24 +.extern func_ov00_02083c50 +.extern func_ov00_02083c7c +.extern func_ov00_020840c4 +.extern func_ov00_02085108 +.extern func_ov00_02085594 +.extern func_ov00_0208b180 +.extern func_ov00_02097738 +.extern func_ov00_02097750 +.extern func_ov00_020a5e9c +.extern func_ov00_020b78a0 +.extern func_ov00_020b7924 +.extern func_ov00_020b7d4c +.extern func_ov00_020b7d6c +.extern func_ov00_020ba204 +.extern func_ov00_020baca8 +.extern func_ov00_020bad18 +.extern func_ov00_020bc46c +.extern func_ov00_020c28ec +.extern func_ov00_020c2a0c +.extern func_ov00_020c3484 +.extern func_ov00_020c3674 +.extern func_ov00_020cebcc +.extern func_ov00_020ced64 +.extern func_ov00_020ced7c +.extern func_ov00_020cf20c +.extern func_ov00_020cf2b8 +.extern func_ov00_020cf330 +.extern func_ov00_020d6be4 +.extern func_ov00_020d77e4 +.extern func_ov05_02103f4c +.extern func_ov15_0213ce4c +.extern func_ov15_0213dcb0 +.extern func_ov15_0213dcb8 +.extern func_ov24_02178348 +.extern gItemManager diff --git a/asm/ov00/Player/PlayerControl.s b/asm/ov00/Player/PlayerControl.s new file mode 100644 index 00000000..3690a656 --- /dev/null +++ b/asm/ov00/Player/PlayerControl.s @@ -0,0 +1,2959 @@ + .include "ov00/Player/PlayerControl.inc" + .include "macros/function.inc" + + .text + + .global _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv + arm_func_start _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv +_ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv: ; 0x020aeeac + ldr r0, _020aeef0 ; =data_027e077c + ldr r2, _020aeef4 ; =data_02056be4 + ldr r1, [r0] + mov r3, r1 + ldrb r1, [r2, r1] + tst r1, #1 + bne _020aeed4 + ldrb r1, [r2, r3] + tst r1, #4 + beq _020aeedc +_020aeed4: + mov r0, #0 + bx lr +_020aeedc: + ldr r0, [r0, #4] + cmp r3, r0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 + arm_func_end _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv +_020aeef0: .word data_027e077c +_020aeef4: .word data_02056be4 + + .global _ZN13PlayerControl18func_ov00_020aeef8Ev + arm_func_start _ZN13PlayerControl18func_ov00_020aeef8Ev +_ZN13PlayerControl18func_ov00_020aeef8Ev: ; 0x020aeef8 + stmdb sp!, {r3, lr} + ldr r0, _020aef2c ; =data_027e077c + ldr r1, [r0] + mov r0, r1 + cmp r1, #0x37 + cmpne r0, #0x3b + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #0x3d + moveq r0, #1 + ldmeqia sp!, {r3, pc} + bl _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv + ldmia sp!, {r3, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020aeef8Ev +_020aef2c: .word data_027e077c + + .global _ZN13PlayerControl18func_ov00_020aef30Ev + thumb_func_start _ZN13PlayerControl18func_ov00_020aef30Ev +_ZN13PlayerControl18func_ov00_020aef30Ev: ; 0x020aef30 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + blx func_ov00_020b78a0 + add r4, #0xd4 + ldr r0, [r4] + cmp r0, #0 + beq _020aef56 + ldr r1, _020aef5c ; =0x504c5952 + ldr r2, _020aef60 ; =data_ov00_020e6148 + str r1, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r4, [r0] + ldr r3, _020aef64 ; =0x5043544c + ldr r4, [r4, #0x20] + blx r4 +_020aef56: + add sp, #0xc + pop {r3, r4, pc} + nop + thumb_func_end _ZN13PlayerControl18func_ov00_020aef30Ev +_020aef5c: .word 0x504c5952 +_020aef60: .word data_ov00_020e6148 +_020aef64: .word 0x5043544c + + .global _ZN13PlayerControl9UpdateAimEv + thumb_func_start _ZN13PlayerControl9UpdateAimEv +_ZN13PlayerControl9UpdateAimEv: ; 0x020aef68 + push {r4, lr} + add r4, r0, #0 + blx func_ov00_020b78a0 + add r1, r4, #0 + mov r0, #0 + add r1, #0xbc + str r0, [r1] + add r1, r4, #0 + add r1, #0xc0 + str r0, [r1] + add r1, r4, #0 + add r1, #0xc4 + str r0, [r1] + add r1, r4, #0 + add r1, #0x80 + strb r0, [r1] + add r1, r4, #0 + add r1, #0x82 + strb r0, [r1] + add r1, r4, #0 + sub r2, r0, #1 + add r1, #0x84 + str r2, [r1] + add r1, r4, #0 + add r1, #0x88 + str r2, [r1] + add r1, r4, #0 + add r1, #0x8c + str r2, [r1] + add r1, r4, #0 + add r1, #0x90 + str r2, [r1] + add r1, r4, #0 + add r1, #0x81 + strb r0, [r1] + ldr r1, _020aeff0 ; =data_027e0d0c + add r0, r4, #0 + ldr r2, [r1] + add r0, #0xb0 + str r2, [r0] + add r0, r4, #0 + ldr r2, [r1, #4] + add r0, #0xb4 + str r2, [r0] + add r0, r4, #0 + ldr r1, [r1, #8] + add r0, #0xb8 + str r1, [r0] + ldr r0, _020aeff4 ; =data_027e0d38 + ldr r0, [r0] + blx func_ov00_02078b40 + cmp r0, #2 + bne _020aefde + ldr r0, _020aeff8 ; =data_027e103c + ldr r0, [r0] + blx func_ov00_020cf2b8 +_020aefde: + add r0, r4, #0 + mov r1, #0 + mvn r1, r1 + add r0, #0xc8 + str r1, [r0] + add r4, #0xcc + str r1, [r4] + pop {r4, pc} + nop + thumb_func_end _ZN13PlayerControl9UpdateAimEv +_020aeff0: .word data_027e0d0c +_020aeff4: .word data_027e0d38 +_020aeff8: .word data_027e103c + + .global _ZN13PlayerControl14GetFollowActorEv + arm_func_start _ZN13PlayerControl14GetFollowActorEv +_ZN13PlayerControl14GetFollowActorEv: ; 0x020aeffc + ldr r1, _020af014 ; =data_027e0fe4 + mov r2, r0 + ldr r0, [r1] + ldr ip, _020af018 ; =func_ov00_020c3674 + add r1, r2, #0x84 + bx ip + .align 2, 0 + arm_func_end _ZN13PlayerControl14GetFollowActorEv +_020af014: .word data_027e0fe4 +_020af018: .word func_ov00_020c3674 + + .global _ZN13PlayerControl18func_ov00_020af01cEPc + arm_func_start _ZN13PlayerControl18func_ov00_020af01cEPc +_ZN13PlayerControl18func_ov00_020af01cEPc: ; 0x020af01c + ldrb r2, [r0, #0x81] + cmp r2, #0 + moveq r0, #0 + bxeq lr + ldrb r2, [r0, #0x9c] + strb r2, [r1] + ldrb r2, [r0, #0x9d] + mov r0, #1 + strb r2, [r1, #1] + bx lr + arm_func_end _ZN13PlayerControl18func_ov00_020af01cEPc + + .global _ZN13PlayerControl9SetUnk_80Ev + arm_func_start _ZN13PlayerControl9SetUnk_80Ev +_ZN13PlayerControl9SetUnk_80Ev: ; 0x020af044 + mov r1, #1 + strb r1, [r0, #0x80] + bx lr + arm_func_end _ZN13PlayerControl9SetUnk_80Ev + + .global _ZN13PlayerControl13StopFollowingEv + arm_func_start _ZN13PlayerControl13StopFollowingEv +_ZN13PlayerControl13StopFollowingEv: ; 0x020af050 + mvn r1, #0 + str r1, [r0, #0x84] + str r1, [r0, #0x88] + mov r1, #0 + strb r1, [r0, #0x81] + str r1, [r0, #0xa0] + bx lr + arm_func_end _ZN13PlayerControl13StopFollowingEv + + .global _ZN13PlayerControl18func_ov00_020af06cEv + arm_func_start _ZN13PlayerControl18func_ov00_020af06cEv +_ZN13PlayerControl18func_ov00_020af06cEv: ; 0x020af06c + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldrb r0, [r6, #0x78] + cmp r0, #0 + moveq r0, #0 + streqb r0, [r6, #0x79] + ldmeqia sp!, {r4, r5, r6, pc} + ldrb r0, [r6, #0x7a] + ldrb r5, [r6, #0x79] + cmp r0, #0 + ldr r0, _020af27c ; =data_027e0f74 + strneb r5, [r6, #0x7b] + ldr r0, [r0] + bl func_ov00_02097738 + cmp r0, #0 + ldreq r0, _020af280 ; =data_027e0c68 + ldreqb r0, [r0, #4] + cmpeq r0, #0 + beq _020af0d4 + ldr r0, _020af284 ; =data_027e0d38 + ldr r0, [r0] + bl func_ov00_02078b40 + cmp r0, #2 + movne r0, #0 + strneb r0, [r6, #0x79] + ldmia sp!, {r4, r5, r6, pc} +_020af0d4: + ldr r0, _020af288 ; =gItemManager + ldr r0, [r0] + ldr r4, [r0] + cmp r4, #9 + bne _020af104 + mov r1, #0 + bl _ZNK11ItemManager9HasPotionEj + cmp r0, #0 + beq _020af124 + mov r0, #1 + strb r0, [r6, #0x79] + ldmia sp!, {r4, r5, r6, pc} +_020af104: + cmp r4, #0xa + bne _020af124 + mov r1, #1 + bl _ZNK11ItemManager9HasPotionEj + cmp r0, #0 + movne r0, #1 + strneb r0, [r6, #0x79] + ldmneia sp!, {r4, r5, r6, pc} +_020af124: + ldr r0, _020af284 ; =data_027e0d38 + ldr r0, [r0] + bl func_ov00_02078b40 + cmp r0, #2 + bne _020af164 + mov r1, #1 + ldr r0, _020af288 ; =gItemManager + strb r1, [r6, #0x7b] + ldr r0, [r0] + bl _ZN11ItemManager18func_ov00_020ad790Ei + ldrb r1, [r6, #0x7b] + tst r1, r0 + movne r0, #1 + moveq r0, #0 + strb r0, [r6, #0x7b] + b _020af268 +_020af164: + ldr r0, _020af28c ; =data_027e05f8 + ldrh r0, [r0] + tst r0, #0x300 + ldrneb r0, [r6, #0x7e] + cmpne r0, #0 + beq _020af190 + bl _ZN13PlayerControl18func_ov00_020aeef8Ev + cmp r0, #0 + movne r0, #1 + strneb r0, [r6, #0x7b] + bne _020af1f8 +_020af190: + ldr r0, _020af28c ; =data_027e05f8 + ldrh r0, [r0] + tst r0, #0x300 + bne _020af1b4 + ldrb r0, [r6, #0x83] + cmp r0, #0 + movne r0, #0 + strneb r0, [r6, #0x7b] + bne _020af1f8 +_020af1b4: + ldr r0, _020af290 ; =data_027e103c + ldr r0, [r0] + ldrsh r0, [r0, #0x20] + cmp r0, #2 + ldreqb r0, [r6, #0xc] + cmpeq r0, #0 + bne _020af1f8 + bl _ZN13PlayerControl18func_ov00_020aeef8Ev + cmp r0, #0 + beq _020af1f8 + ldrb r0, [r6, #0x7b] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [r6, #0x7b] + mov r0, #0 + strb r0, [r6, #0x7c] +_020af1f8: + ldr r0, _020af288 ; =gItemManager + mov r1, #1 + ldr r0, [r0] + bl _ZN11ItemManager18func_ov00_020ad790Ei + ldrb r1, [r6, #0x7b] + tst r1, r0 + movne r0, #1 + moveq r0, #0 + cmp r4, #8 + strb r0, [r6, #0x7b] + cmpeq r5, #0 + ldreqb r0, [r6, #0x7b] + cmpeq r0, #1 + bne _020af268 + ldr r0, _020af288 ; =gItemManager + mov r1, #0 + ldr r0, [r0] + bl _ZNK11ItemManager8GetFairyEi + cmp r0, #0 + beq _020af268 + ldr r1, _020af294 ; =data_027e0f94 + ldr r2, [r0, #0x50] + ldr r1, [r1, #4] + ldr r0, [r0, #0x48] + add r1, r1, #0x800 + str r0, [r6, #0xbc] + str r1, [r6, #0xc0] + str r2, [r6, #0xc4] +_020af268: + ldrb r0, [r6, #0x7a] + cmp r0, #0 + ldrneb r0, [r6, #0x7b] + strneb r0, [r6, #0x79] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020af06cEv +_020af27c: .word data_027e0f74 +_020af280: .word data_027e0c68 +_020af284: .word data_027e0d38 +_020af288: .word gItemManager +_020af28c: .word data_027e05f8 +_020af290: .word data_027e103c +_020af294: .word data_027e0f94 + + .global _ZN13PlayerControl20UpdateUsingEquipItemEv + arm_func_start _ZN13PlayerControl20UpdateUsingEquipItemEv +_ZN13PlayerControl20UpdateUsingEquipItemEv: ; 0x020af298 + stmdb sp!, {r4, lr} + ldr r1, _020af2d0 ; =data_027e05f8 + mov r4, r0 + ldrh r0, [r1] + tst r0, #0x300 + beq _020af2c4 + bl _ZN13PlayerControl18func_ov00_020aeef8Ev + cmp r0, #0 + movne r0, #1 + strneb r0, [r4, #0x79] + ldmneia sp!, {r4, pc} +_020af2c4: + mov r0, #0 + strb r0, [r4, #0x79] + ldmia sp!, {r4, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl20UpdateUsingEquipItemEv +_020af2d0: .word data_027e05f8 + + .global _ZN13PlayerControl18func_ov00_020af2d4Ejb + arm_func_start _ZN13PlayerControl18func_ov00_020af2d4Ejb +_ZN13PlayerControl18func_ov00_020af2d4Ejb: ; 0x020af2d4 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _020af3bc ; =data_027e0d38 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + mov r4, r2 + bl func_ov00_02078b40 + cmp r0, #2 + bne _020af33c + cmp r4, #0 + beq _020af33c + bl func_ov15_0213ce4c + ldrb r0, [r0, #0x3d] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + bl func_ov15_0213ce4c + bl func_ov15_0213dcb0 + cmp r0, #0 + bne _020af334 + bl func_ov15_0213ce4c + bl func_ov15_0213dcb8 + cmp r0, #0 + beq _020af33c +_020af334: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_020af33c: + ldrb r0, [r6, #0x7c] + cmp r0, #0 + beq _020af3ac + tst r5, #2 + mov r4, #1 + mov r2, #0 + beq _020af370 + ldr r0, _020af3c0 ; =data_027e077c + ldr r1, _020af3c4 ; =data_02056be4 + ldr r0, [r0] + ldrb r0, [r1, r0] + tst r0, #1 + movne r2, r4 +_020af370: + cmp r2, #0 + bne _020af3a4 + tst r5, #1 + beq _020af3a0 + bl _ZN13PlayerControl18func_ov00_020aeef8Ev + cmp r0, #0 + beq _020af3a0 + ldr r0, _020af3c8 ; =data_027e103c + ldr r0, [r0] + ldrb r0, [r0, #0x24] + cmp r0, #0 + bne _020af3a4 +_020af3a0: + mov r4, #0 +_020af3a4: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} +_020af3ac: + tst r5, #4 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020af2d4Ejb +_020af3bc: .word data_027e0d38 +_020af3c0: .word data_027e077c +_020af3c4: .word data_02056be4 +_020af3c8: .word data_027e103c + + .global _ZN13PlayerControl15CheckTouchedNowEj + arm_func_start _ZN13PlayerControl15CheckTouchedNowEj +_ZN13PlayerControl15CheckTouchedNowEj: ; 0x020af3cc + stmdb sp!, {r3, r4, r5, lr} + mov r2, #1 + mov r5, r0 + mov r4, #0 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + beq _020af3f4 + ldrh r0, [r5, #0x34] + tst r0, #1 + movne r4, #1 +_020af3f4: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end _ZN13PlayerControl15CheckTouchedNowEj + + .global _ZN13PlayerControl17CheckUntouchedNowEj + arm_func_start _ZN13PlayerControl17CheckUntouchedNowEj +_ZN13PlayerControl17CheckUntouchedNowEj: ; 0x020af3fc + stmdb sp!, {r3, r4, r5, lr} + mov r2, #1 + mov r5, r0 + mov r4, #0 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + beq _020af424 + ldrh r0, [r5, #0x34] + tst r0, #2 + movne r4, #1 +_020af424: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end _ZN13PlayerControl17CheckUntouchedNowEj + + .global _ZN13PlayerControl13CheckTouchingEj + arm_func_start _ZN13PlayerControl13CheckTouchingEj +_ZN13PlayerControl13CheckTouchingEj: ; 0x020af42c + stmdb sp!, {r4, lr} + mov r2, #1 + mov r4, r0 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + ldrneb r0, [r4, #0xc] + cmpne r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, pc} + arm_func_end _ZN13PlayerControl13CheckTouchingEj + + .global _ZN13PlayerControl14CheckTouchFastEj + arm_func_start _ZN13PlayerControl14CheckTouchFastEj +_ZN13PlayerControl14CheckTouchFastEj: ; 0x020af454 + stmdb sp!, {r4, lr} + mov r2, #1 + mov r4, r0 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + beq _020af49c + ldr r0, [r4, #0x5c] + cmp r0, #0x800 + ldrgtsh r0, [r4, #0x64] + cmpgt r0, #0 + ble _020af49c + ldrsh r1, [r4, #0x60] + cmp r0, r1 + bgt _020af49c + add r0, r0, #0xf + cmp r1, r0 + movlt r0, #1 + ldmltia sp!, {r4, pc} +_020af49c: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end _ZN13PlayerControl14CheckTouchFastEj + + .global _ZN13PlayerControl18func_ov00_020af4a4Ev + arm_func_start _ZN13PlayerControl18func_ov00_020af4a4Ev +_ZN13PlayerControl18func_ov00_020af4a4Ev: ; 0x020af4a4 + stmdb sp!, {r3, lr} + ldr r0, _020af528 ; =data_027e0d38 + ldr r0, [r0] + ldr r0, [r0, #0x28] + ldrb r0, [r0, #0x34] + cmp r0, #0 + bne _020af520 + ldr r1, _020af52c ; =data_027e0e2c + mvn r0, #0 + ldr r1, [r1, #4] + cmp r1, r0 + bne _020af520 + ldr r0, _020af530 ; =data_027e103c + ldr r0, [r0] + bl func_ov05_02103f4c + cmp r0, #0 + bne _020af520 + bl _ZN13PlayerControl18_ZN13PlayerControl18func_ov00_020aeeacEvEv + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, _020af534 ; =data_027e077c + ldr r0, [r0] + cmp r0, #0x1a + cmpne r0, #0x1b + cmpne r0, #0x1c + bne _020af518 + mov r0, #1 + ldmia sp!, {r3, pc} +_020af518: + mov r0, #0 + ldmia sp!, {r3, pc} +_020af520: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020af4a4Ev +_020af528: .word data_027e0d38 +_020af52c: .word data_027e0e2c +_020af530: .word data_027e103c +_020af534: .word data_027e077c + + .global _ZN13PlayerControl18func_ov00_020af538Ev + arm_func_start _ZN13PlayerControl18func_ov00_020af538Ev +_ZN13PlayerControl18func_ov00_020af538Ev: ; 0x020af538 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r0 + strb r1, [r4, #0x7c] + strb r2, [r4, #0x7e] + strb r1, [r4, #0x7d] + ldrb r0, [r4, #0x78] + cmp r0, #0 + beq _020af57c + ldr r0, _020af6c4 ; =data_027e0f74 + ldr r0, [r0] + bl func_ov00_02097738 + cmp r0, #0 + ldreq r0, _020af6c8 ; =data_027e0c68 + ldreqb r0, [r0, #4] + cmpeq r0, #0 + beq _020af584 +_020af57c: + mov r5, #1 + b _020af588 +_020af584: + mov r5, #0 +_020af588: + cmp r5, #0 + bne _020af5a0 + mov r0, r4 + bl _ZN13PlayerControl18func_ov00_020af4a4Ev + cmp r0, #0 + bne _020af5a8 +_020af5a0: + mov r0, #0 + strb r0, [r4, #0x7c] +_020af5a8: + cmp r5, #0 + bne _020af5bc + bl _ZN13PlayerControl18func_ov00_020aeef8Ev + cmp r0, #0 + bne _020af5c4 +_020af5bc: + mov r0, #0 + strb r0, [r4, #0x7d] +_020af5c4: + ldrb r1, [r4, #0x7c] + mov r0, r4 + bl func_ov00_020b7924 + ldrb r0, [r4, #0x7c] + cmp r0, #0 + beq _020af644 + ldrsh r0, [r4, #0x60] + cmp r0, #0 + bne _020af644 + mov r0, r4 + bl _ZN13PlayerControl14GetFollowActorEv + cmp r0, #0 + ldreqb r0, [r4, #0x81] + cmpeq r0, #0 + beq _020af620 + ldr r1, _020af6cc ; =data_027e0fac + ldr r0, _020af6d0 ; =data_027e0ffc + ldrsh r2, [r1] + ldr r1, _020af6d4 ; =0x0000010a + mov r3, #0 + bl func_ov00_020cebcc + mov r0, r4 + bl _ZN13PlayerControl13StopFollowingEv +_020af620: + ldr r0, _020af6d8 ; =data_027e0e60 + add r1, sp, #0 + ldr r0, [r0] + bl func_ov00_02085108 + cmp r0, #3 + cmpne r0, #7 + moveq r0, #1 + movne r0, #0 + strb r0, [r4, #0x82] +_020af644: + ldrb r5, [r4, #0x79] + mov r0, r4 + bl _ZN13PlayerControl18func_ov00_020af06cEv + cmp r5, #0 + beq _020af670 + ldrb r0, [r4, #0x79] + cmp r0, #0 + bne _020af670 + ldr r0, _020af6dc ; =data_027e103c + ldr r0, [r0] + bl func_ov00_020cf20c +_020af670: + mov r5, #0 +_020af674: + ldr r0, [r4, #0xd0] + ldr r0, [r0, r5, lsl #2] + cmp r0, #0 + beq _020af694 + ldr r2, [r0] + mov r1, r4 + ldr r2, [r2, #0xc] + blx r2 +_020af694: + add r5, r5, #1 + cmp r5, #2 + blt _020af674 + mov r1, #0 + ldr r0, _020af6e0 ; =data_027e05f8 + strb r1, [r4, #0x7f] + ldrh r0, [r0] + tst r0, #0x300 + movne r1, #1 + strb r1, [r4, #0x83] + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020af538Ev +_020af6c4: .word data_027e0f74 +_020af6c8: .word data_027e0c68 +_020af6cc: .word data_027e0fac +_020af6d0: .word data_027e0ffc +_020af6d4: .word 0x0000010a +_020af6d8: .word data_027e0e60 +_020af6dc: .word data_027e103c +_020af6e0: .word data_027e05f8 + + .global _ZN13PlayerControl18func_ov00_020af6e4EP5Vec3pii + arm_func_start _ZN13PlayerControl18func_ov00_020af6e4EP5Vec3pii +_ZN13PlayerControl18func_ov00_020af6e4EP5Vec3pii: ; 0x020af6e4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + cmp r3, #4 + mov r4, r0 + mov r6, r1 + mov r5, r2 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, r5, r6, pc} + cmp r5, #0 + ble _020af72c + ldr r0, _020af770 ; =data_027e0f94 + bl func_01ff9ec0 + cmp r0, r5 + addge sp, sp, #4 + ldmgeia sp!, {r3, r4, r5, r6, pc} + mvn r0, #0 + str r0, [r4, #0x84] + str r0, [r4, #0x88] +_020af72c: + ldr r1, _020af774 ; =data_027e0e60 + add r0, sp, #0 + ldr r1, [r1] + mov r2, r6 + bl func_ov00_02083a1c + ldrb r0, [sp] + mov r2, #1 + mov r1, #0 + strb r0, [r4, #0x9c] + ldrb r3, [sp, #1] + mov r0, #0xf + strb r3, [r4, #0x9d] + strb r2, [r4, #0x81] + strb r1, [r4, #0x80] + strh r0, [r4, #0xa8] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020af6e4EP5Vec3pii +_020af770: .word data_027e0f94 +_020af774: .word data_027e0e60 + + .global _ZN13PlayerControl18func_ov00_020af778Ev + arm_func_start _ZN13PlayerControl18func_ov00_020af778Ev +_ZN13PlayerControl18func_ov00_020af778Ev: ; 0x020af778 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov sb, r0 + ldrb r0, [sb, #0x78] + cmp r0, #0 + beq _020af7b8 + ldr r0, _020afabc ; =data_027e0f74 + ldr r0, [r0] + bl func_ov00_02097738 + cmp r0, #0 + bne _020af7b8 + ldr r0, _020afabc ; =data_027e0f74 + ldr r0, [r0] + bl func_ov00_02097750 + cmp r0, #0 + beq _020af7cc +_020af7b8: + mov r0, #0xf + strh r0, [sb, #0xaa] + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_020af7cc: + ldrsh r0, [sb, #0xaa] + cmp r0, #0 + ble _020af7ec + sub r0, r0, #1 + strh r0, [sb, #0xaa] + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_020af7ec: + bl _ZN13PlayerControl18func_ov00_020aeef8Ev + cmp r0, #0 + bne _020af810 + mvn r0, #0 + str r0, [sb, #0x8c] + str r0, [sb, #0x90] + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_020af810: + ldrh r0, [sb, #0x34] + mov r4, #0 + mov r5, r4 + tst r0, #2 + beq _020af8b0 + ldrsh r0, [sb, #0x60] + cmp r0, #0x15 + bge _020af8b0 + ldrsh r0, [sb, #0x68] + ldr r1, [sb, #0x28] + ldrsh r2, [sb, #0x66] + sub r1, r1, r0 + mul r0, r1, r1 + ldr r1, [sb, #0x24] + sub r1, r1, r2 + mla r0, r1, r1, r0 + cmp r0, #0x64 + bge _020af8b0 + mov r0, sb + mov r1, #7 + mov r2, #1 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + ldrneb r0, [sb, #0x79] + movne r4, #1 + cmpne r0, #0 + beq _020af8b0 + ldr r0, _020afac0 ; =data_027e0f90 + ldr r0, [r0] + ldr r1, [r0] + ldr r1, [r1, #8] + blx r1 + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + beq _020af8b0 + ldr r0, _020afac4 ; =gItemManager + ldr r0, [r0] + bl _ZN11ItemManager12GetEquipItemEi + mov r5, r0 +_020af8b0: + ldr r0, _020afac8 ; =data_027e0fc8 + mov r8, #0 + ldr r1, [r0] + cmp r1, #0 + beq _020af8dc + ldr r0, _020afacc ; =data_027e0fe4 + add r1, r1, #0x3c + ldr r0, [r0] + bl func_ov00_020c3674 + cmp r0, #0 + movne r8, #1 +_020af8dc: + cmp r4, #0 + mov r4, #0 + beq _020afa68 + ldr r0, _020afacc ; =data_027e0fe4 + add r1, sb, #0x8c + ldr r0, [r0] + bl func_ov00_020c3674 + movs r6, r0 + mov r7, r4 + beq _020af97c + ldr r7, [r6, #0x12c] + mov r0, sb + mov r1, r7 + mov r2, r8 + bl _ZN13PlayerControl18func_ov00_020afe88Eib + cmp r0, #0 + beq _020af97c + cmp r5, #0 + beq _020af944 + mov r0, r5 + ldr r2, [r0] + mov r1, r7 + ldr r2, [r2, #0x44] + blx r2 + cmp r0, #0 + beq _020af97c +_020af944: + ldr r1, [sb, #0x8c] + mvn r0, #0 + str r1, [sb, #0x84] + ldr r2, [sb, #0x90] + mov r1, #0 + str r2, [sb, #0x88] + str r0, [sb, #0x8c] + str r0, [sb, #0x90] + mov r0, r6 + strb r1, [sb, #0x80] + mov r1, #0xf + strh r1, [sb, #0xa8] + bl func_ov00_020c28ec + mov r4, r0 +_020af97c: + ldr r0, _020afad0 ; =data_027e0e60 + add r1, sp, #8 + ldr r0, [r0] + bl func_ov00_02085108 + ldr r2, _020afad4 ; =data_027e0f94 + mov r1, r0 + ldr r0, [r2, #4] + cmp r5, #0 + str r0, [sp, #0xc] + bne _020af9e0 + cmp r1, #0 + beq _020afaa8 + mov r0, sb + mov r2, r8 + bl _ZN13PlayerControl18func_ov00_020afeecEib + cmp r0, #0 + beq _020afaa8 + add r1, sp, #8 + mov r0, sb + mov r2, r4 + mov r3, r7 + bl _ZN13PlayerControl18func_ov00_020af6e4EP5Vec3pii + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_020af9e0: + mov r0, r5 + ldr r2, [r0] + ldr r2, [r2, #0x48] + blx r2 + cmp r0, #0 + beq _020afa18 + add r1, sp, #8 + mov r0, sb + mov r2, r4 + mov r3, r7 + bl _ZN13PlayerControl18func_ov00_020af6e4EP5Vec3pii + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_020afa18: + cmp r4, #0 + bne _020afaa8 + mov r0, r5 + ldr r1, [r0] + ldr r1, [r1, #0x40] + blx r1 + cmp r0, #0 + beq _020afaa8 + add r1, sp, #8 + mov r0, sb + mov r2, #0 + bl func_ov00_020b7d4c + add r1, sp, #8 + mov r0, sb + mov r2, r4 + mov r3, r7 + bl _ZN13PlayerControl18func_ov00_020af6e4EP5Vec3pii + add sp, sp, #0x14 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_020afa68: + ldr r1, _020afacc ; =data_027e0fe4 + add r0, sp, #0 + ldr r1, [r1] + mov r2, r4 + bl func_ov00_020c3484 + ldr r0, [sp] + str r0, [sb, #0x8c] + ldr r0, [sp, #4] + str r0, [sb, #0x90] + ldrsh r0, [sb, #0x60] + cmp r0, #0 + bne _020afaa8 + ldr r0, [sb, #0x8c] + str r0, [sb, #0x94] + ldr r0, [sb, #0x90] + str r0, [sb, #0x98] +_020afaa8: + cmp r4, #0 + movgt r0, #1 + movle r0, #0 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020af778Ev +_020afabc: .word data_027e0f74 +_020afac0: .word data_027e0f90 +_020afac4: .word gItemManager +_020afac8: .word data_027e0fc8 +_020afacc: .word data_027e0fe4 +_020afad0: .word data_027e0e60 +_020afad4: .word data_027e0f94 + + .global _ZN13PlayerControl18func_ov00_020afad8EP5Vec3p + arm_func_start _ZN13PlayerControl18func_ov00_020afad8EP5Vec3p +_ZN13PlayerControl18func_ov00_020afad8EP5Vec3p: ; 0x020afad8 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _020afb60 ; =data_027e0f94 + ldr r3, [r1, #4] + ldr r1, [r2, #4] + cmp r3, r1 + addge sp, sp, #0xc + movge r0, #0 + ldmgeia sp!, {pc} + ldrb r0, [r0, #0x79] + cmp r0, #0 + beq _020afb54 + ldr r0, _020afb64 ; =data_027e0f90 + ldr r0, [r0] + ldr r1, [r0] + ldr r1, [r1, #8] + blx r1 + cmp r0, #3 + bne _020afb48 + ldr r0, _020afb68 ; =data_027e0e60 + add r1, sp, #0 + ldr r0, [r0] + bl func_ov00_02085594 + cmp r0, #0 + movne r0, #1 + add sp, sp, #0xc + moveq r0, #0 + ldmia sp!, {pc} +_020afb48: + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {pc} +_020afb54: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020afad8EP5Vec3p +_020afb60: .word data_027e0f94 +_020afb64: .word data_027e0f90 +_020afb68: .word data_027e0e60 + + .global _ZN13PlayerControl18func_ov00_020afb6cEv + arm_func_start _ZN13PlayerControl18func_ov00_020afb6cEv +_ZN13PlayerControl18func_ov00_020afb6cEv: ; 0x020afb6c + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov sb, r0 + bl _ZN13PlayerControl18func_ov00_020af778Ev + ldr r1, _020afe70 ; =data_027e0fe4 + mov r4, r0 + ldr r0, [r1] + add r1, sb, #0x84 + bl func_ov00_020c3674 + ldr r1, _020afe74 ; =gItemManager + mov r5, r0 + ldr r6, [r1] + mov r0, r6 + bl _ZNK11ItemManager16GetEquippedFairyEv + mov r1, r0 + mov r0, r6 + bl _ZNK11ItemManager8GetFairyEi + cmp r5, #0 + ldreqb r1, [sb, #0x81] + cmpeq r1, #0 + bne _020afbcc + cmp r0, #0 + beq _020afbcc + bl func_ov00_020bad18 +_020afbcc: + cmp r5, #0 + ldr r6, [sb, #0xa4] + beq _020afce8 + ldr r0, _020afe78 ; =data_027e0f94 + add r1, r5, #0x48 + bl func_01ff9ec0 + mov r6, r0 + add r1, sp, #0x10 + mov r0, r5 + bl func_ov00_020c2a0c + ldr r0, [sp, #0x14] + mov r1, #0 + add r0, r0, #0x66 + add r2, r0, #0x600 + str r2, [sp, #0x14] + ldr r0, [r5, #0x12c] + mov r7, r1 + cmp r0, #5 + mov r8, #3 + addls pc, pc, r0, lsl #2 + b _020afc84 +_020afc20: ; jump table + b _020afc38 ; case 0 + b _020afc48 ; case 1 + b _020afc6c ; case 2 + b _020afc84 ; case 3 + b _020afc84 ; case 4 + b _020afc50 ; case 5 +_020afc38: + sub r0, r8, #4 + str r0, [sb, #0x84] + str r0, [sb, #0x88] + b _020afc9c +_020afc48: + mov r7, #1 + b _020afc9c +_020afc50: + add r0, r5, #0x100 + ldrsh r0, [r0, #0x1e] + mov r7, #2 + mov r8, #1 + add r0, r2, r0 + str r0, [sp, #0x14] + b _020afc9c +_020afc6c: + ldr r0, [sp, #0x1c] + mov r7, r8 + add r0, r2, r0 + mov r8, r1 + str r0, [sp, #0x14] + b _020afc9c +_020afc84: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x1c] + mov r7, #2 + add r0, r1, r0 + mov r8, r7 + str r0, [sp, #0x14] +_020afc9c: + cmp r7, #0 + beq _020afcf4 + ldr r0, _020afe7c ; =data_027e0fc8 + ldr r0, [r0] + bl func_ov00_020bc46c + cmp r0, #0 + bne _020afcf4 + add r1, sp, #0x10 + mov r0, sb + mov r2, r7 + bl _ZN13PlayerControl18func_ov00_020aff90Eii + cmp r4, #0 + beq _020afcf4 + ldr r2, [r5, #8] + ldr r0, _020afe80 ; =data_027e0ffc + add r1, sp, #0x10 + mov r3, r8 + bl func_ov00_020ced64 + b _020afcf4 +_020afce8: + mvn r0, #0 + str r0, [sb, #0x84] + str r0, [sb, #0x88] +_020afcf4: + ldrb r0, [sb, #0x81] + cmp r0, #0 + beq _020afe24 + ldr r0, _020afe84 ; =data_027e0e60 + add r1, sb, #0x9c + ldr r0, [r0] + bl func_ov00_020840c4 + str r0, [sb, #0xa0] + cmp r0, #0 + beq _020afd88 + ldr r1, [r0, #0x18] + str r1, [sp, #4] + ldr r1, [r0, #0x1c] + str r1, [sp, #8] + ldr r0, [r0, #0x20] + str r0, [sp, #0xc] + ldr r0, [sb, #0xa0] + ldr r1, [r0] + ldr r1, [r1, #0x54] + blx r1 + cmp r0, #0 + moveq r0, #0 + beq _020afd5c + ldr r1, [r0] + ldr r1, [r1, #0x44] + blx r1 +_020afd5c: + ldr r1, [sp, #8] + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [sb, #0xa0] + ldrsb r0, [r0, #0x12] + cmp r0, #1 + moveq r5, #1 + moveq r6, #3 + movne r5, #2 + movne r6, r5 + b _020afdc4 +_020afd88: + ldr r1, _020afe78 ; =data_027e0f94 + ldr r0, _020afe84 ; =data_027e0e60 + ldr r1, [r1, #4] + ldr r0, [r0] + str r1, [sp, #8] + ldrb r3, [sb, #0x9c] + ldrb r2, [sb, #0x9d] + sub r5, sp, #4 + add r1, sp, #4 + strb r3, [r5] + strb r2, [r5, #1] + ldr r2, [r5] + bl func_ov00_02083c7c + mov r5, #2 + mov r6, #3 +_020afdc4: + cmp r5, #0 + beq _020afe10 + ldr r0, _020afe7c ; =data_027e0fc8 + ldr r0, [r0] + bl func_ov00_020bc46c + cmp r0, #0 + bne _020afe10 + add r1, sp, #4 + mov r0, sb + mov r2, r5 + bl _ZN13PlayerControl18func_ov00_020aff90Eii + cmp r4, #0 + beq _020afe10 + str r6, [sp] + ldrb r2, [sb, #0x9c] + ldrb r3, [sb, #0x9d] + ldr r0, _020afe80 ; =data_027e0ffc + add r1, sp, #4 + bl func_ov00_020ced7c +_020afe10: + ldr r0, _020afe78 ; =data_027e0f94 + add r1, sp, #4 + bl func_01ff9ec0 + mov r6, r0 + b _020afe2c +_020afe24: + mov r0, #0 + str r0, [sb, #0xa0] +_020afe2c: + ldrsh r1, [sb, #0xa8] + cmp r1, #0 + ble _020afe64 + ldr r0, [sb, #0xa4] + sub r0, r0, r6 + cmp r0, #0x29 + bgt _020afe64 + sub r0, r1, #1 + strh r0, [sb, #0xa8] + ldrsh r0, [sb, #0xa8] + cmp r0, #0 + bgt _020afe64 + mov r0, sb + bl _ZN13PlayerControl13StopFollowingEv +_020afe64: + str r6, [sb, #0xa4] + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020afb6cEv +_020afe70: .word data_027e0fe4 +_020afe74: .word gItemManager +_020afe78: .word data_027e0f94 +_020afe7c: .word data_027e0fc8 +_020afe80: .word data_027e0ffc +_020afe84: .word data_027e0e60 + + .global _ZN13PlayerControl18func_ov00_020afe88Eib + arm_func_start _ZN13PlayerControl18func_ov00_020afe88Eib +_ZN13PlayerControl18func_ov00_020afe88Eib: ; 0x020afe88 + stmdb sp!, {r3, r4, r5, lr} + ldrb r0, [r0, #0x7d] + mov r5, r1 + mov r4, r2 + cmp r0, #0 + beq _020afebc + ldr r0, _020afee8 ; =data_027e0fcc + ldr r0, [r0] + ldr r2, [r0] + ldr r2, [r2, #0x74] + blx r2 + cmp r0, #0 + bne _020afec4 +_020afebc: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_020afec4: + cmp r4, #0 + beq _020afee0 + cmp r5, #2 + cmpne r5, #6 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_020afee0: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020afe88Eib +_020afee8: .word data_027e0fcc + + .global _ZN13PlayerControl18func_ov00_020afeecEib + arm_func_start _ZN13PlayerControl18func_ov00_020afeecEib +_ZN13PlayerControl18func_ov00_020afeecEib: ; 0x020afeec + stmdb sp!, {r3, r4, r5, lr} + ldrb r0, [r0, #0x7d] + mov r5, r1 + mov r4, r2 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _020aff8c ; =data_027e0fcc + ldr r0, [r0] + ldr r2, [r0] + ldr r2, [r2, #0x78] + blx r2 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r5, #0xd + addls pc, pc, r5, lsl #2 + b _020aff7c +_020aff34: ; jump table + b _020aff7c ; case 0 + b _020aff6c ; case 1 + b _020aff6c ; case 2 + b _020aff7c ; case 3 + b _020aff7c ; case 4 + b _020aff7c ; case 5 + b _020aff7c ; case 6 + b _020aff6c ; case 7 + b _020aff7c ; case 8 + b _020aff7c ; case 9 + b _020aff74 ; case 10 + b _020aff74 ; case 11 + b _020aff7c ; case 12 + b _020aff6c ; case 13 +_020aff6c: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_020aff74: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} +_020aff7c: + cmp r4, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020afeecEib +_020aff8c: .word data_027e0fcc + + .global _ZN13PlayerControl18func_ov00_020aff90Eii + arm_func_start _ZN13PlayerControl18func_ov00_020aff90Eii +_ZN13PlayerControl18func_ov00_020aff90Eii: ; 0x020aff90 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _020affe4 ; =data_027e0d38 + mov r6, r1 + ldr r0, [r0] + mov r5, r2 + bl func_ov00_02078b40 + cmp r0, #2 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _020affe8 ; =gItemManager + ldr r4, [r0] + mov r0, r4 + bl _ZNK11ItemManager16GetEquippedFairyEv + mov r1, r0 + mov r0, r4 + bl _ZNK11ItemManager8GetFairyEi + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r1, r6 + mov r2, r5 + bl func_ov00_020baca8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020aff90Eii +_020affe4: .word data_027e0d38 +_020affe8: .word gItemManager + + .global _ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ + arm_func_start _ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ +_ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_: ; 0x020affec + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x30 + mov r7, r0 + ldr r0, [r7, #0x44] + mov r6, r1 + cmp r0, #0 + ldreq r0, [r7, #0x4c] + mov r5, r3 + ldr r4, [sp, #0x48] + cmpeq r0, #0 + beq _020b0134 + mov r0, r2 + add r3, sp, #0x24 + add r1, r7, #0x44 + add r2, r7, #0x38 + bl func_01ff9e64 + add r0, sp, #0x18 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + ldr r3, [r4] + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x2c] + sub r2, r3, r2 + str r2, [sp, #0x18] + ldr r2, [r4, #8] + sub r1, r2, r1 + str r1, [sp, #0x20] + bl func_01ff9cec + cmp r0, r5 + bgt _020b008c + ldr r0, [sp, #0x24] + str r0, [r6] + ldr r0, [sp, #0x28] + str r0, [r6, #4] + ldr r0, [sp, #0x2c] + add sp, sp, #0x30 + str r0, [r6, #8] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_020b008c: + add r0, sp, #0xc + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + ldr r1, [r7, #0x44] + str r1, [sp, #0xc] + ldr r1, [r7, #0x4c] + str r1, [sp, #0x14] + bl func_01ff9cec + bl func_01ff991c + mov r4, r0 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + smull r2, r3, r1, r4 + adds r7, r2, #0x800 + smull r2, r1, r0, r4 + adc r0, r3, #0 + mov r3, r7, lsr #0xc + orr r3, r3, r0, lsl #20 + adds r2, r2, #0x800 + adc r0, r1, #0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #20 + str r1, [sp, #0x14] + add r0, sp, #0x18 + add r1, sp, #0xc + str r3, [sp, #0xc] + bl func_01ff9c2c + mov r3, r6 + mov r7, r0 + add r0, sp, #0xc + add r6, sp, #0 + ldmia r0, {r0, r1, r2} + stmia r6, {r0, r1, r2} + sub r0, r7, r5 + mov r1, r6 + add r2, sp, #0x24 + str r4, [sp, #4] + bl func_01ff9e64 + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_020b0134: + ldr r0, [r7, #0x38] + stmia r6, {r0, r2} + ldr r0, [r7, #0x40] + str r0, [r6, #8] + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end _ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ + + .global _ZN13PlayerControl18func_ov00_020b014cEv + arm_func_start _ZN13PlayerControl18func_ov00_020b014cEv +_ZN13PlayerControl18func_ov00_020b014cEv: ; 0x020b014c + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r2, _020b0210 ; =data_ov00_020ee198 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + tst r0, #1 + orreq r0, r0, #1 + streq r0, [r2] + ldr r0, _020b0214 ; =data_027e0f64 + ldr r0, [r0] + ldr r0, [r0, #4] + ldr r0, [r0, #0x15c] + cmp r0, #0x16 + addeq sp, sp, #0x10 + ldmeqia sp!, {r4, r5, r6, pc} + bl _ZN13PlayerControl18func_ov00_020aeef8Ev + cmp r0, #0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r4, r5, r6, pc} + ldrsh r0, [r5, #0x60] + cmp r0, #0 + addle sp, sp, #0x10 + ldmleia sp!, {r4, r5, r6, pc} + ldr r0, _020b0218 ; =gItemManager + ldr r6, [r0] + mov r0, r6 + bl _ZNK11ItemManager16GetEquippedFairyEv + mov r1, r0 + mov r0, r6 + bl _ZNK11ItemManager8GetFairyEi + movs r6, r0 + addeq sp, sp, #0x10 + ldmeqia sp!, {r4, r5, r6, pc} + add r1, sp, #4 + mov r0, r5 + str r4, [sp] + mov r2, #0x800 + mov r3, #0x8000 + bl _ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ + ldr r0, [r5, #0x3c] + add r1, sp, #4 + add r3, r0, #0x33 + mov r0, r6 + add r2, r5, #0x44 + add r3, r3, #0x4300 + bl func_ov00_020ba204 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b014cEv +_020b0210: .word data_ov00_020ee198 +_020b0214: .word data_027e0f64 +_020b0218: .word gItemManager + + .global _ZN13PlayerControl6SetAimEv + arm_func_start _ZN13PlayerControl6SetAimEv +_ZN13PlayerControl6SetAimEv: ; 0x020b021c + ldr r1, _020b023c ; =data_027e0d0c + ldr r2, [r1] + str r2, [r0, #0xb0] + ldr r2, [r1, #4] + str r2, [r0, #0xb4] + ldr r1, [r1, #8] + str r1, [r0, #0xb8] + bx lr + .align 2, 0 + arm_func_end _ZN13PlayerControl6SetAimEv +_020b023c: .word data_027e0d0c + + .global _ZN13PlayerControl14UpdateAimWorldEP5Vec3p + arm_func_start _ZN13PlayerControl14UpdateAimWorldEP5Vec3p +_ZN13PlayerControl14UpdateAimWorldEP5Vec3p: ; 0x020b0240 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + ldr r2, _020b031c ; =data_027e0d38 + ldr lr, _020b0320 ; =data_027e0f94 + ldr r3, [r2] + add ip, sp, #4 + mov r5, r0 + mov r4, r1 + ldmia lr, {r0, r1, r2} + stmia ip, {r0, r1, r2} + add r0, r3, #0xc + bl func_ov00_020a5e9c + cmp r0, #0x2f + bne _020b02a4 + ldr r0, _020b0324 ; =data_027e0f64 + ldr r0, [r0] + ldr r0, [r0, #4] + ldr r0, [r0, #0x15c] + cmp r0, #0x31 + bne _020b02a4 + mov r0, r5 + mov r1, r4 + bl func_ov24_02178348 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} +_020b02a4: + mov r0, r5 + mov r1, #1 + bl _ZN13PlayerControl13CheckTouchingEj + cmp r0, #0 + beq _020b02f8 + add r2, sp, #4 + str r2, [sp] + mov r0, r5 + mov r1, r4 + mov r2, #0 + mov r3, #0x8000 + bl _ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ + ldr r1, [r4] + add sp, sp, #0x10 + str r1, [r5, #0xbc] + ldr r1, [r4, #4] + mov r0, #1 + str r1, [r5, #0xc0] + ldr r1, [r4, #8] + str r1, [r5, #0xc4] + ldmia sp!, {r3, r4, r5, pc} +_020b02f8: + ldr r1, [r5, #0xbc] + mov r0, #0 + str r1, [r4] + ldr r1, [r5, #0xc0] + str r1, [r4, #4] + ldr r1, [r5, #0xc4] + str r1, [r4, #8] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl14UpdateAimWorldEP5Vec3p +_020b031c: .word data_027e0d38 +_020b0320: .word data_027e0f94 +_020b0324: .word data_027e0f64 + + .global _ZN13PlayerControl13GetTouchAngleEv + arm_func_start _ZN13PlayerControl13GetTouchAngleEv +_ZN13PlayerControl13GetTouchAngleEv: ; 0x020b0328 + ldrsh r1, [r0, #0x60] + cmp r1, #0 + ldrgesh r0, [r0, #0x6a] + bxge lr + ldrb r1, [r0, #0x7f] + cmp r1, #0 + ldrnesh r0, [r0, #0xac] + moveq r0, #0 + bx lr + arm_func_end _ZN13PlayerControl13GetTouchAngleEv + + .global _ZN13PlayerControl18func_ov00_020b034cEv + arm_func_start _ZN13PlayerControl18func_ov00_020b034cEv +_ZN13PlayerControl18func_ov00_020b034cEv: ; 0x020b034c + stmdb sp!, {r4, lr} + mov r4, r0 + ldrsh r1, [r4, #0x60] + cmp r1, #0 + blt _020b03e8 + mov r1, #1 + mov r2, r1 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + beq _020b03e8 + ldr r0, _020b0410 ; =data_ov00_020e6124 + ldr r0, [r0, #0x20] + bl func_01ff992c + ldr ip, [r4, #0x58] + ldrsh r2, [r4, #0x60] + umull r4, lr, r0, ip + mov r3, ip, asr #0x1f + mla lr, r0, r3, lr + mla lr, r1, ip, lr + adds r0, r4, #0x80000000 + adc r3, lr, #0 + smull r1, r0, r3, r3 + adds r3, r1, #0x800 + adc r1, r0, #0 + mov r0, r3, lsr #0xc + cmp r2, #4 + orr r0, r0, r1, lsl #20 + bge _020b03d0 + rsb r1, r2, #4 + mov r2, r1, lsl #0xc + mov r1, r2, asr #0x1 + add r1, r2, r1, lsr #30 + sub r0, r0, r1, asr #2 +_020b03d0: + cmp r0, #0 + movlt r0, #0 + ldmltia sp!, {r4, pc} + cmp r0, #0x1000 + movgt r0, #0x1000 + ldmia sp!, {r4, pc} +_020b03e8: + ldrb r0, [r4, #0x7f] + cmp r0, #0 + beq _020b0408 + ldr r0, _020b0414 ; =data_027e05f8 + ldrh r0, [r0] + tst r0, #0xf0 + movne r0, #0x1000 + ldmneia sp!, {r4, pc} +_020b0408: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b034cEv +_020b0410: .word data_ov00_020e6124 +_020b0414: .word data_027e05f8 + + .global _ZN13PlayerControl18func_ov00_020b0418Ev + arm_func_start _ZN13PlayerControl18func_ov00_020b0418Ev +_ZN13PlayerControl18func_ov00_020b0418Ev: ; 0x020b0418 + stmdb sp!, {r3, lr} + ldr r0, _020b0488 ; =data_ov00_020eec60 + bl func_ov00_020d6be4 + cmp r0, #0xa + movlt r0, #0 + ldmltia sp!, {r3, pc} + cmp r0, #0x19 + bge _020b0454 + ldr r1, _020b048c ; =0x00000aaa + ldr r2, _020b0490 ; =0x51eb851f + mul r3, r0, r1 + smull r1, r0, r2, r3 + mov r1, r3, lsr #0x1f + add r0, r1, r0, asr #3 + ldmia sp!, {r3, pc} +_020b0454: + cmp r0, #0x96 + movge r0, #0x1000 + ldmgeia sp!, {r3, pc} + ldr r1, _020b0494 ; =0x00000556 + sub r0, r0, #0x19 + mul r1, r0, r1 + ldr r2, _020b0498 ; =0x10624dd3 + mov r0, r1, lsr #0x1f + smull r1, r3, r2, r1 + add r3, r0, r3, asr #3 + add r0, r3, #0xaa + add r0, r0, #0xa00 + ldmia sp!, {r3, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b0418Ev +_020b0488: .word data_ov00_020eec60 +_020b048c: .word 0x00000aaa +_020b0490: .word 0x51eb851f +_020b0494: .word 0x00000556 +_020b0498: .word 0x10624dd3 + + .global _ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb + arm_func_start _ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb +_ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb: ; 0x020b049c + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r1 + mov r1, #1 + mov r6, r0 + mov r5, r2 + bl _ZN13PlayerControl17CheckUntouchedNowEj + cmp r0, #0 + beq _020b05d0 + ldrsh r0, [r6, #0x60] + cmp r0, #0 + blt _020b05d0 + cmp r0, #0x15 + bge _020b05d0 + mov r0, r6 + mov r1, r4 + mov r2, #0x400 + bl func_ov00_020b7d4c + ldr r1, _020b05d8 ; =data_027e0f94 + mov r0, r4 + mov r2, r4 + bl func_01ff9bf8 + mov r0, r4 + bl func_01ff9cec + cmp r0, #0x1400 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #0 + beq _020b05d0 + cmp r0, #0x400 + bge _020b05bc + ldr r1, _020b05dc ; =data_027e0d0c + ldr r0, _020b05e0 ; =data_027e0fac + ldr r2, [r1] + ldr ip, _020b05e4 ; =data_02050f54 + str r2, [r4] + ldr r3, [r1, #4] + mov r2, #0 + str r3, [r4, #4] + ldr r3, [r1, #8] + mov r1, #0x1400 + str r3, [r4, #8] + ldrh r3, [r0] + ldr r0, [r4] + mov r3, r3, asr #0x4 + mov r6, r3, lsl #0x1 + mov r3, r6, lsl #0x1 + ldrsh r5, [ip, r3] + add r3, r6, #1 + mov r3, r3, lsl #0x1 + umull r7, r6, r5, r1 + ldrsh r3, [ip, r3] + mla r6, r5, r2, r6 + umull lr, ip, r3, r1 + mov r5, r5, asr #0x1f + adds r7, r7, #0x800 + mla r6, r5, r1, r6 + adc r5, r6, #0 + mov r6, r7, lsr #0xc + orr r6, r6, r5, lsl #20 + add r0, r0, r6 + str r0, [r4] + adds lr, lr, #0x800 + mla ip, r3, r2, ip + mov r0, r3, asr #0x1f + mla ip, r0, r1, ip + adc r0, ip, #0 + mov r1, lr, lsr #0xc + ldr r2, [r4, #8] + orr r1, r1, r0, lsl #20 + add r0, r2, r1 + str r0, [r4, #8] + b _020b05c8 +_020b05bc: + mov r0, r4 + mov r1, #0x1400 + bl func_0202d95c +_020b05c8: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_020b05d0: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb +_020b05d8: .word data_027e0f94 +_020b05dc: .word data_027e0d0c +_020b05e0: .word data_027e0fac +_020b05e4: .word data_02050f54 + + .global _ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p + arm_func_start _ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p +_ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p: ; 0x020b05e8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r5, r1 + mov r1, #1 + mov r4, r0 + bl _ZN13PlayerControl17CheckUntouchedNowEj + cmp r0, #0 + beq _020b0758 + ldrsh r0, [r4, #0x60] + cmp r0, #0 + blt _020b0758 + cmp r0, #0x15 + bge _020b0758 + mov r0, r4 + ldr r2, _020b0764 ; =0x00000333 + ldr r4, _020b0768 ; =data_027e0f94 + add r1, sp, #4 + bl func_ov00_020b7d4c + mov r1, r4 + ldr r2, [r1, #4] + add r0, sp, #4 + str r2, [sp, #8] + bl func_01ff9ec0 + cmp r0, #0x1400 + addgt sp, sp, #0x10 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, pc} + cmp r0, #0x400 + bge _020b06e0 + ldr r1, _020b076c ; =data_027e0fac + ldr r0, [r4, #4] + ldrh r2, [r1] + ldr r3, _020b0770 ; =data_02050f54 + mov r1, #0x800 + mov r2, r2, asr #0x4 + mov r6, r2, lsl #0x1 + mov r2, r6, lsl #0x1 + ldrsh ip, [r3, r2] + add r2, r6, #1 + mov r2, r2, lsl #0x1 + ldrsh r3, [r3, r2] + mov r2, ip, asr #0x1f + mov lr, r2, lsl #0xa + mov r2, r3, asr #0x1f + mov r2, r2, lsl #0xa + adds r6, r1, ip, lsl #10 + orr lr, lr, ip, lsr #22 + adc lr, lr, #0 + adds ip, r1, r3, lsl #10 + orr r2, r2, r3, lsr #22 + mov r3, r6, lsr #0xc + adc r1, r2, #0 + mov r2, ip, lsr #0xc + ldr r6, [r4] + orr r3, r3, lr, lsl #20 + add r3, r6, r3 + ldr r6, [r4, #8] + orr r2, r2, r1, lsl #20 + add r1, r6, r2 + str r0, [sp, #8] + str r3, [sp, #4] + str r1, [sp, #0xc] +_020b06e0: + ldr r1, _020b0774 ; =data_027e0e60 + add r0, sp, #0 + ldr r1, [r1] + add r2, sp, #4 + bl func_ov00_02083a1c + ldr r0, _020b0774 ; =data_027e0e60 + ldrb r1, [sp] + ldr r0, [r0] + bl func_ov00_02083c24 + ldr r1, [sp, #4] + ldr r2, _020b0774 ; =data_027e0e60 + sub r0, r0, r1 + add r0, r0, r0, lsr #31 + add r3, r1, r0, asr #1 + ldrb r1, [sp, #1] + ldr r0, [r2] + str r3, [sp, #4] + bl func_ov00_02083c50 + ldr r2, [sp, #0xc] + mov r1, r4 + sub r0, r0, r2 + add r0, r0, r0, lsr #31 + add r3, r2, r0, asr #1 + add r0, sp, #4 + mov r2, r5 + str r3, [sp, #0xc] + bl func_01ff9bf8 + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_020b0758: + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p +_020b0764: .word 0x00000333 +_020b0768: .word data_027e0f94 +_020b076c: .word data_027e0fac +_020b0770: .word data_02050f54 +_020b0774: .word data_027e0e60 + + .global _ZN13PlayerControl18func_ov00_020b0778EP5Vec3pji + arm_func_start _ZN13PlayerControl18func_ov00_020b0778EP5Vec3pji +_ZN13PlayerControl18func_ov00_020b0778EP5Vec3pji: ; 0x020b0778 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x18 + mov r8, r3 + mov r3, #0 + str r3, [r8] + ldr r4, [r1] + ldr r3, _020b0aac ; =data_027e0f64 + str r4, [sp, #0xc] + ldr r4, [r1, #4] + mov sb, r0 + str r4, [sp, #0x10] + ldr r1, [r1, #8] + ldr r0, [r3] + mov r4, r2 + str r1, [sp, #0x14] + bl func_ov00_0208b180 + mov r3, #0 + str r3, [sp] + add r1, sp, #0xc + add r2, sp, #8 + add r3, sp, #4 + bl func_01ffe468 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + cmp r0, #0 + addne sp, sp, #0x18 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r4, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #1 + ldr r3, _020b0ab0 ; =data_02050f54 + mov r2, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r2, [r3, r2] + mov r0, #0x30 + ldrsh r1, [r3, r1] + smulbb r2, r2, r0 + smulbb r3, r1, r0 + mov r0, r2, asr #0xb + mov r1, r3, asr #0xb + add r2, r2, r0, lsr #20 + add r3, r3, r1, lsr #20 + ldr lr, [sb, #0x10] + ldr r4, [sp, #8] + ldr ip, [sb, #0x14] + ldr r5, [sp, #4] + mov r0, sb + mov r1, #1 + mov r6, r2, asr #0xc + mov r7, r3, asr #0xc + sub r4, lr, r4 + sub r5, ip, r5 + bl _ZN13PlayerControl15CheckTouchedNowEj + cmp r0, #0 + beq _020b0948 + sub r0, r6, #0x18 + cmp r0, r4 + addle r0, r6, #0x18 + cmple r4, r0 + suble r0, r7, #0x18 + cmple r0, r5 + addle r0, r7, #0x18 + cmple r5, r0 + bgt _020b089c + mov r0, #0x1000 + str r0, [r8] + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_020b089c: + mvn r0, #0x17 + sub r1, r0, r6 + cmp r1, r4 + rsble r1, r6, #0x18 + cmple r4, r1 + suble r0, r0, r7 + cmple r0, r5 + rsble r0, r7, #0x18 + cmple r5, r0 + bgt _020b08dc + mov r0, #0x1000 + rsb r0, r0, #0 + str r0, [r8] + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_020b08dc: + rsb r1, r6, #0 + cmp r6, r1 + movlt r0, r6 + movge r0, r1 + sub r0, r0, #0x18 + cmp r4, r0 + blt _020b093c + cmp r6, r1 + movle r6, r1 + add r0, r6, #0x18 + cmp r0, r4 + blt _020b093c + rsb r1, r7, #0 + cmp r7, r1 + movlt r0, r7 + movge r0, r1 + sub r0, r0, #0x18 + cmp r5, r0 + blt _020b093c + cmp r7, r1 + movle r7, r1 + add r0, r7, #0x18 + cmp r0, r5 + bge _020b0aa0 +_020b093c: + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_020b0948: + mov r0, sb + mov r1, #1 + bl _ZN13PlayerControl13CheckTouchingEj + cmp r0, #0 + beq _020b0a20 + cmp r6, #0 + addlt r0, r6, #0x18 + cmplt r4, r0 + blt _020b099c + cmp r6, #0 + subgt r0, r6, #0x18 + cmpgt r4, r0 + bgt _020b099c + cmp r7, #0 + addlt r0, r7, #0x18 + cmplt r5, r0 + blt _020b099c + cmp r7, #0 + subgt r0, r7, #0x18 + cmpgt r5, r0 + ble _020b09b0 +_020b099c: + mov r0, #0x1000 + str r0, [r8] + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_020b09b0: + cmp r6, #0 + ble _020b09c4 + rsb r0, r6, #0x18 + cmp r4, r0 + blt _020b0a08 +_020b09c4: + cmp r6, #0 + bge _020b09dc + mvn r0, #0x17 + sub r0, r0, r6 + cmp r4, r0 + bgt _020b0a08 +_020b09dc: + cmp r7, #0 + ble _020b09f0 + rsb r0, r7, #0x18 + cmp r5, r0 + blt _020b0a08 +_020b09f0: + cmp r7, #0 + bge _020b0aa0 + mvn r0, #0x17 + sub r0, r0, r7 + cmp r5, r0 + ble _020b0aa0 +_020b0a08: + mov r0, #0x1000 + rsb r0, r0, #0 + str r0, [r8] + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_020b0a20: + mov r0, sb + mov r1, #1 + bl _ZN13PlayerControl17CheckUntouchedNowEj + cmp r0, #0 + beq _020b0aa0 + ldr r3, [sb, #0x1c] + ldr r2, [sp, #8] + cmp r6, #0 + rsblt r6, r6, #0 + cmp r7, #0 + rsblt r7, r7, #0 + ldr r1, [sb, #0x20] + ldr r0, [sp, #4] + sub r2, r3, r2 + sub r1, r1, r0 + cmp r6, #0x18 + ble _020b0a78 + cmp r2, #0 + rsblt r2, r2, #0 + sub r0, r6, #0x18 + cmp r2, r0 + bgt _020b0a94 +_020b0a78: + cmp r7, #0x18 + ble _020b0aa0 + cmp r1, #0 + rsblt r1, r1, #0 + sub r0, r7, #0x18 + cmp r1, r0 + ble _020b0aa0 +_020b0a94: + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_020b0aa0: + mov r0, #1 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b0778EP5Vec3pji +_020b0aac: .word data_027e0f64 +_020b0ab0: .word data_02050f54 + + .global _ZN13PlayerControl16CheckNotTouchingEv + arm_func_start _ZN13PlayerControl16CheckNotTouchingEv +_ZN13PlayerControl16CheckNotTouchingEv: ; 0x020b0ab4 + stmdb sp!, {r3, lr} + mov r1, #1 + bl _ZN13PlayerControl13CheckTouchingEj + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, pc} + arm_func_end _ZN13PlayerControl16CheckNotTouchingEv + + .global _ZN13PlayerControl18func_ov00_020b0ad0EP5Actor + arm_func_start _ZN13PlayerControl18func_ov00_020b0ad0EP5Actor +_ZN13PlayerControl18func_ov00_020b0ad0EP5Actor: ; 0x020b0ad0 + cmp r1, #0 + beq _020b0b04 + ldr r2, [r1, #8] + ldr r1, [r0, #0x94] + cmp r2, r1 + bne _020b0b04 + ldrsh r1, [r0, #0x60] + mov r0, #0 + cmp r1, #0xf + bxlt lr + cmp r1, #0x1e + movlt r0, #1 + bx lr +_020b0b04: + mov r0, #0 + bx lr + arm_func_end _ZN13PlayerControl18func_ov00_020b0ad0EP5Actor + + .global _ZN13PlayerControl18func_ov00_020b0b0cEPsPiS1_Pb + arm_func_start _ZN13PlayerControl18func_ov00_020b0b0cEPsPiS1_Pb +_ZN13PlayerControl18func_ov00_020b0b0cEPsPiS1_Pb: ; 0x020b0b0c + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x24 + mov r7, r0 + ldrb r0, [r7, #0x79] + mov r6, r1 + mov r4, r2 + mov r5, r3 + cmp r0, #0 + beq _020b0b80 + ldr r0, _020b0de0 ; =gItemManager + mov r1, #1 + ldr r0, [r0] + bl _ZN11ItemManager18func_ov00_020ad790Ei + cmp r0, #0 + beq _020b0b80 + ldr r0, _020b0de0 ; =gItemManager + ldr r0, [r0] + bl _ZNK11ItemManager15GetEquippedItemEv + ldr r1, _020b0de4 ; =data_027e103c + str r0, [r4] + ldr r0, [r1] + bl func_ov00_020cf330 + ldr r1, [r4] + mvn r0, #0 + cmp r1, r0 + movne r0, #1 + add sp, sp, #0x24 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_020b0b80: + mov r2, #0 + mov r0, r7 + mov r1, r5 + str r2, [r4] + bl _ZN13PlayerControl18func_ov00_020b1248EPi + cmp r0, #0 + beq _020b0bb0 + mov r0, #0 + str r0, [r4] + add sp, sp, #0x24 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_020b0bb0: + mov r0, r7 + mov r1, #1 + bl _ZN13PlayerControl17CheckUntouchedNowEj + cmp r0, #0 + beq _020b0bd8 + ldrsh r0, [r7, #0x60] + cmp r0, #0 + blt _020b0bd8 + cmp r0, #0x15 + blt _020b0bf8 +_020b0bd8: + mov r0, r7 + mov r1, #1 + bl _ZN13PlayerControl14CheckTouchFastEj + cmp r0, #0 + beq _020b0dd4 + ldrsh r0, [r7, #0x62] + cmp r0, #0x15 + ble _020b0dd4 +_020b0bf8: + ldrsh r2, [r7, #0x68] + ldr r3, [r7, #0x28] + ldrsh r0, [r7, #0x66] + ldr r1, [r7, #0x24] + sub r2, r3, r2 + sub r0, r1, r0 + mov r3, r2, lsl #0xc + mov r2, r0, lsl #0xc + mov r1, #0 + add r0, sp, #0x18 + str r2, [sp, #0x18] + str r1, [sp, #0x1c] + str r3, [sp, #0x20] + bl func_01ff9cec + cmp r0, #0xa000 + addlt sp, sp, #0x24 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, pc} + ldrb r1, [r7, #0x82] + cmp r1, #0 + beq _020b0c5c + cmp r0, #0x14000 + addlt sp, sp, #0x24 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, pc} +_020b0c5c: + mov r0, #0 + str r0, [r4] + ldrsh r1, [r7, #0x6a] + ldrsh r0, [r7, #0x6c] + sub r0, r0, r1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + add r0, r0, r0, lsr #31 + add r0, r1, r0, asr #1 + strh r0, [r6] + ldr r0, [r7, #0x5c] + cmp r0, #0x800 + ble _020b0cd8 + ldr r0, [r7, #0x50] + ldr r1, [r7, #0x54] + bl func_01ffa0f4 + ldr r1, [sp, #0x38] + ldrsh r2, [r6] + cmp r1, #0 + add sp, sp, #0x24 + sub r0, r0, r2 + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 + movne r0, #1 + strneb r0, [r1] + cmp r2, #0 + movge r0, #1 + movlt r0, #2 + str r0, [r5] + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_020b0cd8: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x20] + bl func_01ffa0f4 + ldrsh lr, [r6] + add r1, sp, #0xc + mov ip, #0 + str ip, [r1] + str ip, [r1, #4] + str ip, [r1, #8] + mov r2, r0, lsl #0x10 + ldrsh r3, [r7, #0x66] + rsb r2, lr, r2, asr #16 + add r0, sp, #0 + mov r3, r3, lsl #0xc + str r3, [sp, #0xc] + ldrsh r4, [r7, #0x68] + mov r3, r2, lsl #0x10 + mov r2, r4, lsl #0xc + str r2, [sp, #0x10] + str ip, [r0] + str ip, [r0, #4] + str ip, [r0, #8] + ldr r4, [r7, #0x24] + mov r2, r0 + mov r4, r4, lsl #0xc + str r4, [sp] + ldr ip, [r7, #0x28] + mov r4, r3, asr #0x10 + mov r3, ip, lsl #0xc + str r3, [sp, #4] + bl func_01ff9bf8 + ldr r0, [r7, #0x58] + cmp r0, #0xa000 + bgt _020b0d7c + mov r0, #0 + str r0, [r5] + ldrsh r1, [r7, #0x6c] + add sp, sp, #0x24 + mov r0, #1 + strh r1, [r6] + ldmia sp!, {r4, r5, r6, r7, pc} +_020b0d7c: + cmp r4, #0x6000 + bge _020b0d94 + mov r0, #0x6000 + rsb r0, r0, #0 + cmp r4, r0 + bgt _020b0da0 +_020b0d94: + mov r0, #0 + str r0, [r5] + b _020b0dc8 +_020b0da0: + cmp r4, #0x2000 + movge r0, #1 + strge r0, [r5] + bge _020b0dc8 + add r0, r0, #0x4000 + cmp r4, r0 + movlt r0, #2 + strlt r0, [r5] + movge r0, #3 + strge r0, [r5] +_020b0dc8: + add sp, sp, #0x24 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, pc} +_020b0dd4: + mov r0, #0 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b0b0cEPsPiS1_Pb +_020b0de0: .word gItemManager +_020b0de4: .word data_027e103c + + .global _ZN13PlayerControl18func_ov00_020b0de8EP5Vec3p + arm_func_start _ZN13PlayerControl18func_ov00_020b0de8EP5Vec3p +_ZN13PlayerControl18func_ov00_020b0de8EP5Vec3p: ; 0x020b0de8 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #1 + mov r5, r0 + bl _ZN13PlayerControl13CheckTouchingEj + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0x28] + ldr r2, [r5, #0x24] + sub r1, r0, #0x60 + mov r0, #0xaa00 + mul ip, r1, r0 + ldr r1, _020b0e50 ; =0x2aaaaaab + sub r2, r2, #0x80 + mov r0, #0xaa + mul r3, r2, r0 + smull r0, r2, r1, ip + mov r0, ip, lsr #0x1f + add r2, r0, r2, asr #5 + str r3, [r4] + mov r1, #0 + str r1, [r4, #4] + str r2, [r4, #8] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b0de8EP5Vec3p +_020b0e50: .word 0x2aaaaaab + + .global _ZN13PlayerControl18func_ov00_020b0e54EP5Vec3pS1_ + arm_func_start _ZN13PlayerControl18func_ov00_020b0e54EP5Vec3pS1_ +_ZN13PlayerControl18func_ov00_020b0e54EP5Vec3pS1_: ; 0x020b0e54 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r6, r0 + ldrsh r3, [r6, #0x60] + mov r5, r1 + mov r4, r2 + cmp r3, #0x10 + blt _020b0f0c + add r1, sp, #0 + bl _ZN13PlayerControl18func_ov00_020b0de8EP5Vec3p + cmp r0, #0 + beq _020b0f0c + mov r0, r6 + mov r1, r5 + mov r2, #0x800 + bl func_ov00_020b7d4c + add r0, sp, #0 + bl func_01ff9cec + mov r5, r0 + cmp r5, #0x4000 + ble _020b0ed0 + ldr r0, [sp] + mov r1, r5 + mov r0, r0, lsl #0xe + bl func_02002c14 + ldr r2, [sp, #8] + str r0, [sp] + mov r1, r5 + mov r0, r2, lsl #0xe + bl func_02002c14 + str r0, [sp, #8] +_020b0ed0: + ldr r1, [sp] + mov r0, #1 + str r1, [r6, #0xb0] + ldr r1, [sp, #4] + str r1, [r6, #0xb4] + ldr r1, [sp, #8] + str r1, [r6, #0xb8] + ldr r1, [sp] + str r1, [r4] + ldr r1, [sp, #4] + str r1, [r4, #4] + ldr r1, [sp, #8] + add sp, sp, #0xc + str r1, [r4, #8] + ldmia sp!, {r3, r4, r5, r6, pc} +_020b0f0c: + ldrsh r0, [r6, #0x60] + cmp r0, #0 + blt _020b0f78 + mov r1, #1 + mov r0, r6 + mov r2, r1 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + beq _020b0f78 + ldr r0, [r6, #0x58] + cmp r0, #0x18000 + ble _020b0f50 + mov r0, r6 + mov r1, r5 + mov r2, #0x800 + bl func_ov00_020b7d4c + b _020b0f6c +_020b0f50: + ldr r0, _020b0f84 ; =data_027e0f94 + ldr r1, [r0] + str r1, [r5] + ldr r1, [r0, #4] + str r1, [r5, #4] + ldr r0, [r0, #8] + str r0, [r5, #8] +_020b0f6c: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, pc} +_020b0f78: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b0e54EP5Vec3pS1_ +_020b0f84: .word data_027e0f94 + + .global _ZN13PlayerControl18func_ov00_020b0f88EP5Vec3piS1_ + arm_func_start _ZN13PlayerControl18func_ov00_020b0f88EP5Vec3piS1_ +_ZN13PlayerControl18func_ov00_020b0f88EP5Vec3piS1_: ; 0x020b0f88 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r7, r1 + add r1, sp, #0 + mov r5, r0 + mov r6, r2 + mov r4, r3 + bl _ZN13PlayerControl18func_ov00_020b0de8EP5Vec3p + cmp r0, #0 + beq _020b104c + mov r0, r5 + mov r1, r7 + mov r2, r6 + bl func_ov00_020b7d4c + add r0, sp, #0 + bl func_01ff9cec + mov r6, r0 + cmp r6, #0x4000 + ble _020b0ffc + ldr r0, [sp] + mov r1, r6 + mov r0, r0, lsl #0xe + bl func_02002c14 + ldr r2, [sp, #8] + str r0, [sp] + mov r1, r6 + mov r0, r2, lsl #0xe + bl func_02002c14 + str r0, [sp, #8] +_020b0ffc: + ldrsh r0, [r5, #0x74] + ldrsh r1, [r5, #0x72] + smulbb r0, r0, r0 + mla r0, r1, r1, r0 + add r0, r0, #4 + mov r0, r0, lsl #0x4 + bl func_01ff9958 + mov r2, r0 + add r1, sp, #0 + mov r0, r4 + bl func_0202b2e8 + ldr r1, [sp] + mov r0, #1 + str r1, [r5, #0xb0] + ldr r1, [sp, #4] + str r1, [r5, #0xb4] + ldr r1, [sp, #8] + add sp, sp, #0xc + str r1, [r5, #0xb8] + ldmia sp!, {r4, r5, r6, r7, pc} +_020b104c: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end _ZN13PlayerControl18func_ov00_020b0f88EP5Vec3piS1_ + + .global _ZN13PlayerControl18func_ov00_020b1058EP5Vec3piS1_S1_ + arm_func_start _ZN13PlayerControl18func_ov00_020b1058EP5Vec3piS1_S1_ +_ZN13PlayerControl18func_ov00_020b1058EP5Vec3piS1_S1_: ; 0x020b1058 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x18 + mov r7, r1 + add r1, sp, #0xc + mov r5, r0 + mov r6, r2 + mov r4, r3 + bl _ZN13PlayerControl18func_ov00_020b0de8EP5Vec3p + cmp r0, #0 + beq _020b11cc + mov r0, r5 + mov r1, r7 + mov r2, r6 + bl func_ov00_020b7d4c + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _020b1140 + ldr r1, _020b11d8 ; =data_027e0f94 + add r2, sp, #0 + bl func_01ff9bf8 + ldr ip, [sp] + ldr r3, [sp, #4] + mov r2, ip, asr #0x1f + mov r0, r3, asr #0x1f + mov lr, r2, lsl #0xb + mov r6, r0, lsl #0xb + ldr r1, [sp, #8] + orr lr, lr, ip, lsr #21 + mov r0, r1, asr #0x1f + mov r2, r0, lsl #0xb + mov r0, #0x800 + adds r7, r0, ip, lsl #11 + adc lr, lr, #0 + mov r7, r7, lsr #0xc + orr r7, r7, lr, lsl #20 + orr r6, r6, r3, lsr #21 + adds ip, r0, r3, lsl #11 + adc r6, r6, #0 + adds r3, r0, r1, lsl #11 + orr r2, r2, r1, lsr #21 + mov r1, ip, lsr #0xc + adc r0, r2, #0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #20 + orr r1, r1, r6, lsl #20 + str r1, [sp, #4] + str r2, [sp, #8] + str r7, [sp] + add r0, sp, #0 + add r1, sp, #0xc + mov r2, #0x2800 + bl func_0202b2e8 + ldr r2, [sp] + ldr r1, [sp, #4] + ldr r0, [sp, #8] + str r2, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] +_020b1140: + add r0, sp, #0xc + bl func_01ff9cec + mov r6, r0 + cmp r6, #0x4000 + ble _020b117c + ldr r0, [sp, #0xc] + mov r1, r6 + mov r0, r0, lsl #0xe + bl func_02002c14 + ldr r2, [sp, #0x14] + str r0, [sp, #0xc] + mov r1, r6 + mov r0, r2, lsl #0xe + bl func_02002c14 + str r0, [sp, #0x14] +_020b117c: + ldrsh r0, [r5, #0x74] + ldrsh r1, [r5, #0x72] + smulbb r0, r0, r0 + mla r0, r1, r1, r0 + add r0, r0, #4 + mov r0, r0, lsl #0x4 + bl func_01ff9958 + mov r2, r0 + add r1, sp, #0xc + mov r0, r4 + bl func_0202b2e8 + ldr r1, [r4] + add sp, sp, #0x18 + str r1, [r5, #0xb0] + ldr r1, [r4, #4] + mov r0, #1 + str r1, [r5, #0xb4] + ldr r1, [r4, #8] + str r1, [r5, #0xb8] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_020b11cc: + mov r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b1058EP5Vec3piS1_S1_ +_020b11d8: .word data_027e0f94 + + .global _ZN13PlayerControl14IsUntouchedNowEv + arm_func_start _ZN13PlayerControl14IsUntouchedNowEv +_ZN13PlayerControl14IsUntouchedNowEv: ; 0x020b11dc + stmdb sp!, {r3, lr} + mov r1, #7 + bl _ZN13PlayerControl17CheckUntouchedNowEj + cmp r0, #0 + beq _020b1208 + ldr r0, _020b1210 ; =data_027e103c + ldr r0, [r0] + ldrsh r0, [r0, #0x1c] + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_020b1208: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl14IsUntouchedNowEv +_020b1210: .word data_027e103c + + .global _ZN13PlayerControl17IsNotUntouchedNowEv + arm_func_start _ZN13PlayerControl17IsNotUntouchedNowEv +_ZN13PlayerControl17IsNotUntouchedNowEv: ; 0x020b1214 + stmdb sp!, {r3, lr} + mov r1, #7 + bl _ZN13PlayerControl17CheckUntouchedNowEj + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, _020b1244 ; =data_027e05f8 + ldrh r0, [r0, #2] + tst r0, #3 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl17IsNotUntouchedNowEv +_020b1244: .word data_027e05f8 + + .global _ZN13PlayerControl18func_ov00_020b1248EPi + arm_func_start _ZN13PlayerControl18func_ov00_020b1248EPi +_ZN13PlayerControl18func_ov00_020b1248EPi: ; 0x020b1248 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xd0] + ldr r3, [r2] + cmp r3, #0 + ldrneb r2, [r3, #4] + cmpne r2, #0 + beq _020b1294 + ldr r2, [r3, #8] + cmp r2, #0 + moveq r2, #5 + movne r2, #6 + str r2, [r1] + ldr r0, [r0, #0xd0] + ldr r0, [r0] + ldr r1, [r0] + ldr r1, [r1, #8] + blx r1 + mov r0, #1 + ldmia sp!, {r3, pc} +_020b1294: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end _ZN13PlayerControl18func_ov00_020b1248EPi + + .global _ZN13PlayerControl18func_ov00_020b129cEv + arm_func_start _ZN13PlayerControl18func_ov00_020b129cEv +_ZN13PlayerControl18func_ov00_020b129cEv: ; 0x020b129c + ldrsh r3, [r0, #0x60] + mov r1, #1 + mov r2, r1 + cmp r3, #2 + blt _020b12b8 + cmp r3, #0xa + movle r2, #0 +_020b12b8: + cmp r2, #0 + ldreqh r0, [r0, #4] + cmpeq r3, r0 + moveq r1, #0 + mov r0, r1 + bx lr + arm_func_end _ZN13PlayerControl18func_ov00_020b129cEv + + .global _ZN13PlayerControl18func_ov00_020b12d0EPs + arm_func_start _ZN13PlayerControl18func_ov00_020b12d0EPs +_ZN13PlayerControl18func_ov00_020b12d0EPs: ; 0x020b12d0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #1 + mov r2, r1 + mov r5, r0 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrsh r0, [r5, #0x62] + cmp r0, #0xf + bgt _020b1330 + mov r0, r5 + bl func_ov00_020b7d6c + cmp r0, #0 + beq _020b1330 + ldrsh r1, [r5, #0x6e] + ldrsh r0, [r5, #0x70] + cmp r1, r0 + bne _020b1330 + ldrsh r1, [r5, #0x6a] + mov r0, #1 + strh r1, [r4] + ldmia sp!, {r3, r4, r5, pc} +_020b1330: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end _ZN13PlayerControl18func_ov00_020b12d0EPs + + .global _ZN13PlayerControl13IsNotTouchingEv + arm_func_start _ZN13PlayerControl13IsNotTouchingEv +_ZN13PlayerControl13IsNotTouchingEv: ; 0x020b1338 + ldrb r0, [r0, #0xc] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + arm_func_end _ZN13PlayerControl13IsNotTouchingEv + + .global _ZN13PlayerControl14IsTouchingFastEv + arm_func_start _ZN13PlayerControl14IsTouchingFastEv +_ZN13PlayerControl14IsTouchingFastEv: ; 0x020b134c + stmdb sp!, {r3, lr} + mov r1, #1 + bl _ZN13PlayerControl14CheckTouchFastEj + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, _020b1378 ; =data_ov00_020eec9c + mov r1, #0x17 + bl func_ov00_020d77e4 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl14IsTouchingFastEv +_020b1378: .word data_ov00_020eec9c + + .global _ZN13PlayerControl11IsTappedNowEv + arm_func_start _ZN13PlayerControl11IsTappedNowEv +_ZN13PlayerControl11IsTappedNowEv: ; 0x020b137c + stmdb sp!, {r4, lr} + mov r4, r0 + ldrsh r1, [r4, #0x60] + cmp r1, #0xa + bge _020b13bc + mov r1, #1 + mov r2, r1 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb + cmp r0, #0 + beq _020b13bc + mov r0, r4 + mov r1, #1 + bl _ZN13PlayerControl17CheckUntouchedNowEj + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, pc} +_020b13bc: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end _ZN13PlayerControl11IsTappedNowEv + + .global _ZN13PlayerControl18func_ov00_020b13c4Ev + arm_func_start _ZN13PlayerControl18func_ov00_020b13c4Ev +_ZN13PlayerControl18func_ov00_020b13c4Ev: ; 0x020b13c4 + stmdb sp!, {r3, r4, r5, lr} + mov r1, #1 + mov r5, r0 + bl _ZN13PlayerControl13CheckTouchingEj + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _020b1494 ; =data_ov00_020e6124 + ldr r0, [r0, #0x20] + bl func_01ff992c + ldrsh r0, [r5, #0x64] + ldr r1, [r5, #0x58] + ldrsh r4, [r5, #0x60] + cmp r0, #0 + ble _020b1410 + cmp r0, r4 + sublt r0, r4, r0 + movlt r0, r0, lsl #0x10 + movlt r4, r0, asr #0x10 +_020b1410: + cmp r1, #0x50000 + blt _020b1428 + cmp r4, #2 + movge r0, #1 + movlt r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_020b1428: + cmp r1, #0x10000 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, pc} + mov r0, #0x40000 + bl func_01ff991c + ldr r2, [r5, #0x58] + mov r1, #0x18 + sub r2, r2, #0x10000 + smull r0, r3, r2, r0 + adds ip, r0, #0x800 + mov r0, #0 + adc r2, r3, r0 + mov r3, ip, lsr #0xc + orr r3, r3, r2, lsl #20 + rsb r2, r3, #0x1000 + umull ip, r3, r2, r1 + mla r3, r2, r0, r3 + mov r2, r2, asr #0x1f + mla r3, r2, r1, r3 + adds ip, ip, #0x800 + adc r1, r3, r0 + mov r2, ip, lsr #0xc + orr r2, r2, r1, lsl #20 + add r1, r2, #2 + cmp r4, r1 + movge r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 + arm_func_end _ZN13PlayerControl18func_ov00_020b13c4Ev +_020b1494: .word data_ov00_020e6124 + + .data + .global data_ov00_020e6104 +data_ov00_020e6104: ; 0x020e6104 + .ascii "fnl" + .byte 0x00 + .global data_ov00_020e6108 +data_ov00_020e6108: ; 0x020e6108 + .ascii "bow" + .byte 0x00 + .global data_ov00_020e610c +data_ov00_020e610c: ; 0x020e610c + .ascii "dco" + .byte 0x00 + .global data_ov00_020e6110 +data_ov00_020e6110: ; 0x020e6110 + .ascii "can" + .byte 0x00 + .global data_ov00_020e6114 +data_ov00_020e6114: ; 0x020e6114 + .ascii "hul" + .byte 0x00 + .global data_ov00_020e6118 +data_ov00_020e6118: ; 0x020e6118 + .ascii "pdl" + .byte 0x00 + .global data_ov00_020e611c +data_ov00_020e611c: ; 0x020e611c + .ascii "anc" + .byte 0x00 + .global data_ov00_020e6120 +data_ov00_020e6120: ; 0x020e6120 + .ascii "brg" + .byte 0x00 + .global data_ov00_020e6124 +data_ov00_020e6124: ; 0x020e6124 + .word data_ov00_020e611c + .global data_ov00_020e6128 +data_ov00_020e6128: ; 0x020e6128 + .word data_ov00_020e6108 + .global data_ov00_020e612c +data_ov00_020e612c: ; 0x020e612c + .word data_ov00_020e6114 + .global data_ov00_020e6130 +data_ov00_020e6130: ; 0x020e6130 + .word data_ov00_020e6110 + .global data_ov00_020e6134 +data_ov00_020e6134: ; 0x020e6134 + .word data_ov00_020e610c + .global data_ov00_020e6138 +data_ov00_020e6138: ; 0x020e6138 + .word data_ov00_020e6118 + .global data_ov00_020e613c +data_ov00_020e613c: ; 0x020e613c + .word data_ov00_020e6104 + .global data_ov00_020e6140 +data_ov00_020e6140: ; 0x020e6140 + .word data_ov00_020e6120 + .global data_ov00_020e6144 +data_ov00_020e6144: ; 0x020e6144 + .byte 0x00, 0x00, 0x05, 0x00 + .global data_ov00_020e6148 +data_ov00_020e6148: ; 0x020e6148 + .byte 0x91, 0x80, 0x8d, 0xec + .global data_ov00_020e614c +data_ov00_020e614c: ; 0x020e614c + .byte 0x00, 0x00, 0x00, 0x00 + + .sbss + .global data_ov00_020ee198 +data_ov00_020ee198: + .space 0x4 + .global data_ov00_020ee19c +data_ov00_020ee19c: + .space 0x4 diff --git a/asm/ov00/Player/include/TouchControl.inc b/asm/ov00/Player/TouchControl.inc similarity index 100% rename from asm/ov00/Player/include/TouchControl.inc rename to asm/ov00/Player/TouchControl.inc diff --git a/asm/ov00/Player/TouchControl.s b/asm/ov00/Player/TouchControl.s index c532a024..24c5f5ab 100644 --- a/asm/ov00/Player/TouchControl.s +++ b/asm/ov00/Player/TouchControl.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/Player/include/TouchControl.inc" + .include "ov00/Player/TouchControl.inc" .text diff --git a/asm/ov00/include/ov00_020773c0.inc b/asm/ov00/ov00_020773c0.inc similarity index 100% rename from asm/ov00/include/ov00_020773c0.inc rename to asm/ov00/ov00_020773c0.inc diff --git a/asm/ov00/ov00_020773c0.s b/asm/ov00/ov00_020773c0.s index 7e93369e..a592c90d 100644 --- a/asm/ov00/ov00_020773c0.s +++ b/asm/ov00/ov00_020773c0.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/include/ov00_020773c0.inc" + .include "ov00/ov00_020773c0.inc" .text diff --git a/asm/ov00/include/ov00_0207af9c.inc b/asm/ov00/ov00_0207af9c.inc similarity index 100% rename from asm/ov00/include/ov00_0207af9c.inc rename to asm/ov00/ov00_0207af9c.inc diff --git a/asm/ov00/ov00_0207af9c.s b/asm/ov00/ov00_0207af9c.s index 1d9d3e66..32b3d472 100644 --- a/asm/ov00/ov00_0207af9c.s +++ b/asm/ov00/ov00_0207af9c.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/include/ov00_0207af9c.inc" + .include "ov00/ov00_0207af9c.inc" .text diff --git a/asm/ov00/include/ov00_020a8e04.inc b/asm/ov00/ov00_020a8e04.inc similarity index 96% rename from asm/ov00/include/ov00_020a8e04.inc rename to asm/ov00/ov00_020a8e04.inc index 59a8e743..4d16ff8a 100644 --- a/asm/ov00/include/ov00_020a8e04.inc +++ b/asm/ov00/ov00_020a8e04.inc @@ -11,6 +11,8 @@ .extern _ZN13LinkStateBase8vfunc_28Ev .extern _ZN13LinkStateBase8vfunc_34EP5Vec3p .extern _ZN13LinkStateBase9GetHealthEv +.extern _ZN13PlayerControl13StopFollowingEv +.extern _ZN13PlayerControl18func_ov00_020af01cEPc .extern _ZN9SysObjectdlEPv .extern data_02050f54 .extern data_027e016c @@ -65,8 +67,6 @@ .extern func_ov00_02083a1c .extern func_ov00_02083c7c .extern func_ov00_020840c4 -.extern func_ov00_020af01c -.extern func_ov00_020af050 .extern func_ov00_020b3ea8 .extern func_ov00_020b3eac .extern func_ov00_020c06b0 diff --git a/asm/ov00/ov00_020a8e04.s b/asm/ov00/ov00_020a8e04.s index 077f66c1..bcf8df54 100644 --- a/asm/ov00/ov00_020a8e04.s +++ b/asm/ov00/ov00_020a8e04.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/include/ov00_020a8e04.inc" + .include "ov00/ov00_020a8e04.inc" .text @@ -227,7 +227,7 @@ func_ov00_020a9028: ; 0x020a9028 ldrb r1, [r0, #0x80] cmp r1, #0 beq _020a904c - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv _020a904c: ldr r0, [r5, #4] cmp r0, #6 @@ -351,7 +351,7 @@ func_ov00_020a9180: ; 0x020a9180 mov r0, r3 strb r2, [sp] strb r2, [sp, #1] - bl func_ov00_020af01c + bl _ZN13PlayerControl18func_ov00_020af01cEPc cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, pc} @@ -2387,3 +2387,29 @@ data_ov00_020e58e0: ; 0x020e58e0 .global data_ov00_020e58e4 data_ov00_020e58e4: ; 0x020e58e4 .word func_ov00_020a9eb4 - 1 + + .sbss + .global data_ov00_020ee178 +data_ov00_020ee178: + .space 0x4 + .global data_ov00_020ee17c +data_ov00_020ee17c: + .space 0x4 + .global data_ov00_020ee180 +data_ov00_020ee180: + .space 0x4 + .global data_ov00_020ee184 +data_ov00_020ee184: + .space 0x4 + .global data_ov00_020ee188 +data_ov00_020ee188: + .space 0x4 + .global data_ov00_020ee18c +data_ov00_020ee18c: + .space 0x4 + .global data_ov00_020ee190 +data_ov00_020ee190: + .space 0x4 + .global data_ov00_020ee194 +data_ov00_020ee194: + .space 0x4 diff --git a/asm/ov00/include/ov00_020ae7a4.inc b/asm/ov00/ov00_020ae7a4.inc similarity index 98% rename from asm/ov00/include/ov00_020ae7a4.inc rename to asm/ov00/ov00_020ae7a4.inc index 867da64d..65619276 100644 --- a/asm/ov00/include/ov00_020ae7a4.inc +++ b/asm/ov00/ov00_020ae7a4.inc @@ -46,7 +46,10 @@ .extern _ZN13LinkStateBase8vfunc_34EP5Vec3p .extern _ZN13LinkStateItem16GetLinkStateMoveEv .extern _ZN13LinkStateItem16IsHammerEquippedEv -.extern _ZN13LinkStateRoll18func_ov00_020aeeacEv +.extern _ZN13PlayerControl13GetTouchAngleEv +.extern _ZN13PlayerControl13StopFollowingEv +.extern _ZN13PlayerControl18func_ov00_020aeef8Ev +.extern _ZN13PlayerControl18func_ov00_020b034cEv .extern _ZN15LinkStateDamage18func_ov00_020acb6cEP5Vec3pi .extern _ZN15LinkStateDamage18func_ov00_020ace90EP5Vec3pi .extern _ZN17LinkStateInteract15SetBombVelocityEP5Vec3p @@ -62,14 +65,12 @@ .extern _ZN4Item18func_ov00_020ad068Ei .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj -.extern _ZNK11ItemManager15GetEquippedItemEv .extern _ZNK11ItemManager16GetEquippedFairyEv .extern _ZNK11ItemManager19GetActiveFairyLevelEi .extern _ZNK11ItemManager19GetEquippedShipPartEj .extern _ZNK11ItemManager7GetAmmoEi .extern _ZNK11ItemManager7HasItemEi .extern _ZNK11ItemManager8GetFairyEi -.extern _ZNK11ItemManager9HasPotionEj .extern data_02050f54 .extern data_02051f54 .extern data_02052f54 @@ -86,7 +87,6 @@ .extern data_027e0438 .extern data_027e045c .extern data_027e0468 -.extern data_027e05f8 .extern data_027e0618 .extern data_027e0764 .extern data_027e077c @@ -103,7 +103,6 @@ .extern data_027e0d84 .extern data_027e0db0 .extern data_027e0e28 -.extern data_027e0e2c .extern data_027e0e58 .extern data_027e0e5c .extern data_027e0e60 @@ -450,9 +449,7 @@ .extern func_ov00_02084b38 .extern func_ov00_02084be0 .extern func_ov00_02084c5c -.extern func_ov00_02085108 .extern func_ov00_020853fc -.extern func_ov00_02085594 .extern func_ov00_020872e8 .extern func_ov00_02087338 .extern func_ov00_0208766c @@ -651,9 +648,6 @@ .extern func_ov14_02153144 .extern func_ov14_021532a4 .extern func_ov15_0213a524 -.extern func_ov15_0213ce4c -.extern func_ov15_0213dcb0 -.extern func_ov15_0213dcb8 .extern func_ov15_0214d21c .extern func_ov15_0214d238 .extern func_ov15_0214d248 @@ -663,7 +657,6 @@ .extern func_ov23_02176034 .extern func_ov23_021763c0 .extern func_ov23_02177e7c -.extern func_ov24_02178348 .extern func_ov26_0216ebc0 .extern func_ov26_0216ecb8 .extern func_ov26_021767ec diff --git a/asm/ov00/ov00_020ae7a4.s b/asm/ov00/ov00_020ae7a4.s index 5d7b1859..c9b33932 100644 --- a/asm/ov00/ov00_020ae7a4.s +++ b/asm/ov00/ov00_020ae7a4.s @@ -1,2861 +1,8 @@ .include "macros/function.inc" - .include "ov00/include/ov00_020ae7a4.inc" + .include "ov00/ov00_020ae7a4.inc" .text - .global func_ov00_020aeef8 - arm_func_start func_ov00_020aeef8 -func_ov00_020aeef8: ; 0x020aeef8 - stmdb sp!, {r3, lr} - ldr r0, _020aef2c ; =data_027e077c - ldr r1, [r0] - mov r0, r1 - cmp r1, #0x37 - cmpne r0, #0x3b - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #0x3d - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl _ZN13LinkStateRoll18func_ov00_020aeeacEv - ldmia sp!, {r3, pc} - .align 2, 0 - arm_func_end func_ov00_020aeef8 -_020aef2c: .word data_027e077c - - .global func_ov00_020aef30 - thumb_func_start func_ov00_020aef30 -func_ov00_020aef30: ; 0x020aef30 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - blx func_ov00_020b78a0 - add r4, #0xd4 - ldr r0, [r4] - cmp r0, #0 - beq _020aef56 - ldr r1, _020aef5c ; =0x504c5952 - ldr r2, _020aef60 ; =data_ov00_020e6148 - str r1, [sp] - mov r1, #0 - str r1, [sp, #4] - str r1, [sp, #8] - ldr r4, [r0] - ldr r3, _020aef64 ; =0x5043544c - ldr r4, [r4, #0x20] - blx r4 -_020aef56: - add sp, #0xc - pop {r3, r4, pc} - nop - thumb_func_end func_ov00_020aef30 -_020aef5c: .word 0x504c5952 -_020aef60: .word data_ov00_020e6148 -_020aef64: .word 0x5043544c - - .global func_ov00_020aef68 - thumb_func_start func_ov00_020aef68 -func_ov00_020aef68: ; 0x020aef68 - push {r4, lr} - add r4, r0, #0 - blx func_ov00_020b78a0 - add r1, r4, #0 - mov r0, #0 - add r1, #0xbc - str r0, [r1] - add r1, r4, #0 - add r1, #0xc0 - str r0, [r1] - add r1, r4, #0 - add r1, #0xc4 - str r0, [r1] - add r1, r4, #0 - add r1, #0x80 - strb r0, [r1] - add r1, r4, #0 - add r1, #0x82 - strb r0, [r1] - add r1, r4, #0 - sub r2, r0, #1 - add r1, #0x84 - str r2, [r1] - add r1, r4, #0 - add r1, #0x88 - str r2, [r1] - add r1, r4, #0 - add r1, #0x8c - str r2, [r1] - add r1, r4, #0 - add r1, #0x90 - str r2, [r1] - add r1, r4, #0 - add r1, #0x81 - strb r0, [r1] - ldr r1, _020aeff0 ; =data_027e0d0c - add r0, r4, #0 - ldr r2, [r1] - add r0, #0xb0 - str r2, [r0] - add r0, r4, #0 - ldr r2, [r1, #4] - add r0, #0xb4 - str r2, [r0] - add r0, r4, #0 - ldr r1, [r1, #8] - add r0, #0xb8 - str r1, [r0] - ldr r0, _020aeff4 ; =data_027e0d38 - ldr r0, [r0] - blx func_ov00_02078b40 - cmp r0, #2 - bne _020aefde - ldr r0, _020aeff8 ; =data_027e103c - ldr r0, [r0] - blx func_ov00_020cf2b8 -_020aefde: - add r0, r4, #0 - mov r1, #0 - mvn r1, r1 - add r0, #0xc8 - str r1, [r0] - add r4, #0xcc - str r1, [r4] - pop {r4, pc} - nop - thumb_func_end func_ov00_020aef68 -_020aeff0: .word data_027e0d0c -_020aeff4: .word data_027e0d38 -_020aeff8: .word data_027e103c - - .global func_ov00_020aeffc - arm_func_start func_ov00_020aeffc -func_ov00_020aeffc: ; 0x020aeffc - ldr r1, _020af014 ; =data_027e0fe4 - mov r2, r0 - ldr r0, [r1] - ldr ip, _020af018 ; =func_ov00_020c3674 - add r1, r2, #0x84 - bx ip - .align 2, 0 - arm_func_end func_ov00_020aeffc -_020af014: .word data_027e0fe4 -_020af018: .word func_ov00_020c3674 - - .global func_ov00_020af01c - arm_func_start func_ov00_020af01c -func_ov00_020af01c: ; 0x020af01c - ldrb r2, [r0, #0x81] - cmp r2, #0 - moveq r0, #0 - bxeq lr - ldrb r2, [r0, #0x9c] - strb r2, [r1] - ldrb r2, [r0, #0x9d] - mov r0, #1 - strb r2, [r1, #1] - bx lr - arm_func_end func_ov00_020af01c - - .global func_ov00_020af044 - arm_func_start func_ov00_020af044 -func_ov00_020af044: ; 0x020af044 - mov r1, #1 - strb r1, [r0, #0x80] - bx lr - arm_func_end func_ov00_020af044 - - .global func_ov00_020af050 - arm_func_start func_ov00_020af050 -func_ov00_020af050: ; 0x020af050 - mvn r1, #0 - str r1, [r0, #0x84] - str r1, [r0, #0x88] - mov r1, #0 - strb r1, [r0, #0x81] - str r1, [r0, #0xa0] - bx lr - arm_func_end func_ov00_020af050 - - .global func_ov00_020af06c - arm_func_start func_ov00_020af06c -func_ov00_020af06c: ; 0x020af06c - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldrb r0, [r6, #0x78] - cmp r0, #0 - moveq r0, #0 - streqb r0, [r6, #0x79] - ldmeqia sp!, {r4, r5, r6, pc} - ldrb r0, [r6, #0x7a] - ldrb r5, [r6, #0x79] - cmp r0, #0 - ldr r0, _020af27c ; =data_027e0f74 - strneb r5, [r6, #0x7b] - ldr r0, [r0] - bl func_ov00_02097738 - cmp r0, #0 - ldreq r0, _020af280 ; =data_027e0c68 - ldreqb r0, [r0, #4] - cmpeq r0, #0 - beq _020af0d4 - ldr r0, _020af284 ; =data_027e0d38 - ldr r0, [r0] - bl func_ov00_02078b40 - cmp r0, #2 - movne r0, #0 - strneb r0, [r6, #0x79] - ldmia sp!, {r4, r5, r6, pc} -_020af0d4: - ldr r0, _020af288 ; =gItemManager - ldr r0, [r0] - ldr r4, [r0] - cmp r4, #9 - bne _020af104 - mov r1, #0 - bl _ZNK11ItemManager9HasPotionEj - cmp r0, #0 - beq _020af124 - mov r0, #1 - strb r0, [r6, #0x79] - ldmia sp!, {r4, r5, r6, pc} -_020af104: - cmp r4, #0xa - bne _020af124 - mov r1, #1 - bl _ZNK11ItemManager9HasPotionEj - cmp r0, #0 - movne r0, #1 - strneb r0, [r6, #0x79] - ldmneia sp!, {r4, r5, r6, pc} -_020af124: - ldr r0, _020af284 ; =data_027e0d38 - ldr r0, [r0] - bl func_ov00_02078b40 - cmp r0, #2 - bne _020af164 - mov r1, #1 - ldr r0, _020af288 ; =gItemManager - strb r1, [r6, #0x7b] - ldr r0, [r0] - bl _ZN11ItemManager18func_ov00_020ad790Ei - ldrb r1, [r6, #0x7b] - tst r1, r0 - movne r0, #1 - moveq r0, #0 - strb r0, [r6, #0x7b] - b _020af268 -_020af164: - ldr r0, _020af28c ; =data_027e05f8 - ldrh r0, [r0] - tst r0, #0x300 - ldrneb r0, [r6, #0x7e] - cmpne r0, #0 - beq _020af190 - bl func_ov00_020aeef8 - cmp r0, #0 - movne r0, #1 - strneb r0, [r6, #0x7b] - bne _020af1f8 -_020af190: - ldr r0, _020af28c ; =data_027e05f8 - ldrh r0, [r0] - tst r0, #0x300 - bne _020af1b4 - ldrb r0, [r6, #0x83] - cmp r0, #0 - movne r0, #0 - strneb r0, [r6, #0x7b] - bne _020af1f8 -_020af1b4: - ldr r0, _020af290 ; =data_027e103c - ldr r0, [r0] - ldrsh r0, [r0, #0x20] - cmp r0, #2 - ldreqb r0, [r6, #0xc] - cmpeq r0, #0 - bne _020af1f8 - bl func_ov00_020aeef8 - cmp r0, #0 - beq _020af1f8 - ldrb r0, [r6, #0x7b] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [r6, #0x7b] - mov r0, #0 - strb r0, [r6, #0x7c] -_020af1f8: - ldr r0, _020af288 ; =gItemManager - mov r1, #1 - ldr r0, [r0] - bl _ZN11ItemManager18func_ov00_020ad790Ei - ldrb r1, [r6, #0x7b] - tst r1, r0 - movne r0, #1 - moveq r0, #0 - cmp r4, #8 - strb r0, [r6, #0x7b] - cmpeq r5, #0 - ldreqb r0, [r6, #0x7b] - cmpeq r0, #1 - bne _020af268 - ldr r0, _020af288 ; =gItemManager - mov r1, #0 - ldr r0, [r0] - bl _ZNK11ItemManager8GetFairyEi - cmp r0, #0 - beq _020af268 - ldr r1, _020af294 ; =data_027e0f94 - ldr r2, [r0, #0x50] - ldr r1, [r1, #4] - ldr r0, [r0, #0x48] - add r1, r1, #0x800 - str r0, [r6, #0xbc] - str r1, [r6, #0xc0] - str r2, [r6, #0xc4] -_020af268: - ldrb r0, [r6, #0x7a] - cmp r0, #0 - ldrneb r0, [r6, #0x7b] - strneb r0, [r6, #0x79] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 - arm_func_end func_ov00_020af06c -_020af27c: .word data_027e0f74 -_020af280: .word data_027e0c68 -_020af284: .word data_027e0d38 -_020af288: .word gItemManager -_020af28c: .word data_027e05f8 -_020af290: .word data_027e103c -_020af294: .word data_027e0f94 - - .global func_ov00_020af298 - arm_func_start func_ov00_020af298 -func_ov00_020af298: ; 0x020af298 - stmdb sp!, {r4, lr} - ldr r1, _020af2d0 ; =data_027e05f8 - mov r4, r0 - ldrh r0, [r1] - tst r0, #0x300 - beq _020af2c4 - bl func_ov00_020aeef8 - cmp r0, #0 - movne r0, #1 - strneb r0, [r4, #0x79] - ldmneia sp!, {r4, pc} -_020af2c4: - mov r0, #0 - strb r0, [r4, #0x79] - ldmia sp!, {r4, pc} - .align 2, 0 - arm_func_end func_ov00_020af298 -_020af2d0: .word data_027e05f8 - - .global func_ov00_020af2d4 - arm_func_start func_ov00_020af2d4 -func_ov00_020af2d4: ; 0x020af2d4 - stmdb sp!, {r4, r5, r6, lr} - ldr r3, _020af3bc ; =data_027e0d38 - mov r6, r0 - ldr r0, [r3] - mov r5, r1 - mov r4, r2 - bl func_ov00_02078b40 - cmp r0, #2 - bne _020af33c - cmp r4, #0 - beq _020af33c - bl func_ov15_0213ce4c - ldrb r0, [r0, #0x3d] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - bl func_ov15_0213ce4c - bl func_ov15_0213dcb0 - cmp r0, #0 - bne _020af334 - bl func_ov15_0213ce4c - bl func_ov15_0213dcb8 - cmp r0, #0 - beq _020af33c -_020af334: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_020af33c: - ldrb r0, [r6, #0x7c] - cmp r0, #0 - beq _020af3ac - tst r5, #2 - mov r4, #1 - mov r2, #0 - beq _020af370 - ldr r0, _020af3c0 ; =data_027e077c - ldr r1, _020af3c4 ; =data_02056be4 - ldr r0, [r0] - ldrb r0, [r1, r0] - tst r0, #1 - movne r2, r4 -_020af370: - cmp r2, #0 - bne _020af3a4 - tst r5, #1 - beq _020af3a0 - bl func_ov00_020aeef8 - cmp r0, #0 - beq _020af3a0 - ldr r0, _020af3c8 ; =data_027e103c - ldr r0, [r0] - ldrb r0, [r0, #0x24] - cmp r0, #0 - bne _020af3a4 -_020af3a0: - mov r4, #0 -_020af3a4: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} -_020af3ac: - tst r5, #4 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 - arm_func_end func_ov00_020af2d4 -_020af3bc: .word data_027e0d38 -_020af3c0: .word data_027e077c -_020af3c4: .word data_02056be4 -_020af3c8: .word data_027e103c - - .global func_ov00_020af3cc - arm_func_start func_ov00_020af3cc -func_ov00_020af3cc: ; 0x020af3cc - stmdb sp!, {r3, r4, r5, lr} - mov r2, #1 - mov r5, r0 - mov r4, #0 - bl func_ov00_020af2d4 - cmp r0, #0 - beq _020af3f4 - ldrh r0, [r5, #0x34] - tst r0, #1 - movne r4, #1 -_020af3f4: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end func_ov00_020af3cc - - .global func_ov00_020af3fc - arm_func_start func_ov00_020af3fc -func_ov00_020af3fc: ; 0x020af3fc - stmdb sp!, {r3, r4, r5, lr} - mov r2, #1 - mov r5, r0 - mov r4, #0 - bl func_ov00_020af2d4 - cmp r0, #0 - beq _020af424 - ldrh r0, [r5, #0x34] - tst r0, #2 - movne r4, #1 -_020af424: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end func_ov00_020af3fc - - .global func_ov00_020af42c - arm_func_start func_ov00_020af42c -func_ov00_020af42c: ; 0x020af42c - stmdb sp!, {r4, lr} - mov r2, #1 - mov r4, r0 - bl func_ov00_020af2d4 - cmp r0, #0 - ldrneb r0, [r4, #0xc] - cmpne r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, pc} - arm_func_end func_ov00_020af42c - - .global func_ov00_020af454 - arm_func_start func_ov00_020af454 -func_ov00_020af454: ; 0x020af454 - stmdb sp!, {r4, lr} - mov r2, #1 - mov r4, r0 - bl func_ov00_020af2d4 - cmp r0, #0 - beq _020af49c - ldr r0, [r4, #0x5c] - cmp r0, #0x800 - ldrgtsh r0, [r4, #0x64] - cmpgt r0, #0 - ble _020af49c - ldrsh r1, [r4, #0x60] - cmp r0, r1 - bgt _020af49c - add r0, r0, #0xf - cmp r1, r0 - movlt r0, #1 - ldmltia sp!, {r4, pc} -_020af49c: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end func_ov00_020af454 - - .global func_ov00_020af4a4 - arm_func_start func_ov00_020af4a4 -func_ov00_020af4a4: ; 0x020af4a4 - stmdb sp!, {r3, lr} - ldr r0, _020af528 ; =data_027e0d38 - ldr r0, [r0] - ldr r0, [r0, #0x28] - ldrb r0, [r0, #0x34] - cmp r0, #0 - bne _020af520 - ldr r1, _020af52c ; =data_027e0e2c - mvn r0, #0 - ldr r1, [r1, #4] - cmp r1, r0 - bne _020af520 - ldr r0, _020af530 ; =data_027e103c - ldr r0, [r0] - bl func_ov05_02103f4c - cmp r0, #0 - bne _020af520 - bl _ZN13LinkStateRoll18func_ov00_020aeeacEv - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, _020af534 ; =data_027e077c - ldr r0, [r0] - cmp r0, #0x1a - cmpne r0, #0x1b - cmpne r0, #0x1c - bne _020af518 - mov r0, #1 - ldmia sp!, {r3, pc} -_020af518: - mov r0, #0 - ldmia sp!, {r3, pc} -_020af520: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 - arm_func_end func_ov00_020af4a4 -_020af528: .word data_027e0d38 -_020af52c: .word data_027e0e2c -_020af530: .word data_027e103c -_020af534: .word data_027e077c - - .global func_ov00_020af538 - arm_func_start func_ov00_020af538 -func_ov00_020af538: ; 0x020af538 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r4, r0 - strb r1, [r4, #0x7c] - strb r2, [r4, #0x7e] - strb r1, [r4, #0x7d] - ldrb r0, [r4, #0x78] - cmp r0, #0 - beq _020af57c - ldr r0, _020af6c4 ; =data_027e0f74 - ldr r0, [r0] - bl func_ov00_02097738 - cmp r0, #0 - ldreq r0, _020af6c8 ; =data_027e0c68 - ldreqb r0, [r0, #4] - cmpeq r0, #0 - beq _020af584 -_020af57c: - mov r5, #1 - b _020af588 -_020af584: - mov r5, #0 -_020af588: - cmp r5, #0 - bne _020af5a0 - mov r0, r4 - bl func_ov00_020af4a4 - cmp r0, #0 - bne _020af5a8 -_020af5a0: - mov r0, #0 - strb r0, [r4, #0x7c] -_020af5a8: - cmp r5, #0 - bne _020af5bc - bl func_ov00_020aeef8 - cmp r0, #0 - bne _020af5c4 -_020af5bc: - mov r0, #0 - strb r0, [r4, #0x7d] -_020af5c4: - ldrb r1, [r4, #0x7c] - mov r0, r4 - bl func_ov00_020b7924 - ldrb r0, [r4, #0x7c] - cmp r0, #0 - beq _020af644 - ldrsh r0, [r4, #0x60] - cmp r0, #0 - bne _020af644 - mov r0, r4 - bl func_ov00_020aeffc - cmp r0, #0 - ldreqb r0, [r4, #0x81] - cmpeq r0, #0 - beq _020af620 - ldr r1, _020af6cc ; =data_027e0fac - ldr r0, _020af6d0 ; =data_027e0ffc - ldrsh r2, [r1] - ldr r1, _020af6d4 ; =0x0000010a - mov r3, #0 - bl func_ov00_020cebcc - mov r0, r4 - bl func_ov00_020af050 -_020af620: - ldr r0, _020af6d8 ; =data_027e0e60 - add r1, sp, #0 - ldr r0, [r0] - bl func_ov00_02085108 - cmp r0, #3 - cmpne r0, #7 - moveq r0, #1 - movne r0, #0 - strb r0, [r4, #0x82] -_020af644: - ldrb r5, [r4, #0x79] - mov r0, r4 - bl func_ov00_020af06c - cmp r5, #0 - beq _020af670 - ldrb r0, [r4, #0x79] - cmp r0, #0 - bne _020af670 - ldr r0, _020af6dc ; =data_027e103c - ldr r0, [r0] - bl func_ov00_020cf20c -_020af670: - mov r5, #0 -_020af674: - ldr r0, [r4, #0xd0] - ldr r0, [r0, r5, lsl #2] - cmp r0, #0 - beq _020af694 - ldr r2, [r0] - mov r1, r4 - ldr r2, [r2, #0xc] - blx r2 -_020af694: - add r5, r5, #1 - cmp r5, #2 - blt _020af674 - mov r1, #0 - ldr r0, _020af6e0 ; =data_027e05f8 - strb r1, [r4, #0x7f] - ldrh r0, [r0] - tst r0, #0x300 - movne r1, #1 - strb r1, [r4, #0x83] - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 - arm_func_end func_ov00_020af538 -_020af6c4: .word data_027e0f74 -_020af6c8: .word data_027e0c68 -_020af6cc: .word data_027e0fac -_020af6d0: .word data_027e0ffc -_020af6d4: .word 0x0000010a -_020af6d8: .word data_027e0e60 -_020af6dc: .word data_027e103c -_020af6e0: .word data_027e05f8 - - .global func_ov00_020af6e4 - arm_func_start func_ov00_020af6e4 -func_ov00_020af6e4: ; 0x020af6e4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - cmp r3, #4 - mov r4, r0 - mov r6, r1 - mov r5, r2 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} - cmp r5, #0 - ble _020af72c - ldr r0, _020af770 ; =data_027e0f94 - bl func_01ff9ec0 - cmp r0, r5 - addge sp, sp, #4 - ldmgeia sp!, {r3, r4, r5, r6, pc} - mvn r0, #0 - str r0, [r4, #0x84] - str r0, [r4, #0x88] -_020af72c: - ldr r1, _020af774 ; =data_027e0e60 - add r0, sp, #0 - ldr r1, [r1] - mov r2, r6 - bl func_ov00_02083a1c - ldrb r0, [sp] - mov r2, #1 - mov r1, #0 - strb r0, [r4, #0x9c] - ldrb r3, [sp, #1] - mov r0, #0xf - strb r3, [r4, #0x9d] - strb r2, [r4, #0x81] - strb r1, [r4, #0x80] - strh r0, [r4, #0xa8] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 - arm_func_end func_ov00_020af6e4 -_020af770: .word data_027e0f94 -_020af774: .word data_027e0e60 - - .global func_ov00_020af778 - arm_func_start func_ov00_020af778 -func_ov00_020af778: ; 0x020af778 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov sb, r0 - ldrb r0, [sb, #0x78] - cmp r0, #0 - beq _020af7b8 - ldr r0, _020afabc ; =data_027e0f74 - ldr r0, [r0] - bl func_ov00_02097738 - cmp r0, #0 - bne _020af7b8 - ldr r0, _020afabc ; =data_027e0f74 - ldr r0, [r0] - bl func_ov00_02097750 - cmp r0, #0 - beq _020af7cc -_020af7b8: - mov r0, #0xf - strh r0, [sb, #0xaa] - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_020af7cc: - ldrsh r0, [sb, #0xaa] - cmp r0, #0 - ble _020af7ec - sub r0, r0, #1 - strh r0, [sb, #0xaa] - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_020af7ec: - bl func_ov00_020aeef8 - cmp r0, #0 - bne _020af810 - mvn r0, #0 - str r0, [sb, #0x8c] - str r0, [sb, #0x90] - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_020af810: - ldrh r0, [sb, #0x34] - mov r4, #0 - mov r5, r4 - tst r0, #2 - beq _020af8b0 - ldrsh r0, [sb, #0x60] - cmp r0, #0x15 - bge _020af8b0 - ldrsh r0, [sb, #0x68] - ldr r1, [sb, #0x28] - ldrsh r2, [sb, #0x66] - sub r1, r1, r0 - mul r0, r1, r1 - ldr r1, [sb, #0x24] - sub r1, r1, r2 - mla r0, r1, r1, r0 - cmp r0, #0x64 - bge _020af8b0 - mov r0, sb - mov r1, #7 - mov r2, #1 - bl func_ov00_020af2d4 - cmp r0, #0 - ldrneb r0, [sb, #0x79] - movne r4, #1 - cmpne r0, #0 - beq _020af8b0 - ldr r0, _020afac0 ; =data_027e0f90 - ldr r0, [r0] - ldr r1, [r0] - ldr r1, [r1, #8] - blx r1 - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _020af8b0 - ldr r0, _020afac4 ; =gItemManager - ldr r0, [r0] - bl _ZN11ItemManager12GetEquipItemEi - mov r5, r0 -_020af8b0: - ldr r0, _020afac8 ; =data_027e0fc8 - mov r8, #0 - ldr r1, [r0] - cmp r1, #0 - beq _020af8dc - ldr r0, _020afacc ; =data_027e0fe4 - add r1, r1, #0x3c - ldr r0, [r0] - bl func_ov00_020c3674 - cmp r0, #0 - movne r8, #1 -_020af8dc: - cmp r4, #0 - mov r4, #0 - beq _020afa68 - ldr r0, _020afacc ; =data_027e0fe4 - add r1, sb, #0x8c - ldr r0, [r0] - bl func_ov00_020c3674 - movs r6, r0 - mov r7, r4 - beq _020af97c - ldr r7, [r6, #0x12c] - mov r0, sb - mov r1, r7 - mov r2, r8 - bl func_ov00_020afe88 - cmp r0, #0 - beq _020af97c - cmp r5, #0 - beq _020af944 - mov r0, r5 - ldr r2, [r0] - mov r1, r7 - ldr r2, [r2, #0x44] - blx r2 - cmp r0, #0 - beq _020af97c -_020af944: - ldr r1, [sb, #0x8c] - mvn r0, #0 - str r1, [sb, #0x84] - ldr r2, [sb, #0x90] - mov r1, #0 - str r2, [sb, #0x88] - str r0, [sb, #0x8c] - str r0, [sb, #0x90] - mov r0, r6 - strb r1, [sb, #0x80] - mov r1, #0xf - strh r1, [sb, #0xa8] - bl func_ov00_020c28ec - mov r4, r0 -_020af97c: - ldr r0, _020afad0 ; =data_027e0e60 - add r1, sp, #8 - ldr r0, [r0] - bl func_ov00_02085108 - ldr r2, _020afad4 ; =data_027e0f94 - mov r1, r0 - ldr r0, [r2, #4] - cmp r5, #0 - str r0, [sp, #0xc] - bne _020af9e0 - cmp r1, #0 - beq _020afaa8 - mov r0, sb - mov r2, r8 - bl func_ov00_020afeec - cmp r0, #0 - beq _020afaa8 - add r1, sp, #8 - mov r0, sb - mov r2, r4 - mov r3, r7 - bl func_ov00_020af6e4 - add sp, sp, #0x14 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_020af9e0: - mov r0, r5 - ldr r2, [r0] - ldr r2, [r2, #0x48] - blx r2 - cmp r0, #0 - beq _020afa18 - add r1, sp, #8 - mov r0, sb - mov r2, r4 - mov r3, r7 - bl func_ov00_020af6e4 - add sp, sp, #0x14 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_020afa18: - cmp r4, #0 - bne _020afaa8 - mov r0, r5 - ldr r1, [r0] - ldr r1, [r1, #0x40] - blx r1 - cmp r0, #0 - beq _020afaa8 - add r1, sp, #8 - mov r0, sb - mov r2, #0 - bl func_ov00_020b7d4c - add r1, sp, #8 - mov r0, sb - mov r2, r4 - mov r3, r7 - bl func_ov00_020af6e4 - add sp, sp, #0x14 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_020afa68: - ldr r1, _020afacc ; =data_027e0fe4 - add r0, sp, #0 - ldr r1, [r1] - mov r2, r4 - bl func_ov00_020c3484 - ldr r0, [sp] - str r0, [sb, #0x8c] - ldr r0, [sp, #4] - str r0, [sb, #0x90] - ldrsh r0, [sb, #0x60] - cmp r0, #0 - bne _020afaa8 - ldr r0, [sb, #0x8c] - str r0, [sb, #0x94] - ldr r0, [sb, #0x90] - str r0, [sb, #0x98] -_020afaa8: - cmp r4, #0 - movgt r0, #1 - movle r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 - arm_func_end func_ov00_020af778 -_020afabc: .word data_027e0f74 -_020afac0: .word data_027e0f90 -_020afac4: .word gItemManager -_020afac8: .word data_027e0fc8 -_020afacc: .word data_027e0fe4 -_020afad0: .word data_027e0e60 -_020afad4: .word data_027e0f94 - - .global func_ov00_020afad8 - arm_func_start func_ov00_020afad8 -func_ov00_020afad8: ; 0x020afad8 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r2, _020afb60 ; =data_027e0f94 - ldr r3, [r1, #4] - ldr r1, [r2, #4] - cmp r3, r1 - addge sp, sp, #0xc - movge r0, #0 - ldmgeia sp!, {pc} - ldrb r0, [r0, #0x79] - cmp r0, #0 - beq _020afb54 - ldr r0, _020afb64 ; =data_027e0f90 - ldr r0, [r0] - ldr r1, [r0] - ldr r1, [r1, #8] - blx r1 - cmp r0, #3 - bne _020afb48 - ldr r0, _020afb68 ; =data_027e0e60 - add r1, sp, #0 - ldr r0, [r0] - bl func_ov00_02085594 - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {pc} -_020afb48: - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {pc} -_020afb54: - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {pc} - .align 2, 0 - arm_func_end func_ov00_020afad8 -_020afb60: .word data_027e0f94 -_020afb64: .word data_027e0f90 -_020afb68: .word data_027e0e60 - - .global func_ov00_020afb6c - arm_func_start func_ov00_020afb6c -func_ov00_020afb6c: ; 0x020afb6c - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov sb, r0 - bl func_ov00_020af778 - ldr r1, _020afe70 ; =data_027e0fe4 - mov r4, r0 - ldr r0, [r1] - add r1, sb, #0x84 - bl func_ov00_020c3674 - ldr r1, _020afe74 ; =gItemManager - mov r5, r0 - ldr r6, [r1] - mov r0, r6 - bl _ZNK11ItemManager16GetEquippedFairyEv - mov r1, r0 - mov r0, r6 - bl _ZNK11ItemManager8GetFairyEi - cmp r5, #0 - ldreqb r1, [sb, #0x81] - cmpeq r1, #0 - bne _020afbcc - cmp r0, #0 - beq _020afbcc - bl func_ov00_020bad18 -_020afbcc: - cmp r5, #0 - ldr r6, [sb, #0xa4] - beq _020afce8 - ldr r0, _020afe78 ; =data_027e0f94 - add r1, r5, #0x48 - bl func_01ff9ec0 - mov r6, r0 - add r1, sp, #0x10 - mov r0, r5 - bl func_ov00_020c2a0c - ldr r0, [sp, #0x14] - mov r1, #0 - add r0, r0, #0x66 - add r2, r0, #0x600 - str r2, [sp, #0x14] - ldr r0, [r5, #0x12c] - mov r7, r1 - cmp r0, #5 - mov r8, #3 - addls pc, pc, r0, lsl #2 - b _020afc84 -_020afc20: ; jump table - b _020afc38 ; case 0 - b _020afc48 ; case 1 - b _020afc6c ; case 2 - b _020afc84 ; case 3 - b _020afc84 ; case 4 - b _020afc50 ; case 5 -_020afc38: - sub r0, r8, #4 - str r0, [sb, #0x84] - str r0, [sb, #0x88] - b _020afc9c -_020afc48: - mov r7, #1 - b _020afc9c -_020afc50: - add r0, r5, #0x100 - ldrsh r0, [r0, #0x1e] - mov r7, #2 - mov r8, #1 - add r0, r2, r0 - str r0, [sp, #0x14] - b _020afc9c -_020afc6c: - ldr r0, [sp, #0x1c] - mov r7, r8 - add r0, r2, r0 - mov r8, r1 - str r0, [sp, #0x14] - b _020afc9c -_020afc84: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x1c] - mov r7, #2 - add r0, r1, r0 - mov r8, r7 - str r0, [sp, #0x14] -_020afc9c: - cmp r7, #0 - beq _020afcf4 - ldr r0, _020afe7c ; =data_027e0fc8 - ldr r0, [r0] - bl func_ov00_020bc46c - cmp r0, #0 - bne _020afcf4 - add r1, sp, #0x10 - mov r0, sb - mov r2, r7 - bl func_ov00_020aff90 - cmp r4, #0 - beq _020afcf4 - ldr r2, [r5, #8] - ldr r0, _020afe80 ; =data_027e0ffc - add r1, sp, #0x10 - mov r3, r8 - bl func_ov00_020ced64 - b _020afcf4 -_020afce8: - mvn r0, #0 - str r0, [sb, #0x84] - str r0, [sb, #0x88] -_020afcf4: - ldrb r0, [sb, #0x81] - cmp r0, #0 - beq _020afe24 - ldr r0, _020afe84 ; =data_027e0e60 - add r1, sb, #0x9c - ldr r0, [r0] - bl func_ov00_020840c4 - str r0, [sb, #0xa0] - cmp r0, #0 - beq _020afd88 - ldr r1, [r0, #0x18] - str r1, [sp, #4] - ldr r1, [r0, #0x1c] - str r1, [sp, #8] - ldr r0, [r0, #0x20] - str r0, [sp, #0xc] - ldr r0, [sb, #0xa0] - ldr r1, [r0] - ldr r1, [r1, #0x54] - blx r1 - cmp r0, #0 - moveq r0, #0 - beq _020afd5c - ldr r1, [r0] - ldr r1, [r1, #0x44] - blx r1 -_020afd5c: - ldr r1, [sp, #8] - add r0, r1, r0 - str r0, [sp, #8] - ldr r0, [sb, #0xa0] - ldrsb r0, [r0, #0x12] - cmp r0, #1 - moveq r5, #1 - moveq r6, #3 - movne r5, #2 - movne r6, r5 - b _020afdc4 -_020afd88: - ldr r1, _020afe78 ; =data_027e0f94 - ldr r0, _020afe84 ; =data_027e0e60 - ldr r1, [r1, #4] - ldr r0, [r0] - str r1, [sp, #8] - ldrb r3, [sb, #0x9c] - ldrb r2, [sb, #0x9d] - sub r5, sp, #4 - add r1, sp, #4 - strb r3, [r5] - strb r2, [r5, #1] - ldr r2, [r5] - bl func_ov00_02083c7c - mov r5, #2 - mov r6, #3 -_020afdc4: - cmp r5, #0 - beq _020afe10 - ldr r0, _020afe7c ; =data_027e0fc8 - ldr r0, [r0] - bl func_ov00_020bc46c - cmp r0, #0 - bne _020afe10 - add r1, sp, #4 - mov r0, sb - mov r2, r5 - bl func_ov00_020aff90 - cmp r4, #0 - beq _020afe10 - str r6, [sp] - ldrb r2, [sb, #0x9c] - ldrb r3, [sb, #0x9d] - ldr r0, _020afe80 ; =data_027e0ffc - add r1, sp, #4 - bl func_ov00_020ced7c -_020afe10: - ldr r0, _020afe78 ; =data_027e0f94 - add r1, sp, #4 - bl func_01ff9ec0 - mov r6, r0 - b _020afe2c -_020afe24: - mov r0, #0 - str r0, [sb, #0xa0] -_020afe2c: - ldrsh r1, [sb, #0xa8] - cmp r1, #0 - ble _020afe64 - ldr r0, [sb, #0xa4] - sub r0, r0, r6 - cmp r0, #0x29 - bgt _020afe64 - sub r0, r1, #1 - strh r0, [sb, #0xa8] - ldrsh r0, [sb, #0xa8] - cmp r0, #0 - bgt _020afe64 - mov r0, sb - bl func_ov00_020af050 -_020afe64: - str r6, [sb, #0xa4] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 - arm_func_end func_ov00_020afb6c -_020afe70: .word data_027e0fe4 -_020afe74: .word gItemManager -_020afe78: .word data_027e0f94 -_020afe7c: .word data_027e0fc8 -_020afe80: .word data_027e0ffc -_020afe84: .word data_027e0e60 - - .global func_ov00_020afe88 - arm_func_start func_ov00_020afe88 -func_ov00_020afe88: ; 0x020afe88 - stmdb sp!, {r3, r4, r5, lr} - ldrb r0, [r0, #0x7d] - mov r5, r1 - mov r4, r2 - cmp r0, #0 - beq _020afebc - ldr r0, _020afee8 ; =data_027e0fcc - ldr r0, [r0] - ldr r2, [r0] - ldr r2, [r2, #0x74] - blx r2 - cmp r0, #0 - bne _020afec4 -_020afebc: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020afec4: - cmp r4, #0 - beq _020afee0 - cmp r5, #2 - cmpne r5, #6 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020afee0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 - arm_func_end func_ov00_020afe88 -_020afee8: .word data_027e0fcc - - .global func_ov00_020afeec - arm_func_start func_ov00_020afeec -func_ov00_020afeec: ; 0x020afeec - stmdb sp!, {r3, r4, r5, lr} - ldrb r0, [r0, #0x7d] - mov r5, r1 - mov r4, r2 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _020aff8c ; =data_027e0fcc - ldr r0, [r0] - ldr r2, [r0] - ldr r2, [r2, #0x78] - blx r2 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r5, #0xd - addls pc, pc, r5, lsl #2 - b _020aff7c -_020aff34: ; jump table - b _020aff7c ; case 0 - b _020aff6c ; case 1 - b _020aff6c ; case 2 - b _020aff7c ; case 3 - b _020aff7c ; case 4 - b _020aff7c ; case 5 - b _020aff7c ; case 6 - b _020aff6c ; case 7 - b _020aff7c ; case 8 - b _020aff7c ; case 9 - b _020aff74 ; case 10 - b _020aff74 ; case 11 - b _020aff7c ; case 12 - b _020aff6c ; case 13 -_020aff6c: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_020aff74: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} -_020aff7c: - cmp r4, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 - arm_func_end func_ov00_020afeec -_020aff8c: .word data_027e0fcc - - .global func_ov00_020aff90 - arm_func_start func_ov00_020aff90 -func_ov00_020aff90: ; 0x020aff90 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _020affe4 ; =data_027e0d38 - mov r6, r1 - ldr r0, [r0] - mov r5, r2 - bl func_ov00_02078b40 - cmp r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _020affe8 ; =gItemManager - ldr r4, [r0] - mov r0, r4 - bl _ZNK11ItemManager16GetEquippedFairyEv - mov r1, r0 - mov r0, r4 - bl _ZNK11ItemManager8GetFairyEi - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r1, r6 - mov r2, r5 - bl func_ov00_020baca8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 - arm_func_end func_ov00_020aff90 -_020affe4: .word data_027e0d38 -_020affe8: .word gItemManager - - .global func_ov00_020affec - arm_func_start func_ov00_020affec -func_ov00_020affec: ; 0x020affec - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x30 - mov r7, r0 - ldr r0, [r7, #0x44] - mov r6, r1 - cmp r0, #0 - ldreq r0, [r7, #0x4c] - mov r5, r3 - ldr r4, [sp, #0x48] - cmpeq r0, #0 - beq _020b0134 - mov r0, r2 - add r3, sp, #0x24 - add r1, r7, #0x44 - add r2, r7, #0x38 - bl func_01ff9e64 - add r0, sp, #0x18 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - ldr r3, [r4] - ldr r2, [sp, #0x24] - ldr r1, [sp, #0x2c] - sub r2, r3, r2 - str r2, [sp, #0x18] - ldr r2, [r4, #8] - sub r1, r2, r1 - str r1, [sp, #0x20] - bl func_01ff9cec - cmp r0, r5 - bgt _020b008c - ldr r0, [sp, #0x24] - str r0, [r6] - ldr r0, [sp, #0x28] - str r0, [r6, #4] - ldr r0, [sp, #0x2c] - add sp, sp, #0x30 - str r0, [r6, #8] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020b008c: - add r0, sp, #0xc - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - ldr r1, [r7, #0x44] - str r1, [sp, #0xc] - ldr r1, [r7, #0x4c] - str r1, [sp, #0x14] - bl func_01ff9cec - bl func_01ff991c - mov r4, r0 - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x14] - smull r2, r3, r1, r4 - adds r7, r2, #0x800 - smull r2, r1, r0, r4 - adc r0, r3, #0 - mov r3, r7, lsr #0xc - orr r3, r3, r0, lsl #20 - adds r2, r2, #0x800 - adc r0, r1, #0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #20 - str r1, [sp, #0x14] - add r0, sp, #0x18 - add r1, sp, #0xc - str r3, [sp, #0xc] - bl func_01ff9c2c - mov r3, r6 - mov r7, r0 - add r0, sp, #0xc - add r6, sp, #0 - ldmia r0, {r0, r1, r2} - stmia r6, {r0, r1, r2} - sub r0, r7, r5 - mov r1, r6 - add r2, sp, #0x24 - str r4, [sp, #4] - bl func_01ff9e64 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020b0134: - ldr r0, [r7, #0x38] - stmia r6, {r0, r2} - ldr r0, [r7, #0x40] - str r0, [r6, #8] - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end func_ov00_020affec - - .global func_ov00_020b014c - arm_func_start func_ov00_020b014c -func_ov00_020b014c: ; 0x020b014c - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr r2, _020b0210 ; =data_ov00_020ee198 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - tst r0, #1 - orreq r0, r0, #1 - streq r0, [r2] - ldr r0, _020b0214 ; =data_027e0f64 - ldr r0, [r0] - ldr r0, [r0, #4] - ldr r0, [r0, #0x15c] - cmp r0, #0x16 - addeq sp, sp, #0x10 - ldmeqia sp!, {r4, r5, r6, pc} - bl func_ov00_020aeef8 - cmp r0, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r4, r5, r6, pc} - ldrsh r0, [r5, #0x60] - cmp r0, #0 - addle sp, sp, #0x10 - ldmleia sp!, {r4, r5, r6, pc} - ldr r0, _020b0218 ; =gItemManager - ldr r6, [r0] - mov r0, r6 - bl _ZNK11ItemManager16GetEquippedFairyEv - mov r1, r0 - mov r0, r6 - bl _ZNK11ItemManager8GetFairyEi - movs r6, r0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r4, r5, r6, pc} - add r1, sp, #4 - mov r0, r5 - str r4, [sp] - mov r2, #0x800 - mov r3, #0x8000 - bl func_ov00_020affec - ldr r0, [r5, #0x3c] - add r1, sp, #4 - add r3, r0, #0x33 - mov r0, r6 - add r2, r5, #0x44 - add r3, r3, #0x4300 - bl func_ov00_020ba204 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 - arm_func_end func_ov00_020b014c -_020b0210: .word data_ov00_020ee198 -_020b0214: .word data_027e0f64 -_020b0218: .word gItemManager - - .global func_ov00_020b021c - arm_func_start func_ov00_020b021c -func_ov00_020b021c: ; 0x020b021c - ldr r1, _020b023c ; =data_027e0d0c - ldr r2, [r1] - str r2, [r0, #0xb0] - ldr r2, [r1, #4] - str r2, [r0, #0xb4] - ldr r1, [r1, #8] - str r1, [r0, #0xb8] - bx lr - .align 2, 0 - arm_func_end func_ov00_020b021c -_020b023c: .word data_027e0d0c - - .global func_ov00_020b0240 - arm_func_start func_ov00_020b0240 -func_ov00_020b0240: ; 0x020b0240 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - ldr r2, _020b031c ; =data_027e0d38 - ldr lr, _020b0320 ; =data_027e0f94 - ldr r3, [r2] - add ip, sp, #4 - mov r5, r0 - mov r4, r1 - ldmia lr, {r0, r1, r2} - stmia ip, {r0, r1, r2} - add r0, r3, #0xc - bl func_ov00_020a5e9c - cmp r0, #0x2f - bne _020b02a4 - ldr r0, _020b0324 ; =data_027e0f64 - ldr r0, [r0] - ldr r0, [r0, #4] - ldr r0, [r0, #0x15c] - cmp r0, #0x31 - bne _020b02a4 - mov r0, r5 - mov r1, r4 - bl func_ov24_02178348 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} -_020b02a4: - mov r0, r5 - mov r1, #1 - bl func_ov00_020af42c - cmp r0, #0 - beq _020b02f8 - add r2, sp, #4 - str r2, [sp] - mov r0, r5 - mov r1, r4 - mov r2, #0 - mov r3, #0x8000 - bl func_ov00_020affec - ldr r1, [r4] - add sp, sp, #0x10 - str r1, [r5, #0xbc] - ldr r1, [r4, #4] - mov r0, #1 - str r1, [r5, #0xc0] - ldr r1, [r4, #8] - str r1, [r5, #0xc4] - ldmia sp!, {r3, r4, r5, pc} -_020b02f8: - ldr r1, [r5, #0xbc] - mov r0, #0 - str r1, [r4] - ldr r1, [r5, #0xc0] - str r1, [r4, #4] - ldr r1, [r5, #0xc4] - str r1, [r4, #8] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 - arm_func_end func_ov00_020b0240 -_020b031c: .word data_027e0d38 -_020b0320: .word data_027e0f94 -_020b0324: .word data_027e0f64 - - .global func_ov00_020b0328 - arm_func_start func_ov00_020b0328 -func_ov00_020b0328: ; 0x020b0328 - ldrsh r1, [r0, #0x60] - cmp r1, #0 - ldrgesh r0, [r0, #0x6a] - bxge lr - ldrb r1, [r0, #0x7f] - cmp r1, #0 - ldrnesh r0, [r0, #0xac] - moveq r0, #0 - bx lr - arm_func_end func_ov00_020b0328 - - .global func_ov00_020b034c - arm_func_start func_ov00_020b034c -func_ov00_020b034c: ; 0x020b034c - stmdb sp!, {r4, lr} - mov r4, r0 - ldrsh r1, [r4, #0x60] - cmp r1, #0 - blt _020b03e8 - mov r1, #1 - mov r2, r1 - bl func_ov00_020af2d4 - cmp r0, #0 - beq _020b03e8 - ldr r0, _020b0410 ; =data_ov00_020e6124 - ldr r0, [r0, #0x20] - bl func_01ff992c - ldr ip, [r4, #0x58] - ldrsh r2, [r4, #0x60] - umull r4, lr, r0, ip - mov r3, ip, asr #0x1f - mla lr, r0, r3, lr - mla lr, r1, ip, lr - adds r0, r4, #0x80000000 - adc r3, lr, #0 - smull r1, r0, r3, r3 - adds r3, r1, #0x800 - adc r1, r0, #0 - mov r0, r3, lsr #0xc - cmp r2, #4 - orr r0, r0, r1, lsl #20 - bge _020b03d0 - rsb r1, r2, #4 - mov r2, r1, lsl #0xc - mov r1, r2, asr #0x1 - add r1, r2, r1, lsr #30 - sub r0, r0, r1, asr #2 -_020b03d0: - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, pc} - cmp r0, #0x1000 - movgt r0, #0x1000 - ldmia sp!, {r4, pc} -_020b03e8: - ldrb r0, [r4, #0x7f] - cmp r0, #0 - beq _020b0408 - ldr r0, _020b0414 ; =data_027e05f8 - ldrh r0, [r0] - tst r0, #0xf0 - movne r0, #0x1000 - ldmneia sp!, {r4, pc} -_020b0408: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 - arm_func_end func_ov00_020b034c -_020b0410: .word data_ov00_020e6124 -_020b0414: .word data_027e05f8 - - .global func_ov00_020b0418 - arm_func_start func_ov00_020b0418 -func_ov00_020b0418: ; 0x020b0418 - stmdb sp!, {r3, lr} - ldr r0, _020b0488 ; =data_ov00_020eec60 - bl func_ov00_020d6be4 - cmp r0, #0xa - movlt r0, #0 - ldmltia sp!, {r3, pc} - cmp r0, #0x19 - bge _020b0454 - ldr r1, _020b048c ; =0x00000aaa - ldr r2, _020b0490 ; =0x51eb851f - mul r3, r0, r1 - smull r1, r0, r2, r3 - mov r1, r3, lsr #0x1f - add r0, r1, r0, asr #3 - ldmia sp!, {r3, pc} -_020b0454: - cmp r0, #0x96 - movge r0, #0x1000 - ldmgeia sp!, {r3, pc} - ldr r1, _020b0494 ; =0x00000556 - sub r0, r0, #0x19 - mul r1, r0, r1 - ldr r2, _020b0498 ; =0x10624dd3 - mov r0, r1, lsr #0x1f - smull r1, r3, r2, r1 - add r3, r0, r3, asr #3 - add r0, r3, #0xaa - add r0, r0, #0xa00 - ldmia sp!, {r3, pc} - .align 2, 0 - arm_func_end func_ov00_020b0418 -_020b0488: .word data_ov00_020eec60 -_020b048c: .word 0x00000aaa -_020b0490: .word 0x51eb851f -_020b0494: .word 0x00000556 -_020b0498: .word 0x10624dd3 - - .global func_ov00_020b049c - arm_func_start func_ov00_020b049c -func_ov00_020b049c: ; 0x020b049c - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r1, #1 - mov r6, r0 - mov r5, r2 - bl func_ov00_020af3fc - cmp r0, #0 - beq _020b05d0 - ldrsh r0, [r6, #0x60] - cmp r0, #0 - blt _020b05d0 - cmp r0, #0x15 - bge _020b05d0 - mov r0, r6 - mov r1, r4 - mov r2, #0x400 - bl func_ov00_020b7d4c - ldr r1, _020b05d8 ; =data_027e0f94 - mov r0, r4 - mov r2, r4 - bl func_01ff9bf8 - mov r0, r4 - bl func_01ff9cec - cmp r0, #0x1400 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - beq _020b05d0 - cmp r0, #0x400 - bge _020b05bc - ldr r1, _020b05dc ; =data_027e0d0c - ldr r0, _020b05e0 ; =data_027e0fac - ldr r2, [r1] - ldr ip, _020b05e4 ; =data_02050f54 - str r2, [r4] - ldr r3, [r1, #4] - mov r2, #0 - str r3, [r4, #4] - ldr r3, [r1, #8] - mov r1, #0x1400 - str r3, [r4, #8] - ldrh r3, [r0] - ldr r0, [r4] - mov r3, r3, asr #0x4 - mov r6, r3, lsl #0x1 - mov r3, r6, lsl #0x1 - ldrsh r5, [ip, r3] - add r3, r6, #1 - mov r3, r3, lsl #0x1 - umull r7, r6, r5, r1 - ldrsh r3, [ip, r3] - mla r6, r5, r2, r6 - umull lr, ip, r3, r1 - mov r5, r5, asr #0x1f - adds r7, r7, #0x800 - mla r6, r5, r1, r6 - adc r5, r6, #0 - mov r6, r7, lsr #0xc - orr r6, r6, r5, lsl #20 - add r0, r0, r6 - str r0, [r4] - adds lr, lr, #0x800 - mla ip, r3, r2, ip - mov r0, r3, asr #0x1f - mla ip, r0, r1, ip - adc r0, ip, #0 - mov r1, lr, lsr #0xc - ldr r2, [r4, #8] - orr r1, r1, r0, lsl #20 - add r0, r2, r1 - str r0, [r4, #8] - b _020b05c8 -_020b05bc: - mov r0, r4 - mov r1, #0x1400 - bl func_0202d95c -_020b05c8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020b05d0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 - arm_func_end func_ov00_020b049c -_020b05d8: .word data_027e0f94 -_020b05dc: .word data_027e0d0c -_020b05e0: .word data_027e0fac -_020b05e4: .word data_02050f54 - - .global func_ov00_020b05e8 - arm_func_start func_ov00_020b05e8 -func_ov00_020b05e8: ; 0x020b05e8 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r5, r1 - mov r1, #1 - mov r4, r0 - bl func_ov00_020af3fc - cmp r0, #0 - beq _020b0758 - ldrsh r0, [r4, #0x60] - cmp r0, #0 - blt _020b0758 - cmp r0, #0x15 - bge _020b0758 - mov r0, r4 - ldr r2, _020b0764 ; =0x00000333 - ldr r4, _020b0768 ; =data_027e0f94 - add r1, sp, #4 - bl func_ov00_020b7d4c - mov r1, r4 - ldr r2, [r1, #4] - add r0, sp, #4 - str r2, [sp, #8] - bl func_01ff9ec0 - cmp r0, #0x1400 - addgt sp, sp, #0x10 - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, pc} - cmp r0, #0x400 - bge _020b06e0 - ldr r1, _020b076c ; =data_027e0fac - ldr r0, [r4, #4] - ldrh r2, [r1] - ldr r3, _020b0770 ; =data_02050f54 - mov r1, #0x800 - mov r2, r2, asr #0x4 - mov r6, r2, lsl #0x1 - mov r2, r6, lsl #0x1 - ldrsh ip, [r3, r2] - add r2, r6, #1 - mov r2, r2, lsl #0x1 - ldrsh r3, [r3, r2] - mov r2, ip, asr #0x1f - mov lr, r2, lsl #0xa - mov r2, r3, asr #0x1f - mov r2, r2, lsl #0xa - adds r6, r1, ip, lsl #10 - orr lr, lr, ip, lsr #22 - adc lr, lr, #0 - adds ip, r1, r3, lsl #10 - orr r2, r2, r3, lsr #22 - mov r3, r6, lsr #0xc - adc r1, r2, #0 - mov r2, ip, lsr #0xc - ldr r6, [r4] - orr r3, r3, lr, lsl #20 - add r3, r6, r3 - ldr r6, [r4, #8] - orr r2, r2, r1, lsl #20 - add r1, r6, r2 - str r0, [sp, #8] - str r3, [sp, #4] - str r1, [sp, #0xc] -_020b06e0: - ldr r1, _020b0774 ; =data_027e0e60 - add r0, sp, #0 - ldr r1, [r1] - add r2, sp, #4 - bl func_ov00_02083a1c - ldr r0, _020b0774 ; =data_027e0e60 - ldrb r1, [sp] - ldr r0, [r0] - bl func_ov00_02083c24 - ldr r1, [sp, #4] - ldr r2, _020b0774 ; =data_027e0e60 - sub r0, r0, r1 - add r0, r0, r0, lsr #31 - add r3, r1, r0, asr #1 - ldrb r1, [sp, #1] - ldr r0, [r2] - str r3, [sp, #4] - bl func_ov00_02083c50 - ldr r2, [sp, #0xc] - mov r1, r4 - sub r0, r0, r2 - add r0, r0, r0, lsr #31 - add r3, r2, r0, asr #1 - add r0, sp, #4 - mov r2, r5 - str r3, [sp, #0xc] - bl func_01ff9bf8 - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_020b0758: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 - arm_func_end func_ov00_020b05e8 -_020b0764: .word 0x00000333 -_020b0768: .word data_027e0f94 -_020b076c: .word data_027e0fac -_020b0770: .word data_02050f54 -_020b0774: .word data_027e0e60 - - .global func_ov00_020b0778 - arm_func_start func_ov00_020b0778 -func_ov00_020b0778: ; 0x020b0778 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x18 - mov r8, r3 - mov r3, #0 - str r3, [r8] - ldr r4, [r1] - ldr r3, _020b0aac ; =data_027e0f64 - str r4, [sp, #0xc] - ldr r4, [r1, #4] - mov sb, r0 - str r4, [sp, #0x10] - ldr r1, [r1, #8] - ldr r0, [r3] - mov r4, r2 - str r1, [sp, #0x14] - bl func_ov00_0208b180 - mov r3, #0 - str r3, [sp] - add r1, sp, #0xc - add r2, sp, #8 - add r3, sp, #4 - bl func_01ffe468 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - cmp r0, #0 - addne sp, sp, #0x18 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #0x4 - mov r1, r0, lsl #0x1 - add r0, r1, #1 - ldr r3, _020b0ab0 ; =data_02050f54 - mov r2, r1, lsl #0x1 - mov r1, r0, lsl #0x1 - ldrsh r2, [r3, r2] - mov r0, #0x30 - ldrsh r1, [r3, r1] - smulbb r2, r2, r0 - smulbb r3, r1, r0 - mov r0, r2, asr #0xb - mov r1, r3, asr #0xb - add r2, r2, r0, lsr #20 - add r3, r3, r1, lsr #20 - ldr lr, [sb, #0x10] - ldr r4, [sp, #8] - ldr ip, [sb, #0x14] - ldr r5, [sp, #4] - mov r0, sb - mov r1, #1 - mov r6, r2, asr #0xc - mov r7, r3, asr #0xc - sub r4, lr, r4 - sub r5, ip, r5 - bl func_ov00_020af3cc - cmp r0, #0 - beq _020b0948 - sub r0, r6, #0x18 - cmp r0, r4 - addle r0, r6, #0x18 - cmple r4, r0 - suble r0, r7, #0x18 - cmple r0, r5 - addle r0, r7, #0x18 - cmple r5, r0 - bgt _020b089c - mov r0, #0x1000 - str r0, [r8] - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020b089c: - mvn r0, #0x17 - sub r1, r0, r6 - cmp r1, r4 - rsble r1, r6, #0x18 - cmple r4, r1 - suble r0, r0, r7 - cmple r0, r5 - rsble r0, r7, #0x18 - cmple r5, r0 - bgt _020b08dc - mov r0, #0x1000 - rsb r0, r0, #0 - str r0, [r8] - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020b08dc: - rsb r1, r6, #0 - cmp r6, r1 - movlt r0, r6 - movge r0, r1 - sub r0, r0, #0x18 - cmp r4, r0 - blt _020b093c - cmp r6, r1 - movle r6, r1 - add r0, r6, #0x18 - cmp r0, r4 - blt _020b093c - rsb r1, r7, #0 - cmp r7, r1 - movlt r0, r7 - movge r0, r1 - sub r0, r0, #0x18 - cmp r5, r0 - blt _020b093c - cmp r7, r1 - movle r7, r1 - add r0, r7, #0x18 - cmp r0, r5 - bge _020b0aa0 -_020b093c: - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020b0948: - mov r0, sb - mov r1, #1 - bl func_ov00_020af42c - cmp r0, #0 - beq _020b0a20 - cmp r6, #0 - addlt r0, r6, #0x18 - cmplt r4, r0 - blt _020b099c - cmp r6, #0 - subgt r0, r6, #0x18 - cmpgt r4, r0 - bgt _020b099c - cmp r7, #0 - addlt r0, r7, #0x18 - cmplt r5, r0 - blt _020b099c - cmp r7, #0 - subgt r0, r7, #0x18 - cmpgt r5, r0 - ble _020b09b0 -_020b099c: - mov r0, #0x1000 - str r0, [r8] - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020b09b0: - cmp r6, #0 - ble _020b09c4 - rsb r0, r6, #0x18 - cmp r4, r0 - blt _020b0a08 -_020b09c4: - cmp r6, #0 - bge _020b09dc - mvn r0, #0x17 - sub r0, r0, r6 - cmp r4, r0 - bgt _020b0a08 -_020b09dc: - cmp r7, #0 - ble _020b09f0 - rsb r0, r7, #0x18 - cmp r5, r0 - blt _020b0a08 -_020b09f0: - cmp r7, #0 - bge _020b0aa0 - mvn r0, #0x17 - sub r0, r0, r7 - cmp r5, r0 - ble _020b0aa0 -_020b0a08: - mov r0, #0x1000 - rsb r0, r0, #0 - str r0, [r8] - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020b0a20: - mov r0, sb - mov r1, #1 - bl func_ov00_020af3fc - cmp r0, #0 - beq _020b0aa0 - ldr r3, [sb, #0x1c] - ldr r2, [sp, #8] - cmp r6, #0 - rsblt r6, r6, #0 - cmp r7, #0 - rsblt r7, r7, #0 - ldr r1, [sb, #0x20] - ldr r0, [sp, #4] - sub r2, r3, r2 - sub r1, r1, r0 - cmp r6, #0x18 - ble _020b0a78 - cmp r2, #0 - rsblt r2, r2, #0 - sub r0, r6, #0x18 - cmp r2, r0 - bgt _020b0a94 -_020b0a78: - cmp r7, #0x18 - ble _020b0aa0 - cmp r1, #0 - rsblt r1, r1, #0 - sub r0, r7, #0x18 - cmp r1, r0 - ble _020b0aa0 -_020b0a94: - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020b0aa0: - mov r0, #1 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 - arm_func_end func_ov00_020b0778 -_020b0aac: .word data_027e0f64 -_020b0ab0: .word data_02050f54 - - .global func_ov00_020b0ab4 - arm_func_start func_ov00_020b0ab4 -func_ov00_020b0ab4: ; 0x020b0ab4 - stmdb sp!, {r3, lr} - mov r1, #1 - bl func_ov00_020af42c - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end func_ov00_020b0ab4 - - .global func_ov00_020b0ad0 - arm_func_start func_ov00_020b0ad0 -func_ov00_020b0ad0: ; 0x020b0ad0 - cmp r1, #0 - beq _020b0b04 - ldr r2, [r1, #8] - ldr r1, [r0, #0x94] - cmp r2, r1 - bne _020b0b04 - ldrsh r1, [r0, #0x60] - mov r0, #0 - cmp r1, #0xf - bxlt lr - cmp r1, #0x1e - movlt r0, #1 - bx lr -_020b0b04: - mov r0, #0 - bx lr - arm_func_end func_ov00_020b0ad0 - - .global func_ov00_020b0b0c - arm_func_start func_ov00_020b0b0c -func_ov00_020b0b0c: ; 0x020b0b0c - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x24 - mov r7, r0 - ldrb r0, [r7, #0x79] - mov r6, r1 - mov r4, r2 - mov r5, r3 - cmp r0, #0 - beq _020b0b80 - ldr r0, _020b0de0 ; =gItemManager - mov r1, #1 - ldr r0, [r0] - bl _ZN11ItemManager18func_ov00_020ad790Ei - cmp r0, #0 - beq _020b0b80 - ldr r0, _020b0de0 ; =gItemManager - ldr r0, [r0] - bl _ZNK11ItemManager15GetEquippedItemEv - ldr r1, _020b0de4 ; =data_027e103c - str r0, [r4] - ldr r0, [r1] - bl func_ov00_020cf330 - ldr r1, [r4] - mvn r0, #0 - cmp r1, r0 - movne r0, #1 - add sp, sp, #0x24 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_020b0b80: - mov r2, #0 - mov r0, r7 - mov r1, r5 - str r2, [r4] - bl func_ov00_020b1248 - cmp r0, #0 - beq _020b0bb0 - mov r0, #0 - str r0, [r4] - add sp, sp, #0x24 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_020b0bb0: - mov r0, r7 - mov r1, #1 - bl func_ov00_020af3fc - cmp r0, #0 - beq _020b0bd8 - ldrsh r0, [r7, #0x60] - cmp r0, #0 - blt _020b0bd8 - cmp r0, #0x15 - blt _020b0bf8 -_020b0bd8: - mov r0, r7 - mov r1, #1 - bl func_ov00_020af454 - cmp r0, #0 - beq _020b0dd4 - ldrsh r0, [r7, #0x62] - cmp r0, #0x15 - ble _020b0dd4 -_020b0bf8: - ldrsh r2, [r7, #0x68] - ldr r3, [r7, #0x28] - ldrsh r0, [r7, #0x66] - ldr r1, [r7, #0x24] - sub r2, r3, r2 - sub r0, r1, r0 - mov r3, r2, lsl #0xc - mov r2, r0, lsl #0xc - mov r1, #0 - add r0, sp, #0x18 - str r2, [sp, #0x18] - str r1, [sp, #0x1c] - str r3, [sp, #0x20] - bl func_01ff9cec - cmp r0, #0xa000 - addlt sp, sp, #0x24 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, pc} - ldrb r1, [r7, #0x82] - cmp r1, #0 - beq _020b0c5c - cmp r0, #0x14000 - addlt sp, sp, #0x24 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, pc} -_020b0c5c: - mov r0, #0 - str r0, [r4] - ldrsh r1, [r7, #0x6a] - ldrsh r0, [r7, #0x6c] - sub r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - add r0, r0, r0, lsr #31 - add r0, r1, r0, asr #1 - strh r0, [r6] - ldr r0, [r7, #0x5c] - cmp r0, #0x800 - ble _020b0cd8 - ldr r0, [r7, #0x50] - ldr r1, [r7, #0x54] - bl func_01ffa0f4 - ldr r1, [sp, #0x38] - ldrsh r2, [r6] - cmp r1, #0 - add sp, sp, #0x24 - sub r0, r0, r2 - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 - movne r0, #1 - strneb r0, [r1] - cmp r2, #0 - movge r0, #1 - movlt r0, #2 - str r0, [r5] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_020b0cd8: - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x20] - bl func_01ffa0f4 - ldrsh lr, [r6] - add r1, sp, #0xc - mov ip, #0 - str ip, [r1] - str ip, [r1, #4] - str ip, [r1, #8] - mov r2, r0, lsl #0x10 - ldrsh r3, [r7, #0x66] - rsb r2, lr, r2, asr #16 - add r0, sp, #0 - mov r3, r3, lsl #0xc - str r3, [sp, #0xc] - ldrsh r4, [r7, #0x68] - mov r3, r2, lsl #0x10 - mov r2, r4, lsl #0xc - str r2, [sp, #0x10] - str ip, [r0] - str ip, [r0, #4] - str ip, [r0, #8] - ldr r4, [r7, #0x24] - mov r2, r0 - mov r4, r4, lsl #0xc - str r4, [sp] - ldr ip, [r7, #0x28] - mov r4, r3, asr #0x10 - mov r3, ip, lsl #0xc - str r3, [sp, #4] - bl func_01ff9bf8 - ldr r0, [r7, #0x58] - cmp r0, #0xa000 - bgt _020b0d7c - mov r0, #0 - str r0, [r5] - ldrsh r1, [r7, #0x6c] - add sp, sp, #0x24 - mov r0, #1 - strh r1, [r6] - ldmia sp!, {r4, r5, r6, r7, pc} -_020b0d7c: - cmp r4, #0x6000 - bge _020b0d94 - mov r0, #0x6000 - rsb r0, r0, #0 - cmp r4, r0 - bgt _020b0da0 -_020b0d94: - mov r0, #0 - str r0, [r5] - b _020b0dc8 -_020b0da0: - cmp r4, #0x2000 - movge r0, #1 - strge r0, [r5] - bge _020b0dc8 - add r0, r0, #0x4000 - cmp r4, r0 - movlt r0, #2 - strlt r0, [r5] - movge r0, #3 - strge r0, [r5] -_020b0dc8: - add sp, sp, #0x24 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_020b0dd4: - mov r0, #0 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 - arm_func_end func_ov00_020b0b0c -_020b0de0: .word gItemManager -_020b0de4: .word data_027e103c - - .global func_ov00_020b0de8 - arm_func_start func_ov00_020b0de8 -func_ov00_020b0de8: ; 0x020b0de8 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #1 - mov r5, r0 - bl func_ov00_020af42c - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x28] - ldr r2, [r5, #0x24] - sub r1, r0, #0x60 - mov r0, #0xaa00 - mul ip, r1, r0 - ldr r1, _020b0e50 ; =0x2aaaaaab - sub r2, r2, #0x80 - mov r0, #0xaa - mul r3, r2, r0 - smull r0, r2, r1, ip - mov r0, ip, lsr #0x1f - add r2, r0, r2, asr #5 - str r3, [r4] - mov r1, #0 - str r1, [r4, #4] - str r2, [r4, #8] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 - arm_func_end func_ov00_020b0de8 -_020b0e50: .word 0x2aaaaaab - - .global func_ov00_020b0e54 - arm_func_start func_ov00_020b0e54 -func_ov00_020b0e54: ; 0x020b0e54 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r0 - ldrsh r3, [r6, #0x60] - mov r5, r1 - mov r4, r2 - cmp r3, #0x10 - blt _020b0f0c - add r1, sp, #0 - bl func_ov00_020b0de8 - cmp r0, #0 - beq _020b0f0c - mov r0, r6 - mov r1, r5 - mov r2, #0x800 - bl func_ov00_020b7d4c - add r0, sp, #0 - bl func_01ff9cec - mov r5, r0 - cmp r5, #0x4000 - ble _020b0ed0 - ldr r0, [sp] - mov r1, r5 - mov r0, r0, lsl #0xe - bl func_02002c14 - ldr r2, [sp, #8] - str r0, [sp] - mov r1, r5 - mov r0, r2, lsl #0xe - bl func_02002c14 - str r0, [sp, #8] -_020b0ed0: - ldr r1, [sp] - mov r0, #1 - str r1, [r6, #0xb0] - ldr r1, [sp, #4] - str r1, [r6, #0xb4] - ldr r1, [sp, #8] - str r1, [r6, #0xb8] - ldr r1, [sp] - str r1, [r4] - ldr r1, [sp, #4] - str r1, [r4, #4] - ldr r1, [sp, #8] - add sp, sp, #0xc - str r1, [r4, #8] - ldmia sp!, {r3, r4, r5, r6, pc} -_020b0f0c: - ldrsh r0, [r6, #0x60] - cmp r0, #0 - blt _020b0f78 - mov r1, #1 - mov r0, r6 - mov r2, r1 - bl func_ov00_020af2d4 - cmp r0, #0 - beq _020b0f78 - ldr r0, [r6, #0x58] - cmp r0, #0x18000 - ble _020b0f50 - mov r0, r6 - mov r1, r5 - mov r2, #0x800 - bl func_ov00_020b7d4c - b _020b0f6c -_020b0f50: - ldr r0, _020b0f84 ; =data_027e0f94 - ldr r1, [r0] - str r1, [r5] - ldr r1, [r0, #4] - str r1, [r5, #4] - ldr r0, [r0, #8] - str r0, [r5, #8] -_020b0f6c: - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, pc} -_020b0f78: - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 - arm_func_end func_ov00_020b0e54 -_020b0f84: .word data_027e0f94 - - .global func_ov00_020b0f88 - arm_func_start func_ov00_020b0f88 -func_ov00_020b0f88: ; 0x020b0f88 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r1 - add r1, sp, #0 - mov r5, r0 - mov r6, r2 - mov r4, r3 - bl func_ov00_020b0de8 - cmp r0, #0 - beq _020b104c - mov r0, r5 - mov r1, r7 - mov r2, r6 - bl func_ov00_020b7d4c - add r0, sp, #0 - bl func_01ff9cec - mov r6, r0 - cmp r6, #0x4000 - ble _020b0ffc - ldr r0, [sp] - mov r1, r6 - mov r0, r0, lsl #0xe - bl func_02002c14 - ldr r2, [sp, #8] - str r0, [sp] - mov r1, r6 - mov r0, r2, lsl #0xe - bl func_02002c14 - str r0, [sp, #8] -_020b0ffc: - ldrsh r0, [r5, #0x74] - ldrsh r1, [r5, #0x72] - smulbb r0, r0, r0 - mla r0, r1, r1, r0 - add r0, r0, #4 - mov r0, r0, lsl #0x4 - bl func_01ff9958 - mov r2, r0 - add r1, sp, #0 - mov r0, r4 - bl func_0202b2e8 - ldr r1, [sp] - mov r0, #1 - str r1, [r5, #0xb0] - ldr r1, [sp, #4] - str r1, [r5, #0xb4] - ldr r1, [sp, #8] - add sp, sp, #0xc - str r1, [r5, #0xb8] - ldmia sp!, {r4, r5, r6, r7, pc} -_020b104c: - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end func_ov00_020b0f88 - - .global func_ov00_020b1058 - arm_func_start func_ov00_020b1058 -func_ov00_020b1058: ; 0x020b1058 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - mov r7, r1 - add r1, sp, #0xc - mov r5, r0 - mov r6, r2 - mov r4, r3 - bl func_ov00_020b0de8 - cmp r0, #0 - beq _020b11cc - mov r0, r5 - mov r1, r7 - mov r2, r6 - bl func_ov00_020b7d4c - ldr r0, [sp, #0x30] - cmp r0, #0 - beq _020b1140 - ldr r1, _020b11d8 ; =data_027e0f94 - add r2, sp, #0 - bl func_01ff9bf8 - ldr ip, [sp] - ldr r3, [sp, #4] - mov r2, ip, asr #0x1f - mov r0, r3, asr #0x1f - mov lr, r2, lsl #0xb - mov r6, r0, lsl #0xb - ldr r1, [sp, #8] - orr lr, lr, ip, lsr #21 - mov r0, r1, asr #0x1f - mov r2, r0, lsl #0xb - mov r0, #0x800 - adds r7, r0, ip, lsl #11 - adc lr, lr, #0 - mov r7, r7, lsr #0xc - orr r7, r7, lr, lsl #20 - orr r6, r6, r3, lsr #21 - adds ip, r0, r3, lsl #11 - adc r6, r6, #0 - adds r3, r0, r1, lsl #11 - orr r2, r2, r1, lsr #21 - mov r1, ip, lsr #0xc - adc r0, r2, #0 - mov r2, r3, lsr #0xc - orr r2, r2, r0, lsl #20 - orr r1, r1, r6, lsl #20 - str r1, [sp, #4] - str r2, [sp, #8] - str r7, [sp] - add r0, sp, #0 - add r1, sp, #0xc - mov r2, #0x2800 - bl func_0202b2e8 - ldr r2, [sp] - ldr r1, [sp, #4] - ldr r0, [sp, #8] - str r2, [sp, #0xc] - str r1, [sp, #0x10] - str r0, [sp, #0x14] -_020b1140: - add r0, sp, #0xc - bl func_01ff9cec - mov r6, r0 - cmp r6, #0x4000 - ble _020b117c - ldr r0, [sp, #0xc] - mov r1, r6 - mov r0, r0, lsl #0xe - bl func_02002c14 - ldr r2, [sp, #0x14] - str r0, [sp, #0xc] - mov r1, r6 - mov r0, r2, lsl #0xe - bl func_02002c14 - str r0, [sp, #0x14] -_020b117c: - ldrsh r0, [r5, #0x74] - ldrsh r1, [r5, #0x72] - smulbb r0, r0, r0 - mla r0, r1, r1, r0 - add r0, r0, #4 - mov r0, r0, lsl #0x4 - bl func_01ff9958 - mov r2, r0 - add r1, sp, #0xc - mov r0, r4 - bl func_0202b2e8 - ldr r1, [r4] - add sp, sp, #0x18 - str r1, [r5, #0xb0] - ldr r1, [r4, #4] - mov r0, #1 - str r1, [r5, #0xb4] - ldr r1, [r4, #8] - str r1, [r5, #0xb8] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020b11cc: - mov r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 - arm_func_end func_ov00_020b1058 -_020b11d8: .word data_027e0f94 - - .global func_ov00_020b11dc - arm_func_start func_ov00_020b11dc -func_ov00_020b11dc: ; 0x020b11dc - stmdb sp!, {r3, lr} - mov r1, #7 - bl func_ov00_020af3fc - cmp r0, #0 - beq _020b1208 - ldr r0, _020b1210 ; =data_027e103c - ldr r0, [r0] - ldrsh r0, [r0, #0x1c] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_020b1208: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 - arm_func_end func_ov00_020b11dc -_020b1210: .word data_027e103c - - .global func_ov00_020b1214 - arm_func_start func_ov00_020b1214 -func_ov00_020b1214: ; 0x020b1214 - stmdb sp!, {r3, lr} - mov r1, #7 - bl func_ov00_020af3fc - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, _020b1244 ; =data_027e05f8 - ldrh r0, [r0, #2] - tst r0, #3 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 - arm_func_end func_ov00_020b1214 -_020b1244: .word data_027e05f8 - - .global func_ov00_020b1248 - arm_func_start func_ov00_020b1248 -func_ov00_020b1248: ; 0x020b1248 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xd0] - ldr r3, [r2] - cmp r3, #0 - ldrneb r2, [r3, #4] - cmpne r2, #0 - beq _020b1294 - ldr r2, [r3, #8] - cmp r2, #0 - moveq r2, #5 - movne r2, #6 - str r2, [r1] - ldr r0, [r0, #0xd0] - ldr r0, [r0] - ldr r1, [r0] - ldr r1, [r1, #8] - blx r1 - mov r0, #1 - ldmia sp!, {r3, pc} -_020b1294: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end func_ov00_020b1248 - - .global func_ov00_020b129c - arm_func_start func_ov00_020b129c -func_ov00_020b129c: ; 0x020b129c - ldrsh r3, [r0, #0x60] - mov r1, #1 - mov r2, r1 - cmp r3, #2 - blt _020b12b8 - cmp r3, #0xa - movle r2, #0 -_020b12b8: - cmp r2, #0 - ldreqh r0, [r0, #4] - cmpeq r3, r0 - moveq r1, #0 - mov r0, r1 - bx lr - arm_func_end func_ov00_020b129c - - .global func_ov00_020b12d0 - arm_func_start func_ov00_020b12d0 -func_ov00_020b12d0: ; 0x020b12d0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #1 - mov r2, r1 - mov r5, r0 - bl func_ov00_020af2d4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsh r0, [r5, #0x62] - cmp r0, #0xf - bgt _020b1330 - mov r0, r5 - bl func_ov00_020b7d6c - cmp r0, #0 - beq _020b1330 - ldrsh r1, [r5, #0x6e] - ldrsh r0, [r5, #0x70] - cmp r1, r0 - bne _020b1330 - ldrsh r1, [r5, #0x6a] - mov r0, #1 - strh r1, [r4] - ldmia sp!, {r3, r4, r5, pc} -_020b1330: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end func_ov00_020b12d0 - - .global func_ov00_020b1338 - arm_func_start func_ov00_020b1338 -func_ov00_020b1338: ; 0x020b1338 - ldrb r0, [r0, #0xc] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end func_ov00_020b1338 - - .global func_ov00_020b134c - arm_func_start func_ov00_020b134c -func_ov00_020b134c: ; 0x020b134c - stmdb sp!, {r3, lr} - mov r1, #1 - bl func_ov00_020af454 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _020b1378 ; =data_ov00_020eec9c - mov r1, #0x17 - bl func_ov00_020d77e4 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 - arm_func_end func_ov00_020b134c -_020b1378: .word data_ov00_020eec9c - - .global func_ov00_020b137c - arm_func_start func_ov00_020b137c -func_ov00_020b137c: ; 0x020b137c - stmdb sp!, {r4, lr} - mov r4, r0 - ldrsh r1, [r4, #0x60] - cmp r1, #0xa - bge _020b13bc - mov r1, #1 - mov r2, r1 - bl func_ov00_020af2d4 - cmp r0, #0 - beq _020b13bc - mov r0, r4 - mov r1, #1 - bl func_ov00_020af3fc - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} -_020b13bc: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end func_ov00_020b137c - - .global func_ov00_020b13c4 - arm_func_start func_ov00_020b13c4 -func_ov00_020b13c4: ; 0x020b13c4 - stmdb sp!, {r3, r4, r5, lr} - mov r1, #1 - mov r5, r0 - bl func_ov00_020af42c - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _020b1494 ; =data_ov00_020e6124 - ldr r0, [r0, #0x20] - bl func_01ff992c - ldrsh r0, [r5, #0x64] - ldr r1, [r5, #0x58] - ldrsh r4, [r5, #0x60] - cmp r0, #0 - ble _020b1410 - cmp r0, r4 - sublt r0, r4, r0 - movlt r0, r0, lsl #0x10 - movlt r4, r0, asr #0x10 -_020b1410: - cmp r1, #0x50000 - blt _020b1428 - cmp r4, #2 - movge r0, #1 - movlt r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020b1428: - cmp r1, #0x10000 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - mov r0, #0x40000 - bl func_01ff991c - ldr r2, [r5, #0x58] - mov r1, #0x18 - sub r2, r2, #0x10000 - smull r0, r3, r2, r0 - adds ip, r0, #0x800 - mov r0, #0 - adc r2, r3, r0 - mov r3, ip, lsr #0xc - orr r3, r3, r2, lsl #20 - rsb r2, r3, #0x1000 - umull ip, r3, r2, r1 - mla r3, r2, r0, r3 - mov r2, r2, asr #0x1f - mla r3, r2, r1, r3 - adds ip, ip, #0x800 - adc r1, r3, r0 - mov r2, ip, lsr #0xc - orr r2, r2, r1, lsl #20 - add r1, r2, #2 - cmp r4, r1 - movge r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 - arm_func_end func_ov00_020b13c4 -_020b1494: .word data_ov00_020e6124 - .global func_ov00_020b1498 arm_func_start func_ov00_020b1498 func_ov00_020b1498: ; 0x020b1498 @@ -8105,7 +5252,7 @@ func_ov00_020b5514: ; 0x020b5514 _020b5540: ldr r0, _020b5c80 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv cmp r0, #0 ble _020b5620 ldr r1, [r5] @@ -8121,7 +5268,7 @@ _020b5540: ldr r1, _020b5c80 ; =data_027e0fb8 mov r7, r0 ldr r0, [r1] - bl func_ov00_020b0328 + bl _ZN13PlayerControl13GetTouchAngleEv mov r8, r0 ldr r0, [sp, #0x64] ldr r1, [sp, #0x6c] @@ -16157,7 +13304,7 @@ func_ov00_020bbc68: ; 0x020bbc68 bl func_ov00_020bbb64 cmp r0, #0 bne _020bbc8c - bl func_ov00_020aeef8 + bl _ZN13PlayerControl18func_ov00_020aeef8Ev cmp r0, #0 bne _020bbc94 _020bbc8c: @@ -16456,7 +13603,7 @@ _020bc028: _020bc060: ldr r0, _020bc084 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv mov r0, #1 add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, pc} @@ -16555,7 +13702,7 @@ _020bc114: bl _ZN17LinkStateInteract20SetGrabActorVelocityEP5Vec3p ldr r0, _020bc1c4 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv mov r0, #1 add sp, sp, #0x18 ldmia sp!, {r4, r5, r6, r7, r8, pc} @@ -24902,7 +22049,7 @@ func_ov00_020c2840: ; 0x020c2840 ldmeqia sp!, {r3, pc} ldr r0, _020c2860 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv ldmia sp!, {r3, pc} .align 2, 0 arm_func_end func_ov00_020c2840 @@ -57722,71 +54869,6 @@ data_ov00_020df336: ; 0x020df336 .byte 0x88, 0x13 .data - .global data_ov00_020e6104 -data_ov00_020e6104: ; 0x020e6104 - .ascii "fnl" - .byte 0x00 - .global data_ov00_020e6108 -data_ov00_020e6108: ; 0x020e6108 - .ascii "bow" - .byte 0x00 - .global data_ov00_020e610c -data_ov00_020e610c: ; 0x020e610c - .ascii "dco" - .byte 0x00 - .global data_ov00_020e6110 -data_ov00_020e6110: ; 0x020e6110 - .ascii "can" - .byte 0x00 - .global data_ov00_020e6114 -data_ov00_020e6114: ; 0x020e6114 - .ascii "hul" - .byte 0x00 - .global data_ov00_020e6118 -data_ov00_020e6118: ; 0x020e6118 - .ascii "pdl" - .byte 0x00 - .global data_ov00_020e611c -data_ov00_020e611c: ; 0x020e611c - .ascii "anc" - .byte 0x00 - .global data_ov00_020e6120 -data_ov00_020e6120: ; 0x020e6120 - .ascii "brg" - .byte 0x00 - .global data_ov00_020e6124 -data_ov00_020e6124: ; 0x020e6124 - .word data_ov00_020e611c - .global data_ov00_020e6128 -data_ov00_020e6128: ; 0x020e6128 - .word data_ov00_020e6108 - .global data_ov00_020e612c -data_ov00_020e612c: ; 0x020e612c - .word data_ov00_020e6114 - .global data_ov00_020e6130 -data_ov00_020e6130: ; 0x020e6130 - .word data_ov00_020e6110 - .global data_ov00_020e6134 -data_ov00_020e6134: ; 0x020e6134 - .word data_ov00_020e610c - .global data_ov00_020e6138 -data_ov00_020e6138: ; 0x020e6138 - .word data_ov00_020e6118 - .global data_ov00_020e613c -data_ov00_020e613c: ; 0x020e613c - .word data_ov00_020e6104 - .global data_ov00_020e6140 -data_ov00_020e6140: ; 0x020e6140 - .word data_ov00_020e6120 - .global data_ov00_020e6144 -data_ov00_020e6144: ; 0x020e6144 - .byte 0x00, 0x00, 0x05, 0x00 - .global data_ov00_020e6148 -data_ov00_020e6148: ; 0x020e6148 - .byte 0x91, 0x80, 0x8d, 0xec - .global data_ov00_020e614c -data_ov00_020e614c: ; 0x020e614c - .byte 0x00, 0x00, 0x00, 0x00 .global data_ov00_020e6150 data_ov00_020e6150: ; 0x020e6150 .byte 0x00, 0x00, 0x00, 0x00 @@ -66164,36 +63246,6 @@ data_ov00_020e9314: ; 0x020e9314 .endif .sbss - .global data_ov00_020ee178 -data_ov00_020ee178: - .space 0x4 - .global data_ov00_020ee17c -data_ov00_020ee17c: - .space 0x4 - .global data_ov00_020ee180 -data_ov00_020ee180: - .space 0x4 - .global data_ov00_020ee184 -data_ov00_020ee184: - .space 0x4 - .global data_ov00_020ee188 -data_ov00_020ee188: - .space 0x4 - .global data_ov00_020ee18c -data_ov00_020ee18c: - .space 0x4 - .global data_ov00_020ee190 -data_ov00_020ee190: - .space 0x4 - .global data_ov00_020ee194 -data_ov00_020ee194: - .space 0x4 - .global data_ov00_020ee198 -data_ov00_020ee198: - .space 0x4 - .global data_ov00_020ee19c -data_ov00_020ee19c: - .space 0x4 .global data_ov00_020ee1a0 data_ov00_020ee1a0: .space 0x4 diff --git a/asm/ov00/include/ov00_init.inc b/asm/ov00/ov00_init.inc similarity index 100% rename from asm/ov00/include/ov00_init.inc rename to asm/ov00/ov00_init.inc diff --git a/asm/ov00/ov00_init.s b/asm/ov00/ov00_init.s index 3ffc208f..46ac7b5b 100644 --- a/asm/ov00/ov00_init.s +++ b/asm/ov00/ov00_init.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "ov00/include/ov00_init.inc" + .include "ov00/ov00_init.inc" .section .init, 4, 1, 4 .global func_ov00_020df338 diff --git a/asm/include/ov01.inc b/asm/ov01.inc similarity index 100% rename from asm/include/ov01.inc rename to asm/ov01.inc diff --git a/asm/ov01.s b/asm/ov01.s index e846ca7e..01d6ec44 100644 --- a/asm/ov01.s +++ b/asm/ov01.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov01.inc" + .include "ov01.inc" .text diff --git a/asm/include/ov02.inc b/asm/ov02.inc similarity index 100% rename from asm/include/ov02.inc rename to asm/ov02.inc diff --git a/asm/ov02.s b/asm/ov02.s index 797d88e1..50e485b7 100644 --- a/asm/ov02.s +++ b/asm/ov02.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov02.inc" + .include "ov02.inc" .text diff --git a/asm/include/ov03.inc b/asm/ov03.inc similarity index 100% rename from asm/include/ov03.inc rename to asm/ov03.inc diff --git a/asm/ov03.s b/asm/ov03.s index 86769eda..b75d911e 100644 --- a/asm/ov03.s +++ b/asm/ov03.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov03.inc" + .include "ov03.inc" .text diff --git a/asm/include/ov04.inc b/asm/ov04.inc similarity index 99% rename from asm/include/ov04.inc rename to asm/ov04.inc index a5e32bd9..f9d979ec 100644 --- a/asm/include/ov04.inc +++ b/asm/ov04.inc @@ -6,6 +6,7 @@ .extern _ZN11ItemManager6CreateEv .extern _ZN11ItemManager7DestroyEv .extern _ZN12TouchControlC2Ev +.extern _ZN13PlayerControl18func_ov00_020aef30Ev .extern _ZN14OverlayManager4LoadEjj .extern _ZN14OverlayManager6UnloadEj .extern _ZN9SysObjectdlEPv @@ -540,7 +541,6 @@ .extern func_ov00_020a9ab8 .extern func_ov00_020aa084 .extern func_ov00_020aa0f0 -.extern func_ov00_020aef30 .extern func_ov00_020b4250 .extern func_ov00_020b4b90 .extern func_ov00_020b78a0 diff --git a/asm/ov04.s b/asm/ov04.s index 04717050..4115c93e 100644 --- a/asm/ov04.s +++ b/asm/ov04.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov04.inc" + .include "ov04.inc" .text @@ -14962,7 +14962,7 @@ func_ov04_02107e9c: ; 0x02107e9c _02107ef6: ldr r0, _02107f34 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020aef30 + bl _ZN13PlayerControl18func_ov00_020aef30Ev ldr r0, _02107f2c ; =gItemManager ldr r0, [r0] bl _ZN11ItemManager21ClearPrevEquippedItemEv diff --git a/asm/include/ov05.inc b/asm/ov05.inc similarity index 93% rename from asm/include/ov05.inc rename to asm/ov05.inc index 255dfdaf..0a182681 100644 --- a/asm/include/ov05.inc +++ b/asm/ov05.inc @@ -76,6 +76,28 @@ .extern _ZN13LinkStateItem18func_ov00_020abf70Ev .extern _ZN13LinkStateRoll18func_ov00_020aee58Est .extern _ZN13LinkStateRoll18func_ov00_020aee84Ev +.extern _ZN13PlayerControl13GetTouchAngleEv +.extern _ZN13PlayerControl13StopFollowingEv +.extern _ZN13PlayerControl14CheckTouchFastEj +.extern _ZN13PlayerControl14GetFollowActorEv +.extern _ZN13PlayerControl14IsTouchingFastEv +.extern _ZN13PlayerControl16CheckNotTouchingEv +.extern _ZN13PlayerControl17IsNotUntouchedNowEv +.extern _ZN13PlayerControl18func_ov00_020aeef8Ev +.extern _ZN13PlayerControl18func_ov00_020af01cEPc +.extern _ZN13PlayerControl18func_ov00_020af538Ev +.extern _ZN13PlayerControl18func_ov00_020afad8EP5Vec3p +.extern _ZN13PlayerControl18func_ov00_020afb6cEv +.extern _ZN13PlayerControl18func_ov00_020afeecEib +.extern _ZN13PlayerControl18func_ov00_020b014cEv +.extern _ZN13PlayerControl18func_ov00_020b034cEv +.extern _ZN13PlayerControl18func_ov00_020b0418Ev +.extern _ZN13PlayerControl18func_ov00_020b0778EP5Vec3pji +.extern _ZN13PlayerControl18func_ov00_020b0b0cEPsPiS1_Pb +.extern _ZN13PlayerControl18func_ov00_020b129cEv +.extern _ZN13PlayerControl18func_ov00_020b13c4Ev +.extern _ZN13PlayerControl20UpdateUsingEquipItemEv +.extern _ZN13PlayerControl9SetUnk_80Ev .extern _ZN15LinkStateDamage18func_ov00_020ac9e4Ei .extern _ZN15LinkStateDamage18func_ov00_020acb6cEP5Vec3pi .extern _ZN15LinkStateDamage18func_ov00_020ace90EP5Vec3pi @@ -86,7 +108,7 @@ .extern _ZN17LinkStateInteract18func_ov00_020ab97cEP5Vec3p .extern _ZN17LinkStateInteract18func_ov00_020ab9b8Ejb .extern _ZN17LinkStateInteract20SetGrabActorVelocityEP5Vec3p -.extern _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Ve +.extern _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p .extern _ZN4Item18func_ov00_020ad020Ei .extern _ZN9SysObjectdlEPv .extern _ZNK11ItemManager13HasAllPotionsEv @@ -377,28 +399,6 @@ .extern func_ov00_020a9588 .extern func_ov00_020a95a4 .extern func_ov00_020a990c -.extern func_ov00_020aeef8 -.extern func_ov00_020aeffc -.extern func_ov00_020af01c -.extern func_ov00_020af044 -.extern func_ov00_020af050 -.extern func_ov00_020af298 -.extern func_ov00_020af454 -.extern func_ov00_020af538 -.extern func_ov00_020afad8 -.extern func_ov00_020afb6c -.extern func_ov00_020afeec -.extern func_ov00_020b014c -.extern func_ov00_020b0328 -.extern func_ov00_020b034c -.extern func_ov00_020b0418 -.extern func_ov00_020b0778 -.extern func_ov00_020b0ab4 -.extern func_ov00_020b0b0c -.extern func_ov00_020b1214 -.extern func_ov00_020b129c -.extern func_ov00_020b134c -.extern func_ov00_020b13c4 .extern func_ov00_020b1940 .extern func_ov00_020b199c .extern func_ov00_020b1bfc diff --git a/asm/ov05.s b/asm/ov05.s index 053950d2..fbec707c 100644 --- a/asm/ov05.s +++ b/asm/ov05.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov05.inc" + .include "ov05.inc" .text @@ -5965,7 +5965,7 @@ func_ov05_02105850: ; 0x02105850 ldr r0, _02105bf0 ; =data_027e0fb8 strb r1, [r6, #0x25] ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev mov r0, r4 bl func_ov00_020bf028 cmp r0, #0 @@ -6041,12 +6041,12 @@ _02105968: beq _02105b6c ldr r0, _02105bf0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020aeffc + bl _ZN13PlayerControl14GetFollowActorEv cmp r0, #0 beq _021059e0 ldr r0, _02105bf0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020aeffc + bl _ZN13PlayerControl14GetFollowActorEv mov r5, r0 mov r0, r6 bl _ZN13LinkStateBase12GetPlayerPosEv @@ -6480,7 +6480,7 @@ _02105f4c: ldmneia sp!, {r3, r4, r5, r6, r7, pc} ldr r0, _021065f0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv ldr r1, _021065f4 ; =0x00000ccd cmp r0, r1 blt _02105fd8 @@ -6840,7 +6840,7 @@ _021064e0: _021064f4: ldr r0, _021065f0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv mov r7, r0 mov r0, r4 bl _ZN13LinkStateBase18func_ov00_020a8c64Ev @@ -6853,7 +6853,7 @@ _021064f4: ble _0210653c ldr r0, _021065f0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b0328 + bl _ZN13PlayerControl13GetTouchAngleEv mov r1, r0 b _02106554 _0210653c: @@ -7042,7 +7042,7 @@ func_ov05_02106740: ; 0x02106740 mov r0, r7 add r3, r6, #0x1c str ip, [sp] - bl func_ov00_020b0b0c + bl _ZN13PlayerControl18func_ov00_020b0b0cEPsPiS1_Pb cmp r0, #0 addeq sp, sp, #0xc ldmeqia sp!, {r4, r5, r6, r7, pc} @@ -7248,7 +7248,7 @@ func_ov05_02106a50: ; 0x02106a50 ldrb r1, [r0, #0x80] cmp r1, #0 beq _02106a84 - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv _02106a84: mov r0, #4 bl func_01fffcd8 @@ -7360,7 +7360,7 @@ func_ov05_02106bbc: ; 0x02106bbc ldr r0, _02106c6c ; =data_027e0fb8 add r1, sp, #0 ldr r0, [r0] - bl func_ov00_020af01c + bl _ZN13PlayerControl18func_ov00_020af01cEPc cmp r0, #0 beq _02106c64 mov r0, r5 @@ -7547,7 +7547,7 @@ _02106e0c: blt _02106ee0 ldr r0, _021071dc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv ldr r1, _021071e0 ; =0x00000ccd cmp r0, r1 blt _02106eac @@ -7754,7 +7754,7 @@ _02107188: bl _ZN13LinkStateBase12GetPlayerPosEv mov r1, r0 mov r0, r4 - bl func_ov00_020b014c + bl _ZN13PlayerControl18func_ov00_020b014cEv ldr r0, _021071f4 ; =data_027e103c mov r1, #1 ldr r0, [r0] @@ -7807,7 +7807,7 @@ func_ov05_02107214: ; 0x02107214 mov r4, r0 ldr r0, [r1] mov r1, #1 - bl func_ov00_020af454 + bl _ZN13PlayerControl14CheckTouchFastEj cmp r0, #0 movne r0, #5 strneh r0, [r4, #0xe] @@ -7922,7 +7922,7 @@ func_ov05_021073b8: ; 0x021073b8 ldr r1, _0210759c ; =data_027e0fb8 mov r5, r0 ldr r0, [r1] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv mov r4, r0 cmp r4, #0 ble _02107430 @@ -7931,7 +7931,7 @@ func_ov05_021073b8: ; 0x021073b8 ldr r1, _0210759c ; =data_027e0fb8 ldr r6, [r0] ldr r0, [r1] - bl func_ov00_020b0328 + bl _ZN13PlayerControl13GetTouchAngleEv smull r1, r2, r4, r6 adds r3, r1, #0x800 mov r1, r0 @@ -7999,7 +7999,7 @@ _021074c8: bl _ZN13LinkStateBase6TurnToEsii ldr r0, _0210759c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b0328 + bl _ZN13PlayerControl13GetTouchAngleEv sub r0, r0, r6 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 @@ -8255,7 +8255,7 @@ func_ov05_02107880: ; 0x02107880 mov r5, r0 ldr r0, [r1] mov r1, #1 - bl func_ov00_020af454 + bl _ZN13PlayerControl14CheckTouchFastEj cmp r0, #0 beq _021078b4 mov r0, r5 @@ -8350,7 +8350,7 @@ _021079d0: ble _02107a08 ldr r0, _02107b64 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b134c + bl _ZN13PlayerControl14IsTouchingFastEv cmp r0, #0 beq _02107b1c ldrsh r1, [r4, #0x10] @@ -8857,7 +8857,7 @@ func_ov05_02108094: ; 0x02108094 ldr r0, _02108184 ; =data_027e0fb8 mov r1, #1 ldr r0, [r0] - bl func_ov00_020af454 + bl _ZN13PlayerControl14CheckTouchFastEj cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} @@ -9572,7 +9572,7 @@ func_ov05_021089f4: ; 0x021089f4 bl _ZN13LinkStateBase18func_ov00_020a82acEv ldr r0, _02108ce0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev ldr r0, [r4, #0x74] cmp r0, #0x87 bne _02108a70 @@ -9962,7 +9962,7 @@ func_ov05_02108f38: ; 0x02108f38 ldmgeia sp!, {r4, pc} ldr r0, _02108f94 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1214 + bl _ZN13PlayerControl17IsNotUntouchedNowEv cmp r0, #0 ldmeqia sp!, {r4, pc} _02108f88: @@ -11142,7 +11142,7 @@ _02109f78: func_ov05_02109f88: ; 0x02109f88 stmdb sp!, {r4, lr} mov r4, r0 - bl func_ov00_020aeef8 + bl _ZN13PlayerControl18func_ov00_020aeef8Ev cmp r0, #0 beq _02109fdc ldrsh r0, [r4, #0x7e] @@ -12432,7 +12432,7 @@ _0210ae98: add r1, sp, #0x1c add r3, sp, #8 mov r0, r6 - bl func_ov00_020b0778 + bl _ZN13PlayerControl18func_ov00_020b0778EP5Vec3pji cmp r0, #0 beq _0210b244 ldr r1, [sp, #8] @@ -12548,7 +12548,7 @@ func_ov05_0210b2a4: ; 0x0210b2a4 _0210b2fc: ldr r0, _0210b3b4 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b0ab4 + bl _ZN13PlayerControl16CheckNotTouchingEv cmp r0, #0 bne _0210b324 ldr r0, _0210b3b8 ; =data_027e0f74 @@ -12784,7 +12784,7 @@ _0210b5f4: _0210b608: ldr r0, _0210b95c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev mov r0, r5 bl _ZN13LinkStateBase18EquipItem_vfunc_28Ev ldr r1, _0210b960 ; =data_ov05_02112984 @@ -12807,7 +12807,7 @@ _0210b634: ldr r1, _0210b95c ; =data_027e0fb8 strh r2, [r0] ldr r0, [r1] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev ldr r1, _0210b964 ; =data_ov05_021129f4 mov r0, r5 mov r2, #1 @@ -12817,7 +12817,7 @@ _0210b634: _0210b684: ldr r0, _0210b95c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev ldr r1, _0210b968 ; =data_027e0e60 add r0, sp, #0x12 ldr r4, [r1] @@ -12898,7 +12898,7 @@ _0210b79c: _0210b7b0: ldr r0, _0210b95c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev bl func_020385b8 add r1, r5, #0x24 bl _ZN17LinkStateInteract18func_ov00_020ab97cEP5Vec3p @@ -13156,7 +13156,7 @@ _0210bb10: ldmeqia sp!, {r3, r4, pc} ldr r0, _0210bb4c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev mov r0, r4 mov r1, #0 bl _ZN13LinkStateBase15ChangeLinkStateEi @@ -13239,7 +13239,7 @@ _0210bc18: add r1, sp, #0x20 add r3, sp, #4 mov r0, r6 - bl func_ov00_020b0778 + bl _ZN13PlayerControl18func_ov00_020b0778EP5Vec3pji cmp r0, #0 beq _0210bccc mov r0, #0x1000 @@ -13359,7 +13359,7 @@ _0210bdd8: _0210bdec: ldr r0, _0210bf44 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b0ab4 + bl _ZN13PlayerControl16CheckNotTouchingEv cmp r0, #0 bne _0210be14 ldr r0, _0210bf48 ; =data_027e0f74 @@ -13523,7 +13523,7 @@ _0210c004: _0210c040: ldr r0, _0210c200 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv cmp r0, #0xcd addle sp, sp, #0x14 ldmleia sp!, {r4, r5, r6, r7, r8, sb, pc} @@ -13533,7 +13533,7 @@ _0210c040: bl _ZN13LinkStateBase14GetPlayerAngleEv mov r5, r0 mov r0, r6 - bl func_ov00_020b0328 + bl _ZN13PlayerControl13GetTouchAngleEv strh r0, [r5] bl func_ov05_0210b96c bl func_ov14_0213d420 @@ -13546,7 +13546,7 @@ _0210c040: beq _0210c19c ldr r0, _0210c200 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b0328 + bl _ZN13PlayerControl13GetTouchAngleEv ldrsh r1, [r4, #0x16] sub r0, r1, r0 mov r0, r0, lsl #0x10 @@ -13611,7 +13611,7 @@ _0210c040: _0210c19c: ldr r0, _0210c200 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b13c4 + bl _ZN13PlayerControl18func_ov00_020b13c4Ev cmp r0, #0 addeq sp, sp, #0x14 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} @@ -13659,7 +13659,7 @@ func_ov05_0210c20c: ; 0x0210c20c add r1, sp, #8 strb r2, [sp, #8] strb r2, [sp, #9] - bl func_ov00_020af01c + bl _ZN13PlayerControl18func_ov00_020af01cEPc cmp r0, #0 beq _0210c2a8 ldr r0, _0210c950 ; =data_027e0e60 @@ -13787,12 +13787,12 @@ _0210c3f8: ldr r0, [r0] moveq r2, #0 mov r1, r6 - bl func_ov00_020afeec + bl _ZN13PlayerControl18func_ov00_020afeecEib cmp r0, #0 bne _0210c454 ldr r0, _0210c94c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv add sp, sp, #0x78 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} @@ -13829,7 +13829,7 @@ _0210c4b4: bl _ZN13LinkStateBase6LookAtEP5Vec3p ldr r0, _0210c94c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv add sp, sp, #0x78 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} @@ -13839,7 +13839,7 @@ _0210c4d8: bl _ZN13LinkStateBase6LookAtEP5Vec3p ldr r0, _0210c94c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv ldr r1, [r7, #0x24] ldr r0, _0210c950 ; =data_027e0e60 str r1, [sp, #0x3c] @@ -13994,7 +13994,7 @@ _0210c680: bl _ZN13LinkStateBase6LookAtEP5Vec3p ldr r0, _0210c94c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev add sp, sp, #0x78 mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} @@ -14011,7 +14011,7 @@ _0210c738: bl _ZN13LinkStateBase6LookAtEP5Vec3p ldr r0, _0210c94c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev mov r0, r7 add r2, r7, #0x24 mov r1, #0 @@ -14032,7 +14032,7 @@ _0210c788: _0210c7a8: ldr r0, _0210c94c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev bl func_020385b8 add r1, r5, #0x18 bl _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p @@ -14131,7 +14131,7 @@ _0210c88c: ldr r0, [r1] sub r1, r3, r2 str r1, [sp, #0x50] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv add sp, sp, #0x78 mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} @@ -16237,7 +16237,7 @@ func_ov05_0210e4e4: ; 0x0210e4e4 ldr r0, _0210e878 ; =data_027e0fb8 mov r1, r2 ldr r0, [r0] - bl func_ov00_020af538 + bl _ZN13PlayerControl18func_ov00_020af538Ev ldr r1, _0210e878 ; =data_027e0fb8 mov r0, r6 ldr r4, [r1] @@ -16246,7 +16246,7 @@ func_ov05_0210e4e4: ; 0x0210e4e4 moveq r1, #1 movne r1, #0 mov r0, r4 - bl func_ov00_020afb6c + bl _ZN13PlayerControl18func_ov00_020afb6cEv _0210e52c: mov r0, r6 mov r1, r5 @@ -16799,7 +16799,7 @@ _0210ecd0: ldmltia sp!, {r4, r5, r6, pc} ldr r0, _0210f688 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv ldr r1, _0210f68c ; =0x00000ccd cmp r0, r1 addlt sp, sp, #0x20 @@ -16945,7 +16945,7 @@ _0210eedc: ldr r1, _0210f688 ; =data_027e0fb8 str r2, [r0, #0x24] ldr r0, [r1] - bl func_ov00_020b134c + bl _ZN13PlayerControl14IsTouchingFastEv cmp r0, #0 bne _0210ef34 mov r0, r6 @@ -17424,7 +17424,7 @@ _0210f5d8: ldr r1, _0210f688 ; =data_027e0fb8 strb r2, [r0, #0xbe] ldr r0, [r1] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv mov r0, r6 mov r1, #0 bl _ZN13LinkStateBase15ChangeLinkStateEi @@ -17647,7 +17647,7 @@ _0210f884: ble _0210f89c ldr r0, _021101d8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b0328 + bl _ZN13PlayerControl13GetTouchAngleEv mov r5, r0 _0210f89c: ldr r0, [sl, #8] @@ -17770,7 +17770,7 @@ _0210fa38: ldr r0, _021101d8 ; =data_027e0fb8 mov r1, r6 ldr r0, [r0] - bl func_ov00_020afad8 + bl _ZN13PlayerControl18func_ov00_020afad8EP5Vec3p cmp r0, #0 beq _0210fc30 _0210fa80: @@ -17888,7 +17888,7 @@ _0210fc04: _0210fc30: ldr r0, _021101d8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv mov sb, #0 b _0210fc74 _0210fc44: @@ -17898,7 +17898,7 @@ _0210fc44: beq _0210fc74 ldr r0, _021101d8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b129c + bl _ZN13PlayerControl18func_ov00_020b129cEv mov r3, r0 mov r0, sl mov r1, sb @@ -18258,7 +18258,7 @@ _0211016c: bl _ZN13LinkStateBase12GetPlayerPosEv mov r1, r0 mov r0, r5 - bl func_ov00_020b014c + bl _ZN13PlayerControl18func_ov00_020b014cEv _021101a8: ldr r0, _0211021c ; =data_027e103c mov r1, #1 @@ -19745,7 +19745,7 @@ _02111594: beq _021116a4 ldr r0, _02111a68 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b0418 + bl _ZN13PlayerControl18func_ov00_020b0418Ev mov r7, r0 mov r0, r5 bl func_ov00_020a8f2c @@ -19849,12 +19849,12 @@ _021116a4: _02111734: ldr r0, _02111a68 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv b _02111960 _02111744: ldr r0, _02111a68 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv cmp r6, #0 movne r3, #1 mov r1, r0 @@ -20086,7 +20086,7 @@ func_ov05_02111a98: ; 0x02111a98 ldr r1, _02111af4 ; =data_027e0fb8 mov r4, r0 ldr r0, [r1] - bl func_ov00_020aeffc + bl _ZN13PlayerControl14GetFollowActorEv cmp r0, #0 bne _02111aec ldr r0, _02111af4 ; =data_027e0fb8 diff --git a/asm/include/ov06.inc b/asm/ov06.inc similarity index 100% rename from asm/include/ov06.inc rename to asm/ov06.inc diff --git a/asm/ov06.s b/asm/ov06.s index a05c77d9..e8ecabb6 100644 --- a/asm/ov06.s +++ b/asm/ov06.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov06.inc" + .include "ov06.inc" .text diff --git a/asm/include/ov07.inc b/asm/ov07.inc similarity index 100% rename from asm/include/ov07.inc rename to asm/ov07.inc diff --git a/asm/ov07.s b/asm/ov07.s index 2fc14d00..3cbb65c2 100644 --- a/asm/ov07.s +++ b/asm/ov07.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov07.inc" + .include "ov07.inc" .text diff --git a/asm/include/ov08.inc b/asm/ov08.inc similarity index 100% rename from asm/include/ov08.inc rename to asm/ov08.inc diff --git a/asm/ov08.s b/asm/ov08.s index d9eeb562..9d50c2da 100644 --- a/asm/ov08.s +++ b/asm/ov08.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov08.inc" + .include "ov08.inc" .text diff --git a/asm/include/ov09.inc b/asm/ov09.inc similarity index 100% rename from asm/include/ov09.inc rename to asm/ov09.inc diff --git a/asm/ov09.s b/asm/ov09.s index 6a7b7140..dac8c644 100644 --- a/asm/ov09.s +++ b/asm/ov09.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov09.inc" + .include "ov09.inc" .text diff --git a/asm/include/ov10.inc b/asm/ov10.inc similarity index 100% rename from asm/include/ov10.inc rename to asm/ov10.inc diff --git a/asm/ov10.s b/asm/ov10.s index 62633ab0..fb292aa6 100644 --- a/asm/ov10.s +++ b/asm/ov10.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov10.inc" + .include "ov10.inc" .text diff --git a/asm/include/ov11.inc b/asm/ov11.inc similarity index 100% rename from asm/include/ov11.inc rename to asm/ov11.inc diff --git a/asm/ov11.s b/asm/ov11.s index bc2703c8..56fb0437 100644 --- a/asm/ov11.s +++ b/asm/ov11.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov11.inc" + .include "ov11.inc" .text diff --git a/asm/include/ov12.inc b/asm/ov12.inc similarity index 100% rename from asm/include/ov12.inc rename to asm/ov12.inc diff --git a/asm/ov12.s b/asm/ov12.s index e918d87e..d2ded08b 100644 --- a/asm/ov12.s +++ b/asm/ov12.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov12.inc" + .include "ov12.inc" .text diff --git a/asm/include/ov13.inc b/asm/ov13.inc similarity index 100% rename from asm/include/ov13.inc rename to asm/ov13.inc diff --git a/asm/ov13.s b/asm/ov13.s index 7cdbdbd7..d92c1c12 100644 --- a/asm/ov13.s +++ b/asm/ov13.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov13.inc" + .include "ov13.inc" .text diff --git a/asm/include/ov14.inc b/asm/ov14.inc similarity index 99% rename from asm/include/ov14.inc rename to asm/ov14.inc index 0f551b19..efa51ec5 100644 --- a/asm/include/ov14.inc +++ b/asm/ov14.inc @@ -18,6 +18,8 @@ .extern _ZN11ItemManager8GiveItemEjjj .extern _ZN11ItemManager8GiveKeysEj .extern _ZN11ItemManager9SetPotionEjj +.extern _ZN13PlayerControl13IsNotTouchingEv +.extern _ZN13PlayerControl20UpdateUsingEquipItemEv .extern _ZN15LinkStateDamage18func_ov00_020aca94Ev .extern _ZN4Item18func_ov00_020ad020Ei .extern _ZN9SysObjectdlEPv @@ -492,8 +494,6 @@ .extern func_ov00_020a9e28 .extern func_ov00_020aa0f0 .extern func_ov00_020aa124 -.extern func_ov00_020af298 -.extern func_ov00_020b1338 .extern func_ov00_020b18d8 .extern func_ov00_020b2f70 .extern func_ov00_020b3ea8 diff --git a/asm/ov14.s b/asm/ov14.s index 429ca789..e42b05c6 100644 --- a/asm/ov14.s +++ b/asm/ov14.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov14.inc" + .include "ov14.inc" .text @@ -1089,7 +1089,7 @@ func_ov14_02120300: ; 0x02120300 _02120360: ldr r0, _02120750 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1338 + bl _ZN13PlayerControl13IsNotTouchingEv cmp r0, #0 moveq r0, #0 streq r0, [r6, #0x1a8] @@ -2599,7 +2599,7 @@ _02121838: beq _02121868 ldr r0, _021219d0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1338 + bl _ZN13PlayerControl13IsNotTouchingEv cmp r0, #0 movne r0, #1 bne _0212186c @@ -2738,7 +2738,7 @@ func_ov14_021219f8: ; 0x021219f8 beq _02121a50 ldr r0, _02121a84 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1338 + bl _ZN13PlayerControl13IsNotTouchingEv cmp r0, #0 movne r0, #1 bne _02121a54 @@ -4674,7 +4674,7 @@ _02123460: beq _02123484 ldr r0, _0212355c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1338 + bl _ZN13PlayerControl13IsNotTouchingEv cmp r0, #0 movne r0, #1 bne _02123488 @@ -5181,7 +5181,7 @@ _02123ab0: beq _02123ad4 ldr r0, _02123ba0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1338 + bl _ZN13PlayerControl13IsNotTouchingEv cmp r0, #0 movne r0, #1 bne _02123ad8 @@ -40025,7 +40025,7 @@ _0213f644: ldr r1, _0213f714 ; =data_027e0fb8 strb r2, [r0, #0x28] ldr r0, [r1] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv bl func_ov14_0213f724 bl func_ov05_02110bb4 ldr r1, _0213f708 ; =data_027e0fd4 diff --git a/asm/include/ov15.inc b/asm/ov15.inc similarity index 98% rename from asm/include/ov15.inc rename to asm/ov15.inc index 4eff27fc..ed3698f5 100644 --- a/asm/include/ov15.inc +++ b/asm/ov15.inc @@ -16,6 +16,13 @@ .extern _ZN11ItemManager18func_ov00_020ae648Ejjj .extern _ZN11ItemManager19SetTreasureSalvagedEj .extern _ZN11ItemManager8GiveItemEjjj +.extern _ZN13PlayerControl11IsTappedNowEv +.extern _ZN13PlayerControl13IsNotTouchingEv +.extern _ZN13PlayerControl13StopFollowingEv +.extern _ZN13PlayerControl17IsNotUntouchedNowEv +.extern _ZN13PlayerControl18func_ov00_020af2d4Ejb +.extern _ZN13PlayerControl18func_ov00_020af538Ev +.extern _ZN13PlayerControl9UpdateAimEv .extern _ZN4Item18func_ov00_020ad020Ei .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj @@ -530,13 +537,6 @@ .extern func_ov00_020a9b18 .extern func_ov00_020a9b6c .extern func_ov00_020a9b78 -.extern func_ov00_020aef68 -.extern func_ov00_020af050 -.extern func_ov00_020af2d4 -.extern func_ov00_020af538 -.extern func_ov00_020b1214 -.extern func_ov00_020b1338 -.extern func_ov00_020b137c .extern func_ov00_020b153c .extern func_ov00_020b1550 .extern func_ov00_020b157c diff --git a/asm/ov15.s b/asm/ov15.s index a3a616b0..0d7dea98 100644 --- a/asm/ov15.s +++ b/asm/ov15.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov15.inc" + .include "ov15.inc" .text @@ -27176,7 +27176,7 @@ func_ov15_021364b0: ; 0x021364b0 cmp r1, #0 addeq sp, sp, #0x20 ldmeqia sp!, {r4, pc} - bl func_ov00_020b137c + bl _ZN13PlayerControl11IsTappedNowEv cmp r0, #0 ldrneb r0, [r4, #0x26c] cmpne r0, #0 @@ -29307,7 +29307,7 @@ _02138224: blt _02138268 ldr r0, _021382f8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1214 + bl _ZN13PlayerControl17IsNotUntouchedNowEv cmp r0, #0 beq _02138268 ldr r0, _021382fc ; =data_ov00_020eec9c @@ -30146,7 +30146,7 @@ _02138e84: beq _02138e9c ldr r0, _02138fc0 ; =data_027e0fb8 ldr r0, [r0] - blx func_ov00_020aef68 + blx _ZN13PlayerControl9UpdateAimEv b _02138eb8 _02138e9c: mov r0, r4 @@ -30418,7 +30418,7 @@ _0213922c: bl func_ov15_02135d78 ldr r0, _021394f0 ; =data_027e0fb8 ldr r0, [r0] - blx func_ov00_020aef68 + blx _ZN13PlayerControl9UpdateAimEv b _021393f4 _02139268: ldr r0, _021394e8 ; =data_027e0d38 @@ -30525,7 +30525,7 @@ _021392cc: _021393f4: ldr r0, _021394f0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv ldr r1, [r5] add r0, sp, #0x24 str r1, [sp, #0x24] @@ -31547,7 +31547,7 @@ _0213a260: streqb r0, [r5, #0x26c] ldr r0, _0213a46c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af2d4 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb cmp r0, #0 moveq r0, #0 streqb r0, [r5, #0x26c] @@ -34884,7 +34884,7 @@ func_ov15_0213cfb4: ; 0x0213cfb4 ldr r0, [r2] mov r2, r1 mov r1, #1 - bl func_ov00_020af538 + bl _ZN13PlayerControl18func_ov00_020af538Ev mov r0, r4 bl func_ov15_0213dbb8 mov r0, r4 @@ -54742,7 +54742,7 @@ _0214da40: beq _0214da70 ldr r0, _0214dbe8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1338 + bl _ZN13PlayerControl13IsNotTouchingEv cmp r0, #0 movne r0, #1 bne _0214da74 @@ -54888,7 +54888,7 @@ func_ov15_0214dc1c: ; 0x0214dc1c beq _0214dc74 ldr r0, _0214dca8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1338 + bl _ZN13PlayerControl13IsNotTouchingEv cmp r0, #0 movne r0, #1 bne _0214dc78 @@ -55025,7 +55025,7 @@ _0214de3c: mov r1, #1 ldr r0, [r0] mov r2, r1 - bl func_ov00_020af2d4 + bl _ZN13PlayerControl18func_ov00_020af2d4Ejb cmp r0, #0 beq _0214dec4 ldr r0, _0214e070 ; =data_027e0fb8 diff --git a/asm/include/ov16.inc b/asm/ov16.inc similarity index 100% rename from asm/include/ov16.inc rename to asm/ov16.inc diff --git a/asm/ov16.s b/asm/ov16.s index f7ace47d..598ad665 100644 --- a/asm/ov16.s +++ b/asm/ov16.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov16.inc" + .include "ov16.inc" .text diff --git a/asm/include/ov17.inc b/asm/ov17.inc similarity index 99% rename from asm/include/ov17.inc rename to asm/ov17.inc index 07d71ebf..61ee48ee 100644 --- a/asm/include/ov17.inc +++ b/asm/ov17.inc @@ -3,6 +3,7 @@ .extern Divide .extern _ZN11ItemManager12GetItemModelEj .extern _ZN11ItemManager19GetDungeonItemModelEj +.extern _ZN13PlayerControl13IsNotTouchingEv .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager18func_ov00_020ad594Ei @@ -286,7 +287,6 @@ .extern func_ov00_020a9a98 .extern func_ov00_020a9aac .extern func_ov00_020a9ab8 -.extern func_ov00_020b1338 .extern func_ov00_020b3ea8 .extern func_ov00_020b7d74 .extern func_ov00_020b7df0 diff --git a/asm/ov17.s b/asm/ov17.s index 7a00ffe1..e872dc23 100644 --- a/asm/ov17.s +++ b/asm/ov17.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov17.inc" + .include "ov17.inc" .text @@ -15763,7 +15763,7 @@ _02167b9c: _02167bd4: ldr r0, _02167ccc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b1338 + bl _ZN13PlayerControl13IsNotTouchingEv cmp r0, #0 bne _02167c48 ldr r0, [r4, #0x48] diff --git a/asm/include/ov18.inc b/asm/ov18.inc similarity index 100% rename from asm/include/ov18.inc rename to asm/ov18.inc diff --git a/asm/ov18.s b/asm/ov18.s index ebf7f961..82f1d744 100644 --- a/asm/ov18.s +++ b/asm/ov18.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov18.inc" + .include "ov18.inc" .text diff --git a/asm/include/ov19.inc b/asm/ov19.inc similarity index 99% rename from asm/include/ov19.inc rename to asm/ov19.inc index 23311145..f69f87f8 100644 --- a/asm/include/ov19.inc +++ b/asm/ov19.inc @@ -12,6 +12,8 @@ .extern _ZN13LinkStateBase18func_ov00_020a8d40Ev .extern _ZN13LinkStateBase24Get_PlayerLinkBase_Unk48Ev .extern _ZN13LinkStateBase26Clear_PlayerLinkBase_Unk48Et +.extern _ZN13PlayerControl14IsTouchingFastEv +.extern _ZN13PlayerControl18func_ov00_020aeef8Ev .extern _ZN15LinkStateDamage18func_ov00_020ace90EP5Vec3pi .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj @@ -197,8 +199,6 @@ .extern func_ov00_020a9ab8 .extern func_ov00_020a9b6c .extern func_ov00_020a9b78 -.extern func_ov00_020aeef8 -.extern func_ov00_020b134c .extern func_ov00_020b1bfc .extern func_ov00_020b3ea8 .extern func_ov00_020b41ec diff --git a/asm/ov19.s b/asm/ov19.s index f85ff109..b03037c8 100644 --- a/asm/ov19.s +++ b/asm/ov19.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov19.inc" + .include "ov19.inc" .text @@ -10006,7 +10006,7 @@ func_ov19_02175a2c: ; 0x02175a2c stmdb sp!, {r3, r4, r5, lr} sub sp, sp, #0x10 mov r4, r0 - bl func_ov00_020aeef8 + bl _ZN13PlayerControl18func_ov00_020aeef8Ev cmp r0, #0 addeq sp, sp, #0x10 ldmeqia sp!, {r3, r4, r5, pc} @@ -10019,7 +10019,7 @@ func_ov19_02175a2c: ; 0x02175a2c ble _02175ae8 ldr r0, _02175c28 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b134c + bl _ZN13PlayerControl14IsTouchingFastEv cmp r0, #0 ldrnesh r0, [r4, #0x10] mov r1, #0 diff --git a/asm/include/ov20.inc b/asm/ov20.inc similarity index 100% rename from asm/include/ov20.inc rename to asm/ov20.inc diff --git a/asm/ov20.s b/asm/ov20.s index 2e1bc058..fc006fbe 100644 --- a/asm/ov20.s +++ b/asm/ov20.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov20.inc" + .include "ov20.inc" .text diff --git a/asm/include/ov21.inc b/asm/ov21.inc similarity index 100% rename from asm/include/ov21.inc rename to asm/ov21.inc diff --git a/asm/ov21.s b/asm/ov21.s index c02928e3..45b82492 100644 --- a/asm/ov21.s +++ b/asm/ov21.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov21.inc" + .include "ov21.inc" .text diff --git a/asm/include/ov22.inc b/asm/ov22.inc similarity index 100% rename from asm/include/ov22.inc rename to asm/ov22.inc diff --git a/asm/ov22.s b/asm/ov22.s index c1b32561..05241526 100644 --- a/asm/ov22.s +++ b/asm/ov22.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov22.inc" + .include "ov22.inc" .text diff --git a/asm/include/ov23.inc b/asm/ov23.inc similarity index 98% rename from asm/include/ov23.inc rename to asm/ov23.inc index fb1ae7b2..63ae8346 100644 --- a/asm/include/ov23.inc +++ b/asm/ov23.inc @@ -20,6 +20,11 @@ .extern _ZN13LinkStateBase20GetPlayerControlDataEv .extern _ZN13LinkStateBase28Get_PlayerControlData_Unk120Ev .extern _ZN13LinkStateBase6TurnToEsii +.extern _ZN13PlayerControl13GetTouchAngleEv +.extern _ZN13PlayerControl13StopFollowingEv +.extern _ZN13PlayerControl14GetFollowActorEv +.extern _ZN13PlayerControl18func_ov00_020b034cEv +.extern _ZN13PlayerControl9SetUnk_80Ev .extern _ZN15LinkStateDamage18func_ov00_020acb6cEP5Vec3pi .extern _ZN17LinkStateInteract18func_ov00_020ab6c8Ev .extern _ZN17LinkStateInteract18func_ov00_020ab770EP5Vec3p @@ -258,11 +263,6 @@ .extern func_ov00_020a9b18 .extern func_ov00_020a9b6c .extern func_ov00_020a9b78 -.extern func_ov00_020aeffc -.extern func_ov00_020af044 -.extern func_ov00_020af050 -.extern func_ov00_020b0328 -.extern func_ov00_020b034c .extern func_ov00_020b1a4c .extern func_ov00_020b3ea8 .extern func_ov00_020b41ec diff --git a/asm/ov23.s b/asm/ov23.s index 65b2db67..888b164a 100644 --- a/asm/ov23.s +++ b/asm/ov23.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov23.inc" + .include "ov23.inc" .text @@ -4876,7 +4876,7 @@ _02171510: strh r4, [r0] ldr r0, _02171698 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev mov r0, r7 bl func_ov23_0217216c mov r0, r7 @@ -4943,7 +4943,7 @@ _02171614: strh r4, [r0] ldr r0, _02171698 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev mov r0, r7 bl func_ov23_0217216c mov r0, r7 @@ -5043,7 +5043,7 @@ _02171788: strh r4, [r0] ldr r0, _0217180c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af044 + bl _ZN13PlayerControl9SetUnk_80Ev mov r0, r5 bl func_ov23_0217216c mov r0, r5 @@ -5201,11 +5201,11 @@ _021719b0: _02171a18: ldr r0, _02172088 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv ldr r1, _02172088 ; =data_027e0fb8 mov r5, r0 ldr r0, [r1] - bl func_ov00_020b0328 + bl _ZN13PlayerControl13GetTouchAngleEv mov r6, r0 _02171a38: ldr r0, _0217208c ; =0x0000059a @@ -5434,7 +5434,7 @@ _02171d34: ldrb r1, [r0, #0x80] cmp r1, #0 beq _02171de0 - bl func_ov00_020aeffc + bl _ZN13PlayerControl14GetFollowActorEv cmp r0, #0 ldrne r1, [r0, #4] ldrne r0, _021720ac ; =0x50574253 @@ -5452,7 +5452,7 @@ _02171d34: _02171dd4: ldr r0, _02172088 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv _02171de0: mov r0, #0 strb r0, [r4, #0x2b] @@ -5463,12 +5463,12 @@ _02171dec: ldr r1, [r0, #0xa0] cmp r1, #0 bne _02171e18 - bl func_ov00_020aeffc + bl _ZN13PlayerControl14GetFollowActorEv cmp r0, #0 bne _02171e18 ldr r0, _02172088 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv _02171e18: cmp r5, #0x7b mov r0, r4 @@ -12742,7 +12742,7 @@ func_ov23_02177e24: ; 0x02177e24 ldr r1, [r1] cmp r2, r1 blt _02177e50 - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv ldr r1, _02177e5c ; =0x0000099a cmp r0, r1 movge r0, #1 diff --git a/asm/include/ov24.inc b/asm/ov24.inc similarity index 99% rename from asm/include/ov24.inc rename to asm/ov24.inc index 948239a9..7686a3f5 100644 --- a/asm/include/ov24.inc +++ b/asm/ov24.inc @@ -2,6 +2,7 @@ .extern Approach_thunk .extern Divide .extern _ZN10PlayerBase18EquipItem_vfunc_3cEP8Cylinderi +.extern _ZN13PlayerControl13CheckTouchingEj .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager19GetActiveFairyLevelEi @@ -186,7 +187,6 @@ .extern func_ov00_020a9b2c .extern func_ov00_020a9b38 .extern func_ov00_020a9b6c -.extern func_ov00_020af42c .extern func_ov00_020b3ea8 .extern func_ov00_020b3ee8 .extern func_ov00_020b41ec diff --git a/asm/ov24.s b/asm/ov24.s index b7111934..436a6241 100644 --- a/asm/ov24.s +++ b/asm/ov24.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov24.inc" + .include "ov24.inc" .text @@ -13291,7 +13291,7 @@ func_ov24_02178348: ; 0x02178348 _021783f8: mov r0, r6 mov r1, #1 - bl func_ov00_020af42c + bl _ZN13PlayerControl13CheckTouchingEj cmp r0, #0 beq _0217866c mvn r1, #0 diff --git a/asm/include/ov25.inc b/asm/ov25.inc similarity index 100% rename from asm/include/ov25.inc rename to asm/ov25.inc diff --git a/asm/ov25.s b/asm/ov25.s index 3e5ff199..5141be35 100644 --- a/asm/ov25.s +++ b/asm/ov25.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov25.inc" + .include "ov25.inc" .text diff --git a/asm/include/ov26.inc b/asm/ov26.inc similarity index 100% rename from asm/include/ov26.inc rename to asm/ov26.inc diff --git a/asm/ov26.s b/asm/ov26.s index ec5f82ec..9baf9ba5 100644 --- a/asm/ov26.s +++ b/asm/ov26.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov26.inc" + .include "ov26.inc" .text diff --git a/asm/include/ov27.inc b/asm/ov27.inc similarity index 99% rename from asm/include/ov27.inc rename to asm/ov27.inc index 80a2d4cf..0e831f54 100644 --- a/asm/include/ov27.inc +++ b/asm/ov27.inc @@ -1,5 +1,6 @@ #pragma once .extern Divide +.extern _ZN13PlayerControl14IsTouchingFastEv .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager10GetUnk_098Ej @@ -157,7 +158,6 @@ .extern func_ov00_020a9588 .extern func_ov00_020a95a4 .extern func_ov00_020a9b6c -.extern func_ov00_020b134c .extern func_ov00_020b3ee8 .extern func_ov00_020b7df0 .extern func_ov00_020b7e6c diff --git a/asm/ov27.s b/asm/ov27.s index bda4cad3..ac41ac3a 100644 --- a/asm/ov27.s +++ b/asm/ov27.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov27.inc" + .include "ov27.inc" .text @@ -3456,7 +3456,7 @@ _02170630: bl func_ov00_0207c474 ldr r0, _021708c8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b134c + bl _ZN13PlayerControl14IsTouchingFastEv cmp r0, #0 beq _0217078c ldr r0, _021708b8 ; =data_027e0fc8 diff --git a/asm/include/ov28.inc b/asm/ov28.inc similarity index 100% rename from asm/include/ov28.inc rename to asm/ov28.inc diff --git a/asm/ov28.s b/asm/ov28.s index 90d20c67..6aba2edf 100644 --- a/asm/ov28.s +++ b/asm/ov28.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov28.inc" + .include "ov28.inc" .text diff --git a/asm/include/ov29.inc b/asm/ov29.inc similarity index 100% rename from asm/include/ov29.inc rename to asm/ov29.inc diff --git a/asm/ov29.s b/asm/ov29.s index 901487bb..b108c94b 100644 --- a/asm/ov29.s +++ b/asm/ov29.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov29.inc" + .include "ov29.inc" .text diff --git a/asm/include/ov30.inc b/asm/ov30.inc similarity index 100% rename from asm/include/ov30.inc rename to asm/ov30.inc diff --git a/asm/ov30.s b/asm/ov30.s index 86ba4f25..3726266a 100644 --- a/asm/ov30.s +++ b/asm/ov30.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov30.inc" + .include "ov30.inc" .text diff --git a/asm/include/ov31.inc b/asm/ov31.inc similarity index 100% rename from asm/include/ov31.inc rename to asm/ov31.inc diff --git a/asm/ov31.s b/asm/ov31.s index f170afc0..bebabde9 100644 --- a/asm/ov31.s +++ b/asm/ov31.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov31.inc" + .include "ov31.inc" .text diff --git a/asm/include/ov32.inc b/asm/ov32.inc similarity index 100% rename from asm/include/ov32.inc rename to asm/ov32.inc diff --git a/asm/ov32.s b/asm/ov32.s index 29a9a591..652c1f88 100644 --- a/asm/ov32.s +++ b/asm/ov32.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov32.inc" + .include "ov32.inc" .text diff --git a/asm/include/ov33.inc b/asm/ov33.inc similarity index 100% rename from asm/include/ov33.inc rename to asm/ov33.inc diff --git a/asm/ov33.s b/asm/ov33.s index 50a78c56..2ce9d7d8 100644 --- a/asm/ov33.s +++ b/asm/ov33.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov33.inc" + .include "ov33.inc" .text diff --git a/asm/include/ov34.inc b/asm/ov34.inc similarity index 100% rename from asm/include/ov34.inc rename to asm/ov34.inc diff --git a/asm/ov34.s b/asm/ov34.s index d5da586d..ef74cba6 100644 --- a/asm/ov34.s +++ b/asm/ov34.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov34.inc" + .include "ov34.inc" .text diff --git a/asm/include/ov35.inc b/asm/ov35.inc similarity index 98% rename from asm/include/ov35.inc rename to asm/ov35.inc index e609e7c2..4ee286c4 100644 --- a/asm/include/ov35.inc +++ b/asm/ov35.inc @@ -4,6 +4,8 @@ .extern _ZN10PlayerBase10SetVisibleEb .extern _ZN11ItemManager12GetItemModelEj .extern _ZN11ItemManager7AddItemEi +.extern _ZN13PlayerControl14CheckTouchFastEj +.extern _ZN13PlayerControl14IsTouchingFastEv .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern data_02050f54 @@ -149,8 +151,6 @@ .extern func_ov00_020a9ad8 .extern func_ov00_020a9b4c .extern func_ov00_020a9b58 -.extern func_ov00_020af454 -.extern func_ov00_020b134c .extern func_ov00_020b3ee8 .extern func_ov00_020b7d74 .extern func_ov00_020b7df0 diff --git a/asm/ov35.s b/asm/ov35.s index b35c4145..7a818e32 100644 --- a/asm/ov35.s +++ b/asm/ov35.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov35.inc" + .include "ov35.inc" .text @@ -6474,7 +6474,7 @@ func_ov35_0218174c: ; 0x0218174c bl func_ov35_02182fa8 ldr r0, _021817fc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b134c + bl _ZN13PlayerControl14IsTouchingFastEv cmp r0, #0 beq _02181788 ldr r0, _02181800 ; =data_027e0fc8 @@ -7477,7 +7477,7 @@ func_ov35_02182560: ; 0x02182560 mov r4, r0 ldr r0, [r1] mov r1, #1 - bl func_ov00_020af454 + bl _ZN13PlayerControl14CheckTouchFastEj cmp r0, #0 beq _02182598 ldr r0, _02182610 ; =data_027e0fc8 diff --git a/asm/include/ov36.inc b/asm/ov36.inc similarity index 100% rename from asm/include/ov36.inc rename to asm/ov36.inc diff --git a/asm/ov36.s b/asm/ov36.s index 0645c751..e1af58ce 100644 --- a/asm/ov36.s +++ b/asm/ov36.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov36.inc" + .include "ov36.inc" .text diff --git a/asm/include/ov37.inc b/asm/ov37.inc similarity index 100% rename from asm/include/ov37.inc rename to asm/ov37.inc diff --git a/asm/ov37.s b/asm/ov37.s index 096441ee..48a223a6 100644 --- a/asm/ov37.s +++ b/asm/ov37.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov37.inc" + .include "ov37.inc" .text diff --git a/asm/include/ov38.inc b/asm/ov38.inc similarity index 100% rename from asm/include/ov38.inc rename to asm/ov38.inc diff --git a/asm/ov38.s b/asm/ov38.s index 82e53446..5b09a4a5 100644 --- a/asm/ov38.s +++ b/asm/ov38.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov38.inc" + .include "ov38.inc" .text diff --git a/asm/include/ov39.inc b/asm/ov39.inc similarity index 99% rename from asm/include/ov39.inc rename to asm/ov39.inc index 885d4f89..d1655ebe 100644 --- a/asm/include/ov39.inc +++ b/asm/ov39.inc @@ -4,6 +4,7 @@ .extern _ZN10PlayerBase18EquipItem_vfunc_2cEv .extern _ZN10PlayerBase18EquipItem_vfunc_3cEP8Cylinderi .extern _ZN10PlayerBase18func_ov00_020a7c60EP5Vec3pS1_i +.extern _ZN13PlayerControl14IsTouchingFastEv .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern data_02050f54 @@ -134,7 +135,6 @@ .extern func_ov00_020a9b4c .extern func_ov00_020a9b58 .extern func_ov00_020a9b6c -.extern func_ov00_020b134c .extern func_ov00_020b7df0 .extern func_ov00_020b7e6c .extern func_ov00_020bb6d4 diff --git a/asm/ov39.s b/asm/ov39.s index 4e360295..d3d81c6c 100644 --- a/asm/ov39.s +++ b/asm/ov39.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov39.inc" + .include "ov39.inc" .text @@ -7316,7 +7316,7 @@ func_ov39_02182284: ; 0x02182284 bl func_ov39_0217f278 ldr r0, _021823e8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b134c + bl _ZN13PlayerControl14IsTouchingFastEv cmp r0, #0 beq _021822c8 ldr r0, _021823ec ; =data_027e0fc8 diff --git a/asm/include/ov40.inc b/asm/ov40.inc similarity index 100% rename from asm/include/ov40.inc rename to asm/ov40.inc diff --git a/asm/ov40.s b/asm/ov40.s index 4297adb5..eb059a95 100644 --- a/asm/ov40.s +++ b/asm/ov40.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov40.inc" + .include "ov40.inc" .text diff --git a/asm/include/ov41.inc b/asm/ov41.inc similarity index 100% rename from asm/include/ov41.inc rename to asm/ov41.inc diff --git a/asm/ov41.s b/asm/ov41.s index 79354ffd..aff668a5 100644 --- a/asm/ov41.s +++ b/asm/ov41.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov41.inc" + .include "ov41.inc" .text diff --git a/asm/include/ov42.inc b/asm/ov42.inc similarity index 100% rename from asm/include/ov42.inc rename to asm/ov42.inc diff --git a/asm/ov42.s b/asm/ov42.s index 8248a18e..55be506d 100644 --- a/asm/ov42.s +++ b/asm/ov42.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov42.inc" + .include "ov42.inc" .text diff --git a/asm/include/ov43.inc b/asm/ov43.inc similarity index 100% rename from asm/include/ov43.inc rename to asm/ov43.inc diff --git a/asm/ov43.s b/asm/ov43.s index 0bfac7de..b5350c33 100644 --- a/asm/ov43.s +++ b/asm/ov43.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov43.inc" + .include "ov43.inc" .text diff --git a/asm/include/ov44.inc b/asm/ov44.inc similarity index 100% rename from asm/include/ov44.inc rename to asm/ov44.inc diff --git a/asm/ov44.s b/asm/ov44.s index ca8329c4..ea91a7ae 100644 --- a/asm/ov44.s +++ b/asm/ov44.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov44.inc" + .include "ov44.inc" .text diff --git a/asm/include/ov45.inc b/asm/ov45.inc similarity index 100% rename from asm/include/ov45.inc rename to asm/ov45.inc diff --git a/asm/ov45.s b/asm/ov45.s index 33fb3ea5..b96517f9 100644 --- a/asm/ov45.s +++ b/asm/ov45.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov45.inc" + .include "ov45.inc" .text diff --git a/asm/include/ov46.inc b/asm/ov46.inc similarity index 100% rename from asm/include/ov46.inc rename to asm/ov46.inc diff --git a/asm/ov46.s b/asm/ov46.s index 7a2f985b..35876d8e 100644 --- a/asm/ov46.s +++ b/asm/ov46.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov46.inc" + .include "ov46.inc" .text diff --git a/asm/include/ov47.inc b/asm/ov47.inc similarity index 100% rename from asm/include/ov47.inc rename to asm/ov47.inc diff --git a/asm/ov47.s b/asm/ov47.s index df1e068f..0224ba5b 100644 --- a/asm/ov47.s +++ b/asm/ov47.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov47.inc" + .include "ov47.inc" .text diff --git a/asm/include/ov48.inc b/asm/ov48.inc similarity index 100% rename from asm/include/ov48.inc rename to asm/ov48.inc diff --git a/asm/ov48.s b/asm/ov48.s index 257e6a95..15977de5 100644 --- a/asm/ov48.s +++ b/asm/ov48.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov48.inc" + .include "ov48.inc" .text diff --git a/asm/include/ov49.inc b/asm/ov49.inc similarity index 100% rename from asm/include/ov49.inc rename to asm/ov49.inc diff --git a/asm/ov49.s b/asm/ov49.s index 9c5d2932..abd8f1a7 100644 --- a/asm/ov49.s +++ b/asm/ov49.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov49.inc" + .include "ov49.inc" .text diff --git a/asm/include/ov50.inc b/asm/ov50.inc similarity index 100% rename from asm/include/ov50.inc rename to asm/ov50.inc diff --git a/asm/ov50.s b/asm/ov50.s index 42f4afc2..9d5f2ab9 100644 --- a/asm/ov50.s +++ b/asm/ov50.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov50.inc" + .include "ov50.inc" .text diff --git a/asm/include/ov51.inc b/asm/ov51.inc similarity index 100% rename from asm/include/ov51.inc rename to asm/ov51.inc diff --git a/asm/ov51.s b/asm/ov51.s index b3a5ce76..922ab59a 100644 --- a/asm/ov51.s +++ b/asm/ov51.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov51.inc" + .include "ov51.inc" .text diff --git a/asm/include/ov52.inc b/asm/ov52.inc similarity index 100% rename from asm/include/ov52.inc rename to asm/ov52.inc diff --git a/asm/ov52.s b/asm/ov52.s index a16aec2f..cde23989 100644 --- a/asm/ov52.s +++ b/asm/ov52.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov52.inc" + .include "ov52.inc" .text diff --git a/asm/include/ov53.inc b/asm/ov53.inc similarity index 91% rename from asm/include/ov53.inc rename to asm/ov53.inc index 6793242f..50f20620 100644 --- a/asm/include/ov53.inc +++ b/asm/ov53.inc @@ -7,6 +7,10 @@ .extern _ZN13LinkStateBase18func_ov00_020a8b3cEi .extern _ZN13LinkStateBase28Get_PlayerControlData_Unk100Ev .extern _ZN13LinkStateBase6LookAtEP5Vec3p +.extern _ZN13PlayerControl14IsUntouchedNowEv +.extern _ZN13PlayerControl18func_ov00_020b0f88EP5Vec3piS1_ +.extern _ZN13PlayerControl20UpdateUsingEquipItemEv +.extern _ZN13PlayerControl6SetAimEv .extern _ZN9SysObjectdlEPv .extern data_02050f54 .extern data_027e0d0c @@ -36,10 +40,6 @@ .extern func_ov00_020840c4 .extern func_ov00_02087f08 .extern func_ov00_0208967c -.extern func_ov00_020af298 -.extern func_ov00_020b021c -.extern func_ov00_020b0f88 -.extern func_ov00_020b11dc .extern func_ov00_020b17ec .extern func_ov00_020b41c4 .extern func_ov00_020b7df0 diff --git a/asm/ov53.s b/asm/ov53.s index feaa6ac7..1743d68b 100644 --- a/asm/ov53.s +++ b/asm/ov53.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov53.inc" + .include "ov53.inc" .text @@ -833,7 +833,7 @@ func_ov53_02199730: ; 0x02199730 ldr r1, [r1, #8] str r1, [r4, #0x4c] ldr r0, [r0] - bl func_ov00_020b021c + bl _ZN13PlayerControl6SetAimEv ldmia sp!, {r4, pc} .align 2, 0 arm_func_end func_ov53_02199730 @@ -860,7 +860,7 @@ func_ov53_0219977c: ; 0x0219977c ldr r0, [r0] add r3, r5, #0x44 mov r2, #0x800 - bl func_ov00_020b0f88 + bl _ZN13PlayerControl18func_ov00_020b0f88EP5Vec3piS1_ cmp r0, #0 beq _0219980c ldr r0, [r4, #0x1c] @@ -884,7 +884,7 @@ _021997ec: _0219980c: ldr r0, _021999fc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b11dc + bl _ZN13PlayerControl14IsUntouchedNowEv cmp r0, #0 beq _02199850 ldr r0, [r4, #0x1c] @@ -955,7 +955,7 @@ _0219990c: beq _02199938 ldr r0, _021999fc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv mov r0, r5 bl func_ov05_02105d94 add sp, sp, #0x44 diff --git a/asm/include/ov54.inc b/asm/ov54.inc similarity index 87% rename from asm/include/ov54.inc rename to asm/ov54.inc index 33c39b8b..3d2c0471 100644 --- a/asm/include/ov54.inc +++ b/asm/ov54.inc @@ -11,6 +11,11 @@ .extern _ZN13LinkStateBase18func_ov00_020a8d50Ev .extern _ZN13LinkStateBase28Get_PlayerControlData_Unk120Ev .extern _ZN13LinkStateBase6LookAtEP5Vec3p +.extern _ZN13PlayerControl13StopFollowingEv +.extern _ZN13PlayerControl14GetFollowActorEv +.extern _ZN13PlayerControl18func_ov00_020af01cEPc +.extern _ZN13PlayerControl18func_ov00_020b034cEv +.extern _ZN13PlayerControl20UpdateUsingEquipItemEv .extern _ZNK11ItemManager16GetEquippedFairyEv .extern _ZNK11ItemManager8GetFairyEi .extern data_02050f54 @@ -42,11 +47,6 @@ .extern func_ov00_020a9588 .extern func_ov00_020a95a4 .extern func_ov00_020a9614 -.extern func_ov00_020aeffc -.extern func_ov00_020af01c -.extern func_ov00_020af050 -.extern func_ov00_020af298 -.extern func_ov00_020b034c .extern func_ov00_020b1940 .extern func_ov00_020b41c4 .extern func_ov00_020b7e6c diff --git a/asm/ov54.s b/asm/ov54.s index 210895f9..5f32607d 100644 --- a/asm/ov54.s +++ b/asm/ov54.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov54.inc" + .include "ov54.inc" .text @@ -70,7 +70,7 @@ func_ov54_02198d68: ; 0x02198d68 ldmneia sp!, {r3, r4, r5, pc} ldr r0, _02198e00 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020aeffc + bl _ZN13PlayerControl14GetFollowActorEv ldr r1, _02198e00 ; =data_027e0fb8 cmp r5, #0 ldr r1, [r1] @@ -389,7 +389,7 @@ _021991a8: ldrb r1, [r2, #0x79] strb r1, [r2, #0x7b] ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv ldr r0, _021992c4 ; =gItemManager ldr r4, [r0] mov r0, r4 @@ -414,19 +414,19 @@ _0219920c: _02199218: ldr r0, _021992c0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020aeffc + bl _ZN13PlayerControl14GetFollowActorEv cmp r0, #0 beq _02199244 ldr r0, _021992c0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv add sp, sp, #0x30 mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, pc} _02199244: ldr r0, _021992c0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv cmp r0, r4 blt _02199284 ldr r0, [r7, #0x58] @@ -434,7 +434,7 @@ _02199244: bne _02199284 ldr r0, _021992c0 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv mov r2, #0 mov r1, r0 mov r0, r7 @@ -830,7 +830,7 @@ func_ov54_021997f0: ; 0x021997f0 ldr r4, [r0, #0xa0] strb r2, [sp] strb r2, [sp, #1] - bl func_ov00_020af01c + bl _ZN13PlayerControl18func_ov00_020af01cEPc cmp r0, #0 beq _02199898 ldr r0, _021998d0 ; =data_027e0e60 @@ -863,7 +863,7 @@ _02199884: beq _02199898 ldr r0, _021998cc ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af050 + bl _ZN13PlayerControl13StopFollowingEv _02199898: ldr r0, _021998cc ; =data_027e0fb8 ldr r3, [r0] diff --git a/asm/include/ov55.inc b/asm/ov55.inc similarity index 87% rename from asm/include/ov55.inc rename to asm/ov55.inc index 14af1ea9..79bb1722 100644 --- a/asm/include/ov55.inc +++ b/asm/ov55.inc @@ -13,8 +13,12 @@ .extern _ZN13LinkStateBase18func_ov00_020a8b80Ev .extern _ZN13LinkStateBase28Get_PlayerControlData_Unk100Ev .extern _ZN13LinkStateBase6TurnToEsii +.extern _ZN13PlayerControl18func_ov00_020b034cEv +.extern _ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb +.extern _ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p +.extern _ZN13PlayerControl20UpdateUsingEquipItemEv .extern _ZN17LinkStateInteract14SetThrowOffsetEP5Vec3p -.extern _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3 +.extern _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p .extern data_027e0c54 .extern data_027e0e60 .extern data_027e0f64 @@ -45,10 +49,6 @@ .extern func_ov00_020a960c .extern func_ov00_020a9614 .extern func_ov00_020a990c -.extern func_ov00_020af298 -.extern func_ov00_020b034c -.extern func_ov00_020b049c -.extern func_ov00_020b05e8 .extern func_ov00_020b413c .extern func_ov00_020b41c4 .extern func_ov00_020be990 diff --git a/asm/ov55.s b/asm/ov55.s index fedfe52b..8e3a32e9 100644 --- a/asm/ov55.s +++ b/asm/ov55.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov55.inc" + .include "ov55.inc" .text @@ -248,7 +248,7 @@ func_ov55_02198f90: ; 0x02198f90 blx r1 ldr r0, _0219900c ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_ov55_02198f90 @@ -299,7 +299,7 @@ _0219907c: ldr r0, _021991a4 ; =data_027e0fb8 add r1, sp, #8 ldr r0, [r0] - bl func_ov00_020b05e8 + bl _ZN13PlayerControl18func_ov00_020b05e8EP5Vec3p cmp r0, #0 beq _021990dc bl func_ov55_02199010 @@ -320,7 +320,7 @@ _021990dc: add r1, sp, #8 ldr r0, [r0] mov r2, r5 - bl func_ov00_020b049c + bl _ZN13PlayerControl18func_ov00_020b049cEP5Vec3pb cmp r0, #0 beq _02199128 bl func_ov55_02199010 @@ -350,7 +350,7 @@ _02199128: blx r1 ldr r0, _021991a4 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv mov r0, r4 mov r1, #2 bl _ZN13LinkStateBase15ChangeLinkStateEi @@ -359,7 +359,7 @@ _02199128: _02199178: ldr r0, _021991a4 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020b034c + bl _ZN13PlayerControl18func_ov00_020b034cEv mov r1, r0 mov r0, r4 mov r2, #0 diff --git a/asm/include/ov56.inc b/asm/ov56.inc similarity index 88% rename from asm/include/ov56.inc rename to asm/ov56.inc index 76adb52d..330c741f 100644 --- a/asm/include/ov56.inc +++ b/asm/ov56.inc @@ -7,6 +7,9 @@ .extern _ZN13LinkStateBase28Get_PlayerControlData_Unk100Ev .extern _ZN13LinkStateBase28Get_PlayerControlData_Unk120Ev .extern _ZN13LinkStateBase6LookAtEP5Vec3p +.extern _ZN13PlayerControl13CheckTouchingEj +.extern _ZN13PlayerControl18func_ov00_020b0e54EP5Vec3pS1_ +.extern _ZN13PlayerControl6SetAimEv .extern data_027e0764 .extern data_027e0d0c .extern data_027e0f64 @@ -24,9 +27,6 @@ .extern func_ov00_020a9588 .extern func_ov00_020a95a4 .extern func_ov00_020a9614 -.extern func_ov00_020af42c -.extern func_ov00_020b021c -.extern func_ov00_020b0e54 .extern func_ov00_020b17ec .extern func_ov00_020b1e18 .extern func_ov00_020b41c4 diff --git a/asm/ov56.s b/asm/ov56.s index 682131a7..1c3bf5b8 100644 --- a/asm/ov56.s +++ b/asm/ov56.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov56.inc" + .include "ov56.inc" .text @@ -316,7 +316,7 @@ func_ov56_021990c0: ; 0x021990c0 ldr r1, [r1, #8] str r1, [r4, #0x4c] ldr r0, [r0] - bl func_ov00_020b021c + bl _ZN13PlayerControl6SetAimEv mov r0, #0 strb r0, [r4, #0x2a] ldmia sp!, {r4, pc} @@ -345,7 +345,7 @@ func_ov56_0219911c: ; 0x0219911c ldr r0, _021992d0 ; =data_027e0fb8 mov r1, #1 ldr r0, [r0] - bl func_ov00_020af42c + bl _ZN13PlayerControl13CheckTouchingEj cmp r0, #0 moveq r0, #1 movne r0, #0 @@ -371,7 +371,7 @@ _021991b0: add r1, sp, #0x14 ldr r0, [r0] add r2, r4, #0x44 - bl func_ov00_020b0e54 + bl _ZN13PlayerControl18func_ov00_020b0e54EP5Vec3pS1_ cmp r0, #0 beq _02199210 mov r0, r4 diff --git a/asm/include/ov57.inc b/asm/ov57.inc similarity index 93% rename from asm/include/ov57.inc rename to asm/ov57.inc index 54d99f05..49f2324e 100644 --- a/asm/include/ov57.inc +++ b/asm/ov57.inc @@ -14,6 +14,10 @@ .extern _ZN13LinkStateBase18func_ov00_020a8d40Ev .extern _ZN13LinkStateBase28Get_PlayerControlData_Unk100Ev .extern _ZN13LinkStateBase6LookAtEP5Vec3p +.extern _ZN13PlayerControl17CheckUntouchedNowEj +.extern _ZN13PlayerControl18func_ov00_020b1058EP5Vec3piS1_S1_ +.extern _ZN13PlayerControl20UpdateUsingEquipItemEv +.extern _ZN13PlayerControl6SetAimEv .extern _ZN9SysObjectdlEPv .extern data_02050f54 .extern data_027e03c8 @@ -54,10 +58,6 @@ .extern func_ov00_0208967c .extern func_ov00_02093a1c .extern func_ov00_02097738 -.extern func_ov00_020af298 -.extern func_ov00_020af3fc -.extern func_ov00_020b021c -.extern func_ov00_020b1058 .extern func_ov00_020b1d3c .extern func_ov00_020b41c4 .extern func_ov00_020bba28 diff --git a/asm/ov57.s b/asm/ov57.s index 5a5fbf6e..9d8d9a33 100644 --- a/asm/ov57.s +++ b/asm/ov57.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov57.inc" + .include "ov57.inc" .text @@ -1360,7 +1360,7 @@ func_ov57_02199e64: ; 0x02199e64 mov r2, #0 ldr r0, [r0] strb r2, [r1] - bl func_ov00_020b021c + bl _ZN13PlayerControl6SetAimEv ldmia sp!, {r4, pc} .align 2, 0 arm_func_end func_ov57_02199e64 @@ -1430,7 +1430,7 @@ _02199f58: beq _02199fb8 ldr r0, _0219a1e8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv ldrb r0, [r4, #0x6a] cmp r0, #0 beq _02199fb8 @@ -1458,7 +1458,7 @@ _02199fe4: bne _0219a180 ldr r0, _0219a1e8 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv mov r0, r6 bl func_ov14_02123960 mov r0, r5 @@ -1496,7 +1496,7 @@ _0219a07c: ldr r0, _0219a1e8 ; =data_027e0fb8 mov r1, #1 ldr r0, [r0] - bl func_ov00_020af3fc + bl _ZN13PlayerControl17CheckUntouchedNowEj cmp r0, #0 ldrneb r0, [r4, #0x68] mov r1, #0 @@ -1525,7 +1525,7 @@ _0219a0d4: ldr r0, _0219a1e8 ; =data_027e0fb8 add r1, sp, #0x2c ldr r0, [r0] - bl func_ov00_020b1058 + bl _ZN13PlayerControl18func_ov00_020b1058EP5Vec3piS1_S1_ cmp r0, #0 beq _0219a168 add r1, sp, #0x2c @@ -1624,7 +1624,7 @@ func_ov57_0219a208: ; 0x0219a208 ldr r1, _0219a320 ; =data_027e0fb8 str r2, [r0, #8] ldr r0, [r1] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv mov r0, r4 mov r1, #0 bl _ZN13LinkStateBase15ChangeLinkStateEi @@ -1670,7 +1670,7 @@ _0219a2b4: _0219a300: ldr r0, _0219a320 ; =data_027e0fb8 ldr r0, [r0] - bl func_ov00_020af298 + bl _ZN13PlayerControl20UpdateUsingEquipItemEv mov r0, r4 mov r1, #0 bl _ZN13LinkStateBase15ChangeLinkStateEi diff --git a/asm/include/ov58.inc b/asm/ov58.inc similarity index 96% rename from asm/include/ov58.inc rename to asm/ov58.inc index b0186e97..811083ae 100644 --- a/asm/include/ov58.inc +++ b/asm/ov58.inc @@ -7,7 +7,8 @@ .extern _ZN13LinkStateBase15GetGrabActorRefEv .extern _ZN13LinkStateBase18func_ov00_020a89bcEii .extern _ZN13LinkStateBase6LookAtEP5Vec3p -.extern _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec +.extern _ZN13PlayerControl14IsUntouchedNowEv +.extern _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p .extern _ZN9SysObjectdlEPv .extern _ZNK11ItemManager18func_ov00_020ad538Ei .extern data_027e0618 @@ -91,7 +92,6 @@ .extern func_ov00_020a97e0 .extern func_ov00_020a9aac .extern func_ov00_020a9ab8 -.extern func_ov00_020b11dc .extern func_ov00_020b413c .extern func_ov00_020bb810 .extern func_ov00_020bba28 diff --git a/asm/ov58.s b/asm/ov58.s index 8f2d2257..c7f8ad7e 100644 --- a/asm/ov58.s +++ b/asm/ov58.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov58.inc" + .include "ov58.inc" .text @@ -306,7 +306,7 @@ func_ov58_0219906c: ; 0x0219906c strh r1, [r0] ldr r0, _02199158 ; =data_027e0fb8 ldr r0, [r0] - blx func_ov00_020b11dc + blx _ZN13PlayerControl14IsUntouchedNowEv cmp r0, #0 bne _02199094 add r0, r5, #0 diff --git a/asm/include/ov59.inc b/asm/ov59.inc similarity index 94% rename from asm/include/ov59.inc rename to asm/ov59.inc index 87d27163..35e1acbb 100644 --- a/asm/include/ov59.inc +++ b/asm/ov59.inc @@ -5,6 +5,8 @@ .extern _ZN13LinkStateBase18func_ov00_020a8b3cEi .extern _ZN13LinkStateBase28Get_PlayerControlData_Unk100Ev .extern _ZN13LinkStateBase6LookAtEP5Vec3p +.extern _ZN13PlayerControl13CheckTouchingEj +.extern _ZN13PlayerControl14UpdateAimWorldEP5Vec3p .extern _ZNK11ItemManager16GetEquippedFairyEv .extern _ZNK11ItemManager18func_ov00_020ad538Ei .extern _ZNK11ItemManager8GetFairyEi @@ -43,8 +45,6 @@ .extern func_ov00_02083fb0 .extern func_ov00_020858b0 .extern func_ov00_020a5e9c -.extern func_ov00_020af42c -.extern func_ov00_020b0240 .extern func_ov00_020b853c .extern func_ov00_020b8c50 .extern func_ov00_020bc500 diff --git a/asm/ov59.s b/asm/ov59.s index ebded4a4..893dbf8d 100644 --- a/asm/ov59.s +++ b/asm/ov59.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov59.inc" + .include "ov59.inc" .text @@ -360,7 +360,7 @@ _021990c4: beq _021992d0 ldr r0, [r0] add r1, r6, #0x38 - bl func_ov00_020b0240 + bl _ZN13PlayerControl14UpdateAimWorldEP5Vec3p cmp r0, #0 beq _021992d0 ldr r0, [r5, #0x18] @@ -397,7 +397,7 @@ _02199180: ldr r0, _021992f8 ; =data_027e0fb8 add r1, r6, #0x38 ldr r0, [r0] - bl func_ov00_020b0240 + bl _ZN13PlayerControl14UpdateAimWorldEP5Vec3p cmp r0, #0 beq _021992d0 _021991c4: @@ -422,7 +422,7 @@ _02199204: ldr r0, _021992f8 ; =data_027e0fb8 add r1, r6, #0x38 ldr r0, [r0] - bl func_ov00_020b0240 + bl _ZN13PlayerControl14UpdateAimWorldEP5Vec3p mov r0, r5 bl func_ov59_02198e90 ldrb r0, [r6, #0x27] @@ -437,7 +437,7 @@ _0219923c: ldr r0, _021992f8 ; =data_027e0fb8 mov r1, #1 ldr r0, [r0] - bl func_ov00_020af42c + bl _ZN13PlayerControl13CheckTouchingEj cmp r0, #0 moveq r0, #1 movne r0, #0 @@ -554,7 +554,7 @@ _021993b4: ldr r0, _0219a064 ; =data_027e0fb8 add r1, sp, #0xb0 ldr r0, [r0] - bl func_ov00_020b0240 + bl _ZN13PlayerControl14UpdateAimWorldEP5Vec3p add r0, sp, #0xb0 add r2, sp, #0xa4 add r1, r4, #0x48 @@ -585,7 +585,7 @@ _02199408: ldr r0, _0219a064 ; =data_027e0fb8 add r1, sp, #0x98 ldr r0, [r0] - bl func_ov00_020b0240 + bl _ZN13PlayerControl14UpdateAimWorldEP5Vec3p ldr r1, _0219a070 ; =data_027e0f94 add r0, sp, #0x98 add r2, sp, #0x8c @@ -2265,7 +2265,7 @@ _0219ad18: ldr r0, [r0] add r1, sp, #0x44 str r2, [sp, #0x54] - bl func_ov00_020b0240 + bl _ZN13PlayerControl14UpdateAimWorldEP5Vec3p mov r6, #0 ldr r1, _0219aefc ; =0x0000ffff ldr lr, [sp, #0x54] diff --git a/asm/include/ov60.inc b/asm/ov60.inc similarity index 100% rename from asm/include/ov60.inc rename to asm/ov60.inc diff --git a/asm/ov60.s b/asm/ov60.s index 7392d14d..5178db08 100644 --- a/asm/ov60.s +++ b/asm/ov60.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov60.inc" + .include "ov60.inc" .text diff --git a/asm/include/ov61.inc b/asm/ov61.inc similarity index 100% rename from asm/include/ov61.inc rename to asm/ov61.inc diff --git a/asm/ov61.s b/asm/ov61.s index c59857ab..528e4679 100644 --- a/asm/ov61.s +++ b/asm/ov61.s @@ -1,5 +1,5 @@ .include "macros/function.inc" - .include "include/ov61.inc" + .include "ov61.inc" .text diff --git a/include/Player/LinkStateRoll.hpp b/include/Player/LinkStateRoll.hpp index 52b42b43..9ff28899 100644 --- a/include/Player/LinkStateRoll.hpp +++ b/include/Player/LinkStateRoll.hpp @@ -42,5 +42,4 @@ public: void func_ov00_020aee58(s16 param1, u16 param2); void func_ov00_020aee84(); - bool func_ov00_020aeeac(); }; diff --git a/include/Player/PlayerControl.hpp b/include/Player/PlayerControl.hpp index d10dce26..47c94d7a 100644 --- a/include/Player/PlayerControl.hpp +++ b/include/Player/PlayerControl.hpp @@ -3,9 +3,16 @@ #include "global.h" #include "types.h" -#include "Player/TouchControl.hpp" +#include "lib/math.h" -typedef TouchEdge u16; +#include "Player/TouchControl.hpp" +#include "Player/TouchGesture.hpp" +#include "Actor/ActorManager.hpp" +#include "Actor/Actor.hpp" +#include "Debug/DebugHierarchy.hpp" +#include "Item/Item.hpp" + +typedef u16 TouchEdge; enum TouchEdge_ { TouchEdge_Right = 0, TouchEdge_Left = 1, @@ -15,6 +22,7 @@ enum TouchEdge_ { }; class PlayerControl : public TouchControl { +public: /* 00 (base) */ /* 38 */ Vec3p mTouchWorld; // tile position /* 44 */ Vec3p mUnk_44; @@ -34,25 +42,87 @@ class PlayerControl : public TouchControl { /* 72 */ s16 mTouchDiffX; /* 74 */ s16 mTouchDiffY; /* 76 */ bool mTouchFast; - /* 78 */ unk32 mUnk_78; - /* 7c */ unk32 mUnk_7c; - /* 80 */ unk32 mUnk_80; - /* 84 */ s32 mUnk_84; - /* 88 */ s32 mUnk_88; - /* 8c */ s32 mUnk_8c; - /* 90 */ s32 mUnk_90; - /* 94 */ s32 mUnk_94; - /* 98 */ s32 mUnk_98; - /* 9c */ q20 mUnk_9c; + /* 77 */ unk8 mUnk_77; + /* 78 */ bool mUnk_78; + /* 79 */ bool mUsingEquipItem; + /* 7a */ bool mUnk_7a; + /* 7b */ bool mUnk_7b; + /* 7c */ s8 mUnk_7c; + /* 7d */ bool mUnk_7d; + /* 7e */ s8 mUnk_7e; + /* 7f */ bool mUnk_7f; + /* 80 */ bool mUnk_80; + /* 81 */ bool mFollowing; + /* 82 */ unk8 mUnk_82; + /* 83 */ bool mUnk_83; + /* 84 */ ActorRef mFollowRef; + /* 8c */ ActorRef mNextFollowRef; + /* 94 */ ActorRef mLastFollowRef; + /* 9c */ unk8 mUnk_9c; + /* 9d */ unk8 mUnk_9d; + /* 9e */ unk8 mUnk_9e[2]; /* a0 */ void *mFollowActor; /* a4 */ q20 mFollowDist; /* a8 */ u16 mFollowStuckTimer; /* aa */ u16 mCutsceneEndTimer; - /* ac */ unk32 mUnk_ac; + /* ac */ s16 mUnk_ac; + /* ae */ unk16 mUnk_ae; /* b0 */ Vec3p mAim; // used by boomerang, bow and rope /* bc */ Vec3p mAimWorld; // used by hammer /* c8 */ s32 mUnk_c8; /* cc */ s32 mUnk_cc; - /* d0 */ void *mTouchGesture; - /* d4 */ void *mDebug; + /* d0 */ TouchGesture **mTouchGesture; + /* d4 */ DebugHierarchy *mDebug; + /* d8 */ + + static bool func_ov00_020aeeac(); + void func_ov00_020aeef8(); + void func_ov00_020aef30(); + void UpdateAim(); + Actor* GetFollowActor(); + bool func_ov00_020af01c(unk8 *param1); + void SetUnk_80(); + void StopFollowing(); + void func_ov00_020af06c(); + void UpdateUsingEquipItem(); + bool func_ov00_020af2d4(u32 param1, bool param2); + bool CheckTouchedNow(u32 param1); + bool CheckUntouchedNow(u32 param1); + bool CheckTouching(u32 param1); + bool CheckTouchFast(u32 param1); + bool func_ov00_020af4a4(); + void func_ov00_020af538(); + void func_ov00_020af6e4(Vec3p *param1, s32 param3, s32 param4); + bool func_ov00_020af778(); + bool func_ov00_020afad8(Vec3p *param1); + void func_ov00_020afb6c(); + bool func_ov00_020afe88(s32 param1, bool param2); + bool func_ov00_020afeec(unk32 param1, bool param2); + void func_ov00_020aff90(unk32 param1, unk32 param2); + void func_ov00_020affec(Vec3p *param1, s32 y, s32 param3, Vec3p *param4); + void func_ov00_020b014c(); + void SetAim(); + bool UpdateAimWorld(Vec3p *param1); + s16 GetTouchAngle(); + u32 func_ov00_020b034c(); + s32 func_ov00_020b0418(); + bool func_ov00_020b049c(Vec3p *param1, bool param2); + bool func_ov00_020b05e8(Vec3p *param1); + bool func_ov00_020b0778(Vec3p *param1, u32 param2, unk32 param3); + bool CheckNotTouching(); + bool func_ov00_020b0ad0(Actor *actor); + bool func_ov00_020b0b0c(s16 *pAngle, ItemFlag *pEquipId, unk32 *pCardinal, bool *pFast); + bool func_ov00_020b0de8(Vec3p *param1); + bool func_ov00_020b0e54(Vec3p *param1, Vec3p *param2); + bool func_ov00_020b0f88(Vec3p *param1, unk32 param2, Vec3p *param3); + bool func_ov00_020b1058(Vec3p *param1, unk32 param2, Vec3p *param3, Vec3p *param4); + bool IsUntouchedNow(); + bool IsNotUntouchedNow(); + bool func_ov00_020b1248(unk32 *param1); + bool func_ov00_020b129c(); + bool func_ov00_020b12d0(s16 *pAngle); + bool IsNotTouching(); + bool IsTouchingFast(); + bool IsTappedNow(); + bool func_ov00_020b13c4(); }; diff --git a/include/Player/TouchGesture.hpp b/include/Player/TouchGesture.hpp new file mode 100644 index 00000000..25f5c8b9 --- /dev/null +++ b/include/Player/TouchGesture.hpp @@ -0,0 +1,3 @@ +#pragma once + +struct TouchGesture; diff --git a/src/00_Core/Player/PlayerControl.cpp b/src/00_Core/Player/PlayerControl.cpp new file mode 100644 index 00000000..48c52e7a --- /dev/null +++ b/src/00_Core/Player/PlayerControl.cpp @@ -0,0 +1,56 @@ +#include "Player/PlayerControl.hpp" + +#ifdef STUBS + +bool PlayerControl::func_ov00_020aeeac() {} +void PlayerControl::func_ov00_020aeef8() {} +void PlayerControl::func_ov00_020aef30() {} +void PlayerControl::UpdateAim() {} +Actor* PlayerControl::GetFollowActor() {} +bool PlayerControl::func_ov00_020af01c(unk8 *param1) {} +void PlayerControl::SetUnk_80() {} +void PlayerControl::StopFollowing() {} +void PlayerControl::func_ov00_020af06c() {} +void PlayerControl::UpdateUsingEquipItem() {} +bool PlayerControl::func_ov00_020af2d4(u32 param1, bool param2) {} +bool PlayerControl::CheckTouchedNow(u32 param1) {} +bool PlayerControl::CheckUntouchedNow(u32 param1) {} +bool PlayerControl::CheckTouching(u32 param1) {} +bool PlayerControl::CheckTouchFast(u32 param1) {} +bool PlayerControl::func_ov00_020af4a4() {} +void PlayerControl::func_ov00_020af538() {} +void PlayerControl::func_ov00_020af6e4(Vec3p *param1, s32 param3, s32 param4) {} +bool PlayerControl::func_ov00_020af778() {} +bool PlayerControl::func_ov00_020afad8(Vec3p *param1) {} +void PlayerControl::func_ov00_020afb6c() {} +bool PlayerControl::func_ov00_020afe88(s32 param1, bool param2) {} +bool PlayerControl::func_ov00_020afeec(unk32 param1, bool param2) {} +void PlayerControl::func_ov00_020aff90(unk32 param1, unk32 param2) {} +void PlayerControl::func_ov00_020affec(Vec3p *param1, s32 y, s32 param3, Vec3p *param4) {} +void PlayerControl::func_ov00_020b014c() {} +void PlayerControl::SetAim() {} +bool PlayerControl::UpdateAimWorld(Vec3p *param1) {} +s16 PlayerControl::GetTouchAngle() {} +u32 PlayerControl::func_ov00_020b034c() {} +s32 PlayerControl::func_ov00_020b0418() {} +bool PlayerControl::func_ov00_020b049c(Vec3p *param1, bool param2) {} +bool PlayerControl::func_ov00_020b05e8(Vec3p *param1) {} +bool PlayerControl::func_ov00_020b0778(Vec3p *param1, u32 param2, unk32 param3) {} +bool PlayerControl::CheckNotTouching() {} +bool PlayerControl::func_ov00_020b0ad0(Actor *actor) {} +bool PlayerControl::func_ov00_020b0b0c(s16 *pAngle, ItemFlag *pEquipId, unk32 *pCardinal, bool *pFast) {} +bool PlayerControl::func_ov00_020b0de8(Vec3p *param1) {} +bool PlayerControl::func_ov00_020b0e54(Vec3p *param1, Vec3p *param2) {} +bool PlayerControl::func_ov00_020b0f88(Vec3p *param1, unk32 param2, Vec3p *param3) {} +bool PlayerControl::func_ov00_020b1058(Vec3p *param1, unk32 param2, Vec3p *param3, Vec3p *param4) {} +bool PlayerControl::IsUntouchedNow() {} +bool PlayerControl::IsNotUntouchedNow() {} +bool PlayerControl::func_ov00_020b1248(unk32 *param1) {} +bool PlayerControl::func_ov00_020b129c() {} +bool PlayerControl::func_ov00_020b12d0(s16 *pAngle) {} +bool PlayerControl::IsNotTouching() {} +bool PlayerControl::IsTouchingFast() {} +bool PlayerControl::IsTappedNow() {} +bool PlayerControl::func_ov00_020b13c4() {} + +#endif diff --git a/tools/lcf.py b/tools/lcf.py index 33ab3548..9900a56d 100644 --- a/tools/lcf.py +++ b/tools/lcf.py @@ -49,6 +49,8 @@ ov00 = Overlay(name='ov00', after='ARM9', objects=[ 'asm/ov00/Item/ItemManager.s', 'src/00_Core/Player/LinkStateRoll.cpp', 'asm/ov00/Player/LinkStateRoll.s', + 'src/00_Core/Player/PlayerControl.cpp', + 'asm/ov00/Player/PlayerControl.s', 'asm/ov00/ov00_020ae7a4.s', 'asm/ov00/ov00_init.s'