summaryrefslogtreecommitdiff
path: root/asm/trainer_see.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-10-21 21:01:01 -0700
committerYamaArashi <shadow962@live.com>2016-10-21 21:01:01 -0700
commitd44bce863fe9b37b2a76eb6fff1d46c7ed0d0bfc (patch)
tree40c6b12707f3db80df9fdba26fb47a973d58330e /asm/trainer_see.s
parent4f94633db0169f54019c2e2ad0a8d48b2232176f (diff)
split out mori_debug_menu.s and trainer_see.s
Diffstat (limited to 'asm/trainer_see.s')
-rw-r--r--asm/trainer_see.s1119
1 files changed, 1119 insertions, 0 deletions
diff --git a/asm/trainer_see.s b/asm/trainer_see.s
new file mode 100644
index 000000000..f7c7ef775
--- /dev/null
+++ b/asm/trainer_see.s
@@ -0,0 +1,1119 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start CheckTrainers
+CheckTrainers: @ 8083FBC
+ push {r4,r5,lr}
+ movs r4, 0
+ ldr r5, _08083FEC
+_08083FC2:
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ adds r1, r0, r5
+ ldrb r0, [r1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _08083FF0
+ ldrb r0, [r1, 0x7]
+ cmp r0, 0x1
+ beq _08083FDC
+ cmp r0, 0x3
+ bne _08083FF0
+_08083FDC:
+ adds r0, r4, 0
+ bl CheckTrainer
+ lsls r0, 24
+ cmp r0, 0
+ beq _08083FF0
+ movs r0, 0x1
+ b _08083FFC
+ .align 2, 0
+_08083FEC: .4byte gMapObjects
+_08083FF0:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bls _08083FC2
+ movs r0, 0
+_08083FFC:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckTrainers
+
+ thumb_func_start CheckTrainer
+CheckTrainer: @ 8084004
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r7, r4, 0
+ adds r0, r4, 0
+ bl GetFieldObjectScriptPointerByFieldObjectId
+ adds r6, r0, 0
+ bl GetTrainerFlagFromScriptPointer
+ cmp r0, 0
+ bne _08084034
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ ldr r1, _08084038
+ adds r5, r0, r1
+ adds r0, r5, 0
+ bl TrainerCanApproachPlayer
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _0808403C
+_08084034:
+ movs r0, 0
+ b _08084052
+ .align 2, 0
+_08084038: .4byte gMapObjects
+_0808403C:
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl TrainerWantsBattle
+ subs r1, r4, 0x1
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl sub_80842C8
+ movs r0, 0x1
+_08084052:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckTrainer
+
+ thumb_func_start TrainerCanApproachPlayer
+TrainerCanApproachPlayer: @ 8084058
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r7, r0, 0
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ ldrb r0, [r7, 0x7]
+ mov r8, r4
+ cmp r0, 0x1
+ bne _080840B8
+ ldr r1, _080840B0
+ ldrb r0, [r7, 0x18]
+ lsls r0, 28
+ lsrs r0, 26
+ subs r0, 0x4
+ adds r0, r1
+ ldrb r1, [r7, 0x1D]
+ mov r2, sp
+ movs r3, 0
+ ldrsh r2, [r2, r3]
+ movs r5, 0
+ ldrsh r3, [r4, r5]
+ ldr r4, [r0]
+ adds r0, r7, 0
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r2, [r7, 0x18]
+ lsls r2, 28
+ lsrs r2, 28
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl CheckPathBetweenTrainerAndPlayer
+ lsls r0, 24
+ lsrs r0, 24
+ b _080840F8
+ .align 2, 0
+_080840B0: .4byte gUnknown_0839B488
+_080840B4:
+ adds r0, r6, 0
+ b _080840F8
+_080840B8:
+ movs r5, 0
+_080840BA:
+ ldr r0, _08084104
+ lsls r4, r5, 2
+ adds r4, r0
+ ldrb r1, [r7, 0x1D]
+ mov r0, sp
+ movs r6, 0
+ ldrsh r2, [r0, r6]
+ mov r0, r8
+ movs r6, 0
+ ldrsh r3, [r0, r6]
+ ldr r4, [r4]
+ adds r0, r7, 0
+ bl _call_via_r4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r4, 0
+ bl CheckPathBetweenTrainerAndPlayer
+ lsls r0, 24
+ cmp r0, 0
+ bne _080840B4
+ adds r5, r4, 0
+ cmp r5, 0x3
+ bls _080840BA
+ movs r0, 0
+_080840F8:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08084104: .4byte gUnknown_0839B488
+ thumb_func_end TrainerCanApproachPlayer
+
+ thumb_func_start IsTrainerInRangeSouth
+IsTrainerInRangeSouth: @ 8084108
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r3, 16
+ lsrs r5, r3, 16
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r0, r2
+ bne _08084142
+ lsls r0, r5, 16
+ asrs r2, r0, 16
+ ldrh r3, [r4, 0x12]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r2, r0
+ ble _08084142
+ adds r1, r0, 0
+ lsls r0, r6, 16
+ asrs r0, 16
+ adds r1, r0
+ cmp r2, r1
+ bgt _08084142
+ subs r0, r5, r3
+ lsls r0, 24
+ lsrs r0, 24
+ b _08084144
+_08084142:
+ movs r0, 0
+_08084144:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTrainerInRangeSouth
+
+ thumb_func_start IsTrainerInRangeNorth
+IsTrainerInRangeNorth: @ 808414C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r3, 16
+ lsrs r5, r3, 16
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r0, r2
+ bne _08084186
+ lsls r0, r5, 16
+ asrs r2, r0, 16
+ ldrh r3, [r4, 0x12]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r2, r0
+ bge _08084186
+ adds r1, r0, 0
+ lsls r0, r6, 16
+ asrs r0, 16
+ subs r1, r0
+ cmp r2, r1
+ blt _08084186
+ subs r0, r3, r5
+ lsls r0, 24
+ lsrs r0, 24
+ b _08084188
+_08084186:
+ movs r0, 0
+_08084188:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTrainerInRangeNorth
+
+ thumb_func_start IsTrainerInRangeWest
+IsTrainerInRangeWest: @ 8084190
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r5, r2, 16
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ lsls r3, 16
+ asrs r3, 16
+ cmp r0, r3
+ bne _080841CA
+ lsls r0, r5, 16
+ asrs r3, r0, 16
+ ldrh r2, [r4, 0x10]
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r3, r0
+ bge _080841CA
+ adds r1, r0, 0
+ lsls r0, r6, 16
+ asrs r0, 16
+ subs r1, r0
+ cmp r3, r1
+ blt _080841CA
+ subs r0, r2, r5
+ lsls r0, 24
+ lsrs r0, 24
+ b _080841CC
+_080841CA:
+ movs r0, 0
+_080841CC:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTrainerInRangeWest
+
+ thumb_func_start IsTrainerInRangeEast
+IsTrainerInRangeEast: @ 80841D4
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r5, r2, 16
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ lsls r3, 16
+ asrs r3, 16
+ cmp r0, r3
+ bne _0808420E
+ lsls r0, r5, 16
+ asrs r3, r0, 16
+ ldrh r2, [r4, 0x10]
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ cmp r3, r0
+ ble _0808420E
+ adds r1, r0, 0
+ lsls r0, r6, 16
+ asrs r0, 16
+ adds r1, r0
+ cmp r3, r1
+ bgt _0808420E
+ subs r0, r5, r2
+ lsls r0, 24
+ lsrs r0, 24
+ b _08084210
+_0808420E:
+ movs r0, 0
+_08084210:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end IsTrainerInRangeEast
+
+ thumb_func_start CheckPathBetweenTrainerAndPlayer
+CheckPathBetweenTrainerAndPlayer: @ 8084218
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r2, 24
+ lsrs r7, r2, 24
+ cmp r1, 0
+ beq _080842B2
+ ldrh r1, [r6, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r6, 0x12]
+ mov r1, sp
+ adds r1, 0x2
+ strh r0, [r1]
+ movs r4, 0
+ mov r8, r1
+ mov r5, r9
+ subs r5, 0x1
+ cmp r4, r5
+ bgt _08084284
+_0808424C:
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r3, r8
+ movs r0, 0
+ ldrsh r2, [r3, r0]
+ adds r0, r6, 0
+ adds r3, r7, 0
+ bl sub_8060024
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _08084270
+ movs r0, 0x1
+ ands r1, r0
+ cmp r1, 0
+ bne _080842B2
+_08084270:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r7, 0
+ mov r1, sp
+ mov r2, r8
+ bl MoveCoords
+ cmp r4, r5
+ ble _0808424C
+_08084284:
+ ldrb r4, [r6, 0x19]
+ lsls r5, r4, 28
+ lsrs r5, 28
+ lsrs r4, 4
+ movs r0, 0
+ strb r0, [r6, 0x19]
+ mov r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r3, r8
+ movs r0, 0
+ ldrsh r2, [r3, r0]
+ adds r0, r6, 0
+ adds r3, r7, 0
+ bl npc_block_way
+ lsls r0, 24
+ lsrs r1, r0, 24
+ lsls r4, 4
+ orrs r5, r4
+ strb r5, [r6, 0x19]
+ cmp r1, 0x4
+ beq _080842B6
+_080842B2:
+ movs r0, 0
+ b _080842B8
+_080842B6:
+ mov r0, r9
+_080842B8:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckPathBetweenTrainerAndPlayer
+
+ thumb_func_start sub_80842C8
+sub_80842C8: @ 80842C8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r4, r1, 24
+ lsrs r4, 24
+ ldr r0, _080842F4
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080842F8
+ adds r1, r0
+ lsrs r0, r5, 16
+ strh r0, [r1, 0xA]
+ strh r5, [r1, 0xC]
+ strh r4, [r1, 0xE]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080842F4: .4byte sub_808433C
+_080842F8: .4byte gTasks
+ thumb_func_end sub_80842C8
+
+ thumb_func_start sub_80842FC
+sub_80842FC: @ 80842FC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r5, _08084334
+ adds r0, r5, 0
+ bl FindTaskIdByFunc
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl SetTaskFuncWithFollowupFunc
+ ldr r1, _08084338
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x1
+ strh r1, [r0, 0x8]
+ adds r0, r4, 0
+ bl _call_via_r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08084334: .4byte sub_808433C
+_08084338: .4byte gTasks
+ thumb_func_end sub_80842FC
+
+ thumb_func_start sub_808433C
+sub_808433C: @ 808433C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _08084368
+ adds r4, r0, r1
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ lsls r5, r0, 16
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ orrs r5, r0
+ ldrb r0, [r5]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0808436C
+ adds r0, r6, 0
+ bl SwitchTaskToFollowupFunc
+ b _08084388
+ .align 2, 0
+_08084368: .4byte gTasks
+_0808436C:
+ ldr r7, _08084390
+_0808436E:
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r0, 2
+ adds r0, r7
+ ldr r3, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl _call_via_r3
+ lsls r0, 24
+ cmp r0, 0
+ bne _0808436E
+_08084388:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08084390: .4byte gUnknown_0839B498
+ thumb_func_end sub_808433C
+
+ thumb_func_start sub_8084394
+sub_8084394: @ 8084394
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_8084394
+
+ thumb_func_start sub_8084398
+sub_8084398: @ 8084398
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ ldr r1, _080843D8
+ adds r2, r1, 0x4
+ adds r3, r1, 0
+ adds r3, 0x8
+ adds r0, r4, 0
+ bl FieldObjectGetLocalIdAndMap
+ movs r0, 0
+ bl FieldEffectStart
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080843D8: .4byte gUnknown_0202FF84
+ thumb_func_end sub_8084398
+
+ thumb_func_start sub_80843DC
+sub_80843DC: @ 80843DC
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ adds r5, r2, 0
+ movs r0, 0
+ bl FieldEffectActiveListContains
+ lsls r0, 24
+ cmp r0, 0
+ beq _080843F2
+ movs r0, 0
+ b _08084414
+_080843F2:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ ldrb r0, [r5, 0x6]
+ subs r0, 0x39
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08084408
+ movs r0, 0x6
+ strh r0, [r4, 0x8]
+_08084408:
+ ldrb r0, [r5, 0x6]
+ cmp r0, 0x3F
+ bne _08084412
+ movs r0, 0x8
+ strh r0, [r4, 0x8]
+_08084412:
+ movs r0, 0x1
+_08084414:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80843DC
+
+ thumb_func_start sub_808441C
+sub_808441C: @ 808441C
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _0808443A
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0808446E
+_0808443A:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _08084460
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetGoSpeed0AnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0xE]
+ subs r0, 0x1
+ strh r0, [r5, 0xE]
+ b _0808446E
+_08084460:
+ adds r0, r4, 0
+ movs r1, 0x3E
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_0808446E:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_808441C
+
+ thumb_func_start sub_8084478
+sub_8084478: @ 8084478
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ adds r5, r2, 0
+ adds r0, r5, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084496
+ adds r0, r5, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084524
+_08084496:
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl npc_set_running_behaviour_etc
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl sub_805C774
+ adds r0, r5, 0
+ bl sub_805C754
+ ldr r0, _0808452C
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08084530
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _080844EE
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084524
+_080844EE:
+ bl sub_80597E8
+ ldr r0, _0808452C
+ ldrb r0, [r0, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08084530
+ adds r4, r0
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetFaceDirectionAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+_08084524:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808452C: .4byte gPlayerAvatar
+_08084530: .4byte gMapObjects
+ thumb_func_end sub_8084478
+
+ thumb_func_start sub_8084534
+sub_8084534: @ 8084534
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _08084570
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08084574
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084560
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084566
+_08084560:
+ adds r0, r5, 0
+ bl SwitchTaskToFollowupFunc
+_08084566:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08084570: .4byte gPlayerAvatar
+_08084574: .4byte gMapObjects
+ thumb_func_end sub_8084534
+
+ thumb_func_start sub_8084578
+sub_8084578: @ 8084578
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084596
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080845A4
+_08084596:
+ adds r0, r4, 0
+ movs r1, 0x59
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_080845A4:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8084578
+
+ thumb_func_start sub_80845AC
+sub_80845AC: @ 80845AC
+ push {r4,lr}
+ adds r4, r1, 0
+ adds r0, r2, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080845C0
+ movs r0, 0x3
+ strh r0, [r4, 0x8]
+_080845C0:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80845AC
+
+ thumb_func_start sub_80845C8
+sub_80845C8: @ 80845C8
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _080845E6
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _080845F4
+_080845E6:
+ adds r0, r4, 0
+ movs r1, 0x3E
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_080845F4:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80845C8
+
+ thumb_func_start sub_80845FC
+sub_80845FC: @ 80845FC
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08084642
+ ldr r2, _0808464C
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ str r0, [r2]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ str r0, [r2, 0x4]
+ ldr r3, _08084650
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ adds r0, 0x43
+ ldrb r0, [r0]
+ subs r0, 0x1
+ str r0, [r2, 0x8]
+ movs r0, 0x2
+ str r0, [r2, 0xC]
+ movs r0, 0x31
+ bl FieldEffectStart
+ strh r0, [r5, 0x10]
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_08084642:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0808464C: .4byte gUnknown_0202FF84
+_08084650: .4byte gSprites
+ thumb_func_end sub_80845FC
+
+ thumb_func_start sub_8084654
+sub_8084654: @ 8084654
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r4, r2, 0
+ ldr r2, _080846C4
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x2B
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ bne _080846BC
+ ldrb r1, [r4, 0x3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x3]
+ ldrb r0, [r4]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4]
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r2, [r0, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x8
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_806084C
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_080846BC:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080846C4: .4byte gSprites
+ thumb_func_end sub_8084654
+
+ thumb_func_start sub_80846C8
+sub_80846C8: @ 80846C8
+ push {r4,lr}
+ adds r4, r1, 0
+ movs r0, 0x31
+ bl FieldEffectActiveListContains
+ lsls r0, 24
+ cmp r0, 0
+ bne _080846DC
+ movs r0, 0x3
+ strh r0, [r4, 0x8]
+_080846DC:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80846C8
+
+ thumb_func_start sub_80846E4
+sub_80846E4: @ 80846E4
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08084778
+ adds r4, r0, r1
+ adds r0, r4, 0
+ adds r0, 0xA
+ mov r1, sp
+ bl LoadWordFromTwoHalfwords
+ movs r1, 0x16
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _08084716
+ ldr r0, [sp]
+ bl FieldObjectClearAnim
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+_08084716:
+ ldr r1, _0808477C
+ movs r2, 0x8
+ ldrsh r0, [r4, r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [sp]
+ ldr r3, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl _call_via_r3
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x3
+ bne _08084780
+ movs r0, 0x31
+ bl FieldEffectActiveListContains
+ lsls r0, 24
+ cmp r0, 0
+ bne _08084780
+ ldr r4, [sp]
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl npc_set_running_behaviour_etc
+ ldr r4, [sp]
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl npc_running_behaviour_by_direction
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805C774
+ adds r0, r5, 0
+ bl DestroyTask
+ b _0808478A
+ .align 2, 0
+_08084778: .4byte gTasks
+_0808477C: .4byte gUnknown_0839B4C8
+_08084780:
+ ldr r2, [sp]
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+_0808478A:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80846E4
+
+ thumb_func_start sub_8084794
+sub_8084794: @ 8084794
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080847C0
+ movs r1, 0
+ bl CreateTask
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _080847C4
+ adds r0, r1
+ adds r0, 0x2
+ adds r1, r4, 0
+ bl StoreWordInTwoHalfwords
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080847C0: .4byte sub_80846E4
+_080847C4: .4byte gUnknown_03004B28
+ thumb_func_end sub_8084794
+
+ thumb_func_start sub_80847C8
+sub_80847C8: @ 80847C8
+ push {lr}
+ ldr r0, _080847D4
+ bl sub_80842FC
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080847D4: .4byte sub_80847D8
+ thumb_func_end sub_80847C8
+
+ thumb_func_start sub_80847D8
+sub_80847D8: @ 80847D8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+ bl EnableBothScriptContexts
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80847D8
+
+ .align 2, 0 @ Don't pad with nop.