summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2017-05-23 21:29:35 -0400
committerGitHub <noreply@github.com>2017-05-23 21:29:35 -0400
commit53e1526631ce2b801e8e6bd0e4bd0caca8d8cb25 (patch)
tree369cb2702f9b5946382c1379c74dd84ef9055ef8
parent9640df02dd8651d5b05cf3767f6c7e16a697db3b (diff)
parent46a3ee4ae04764e9ad37c8ed7fdf760832eb0175 (diff)
Merge pull request #304 from PikalaxALT/field_map_obj
Field map obj
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules3
-rwxr-xr-x.idea/codeStyleSettings.xml35
-rw-r--r--asm/field_map_obj.s8771
-rw-r--r--include/asm.inc.h10
-rw-r--r--include/field_camera.h10
-rw-r--r--include/field_ground_effect.h11
-rwxr-xr-x[-rw-r--r--]include/field_map_obj.h83
-rw-r--r--include/field_map_obj_helpers.h3
-rw-r--r--include/fieldmap.h4
-rw-r--r--ld_script.txt2
-rw-r--r--src/field_camera.c10
-rwxr-xr-x[-rw-r--r--]src/field_map_obj.c2907
-rw-r--r--src/field_player_avatar.c12
14 files changed, 3051 insertions, 8811 deletions
diff --git a/.gitignore b/.gitignore
index 78af8c737..5b70a4586 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,4 @@ types_*.taghl
*.sa*
Thumbs.db
build/*
+.idea/codeStyleSettings.xml
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/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml
new file mode 100755
index 000000000..dee6609ca
--- /dev/null
+++ b/.idea/codeStyleSettings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectCodeStyleSettingsManager">
+ <option name="PER_PROJECT_SETTINGS">
+ <value>
+ <Objective-C-extensions>
+ <file>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
+ </file>
+ <class>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
+ </class>
+ <extensions>
+ <pair source="c" header="h" />
+ <pair source="cpp" header="h" />
+ </extensions>
+ </Objective-C-extensions>
+ </value>
+ </option>
+ <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
+ </component>
+</project> \ No newline at end of file
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index d54b57fed..6051dc6e6 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -6,5850 +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}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E398 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E39C @ =sub_805E3A0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E398: .4byte gMapObjects
-_0805E39C: .4byte sub_805E3A0
- thumb_func_end sub_805E37C
-
- thumb_func_start sub_805E3A0
-sub_805E3A0: @ 805E3A0
- push {r4,lr}
- ldr r3, _0805E3BC @ =gUnknown_083753FC
- 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
-_0805E3BC: .4byte gUnknown_083753FC
- thumb_func_end sub_805E3A0
-
- thumb_func_start sub_805E3C0
-sub_805E3C0: @ 805E3C0
- 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_805E3C0
-
- thumb_func_start sub_805E3D4
-sub_805E3D4: @ 805E3D4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, _0805E408 @ =gUnknown_0836DC09
- ldrb r1, [r4, 0x6]
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r4, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0
- beq _0805E3F6
- adds r0, r1, 0
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r1, r0, 24
-_0805E3F6:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E408: .4byte gUnknown_0836DC09
- thumb_func_end sub_805E3D4
-
- thumb_func_start sub_805E40C
-sub_805E40C: @ 805E40C
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r7, r1, 0
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0
- beq _0805E43C
- ldr r1, [r4, 0xC]
- ldr r0, [r4, 0x10]
- cmp r1, r0
- bne _0805E43C
- movs r0, 0
- strb r0, [r2]
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetOppositeDirection
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetDirection
-_0805E43C:
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl sub_805FF20
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r5, 0x1
- bne _0805E492
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetOppositeDirection
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetDirection
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl sub_805FF20
- lsls r0, 24
- lsrs r5, r0, 24
-_0805E492:
- cmp r5, 0
- beq _0805E4A4
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetStepInPlaceDelay16AnimId
- lsls r0, 24
- lsrs r6, r0, 24
-_0805E4A4:
- adds r0, r4, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x3
- strh r0, [r7, 0x30]
- movs r0, 0x1
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805E40C
-
- thumb_func_start sub_805E4C4
-sub_805E4C4: @ 805E4C4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E4E2
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805E4E2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E4C4
-
- thumb_func_start sub_805E4EC
-sub_805E4EC: @ 805E4EC
- 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_805E4EC
-
- thumb_func_start MoveFieldObjectInNextDirectionInSequence
-MoveFieldObjectInNextDirectionInSequence: @ 805E500
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- mov r8, r1
- adds r7, r2, 0
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x3
- bne _0805E522
- ldr r1, [r4, 0xC]
- ldr r0, [r4, 0x10]
- cmp r1, r0
- bne _0805E522
- movs r0, 0
- strb r0, [r2]
-_0805E522:
- adds r5, r4, 0
- adds r5, 0x21
- ldrb r0, [r5]
- adds r0, r7, r0
- ldrb r1, [r0]
- adds r0, r4, 0
- bl FieldObjectSetDirection
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl sub_805FF20
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805E57C
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldrb r0, [r5]
- adds r0, r7, r0
- ldrb r1, [r0]
- adds r0, r4, 0
- bl FieldObjectSetDirection
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl sub_805FF20
- lsls r0, 24
- lsrs r0, 24
-_0805E57C:
- cmp r0, 0
- beq _0805E58E
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetStepInPlaceDelay16AnimId
- lsls r0, 24
- lsrs r6, r0, 24
-_0805E58E:
- adds r0, r4, 0
- mov r1, r8
- adds r2, r6, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- mov r1, r8
- strh r0, [r1, 0x30]
- movs r0, 0x1
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end MoveFieldObjectInNextDirectionInSequence
-
- thumb_func_start sub_805E5B4
-sub_805E5B4: @ 805E5B4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E5D2
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805E5D2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E5B4
-
- thumb_func_start sub_805E5DC
-sub_805E5DC: @ 805E5DC
- 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, _0805E5F8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E5FC @ =sub_805E600
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E5F8: .4byte gMapObjects
-_0805E5FC: .4byte sub_805E600
- thumb_func_end sub_805E5DC
-
- thumb_func_start sub_805E600
-sub_805E600: @ 805E600
- push {r4,lr}
- ldr r3, _0805E61C @ =gUnknown_0837540C
- 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
-_0805E61C: .4byte gUnknown_0837540C
- thumb_func_end sub_805E600
-
- thumb_func_start sub_805E620
-sub_805E620: @ 805E620
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E664 @ =gUnknown_08375418
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805E64C
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E64C
- movs r0, 0x3
- strb r0, [r2]
-_0805E64C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E664: .4byte gUnknown_08375418
- thumb_func_end sub_805E620
-
- thumb_func_start sub_805E668
-sub_805E668: @ 805E668
- 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, _0805E684 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E688 @ =sub_805E68C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E684: .4byte gMapObjects
-_0805E688: .4byte sub_805E68C
- thumb_func_end sub_805E668
-
- thumb_func_start sub_805E68C
-sub_805E68C: @ 805E68C
- push {r4,lr}
- ldr r3, _0805E6A8 @ =gUnknown_0837541C
- 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
-_0805E6A8: .4byte gUnknown_0837541C
- thumb_func_end sub_805E68C
-
- thumb_func_start sub_805E6AC
-sub_805E6AC: @ 805E6AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E6F0 @ =gUnknown_08375428
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E6D8
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E6D8
- movs r0, 0x2
- strb r0, [r2]
-_0805E6D8:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E6F0: .4byte gUnknown_08375428
- thumb_func_end sub_805E6AC
-
- thumb_func_start sub_805E6F4
-sub_805E6F4: @ 805E6F4
- 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, _0805E710 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E714 @ =sub_805E718
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E710: .4byte gMapObjects
-_0805E714: .4byte sub_805E718
- thumb_func_end sub_805E6F4
-
- thumb_func_start sub_805E718
-sub_805E718: @ 805E718
- push {r4,lr}
- ldr r3, _0805E734 @ =gUnknown_0837542C
- 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
-_0805E734: .4byte gUnknown_0837542C
- thumb_func_end sub_805E718
-
- thumb_func_start sub_805E738
-sub_805E738: @ 805E738
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E77C @ =gUnknown_08375438
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E764
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E764
- movs r0, 0x2
- strb r0, [r2]
-_0805E764:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E77C: .4byte gUnknown_08375438
- thumb_func_end sub_805E738
-
- thumb_func_start sub_805E780
-sub_805E780: @ 805E780
- 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, _0805E79C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E7A0 @ =sub_805E7A4
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E79C: .4byte gMapObjects
-_0805E7A0: .4byte sub_805E7A4
- thumb_func_end sub_805E780
-
- thumb_func_start sub_805E7A4
-sub_805E7A4: @ 805E7A4
- push {r4,lr}
- ldr r3, _0805E7C0 @ =gUnknown_0837543C
- 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
-_0805E7C0: .4byte gUnknown_0837543C
- thumb_func_end sub_805E7A4
-
- thumb_func_start sub_805E7C4
-sub_805E7C4: @ 805E7C4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E808 @ =gUnknown_08375448
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805E7F0
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E7F0
- movs r0, 0x3
- strb r0, [r2]
-_0805E7F0:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E808: .4byte gUnknown_08375448
- thumb_func_end sub_805E7C4
-
- thumb_func_start sub_805E80C
-sub_805E80C: @ 805E80C
- 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, _0805E828 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E82C @ =sub_805E830
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E828: .4byte gMapObjects
-_0805E82C: .4byte sub_805E830
- thumb_func_end sub_805E80C
-
- thumb_func_start sub_805E830
-sub_805E830: @ 805E830
- push {r4,lr}
- ldr r3, _0805E84C @ =gUnknown_0837544C
- 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
-_0805E84C: .4byte gUnknown_0837544C
- thumb_func_end sub_805E830
-
- thumb_func_start sub_805E850
-sub_805E850: @ 805E850
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E894 @ =gUnknown_08375458
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805E87C
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E87C
- movs r0, 0x3
- strb r0, [r2]
-_0805E87C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E894: .4byte gUnknown_08375458
- thumb_func_end sub_805E850
-
- thumb_func_start sub_805E898
-sub_805E898: @ 805E898
- 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, _0805E8B4 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E8B8 @ =sub_805E8BC
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E8B4: .4byte gMapObjects
-_0805E8B8: .4byte sub_805E8BC
- thumb_func_end sub_805E898
-
- thumb_func_start sub_805E8BC
-sub_805E8BC: @ 805E8BC
- push {r4,lr}
- ldr r3, _0805E8D8 @ =gUnknown_0837545C
- 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
-_0805E8D8: .4byte gUnknown_0837545C
- thumb_func_end sub_805E8BC
-
- thumb_func_start sub_805E8DC
-sub_805E8DC: @ 805E8DC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E920 @ =gUnknown_08375468
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E908
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E908
- movs r0, 0x2
- strb r0, [r2]
-_0805E908:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E920: .4byte gUnknown_08375468
- thumb_func_end sub_805E8DC
-
- thumb_func_start sub_805E924
-sub_805E924: @ 805E924
- 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, _0805E940 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E944 @ =sub_805E948
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E940: .4byte gMapObjects
-_0805E944: .4byte sub_805E948
- thumb_func_end sub_805E924
-
- thumb_func_start sub_805E948
-sub_805E948: @ 805E948
- push {r4,lr}
- ldr r3, _0805E964 @ =gUnknown_0837546C
- 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
-_0805E964: .4byte gUnknown_0837546C
- thumb_func_end sub_805E948
-
- thumb_func_start sub_805E968
-sub_805E968: @ 805E968
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E9AC @ =gUnknown_08375240
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E994
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E994
- movs r0, 0x2
- strb r0, [r2]
-_0805E994:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E9AC: .4byte gUnknown_08375240
- thumb_func_end sub_805E968
-
- thumb_func_start sub_805E9B0
-sub_805E9B0: @ 805E9B0
- 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, _0805E9CC @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E9D0 @ =sub_805E9D4
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E9CC: .4byte gMapObjects
-_0805E9D0: .4byte sub_805E9D4
- thumb_func_end sub_805E9B0
-
- thumb_func_start sub_805E9D4
-sub_805E9D4: @ 805E9D4
- push {r4,lr}
- ldr r3, _0805E9F0 @ =gUnknown_08375478
- 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
-_0805E9F0: .4byte gUnknown_08375478
- thumb_func_end sub_805E9D4
-
- thumb_func_start sub_805E9F4
-sub_805E9F4: @ 805E9F4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EA38 @ =gUnknown_08375484
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EA20
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EA20
- movs r0, 0x3
- strb r0, [r2]
-_0805EA20:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EA38: .4byte gUnknown_08375484
- thumb_func_end sub_805E9F4
-
- thumb_func_start sub_805EA3C
-sub_805EA3C: @ 805EA3C
- 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, _0805EA58 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EA5C @ =sub_805EA60
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EA58: .4byte gMapObjects
-_0805EA5C: .4byte sub_805EA60
- thumb_func_end sub_805EA3C
-
- thumb_func_start sub_805EA60
-sub_805EA60: @ 805EA60
- push {r4,lr}
- ldr r3, _0805EA7C @ =gUnknown_08375488
- 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
-_0805EA7C: .4byte gUnknown_08375488
- thumb_func_end sub_805EA60
-
- thumb_func_start sub_805EA80
-sub_805EA80: @ 805EA80
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EAC4 @ =gUnknown_08375494
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EAAC
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EAAC
- movs r0, 0x3
- strb r0, [r2]
-_0805EAAC:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EAC4: .4byte gUnknown_08375494
- thumb_func_end sub_805EA80
-
- thumb_func_start sub_805EAC8
-sub_805EAC8: @ 805EAC8
- 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, _0805EAE4 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EAE8 @ =sub_805EAEC
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EAE4: .4byte gMapObjects
-_0805EAE8: .4byte sub_805EAEC
- thumb_func_end sub_805EAC8
-
- thumb_func_start sub_805EAEC
-sub_805EAEC: @ 805EAEC
- push {r4,lr}
- ldr r3, _0805EB08 @ =gUnknown_08375498
- 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
-_0805EB08: .4byte gUnknown_08375498
- thumb_func_end sub_805EAEC
-
- thumb_func_start sub_805EB0C
-sub_805EB0C: @ 805EB0C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EB50 @ =gUnknown_083754A4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805EB38
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EB38
- movs r0, 0x2
- strb r0, [r2]
-_0805EB38:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EB50: .4byte gUnknown_083754A4
- thumb_func_end sub_805EB0C
-
- thumb_func_start sub_805EB54
-sub_805EB54: @ 805EB54
- 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, _0805EB70 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EB74 @ =sub_805EB78
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EB70: .4byte gMapObjects
-_0805EB74: .4byte sub_805EB78
- thumb_func_end sub_805EB54
-
- thumb_func_start sub_805EB78
-sub_805EB78: @ 805EB78
- push {r4,lr}
- ldr r3, _0805EB94 @ =gUnknown_083754A8
- 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
-_0805EB94: .4byte gUnknown_083754A8
- thumb_func_end sub_805EB78
-
- thumb_func_start sub_805EB98
-sub_805EB98: @ 805EB98
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EBDC @ =gUnknown_083754B4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805EBC4
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EBC4
- movs r0, 0x2
- strb r0, [r2]
-_0805EBC4:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EBDC: .4byte gUnknown_083754B4
- thumb_func_end sub_805EB98
-
- thumb_func_start sub_805EBE0
-sub_805EBE0: @ 805EBE0
- 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, _0805EBFC @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EC00 @ =sub_805EC04
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EBFC: .4byte gMapObjects
-_0805EC00: .4byte sub_805EC04
- thumb_func_end sub_805EBE0
-
- thumb_func_start sub_805EC04
-sub_805EC04: @ 805EC04
- push {r4,lr}
- ldr r3, _0805EC20 @ =gUnknown_083754B8
- 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
-_0805EC20: .4byte gUnknown_083754B8
- thumb_func_end sub_805EC04
-
- thumb_func_start sub_805EC24
-sub_805EC24: @ 805EC24
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EC68 @ =gUnknown_083754C4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EC50
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EC50
- movs r0, 0x3
- strb r0, [r2]
-_0805EC50:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EC68: .4byte gUnknown_083754C4
- thumb_func_end sub_805EC24
-
- thumb_func_start sub_805EC6C
-sub_805EC6C: @ 805EC6C
- 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, _0805EC88 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EC8C @ =sub_805EC90
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EC88: .4byte gMapObjects
-_0805EC8C: .4byte sub_805EC90
- thumb_func_end sub_805EC6C
-
- thumb_func_start sub_805EC90
-sub_805EC90: @ 805EC90
- push {r4,lr}
- ldr r3, _0805ECAC @ =gUnknown_083754C8
- 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
-_0805ECAC: .4byte gUnknown_083754C8
- thumb_func_end sub_805EC90
-
- thumb_func_start sub_805ECB0
-sub_805ECB0: @ 805ECB0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805ECF4 @ =gUnknown_083754D4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805ECDC
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805ECDC
- movs r0, 0x3
- strb r0, [r2]
-_0805ECDC:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805ECF4: .4byte gUnknown_083754D4
- thumb_func_end sub_805ECB0
-
- thumb_func_start sub_805ECF8
-sub_805ECF8: @ 805ECF8
- 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, _0805ED14 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805ED18 @ =sub_805ED1C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805ED14: .4byte gMapObjects
-_0805ED18: .4byte sub_805ED1C
- thumb_func_end sub_805ECF8
-
- thumb_func_start sub_805ED1C
-sub_805ED1C: @ 805ED1C
- push {r4,lr}
- ldr r3, _0805ED38 @ =gUnknown_083754D8
- 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
-_0805ED38: .4byte gUnknown_083754D8
- thumb_func_end sub_805ED1C
-
- thumb_func_start sub_805ED3C
-sub_805ED3C: @ 805ED3C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805ED80 @ =gUnknown_083754E4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805ED68
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805ED68
- movs r0, 0x2
- strb r0, [r2]
-_0805ED68:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805ED80: .4byte gUnknown_083754E4
- thumb_func_end sub_805ED3C
-
- thumb_func_start sub_805ED84
-sub_805ED84: @ 805ED84
- 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, _0805EDA0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EDA4 @ =sub_805EDA8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EDA0: .4byte gMapObjects
-_0805EDA4: .4byte sub_805EDA8
- thumb_func_end sub_805ED84
-
- thumb_func_start sub_805EDA8
-sub_805EDA8: @ 805EDA8
- push {r4,lr}
- ldr r3, _0805EDC4 @ =gUnknown_083754E8
- 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
-_0805EDC4: .4byte gUnknown_083754E8
- thumb_func_end sub_805EDA8
-
- thumb_func_start sub_805EDC8
-sub_805EDC8: @ 805EDC8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EE0C @ =gUnknown_083754F4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805EDF4
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EDF4
- movs r0, 0x2
- strb r0, [r2]
-_0805EDF4:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EE0C: .4byte gUnknown_083754F4
- thumb_func_end sub_805EDC8
-
- thumb_func_start sub_805EE10
-sub_805EE10: @ 805EE10
- 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, _0805EE2C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EE30 @ =sub_805EE34
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EE2C: .4byte gMapObjects
-_0805EE30: .4byte sub_805EE34
- thumb_func_end sub_805EE10
-
- thumb_func_start sub_805EE34
-sub_805EE34: @ 805EE34
- push {r4,lr}
- ldr r3, _0805EE50 @ =gUnknown_083754F8
- 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
-_0805EE50: .4byte gUnknown_083754F8
- thumb_func_end sub_805EE34
-
- thumb_func_start sub_805EE54
-sub_805EE54: @ 805EE54
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EE98 @ =gUnknown_08375504
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EE80
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EE80
- movs r0, 0x3
- strb r0, [r2]
-_0805EE80:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EE98: .4byte gUnknown_08375504
- thumb_func_end sub_805EE54
-
- thumb_func_start sub_805EE9C
-sub_805EE9C: @ 805EE9C
- 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, _0805EEB8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EEBC @ =sub_805EEC0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EEB8: .4byte gMapObjects
-_0805EEBC: .4byte sub_805EEC0
- thumb_func_end sub_805EE9C
-
- thumb_func_start sub_805EEC0
-sub_805EEC0: @ 805EEC0
- push {r4,lr}
- ldr r3, _0805EEDC @ =gUnknown_08375508
- 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
-_0805EEDC: .4byte gUnknown_08375508
- thumb_func_end sub_805EEC0
-
- thumb_func_start sub_805EEE0
-sub_805EEE0: @ 805EEE0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EF24 @ =gUnknown_08375514
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EF0C
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EF0C
- movs r0, 0x3
- strb r0, [r2]
-_0805EF0C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EF24: .4byte gUnknown_08375514
- thumb_func_end sub_805EEE0
-
- thumb_func_start sub_805EF28
-sub_805EF28: @ 805EF28
- 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, _0805EF44 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EF48 @ =sub_805EF4C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EF44: .4byte gMapObjects
-_0805EF48: .4byte sub_805EF4C
- thumb_func_end sub_805EF28
-
- thumb_func_start sub_805EF4C
-sub_805EF4C: @ 805EF4C
- push {r4,lr}
- ldr r3, _0805EF68 @ =gUnknown_08375518
- 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
-_0805EF68: .4byte gUnknown_08375518
- thumb_func_end sub_805EF4C
-
- thumb_func_start sub_805EF6C
-sub_805EF6C: @ 805EF6C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EFB0 @ =gUnknown_08375524
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EF98
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EF98
- movs r0, 0x3
- strb r0, [r2]
-_0805EF98:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EFB0: .4byte gUnknown_08375524
- thumb_func_end sub_805EF6C
-
- thumb_func_start sub_805EFB4
-sub_805EFB4: @ 805EFB4
- 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, _0805EFD0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EFD4 @ =sub_805EFD8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EFD0: .4byte gMapObjects
-_0805EFD4: .4byte sub_805EFD8
- thumb_func_end sub_805EFB4
-
- thumb_func_start sub_805EFD8
-sub_805EFD8: @ 805EFD8
- push {r4,lr}
- ldr r3, _0805EFF4 @ =gUnknown_08375528
- 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
-_0805EFF4: .4byte gUnknown_08375528
- thumb_func_end sub_805EFD8
-
- thumb_func_start sub_805EFF8
-sub_805EFF8: @ 805EFF8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F03C @ =gUnknown_08375534
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F024
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F024
- movs r0, 0x3
- strb r0, [r2]
-_0805F024:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F03C: .4byte gUnknown_08375534
- thumb_func_end sub_805EFF8
-
- thumb_func_start sub_805F040
-sub_805F040: @ 805F040
- 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, _0805F05C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F060 @ =sub_805F064
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F05C: .4byte gMapObjects
-_0805F060: .4byte sub_805F064
- thumb_func_end sub_805F040
-
- thumb_func_start sub_805F064
-sub_805F064: @ 805F064
- push {r4,lr}
- ldr r3, _0805F080 @ =gUnknown_08375538
- 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
-_0805F080: .4byte gUnknown_08375538
- thumb_func_end sub_805F064
-
- thumb_func_start sub_805F084
-sub_805F084: @ 805F084
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F0C8 @ =gUnknown_08375544
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F0B0
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F0B0
- movs r0, 0x3
- strb r0, [r2]
-_0805F0B0:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F0C8: .4byte gUnknown_08375544
- thumb_func_end sub_805F084
-
- thumb_func_start sub_805F0CC
-sub_805F0CC: @ 805F0CC
- 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, _0805F0E8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F0EC @ =sub_805F0F0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F0E8: .4byte gMapObjects
-_0805F0EC: .4byte sub_805F0F0
- thumb_func_end sub_805F0CC
-
- thumb_func_start sub_805F0F0
-sub_805F0F0: @ 805F0F0
- push {r4,lr}
- ldr r3, _0805F10C @ =gUnknown_08375548
- 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
-_0805F10C: .4byte gUnknown_08375548
- thumb_func_end sub_805F0F0
-
- thumb_func_start sub_805F110
-sub_805F110: @ 805F110
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F154 @ =gUnknown_08375554
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F13C
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F13C
- movs r0, 0x3
- strb r0, [r2]
-_0805F13C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F154: .4byte gUnknown_08375554
- thumb_func_end sub_805F110
-
- thumb_func_start sub_805F158
-sub_805F158: @ 805F158
- 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, _0805F174 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F178 @ =sub_805F17C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F174: .4byte gMapObjects
-_0805F178: .4byte sub_805F17C
- thumb_func_end sub_805F158
-
- thumb_func_start sub_805F17C
-sub_805F17C: @ 805F17C
- push {r4,lr}
- ldr r3, _0805F198 @ =gUnknown_08375558
- 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
-_0805F198: .4byte gUnknown_08375558
- thumb_func_end sub_805F17C
-
- thumb_func_start sub_805F19C
-sub_805F19C: @ 805F19C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F1E0 @ =gUnknown_08375564
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F1C8
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F1C8
- movs r0, 0x3
- strb r0, [r2]
-_0805F1C8:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F1E0: .4byte gUnknown_08375564
- thumb_func_end sub_805F19C
-
- thumb_func_start sub_805F1E4
-sub_805F1E4: @ 805F1E4
- 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, _0805F200 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F204 @ =sub_805F208
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F200: .4byte gMapObjects
-_0805F204: .4byte sub_805F208
- thumb_func_end sub_805F1E4
-
- thumb_func_start sub_805F208
-sub_805F208: @ 805F208
- push {r4,lr}
- ldr r3, _0805F224 @ =gUnknown_08375568
- 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
-_0805F224: .4byte gUnknown_08375568
- thumb_func_end sub_805F208
-
- thumb_func_start sub_805F228
-sub_805F228: @ 805F228
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F26C @ =gUnknown_08375574
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F254
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F254
- movs r0, 0x3
- strb r0, [r2]
-_0805F254:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F26C: .4byte gUnknown_08375574
- thumb_func_end sub_805F228
-
- thumb_func_start sub_805F270
-sub_805F270: @ 805F270
- 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, _0805F28C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F290 @ =sub_805F294
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F28C: .4byte gMapObjects
-_0805F290: .4byte sub_805F294
- thumb_func_end sub_805F270
-
- thumb_func_start sub_805F294
-sub_805F294: @ 805F294
- push {r4,lr}
- ldr r3, _0805F2B0 @ =gUnknown_08375578
- 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
-_0805F2B0: .4byte gUnknown_08375578
- thumb_func_end sub_805F294
-
- thumb_func_start sub_805F2B4
-sub_805F2B4: @ 805F2B4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F2F8 @ =gUnknown_08375584
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F2E0
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F2E0
- movs r0, 0x3
- strb r0, [r2]
-_0805F2E0:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F2F8: .4byte gUnknown_08375584
- thumb_func_end sub_805F2B4
-
thumb_func_start sub_805F2FC
sub_805F2FC: @ 805F2FC
push {lr}
@@ -7192,2933 +1348,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_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
-
- thumb_func_start sub_805FE28
-sub_805FE28: @ 805FE28
- push {r4,lr}
- adds r3, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldrb r0, [r0, 0x1]
- lsls r0, 27
- lsrs r4, r0, 31
- cmp r4, 0
- bne _0805FE5E
- adds r0, r3, 0
- adds r0, 0x2A
- strb r2, [r0]
- adds r0, 0x1
- ldrb r2, [r0]
- adds r1, r0, 0
- cmp r2, 0x1
- bne _0805FE50
- movs r0, 0x2
- strb r0, [r1]
- b _0805FE56
-_0805FE50:
- cmp r2, 0x3
- bne _0805FE56
- strb r4, [r1]
-_0805FE56:
- ldrb r1, [r1]
- adds r0, r3, 0
- bl SeekSpriteAnim
-_0805FE5E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_805FE28
-
- thumb_func_start sub_805FE64
-sub_805FE64: @ 805FE64
- push {lr}
- lsls r2, 24
- lsrs r2, 24
- ldrb r0, [r0, 0x1]
- lsls r0, 27
- cmp r0, 0
- blt _0805FE8C
- adds r0, r1, 0
- adds r0, 0x2A
- strb r2, [r0]
- movs r2, 0x3
- adds r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _0805FE84
- movs r2, 0x1
-_0805FE84:
- adds r0, r1, 0
- adds r1, r2, 0
- bl SeekSpriteAnim
-_0805FE8C:
- pop {r0}
- bx r0
- thumb_func_end sub_805FE64
-
- thumb_func_start sub_805FE90
-sub_805FE90: @ 805FE90
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- asrs r0, 16
- lsls r2, 16
- asrs r2, 16
- cmp r0, r2
- ble _0805FEAA
- movs r0, 0x3
- b _0805FEC0
-_0805FEAA:
- cmp r0, r2
- bge _0805FEB2
- movs r0, 0x4
- b _0805FEC0
-_0805FEB2:
- lsls r1, 16
- lsls r0, r3, 16
- cmp r1, r0
- bgt _0805FEBE
- movs r0, 0x1
- b _0805FEC0
-_0805FEBE:
- movs r0, 0x2
-_0805FEC0:
- pop {r1}
- bx r1
- thumb_func_end sub_805FE90
-
- thumb_func_start npc_set_running_behaviour_etc
-npc_set_running_behaviour_etc: @ 805FEC4
- push {r4,lr}
- mov r12, r0
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0
- strb r1, [r0, 0x6]
- adds r0, 0x21
- strb r3, [r0]
- adds r0, 0x1
- strb r3, [r0]
- ldr r4, _0805FF08 @ =gSprites
- mov r0, r12
- ldrb r2, [r0, 0x4]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r2, r4, 0
- adds r2, 0x1C
- adds r0, r2
- ldr r2, _0805FF0C @ =gUnknown_0836DA88
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- str r1, [r0]
- mov r0, r12
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r3, [r0, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805FF08: .4byte gSprites
-_0805FF0C: .4byte gUnknown_0836DA88
- thumb_func_end npc_set_running_behaviour_etc
-
- thumb_func_start npc_running_behaviour_by_direction
-npc_running_behaviour_by_direction: @ 805FF10
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FF1C @ =gUnknown_0837567B
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FF1C: .4byte gUnknown_0837567B
- thumb_func_end npc_running_behaviour_by_direction
-
- thumb_func_start sub_805FF20
-sub_805FF20: @ 805FF20
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- lsls r5, r1, 24
- lsrs r5, 24
- ldrh r1, [r6, 0x10]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r6, 0x12]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- adds r0, r5, 0
- mov r1, sp
- adds r2, r4, 0
- bl MoveCoords
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r4, r0]
- adds r0, r6, 0
- adds r3, r5, 0
- bl npc_block_way
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805FF20
-
- thumb_func_start npc_block_way
-npc_block_way: @ 805FF60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- lsls r1, 16
- lsls r2, 16
- lsls r3, 24
- lsrs r7, r3, 24
- mov r8, r7
- lsrs r0, r1, 16
- mov r9, r0
- asrs r5, r1, 16
- lsrs r0, r2, 16
- mov r10, r0
- asrs r4, r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl IsCoordOutsideFieldObjectMovementRect
- lsls r0, 24
- cmp r0, 0
- beq _0805FF96
- movs r0, 0x1
- b _08060016
-_0805FF96:
- adds r0, r5, 0
- adds r1, r4, 0
- bl MapGridIsImpassableAt
- lsls r0, 24
- cmp r0, 0
- bne _0805FFD8
- adds r0, r5, 0
- adds r1, r4, 0
- bl GetMapBorderIdAt
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0805FFD8
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- adds r3, r7, 0
- bl IsMetatileDirectionallyImpassable
- lsls r0, 24
- cmp r0, 0
- bne _0805FFD8
- ldrb r0, [r6, 0x1]
- lsrs r0, 7
- cmp r0, 0
- beq _0805FFDC
- mov r0, r8
- bl CanCameraMoveInDirection
- cmp r0, 0
- bne _0805FFDC
-_0805FFD8:
- movs r0, 0x2
- b _08060016
-_0805FFDC:
- ldrb r0, [r6, 0xB]
- lsls r0, 28
- lsrs r0, 28
- mov r2, r9
- lsls r1, r2, 16
- asrs r5, r1, 16
- mov r2, r10
- lsls r1, r2, 16
- asrs r4, r1, 16
- adds r1, r5, 0
- adds r2, r4, 0
- bl IsZCoordMismatchAt
- lsls r0, 24
- cmp r0, 0
- beq _08060000
- movs r0, 0x3
- b _08060016
-_08060000:
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl CheckForCollisionBetweenFieldObjects
- lsls r0, 24
- cmp r0, 0
- bne _08060014
- movs r0, 0
- b _08060016
-_08060014:
- movs r0, 0x4
-_08060016:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end npc_block_way
-
- thumb_func_start sub_8060024
-sub_8060024: @ 8060024
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- lsls r1, 16
- lsls r2, 16
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsrs r0, r1, 16
- mov r9, r0
- asrs r6, r1, 16
- lsrs r0, r2, 16
- mov r10, r0
- asrs r5, r2, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl IsCoordOutsideFieldObjectMovementRect
- lsls r0, 24
- lsrs r0, 24
- negs r1, r0
- orrs r1, r0
- lsrs r4, r1, 31
- adds r0, r6, 0
- adds r1, r5, 0
- bl MapGridIsImpassableAt
- lsls r0, 24
- cmp r0, 0
- bne _0806009C
- adds r0, r6, 0
- adds r1, r5, 0
- bl GetMapBorderIdAt
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0806009C
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- mov r3, r8
- bl IsMetatileDirectionallyImpassable
- lsls r0, 24
- cmp r0, 0
- bne _0806009C
- ldrb r0, [r7, 0x1]
- lsrs r0, 7
- cmp r0, 0
- beq _080600A0
- mov r0, r8
- bl CanCameraMoveInDirection
- cmp r0, 0
- bne _080600A0
-_0806009C:
- movs r0, 0x2
- orrs r4, r0
-_080600A0:
- ldrb r0, [r7, 0xB]
- lsls r0, 28
- lsrs r0, 28
- mov r2, r9
- lsls r1, r2, 16
- asrs r6, r1, 16
- mov r2, r10
- lsls r1, r2, 16
- asrs r5, r1, 16
- adds r1, r6, 0
- adds r2, r5, 0
- bl IsZCoordMismatchAt
- lsls r0, 24
- cmp r0, 0
- beq _080600C8
- movs r0, 0x4
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080600C8:
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl CheckForCollisionBetweenFieldObjects
- lsls r0, 24
- cmp r0, 0
- beq _080600E0
- movs r0, 0x8
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080600E0:
- adds r0, r4, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8060024
-
- thumb_func_start IsCoordOutsideFieldObjectMovementRect
-IsCoordOutsideFieldObjectMovementRect: @ 80600F0
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r3, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- ldrb r1, [r4, 0x19]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _08060128
- lsls r1, 28
- lsrs r2, r1, 28
- ldrh r0, [r4, 0xC]
- subs r2, r0, r2
- lsrs r1, 28
- adds r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r2, 16
- lsls r0, r3, 16
- asrs r3, r0, 16
- cmp r2, r0
- bgt _08060154
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, r3
- blt _08060154
-_08060128:
- ldrb r1, [r4, 0x19]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _08060158
- lsls r1, 24
- lsrs r2, r1, 28
- ldrh r0, [r4, 0xE]
- subs r2, r0, r2
- lsrs r1, 28
- adds r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r2, 16
- lsls r0, r5, 16
- asrs r3, r0, 16
- cmp r2, r0
- bgt _08060154
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, r3
- bge _08060158
-_08060154:
- movs r0, 0x1
- b _0806015A
-_08060158:
- movs r0, 0
-_0806015A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end IsCoordOutsideFieldObjectMovementRect
-
- thumb_func_start IsMetatileDirectionallyImpassable
-IsMetatileDirectionallyImpassable: @ 8060160
- push {r4-r7,lr}
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r7, r2, 16
- lsls r3, 24
- ldr r1, _080601A8 @ =gUnknown_08375684
- lsrs r3, 22
- subs r5, r3, 0x4
- adds r1, r5, r1
- ldrb r0, [r0, 0x1E]
- ldr r1, [r1]
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _080601A2
- ldr r4, _080601AC @ =gUnknown_08375694
- adds r4, r5, r4
- lsls r0, r6, 16
- asrs r0, 16
- lsls r1, r7, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _080601B0
-_080601A2:
- movs r0, 0x1
- b _080601B2
- .align 2, 0
-_080601A8: .4byte gUnknown_08375684
-_080601AC: .4byte gUnknown_08375694
-_080601B0:
- movs r0, 0
-_080601B2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end IsMetatileDirectionallyImpassable
-
- thumb_func_start CheckForCollisionBetweenFieldObjects
-CheckForCollisionBetweenFieldObjects: @ 80601B8
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r7, r1, 16
- movs r4, 0
- lsls r2, 16
- asrs r5, r2, 16
-_080601C6:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- ldr r1, _0806021C @ =gMapObjects
- adds r2, r0, r1
- ldrb r0, [r2]
- lsls r0, 31
- cmp r0, 0
- beq _08060220
- cmp r2, r6
- beq _08060220
- movs r0, 0x10
- ldrsh r1, [r2, r0]
- lsls r0, r7, 16
- asrs r3, r0, 16
- cmp r1, r3
- bne _080601F0
- movs r1, 0x12
- ldrsh r0, [r2, r1]
- cmp r0, r5
- beq _08060200
-_080601F0:
- movs r1, 0x14
- ldrsh r0, [r2, r1]
- cmp r0, r3
- bne _08060220
- movs r1, 0x16
- ldrsh r0, [r2, r1]
- cmp r0, r5
- bne _08060220
-_08060200:
- ldrb r0, [r6, 0xB]
- lsls r0, 28
- lsrs r0, 28
- ldrb r1, [r2, 0xB]
- lsls r1, 28
- lsrs r1, 28
- bl AreZCoordsCompatible
- lsls r0, 24
- cmp r0, 0
- beq _08060220
- movs r0, 0x1
- b _0806022C
- .align 2, 0
-_0806021C: .4byte gMapObjects
-_08060220:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080601C6
- movs r0, 0
-_0806022C:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CheckForCollisionBetweenFieldObjects
-
- thumb_func_start sub_8060234
-sub_8060234: @ 8060234
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08060280
- ldr r3, _08060278 @ =gSprites
- ldr r2, _0806027C @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x3C]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08060280
- movs r0, 0x1
- b _08060282
- .align 2, 0
-_08060278: .4byte gSprites
-_0806027C: .4byte gMapObjects
-_08060280:
- movs r0, 0
-_08060282:
- add sp, 0x4
- pop {r1}
- bx r1
- thumb_func_end sub_8060234
-
- thumb_func_start sub_8060288
-sub_8060288: @ 8060288
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _080602C6
- ldr r3, _080602CC @ =gSprites
- ldr r2, _080602D0 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r2, [r1, 0x3C]
- movs r0, 0x4
- orrs r0, r2
- strh r0, [r1, 0x3C]
-_080602C6:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080602CC: .4byte gSprites
-_080602D0: .4byte gMapObjects
- thumb_func_end sub_8060288
-
- thumb_func_start MoveCoords
-MoveCoords: @ 80602D4
- push {r4,lr}
- lsls r0, 24
- ldr r3, _080602F4 @ =gDirectionToVector
- lsrs r0, 22
- adds r0, r3
- ldrh r3, [r0]
- ldrh r4, [r1]
- adds r3, r4
- strh r3, [r1]
- ldrh r0, [r0, 0x2]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080602F4: .4byte gDirectionToVector
- thumb_func_end MoveCoords
-
- thumb_func_start unref_sub_80602F8
-unref_sub_80602F8: @ 80602F8
- push {r4,lr}
- lsls r0, 24
- ldr r3, _0806031C @ =gDirectionToVector
- lsrs r0, 22
- adds r0, r3
- ldrh r3, [r0]
- lsls r3, 4
- ldrh r4, [r1]
- adds r3, r4
- strh r3, [r1]
- ldrh r0, [r0, 0x2]
- lsls r0, 4
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806031C: .4byte gDirectionToVector
- thumb_func_end unref_sub_80602F8
-
- thumb_func_start sub_8060320
-sub_8060320: @ 8060320
- push {r4-r7,lr}
- adds r4, r1, 0
- ldr r1, [sp, 0x14]
- lsls r0, 24
- lsls r3, 16
- lsrs r3, 16
- adds r7, r3, 0
- lsls r1, 16
- lsrs r6, r1, 16
- mov r12, r6
- ldr r1, _08060384 @ =gDirectionToVector
- lsrs r0, 22
- adds r5, r0, r1
- movs r0, 0
- ldrsh r1, [r5, r0]
- cmp r1, 0
- ble _0806034C
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r3, [r4]
- adds r0, r3
- strh r0, [r4]
-_0806034C:
- cmp r1, 0
- bge _0806035A
- ldrh r1, [r4]
- lsls r0, r7, 16
- asrs r0, 16
- subs r1, r0
- strh r1, [r4]
-_0806035A:
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- cmp r1, 0
- ble _0806036C
- lsls r0, r6, 16
- asrs r0, 16
- ldrh r3, [r2]
- adds r0, r3
- strh r0, [r2]
-_0806036C:
- cmp r1, 0
- bge _0806037C
- ldrh r1, [r2]
- mov r3, r12
- lsls r0, r3, 16
- asrs r0, 16
- subs r1, r0
- strh r1, [r2]
-_0806037C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08060384: .4byte gDirectionToVector
- thumb_func_end sub_8060320
-
- thumb_func_start sub_8060388
-sub_8060388: @ 8060388
- push {r4,r5,lr}
- ldr r5, _080603C0 @ =gSaveBlock1
- ldrh r4, [r5]
- lsls r0, 16
- asrs r0, 16
- subs r0, r4
- lsls r0, 4
- strh r0, [r2]
- ldrh r0, [r5, 0x2]
- lsls r1, 16
- asrs r1, 16
- subs r1, r0
- lsls r1, 4
- strh r1, [r3]
- ldr r1, _080603C4 @ =gUnknown_0300489C
- ldrh r0, [r2]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2]
- ldr r1, _080603C8 @ =gUnknown_03004898
- ldrh r0, [r3]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080603C0: .4byte gSaveBlock1
-_080603C4: .4byte gUnknown_0300489C
-_080603C8: .4byte gUnknown_03004898
- thumb_func_end sub_8060388
-
- thumb_func_start sub_80603CC
-sub_80603CC: @ 80603CC
- push {r4-r7,lr}
- adds r7, r2, 0
- mov r12, r3
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r0, _0806045C @ =gUnknown_0300489C
- ldrh r0, [r0]
- negs r0, r0
- ldr r1, _08060460 @ =gUnknown_03004880
- ldr r2, [r1, 0x10]
- subs r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, _08060464 @ =gUnknown_03004898
- ldrh r0, [r0]
- negs r0, r0
- ldr r1, [r1, 0x14]
- subs r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r2, 0
- ble _08060406
- lsls r0, r3, 16
- movs r3, 0x80
- lsls r3, 13
- adds r0, r3
- lsrs r3, r0, 16
-_08060406:
- cmp r2, 0
- bge _08060412
- lsls r0, r3, 16
- ldr r2, _08060468 @ =0xfff00000
- adds r0, r2
- lsrs r3, r0, 16
-_08060412:
- cmp r1, 0
- ble _08060420
- lsls r0, r4, 16
- movs r2, 0x80
- lsls r2, 13
- adds r0, r2
- lsrs r4, r0, 16
-_08060420:
- cmp r1, 0
- bge _0806042C
- lsls r0, r4, 16
- ldr r1, _08060468 @ =0xfff00000
- adds r0, r1
- lsrs r4, r0, 16
-_0806042C:
- ldr r2, _0806046C @ =gSaveBlock1
- ldrh r1, [r2]
- lsls r0, r5, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 4
- lsls r1, r3, 16
- asrs r1, 16
- adds r1, r0
- strh r1, [r7]
- ldrh r1, [r2, 0x2]
- lsls r0, r6, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 4
- lsls r1, r4, 16
- asrs r1, 16
- adds r1, r0
- mov r2, r12
- strh r1, [r2]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806045C: .4byte gUnknown_0300489C
-_08060460: .4byte gUnknown_03004880
-_08060464: .4byte gUnknown_03004898
-_08060468: .4byte 0xfff00000
-_0806046C: .4byte gSaveBlock1
- thumb_func_end sub_80603CC
-
- thumb_func_start sub_8060470
-sub_8060470: @ 8060470
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r6, r0, 0
- mov r8, r1
- adds r4, r2, 0
- adds r5, r3, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r1, 0
- ldrsh r0, [r6, r1]
- mov r2, r8
- movs r3, 0
- ldrsh r1, [r2, r3]
- adds r2, r6, 0
- mov r3, r8
- bl sub_80603CC
- lsls r4, 16
- asrs r4, 16
- ldrh r0, [r6]
- adds r4, r0
- strh r4, [r6]
- lsls r5, 16
- asrs r5, 16
- mov r1, r8
- ldrh r1, [r1]
- adds r5, r1
- mov r2, r8
- strh r5, [r2]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8060470
-
- thumb_func_start GetFieldObjectMovingCameraOffset
-GetFieldObjectMovingCameraOffset: @ 80604BC
- push {lr}
- adds r2, r0, 0
- movs r0, 0
- strh r0, [r2]
- strh r0, [r1]
- ldr r3, _080604F8 @ =gUnknown_03004880
- ldr r0, [r3, 0x10]
- cmp r0, 0
- ble _080604D2
- movs r0, 0x1
- strh r0, [r2]
-_080604D2:
- ldr r0, [r3, 0x10]
- cmp r0, 0
- bge _080604DE
- ldrh r0, [r2]
- subs r0, 0x1
- strh r0, [r2]
-_080604DE:
- ldr r2, [r3, 0x14]
- cmp r2, 0
- ble _080604EA
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080604EA:
- cmp r2, 0
- bge _080604F4
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080604F4:
- pop {r0}
- bx r0
- .align 2, 0
-_080604F8: .4byte gUnknown_03004880
- thumb_func_end GetFieldObjectMovingCameraOffset
-
- thumb_func_start FieldObjectMoveDestCoords
-FieldObjectMoveDestCoords: @ 80604FC
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- ldrh r4, [r0, 0x10]
- strh r4, [r2]
- ldrh r0, [r0, 0x12]
- strh r0, [r3]
- adds r0, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- bl MoveCoords
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectMoveDestCoords
-
- thumb_func_start FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
-FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive: @ 806051C
- push {lr}
- ldrb r1, [r0]
- movs r0, 0x42
- ands r0, r1
- cmp r0, 0
- bne _0806052C
- movs r0, 0
- b _0806052E
-_0806052C:
- movs r0, 0x1
-_0806052E:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
-
- thumb_func_start FieldObjectIsSpecialAnimActive
-FieldObjectIsSpecialAnimActive: @ 8060534
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- bge _0806054A
- ldrb r0, [r1, 0x1C]
- cmp r0, 0xFF
- beq _0806054A
- movs r0, 0x1
- b _0806054C
-_0806054A:
- movs r0, 0
-_0806054C:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectIsSpecialAnimActive
-
- thumb_func_start FieldObjectSetSpecialAnim
-FieldObjectSetSpecialAnim: @ 8060550
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _08060590
- adds r0, r4, 0
- bl UnfreezeMapObject
- strb r5, [r4, 0x1C]
- ldrb r0, [r4]
- movs r1, 0x40
- orrs r0, r1
- movs r1, 0x7F
- ands r0, r1
- strb r0, [r4]
- ldr r2, _0806058C @ =gSprites
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x32]
- movs r0, 0
- b _08060592
- .align 2, 0
-_0806058C: .4byte gSprites
-_08060590:
- movs r0, 0x1
-_08060592:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectSetSpecialAnim
-
- thumb_func_start FieldObjectForceSetSpecialAnim
-FieldObjectForceSetSpecialAnim: @ 8060598
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- bl FieldObjectClearAnimIfSpecialAnimActive
- adds r0, r5, 0
- adds r1, r4, 0
- bl FieldObjectSetSpecialAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectForceSetSpecialAnim
-
- thumb_func_start FieldObjectClearAnimIfSpecialAnimActive
-FieldObjectClearAnimIfSpecialAnimActive: @ 80605B4
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- bge _080605C6
- adds r0, r1, 0
- bl FieldObjectClearAnim
-_080605C6:
- pop {r0}
- bx r0
- thumb_func_end FieldObjectClearAnimIfSpecialAnimActive
-
- thumb_func_start FieldObjectClearAnim
-FieldObjectClearAnim: @ 80605CC
- movs r1, 0xFF
- strb r1, [r0, 0x1C]
- ldrb r2, [r0]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- movs r2, 0x7F
- ands r1, r2
- strb r1, [r0]
- ldr r3, _080605FC @ =gSprites
- ldrb r2, [r0, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- movs r2, 0
- strh r2, [r1, 0x30]
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x32]
- bx lr
- .align 2, 0
-_080605FC: .4byte gSprites
- thumb_func_end FieldObjectClearAnim
-
- thumb_func_start FieldObjectCheckIfSpecialAnimFinishedOrInactive
-FieldObjectCheckIfSpecialAnimFinishedOrInactive: @ 8060600
- push {lr}
- ldrb r1, [r0]
- lsls r0, r1, 25
- cmp r0, 0
- blt _0806060E
- movs r0, 0x10
- b _08060610
-_0806060E:
- lsrs r0, r1, 7
-_08060610:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectCheckIfSpecialAnimFinishedOrInactive
-
- thumb_func_start FieldObjectClearAnimIfSpecialAnimFinished
-FieldObjectClearAnimIfSpecialAnimFinished: @ 8060614
- push {r4,r5,lr}
- adds r5, r0, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0806062E
- cmp r4, 0x10
- beq _0806062E
- adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimActive
-_0806062E:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectClearAnimIfSpecialAnimFinished
-
- thumb_func_start FieldObjectGetSpecialAnim
-FieldObjectGetSpecialAnim: @ 8060638
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08060648
- movs r0, 0xFF
- b _0806064A
-_08060648:
- ldrb r0, [r1, 0x1C]
-_0806064A:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectGetSpecialAnim
-
- thumb_func_start meta_step
-meta_step: @ 8060650
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- bl DoGroundEffects_OnSpawn
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80634A0
- adds r0, r4, 0
- bl FieldObjectIsSpecialAnimActive
- lsls r0, 24
- cmp r0, 0
- beq _0806067A
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectExecSpecialAnim
- b _08060690
-_0806067A:
- ldrb r0, [r4, 0x1]
- lsls r0, 31
- cmp r0, 0
- bne _08060690
-_08060682:
- adds r0, r4, 0
- adds r1, r5, 0
- bl _call_via_r6
- lsls r0, 24
- cmp r0, 0
- bne _08060682
-_08060690:
- adds r0, r4, 0
- adds r1, r5, 0
- bl DoGroundEffects_OnBeginStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl DoGroundEffects_OnFinishStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl npc_obj_transfer_image_anim_pause_flag
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80634D0
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectUpdateSubpriority
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end meta_step
-
- thumb_func_start GetFaceDirectionAnimId
-GetFaceDirectionAnimId: @ 80606C0
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080606E8 @ =gUnknown_083756C8
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080606D8
- movs r4, 0
-_080606D8:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080606E8: .4byte gUnknown_083756C8
- thumb_func_end GetFaceDirectionAnimId
-
- thumb_func_start GetSimpleGoAnimId
-GetSimpleGoAnimId: @ 80606EC
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060714 @ =gUnknown_083756CD
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060704
- movs r4, 0
-_08060704:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060714: .4byte gUnknown_083756CD
- thumb_func_end GetSimpleGoAnimId
-
- thumb_func_start GetGoSpeed0AnimId
-GetGoSpeed0AnimId: @ 8060718
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060740 @ =gUnknown_083756D2
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060730
- movs r4, 0
-_08060730:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060740: .4byte gUnknown_083756D2
- thumb_func_end GetGoSpeed0AnimId
-
- thumb_func_start sub_8060744
-sub_8060744: @ 8060744
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0806076C @ =gUnknown_083756D7
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _0806075C
- movs r4, 0
-_0806075C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806076C: .4byte gUnknown_083756D7
- thumb_func_end sub_8060744
-
- thumb_func_start d2s_08064034
-d2s_08064034: @ 8060770
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060798 @ =gUnknown_083756DC
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060788
- movs r4, 0
-_08060788:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060798: .4byte gUnknown_083756DC
- thumb_func_end d2s_08064034
-
- thumb_func_start sub_806079C
-sub_806079C: @ 806079C
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080607C4 @ =gUnknown_083756E1
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080607B4
- movs r4, 0
-_080607B4:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080607C4: .4byte gUnknown_083756E1
- thumb_func_end sub_806079C
-
- thumb_func_start sub_80607C8
-sub_80607C8: @ 80607C8
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080607F0 @ =gUnknown_083756E6
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080607E0
- movs r4, 0
-_080607E0:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080607F0: .4byte gUnknown_083756E6
- thumb_func_end sub_80607C8
-
- thumb_func_start sub_80607F4
-sub_80607F4: @ 80607F4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0806081C @ =gUnknown_083756EB
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _0806080C
- movs r4, 0
-_0806080C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806081C: .4byte gUnknown_083756EB
- thumb_func_end sub_80607F4
-
- thumb_func_start GetJumpLedgeAnimId
-GetJumpLedgeAnimId: @ 8060820
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060848 @ =gUnknown_083756F0
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060838
- movs r4, 0
-_08060838:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060848: .4byte gUnknown_083756F0
- thumb_func_end GetJumpLedgeAnimId
-
- thumb_func_start sub_806084C
-sub_806084C: @ 806084C
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060874 @ =gUnknown_083756F5
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060864
- movs r4, 0
-_08060864:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060874: .4byte gUnknown_083756F5
- thumb_func_end sub_806084C
-
- thumb_func_start sub_8060878
-sub_8060878: @ 8060878
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080608A0 @ =gUnknown_083756FA
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060890
- movs r4, 0
-_08060890:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080608A0: .4byte gUnknown_083756FA
- thumb_func_end sub_8060878
-
- thumb_func_start sub_80608A4
-sub_80608A4: @ 80608A4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080608CC @ =gUnknown_083756FF
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080608BC
- movs r4, 0
-_080608BC:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080608CC: .4byte gUnknown_083756FF
- thumb_func_end sub_80608A4
-
- thumb_func_start sub_80608D0
-sub_80608D0: @ 80608D0
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080608F8 @ =gUnknown_08375704
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080608E8
- movs r4, 0
-_080608E8:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080608F8: .4byte gUnknown_08375704
- thumb_func_end sub_80608D0
-
- thumb_func_start GetStepInPlaceDelay32AnimId
-GetStepInPlaceDelay32AnimId: @ 80608FC
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060924 @ =gUnknown_08375709
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060914
- movs r4, 0
-_08060914:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060924: .4byte gUnknown_08375709
- thumb_func_end GetStepInPlaceDelay32AnimId
-
- thumb_func_start GetStepInPlaceDelay16AnimId
-GetStepInPlaceDelay16AnimId: @ 8060928
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060950 @ =gUnknown_0837570E
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060940
- movs r4, 0
-_08060940:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060950: .4byte gUnknown_0837570E
- thumb_func_end GetStepInPlaceDelay16AnimId
-
- thumb_func_start GetStepInPlaceDelay8AnimId
-GetStepInPlaceDelay8AnimId: @ 8060954
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0806097C @ =gUnknown_08375713
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _0806096C
- movs r4, 0
-_0806096C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806097C: .4byte gUnknown_08375713
- thumb_func_end GetStepInPlaceDelay8AnimId
-
- thumb_func_start GetStepInPlaceDelay4AnimId
-GetStepInPlaceDelay4AnimId: @ 8060980
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080609A8 @ =gUnknown_08375718
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060998
- movs r4, 0
-_08060998:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080609A8: .4byte gUnknown_08375718
- thumb_func_end GetStepInPlaceDelay4AnimId
-
- thumb_func_start FieldObjectFaceOppositeDirection
-FieldObjectFaceOppositeDirection: @ 80609AC
- push {r4,lr}
- adds r4, r0, 0
- lsls r0, r1, 24
- lsrs r0, 24
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetFaceDirectionAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectFaceOppositeDirection
-
- thumb_func_start sub_80609D8
-sub_80609D8: @ 80609D8
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060A00 @ =gUnknown_0837571D
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080609F0
- movs r4, 0
-_080609F0:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060A00: .4byte gUnknown_0837571D
- thumb_func_end sub_80609D8
-
- thumb_func_start sub_8060A04
-sub_8060A04: @ 8060A04
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060A2C @ =gUnknown_08375722
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060A1C
- movs r4, 0
-_08060A1C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060A2C: .4byte gUnknown_08375722
- thumb_func_end sub_8060A04
-
- thumb_func_start sub_8060A30
-sub_8060A30: @ 8060A30
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060A58 @ =gUnknown_08375727
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060A48
- movs r4, 0
-_08060A48:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060A58: .4byte gUnknown_08375727
- thumb_func_end sub_8060A30
-
- thumb_func_start sub_8060A5C
-sub_8060A5C: @ 8060A5C
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060A84 @ =gUnknown_0837572C
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060A74
- movs r4, 0
-_08060A74:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060A84: .4byte gUnknown_0837572C
- thumb_func_end sub_8060A5C
-
- thumb_func_start sub_8060A88
-sub_8060A88: @ 8060A88
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060AB0 @ =gUnknown_08375731
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060AA0
- movs r4, 0
-_08060AA0:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060AB0: .4byte gUnknown_08375731
- thumb_func_end sub_8060A88
-
- thumb_func_start sub_8060AB4
-sub_8060AB4: @ 8060AB4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060ADC @ =gUnknown_08375736
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060ACC
- movs r4, 0
-_08060ACC:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060ADC: .4byte gUnknown_08375736
- thumb_func_end sub_8060AB4
-
- thumb_func_start sub_8060AE0
-sub_8060AE0: @ 8060AE0
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060B08 @ =gUnknown_0837573B
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060AF8
- movs r4, 0
-_08060AF8:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060B08: .4byte gUnknown_0837573B
- thumb_func_end sub_8060AE0
-
- thumb_func_start sub_8060B0C
-sub_8060B0C: @ 8060B0C
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060B34 @ =gUnknown_08375740
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060B24
- movs r4, 0
-_08060B24:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060B34: .4byte gUnknown_08375740
- thumb_func_end sub_8060B0C
-
- thumb_func_start sub_8060B38
-sub_8060B38: @ 8060B38
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060B60 @ =gUnknown_08375745
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060B50
- movs r4, 0
-_08060B50:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060B60: .4byte gUnknown_08375745
- thumb_func_end sub_8060B38
-
- thumb_func_start sub_8060B64
-sub_8060B64: @ 8060B64
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060B8C @ =gUnknown_0837574A
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060B7C
- movs r4, 0
-_08060B7C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060B8C: .4byte gUnknown_0837574A
- thumb_func_end sub_8060B64
-
- thumb_func_start GetOppositeDirection
-GetOppositeDirection: @ 8060B90
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060BB4 @ =gUnknown_0837574F
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- subs r1, r4, 0x1
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _08060BB8
- mov r2, sp
- adds r0, r2, r1
- ldrb r0, [r0]
- b _08060BBA
- .align 2, 0
-_08060BB4: .4byte gUnknown_0837574F
-_08060BB8:
- adds r0, r4, 0
-_08060BBA:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetOppositeDirection
-
- thumb_func_start zffu_offset_calc
-zffu_offset_calc: @ 8060BC4
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08060BD8 @ =gUnknown_08375757
- lsrs r0, 22
- subs r0, 0x5
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- bx lr
- .align 2, 0
-_08060BD8: .4byte gUnknown_08375757
- thumb_func_end zffu_offset_calc
-
- thumb_func_start state_to_direction
-state_to_direction: @ 8060BDC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r0, r1, 0
- lsls r2, 24
- lsrs r2, 24
- cmp r1, 0
- beq _08060BFC
- cmp r2, 0
- beq _08060BFC
- cmp r1, 0x4
- bhi _08060BFC
- cmp r2, 0x4
- bls _08060C00
-_08060BFC:
- movs r0, 0
- b _08060C12
-_08060C00:
- adds r1, r2, 0
- bl zffu_offset_calc
- ldr r2, _08060C18 @ =gUnknown_08375767
- lsls r1, r4, 2
- subs r1, 0x5
- adds r0, r1
- adds r0, r2
- ldrb r0, [r0]
-_08060C12:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060C18: .4byte gUnknown_08375767
- thumb_func_end state_to_direction
-
- thumb_func_start FieldObjectExecSpecialAnim
-FieldObjectExecSpecialAnim: @ 8060C1C
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, _08060C50 @ =gUnknown_08375778
- ldrb r0, [r4, 0x1C]
- lsls r0, 2
- adds r0, r2
- movs r3, 0x32
- ldrsh r2, [r1, r3]
- ldr r0, [r0]
- lsls r2, 2
- adds r2, r0
- ldr r2, [r2]
- adds r0, r4, 0
- bl _call_via_r2
- lsls r0, 24
- cmp r0, 0
- beq _08060C48
- ldrb r0, [r4]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r4]
-_08060C48:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08060C50: .4byte gUnknown_08375778
- thumb_func_end FieldObjectExecSpecialAnim
-
- thumb_func_start FieldObjectExecRegularAnim
-FieldObjectExecRegularAnim: @ 8060C54
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _08060C80 @ =gUnknown_08375778
- ldrb r0, [r4, 0x1C]
- lsls r0, 2
- adds r0, r1
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- ldr r0, [r0]
- lsls r1, 2
- adds r1, r0
- ldr r2, [r1]
- adds r0, r4, 0
- adds r1, r5, 0
- bl _call_via_r2
- lsls r0, 24
- cmp r0, 0
- bne _08060C84
- movs r0, 0
- b _08060C8E
- .align 2, 0
-_08060C80: .4byte gUnknown_08375778
-_08060C84:
- movs r0, 0xFF
- strb r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_08060C8E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectExecRegularAnim
-
- thumb_func_start FieldObjectSetRegularAnim
-FieldObjectSetRegularAnim: @ 8060C94
- movs r3, 0
- strb r2, [r0, 0x1C]
- strh r3, [r1, 0x32]
- bx lr
- thumb_func_end FieldObjectSetRegularAnim
-
- thumb_func_start an_look_any
-an_look_any: @ 8060C9C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r1, r2, 24
- lsrs r1, 24
- bl FieldObjectSetDirection
- adds r0, r4, 0
- bl npc_coords_shift_still
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl get_go_image_anim_num
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805FE64
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
- strh r0, [r5, 0x32]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end an_look_any
-
- thumb_func_start sub_8060CE0
-sub_8060CE0: @ 8060CE0
- push {lr}
- movs r2, 0x1
- bl an_look_any
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8060CE0
-
- thumb_func_start sub_8060CF0
-sub_8060CF0: @ 8060CF0
- push {lr}
- movs r2, 0x2
- bl an_look_any
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8060CF0
-
- thumb_func_start sub_8060D00
-sub_8060D00: @ 8060D00
- push {lr}
- movs r2, 0x3
- bl an_look_any
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8060D00
-
- thumb_func_start sub_8060D10
-sub_8060D10: @ 8060D10
- push {lr}
- movs r2, 0x4
- bl an_look_any
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8060D10
-
- thumb_func_start sub_8060D20
-sub_8060D20: @ 8060D20
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r8, r0
- mov r9, r1
- adds r4, r2, 0
- adds r6, r3, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- ldrh r1, [r0, 0x10]
- mov r0, sp
- strh r1, [r0]
- mov r1, r8
- ldrh r0, [r1, 0x12]
- mov r5, sp
- adds r5, 0x2
- strh r0, [r5]
- mov r0, r8
- adds r1, r4, 0
- bl FieldObjectSetDirection
- adds r0, r4, 0
- mov r1, sp
- adds r2, r5, 0
- bl MoveCoords
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- mov r0, r8
- bl npc_coords_shift
- mov r0, r9
- adds r1, r4, 0
- adds r2, r6, 0
- bl oamt_npc_ministep_reset
- mov r2, r9
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x4
- orrs r0, r1
- mov r2, r8
- strb r0, [r2]
- movs r0, 0x1
- mov r1, r9
- strh r0, [r1, 0x32]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8060D20
-
- thumb_func_start do_go_anim
-do_go_anim: @ 8060DA4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r5, r0, 0
- mov r8, r1
- adds r4, r3, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r4, 24
- lsrs r4, 24
- mov r1, sp
- ldr r0, _08060DFC @ =gUnknown_083759C0
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6}
- stm r1!, {r3,r6}
- adds r0, r5, 0
- mov r1, r8
- adds r3, r4, 0
- bl sub_8060D20
- lsls r4, 2
- mov r7, sp
- adds r1, r7, r4
- ldrb r0, [r5, 0x18]
- lsls r0, 28
- lsrs r0, 28
- ldr r1, [r1]
- bl _call_via_r1
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- mov r1, r8
- bl sub_805FE28
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08060DFC: .4byte gUnknown_083759C0
- thumb_func_end do_go_anim
-
- thumb_func_start do_run_anim
-do_run_anim: @ 8060E00
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0x1
- bl sub_8060D20
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl get_run_image_anim_num
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805FE28
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end do_run_anim
-
- thumb_func_start npc_obj_ministep_stop_on_arrival
-npc_obj_ministep_stop_on_arrival: @ 8060E30
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl obj_npc_ministep
- lsls r0, 24
- cmp r0, 0
- bne _08060E46
- movs r0, 0
- b _08060E62
-_08060E46:
- adds r0, r4, 0
- bl npc_coords_shift_still
- ldrb r0, [r4]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
-_08060E62:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end npc_obj_ministep_stop_on_arrival
-
- thumb_func_start sub_8060E68
-sub_8060E68: @ 8060E68
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r6, r0, 0
- mov r8, r1
- lsls r5, r2, 24
- lsrs r5, 24
- ldrh r1, [r6, 0x10]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r6, 0x12]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- adds r0, r6, 0
- adds r1, r5, 0
- bl FieldObjectSetDirection
- adds r0, r5, 0
- mov r1, sp
- adds r2, r4, 0
- bl MoveCoords
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r4, r0]
- adds r0, r6, 0
- bl npc_coords_shift
- mov r0, r8
- adds r1, r5, 0
- bl sub_806467C
- mov r2, r8
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r6]
- movs r0, 0x1
- mov r1, r8
- strh r0, [r1, 0x32]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8060E68
-
- thumb_func_start sub_8060ED8
-sub_8060ED8: @ 8060ED8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- bl sub_8060E68
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl get_go_image_anim_num
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805FE28
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8060ED8
-
- thumb_func_start an_walk_any_2
-an_walk_any_2: @ 8060F04
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_806468C
- lsls r0, 24
- cmp r0, 0
- bne _08060F1A
- movs r0, 0
- b _08060F36
-_08060F1A:
- adds r0, r4, 0
- bl npc_coords_shift_still
- ldrb r0, [r4]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
-_08060F36:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end an_walk_any_2
-
- thumb_func_start sub_8060F3C
-sub_8060F3C: @ 8060F3C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- bl sub_8060ED8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8060F5C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8060F3C
-
- thumb_func_start sub_8060F5C
-sub_8060F5C: @ 8060F5C
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _08060F6E
- movs r0, 0
- b _08060F74
-_08060F6E:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08060F74:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8060F5C
-
- thumb_func_start sub_8060F7C
-sub_8060F7C: @ 8060F7C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- bl sub_8060ED8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8060F9C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8060F7C
-
- thumb_func_start sub_8060F9C
-sub_8060F9C: @ 8060F9C
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _08060FAE
- movs r0, 0
- b _08060FB4
-_08060FAE:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08060FB4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8060F9C
-
- thumb_func_start sub_8060FBC
-sub_8060FBC: @ 8060FBC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- bl sub_8060ED8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8060FDC
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8060FBC
-
- thumb_func_start sub_8060FDC
-sub_8060FDC: @ 8060FDC
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _08060FEE
- movs r0, 0
- b _08060FF4
-_08060FEE:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08060FF4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8060FDC
-
- thumb_func_start sub_8060FFC
-sub_8060FFC: @ 8060FFC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- bl sub_8060ED8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806101C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8060FFC
-
- thumb_func_start sub_806101C
-sub_806101C: @ 806101C
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _0806102E
- movs r0, 0
- b _08061034
-_0806102E:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061034:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806101C
-
- thumb_func_start sub_806103C
-sub_806103C: @ 806103C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- movs r3, 0
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806105C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806103C
-
- thumb_func_start sub_806105C
-sub_806105C: @ 806105C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _0806106E
- movs r0, 0
- b _08061074
-_0806106E:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061074:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806105C
-
- thumb_func_start sub_806107C
-sub_806107C: @ 806107C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- movs r3, 0
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806109C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806107C
-
- thumb_func_start sub_806109C
-sub_806109C: @ 806109C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _080610AE
- movs r0, 0
- b _080610B4
-_080610AE:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_080610B4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806109C
-
- thumb_func_start sub_80610BC
-sub_80610BC: @ 80610BC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- movs r3, 0
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80610DC
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80610BC
-
- thumb_func_start sub_80610DC
-sub_80610DC: @ 80610DC
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _080610EE
- movs r0, 0
- b _080610F4
-_080610EE:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_080610F4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80610DC
-
- thumb_func_start sub_80610FC
-sub_80610FC: @ 80610FC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- movs r3, 0
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806111C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80610FC
+ thumb_func_end sub_805FD08
- thumb_func_start sub_806111C
-sub_806111C: @ 806111C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _0806112E
- movs r0, 0
- b _08061134
-_0806112E:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061134:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806111C
+ .section .text_805fd18
thumb_func_start sub_806113C
sub_806113C: @ 806113C
diff --git a/include/asm.inc.h b/include/asm.inc.h
index 3db79b128..9bd8324ad 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -1,6 +1,14 @@
// src/rom3.o
void sub_800C35C(void);
+struct UnkStruct8060024 {
+ u8 outsideMovementRect:1;
+ u8 tileIsImpassable:1;
+ u8 elevationMismatch:1;
+ u8 pathBlockedByObject:1;
+ u8 pad_04:4;
+};
+
// asm/battle_2.o
void sub_800E7C4(void);
u8 b_first_side(u8, u8, u8);
@@ -120,7 +128,7 @@ u8 sub_80608D0(u8);
u8 GetStepInPlaceDelay32AnimId(u8 a);
u8 GetStepInPlaceDelay16AnimId(u8);
u8 GetStepInPlaceDelay8AnimId(u8 a);
-u8 FieldObjectFaceOppositeDirection(void *, u8);
+u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8);
u8 sub_80609D8(u8);
u8 sub_8060A04(u8);
u8 sub_8060A30(u8);
diff --git a/include/field_camera.h b/include/field_camera.h
index 51c370d0a..9021b579e 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -1,6 +1,16 @@
#ifndef GUARD_FIELD_CAMERA_H
#define GUARD_FIELD_CAMERA_H
+struct CameraSomething
+{
+ void (*callback)(struct CameraSomething *);
+ u32 unk4;
+ s32 unk8;
+ s32 unkC;
+ s32 unk10;
+ s32 unk14;
+};
+
void move_tilemap_camera_to_upper_left_corner(void);
void sub_8057A58(void);
void sub_8057B14(u16 *a, u16 *b);
diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h
new file mode 100644
index 000000000..8a69426b3
--- /dev/null
+++ b/include/field_ground_effect.h
@@ -0,0 +1,11 @@
+//
+// Created by Scott Norton on 5/22/17.
+//
+
+#ifndef POKERUBY_FIELD_GROUND_EFFECT_H
+#define POKERUBY_FIELD_GROUND_EFFECT_H
+
+bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y);
+bool8 AreZCoordsCompatible(u8 z1, u8 z2);
+
+#endif //POKERUBY_FIELD_GROUND_EFFECT_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index dfc41d38b..2bd875f17 100644..100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -3,9 +3,90 @@
#include "sprite.h"
+#define fieldmap_object_cb(setup, callback, table) \
+extern u8 (*const table[])(struct MapObject *, struct Sprite *);\
+static u8 callback(struct MapObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ meta_step(&gMapObjects[sprite->data0], sprite, callback);\
+}\
+static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ return table[sprite->data1](mapObject, sprite);\
+}
+
+#define fieldmap_object_null_cb(setup, callback) \
+static u8 callback(struct MapObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ meta_step(&gMapObjects[sprite->data0], sprite, callback);\
+}\
+static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ return 0;\
+}
+
+
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 bool8 (*const gUnknown_08375684[4])(u8);
+extern bool8 (*const gUnknown_08375694[4])(u8);
+
+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];
+extern const u8 gUnknown_08375418[4];
+extern const u8 gUnknown_08375428[4];
+extern const u8 gUnknown_08375438[4];
+extern const u8 gUnknown_08375448[4];
+extern const u8 gUnknown_08375458[4];
+extern const u8 gUnknown_08375468[4];
+extern const u8 gUnknown_08375240[4];
+extern const u8 gUnknown_08375484[4];
+extern const u8 gUnknown_08375494[4];
+extern const u8 gUnknown_083754A4[4];
+extern const u8 gUnknown_083754B4[4];
+extern const u8 gUnknown_083754C4[4];
+extern const u8 gUnknown_083754D4[4];
+extern const u8 gUnknown_083754E4[4];
+extern const u8 gUnknown_083754F4[4];
+extern const u8 gUnknown_08375504[4];
+extern const u8 gUnknown_08375514[4];
+extern const u8 gUnknown_08375524[4];
+extern const u8 gUnknown_08375534[4];
+extern const u8 gUnknown_08375544[4];
+extern const u8 gUnknown_08375554[4];
+extern const u8 gUnknown_08375564[4];
+extern const u8 gUnknown_08375574[4];
+extern const u8 gUnknown_08375584[4];
+
+extern const u8 gUnknown_0837567B[9];
+extern const u8 gUnknown_0837574F[8];
+
+extern const u8 gUnknown_08375757[4][4];
+extern const u8 gUnknown_08375767[4][4];
+
+extern const struct Coords16 gDirectionToVector[];
+
+extern u8 (**const gUnknown_08375778[])(struct MapObject *, struct Sprite *);
+
+extern struct CameraSomething gUnknown_03004880;
+extern u16 gUnknown_03004898;
+extern u16 gUnknown_0300489C;
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
index daae74ae9..a61dcc63c 100644
--- a/include/field_map_obj_helpers.h
+++ b/include/field_map_obj_helpers.h
@@ -8,5 +8,8 @@ void UnfreezeMapObjects(void);
void sub_806487C(struct Sprite *sprite, bool8 invisible);
void sub_8064990(u8, u8);
void UnfreezeMapObject(struct MapObject *mapObject);
+void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3);
+void sub_806467C(struct Sprite *sprite, u8 direction);
+bool8 sub_806468C(struct Sprite *sprite);
#endif
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 936d27b4a..530e15798 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -1,6 +1,10 @@
#ifndef GUARD_FIELDMAP2_H
#define GUARD_FIELDMAP2_H
+#include "field_map_obj.h"
struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection);
+int GetMapBorderIdAt(int x, int y);
+extern bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
+int CanCameraMoveInDirection(int direction);
#endif
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_camera.c b/src/field_camera.c
index 182e180ab..df5ccc301 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -25,16 +25,6 @@ extern s16 gUnknown_0300059A;
extern u8 gUnknown_0300059C;
extern void (*gUnknown_030005A0)(void);
-struct CameraSomething
-{
- void (*callback)(struct CameraSomething *);
- u32 unk4;
- s32 unk8;
- s32 unkC;
- s32 unk10;
- s32 unk14;
-};
-
extern struct CameraSomething gUnknown_03004880;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index f7e09aacf..21dcb90bc 100644..100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -1,30 +1,36 @@
#include "global.h"
#include "field_map_obj.h"
+#include "field_map_obj_helpers.h"
+#include "fieldmap.h"
#include "asm.h"
#include "berry.h"
#include "event_data.h"
#include "field_player_avatar.h"
+#include "field_effect.h"
+#include "field_ground_effect.h"
#include "palette.h"
#include "rom4.h"
+#include "rng.h"
#include "sprite.h"
+#include "field_camera.h"
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
+
extern void strange_npc_table_clear(void);
extern void ClearPlayerAvatarInfo(void);
extern void npc_load_two_palettes__no_record(u16, u8);
extern void npc_load_two_palettes__and_record(u16, u8);
extern void sub_8060388(s16, s16, s16 *, s16 *);
-extern void sub_80634D0();
+extern void sub_80634D0(struct MapObject *, struct Sprite *);
extern void pal_patch_for_npc(u16, u16);
-extern void sub_80603CC();
extern void CameraObjectReset1(void);
void sub_805AAB0(void);
u8 GetFieldObjectIdByLocalId(u8);
u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8);
u8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *);
-void FieldObjectHandleDynamicGraphicsId();
+void FieldObjectHandleDynamicGraphicsId(struct MapObject *);
void RemoveFieldObjectInternal(struct MapObject *);
u16 GetFieldObjectFlagIdByFieldObjectId(u8);
void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables);
@@ -609,7 +615,7 @@ u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c
}
extern void sub_8064970(struct Sprite *);
-extern void sub_8060470();
+extern void sub_8060470(s16 *, s16 *, s16, s16);
extern void InitObjectPriorityByZCoord();
u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f)
@@ -1503,47 +1509,2910 @@ 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);
+
+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);
-void sub_805C884(struct Sprite *sprite)
+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);
-void sub_805C8AC(struct Sprite *sprite)
+u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite)
{
- meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8D0);
+ 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;
}
-extern u8 (*const gUnknown_08375224[])();
+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;
+}
-u32 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_805CA08(struct MapObject *mapObject, struct Sprite *sprite)
{
- return gUnknown_08375224[sprite->data1](mapObject, sprite);
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
}
-void npc_reset();
+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_805C8F0(struct MapObject *mapObject, struct Sprite *sprite)
+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;
+}
+
+u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = DIR_SOUTH;
+ if (a1 < 0)
+ {
+ dirn = DIR_NORTH;
+ }
+ return dirn;
+}
+
+u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = DIR_EAST;
+ if (a0 < 0)
+ {
+ dirn = DIR_WEST;
+ }
+ return dirn;
+}
+
+u8 sub_805CB00(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_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;
+}
+
+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_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;
+}
+
+fieldmap_object_cb(sub_805E37C, sub_805E3A0, gUnknown_083753FC);
+
+u8 sub_805E3C0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805E3D4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ direction = gUnknown_0836DC09[mapObject->animPattern];
+ if (mapObject->mapobj_unk_21 != 0)
+ {
+ direction = GetOppositeDirection(direction);
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805E40C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 v0;
+ u8 goSpeed0AnimId;
+ if (mapObject->mapobj_unk_21 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 0;
+ FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
+ }
+ v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
+ if (v0 == 1)
+ {
+ mapObject->mapobj_unk_21 ++;
+ FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
+ goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
+ v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ }
+ if (v0 != 0)
+ {
+ goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18);
+ }
+ FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId);
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 3;
+ return 1;
+}
+
+u8 sub_805E4C4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+u8 sub_805E4EC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 MoveFieldObjectInNextDirectionInSequence(struct MapObject *mapObject, struct Sprite *sprite, u8 *directionSequence)
+{
+ u8 v0;
+ u8 goSpeed0AnimId;
+ if (mapObject->mapobj_unk_21 == 3 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 0;
+ }
+ FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]);
+ goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
+ v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ if (v0 == 1)
+ {
+ mapObject->mapobj_unk_21 ++;
+ FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]);
+ goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
+ v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ }
+ if (v0 != 0)
+ {
+ goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18);
+ }
+ FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId);
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+fieldmap_object_cb(sub_805E5DC, sub_805E600, gUnknown_0837540C);
+
+u8 sub_805E620(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375418, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E668, sub_805E68C, gUnknown_0837541C);
+
+u8 sub_805E6AC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375428, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E6F4, sub_805E718, gUnknown_0837542C);
+
+u8 sub_805E738(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375438, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E780, sub_805E7A4, gUnknown_0837543C);
+
+u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375448, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+
+
+fieldmap_object_cb(sub_805E80C, sub_805E830, gUnknown_0837544C);
+
+u8 sub_805E850(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375458, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E898, sub_805E8BC, gUnknown_0837545C);
+
+u8 sub_805E8DC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375468, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E924, sub_805E948, gUnknown_0837546C);
+
+u8 sub_805E968(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375240, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E9B0, sub_805E9D4, gUnknown_08375478);
+
+u8 sub_805E9F4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375484, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EA3C, sub_805EA60, gUnknown_08375488);
+
+u8 sub_805EA80(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375494, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EAC8, sub_805EAEC, gUnknown_08375498);
+
+u8 sub_805EB0C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754A4, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EB54, sub_805EB78, gUnknown_083754A8);
+
+u8 sub_805EB98(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754B4, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EBE0, sub_805EC04, gUnknown_083754B8);
+
+u8 sub_805EC24(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754C4, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EC6C, sub_805EC90, gUnknown_083754C8);
+
+u8 sub_805ECB0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754D4, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805ECF8, sub_805ED1C, gUnknown_083754D8);
+
+u8 sub_805ED3C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754E4, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805ED84, sub_805EDA8, gUnknown_083754E8);
+
+u8 sub_805EDC8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754F4, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EE10, sub_805EE34, gUnknown_083754F8);
+
+u8 sub_805EE54(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375504, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EE9C, sub_805EEC0, gUnknown_08375508);
+
+u8 sub_805EEE0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375514, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EF28, sub_805EF4C, gUnknown_08375518);
+
+u8 sub_805EF6C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375524, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EFB4, sub_805EFD8, gUnknown_08375528);
+
+u8 sub_805EFF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375534, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F040, sub_805F064, gUnknown_08375538);
+
+u8 sub_805F084(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375544, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F0CC, sub_805F0F0, gUnknown_08375548);
+
+u8 sub_805F110(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375554, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F158, sub_805F17C, gUnknown_08375558);
+
+u8 sub_805F19C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375564, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F1E4, sub_805F208, gUnknown_08375568);
+
+u8 sub_805F228(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375574, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F270, sub_805F294, gUnknown_08375578);
+
+u8 sub_805F2B4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375584, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+};
+
+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];
+}
+
+void sub_805FE28(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
+{
+ if (!mapObject->mapobj_bit_12)
+ {
+ sprite->animNum = animNum;
+ if (sprite->animCmdIndex == 1)
+ {
+ sprite->animCmdIndex = 2;
+ } else if (sprite->animCmdIndex == 3)
+ {
+ sprite->animCmdIndex = 0;
+ }
+ SeekSpriteAnim(sprite, sprite->animCmdIndex);
+ }
+}
+
+void sub_805FE64(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
+{
+ u8 animCmdIndex;
+ if (!mapObject->mapobj_bit_12)
+ {
+ sprite->animNum = animNum;
+ animCmdIndex = 3;
+ if (sprite->animCmdIndex < 2)
+ {
+ animCmdIndex = 1;
+ }
+ SeekSpriteAnim(sprite, animCmdIndex);
+ }
+}
+
+u8 sub_805FE90(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ if (a0 > a2)
+ {
+ return DIR_WEST;
+ } else if (a0 < a2)
+ {
+ return DIR_EAST;
+ } else if (a1 > a3)
+ {
+ return DIR_NORTH;
+ } else
+ {
+ return DIR_SOUTH;
+ }
+}
+
+void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern)
+{
+ mapObject->animPattern = animPattern;
+ mapObject->mapobj_unk_21 = 0;
+ mapObject->animId = 0;
+ gSprites[mapObject->spriteId].callback = gUnknown_0836DA88[animPattern];
+ gSprites[mapObject->spriteId].data1 = 0;
+}
+
+u8 npc_running_behaviour_by_direction(u8 direction)
+{
+ return gUnknown_0837567B[direction];
+}
+
+u8 sub_805FF20(struct MapObject *mapObject, u8 direction)
+{
+ s16 x;
+ s16 y;
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ MoveCoords(direction, &x, &y);
+ return npc_block_way(mapObject, x, y, direction);
+}
+
+bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y);
+bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y);
+bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
+
+u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+{
+ if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
+ {
+ return 1;
+ }
+ if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
+ {
+ return 2;
+ } else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))
+ {
+ return 2;
+ }
+ if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
+ {
+ return 3;
+ }
+ if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
+ {
+ return 4;
+ }
+ return 0;
+}
+
+u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+{
+ u8 flags;
+ flags = 0;
+ if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
+ {
+ flags |= 1;
+ }
+ if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)))
+ {
+ flags |= 2;
+ }
+ if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
+ {
+ flags |= 4;
+ }
+ if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
+ {
+ flags |= 8;
+ }
+ return flags;
+}
+
+bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y)
+{
+ s16 minv;
+ s16 maxv;
+ if (mapObject->mapobj_unk_19 != 0)
+ {
+ minv = mapObject->coords1.x - (mapObject->mapobj_unk_19);
+ maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19);
+ if (minv > x || maxv < x)
+ {
+ return 1;
+ }
+ }
+ if (mapObject->mapobj_unk_19b != 0)
+ {
+ minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b);
+ maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b);
+ if (minv > y || maxv < y)
+ {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+{
+ if (gUnknown_08375684[direction - 1](mapObject->mapobj_unk_1E) || gUnknown_08375694[direction - 1](MapGridGetMetatileBehaviorAt(x, y)))
+ {
+ return 1;
+ }
+ return 0;
+}
+
+bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y)
+{
+ struct MapObject *mapObject2;
+ u8 i;
+ for (i=0; i<16; i++)
+ {
+ mapObject2 = &gMapObjects[i];
+ if (mapObject2->active && mapObject2 != mapObject)
+ {
+ if ((mapObject2->coords2.x != x || mapObject2->coords2.y != y) && (mapObject2->coords3.x != x || mapObject2->coords3.y != y))
+ {
+ continue;
+ }
+ if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0))
+ {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+bool8 sub_8060234(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ if (gSprites[gMapObjects[mapObjectId].spriteId].data7 & 2)
+ {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ gSprites[gMapObjects[mapObjectId].spriteId].data7 |= 4;
+ }
+}
+
+void MoveCoords(u8 direction, s16 *x, s16 *y)
+{
+ *x += gDirectionToVector[direction].x;
+ *y += gDirectionToVector[direction].y;
+}
+
+void unref_sub_80602F8(u8 direction, s16 *x, s16 *y)
+{
+ *x += gDirectionToVector[direction].x << 4;
+ *y += gDirectionToVector[direction].y << 4;
+}
+
+void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
+{
+ if (gDirectionToVector[direction].x > 0)
+ {
+ *x += deltaX;
+ }
+ if (gDirectionToVector[direction].x < 0)
+ {
+ *x -= deltaX;
+ }
+ if (gDirectionToVector[direction].y > 0)
+ {
+ *y += deltaY;
+ }
+ if (gDirectionToVector[direction].y < 0)
+ {
+ *y -= deltaY;
+ }
+}
+
+void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2)
+{
+ *x2 = (x1 - gSaveBlock1.pos.x) << 4;
+ *y2 = (y1 - gSaveBlock1.pos.y) << 4;
+ *x2 -= gUnknown_0300489C;
+ *y2 -= gUnknown_03004898;
+}
+
+void sub_80603CC(s16 x1, s16 y1, s16 *x2, s16 *y2)
+{
+ s16 x3;
+ s16 y3;
+ x3 = -gUnknown_0300489C - gUnknown_03004880.unk10;
+ y3 = -gUnknown_03004898 - gUnknown_03004880.unk14;
+ if (gUnknown_03004880.unk10 > 0)
+ {
+ x3 += 0x10;
+ }
+ if (gUnknown_03004880.unk10 < 0)
+ {
+ x3 -= 0x10;
+ }
+ if (gUnknown_03004880.unk14 > 0)
+ {
+ y3 += 0x10;
+ }
+ if (gUnknown_03004880.unk14 < 0)
+ {
+ y3 -= 0x10;
+ }
+ *x2 = ((x1 - gSaveBlock1.pos.x) << 4) + x3;
+ *y2 = ((y1 - gSaveBlock1.pos.y) << 4) + y3;
+}
+
+void sub_8060470(s16 *x, s16 *y, s16 dx, s16 dy)
+{
+ sub_80603CC(*x, *y, x, y);
+ *x += dx;
+ *y += dy;
+}
+
+void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y)
+{
+ *x = 0;
+ *y = 0;
+ if (gUnknown_03004880.unk10 > 0)
+ {
+ (*x)++;
+ }
+ if (gUnknown_03004880.unk10 < 0)
+ {
+ (*x)--;
+ }
+ if (gUnknown_03004880.unk14 > 0)
+ {
+ (*y)++;
+ }
+ if (gUnknown_03004880.unk14 < 0)
+ {
+ (*y)--;
+ }
+}
+
+void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y)
+{
+ *x = mapObject->coords2.x;
+ *y = mapObject->coords2.y;
+ MoveCoords(direction, x, y);
+}
+
+bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_1 || mapObject->mapobj_bit_6)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 FieldObjectIsSpecialAnimActive(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6 && mapObject->mapobj_unk_1C != 0xff)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
+{
+ if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
+ {
+ return TRUE;
+ }
+ UnfreezeMapObject(mapObject);
+ mapObject->mapobj_unk_1C = specialAnimId;
+ mapObject->mapobj_bit_6 = 1;
+ mapObject->mapobj_bit_7 = 0;
+ gSprites[mapObject->spriteId].data2 = 0;
+ return FALSE;
+}
+
+void FieldObjectForceSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
+{
+ FieldObjectClearAnimIfSpecialAnimActive(mapObject);
+ FieldObjectSetSpecialAnim(mapObject, specialAnimId);
+}
+
+void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6)
+ {
+ FieldObjectClearAnim(mapObject);
+ }
+}
+
+void FieldObjectClearAnim(struct MapObject *mapObject)
+{
+ mapObject->mapobj_unk_1C = 0xFF;
+ mapObject->mapobj_bit_6 = 0;
+ mapObject->mapobj_bit_7 = 0;
+ gSprites[mapObject->spriteId].data1 = 0;
+ gSprites[mapObject->spriteId].data2 = 0;
+}
+
+bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6)
+ return mapObject->mapobj_bit_7;
+ return 0x10;
+}
+
+bool8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *mapObject)
+{
+ u8 specialAnimStatus;
+ specialAnimStatus = FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject);
+ if (specialAnimStatus != 0 && specialAnimStatus != 0x10)
+ {
+ FieldObjectClearAnimIfSpecialAnimActive(mapObject);
+ }
+ return specialAnimStatus;
+}
+
+u8 FieldObjectGetSpecialAnim(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6)
+ {
+ return mapObject->mapobj_unk_1C;
+ }
+ return 0xFF;
+}
+
+extern void DoGroundEffects_OnSpawn(struct MapObject *mapObject, struct Sprite *sprite);
+extern void DoGroundEffects_OnBeginStep(struct MapObject *mapObject, struct Sprite *sprite);
+extern void DoGroundEffects_OnFinishStep(struct MapObject *mapObject, struct Sprite *sprite);
+extern void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite);
+void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite);
+void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite);
+void FieldObjectUpdateSubpriority(struct MapObject *mapObject, struct Sprite *sprite);
+
+void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback)(struct MapObject *, struct Sprite *))
+{
+ DoGroundEffects_OnSpawn(mapObject, sprite);
+ sub_80634A0(mapObject, sprite);
+ if (FieldObjectIsSpecialAnimActive(mapObject))
+ {
+ FieldObjectExecSpecialAnim(mapObject, sprite);
+ } else
+ {
+ if (!mapObject->mapobj_bit_8)
+ {
+ while (callback(mapObject, sprite));
+ }
+ }
+ DoGroundEffects_OnBeginStep(mapObject, sprite);
+ DoGroundEffects_OnFinishStep(mapObject, sprite);
+ npc_obj_transfer_image_anim_pause_flag(mapObject, sprite);
+ sub_80634D0(mapObject, sprite);
+ FieldObjectUpdateSubpriority(mapObject, sprite);
+}
+
+
+const u8 gUnknown_083756C8[5];
+
+u8 GetFaceDirectionAnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756C8, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756CD[5];
+
+u8 GetSimpleGoAnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756CD, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756D2[5];
+
+u8 GetGoSpeed0AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756D2, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756D7[5];
+
+u8 sub_8060744(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756D7, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756DC[5];
+
+u8 d2s_08064034(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756DC, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756E1[5];
+
+u8 sub_806079C(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756E1, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756E6[5];
+
+u8 sub_80607C8(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756E6, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756EB[5];
+
+u8 sub_80607F4(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756EB, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756F0[5];
+
+u8 GetJumpLedgeAnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756F0, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756F5[5];
+
+u8 sub_806084C(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756F5, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756FA[5];
+
+u8 sub_8060878(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756FA, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_083756FF[5];
+
+u8 sub_80608A4(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756FF, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375704[5];
+
+u8 sub_80608D0(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375704, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375709[5];
+
+u8 GetStepInPlaceDelay32AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375709, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_0837570E[5];
+
+u8 GetStepInPlaceDelay16AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837570E, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375713[5];
+
+u8 GetStepInPlaceDelay8AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375713, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375718[5];
+
+u8 GetStepInPlaceDelay4AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375718, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction)
+{
+ return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction)));
+}
+
+const u8 gUnknown_0837571D[5];
+
+u8 sub_80609D8(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837571D, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375722[5];
+
+u8 sub_8060A04(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375722, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375727[5];
+
+u8 sub_8060A30(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375727, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_0837572C[5];
+
+u8 sub_8060A5C(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837572C, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375731[5];
+
+u8 sub_8060A88(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375731, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375736[5];
+
+u8 sub_8060AB4(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375736, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_0837573B[5];
+
+u8 sub_8060AE0(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837573B, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375740[5];
+
+u8 sub_8060B0C(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375740, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_08375745[5];
+
+u8 sub_8060B38(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375745, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+const u8 gUnknown_0837574A[5];
+
+u8 sub_8060B64(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837574A, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+u8 GetOppositeDirection(u8 direction)
+{
+ u8 directions[8];
+ memcpy(directions, gUnknown_0837574F, 8);
+ if (direction == 0 || direction > 8)
+ {
+ return direction;
+ }
+ return directions[direction - 1];
+}
+
+int zffu_offset_calc(u8 a0, u8 a1)
+{
+ return gUnknown_08375757[a0 - 1][a1 - 1];
+}
+
+#ifdef NONMATCHING
+u8 state_to_direction(u8 a0, u8 a1, u8 a2)
+{
+ int zffuOffset;
+ asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call.")
+ if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4)
+ {
+ return 0;
+ }
+ zffuOffset = zffu_offset_calc(a1, a2);
+ return gUnknown_08375767[a0 - 1][zffuOffset - 1];
+}
+#else
+__attribute__((naked))
+u8 state_to_direction(u8 a0, u8 a1, u8 a2)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r0, r1, 0\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ cmp r1, 0\n\
+ beq _08060BFC\n\
+ cmp r2, 0\n\
+ beq _08060BFC\n\
+ cmp r1, 0x4\n\
+ bhi _08060BFC\n\
+ cmp r2, 0x4\n\
+ bls _08060C00\n\
+_08060BFC:\n\
+ movs r0, 0\n\
+ b _08060C12\n\
+_08060C00:\n\
+ adds r1, r2, 0\n\
+ bl zffu_offset_calc\n\
+ ldr r2, _08060C18 @ =gUnknown_08375767\n\
+ lsls r1, r4, 2\n\
+ subs r1, 0x5\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+_08060C12:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_08060C18: .4byte gUnknown_08375767\n\
+.syntax divided\n");
+}
+#endif
+
+void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite))
+ {
+ mapObject->mapobj_bit_7 = 1;
+ }
+}
+
+bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite))
+ {
+ mapObject->mapobj_unk_1C = 0xFF;
+ sprite->data2 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+void FieldObjectSetRegularAnim(struct MapObject *mapObject, struct Sprite *sprite, u8 animId)
+{
+ mapObject->mapobj_unk_1C = animId;
+ sprite->data2 = 0;
+}
+
+void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ FieldObjectSetDirection(mapObject, direction);
+ npc_coords_shift_still(mapObject);
+ sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
+ sprite->animPaused = 1;
+ sprite->data2 = 1;
+}
+
+u8 sub_8060CE0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ an_look_any(mapObject, sprite, DIR_SOUTH);
+ return 1;
+}
+
+u8 sub_8060CF0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ an_look_any(mapObject, sprite, DIR_NORTH);
+ return 1;
+}
+
+u8 sub_8060D00(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ an_look_any(mapObject, sprite, DIR_WEST);
+ return 1;
+}
+
+u8 sub_8060D10(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ an_look_any(mapObject, sprite, DIR_EAST);
+ return 1;
+}
+
+void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2)
+{
+ s16 x;
+ s16 y;
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ FieldObjectSetDirection(mapObject, direction);
+ MoveCoords(direction, &x, &y);
+ npc_coords_shift(mapObject, x, y);
+ oamt_npc_ministep_reset(sprite, direction, a2);
+ sprite->animPaused = 0;
+ mapObject->mapobj_bit_2 = 1;
+ sprite->data2 = 1;
+}
+
+extern u8 (*const gUnknown_083759C0[5])(u8);
+
+void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2)
+{
+ u8 (*functions[5])(u8);
+ memcpy(functions, gUnknown_083759C0, sizeof(gUnknown_083759C0));
+ sub_8060D20(mapObject, sprite, direction, a2);
+ sub_805FE28(mapObject, sprite, functions[a2](mapObject->mapobj_unk_18));
+}
+
+void do_run_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ sub_8060D20(mapObject, sprite, direction, 1);
+ sub_805FE28(mapObject, sprite, get_run_image_anim_num(mapObject->mapobj_unk_18));
+}
+
+bool8 obj_npc_ministep(struct Sprite *);
+
+bool8 npc_obj_ministep_stop_on_arrival(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (obj_npc_ministep(sprite))
+ {
+ npc_coords_shift_still(mapObject);
+ mapObject->mapobj_bit_3 = 1;
+ sprite->animPaused = 1;
+ return 1;
+ }
+ return 0;
+}
+
+void sub_8060E68(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ s16 x;
+ s16 y;
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ FieldObjectSetDirection(mapObject, direction);
+ MoveCoords(direction, &x, &y);
+ npc_coords_shift(mapObject, x, y);
+ sub_806467C(sprite, direction);
+ sprite->animPaused = 0;
+ mapObject->mapobj_bit_2 = 1;
+ sprite->data2 = 1;
+}
+
+void sub_8060ED8(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ sub_8060E68(mapObject, sprite, direction);
+ sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
+}
+
+bool8 an_walk_any_2(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_806468C(sprite))
+ {
+ npc_coords_shift_still(mapObject);
+ mapObject->mapobj_bit_3 = 1;
+ sprite->animPaused = 1;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8060F5C(struct MapObject *, struct Sprite *);
+
+bool8 sub_8060F3C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_SOUTH);
+ return sub_8060F5C(mapObject, sprite);
+}
+
+bool8 sub_8060F5C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8060F9C(struct MapObject *, struct Sprite *);
+
+bool8 sub_8060F7C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_NORTH);
+ return sub_8060F9C(mapObject, sprite);
+}
+
+bool8 sub_8060F9C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8060FDC(struct MapObject *, struct Sprite *);
+
+bool8 sub_8060FBC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_WEST);
+ return sub_8060FDC(mapObject, sprite);
+}
+
+bool8 sub_8060FDC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806101C(struct MapObject *, struct Sprite *);
+
+bool8 sub_8060FFC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_EAST);
+ return sub_806101C(mapObject, sprite);
+}
+
+bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806105C(struct MapObject *, struct Sprite *);
+
+bool8 sub_806103C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_SOUTH, 0);
+ return sub_806105C(mapObject, sprite);
+}
+
+bool8 sub_806105C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806109C(struct MapObject *, struct Sprite *);
+
+bool8 sub_806107C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_NORTH, 0);
+ return sub_806109C(mapObject, sprite);
+}
+
+bool8 sub_806109C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80610DC(struct MapObject *, struct Sprite *);
+
+bool8 sub_80610BC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_WEST, 0);
+ return sub_80610DC(mapObject, sprite);
+}
+
+bool8 sub_80610DC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806111C(struct MapObject *, struct Sprite *);
+
+bool8 sub_80610FC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_EAST, 0);
+ return sub_806111C(mapObject, sprite);
+}
+
+bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index c1b892f15..1e1162350 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -23,7 +23,6 @@
extern u32 gUnknown_0202FF84[];
//Functions
-static u32 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);
@@ -242,16 +241,7 @@ static u8 (*const gUnknown_0830FC98[])(struct Task *, struct MapObject *) =
sub_805A1B8,
};
-
-void sub_80587B4(struct Sprite *sprite)
-{
- meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8);
-}
-
-static u32 sub_80587D8(void)
-{
- return 0;
-}
+fieldmap_object_null_cb(sub_80587B4, sub_80587D8);
void player_step(u8 direction, u16 newKeys, u16 heldKeys)
{