summaryrefslogtreecommitdiff
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
parent4f94633db0169f54019c2e2ad0a8d48b2232176f (diff)
split out mori_debug_menu.s and trainer_see.s
-rw-r--r--Makefile2
-rw-r--r--asm/mori_debug_menu.s322
-rw-r--r--asm/rom_807C828.s1423
-rw-r--r--asm/trainer_see.s1119
-rw-r--r--ld_script.txt2
5 files changed, 1444 insertions, 1424 deletions
diff --git a/Makefile b/Makefile
index 44ebd3433..e765ba20e 100644
--- a/Makefile
+++ b/Makefile
@@ -57,7 +57,7 @@ asm/rom_806936C.o asm/clear_save_data_menu.o asm/rom_8148B8C.o \
asm/mystery_event_menu.o asm/save_failed_screen.o asm/rom_81473B8.o \
asm/berry_tag_screen.o asm/lottery_corner.o \
asm/battle_ai.o asm/trader.o asm/trainer_card.o asm/save_menu_util.o \
-asm/rom_8094928.o
+asm/rom_8094928.o asm/mori_debug_menu.o asm/trainer_see.o
DATA_ASM_OBJS := data/data2.o data/graphics.o data/sound_data.o \
data/event_scripts.o data/battle_anim_scripts.o \
diff --git a/asm/mori_debug_menu.s b/asm/mori_debug_menu.s
new file mode 100644
index 000000000..fedafd198
--- /dev/null
+++ b/asm/mori_debug_menu.s
@@ -0,0 +1,322 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8083D4C
+sub_8083D4C: @ 8083D4C
+ push {lr}
+ ldr r0, _08083D60
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08083D64
+ movs r0, 0
+ b _08083D6A
+ .align 2, 0
+_08083D60: .4byte gMain
+_08083D64:
+ bl sub_8071C20
+ movs r0, 0x1
+_08083D6A:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8083D4C
+
+ thumb_func_start MoriDebugMenu_SearchChild
+MoriDebugMenu_SearchChild: @ 8083D70
+ push {r4-r6,lr}
+ sub sp, 0x34
+ ldr r0, _08083DE4
+ movs r1, 0xB
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r4, 0
+ bl sub_8041870
+ adds r5, r0, 0
+ lsls r5, 16
+ lsrs r5, 16
+ movs r6, 0xB
+ adds r1, r4, 0
+ muls r1, r6
+ ldr r4, _08083DE8
+ adds r1, r4
+ mov r0, sp
+ bl StringCopy
+ ldr r1, _08083DEC
+ mov r0, sp
+ bl StringAppend
+ adds r1, r5, 0
+ muls r1, r6
+ adds r1, r4
+ mov r0, sp
+ bl StringAppend
+ ldr r1, _08083DF0
+ mov r0, sp
+ bl StringAppend
+ bl MenuZeroFillScreen
+ movs r0, 0
+ movs r1, 0xE
+ movs r2, 0x1E
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ mov r0, sp
+ movs r1, 0x1
+ movs r2, 0xF
+ bl MenuPrint
+ ldr r1, _08083DF4
+ ldr r0, _08083DF8
+ str r0, [r1]
+ movs r0, 0
+ add sp, 0x34
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083DE4: .4byte gPlayerParty
+_08083DE8: .4byte gSpeciesNames
+_08083DEC: .4byte gUnknown_0839B24D
+_08083DF0: .4byte gUnknown_0839B255
+_08083DF4: .4byte gCallback_03004AE8
+_08083DF8: .4byte sub_8083D4C
+ thumb_func_end MoriDebugMenu_SearchChild
+
+ thumb_func_start MoriDebugMenu_Egg
+MoriDebugMenu_Egg: @ 8083DFC
+ push {lr}
+ ldr r0, _08083E24
+ bl daycare_count_pokemon
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _08083E1A
+ bl daycare_relationship_score_from_savegame
+ lsls r0, 24
+ cmp r0, 0
+ beq _08083E1A
+ bl sub_8041940
+_08083E1A:
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083E24: .4byte gSaveBlock1 + 0x2F9C
+ thumb_func_end MoriDebugMenu_Egg
+
+ thumb_func_start MoriDebugMenu_MaleEgg
+MoriDebugMenu_MaleEgg: @ 8083E28
+ push {lr}
+ ldr r0, _08083E50
+ bl daycare_count_pokemon
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _08083E46
+ bl daycare_relationship_score_from_savegame
+ lsls r0, 24
+ cmp r0, 0
+ beq _08083E46
+ bl sub_8041950
+_08083E46:
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083E50: .4byte gSaveBlock1 + 0x2F9C
+ thumb_func_end MoriDebugMenu_MaleEgg
+
+ thumb_func_start MoriDebugMenu_1000Steps
+MoriDebugMenu_1000Steps: @ 8083E54
+ push {lr}
+ movs r0, 0xFA
+ lsls r0, 2
+ bl sub_8041790
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end MoriDebugMenu_1000Steps
+
+ thumb_func_start MoriDebugMenu_10000Steps
+MoriDebugMenu_10000Steps: @ 8083E68
+ push {lr}
+ ldr r0, _08083E7C
+ bl sub_8041790
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083E7C: .4byte 0x00002710
+ thumb_func_end MoriDebugMenu_10000Steps
+
+ thumb_func_start MoriDebugMenu_MoveTutor
+MoriDebugMenu_MoveTutor: @ 8083E80
+ push {lr}
+ bl sub_8132670
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end MoriDebugMenu_MoveTutor
+
+ thumb_func_start MoriDebugMenu_BreedEgg
+MoriDebugMenu_BreedEgg: @ 8083E90
+ push {r4-r6,lr}
+ sub sp, 0x4
+ movs r5, 0
+ movs r6, 0
+_08083E98:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _08083EE0
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x2D
+ bl GetMonData
+ cmp r0, 0
+ beq _08083EBC
+ mov r0, sp
+ strb r6, [r0]
+ adds r0, r4, 0
+ movs r1, 0x20
+ mov r2, sp
+ bl SetMonData
+_08083EBC:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x5
+ bls _08083E98
+ ldr r0, _08083EE4
+ ldr r1, _08083EE8
+ adds r0, r1
+ movs r1, 0xFD
+ strb r1, [r0]
+ bl sub_8071C20
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083EE0: .4byte gPlayerParty
+_08083EE4: .4byte gSaveBlock1
+_08083EE8: .4byte 0x000030b6
+ thumb_func_end MoriDebugMenu_BreedEgg
+
+ thumb_func_start MoriDebugMenu_LongName
+MoriDebugMenu_LongName: @ 8083EEC
+ push {lr}
+ ldr r0, _08083F04
+ ldr r2, _08083F08
+ movs r1, 0x2
+ bl SetMonData
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083F04: .4byte gPlayerParty
+_08083F08: .4byte gUnknown_0839B257
+ thumb_func_end MoriDebugMenu_LongName
+
+ thumb_func_start MoriDebugMenu_PokeblockCase
+MoriDebugMenu_PokeblockCase: @ 8083F0C
+ push {r4,lr}
+ movs r4, 0
+_08083F10:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_810CA6C
+ adds r4, 0x1
+ cmp r4, 0x27
+ ble _08083F10
+ bl sub_8071C20
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end MoriDebugMenu_PokeblockCase
+
+ thumb_func_start MoriDebugMenuProcessInput
+MoriDebugMenuProcessInput: @ 8083F2C
+ push {lr}
+ bl ProcessMenuInput
+ lsls r0, 24
+ asrs r1, r0, 24
+ movs r0, 0x2
+ negs r0, r0
+ cmp r1, r0
+ beq _08083F52
+ adds r0, 0x1
+ cmp r1, r0
+ beq _08083F60
+ ldr r2, _08083F58
+ ldr r0, _08083F5C
+ lsls r1, 3
+ adds r0, 0x4
+ adds r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+_08083F52:
+ movs r0, 0
+ b _08083F66
+ .align 2, 0
+_08083F58: .4byte gCallback_03004AE8
+_08083F5C: .4byte gMoriDebugMenuActions
+_08083F60:
+ bl sub_8071C20
+ movs r0, 0x1
+_08083F66:
+ pop {r1}
+ bx r1
+ thumb_func_end MoriDebugMenuProcessInput
+
+ thumb_func_start InitMoriDebugMenu
+InitMoriDebugMenu: @ 8083F6C
+ push {lr}
+ sub sp, 0x8
+ bl MenuZeroFillScreen
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0xA
+ movs r3, 0x13
+ bl MenuDrawTextWindow
+ ldr r3, _08083FB0
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0x9
+ bl PrintMenuItems
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x9
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0x1
+ movs r2, 0x1
+ movs r3, 0x9
+ bl InitMenu
+ ldr r1, _08083FB4
+ ldr r0, _08083FB8
+ str r0, [r1]
+ movs r0, 0
+ add sp, 0x8
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08083FB0: .4byte gMoriDebugMenuActions
+_08083FB4: .4byte gCallback_03004AE8
+_08083FB8: .4byte MoriDebugMenuProcessInput
+ thumb_func_end InitMoriDebugMenu
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom_807C828.s b/asm/rom_807C828.s
index cedf8a16a..23ffed2a0 100644
--- a/asm/rom_807C828.s
+++ b/asm/rom_807C828.s
@@ -15271,1427 +15271,4 @@ _08083D44: .4byte word_3002910
_08083D48: .4byte gUnknown_0839B22C
thumb_func_end unref_sub_8083CF0
- thumb_func_start sub_8083D4C
-sub_8083D4C: @ 8083D4C
- push {lr}
- ldr r0, _08083D60
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08083D64
- movs r0, 0
- b _08083D6A
- .align 2, 0
-_08083D60: .4byte gMain
-_08083D64:
- bl sub_8071C20
- movs r0, 0x1
-_08083D6A:
- pop {r1}
- bx r1
- thumb_func_end sub_8083D4C
-
- thumb_func_start MoriDebugMenu_SearchChild
-MoriDebugMenu_SearchChild: @ 8083D70
- push {r4-r6,lr}
- sub sp, 0x34
- ldr r0, _08083DE4
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_8041870
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- movs r6, 0xB
- adds r1, r4, 0
- muls r1, r6
- ldr r4, _08083DE8
- adds r1, r4
- mov r0, sp
- bl StringCopy
- ldr r1, _08083DEC
- mov r0, sp
- bl StringAppend
- adds r1, r5, 0
- muls r1, r6
- adds r1, r4
- mov r0, sp
- bl StringAppend
- ldr r1, _08083DF0
- mov r0, sp
- bl StringAppend
- bl MenuZeroFillScreen
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1E
- movs r3, 0x13
- bl MenuDrawTextWindow
- mov r0, sp
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _08083DF4
- ldr r0, _08083DF8
- str r0, [r1]
- movs r0, 0
- add sp, 0x34
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08083DE4: .4byte gPlayerParty
-_08083DE8: .4byte gSpeciesNames
-_08083DEC: .4byte gUnknown_0839B24D
-_08083DF0: .4byte gUnknown_0839B255
-_08083DF4: .4byte gCallback_03004AE8
-_08083DF8: .4byte sub_8083D4C
- thumb_func_end MoriDebugMenu_SearchChild
-
- thumb_func_start MoriDebugMenu_Egg
-MoriDebugMenu_Egg: @ 8083DFC
- push {lr}
- ldr r0, _08083E24
- bl daycare_count_pokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08083E1A
- bl daycare_relationship_score_from_savegame
- lsls r0, 24
- cmp r0, 0
- beq _08083E1A
- bl sub_8041940
-_08083E1A:
- bl sub_8071C20
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_08083E24: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end MoriDebugMenu_Egg
-
- thumb_func_start MoriDebugMenu_MaleEgg
-MoriDebugMenu_MaleEgg: @ 8083E28
- push {lr}
- ldr r0, _08083E50
- bl daycare_count_pokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08083E46
- bl daycare_relationship_score_from_savegame
- lsls r0, 24
- cmp r0, 0
- beq _08083E46
- bl sub_8041950
-_08083E46:
- bl sub_8071C20
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_08083E50: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end MoriDebugMenu_MaleEgg
-
- thumb_func_start MoriDebugMenu_1000Steps
-MoriDebugMenu_1000Steps: @ 8083E54
- push {lr}
- movs r0, 0xFA
- lsls r0, 2
- bl sub_8041790
- bl sub_8071C20
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end MoriDebugMenu_1000Steps
-
- thumb_func_start MoriDebugMenu_10000Steps
-MoriDebugMenu_10000Steps: @ 8083E68
- push {lr}
- ldr r0, _08083E7C
- bl sub_8041790
- bl sub_8071C20
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_08083E7C: .4byte 0x00002710
- thumb_func_end MoriDebugMenu_10000Steps
-
- thumb_func_start MoriDebugMenu_MoveTutor
-MoriDebugMenu_MoveTutor: @ 8083E80
- push {lr}
- bl sub_8132670
- bl sub_8071C20
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end MoriDebugMenu_MoveTutor
-
- thumb_func_start MoriDebugMenu_BreedEgg
-MoriDebugMenu_BreedEgg: @ 8083E90
- push {r4-r6,lr}
- sub sp, 0x4
- movs r5, 0
- movs r6, 0
-_08083E98:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08083EE0
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _08083EBC
- mov r0, sp
- strb r6, [r0]
- adds r0, r4, 0
- movs r1, 0x20
- mov r2, sp
- bl SetMonData
-_08083EBC:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08083E98
- ldr r0, _08083EE4
- ldr r1, _08083EE8
- adds r0, r1
- movs r1, 0xFD
- strb r1, [r0]
- bl sub_8071C20
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08083EE0: .4byte gPlayerParty
-_08083EE4: .4byte gSaveBlock1
-_08083EE8: .4byte 0x000030b6
- thumb_func_end MoriDebugMenu_BreedEgg
-
- thumb_func_start MoriDebugMenu_LongName
-MoriDebugMenu_LongName: @ 8083EEC
- push {lr}
- ldr r0, _08083F04
- ldr r2, _08083F08
- movs r1, 0x2
- bl SetMonData
- bl sub_8071C20
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_08083F04: .4byte gPlayerParty
-_08083F08: .4byte gUnknown_0839B257
- thumb_func_end MoriDebugMenu_LongName
-
- thumb_func_start MoriDebugMenu_PokeblockCase
-MoriDebugMenu_PokeblockCase: @ 8083F0C
- push {r4,lr}
- movs r4, 0
-_08083F10:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_810CA6C
- adds r4, 0x1
- cmp r4, 0x27
- ble _08083F10
- bl sub_8071C20
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MoriDebugMenu_PokeblockCase
-
- thumb_func_start MoriDebugMenuProcessInput
-MoriDebugMenuProcessInput: @ 8083F2C
- push {lr}
- bl ProcessMenuInput
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _08083F52
- adds r0, 0x1
- cmp r1, r0
- beq _08083F60
- ldr r2, _08083F58
- ldr r0, _08083F5C
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2]
-_08083F52:
- movs r0, 0
- b _08083F66
- .align 2, 0
-_08083F58: .4byte gCallback_03004AE8
-_08083F5C: .4byte gMoriDebugMenuActions
-_08083F60:
- bl sub_8071C20
- movs r0, 0x1
-_08083F66:
- pop {r1}
- bx r1
- thumb_func_end MoriDebugMenuProcessInput
-
- thumb_func_start InitMoriDebugMenu
-InitMoriDebugMenu: @ 8083F6C
- push {lr}
- sub sp, 0x8
- bl MenuZeroFillScreen
- movs r0, 0
- movs r1, 0
- movs r2, 0xA
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r3, _08083FB0
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x9
- bl PrintMenuItems
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x9
- bl InitMenu
- ldr r1, _08083FB4
- ldr r0, _08083FB8
- str r0, [r1]
- movs r0, 0
- add sp, 0x8
- pop {r1}
- bx r1
- .align 2, 0
-_08083FB0: .4byte gMoriDebugMenuActions
-_08083FB4: .4byte gCallback_03004AE8
-_08083FB8: .4byte MoriDebugMenuProcessInput
- thumb_func_end InitMoriDebugMenu
-
- 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.
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.
diff --git a/ld_script.txt b/ld_script.txt
index 9c5b190c2..cda134bbb 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -80,6 +80,8 @@ SECTIONS {
asm/rom5.o(.text);
asm/title_screen.o(.text);
asm/rom_807C828.o(.text);
+ asm/mori_debug_menu.o(.text);
+ asm/trainer_see.o(.text);
asm/fldeff_emotion.o(.text);
asm/wild_encounter.o(.text);
asm/field_effect.o(.text);