summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules3
-rw-r--r--asm/field_map_obj.s3880
-rw-r--r--include/field_map_obj.h19
-rw-r--r--ld_script.txt2
-rw-r--r--src/field_map_obj.c1403
-rw-r--r--src/field_player_avatar.c4
m---------tools/agbcc0
8 files changed, 1415 insertions, 3897 deletions
diff --git a/.gitignore b/.gitignore
index 78af8c737..13752b437 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,7 +16,6 @@
*.bat
sound/**/*.bin
src/*.s
-tools/agbcc
ld_script_ruby.txt
ld_script_sapphire.txt
*.map
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000..7dbd4ef6d
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "tools/agbcc"]
+ path = tools/agbcc
+ url = git@github.com:pret/agbcc
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index d54b57fed..3db00279d 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -6,3686 +6,6 @@
.text
- thumb_func_start sub_805C930
-sub_805C930: @ 805C930
- push {r4-r6,lr}
- adds r6, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805C964
- ldr r5, _0805C960 @ =gUnknown_0837520C
- bl Random
- movs r4, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r5
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r6, 0
- bl sub_8064820
- strh r4, [r6, 0x30]
- movs r0, 0x1
- b _0805C966
- .align 2, 0
-_0805C960: .4byte gUnknown_0837520C
-_0805C964:
- movs r0, 0
-_0805C966:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805C930
-
- thumb_func_start sub_805C96C
-sub_805C96C: @ 805C96C
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805C980
- movs r0, 0
- b _0805C986
-_0805C980:
- movs r0, 0x4
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805C986:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805C96C
-
- thumb_func_start sub_805C98C
-sub_805C98C: @ 805C98C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0805C9D4 @ =gUnknown_08375240
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r4, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x5
- strh r0, [r6, 0x30]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_805FF20
- lsls r0, 24
- cmp r0, 0
- beq _0805C9CA
- movs r0, 0x1
- strh r0, [r6, 0x30]
-_0805C9CA:
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805C9D4: .4byte gUnknown_08375240
- thumb_func_end sub_805C98C
-
- thumb_func_start sub_805C9D8
-sub_805C9D8: @ 805C9D8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x6
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805C9D8
-
- thumb_func_start sub_805CA08
-sub_805CA08: @ 805CA08
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805CA26
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805CA26:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805CA08
-
- thumb_func_start FieldObjectIsTrainerAndCloseToPlayer
-FieldObjectIsTrainerAndCloseToPlayer: @ 805CA30
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r0, 0x80
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0805CA9C
- ldrb r0, [r5, 0x7]
- cmp r0, 0x1
- beq _0805CA4C
- cmp r0, 0x3
- bne _0805CA9C
-_0805CA4C:
- mov r7, sp
- adds r7, 0x2
- mov r0, sp
- adds r1, r7, 0
- bl PlayerGetDestCoords
- ldrh r2, [r5, 0x10]
- ldrh r4, [r5, 0x12]
- ldrb r1, [r5, 0x1D]
- subs r3, r2, r1
- subs r0, r4, r1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r2, r1, r2
- lsls r2, 16
- lsrs r2, 16
- adds r1, r4
- lsls r1, 16
- lsrs r6, r1, 16
- mov r0, sp
- lsls r3, 16
- asrs r3, 16
- movs r1, 0
- ldrsh r4, [r0, r1]
- cmp r3, r4
- bgt _0805CA9C
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, r4
- blt _0805CA9C
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0
- ldrsh r1, [r7, r2]
- cmp r0, r1
- bgt _0805CA9C
- lsls r0, r6, 16
- asrs r0, 16
- cmp r0, r1
- bge _0805CAA0
-_0805CA9C:
- movs r0, 0
- b _0805CAA2
-_0805CAA0:
- movs r0, 0x1
-_0805CAA2:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectIsTrainerAndCloseToPlayer
-
- thumb_func_start sub_805CAAC
-sub_805CAAC: @ 805CAAC
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r0, r1, 16
- lsls r2, 16
- lsls r3, 16
- cmp r2, r3
- ble _0805CACA
- movs r2, 0x4
- lsls r0, r4, 16
- cmp r0, 0
- bge _0805CAD4
- movs r2, 0x3
- b _0805CAD4
-_0805CACA:
- movs r2, 0x1
- lsls r0, 16
- cmp r0, 0
- bge _0805CAD4
- movs r2, 0x2
-_0805CAD4:
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805CAAC
-
- thumb_func_start sub_805CADC
-sub_805CADC: @ 805CADC
- push {lr}
- movs r0, 0x1
- lsls r1, 16
- cmp r1, 0
- bge _0805CAE8
- movs r0, 0x2
-_0805CAE8:
- pop {r1}
- bx r1
- thumb_func_end sub_805CADC
-
- thumb_func_start sub_805CAEC
-sub_805CAEC: @ 805CAEC
- push {lr}
- movs r1, 0x4
- lsls r0, 16
- cmp r0, 0
- bge _0805CAF8
- movs r1, 0x3
-_0805CAF8:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end sub_805CAEC
-
- thumb_func_start sub_805CB00
-sub_805CB00: @ 805CB00
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB3C
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CB56
- b _0805CB54
-_0805CB3C:
- cmp r0, 0x4
- bne _0805CB56
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB56
-_0805CB54:
- movs r0, 0x2
-_0805CB56:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CB00
-
- thumb_func_start sub_805CB5C
-sub_805CB5C: @ 805CB5C
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB98
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CBB2
- b _0805CBB0
-_0805CB98:
- cmp r0, 0x3
- bne _0805CBB2
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CBB2
-_0805CBB0:
- movs r0, 0x2
-_0805CBB2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CB5C
-
- thumb_func_start sub_805CBB8
-sub_805CBB8: @ 805CBB8
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CBF4
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CC0E
- b _0805CC0C
-_0805CBF4:
- cmp r0, 0x4
- bne _0805CC0E
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC0E
-_0805CC0C:
- movs r0, 0x1
-_0805CC0E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CBB8
-
- thumb_func_start sub_805CC14
-sub_805CC14: @ 805CC14
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC50
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CC6A
- b _0805CC68
-_0805CC50:
- cmp r0, 0x3
- bne _0805CC6A
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC6A
-_0805CC68:
- movs r0, 0x1
-_0805CC6A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CC14
-
- thumb_func_start sub_805CC70
-sub_805CC70: @ 805CC70
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CCA6
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
-_0805CCA6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CC70
-
- thumb_func_start sub_805CCAC
-sub_805CCAC: @ 805CCAC
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CCE2
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
-_0805CCE2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CCAC
-
- thumb_func_start sub_805CCE8
-sub_805CCE8: @ 805CCE8
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CD1E
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
-_0805CD1E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CCE8
-
- thumb_func_start sub_805CD24
-sub_805CD24: @ 805CD24
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CD5A
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
-_0805CD5A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CD24
-
- thumb_func_start sub_805CD60
-sub_805CD60: @ 805CD60
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- bne _0805CD78
- movs r0, 0
- b _0805CDDC
-_0805CD78:
- mov r5, sp
- adds r5, 0x2
- mov r0, sp
- adds r1, r5, 0
- bl PlayerGetDestCoords
- mov r2, sp
- mov r0, sp
- ldrh r0, [r0]
- ldrh r1, [r4, 0x10]
- subs r0, r1
- strh r0, [r2]
- ldrh r0, [r5]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r5]
- mov r0, sp
- ldrh r3, [r5]
- ldrh r2, [r0]
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _0805CDAC
- negs r0, r0
- lsls r0, 16
- lsrs r2, r0, 16
-_0805CDAC:
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0
- bge _0805CDBA
- negs r0, r0
- lsls r0, 16
- lsrs r3, r0, 16
-_0805CDBA:
- ldr r0, _0805CDE4 @ =gUnknown_08375244
- lsls r4, r6, 2
- adds r4, r0
- mov r0, sp
- movs r6, 0
- ldrsh r0, [r0, r6]
- movs r6, 0
- ldrsh r1, [r5, r6]
- lsls r2, 16
- asrs r2, 16
- lsls r3, 16
- asrs r3, 16
- ldr r4, [r4]
- bl _call_via_r4
- lsls r0, 24
- lsrs r0, 24
-_0805CDDC:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CDE4: .4byte gUnknown_08375244
- thumb_func_end sub_805CD60
-
- thumb_func_start sub_805CDE8
-sub_805CDE8: @ 805CDE8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805CE04 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805CE08 @ =sub_805CE0C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805CE04: .4byte gMapObjects
-_0805CE08: .4byte sub_805CE0C
- thumb_func_end sub_805CDE8
-
- thumb_func_start sub_805CE0C
-sub_805CE0C: @ 805CE0C
- push {r4,lr}
- ldr r3, _0805CE28 @ =gUnknown_08375270
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CE28: .4byte gUnknown_08375270
- thumb_func_end sub_805CE0C
-
- thumb_func_start sub_805CE2C
-sub_805CE2C: @ 805CE2C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805CE2C
-
- thumb_func_start sub_805CE40
-sub_805CE40: @ 805CE40
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805CE40
-
- thumb_func_start sub_805CE6C
-sub_805CE6C: @ 805CE6C
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805CEA2
- ldr r4, _0805CEAC @ =gUnknown_0837520C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805CEA2:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CEAC: .4byte gUnknown_0837520C
- thumb_func_end sub_805CE6C
-
- thumb_func_start sub_805CEB0
-sub_805CEB0: @ 805CEB0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805CECE
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805CED6
-_0805CECE:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805CED8
-_0805CED6:
- movs r0, 0
-_0805CED8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805CEB0
-
- thumb_func_start sub_805CEE0
-sub_805CEE0: @ 805CEE0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805CF24 @ =gUnknown_08375240
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805CF10
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805CF10:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CF24: .4byte gUnknown_08375240
- thumb_func_end sub_805CEE0
-
- thumb_func_start sub_805CF28
-sub_805CF28: @ 805CF28
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805CF44 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805CF48 @ =sub_805CF4C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805CF44: .4byte gMapObjects
-_0805CF48: .4byte sub_805CF4C
- thumb_func_end sub_805CF28
-
- thumb_func_start sub_805CF4C
-sub_805CF4C: @ 805CF4C
- push {r4,lr}
- ldr r3, _0805CF68 @ =gUnknown_08375284
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CF68: .4byte gUnknown_08375284
- thumb_func_end sub_805CF4C
-
- thumb_func_start sub_805CF6C
-sub_805CF6C: @ 805CF6C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805CF6C
-
- thumb_func_start sub_805CF80
-sub_805CF80: @ 805CF80
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805CF80
-
- thumb_func_start sub_805CFAC
-sub_805CFAC: @ 805CFAC
- push {r4-r6,lr}
- adds r6, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805CFE0
- ldr r5, _0805CFDC @ =gUnknown_0837520C
- bl Random
- movs r4, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r5
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r6, 0
- bl sub_8064820
- strh r4, [r6, 0x30]
- movs r0, 0x1
- b _0805CFE2
- .align 2, 0
-_0805CFDC: .4byte gUnknown_0837520C
-_0805CFE0:
- movs r0, 0
-_0805CFE2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805CFAC
-
- thumb_func_start sub_805CFE8
-sub_805CFE8: @ 805CFE8
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805CFFC
- movs r0, 0
- b _0805D002
-_0805CFFC:
- movs r0, 0x4
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805D002:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805CFE8
-
- thumb_func_start sub_805D008
-sub_805D008: @ 805D008
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0805D050 @ =gUnknown_083752A0
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- bl Random
- movs r7, 0x1
- adds r1, r7, 0
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r4, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x5
- strh r0, [r6, 0x30]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_805FF20
- lsls r0, 24
- cmp r0, 0
- beq _0805D046
- strh r7, [r6, 0x30]
-_0805D046:
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D050: .4byte gUnknown_083752A0
- thumb_func_end sub_805D008
-
- thumb_func_start sub_805D054
-sub_805D054: @ 805D054
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x6
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D054
-
- thumb_func_start sub_805D084
-sub_805D084: @ 805D084
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D0A2
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805D0A2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D084
-
- thumb_func_start sub_805D0AC
-sub_805D0AC: @ 805D0AC
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D0C8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D0CC @ =sub_805D0D0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D0C8: .4byte gMapObjects
-_0805D0CC: .4byte sub_805D0D0
- thumb_func_end sub_805D0AC
-
- thumb_func_start sub_805D0D0
-sub_805D0D0: @ 805D0D0
- push {r4,lr}
- ldr r3, _0805D0EC @ =gUnknown_083752A4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D0EC: .4byte gUnknown_083752A4
- thumb_func_end sub_805D0D0
-
- thumb_func_start sub_805D0F0
-sub_805D0F0: @ 805D0F0
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D0F0
-
- thumb_func_start sub_805D104
-sub_805D104: @ 805D104
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D104
-
- thumb_func_start sub_805D130
-sub_805D130: @ 805D130
- push {r4-r6,lr}
- adds r6, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D164
- ldr r5, _0805D160 @ =gUnknown_0837520C
- bl Random
- movs r4, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r5
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r6, 0
- bl sub_8064820
- strh r4, [r6, 0x30]
- movs r0, 0x1
- b _0805D166
- .align 2, 0
-_0805D160: .4byte gUnknown_0837520C
-_0805D164:
- movs r0, 0
-_0805D166:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805D130
-
- thumb_func_start sub_805D16C
-sub_805D16C: @ 805D16C
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D180
- movs r0, 0
- b _0805D186
-_0805D180:
- movs r0, 0x4
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805D186:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D16C
-
- thumb_func_start sub_805D18C
-sub_805D18C: @ 805D18C
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0805D1D4 @ =gUnknown_083752C0
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- bl Random
- movs r7, 0x1
- adds r1, r7, 0
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r4, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x5
- strh r0, [r6, 0x30]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_805FF20
- lsls r0, 24
- cmp r0, 0
- beq _0805D1CA
- strh r7, [r6, 0x30]
-_0805D1CA:
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D1D4: .4byte gUnknown_083752C0
- thumb_func_end sub_805D18C
-
- thumb_func_start sub_805D1D8
-sub_805D1D8: @ 805D1D8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x6
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D1D8
-
- thumb_func_start sub_805D208
-sub_805D208: @ 805D208
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D226
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805D226:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D208
-
- thumb_func_start sub_805D230
-sub_805D230: @ 805D230
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D24C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D250 @ =sub_805D254
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D24C: .4byte gMapObjects
-_0805D250: .4byte sub_805D254
- thumb_func_end sub_805D230
-
- thumb_func_start sub_805D254
-sub_805D254: @ 805D254
- push {r4,lr}
- ldr r3, _0805D270 @ =gUnknown_083752C4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D270: .4byte gUnknown_083752C4
- thumb_func_end sub_805D254
-
- thumb_func_start sub_805D274
-sub_805D274: @ 805D274
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl npc_reset
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x1
- strh r0, [r5, 0x30]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D274
-
- thumb_func_start sub_805D2A0
-sub_805D2A0: @ 805D2A0
- push {r4,lr}
- adds r4, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- bne _0805D2B2
- movs r0, 0
- b _0805D2B8
-_0805D2B2:
- movs r0, 0x2
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805D2B8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D2A0
-
- thumb_func_start sub_805D2C0
-sub_805D2C0: @ 805D2C0
- ldrb r2, [r0]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- movs r0, 0
- bx lr
- thumb_func_end sub_805D2C0
-
- thumb_func_start FieldObjectCB_BerryTree
-FieldObjectCB_BerryTree: @ 805D2D0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805D30C @ =gMapObjects
- adds r5, r0, r1
- ldrh r1, [r4, 0x3C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0805D2FC
- adds r0, r5, 0
- adds r1, r4, 0
- bl get_berry_tree_graphics
- ldrh r1, [r4, 0x3C]
- movs r0, 0x1
- orrs r0, r1
- strh r0, [r4, 0x3C]
-_0805D2FC:
- ldr r2, _0805D310 @ =sub_805D314
- adds r0, r5, 0
- adds r1, r4, 0
- bl meta_step
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805D30C: .4byte gMapObjects
-_0805D310: .4byte sub_805D314
- thumb_func_end FieldObjectCB_BerryTree
-
- thumb_func_start sub_805D314
-sub_805D314: @ 805D314
- push {r4,lr}
- ldr r3, _0805D330 @ =gUnknown_083752D0
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D330: .4byte gUnknown_083752D0
- thumb_func_end sub_805D314
-
- thumb_func_start do_berry_tree_growth_sparkle_1
-do_berry_tree_growth_sparkle_1: @ 805D334
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl npc_reset
- ldrb r0, [r4, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r6, r5, 0
- adds r6, 0x3E
- ldrb r0, [r6]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r6]
- ldrb r0, [r4, 0x1D]
- bl GetStageByBerryTreeId
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0
- bne _0805D3A4
- ldrh r1, [r5, 0x3C]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0805D39A
- subs r6, 0x14
- ldrb r0, [r6]
- cmp r0, 0x4
- bne _0805D39A
- ldr r1, _0805D3A0 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- str r0, [r1]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- str r0, [r1, 0x4]
- adds r0, r5, 0
- adds r0, 0x43
- ldrb r0, [r0]
- subs r0, 0x1
- str r0, [r1, 0x8]
- ldrb r0, [r5, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r1, 0xC]
- movs r0, 0x17
- bl FieldEffectStart
- strb r7, [r6]
-_0805D39A:
- movs r0, 0
- b _0805D3E6
- .align 2, 0
-_0805D3A0: .4byte gUnknown_0202FF84
-_0805D3A4:
- ldrb r1, [r4, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x1]
- ldrb r1, [r6]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- subs r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- adds r0, 0x2A
- ldrb r0, [r0]
- cmp r0, r7
- bne _0805D3E0
- adds r0, r4, 0
- adds r1, r5, 0
- bl get_berry_tree_graphics
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x39
- bl FieldObjectSetRegularAnim
- movs r0, 0x1
- strh r0, [r5, 0x30]
- b _0805D3E6
-_0805D3E0:
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
-_0805D3E6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end do_berry_tree_growth_sparkle_1
-
- thumb_func_start sub_805D3EC
-sub_805D3EC: @ 805D3EC
- push {r4,lr}
- adds r4, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- bne _0805D3FE
- movs r0, 0
- b _0805D404
-_0805D3FE:
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805D404:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D3EC
-
- thumb_func_start do_berry_tree_growth_sparkle_2
-do_berry_tree_growth_sparkle_2: @ 805D40C
- push {r4,lr}
- ldrb r2, [r0]
- movs r3, 0x2
- orrs r2, r3
- strb r2, [r0]
- movs r3, 0
- movs r2, 0x3
- strh r2, [r1, 0x30]
- strh r3, [r1, 0x32]
- ldrh r3, [r1, 0x3C]
- movs r2, 0x2
- orrs r2, r3
- strh r2, [r1, 0x3C]
- ldr r3, _0805D454 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r2, 0x12
- ldrsh r0, [r0, r2]
- str r0, [r3, 0x4]
- adds r0, r1, 0
- adds r0, 0x43
- ldrb r0, [r0]
- subs r0, 0x1
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0x17
- bl FieldEffectStart
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D454: .4byte gUnknown_0202FF84
- thumb_func_end do_berry_tree_growth_sparkle_2
-
- thumb_func_start sub_805D458
-sub_805D458: @ 805D458
- push {r4,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- ldrh r1, [r4, 0x32]
- adds r1, 0x1
- strh r1, [r4, 0x32]
- movs r0, 0x2
- ands r1, r0
- lsls r1, 16
- lsrs r1, 17
- lsls r1, 5
- ldrb r2, [r3, 0x1]
- subs r0, 0x23
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x40
- bgt _0805D490
- movs r0, 0
- b _0805D4A2
-_0805D490:
- adds r0, r3, 0
- adds r1, r4, 0
- bl get_berry_tree_graphics
- movs r0, 0x4
- strh r0, [r4, 0x30]
- movs r0, 0
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_0805D4A2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D458
-
- thumb_func_start sub_805D4A8
-sub_805D4A8: @ 805D4A8
- push {r4,lr}
- adds r4, r1, 0
- ldrh r2, [r4, 0x32]
- adds r2, 0x1
- strh r2, [r4, 0x32]
- movs r1, 0x2
- ands r2, r1
- lsls r2, 16
- lsrs r2, 17
- lsls r2, 5
- ldrb r3, [r0, 0x1]
- subs r1, 0x23
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x1]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x40
- bgt _0805D4DE
- movs r0, 0
- b _0805D4EC
-_0805D4DE:
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x3C]
- subs r0, 0x3
- ands r0, r1
- strh r0, [r4, 0x3C]
- movs r0, 0x1
-_0805D4EC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D4A8
-
- thumb_func_start sub_805D4F4
-sub_805D4F4: @ 805D4F4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D510 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D514 @ =sub_805D518
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D510: .4byte gMapObjects
-_0805D514: .4byte sub_805D518
- thumb_func_end sub_805D4F4
-
- thumb_func_start sub_805D518
-sub_805D518: @ 805D518
- push {r4,lr}
- ldr r3, _0805D534 @ =gUnknown_083752E4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D534: .4byte gUnknown_083752E4
- thumb_func_end sub_805D518
-
- thumb_func_start sub_805D538
-sub_805D538: @ 805D538
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D538
-
- thumb_func_start sub_805D54C
-sub_805D54C: @ 805D54C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D54C
-
- thumb_func_start sub_805D578
-sub_805D578: @ 805D578
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D5AE
- ldr r4, _0805D5B8 @ =gUnknown_0837520C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805D5AE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D5B8: .4byte gUnknown_0837520C
- thumb_func_end sub_805D578
-
- thumb_func_start sub_805D5BC
-sub_805D5BC: @ 805D5BC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D5DA
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805D5E2
-_0805D5DA:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805D5E4
-_0805D5E2:
- movs r0, 0
-_0805D5E4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D5BC
-
- thumb_func_start sub_805D5EC
-sub_805D5EC: @ 805D5EC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805D630 @ =gUnknown_083752A0
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805D61C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805D61C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D630: .4byte gUnknown_083752A0
- thumb_func_end sub_805D5EC
-
- thumb_func_start sub_805D634
-sub_805D634: @ 805D634
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D650 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D654 @ =sub_805D658
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D650: .4byte gMapObjects
-_0805D654: .4byte sub_805D658
- thumb_func_end sub_805D634
-
- thumb_func_start sub_805D658
-sub_805D658: @ 805D658
- push {r4,lr}
- ldr r3, _0805D674 @ =gUnknown_083752F8
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D674: .4byte gUnknown_083752F8
- thumb_func_end sub_805D658
-
- thumb_func_start sub_805D678
-sub_805D678: @ 805D678
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D678
-
- thumb_func_start sub_805D68C
-sub_805D68C: @ 805D68C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D68C
-
- thumb_func_start sub_805D6B8
-sub_805D6B8: @ 805D6B8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D6EE
- ldr r4, _0805D6F8 @ =gUnknown_0837520C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805D6EE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D6F8: .4byte gUnknown_0837520C
- thumb_func_end sub_805D6B8
-
- thumb_func_start sub_805D6FC
-sub_805D6FC: @ 805D6FC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D71A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805D722
-_0805D71A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805D724
-_0805D722:
- movs r0, 0
-_0805D724:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D6FC
-
- thumb_func_start sub_805D72C
-sub_805D72C: @ 805D72C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805D770 @ =gUnknown_083752C0
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805D75C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805D75C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D770: .4byte gUnknown_083752C0
- thumb_func_end sub_805D72C
-
- thumb_func_start sub_805D774
-sub_805D774: @ 805D774
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D790 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D794 @ =sub_805D798
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D790: .4byte gMapObjects
-_0805D794: .4byte sub_805D798
- thumb_func_end sub_805D774
-
- thumb_func_start sub_805D798
-sub_805D798: @ 805D798
- push {r4,lr}
- ldr r3, _0805D7B4 @ =gUnknown_0837530C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D7B4: .4byte gUnknown_0837530C
- thumb_func_end sub_805D798
-
- thumb_func_start sub_805D7B8
-sub_805D7B8: @ 805D7B8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D7B8
-
- thumb_func_start sub_805D7CC
-sub_805D7CC: @ 805D7CC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D7CC
-
- thumb_func_start sub_805D7F8
-sub_805D7F8: @ 805D7F8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D82E
- ldr r4, _0805D838 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805D82E:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D838: .4byte gUnknown_0837521C
- thumb_func_end sub_805D7F8
-
- thumb_func_start sub_805D83C
-sub_805D83C: @ 805D83C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D85A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805D862
-_0805D85A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805D864
-_0805D862:
- movs r0, 0
-_0805D864:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D83C
-
- thumb_func_start sub_805D86C
-sub_805D86C: @ 805D86C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805D8B0 @ =gUnknown_08375320
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805D89C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805D89C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D8B0: .4byte gUnknown_08375320
- thumb_func_end sub_805D86C
-
- thumb_func_start sub_805D8B4
-sub_805D8B4: @ 805D8B4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D8D0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D8D4 @ =sub_805D8D8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D8D0: .4byte gMapObjects
-_0805D8D4: .4byte sub_805D8D8
- thumb_func_end sub_805D8B4
-
- thumb_func_start sub_805D8D8
-sub_805D8D8: @ 805D8D8
- push {r4,lr}
- ldr r3, _0805D8F4 @ =gUnknown_08375324
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D8F4: .4byte gUnknown_08375324
- thumb_func_end sub_805D8D8
-
- thumb_func_start sub_805D8F8
-sub_805D8F8: @ 805D8F8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D8F8
-
- thumb_func_start sub_805D90C
-sub_805D90C: @ 805D90C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D90C
-
- thumb_func_start sub_805D938
-sub_805D938: @ 805D938
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D96E
- ldr r4, _0805D978 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805D96E:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D978: .4byte gUnknown_0837521C
- thumb_func_end sub_805D938
-
- thumb_func_start sub_805D97C
-sub_805D97C: @ 805D97C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D99A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805D9A2
-_0805D99A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805D9A4
-_0805D9A2:
- movs r0, 0
-_0805D9A4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D97C
-
- thumb_func_start sub_805D9AC
-sub_805D9AC: @ 805D9AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805D9F0 @ =gUnknown_08375338
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x4
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805D9DC
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805D9DC:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D9F0: .4byte gUnknown_08375338
- thumb_func_end sub_805D9AC
-
- thumb_func_start sub_805D9F4
-sub_805D9F4: @ 805D9F4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DA10 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DA14 @ =sub_805DA18
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DA10: .4byte gMapObjects
-_0805DA14: .4byte sub_805DA18
- thumb_func_end sub_805D9F4
-
- thumb_func_start sub_805DA18
-sub_805DA18: @ 805DA18
- push {r4,lr}
- ldr r3, _0805DA34 @ =gUnknown_0837533C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DA34: .4byte gUnknown_0837533C
- thumb_func_end sub_805DA18
-
- thumb_func_start sub_805DA38
-sub_805DA38: @ 805DA38
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DA38
-
- thumb_func_start sub_805DA4C
-sub_805DA4C: @ 805DA4C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DA4C
-
- thumb_func_start sub_805DA78
-sub_805DA78: @ 805DA78
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DAAE
- ldr r4, _0805DAB8 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DAAE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DAB8: .4byte gUnknown_0837521C
- thumb_func_end sub_805DA78
-
- thumb_func_start sub_805DABC
-sub_805DABC: @ 805DABC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DADA
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DAE2
-_0805DADA:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DAE4
-_0805DAE2:
- movs r0, 0
-_0805DAE4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DABC
-
- thumb_func_start sub_805DAEC
-sub_805DAEC: @ 805DAEC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805DB30 @ =gUnknown_08375350
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x5
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805DB1C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805DB1C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DB30: .4byte gUnknown_08375350
- thumb_func_end sub_805DAEC
-
- thumb_func_start sub_805DB34
-sub_805DB34: @ 805DB34
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DB50 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DB54 @ =sub_805DB58
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DB50: .4byte gMapObjects
-_0805DB54: .4byte sub_805DB58
- thumb_func_end sub_805DB34
-
- thumb_func_start sub_805DB58
-sub_805DB58: @ 805DB58
- push {r4,lr}
- ldr r3, _0805DB74 @ =gUnknown_08375354
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DB74: .4byte gUnknown_08375354
- thumb_func_end sub_805DB58
-
- thumb_func_start sub_805DB78
-sub_805DB78: @ 805DB78
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DB78
-
- thumb_func_start sub_805DB8C
-sub_805DB8C: @ 805DB8C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DB8C
-
- thumb_func_start sub_805DBB8
-sub_805DBB8: @ 805DBB8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DBEE
- ldr r4, _0805DBF8 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DBEE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DBF8: .4byte gUnknown_0837521C
- thumb_func_end sub_805DBB8
-
- thumb_func_start sub_805DBFC
-sub_805DBFC: @ 805DBFC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DC1A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DC22
-_0805DC1A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DC24
-_0805DC22:
- movs r0, 0
-_0805DC24:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DBFC
-
- thumb_func_start sub_805DC2C
-sub_805DC2C: @ 805DC2C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805DC70 @ =gUnknown_08375368
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x6
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805DC5C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805DC5C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DC70: .4byte gUnknown_08375368
- thumb_func_end sub_805DC2C
-
- thumb_func_start sub_805DC74
-sub_805DC74: @ 805DC74
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DC90 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DC94 @ =sub_805DC98
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DC90: .4byte gMapObjects
-_0805DC94: .4byte sub_805DC98
- thumb_func_end sub_805DC74
-
- thumb_func_start sub_805DC98
-sub_805DC98: @ 805DC98
- push {r4,lr}
- ldr r3, _0805DCB4 @ =gUnknown_0837536C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DCB4: .4byte gUnknown_0837536C
- thumb_func_end sub_805DC98
-
- thumb_func_start sub_805DCB8
-sub_805DCB8: @ 805DCB8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DCB8
-
- thumb_func_start sub_805DCCC
-sub_805DCCC: @ 805DCCC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DCCC
-
- thumb_func_start sub_805DCF8
-sub_805DCF8: @ 805DCF8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DD2E
- ldr r4, _0805DD38 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DD2E:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DD38: .4byte gUnknown_0837521C
- thumb_func_end sub_805DCF8
-
- thumb_func_start sub_805DD3C
-sub_805DD3C: @ 805DD3C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DD5A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DD62
-_0805DD5A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DD64
-_0805DD62:
- movs r0, 0
-_0805DD64:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DD3C
-
- thumb_func_start sub_805DD6C
-sub_805DD6C: @ 805DD6C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805DDB0 @ =gUnknown_08375380
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x7
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805DD9C
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805DD9C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DDB0: .4byte gUnknown_08375380
- thumb_func_end sub_805DD6C
-
- thumb_func_start sub_805DDB4
-sub_805DDB4: @ 805DDB4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DDD0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DDD4 @ =sub_805DDD8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DDD0: .4byte gMapObjects
-_0805DDD4: .4byte sub_805DDD8
- thumb_func_end sub_805DDB4
-
- thumb_func_start sub_805DDD8
-sub_805DDD8: @ 805DDD8
- push {r4,lr}
- ldr r3, _0805DDF4 @ =gUnknown_08375384
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DDF4: .4byte gUnknown_08375384
- thumb_func_end sub_805DDD8
-
- thumb_func_start sub_805DDF8
-sub_805DDF8: @ 805DDF8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DDF8
-
- thumb_func_start sub_805DE0C
-sub_805DE0C: @ 805DE0C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DE0C
-
- thumb_func_start sub_805DE38
-sub_805DE38: @ 805DE38
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DE6E
- ldr r4, _0805DE78 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DE6E:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DE78: .4byte gUnknown_0837521C
- thumb_func_end sub_805DE38
-
- thumb_func_start sub_805DE7C
-sub_805DE7C: @ 805DE7C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DE9A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DEA2
-_0805DE9A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DEA4
-_0805DEA2:
- movs r0, 0
-_0805DEA4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DE7C
-
- thumb_func_start sub_805DEAC
-sub_805DEAC: @ 805DEAC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805DEF0 @ =gUnknown_08375398
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x8
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805DEDC
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805DEDC:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DEF0: .4byte gUnknown_08375398
- thumb_func_end sub_805DEAC
-
- thumb_func_start sub_805DEF4
-sub_805DEF4: @ 805DEF4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DF10 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DF14 @ =sub_805DF18
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DF10: .4byte gMapObjects
-_0805DF14: .4byte sub_805DF18
- thumb_func_end sub_805DEF4
-
- thumb_func_start sub_805DF18
-sub_805DF18: @ 805DF18
- push {r4,lr}
- ldr r3, _0805DF34 @ =gUnknown_0837539C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DF34: .4byte gUnknown_0837539C
- thumb_func_end sub_805DF18
-
- thumb_func_start sub_805DF38
-sub_805DF38: @ 805DF38
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DF38
-
- thumb_func_start sub_805DF4C
-sub_805DF4C: @ 805DF4C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DF4C
-
- thumb_func_start sub_805DF78
-sub_805DF78: @ 805DF78
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DFAE
- ldr r4, _0805DFB8 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DFAE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DFB8: .4byte gUnknown_0837521C
- thumb_func_end sub_805DF78
-
- thumb_func_start sub_805DFBC
-sub_805DFBC: @ 805DFBC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DFDA
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DFE2
-_0805DFDA:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DFE4
-_0805DFE2:
- movs r0, 0
-_0805DFE4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DFBC
-
- thumb_func_start sub_805DFEC
-sub_805DFEC: @ 805DFEC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E030 @ =gUnknown_083753B0
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x9
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805E01C
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805E01C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E030: .4byte gUnknown_083753B0
- thumb_func_end sub_805DFEC
-
- thumb_func_start sub_805E034
-sub_805E034: @ 805E034
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E050 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E054 @ =sub_805E058
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E050: .4byte gMapObjects
-_0805E054: .4byte sub_805E058
- thumb_func_end sub_805E034
-
- thumb_func_start sub_805E058
-sub_805E058: @ 805E058
- push {r4,lr}
- ldr r3, _0805E074 @ =gUnknown_083753B4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E074: .4byte gUnknown_083753B4
- thumb_func_end sub_805E058
-
- thumb_func_start sub_805E078
-sub_805E078: @ 805E078
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805E078
-
- thumb_func_start sub_805E08C
-sub_805E08C: @ 805E08C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E08C
-
- thumb_func_start sub_805E0B8
-sub_805E0B8: @ 805E0B8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E0EE
- ldr r4, _0805E0F8 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805E0EE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E0F8: .4byte gUnknown_0837521C
- thumb_func_end sub_805E0B8
-
- thumb_func_start sub_805E0FC
-sub_805E0FC: @ 805E0FC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805E11A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805E122
-_0805E11A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805E124
-_0805E122:
- movs r0, 0
-_0805E124:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E0FC
-
- thumb_func_start sub_805E12C
-sub_805E12C: @ 805E12C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E170 @ =gUnknown_083753C8
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0xA
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805E15C
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805E15C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E170: .4byte gUnknown_083753C8
- thumb_func_end sub_805E12C
-
- thumb_func_start sub_805E174
-sub_805E174: @ 805E174
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E190 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E194 @ =sub_805E198
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E190: .4byte gMapObjects
-_0805E194: .4byte sub_805E198
- thumb_func_end sub_805E174
-
- thumb_func_start sub_805E198
-sub_805E198: @ 805E198
- push {r4,lr}
- ldr r3, _0805E1B4 @ =gUnknown_083753CC
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E1B4: .4byte gUnknown_083753CC
- thumb_func_end sub_805E198
-
- thumb_func_start sub_805E1B8
-sub_805E1B8: @ 805E1B8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl npc_reset
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x1
- strh r0, [r5, 0x30]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E1B8
-
- thumb_func_start sub_805E1E4
-sub_805E1E4: @ 805E1E4
- push {r4,lr}
- adds r4, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E1FE
- adds r0, r4, 0
- movs r1, 0x30
- bl sub_8064820
- movs r0, 0x2
- strh r0, [r4, 0x30]
-_0805E1FE:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805E1E4
-
- thumb_func_start sub_805E208
-sub_805E208: @ 805E208
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805E226
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805E22A
-_0805E226:
- movs r0, 0x3
- strh r0, [r5, 0x30]
-_0805E22A:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E208
-
- thumb_func_start sub_805E234
-sub_805E234: @ 805E234
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E274 @ =gUnknown_083753DC
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- adds r0, r4, 0
- movs r1, 0
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805E260
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- add r0, sp
- ldrb r1, [r0]
-_0805E260:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0
- strh r0, [r5, 0x30]
- movs r0, 0x1
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E274: .4byte gUnknown_083753DC
- thumb_func_end sub_805E234
-
- thumb_func_start sub_805E278
-sub_805E278: @ 805E278
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E294 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E298 @ =sub_805E29C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E294: .4byte gMapObjects
-_0805E298: .4byte sub_805E29C
- thumb_func_end sub_805E278
-
- thumb_func_start sub_805E29C
-sub_805E29C: @ 805E29C
- push {r4,lr}
- ldr r3, _0805E2B8 @ =gUnknown_083753E4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E2B8: .4byte gUnknown_083753E4
- thumb_func_end sub_805E29C
-
- thumb_func_start sub_805E2BC
-sub_805E2BC: @ 805E2BC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl npc_reset
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x1
- strh r0, [r5, 0x30]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E2BC
-
- thumb_func_start sub_805E2E8
-sub_805E2E8: @ 805E2E8
- push {r4,lr}
- adds r4, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E302
- adds r0, r4, 0
- movs r1, 0x30
- bl sub_8064820
- movs r0, 0x2
- strh r0, [r4, 0x30]
-_0805E302:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805E2E8
-
- thumb_func_start sub_805E30C
-sub_805E30C: @ 805E30C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805E32A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805E32E
-_0805E32A:
- movs r0, 0x3
- strh r0, [r5, 0x30]
-_0805E32E:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E30C
-
- thumb_func_start sub_805E338
-sub_805E338: @ 805E338
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E378 @ =gUnknown_083753F4
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- adds r0, r4, 0
- movs r1, 0
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805E364
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- add r0, sp
- ldrb r1, [r0]
-_0805E364:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0
- strh r0, [r5, 0x30]
- movs r0, 0x1
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E378: .4byte gUnknown_083753F4
- thumb_func_end sub_805E338
-
thumb_func_start sub_805E37C
sub_805E37C: @ 805E37C
push {lr}
@@ -7192,206 +3512,10 @@ sub_805FD08: @ 805FD08
strb r1, [r0]
movs r0, 0
bx lr
- thumb_func_end sub_805FD08
-
- thumb_func_start npc_reset
-npc_reset: @ 805FD18
- ldrb r3, [r0]
- movs r2, 0x3
- negs r2, r2
- ands r2, r3
- movs r3, 0x41
- negs r3, r3
- ands r2, r3
- movs r3, 0x7F
- ands r2, r3
- strb r2, [r0]
- movs r2, 0xFF
- strb r2, [r0, 0x1C]
- movs r0, 0
- strh r0, [r1, 0x30]
- bx lr
- thumb_func_end npc_reset
-
- thumb_func_start FieldObjectDirectionToImageAnimId
-FieldObjectDirectionToImageAnimId: @ 805FD38
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD44 @ =gUnknown_083755F4
- adds r0, r1
- ldrb r0, [r0]
- bx lr
.align 2, 0
-_0805FD44: .4byte gUnknown_083755F4
- thumb_func_end FieldObjectDirectionToImageAnimId
-
- thumb_func_start get_go_image_anim_num
-get_go_image_anim_num: @ 805FD48
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD54 @ =gUnknown_083755FD
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD54: .4byte gUnknown_083755FD
- thumb_func_end get_go_image_anim_num
-
- thumb_func_start get_go_fast_image_anim_num
-get_go_fast_image_anim_num: @ 805FD58
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD64 @ =gUnknown_08375606
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD64: .4byte gUnknown_08375606
- thumb_func_end get_go_fast_image_anim_num
-
- thumb_func_start get_go_faster_image_anim_num
-get_go_faster_image_anim_num: @ 805FD68
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD74 @ =gUnknown_0837560F
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD74: .4byte gUnknown_0837560F
- thumb_func_end get_go_faster_image_anim_num
-
- thumb_func_start sub_805FD78
-sub_805FD78: @ 805FD78
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD84 @ =gUnknown_08375618
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD84: .4byte gUnknown_08375618
- thumb_func_end sub_805FD78
-
- thumb_func_start sub_805FD88
-sub_805FD88: @ 805FD88
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD94 @ =gUnknown_08375621
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD94: .4byte gUnknown_08375621
- thumb_func_end sub_805FD88
-
- thumb_func_start sub_805FD98
-sub_805FD98: @ 805FD98
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDA4 @ =gUnknown_0837562A
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDA4: .4byte gUnknown_0837562A
- thumb_func_end sub_805FD98
-
- thumb_func_start unref_sub_805FDA8
-unref_sub_805FDA8: @ 805FDA8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDB4 @ =gUnknown_08375633
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDB4: .4byte gUnknown_08375633
- thumb_func_end unref_sub_805FDA8
-
- thumb_func_start sub_805FDB8
-sub_805FDB8: @ 805FDB8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDC4 @ =gUnknown_0837563C
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDC4: .4byte gUnknown_0837563C
- thumb_func_end sub_805FDB8
-
- thumb_func_start sub_805FDC8
-sub_805FDC8: @ 805FDC8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDD4 @ =gUnknown_08375645
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDD4: .4byte gUnknown_08375645
- thumb_func_end sub_805FDC8
-
- thumb_func_start sub_805FDD8
-sub_805FDD8: @ 805FDD8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDE4 @ =gUnknown_0837564E
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDE4: .4byte gUnknown_0837564E
- thumb_func_end sub_805FDD8
-
- thumb_func_start sub_805FDE8
-sub_805FDE8: @ 805FDE8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDF4 @ =gUnknown_08375657
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDF4: .4byte gUnknown_08375657
- thumb_func_end sub_805FDE8
-
- thumb_func_start sub_805FDF8
-sub_805FDF8: @ 805FDF8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FE04 @ =gUnknown_08375660
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FE04: .4byte gUnknown_08375660
- thumb_func_end sub_805FDF8
-
- thumb_func_start sub_805FE08
-sub_805FE08: @ 805FE08
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FE14 @ =gUnknown_08375669
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FE14: .4byte gUnknown_08375669
- thumb_func_end sub_805FE08
+ thumb_func_end sub_805FD08
- thumb_func_start get_run_image_anim_num
-get_run_image_anim_num: @ 805FE18
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FE24 @ =gUnknown_08375672
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FE24: .4byte gUnknown_08375672
- thumb_func_end get_run_image_anim_num
+ .section .text_805fd18
thumb_func_start sub_805FE28
sub_805FE28: @ 805FE28
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index dfc41d38b..4f9b6f5af 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -6,6 +6,23 @@
void sub_805C058(struct MapObject *mapObject, s16 a, s16 b);
void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18);
void MoveCoords(u8 direction, s16 *x, s16 *y);
-void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)());
+void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)(struct MapObject *, struct Sprite *));
+void npc_reset(struct MapObject *mapObject, struct Sprite *sprite);
+
+extern const u8 gUnknown_08375240[4];
+extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3);
+
+extern const u8 gUnknown_083752A0[2];
+extern const u8 gUnknown_083752C0[2];
+extern const u8 gUnknown_08375320[2];
+extern const u8 gUnknown_08375338[2];
+extern const u8 gUnknown_08375350[2];
+extern const u8 gUnknown_08375368[2];
+extern const u8 gUnknown_08375380[2];
+extern const u8 gUnknown_08375398[2];
+extern const u8 gUnknown_083753B0[2];
+extern const u8 gUnknown_083753C8[2];
+extern const u8 gUnknown_083753DC[5];
+extern const u8 gUnknown_083753F4[5];
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/ld_script.txt b/ld_script.txt
index dac5fb782..866dcff5e 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -92,6 +92,8 @@ SECTIONS {
src/field_player_avatar.o(.text);
src/field_map_obj.o(.text);
asm/field_map_obj.o(.text);
+ src/field_map_obj.o(.text_b);
+ asm/field_map_obj.o(.text_805fd18);
src/field_ground_effect.o(.text);
asm/field_ground_effect.o(.text);
src/field_map_obj_helpers.o(.text);
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index f7e09aacf..2c949c191 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -4,12 +4,38 @@
#include "berry.h"
#include "event_data.h"
#include "field_player_avatar.h"
+#include "field_effect.h"
#include "palette.h"
#include "rom4.h"
+#include "rng.h"
#include "sprite.h"
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
+#define fieldmap_object_cb(setup, callback, table) \
+extern u8 (*const table[])(struct MapObject *, struct Sprite *);\
+u8 callback(struct MapObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ meta_step(&gMapObjects[sprite->data0], sprite, callback);\
+}\
+u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ return table[sprite->data1](mapObject, sprite);\
+}
+
+#define fieldmap_object_null_cb(setup, callback) \
+u8 callback(struct MapObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ meta_step(&gMapObjects[sprite->data0], sprite, callback);\
+}\
+u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ return 0;\
+}
+
+
extern void strange_npc_table_clear(void);
extern void ClearPlayerAvatarInfo(void);
extern void npc_load_two_palettes__no_record(u16, u8);
@@ -1503,47 +1529,1394 @@ u16 npc_paltag_by_palslot(u8 a)
return 0x11FF;
}
-u32 sub_805C8A8(void);
+fieldmap_object_null_cb(sub_805C884, sub_805C8A8);
+fieldmap_object_cb(sub_805C8AC, sub_805C8D0, gUnknown_08375224);
+
+u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+extern void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8);
-void sub_805C884(struct Sprite *sprite)
+u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *);
+extern const s16 gUnknown_0837520C[];
+extern const s16 gUnknown_0837521C[];
+extern void sub_8064820(struct Sprite *, s16);
+
+u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite)
{
- meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8A8);
+ if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ {
+ return 0;
+ }
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ sprite->data1 = 3;
+ return 1;
}
-u32 sub_805C8A8(void)
+extern u8 sub_8064824(struct Sprite *);
+
+u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite)
{
+ if (sub_8064824(sprite) != 0)
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
return 0;
}
-u32 sub_805C8D0(struct MapObject *, struct Sprite *);
+extern u8 sub_805FF20(struct MapObject *, u8);
+
+u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375240, 4);
+ direction = directions[Random() & 3];
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 5;
+ if (sub_805FF20(mapObject, direction) != 0)
+ {
+ sprite->data1 = 1;
+ }
+ return 1;
+}
+
+u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 6;
+ return 1;
+}
+
+u8 sub_805CA08(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject)
+{
+ s16 x;
+ s16 y;
+ s16 objx;
+ s16 objy;
+ s16 minx;
+ s16 maxx;
+ s16 miny;
+ s16 maxy;
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) == 0)
+ {
+ return 0;
+ }
+ if (mapObject->trainerType != 1 && mapObject->trainerType != 3)
+ {
+ return 0;
+ }
+ PlayerGetDestCoords(&x, &y);
+ objx = mapObject->coords2.x;
+ objy = mapObject->coords2.y;
+ minx = objx - mapObject->trainerRange_berryTreeId;
+ miny = objy - mapObject->trainerRange_berryTreeId;
+ maxx = objx + mapObject->trainerRange_berryTreeId;
+ maxy = objy + mapObject->trainerRange_berryTreeId;
+ if (minx > x || maxx < x || miny > y || maxy < y)
+ {
+ return 0;
+ }
+ return 1;
+}
+
+u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ if (a2 > a3)
+ {
+ dirn = DIR_EAST;
+ if (a0 < 0)
+ {
+ dirn = DIR_WEST;
+ }
+ }
+ else
+ {
+ dirn = DIR_SOUTH;
+ if (a1 < 0)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ return dirn;
+}
-void sub_805C8AC(struct Sprite *sprite)
+u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3)
{
- meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8D0);
+ u8 dirn;
+ dirn = DIR_SOUTH;
+ if (a1 < 0)
+ {
+ dirn = DIR_NORTH;
+ }
+ return dirn;
}
-extern u8 (*const gUnknown_08375224[])();
+u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = DIR_EAST;
+ if (a0 < 0)
+ {
+ dirn = DIR_WEST;
+ }
+ return dirn;
+}
-u32 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3)
{
- return gUnknown_08375224[sprite->data1](mapObject, sprite);
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ else if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ return dirn;
}
-void npc_reset();
+u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ else if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ return dirn;
+}
-u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ else if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ else if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CD60(struct MapObject *mapObject, u8 a1)
+{
+ s16 x;
+ s16 y;
+ s16 x2;
+ s16 y2;
+ if (!FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ return 0;
+ }
+ PlayerGetDestCoords(&x, &y);
+ x -= mapObject->coords2.x;
+ y -= mapObject->coords2.y;
+ x2 = x;
+ y2 = y;
+ if (x2 < 0)
+ {
+ x2 = -x2;
+ }
+ if (y2 < 0)
+ {
+ y2 = -y2;
+ }
+ return gUnknown_08375244[a1](x, y, x2, y2);
+}
+
+fieldmap_object_cb(sub_805CDE8, sub_805CE0c, gUnknown_08375270);
+
+u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite)
{
- npc_reset(mapObject);
+ npc_reset(mapObject, sprite);
sprite->data1 = 1;
return 1;
}
-extern void FieldObjectSetRegularAnim();
+u8 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
-u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375240, 4);
+ direction = sub_805CD60(mapObject, 0);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805CF28, sub_805CF4C, gUnknown_08375284);
+
+u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805CF80(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805CFAC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ {
+ return 0;
+ }
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ sprite->data1 = 3;
+ return 1;
+}
+
+u8 sub_805CFE8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) != 0)
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D008(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_083752A0, 2);
+ direction = directions[Random() & 1];
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 5;
+ if (sub_805FF20(mapObject, direction) != 0)
+ {
+ sprite->data1 = 1;
+ }
+ return 1;
+}
+
+u8 sub_805D054(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 6;
+ return 1;
+}
+
+u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+fieldmap_object_cb(sub_805D0AC, sub_805D0D0, gUnknown_083752A4);
+
+u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D104(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D130(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ {
+ return 0;
+ }
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ sprite->data1 = 3;
+ return 1;
+}
+
+u8 sub_805D16C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) != 0)
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D18C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_083752C0, 2);
+ direction = directions[Random() & 1];
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 5;
+ if (sub_805FF20(mapObject, direction) != 0)
+ {
+ sprite->data1 = 1;
+ }
+ return 1;
+}
+
+u8 sub_805D1D8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 6;
+ return 1;
+}
+
+u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+fieldmap_object_cb(sub_805D230, sub_805D254, gUnknown_083752C4);
+
+u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D2A0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ sprite->data1 = 2;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_1 = 0;
+ return 0;
+}
+
+u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite);
+extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite);
+
+void FieldObjectCB_BerryTree(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ mapObject = &gMapObjects[sprite->data0];
+ if (!(sprite->data7 & 1))
+ {
+ get_berry_tree_graphics(mapObject, sprite);
+ sprite->data7 |= 1;
+ }
+ meta_step(mapObject, sprite, sub_805D314);
+}
+
+u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ return gUnknown_083752D0[sprite->data1](mapObject, sprite);
+}
+
+extern u32 gUnknown_0202FF84[];
+
+u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 berryTreeStage;
+ npc_reset(mapObject, sprite);
+ mapObject->mapobj_bit_13 = 1;
+ sprite->invisible = 1;
+ berryTreeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
+ if (!berryTreeStage)
+ {
+ if (!(sprite->data7 & 4) && sprite->animNum == 4)
+ {
+ gUnknown_0202FF84[0] = mapObject->coords2.x;
+ gUnknown_0202FF84[1] = mapObject->coords2.y;
+ gUnknown_0202FF84[2] = sprite->subpriority - 1;
+ gUnknown_0202FF84[3] = sprite->oam.priority;
+ FieldEffectStart(0x17);
+ sprite->animNum = 0;
+ }
+ return 0;
+ }
+ mapObject->mapobj_bit_13 = 0;
+ sprite->invisible = 0;
+ berryTreeStage--;
+ if (sprite->animNum != berryTreeStage)
+ {
+ sprite->data1 = 2;
+ return 1;
+ }
+ get_berry_tree_graphics(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, 0x39);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sprite->data1 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 3;
+ sprite->data2 = 0;
+ sprite->data7 |= 2;
+ gUnknown_0202FF84[0] = mapObject->coords2.x;
+ gUnknown_0202FF84[1] = mapObject->coords2.y;
+ gUnknown_0202FF84[2] = sprite->subpriority - 1;
+ gUnknown_0202FF84[3] = sprite->oam.priority;
+ FieldEffectStart(0x17);
+ return 1;
+}
+
+u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sprite->data2++;
+ mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1);
+ sprite->animPaused = 1;
+ if (sprite->data2 > 64)
+ {
+ get_berry_tree_graphics(mapObject, sprite);
+ sprite->data1 = 4;
+ sprite->data2 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sprite->data2++;
+ mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1);
+ sprite->animPaused = 1;
+ if (sprite->data2 > 64)
+ {
+ sprite->data1 = 0;
+ sprite->data7 &= (-3);
+ return 1;
+ }
+ return 0;
+}
+
+fieldmap_object_cb(sub_805D4F4, sub_805D518, gUnknown_083752E4);
+
+u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D54C(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
sprite->data1 = 2;
return 1;
}
+u8 sub_805D578(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805D5BC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_083752A0, 2);
+ direction = sub_805CD60(mapObject, 1);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805D634, sub_805D658, gUnknown_083752F8);
+
+u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D68C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D6B8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805D6FC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_083752C0, 2);
+ direction = sub_805CD60(mapObject, 2);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805D774, sub_805D798, gUnknown_0837530C);
+
+u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D7CC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D7F8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805D83C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_08375320, 2);
+ direction = sub_805CD60(mapObject, 3);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805D8B4, sub_805D8D8, gUnknown_08375324);
+
+u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D90C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D938(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805D97C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_08375338, 2);
+ direction = sub_805CD60(mapObject, 4);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805D9F4, sub_805DA18, gUnknown_0837533C);
+
+u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DA4C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DA78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DABC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_08375350, 2);
+ direction = sub_805CD60(mapObject, 5);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805DB34, sub_805DB58, gUnknown_08375354);
+
+u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DB8C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DBB8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DBFC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_08375368, 2);
+ direction = sub_805CD60(mapObject, 6);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805DC74, sub_805DC98, gUnknown_0837536C);
+
+u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DCCC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DCF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DD3C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375380, 4);
+ direction = sub_805CD60(mapObject, 7);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805DDB4, sub_805DDD8, gUnknown_08375384);
+
+u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DE0C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DE38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DE7C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375398, 4);
+ direction = sub_805CD60(mapObject, 8);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805DEF4, sub_805DF18, gUnknown_0837539C);
+
+u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DF4C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DF78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DFBC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_083753B0, 4);
+ direction = sub_805CD60(mapObject, 9);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805E034, sub_805E058, gUnknown_083753B4);
+
+u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805E08C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805E0B8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805E0FC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_083753C8, 4);
+ direction = sub_805CD60(mapObject, 10);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805E174, sub_805E198, gUnknown_083753CC);
+
+u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, 0x30);
+ sprite->data1 = 2;
+ }
+ return 0;
+}
+
+u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[5];
+ memcpy(directions, gUnknown_083753DC, 5);
+ direction = sub_805CD60(mapObject, 0);
+ if (direction == 0)
+ {
+ direction = directions[mapObject->mapobj_unk_18];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 0;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805E278, sub_803E29C, gUnknown_083753E4);
+
+u8 sub_805E2BC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805E2E8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, 0x30);
+ sprite->data1 = 2;
+ }
+ return 0;
+}
+
+u8 sub_805E30C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[5];
+ memcpy(directions, gUnknown_083753F4, 5);
+ direction = sub_805CD60(mapObject, 0);
+ if (direction == 0)
+ {
+ direction = directions[mapObject->mapobj_unk_18];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 0;
+ return 1;
+}
+
+
+void sub_805E37C(struct Sprite *sprite);
+void sub_805E5DC(struct Sprite *sprite);
+void sub_805E668(struct Sprite *sprite);
+void sub_805E6F4(struct Sprite *sprite);
+void sub_805E780(struct Sprite *sprite);
+void sub_805E80C(struct Sprite *sprite);
+void sub_805E898(struct Sprite *sprite);
+void sub_805E924(struct Sprite *sprite);
+void sub_805E9B0(struct Sprite *sprite);
+void sub_805EA3C(struct Sprite *sprite);
+void sub_805EAC8(struct Sprite *sprite);
+void sub_805EB54(struct Sprite *sprite);
+void sub_805EBE0(struct Sprite *sprite);
+void sub_805EC6C(struct Sprite *sprite);
+void sub_805ECF8(struct Sprite *sprite);
+void sub_805ED84(struct Sprite *sprite);
+void sub_805EE10(struct Sprite *sprite);
+void sub_805EE9C(struct Sprite *sprite);
+void sub_805EF28(struct Sprite *sprite);
+void sub_805EFB4(struct Sprite *sprite);
+void sub_805F040(struct Sprite *sprite);
+void sub_805F0CC(struct Sprite *sprite);
+void sub_805F158(struct Sprite *sprite);
+void sub_805F1E4(struct Sprite *sprite);
+void sub_805F270(struct Sprite *sprite);
+void sub_805F2FC(struct Sprite *sprite);
+void FieldObjectCB_TreeDisguise(struct Sprite *sprite);
+void FieldObjectCB_MountainDisguise(struct Sprite *sprite);
+void sub_805F8E0(struct Sprite *sprite);
+void FieldObjectCB_Hidden1(struct Sprite *sprite);
+void sub_805FB20(struct Sprite *sprite);
+void sub_805FB90(struct Sprite *sprite);
+void sub_805FC00(struct Sprite *sprite);
+void sub_805FC70(struct Sprite *sprite);
+
+asm(".section .text_b\n");
+
+void npc_reset(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_1 = 0;
+ mapObject->mapobj_bit_6 = 0;
+ mapObject->mapobj_bit_7 = 0;
+ mapObject->mapobj_unk_1C = 0xff;
+ sprite->data1 = 0;
+}
+
+extern const u8 gUnknown_083755F4[9];
+extern const u8 gUnknown_083755FD[9];
+extern const u8 gUnknown_08375606[9];
+extern const u8 gUnknown_0837560F[9];
+extern const u8 gUnknown_08375618[9];
+extern const u8 gUnknown_08375621[9];
+extern const u8 gUnknown_0837562A[9];
+extern const u8 gUnknown_08375633[9];
+extern const u8 gUnknown_0837563C[9];
+extern const u8 gUnknown_08375645[9];
+extern const u8 gUnknown_0837564E[9];
+extern const u8 gUnknown_08375657[9];
+extern const u8 gUnknown_08375660[9];
+extern const u8 gUnknown_08375669[9];
+extern const u8 gUnknown_08375672[9];
+
+u8 FieldObjectDirectionToImageAnimId(u8 direction)
+{
+ return gUnknown_083755F4[direction];
+}
+
+u8 get_go_image_anim_num(u8 direction)
+{
+ return gUnknown_083755FD[direction];
+}
+
+u8 get_go_fast_image_anim_num(u8 direction)
+{
+ return gUnknown_08375606[direction];
+}
+
+u8 get_go_faster_image_anim_num(u8 direction)
+{
+ return gUnknown_0837560F[direction];
+}
+
+u8 sub_805FD78(u8 direction)
+{
+ return gUnknown_08375618[direction];
+}
+
+u8 sub_805FD88(u8 direction)
+{
+ return gUnknown_08375621[direction];
+}
+
+u8 sub_805FD98(u8 direction)
+{
+ return gUnknown_0837562A[direction];
+}
+
+u8 unref_sub_805FDA8(u8 direction)
+{
+ return gUnknown_08375633[direction];
+}
+
+u8 sub_805FDB8(u8 direction)
+{
+ return gUnknown_0837563C[direction];
+}
+
+u8 sub_805FDC8(u8 direction)
+{
+ return gUnknown_08375645[direction];
+}
+
+u8 sub_805FDD8(u8 direction)
+{
+ return gUnknown_0837564E[direction];
+}
+
+u8 sub_805FDE8(u8 direction)
+{
+ return gUnknown_08375657[direction];
+}
+
+u8 sub_805FDF8(u8 direction)
+{
+ return gUnknown_08375660[direction];
+}
+
+u8 sub_805FE08(u8 direction)
+{
+ return gUnknown_08375669[direction];
+}
+
+u8 get_run_image_anim_num(u8 direction)
+{
+ return gUnknown_08375672[direction];
+}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 6a0fe1dce..71ff40435 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -27,7 +27,7 @@ extern u8 gOtherText_ItGotAway[];
extern u32 gUnknown_0202FF84[];
//Functions
-static u32 sub_80587D8(void);
+static u8 sub_80587D8(void);
static bool8 sub_8058854(struct MapObject *, u8);
static void npc_clear_strange_bits(struct MapObject *a);
static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
@@ -252,7 +252,7 @@ void sub_80587B4(struct Sprite *sprite)
meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8);
}
-static u32 sub_80587D8(void)
+static u8 sub_80587D8(void)
{
return 0;
}
diff --git a/tools/agbcc b/tools/agbcc
new file mode 160000
+Subproject 928b1951972d7ff8c46347b3dce9e254cf6c215