summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rw-r--r--asm/field_camera.s1330
-rw-r--r--asm/field_door.s613
-rw-r--r--asm/field_ground_effect.s1890
-rw-r--r--asm/field_map_obj.s (renamed from asm/rom4.s)12760
-rw-r--r--asm/field_player_avatar.s4636
-rw-r--r--asm/fieldmap.s1998
-rw-r--r--asm/metatile_behavior.s2345
-rw-r--r--ld_script.txt8
9 files changed, 12827 insertions, 12761 deletions
diff --git a/Makefile b/Makefile
index 95312cf5c..eb88fdd51 100644
--- a/Makefile
+++ b/Makefile
@@ -55,7 +55,13 @@ asm/rom_804373C.o \
asm/load_save.o \
asm/trade.o \
asm/berry_blender.o \
-asm/rom4.o \
+asm/fieldmap.o \
+asm/metatile_behavior.o \
+asm/field_camera.o \
+asm/field_door.o \
+asm/field_player_avatar.o \
+asm/field_map_obj.o \
+asm/field_ground_effect.o \
asm/rom_8065394.o \
asm/rom_806936C.o \
asm/party_menu.o \
diff --git a/asm/field_camera.s b/asm/field_camera.s
new file mode 100644
index 000000000..20187f062
--- /dev/null
+++ b/asm/field_camera.s
@@ -0,0 +1,1330 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start move_tilemap_camera_to_upper_left_corner_
+move_tilemap_camera_to_upper_left_corner_: @ 80579BC
+ movs r1, 0
+ strb r1, [r0, 0x2]
+ strb r1, [r0, 0x3]
+ strb r1, [r0]
+ strb r1, [r0, 0x1]
+ movs r1, 0x1
+ strb r1, [r0, 0x4]
+ bx lr
+ thumb_func_end move_tilemap_camera_to_upper_left_corner_
+
+ thumb_func_start tilemap_move_something
+tilemap_move_something: @ 80579CC
+ ldrb r3, [r0, 0x2]
+ adds r3, r1
+ strb r3, [r0, 0x2]
+ ldrb r1, [r0, 0x2]
+ movs r3, 0x1F
+ ands r1, r3
+ strb r1, [r0, 0x2]
+ ldrb r1, [r0, 0x3]
+ adds r1, r2
+ strb r1, [r0, 0x3]
+ ldrb r1, [r0, 0x3]
+ ands r1, r3
+ strb r1, [r0, 0x3]
+ bx lr
+ thumb_func_end tilemap_move_something
+
+ thumb_func_start coords8_add
+coords8_add: @ 80579E8
+ ldrb r3, [r0]
+ adds r3, r1
+ strb r3, [r0]
+ ldrb r1, [r0, 0x1]
+ adds r1, r2
+ strb r1, [r0, 0x1]
+ bx lr
+ thumb_func_end coords8_add
+
+ thumb_func_start move_tilemap_camera_to_upper_left_corner
+move_tilemap_camera_to_upper_left_corner: @ 80579F8
+ push {r4-r6,lr}
+ sub sp, 0x8
+ ldr r0, _08057A44 @ =gUnknown_03000590
+ bl move_tilemap_camera_to_upper_left_corner_
+ mov r0, sp
+ movs r6, 0
+ strh r6, [r0]
+ ldr r4, _08057A48 @ =gBG2TilemapBuffer
+ ldr r5, _08057A4C @ =0x01000400
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl CpuSet
+ mov r0, sp
+ adds r0, 0x2
+ strh r6, [r0]
+ ldr r2, _08057A50 @ =0xfffff800
+ adds r1, r4, r2
+ adds r2, r5, 0
+ bl CpuSet
+ add r0, sp, 0x4
+ ldr r2, _08057A54 @ =0x00003014
+ adds r1, r2, 0
+ strh r1, [r0]
+ movs r1, 0x80
+ lsls r1, 4
+ adds r4, r1
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl CpuSet
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057A44: .4byte gUnknown_03000590
+_08057A48: .4byte gBG2TilemapBuffer
+_08057A4C: .4byte 0x01000400
+_08057A50: .4byte 0xfffff800
+_08057A54: .4byte 0x00003014
+ thumb_func_end move_tilemap_camera_to_upper_left_corner
+
+ thumb_func_start sub_8057A58
+sub_8057A58: @ 8057A58
+ push {r4-r7,lr}
+ ldr r5, _08057AE8 @ =gBGHOffsetRegs
+ ldr r1, [r5, 0x4]
+ ldr r6, _08057AEC @ =gUnknown_03000590
+ ldr r4, _08057AF0 @ =gUnknown_03000598
+ ldrh r0, [r4]
+ ldrb r2, [r6]
+ adds r0, r2
+ strh r0, [r1]
+ ldr r3, _08057AF4 @ =gBGVOffsetRegs
+ ldr r1, [r3, 0x4]
+ ldr r2, _08057AF8 @ =gUnknown_0300059A
+ ldrh r0, [r2]
+ ldrb r7, [r6, 0x1]
+ adds r0, r7
+ adds r0, 0x8
+ strh r0, [r1]
+ ldr r1, [r5, 0x8]
+ ldrh r0, [r4]
+ ldrb r7, [r6]
+ adds r0, r7
+ strh r0, [r1]
+ ldr r1, [r3, 0x8]
+ ldrh r0, [r2]
+ ldrb r7, [r6, 0x1]
+ adds r0, r7
+ adds r0, 0x8
+ strh r0, [r1]
+ ldr r1, [r5, 0xC]
+ ldrh r0, [r4]
+ ldrb r4, [r6]
+ adds r0, r4
+ strh r0, [r1]
+ ldr r1, [r3, 0xC]
+ ldrh r0, [r2]
+ ldrb r7, [r6, 0x1]
+ adds r0, r7
+ adds r0, 0x8
+ strh r0, [r1]
+ ldrb r0, [r6, 0x4]
+ cmp r0, 0
+ beq _08057AE0
+ ldr r0, _08057AFC @ =0x040000d4
+ ldr r2, _08057B00 @ =gBG1TilemapBuffer
+ str r2, [r0]
+ ldr r1, _08057B04 @ =0x0600e800
+ str r1, [r0, 0x4]
+ ldr r3, _08057B08 @ =0x80000400
+ str r3, [r0, 0x8]
+ ldr r1, [r0, 0x8]
+ movs r4, 0x80
+ lsls r4, 4
+ adds r1, r2, r4
+ str r1, [r0]
+ ldr r1, _08057B0C @ =0x0600e000
+ str r1, [r0, 0x4]
+ str r3, [r0, 0x8]
+ ldr r1, [r0, 0x8]
+ movs r7, 0x80
+ lsls r7, 5
+ adds r2, r7
+ str r2, [r0]
+ ldr r1, _08057B10 @ =0x0600f000
+ str r1, [r0, 0x4]
+ str r3, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ movs r0, 0
+ strb r0, [r6, 0x4]
+_08057AE0:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057AE8: .4byte gBGHOffsetRegs
+_08057AEC: .4byte gUnknown_03000590
+_08057AF0: .4byte gUnknown_03000598
+_08057AF4: .4byte gBGVOffsetRegs
+_08057AF8: .4byte gUnknown_0300059A
+_08057AFC: .4byte 0x040000d4
+_08057B00: .4byte gBG1TilemapBuffer
+_08057B04: .4byte 0x0600e800
+_08057B08: .4byte 0x80000400
+_08057B0C: .4byte 0x0600e000
+_08057B10: .4byte 0x0600f000
+ thumb_func_end sub_8057A58
+
+ thumb_func_start sub_8057B14
+sub_8057B14: @ 8057B14
+ push {r4,lr}
+ ldr r3, _08057B34 @ =gUnknown_03000590
+ ldr r2, _08057B38 @ =gUnknown_03000598
+ ldrh r2, [r2]
+ ldrb r4, [r3]
+ adds r2, r4
+ strh r2, [r0]
+ ldr r0, _08057B3C @ =gUnknown_0300059A
+ ldrh r0, [r0]
+ ldrb r3, [r3, 0x1]
+ adds r0, r3
+ adds r0, 0x8
+ strh r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057B34: .4byte gUnknown_03000590
+_08057B38: .4byte gUnknown_03000598
+_08057B3C: .4byte gUnknown_0300059A
+ thumb_func_end sub_8057B14
+
+ thumb_func_start DrawWholeMapView
+DrawWholeMapView: @ 8057B40
+ push {lr}
+ ldr r1, _08057B60 @ =gSaveBlock1
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ movs r2, 0x2
+ ldrsh r1, [r1, r2]
+ ldr r2, _08057B64 @ =gMapHeader
+ ldr r2, [r2]
+ bl DrawWholeMapViewInternal
+ ldr r1, _08057B68 @ =gUnknown_03000590
+ movs r0, 0x1
+ strb r0, [r1, 0x4]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057B60: .4byte gSaveBlock1
+_08057B64: .4byte gMapHeader
+_08057B68: .4byte gUnknown_03000590
+ thumb_func_end DrawWholeMapView
+
+ thumb_func_start DrawWholeMapViewInternal
+DrawWholeMapViewInternal: @ 8057B6C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r10, r0
+ mov r9, r1
+ mov r8, r2
+ movs r1, 0
+_08057B80:
+ ldr r2, _08057BEC @ =gUnknown_03000590
+ ldrb r0, [r2, 0x3]
+ adds r0, r1, r0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1F
+ bls _08057B94
+ subs r0, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+_08057B94:
+ lsls r6, r0, 5
+ movs r4, 0
+ adds r7, r1, 0x2
+ str r7, [sp]
+ lsrs r5, r1, 1
+_08057B9E:
+ ldr r1, _08057BEC @ =gUnknown_03000590
+ ldrb r0, [r1, 0x2]
+ adds r0, r4, r0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1F
+ bls _08057BB2
+ subs r0, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+_08057BB2:
+ adds r1, r6, r0
+ lsls r1, 16
+ lsrs r1, 16
+ lsrs r2, r4, 1
+ add r2, r10
+ mov r0, r8
+ mov r7, r9
+ adds r3, r7, r5
+ bl DrawMetatileAt
+ adds r0, r4, 0x2
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x1F
+ bls _08057B9E
+ ldr r1, [sp]
+ lsls r0, r1, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x1F
+ bls _08057B80
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057BEC: .4byte gUnknown_03000590
+ thumb_func_end DrawWholeMapViewInternal
+
+ thumb_func_start RedrawMapSlicesForCameraUpdate
+RedrawMapSlicesForCameraUpdate: @ 8057BF0
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r6, r1, 0
+ adds r7, r2, 0
+ ldr r0, _08057C38 @ =gMapHeader
+ ldr r4, [r0]
+ cmp r6, 0
+ ble _08057C08
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8057D48
+_08057C08:
+ cmp r6, 0
+ bge _08057C14
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl RedrawMapSliceEast
+_08057C14:
+ cmp r7, 0
+ ble _08057C20
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8057C3C
+_08057C20:
+ cmp r7, 0
+ bge _08057C2C
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl RedrawMapSliceSouth
+_08057C2C:
+ movs r0, 0x1
+ strb r0, [r5, 0x4]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057C38: .4byte gMapHeader
+ thumb_func_end RedrawMapSlicesForCameraUpdate
+
+ thumb_func_start sub_8057C3C
+sub_8057C3C: @ 8057C3C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ mov r8, r1
+ ldrb r0, [r5, 0x3]
+ adds r0, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1F
+ bls _08057C58
+ subs r0, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+_08057C58:
+ lsls r7, r0, 5
+ movs r4, 0
+ ldr r6, _08057CA0 @ =gSaveBlock1
+_08057C5E:
+ ldrb r0, [r5, 0x2]
+ adds r0, r4, r0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1F
+ bls _08057C70
+ subs r0, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+_08057C70:
+ adds r1, r7, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ ldrsh r2, [r6, r0]
+ lsrs r0, r4, 1
+ adds r2, r0
+ movs r0, 0x2
+ ldrsh r3, [r6, r0]
+ adds r3, 0xE
+ mov r0, r8
+ bl DrawMetatileAt
+ adds r0, r4, 0x2
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x1F
+ bls _08057C5E
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057CA0: .4byte gSaveBlock1
+ thumb_func_end sub_8057C3C
+
+ thumb_func_start RedrawMapSliceSouth
+RedrawMapSliceSouth: @ 8057CA4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ mov r8, r1
+ ldrb r0, [r5, 0x3]
+ lsls r7, r0, 5
+ movs r4, 0
+ ldr r6, _08057CF0 @ =gSaveBlock1
+_08057CB6:
+ ldrb r0, [r5, 0x2]
+ adds r0, r4, r0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1F
+ bls _08057CC8
+ subs r0, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+_08057CC8:
+ adds r1, r7, r0
+ movs r0, 0
+ ldrsh r2, [r6, r0]
+ lsrs r0, r4, 1
+ adds r2, r0
+ movs r0, 0x2
+ ldrsh r3, [r6, r0]
+ mov r0, r8
+ bl DrawMetatileAt
+ adds r0, r4, 0x2
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x1F
+ bls _08057CB6
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057CF0: .4byte gSaveBlock1
+ thumb_func_end RedrawMapSliceSouth
+
+ thumb_func_start RedrawMapSliceEast
+RedrawMapSliceEast: @ 8057CF4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ mov r8, r1
+ ldrb r6, [r5, 0x2]
+ movs r4, 0
+_08057D02:
+ ldrb r0, [r5, 0x3]
+ adds r0, r4, r0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1F
+ bls _08057D14
+ subs r0, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+_08057D14:
+ lsls r1, r0, 5
+ adds r1, r6
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r0, _08057D44 @ =gSaveBlock1
+ movs r3, 0
+ ldrsh r2, [r0, r3]
+ movs r7, 0x2
+ ldrsh r3, [r0, r7]
+ lsrs r0, r4, 1
+ adds r3, r0
+ mov r0, r8
+ bl DrawMetatileAt
+ adds r0, r4, 0x2
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x1F
+ bls _08057D02
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057D44: .4byte gSaveBlock1
+ thumb_func_end RedrawMapSliceEast
+
+ thumb_func_start sub_8057D48
+sub_8057D48: @ 8057D48
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ mov r8, r1
+ ldrb r0, [r6, 0x2]
+ adds r0, 0x1C
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x1F
+ bls _08057D66
+ adds r0, r5, 0
+ subs r0, 0x20
+ lsls r0, 24
+ lsrs r5, r0, 24
+_08057D66:
+ movs r4, 0
+ ldr r7, _08057DAC @ =gSaveBlock1
+_08057D6A:
+ ldrb r0, [r6, 0x3]
+ adds r0, r4, r0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1F
+ bls _08057D7C
+ subs r0, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+_08057D7C:
+ lsls r1, r0, 5
+ adds r1, r5
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ ldrsh r2, [r7, r0]
+ adds r2, 0xE
+ movs r0, 0x2
+ ldrsh r3, [r7, r0]
+ lsrs r0, r4, 1
+ adds r3, r0
+ mov r0, r8
+ bl DrawMetatileAt
+ adds r0, r4, 0x2
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x1F
+ bls _08057D6A
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057DAC: .4byte gSaveBlock1
+ thumb_func_end sub_8057D48
+
+ thumb_func_start CurrentMapDrawMetatileAt
+CurrentMapDrawMetatileAt: @ 8057DB0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r6, _08057DE4 @ =gUnknown_03000590
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl MapPosToBgTilemapOffset
+ adds r1, r0, 0
+ cmp r1, 0
+ blt _08057DDC
+ ldr r0, _08057DE8 @ =gMapHeader
+ ldr r0, [r0]
+ lsls r1, 16
+ lsrs r1, 16
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl DrawMetatileAt
+ movs r0, 0x1
+ strb r0, [r6, 0x4]
+_08057DDC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057DE4: .4byte gUnknown_03000590
+_08057DE8: .4byte gMapHeader
+ thumb_func_end CurrentMapDrawMetatileAt
+
+ thumb_func_start DrawDoorMetatileAt
+DrawDoorMetatileAt: @ 8057DEC
+ push {r4-r6,lr}
+ adds r3, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ ldr r6, _08057E1C @ =gUnknown_03000590
+ adds r0, r6, 0
+ adds r1, r3, 0
+ adds r2, r4, 0
+ bl MapPosToBgTilemapOffset
+ cmp r0, 0
+ blt _08057E14
+ lsls r2, r0, 16
+ lsrs r2, 16
+ movs r0, 0x1
+ adds r1, r5, 0
+ bl DrawMetatile
+ movs r0, 0x1
+ strb r0, [r6, 0x4]
+_08057E14:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057E1C: .4byte gUnknown_03000590
+ thumb_func_end DrawDoorMetatileAt
+
+ thumb_func_start DrawMetatileAt
+DrawMetatileAt: @ 8057E20
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ adds r6, r2, 0
+ adds r7, r3, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl MapGridGetMetatileIdAt
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x80
+ lsls r0, 3
+ cmp r4, r0
+ bls _08057E48
+ movs r4, 0
+_08057E48:
+ ldr r0, _08057E54 @ =0x000001ff
+ cmp r4, r0
+ bhi _08057E58
+ ldr r0, [r5, 0x10]
+ ldr r5, [r0, 0xC]
+ b _08057E64
+ .align 2, 0
+_08057E54: .4byte 0x000001ff
+_08057E58:
+ ldr r0, [r5, 0x14]
+ ldr r5, [r0, 0xC]
+ ldr r1, _08057E84 @ =0xfffffe00
+ adds r0, r4, r1
+ lsls r0, 16
+ lsrs r4, r0, 16
+_08057E64:
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl MapGridGetMetatileLayerTypeAt
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r4, 4
+ adds r1, r5, r1
+ mov r2, r8
+ bl DrawMetatile
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08057E84: .4byte 0xfffffe00
+ thumb_func_end DrawMetatileAt
+
+ thumb_func_start DrawMetatile
+DrawMetatile: @ 8057E88
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r7, r1, 0
+ lsls r2, 16
+ lsrs r6, r2, 16
+ cmp r0, 0x1
+ beq _08057F28
+ cmp r0, 0x1
+ bgt _08057EA6
+ cmp r0, 0
+ bne _08057EA4
+ b _08057FA0
+_08057EA4:
+ b _08058010
+_08057EA6:
+ cmp r0, 0x2
+ beq _08057EAC
+ b _08058010
+_08057EAC:
+ ldr r0, _08057F24 @ =gBG0TilemapBuffer
+ mov r12, r0
+ lsls r1, r6, 1
+ mov r9, r1
+ movs r5, 0xC0
+ lsls r5, 5
+ add r5, r12
+ adds r1, r5
+ ldrh r0, [r7]
+ movs r2, 0
+ mov r8, r2
+ strh r0, [r1]
+ adds r4, r6, 0x1
+ lsls r4, 1
+ adds r1, r4, r5
+ ldrh r0, [r7, 0x2]
+ strh r0, [r1]
+ adds r3, r6, 0
+ adds r3, 0x20
+ lsls r3, 1
+ adds r1, r3, r5
+ ldrh r0, [r7, 0x4]
+ strh r0, [r1]
+ adds r2, r6, 0
+ adds r2, 0x21
+ lsls r2, 1
+ adds r5, r2, r5
+ ldrh r0, [r7, 0x6]
+ strh r0, [r5]
+ movs r1, 0x80
+ lsls r1, 5
+ add r1, r12
+ mov r5, r9
+ adds r0, r5, r1
+ mov r5, r8
+ strh r5, [r0]
+ adds r0, r4, r1
+ strh r5, [r0]
+ adds r0, r3, r1
+ strh r5, [r0]
+ adds r1, r2, r1
+ strh r5, [r1]
+ movs r5, 0x80
+ lsls r5, 4
+ add r5, r12
+ add r9, r5
+ ldrh r0, [r7, 0x8]
+ mov r1, r9
+ strh r0, [r1]
+ adds r4, r5
+ ldrh r0, [r7, 0xA]
+ strh r0, [r4]
+ adds r3, r5
+ ldrh r0, [r7, 0xC]
+ strh r0, [r3]
+ adds r2, r5
+ ldrh r0, [r7, 0xE]
+ strh r0, [r2]
+ b _08058010
+ .align 2, 0
+_08057F24: .4byte gBG0TilemapBuffer
+_08057F28:
+ ldr r2, _08057F98 @ =gBG0TilemapBuffer
+ mov r12, r2
+ lsls r3, r6, 1
+ mov r8, r3
+ movs r2, 0xC0
+ lsls r2, 5
+ add r2, r12
+ adds r1, r3, r2
+ ldrh r0, [r7]
+ movs r5, 0
+ mov r9, r5
+ strh r0, [r1]
+ adds r5, r6, 0x1
+ lsls r5, 1
+ adds r1, r5, r2
+ ldrh r0, [r7, 0x2]
+ strh r0, [r1]
+ adds r4, r6, 0
+ adds r4, 0x20
+ lsls r4, 1
+ adds r1, r4, r2
+ ldrh r0, [r7, 0x4]
+ strh r0, [r1]
+ adds r3, r6, 0
+ adds r3, 0x21
+ lsls r3, 1
+ adds r2, r3, r2
+ ldrh r0, [r7, 0x6]
+ strh r0, [r2]
+ movs r1, 0x80
+ lsls r1, 5
+ add r1, r12
+ mov r0, r8
+ adds r2, r0, r1
+ ldrh r0, [r7, 0x8]
+ strh r0, [r2]
+ adds r2, r5, r1
+ ldrh r0, [r7, 0xA]
+ strh r0, [r2]
+ adds r2, r4, r1
+ ldrh r0, [r7, 0xC]
+ strh r0, [r2]
+ adds r1, r3, r1
+ ldrh r0, [r7, 0xE]
+ strh r0, [r1]
+ ldr r1, _08057F9C @ =gBG1TilemapBuffer
+ add r8, r1
+ mov r0, r9
+ mov r2, r8
+ strh r0, [r2]
+ adds r5, r1
+ strh r0, [r5]
+ adds r4, r1
+ strh r0, [r4]
+ adds r3, r1
+ b _0805800E
+ .align 2, 0
+_08057F98: .4byte gBG0TilemapBuffer
+_08057F9C: .4byte gBG1TilemapBuffer
+_08057FA0:
+ ldr r1, _0805801C @ =gBG0TilemapBuffer
+ mov r9, r1
+ lsls r2, r6, 1
+ mov r8, r2
+ movs r1, 0xC0
+ lsls r1, 5
+ add r1, r9
+ adds r0, r2, r1
+ ldr r2, _08058020 @ =0x00003014
+ strh r2, [r0]
+ adds r5, r6, 0x1
+ lsls r5, 1
+ adds r0, r5, r1
+ strh r2, [r0]
+ adds r4, r6, 0
+ adds r4, 0x20
+ lsls r4, 1
+ adds r0, r4, r1
+ strh r2, [r0]
+ adds r3, r6, 0
+ adds r3, 0x21
+ lsls r3, 1
+ adds r1, r3, r1
+ strh r2, [r1]
+ movs r1, 0x80
+ lsls r1, 5
+ add r1, r9
+ mov r0, r8
+ adds r2, r0, r1
+ ldrh r0, [r7]
+ strh r0, [r2]
+ adds r2, r5, r1
+ ldrh r0, [r7, 0x2]
+ strh r0, [r2]
+ adds r2, r4, r1
+ ldrh r0, [r7, 0x4]
+ strh r0, [r2]
+ adds r1, r3, r1
+ ldrh r0, [r7, 0x6]
+ strh r0, [r1]
+ movs r2, 0x80
+ lsls r2, 4
+ add r2, r9
+ add r8, r2
+ ldrh r0, [r7, 0x8]
+ mov r1, r8
+ strh r0, [r1]
+ adds r5, r2
+ ldrh r0, [r7, 0xA]
+ strh r0, [r5]
+ adds r4, r2
+ ldrh r0, [r7, 0xC]
+ strh r0, [r4]
+ adds r3, r2
+ ldrh r0, [r7, 0xE]
+_0805800E:
+ strh r0, [r3]
+_08058010:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805801C: .4byte gBG0TilemapBuffer
+_08058020: .4byte 0x00003014
+ thumb_func_end DrawMetatile
+
+ thumb_func_start MapPosToBgTilemapOffset
+MapPosToBgTilemapOffset: @ 8058024
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ ldr r4, _08058054 @ =gSaveBlock1
+ movs r5, 0
+ ldrsh r0, [r4, r5]
+ subs r1, r0
+ lsls r1, 1
+ cmp r1, 0x1F
+ bhi _0805804C
+ ldrb r0, [r3, 0x2]
+ adds r1, r0
+ cmp r1, 0x1F
+ ble _08058040
+ subs r1, 0x20
+_08058040:
+ movs r5, 0x2
+ ldrsh r0, [r4, r5]
+ subs r0, r2, r0
+ lsls r2, r0, 1
+ cmp r2, 0x1F
+ bls _08058058
+_0805804C:
+ movs r0, 0x1
+ negs r0, r0
+ b _08058066
+ .align 2, 0
+_08058054: .4byte gSaveBlock1
+_08058058:
+ ldrb r0, [r3, 0x3]
+ adds r2, r0
+ cmp r2, 0x1F
+ ble _08058062
+ subs r2, 0x20
+_08058062:
+ lsls r0, r2, 5
+ adds r0, r1
+_08058066:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end MapPosToBgTilemapOffset
+
+ thumb_func_start CameraUpdateCallback
+CameraUpdateCallback: @ 805806C
+ push {lr}
+ adds r3, r0, 0
+ ldr r2, [r3, 0x4]
+ cmp r2, 0
+ beq _0805808C
+ ldr r1, _08058090 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ movs r2, 0x32
+ ldrsh r1, [r0, r2]
+ str r1, [r3, 0x8]
+ movs r1, 0x34
+ ldrsh r0, [r0, r1]
+ str r0, [r3, 0xC]
+_0805808C:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08058090: .4byte gSprites
+ thumb_func_end CameraUpdateCallback
+
+ thumb_func_start ResetCameraUpdateInfo
+ResetCameraUpdateInfo: @ 8058094
+ ldr r1, _080580A8 @ =gUnknown_03004880
+ movs r0, 0
+ str r0, [r1, 0x8]
+ str r0, [r1, 0xC]
+ str r0, [r1, 0x10]
+ str r0, [r1, 0x14]
+ str r0, [r1, 0x4]
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080580A8: .4byte gUnknown_03004880
+ thumb_func_end ResetCameraUpdateInfo
+
+ thumb_func_start InitCameraUpdateCallback
+InitCameraUpdateCallback: @ 80580AC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _080580E0 @ =gUnknown_03004880
+ ldr r1, [r4, 0x4]
+ cmp r1, 0
+ beq _080580C8
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080580E4 @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+_080580C8:
+ adds r0, r5, 0
+ bl AddCameraObject
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [r4, 0x4]
+ ldr r0, _080580E8 @ =CameraUpdateCallback
+ str r0, [r4]
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080580E0: .4byte gUnknown_03004880
+_080580E4: .4byte gSprites
+_080580E8: .4byte CameraUpdateCallback
+ thumb_func_end InitCameraUpdateCallback
+
+ thumb_func_start CameraUpdate
+CameraUpdate: @ 80580EC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r6, _080581EC @ =gUnknown_03004880
+ ldr r1, [r6]
+ cmp r1, 0
+ beq _08058100
+ adds r0, r6, 0
+ bl _call_via_r1
+_08058100:
+ ldr r7, [r6, 0x8]
+ ldr r0, [r6, 0xC]
+ mov r8, r0
+ movs r4, 0
+ movs r5, 0
+ ldr r1, [r6, 0x10]
+ ldr r0, [r6, 0x14]
+ cmp r1, 0
+ bne _0805811E
+ cmp r7, 0
+ beq _0805811E
+ subs r4, 0x1
+ cmp r7, 0
+ ble _0805811E
+ movs r4, 0x1
+_0805811E:
+ cmp r0, 0
+ bne _08058132
+ mov r2, r8
+ cmp r2, 0
+ beq _08058132
+ movs r5, 0x1
+ negs r5, r5
+ cmp r2, 0
+ ble _08058132
+ movs r5, 0x1
+_08058132:
+ cmp r1, 0
+ beq _08058144
+ cmn r1, r7
+ bne _08058144
+ movs r4, 0x1
+ negs r4, r4
+ cmp r7, 0
+ ble _08058144
+ movs r4, 0x1
+_08058144:
+ cmp r0, 0
+ beq _08058158
+ mov r3, r8
+ cmn r0, r3
+ bne _08058158
+ movs r4, 0x1
+ negs r4, r4
+ cmp r3, 0
+ ble _08058158
+ movs r4, 0x1
+_08058158:
+ ldr r2, _080581EC @ =gUnknown_03004880
+ ldr r0, [r2, 0x10]
+ adds r1, r0, r7
+ str r1, [r2, 0x10]
+ adds r0, r1, 0
+ cmp r1, 0
+ bge _08058168
+ adds r0, 0xF
+_08058168:
+ asrs r0, 4
+ lsls r0, 4
+ subs r0, r1, r0
+ str r0, [r2, 0x10]
+ ldr r0, [r2, 0x14]
+ mov r3, r8
+ adds r1, r0, r3
+ str r1, [r2, 0x14]
+ adds r0, r1, 0
+ cmp r1, 0
+ bge _08058180
+ adds r0, 0xF
+_08058180:
+ asrs r0, 4
+ lsls r0, 4
+ subs r0, r1, r0
+ str r0, [r2, 0x14]
+ cmp r4, 0
+ bne _08058190
+ cmp r5, 0
+ beq _080581C6
+_08058190:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl CameraMove
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl UpdateFieldObjectsForCameraUpdate
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl RotatingGatePuzzleCameraUpdate
+ bl ResetBerryTreeSparkleFlags
+ ldr r6, _080581F0 @ =gUnknown_03000590
+ lsls r4, 1
+ lsls r5, 1
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl tilemap_move_something
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl RedrawMapSlicesForCameraUpdate
+_080581C6:
+ ldr r0, _080581F0 @ =gUnknown_03000590
+ adds r1, r7, 0
+ mov r2, r8
+ bl coords8_add
+ ldr r1, _080581F4 @ =gUnknown_0300489C
+ ldrh r0, [r1]
+ subs r0, r7
+ strh r0, [r1]
+ ldr r1, _080581F8 @ =gUnknown_03004898
+ ldrh r0, [r1]
+ mov r2, r8
+ subs r0, r2
+ strh r0, [r1]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080581EC: .4byte gUnknown_03004880
+_080581F0: .4byte gUnknown_03000590
+_080581F4: .4byte gUnknown_0300489C
+_080581F8: .4byte gUnknown_03004898
+ thumb_func_end CameraUpdate
+
+ thumb_func_start camera_move_and_redraw
+camera_move_and_redraw: @ 80581FC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl CameraMove
+ lsls r0, r4, 16
+ asrs r0, 16
+ lsls r1, r5, 16
+ asrs r1, 16
+ bl UpdateFieldObjectsForCameraUpdate
+ bl DrawWholeMapView
+ ldr r1, _08058230 @ =gUnknown_0300489C
+ lsls r4, 4
+ ldrh r0, [r1]
+ subs r0, r4
+ strh r0, [r1]
+ ldr r1, _08058234 @ =gUnknown_03004898
+ lsls r5, 4
+ ldrh r0, [r1]
+ subs r0, r5
+ strh r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08058230: .4byte gUnknown_0300489C
+_08058234: .4byte gUnknown_03004898
+ thumb_func_end camera_move_and_redraw
+
+ thumb_func_start SetCameraPanningCallback
+SetCameraPanningCallback: @ 8058238
+ ldr r1, _08058240 @ =gUnknown_030005A0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08058240: .4byte gUnknown_030005A0
+ thumb_func_end SetCameraPanningCallback
+
+ thumb_func_start SetCameraPanning
+SetCameraPanning: @ 8058244
+ ldr r2, _08058254 @ =gUnknown_03000598
+ strh r0, [r2]
+ ldr r0, _08058258 @ =gUnknown_0300059A
+ lsls r1, 16
+ asrs r1, 16
+ adds r1, 0x20
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+_08058254: .4byte gUnknown_03000598
+_08058258: .4byte gUnknown_0300059A
+ thumb_func_end SetCameraPanning
+
+ thumb_func_start InstallCameraPanAheadCallback
+InstallCameraPanAheadCallback: @ 805825C
+ ldr r1, _08058278 @ =gUnknown_030005A0
+ ldr r0, _0805827C @ =CameraPanningCB_PanAhead
+ str r0, [r1]
+ ldr r1, _08058280 @ =gUnknown_0300059C
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, _08058284 @ =gUnknown_03000598
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08058288 @ =gUnknown_0300059A
+ movs r0, 0x20
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_08058278: .4byte gUnknown_030005A0
+_0805827C: .4byte CameraPanningCB_PanAhead
+_08058280: .4byte gUnknown_0300059C
+_08058284: .4byte gUnknown_03000598
+_08058288: .4byte gUnknown_0300059A
+ thumb_func_end InstallCameraPanAheadCallback
+
+ thumb_func_start UpdateCameraPanning
+UpdateCameraPanning: @ 805828C
+ push {lr}
+ ldr r0, _080582BC @ =gUnknown_030005A0
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0805829A
+ bl _call_via_r0
+_0805829A:
+ ldr r2, _080582C0 @ =gSpriteCoordOffsetX
+ ldr r0, _080582C4 @ =gUnknown_0300489C
+ ldr r1, _080582C8 @ =gUnknown_03000598
+ ldrh r0, [r0]
+ ldrh r1, [r1]
+ subs r0, r1
+ strh r0, [r2]
+ ldr r2, _080582CC @ =gSpriteCoordOffsetY
+ ldr r0, _080582D0 @ =gUnknown_03004898
+ ldr r1, _080582D4 @ =gUnknown_0300059A
+ ldrh r0, [r0]
+ ldrh r1, [r1]
+ subs r0, r1
+ subs r0, 0x8
+ strh r0, [r2]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080582BC: .4byte gUnknown_030005A0
+_080582C0: .4byte gSpriteCoordOffsetX
+_080582C4: .4byte gUnknown_0300489C
+_080582C8: .4byte gUnknown_03000598
+_080582CC: .4byte gSpriteCoordOffsetY
+_080582D0: .4byte gUnknown_03004898
+_080582D4: .4byte gUnknown_0300059A
+ thumb_func_end UpdateCameraPanning
+
+ thumb_func_start CameraPanningCB_PanAhead
+CameraPanningCB_PanAhead: @ 80582D8
+ push {lr}
+ ldr r0, _080582E8 @ =gUnknown_0202E854
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080582EC
+ bl InstallCameraPanAheadCallback
+ b _08058374
+ .align 2, 0
+_080582E8: .4byte gUnknown_0202E854
+_080582EC:
+ ldr r0, _08058304 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x3]
+ cmp r0, 0x1
+ bne _0805830C
+ ldr r0, _08058308 @ =gUnknown_0300059C
+ ldrb r1, [r0]
+ movs r2, 0x1
+ eors r1, r2
+ strb r1, [r0]
+ cmp r1, 0
+ beq _08058374
+ b _08058312
+ .align 2, 0
+_08058304: .4byte gPlayerAvatar
+_08058308: .4byte gUnknown_0300059C
+_0805830C:
+ ldr r1, _08058334 @ =gUnknown_0300059C
+ movs r0, 0
+ strb r0, [r1]
+_08058312:
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0805833C
+ ldr r2, _08058338 @ =gUnknown_0300059A
+ ldrh r3, [r2]
+ movs r0, 0
+ ldrsh r1, [r2, r0]
+ movs r0, 0x8
+ negs r0, r0
+ cmp r1, r0
+ ble _08058374
+ subs r0, r3, 0x2
+ b _08058372
+ .align 2, 0
+_08058334: .4byte gUnknown_0300059C
+_08058338: .4byte gUnknown_0300059A
+_0805833C:
+ cmp r0, 0x1
+ bne _08058358
+ ldr r1, _08058354 @ =gUnknown_0300059A
+ ldrh r2, [r1]
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x47
+ bgt _08058374
+ adds r0, r2, 0x2
+ strh r0, [r1]
+ b _08058374
+ .align 2, 0
+_08058354: .4byte gUnknown_0300059A
+_08058358:
+ ldr r2, _08058368 @ =gUnknown_0300059A
+ ldrh r0, [r2]
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ cmp r1, 0x1F
+ bgt _0805836C
+ adds r0, 0x2
+ b _08058372
+ .align 2, 0
+_08058368: .4byte gUnknown_0300059A
+_0805836C:
+ cmp r1, 0x20
+ ble _08058374
+ subs r0, 0x2
+_08058372:
+ strh r0, [r2]
+_08058374:
+ pop {r0}
+ bx r0
+ thumb_func_end CameraPanningCB_PanAhead
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_door.s b/asm/field_door.s
new file mode 100644
index 000000000..535874fbe
--- /dev/null
+++ b/asm/field_door.s
@@ -0,0 +1,613 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8058378
+sub_8058378: @ 8058378
+ push {lr}
+ ldr r1, _08058388 @ =0x06007f00
+ movs r2, 0x40
+ bl CpuFastSet
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08058388: .4byte 0x06007f00
+ thumb_func_end sub_8058378
+
+ thumb_func_start door_build_blockdef
+door_build_blockdef: @ 805838C
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r1, 16
+ lsrs r5, r1, 16
+ movs r4, 0
+ adds r1, r6, 0
+_08058398:
+ ldrb r0, [r2]
+ lsls r0, 28
+ lsrs r3, r0, 16
+ adds r2, 0x1
+ adds r0, r5, r4
+ orrs r3, r0
+ strh r3, [r1]
+ adds r1, 0x2
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _08058398
+ cmp r4, 0x7
+ bgt _080583C6
+ lsls r0, r4, 1
+ adds r1, r0, r6
+_080583B6:
+ ldrb r0, [r2]
+ lsls r3, r0, 12
+ adds r2, 0x1
+ strh r3, [r1]
+ adds r1, 0x2
+ adds r4, 0x1
+ cmp r4, 0x7
+ ble _080583B6
+_080583C6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end door_build_blockdef
+
+ thumb_func_start sub_80583CC
+sub_80583CC: @ 80583CC
+ push {r4-r6,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ adds r6, r1, 0
+ adds r4, r2, 0
+ movs r1, 0xFE
+ lsls r1, 2
+ mov r0, sp
+ bl door_build_blockdef
+ subs r1, r6, 0x1
+ adds r0, r5, 0
+ mov r2, sp
+ bl DrawDoorMetatileAt
+ movs r1, 0xFF
+ lsls r1, 2
+ adds r4, 0x4
+ mov r0, sp
+ adds r2, r4, 0
+ bl door_build_blockdef
+ adds r0, r5, 0
+ adds r1, r6, 0
+ mov r2, sp
+ bl DrawDoorMetatileAt
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80583CC
+
+ thumb_func_start sub_805840C
+sub_805840C: @ 805840C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ subs r1, r5, 0x1
+ bl CurrentMapDrawMetatileAt
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl CurrentMapDrawMetatileAt
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805840C
+
+ thumb_func_start sub_8058428
+sub_8058428: @ 8058428
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r6, r2, 0
+ adds r7, r3, 0
+ ldrh r1, [r4, 0x2]
+ ldr r0, _08058444 @ =0x0000ffff
+ cmp r1, r0
+ bne _08058448
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl sub_805840C
+ b _0805845C
+ .align 2, 0
+_08058444: .4byte 0x0000ffff
+_08058448:
+ ldrh r1, [r4, 0x2]
+ ldr r0, [r5, 0x4]
+ adds r0, r1
+ bl sub_8058378
+ ldr r2, [r5, 0x8]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl sub_80583CC
+_0805845C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8058428
+
+ thumb_func_start sub_8058464
+sub_8058464: @ 8058464
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r4, r2, 0
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0805848A
+ movs r2, 0x8
+ ldrsh r1, [r4, r2]
+ lsls r1, 2
+ adds r1, r5, r1
+ movs r0, 0xC
+ ldrsh r2, [r4, r0]
+ movs r0, 0xE
+ ldrsh r3, [r4, r0]
+ adds r0, r6, 0
+ bl sub_8058428
+_0805848A:
+ movs r2, 0xA
+ ldrsh r1, [r4, r2]
+ movs r2, 0x8
+ ldrsh r0, [r4, r2]
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _080584B8
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080584BE
+ movs r0, 0
+ b _080584C0
+_080584B8:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+_080584BE:
+ movs r0, 0x1
+_080584C0:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8058464
+
+ thumb_func_start task50_overworld_door
+task50_overworld_door: @ 80584C8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r2, r4, 2
+ adds r2, r4
+ lsls r2, 3
+ ldr r0, _080584FC @ =gTasks + 0x8
+ adds r2, r0
+ ldrh r1, [r2]
+ lsls r1, 16
+ ldrh r0, [r2, 0x2]
+ orrs r1, r0
+ ldrh r0, [r2, 0x4]
+ lsls r0, 16
+ ldrh r3, [r2, 0x6]
+ orrs r0, r3
+ bl sub_8058464
+ cmp r0, 0
+ bne _080584F6
+ adds r0, r4, 0
+ bl DestroyTask
+_080584F6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080584FC: .4byte gTasks + 0x8
+ thumb_func_end task50_overworld_door
+
+ thumb_func_start door_frame_last
+door_frame_last: @ 8058500
+ push {lr}
+ adds r1, r0, 0
+ b _08058508
+_08058506:
+ adds r1, 0x4
+_08058508:
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _08058506
+ subs r0, r1, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end door_frame_last
+
+ thumb_func_start door_find
+door_find: @ 8058514
+ push {lr}
+ adds r2, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ b _0805852A
+_0805851E:
+ ldrh r0, [r2]
+ cmp r0, r1
+ bne _08058528
+ adds r0, r2, 0
+ b _08058532
+_08058528:
+ adds r2, 0xC
+_0805852A:
+ ldr r0, [r2, 0x4]
+ cmp r0, 0
+ bne _0805851E
+ movs r0, 0
+_08058532:
+ pop {r1}
+ bx r1
+ thumb_func_end door_find
+
+ thumb_func_start task_overworld_door_add_if_inactive
+task_overworld_door_add_if_inactive: @ 8058538
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r7, r2, 0
+ mov r8, r3
+ ldr r4, _08058584 @ =task50_overworld_door
+ adds r0, r4, 0
+ bl FuncIsActiveTask
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0805858C
+ adds r0, r4, 0
+ movs r1, 0x50
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r2, _08058588 @ =gTasks + 0x8
+ adds r1, r2
+ strh r7, [r1, 0xC]
+ mov r2, r8
+ strh r2, [r1, 0xE]
+ strh r5, [r1, 0x2]
+ lsrs r2, r5, 16
+ strh r2, [r1]
+ strh r6, [r1, 0x6]
+ lsrs r2, r6, 16
+ strh r2, [r1, 0x4]
+ lsls r0, 24
+ asrs r0, 24
+ b _08058590
+ .align 2, 0
+_08058584: .4byte task50_overworld_door
+_08058588: .4byte gTasks + 0x8
+_0805858C:
+ movs r0, 0x1
+ negs r0, r0
+_08058590:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end task_overworld_door_add_if_inactive
+
+ thumb_func_start sub_805859C
+sub_805859C: @ 805859C
+ push {lr}
+ adds r0, r1, 0
+ adds r1, r2, 0
+ bl sub_805840C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805859C
+
+ thumb_func_start sub_80585AC
+sub_80585AC: @ 80585AC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl MapGridGetMetatileIdAt
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl door_find
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _080585E2
+ ldr r1, _080585E8 @ =gUnknown_0830F87C
+ adds r0, r1, 0
+ bl door_frame_last
+ adds r1, r0, 0
+ adds r0, r4, 0
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl sub_8058428
+_080585E2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080585E8: .4byte gUnknown_0830F87C
+ thumb_func_end sub_80585AC
+
+ thumb_func_start sub_80585EC
+sub_80585EC: @ 80585EC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl MapGridGetMetatileIdAt
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl door_find
+ cmp r0, 0
+ beq _08058620
+ ldr r1, _0805861C @ =gUnknown_0830F87C
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl task_overworld_door_add_if_inactive
+ lsls r0, 24
+ asrs r0, 24
+ b _08058624
+ .align 2, 0
+_0805861C: .4byte gUnknown_0830F87C
+_08058620:
+ movs r0, 0x1
+ negs r0, r0
+_08058624:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80585EC
+
+ thumb_func_start sub_805862C
+sub_805862C: @ 805862C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl MapGridGetMetatileIdAt
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl door_find
+ cmp r0, 0
+ beq _08058660
+ ldr r1, _0805865C @ =gUnknown_0830F890
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl task_overworld_door_add_if_inactive
+ lsls r0, 24
+ asrs r0, 24
+ b _08058664
+ .align 2, 0
+_0805865C: .4byte gUnknown_0830F890
+_08058660:
+ movs r0, 0x1
+ negs r0, r0
+_08058664:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805862C
+
+ thumb_func_start cur_mapdata_get_door_x2_at
+cur_mapdata_get_door_x2_at: @ 805866C
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, r1, 0
+ adds r1, r2, 0
+ bl MapGridGetMetatileIdAt
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl door_find
+ cmp r0, 0
+ beq _08058690
+ ldrb r0, [r0, 0x2]
+ lsls r0, 24
+ asrs r0, 24
+ b _08058694
+_08058690:
+ movs r0, 0x1
+ negs r0, r0
+_08058694:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end cur_mapdata_get_door_x2_at
+
+ thumb_func_start unref_sub_805869C
+unref_sub_805869C: @ 805869C
+ push {lr}
+ adds r3, r0, 0
+ adds r2, r1, 0
+ ldr r0, _080586B0 @ =gDoorAnimGraphicsTable
+ adds r1, r3, 0
+ bl sub_80585EC
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080586B0: .4byte gDoorAnimGraphicsTable
+ thumb_func_end unref_sub_805869C
+
+ thumb_func_start sub_80586B4
+sub_80586B4: @ 80586B4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8056EAC
+ lsls r0, 24
+ cmp r0, 0
+ beq _080586D6
+ ldr r0, _080586DC @ =gDoorAnimGraphicsTable
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_80585AC
+_080586D6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080586DC: .4byte gDoorAnimGraphicsTable
+ thumb_func_end sub_80586B4
+
+ thumb_func_start sub_80586E0
+sub_80586E0: @ 80586E0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8056EAC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08058702
+ ldr r0, _08058708 @ =gDoorAnimGraphicsTable
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_805859C
+_08058702:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08058708: .4byte gDoorAnimGraphicsTable
+ thumb_func_end sub_80586E0
+
+ thumb_func_start sub_805870C
+sub_805870C: @ 805870C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8056EAC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08058738
+ ldr r0, _08058734 @ =gDoorAnimGraphicsTable
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_805862C
+ lsls r0, 24
+ asrs r0, 24
+ b _0805873C
+ .align 2, 0
+_08058734: .4byte gDoorAnimGraphicsTable
+_08058738:
+ movs r0, 0x1
+ negs r0, r0
+_0805873C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805870C
+
+ thumb_func_start task_overworld_door_add_if_role_69_for_opening_door_at
+task_overworld_door_add_if_role_69_for_opening_door_at: @ 8058744
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8056EAC
+ lsls r0, 24
+ cmp r0, 0
+ beq _08058770
+ ldr r0, _0805876C @ =gDoorAnimGraphicsTable
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_80585EC
+ lsls r0, 24
+ asrs r0, 24
+ b _08058774
+ .align 2, 0
+_0805876C: .4byte gDoorAnimGraphicsTable
+_08058770:
+ movs r0, 0x1
+ negs r0, r0
+_08058774:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end task_overworld_door_add_if_role_69_for_opening_door_at
+
+ thumb_func_start sub_805877C
+sub_805877C: @ 805877C
+ push {lr}
+ ldr r0, _0805878C @ =task50_overworld_door
+ bl FuncIsActiveTask
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805878C: .4byte task50_overworld_door
+ thumb_func_end sub_805877C
+
+ thumb_func_start sub_8058790
+sub_8058790: @ 8058790
+ push {lr}
+ adds r3, r0, 0
+ adds r2, r1, 0
+ ldr r0, _080587A8 @ =gDoorAnimGraphicsTable
+ adds r1, r3, 0
+ bl cur_mapdata_get_door_x2_at
+ lsls r0, 24
+ cmp r0, 0
+ beq _080587AC
+ movs r0, 0x12
+ b _080587AE
+ .align 2, 0
+_080587A8: .4byte gDoorAnimGraphicsTable
+_080587AC:
+ movs r0, 0x8
+_080587AE:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8058790
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s
new file mode 100644
index 000000000..0b7e8a983
--- /dev/null
+++ b/asm/field_ground_effect.s
@@ -0,0 +1,1890 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start GetAllGroundEffectFlags_OnSpawn
+GetAllGroundEffectFlags_OnSpawn: @ 80635F0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectUpdateMetatileBehaviors
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_Reflection
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_TallGrassOnSpawn
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_LongGrassOnSpawn
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_SandHeap
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_ShallowFlowingWater
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_ShortGrass
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_HotSprings
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetAllGroundEffectFlags_OnSpawn
+
+ thumb_func_start GetAllGroundEffectFlags_OnBeginStep
+GetAllGroundEffectFlags_OnBeginStep: @ 8063638
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectUpdateMetatileBehaviors
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_Reflection
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_TallGrassOnBeginStep
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_LongGrassOnBeginStep
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_Tracks
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_SandHeap
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_ShallowFlowingWater
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_Puddle
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_ShortGrass
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_HotSprings
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetAllGroundEffectFlags_OnBeginStep
+
+ thumb_func_start GetAllGroundEffectFlags_OnFinishStep
+GetAllGroundEffectFlags_OnFinishStep: @ 8063690
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ bl FieldObjectUpdateMetatileBehaviors
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_ShallowFlowingWater
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_SandHeap
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_Puddle
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_Ripple
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_ShortGrass
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_HotSprings
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_Seaweed
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetGroundEffectFlags_JumpLanding
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetAllGroundEffectFlags_OnFinishStep
+
+ thumb_func_start FieldObjectUpdateMetatileBehaviors
+FieldObjectUpdateMetatileBehaviors: @ 80636E0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ movs r2, 0x16
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ strb r0, [r4, 0x1F]
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ movs r2, 0x12
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ strb r0, [r4, 0x1E]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldObjectUpdateMetatileBehaviors
+
+ thumb_func_start GetGroundEffectFlags_Reflection
+GetGroundEffectFlags_Reflection: @ 8063708
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r0, _0806374C @ =gUnknown_08376008
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ adds r0, r4, 0
+ bl FieldObjectCheckForReflectiveSurface
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ beq _08063750
+ ldrb r1, [r4, 0x2]
+ lsls r0, r1, 30
+ cmp r0, 0
+ blt _0806375A
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4, 0x2]
+ subs r0, r2, 0x1
+ lsls r0, 2
+ add r0, sp
+ ldr r1, [r5]
+ ldr r0, [r0]
+ orrs r1, r0
+ str r1, [r5]
+ b _0806375A
+ .align 2, 0
+_0806374C: .4byte gUnknown_08376008
+_08063750:
+ ldrb r1, [r4, 0x2]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x2]
+_0806375A:
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_Reflection
+
+ thumb_func_start GetGroundEffectFlags_TallGrassOnSpawn
+GetGroundEffectFlags_TallGrassOnSpawn: @ 8063764
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrb r0, [r0, 0x1E]
+ bl MetatileBehavior_IsTallGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806377C
+ ldr r0, [r4]
+ movs r1, 0x1
+ orrs r0, r1
+ str r0, [r4]
+_0806377C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_TallGrassOnSpawn
+
+ thumb_func_start GetGroundEffectFlags_TallGrassOnBeginStep
+GetGroundEffectFlags_TallGrassOnBeginStep: @ 8063784
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrb r0, [r0, 0x1E]
+ bl MetatileBehavior_IsTallGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806379C
+ ldr r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ str r0, [r4]
+_0806379C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_TallGrassOnBeginStep
+
+ thumb_func_start GetGroundEffectFlags_LongGrassOnSpawn
+GetGroundEffectFlags_LongGrassOnSpawn: @ 80637A4
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrb r0, [r0, 0x1E]
+ bl MetatileBehavior_IsLongGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _080637BC
+ ldr r0, [r4]
+ movs r1, 0x4
+ orrs r0, r1
+ str r0, [r4]
+_080637BC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_LongGrassOnSpawn
+
+ thumb_func_start GetGroundEffectFlags_LongGrassOnBeginStep
+GetGroundEffectFlags_LongGrassOnBeginStep: @ 80637C4
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrb r0, [r0, 0x1E]
+ bl MetatileBehavior_IsLongGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _080637DC
+ ldr r0, [r4]
+ movs r1, 0x8
+ orrs r0, r1
+ str r0, [r4]
+_080637DC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_LongGrassOnBeginStep
+
+ thumb_func_start GetGroundEffectFlags_Tracks
+GetGroundEffectFlags_Tracks: @ 80637E4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsDeepSand
+ lsls r0, 24
+ cmp r0, 0
+ beq _080637FE
+ ldr r0, [r5]
+ movs r1, 0x80
+ lsls r1, 1
+ b _0806381A
+_080637FE:
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsSandOrDeepSand
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063816
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsUnusedFootprintMetatile
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806381E
+_08063816:
+ ldr r0, [r5]
+ movs r1, 0x80
+_0806381A:
+ orrs r0, r1
+ str r0, [r5]
+_0806381E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_Tracks
+
+ thumb_func_start GetGroundEffectFlags_SandHeap
+GetGroundEffectFlags_SandHeap: @ 8063824
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsDeepSand
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063862
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsDeepSand
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063862
+ ldrb r1, [r4, 0x2]
+ lsls r0, r1, 27
+ cmp r0, 0
+ blt _0806386C
+ movs r0, 0x11
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r4, 0x2]
+ ldr r0, [r5]
+ movs r1, 0x80
+ lsls r1, 4
+ orrs r0, r1
+ str r0, [r5]
+ b _0806386C
+_08063862:
+ ldrb r1, [r4, 0x2]
+ movs r0, 0x11
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x2]
+_0806386C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_SandHeap
+
+ thumb_func_start GetGroundEffectFlags_ShallowFlowingWater
+GetGroundEffectFlags_ShallowFlowingWater: @ 8063874
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsShallowFlowingWater
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063892
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsShallowFlowingWater
+ lsls r0, 24
+ cmp r0, 0
+ bne _080638AA
+_08063892:
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsPacifidlogLog
+ lsls r0, 24
+ cmp r0, 0
+ beq _080638C8
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsPacifidlogLog
+ lsls r0, 24
+ cmp r0, 0
+ beq _080638C8
+_080638AA:
+ ldrb r1, [r4, 0x2]
+ lsls r0, r1, 28
+ cmp r0, 0
+ blt _080638D2
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4, 0x2]
+ ldr r0, [r5]
+ movs r1, 0x40
+ orrs r0, r1
+ str r0, [r5]
+ b _080638D2
+_080638C8:
+ ldrb r1, [r4, 0x2]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x2]
+_080638D2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_ShallowFlowingWater
+
+ thumb_func_start GetGroundEffectFlags_Puddle
+GetGroundEffectFlags_Puddle: @ 80638D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsPuddle
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063900
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsPuddle
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063900
+ ldr r0, [r5]
+ movs r1, 0x80
+ lsls r1, 3
+ orrs r0, r1
+ str r0, [r5]
+_08063900:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_Puddle
+
+ thumb_func_start GetGroundEffectFlags_Ripple
+GetGroundEffectFlags_Ripple: @ 8063908
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrb r0, [r0, 0x1E]
+ bl MetatileBehavior_HasRipples
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063922
+ ldr r0, [r4]
+ movs r1, 0x80
+ lsls r1, 2
+ orrs r0, r1
+ str r0, [r4]
+_08063922:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_Ripple
+
+ thumb_func_start GetGroundEffectFlags_ShortGrass
+GetGroundEffectFlags_ShortGrass: @ 8063928
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsShortGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063966
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsShortGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063966
+ ldrb r1, [r4, 0x2]
+ lsls r0, r1, 29
+ cmp r0, 0
+ blt _08063970
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4, 0x2]
+ ldr r0, [r5]
+ movs r1, 0x80
+ lsls r1, 10
+ orrs r0, r1
+ str r0, [r5]
+ b _08063970
+_08063966:
+ ldrb r1, [r4, 0x2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x2]
+_08063970:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_ShortGrass
+
+ thumb_func_start GetGroundEffectFlags_HotSprings
+GetGroundEffectFlags_HotSprings: @ 8063978
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsHotSprings
+ lsls r0, 24
+ cmp r0, 0
+ beq _080639B6
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsHotSprings
+ lsls r0, 24
+ cmp r0, 0
+ beq _080639B6
+ ldrb r1, [r4, 0x2]
+ lsls r0, r1, 26
+ cmp r0, 0
+ blt _080639C0
+ movs r0, 0x21
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x2]
+ ldr r0, [r5]
+ movs r1, 0x80
+ lsls r1, 11
+ orrs r0, r1
+ str r0, [r5]
+ b _080639C0
+_080639B6:
+ ldrb r1, [r4, 0x2]
+ movs r0, 0x21
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r4, 0x2]
+_080639C0:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_HotSprings
+
+ thumb_func_start GetGroundEffectFlags_Seaweed
+GetGroundEffectFlags_Seaweed: @ 80639C8
+ push {r4,lr}
+ adds r4, r1, 0
+ ldrb r0, [r0, 0x1E]
+ bl MetatileBehavior_IsSeaweed
+ lsls r0, 24
+ cmp r0, 0
+ beq _080639E2
+ ldr r0, [r4]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r4]
+_080639E2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_Seaweed
+
+ thumb_func_start GetGroundEffectFlags_JumpLanding
+GetGroundEffectFlags_JumpLanding: @ 80639E8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ adds r6, r1, 0
+ ldr r0, [r7]
+ ldr r1, _08063A24 @ =0x02000020
+ ands r0, r1
+ cmp r0, 0x20
+ bne _08063A3A @ Is player landing after jumping?
+ movs r5, 0
+ ldr r0, _08063A28 @ =gJumpLanding_MetatileFunctionPointers
+ mov r8, r0
+_08063A02:
+ lsls r4, r5, 2
+ mov r0, r8
+ adds r1, r4, r0
+ ldrb r0, [r7, 0x1E] @ Load metatile behavior
+ ldr r1, [r1]
+ bl _call_via_r1
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063A30
+ ldr r0, _08063A2C @ =gJumpLanding_Bitmasks
+ adds r0, r4, r0
+ ldr r1, [r6]
+ ldr r0, [r0]
+ orrs r1, r0
+ str r1, [r6]
+ b _08063A3A
+ .align 2, 0
+_08063A24: .4byte 0x02000020
+_08063A28: .4byte gJumpLanding_MetatileFunctionPointers
+_08063A2C: .4byte gJumpLanding_Bitmasks
+_08063A30:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x5
+ bls _08063A02
+_08063A3A:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end GetGroundEffectFlags_JumpLanding
+
+ thumb_func_start FieldObjectCheckForReflectiveSurface
+FieldObjectCheckForReflectiveSurface: @ 8063A44
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r5, r0, 0
+ ldrb r0, [r5, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ movs r2, 0x8
+ ldrsh r1, [r0, r2]
+ adds r1, 0x8
+ lsls r1, 12
+ lsrs r1, 16
+ str r1, [sp]
+ movs r1, 0xA
+ ldrsh r0, [r0, r1]
+ adds r0, 0x8
+ lsls r0, 12
+ movs r4, 0
+ lsrs r2, r0, 16
+ str r2, [sp, 0x4]
+ asrs r0, 16
+ cmp r4, r0
+ blt _08063A7A
+ b _08063B80
+_08063A7A:
+ movs r0, 0x1
+ mov r10, r0
+_08063A7E:
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ movs r2, 0x12
+ ldrsh r1, [r5, r2]
+ add r1, r10
+ lsls r4, 16
+ asrs r6, r4, 16
+ adds r1, r6
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetReflectionTypeByMetatileBehavior
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _08063B82
+ movs r1, 0x14
+ ldrsh r0, [r5, r1]
+ movs r2, 0x16
+ ldrsh r1, [r5, r2]
+ add r1, r10
+ adds r1, r6
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetReflectionTypeByMetatileBehavior
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _08063B82
+ movs r2, 0x1
+ ldr r1, [sp]
+ lsls r0, r1, 16
+ asrs r1, r0, 16
+ mov r8, r0
+ cmp r2, r1
+ bge _08063B6E
+ movs r0, 0x80
+ lsls r0, 9
+ asrs r7, r0, 16
+_08063AD8:
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ lsls r1, r2, 16
+ asrs r4, r1, 16
+ adds r0, r4
+ movs r2, 0x12
+ ldrsh r1, [r5, r2]
+ adds r1, r7
+ adds r1, r6
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetReflectionTypeByMetatileBehavior
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _08063B82
+ movs r1, 0x10
+ ldrsh r0, [r5, r1]
+ subs r0, r4
+ movs r2, 0x12
+ ldrsh r1, [r5, r2]
+ adds r1, r7
+ adds r1, r6
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetReflectionTypeByMetatileBehavior
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _08063B82
+ movs r1, 0x14
+ ldrsh r0, [r5, r1]
+ adds r0, r4
+ movs r2, 0x16
+ ldrsh r1, [r5, r2]
+ adds r1, r7
+ adds r1, r6
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetReflectionTypeByMetatileBehavior
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _08063B82
+ movs r1, 0x14
+ ldrsh r0, [r5, r1]
+ subs r0, r4
+ movs r2, 0x16
+ ldrsh r1, [r5, r2]
+ adds r1, r7
+ adds r1, r6
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetReflectionTypeByMetatileBehavior
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _08063B82
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r0, r8
+ blt _08063AD8
+_08063B6E:
+ movs r1, 0x80
+ lsls r1, 9
+ add r1, r9
+ lsrs r4, r1, 16
+ ldr r2, [sp, 0x4]
+ lsls r0, r2, 16
+ cmp r1, r0
+ bge _08063B80
+ b _08063A7E
+_08063B80:
+ movs r0, 0
+_08063B82:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end FieldObjectCheckForReflectiveSurface
+
+ thumb_func_start GetReflectionTypeByMetatileBehavior
+GetReflectionTypeByMetatileBehavior: @ 8063B94
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl MetatileBehavior_IsIce
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063BAA
+ movs r0, 0x1
+ b _08063BBC
+_08063BAA:
+ adds r0, r4, 0
+ bl MetatileBehavior_IsReflective
+ lsls r0, 24
+ cmp r0, 0
+ bne _08063BBA
+ movs r0, 0
+ b _08063BBC
+_08063BBA:
+ movs r0, 0x2
+_08063BBC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetReflectionTypeByMetatileBehavior
+
+ thumb_func_start GetLedgeJumpDirection
+GetLedgeJumpDirection: @ 8063BC4
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r3, r0, 16
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 24
+ lsrs r4, r2, 24
+ cmp r4, 0
+ beq _08063C0A
+ cmp r4, 0x4
+ bls _08063BE0
+ subs r0, r4, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+_08063BE0:
+ subs r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r3, 16
+ asrs r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08063C10 @ =gUnknown_08376040
+ lsls r1, r4, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl _call_via_r1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08063C14
+_08063C0A:
+ movs r0, 0
+ b _08063C1A
+ .align 2, 0
+_08063C10: .4byte gUnknown_08376040
+_08063C14:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+_08063C1A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end GetLedgeJumpDirection
+
+ thumb_func_start FieldObjectSetSpriteOamTableForLongGrass
+FieldObjectSetSpriteOamTableForLongGrass: @ 8063C20
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r0, [r5]
+ lsls r0, 27
+ cmp r0, 0
+ blt _08063C74
+ ldrb r0, [r5, 0x1E]
+ bl MetatileBehavior_IsLongGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063C74
+ ldrb r0, [r5, 0x1F]
+ bl MetatileBehavior_IsLongGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _08063C74
+ adds r4, 0x42
+ ldrb r1, [r4]
+ movs r6, 0x40
+ negs r6, r6
+ adds r0, r6, 0
+ ands r0, r1
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4]
+ ldrb r0, [r5, 0xB]
+ lsrs r0, 4
+ bl ZCoordToPriority
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08063C74
+ ldrb r0, [r4]
+ adds r1, r6, 0
+ ands r1, r0
+ movs r0, 0x5
+ orrs r1, r0
+ strb r1, [r4]
+_08063C74:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldObjectSetSpriteOamTableForLongGrass
+
+ thumb_func_start IsZCoordMismatchAt
+IsZCoordMismatchAt: @ 8063C7C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 16
+ lsrs r0, r1, 16
+ lsls r2, 16
+ lsrs r1, r2, 16
+ cmp r4, 0
+ beq _08063CAA
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _08063CAA
+ cmp r0, 0xF
+ beq _08063CAA
+ cmp r0, r4
+ bne _08063CAE
+_08063CAA:
+ movs r0, 0
+ b _08063CB0
+_08063CAE:
+ movs r0, 0x1
+_08063CB0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end IsZCoordMismatchAt
+
+ thumb_func_start FieldObjectUpdateZCoordAndPriority
+FieldObjectUpdateZCoordAndPriority: @ 8063CB8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x3]
+ lsls r0, 29
+ cmp r0, 0
+ blt _08063D06
+ adds r0, r4, 0
+ bl FieldObjectUpdateZCoord
+ ldr r1, _08063D0C @ =gFieldObjectPriorities_08376070
+ ldrb r2, [r4, 0xB]
+ lsls r2, 24
+ lsrs r0, r2, 28
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r4, r5, 0
+ adds r4, 0x42
+ movs r1, 0x3F
+ ands r1, r0
+ ldrb r3, [r4]
+ movs r0, 0x40
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r4]
+ ldr r0, _08063D10 @ =gFieldObjectPriorities_08376060
+ lsrs r2, 28
+ adds r2, r0
+ movs r0, 0x3
+ ldrb r1, [r2]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r5, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+_08063D06:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063D0C: .4byte gFieldObjectPriorities_08376070
+_08063D10: .4byte gFieldObjectPriorities_08376060
+ thumb_func_end FieldObjectUpdateZCoordAndPriority
+
+ thumb_func_start InitObjectPriorityByZCoord
+InitObjectPriorityByZCoord: @ 8063D14
+ push {r4,lr}
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _08063D58 @ =gFieldObjectPriorities_08376070
+ adds r2, r1, r2
+ ldrb r2, [r2]
+ movs r3, 0x42
+ adds r3, r0
+ mov r12, r3
+ movs r3, 0x3F
+ ands r3, r2
+ mov r2, r12
+ ldrb r4, [r2]
+ movs r2, 0x40
+ negs r2, r2
+ ands r2, r4
+ orrs r2, r3
+ mov r3, r12
+ strb r2, [r3]
+ ldr r2, _08063D5C @ =gFieldObjectPriorities_08376060
+ adds r1, r2
+ movs r3, 0x3
+ ldrb r2, [r1]
+ ands r2, r3
+ lsls r2, 2
+ ldrb r3, [r0, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r3
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063D58: .4byte gFieldObjectPriorities_08376070
+_08063D5C: .4byte gFieldObjectPriorities_08376060
+ thumb_func_end InitObjectPriorityByZCoord
+
+ thumb_func_start ZCoordToPriority
+ZCoordToPriority: @ 8063D60
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _08063D6C @ =gFieldObjectPriorities_08376060
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_08063D6C: .4byte gFieldObjectPriorities_08376060
+ thumb_func_end ZCoordToPriority
+
+ thumb_func_start FieldObjectUpdateZCoord
+FieldObjectUpdateZCoord: @ 8063D70
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ movs r2, 0x12
+ ldrsh r1, [r4, r2]
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ movs r2, 0x16
+ ldrsh r1, [r4, r2]
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r5, 0xF
+ beq _08063DBE
+ cmp r0, 0xF
+ beq _08063DBE
+ movs r3, 0xF
+ adds r0, r5, 0
+ ands r0, r3
+ ldrb r1, [r4, 0xB]
+ movs r2, 0x10
+ negs r2, r2
+ ands r2, r1
+ orrs r2, r0
+ strb r2, [r4, 0xB]
+ cmp r5, 0
+ beq _08063DBE
+ cmp r5, 0xF
+ beq _08063DBE
+ lsls r0, r5, 4
+ ands r2, r3
+ orrs r2, r0
+ strb r2, [r4, 0xB]
+_08063DBE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldObjectUpdateZCoord
+
+ thumb_func_start SetObjectSubpriorityByZCoord
+SetObjectSubpriorityByZCoord: @ 8063DC4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, 24
+ lsrs r2, 24
+ adds r3, r1, 0
+ adds r3, 0x29
+ movs r5, 0
+ ldrsb r5, [r3, r5]
+ ldrh r4, [r1, 0x22]
+ ldr r3, _08063E04 @ =gSpriteCoordOffsetY
+ subs r4, r5
+ ldrh r3, [r3]
+ adds r4, r3
+ adds r4, 0x8
+ movs r3, 0xFF
+ ands r4, r3
+ lsrs r4, 4
+ movs r3, 0x10
+ subs r3, r4
+ lsls r3, 17
+ ldr r4, _08063E08 @ =gUnknown_08376050
+ adds r0, r4
+ lsrs r3, 16
+ ldrb r0, [r0]
+ adds r3, r0
+ adds r2, r3
+ adds r1, 0x43
+ strb r2, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063E04: .4byte gSpriteCoordOffsetY
+_08063E08: .4byte gUnknown_08376050
+ thumb_func_end SetObjectSubpriorityByZCoord
+
+ thumb_func_start FieldObjectUpdateSubpriority
+FieldObjectUpdateSubpriority: @ 8063E0C
+ push {lr}
+ adds r2, r0, 0
+ ldrb r0, [r2, 0x3]
+ lsls r0, 29
+ cmp r0, 0
+ blt _08063E22
+ ldrb r0, [r2, 0xB]
+ lsrs r0, 4
+ movs r2, 0x1
+ bl SetObjectSubpriorityByZCoord
+_08063E22:
+ pop {r0}
+ bx r0
+ thumb_func_end FieldObjectUpdateSubpriority
+
+ thumb_func_start AreZCoordsCompatible
+AreZCoordsCompatible: @ 8063E28
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ cmp r0, 0
+ beq _08063E3E
+ cmp r1, 0
+ beq _08063E3E
+ cmp r0, r1
+ bne _08063E42
+_08063E3E:
+ movs r0, 0x1
+ b _08063E44
+_08063E42:
+ movs r0, 0
+_08063E44:
+ pop {r1}
+ bx r1
+ thumb_func_end AreZCoordsCompatible
+
+ thumb_func_start GroundEffect_SpawnOnTallGrass
+GroundEffect_SpawnOnTallGrass: @ 8063E48
+ push {lr}
+ ldr r3, _08063E8C @ =gUnknown_0202FF84
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ str r1, [r3]
+ movs r2, 0x12
+ ldrsh r1, [r0, r2]
+ str r1, [r3, 0x4]
+ ldrb r1, [r0, 0xB]
+ lsrs r1, 4
+ str r1, [r3, 0x8]
+ movs r1, 0x2
+ str r1, [r3, 0xC]
+ ldrb r1, [r0, 0x8]
+ lsls r1, 8
+ ldrb r2, [r0, 0x9]
+ orrs r1, r2
+ str r1, [r3, 0x10]
+ ldrb r0, [r0, 0xA]
+ str r0, [r3, 0x14]
+ ldr r1, _08063E90 @ =gSaveBlock1
+ ldrb r0, [r1, 0x5]
+ lsls r0, 8
+ ldrb r1, [r1, 0x4]
+ orrs r0, r1
+ str r0, [r3, 0x18]
+ movs r0, 0x1
+ str r0, [r3, 0x1C]
+ movs r0, 0x4
+ bl FieldEffectStart
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063E8C: .4byte gUnknown_0202FF84
+_08063E90: .4byte gSaveBlock1
+ thumb_func_end GroundEffect_SpawnOnTallGrass
+
+ thumb_func_start sub_8063E94
+sub_8063E94: @ 8063E94
+ push {lr}
+ ldr r3, _08063ED8 @ =gUnknown_0202FF84
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ str r1, [r3]
+ movs r2, 0x12
+ ldrsh r1, [r0, r2]
+ str r1, [r3, 0x4]
+ ldrb r1, [r0, 0xB]
+ lsrs r1, 4
+ str r1, [r3, 0x8]
+ movs r1, 0x2
+ str r1, [r3, 0xC]
+ ldrb r1, [r0, 0x8]
+ lsls r1, 8
+ ldrb r2, [r0, 0x9]
+ orrs r1, r2
+ str r1, [r3, 0x10]
+ ldrb r0, [r0, 0xA]
+ str r0, [r3, 0x14]
+ ldr r1, _08063EDC @ =gSaveBlock1
+ ldrb r0, [r1, 0x5]
+ lsls r0, 8
+ ldrb r1, [r1, 0x4]
+ orrs r0, r1
+ str r0, [r3, 0x18]
+ movs r0, 0
+ str r0, [r3, 0x1C]
+ movs r0, 0x4
+ bl FieldEffectStart
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063ED8: .4byte gUnknown_0202FF84
+_08063EDC: .4byte gSaveBlock1
+ thumb_func_end sub_8063E94
+
+ thumb_func_start sub_8063EE0
+sub_8063EE0: @ 8063EE0
+ push {lr}
+ ldr r3, _08063F24 @ =gUnknown_0202FF84
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ str r1, [r3]
+ movs r2, 0x12
+ ldrsh r1, [r0, r2]
+ str r1, [r3, 0x4]
+ ldrb r1, [r0, 0xB]
+ lsrs r1, 4
+ str r1, [r3, 0x8]
+ movs r1, 0x2
+ str r1, [r3, 0xC]
+ ldrb r1, [r0, 0x8]
+ lsls r1, 8
+ ldrb r2, [r0, 0x9]
+ orrs r1, r2
+ str r1, [r3, 0x10]
+ ldrb r0, [r0, 0xA]
+ str r0, [r3, 0x14]
+ ldr r1, _08063F28 @ =gSaveBlock1
+ ldrb r0, [r1, 0x5]
+ lsls r0, 8
+ ldrb r1, [r1, 0x4]
+ orrs r0, r1
+ str r0, [r3, 0x18]
+ movs r0, 0x1
+ str r0, [r3, 0x1C]
+ movs r0, 0x11
+ bl FieldEffectStart
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063F24: .4byte gUnknown_0202FF84
+_08063F28: .4byte gSaveBlock1
+ thumb_func_end sub_8063EE0
+
+ thumb_func_start sub_8063F2C
+sub_8063F2C: @ 8063F2C
+ push {lr}
+ ldr r3, _08063F70 @ =gUnknown_0202FF84
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ str r1, [r3]
+ movs r2, 0x12
+ ldrsh r1, [r0, r2]
+ str r1, [r3, 0x4]
+ ldrb r1, [r0, 0xB]
+ lsrs r1, 4
+ str r1, [r3, 0x8]
+ movs r1, 0x2
+ str r1, [r3, 0xC]
+ ldrb r1, [r0, 0x8]
+ lsls r1, 8
+ ldrb r2, [r0, 0x9]
+ orrs r1, r2
+ str r1, [r3, 0x10]
+ ldrb r0, [r0, 0xA]
+ str r0, [r3, 0x14]
+ ldr r1, _08063F74 @ =gSaveBlock1
+ ldrb r0, [r1, 0x5]
+ lsls r0, 8
+ ldrb r1, [r1, 0x4]
+ orrs r0, r1
+ str r0, [r3, 0x18]
+ movs r0, 0
+ str r0, [r3, 0x1C]
+ movs r0, 0x11
+ bl FieldEffectStart
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063F70: .4byte gUnknown_0202FF84
+_08063F74: .4byte gSaveBlock1
+ thumb_func_end sub_8063F2C
+
+ thumb_func_start GroundEffect_WaterReflection
+GroundEffect_WaterReflection: @ 8063F78
+ push {lr}
+ movs r2, 0
+ bl SetUpReflection
+ pop {r0}
+ bx r0
+ thumb_func_end GroundEffect_WaterReflection
+
+ thumb_func_start GroundEffect_IceReflection
+GroundEffect_IceReflection: @ 8063F84
+ push {lr}
+ movs r2, 0x1
+ bl SetUpReflection
+ pop {r0}
+ bx r0
+ thumb_func_end GroundEffect_IceReflection
+
+ thumb_func_start GroundEffect_FlowingWater
+GroundEffect_FlowingWater: @ 8063F90
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x22
+ bl oe_exec_and_other_stuff
+ pop {r0}
+ bx r0
+ thumb_func_end GroundEffect_FlowingWater
+
+ thumb_func_start sub_8063FA0
+sub_8063FA0: @ 8063FA0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ ldr r1, _08063FC8 @ =gUnknown_08376080
+ ldrb r0, [r0, 0xD]
+ lsls r0, 2
+ adds r0, r1
+ ldr r3, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0
+ bl _call_via_r3
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063FC8: .4byte gUnknown_08376080
+ thumb_func_end sub_8063FA0
+
+ thumb_func_start sub_8063FCC
+sub_8063FCC: @ 8063FCC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ ldr r1, _08063FF4 @ =gUnknown_08376080
+ ldrb r0, [r0, 0xD]
+ lsls r0, 2
+ adds r0, r1
+ ldr r3, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl _call_via_r3
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08063FF4: .4byte gUnknown_08376080
+ thumb_func_end sub_8063FCC
+
+ thumb_func_start nullsub_50
+nullsub_50: @ 8063FF8
+ bx lr
+ thumb_func_end nullsub_50
+
+ thumb_func_start DoTracksGroundEffect_Footprints
+DoTracksGroundEffect_Footprints: @ 8063FFC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ lsls r4, r2, 24
+ lsrs r4, 24
+ ldr r1, _08064044 @ =gSandFootprints_FieldEffectData
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ ldr r1, _08064048 @ =gUnknown_0202FF84
+ movs r2, 0x14
+ ldrsh r0, [r5, r2]
+ str r0, [r1]
+ movs r2, 0x16
+ ldrsh r0, [r5, r2]
+ str r0, [r1, 0x4]
+ movs r0, 0x95
+ str r0, [r1, 0x8]
+ movs r0, 0x2
+ str r0, [r1, 0xC]
+ ldrb r0, [r5, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ str r0, [r1, 0x10]
+ lsls r4, 1
+ mov r1, sp
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ bl FieldEffectStart
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064044: .4byte gSandFootprints_FieldEffectData
+_08064048: .4byte gUnknown_0202FF84
+ thumb_func_end DoTracksGroundEffect_Footprints
+
+ thumb_func_start DoTracksGroundEffect_BikeTireTracks
+DoTracksGroundEffect_BikeTireTracks: @ 806404C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, [r4, 0x10]
+ ldr r0, [r4, 0x14]
+ cmp r1, r0
+ beq _0806408E
+ ldr r2, _08064094 @ =gUnknown_0202FF84
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ str r0, [r2]
+ movs r1, 0x16
+ ldrsh r0, [r4, r1]
+ str r0, [r2, 0x4]
+ movs r0, 0x95
+ str r0, [r2, 0x8]
+ movs r0, 0x2
+ str r0, [r2, 0xC]
+ ldr r3, _08064098 @ =gBikeTireTracks_Transitions
+ ldrb r1, [r4, 0x18]
+ lsls r1, 28
+ lsrs r1, 28
+ adds r0, r4, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ lsls r0, 2
+ subs r0, 0x5
+ adds r1, r0
+ adds r1, r3
+ ldrb r0, [r1]
+ str r0, [r2, 0x10]
+ movs r0, 0x23
+ bl FieldEffectStart
+_0806408E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064094: .4byte gUnknown_0202FF84
+_08064098: .4byte gBikeTireTracks_Transitions
+ thumb_func_end DoTracksGroundEffect_BikeTireTracks
+
+ thumb_func_start GroundEffect_Ripple
+GroundEffect_Ripple: @ 806409C
+ push {lr}
+ bl DoRippleFieldEffect
+ pop {r0}
+ bx r0
+ thumb_func_end GroundEffect_Ripple
+
+ thumb_func_start GroundEffect_StepOnPuddle
+GroundEffect_StepOnPuddle: @ 80640A8
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0xF
+ bl oe_exec_and_other_stuff
+ pop {r0}
+ bx r0
+ thumb_func_end GroundEffect_StepOnPuddle
+
+ thumb_func_start GroundEffect_SandPile
+GroundEffect_SandPile: @ 80640B8
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x27
+ bl oe_exec_and_other_stuff
+ pop {r0}
+ bx r0
+ thumb_func_end GroundEffect_SandPile
+
+ thumb_func_start GroundEffect_JumpOnTallGrass
+GroundEffect_JumpOnTallGrass: @ 80640C8
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldr r1, _0806411C @ =gUnknown_0202FF84
+ movs r2, 0x10
+ ldrsh r0, [r5, r2]
+ str r0, [r1]
+ movs r4, 0x12
+ ldrsh r0, [r5, r4]
+ str r0, [r1, 0x4]
+ ldrb r0, [r5, 0xB]
+ lsrs r0, 4
+ str r0, [r1, 0x8]
+ movs r0, 0x2
+ str r0, [r1, 0xC]
+ movs r0, 0xC
+ bl FieldEffectStart
+ ldrb r0, [r5, 0x8]
+ ldrb r1, [r5, 0x9]
+ ldrb r2, [r5, 0xA]
+ movs r7, 0x10
+ ldrsh r3, [r5, r7]
+ movs r7, 0x12
+ ldrsh r4, [r5, r7]
+ str r4, [sp]
+ bl sub_8126FF0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ bne _08064112
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl GroundEffect_SpawnOnTallGrass
+_08064112:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806411C: .4byte gUnknown_0202FF84
+ thumb_func_end GroundEffect_JumpOnTallGrass
+
+ thumb_func_start GroundEffect_JumpOnLongGrass
+GroundEffect_JumpOnLongGrass: @ 8064120
+ push {lr}
+ ldr r2, _08064144 @ =gUnknown_0202FF84
+ movs r3, 0x10
+ ldrsh r1, [r0, r3]
+ str r1, [r2]
+ movs r3, 0x12
+ ldrsh r1, [r0, r3]
+ str r1, [r2, 0x4]
+ ldrb r0, [r0, 0xB]
+ lsrs r0, 4
+ str r0, [r2, 0x8]
+ movs r0, 0x2
+ str r0, [r2, 0xC]
+ movs r0, 0x12
+ bl FieldEffectStart
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064144: .4byte gUnknown_0202FF84
+ thumb_func_end GroundEffect_JumpOnLongGrass
+
+ thumb_func_start GroundEffect_JumpOnShallowWater
+GroundEffect_JumpOnShallowWater: @ 8064148
+ push {r4,lr}
+ ldr r3, _08064174 @ =gUnknown_0202FF84
+ movs r4, 0x10
+ ldrsh r2, [r0, r4]
+ str r2, [r3]
+ movs r4, 0x12
+ ldrsh r2, [r0, r4]
+ str r2, [r3, 0x4]
+ ldrb r0, [r0, 0xB]
+ lsrs r0, 4
+ str r0, [r3, 0x8]
+ ldrb r0, [r1, 0x5]
+ lsls r0, 28
+ lsrs r0, 30
+ str r0, [r3, 0xC]
+ movs r0, 0x10
+ bl FieldEffectStart
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064174: .4byte gUnknown_0202FF84
+ thumb_func_end GroundEffect_JumpOnShallowWater
+
+ thumb_func_start GroundEffect_JumpOnWater
+GroundEffect_JumpOnWater: @ 8064178
+ push {r4,lr}
+ ldr r3, _080641A4 @ =gUnknown_0202FF84
+ movs r4, 0x10
+ ldrsh r2, [r0, r4]
+ str r2, [r3]
+ movs r4, 0x12
+ ldrsh r2, [r0, r4]
+ str r2, [r3, 0x4]
+ ldrb r0, [r0, 0xB]
+ lsrs r0, 4
+ str r0, [r3, 0x8]
+ ldrb r0, [r1, 0x5]
+ lsls r0, 28
+ lsrs r0, 30
+ str r0, [r3, 0xC]
+ movs r0, 0xE
+ bl FieldEffectStart
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080641A4: .4byte gUnknown_0202FF84
+ thumb_func_end GroundEffect_JumpOnWater
+
+ thumb_func_start GroundEffect_JumpLandingDust
+GroundEffect_JumpLandingDust: @ 80641A8
+ push {r4,lr}
+ ldr r3, _080641D4 @ =gUnknown_0202FF84
+ movs r4, 0x10
+ ldrsh r2, [r0, r4]
+ str r2, [r3]
+ movs r4, 0x12
+ ldrsh r2, [r0, r4]
+ str r2, [r3, 0x4]
+ ldrb r0, [r0, 0xB]
+ lsrs r0, 4
+ str r0, [r3, 0x8]
+ ldrb r0, [r1, 0x5]
+ lsls r0, 28
+ lsrs r0, 30
+ str r0, [r3, 0xC]
+ movs r0, 0xA
+ bl FieldEffectStart
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080641D4: .4byte gUnknown_0202FF84
+ thumb_func_end GroundEffect_JumpLandingDust
+
+ thumb_func_start GroundEffect_ShortGrass
+GroundEffect_ShortGrass: @ 80641D8
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x29
+ bl oe_exec_and_other_stuff
+ pop {r0}
+ bx r0
+ thumb_func_end GroundEffect_ShortGrass
+
+ thumb_func_start GroundEffect_HotSprings
+GroundEffect_HotSprings: @ 80641E8
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x2A
+ bl oe_exec_and_other_stuff
+ pop {r0}
+ bx r0
+ thumb_func_end GroundEffect_HotSprings
+
+ thumb_func_start GroundEffect_Seaweed
+GroundEffect_Seaweed: @ 80641F8
+ push {lr}
+ ldr r2, _08064214 @ =gUnknown_0202FF84
+ movs r3, 0x10
+ ldrsh r1, [r0, r3]
+ str r1, [r2]
+ movs r1, 0x12
+ ldrsh r0, [r0, r1]
+ str r0, [r2, 0x4]
+ movs r0, 0x35
+ bl FieldEffectStart
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064214: .4byte gUnknown_0202FF84
+ thumb_func_end GroundEffect_Seaweed
+
+ thumb_func_start sub_8064218
+sub_8064218: @ 8064218
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ adds r6, r1, 0
+ adds r5, r2, 0
+ movs r4, 0
+ ldr r0, _08064258 @ =gUnknown_083760A0
+ mov r8, r0
+_0806422A:
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _08064240
+ lsls r0, r4, 2
+ add r0, r8
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl _call_via_r2
+_08064240:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsrs r5, 1
+ cmp r4, 0x13
+ bls _0806422A
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064258: .4byte gUnknown_083760A0
+ thumb_func_end sub_8064218
+
+ thumb_func_start filters_out_some_ground_effects
+filters_out_some_ground_effects: @ 806425C
+ push {lr}
+ adds r2, r0, 0
+ adds r3, r1, 0
+ ldrb r0, [r2]
+ lsls r0, 27
+ cmp r0, 0
+ bge _0806428A
+ ldrb r1, [r2, 0x2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ adds r1, 0x8
+ ands r0, r1
+ subs r1, 0x18
+ ands r0, r1
+ strb r0, [r2, 0x2]
+ ldr r0, [r3]
+ ldr r1, _08064290 @ =0xfff9f7bd
+ ands r0, r1
+ str r0, [r3]
+_0806428A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08064290: .4byte 0xfff9f7bd
+ thumb_func_end filters_out_some_ground_effects
+
+ thumb_func_start FilterOutStepOnPuddleGroundEffectIfJumping
+FilterOutStepOnPuddleGroundEffectIfJumping: @ 8064294
+ push {lr}
+ adds r2, r1, 0
+ ldrb r0, [r0]
+ lsls r0, 26
+ cmp r0, 0
+ bge _080642A8
+ ldr r0, [r2]
+ ldr r1, _080642AC @ =0xfffffbff
+ ands r0, r1
+ str r0, [r2]
+_080642A8:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080642AC: .4byte 0xfffffbff
+ thumb_func_end FilterOutStepOnPuddleGroundEffectIfJumping
+
+ thumb_func_start DoGroundEffects_OnSpawn
+DoGroundEffects_OnSpawn: @ 80642B0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4]
+ lsls r0, 29
+ cmp r0, 0
+ bge _080642F4
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ bl FieldObjectUpdateZCoordAndPriority
+ adds r0, r4, 0
+ mov r1, sp
+ bl GetAllGroundEffectFlags_OnSpawn
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetSpriteOamTableForLongGrass
+ ldr r2, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064218
+ ldrb r1, [r4]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r4]
+_080642F4:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end DoGroundEffects_OnSpawn
+
+ thumb_func_start DoGroundEffects_OnBeginStep
+DoGroundEffects_OnBeginStep: @ 80642FC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4]
+ lsls r0, 29
+ cmp r0, 0
+ bge _08064348
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ bl FieldObjectUpdateZCoordAndPriority
+ adds r0, r4, 0
+ mov r1, sp
+ bl GetAllGroundEffectFlags_OnBeginStep
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetSpriteOamTableForLongGrass
+ adds r0, r4, 0
+ mov r1, sp
+ bl filters_out_some_ground_effects
+ ldr r2, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064218
+ ldrb r1, [r4]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x11
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r4]
+_08064348:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end DoGroundEffects_OnBeginStep
+
+ thumb_func_start DoGroundEffects_OnFinishStep
+DoGroundEffects_OnFinishStep: @ 8064350
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrb r0, [r4]
+ lsls r0, 28
+ cmp r0, 0
+ bge _0806439C
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ bl FieldObjectUpdateZCoordAndPriority
+ adds r0, r4, 0
+ mov r1, sp
+ bl GetAllGroundEffectFlags_OnFinishStep
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl FieldObjectSetSpriteOamTableForLongGrass
+ adds r0, r4, 0
+ mov r1, sp
+ bl FilterOutStepOnPuddleGroundEffectIfJumping
+ ldr r2, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8064218
+ ldrb r1, [r4]
+ movs r0, 0x9
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x21
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r4]
+_0806439C:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end DoGroundEffects_OnFinishStep
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom4.s b/asm/field_map_obj.s
index 6509a591d..58533b91e 100644
--- a/asm/rom4.s
+++ b/asm/field_map_obj.s
@@ -1,10888 +1,11 @@
.include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
.include "asm/macros.s"
.syntax unified
.text
- thumb_func_start mapconnection_get_mapheader
-mapconnection_get_mapheader: @ 8055F90
- push {lr}
- ldrb r2, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- adds r0, r2, 0
- bl get_mapheader_by_bank_and_number
- pop {r1}
- bx r1
- thumb_func_end mapconnection_get_mapheader
-
- thumb_func_start not_trainer_hill_battle_pyramid
-not_trainer_hill_battle_pyramid: @ 8055FA0
- push {r4,lr}
- ldr r4, _08055FBC @ =gMapHeader
- adds r0, r4, 0
- bl mapheader_copy_mapdata_with_padding
- ldr r0, [r4, 0x4]
- bl sub_80BB970
- bl mapheader_run_script_with_tag_x1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08055FBC: .4byte gMapHeader
- thumb_func_end not_trainer_hill_battle_pyramid
-
- thumb_func_start sub_8055FC0
-sub_8055FC0: @ 8055FC0
- push {r4,lr}
- ldr r4, _08055FF0 @ =gMapHeader
- adds r0, r4, 0
- bl mapheader_copy_mapdata_with_padding
- movs r0, 0
- bl sub_80BBCCC
- ldr r0, [r4, 0x4]
- bl sub_80BB970
- bl sub_8056670
- bl mapheader_run_script_with_tag_x1
- ldr r1, _08055FF4 @ =gUnknown_03004870
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- bl UpdateTVScreensOnMap
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08055FF0: .4byte gMapHeader
-_08055FF4: .4byte gUnknown_03004870
- thumb_func_end sub_8055FC0
-
- thumb_func_start mapheader_copy_mapdata_with_padding
-mapheader_copy_mapdata_with_padding: @ 8055FF8
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r5, [r6]
- ldr r0, _08056044 @ =0x03ff03ff
- str r0, [sp]
- ldr r4, _08056048 @ =gUnknown_02029828
- ldr r2, _0805604C @ =0x01001400
- mov r0, sp
- adds r1, r4, 0
- bl CpuFastSet
- ldr r2, _08056050 @ =gUnknown_03004870
- str r4, [r2, 0x8]
- ldr r1, [r5]
- adds r1, 0xF
- str r1, [r2]
- ldr r0, [r5, 0x4]
- adds r0, 0xE
- str r0, [r2, 0x4]
- muls r1, r0
- movs r0, 0xA0
- lsls r0, 6
- cmp r1, r0
- bgt _0805603A
- ldr r0, [r5, 0xC]
- ldrh r1, [r5]
- ldrh r2, [r5, 0x4]
- bl map_copy_with_padding
- adds r0, r6, 0
- bl sub_80560AC
-_0805603A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08056044: .4byte 0x03ff03ff
-_08056048: .4byte gUnknown_02029828
-_0805604C: .4byte 0x01001400
-_08056050: .4byte gUnknown_03004870
- thumb_func_end mapheader_copy_mapdata_with_padding
-
- thumb_func_start map_copy_with_padding
-map_copy_with_padding: @ 8056054
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- lsls r2, 16
- lsrs r2, 16
- ldr r0, _080560A8 @ =gUnknown_03004870
- ldr r4, [r0, 0x8]
- ldr r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 1
- adds r0, 0xE
- adds r4, r0
- cmp r2, 0
- beq _0805609C
- mov r0, r8
- lsls r6, r0, 1
- adds r5, r2, 0
- movs r0, 0x1E
- adds r0, r6
- mov r9, r0
-_08056088:
- adds r0, r7, 0
- adds r1, r4, 0
- mov r2, r8
- bl CpuSet
- add r4, r9
- adds r7, r6
- subs r5, 0x1
- cmp r5, 0
- bne _08056088
-_0805609C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080560A8: .4byte gUnknown_03004870
- thumb_func_end map_copy_with_padding
-
- thumb_func_start sub_80560AC
-sub_80560AC: @ 80560AC
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r0, [r6, 0xC]
- ldr r1, [r0]
- ldr r5, [r0, 0x4]
- ldr r2, _080560E0 @ =gUnknown_0202E850
- ldr r0, _080560E4 @ =gUnknown_08308E28
- ldr r0, [r0]
- str r0, [r2]
- cmp r1, 0
- ble _0805612C
- adds r4, r2, 0
- adds r7, r1, 0
-_080560C6:
- adds r0, r5, 0
- bl mapconnection_get_mapheader
- adds r1, r0, 0
- ldr r2, [r5, 0x4]
- ldrb r0, [r5]
- cmp r0, 0x2
- beq _080560FE
- cmp r0, 0x2
- bgt _080560E8
- cmp r0, 0x1
- beq _080560F2
- b _08056124
- .align 2, 0
-_080560E0: .4byte gUnknown_0202E850
-_080560E4: .4byte gUnknown_08308E28
-_080560E8:
- cmp r0, 0x3
- beq _0805610A
- cmp r0, 0x4
- beq _08056116
- b _08056124
-_080560F2:
- adds r0, r6, 0
- bl sub_8056198
- ldrb r0, [r4]
- movs r1, 0x1
- b _08056120
-_080560FE:
- adds r0, r6, 0
- bl sub_8056200
- ldrb r0, [r4]
- movs r1, 0x2
- b _08056120
-_0805610A:
- adds r0, r6, 0
- bl sub_8056260
- ldrb r0, [r4]
- movs r1, 0x4
- b _08056120
-_08056116:
- adds r0, r6, 0
- bl sub_80562C0
- ldrb r0, [r4]
- movs r1, 0x8
-_08056120:
- orrs r0, r1
- strb r0, [r4]
-_08056124:
- subs r7, 0x1
- adds r5, 0xC
- cmp r7, 0
- bne _080560C6
-_0805612C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80560AC
-
- thumb_func_start sub_8056134
-sub_8056134: @ 8056134
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r5, [sp, 0x18]
- ldr r4, [r2]
- ldr r7, [r4]
- adds r2, r7, 0
- muls r2, r5
- adds r2, r3
- lsls r2, 1
- ldr r3, [r4, 0xC]
- adds r6, r3, r2
- ldr r3, _08056190 @ =gUnknown_03004870
- ldr r2, [r3]
- muls r1, r2
- adds r1, r0
- lsls r1, 1
- ldr r0, [r3, 0x8]
- adds r5, r0, r1
- ldr r0, [sp, 0x20]
- cmp r0, 0
- ble _08056186
- adds r4, r0, 0
- ldr r3, _08056194 @ =0x001fffff
- mov r8, r3
-_08056166:
- adds r0, r6, 0
- adds r1, r5, 0
- ldr r2, [sp, 0x1C]
- mov r3, r8
- ands r2, r3
- bl CpuSet
- ldr r0, _08056190 @ =gUnknown_03004870
- ldr r0, [r0]
- lsls r0, 1
- adds r5, r0
- lsls r0, r7, 1
- adds r6, r0
- subs r4, 0x1
- cmp r4, 0
- bne _08056166
-_08056186:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08056190: .4byte gUnknown_03004870
-_08056194: .4byte 0x001fffff
- thumb_func_end sub_8056134
-
- thumb_func_start sub_8056198
-sub_8056198: @ 8056198
- push {r4-r7,lr}
- sub sp, 0xC
- adds r3, r0, 0
- adds r5, r1, 0
- cmp r5, 0
- beq _080561F2
- ldr r0, [r5]
- ldr r4, [r0]
- adds r2, 0x7
- ldr r0, [r3]
- ldr r0, [r0, 0x4]
- adds r7, r0, 0x7
- cmp r2, 0
- bge _080561CC
- negs r6, r2
- adds r2, r4
- ldr r0, _080561C8 @ =gUnknown_03004870
- ldr r3, [r0]
- cmp r2, r3
- bge _080561C2
- adds r3, r2, 0
-_080561C2:
- movs r2, 0
- b _080561DC
- .align 2, 0
-_080561C8: .4byte gUnknown_03004870
-_080561CC:
- movs r6, 0
- adds r0, r2, r4
- ldr r1, _080561FC @ =gUnknown_03004870
- ldr r1, [r1]
- subs r3, r1, r2
- cmp r0, r1
- bge _080561DC
- adds r3, r4, 0
-_080561DC:
- movs r0, 0
- str r0, [sp]
- str r3, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- adds r0, r2, 0
- adds r1, r7, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_8056134
-_080561F2:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080561FC: .4byte gUnknown_03004870
- thumb_func_end sub_8056198
-
- thumb_func_start sub_8056200
-sub_8056200: @ 8056200
- push {r4-r7,lr}
- sub sp, 0xC
- adds r5, r1, 0
- cmp r5, 0
- beq _08056254
- ldr r0, [r5]
- ldr r4, [r0]
- ldr r0, [r0, 0x4]
- adds r2, 0x7
- subs r7, r0, 0x7
- cmp r2, 0
- bge _08056230
- negs r6, r2
- adds r2, r4
- ldr r0, _0805622C @ =gUnknown_03004870
- ldr r3, [r0]
- cmp r2, r3
- bge _08056226
- adds r3, r2, 0
-_08056226:
- movs r2, 0
- b _08056240
- .align 2, 0
-_0805622C: .4byte gUnknown_03004870
-_08056230:
- movs r6, 0
- adds r0, r2, r4
- ldr r1, _0805625C @ =gUnknown_03004870
- ldr r1, [r1]
- subs r3, r1, r2
- cmp r0, r1
- bge _08056240
- adds r3, r4, 0
-_08056240:
- str r7, [sp]
- str r3, [sp, 0x4]
- movs r0, 0x7
- str r0, [sp, 0x8]
- adds r0, r2, 0
- movs r1, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_8056134
-_08056254:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805625C: .4byte gUnknown_03004870
- thumb_func_end sub_8056200
-
- thumb_func_start sub_8056260
-sub_8056260: @ 8056260
- push {r4-r7,lr}
- sub sp, 0xC
- adds r5, r1, 0
- cmp r5, 0
- beq _080562B4
- ldr r0, [r5]
- ldr r1, [r0]
- ldr r4, [r0, 0x4]
- adds r2, 0x7
- subs r7, r1, 0x7
- cmp r2, 0
- bge _08056290
- negs r6, r2
- adds r1, r2, r4
- ldr r0, _0805628C @ =gUnknown_03004870
- ldr r3, [r0, 0x4]
- cmp r1, r3
- bge _08056286
- adds r3, r1, 0
-_08056286:
- movs r2, 0
- b _080562A0
- .align 2, 0
-_0805628C: .4byte gUnknown_03004870
-_08056290:
- movs r6, 0
- adds r0, r2, r4
- ldr r1, _080562BC @ =gUnknown_03004870
- ldr r1, [r1, 0x4]
- subs r3, r1, r2
- cmp r0, r1
- bge _080562A0
- adds r3, r4, 0
-_080562A0:
- str r6, [sp]
- movs r0, 0x7
- str r0, [sp, 0x4]
- str r3, [sp, 0x8]
- movs r0, 0
- adds r1, r2, 0
- adds r2, r5, 0
- adds r3, r7, 0
- bl sub_8056134
-_080562B4:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080562BC: .4byte gUnknown_03004870
- thumb_func_end sub_8056260
-
- thumb_func_start sub_80562C0
-sub_80562C0: @ 80562C0
- push {r4-r7,lr}
- sub sp, 0xC
- adds r3, r0, 0
- adds r5, r1, 0
- cmp r5, 0
- beq _08056318
- ldr r0, [r5]
- ldr r4, [r0, 0x4]
- ldr r0, [r3]
- ldr r0, [r0]
- adds r7, r0, 0x7
- adds r2, 0x7
- cmp r2, 0
- bge _080562F4
- negs r6, r2
- adds r1, r2, r4
- ldr r0, _080562F0 @ =gUnknown_03004870
- ldr r3, [r0, 0x4]
- cmp r1, r3
- bge _080562EA
- adds r3, r1, 0
-_080562EA:
- movs r2, 0
- b _08056304
- .align 2, 0
-_080562F0: .4byte gUnknown_03004870
-_080562F4:
- movs r6, 0
- adds r0, r2, r4
- ldr r1, _08056320 @ =gUnknown_03004870
- ldr r1, [r1, 0x4]
- subs r3, r1, r2
- cmp r0, r1
- bge _08056304
- adds r3, r4, 0
-_08056304:
- str r6, [sp]
- movs r0, 0x8
- str r0, [sp, 0x4]
- str r3, [sp, 0x8]
- adds r0, r7, 0
- adds r1, r2, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_8056134
-_08056318:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08056320: .4byte gUnknown_03004870
- thumb_func_end sub_80562C0
-
- thumb_func_start MapGridGetZCoordAt
-MapGridGetZCoordAt: @ 8056324
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- cmp r2, 0
- blt _08056354
- ldr r1, _08056350 @ =gUnknown_03004870
- ldr r3, [r1]
- cmp r2, r3
- bge _08056354
- cmp r4, 0
- blt _08056354
- ldr r0, [r1, 0x4]
- cmp r4, r0
- bge _08056354
- adds r0, r3, 0
- muls r0, r4
- adds r0, r2, r0
- ldr r1, [r1, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _08056376
- .align 2, 0
-_08056350: .4byte gUnknown_03004870
-_08056354:
- ldr r0, _08056380 @ =gMapHeader
- ldr r3, [r0]
- adds r1, r2, 0x1
- movs r2, 0x1
- ands r1, r2
- adds r0, r4, 0x1
- ands r0, r2
- lsls r0, 1
- adds r1, r0
- ldr r0, [r3, 0x8]
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r2, 0
- orrs r1, r0
-_08056376:
- ldr r0, _08056384 @ =0x000003ff
- cmp r1, r0
- beq _08056388
- lsrs r0, r1, 12
- b _0805638A
- .align 2, 0
-_08056380: .4byte gMapHeader
-_08056384: .4byte 0x000003ff
-_08056388:
- movs r0, 0
-_0805638A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MapGridGetZCoordAt
-
- thumb_func_start MapGridIsImpassableAt
-MapGridIsImpassableAt: @ 8056390
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- cmp r2, 0
- blt _080563C0
- ldr r1, _080563BC @ =gUnknown_03004870
- ldr r3, [r1]
- cmp r2, r3
- bge _080563C0
- cmp r4, 0
- blt _080563C0
- ldr r0, [r1, 0x4]
- cmp r4, r0
- bge _080563C0
- adds r0, r3, 0
- muls r0, r4
- adds r0, r2, r0
- ldr r1, [r1, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _080563E2
- .align 2, 0
-_080563BC: .4byte gUnknown_03004870
-_080563C0:
- ldr r0, _080563F4 @ =gMapHeader
- ldr r3, [r0]
- adds r1, r2, 0x1
- movs r2, 0x1
- ands r1, r2
- adds r0, r4, 0x1
- ands r0, r2
- lsls r0, 1
- adds r1, r0
- ldr r0, [r3, 0x8]
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r2, 0
- orrs r1, r0
-_080563E2:
- ldr r0, _080563F8 @ =0x000003ff
- cmp r1, r0
- beq _080563FC
- movs r0, 0xC0
- lsls r0, 4
- ands r1, r0
- lsrs r0, r1, 10
- b _080563FE
- .align 2, 0
-_080563F4: .4byte gMapHeader
-_080563F8: .4byte 0x000003ff
-_080563FC:
- movs r0, 0x1
-_080563FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MapGridIsImpassableAt
-
- thumb_func_start MapGridGetMetatileIdAt
-MapGridGetMetatileIdAt: @ 8056404
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- cmp r5, 0
- blt _08056434
- ldr r1, _08056430 @ =gUnknown_03004870
- ldr r2, [r1]
- cmp r5, r2
- bge _08056434
- cmp r6, 0
- blt _08056434
- ldr r0, [r1, 0x4]
- cmp r6, r0
- bge _08056434
- adds r0, r2, 0
- muls r0, r6
- adds r0, r5, r0
- ldr r1, [r1, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r4, [r0]
- b _08056458
- .align 2, 0
-_08056430: .4byte gUnknown_03004870
-_08056434:
- ldr r0, _08056464 @ =gMapHeader
- ldr r3, [r0]
- adds r1, r5, 0x1
- movs r2, 0x1
- ands r1, r2
- adds r0, r6, 0x1
- ands r0, r2
- lsls r0, 1
- adds r1, r0
- ldr r0, [r3, 0x8]
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r2, 0
- adds r4, r0, 0
- orrs r4, r1
-_08056458:
- ldr r0, _08056468 @ =0x000003ff
- cmp r4, r0
- beq _0805646C
- ands r4, r0
- adds r0, r4, 0
- b _08056490
- .align 2, 0
-_08056464: .4byte gMapHeader
-_08056468: .4byte 0x000003ff
-_0805646C:
- ldr r0, _08056498 @ =gMapHeader
- ldr r3, [r0]
- adds r1, r5, 0x1
- movs r2, 0x1
- ands r1, r2
- adds r0, r6, 0x1
- ands r0, r2
- lsls r0, 1
- adds r1, r0
- ldr r0, [r3, 0x8]
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- movs r2, 0xC0
- lsls r2, 4
- adds r1, r2, 0
- orrs r0, r1
- ands r0, r4
-_08056490:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08056498: .4byte gMapHeader
- thumb_func_end MapGridGetMetatileIdAt
-
- thumb_func_start MapGridGetMetatileBehaviorAt
-MapGridGetMetatileBehaviorAt: @ 805649C
- push {lr}
- bl MapGridGetMetatileIdAt
- lsls r0, 16
- lsrs r0, 16
- bl GetBehaviorByMetatileId
- adds r1, r0, 0
- movs r0, 0xFF
- ands r0, r1
- pop {r1}
- bx r1
- thumb_func_end MapGridGetMetatileBehaviorAt
-
- thumb_func_start MapGridGetMetatileLayerTypeAt
-MapGridGetMetatileLayerTypeAt: @ 80564B4
- push {lr}
- bl MapGridGetMetatileIdAt
- lsls r0, 16
- lsrs r0, 16
- bl GetBehaviorByMetatileId
- adds r1, r0, 0
- movs r0, 0xF0
- lsls r0, 8
- ands r0, r1
- lsrs r0, 12
- pop {r1}
- bx r1
- thumb_func_end MapGridGetMetatileLayerTypeAt
-
- thumb_func_start MapGridSetMetatileIdAt
-MapGridSetMetatileIdAt: @ 80564D0
- push {r4,r5,lr}
- adds r3, r0, 0
- lsls r2, 16
- lsrs r5, r2, 16
- cmp r3, 0
- blt _08056508
- ldr r2, _08056510 @ =gUnknown_03004870
- ldr r4, [r2]
- cmp r3, r4
- bge _08056508
- cmp r1, 0
- blt _08056508
- ldr r0, [r2, 0x4]
- cmp r1, r0
- bge _08056508
- muls r1, r4
- adds r1, r3, r1
- ldr r0, [r2, 0x8]
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- movs r2, 0xF0
- lsls r2, 8
- ands r2, r0
- ldr r0, _08056514 @ =0x00000fff
- ands r0, r5
- orrs r2, r0
- strh r2, [r1]
-_08056508:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08056510: .4byte gUnknown_03004870
-_08056514: .4byte 0x00000fff
- thumb_func_end MapGridSetMetatileIdAt
-
- thumb_func_start MapGridSetMetatileEntryAt
-MapGridSetMetatileEntryAt: @ 8056518
- push {r4,r5,lr}
- adds r3, r0, 0
- lsls r2, 16
- lsrs r5, r2, 16
- cmp r3, 0
- blt _08056544
- ldr r2, _0805654C @ =gUnknown_03004870
- ldr r4, [r2]
- cmp r3, r4
- bge _08056544
- cmp r1, 0
- blt _08056544
- ldr r0, [r2, 0x4]
- cmp r1, r0
- bge _08056544
- adds r0, r4, 0
- muls r0, r1
- adds r0, r3, r0
- ldr r1, [r2, 0x8]
- lsls r0, 1
- adds r0, r1
- strh r5, [r0]
-_08056544:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805654C: .4byte gUnknown_03004870
- thumb_func_end MapGridSetMetatileEntryAt
-
- thumb_func_start GetBehaviorByMetatileId
-GetBehaviorByMetatileId: @ 8056550
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- adds r3, r2, 0
- ldr r0, _0805656C @ =0x000001ff
- cmp r2, r0
- bhi _08056574
- ldr r0, _08056570 @ =gMapHeader
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- ldr r1, [r0, 0x10]
- lsls r0, r2, 1
- b _08056592
- .align 2, 0
-_0805656C: .4byte 0x000001ff
-_08056570: .4byte gMapHeader
-_08056574:
- ldr r0, _08056580 @ =0x000003ff
- cmp r2, r0
- bls _08056584
- movs r0, 0xFF
- b _08056596
- .align 2, 0
-_08056580: .4byte 0x000003ff
-_08056584:
- ldr r0, _0805659C @ =gMapHeader
- ldr r0, [r0]
- ldr r0, [r0, 0x14]
- ldr r1, [r0, 0x10]
- lsls r0, r3, 1
- adds r0, r1
- ldr r1, _080565A0 @ =0xfffffc00
-_08056592:
- adds r0, r1
- ldrh r0, [r0]
-_08056596:
- pop {r1}
- bx r1
- .align 2, 0
-_0805659C: .4byte gMapHeader
-_080565A0: .4byte 0xfffffc00
- thumb_func_end GetBehaviorByMetatileId
-
- thumb_func_start save_serialize_map
-save_serialize_map: @ 80565A4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r5, _0805660C @ =gSaveBlock1 + 0x34
- ldr r0, _08056610 @ =gUnknown_03004870
- ldr r0, [r0]
- mov r8, r0
- adds r0, r5, 0
- subs r0, 0x34
- movs r1, 0
- ldrsh r6, [r0, r1]
- movs r2, 0x2
- ldrsh r0, [r0, r2]
- adds r1, r0, 0
- adds r1, 0xE
- cmp r0, r1
- bge _080565FE
- mov r12, r1
- ldr r1, _08056614 @ =gUnknown_02029828
- mov r9, r1
- lsls r7, r6, 1
-_080565D0:
- adds r1, r6, 0
- adds r3, r1, 0
- adds r3, 0xF
- adds r4, r0, 0x1
- cmp r1, r3
- bge _080565F8
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 1
- add r0, r9
- adds r2, r7, r0
- subs r1, r3, r1
-_080565EA:
- ldrh r0, [r2]
- strh r0, [r5]
- adds r5, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _080565EA
-_080565F8:
- adds r0, r4, 0
- cmp r0, r12
- blt _080565D0
-_080565FE:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805660C: .4byte gSaveBlock1 + 0x34
-_08056610: .4byte gUnknown_03004870
-_08056614: .4byte gUnknown_02029828
- thumb_func_end save_serialize_map
-
- thumb_func_start sub_8056618
-sub_8056618: @ 8056618
- push {r4,lr}
- movs r2, 0
- movs r1, 0
- ldr r4, _0805663C @ =gSaveBlock1 + 0x34
- ldr r3, _08056640 @ =0x000001ff
-_08056622:
- lsls r0, r1, 1
- adds r0, r4
- ldrh r0, [r0]
- orrs r2, r0
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r3
- bls _08056622
- cmp r2, 0
- beq _08056644
- movs r0, 0
- b _08056646
- .align 2, 0
-_0805663C: .4byte gSaveBlock1 + 0x34
-_08056640: .4byte 0x000001ff
-_08056644:
- movs r0, 0x1
-_08056646:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8056618
-
- thumb_func_start sav2_mapdata_clear
-sav2_mapdata_clear: @ 805664C
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08056668 @ =gSaveBlock1 + 0x34
- ldr r2, _0805666C @ =0x01000100
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08056668: .4byte gSaveBlock1 + 0x34
-_0805666C: .4byte 0x01000100
- thumb_func_end sav2_mapdata_clear
-
- thumb_func_start sub_8056670
-sub_8056670: @ 8056670
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r5, _080566E4 @ =gSaveBlock1 + 0x34
- bl sub_8056618
- cmp r0, 0
- bne _080566D6
- ldr r0, _080566E8 @ =gUnknown_03004870
- ldr r0, [r0]
- mov r8, r0
- adds r0, r5, 0
- subs r0, 0x34
- movs r1, 0
- ldrsh r6, [r0, r1]
- movs r2, 0x2
- ldrsh r0, [r0, r2]
- adds r1, r0, 0
- adds r1, 0xE
- cmp r0, r1
- bge _080566D2
- mov r12, r1
- ldr r1, _080566EC @ =gUnknown_02029828
- mov r9, r1
- lsls r7, r6, 1
-_080566A4:
- adds r1, r6, 0
- adds r3, r1, 0
- adds r3, 0xF
- adds r4, r0, 0x1
- cmp r1, r3
- bge _080566CC
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- lsls r0, 1
- add r0, r9
- adds r2, r7, r0
- subs r1, r3, r1
-_080566BE:
- ldrh r0, [r5]
- strh r0, [r2]
- adds r5, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _080566BE
-_080566CC:
- adds r0, r4, 0
- cmp r0, r12
- blt _080566A4
-_080566D2:
- bl sav2_mapdata_clear
-_080566D6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080566E4: .4byte gSaveBlock1 + 0x34
-_080566E8: .4byte gUnknown_03004870
-_080566EC: .4byte gUnknown_02029828
- thumb_func_end sub_8056670
-
- thumb_func_start sub_80566F0
-sub_80566F0: @ 80566F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- ldr r0, _08056734 @ =gSaveBlock1 + 0x34
- mov r10, r0
- ldr r0, _08056738 @ =gUnknown_03004870
- ldr r0, [r0]
- str r0, [sp]
- movs r3, 0
- mov r9, r3
- mov r8, r3
- mov r0, r10
- subs r0, 0x34
- movs r6, 0
- ldrsh r4, [r0, r6]
- str r4, [sp, 0x4]
- movs r3, 0x2
- ldrsh r5, [r0, r3]
- movs r7, 0xF
- movs r4, 0xE
- mov r12, r4
- cmp r1, 0x2
- beq _08056746
- cmp r1, 0x2
- bgt _0805673C
- cmp r1, 0x1
- beq _0805674E
- b _08056766
- .align 2, 0
-_08056734: .4byte gSaveBlock1 + 0x34
-_08056738: .4byte gUnknown_03004870
-_0805673C:
- cmp r2, 0x3
- beq _08056758
- cmp r2, 0x4
- beq _08056760
- b _08056766
-_08056746:
- adds r5, 0x1
- movs r6, 0xD
- mov r12, r6
- b _08056766
-_0805674E:
- movs r0, 0x1
- mov r8, r0
- movs r1, 0xD
- mov r12, r1
- b _08056766
-_08056758:
- ldr r3, [sp, 0x4]
- adds r3, 0x1
- str r3, [sp, 0x4]
- b _08056764
-_08056760:
- movs r4, 0x1
- mov r9, r4
-_08056764:
- movs r7, 0xE
-_08056766:
- movs r1, 0
- cmp r1, r12
- bge _080567A8
-_0805676C:
- adds r4, r1, 0x1
- cmp r7, 0
- beq _080567A2
- adds r0, r1, r5
- ldr r6, [sp]
- adds r2, r6, 0
- muls r2, r0
- add r1, r8
- lsls r0, r1, 4
- subs r0, r1
- add r0, r9
- ldr r1, [sp, 0x4]
- adds r2, r1, r2
- adds r3, r7, 0
- lsls r2, 1
- ldr r6, _080567BC @ =gUnknown_02029828
- adds r2, r6
- lsls r0, 1
- mov r6, r10
- adds r1, r0, r6
-_08056794:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _08056794
-_080567A2:
- adds r1, r4, 0
- cmp r1, r12
- blt _0805676C
-_080567A8:
- bl sav2_mapdata_clear
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080567BC: .4byte gUnknown_02029828
- thumb_func_end sub_80566F0
-
- thumb_func_start GetMapBorderIdAt
-GetMapBorderIdAt: @ 80567C0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- cmp r4, 0
- blt _080567FC
- ldr r1, _080567F4 @ =gUnknown_03004870
- ldr r2, [r1]
- cmp r4, r2
- bge _080567FC
- cmp r5, 0
- blt _080567FC
- ldr r0, [r1, 0x4]
- cmp r5, r0
- bge _080567FC
- adds r0, r2, 0
- muls r0, r5
- adds r0, r4, r0
- ldr r1, [r1, 0x8]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _080567F8 @ =0x000003ff
- cmp r1, r0
- beq _08056894
- b _08056824
- .align 2, 0
-_080567F4: .4byte gUnknown_03004870
-_080567F8: .4byte 0x000003ff
-_080567FC:
- ldr r0, _08056840 @ =gMapHeader
- ldr r3, [r0]
- adds r1, r4, 0x1
- movs r2, 0x1
- ands r1, r2
- adds r0, r5, 0x1
- ands r0, r2
- lsls r0, 1
- adds r1, r0
- ldr r0, [r3, 0x8]
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r2, 0
- orrs r0, r1
- ldr r1, _08056844 @ =0x000003ff
- cmp r0, r1
- beq _08056894
-_08056824:
- ldr r1, _08056848 @ =gUnknown_03004870
- ldr r0, [r1]
- subs r0, 0x8
- cmp r4, r0
- blt _08056850
- ldr r0, _0805684C @ =gUnknown_0202E850
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08056894
- movs r0, 0x4
- b _080568A6
- .align 2, 0
-_08056840: .4byte gMapHeader
-_08056844: .4byte 0x000003ff
-_08056848: .4byte gUnknown_03004870
-_0805684C: .4byte gUnknown_0202E850
-_08056850:
- cmp r4, 0x6
- bgt _08056868
- ldr r0, _08056864 @ =gUnknown_0202E850
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08056894
- movs r0, 0x3
- b _080568A6
- .align 2, 0
-_08056864: .4byte gUnknown_0202E850
-_08056868:
- ldr r0, [r1, 0x4]
- subs r0, 0x7
- cmp r5, r0
- blt _08056884
- ldr r0, _08056880 @ =gUnknown_0202E850
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08056894
- movs r0, 0x1
- b _080568A6
- .align 2, 0
-_08056880: .4byte gUnknown_0202E850
-_08056884:
- cmp r5, 0x6
- bgt _080568A4
- ldr r0, _0805689C @ =gUnknown_0202E850
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080568A0
-_08056894:
- movs r0, 0x1
- negs r0, r0
- b _080568A6
- .align 2, 0
-_0805689C: .4byte gUnknown_0202E850
-_080568A0:
- movs r0, 0x2
- b _080568A6
-_080568A4:
- movs r0, 0
-_080568A6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetMapBorderIdAt
-
- thumb_func_start GetPostCameraMoveMapBorderId
-GetPostCameraMoveMapBorderId: @ 80568AC
- push {r4,lr}
- adds r3, r1, 0
- ldr r1, _080568D0 @ =gSaveBlock1
- movs r4, 0
- ldrsh r2, [r1, r4]
- adds r0, 0x7
- adds r2, r0
- movs r0, 0x2
- ldrsh r1, [r1, r0]
- adds r3, 0x7
- adds r1, r3
- adds r0, r2, 0
- bl GetMapBorderIdAt
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080568D0: .4byte gSaveBlock1
- thumb_func_end GetPostCameraMoveMapBorderId
-
- thumb_func_start CanCameraMoveInDirection
-CanCameraMoveInDirection: @ 80568D4
- push {r4,r5,lr}
- ldr r4, _08056908 @ =gSaveBlock1
- movs r1, 0
- ldrsh r3, [r4, r1]
- ldr r2, _0805690C @ =gUnknown_0821664C
- lsls r0, 3
- adds r1, r0, r2
- ldr r1, [r1]
- adds r1, 0x7
- adds r3, r1
- movs r5, 0x2
- ldrsh r1, [r4, r5]
- adds r2, 0x4
- adds r0, r2
- ldr r0, [r0]
- adds r0, 0x7
- adds r1, r0
- adds r0, r3, 0
- bl GetMapBorderIdAt
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _08056910
- movs r0, 0x1
- b _08056912
- .align 2, 0
-_08056908: .4byte gSaveBlock1
-_0805690C: .4byte gUnknown_0821664C
-_08056910:
- movs r0, 0
-_08056912:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end CanCameraMoveInDirection
-
- thumb_func_start sub_8056918
-sub_8056918: @ 8056918
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- adds r7, r3, 0
- bl mapconnection_get_mapheader
- adds r3, r0, 0
- cmp r4, 0x2
- beq _08056978
- cmp r4, 0x2
- bgt _08056936
- cmp r4, 0x1
- beq _08056964
- b _08056988
-_08056936:
- cmp r4, 0x3
- beq _08056950
- cmp r4, 0x4
- bne _08056988
- ldr r1, _0805694C @ =gSaveBlock1
- negs r0, r6
- strh r0, [r1]
- ldr r2, [r5, 0x4]
- ldrh r0, [r1, 0x2]
- subs r0, r2
- b _08056986
- .align 2, 0
-_0805694C: .4byte gSaveBlock1
-_08056950:
- ldr r1, _08056960 @ =gSaveBlock1
- ldr r0, [r3]
- ldr r0, [r0]
- strh r0, [r1]
- ldr r2, [r5, 0x4]
- ldrh r0, [r1, 0x2]
- subs r0, r2
- b _08056986
- .align 2, 0
-_08056960: .4byte gSaveBlock1
-_08056964:
- ldr r1, _08056974 @ =gSaveBlock1
- ldr r2, [r5, 0x4]
- ldrh r0, [r1]
- subs r0, r2
- strh r0, [r1]
- negs r0, r7
- b _08056986
- .align 2, 0
-_08056974: .4byte gSaveBlock1
-_08056978:
- ldr r1, _08056990 @ =gSaveBlock1
- ldr r2, [r5, 0x4]
- ldrh r0, [r1]
- subs r0, r2
- strh r0, [r1]
- ldr r0, [r3]
- ldr r0, [r0, 0x4]
-_08056986:
- strh r0, [r1, 0x2]
-_08056988:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08056990: .4byte gSaveBlock1
- thumb_func_end sub_8056918
-
- thumb_func_start CameraMove
-CameraMove: @ 8056994
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- str r1, [sp]
- ldr r1, _080569D4 @ =gUnknown_0202E844
- ldrb r0, [r1]
- movs r1, 0x2
- negs r1, r1
- ands r1, r0
- ldr r2, _080569D4 @ =gUnknown_0202E844
- strb r1, [r2]
- mov r0, r10
- ldr r1, [sp]
- bl GetPostCameraMoveMapBorderId
- adds r7, r0, 0
- adds r0, r7, 0x1
- cmp r0, 0x1
- bhi _080569DC
- ldr r0, _080569D8 @ =gSaveBlock1
- ldrh r1, [r0]
- add r1, r10
- strh r1, [r0]
- ldrh r1, [r0, 0x2]
- ldr r2, [sp]
- adds r1, r2
- strh r1, [r0, 0x2]
- b _08056A42
- .align 2, 0
-_080569D4: .4byte gUnknown_0202E844
-_080569D8: .4byte gSaveBlock1
-_080569DC:
- bl save_serialize_map
- ldr r5, _08056A5C @ =gSaveBlock1
- movs r0, 0
- ldrsh r6, [r5, r0]
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- mov r8, r1
- lsls r0, r7, 24
- lsrs r0, 24
- mov r9, r0
- adds r1, r6, 0
- mov r2, r8
- bl sub_8056A64
- adds r4, r0, 0
- adds r1, r7, 0
- mov r2, r10
- ldr r3, [sp]
- bl sub_8056918
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x9]
- bl sub_80538F0
- ldr r1, _08056A60 @ =gUnknown_0202E844
- ldrb r0, [r1]
- movs r1, 0x1
- orrs r0, r1
- ldr r2, _08056A60 @ =gUnknown_0202E844
- strb r0, [r2]
- movs r1, 0
- ldrsh r0, [r5, r1]
- subs r6, r0
- str r6, [r2, 0x4]
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- mov r1, r8
- subs r1, r0
- ldr r2, _08056A60 @ =gUnknown_0202E844
- str r1, [r2, 0x8]
- ldrh r0, [r5]
- add r0, r10
- strh r0, [r5]
- ldrh r0, [r5, 0x2]
- ldr r1, [sp]
- adds r0, r1
- strh r0, [r5, 0x2]
- mov r0, r9
- bl sub_80566F0
-_08056A42:
- ldr r0, _08056A60 @ =gUnknown_0202E844
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08056A5C: .4byte gSaveBlock1
-_08056A60: .4byte gUnknown_0202E844
- thumb_func_end CameraMove
-
- thumb_func_start sub_8056A64
-sub_8056A64: @ 8056A64
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r1
- mov r8, r2
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08056AA0 @ =gMapHeader
- ldr r0, [r0, 0xC]
- ldr r7, [r0]
- ldr r4, [r0, 0x4]
- movs r5, 0
- cmp r5, r7
- bge _08056AAC
-_08056A82:
- ldrb r0, [r4]
- cmp r0, r6
- bne _08056AA4
- adds r0, r6, 0
- mov r1, r9
- mov r2, r8
- adds r3, r4, 0
- bl sub_8056ABC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08056AA4
- adds r0, r4, 0
- b _08056AAE
- .align 2, 0
-_08056AA0: .4byte gMapHeader
-_08056AA4:
- adds r5, 0x1
- adds r4, 0xC
- cmp r5, r7
- blt _08056A82
-_08056AAC:
- movs r0, 0
-_08056AAE:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8056A64
-
- thumb_func_start sub_8056ABC
-sub_8056ABC: @ 8056ABC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r1, 0
- mov r8, r2
- adds r5, r3, 0
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- adds r0, r5, 0
- bl mapconnection_get_mapheader
- adds r2, r0, 0
- cmp r4, 0x1
- blt _08056B14
- cmp r4, 0x2
- bgt _08056AF4
- ldr r0, _08056AF0 @ =gMapHeader
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r0, [r2]
- ldr r2, [r0]
- ldr r3, [r5, 0x4]
- adds r0, r7, 0
- b _08056B06
- .align 2, 0
-_08056AF0: .4byte gMapHeader
-_08056AF4:
- cmp r6, 0x4
- bgt _08056B14
- ldr r0, _08056B10 @ =gMapHeader
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- ldr r0, [r2]
- ldr r2, [r0, 0x4]
- ldr r3, [r5, 0x4]
- mov r0, r8
-_08056B06:
- bl sub_8056B20
- lsls r0, 24
- lsrs r0, 24
- b _08056B16
- .align 2, 0
-_08056B10: .4byte gMapHeader
-_08056B14:
- movs r0, 0
-_08056B16:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8056ABC
-
- thumb_func_start sub_8056B20
-sub_8056B20: @ 8056B20
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r2, 0
- adds r2, r3, 0
- cmp r3, 0
- bge _08056B2E
- movs r3, 0
-_08056B2E:
- adds r2, r0, r2
- cmp r2, r1
- bge _08056B36
- adds r1, r2, 0
-_08056B36:
- cmp r3, r4
- bgt _08056B42
- cmp r4, r1
- bgt _08056B42
- movs r0, 0x1
- b _08056B44
-_08056B42:
- movs r0, 0
-_08056B44:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8056B20
-
- thumb_func_start sub_8056B4C
-sub_8056B4C: @ 8056B4C
- push {lr}
- cmp r0, 0
- blt _08056B5A
- cmp r0, r1
- bge _08056B5A
- movs r0, 0x1
- b _08056B5C
-_08056B5A:
- movs r0, 0
-_08056B5C:
- pop {r1}
- bx r1
- thumb_func_end sub_8056B4C
-
- thumb_func_start sub_8056B60
-sub_8056B60: @ 8056B60
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- bl mapconnection_get_mapheader
- adds r1, r0, 0
- ldrb r0, [r4]
- cmp r0, 0x1
- blt _08056B98
- cmp r0, 0x2
- bgt _08056B86
- ldr r0, [r4, 0x4]
- subs r0, r5, r0
- ldr r1, [r1]
- ldr r1, [r1]
- bl sub_8056B4C
- b _08056B9A
-_08056B86:
- cmp r0, 0x4
- bgt _08056B98
- ldr r0, [r4, 0x4]
- subs r0, r6, r0
- ldr r1, [r1]
- ldr r1, [r1, 0x4]
- bl sub_8056B4C
- b _08056B9A
-_08056B98:
- movs r0, 0
-_08056B9A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8056B60
-
- thumb_func_start sub_8056BA0
-sub_8056BA0: @ 8056BA0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _08056BC0 @ =gMapHeader
- ldr r0, [r2, 0xC]
- cmp r0, 0
- bne _08056BC8
- b _08056C3E
- .align 2, 0
-_08056BC0: .4byte gMapHeader
-_08056BC4:
- adds r0, r4, 0
- b _08056C40
-_08056BC8:
- ldr r7, [r0]
- ldr r4, [r0, 0x4]
- movs r6, 0
- cmp r6, r7
- bge _08056C3E
- lsls r0, r1, 16
- asrs r5, r0, 16
- mov r9, r2
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- mov r10, r0
-_08056BE0:
- ldrb r1, [r4]
- adds r3, r1, 0
- subs r0, r1, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08056C36
- cmp r1, 0x2
- bne _08056BF6
- cmp r5, 0x6
- bgt _08056C36
-_08056BF6:
- cmp r1, 0x1
- bne _08056C06
- mov r2, r9
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- adds r0, 0x7
- cmp r5, r0
- blt _08056C36
-_08056C06:
- mov r0, r8
- lsls r2, r0, 16
- cmp r1, 0x3
- bne _08056C14
- mov r1, r10
- cmp r1, 0x6
- bgt _08056C36
-_08056C14:
- cmp r3, 0x4
- bne _08056C26
- asrs r1, r2, 16
- mov r3, r9
- ldr r0, [r3]
- ldr r0, [r0]
- adds r0, 0x7
- cmp r1, r0
- blt _08056C36
-_08056C26:
- asrs r1, r2, 16
- subs r1, 0x7
- adds r0, r4, 0
- subs r2, r5, 0x7
- bl sub_8056B60
- cmp r0, 0x1
- beq _08056BC4
-_08056C36:
- adds r6, 0x1
- adds r4, 0xC
- cmp r6, r7
- blt _08056BE0
-_08056C3E:
- movs r0, 0
-_08056C40:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8056BA0
-
- thumb_func_start sub_8056C50
-sub_8056C50: @ 8056C50
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _08056C64 @ =gSaveBlock1
- subs r0, 0x7
- strh r0, [r2]
- subs r1, 0x7
- strh r1, [r2, 0x2]
- bx lr
- .align 2, 0
-_08056C64: .4byte gSaveBlock1
- thumb_func_end sub_8056C50
-
- thumb_func_start sav1_camera_get_focus_coords
-sav1_camera_get_focus_coords: @ 8056C68
- ldr r3, _08056C78 @ =gSaveBlock1
- ldrh r2, [r3]
- adds r2, 0x7
- strh r2, [r0]
- ldrh r0, [r3, 0x2]
- adds r0, 0x7
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08056C78: .4byte gSaveBlock1
- thumb_func_end sav1_camera_get_focus_coords
-
- thumb_func_start unref_sub_8056C7C
-unref_sub_8056C7C: @ 8056C7C
- ldr r2, _08056C84 @ =gSaveBlock1
- strh r0, [r2]
- strh r1, [r2, 0x2]
- bx lr
- .align 2, 0
-_08056C84: .4byte gSaveBlock1
- thumb_func_end unref_sub_8056C7C
-
- thumb_func_start GetCameraCoords
-GetCameraCoords: @ 8056C88
- ldr r3, _08056C94 @ =gSaveBlock1
- ldrh r2, [r3]
- strh r2, [r0]
- ldrh r0, [r3, 0x2]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08056C94: .4byte gSaveBlock1
- thumb_func_end GetCameraCoords
-
- thumb_func_start sub_8056C98
-sub_8056C98: @ 8056C98
- push {lr}
- adds r2, r0, 0
- cmp r2, 0
- beq _08056CB8
- ldrb r0, [r2]
- cmp r0, 0
- bne _08056CB2
- ldr r0, [r2, 0x4]
- movs r2, 0x80
- lsls r2, 5
- bl CpuFastSet
- b _08056CB8
-_08056CB2:
- ldr r0, [r2, 0x4]
- bl LZ77UnCompVram
-_08056CB8:
- pop {r0}
- bx r0
- thumb_func_end sub_8056C98
-
- thumb_func_start sub_8056CBC
-sub_8056CBC: @ 8056CBC
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- cmp r4, 0
- beq _08056D1E
- ldrb r1, [r4, 0x1]
- cmp r1, 0
- bne _08056CEE
- mov r0, sp
- strh r1, [r0]
- lsls r1, r5, 16
- lsrs r1, 16
- movs r2, 0x2
- bl LoadPalette
- ldr r0, [r4, 0x8]
- adds r0, 0x2
- adds r1, r5, 0x1
- lsls r1, 16
- lsrs r1, 16
- subs r2, r6, 0x2
- lsls r2, 16
- b _08056CFC
-_08056CEE:
- cmp r1, 0x1
- bne _08056D04
- ldr r0, [r4, 0x8]
- adds r0, 0xC0
- lsls r1, r5, 16
- lsrs r1, 16
- lsls r2, r6, 16
-_08056CFC:
- lsrs r2, 16
- bl LoadPalette
- b _08056D1E
-_08056D04:
- ldr r0, [r4, 0x8]
- movs r4, 0x80
- lsls r4, 18
- adds r1, r4, 0
- bl LZ77UnCompVram
- lsls r1, r5, 16
- lsrs r1, 16
- lsls r2, r6, 16
- lsrs r2, 16
- adds r0, r4, 0
- bl LoadPalette
-_08056D1E:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8056CBC
-
- thumb_func_start sub_8056D28
-sub_8056D28: @ 8056D28
- push {lr}
- movs r1, 0xC0
- lsls r1, 19
- ldr r0, [r0, 0x10]
- bl sub_8056C98
- pop {r0}
- bx r0
- thumb_func_end sub_8056D28
-
- thumb_func_start sub_8056D38
-sub_8056D38: @ 8056D38
- push {lr}
- ldr r1, _08056D48 @ =0x06004000
- ldr r0, [r0, 0x14]
- bl sub_8056C98
- pop {r0}
- bx r0
- .align 2, 0
-_08056D48: .4byte 0x06004000
- thumb_func_end sub_8056D38
-
- thumb_func_start apply_map_tileset1_palette
-apply_map_tileset1_palette: @ 8056D4C
- push {lr}
- ldr r0, [r0, 0x10]
- movs r1, 0
- movs r2, 0xC0
- bl sub_8056CBC
- pop {r0}
- bx r0
- thumb_func_end apply_map_tileset1_palette
-
- thumb_func_start apply_map_tileset2_palette
-apply_map_tileset2_palette: @ 8056D5C
- push {lr}
- ldr r0, [r0, 0x14]
- movs r1, 0x60
- movs r2, 0xC0
- bl sub_8056CBC
- pop {r0}
- bx r0
- thumb_func_end apply_map_tileset2_palette
-
- thumb_func_start copy_map_tileset1_tileset2_to_vram
-copy_map_tileset1_tileset2_to_vram: @ 8056D6C
- push {r4,lr}
- adds r4, r0, 0
- cmp r4, 0
- beq _08056D7E
- bl sub_8056D28
- adds r0, r4, 0
- bl sub_8056D38
-_08056D7E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end copy_map_tileset1_tileset2_to_vram
-
- thumb_func_start apply_map_tileset1_tileset2_palette
-apply_map_tileset1_tileset2_palette: @ 8056D84
- push {r4,lr}
- adds r4, r0, 0
- cmp r4, 0
- beq _08056D96
- bl apply_map_tileset1_palette
- adds r0, r4, 0
- bl apply_map_tileset2_palette
-_08056D96:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end apply_map_tileset1_tileset2_palette
-
- thumb_func_start sub_8056D9C
-sub_8056D9C: @ 8056D9C
- movs r0, 0x1
- bx lr
- thumb_func_end sub_8056D9C
-
- thumb_func_start sub_8056DA0
-sub_8056DA0: @ 8056DA0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08056DB8 @ =gUnknown_08308E2C
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08056DBC
- movs r0, 0
- b _08056DBE
- .align 2, 0
-_08056DB8: .4byte gUnknown_08308E2C
-_08056DBC:
- movs r0, 0x1
-_08056DBE:
- pop {r1}
- bx r1
- thumb_func_end sub_8056DA0
-
- thumb_func_start MetatileBehavior_IsJumpEast
-MetatileBehavior_IsJumpEast: @ 8056DC4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x38
- beq _08056DD2
- movs r0, 0
- b _08056DD4
-_08056DD2:
- movs r0, 0x1
-_08056DD4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsJumpEast
-
- thumb_func_start MetatileBehavior_IsJumpWest
-MetatileBehavior_IsJumpWest: @ 8056DD8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x39
- beq _08056DE6
- movs r0, 0
- b _08056DE8
-_08056DE6:
- movs r0, 0x1
-_08056DE8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsJumpWest
-
- thumb_func_start MetatileBehavior_IsJumpNorth
-MetatileBehavior_IsJumpNorth: @ 8056DEC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3A
- beq _08056DFA
- movs r0, 0
- b _08056DFC
-_08056DFA:
- movs r0, 0x1
-_08056DFC:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsJumpNorth
-
- thumb_func_start MetatileBehavior_IsJumpSouth
-MetatileBehavior_IsJumpSouth: @ 8056E00
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- beq _08056E0E
- movs r0, 0
- b _08056E10
-_08056E0E:
- movs r0, 0x1
-_08056E10:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsJumpSouth
-
- thumb_func_start sub_8056E14
-sub_8056E14: @ 8056E14
- push {lr}
- lsls r0, 24
- movs r1, 0xFE
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08056E28
- movs r0, 0
- b _08056E2A
-_08056E28:
- movs r0, 0x1
-_08056E2A:
- pop {r1}
- bx r1
- thumb_func_end sub_8056E14
-
- thumb_func_start MetatileBehavior_IsSandOrDeepSand
-MetatileBehavior_IsSandOrDeepSand: @ 8056E30
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x21
- beq _08056E3E
- cmp r0, 0x6
- bne _08056E42
-_08056E3E:
- movs r0, 0x1
- b _08056E44
-_08056E42:
- movs r0, 0
-_08056E44:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSandOrDeepSand
-
- thumb_func_start MetatileBehavior_IsDeepSand
-MetatileBehavior_IsDeepSand: @ 8056E48
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- beq _08056E56
- movs r0, 0
- b _08056E58
-_08056E56:
- movs r0, 0x1
-_08056E58:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsDeepSand
-
- thumb_func_start MetatileBehavior_IsReflective
-MetatileBehavior_IsReflective: @ 8056E5C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _08056E7A
- cmp r0, 0x16
- beq _08056E7A
- cmp r0, 0x1A
- beq _08056E7A
- cmp r0, 0x20
- beq _08056E7A
- cmp r0, 0x14
- beq _08056E7A
- cmp r0, 0x2B
- bne _08056E7E
-_08056E7A:
- movs r0, 0x1
- b _08056E80
-_08056E7E:
- movs r0, 0
-_08056E80:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsReflective
-
- thumb_func_start MetatileBehavior_IsIce
-MetatileBehavior_IsIce: @ 8056E84
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x20
- beq _08056E92
- movs r0, 0
- b _08056E94
-_08056E92:
- movs r0, 0x1
-_08056E94:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsIce
-
- thumb_func_start is_tile_x69_2_warp_door
-is_tile_x69_2_warp_door: @ 8056E98
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x69
- beq _08056EA6
- movs r0, 0
- b _08056EA8
-_08056EA6:
- movs r0, 0x1
-_08056EA8:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x69_2_warp_door
-
- thumb_func_start sub_8056EAC
-sub_8056EAC: @ 8056EAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8D
- beq _08056EBA
- cmp r0, 0x69
- bne _08056EBE
-_08056EBA:
- movs r0, 0x1
- b _08056EC0
-_08056EBE:
- movs r0, 0
-_08056EC0:
- pop {r1}
- bx r1
- thumb_func_end sub_8056EAC
-
- thumb_func_start MetatileBehavior_IsEscalator
-MetatileBehavior_IsEscalator: @ 8056EC4
- push {lr}
- lsls r0, 24
- movs r1, 0x96
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08056ED8
- movs r0, 0
- b _08056EDA
-_08056ED8:
- movs r0, 0x1
-_08056EDA:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsEscalator
-
- thumb_func_start unref_sub_8056EE0
-unref_sub_8056EE0: @ 8056EE0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _08056EEE
- movs r0, 0
- b _08056EF0
-_08056EEE:
- movs r0, 0x1
-_08056EF0:
- pop {r1}
- bx r1
- thumb_func_end unref_sub_8056EE0
-
- thumb_func_start MetatileBehavior_IsLadder
-MetatileBehavior_IsLadder: @ 8056EF4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x61
- beq _08056F02
- movs r0, 0
- b _08056F04
-_08056F02:
- movs r0, 0x1
-_08056F04:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsLadder
-
- thumb_func_start sub_8056F08
-sub_8056F08: @ 8056F08
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x60
- beq _08056F1A
- cmp r0, 0x6C
- beq _08056F1A
- cmp r0, 0x6E
- bne _08056F1E
-_08056F1A:
- movs r0, 0x1
- b _08056F20
-_08056F1E:
- movs r0, 0
-_08056F20:
- pop {r1}
- bx r1
- thumb_func_end sub_8056F08
-
- thumb_func_start sub_8056F24
-sub_8056F24: @ 8056F24
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6E
- beq _08056F32
- movs r0, 0
- b _08056F34
-_08056F32:
- movs r0, 0x1
-_08056F34:
- pop {r1}
- bx r1
- thumb_func_end sub_8056F24
-
- thumb_func_start MetatileBehavior_IsSurfableWaterOrUnderwater
-MetatileBehavior_IsSurfableWaterOrUnderwater: @ 8056F38
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08056F50 @ =gUnknown_08308E2C
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08056F54
- movs r0, 0
- b _08056F56
- .align 2, 0
-_08056F50: .4byte gUnknown_08308E2C
-_08056F54:
- movs r0, 0x1
-_08056F56:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSurfableWaterOrUnderwater
-
- thumb_func_start MetatileBehavior_IsEastArrowWarp
-MetatileBehavior_IsEastArrowWarp: @ 8056F5C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x62
- beq _08056F6A
- movs r0, 0
- b _08056F6C
-_08056F6A:
- movs r0, 0x1
-_08056F6C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsEastArrowWarp
-
- thumb_func_start MetatileBehavior_IsWestArrowWarp
-MetatileBehavior_IsWestArrowWarp: @ 8056F70
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x63
- beq _08056F7E
- movs r0, 0
- b _08056F80
-_08056F7E:
- movs r0, 0x1
-_08056F80:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWestArrowWarp
-
- thumb_func_start MetatileBehavior_IsNorthArrowWarp
-MetatileBehavior_IsNorthArrowWarp: @ 8056F84
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x64
- beq _08056F92
- cmp r0, 0x1B
- bne _08056F96
-_08056F92:
- movs r0, 0x1
- b _08056F98
-_08056F96:
- movs r0, 0
-_08056F98:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsNorthArrowWarp
-
- thumb_func_start MetatileBehavior_IsSouthArrowWarp
-MetatileBehavior_IsSouthArrowWarp: @ 8056F9C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x65
- beq _08056FAE
- cmp r0, 0x6D
- beq _08056FAE
- cmp r0, 0x1C
- bne _08056FB2
-_08056FAE:
- movs r0, 0x1
- b _08056FB4
-_08056FB2:
- movs r0, 0
-_08056FB4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSouthArrowWarp
-
- thumb_func_start unref_sub_8056FB8
-unref_sub_8056FB8: @ 8056FB8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r5, 0
- adds r0, r4, 0
- bl MetatileBehavior_IsEastArrowWarp
- lsls r0, 24
- cmp r0, 0
- bne _08056FF0
- adds r0, r4, 0
- bl MetatileBehavior_IsWestArrowWarp
- lsls r0, 24
- cmp r0, 0
- bne _08056FF0
- adds r0, r4, 0
- bl MetatileBehavior_IsNorthArrowWarp
- lsls r0, 24
- cmp r0, 0
- bne _08056FF0
- adds r0, r4, 0
- bl MetatileBehavior_IsSouthArrowWarp
- lsls r0, 24
- cmp r0, 0
- beq _08056FF2
-_08056FF0:
- movs r5, 0x1
-_08056FF2:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_8056FB8
-
- thumb_func_start sub_8056FFC
-sub_8056FFC: @ 8056FFC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC0
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x8
- bls _08057032
- adds r0, r1, 0
- subs r0, 0x50
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _08057032
- cmp r1, 0xD0
- beq _08057032
- cmp r1, 0xD2
- beq _08057032
- cmp r1, 0x13
- beq _08057032
- cmp r1, 0x20
- beq _08057032
- cmp r1, 0xBB
- beq _08057032
- cmp r1, 0xBC
- bne _08057036
-_08057032:
- movs r0, 0x1
- b _08057038
-_08057036:
- movs r0, 0
-_08057038:
- pop {r1}
- bx r1
- thumb_func_end sub_8056FFC
-
- thumb_func_start MetatileBehavior_IsIce_2
-MetatileBehavior_IsIce_2: @ 805703C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x20
- beq _0805704A
- movs r0, 0
- b _0805704C
-_0805704A:
- movs r0, 0x1
-_0805704C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsIce_2
-
- thumb_func_start MetatileBehavior_IsTrickHouseSlipperyFloor
-MetatileBehavior_IsTrickHouseSlipperyFloor: @ 8057050
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x48
- beq _0805705E
- movs r0, 0
- b _08057060
-_0805705E:
- movs r0, 0x1
-_08057060:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsTrickHouseSlipperyFloor
-
- thumb_func_start MetatileBehavior_0x05
-MetatileBehavior_0x05: @ 8057064
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _08057072
- movs r0, 0
- b _08057074
-_08057072:
- movs r0, 0x1
-_08057074:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_0x05
-
- thumb_func_start MetatileBehavior_IsWalkNorth
-MetatileBehavior_IsWalkNorth: @ 8057078
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x42
- beq _08057086
- movs r0, 0
- b _08057088
-_08057086:
- movs r0, 0x1
-_08057088:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWalkNorth
-
- thumb_func_start MetatileBehavior_IsWalkSouth
-MetatileBehavior_IsWalkSouth: @ 805708C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x43
- beq _0805709A
- movs r0, 0
- b _0805709C
-_0805709A:
- movs r0, 0x1
-_0805709C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWalkSouth
-
- thumb_func_start MetatileBehavior_IsWalkWest
-MetatileBehavior_IsWalkWest: @ 80570A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x41
- beq _080570AE
- movs r0, 0
- b _080570B0
-_080570AE:
- movs r0, 0x1
-_080570B0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWalkWest
-
- thumb_func_start MetatileBehavior_IsWalkEast
-MetatileBehavior_IsWalkEast: @ 80570B4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080570C2
- movs r0, 0
- b _080570C4
-_080570C2:
- movs r0, 0x1
-_080570C4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWalkEast
-
- thumb_func_start MetatileBehavior_IsNorthwardCurrent
-MetatileBehavior_IsNorthwardCurrent: @ 80570C8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x52
- beq _080570D6
- movs r0, 0
- b _080570D8
-_080570D6:
- movs r0, 0x1
-_080570D8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsNorthwardCurrent
-
- thumb_func_start MetatileBehavior_IsSouthwardCurrent
-MetatileBehavior_IsSouthwardCurrent: @ 80570DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x53
- beq _080570EA
- movs r0, 0
- b _080570EC
-_080570EA:
- movs r0, 0x1
-_080570EC:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSouthwardCurrent
-
- thumb_func_start MetatileBehavior_IsWestwardCurrent
-MetatileBehavior_IsWestwardCurrent: @ 80570F0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x51
- beq _080570FE
- movs r0, 0
- b _08057100
-_080570FE:
- movs r0, 0x1
-_08057100:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWestwardCurrent
-
- thumb_func_start MetatileBehavior_IsEastwardCurrent
-MetatileBehavior_IsEastwardCurrent: @ 8057104
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x50
- beq _08057112
- movs r0, 0
- b _08057114
-_08057112:
- movs r0, 0x1
-_08057114:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsEastwardCurrent
-
- thumb_func_start MetatileBehavior_IsSlideNorth
-MetatileBehavior_IsSlideNorth: @ 8057118
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x46
- beq _08057126
- movs r0, 0
- b _08057128
-_08057126:
- movs r0, 0x1
-_08057128:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSlideNorth
-
- thumb_func_start MetatileBehavior_IsSlideSouth
-MetatileBehavior_IsSlideSouth: @ 805712C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x47
- beq _0805713A
- movs r0, 0
- b _0805713C
-_0805713A:
- movs r0, 0x1
-_0805713C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSlideSouth
-
- thumb_func_start MetatileBehavior_IsSlideWest
-MetatileBehavior_IsSlideWest: @ 8057140
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x45
- beq _0805714E
- movs r0, 0
- b _08057150
-_0805714E:
- movs r0, 0x1
-_08057150:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSlideWest
-
- thumb_func_start MetatileBehavior_IsSlideEast
-MetatileBehavior_IsSlideEast: @ 8057154
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x44
- beq _08057162
- movs r0, 0
- b _08057164
-_08057162:
- movs r0, 0x1
-_08057164:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSlideEast
-
- thumb_func_start MetatileBehavior_IsCounter
-MetatileBehavior_IsCounter: @ 8057168
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x80
- beq _08057176
- movs r0, 0
- b _08057178
-_08057176:
- movs r0, 0x1
-_08057178:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsCounter
-
- thumb_func_start MetatileBehavior_IsPlayerFacingTVScreen
-MetatileBehavior_IsPlayerFacingTVScreen: @ 805717C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x2
- bne _0805718E
- cmp r0, 0x86
- beq _08057192
-_0805718E:
- movs r0, 0
- b _08057194
-_08057192:
- movs r0, 0x1
-_08057194:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsPlayerFacingTVScreen
-
- thumb_func_start MetatileBehavior_IsPC
-MetatileBehavior_IsPC: @ 8057198
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x83
- beq _080571A6
- movs r0, 0
- b _080571A8
-_080571A6:
- movs r0, 0x1
-_080571A8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsPC
-
- thumb_func_start is_tile_x84
-is_tile_x84: @ 80571AC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x84
- beq _080571BA
- movs r0, 0
- b _080571BC
-_080571BA:
- movs r0, 0x1
-_080571BC:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x84
-
- thumb_func_start sub_80571C0
-sub_80571C0: @ 80571C0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x91
- beq _080571E2
- cmp r0, 0x93
- beq _080571E2
- cmp r0, 0x95
- beq _080571E2
- cmp r0, 0x97
- beq _080571E2
- cmp r0, 0x99
- beq _080571E2
- cmp r0, 0x9B
- beq _080571E2
- cmp r0, 0x9D
- bne _080571E6
-_080571E2:
- movs r0, 0x1
- b _080571E8
-_080571E6:
- movs r0, 0
-_080571E8:
- pop {r1}
- bx r1
- thumb_func_end sub_80571C0
-
- thumb_func_start sub_80571EC
-sub_80571EC: @ 80571EC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x90
- beq _08057202
- cmp r0, 0x92
- beq _08057202
- cmp r0, 0x94
- beq _08057202
- cmp r0, 0x9A
- bne _08057206
-_08057202:
- movs r0, 0x1
- b _08057208
-_08057206:
- movs r0, 0
-_08057208:
- pop {r1}
- bx r1
- thumb_func_end sub_80571EC
-
- thumb_func_start sub_805720C
-sub_805720C: @ 805720C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x96
- beq _0805721A
- cmp r0, 0x9C
- bne _0805721E
-_0805721A:
- movs r0, 0x1
- b _08057220
-_0805721E:
- movs r0, 0
-_08057220:
- pop {r1}
- bx r1
- thumb_func_end sub_805720C
-
- thumb_func_start is_tile_x98
-is_tile_x98: @ 8057224
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x98
- beq _08057232
- movs r0, 0
- b _08057234
-_08057232:
- movs r0, 0x1
-_08057234:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x98
-
- thumb_func_start sub_8057238
-sub_8057238: @ 8057238
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB0
- beq _08057246
- movs r0, 0
- b _08057248
-_08057246:
- movs r0, 0x1
-_08057248:
- pop {r1}
- bx r1
- thumb_func_end sub_8057238
-
- thumb_func_start sub_805724C
-sub_805724C: @ 805724C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB1
- beq _0805725A
- movs r0, 0
- b _0805725C
-_0805725A:
- movs r0, 0x1
-_0805725C:
- pop {r1}
- bx r1
- thumb_func_end sub_805724C
-
- thumb_func_start unref_sub_8057260
-unref_sub_8057260: @ 8057260
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB2
- beq _0805726E
- movs r0, 0
- b _08057270
-_0805726E:
- movs r0, 0x1
-_08057270:
- pop {r1}
- bx r1
- thumb_func_end unref_sub_8057260
-
- thumb_func_start sub_8057274
-sub_8057274: @ 8057274
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB3
- beq _08057282
- movs r0, 0
- b _08057284
-_08057282:
- movs r0, 0x1
-_08057284:
- pop {r1}
- bx r1
- thumb_func_end sub_8057274
-
- thumb_func_start sub_8057288
-sub_8057288: @ 8057288
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB9
- beq _08057296
- movs r0, 0
- b _08057298
-_08057296:
- movs r0, 0x1
-_08057298:
- pop {r1}
- bx r1
- thumb_func_end sub_8057288
-
- thumb_func_start sub_805729C
-sub_805729C: @ 805729C
- push {lr}
- lsls r0, 24
- cmp r0, 0
- beq _080572A8
- movs r0, 0
- b _080572AA
-_080572A8:
- movs r0, 0x1
-_080572AA:
- pop {r1}
- bx r1
- thumb_func_end sub_805729C
-
- thumb_func_start sub_80572B0
-sub_80572B0: @ 80572B0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB7
- beq _080572BE
- movs r0, 0
- b _080572C0
-_080572BE:
- movs r0, 0x1
-_080572C0:
- pop {r1}
- bx r1
- thumb_func_end sub_80572B0
-
- thumb_func_start unref_sub_80572C4
-unref_sub_80572C4: @ 80572C4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB2
- beq _080572D2
- movs r0, 0
- b _080572D4
-_080572D2:
- movs r0, 0x1
-_080572D4:
- pop {r1}
- bx r1
- thumb_func_end unref_sub_80572C4
-
- thumb_func_start sub_80572D8
-sub_80572D8: @ 80572D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB5
- beq _080572E6
- movs r0, 0
- b _080572E8
-_080572E6:
- movs r0, 0x1
-_080572E8:
- pop {r1}
- bx r1
- thumb_func_end sub_80572D8
-
- thumb_func_start sub_80572EC
-sub_80572EC: @ 80572EC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC3
- beq _080572FA
- movs r0, 0
- b _080572FC
-_080572FA:
- movs r0, 0x1
-_080572FC:
- pop {r1}
- bx r1
- thumb_func_end sub_80572EC
-
- thumb_func_start sub_8057300
-sub_8057300: @ 8057300
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC2
- beq _0805730E
- movs r0, 0
- b _08057310
-_0805730E:
- movs r0, 0x1
-_08057310:
- pop {r1}
- bx r1
- thumb_func_end sub_8057300
-
- thumb_func_start sub_8057314
-sub_8057314: @ 8057314
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB8
- beq _08057322
- movs r0, 0
- b _08057324
-_08057322:
- movs r0, 0x1
-_08057324:
- pop {r1}
- bx r1
- thumb_func_end sub_8057314
-
- thumb_func_start sub_8057328
-sub_8057328: @ 8057328
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBE
- beq _08057336
- movs r0, 0
- b _08057338
-_08057336:
- movs r0, 0x1
-_08057338:
- pop {r1}
- bx r1
- thumb_func_end sub_8057328
-
- thumb_func_start sub_805733C
-sub_805733C: @ 805733C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBD
- beq _0805734A
- movs r0, 0
- b _0805734C
-_0805734A:
- movs r0, 0x1
-_0805734C:
- pop {r1}
- bx r1
- thumb_func_end sub_805733C
-
- thumb_func_start sub_8057350
-sub_8057350: @ 8057350
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBA
- beq _0805735E
- movs r0, 0
- b _08057360
-_0805735E:
- movs r0, 0x1
-_08057360:
- pop {r1}
- bx r1
- thumb_func_end sub_8057350
-
- thumb_func_start sub_8057364
-sub_8057364: @ 8057364
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBF
- beq _08057372
- movs r0, 0
- b _08057374
-_08057372:
- movs r0, 0x1
-_08057374:
- pop {r1}
- bx r1
- thumb_func_end sub_8057364
-
- thumb_func_start sub_8057378
-sub_8057378: @ 8057378
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC4
- beq _08057386
- movs r0, 0
- b _08057388
-_08057386:
- movs r0, 0x1
-_08057388:
- pop {r1}
- bx r1
- thumb_func_end sub_8057378
-
- thumb_func_start sub_805738C
-sub_805738C: @ 805738C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC5
- beq _0805739A
- movs r0, 0
- b _0805739C
-_0805739A:
- movs r0, 0x1
-_0805739C:
- pop {r1}
- bx r1
- thumb_func_end sub_805738C
-
- thumb_func_start MetatileBehavior_HasRipples
-MetatileBehavior_HasRipples: @ 80573A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _080573B2
- cmp r0, 0x16
- beq _080573B2
- cmp r0, 0x14
- bne _080573B6
-_080573B2:
- movs r0, 0x1
- b _080573B8
-_080573B6:
- movs r0, 0
-_080573B8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_HasRipples
-
- thumb_func_start MetatileBehavior_IsPuddle
-MetatileBehavior_IsPuddle: @ 80573BC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x16
- beq _080573CA
- movs r0, 0
- b _080573CC
-_080573CA:
- movs r0, 0x1
-_080573CC:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsPuddle
-
- thumb_func_start MetatileBehavior_IsTallGrass
-MetatileBehavior_IsTallGrass: @ 80573D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080573DE
- movs r0, 0
- b _080573E0
-_080573DE:
- movs r0, 0x1
-_080573E0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsTallGrass
-
- thumb_func_start MetatileBehavior_IsLongGrass
-MetatileBehavior_IsLongGrass: @ 80573E4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080573F2
- movs r0, 0
- b _080573F4
-_080573F2:
- movs r0, 0x1
-_080573F4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsLongGrass
-
- thumb_func_start MetatileBehavior_IsBerryTreeSoil
-MetatileBehavior_IsBerryTreeSoil: @ 80573F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA0
- beq _08057406
- movs r0, 0
- b _08057408
-_08057406:
- movs r0, 0x1
-_08057408:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsBerryTreeSoil
-
- thumb_func_start MetatileBehavior_IsAsh
-MetatileBehavior_IsAsh: @ 805740C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x24
- beq _0805741A
- movs r0, 0
- b _0805741C
-_0805741A:
- movs r0, 0x1
-_0805741C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsAsh
-
- thumb_func_start MetatileBehavior_IsUnusedFootprintMetatile
-MetatileBehavior_IsUnusedFootprintMetatile: @ 8057420
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x25
- beq _0805742E
- movs r0, 0
- b _08057430
-_0805742E:
- movs r0, 0x1
-_08057430:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsUnusedFootprintMetatile
-
- thumb_func_start MetatileBehavior_IsBridge
-MetatileBehavior_IsBridge: @ 8057434
- push {lr}
- lsls r0, 24
- movs r1, 0x90
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x3
- bls _08057448
- movs r0, 0
- b _0805744A
-_08057448:
- movs r0, 0x1
-_0805744A:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsBridge
-
- thumb_func_start sub_8057450
-sub_8057450: @ 8057450
- push {lr}
- lsls r0, 24
- movs r1, 0x90
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x3
- bls _08057462
- movs r0, 0
-_08057462:
- pop {r1}
- bx r1
- thumb_func_end sub_8057450
-
- thumb_func_start MetatileBehavior_IsLandWildEncounter
-MetatileBehavior_IsLandWildEncounter: @ 8057468
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _0805748C
- adds r0, r4, 0
- bl sub_8056DA0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805748C
- movs r0, 0x1
- b _0805748E
-_0805748C:
- movs r0, 0
-_0805748E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsLandWildEncounter
-
- thumb_func_start MetatileBehavior_IsWaterWildEncounter
-MetatileBehavior_IsWaterWildEncounter: @ 8057494
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080574BA
- adds r0, r4, 0
- bl sub_8056DA0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080574BA
- movs r0, 0x1
- b _080574BC
-_080574BA:
- movs r0, 0
-_080574BC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWaterWildEncounter
-
- thumb_func_start sub_80574C4
-sub_80574C4: @ 80574C4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB
- beq _080574D2
- movs r0, 0
- b _080574D4
-_080574D2:
- movs r0, 0x1
-_080574D4:
- pop {r1}
- bx r1
- thumb_func_end sub_80574C4
-
- thumb_func_start sub_80574D8
-sub_80574D8: @ 80574D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC
- beq _080574E6
- movs r0, 0
- b _080574E8
-_080574E6:
- movs r0, 0x1
-_080574E8:
- pop {r1}
- bx r1
- thumb_func_end sub_80574D8
-
- thumb_func_start sub_80574EC
-sub_80574EC: @ 80574EC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xEF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x1
- bls _08057502
- cmp r1, 0x14
- bne _08057506
-_08057502:
- movs r0, 0x1
- b _08057508
-_08057506:
- movs r0, 0
-_08057508:
- pop {r1}
- bx r1
- thumb_func_end sub_80574EC
-
- thumb_func_start sub_805750C
-sub_805750C: @ 805750C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x19
- beq _0805751A
- cmp r0, 0x2A
- bne _0805751E
-_0805751A:
- movs r0, 0x1
- b _08057520
-_0805751E:
- movs r0, 0
-_08057520:
- pop {r1}
- bx r1
- thumb_func_end sub_805750C
-
- thumb_func_start MetatileBehavior_IsShallowFlowingWater
-MetatileBehavior_IsShallowFlowingWater: @ 8057524
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x17
- beq _08057536
- cmp r0, 0x1B
- beq _08057536
- cmp r0, 0x1C
- bne _0805753A
-_08057536:
- movs r0, 0x1
- b _0805753C
-_0805753A:
- movs r0, 0
-_0805753C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsShallowFlowingWater
-
- thumb_func_start sub_8057540
-sub_8057540: @ 8057540
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x26
- beq _0805754E
- movs r0, 0
- b _08057550
-_0805754E:
- movs r0, 0x1
-_08057550:
- pop {r1}
- bx r1
- thumb_func_end sub_8057540
-
- thumb_func_start sub_8057554
-sub_8057554: @ 8057554
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x27
- beq _08057562
- movs r0, 0
- b _08057564
-_08057562:
- movs r0, 0x1
-_08057564:
- pop {r1}
- bx r1
- thumb_func_end sub_8057554
-
- thumb_func_start sub_8057568
-sub_8057568: @ 8057568
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x15
- beq _0805757A
- cmp r0, 0x11
- beq _0805757A
- cmp r0, 0x12
- bne _0805757E
-_0805757A:
- movs r0, 0x1
- b _08057580
-_0805757E:
- movs r0, 0
-_08057580:
- pop {r1}
- bx r1
- thumb_func_end sub_8057568
-
- thumb_func_start unref_sub_8057584
-unref_sub_8057584: @ 8057584
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x18
- beq _08057592
- cmp r0, 0x1A
- bne _08057596
-_08057592:
- movs r0, 0x1
- b _08057598
-_08057596:
- movs r0, 0
-_08057598:
- pop {r1}
- bx r1
- thumb_func_end unref_sub_8057584
-
- thumb_func_start sub_805759C
-sub_805759C: @ 805759C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- beq _080575BE
- adds r0, r4, 0
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- cmp r0, 0
- bne _080575BE
- movs r0, 0x1
- b _080575C0
-_080575BE:
- movs r0, 0
-_080575C0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805759C
-
- thumb_func_start MetatileBehavior_IsEastBlocked
-MetatileBehavior_IsEastBlocked: @ 80575C8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x30
- beq _080575E2
- cmp r0, 0x34
- beq _080575E2
- cmp r0, 0x36
- beq _080575E2
- cmp r0, 0xC1
- beq _080575E2
- cmp r0, 0xBE
- bne _080575E6
-_080575E2:
- movs r0, 0x1
- b _080575E8
-_080575E6:
- movs r0, 0
-_080575E8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsEastBlocked
-
- thumb_func_start MetatileBehavior_IsWestBlocked
-MetatileBehavior_IsWestBlocked: @ 80575EC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x31
- beq _08057606
- cmp r0, 0x35
- beq _08057606
- cmp r0, 0x37
- beq _08057606
- cmp r0, 0xC1
- beq _08057606
- cmp r0, 0xBE
- bne _0805760A
-_08057606:
- movs r0, 0x1
- b _0805760C
-_0805760A:
- movs r0, 0
-_0805760C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWestBlocked
-
- thumb_func_start MetatileBehavior_IsNorthBlocked
-MetatileBehavior_IsNorthBlocked: @ 8057610
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x32
- beq _08057626
- cmp r0, 0x34
- beq _08057626
- cmp r0, 0x35
- beq _08057626
- cmp r0, 0xC0
- bne _0805762A
-_08057626:
- movs r0, 0x1
- b _0805762C
-_0805762A:
- movs r0, 0
-_0805762C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsNorthBlocked
-
- thumb_func_start MetatileBehavior_IsSouthBlocked
-MetatileBehavior_IsSouthBlocked: @ 8057630
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x33
- beq _08057646
- cmp r0, 0x36
- beq _08057646
- cmp r0, 0x37
- beq _08057646
- cmp r0, 0xC0
- bne _0805764A
-_08057646:
- movs r0, 0x1
- b _0805764C
-_0805764A:
- movs r0, 0
-_0805764C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSouthBlocked
-
- thumb_func_start MetatileBehavior_IsShortGrass
-MetatileBehavior_IsShortGrass: @ 8057650
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- beq _0805765E
- movs r0, 0
- b _08057660
-_0805765E:
- movs r0, 0x1
-_08057660:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsShortGrass
-
- thumb_func_start MetatileBehavior_IsHotSprings
-MetatileBehavior_IsHotSprings: @ 8057664
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x28
- beq _08057672
- movs r0, 0
- b _08057674
-_08057672:
- movs r0, 0x1
-_08057674:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsHotSprings
-
- thumb_func_start MetatileBehavior_IsWaterfall
-MetatileBehavior_IsWaterfall: @ 8057678
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- beq _08057686
- movs r0, 0
- b _08057688
-_08057686:
- movs r0, 0x1
-_08057688:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWaterfall
-
- thumb_func_start MetatileBehavior_IsFortreeBridge
-MetatileBehavior_IsFortreeBridge: @ 805768C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x78
- beq _0805769A
- movs r0, 0
- b _0805769C
-_0805769A:
- movs r0, 0x1
-_0805769C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsFortreeBridge
-
- thumb_func_start sub_80576A0
-sub_80576A0: @ 80576A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x74
- beq _080576AE
- movs r0, 0
- b _080576B0
-_080576AE:
- movs r0, 0x1
-_080576B0:
- pop {r1}
- bx r1
- thumb_func_end sub_80576A0
-
- thumb_func_start sub_80576B4
-sub_80576B4: @ 80576B4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x75
- beq _080576C2
- movs r0, 0
- b _080576C4
-_080576C2:
- movs r0, 0x1
-_080576C4:
- pop {r1}
- bx r1
- thumb_func_end sub_80576B4
-
- thumb_func_start sub_80576C8
-sub_80576C8: @ 80576C8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x76
- beq _080576D6
- movs r0, 0
- b _080576D8
-_080576D6:
- movs r0, 0x1
-_080576D8:
- pop {r1}
- bx r1
- thumb_func_end sub_80576C8
-
- thumb_func_start sub_80576DC
-sub_80576DC: @ 80576DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x77
- beq _080576EA
- movs r0, 0
- b _080576EC
-_080576EA:
- movs r0, 0x1
-_080576EC:
- pop {r1}
- bx r1
- thumb_func_end sub_80576DC
-
- thumb_func_start MetatileBehavior_IsPacifidlogLog
-MetatileBehavior_IsPacifidlogLog: @ 80576F0
- push {lr}
- lsls r0, 24
- movs r1, 0x8C
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x3
- bls _08057704
- movs r0, 0
- b _08057706
-_08057704:
- movs r0, 0x1
-_08057706:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsPacifidlogLog
-
- thumb_func_start is_tile_x8C
-is_tile_x8C: @ 805770C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8C
- beq _0805771A
- movs r0, 0
- b _0805771C
-_0805771A:
- movs r0, 0x1
-_0805771C:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x8C
-
- thumb_func_start is_tile_x85
-is_tile_x85: @ 8057720
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x85
- beq _0805772E
- movs r0, 0
- b _08057730
-_0805772E:
- movs r0, 0x1
-_08057730:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x85
-
- thumb_func_start is_tile_x8B
-is_tile_x8B: @ 8057734
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8B
- beq _08057742
- movs r0, 0
- b _08057744
-_08057742:
- movs r0, 0x1
-_08057744:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x8B
-
- thumb_func_start is_tile_x8A
-is_tile_x8A: @ 8057748
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8A
- beq _08057756
- movs r0, 0
- b _08057758
-_08057756:
- movs r0, 0x1
-_08057758:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x8A
-
- thumb_func_start is_tile_x87
-is_tile_x87: @ 805775C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x87
- beq _0805776A
- movs r0, 0
- b _0805776C
-_0805776A:
- movs r0, 0x1
-_0805776C:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x87
-
- thumb_func_start MetatileBehavior_0xBB
-MetatileBehavior_0xBB: @ 8057770
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBB
- beq _0805777E
- movs r0, 0
- b _08057780
-_0805777E:
- movs r0, 0x1
-_08057780:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_0xBB
-
- thumb_func_start MetatileBehavior_0xBC
-MetatileBehavior_0xBC: @ 8057784
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBC
- beq _08057792
- movs r0, 0
- b _08057794
-_08057792:
- movs r0, 0x1
-_08057794:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_0xBC
-
- thumb_func_start sub_8057798
-sub_8057798: @ 8057798
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x29
- beq _080577A6
- movs r0, 0
- b _080577A8
-_080577A6:
- movs r0, 0x1
-_080577A8:
- pop {r1}
- bx r1
- thumb_func_end sub_8057798
-
- thumb_func_start is_role_x68
-is_role_x68: @ 80577AC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x68
- beq _080577BA
- movs r0, 0
- b _080577BC
-_080577BA:
- movs r0, 0x1
-_080577BC:
- pop {r1}
- bx r1
- thumb_func_end is_role_x68
-
- thumb_func_start MetatileBehavior_IsAquaHideoutWarp
-MetatileBehavior_IsAquaHideoutWarp: @ 80577C0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x67
- beq _080577CE
- movs r0, 0
- b _080577D0
-_080577CE:
- movs r0, 0x1
-_080577D0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsAquaHideoutWarp
-
- thumb_func_start MetatileBehavior_IsSurfableFishableWater
-MetatileBehavior_IsSurfableFishableWater: @ 80577D4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _080577F8
- cmp r0, 0x15
- beq _080577F8
- cmp r0, 0x11
- beq _080577F8
- cmp r0, 0x12
- beq _080577F8
- cmp r0, 0x14
- beq _080577F8
- subs r0, 0x50
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bhi _080577FC
-_080577F8:
- movs r0, 0x1
- b _080577FE
-_080577FC:
- movs r0, 0
-_080577FE:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSurfableFishableWater
-
- thumb_func_start sub_8057804
-sub_8057804: @ 8057804
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- beq _08057812
- movs r0, 0
- b _08057814
-_08057812:
- movs r0, 0x1
-_08057814:
- pop {r1}
- bx r1
- thumb_func_end sub_8057804
-
- thumb_func_start sub_8057818
-sub_8057818: @ 8057818
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x66
- beq _08057826
- movs r0, 0
- b _08057828
-_08057826:
- movs r0, 0x1
-_08057828:
- pop {r1}
- bx r1
- thumb_func_end sub_8057818
-
- thumb_func_start sub_805782C
-sub_805782C: @ 805782C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD2
- beq _0805783A
- movs r0, 0
- b _0805783C
-_0805783A:
- movs r0, 0x1
-_0805783C:
- pop {r1}
- bx r1
- thumb_func_end sub_805782C
-
- thumb_func_start MetatileBehavior_IsMuddySlope
-MetatileBehavior_IsMuddySlope: @ 8057840
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD0
- beq _0805784E
- movs r0, 0
- b _08057850
-_0805784E:
- movs r0, 0x1
-_08057850:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsMuddySlope
-
- thumb_func_start MetatileBehavior_IsBumpySlope
-MetatileBehavior_IsBumpySlope: @ 8057854
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD1
- beq _08057862
- movs r0, 0
- b _08057864
-_08057862:
- movs r0, 0x1
-_08057864:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsBumpySlope
-
- thumb_func_start MetatileBehavior_IsIsolatedVerticalRail
-MetatileBehavior_IsIsolatedVerticalRail: @ 8057868
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD3
- beq _08057876
- movs r0, 0
- b _08057878
-_08057876:
- movs r0, 0x1
-_08057878:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsIsolatedVerticalRail
-
- thumb_func_start MetatileBehavior_IsIsolatedHorizontalRail
-MetatileBehavior_IsIsolatedHorizontalRail: @ 805787C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD4
- beq _0805788A
- movs r0, 0
- b _0805788C
-_0805788A:
- movs r0, 0x1
-_0805788C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsIsolatedHorizontalRail
-
- thumb_func_start MetatileBehavior_IsVerticalRail
-MetatileBehavior_IsVerticalRail: @ 8057890
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD5
- beq _0805789E
- movs r0, 0
- b _080578A0
-_0805789E:
- movs r0, 0x1
-_080578A0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsVerticalRail
-
- thumb_func_start MetatileBehavior_IsHorizontalRail
-MetatileBehavior_IsHorizontalRail: @ 80578A4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD6
- beq _080578B2
- movs r0, 0
- b _080578B4
-_080578B2:
- movs r0, 0x1
-_080578B4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsHorizontalRail
-
- thumb_func_start MetatileBehavior_IsSeaweed
-MetatileBehavior_IsSeaweed: @ 80578B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x22
- beq _080578C6
- cmp r0, 0x2A
- bne _080578CA
-_080578C6:
- movs r0, 0x1
- b _080578CC
-_080578CA:
- movs r0, 0
-_080578CC:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSeaweed
-
- thumb_func_start MetatileBehavior_IsRunningDisallowed
-MetatileBehavior_IsRunningDisallowed: @ 80578D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA
- beq _080578EC
- cmp r0, 0x3
- beq _080578EC
- cmp r0, 0x28
- beq _080578EC
- bl MetatileBehavior_IsPacifidlogLog
- lsls r0, 24
- cmp r0, 0
- beq _080578F0
-_080578EC:
- movs r0, 0x1
- b _080578F2
-_080578F0:
- movs r0, 0
-_080578F2:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsRunningDisallowed
-
- thumb_func_start sub_80578F8
-sub_80578F8: @ 80578F8
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFE
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x1
- bls _08057912
- cmp r1, 0x24
- beq _08057912
- cmp r1, 0x9
- bne _08057916
-_08057912:
- movs r0, 0x1
- b _08057918
-_08057916:
- movs r0, 0
-_08057918:
- pop {r1}
- bx r1
- thumb_func_end sub_80578F8
-
- thumb_func_start sub_805791C
-sub_805791C: @ 805791C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8E
- beq _0805792A
- movs r0, 0
- b _0805792C
-_0805792A:
- movs r0, 0x1
-_0805792C:
- pop {r1}
- bx r1
- thumb_func_end sub_805791C
-
- thumb_func_start sub_8057930
-sub_8057930: @ 8057930
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE0
- beq _0805793E
- movs r0, 0
- b _08057940
-_0805793E:
- movs r0, 0x1
-_08057940:
- pop {r1}
- bx r1
- thumb_func_end sub_8057930
-
- thumb_func_start sub_8057944
-sub_8057944: @ 8057944
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE1
- beq _08057952
- movs r0, 0
- b _08057954
-_08057952:
- movs r0, 0x1
-_08057954:
- pop {r1}
- bx r1
- thumb_func_end sub_8057944
-
- thumb_func_start sub_8057958
-sub_8057958: @ 8057958
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE2
- beq _08057966
- movs r0, 0
- b _08057968
-_08057966:
- movs r0, 0x1
-_08057968:
- pop {r1}
- bx r1
- thumb_func_end sub_8057958
-
- thumb_func_start sub_805796C
-sub_805796C: @ 805796C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE3
- beq _0805797A
- movs r0, 0
- b _0805797C
-_0805797A:
- movs r0, 0x1
-_0805797C:
- pop {r1}
- bx r1
- thumb_func_end sub_805796C
-
- thumb_func_start sub_8057980
-sub_8057980: @ 8057980
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE4
- beq _0805798E
- movs r0, 0
- b _08057990
-_0805798E:
- movs r0, 0x1
-_08057990:
- pop {r1}
- bx r1
- thumb_func_end sub_8057980
-
- thumb_func_start sub_8057994
-sub_8057994: @ 8057994
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE5
- beq _080579A2
- movs r0, 0
- b _080579A4
-_080579A2:
- movs r0, 0x1
-_080579A4:
- pop {r1}
- bx r1
- thumb_func_end sub_8057994
-
- thumb_func_start sub_80579A8
-sub_80579A8: @ 80579A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE6
- beq _080579B6
- movs r0, 0
- b _080579B8
-_080579B6:
- movs r0, 0x1
-_080579B8:
- pop {r1}
- bx r1
- thumb_func_end sub_80579A8
-
- thumb_func_start move_tilemap_camera_to_upper_left_corner_
-move_tilemap_camera_to_upper_left_corner_: @ 80579BC
- movs r1, 0
- strb r1, [r0, 0x2]
- strb r1, [r0, 0x3]
- strb r1, [r0]
- strb r1, [r0, 0x1]
- movs r1, 0x1
- strb r1, [r0, 0x4]
- bx lr
- thumb_func_end move_tilemap_camera_to_upper_left_corner_
-
- thumb_func_start tilemap_move_something
-tilemap_move_something: @ 80579CC
- ldrb r3, [r0, 0x2]
- adds r3, r1
- strb r3, [r0, 0x2]
- ldrb r1, [r0, 0x2]
- movs r3, 0x1F
- ands r1, r3
- strb r1, [r0, 0x2]
- ldrb r1, [r0, 0x3]
- adds r1, r2
- strb r1, [r0, 0x3]
- ldrb r1, [r0, 0x3]
- ands r1, r3
- strb r1, [r0, 0x3]
- bx lr
- thumb_func_end tilemap_move_something
-
- thumb_func_start coords8_add
-coords8_add: @ 80579E8
- ldrb r3, [r0]
- adds r3, r1
- strb r3, [r0]
- ldrb r1, [r0, 0x1]
- adds r1, r2
- strb r1, [r0, 0x1]
- bx lr
- thumb_func_end coords8_add
-
- thumb_func_start move_tilemap_camera_to_upper_left_corner
-move_tilemap_camera_to_upper_left_corner: @ 80579F8
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r0, _08057A44 @ =gUnknown_03000590
- bl move_tilemap_camera_to_upper_left_corner_
- mov r0, sp
- movs r6, 0
- strh r6, [r0]
- ldr r4, _08057A48 @ =gBG2TilemapBuffer
- ldr r5, _08057A4C @ =0x01000400
- adds r1, r4, 0
- adds r2, r5, 0
- bl CpuSet
- mov r0, sp
- adds r0, 0x2
- strh r6, [r0]
- ldr r2, _08057A50 @ =0xfffff800
- adds r1, r4, r2
- adds r2, r5, 0
- bl CpuSet
- add r0, sp, 0x4
- ldr r2, _08057A54 @ =0x00003014
- adds r1, r2, 0
- strh r1, [r0]
- movs r1, 0x80
- lsls r1, 4
- adds r4, r1
- adds r1, r4, 0
- adds r2, r5, 0
- bl CpuSet
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08057A44: .4byte gUnknown_03000590
-_08057A48: .4byte gBG2TilemapBuffer
-_08057A4C: .4byte 0x01000400
-_08057A50: .4byte 0xfffff800
-_08057A54: .4byte 0x00003014
- thumb_func_end move_tilemap_camera_to_upper_left_corner
-
- thumb_func_start sub_8057A58
-sub_8057A58: @ 8057A58
- push {r4-r7,lr}
- ldr r5, _08057AE8 @ =gBGHOffsetRegs
- ldr r1, [r5, 0x4]
- ldr r6, _08057AEC @ =gUnknown_03000590
- ldr r4, _08057AF0 @ =gUnknown_03000598
- ldrh r0, [r4]
- ldrb r2, [r6]
- adds r0, r2
- strh r0, [r1]
- ldr r3, _08057AF4 @ =gBGVOffsetRegs
- ldr r1, [r3, 0x4]
- ldr r2, _08057AF8 @ =gUnknown_0300059A
- ldrh r0, [r2]
- ldrb r7, [r6, 0x1]
- adds r0, r7
- adds r0, 0x8
- strh r0, [r1]
- ldr r1, [r5, 0x8]
- ldrh r0, [r4]
- ldrb r7, [r6]
- adds r0, r7
- strh r0, [r1]
- ldr r1, [r3, 0x8]
- ldrh r0, [r2]
- ldrb r7, [r6, 0x1]
- adds r0, r7
- adds r0, 0x8
- strh r0, [r1]
- ldr r1, [r5, 0xC]
- ldrh r0, [r4]
- ldrb r4, [r6]
- adds r0, r4
- strh r0, [r1]
- ldr r1, [r3, 0xC]
- ldrh r0, [r2]
- ldrb r7, [r6, 0x1]
- adds r0, r7
- adds r0, 0x8
- strh r0, [r1]
- ldrb r0, [r6, 0x4]
- cmp r0, 0
- beq _08057AE0
- ldr r0, _08057AFC @ =0x040000d4
- ldr r2, _08057B00 @ =gBG1TilemapBuffer
- str r2, [r0]
- ldr r1, _08057B04 @ =0x0600e800
- str r1, [r0, 0x4]
- ldr r3, _08057B08 @ =0x80000400
- str r3, [r0, 0x8]
- ldr r1, [r0, 0x8]
- movs r4, 0x80
- lsls r4, 4
- adds r1, r2, r4
- str r1, [r0]
- ldr r1, _08057B0C @ =0x0600e000
- str r1, [r0, 0x4]
- str r3, [r0, 0x8]
- ldr r1, [r0, 0x8]
- movs r7, 0x80
- lsls r7, 5
- adds r2, r7
- str r2, [r0]
- ldr r1, _08057B10 @ =0x0600f000
- str r1, [r0, 0x4]
- str r3, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r0, 0
- strb r0, [r6, 0x4]
-_08057AE0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057AE8: .4byte gBGHOffsetRegs
-_08057AEC: .4byte gUnknown_03000590
-_08057AF0: .4byte gUnknown_03000598
-_08057AF4: .4byte gBGVOffsetRegs
-_08057AF8: .4byte gUnknown_0300059A
-_08057AFC: .4byte 0x040000d4
-_08057B00: .4byte gBG1TilemapBuffer
-_08057B04: .4byte 0x0600e800
-_08057B08: .4byte 0x80000400
-_08057B0C: .4byte 0x0600e000
-_08057B10: .4byte 0x0600f000
- thumb_func_end sub_8057A58
-
- thumb_func_start sub_8057B14
-sub_8057B14: @ 8057B14
- push {r4,lr}
- ldr r3, _08057B34 @ =gUnknown_03000590
- ldr r2, _08057B38 @ =gUnknown_03000598
- ldrh r2, [r2]
- ldrb r4, [r3]
- adds r2, r4
- strh r2, [r0]
- ldr r0, _08057B3C @ =gUnknown_0300059A
- ldrh r0, [r0]
- ldrb r3, [r3, 0x1]
- adds r0, r3
- adds r0, 0x8
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08057B34: .4byte gUnknown_03000590
-_08057B38: .4byte gUnknown_03000598
-_08057B3C: .4byte gUnknown_0300059A
- thumb_func_end sub_8057B14
-
- thumb_func_start DrawWholeMapView
-DrawWholeMapView: @ 8057B40
- push {lr}
- ldr r1, _08057B60 @ =gSaveBlock1
- movs r2, 0
- ldrsh r0, [r1, r2]
- movs r2, 0x2
- ldrsh r1, [r1, r2]
- ldr r2, _08057B64 @ =gMapHeader
- ldr r2, [r2]
- bl DrawWholeMapViewInternal
- ldr r1, _08057B68 @ =gUnknown_03000590
- movs r0, 0x1
- strb r0, [r1, 0x4]
- pop {r0}
- bx r0
- .align 2, 0
-_08057B60: .4byte gSaveBlock1
-_08057B64: .4byte gMapHeader
-_08057B68: .4byte gUnknown_03000590
- thumb_func_end DrawWholeMapView
-
- thumb_func_start DrawWholeMapViewInternal
-DrawWholeMapViewInternal: @ 8057B6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- mov r9, r1
- mov r8, r2
- movs r1, 0
-_08057B80:
- ldr r2, _08057BEC @ =gUnknown_03000590
- ldrb r0, [r2, 0x3]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1F
- bls _08057B94
- subs r0, 0x20
- lsls r0, 24
- lsrs r0, 24
-_08057B94:
- lsls r6, r0, 5
- movs r4, 0
- adds r7, r1, 0x2
- str r7, [sp]
- lsrs r5, r1, 1
-_08057B9E:
- ldr r1, _08057BEC @ =gUnknown_03000590
- ldrb r0, [r1, 0x2]
- adds r0, r4, r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1F
- bls _08057BB2
- subs r0, 0x20
- lsls r0, 24
- lsrs r0, 24
-_08057BB2:
- adds r1, r6, r0
- lsls r1, 16
- lsrs r1, 16
- lsrs r2, r4, 1
- add r2, r10
- mov r0, r8
- mov r7, r9
- adds r3, r7, r5
- bl DrawMetatileAt
- adds r0, r4, 0x2
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1F
- bls _08057B9E
- ldr r1, [sp]
- lsls r0, r1, 24
- lsrs r1, r0, 24
- cmp r1, 0x1F
- bls _08057B80
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057BEC: .4byte gUnknown_03000590
- thumb_func_end DrawWholeMapViewInternal
-
- thumb_func_start RedrawMapSlicesForCameraUpdate
-RedrawMapSlicesForCameraUpdate: @ 8057BF0
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- adds r7, r2, 0
- ldr r0, _08057C38 @ =gMapHeader
- ldr r4, [r0]
- cmp r6, 0
- ble _08057C08
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8057D48
-_08057C08:
- cmp r6, 0
- bge _08057C14
- adds r0, r5, 0
- adds r1, r4, 0
- bl RedrawMapSliceEast
-_08057C14:
- cmp r7, 0
- ble _08057C20
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8057C3C
-_08057C20:
- cmp r7, 0
- bge _08057C2C
- adds r0, r5, 0
- adds r1, r4, 0
- bl RedrawMapSliceSouth
-_08057C2C:
- movs r0, 0x1
- strb r0, [r5, 0x4]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057C38: .4byte gMapHeader
- thumb_func_end RedrawMapSlicesForCameraUpdate
-
- thumb_func_start sub_8057C3C
-sub_8057C3C: @ 8057C3C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- mov r8, r1
- ldrb r0, [r5, 0x3]
- adds r0, 0x1C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1F
- bls _08057C58
- subs r0, 0x20
- lsls r0, 24
- lsrs r0, 24
-_08057C58:
- lsls r7, r0, 5
- movs r4, 0
- ldr r6, _08057CA0 @ =gSaveBlock1
-_08057C5E:
- ldrb r0, [r5, 0x2]
- adds r0, r4, r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1F
- bls _08057C70
- subs r0, 0x20
- lsls r0, 24
- lsrs r0, 24
-_08057C70:
- adds r1, r7, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- ldrsh r2, [r6, r0]
- lsrs r0, r4, 1
- adds r2, r0
- movs r0, 0x2
- ldrsh r3, [r6, r0]
- adds r3, 0xE
- mov r0, r8
- bl DrawMetatileAt
- adds r0, r4, 0x2
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1F
- bls _08057C5E
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057CA0: .4byte gSaveBlock1
- thumb_func_end sub_8057C3C
-
- thumb_func_start RedrawMapSliceSouth
-RedrawMapSliceSouth: @ 8057CA4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- mov r8, r1
- ldrb r0, [r5, 0x3]
- lsls r7, r0, 5
- movs r4, 0
- ldr r6, _08057CF0 @ =gSaveBlock1
-_08057CB6:
- ldrb r0, [r5, 0x2]
- adds r0, r4, r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1F
- bls _08057CC8
- subs r0, 0x20
- lsls r0, 24
- lsrs r0, 24
-_08057CC8:
- adds r1, r7, r0
- movs r0, 0
- ldrsh r2, [r6, r0]
- lsrs r0, r4, 1
- adds r2, r0
- movs r0, 0x2
- ldrsh r3, [r6, r0]
- mov r0, r8
- bl DrawMetatileAt
- adds r0, r4, 0x2
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1F
- bls _08057CB6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057CF0: .4byte gSaveBlock1
- thumb_func_end RedrawMapSliceSouth
-
- thumb_func_start RedrawMapSliceEast
-RedrawMapSliceEast: @ 8057CF4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- mov r8, r1
- ldrb r6, [r5, 0x2]
- movs r4, 0
-_08057D02:
- ldrb r0, [r5, 0x3]
- adds r0, r4, r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1F
- bls _08057D14
- subs r0, 0x20
- lsls r0, 24
- lsrs r0, 24
-_08057D14:
- lsls r1, r0, 5
- adds r1, r6
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08057D44 @ =gSaveBlock1
- movs r3, 0
- ldrsh r2, [r0, r3]
- movs r7, 0x2
- ldrsh r3, [r0, r7]
- lsrs r0, r4, 1
- adds r3, r0
- mov r0, r8
- bl DrawMetatileAt
- adds r0, r4, 0x2
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1F
- bls _08057D02
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057D44: .4byte gSaveBlock1
- thumb_func_end RedrawMapSliceEast
-
- thumb_func_start sub_8057D48
-sub_8057D48: @ 8057D48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- mov r8, r1
- ldrb r0, [r6, 0x2]
- adds r0, 0x1C
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1F
- bls _08057D66
- adds r0, r5, 0
- subs r0, 0x20
- lsls r0, 24
- lsrs r5, r0, 24
-_08057D66:
- movs r4, 0
- ldr r7, _08057DAC @ =gSaveBlock1
-_08057D6A:
- ldrb r0, [r6, 0x3]
- adds r0, r4, r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1F
- bls _08057D7C
- subs r0, 0x20
- lsls r0, 24
- lsrs r0, 24
-_08057D7C:
- lsls r1, r0, 5
- adds r1, r5
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- ldrsh r2, [r7, r0]
- adds r2, 0xE
- movs r0, 0x2
- ldrsh r3, [r7, r0]
- lsrs r0, r4, 1
- adds r3, r0
- mov r0, r8
- bl DrawMetatileAt
- adds r0, r4, 0x2
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1F
- bls _08057D6A
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057DAC: .4byte gSaveBlock1
- thumb_func_end sub_8057D48
-
- thumb_func_start CurrentMapDrawMetatileAt
-CurrentMapDrawMetatileAt: @ 8057DB0
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r6, _08057DE4 @ =gUnknown_03000590
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl MapPosToBgTilemapOffset
- adds r1, r0, 0
- cmp r1, 0
- blt _08057DDC
- ldr r0, _08057DE8 @ =gMapHeader
- ldr r0, [r0]
- lsls r1, 16
- lsrs r1, 16
- adds r2, r4, 0
- adds r3, r5, 0
- bl DrawMetatileAt
- movs r0, 0x1
- strb r0, [r6, 0x4]
-_08057DDC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08057DE4: .4byte gUnknown_03000590
-_08057DE8: .4byte gMapHeader
- thumb_func_end CurrentMapDrawMetatileAt
-
- thumb_func_start DrawDoorMetatileAt
-DrawDoorMetatileAt: @ 8057DEC
- push {r4-r6,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r6, _08057E1C @ =gUnknown_03000590
- adds r0, r6, 0
- adds r1, r3, 0
- adds r2, r4, 0
- bl MapPosToBgTilemapOffset
- cmp r0, 0
- blt _08057E14
- lsls r2, r0, 16
- lsrs r2, 16
- movs r0, 0x1
- adds r1, r5, 0
- bl DrawMetatile
- movs r0, 0x1
- strb r0, [r6, 0x4]
-_08057E14:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08057E1C: .4byte gUnknown_03000590
- thumb_func_end DrawDoorMetatileAt
-
- thumb_func_start DrawMetatileAt
-DrawMetatileAt: @ 8057E20
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- adds r6, r2, 0
- adds r7, r3, 0
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- adds r0, r6, 0
- adds r1, r7, 0
- bl MapGridGetMetatileIdAt
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x80
- lsls r0, 3
- cmp r4, r0
- bls _08057E48
- movs r4, 0
-_08057E48:
- ldr r0, _08057E54 @ =0x000001ff
- cmp r4, r0
- bhi _08057E58
- ldr r0, [r5, 0x10]
- ldr r5, [r0, 0xC]
- b _08057E64
- .align 2, 0
-_08057E54: .4byte 0x000001ff
-_08057E58:
- ldr r0, [r5, 0x14]
- ldr r5, [r0, 0xC]
- ldr r1, _08057E84 @ =0xfffffe00
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
-_08057E64:
- adds r0, r6, 0
- adds r1, r7, 0
- bl MapGridGetMetatileLayerTypeAt
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 4
- adds r1, r5, r1
- mov r2, r8
- bl DrawMetatile
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08057E84: .4byte 0xfffffe00
- thumb_func_end DrawMetatileAt
-
- thumb_func_start DrawMetatile
-DrawMetatile: @ 8057E88
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r1, 0
- lsls r2, 16
- lsrs r6, r2, 16
- cmp r0, 0x1
- beq _08057F28
- cmp r0, 0x1
- bgt _08057EA6
- cmp r0, 0
- bne _08057EA4
- b _08057FA0
-_08057EA4:
- b _08058010
-_08057EA6:
- cmp r0, 0x2
- beq _08057EAC
- b _08058010
-_08057EAC:
- ldr r0, _08057F24 @ =gBG0TilemapBuffer
- mov r12, r0
- lsls r1, r6, 1
- mov r9, r1
- movs r5, 0xC0
- lsls r5, 5
- add r5, r12
- adds r1, r5
- ldrh r0, [r7]
- movs r2, 0
- mov r8, r2
- strh r0, [r1]
- adds r4, r6, 0x1
- lsls r4, 1
- adds r1, r4, r5
- ldrh r0, [r7, 0x2]
- strh r0, [r1]
- adds r3, r6, 0
- adds r3, 0x20
- lsls r3, 1
- adds r1, r3, r5
- ldrh r0, [r7, 0x4]
- strh r0, [r1]
- adds r2, r6, 0
- adds r2, 0x21
- lsls r2, 1
- adds r5, r2, r5
- ldrh r0, [r7, 0x6]
- strh r0, [r5]
- movs r1, 0x80
- lsls r1, 5
- add r1, r12
- mov r5, r9
- adds r0, r5, r1
- mov r5, r8
- strh r5, [r0]
- adds r0, r4, r1
- strh r5, [r0]
- adds r0, r3, r1
- strh r5, [r0]
- adds r1, r2, r1
- strh r5, [r1]
- movs r5, 0x80
- lsls r5, 4
- add r5, r12
- add r9, r5
- ldrh r0, [r7, 0x8]
- mov r1, r9
- strh r0, [r1]
- adds r4, r5
- ldrh r0, [r7, 0xA]
- strh r0, [r4]
- adds r3, r5
- ldrh r0, [r7, 0xC]
- strh r0, [r3]
- adds r2, r5
- ldrh r0, [r7, 0xE]
- strh r0, [r2]
- b _08058010
- .align 2, 0
-_08057F24: .4byte gBG0TilemapBuffer
-_08057F28:
- ldr r2, _08057F98 @ =gBG0TilemapBuffer
- mov r12, r2
- lsls r3, r6, 1
- mov r8, r3
- movs r2, 0xC0
- lsls r2, 5
- add r2, r12
- adds r1, r3, r2
- ldrh r0, [r7]
- movs r5, 0
- mov r9, r5
- strh r0, [r1]
- adds r5, r6, 0x1
- lsls r5, 1
- adds r1, r5, r2
- ldrh r0, [r7, 0x2]
- strh r0, [r1]
- adds r4, r6, 0
- adds r4, 0x20
- lsls r4, 1
- adds r1, r4, r2
- ldrh r0, [r7, 0x4]
- strh r0, [r1]
- adds r3, r6, 0
- adds r3, 0x21
- lsls r3, 1
- adds r2, r3, r2
- ldrh r0, [r7, 0x6]
- strh r0, [r2]
- movs r1, 0x80
- lsls r1, 5
- add r1, r12
- mov r0, r8
- adds r2, r0, r1
- ldrh r0, [r7, 0x8]
- strh r0, [r2]
- adds r2, r5, r1
- ldrh r0, [r7, 0xA]
- strh r0, [r2]
- adds r2, r4, r1
- ldrh r0, [r7, 0xC]
- strh r0, [r2]
- adds r1, r3, r1
- ldrh r0, [r7, 0xE]
- strh r0, [r1]
- ldr r1, _08057F9C @ =gBG1TilemapBuffer
- add r8, r1
- mov r0, r9
- mov r2, r8
- strh r0, [r2]
- adds r5, r1
- strh r0, [r5]
- adds r4, r1
- strh r0, [r4]
- adds r3, r1
- b _0805800E
- .align 2, 0
-_08057F98: .4byte gBG0TilemapBuffer
-_08057F9C: .4byte gBG1TilemapBuffer
-_08057FA0:
- ldr r1, _0805801C @ =gBG0TilemapBuffer
- mov r9, r1
- lsls r2, r6, 1
- mov r8, r2
- movs r1, 0xC0
- lsls r1, 5
- add r1, r9
- adds r0, r2, r1
- ldr r2, _08058020 @ =0x00003014
- strh r2, [r0]
- adds r5, r6, 0x1
- lsls r5, 1
- adds r0, r5, r1
- strh r2, [r0]
- adds r4, r6, 0
- adds r4, 0x20
- lsls r4, 1
- adds r0, r4, r1
- strh r2, [r0]
- adds r3, r6, 0
- adds r3, 0x21
- lsls r3, 1
- adds r1, r3, r1
- strh r2, [r1]
- movs r1, 0x80
- lsls r1, 5
- add r1, r9
- mov r0, r8
- adds r2, r0, r1
- ldrh r0, [r7]
- strh r0, [r2]
- adds r2, r5, r1
- ldrh r0, [r7, 0x2]
- strh r0, [r2]
- adds r2, r4, r1
- ldrh r0, [r7, 0x4]
- strh r0, [r2]
- adds r1, r3, r1
- ldrh r0, [r7, 0x6]
- strh r0, [r1]
- movs r2, 0x80
- lsls r2, 4
- add r2, r9
- add r8, r2
- ldrh r0, [r7, 0x8]
- mov r1, r8
- strh r0, [r1]
- adds r5, r2
- ldrh r0, [r7, 0xA]
- strh r0, [r5]
- adds r4, r2
- ldrh r0, [r7, 0xC]
- strh r0, [r4]
- adds r3, r2
- ldrh r0, [r7, 0xE]
-_0805800E:
- strh r0, [r3]
-_08058010:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805801C: .4byte gBG0TilemapBuffer
-_08058020: .4byte 0x00003014
- thumb_func_end DrawMetatile
-
- thumb_func_start MapPosToBgTilemapOffset
-MapPosToBgTilemapOffset: @ 8058024
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r4, _08058054 @ =gSaveBlock1
- movs r5, 0
- ldrsh r0, [r4, r5]
- subs r1, r0
- lsls r1, 1
- cmp r1, 0x1F
- bhi _0805804C
- ldrb r0, [r3, 0x2]
- adds r1, r0
- cmp r1, 0x1F
- ble _08058040
- subs r1, 0x20
-_08058040:
- movs r5, 0x2
- ldrsh r0, [r4, r5]
- subs r0, r2, r0
- lsls r2, r0, 1
- cmp r2, 0x1F
- bls _08058058
-_0805804C:
- movs r0, 0x1
- negs r0, r0
- b _08058066
- .align 2, 0
-_08058054: .4byte gSaveBlock1
-_08058058:
- ldrb r0, [r3, 0x3]
- adds r2, r0
- cmp r2, 0x1F
- ble _08058062
- subs r2, 0x20
-_08058062:
- lsls r0, r2, 5
- adds r0, r1
-_08058066:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MapPosToBgTilemapOffset
-
- thumb_func_start CameraUpdateCallback
-CameraUpdateCallback: @ 805806C
- push {lr}
- adds r3, r0, 0
- ldr r2, [r3, 0x4]
- cmp r2, 0
- beq _0805808C
- ldr r1, _08058090 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r2, 0x32
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x8]
- movs r1, 0x34
- ldrsh r0, [r0, r1]
- str r0, [r3, 0xC]
-_0805808C:
- pop {r0}
- bx r0
- .align 2, 0
-_08058090: .4byte gSprites
- thumb_func_end CameraUpdateCallback
-
- thumb_func_start ResetCameraUpdateInfo
-ResetCameraUpdateInfo: @ 8058094
- ldr r1, _080580A8 @ =gUnknown_03004880
- movs r0, 0
- str r0, [r1, 0x8]
- str r0, [r1, 0xC]
- str r0, [r1, 0x10]
- str r0, [r1, 0x14]
- str r0, [r1, 0x4]
- str r0, [r1]
- bx lr
- .align 2, 0
-_080580A8: .4byte gUnknown_03004880
- thumb_func_end ResetCameraUpdateInfo
-
- thumb_func_start InitCameraUpdateCallback
-InitCameraUpdateCallback: @ 80580AC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080580E0 @ =gUnknown_03004880
- ldr r1, [r4, 0x4]
- cmp r1, 0
- beq _080580C8
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080580E4 @ =gSprites
- adds r0, r1
- bl DestroySprite
-_080580C8:
- adds r0, r5, 0
- bl AddCameraObject
- lsls r0, 24
- lsrs r0, 24
- str r0, [r4, 0x4]
- ldr r0, _080580E8 @ =CameraUpdateCallback
- str r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080580E0: .4byte gUnknown_03004880
-_080580E4: .4byte gSprites
-_080580E8: .4byte CameraUpdateCallback
- thumb_func_end InitCameraUpdateCallback
-
- thumb_func_start CameraUpdate
-CameraUpdate: @ 80580EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r6, _080581EC @ =gUnknown_03004880
- ldr r1, [r6]
- cmp r1, 0
- beq _08058100
- adds r0, r6, 0
- bl _call_via_r1
-_08058100:
- ldr r7, [r6, 0x8]
- ldr r0, [r6, 0xC]
- mov r8, r0
- movs r4, 0
- movs r5, 0
- ldr r1, [r6, 0x10]
- ldr r0, [r6, 0x14]
- cmp r1, 0
- bne _0805811E
- cmp r7, 0
- beq _0805811E
- subs r4, 0x1
- cmp r7, 0
- ble _0805811E
- movs r4, 0x1
-_0805811E:
- cmp r0, 0
- bne _08058132
- mov r2, r8
- cmp r2, 0
- beq _08058132
- movs r5, 0x1
- negs r5, r5
- cmp r2, 0
- ble _08058132
- movs r5, 0x1
-_08058132:
- cmp r1, 0
- beq _08058144
- cmn r1, r7
- bne _08058144
- movs r4, 0x1
- negs r4, r4
- cmp r7, 0
- ble _08058144
- movs r4, 0x1
-_08058144:
- cmp r0, 0
- beq _08058158
- mov r3, r8
- cmn r0, r3
- bne _08058158
- movs r4, 0x1
- negs r4, r4
- cmp r3, 0
- ble _08058158
- movs r4, 0x1
-_08058158:
- ldr r2, _080581EC @ =gUnknown_03004880
- ldr r0, [r2, 0x10]
- adds r1, r0, r7
- str r1, [r2, 0x10]
- adds r0, r1, 0
- cmp r1, 0
- bge _08058168
- adds r0, 0xF
-_08058168:
- asrs r0, 4
- lsls r0, 4
- subs r0, r1, r0
- str r0, [r2, 0x10]
- ldr r0, [r2, 0x14]
- mov r3, r8
- adds r1, r0, r3
- str r1, [r2, 0x14]
- adds r0, r1, 0
- cmp r1, 0
- bge _08058180
- adds r0, 0xF
-_08058180:
- asrs r0, 4
- lsls r0, 4
- subs r0, r1, r0
- str r0, [r2, 0x14]
- cmp r4, 0
- bne _08058190
- cmp r5, 0
- beq _080581C6
-_08058190:
- adds r0, r4, 0
- adds r1, r5, 0
- bl CameraMove
- adds r0, r4, 0
- adds r1, r5, 0
- bl UpdateFieldObjectsForCameraUpdate
- adds r0, r4, 0
- adds r1, r5, 0
- bl RotatingGatePuzzleCameraUpdate
- bl ResetBerryTreeSparkleFlags
- ldr r6, _080581F0 @ =gUnknown_03000590
- lsls r4, 1
- lsls r5, 1
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl tilemap_move_something
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl RedrawMapSlicesForCameraUpdate
-_080581C6:
- ldr r0, _080581F0 @ =gUnknown_03000590
- adds r1, r7, 0
- mov r2, r8
- bl coords8_add
- ldr r1, _080581F4 @ =gUnknown_0300489C
- ldrh r0, [r1]
- subs r0, r7
- strh r0, [r1]
- ldr r1, _080581F8 @ =gUnknown_03004898
- ldrh r0, [r1]
- mov r2, r8
- subs r0, r2
- strh r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080581EC: .4byte gUnknown_03004880
-_080581F0: .4byte gUnknown_03000590
-_080581F4: .4byte gUnknown_0300489C
-_080581F8: .4byte gUnknown_03004898
- thumb_func_end CameraUpdate
-
- thumb_func_start camera_move_and_redraw
-camera_move_and_redraw: @ 80581FC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl CameraMove
- lsls r0, r4, 16
- asrs r0, 16
- lsls r1, r5, 16
- asrs r1, 16
- bl UpdateFieldObjectsForCameraUpdate
- bl DrawWholeMapView
- ldr r1, _08058230 @ =gUnknown_0300489C
- lsls r4, 4
- ldrh r0, [r1]
- subs r0, r4
- strh r0, [r1]
- ldr r1, _08058234 @ =gUnknown_03004898
- lsls r5, 4
- ldrh r0, [r1]
- subs r0, r5
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08058230: .4byte gUnknown_0300489C
-_08058234: .4byte gUnknown_03004898
- thumb_func_end camera_move_and_redraw
-
- thumb_func_start SetCameraPanningCallback
-SetCameraPanningCallback: @ 8058238
- ldr r1, _08058240 @ =gUnknown_030005A0
- str r0, [r1]
- bx lr
- .align 2, 0
-_08058240: .4byte gUnknown_030005A0
- thumb_func_end SetCameraPanningCallback
-
- thumb_func_start SetCameraPanning
-SetCameraPanning: @ 8058244
- ldr r2, _08058254 @ =gUnknown_03000598
- strh r0, [r2]
- ldr r0, _08058258 @ =gUnknown_0300059A
- lsls r1, 16
- asrs r1, 16
- adds r1, 0x20
- strh r1, [r0]
- bx lr
- .align 2, 0
-_08058254: .4byte gUnknown_03000598
-_08058258: .4byte gUnknown_0300059A
- thumb_func_end SetCameraPanning
-
- thumb_func_start InstallCameraPanAheadCallback
-InstallCameraPanAheadCallback: @ 805825C
- ldr r1, _08058278 @ =gUnknown_030005A0
- ldr r0, _0805827C @ =CameraPanningCB_PanAhead
- str r0, [r1]
- ldr r1, _08058280 @ =gUnknown_0300059C
- movs r0, 0
- strb r0, [r1]
- ldr r1, _08058284 @ =gUnknown_03000598
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08058288 @ =gUnknown_0300059A
- movs r0, 0x20
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08058278: .4byte gUnknown_030005A0
-_0805827C: .4byte CameraPanningCB_PanAhead
-_08058280: .4byte gUnknown_0300059C
-_08058284: .4byte gUnknown_03000598
-_08058288: .4byte gUnknown_0300059A
- thumb_func_end InstallCameraPanAheadCallback
-
- thumb_func_start UpdateCameraPanning
-UpdateCameraPanning: @ 805828C
- push {lr}
- ldr r0, _080582BC @ =gUnknown_030005A0
- ldr r0, [r0]
- cmp r0, 0
- beq _0805829A
- bl _call_via_r0
-_0805829A:
- ldr r2, _080582C0 @ =gSpriteCoordOffsetX
- ldr r0, _080582C4 @ =gUnknown_0300489C
- ldr r1, _080582C8 @ =gUnknown_03000598
- ldrh r0, [r0]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2]
- ldr r2, _080582CC @ =gSpriteCoordOffsetY
- ldr r0, _080582D0 @ =gUnknown_03004898
- ldr r1, _080582D4 @ =gUnknown_0300059A
- ldrh r0, [r0]
- ldrh r1, [r1]
- subs r0, r1
- subs r0, 0x8
- strh r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_080582BC: .4byte gUnknown_030005A0
-_080582C0: .4byte gSpriteCoordOffsetX
-_080582C4: .4byte gUnknown_0300489C
-_080582C8: .4byte gUnknown_03000598
-_080582CC: .4byte gSpriteCoordOffsetY
-_080582D0: .4byte gUnknown_03004898
-_080582D4: .4byte gUnknown_0300059A
- thumb_func_end UpdateCameraPanning
-
- thumb_func_start CameraPanningCB_PanAhead
-CameraPanningCB_PanAhead: @ 80582D8
- push {lr}
- ldr r0, _080582E8 @ =gUnknown_0202E854
- ldrb r0, [r0]
- cmp r0, 0
- bne _080582EC
- bl InstallCameraPanAheadCallback
- b _08058374
- .align 2, 0
-_080582E8: .4byte gUnknown_0202E854
-_080582EC:
- ldr r0, _08058304 @ =gPlayerAvatar
- ldrb r0, [r0, 0x3]
- cmp r0, 0x1
- bne _0805830C
- ldr r0, _08058308 @ =gUnknown_0300059C
- ldrb r1, [r0]
- movs r2, 0x1
- eors r1, r2
- strb r1, [r0]
- cmp r1, 0
- beq _08058374
- b _08058312
- .align 2, 0
-_08058304: .4byte gPlayerAvatar
-_08058308: .4byte gUnknown_0300059C
-_0805830C:
- ldr r1, _08058334 @ =gUnknown_0300059C
- movs r0, 0
- strb r0, [r1]
-_08058312:
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805833C
- ldr r2, _08058338 @ =gUnknown_0300059A
- ldrh r3, [r2]
- movs r0, 0
- ldrsh r1, [r2, r0]
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- ble _08058374
- subs r0, r3, 0x2
- b _08058372
- .align 2, 0
-_08058334: .4byte gUnknown_0300059C
-_08058338: .4byte gUnknown_0300059A
-_0805833C:
- cmp r0, 0x1
- bne _08058358
- ldr r1, _08058354 @ =gUnknown_0300059A
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0x47
- bgt _08058374
- adds r0, r2, 0x2
- strh r0, [r1]
- b _08058374
- .align 2, 0
-_08058354: .4byte gUnknown_0300059A
-_08058358:
- ldr r2, _08058368 @ =gUnknown_0300059A
- ldrh r0, [r2]
- movs r3, 0
- ldrsh r1, [r2, r3]
- cmp r1, 0x1F
- bgt _0805836C
- adds r0, 0x2
- b _08058372
- .align 2, 0
-_08058368: .4byte gUnknown_0300059A
-_0805836C:
- cmp r1, 0x20
- ble _08058374
- subs r0, 0x2
-_08058372:
- strh r0, [r2]
-_08058374:
- pop {r0}
- bx r0
- thumb_func_end CameraPanningCB_PanAhead
-
- thumb_func_start sub_8058378
-sub_8058378: @ 8058378
- push {lr}
- ldr r1, _08058388 @ =0x06007f00
- movs r2, 0x40
- bl CpuFastSet
- pop {r0}
- bx r0
- .align 2, 0
-_08058388: .4byte 0x06007f00
- thumb_func_end sub_8058378
-
- thumb_func_start door_build_blockdef
-door_build_blockdef: @ 805838C
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- movs r4, 0
- adds r1, r6, 0
-_08058398:
- ldrb r0, [r2]
- lsls r0, 28
- lsrs r3, r0, 16
- adds r2, 0x1
- adds r0, r5, r4
- orrs r3, r0
- strh r3, [r1]
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _08058398
- cmp r4, 0x7
- bgt _080583C6
- lsls r0, r4, 1
- adds r1, r0, r6
-_080583B6:
- ldrb r0, [r2]
- lsls r3, r0, 12
- adds r2, 0x1
- strh r3, [r1]
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x7
- ble _080583B6
-_080583C6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end door_build_blockdef
-
- thumb_func_start sub_80583CC
-sub_80583CC: @ 80583CC
- push {r4-r6,lr}
- sub sp, 0x10
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- movs r1, 0xFE
- lsls r1, 2
- mov r0, sp
- bl door_build_blockdef
- subs r1, r6, 0x1
- adds r0, r5, 0
- mov r2, sp
- bl DrawDoorMetatileAt
- movs r1, 0xFF
- lsls r1, 2
- adds r4, 0x4
- mov r0, sp
- adds r2, r4, 0
- bl door_build_blockdef
- adds r0, r5, 0
- adds r1, r6, 0
- mov r2, sp
- bl DrawDoorMetatileAt
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80583CC
-
- thumb_func_start sub_805840C
-sub_805840C: @ 805840C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- subs r1, r5, 0x1
- bl CurrentMapDrawMetatileAt
- adds r0, r4, 0
- adds r1, r5, 0
- bl CurrentMapDrawMetatileAt
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_805840C
-
- thumb_func_start sub_8058428
-sub_8058428: @ 8058428
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- adds r7, r3, 0
- ldrh r1, [r4, 0x2]
- ldr r0, _08058444 @ =0x0000ffff
- cmp r1, r0
- bne _08058448
- adds r0, r6, 0
- adds r1, r7, 0
- bl sub_805840C
- b _0805845C
- .align 2, 0
-_08058444: .4byte 0x0000ffff
-_08058448:
- ldrh r1, [r4, 0x2]
- ldr r0, [r5, 0x4]
- adds r0, r1
- bl sub_8058378
- ldr r2, [r5, 0x8]
- adds r0, r6, 0
- adds r1, r7, 0
- bl sub_80583CC
-_0805845C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8058428
-
- thumb_func_start sub_8058464
-sub_8058464: @ 8058464
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0805848A
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- lsls r1, 2
- adds r1, r5, r1
- movs r0, 0xC
- ldrsh r2, [r4, r0]
- movs r0, 0xE
- ldrsh r3, [r4, r0]
- adds r0, r6, 0
- bl sub_8058428
-_0805848A:
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0]
- cmp r1, r0
- bne _080584B8
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080584BE
- movs r0, 0
- b _080584C0
-_080584B8:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
-_080584BE:
- movs r0, 0x1
-_080584C0:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8058464
-
- thumb_func_start task50_overworld_door
-task50_overworld_door: @ 80584C8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 3
- ldr r0, _080584FC @ =gTasks + 0x8
- adds r2, r0
- ldrh r1, [r2]
- lsls r1, 16
- ldrh r0, [r2, 0x2]
- orrs r1, r0
- ldrh r0, [r2, 0x4]
- lsls r0, 16
- ldrh r3, [r2, 0x6]
- orrs r0, r3
- bl sub_8058464
- cmp r0, 0
- bne _080584F6
- adds r0, r4, 0
- bl DestroyTask
-_080584F6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080584FC: .4byte gTasks + 0x8
- thumb_func_end task50_overworld_door
-
- thumb_func_start door_frame_last
-door_frame_last: @ 8058500
- push {lr}
- adds r1, r0, 0
- b _08058508
-_08058506:
- adds r1, 0x4
-_08058508:
- ldrb r0, [r1]
- cmp r0, 0
- bne _08058506
- subs r0, r1, 0x4
- pop {r1}
- bx r1
- thumb_func_end door_frame_last
-
- thumb_func_start door_find
-door_find: @ 8058514
- push {lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- b _0805852A
-_0805851E:
- ldrh r0, [r2]
- cmp r0, r1
- bne _08058528
- adds r0, r2, 0
- b _08058532
-_08058528:
- adds r2, 0xC
-_0805852A:
- ldr r0, [r2, 0x4]
- cmp r0, 0
- bne _0805851E
- movs r0, 0
-_08058532:
- pop {r1}
- bx r1
- thumb_func_end door_find
-
- thumb_func_start task_overworld_door_add_if_inactive
-task_overworld_door_add_if_inactive: @ 8058538
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- mov r8, r3
- ldr r4, _08058584 @ =task50_overworld_door
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0805858C
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _08058588 @ =gTasks + 0x8
- adds r1, r2
- strh r7, [r1, 0xC]
- mov r2, r8
- strh r2, [r1, 0xE]
- strh r5, [r1, 0x2]
- lsrs r2, r5, 16
- strh r2, [r1]
- strh r6, [r1, 0x6]
- lsrs r2, r6, 16
- strh r2, [r1, 0x4]
- lsls r0, 24
- asrs r0, 24
- b _08058590
- .align 2, 0
-_08058584: .4byte task50_overworld_door
-_08058588: .4byte gTasks + 0x8
-_0805858C:
- movs r0, 0x1
- negs r0, r0
-_08058590:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end task_overworld_door_add_if_inactive
-
- thumb_func_start sub_805859C
-sub_805859C: @ 805859C
- push {lr}
- adds r0, r1, 0
- adds r1, r2, 0
- bl sub_805840C
- pop {r0}
- bx r0
- thumb_func_end sub_805859C
-
- thumb_func_start sub_80585AC
-sub_80585AC: @ 80585AC
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl door_find
- adds r4, r0, 0
- cmp r4, 0
- beq _080585E2
- ldr r1, _080585E8 @ =gUnknown_0830F87C
- adds r0, r1, 0
- bl door_frame_last
- adds r1, r0, 0
- adds r0, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_8058428
-_080585E2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080585E8: .4byte gUnknown_0830F87C
- thumb_func_end sub_80585AC
-
- thumb_func_start sub_80585EC
-sub_80585EC: @ 80585EC
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl door_find
- cmp r0, 0
- beq _08058620
- ldr r1, _0805861C @ =gUnknown_0830F87C
- adds r2, r5, 0
- adds r3, r6, 0
- bl task_overworld_door_add_if_inactive
- lsls r0, 24
- asrs r0, 24
- b _08058624
- .align 2, 0
-_0805861C: .4byte gUnknown_0830F87C
-_08058620:
- movs r0, 0x1
- negs r0, r0
-_08058624:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80585EC
-
- thumb_func_start sub_805862C
-sub_805862C: @ 805862C
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl door_find
- cmp r0, 0
- beq _08058660
- ldr r1, _0805865C @ =gUnknown_0830F890
- adds r2, r5, 0
- adds r3, r6, 0
- bl task_overworld_door_add_if_inactive
- lsls r0, 24
- asrs r0, 24
- b _08058664
- .align 2, 0
-_0805865C: .4byte gUnknown_0830F890
-_08058660:
- movs r0, 0x1
- negs r0, r0
-_08058664:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805862C
-
- thumb_func_start cur_mapdata_get_door_x2_at
-cur_mapdata_get_door_x2_at: @ 805866C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- bl MapGridGetMetatileIdAt
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl door_find
- cmp r0, 0
- beq _08058690
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _08058694
-_08058690:
- movs r0, 0x1
- negs r0, r0
-_08058694:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end cur_mapdata_get_door_x2_at
-
- thumb_func_start unref_sub_805869C
-unref_sub_805869C: @ 805869C
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- ldr r0, _080586B0 @ =gDoorAnimGraphicsTable
- adds r1, r3, 0
- bl sub_80585EC
- pop {r0}
- bx r0
- .align 2, 0
-_080586B0: .4byte gDoorAnimGraphicsTable
- thumb_func_end unref_sub_805869C
-
- thumb_func_start sub_80586B4
-sub_80586B4: @ 80586B4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl sub_8056EAC
- lsls r0, 24
- cmp r0, 0
- beq _080586D6
- ldr r0, _080586DC @ =gDoorAnimGraphicsTable
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80585AC
-_080586D6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080586DC: .4byte gDoorAnimGraphicsTable
- thumb_func_end sub_80586B4
-
- thumb_func_start sub_80586E0
-sub_80586E0: @ 80586E0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl sub_8056EAC
- lsls r0, 24
- cmp r0, 0
- beq _08058702
- ldr r0, _08058708 @ =gDoorAnimGraphicsTable
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_805859C
-_08058702:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08058708: .4byte gDoorAnimGraphicsTable
- thumb_func_end sub_80586E0
-
- thumb_func_start sub_805870C
-sub_805870C: @ 805870C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl sub_8056EAC
- lsls r0, 24
- cmp r0, 0
- beq _08058738
- ldr r0, _08058734 @ =gDoorAnimGraphicsTable
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_805862C
- lsls r0, 24
- asrs r0, 24
- b _0805873C
- .align 2, 0
-_08058734: .4byte gDoorAnimGraphicsTable
-_08058738:
- movs r0, 0x1
- negs r0, r0
-_0805873C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805870C
-
- thumb_func_start task_overworld_door_add_if_role_69_for_opening_door_at
-task_overworld_door_add_if_role_69_for_opening_door_at: @ 8058744
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl sub_8056EAC
- lsls r0, 24
- cmp r0, 0
- beq _08058770
- ldr r0, _0805876C @ =gDoorAnimGraphicsTable
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80585EC
- lsls r0, 24
- asrs r0, 24
- b _08058774
- .align 2, 0
-_0805876C: .4byte gDoorAnimGraphicsTable
-_08058770:
- movs r0, 0x1
- negs r0, r0
-_08058774:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end task_overworld_door_add_if_role_69_for_opening_door_at
-
- thumb_func_start sub_805877C
-sub_805877C: @ 805877C
- push {lr}
- ldr r0, _0805878C @ =task50_overworld_door
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805878C: .4byte task50_overworld_door
- thumb_func_end sub_805877C
-
- thumb_func_start sub_8058790
-sub_8058790: @ 8058790
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- ldr r0, _080587A8 @ =gDoorAnimGraphicsTable
- adds r1, r3, 0
- bl cur_mapdata_get_door_x2_at
- lsls r0, 24
- cmp r0, 0
- beq _080587AC
- movs r0, 0x12
- b _080587AE
- .align 2, 0
-_080587A8: .4byte gDoorAnimGraphicsTable
-_080587AC:
- movs r0, 0x8
-_080587AE:
- pop {r1}
- bx r1
- thumb_func_end sub_8058790
-
- thumb_func_start sub_80587B4
-sub_80587B4: @ 80587B4
- 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, _080587D0 @ =gMapObjects
- adds r0, r2
- ldr r2, _080587D4 @ =sub_80587D8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_080587D0: .4byte gMapObjects
-_080587D4: .4byte sub_80587D8
- thumb_func_end sub_80587B4
-
- thumb_func_start sub_80587D8
-sub_80587D8: @ 80587D8
- movs r0, 0
- bx lr
- thumb_func_end sub_80587D8
-
- thumb_func_start player_step
-player_step: @ 80587DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r4, _0805884C @ =gPlayerAvatar
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08058850 @ =gMapObjects
- adds r5, r0, r1
- adds r0, r5, 0
- bl sub_8059D60
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- bne _08058842
- adds r0, r7, 0
- adds r1, r6, 0
- bl sub_80E5B38
- adds r0, r5, 0
- mov r1, r8
- bl sub_8058854
- lsls r0, 24
- cmp r0, 0
- bne _08058842
- adds r0, r5, 0
- bl npc_clear_strange_bits
- bl DoPlayerAvatarTransition
- bl TryDoMetatileBehaviorForcedMovment
- lsls r0, 24
- cmp r0, 0
- bne _08058842
- mov r0, r8
- adds r1, r7, 0
- adds r2, r6, 0
- bl MovePlayerAvatarUsingKeypadInput
- bl PlayerAllowForcedMovementIfMovingSameDirection
-_08058842:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805884C: .4byte gPlayerAvatar
-_08058850: .4byte gMapObjects
- thumb_func_end player_step
-
- thumb_func_start sub_8058854
-sub_8058854: @ 8058854
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- cmp r0, 0
- beq _0805889E
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- bne _0805889E
- adds r0, r4, 0
- bl FieldObjectGetSpecialAnim
- lsls r0, 24
- movs r1, 0xE7
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x3
- bhi _0805889A
- cmp r5, 0
- beq _0805889A
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- cmp r0, r5
- beq _0805889A
- adds r0, r4, 0
- bl FieldObjectClearAnim
- b _0805889E
-_0805889A:
- movs r0, 0x1
- b _080588A0
-_0805889E:
- movs r0, 0
-_080588A0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8058854
-
- thumb_func_start npc_clear_strange_bits
-npc_clear_strange_bits: @ 80588A8
- ldrb r2, [r0, 0x1]
- movs r1, 0x11
- negs r1, r1
- ands r1, r2
- movs r2, 0x5
- negs r2, r2
- ands r1, r2
- adds r2, 0x2
- ands r1, r2
- strb r1, [r0, 0x1]
- ldr r2, _080588C8 @ =gPlayerAvatar
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- bx lr
- .align 2, 0
-_080588C8: .4byte gPlayerAvatar
- thumb_func_end npc_clear_strange_bits
-
- thumb_func_start MovePlayerAvatarUsingKeypadInput
-MovePlayerAvatarUsingKeypadInput: @ 80588CC
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, _080588F0 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _080588F4
- adds r0, r3, 0
- adds r1, r4, 0
- bl MovePlayerOnBike
- b _080588FC
- .align 2, 0
-_080588F0: .4byte gPlayerAvatar
-_080588F4:
- adds r0, r3, 0
- adds r1, r2, 0
- bl MovePlayerNotOnBike
-_080588FC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end MovePlayerAvatarUsingKeypadInput
-
- thumb_func_start PlayerAllowForcedMovementIfMovingSameDirection
-PlayerAllowForcedMovementIfMovingSameDirection: @ 8058904
- push {lr}
- ldr r2, _0805891C @ =gPlayerAvatar
- ldrb r0, [r2, 0x2]
- cmp r0, 0x2
- bne _08058916
- ldrb r1, [r2]
- movs r0, 0xDF
- ands r0, r1
- strb r0, [r2]
-_08058916:
- pop {r0}
- bx r0
- .align 2, 0
-_0805891C: .4byte gPlayerAvatar
- thumb_func_end PlayerAllowForcedMovementIfMovingSameDirection
-
- thumb_func_start TryDoMetatileBehaviorForcedMovment
-TryDoMetatileBehaviorForcedMovment: @ 8058920
- push {r4,lr}
- ldr r4, _08058940 @ =gUnknown_0830FBA0
- bl GetForcedMovementByMetatileBehavior
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08058940: .4byte gUnknown_0830FBA0
- thumb_func_end TryDoMetatileBehaviorForcedMovment
-
- thumb_func_start GetForcedMovementByMetatileBehavior
-GetForcedMovementByMetatileBehavior: @ 8058944
- push {r4-r6,lr}
- ldr r3, _08058980 @ =gPlayerAvatar
- ldrb r1, [r3]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08058996
- ldr r2, _08058984 @ =gMapObjects
- ldrb r1, [r3, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r5, [r0, 0x1E]
- movs r4, 0
- ldr r6, _08058988 @ =gUnknown_0830FB58
-_08058964:
- lsls r0, r4, 2
- adds r0, r6
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _0805898C
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r0, 24
- b _08058998
- .align 2, 0
-_08058980: .4byte gPlayerAvatar
-_08058984: .4byte gMapObjects
-_08058988: .4byte gUnknown_0830FB58
-_0805898C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x11
- bls _08058964
-_08058996:
- movs r0, 0
-_08058998:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetForcedMovementByMetatileBehavior
-
- thumb_func_start ForcedMovement_None
-ForcedMovement_None: @ 80589A0
- push {r4,lr}
- ldr r4, _080589E4 @ =gPlayerAvatar
- ldrb r1, [r4]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080589DA
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080589E8 @ =gMapObjects
- adds r0, r1
- ldrb r2, [r0, 0x1]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldrb r1, [r0, 0x18]
- lsls r1, 28
- lsrs r1, 28
- bl FieldObjectSetDirection
- ldrb r1, [r4]
- movs r0, 0xBF
- ands r0, r1
- strb r0, [r4]
-_080589DA:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080589E4: .4byte gPlayerAvatar
-_080589E8: .4byte gMapObjects
- thumb_func_end ForcedMovement_None
-
- thumb_func_start DoForcedMovement
-DoForcedMovement: @ 80589EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _08058A2C @ =gPlayerAvatar
- adds r0, r5, 0
- bl CheckForPlayerAvatarCollision
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- ldrb r0, [r6]
- movs r1, 0x40
- mov r10, r1
- movs r1, 0
- mov r8, r1
- mov r1, r10
- orrs r0, r1
- strb r0, [r6]
- cmp r4, 0
- beq _08058A48
- bl ForcedMovement_None
- cmp r4, 0x4
- bhi _08058A30
- movs r0, 0
- b _08058A54
- .align 2, 0
-_08058A2C: .4byte gPlayerAvatar
-_08058A30:
- cmp r7, 0x6
- bne _08058A3A
- adds r0, r5, 0
- bl PlayerJumpLedge
-_08058A3A:
- ldrb r0, [r6]
- mov r1, r10
- orrs r0, r1
- strb r0, [r6]
- movs r0, 0x2
- strb r0, [r6, 0x2]
- b _08058A52
-_08058A48:
- movs r0, 0x2
- strb r0, [r6, 0x2]
- adds r0, r5, 0
- bl _call_via_r9
-_08058A52:
- movs r0, 0x1
-_08058A54:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end DoForcedMovement
-
- thumb_func_start DoForcedMovementInCurrentDirection
-DoForcedMovementInCurrentDirection: @ 8058A64
- push {lr}
- adds r1, r0, 0
- ldr r0, _08058A90 @ =gPlayerAvatar
- ldrb r2, [r0, 0x5]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _08058A94 @ =gMapObjects
- adds r0, r2
- ldrb r2, [r0, 0x1]
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldrb r0, [r0, 0x18]
- lsrs r0, 4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058A90: .4byte gPlayerAvatar
-_08058A94: .4byte gMapObjects
- thumb_func_end DoForcedMovementInCurrentDirection
-
- thumb_func_start ForcedMovement_Slip
-ForcedMovement_Slip: @ 8058A98
- push {lr}
- ldr r0, _08058AA8 @ =sub_80593C4
- bl DoForcedMovementInCurrentDirection
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058AA8: .4byte sub_80593C4
- thumb_func_end ForcedMovement_Slip
-
- thumb_func_start sub_8058AAC
-sub_8058AAC: @ 8058AAC
- push {lr}
- ldr r1, _08058AC0 @ =PlayerGoSpeed0
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058AC0: .4byte PlayerGoSpeed0
- thumb_func_end sub_8058AAC
-
- thumb_func_start sub_8058AC4
-sub_8058AC4: @ 8058AC4
- push {lr}
- ldr r1, _08058AD8 @ =PlayerGoSpeed0
- movs r0, 0x2
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058AD8: .4byte PlayerGoSpeed0
- thumb_func_end sub_8058AC4
-
- thumb_func_start sub_8058ADC
-sub_8058ADC: @ 8058ADC
- push {lr}
- ldr r1, _08058AF0 @ =PlayerGoSpeed0
- movs r0, 0x3
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058AF0: .4byte PlayerGoSpeed0
- thumb_func_end sub_8058ADC
-
- thumb_func_start sub_8058AF4
-sub_8058AF4: @ 8058AF4
- push {lr}
- ldr r1, _08058B08 @ =PlayerGoSpeed0
- movs r0, 0x4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058B08: .4byte PlayerGoSpeed0
- thumb_func_end sub_8058AF4
-
- thumb_func_start sub_8058B0C
-sub_8058B0C: @ 8058B0C
- push {lr}
- ldr r1, _08058B20 @ =npc_use_some_d2s
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058B20: .4byte npc_use_some_d2s
- thumb_func_end sub_8058B0C
-
- thumb_func_start sub_8058B24
-sub_8058B24: @ 8058B24
- push {lr}
- ldr r1, _08058B38 @ =npc_use_some_d2s
- movs r0, 0x2
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058B38: .4byte npc_use_some_d2s
- thumb_func_end sub_8058B24
-
- thumb_func_start sub_8058B3C
-sub_8058B3C: @ 8058B3C
- push {lr}
- ldr r1, _08058B50 @ =npc_use_some_d2s
- movs r0, 0x3
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058B50: .4byte npc_use_some_d2s
- thumb_func_end sub_8058B3C
-
- thumb_func_start sub_8058B54
-sub_8058B54: @ 8058B54
- push {lr}
- ldr r1, _08058B68 @ =npc_use_some_d2s
- movs r0, 0x4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058B68: .4byte npc_use_some_d2s
- thumb_func_end sub_8058B54
-
- thumb_func_start ForcedMovement_Slide
-ForcedMovement_Slide: @ 8058B6C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08058B9C @ =gPlayerAvatar
- ldrb r3, [r2, 0x5]
- lsls r2, r3, 3
- adds r2, r3
- lsls r2, 2
- ldr r3, _08058BA0 @ =gMapObjects
- adds r2, r3
- ldrb r3, [r2, 0x1]
- movs r4, 0x4
- orrs r3, r4
- movs r4, 0x2
- orrs r3, r4
- strb r3, [r2, 0x1]
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08058B9C: .4byte gPlayerAvatar
-_08058BA0: .4byte gMapObjects
- thumb_func_end ForcedMovement_Slide
-
- thumb_func_start ForcedMovement_SlideSouth
-ForcedMovement_SlideSouth: @ 8058BA4
- push {lr}
- ldr r1, _08058BB8 @ =sub_80593C4
- movs r0, 0x1
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058BB8: .4byte sub_80593C4
- thumb_func_end ForcedMovement_SlideSouth
-
- thumb_func_start ForcedMovement_SlideNorth
-ForcedMovement_SlideNorth: @ 8058BBC
- push {lr}
- ldr r1, _08058BD0 @ =sub_80593C4
- movs r0, 0x2
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058BD0: .4byte sub_80593C4
- thumb_func_end ForcedMovement_SlideNorth
-
- thumb_func_start ForcedMovement_SlideWest
-ForcedMovement_SlideWest: @ 8058BD4
- push {lr}
- ldr r1, _08058BE8 @ =sub_80593C4
- movs r0, 0x3
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058BE8: .4byte sub_80593C4
- thumb_func_end ForcedMovement_SlideWest
-
- thumb_func_start ForcedMovement_SlideEast
-ForcedMovement_SlideEast: @ 8058BEC
- push {lr}
- ldr r1, _08058C00 @ =sub_80593C4
- movs r0, 0x4
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08058C00: .4byte sub_80593C4
- thumb_func_end ForcedMovement_SlideEast
-
- thumb_func_start sub_8058C04
-sub_8058C04: @ 8058C04
- push {lr}
- bl sub_8059F94
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8058C04
-
- thumb_func_start sub_8058C10
-sub_8058C10: @ 8058C10
- push {lr}
- bl sub_805A06C
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8058C10
-
- thumb_func_start ForcedMovement_MuddySlope
-ForcedMovement_MuddySlope: @ 8058C1C
- push {r4,lr}
- ldr r0, _08058C60 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08058C64 @ =gMapObjects
- adds r4, r0, r1
- ldrb r1, [r4, 0x18]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0x20
- bne _08058C42
- bl sub_80E6034
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bgt _08058C6C
-_08058C42:
- movs r0, 0
- bl sub_80E6010
- ldrb r0, [r4, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldr r1, _08058C68 @ =sub_80593C4
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- b _08058C6E
- .align 2, 0
-_08058C60: .4byte gPlayerAvatar
-_08058C64: .4byte gMapObjects
-_08058C68: .4byte sub_80593C4
-_08058C6C:
- movs r0, 0
-_08058C6E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ForcedMovement_MuddySlope
-
- thumb_func_start MovePlayerNotOnBike
-MovePlayerNotOnBike: @ 8058C74
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r5, 16
- ldr r6, _08058CA0 @ =gUnknown_0830FBEC
- adds r0, r4, 0
- bl CheckMovementInputNotOnBike
- lsls r0, 24
- lsrs r0, 22
- adds r0, r6
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl _call_via_r2
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08058CA0: .4byte gUnknown_0830FBEC
- thumb_func_end MovePlayerNotOnBike
-
- thumb_func_start CheckMovementInputNotOnBike
-CheckMovementInputNotOnBike: @ 8058CA4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08058CBC
- ldr r0, _08058CB8 @ =gPlayerAvatar
- strb r4, [r0, 0x2]
- movs r0, 0
- b _08058CDE
- .align 2, 0
-_08058CB8: .4byte gPlayerAvatar
-_08058CBC:
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _08058CD8
- ldr r1, _08058CD4 @ =gPlayerAvatar
- ldrb r0, [r1, 0x2]
- cmp r0, 0x2
- beq _08058CD8
- movs r0, 0x1
- b _08058CDC
- .align 2, 0
-_08058CD4: .4byte gPlayerAvatar
-_08058CD8:
- ldr r1, _08058CE4 @ =gPlayerAvatar
- movs r0, 0x2
-_08058CDC:
- strb r0, [r1, 0x2]
-_08058CDE:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08058CE4: .4byte gPlayerAvatar
- thumb_func_end CheckMovementInputNotOnBike
-
- thumb_func_start PlayerNotOnBikeNotMoving
-PlayerNotOnBikeNotMoving: @ 8058CE8
- push {lr}
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- bl PlayerFaceDirection
- pop {r0}
- bx r0
- thumb_func_end PlayerNotOnBikeNotMoving
-
- thumb_func_start PlayerNotOnBikeTurningInPlace
-PlayerNotOnBikeTurningInPlace: @ 8058CFC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl PlayerTurnInPlace
- pop {r0}
- bx r0
- thumb_func_end PlayerNotOnBikeTurningInPlace
-
- thumb_func_start sub_8058D0C
-sub_8058D0C: @ 8058D0C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- adds r0, r5, 0
- bl CheckForPlayerAvatarCollision
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0
- beq _08058D44
- cmp r0, 0x6
- bne _08058D32
- adds r0, r5, 0
- bl PlayerJumpLedge
- b _08058DAE
-_08058D32:
- subs r0, r1, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _08058DAE
- adds r0, r5, 0
- bl PlayerNotOnBikeCollide
- b _08058DAE
-_08058D44:
- ldr r6, _08058D58 @ =gPlayerAvatar
- ldrb r1, [r6]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08058D5C
- adds r0, r5, 0
- bl sub_80593C4
- b _08058DAE
- .align 2, 0
-_08058D58: .4byte gPlayerAvatar
-_08058D5C:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08058DA8
- movs r0, 0x2
- ands r4, r0
- cmp r4, 0
- beq _08058DA8
- movs r0, 0x86
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08058DA8
- ldr r2, _08058DA4 @ =gMapObjects
- ldrb r1, [r6, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1E]
- bl sub_80E5DEC
- lsls r0, 24
- cmp r0, 0
- bne _08058DA8
- adds r0, r5, 0
- bl sub_805940C
- ldrb r1, [r6]
- movs r0, 0x80
- orrs r0, r1
- strb r0, [r6]
- b _08058DAE
- .align 2, 0
-_08058DA4: .4byte gMapObjects
-_08058DA8:
- adds r0, r5, 0
- bl PlayerGoSpeed0
-_08058DAE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8058D0C
-
- thumb_func_start CheckForPlayerAvatarCollision
-CheckForPlayerAvatarCollision: @ 8058DB4
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _08058E18 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08058E1C @ =gMapObjects
- adds r4, r0
- ldrh r1, [r4, 0x10]
- add r0, sp, 0x4
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- mov r5, sp
- adds r5, 0x6
- strh r0, [r5]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- bl MoveCoords
- add r0, sp, 0x4
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- add r1, sp, 0x4
- movs r3, 0
- ldrsh r1, [r1, r3]
- movs r3, 0
- ldrsh r2, [r5, r3]
- str r0, [sp]
- adds r0, r4, 0
- adds r3, r6, 0
- bl CheckForFieldObjectCollision
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08058E18: .4byte gPlayerAvatar
-_08058E1C: .4byte gMapObjects
- thumb_func_end CheckForPlayerAvatarCollision
-
- thumb_func_start CheckForFieldObjectCollision
-CheckForFieldObjectCollision: @ 8058E20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- lsls r1, 16
- lsls r2, 16
- lsls r3, 24
- lsrs r6, r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- lsrs r7, r1, 16
- asrs r5, r1, 16
- lsrs r1, r2, 16
- mov r9, r1
- asrs r4, r2, 16
- adds r1, r5, 0
- adds r2, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- strb r0, [r1]
- cmp r0, 0x3
- bne _08058E70
- adds r0, r5, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_8058EF0
- lsls r0, 24
- cmp r0, 0
- beq _08058E70
- movs r0, 0x5
- b _08058EDE
-_08058E70:
- lsls r5, r7, 16
- asrs r0, r5, 16
- mov r8, r0
- mov r1, r9
- lsls r4, r1, 16
- asrs r7, r4, 16
- adds r1, r7, 0
- adds r2, r6, 0
- bl ShouldJumpLedge
- lsls r0, 24
- cmp r0, 0
- beq _08058E94
- movs r0, 0x2B
- bl sav12_xor_increment
- movs r0, 0x6
- b _08058EDE
-_08058E94:
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _08058EB0
- mov r0, r8
- adds r1, r7, 0
- adds r2, r6, 0
- bl sub_8058F6C
- lsls r0, 24
- cmp r0, 0
- beq _08058EB0
- movs r0, 0x7
- b _08058EDE
-_08058EB0:
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _08058EDA
- asrs r5, 16
- asrs r4, 16
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl CheckForRotatingGatePuzzleCollision
- cmp r0, 0
- beq _08058ECE
- movs r0, 0x8
- b _08058EDE
-_08058ECE:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r10
- mov r3, sp
- bl check_acro_bike_metatile
-_08058EDA:
- mov r0, sp
- ldrb r0, [r0]
-_08058EDE:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CheckForFieldObjectCollision
-
- thumb_func_start sub_8058EF0
-sub_8058EF0: @ 8058EF0
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _08058F3C @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08058F40
- lsls r5, r3, 16
- asrs r0, r5, 16
- lsls r4, 16
- asrs r1, r4, 16
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _08058F40
- lsrs r0, r5, 16
- lsrs r1, r4, 16
- movs r2, 0x3
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- bne _08058F40
- adds r0, r6, 0
- bl sub_805A20C
- movs r0, 0x1
- b _08058F42
- .align 2, 0
-_08058F3C: .4byte gPlayerAvatar
-_08058F40:
- movs r0, 0
-_08058F42:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8058EF0
-
- thumb_func_start ShouldJumpLedge
-ShouldJumpLedge: @ 8058F48
- push {lr}
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl GetLedgeJumpDirection
- lsls r0, 24
- cmp r0, 0
- bne _08058F64
- movs r0, 0
- b _08058F66
-_08058F64:
- movs r0, 0x1
-_08058F66:
- pop {r1}
- bx r1
- thumb_func_end ShouldJumpLedge
-
- thumb_func_start sub_8058F6C
-sub_8058F6C: @ 8058F6C
- push {r4-r7,lr}
- sub sp, 0x4
- mov r3, sp
- strh r0, [r3]
- mov r5, sp
- adds r5, 0x2
- strh r1, [r5]
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r0, _08059004 @ =0x00000829
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0805900C
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl GetFieldObjectIdByXY
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x10
- beq _0805900C
- ldr r0, _08059008 @ =gMapObjects
- lsls r1, r6, 3
- adds r1, r6
- lsls r1, 2
- adds r4, r1, r0
- ldrb r0, [r4, 0x5]
- cmp r0, 0x57
- bne _0805900C
- ldrh r1, [r4, 0x10]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- strh r0, [r5]
- adds r0, r7, 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]
- adds r0, r4, 0
- adds r3, r7, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805900C
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl sub_8056F08
- lsls r0, 24
- cmp r0, 0
- bne _0805900C
- adds r0, r6, 0
- adds r1, r7, 0
- bl task_add_bump_boulder
- movs r0, 0x1
- b _0805900E
- .align 2, 0
-_08059004: .4byte 0x00000829
-_08059008: .4byte gMapObjects
-_0805900C:
- movs r0, 0
-_0805900E:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8058F6C
-
- thumb_func_start check_acro_bike_metatile
-check_acro_bike_metatile: @ 8059018
- push {r4-r7,lr}
- adds r6, r3, 0
- lsls r2, 24
- lsrs r5, r2, 24
- movs r4, 0
- ldr r7, _08059040 @ =gUnknown_0830FBF8
-_08059024:
- lsls r0, r4, 2
- adds r0, r7
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _08059048
- ldr r0, _08059044 @ =gUnknown_0830FC0C
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r6]
- b _08059052
- .align 2, 0
-_08059040: .4byte gUnknown_0830FBF8
-_08059044: .4byte gUnknown_0830FC0C
-_08059048:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _08059024
-_08059052:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end check_acro_bike_metatile
-
- thumb_func_start SetPlayerAvatarTransitionFlags
-SetPlayerAvatarTransitionFlags: @ 8059058
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08059070 @ =gPlayerAvatar
- ldrb r1, [r2, 0x1]
- orrs r0, r1
- strb r0, [r2, 0x1]
- bl DoPlayerAvatarTransition
- pop {r0}
- bx r0
- .align 2, 0
-_08059070: .4byte gPlayerAvatar
- thumb_func_end SetPlayerAvatarTransitionFlags
-
- thumb_func_start DoPlayerAvatarTransition
-DoPlayerAvatarTransition: @ 8059074
- push {r4,r5,lr}
- ldr r0, _080590BC @ =gPlayerAvatar
- ldrb r4, [r0, 0x1]
- cmp r4, 0
- beq _080590B4
- movs r5, 0
-_08059080:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080590A2
- ldr r0, _080590C0 @ =gUnknown_0830FC14
- lsls r2, r5, 2
- adds r2, r0
- ldr r0, _080590BC @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080590C4 @ =gMapObjects
- adds r0, r1
- ldr r1, [r2]
- bl _call_via_r1
-_080590A2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- lsrs r4, 1
- cmp r5, 0x7
- bls _08059080
- ldr r1, _080590BC @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0x1]
-_080590B4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080590BC: .4byte gPlayerAvatar
-_080590C0: .4byte gUnknown_0830FC14
-_080590C4: .4byte gMapObjects
- thumb_func_end DoPlayerAvatarTransition
-
- thumb_func_start nullsub_49
-nullsub_49: @ 80590C8
- bx lr
- thumb_func_end nullsub_49
-
- thumb_func_start PlayerAvatarTransition_Normal
-PlayerAvatarTransition_Normal: @ 80590CC
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl FieldObjectTurn
- movs r0, 0x1
- bl SetPlayerAvatarStateMask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayerAvatarTransition_Normal
-
- thumb_func_start PlayerAvatarTransition_MachBike
-PlayerAvatarTransition_MachBike: @ 80590F8
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl FieldObjectTurn
- movs r0, 0x2
- bl SetPlayerAvatarStateMask
- movs r0, 0
- movs r1, 0
- bl sub_80E5FCC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayerAvatarTransition_MachBike
-
- thumb_func_start PlayerAvatarTransition_AcroBike
-PlayerAvatarTransition_AcroBike: @ 805912C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl FieldObjectTurn
- movs r0, 0x4
- bl SetPlayerAvatarStateMask
- movs r0, 0
- movs r1, 0
- bl sub_80E5FCC
- bl sub_80E6084
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayerAvatarTransition_AcroBike
-
- thumb_func_start PlayerAvatarTransition_Surfing
-PlayerAvatarTransition_Surfing: @ 8059164
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x3
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl FieldObjectTurn
- movs r0, 0x8
- bl SetPlayerAvatarStateMask
- ldr r1, _080591B8 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- str r0, [r1]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- str r0, [r1, 0x4]
- ldr r0, _080591BC @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- str r0, [r1, 0x8]
- movs r0, 0x8
- bl FieldEffectStart
- lsls r0, 24
- lsrs r0, 24
- strb r0, [r4, 0x1A]
- movs r1, 0x1
- bl sub_8127ED0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080591B8: .4byte gUnknown_0202FF84
-_080591BC: .4byte gPlayerAvatar
- thumb_func_end PlayerAvatarTransition_Surfing
-
- thumb_func_start PlayerAvatarTransition_Underwater
-PlayerAvatarTransition_Underwater: @ 80591C0
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x4
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl FieldObjectTurn
- movs r0, 0x10
- bl SetPlayerAvatarStateMask
- ldrb r0, [r4, 0x4]
- bl sub_8128124
- strb r0, [r4, 0x1A]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayerAvatarTransition_Underwater
-
- thumb_func_start sub_80591F4
-sub_80591F4: @ 80591F4
- ldr r2, _08059200 @ =gPlayerAvatar
- ldrb r1, [r2]
- movs r0, 0x20
- orrs r0, r1
- strb r0, [r2]
- bx lr
- .align 2, 0
-_08059200: .4byte gPlayerAvatar
- thumb_func_end sub_80591F4
-
- thumb_func_start sub_8059204
-sub_8059204: @ 8059204
- push {r4,lr}
- ldr r4, _08059230 @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r4, 0x3]
- bl PlayerIsAnimActive
- lsls r0, 24
- cmp r0, 0
- beq _08059242
- bl PlayerCheckIfAnimFinishedOrInactive
- lsls r0, 24
- cmp r0, 0
- bne _08059234
- bl player_is_anim_in_certain_ranges
- lsls r0, 24
- cmp r0, 0
- bne _08059242
- movs r0, 0x1
- b _08059240
- .align 2, 0
-_08059230: .4byte gPlayerAvatar
-_08059234:
- bl sub_80592A4
- lsls r0, 24
- cmp r0, 0
- bne _08059242
- movs r0, 0x2
-_08059240:
- strb r0, [r4, 0x3]
-_08059242:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8059204
-
- thumb_func_start player_is_anim_in_certain_ranges
-player_is_anim_in_certain_ranges: @ 8059248
- push {lr}
- ldr r2, _08059294 @ =gMapObjects
- ldr r0, _08059298 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x1C]
- cmp r1, 0x3
- bls _0805928E
- adds r0, r1, 0
- subs r0, 0x10
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _0805928E
- adds r0, r1, 0
- subs r0, 0x19
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- bls _0805928E
- adds r0, r1, 0
- subs r0, 0x62
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB
- bls _0805928E
- adds r0, r1, 0
- subs r0, 0x7A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bhi _0805929C
-_0805928E:
- movs r0, 0x1
- b _0805929E
- .align 2, 0
-_08059294: .4byte gMapObjects
-_08059298: .4byte gPlayerAvatar
-_0805929C:
- movs r0, 0
-_0805929E:
- pop {r1}
- bx r1
- thumb_func_end player_is_anim_in_certain_ranges
-
- thumb_func_start sub_80592A4
-sub_80592A4: @ 80592A4
- push {lr}
- bl player_is_anim_in_certain_ranges
- lsls r0, 24
- cmp r0, 0
- beq _080592C0
- ldr r0, _080592BC @ =gPlayerAvatar
- ldrb r0, [r0, 0x2]
- cmp r0, 0x1
- beq _080592C0
- movs r0, 0x1
- b _080592C2
- .align 2, 0
-_080592BC: .4byte gPlayerAvatar
-_080592C0:
- movs r0, 0
-_080592C2:
- pop {r1}
- bx r1
- thumb_func_end sub_80592A4
-
- thumb_func_start PlayerIsAnimActive
-PlayerIsAnimActive: @ 80592C8
- push {lr}
- ldr r0, _080592E4 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080592E8 @ =gMapObjects
- adds r0, r1
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080592E4: .4byte gPlayerAvatar
-_080592E8: .4byte gMapObjects
- thumb_func_end PlayerIsAnimActive
-
- thumb_func_start PlayerCheckIfAnimFinishedOrInactive
-PlayerCheckIfAnimFinishedOrInactive: @ 80592EC
- push {lr}
- ldr r0, _08059308 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805930C @ =gMapObjects
- adds r0, r1
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08059308: .4byte gPlayerAvatar
-_0805930C: .4byte gMapObjects
- thumb_func_end PlayerCheckIfAnimFinishedOrInactive
-
- thumb_func_start player_set_x22
-player_set_x22: @ 8059310
- ldr r3, _08059324 @ =gMapObjects
- ldr r1, _08059328 @ =gPlayerAvatar
- ldrb r2, [r1, 0x5]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- adds r1, 0x22
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08059324: .4byte gMapObjects
-_08059328: .4byte gPlayerAvatar
- thumb_func_end player_set_x22
-
- thumb_func_start player_get_x22
-player_get_x22: @ 805932C
- ldr r2, _08059340 @ =gMapObjects
- ldr r0, _08059344 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x22
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08059340: .4byte gMapObjects
-_08059344: .4byte gPlayerAvatar
- thumb_func_end player_get_x22
-
- thumb_func_start sub_8059348
-sub_8059348: @ 8059348
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08059368 @ =gPlayerAvatar
- ldrb r2, [r0, 0x5]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805936C @ =gMapObjects
- adds r0, r2
- bl FieldObjectForceSetSpecialAnim
- pop {r0}
- bx r0
- .align 2, 0
-_08059368: .4byte gPlayerAvatar
-_0805936C: .4byte gMapObjects
- thumb_func_end sub_8059348
-
- thumb_func_start player_npc_set_state_and_x22_etc
-player_npc_set_state_and_x22_etc: @ 8059370
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- bl PlayerIsAnimActive
- lsls r0, 24
- cmp r0, 0
- bne _0805939E
- adds r0, r4, 0
- bl player_set_x22
- ldr r0, _080593A4 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080593A8 @ =gMapObjects
- adds r0, r1
- adds r1, r5, 0
- bl FieldObjectSetSpecialAnim
-_0805939E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080593A4: .4byte gPlayerAvatar
-_080593A8: .4byte gMapObjects
- thumb_func_end player_npc_set_state_and_x22_etc
-
- thumb_func_start PlayerGoSpeed0
-PlayerGoSpeed0: @ 80593AC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end PlayerGoSpeed0
-
- thumb_func_start sub_80593C4
-sub_80593C4: @ 80593C4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_8060744
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_80593C4
-
- thumb_func_start npc_use_some_d2s
-npc_use_some_d2s: @ 80593DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl d2s_08064034
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end npc_use_some_d2s
-
- thumb_func_start sub_80593F4
-sub_80593F4: @ 80593F4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_806079C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_80593F4
-
- thumb_func_start sub_805940C
-sub_805940C: @ 805940C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80607F4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_805940C
-
- thumb_func_start PlayerOnBikeCollide
-PlayerOnBikeCollide: @ 8059424
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl PlayCollisionSoundIfNotFacingWarp
- adds r0, r4, 0
- bl GetStepInPlaceDelay16AnimId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayerOnBikeCollide
-
- thumb_func_start PlayerNotOnBikeCollide
-PlayerNotOnBikeCollide: @ 8059448
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl PlayCollisionSoundIfNotFacingWarp
- adds r0, r4, 0
- bl GetStepInPlaceDelay32AnimId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayerNotOnBikeCollide
-
- thumb_func_start PlayerFaceDirection
-PlayerFaceDirection: @ 805946C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetFaceDirectionAnimId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end PlayerFaceDirection
-
- thumb_func_start PlayerTurnInPlace
-PlayerTurnInPlace: @ 8059484
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetStepInPlaceDelay8AnimId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end PlayerTurnInPlace
-
- thumb_func_start PlayerJumpLedge
-PlayerJumpLedge: @ 805949C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xA
- bl PlaySE
- adds r0, r4, 0
- bl GetJumpLedgeAnimId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x8
- bl player_npc_set_state_and_x22_etc
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayerJumpLedge
-
- thumb_func_start sub_80594C0
-sub_80594C0: @ 80594C0
- push {r4,lr}
- ldr r4, _080594FC @ =gPlayerAvatar
- ldrb r0, [r4, 0x3]
- cmp r0, 0x2
- beq _080594CE
- cmp r0, 0
- bne _080594F6
-_080594CE:
- bl player_should_look_direction_be_enforced_upon_movement
- lsls r0, 24
- cmp r0, 0
- beq _080594F6
- ldr r2, _08059500 @ =gMapObjects
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- lsls r0, 24
- lsrs r0, 24
- bl sub_8059348
-_080594F6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080594FC: .4byte gPlayerAvatar
-_08059500: .4byte gMapObjects
- thumb_func_end sub_80594C0
-
- thumb_func_start sub_8059504
-sub_8059504: @ 8059504
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80609D8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_8059504
-
- thumb_func_start sub_805951C
-sub_805951C: @ 805951C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_8060A04
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_805951C
-
- thumb_func_start sub_8059534
-sub_8059534: @ 8059534
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_8060A30
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_8059534
-
- thumb_func_start sub_805954C
-sub_805954C: @ 805954C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x22
- bl PlaySE
- adds r0, r4, 0
- bl sub_8060A5C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl player_npc_set_state_and_x22_etc
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_805954C
-
- thumb_func_start sub_8059570
-sub_8059570: @ 8059570
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x22
- bl PlaySE
- adds r0, r4, 0
- bl sub_8060A88
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8059570
-
- thumb_func_start sub_8059594
-sub_8059594: @ 8059594
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x22
- bl PlaySE
- adds r0, r4, 0
- bl sub_8060AB4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x8
- bl player_npc_set_state_and_x22_etc
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8059594
-
- thumb_func_start sub_80595B8
-sub_80595B8: @ 80595B8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x22
- bl PlaySE
- adds r0, r4, 0
- bl sub_8060878
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl player_npc_set_state_and_x22_etc
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80595B8
-
- thumb_func_start sub_80595DC
-sub_80595DC: @ 80595DC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x7
- bl PlaySE
- adds r0, r4, 0
- bl sub_8060AE0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80595DC
-
- thumb_func_start sub_8059600
-sub_8059600: @ 8059600
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_8060B0C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_8059600
-
- thumb_func_start sub_8059618
-sub_8059618: @ 8059618
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_8060B38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_8059618
-
- thumb_func_start sub_8059630
-sub_8059630: @ 8059630
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_8060B64
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl player_npc_set_state_and_x22_etc
- pop {r0}
- bx r0
- thumb_func_end sub_8059630
-
- thumb_func_start PlayCollisionSoundIfNotFacingWarp
-PlayCollisionSoundIfNotFacingWarp: @ 8059648
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _080596B8 @ =gMapObjects
- ldr r0, _080596BC @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1E]
- ldr r2, _080596C0 @ =gUnknown_0830FC34
- subs r1, r4, 0x1
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _080596B0
- cmp r4, 0x2
- bne _080596AA
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- movs r0, 0x2
- mov r1, sp
- adds r2, r4, 0
- bl MoveCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl is_tile_x69_2_warp_door
- lsls r0, 24
- cmp r0, 0
- bne _080596B0
-_080596AA:
- movs r0, 0x7
- bl PlaySE
-_080596B0:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080596B8: .4byte gMapObjects
-_080596BC: .4byte gPlayerAvatar
-_080596C0: .4byte gUnknown_0830FC34
- thumb_func_end PlayCollisionSoundIfNotFacingWarp
-
- thumb_func_start GetXYCoordsOneStepInFrontOfPlayer
-GetXYCoordsOneStepInFrontOfPlayer: @ 80596C4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r3, _08059700 @ =gMapObjects
- ldr r2, _08059704 @ =gPlayerAvatar
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x10]
- strh r0, [r4]
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x12]
- strh r0, [r5]
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- adds r2, r5, 0
- bl MoveCoords
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08059700: .4byte gMapObjects
-_08059704: .4byte gPlayerAvatar
- thumb_func_end GetXYCoordsOneStepInFrontOfPlayer
-
- thumb_func_start PlayerGetDestCoords
-PlayerGetDestCoords: @ 8059708
- push {r4,r5,lr}
- ldr r5, _08059730 @ =gMapObjects
- ldr r4, _08059734 @ =gPlayerAvatar
- ldrb r3, [r4, 0x5]
- lsls r2, r3, 3
- adds r2, r3
- lsls r2, 2
- adds r2, r5
- ldrh r2, [r2, 0x10]
- strh r2, [r0]
- ldrb r2, [r4, 0x5]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- ldrh r0, [r0, 0x12]
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08059730: .4byte gMapObjects
-_08059734: .4byte gPlayerAvatar
- thumb_func_end PlayerGetDestCoords
-
- thumb_func_start player_get_direction_lower_nybble
-player_get_direction_lower_nybble: @ 8059738
- ldr r2, _08059750 @ =gMapObjects
- ldr r0, _08059754 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bx lr
- .align 2, 0
-_08059750: .4byte gMapObjects
-_08059754: .4byte gPlayerAvatar
- thumb_func_end player_get_direction_lower_nybble
-
- thumb_func_start player_get_direction_upper_nybble
-player_get_direction_upper_nybble: @ 8059758
- ldr r2, _0805976C @ =gMapObjects
- ldr r0, _08059770 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x18]
- lsrs r0, 4
- bx lr
- .align 2, 0
-_0805976C: .4byte gMapObjects
-_08059770: .4byte gPlayerAvatar
- thumb_func_end player_get_direction_upper_nybble
-
- thumb_func_start PlayerGetZCoord
-PlayerGetZCoord: @ 8059774
- ldr r2, _08059788 @ =gMapObjects
- ldr r0, _0805978C @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- bx lr
- .align 2, 0
-_08059788: .4byte gMapObjects
-_0805978C: .4byte gPlayerAvatar
- thumb_func_end PlayerGetZCoord
-
- thumb_func_start unref_sub_8059790
-unref_sub_8059790: @ 8059790
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- ldr r0, _080597B8 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080597BC @ =gMapObjects
- adds r0, r1
- lsls r3, 16
- asrs r3, 16
- lsls r2, 16
- asrs r2, 16
- adds r1, r3, 0
- bl sub_805C058
- pop {r0}
- bx r0
- .align 2, 0
-_080597B8: .4byte gPlayerAvatar
-_080597BC: .4byte gMapObjects
- thumb_func_end unref_sub_8059790
-
- thumb_func_start TestPlayerAvatarFlags
-TestPlayerAvatarFlags: @ 80597C0
- ldr r1, _080597CC @ =gPlayerAvatar
- ldrb r1, [r1]
- ands r1, r0
- adds r0, r1, 0
- bx lr
- .align 2, 0
-_080597CC: .4byte gPlayerAvatar
- thumb_func_end TestPlayerAvatarFlags
-
- thumb_func_start sub_80597D0
-sub_80597D0: @ 80597D0
- ldr r0, _080597D8 @ =gPlayerAvatar
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080597D8: .4byte gPlayerAvatar
- thumb_func_end sub_80597D0
-
- thumb_func_start GetPlayerAvatarObjectId
-GetPlayerAvatarObjectId: @ 80597DC
- ldr r0, _080597E4 @ =gPlayerAvatar
- ldrb r0, [r0, 0x4]
- bx lr
- .align 2, 0
-_080597E4: .4byte gPlayerAvatar
- thumb_func_end GetPlayerAvatarObjectId
-
- thumb_func_start sub_80597E8
-sub_80597E8: @ 80597E8
- push {lr}
- bl ForcedMovement_None
- pop {r0}
- bx r0
- thumb_func_end sub_80597E8
-
- thumb_func_start sub_80597F4
-sub_80597F4: @ 80597F4
- push {r4,lr}
- ldr r0, _08059834 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08059838 @ =gMapObjects
- adds r4, r0
- adds r0, r4, 0
- bl npc_clear_strange_bits
- ldrb r1, [r4, 0x18]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x6
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0805982C
- bl sub_80E6084
- movs r0, 0
- bl sub_80E6010
-_0805982C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08059834: .4byte gPlayerAvatar
-_08059838: .4byte gMapObjects
- thumb_func_end sub_80597F4
-
- thumb_func_start sub_805983C
-sub_805983C: @ 805983C
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08059850 @ =gUnknown_0830FC44
- lsrs r0, 23
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- bx lr
- .align 2, 0
-_08059850: .4byte gUnknown_0830FC44
- thumb_func_end sub_805983C
-
- thumb_func_start GetPlayerAvatarGraphicsIdByStateIdAndGender
-GetPlayerAvatarGraphicsIdByStateIdAndGender: @ 8059854
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08059868 @ =gUnknown_0830FC54
- lsrs r0, 23
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- bx lr
- .align 2, 0
-_08059868: .4byte gUnknown_0830FC54
- thumb_func_end GetPlayerAvatarGraphicsIdByStateIdAndGender
-
- thumb_func_start GetPlayerAvatarGraphicsIdByStateId
-GetPlayerAvatarGraphicsIdByStateId: @ 805986C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08059884 @ =gPlayerAvatar
- ldrb r1, [r1, 0x7]
- bl GetPlayerAvatarGraphicsIdByStateIdAndGender
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08059884: .4byte gPlayerAvatar
- thumb_func_end GetPlayerAvatarGraphicsIdByStateId
-
- thumb_func_start unref_sub_8059888
-unref_sub_8059888: @ 8059888
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x70
- beq _080598AA
- cmp r0, 0x70
- bgt _080598A2
- cmp r0, 0x6D
- bgt _080598AE
- cmp r0, 0x69
- blt _080598AE
- b _080598AA
-_080598A2:
- cmp r1, 0x8A
- beq _080598AA
- cmp r1, 0xC0
- bne _080598AE
-_080598AA:
- movs r0, 0x1
- b _080598B0
-_080598AE:
- movs r0, 0
-_080598B0:
- pop {r1}
- bx r1
- thumb_func_end unref_sub_8059888
-
- thumb_func_start GetPlayerAvatarGenderByGraphicsId
-GetPlayerAvatarGenderByGraphicsId: @ 80598B4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x70
- beq _080598D6
- cmp r0, 0x70
- bgt _080598CE
- cmp r0, 0x5D
- bgt _080598DA
- cmp r0, 0x59
- blt _080598DA
- b _080598D6
-_080598CE:
- cmp r1, 0x8A
- beq _080598D6
- cmp r1, 0xC0
- bne _080598DA
-_080598D6:
- movs r0, 0x1
- b _080598DC
-_080598DA:
- movs r0, 0
-_080598DC:
- pop {r1}
- bx r1
- thumb_func_end GetPlayerAvatarGenderByGraphicsId
-
- thumb_func_start PartyHasMonWithSurf
-PartyHasMonWithSurf: @ 80598E0
- push {r4,r5,lr}
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- bne _08059924
- movs r5, 0
- b _0805990A
-_080598F2:
- adds r0, r4, 0
- movs r1, 0x39
- bl pokemon_has_move
- lsls r0, 24
- cmp r0, 0
- beq _08059904
- movs r0, 0x1
- b _08059926
-_08059904:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0805990A:
- cmp r5, 0x5
- bhi _08059924
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0805992C @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- bne _080598F2
-_08059924:
- movs r0, 0
-_08059926:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805992C: .4byte gPlayerParty
- thumb_func_end PartyHasMonWithSurf
-
- thumb_func_start IsPlayerSurfingNorth
-IsPlayerSurfingNorth: @ 8059930
- push {lr}
- bl player_get_direction_upper_nybble
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805994E
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0805994E
- movs r0, 0x1
- b _08059950
-_0805994E:
- movs r0, 0
-_08059950:
- pop {r1}
- bx r1
- thumb_func_end IsPlayerSurfingNorth
-
- thumb_func_start IsPlayerFacingSurfableFishableWater
-IsPlayerFacingSurfableFishableWater: @ 8059954
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, _080599CC @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _080599D0 @ =gMapObjects
- adds r4, r0
- ldrh r1, [r4, 0x10]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- mov r5, sp
- adds r5, 0x2
- strh r0, [r5]
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- 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]
- ldrb r3, [r4, 0x18]
- lsls r3, 28
- lsrs r3, 28
- adds r0, r4, 0
- bl npc_block_way
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _080599D4
- bl PlayerGetZCoord
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _080599D4
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfableFishableWater
- lsls r0, 24
- cmp r0, 0
- beq _080599D4
- movs r0, 0x1
- b _080599D6
- .align 2, 0
-_080599CC: .4byte gPlayerAvatar
-_080599D0: .4byte gMapObjects
-_080599D4:
- movs r0, 0
-_080599D6:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end IsPlayerFacingSurfableFishableWater
-
- thumb_func_start ClearPlayerAvatarInfo
-ClearPlayerAvatarInfo: @ 80599E0
- push {lr}
- ldr r0, _080599F0 @ =gPlayerAvatar
- movs r1, 0
- movs r2, 0x24
- bl memset
- pop {r0}
- bx r0
- .align 2, 0
-_080599F0: .4byte gPlayerAvatar
- thumb_func_end ClearPlayerAvatarInfo
-
- thumb_func_start SetPlayerAvatarStateMask
-SetPlayerAvatarStateMask: @ 80599F4
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _08059A08 @ =gPlayerAvatar
- ldrb r2, [r3]
- movs r1, 0xE0
- ands r1, r2
- orrs r0, r1
- strb r0, [r3]
- bx lr
- .align 2, 0
-_08059A08: .4byte gPlayerAvatar
- thumb_func_end SetPlayerAvatarStateMask
-
- thumb_func_start GetPlayerAvatarStateTransitionByGraphicsId
-GetPlayerAvatarStateTransitionByGraphicsId: @ 8059A0C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- ldr r3, _08059A34 @ =gUnknown_0830FC64
- lsls r0, r1, 2
- adds r0, r1
- lsls r4, r0, 1
- adds r6, r3, 0x1
-_08059A22:
- lsls r0, r2, 1
- adds r1, r0, r4
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r5
- bne _08059A38
- adds r0, r1, r6
- ldrb r0, [r0]
- b _08059A44
- .align 2, 0
-_08059A34: .4byte gUnknown_0830FC64
-_08059A38:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x4
- bls _08059A22
- movs r0, 0x1
-_08059A44:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetPlayerAvatarStateTransitionByGraphicsId
-
- thumb_func_start GetPlayerAvatarGraphicsIdByCurrentState
-GetPlayerAvatarGraphicsIdByCurrentState: @ 8059A4C
- push {r4-r6,lr}
- ldr r0, _08059A74 @ =gPlayerAvatar
- ldrb r5, [r0]
- movs r2, 0
- ldr r3, _08059A78 @ =gUnknown_0830FC64
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 2
- adds r0, r1
- lsls r4, r0, 1
- adds r6, r3, 0x1
-_08059A60:
- lsls r0, r2, 1
- adds r1, r0, r4
- adds r0, r1, r6
- ldrb r0, [r0]
- ands r0, r5
- cmp r0, 0
- beq _08059A7C
- adds r0, r1, r3
- ldrb r0, [r0]
- b _08059A88
- .align 2, 0
-_08059A74: .4byte gPlayerAvatar
-_08059A78: .4byte gUnknown_0830FC64
-_08059A7C:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x4
- bls _08059A60
- movs r0, 0
-_08059A88:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetPlayerAvatarGraphicsIdByCurrentState
-
- thumb_func_start SetPlayerAvatarExtraStateTransition
-SetPlayerAvatarExtraStateTransition: @ 8059A90
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08059ABC @ =gPlayerAvatar
- ldrb r1, [r5, 0x7]
- bl GetPlayerAvatarStateTransitionByGraphicsId
- lsls r0, 24
- lsrs r0, 24
- orrs r0, r4
- ldrb r1, [r5, 0x1]
- orrs r0, r1
- strb r0, [r5, 0x1]
- bl DoPlayerAvatarTransition
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08059ABC: .4byte gPlayerAvatar
- thumb_func_end SetPlayerAvatarExtraStateTransition
-
- thumb_func_start InitPlayerAvatar
-InitPlayerAvatar: @ 8059AC0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x18
- adds r4, r0, 0
- adds r5, r1, 0
- mov r9, r2
- mov r8, r3
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1]
- movs r0, 0
- mov r1, r8
- bl GetPlayerAvatarGraphicsIdByStateIdAndGender
- mov r1, sp
- movs r3, 0
- strb r0, [r1, 0x1]
- mov r0, sp
- lsls r4, 16
- asrs r4, 16
- subs r4, 0x7
- movs r6, 0
- strh r4, [r0, 0x4]
- lsls r5, 16
- asrs r5, 16
- subs r5, 0x7
- strh r5, [r0, 0x6]
- strb r6, [r0, 0x8]
- movs r0, 0xB
- strb r0, [r1, 0x9]
- mov r2, sp
- ldrb r1, [r2, 0xA]
- subs r0, 0x1B
- ands r0, r1
- strb r0, [r2, 0xA]
- mov r0, sp
- strb r6, [r0, 0xA]
- strh r3, [r0, 0xC]
- strh r3, [r0, 0xE]
- str r3, [sp, 0x10]
- strh r3, [r0, 0x14]
- bl SpawnSpecialFieldObject
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 3
- adds r4, r5
- lsls r4, 2
- ldr r0, _08059B80 @ =gMapObjects
- adds r4, r0
- ldrb r0, [r4, 0x2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x2]
- bl sub_8126B54
- strb r0, [r4, 0x1B]
- adds r0, r4, 0
- mov r1, r9
- bl FieldObjectTurn
- bl ClearPlayerAvatarInfo
- ldr r0, _08059B84 @ =gPlayerAvatar
- strb r6, [r0, 0x2]
- strb r6, [r0, 0x3]
- strb r5, [r0, 0x5]
- ldrb r1, [r4, 0x4]
- strb r1, [r0, 0x4]
- mov r1, r8
- strb r1, [r0, 0x7]
- movs r0, 0x21
- bl SetPlayerAvatarStateMask
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08059B80: .4byte gMapObjects
-_08059B84: .4byte gPlayerAvatar
- thumb_func_end InitPlayerAvatar
-
- thumb_func_start sub_8059B88
-sub_8059B88: @ 8059B88
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, _08059BE8 @ =gMapObjects
- ldr r5, _08059BEC @ =gPlayerAvatar
- ldrb r0, [r5, 0x5]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r0, 0x1
- ands r4, r0
- lsls r3, r4, 5
- ldrb r2, [r1, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x1]
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _08059BE0
- ldr r2, _08059BF0 @ =gSprites
- ldrb r1, [r5, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x1A]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- lsls r3, r4, 2
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r3
- strb r0, [r1]
-_08059BE0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08059BE8: .4byte gMapObjects
-_08059BEC: .4byte gPlayerAvatar
-_08059BF0: .4byte gSprites
- thumb_func_end sub_8059B88
-
- thumb_func_start sub_8059BF4
-sub_8059BF4: @ 8059BF4
- push {r4,r5,lr}
- ldr r5, _08059C30 @ =gPlayerAvatar
- ldrb r0, [r5, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08059C34 @ =gMapObjects
- adds r4, r0
- movs r0, 0x5
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08059C38 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08059C30: .4byte gPlayerAvatar
-_08059C34: .4byte gMapObjects
-_08059C38: .4byte gSprites
- thumb_func_end sub_8059BF4
-
- thumb_func_start sub_8059C3C
-sub_8059C3C: @ 8059C3C
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _08059C88 @ =gPlayerAvatar
- ldrb r0, [r6, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08059C8C @ =gMapObjects
- adds r4, r0
- movs r0, 0x6
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r0, [r6, 0x4]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _08059C90 @ =gSprites
- adds r4, r0
- adds r0, r5, 0
- bl sub_805FDE8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08059C88: .4byte gPlayerAvatar
-_08059C8C: .4byte gMapObjects
-_08059C90: .4byte gSprites
- thumb_func_end sub_8059C3C
-
- thumb_func_start sub_8059C94
-sub_8059C94: @ 8059C94
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _08059CFC @ =gPlayerAvatar
- ldrb r0, [r6, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08059D00 @ =gMapObjects
- adds r4, r0
- movs r0, 0x2
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r0, [r6, 0x4]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _08059D04 @ =gSprites
- mov r8, r0
- add r4, r8
- adds r0, r5, 0
- bl sub_805FD98
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrb r1, [r6, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x1
- bl SeekSpriteAnim
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08059CFC: .4byte gPlayerAvatar
-_08059D00: .4byte gMapObjects
-_08059D04: .4byte gSprites
- thumb_func_end sub_8059C94
-
- thumb_func_start sub_8059D08
-sub_8059D08: @ 8059D08
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _08059D54 @ =gPlayerAvatar
- ldrb r0, [r6, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08059D58 @ =gMapObjects
- adds r4, r0
- movs r0, 0x7
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r0, [r6, 0x4]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _08059D5C @ =gSprites
- adds r4, r0
- adds r0, r5, 0
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08059D54: .4byte gPlayerAvatar
-_08059D58: .4byte gMapObjects
-_08059D5C: .4byte gSprites
- thumb_func_end sub_8059D08
-
- thumb_func_start sub_8059D60
-sub_8059D60: @ 8059D60
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrb r0, [r5, 0x1E]
- mov r8, r0
- movs r1, 0
- mov r0, sp
- strh r1, [r0]
- movs r6, 0x1
- ldr r1, _08059DC4 @ =gUnknown_0830FC78
- mov r9, r1
- mov r4, sp
- mov r7, sp
- adds r7, 0x2
-_08059D82:
- movs r1, 0
- ldrsh r0, [r4, r1]
- lsls r0, 2
- add r0, r9
- ldr r1, [r0]
- mov r0, r8
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _08059DC8
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- cmp r6, r0
- bne _08059DC8
- ldrh r0, [r5, 0x10]
- strh r0, [r4]
- ldrh r0, [r5, 0x12]
- strh r0, [r7]
- adds r0, r6, 0
- mov r1, sp
- adds r2, r7, 0
- bl MoveCoords
- ldrb r0, [r5, 0x1B]
- movs r1, 0
- ldrsh r2, [r4, r1]
- movs r1, 0
- ldrsh r3, [r7, r1]
- adds r1, r6, 0
- bl sub_8126BC4
- b _08059DE2
- .align 2, 0
-_08059DC4: .4byte gUnknown_0830FC78
-_08059DC8:
- ldrh r1, [r4]
- adds r1, 0x1
- strh r1, [r4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x3
- ble _08059D82
- ldrb r0, [r5, 0x1B]
- bl objid_set_invisible
-_08059DE2:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8059D60
-
- thumb_func_start task_add_bump_boulder
-task_add_bump_boulder: @ 8059DF0
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _08059E24 @ =sub_8059E2C
- adds r0, r6, 0
- movs r1, 0xFF
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08059E28 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- bl _call_via_r6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08059E24: .4byte sub_8059E2C
-_08059E28: .4byte gTasks
- thumb_func_end task_add_bump_boulder
-
- thumb_func_start sub_8059E2C
-sub_8059E2C: @ 8059E2C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r6, _08059E74 @ =gUnknown_0830FC88
- ldr r2, _08059E78 @ =gTasks
- ldr r5, _08059E7C @ =gMapObjects
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08059E40:
- movs r0, 0x8
- ldrsh r3, [r4, r0]
- lsls r3, 2
- adds r3, r6
- ldr r0, _08059E80 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- ldr r3, [r3]
- adds r0, r4, 0
- bl _call_via_r3
- lsls r0, 24
- cmp r0, 0
- bne _08059E40
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08059E74: .4byte gUnknown_0830FC88
-_08059E78: .4byte gTasks
-_08059E7C: .4byte gMapObjects
-_08059E80: .4byte gPlayerAvatar
- thumb_func_end sub_8059E2C
-
- thumb_func_start sub_8059E84
-sub_8059E84: @ 8059E84
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptContext2_Enable
- ldr r1, _08059EA0 @ =gPlayerAvatar
- movs r0, 0x1
- strb r0, [r1, 0x6]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08059EA0: .4byte gPlayerAvatar
- thumb_func_end sub_8059E84
-
- thumb_func_start sub_8059EA4
-sub_8059EA4: @ 8059EA4
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- adds r0, r5, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- cmp r0, 0
- bne _08059F2E
- adds r0, r4, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- cmp r0, 0
- bne _08059F2E
- adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- ldrb r0, [r6, 0xC]
- bl GetStepInPlaceDelay16AnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldObjectSetSpecialAnim
- ldrb r0, [r6, 0xC]
- bl GetSimpleGoAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- ldr r2, _08059F38 @ =gUnknown_0202FF84
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- str r0, [r2]
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- str r0, [r2, 0x4]
- ldrb r0, [r4, 0xB]
- lsrs r0, 4
- str r0, [r2, 0x8]
- ldr r3, _08059F3C @ =gSprites
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r2, 0xC]
- movs r0, 0xA
- bl FieldEffectStart
- movs r0, 0xD6
- bl PlaySE
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_08059F2E:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08059F38: .4byte gUnknown_0202FF84
-_08059F3C: .4byte gSprites
- thumb_func_end sub_8059EA4
-
- thumb_func_start sub_8059F40
-sub_8059F40: @ 8059F40
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- adds r0, r4, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
- lsls r0, 24
- cmp r0, 0
- beq _08059F82
- adds r0, r5, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
- lsls r0, 24
- cmp r0, 0
- beq _08059F82
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- ldr r1, _08059F8C @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0x6]
- bl ScriptContext2_Disable
- ldr r0, _08059F90 @ =sub_8059E2C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_08059F82:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08059F8C: .4byte gPlayerAvatar
-_08059F90: .4byte sub_8059E2C
- thumb_func_end sub_8059F40
-
- thumb_func_start sub_8059F94
-sub_8059F94: @ 8059F94
- push {r4,lr}
- ldr r4, _08059FB0 @ =sub_8059FB4
- adds r0, r4, 0
- movs r1, 0xFF
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08059FB0: .4byte sub_8059FB4
- thumb_func_end sub_8059F94
-
- thumb_func_start sub_8059FB4
-sub_8059FB4: @ 8059FB4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08059FF0 @ =gUnknown_0830FC94
- ldr r2, _08059FF4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08059FC6:
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- lsls r2, 2
- adds r2, r5
- ldr r0, _08059FF8 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _08059FFC @ =gMapObjects
- adds r1, r0
- ldr r2, [r2]
- adds r0, r4, 0
- bl _call_via_r2
- lsls r0, 24
- cmp r0, 0
- bne _08059FC6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08059FF0: .4byte gUnknown_0830FC94
-_08059FF4: .4byte gTasks
-_08059FF8: .4byte gPlayerAvatar
-_08059FFC: .4byte gMapObjects
- thumb_func_end sub_8059FB4
-
- thumb_func_start sub_805A000
-sub_805A000: @ 805A000
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- ldr r5, _0805A064 @ =gPlayerAvatar
- movs r0, 0x1
- strb r0, [r5, 0x6]
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _0805A05C
- movs r0, 0xA
- bl PlaySE
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl sub_806084C
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0805A05C
- movs r0, 0
- strb r0, [r5, 0x6]
- ldrb r0, [r5, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r5, 0x1]
- ldr r0, _0805A068 @ =sub_8059FB4
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0805A05C:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A064: .4byte gPlayerAvatar
-_0805A068: .4byte sub_8059FB4
- thumb_func_end sub_805A000
-
- thumb_func_start sub_805A06C
-sub_805A06C: @ 805A06C
- push {r4,lr}
- ldr r4, _0805A088 @ =sub_805A08C
- adds r0, r4, 0
- movs r1, 0xFF
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805A088: .4byte sub_805A08C
- thumb_func_end sub_805A06C
-
- thumb_func_start sub_805A08C
-sub_805A08C: @ 805A08C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0805A0C8 @ =gUnknown_0830FC98
- ldr r2, _0805A0CC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0805A09E:
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- lsls r2, 2
- adds r2, r5
- ldr r0, _0805A0D0 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _0805A0D4 @ =gMapObjects
- adds r1, r0
- ldr r2, [r2]
- adds r0, r4, 0
- bl _call_via_r2
- lsls r0, 24
- cmp r0, 0
- bne _0805A09E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805A0C8: .4byte gUnknown_0830FC98
-_0805A0CC: .4byte gTasks
-_0805A0D0: .4byte gPlayerAvatar
-_0805A0D4: .4byte gMapObjects
- thumb_func_end sub_805A08C
-
- thumb_func_start sub_805A0D8
-sub_805A0D8: @ 805A0D8
- push {lr}
- ldrh r2, [r0, 0x8]
- adds r2, 0x1
- strh r2, [r0, 0x8]
- ldrb r1, [r1, 0x18]
- lsrs r1, 4
- strh r1, [r0, 0xA]
- ldr r1, _0805A0FC @ =gPlayerAvatar
- movs r0, 0x1
- strb r0, [r1, 0x6]
- bl ScriptContext2_Enable
- movs r0, 0x2D
- bl PlaySE
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_0805A0FC: .4byte gPlayerAvatar
- thumb_func_end sub_805A0D8
-
- thumb_func_start sub_805A100
-sub_805A100: @ 805A100
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805A174 @ =gUnknown_0830FCA8
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _0805A168
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- subs r0, 0x1
- add r0, sp
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldObjectSetSpecialAnim
- ldrb r0, [r4, 0xA]
- cmp r6, r0
- bne _0805A146
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
-_0805A146:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- ble _0805A168
- ldrb r0, [r4, 0xA]
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- bne _0805A168
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0805A168:
- movs r0, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A174: .4byte gUnknown_0830FCA8
- thumb_func_end sub_805A100
-
- thumb_func_start sub_805A178
-sub_805A178: @ 805A178
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _0805A1B4 @ =gUnknown_0830FCAC
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _0805A1A8
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- add r0, sp
- ldrb r1, [r0]
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- movs r0, 0x1
- strh r0, [r5, 0x8]
-_0805A1A8:
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A1B4: .4byte gUnknown_0830FCAC
- thumb_func_end sub_805A178
-
- thumb_func_start sub_805A1B8
-sub_805A1B8: @ 805A1B8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _0805A1FC
- ldrb r0, [r4, 0xA]
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetSimpleGoAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldObjectSetSpecialAnim
- bl ScriptContext2_Disable
- ldr r1, _0805A204 @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0x6]
- ldr r0, _0805A208 @ =sub_805A08C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0805A1FC:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A204: .4byte gPlayerAvatar
-_0805A208: .4byte sub_805A08C
- thumb_func_end sub_805A1B8
-
- thumb_func_start sub_805A20C
-sub_805A20C: @ 805A20C
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl ScriptContext2_Enable
- bl sav1_reset_battle_music_maybe
- bl sub_8053F84
- ldr r2, _0805A258 @ =gPlayerAvatar
- ldrb r1, [r2]
- movs r0, 0xF7
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
- strb r0, [r2, 0x6]
- ldr r5, _0805A25C @ =taskFF_0805D1D4
- adds r0, r5, 0
- movs r1, 0xFF
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0805A260 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- bl _call_via_r5
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805A258: .4byte gPlayerAvatar
-_0805A25C: .4byte taskFF_0805D1D4
-_0805A260: .4byte gTasks
- thumb_func_end sub_805A20C
-
- thumb_func_start taskFF_0805D1D4
-taskFF_0805D1D4: @ 805A264
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0805A2C0 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805A2C4 @ =gMapObjects
- adds r5, r0, r1
- adds r0, r5, 0
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- cmp r0, 0
- beq _0805A290
- adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _0805A2B8
-_0805A290:
- ldrb r0, [r5, 0x1A]
- movs r1, 0x2
- bl sub_8127ED0
- ldr r0, _0805A2C8 @ =gTasks
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x8]
- bl sub_80608D0
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldObjectSetSpecialAnim
- ldr r0, _0805A2CC @ =sub_805A2D0
- str r0, [r4]
-_0805A2B8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805A2C0: .4byte gPlayerAvatar
-_0805A2C4: .4byte gMapObjects
-_0805A2C8: .4byte gTasks
-_0805A2CC: .4byte sub_805A2D0
- thumb_func_end taskFF_0805D1D4
-
- thumb_func_start sub_805A2D0
-sub_805A2D0: @ 805A2D0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _0805A33C @ =gPlayerAvatar
- ldrb r1, [r6, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805A340 @ =gMapObjects
- adds r4, r0, r1
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
- lsls r0, 24
- cmp r0, 0
- beq _0805A336
- movs r0, 0
- bl GetPlayerAvatarGraphicsIdByStateId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- movs r0, 0
- strb r0, [r6, 0x6]
- bl ScriptContext2_Disable
- ldrb r1, [r4, 0x1A]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805A344 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0
- bl DestroyTask
-_0805A336:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805A33C: .4byte gPlayerAvatar
-_0805A340: .4byte gMapObjects
-_0805A344: .4byte gSprites
- thumb_func_end sub_805A2D0
-
- thumb_func_start StartFishing
-StartFishing: @ 805A348
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _0805A374 @ =sub_805A37C
- adds r0, r5, 0
- movs r1, 0xFF
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0805A378 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x26]
- bl _call_via_r5
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805A374: .4byte sub_805A37C
-_0805A378: .4byte gTasks
- thumb_func_end StartFishing
-
- thumb_func_start sub_805A37C
-sub_805A37C: @ 805A37C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0805A3AC @ =gUnknown_0830FCB4
- ldr r2, _0805A3B0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0805A38E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0805A38E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805A3AC: .4byte gUnknown_0830FCB4
-_0805A3B0: .4byte gTasks
- thumb_func_end sub_805A37C
-
- thumb_func_start sub_805A3B4
-sub_805A3B4: @ 805A3B4
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptContext2_Enable
- ldr r1, _0805A3D0 @ =gPlayerAvatar
- movs r0, 0x1
- strb r0, [r1, 0x6]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A3D0: .4byte gPlayerAvatar
- thumb_func_end sub_805A3B4
-
- thumb_func_start fish1
-fish1: @ 805A3D4
- push {r4-r6,lr}
- sub sp, 0x10
- adds r5, r0, 0
- ldr r1, _0805A45C @ =gUnknown_0830FCF4
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- add r4, sp, 0x8
- ldr r1, _0805A460 @ =gUnknown_0830FCFA
- adds r0, r4, 0
- movs r2, 0x6
- bl memcpy
- movs r0, 0
- strh r0, [r5, 0x20]
- bl Random
- movs r2, 0x26
- ldrsh r1, [r5, r2]
- lsls r1, 1
- mov r2, sp
- adds r6, r2, r1
- lsls r0, 16
- lsrs r0, 16
- adds r4, r1
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl __modsi3
- ldrh r1, [r6]
- adds r1, r0
- strh r1, [r5, 0x22]
- ldr r3, _0805A464 @ =gMapObjects
- ldr r2, _0805A468 @ =gPlayerAvatar
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x5]
- strh r0, [r5, 0x24]
- ldrb r0, [r2, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- adds r4, r3
- adds r0, r4, 0
- bl FieldObjectClearAnimIfSpecialAnimActive
- ldrb r0, [r4, 0x1]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl sub_8059C3C
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A45C: .4byte gUnknown_0830FCF4
-_0805A460: .4byte gUnknown_0830FCFA
-_0805A464: .4byte gMapObjects
-_0805A468: .4byte gPlayerAvatar
- thumb_func_end fish1
-
- thumb_func_start fish2
-fish2: @ 805A46C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_805A954
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3B
- ble _0805A488
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0805A488:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end fish2
-
- thumb_func_start fish3
-fish3: @ 805A490
- push {r4,lr}
- adds r4, r0, 0
- bl MenuDisplayMessageBox
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- strh r1, [r4, 0xC]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- adds r1, r0, 0
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0805A4C4
- adds r0, r1, 0x4
- strh r0, [r4, 0xE]
-_0805A4C4:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0x9
- ble _0805A4D0
- movs r0, 0xA
- strh r0, [r4, 0xE]
-_0805A4D0:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end fish3
-
- thumb_func_start fish4
-fish4: @ 805A4D8
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, _0805A514 @ =gUnknown_0830FD00
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- bl sub_805A954
- ldrh r0, [r4, 0xA]
- adds r2, r0, 0x1
- strh r2, [r4, 0xA]
- ldr r0, _0805A518 @ =gMain
- ldrh r0, [r0, 0x2E]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0805A51C
- movs r0, 0xB
- strh r0, [r4, 0x8]
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0805A50E
- movs r0, 0xC
- strh r0, [r4, 0x8]
-_0805A50E:
- movs r0, 0x1
- b _0805A564
- .align 2, 0
-_0805A514: .4byte gUnknown_0830FD00
-_0805A518: .4byte gMain
-_0805A51C:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _0805A562
- strh r1, [r4, 0xA]
- ldrh r2, [r4, 0xC]
- movs r3, 0xC
- ldrsh r1, [r4, r3]
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r1, r0
- blt _0805A54E
- ldrh r0, [r4, 0x8]
- adds r1, r0, 0x1
- strh r1, [r4, 0x8]
- ldrh r2, [r4, 0x20]
- movs r3, 0x20
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _0805A548
- adds r0, r1, 0x1
- strh r0, [r4, 0x8]
-_0805A548:
- adds r0, r2, 0x1
- strh r0, [r4, 0x20]
- b _0805A562
-_0805A54E:
- adds r1, r2, 0x4
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- movs r2, 0xF
- bl MenuPrint
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
-_0805A562:
- movs r0, 0
-_0805A564:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end fish4
-
- thumb_func_start party_menu_update_status_condition_object
-party_menu_update_status_condition_object: @ 805A56C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_805A954
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- bl GetFishingWildMonListHeader
- lsls r0, 24
- cmp r0, 0
- beq _0805A590
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0805A596
-_0805A590:
- movs r0, 0xB
- strh r0, [r4, 0x8]
- b _0805A5BC
-_0805A596:
- ldr r0, _0805A5C4 @ =gPlayerAvatar
- ldrb r0, [r0, 0x4]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _0805A5C8 @ =gSprites
- adds r4, r0
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- bl sub_805FE08
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_0805A5BC:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A5C4: .4byte gPlayerAvatar
-_0805A5C8: .4byte gSprites
- thumb_func_end party_menu_update_status_condition_object
-
- thumb_func_start sub_805A5CC
-sub_805A5CC: @ 805A5CC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_805A954
- ldr r0, _0805A5F0 @ =gOtherText_OhABite
- movs r1, 0x4
- movs r2, 0x11
- bl MenuPrint
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A5F0: .4byte gOtherText_OhABite
- thumb_func_end sub_805A5CC
-
- thumb_func_start fish7
-fish7: @ 805A5F4
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _0805A628 @ =gUnknown_0830FD02
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- bl sub_805A954
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r0, 1
- add r0, sp
- lsls r1, 16
- asrs r1, 16
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r1, r0
- blt _0805A62C
- movs r0, 0xC
- b _0805A63C
- .align 2, 0
-_0805A628: .4byte gUnknown_0830FD02
-_0805A62C:
- ldr r0, _0805A648 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805A63E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
-_0805A63C:
- strh r0, [r4, 0x8]
-_0805A63E:
- movs r0, 0
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A648: .4byte gMain
- thumb_func_end fish7
-
- thumb_func_start fish8
-fish8: @ 805A64C
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r1, _0805A6B0 @ =gUnknown_0830FD08
- mov r0, sp
- movs r2, 0xC
- bl memcpy
- bl sub_805A954
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- cmp r1, r0
- blt _0805A6A2
- cmp r1, 0x1
- bgt _0805A6A6
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- movs r3, 0x20
- ldrsh r2, [r4, r3]
- lsls r2, 1
- movs r3, 0x26
- ldrsh r1, [r4, r3]
- lsls r1, 2
- adds r2, r1
- mov r3, sp
- adds r1, r3, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- lsls r0, 16
- asrs r0, 16
- cmp r1, r0
- ble _0805A6A6
-_0805A6A2:
- movs r0, 0x3
- strh r0, [r4, 0x8]
-_0805A6A6:
- movs r0, 0
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A6B0: .4byte gUnknown_0830FD08
- thumb_func_end fish8
-
- thumb_func_start sub_805A6B4
-sub_805A6B4: @ 805A6B4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_805A954
- ldr r0, _0805A6D8 @ =gOtherText_PokeOnHook
- bl sub_8072044
- bl MenuDisplayMessageBox
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A6D8: .4byte gOtherText_PokeOnHook
- thumb_func_end sub_805A6B4
-
- thumb_func_start sub_805A6DC
-sub_805A6DC: @ 805A6DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0805A780
- bl sub_805A954
- movs r0, 0xA
- ldrsh r6, [r5, r0]
- cmp r6, 0
- bne _0805A780
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0805A778
- ldr r7, _0805A76C @ =gPlayerAvatar
- ldrb r0, [r7, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r1, _0805A770 @ =gMapObjects
- mov r8, r1
- add r4, r8
- ldrh r1, [r5, 0x24]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl FieldObjectTurn
- ldrb r1, [r7]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0805A746
- ldrb r0, [r7, 0x5]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r0, [r1, 0x1A]
- movs r1, 0
- movs r2, 0
- bl sub_8127F28
-_0805A746:
- ldr r2, _0805A774 @ =gSprites
- ldrb r1, [r7, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x24]
- ldrb r1, [r7, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x26]
- bl MenuZeroFillScreen
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- b _0805A7A8
- .align 2, 0
-_0805A76C: .4byte gPlayerAvatar
-_0805A770: .4byte gMapObjects
-_0805A774: .4byte gSprites
-_0805A778:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0805A7A8
-_0805A780:
- ldr r1, _0805A7B4 @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0x6]
- bl ScriptContext2_Disable
- ldrh r0, [r5, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl FishingWildEncounter
- movs r0, 0x1
- bl sub_80BE97C
- ldr r0, _0805A7B8 @ =sub_805A37C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0805A7A8:
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A7B4: .4byte gPlayerAvatar
-_0805A7B8: .4byte sub_805A37C
- thumb_func_end sub_805A6DC
-
- thumb_func_start sub_805A7BC
-sub_805A7BC: @ 805A7BC
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_805A954
- ldr r0, _0805A7FC @ =gPlayerAvatar
- ldrb r0, [r0, 0x4]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _0805A800 @ =gSprites
- adds r4, r0
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- bl sub_805FDF8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _0805A804 @ =gOtherText_NotEvenANibble
- bl sub_8072044
- movs r0, 0xD
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A7FC: .4byte gPlayerAvatar
-_0805A800: .4byte gSprites
-_0805A804: .4byte gOtherText_NotEvenANibble
- thumb_func_end sub_805A7BC
-
- thumb_func_start sub_805A808
-sub_805A808: @ 805A808
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_805A954
- ldr r0, _0805A84C @ =gPlayerAvatar
- ldrb r0, [r0, 0x4]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _0805A850 @ =gSprites
- adds r4, r0
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- bl sub_805FDF8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _0805A854 @ =gOtherText_ItGotAway
- bl sub_8072044
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A84C: .4byte gPlayerAvatar
-_0805A850: .4byte gSprites
-_0805A854: .4byte gOtherText_ItGotAway
- thumb_func_end sub_805A808
-
- thumb_func_start fishD
-fishD: @ 805A858
- push {r4,lr}
- adds r4, r0, 0
- bl sub_805A954
- bl MenuDisplayMessageBox
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end fishD
-
- thumb_func_start sub_805A874
-sub_805A874: @ 805A874
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- bl sub_805A954
- ldr r7, _0805A908 @ =gSprites
- ldr r5, _0805A90C @ =gPlayerAvatar
- ldrb r0, [r5, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- adds r1, 0x3F
- ldrb r0, [r1]
- lsls r0, 27
- cmp r0, 0
- bge _0805A8FA
- ldrb r0, [r5, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _0805A910 @ =gMapObjects
- mov r8, r0
- add r4, r8
- ldrh r1, [r6, 0x24]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805B980
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl FieldObjectTurn
- ldrb r1, [r5]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0805A8DA
- ldrb r0, [r5, 0x5]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r0, [r1, 0x1A]
- movs r1, 0
- movs r2, 0
- bl sub_8127F28
-_0805A8DA:
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- movs r2, 0
- strh r2, [r0, 0x24]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_0805A8FA:
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805A908: .4byte gSprites
-_0805A90C: .4byte gPlayerAvatar
-_0805A910: .4byte gMapObjects
- thumb_func_end sub_805A874
-
- thumb_func_start fishF
-fishF: @ 805A914
- push {lr}
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0805A946
- ldr r1, _0805A94C @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0x6]
- bl ScriptContext2_Disable
- bl sub_806451C
- bl MenuZeroFillScreen
- movs r0, 0
- bl sub_80BE97C
- ldr r0, _0805A950 @ =sub_805A37C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0805A946:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0805A94C: .4byte gPlayerAvatar
-_0805A950: .4byte sub_805A37C
- thumb_func_end fishF
-
- thumb_func_start sub_805A954
-sub_805A954: @ 805A954
- push {r4-r7,lr}
- ldr r0, _0805AA40 @ =gPlayerAvatar
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805AA44 @ =gSprites
- adds r4, r0, r1
- adds r0, r4, 0
- bl AnimateSprite
- movs r0, 0
- strh r0, [r4, 0x24]
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x2B
- ldrb r5, [r0]
- movs r0, 0x2A
- adds r0, r4
- mov r12, r0
- ldrb r0, [r0]
- ldr r1, [r4, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r6, r5, 2
- adds r0, r6, r0
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r7, 0x1
- negs r7, r7
- cmp r0, r7
- beq _0805A9C6
- adds r3, r4, 0
- adds r3, 0x2C
- ldrb r2, [r3]
- lsls r1, r2, 26
- lsrs r1, 26
- adds r1, 0x1
- movs r0, 0x3F
- ands r1, r0
- movs r0, 0x40
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- mov r1, r12
- ldrb r0, [r1]
- ldr r1, [r4, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- adds r0, r6, r0
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, r7
- bne _0805A9CC
-_0805A9C6:
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0805A9CC:
- adds r0, r4, 0
- adds r0, 0x2A
- ldrb r0, [r0]
- ldr r1, [r4, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r0, r1
- ldrb r5, [r0]
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _0805A9FE
- movs r0, 0x8
- strh r0, [r4, 0x24]
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805A9FE
- ldr r0, _0805AA48 @ =0x0000fff8
- strh r0, [r4, 0x24]
-_0805A9FE:
- cmp r5, 0x5
- bne _0805AA06
- ldr r0, _0805AA48 @ =0x0000fff8
- strh r0, [r4, 0x26]
-_0805AA06:
- adds r0, r5, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0805AA16
- movs r0, 0x8
- strh r0, [r4, 0x26]
-_0805AA16:
- ldr r3, _0805AA40 @ =gPlayerAvatar
- ldrb r1, [r3]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0805AA3A
- ldr r2, _0805AA4C @ =gMapObjects
- ldrb r1, [r3, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1A]
- movs r1, 0x26
- ldrsh r2, [r4, r1]
- movs r1, 0x1
- bl sub_8127F28
-_0805AA3A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0805AA40: .4byte gPlayerAvatar
-_0805AA44: .4byte gSprites
-_0805AA48: .4byte 0x0000fff8
-_0805AA4C: .4byte gMapObjects
- thumb_func_end sub_805A954
-
thumb_func_start npc_clear_ids_and_state
npc_clear_ids_and_state: @ 805AA50
push {r4,lr}
@@ -30479,1885 +19602,4 @@ _080635EA:
bx r0
thumb_func_end npc_update_obj_anim_flag
- thumb_func_start GetAllGroundEffectFlags_OnSpawn
-GetAllGroundEffectFlags_OnSpawn: @ 80635F0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectUpdateMetatileBehaviors
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_Reflection
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_TallGrassOnSpawn
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_LongGrassOnSpawn
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_SandHeap
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_ShallowFlowingWater
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_ShortGrass
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_HotSprings
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetAllGroundEffectFlags_OnSpawn
-
- thumb_func_start GetAllGroundEffectFlags_OnBeginStep
-GetAllGroundEffectFlags_OnBeginStep: @ 8063638
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectUpdateMetatileBehaviors
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_Reflection
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_TallGrassOnBeginStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_LongGrassOnBeginStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_Tracks
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_SandHeap
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_ShallowFlowingWater
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_Puddle
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_ShortGrass
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_HotSprings
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetAllGroundEffectFlags_OnBeginStep
-
- thumb_func_start GetAllGroundEffectFlags_OnFinishStep
-GetAllGroundEffectFlags_OnFinishStep: @ 8063690
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectUpdateMetatileBehaviors
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_ShallowFlowingWater
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_SandHeap
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_Puddle
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_Ripple
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_ShortGrass
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_HotSprings
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_Seaweed
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetGroundEffectFlags_JumpLanding
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetAllGroundEffectFlags_OnFinishStep
-
- thumb_func_start FieldObjectUpdateMetatileBehaviors
-FieldObjectUpdateMetatileBehaviors: @ 80636E0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- strb r0, [r4, 0x1F]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- strb r0, [r4, 0x1E]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectUpdateMetatileBehaviors
-
- thumb_func_start GetGroundEffectFlags_Reflection
-GetGroundEffectFlags_Reflection: @ 8063708
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, _0806374C @ =gUnknown_08376008
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- adds r0, r4, 0
- bl FieldObjectCheckForReflectiveSurface
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08063750
- ldrb r1, [r4, 0x2]
- lsls r0, r1, 30
- cmp r0, 0
- blt _0806375A
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4, 0x2]
- subs r0, r2, 0x1
- lsls r0, 2
- add r0, sp
- ldr r1, [r5]
- ldr r0, [r0]
- orrs r1, r0
- str r1, [r5]
- b _0806375A
- .align 2, 0
-_0806374C: .4byte gUnknown_08376008
-_08063750:
- ldrb r1, [r4, 0x2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x2]
-_0806375A:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_Reflection
-
- thumb_func_start GetGroundEffectFlags_TallGrassOnSpawn
-GetGroundEffectFlags_TallGrassOnSpawn: @ 8063764
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_IsTallGrass
- lsls r0, 24
- cmp r0, 0
- beq _0806377C
- ldr r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- str r0, [r4]
-_0806377C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_TallGrassOnSpawn
-
- thumb_func_start GetGroundEffectFlags_TallGrassOnBeginStep
-GetGroundEffectFlags_TallGrassOnBeginStep: @ 8063784
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_IsTallGrass
- lsls r0, 24
- cmp r0, 0
- beq _0806379C
- ldr r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- str r0, [r4]
-_0806379C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_TallGrassOnBeginStep
-
- thumb_func_start GetGroundEffectFlags_LongGrassOnSpawn
-GetGroundEffectFlags_LongGrassOnSpawn: @ 80637A4
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _080637BC
- ldr r0, [r4]
- movs r1, 0x4
- orrs r0, r1
- str r0, [r4]
-_080637BC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_LongGrassOnSpawn
-
- thumb_func_start GetGroundEffectFlags_LongGrassOnBeginStep
-GetGroundEffectFlags_LongGrassOnBeginStep: @ 80637C4
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _080637DC
- ldr r0, [r4]
- movs r1, 0x8
- orrs r0, r1
- str r0, [r4]
-_080637DC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_LongGrassOnBeginStep
-
- thumb_func_start GetGroundEffectFlags_Tracks
-GetGroundEffectFlags_Tracks: @ 80637E4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsDeepSand
- lsls r0, 24
- cmp r0, 0
- beq _080637FE
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 1
- b _0806381A
-_080637FE:
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsSandOrDeepSand
- lsls r0, 24
- cmp r0, 0
- bne _08063816
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsUnusedFootprintMetatile
- lsls r0, 24
- cmp r0, 0
- beq _0806381E
-_08063816:
- ldr r0, [r5]
- movs r1, 0x80
-_0806381A:
- orrs r0, r1
- str r0, [r5]
-_0806381E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_Tracks
-
- thumb_func_start GetGroundEffectFlags_SandHeap
-GetGroundEffectFlags_SandHeap: @ 8063824
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsDeepSand
- lsls r0, 24
- cmp r0, 0
- beq _08063862
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsDeepSand
- lsls r0, 24
- cmp r0, 0
- beq _08063862
- ldrb r1, [r4, 0x2]
- lsls r0, r1, 27
- cmp r0, 0
- blt _0806386C
- movs r0, 0x11
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r4, 0x2]
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 4
- orrs r0, r1
- str r0, [r5]
- b _0806386C
-_08063862:
- ldrb r1, [r4, 0x2]
- movs r0, 0x11
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x2]
-_0806386C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_SandHeap
-
- thumb_func_start GetGroundEffectFlags_ShallowFlowingWater
-GetGroundEffectFlags_ShallowFlowingWater: @ 8063874
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsShallowFlowingWater
- lsls r0, 24
- cmp r0, 0
- beq _08063892
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsShallowFlowingWater
- lsls r0, 24
- cmp r0, 0
- bne _080638AA
-_08063892:
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsPacifidlogLog
- lsls r0, 24
- cmp r0, 0
- beq _080638C8
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsPacifidlogLog
- lsls r0, 24
- cmp r0, 0
- beq _080638C8
-_080638AA:
- ldrb r1, [r4, 0x2]
- lsls r0, r1, 28
- cmp r0, 0
- blt _080638D2
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r4, 0x2]
- ldr r0, [r5]
- movs r1, 0x40
- orrs r0, r1
- str r0, [r5]
- b _080638D2
-_080638C8:
- ldrb r1, [r4, 0x2]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x2]
-_080638D2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_ShallowFlowingWater
-
- thumb_func_start GetGroundEffectFlags_Puddle
-GetGroundEffectFlags_Puddle: @ 80638D8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsPuddle
- lsls r0, 24
- cmp r0, 0
- beq _08063900
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsPuddle
- lsls r0, 24
- cmp r0, 0
- beq _08063900
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 3
- orrs r0, r1
- str r0, [r5]
-_08063900:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_Puddle
-
- thumb_func_start GetGroundEffectFlags_Ripple
-GetGroundEffectFlags_Ripple: @ 8063908
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_HasRipples
- lsls r0, 24
- cmp r0, 0
- beq _08063922
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- str r0, [r4]
-_08063922:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_Ripple
-
- thumb_func_start GetGroundEffectFlags_ShortGrass
-GetGroundEffectFlags_ShortGrass: @ 8063928
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsShortGrass
- lsls r0, 24
- cmp r0, 0
- beq _08063966
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsShortGrass
- lsls r0, 24
- cmp r0, 0
- beq _08063966
- ldrb r1, [r4, 0x2]
- lsls r0, r1, 29
- cmp r0, 0
- blt _08063970
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4, 0x2]
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 10
- orrs r0, r1
- str r0, [r5]
- b _08063970
-_08063966:
- ldrb r1, [r4, 0x2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x2]
-_08063970:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_ShortGrass
-
- thumb_func_start GetGroundEffectFlags_HotSprings
-GetGroundEffectFlags_HotSprings: @ 8063978
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsHotSprings
- lsls r0, 24
- cmp r0, 0
- beq _080639B6
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsHotSprings
- lsls r0, 24
- cmp r0, 0
- beq _080639B6
- ldrb r1, [r4, 0x2]
- lsls r0, r1, 26
- cmp r0, 0
- blt _080639C0
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x2]
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 11
- orrs r0, r1
- str r0, [r5]
- b _080639C0
-_080639B6:
- ldrb r1, [r4, 0x2]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x2]
-_080639C0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_HotSprings
-
- thumb_func_start GetGroundEffectFlags_Seaweed
-GetGroundEffectFlags_Seaweed: @ 80639C8
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_IsSeaweed
- lsls r0, 24
- cmp r0, 0
- beq _080639E2
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r4]
-_080639E2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_Seaweed
-
- thumb_func_start GetGroundEffectFlags_JumpLanding
-GetGroundEffectFlags_JumpLanding: @ 80639E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r6, r1, 0
- ldr r0, [r7]
- ldr r1, _08063A24 @ =0x02000020
- ands r0, r1
- cmp r0, 0x20
- bne _08063A3A @ Is player landing after jumping?
- movs r5, 0
- ldr r0, _08063A28 @ =gJumpLanding_MetatileFunctionPointers
- mov r8, r0
-_08063A02:
- lsls r4, r5, 2
- mov r0, r8
- adds r1, r4, r0
- ldrb r0, [r7, 0x1E] @ Load metatile behavior
- ldr r1, [r1]
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _08063A30
- ldr r0, _08063A2C @ =gJumpLanding_Bitmasks
- adds r0, r4, r0
- ldr r1, [r6]
- ldr r0, [r0]
- orrs r1, r0
- str r1, [r6]
- b _08063A3A
- .align 2, 0
-_08063A24: .4byte 0x02000020
-_08063A28: .4byte gJumpLanding_MetatileFunctionPointers
-_08063A2C: .4byte gJumpLanding_Bitmasks
-_08063A30:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08063A02
-_08063A3A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end GetGroundEffectFlags_JumpLanding
-
- thumb_func_start FieldObjectCheckForReflectiveSurface
-FieldObjectCheckForReflectiveSurface: @ 8063A44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r5, r0, 0
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- adds r1, 0x8
- lsls r1, 12
- lsrs r1, 16
- str r1, [sp]
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- adds r0, 0x8
- lsls r0, 12
- movs r4, 0
- lsrs r2, r0, 16
- str r2, [sp, 0x4]
- asrs r0, 16
- cmp r4, r0
- blt _08063A7A
- b _08063B80
-_08063A7A:
- movs r0, 0x1
- mov r10, r0
-_08063A7E:
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- add r1, r10
- lsls r4, 16
- asrs r6, r4, 16
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- mov r9, r4
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- add r1, r10
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r2, 0x1
- ldr r1, [sp]
- lsls r0, r1, 16
- asrs r1, r0, 16
- mov r8, r0
- cmp r2, r1
- bge _08063B6E
- movs r0, 0x80
- lsls r0, 9
- asrs r7, r0, 16
-_08063AD8:
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- lsls r1, r2, 16
- asrs r4, r1, 16
- adds r0, r4
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- subs r0, r4
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- adds r0, r4
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- subs r0, r4
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, r8
- blt _08063AD8
-_08063B6E:
- movs r1, 0x80
- lsls r1, 9
- add r1, r9
- lsrs r4, r1, 16
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- cmp r1, r0
- bge _08063B80
- b _08063A7E
-_08063B80:
- movs r0, 0
-_08063B82:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectCheckForReflectiveSurface
-
- thumb_func_start GetReflectionTypeByMetatileBehavior
-GetReflectionTypeByMetatileBehavior: @ 8063B94
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsIce
- lsls r0, 24
- cmp r0, 0
- beq _08063BAA
- movs r0, 0x1
- b _08063BBC
-_08063BAA:
- adds r0, r4, 0
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- bne _08063BBA
- movs r0, 0
- b _08063BBC
-_08063BBA:
- movs r0, 0x2
-_08063BBC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetReflectionTypeByMetatileBehavior
-
- thumb_func_start GetLedgeJumpDirection
-GetLedgeJumpDirection: @ 8063BC4
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r4, 0
- beq _08063C0A
- cmp r4, 0x4
- bls _08063BE0
- subs r0, r4, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
-_08063BE0:
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r3, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08063C10 @ =gUnknown_08376040
- lsls r1, r4, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08063C14
-_08063C0A:
- movs r0, 0
- b _08063C1A
- .align 2, 0
-_08063C10: .4byte gUnknown_08376040
-_08063C14:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r0, 24
-_08063C1A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetLedgeJumpDirection
-
- thumb_func_start FieldObjectSetSpriteOamTableForLongGrass
-FieldObjectSetSpriteOamTableForLongGrass: @ 8063C20
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r0, [r5]
- lsls r0, 27
- cmp r0, 0
- blt _08063C74
- ldrb r0, [r5, 0x1E]
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _08063C74
- ldrb r0, [r5, 0x1F]
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _08063C74
- adds r4, 0x42
- ldrb r1, [r4]
- movs r6, 0x40
- negs r6, r6
- adds r0, r6, 0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- ldrb r0, [r5, 0xB]
- lsrs r0, 4
- bl ZCoordToPriority
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08063C74
- ldrb r0, [r4]
- adds r1, r6, 0
- ands r1, r0
- movs r0, 0x5
- orrs r1, r0
- strb r1, [r4]
-_08063C74:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectSetSpriteOamTableForLongGrass
-
- thumb_func_start IsZCoordMismatchAt
-IsZCoordMismatchAt: @ 8063C7C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r0, r1, 16
- lsls r2, 16
- lsrs r1, r2, 16
- cmp r4, 0
- beq _08063CAA
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08063CAA
- cmp r0, 0xF
- beq _08063CAA
- cmp r0, r4
- bne _08063CAE
-_08063CAA:
- movs r0, 0
- b _08063CB0
-_08063CAE:
- movs r0, 0x1
-_08063CB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end IsZCoordMismatchAt
-
- thumb_func_start FieldObjectUpdateZCoordAndPriority
-FieldObjectUpdateZCoordAndPriority: @ 8063CB8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x3]
- lsls r0, 29
- cmp r0, 0
- blt _08063D06
- adds r0, r4, 0
- bl FieldObjectUpdateZCoord
- ldr r1, _08063D0C @ =gFieldObjectPriorities_08376070
- ldrb r2, [r4, 0xB]
- lsls r2, 24
- lsrs r0, r2, 28
- adds r0, r1
- ldrb r0, [r0]
- adds r4, r5, 0
- adds r4, 0x42
- movs r1, 0x3F
- ands r1, r0
- ldrb r3, [r4]
- movs r0, 0x40
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- ldr r0, _08063D10 @ =gFieldObjectPriorities_08376060
- lsrs r2, 28
- adds r2, r0
- movs r0, 0x3
- ldrb r1, [r2]
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
-_08063D06:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063D0C: .4byte gFieldObjectPriorities_08376070
-_08063D10: .4byte gFieldObjectPriorities_08376060
- thumb_func_end FieldObjectUpdateZCoordAndPriority
-
- thumb_func_start InitObjectPriorityByZCoord
-InitObjectPriorityByZCoord: @ 8063D14
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08063D58 @ =gFieldObjectPriorities_08376070
- adds r2, r1, r2
- ldrb r2, [r2]
- movs r3, 0x42
- adds r3, r0
- mov r12, r3
- movs r3, 0x3F
- ands r3, r2
- mov r2, r12
- ldrb r4, [r2]
- movs r2, 0x40
- negs r2, r2
- ands r2, r4
- orrs r2, r3
- mov r3, r12
- strb r2, [r3]
- ldr r2, _08063D5C @ =gFieldObjectPriorities_08376060
- adds r1, r2
- movs r3, 0x3
- ldrb r2, [r1]
- ands r2, r3
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08063D58: .4byte gFieldObjectPriorities_08376070
-_08063D5C: .4byte gFieldObjectPriorities_08376060
- thumb_func_end InitObjectPriorityByZCoord
-
- thumb_func_start ZCoordToPriority
-ZCoordToPriority: @ 8063D60
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08063D6C @ =gFieldObjectPriorities_08376060
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08063D6C: .4byte gFieldObjectPriorities_08376060
- thumb_func_end ZCoordToPriority
-
- thumb_func_start FieldObjectUpdateZCoord
-FieldObjectUpdateZCoord: @ 8063D70
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r5, 0xF
- beq _08063DBE
- cmp r0, 0xF
- beq _08063DBE
- movs r3, 0xF
- adds r0, r5, 0
- ands r0, r3
- ldrb r1, [r4, 0xB]
- movs r2, 0x10
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r4, 0xB]
- cmp r5, 0
- beq _08063DBE
- cmp r5, 0xF
- beq _08063DBE
- lsls r0, r5, 4
- ands r2, r3
- orrs r2, r0
- strb r2, [r4, 0xB]
-_08063DBE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectUpdateZCoord
-
- thumb_func_start SetObjectSubpriorityByZCoord
-SetObjectSubpriorityByZCoord: @ 8063DC4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- adds r3, r1, 0
- adds r3, 0x29
- movs r5, 0
- ldrsb r5, [r3, r5]
- ldrh r4, [r1, 0x22]
- ldr r3, _08063E04 @ =gSpriteCoordOffsetY
- subs r4, r5
- ldrh r3, [r3]
- adds r4, r3
- adds r4, 0x8
- movs r3, 0xFF
- ands r4, r3
- lsrs r4, 4
- movs r3, 0x10
- subs r3, r4
- lsls r3, 17
- ldr r4, _08063E08 @ =gUnknown_08376050
- adds r0, r4
- lsrs r3, 16
- ldrb r0, [r0]
- adds r3, r0
- adds r2, r3
- adds r1, 0x43
- strb r2, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063E04: .4byte gSpriteCoordOffsetY
-_08063E08: .4byte gUnknown_08376050
- thumb_func_end SetObjectSubpriorityByZCoord
-
- thumb_func_start FieldObjectUpdateSubpriority
-FieldObjectUpdateSubpriority: @ 8063E0C
- push {lr}
- adds r2, r0, 0
- ldrb r0, [r2, 0x3]
- lsls r0, 29
- cmp r0, 0
- blt _08063E22
- ldrb r0, [r2, 0xB]
- lsrs r0, 4
- movs r2, 0x1
- bl SetObjectSubpriorityByZCoord
-_08063E22:
- pop {r0}
- bx r0
- thumb_func_end FieldObjectUpdateSubpriority
-
- thumb_func_start AreZCoordsCompatible
-AreZCoordsCompatible: @ 8063E28
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r0, 0
- beq _08063E3E
- cmp r1, 0
- beq _08063E3E
- cmp r0, r1
- bne _08063E42
-_08063E3E:
- movs r0, 0x1
- b _08063E44
-_08063E42:
- movs r0, 0
-_08063E44:
- pop {r1}
- bx r1
- thumb_func_end AreZCoordsCompatible
-
- thumb_func_start GroundEffect_SpawnOnTallGrass
-GroundEffect_SpawnOnTallGrass: @ 8063E48
- push {lr}
- ldr r3, _08063E8C @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063E90 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0x1
- str r0, [r3, 0x1C]
- movs r0, 0x4
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063E8C: .4byte gUnknown_0202FF84
-_08063E90: .4byte gSaveBlock1
- thumb_func_end GroundEffect_SpawnOnTallGrass
-
- thumb_func_start sub_8063E94
-sub_8063E94: @ 8063E94
- push {lr}
- ldr r3, _08063ED8 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063EDC @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0
- str r0, [r3, 0x1C]
- movs r0, 0x4
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063ED8: .4byte gUnknown_0202FF84
-_08063EDC: .4byte gSaveBlock1
- thumb_func_end sub_8063E94
-
- thumb_func_start sub_8063EE0
-sub_8063EE0: @ 8063EE0
- push {lr}
- ldr r3, _08063F24 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063F28 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0x1
- str r0, [r3, 0x1C]
- movs r0, 0x11
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063F24: .4byte gUnknown_0202FF84
-_08063F28: .4byte gSaveBlock1
- thumb_func_end sub_8063EE0
-
- thumb_func_start sub_8063F2C
-sub_8063F2C: @ 8063F2C
- push {lr}
- ldr r3, _08063F70 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063F74 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0
- str r0, [r3, 0x1C]
- movs r0, 0x11
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063F70: .4byte gUnknown_0202FF84
-_08063F74: .4byte gSaveBlock1
- thumb_func_end sub_8063F2C
-
- thumb_func_start GroundEffect_WaterReflection
-GroundEffect_WaterReflection: @ 8063F78
- push {lr}
- movs r2, 0
- bl SetUpReflection
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_WaterReflection
-
- thumb_func_start GroundEffect_IceReflection
-GroundEffect_IceReflection: @ 8063F84
- push {lr}
- movs r2, 0x1
- bl SetUpReflection
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_IceReflection
-
- thumb_func_start GroundEffect_FlowingWater
-GroundEffect_FlowingWater: @ 8063F90
- push {lr}
- adds r1, r0, 0
- movs r0, 0x22
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_FlowingWater
-
- thumb_func_start sub_8063FA0
-sub_8063FA0: @ 8063FA0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldr r1, _08063FC8 @ =gUnknown_08376080
- ldrb r0, [r0, 0xD]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl _call_via_r3
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063FC8: .4byte gUnknown_08376080
- thumb_func_end sub_8063FA0
-
- thumb_func_start sub_8063FCC
-sub_8063FCC: @ 8063FCC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldr r1, _08063FF4 @ =gUnknown_08376080
- ldrb r0, [r0, 0xD]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl _call_via_r3
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063FF4: .4byte gUnknown_08376080
- thumb_func_end sub_8063FCC
-
- thumb_func_start nullsub_50
-nullsub_50: @ 8063FF8
- bx lr
- thumb_func_end nullsub_50
-
- thumb_func_start DoTracksGroundEffect_Footprints
-DoTracksGroundEffect_Footprints: @ 8063FFC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r4, r2, 24
- lsrs r4, 24
- ldr r1, _08064044 @ =gSandFootprints_FieldEffectData
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldr r1, _08064048 @ =gUnknown_0202FF84
- movs r2, 0x14
- ldrsh r0, [r5, r2]
- str r0, [r1]
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- str r0, [r1, 0x4]
- movs r0, 0x95
- str r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [r1, 0xC]
- ldrb r0, [r5, 0x18]
- lsls r0, 28
- lsrs r0, 28
- str r0, [r1, 0x10]
- lsls r4, 1
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl FieldEffectStart
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08064044: .4byte gSandFootprints_FieldEffectData
-_08064048: .4byte gUnknown_0202FF84
- thumb_func_end DoTracksGroundEffect_Footprints
-
- thumb_func_start DoTracksGroundEffect_BikeTireTracks
-DoTracksGroundEffect_BikeTireTracks: @ 806404C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x10]
- ldr r0, [r4, 0x14]
- cmp r1, r0
- beq _0806408E
- ldr r2, _08064094 @ =gUnknown_0202FF84
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- str r0, [r2]
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- str r0, [r2, 0x4]
- movs r0, 0x95
- str r0, [r2, 0x8]
- movs r0, 0x2
- str r0, [r2, 0xC]
- ldr r3, _08064098 @ =gBikeTireTracks_Transitions
- ldrb r1, [r4, 0x18]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 2
- subs r0, 0x5
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- str r0, [r2, 0x10]
- movs r0, 0x23
- bl FieldEffectStart
-_0806408E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08064094: .4byte gUnknown_0202FF84
-_08064098: .4byte gBikeTireTracks_Transitions
- thumb_func_end DoTracksGroundEffect_BikeTireTracks
-
- thumb_func_start GroundEffect_Ripple
-GroundEffect_Ripple: @ 806409C
- push {lr}
- bl DoRippleFieldEffect
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_Ripple
-
- thumb_func_start GroundEffect_StepOnPuddle
-GroundEffect_StepOnPuddle: @ 80640A8
- push {lr}
- adds r1, r0, 0
- movs r0, 0xF
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_StepOnPuddle
-
- thumb_func_start GroundEffect_SandPile
-GroundEffect_SandPile: @ 80640B8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x27
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_SandPile
-
- thumb_func_start GroundEffect_JumpOnTallGrass
-GroundEffect_JumpOnTallGrass: @ 80640C8
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0806411C @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- str r0, [r1]
- movs r4, 0x12
- ldrsh r0, [r5, r4]
- str r0, [r1, 0x4]
- ldrb r0, [r5, 0xB]
- lsrs r0, 4
- str r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [r1, 0xC]
- movs r0, 0xC
- bl FieldEffectStart
- ldrb r0, [r5, 0x8]
- ldrb r1, [r5, 0x9]
- ldrb r2, [r5, 0xA]
- movs r7, 0x10
- ldrsh r3, [r5, r7]
- movs r7, 0x12
- ldrsh r4, [r5, r7]
- str r4, [sp]
- bl sub_8126FF0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- bne _08064112
- adds r0, r5, 0
- adds r1, r6, 0
- bl GroundEffect_SpawnOnTallGrass
-_08064112:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806411C: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnTallGrass
-
- thumb_func_start GroundEffect_JumpOnLongGrass
-GroundEffect_JumpOnLongGrass: @ 8064120
- push {lr}
- ldr r2, _08064144 @ =gUnknown_0202FF84
- movs r3, 0x10
- ldrsh r1, [r0, r3]
- str r1, [r2]
- movs r3, 0x12
- ldrsh r1, [r0, r3]
- str r1, [r2, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r2, 0x8]
- movs r0, 0x2
- str r0, [r2, 0xC]
- movs r0, 0x12
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08064144: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnLongGrass
-
- thumb_func_start GroundEffect_JumpOnShallowWater
-GroundEffect_JumpOnShallowWater: @ 8064148
- push {r4,lr}
- ldr r3, _08064174 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0x10
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08064174: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnShallowWater
-
- thumb_func_start GroundEffect_JumpOnWater
-GroundEffect_JumpOnWater: @ 8064178
- push {r4,lr}
- ldr r3, _080641A4 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0xE
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080641A4: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnWater
-
- thumb_func_start GroundEffect_JumpLandingDust
-GroundEffect_JumpLandingDust: @ 80641A8
- push {r4,lr}
- ldr r3, _080641D4 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0xA
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080641D4: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpLandingDust
-
- thumb_func_start GroundEffect_ShortGrass
-GroundEffect_ShortGrass: @ 80641D8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x29
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_ShortGrass
-
- thumb_func_start GroundEffect_HotSprings
-GroundEffect_HotSprings: @ 80641E8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2A
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_HotSprings
-
- thumb_func_start GroundEffect_Seaweed
-GroundEffect_Seaweed: @ 80641F8
- push {lr}
- ldr r2, _08064214 @ =gUnknown_0202FF84
- movs r3, 0x10
- ldrsh r1, [r0, r3]
- str r1, [r2]
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- str r0, [r2, 0x4]
- movs r0, 0x35
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08064214: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_Seaweed
-
- thumb_func_start sub_8064218
-sub_8064218: @ 8064218
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r4, 0
- ldr r0, _08064258 @ =gUnknown_083760A0
- mov r8, r0
-_0806422A:
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _08064240
- lsls r0, r4, 2
- add r0, r8
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r6, 0
- bl _call_via_r2
-_08064240:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsrs r5, 1
- cmp r4, 0x13
- bls _0806422A
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08064258: .4byte gUnknown_083760A0
- thumb_func_end sub_8064218
-
- thumb_func_start filters_out_some_ground_effects
-filters_out_some_ground_effects: @ 806425C
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldrb r0, [r2]
- lsls r0, 27
- cmp r0, 0
- bge _0806428A
- ldrb r1, [r2, 0x2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- adds r1, 0x8
- ands r0, r1
- subs r1, 0x18
- ands r0, r1
- strb r0, [r2, 0x2]
- ldr r0, [r3]
- ldr r1, _08064290 @ =0xfff9f7bd
- ands r0, r1
- str r0, [r3]
-_0806428A:
- pop {r0}
- bx r0
- .align 2, 0
-_08064290: .4byte 0xfff9f7bd
- thumb_func_end filters_out_some_ground_effects
-
- thumb_func_start FilterOutStepOnPuddleGroundEffectIfJumping
-FilterOutStepOnPuddleGroundEffectIfJumping: @ 8064294
- push {lr}
- adds r2, r1, 0
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _080642A8
- ldr r0, [r2]
- ldr r1, _080642AC @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
-_080642A8:
- pop {r0}
- bx r0
- .align 2, 0
-_080642AC: .4byte 0xfffffbff
- thumb_func_end FilterOutStepOnPuddleGroundEffectIfJumping
-
- thumb_func_start DoGroundEffects_OnSpawn
-DoGroundEffects_OnSpawn: @ 80642B0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 29
- cmp r0, 0
- bge _080642F4
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnSpawn
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_080642F4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnSpawn
-
- thumb_func_start DoGroundEffects_OnBeginStep
-DoGroundEffects_OnBeginStep: @ 80642FC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 29
- cmp r0, 0
- bge _08064348
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnBeginStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- adds r0, r4, 0
- mov r1, sp
- bl filters_out_some_ground_effects
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_08064348:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnBeginStep
-
- thumb_func_start DoGroundEffects_OnFinishStep
-DoGroundEffects_OnFinishStep: @ 8064350
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 28
- cmp r0, 0
- bge _0806439C
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnFinishStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- adds r0, r4, 0
- mov r1, sp
- bl FilterOutStepOnPuddleGroundEffectIfJumping
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- movs r1, 0x21
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_0806439C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnFinishStep
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
new file mode 100644
index 000000000..fc08732b0
--- /dev/null
+++ b/asm/field_player_avatar.s
@@ -0,0 +1,4636 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80587B4
+sub_80587B4: @ 80587B4
+ 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, _080587D0 @ =gMapObjects
+ adds r0, r2
+ ldr r2, _080587D4 @ =sub_80587D8
+ bl meta_step
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080587D0: .4byte gMapObjects
+_080587D4: .4byte sub_80587D8
+ thumb_func_end sub_80587B4
+
+ thumb_func_start sub_80587D8
+sub_80587D8: @ 80587D8
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_80587D8
+
+ thumb_func_start player_step
+player_step: @ 80587DC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r1, 16
+ lsrs r7, r1, 16
+ lsls r2, 16
+ lsrs r6, r2, 16
+ ldr r4, _0805884C @ =gPlayerAvatar
+ ldrb r1, [r4, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08058850 @ =gMapObjects
+ adds r5, r0, r1
+ adds r0, r5, 0
+ bl sub_8059D60
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0
+ bne _08058842
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl sub_80E5B38
+ adds r0, r5, 0
+ mov r1, r8
+ bl sub_8058854
+ lsls r0, 24
+ cmp r0, 0
+ bne _08058842
+ adds r0, r5, 0
+ bl npc_clear_strange_bits
+ bl DoPlayerAvatarTransition
+ bl TryDoMetatileBehaviorForcedMovment
+ lsls r0, 24
+ cmp r0, 0
+ bne _08058842
+ mov r0, r8
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl MovePlayerAvatarUsingKeypadInput
+ bl PlayerAllowForcedMovementIfMovingSameDirection
+_08058842:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805884C: .4byte gPlayerAvatar
+_08058850: .4byte gMapObjects
+ thumb_func_end player_step
+
+ thumb_func_start sub_8058854
+sub_8058854: @ 8058854
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805889E
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805889E
+ adds r0, r4, 0
+ bl FieldObjectGetSpecialAnim
+ lsls r0, 24
+ movs r1, 0xE7
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0x3
+ bhi _0805889A
+ cmp r5, 0
+ beq _0805889A
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ cmp r0, r5
+ beq _0805889A
+ adds r0, r4, 0
+ bl FieldObjectClearAnim
+ b _0805889E
+_0805889A:
+ movs r0, 0x1
+ b _080588A0
+_0805889E:
+ movs r0, 0
+_080588A0:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8058854
+
+ thumb_func_start npc_clear_strange_bits
+npc_clear_strange_bits: @ 80588A8
+ ldrb r2, [r0, 0x1]
+ movs r1, 0x11
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x5
+ negs r2, r2
+ ands r1, r2
+ adds r2, 0x2
+ ands r1, r2
+ strb r1, [r0, 0x1]
+ ldr r2, _080588C8 @ =gPlayerAvatar
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ bx lr
+ .align 2, 0
+_080588C8: .4byte gPlayerAvatar
+ thumb_func_end npc_clear_strange_bits
+
+ thumb_func_start MovePlayerAvatarUsingKeypadInput
+MovePlayerAvatarUsingKeypadInput: @ 80588CC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r1, 16
+ lsrs r4, r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r0, _080588F0 @ =gPlayerAvatar
+ ldrb r1, [r0]
+ movs r0, 0x6
+ ands r0, r1
+ cmp r0, 0
+ beq _080588F4
+ adds r0, r3, 0
+ adds r1, r4, 0
+ bl MovePlayerOnBike
+ b _080588FC
+ .align 2, 0
+_080588F0: .4byte gPlayerAvatar
+_080588F4:
+ adds r0, r3, 0
+ adds r1, r2, 0
+ bl MovePlayerNotOnBike
+_080588FC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end MovePlayerAvatarUsingKeypadInput
+
+ thumb_func_start PlayerAllowForcedMovementIfMovingSameDirection
+PlayerAllowForcedMovementIfMovingSameDirection: @ 8058904
+ push {lr}
+ ldr r2, _0805891C @ =gPlayerAvatar
+ ldrb r0, [r2, 0x2]
+ cmp r0, 0x2
+ bne _08058916
+ ldrb r1, [r2]
+ movs r0, 0xDF
+ ands r0, r1
+ strb r0, [r2]
+_08058916:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805891C: .4byte gPlayerAvatar
+ thumb_func_end PlayerAllowForcedMovementIfMovingSameDirection
+
+ thumb_func_start TryDoMetatileBehaviorForcedMovment
+TryDoMetatileBehaviorForcedMovment: @ 8058920
+ push {r4,lr}
+ ldr r4, _08058940 @ =gUnknown_0830FBA0
+ bl GetForcedMovementByMetatileBehavior
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r4
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058940: .4byte gUnknown_0830FBA0
+ thumb_func_end TryDoMetatileBehaviorForcedMovment
+
+ thumb_func_start GetForcedMovementByMetatileBehavior
+GetForcedMovementByMetatileBehavior: @ 8058944
+ push {r4-r6,lr}
+ ldr r3, _08058980 @ =gPlayerAvatar
+ ldrb r1, [r3]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ bne _08058996
+ ldr r2, _08058984 @ =gMapObjects
+ ldrb r1, [r3, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r5, [r0, 0x1E]
+ movs r4, 0
+ ldr r6, _08058988 @ =gUnknown_0830FB58
+_08058964:
+ lsls r0, r4, 2
+ adds r0, r6
+ ldr r1, [r0]
+ adds r0, r5, 0
+ bl _call_via_r1
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805898C
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ b _08058998
+ .align 2, 0
+_08058980: .4byte gPlayerAvatar
+_08058984: .4byte gMapObjects
+_08058988: .4byte gUnknown_0830FB58
+_0805898C:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x11
+ bls _08058964
+_08058996:
+ movs r0, 0
+_08058998:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end GetForcedMovementByMetatileBehavior
+
+ thumb_func_start ForcedMovement_None
+ForcedMovement_None: @ 80589A0
+ push {r4,lr}
+ ldr r4, _080589E4 @ =gPlayerAvatar
+ ldrb r1, [r4]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080589DA
+ ldrb r1, [r4, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080589E8 @ =gMapObjects
+ adds r0, r1
+ ldrb r2, [r0, 0x1]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x8
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+ ldrb r1, [r0, 0x18]
+ lsls r1, 28
+ lsrs r1, 28
+ bl FieldObjectSetDirection
+ ldrb r1, [r4]
+ movs r0, 0xBF
+ ands r0, r1
+ strb r0, [r4]
+_080589DA:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080589E4: .4byte gPlayerAvatar
+_080589E8: .4byte gMapObjects
+ thumb_func_end ForcedMovement_None
+
+ thumb_func_start DoForcedMovement
+DoForcedMovement: @ 80589EC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r9, r1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r6, _08058A2C @ =gPlayerAvatar
+ adds r0, r5, 0
+ bl CheckForPlayerAvatarCollision
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r7, r4, 0
+ ldrb r0, [r6]
+ movs r1, 0x40
+ mov r10, r1
+ movs r1, 0
+ mov r8, r1
+ mov r1, r10
+ orrs r0, r1
+ strb r0, [r6]
+ cmp r4, 0
+ beq _08058A48
+ bl ForcedMovement_None
+ cmp r4, 0x4
+ bhi _08058A30
+ movs r0, 0
+ b _08058A54
+ .align 2, 0
+_08058A2C: .4byte gPlayerAvatar
+_08058A30:
+ cmp r7, 0x6
+ bne _08058A3A
+ adds r0, r5, 0
+ bl PlayerJumpLedge
+_08058A3A:
+ ldrb r0, [r6]
+ mov r1, r10
+ orrs r0, r1
+ strb r0, [r6]
+ movs r0, 0x2
+ strb r0, [r6, 0x2]
+ b _08058A52
+_08058A48:
+ movs r0, 0x2
+ strb r0, [r6, 0x2]
+ adds r0, r5, 0
+ bl _call_via_r9
+_08058A52:
+ movs r0, 0x1
+_08058A54:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end DoForcedMovement
+
+ thumb_func_start DoForcedMovementInCurrentDirection
+DoForcedMovementInCurrentDirection: @ 8058A64
+ push {lr}
+ adds r1, r0, 0
+ ldr r0, _08058A90 @ =gPlayerAvatar
+ ldrb r2, [r0, 0x5]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _08058A94 @ =gMapObjects
+ adds r0, r2
+ ldrb r2, [r0, 0x1]
+ movs r3, 0x4
+ orrs r2, r3
+ strb r2, [r0, 0x1]
+ ldrb r0, [r0, 0x18]
+ lsrs r0, 4
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058A90: .4byte gPlayerAvatar
+_08058A94: .4byte gMapObjects
+ thumb_func_end DoForcedMovementInCurrentDirection
+
+ thumb_func_start ForcedMovement_Slip
+ForcedMovement_Slip: @ 8058A98
+ push {lr}
+ ldr r0, _08058AA8 @ =sub_80593C4
+ bl DoForcedMovementInCurrentDirection
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058AA8: .4byte sub_80593C4
+ thumb_func_end ForcedMovement_Slip
+
+ thumb_func_start sub_8058AAC
+sub_8058AAC: @ 8058AAC
+ push {lr}
+ ldr r1, _08058AC0 @ =PlayerGoSpeed0
+ movs r0, 0x1
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058AC0: .4byte PlayerGoSpeed0
+ thumb_func_end sub_8058AAC
+
+ thumb_func_start sub_8058AC4
+sub_8058AC4: @ 8058AC4
+ push {lr}
+ ldr r1, _08058AD8 @ =PlayerGoSpeed0
+ movs r0, 0x2
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058AD8: .4byte PlayerGoSpeed0
+ thumb_func_end sub_8058AC4
+
+ thumb_func_start sub_8058ADC
+sub_8058ADC: @ 8058ADC
+ push {lr}
+ ldr r1, _08058AF0 @ =PlayerGoSpeed0
+ movs r0, 0x3
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058AF0: .4byte PlayerGoSpeed0
+ thumb_func_end sub_8058ADC
+
+ thumb_func_start sub_8058AF4
+sub_8058AF4: @ 8058AF4
+ push {lr}
+ ldr r1, _08058B08 @ =PlayerGoSpeed0
+ movs r0, 0x4
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058B08: .4byte PlayerGoSpeed0
+ thumb_func_end sub_8058AF4
+
+ thumb_func_start sub_8058B0C
+sub_8058B0C: @ 8058B0C
+ push {lr}
+ ldr r1, _08058B20 @ =npc_use_some_d2s
+ movs r0, 0x1
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058B20: .4byte npc_use_some_d2s
+ thumb_func_end sub_8058B0C
+
+ thumb_func_start sub_8058B24
+sub_8058B24: @ 8058B24
+ push {lr}
+ ldr r1, _08058B38 @ =npc_use_some_d2s
+ movs r0, 0x2
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058B38: .4byte npc_use_some_d2s
+ thumb_func_end sub_8058B24
+
+ thumb_func_start sub_8058B3C
+sub_8058B3C: @ 8058B3C
+ push {lr}
+ ldr r1, _08058B50 @ =npc_use_some_d2s
+ movs r0, 0x3
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058B50: .4byte npc_use_some_d2s
+ thumb_func_end sub_8058B3C
+
+ thumb_func_start sub_8058B54
+sub_8058B54: @ 8058B54
+ push {lr}
+ ldr r1, _08058B68 @ =npc_use_some_d2s
+ movs r0, 0x4
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058B68: .4byte npc_use_some_d2s
+ thumb_func_end sub_8058B54
+
+ thumb_func_start ForcedMovement_Slide
+ForcedMovement_Slide: @ 8058B6C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08058B9C @ =gPlayerAvatar
+ ldrb r3, [r2, 0x5]
+ lsls r2, r3, 3
+ adds r2, r3
+ lsls r2, 2
+ ldr r3, _08058BA0 @ =gMapObjects
+ adds r2, r3
+ ldrb r3, [r2, 0x1]
+ movs r4, 0x4
+ orrs r3, r4
+ movs r4, 0x2
+ orrs r3, r4
+ strb r3, [r2, 0x1]
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058B9C: .4byte gPlayerAvatar
+_08058BA0: .4byte gMapObjects
+ thumb_func_end ForcedMovement_Slide
+
+ thumb_func_start ForcedMovement_SlideSouth
+ForcedMovement_SlideSouth: @ 8058BA4
+ push {lr}
+ ldr r1, _08058BB8 @ =sub_80593C4
+ movs r0, 0x1
+ bl ForcedMovement_Slide
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058BB8: .4byte sub_80593C4
+ thumb_func_end ForcedMovement_SlideSouth
+
+ thumb_func_start ForcedMovement_SlideNorth
+ForcedMovement_SlideNorth: @ 8058BBC
+ push {lr}
+ ldr r1, _08058BD0 @ =sub_80593C4
+ movs r0, 0x2
+ bl ForcedMovement_Slide
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058BD0: .4byte sub_80593C4
+ thumb_func_end ForcedMovement_SlideNorth
+
+ thumb_func_start ForcedMovement_SlideWest
+ForcedMovement_SlideWest: @ 8058BD4
+ push {lr}
+ ldr r1, _08058BE8 @ =sub_80593C4
+ movs r0, 0x3
+ bl ForcedMovement_Slide
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058BE8: .4byte sub_80593C4
+ thumb_func_end ForcedMovement_SlideWest
+
+ thumb_func_start ForcedMovement_SlideEast
+ForcedMovement_SlideEast: @ 8058BEC
+ push {lr}
+ ldr r1, _08058C00 @ =sub_80593C4
+ movs r0, 0x4
+ bl ForcedMovement_Slide
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058C00: .4byte sub_80593C4
+ thumb_func_end ForcedMovement_SlideEast
+
+ thumb_func_start sub_8058C04
+sub_8058C04: @ 8058C04
+ push {lr}
+ bl sub_8059F94
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8058C04
+
+ thumb_func_start sub_8058C10
+sub_8058C10: @ 8058C10
+ push {lr}
+ bl sub_805A06C
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8058C10
+
+ thumb_func_start ForcedMovement_MuddySlope
+ForcedMovement_MuddySlope: @ 8058C1C
+ push {r4,lr}
+ ldr r0, _08058C60 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08058C64 @ =gMapObjects
+ adds r4, r0, r1
+ ldrb r1, [r4, 0x18]
+ movs r0, 0xF0
+ ands r0, r1
+ cmp r0, 0x20
+ bne _08058C42
+ bl sub_80E6034
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bgt _08058C6C
+_08058C42:
+ movs r0, 0
+ bl sub_80E6010
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ ldr r1, _08058C68 @ =sub_80593C4
+ movs r0, 0x1
+ bl DoForcedMovement
+ lsls r0, 24
+ lsrs r0, 24
+ b _08058C6E
+ .align 2, 0
+_08058C60: .4byte gPlayerAvatar
+_08058C64: .4byte gMapObjects
+_08058C68: .4byte sub_80593C4
+_08058C6C:
+ movs r0, 0
+_08058C6E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end ForcedMovement_MuddySlope
+
+ thumb_func_start MovePlayerNotOnBike
+MovePlayerNotOnBike: @ 8058C74
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 16
+ lsrs r5, 16
+ ldr r6, _08058CA0 @ =gUnknown_0830FBEC
+ adds r0, r4, 0
+ bl CheckMovementInputNotOnBike
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r6
+ ldr r2, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl _call_via_r2
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08058CA0: .4byte gUnknown_0830FBEC
+ thumb_func_end MovePlayerNotOnBike
+
+ thumb_func_start CheckMovementInputNotOnBike
+CheckMovementInputNotOnBike: @ 8058CA4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _08058CBC
+ ldr r0, _08058CB8 @ =gPlayerAvatar
+ strb r4, [r0, 0x2]
+ movs r0, 0
+ b _08058CDE
+ .align 2, 0
+_08058CB8: .4byte gPlayerAvatar
+_08058CBC:
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ beq _08058CD8
+ ldr r1, _08058CD4 @ =gPlayerAvatar
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0x2
+ beq _08058CD8
+ movs r0, 0x1
+ b _08058CDC
+ .align 2, 0
+_08058CD4: .4byte gPlayerAvatar
+_08058CD8:
+ ldr r1, _08058CE4 @ =gPlayerAvatar
+ movs r0, 0x2
+_08058CDC:
+ strb r0, [r1, 0x2]
+_08058CDE:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058CE4: .4byte gPlayerAvatar
+ thumb_func_end CheckMovementInputNotOnBike
+
+ thumb_func_start PlayerNotOnBikeNotMoving
+PlayerNotOnBikeNotMoving: @ 8058CE8
+ push {lr}
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ bl PlayerFaceDirection
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerNotOnBikeNotMoving
+
+ thumb_func_start PlayerNotOnBikeTurningInPlace
+PlayerNotOnBikeTurningInPlace: @ 8058CFC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl PlayerTurnInPlace
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerNotOnBikeTurningInPlace
+
+ thumb_func_start sub_8058D0C
+sub_8058D0C: @ 8058D0C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r1, 16
+ lsrs r4, r1, 16
+ adds r0, r5, 0
+ bl CheckForPlayerAvatarCollision
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ cmp r0, 0
+ beq _08058D44
+ cmp r0, 0x6
+ bne _08058D32
+ adds r0, r5, 0
+ bl PlayerJumpLedge
+ b _08058DAE
+_08058D32:
+ subs r0, r1, 0x5
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _08058DAE
+ adds r0, r5, 0
+ bl PlayerNotOnBikeCollide
+ b _08058DAE
+_08058D44:
+ ldr r6, _08058D58 @ =gPlayerAvatar
+ ldrb r1, [r6]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _08058D5C
+ adds r0, r5, 0
+ bl sub_80593C4
+ b _08058DAE
+ .align 2, 0
+_08058D58: .4byte gPlayerAvatar
+_08058D5C:
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _08058DA8
+ movs r0, 0x2
+ ands r4, r0
+ cmp r4, 0
+ beq _08058DA8
+ movs r0, 0x86
+ lsls r0, 4
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _08058DA8
+ ldr r2, _08058DA4 @ =gMapObjects
+ ldrb r1, [r6, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1E]
+ bl sub_80E5DEC
+ lsls r0, 24
+ cmp r0, 0
+ bne _08058DA8
+ adds r0, r5, 0
+ bl sub_805940C
+ ldrb r1, [r6]
+ movs r0, 0x80
+ orrs r0, r1
+ strb r0, [r6]
+ b _08058DAE
+ .align 2, 0
+_08058DA4: .4byte gMapObjects
+_08058DA8:
+ adds r0, r5, 0
+ bl PlayerGoSpeed0
+_08058DAE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8058D0C
+
+ thumb_func_start CheckForPlayerAvatarCollision
+CheckForPlayerAvatarCollision: @ 8058DB4
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _08058E18 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08058E1C @ =gMapObjects
+ adds r4, r0
+ ldrh r1, [r4, 0x10]
+ add r0, sp, 0x4
+ strh r1, [r0]
+ ldrh r0, [r4, 0x12]
+ mov r5, sp
+ adds r5, 0x6
+ strh r0, [r5]
+ adds r0, r6, 0
+ add r1, sp, 0x4
+ adds r2, r5, 0
+ bl MoveCoords
+ add r0, sp, 0x4
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ add r1, sp, 0x4
+ movs r3, 0
+ ldrsh r1, [r1, r3]
+ movs r3, 0
+ ldrsh r2, [r5, r3]
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl CheckForFieldObjectCollision
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08058E18: .4byte gPlayerAvatar
+_08058E1C: .4byte gMapObjects
+ thumb_func_end CheckForPlayerAvatarCollision
+
+ thumb_func_start CheckForFieldObjectCollision
+CheckForFieldObjectCollision: @ 8058E20
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ ldr r4, [sp, 0x24]
+ lsls r1, 16
+ lsls r2, 16
+ lsls r3, 24
+ lsrs r6, r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ mov r10, r4
+ lsrs r7, r1, 16
+ asrs r5, r1, 16
+ lsrs r1, r2, 16
+ mov r9, r1
+ asrs r4, r2, 16
+ adds r1, r5, 0
+ adds r2, r4, 0
+ adds r3, r6, 0
+ bl npc_block_way
+ lsls r0, 24
+ lsrs r0, 24
+ mov r1, sp
+ strb r0, [r1]
+ cmp r0, 0x3
+ bne _08058E70
+ adds r0, r5, 0
+ adds r1, r4, 0
+ adds r2, r6, 0
+ bl sub_8058EF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08058E70
+ movs r0, 0x5
+ b _08058EDE
+_08058E70:
+ lsls r5, r7, 16
+ asrs r0, r5, 16
+ mov r8, r0
+ mov r1, r9
+ lsls r4, r1, 16
+ asrs r7, r4, 16
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl ShouldJumpLedge
+ lsls r0, 24
+ cmp r0, 0
+ beq _08058E94
+ movs r0, 0x2B
+ bl sav12_xor_increment
+ movs r0, 0x6
+ b _08058EDE
+_08058E94:
+ mov r0, sp
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bne _08058EB0
+ mov r0, r8
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl sub_8058F6C
+ lsls r0, 24
+ cmp r0, 0
+ beq _08058EB0
+ movs r0, 0x7
+ b _08058EDE
+_08058EB0:
+ mov r0, sp
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08058EDA
+ asrs r5, 16
+ asrs r4, 16
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl CheckForRotatingGatePuzzleCollision
+ cmp r0, 0
+ beq _08058ECE
+ movs r0, 0x8
+ b _08058EDE
+_08058ECE:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ mov r2, r10
+ mov r3, sp
+ bl check_acro_bike_metatile
+_08058EDA:
+ mov r0, sp
+ ldrb r0, [r0]
+_08058EDE:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckForFieldObjectCollision
+
+ thumb_func_start sub_8058EF0
+sub_8058EF0: @ 8058EF0
+ push {r4-r6,lr}
+ lsls r0, 16
+ lsrs r3, r0, 16
+ lsls r1, 16
+ lsrs r4, r1, 16
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r0, _08058F3C @ =gPlayerAvatar
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _08058F40
+ lsls r5, r3, 16
+ asrs r0, r5, 16
+ lsls r4, 16
+ asrs r1, r4, 16
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _08058F40
+ lsrs r0, r5, 16
+ lsrs r1, r4, 16
+ movs r2, 0x3
+ bl GetFieldObjectIdByXYZ
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x10
+ bne _08058F40
+ adds r0, r6, 0
+ bl sub_805A20C
+ movs r0, 0x1
+ b _08058F42
+ .align 2, 0
+_08058F3C: .4byte gPlayerAvatar
+_08058F40:
+ movs r0, 0
+_08058F42:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8058EF0
+
+ thumb_func_start ShouldJumpLedge
+ShouldJumpLedge: @ 8058F48
+ push {lr}
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r0, 16
+ asrs r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ bl GetLedgeJumpDirection
+ lsls r0, 24
+ cmp r0, 0
+ bne _08058F64
+ movs r0, 0
+ b _08058F66
+_08058F64:
+ movs r0, 0x1
+_08058F66:
+ pop {r1}
+ bx r1
+ thumb_func_end ShouldJumpLedge
+
+ thumb_func_start sub_8058F6C
+sub_8058F6C: @ 8058F6C
+ push {r4-r7,lr}
+ sub sp, 0x4
+ mov r3, sp
+ strh r0, [r3]
+ mov r5, sp
+ adds r5, 0x2
+ strh r1, [r5]
+ lsls r2, 24
+ lsrs r7, r2, 24
+ ldr r0, _08059004 @ =0x00000829
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805900C
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl GetFieldObjectIdByXY
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x10
+ beq _0805900C
+ ldr r0, _08059008 @ =gMapObjects
+ lsls r1, r6, 3
+ adds r1, r6
+ lsls r1, 2
+ adds r4, r1, r0
+ ldrb r0, [r4, 0x5]
+ cmp r0, 0x57
+ bne _0805900C
+ ldrh r1, [r4, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r4, 0x12]
+ strh r0, [r5]
+ adds r0, r7, 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]
+ adds r0, r4, 0
+ adds r3, r7, 0
+ bl npc_block_way
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805900C
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8056F08
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805900C
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl task_add_bump_boulder
+ movs r0, 0x1
+ b _0805900E
+ .align 2, 0
+_08059004: .4byte 0x00000829
+_08059008: .4byte gMapObjects
+_0805900C:
+ movs r0, 0
+_0805900E:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8058F6C
+
+ thumb_func_start check_acro_bike_metatile
+check_acro_bike_metatile: @ 8059018
+ push {r4-r7,lr}
+ adds r6, r3, 0
+ lsls r2, 24
+ lsrs r5, r2, 24
+ movs r4, 0
+ ldr r7, _08059040 @ =gUnknown_0830FBF8
+_08059024:
+ lsls r0, r4, 2
+ adds r0, r7
+ ldr r1, [r0]
+ adds r0, r5, 0
+ bl _call_via_r1
+ lsls r0, 24
+ cmp r0, 0
+ beq _08059048
+ ldr r0, _08059044 @ =gUnknown_0830FC0C
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ strb r0, [r6]
+ b _08059052
+ .align 2, 0
+_08059040: .4byte gUnknown_0830FBF8
+_08059044: .4byte gUnknown_0830FC0C
+_08059048:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x4
+ bls _08059024
+_08059052:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end check_acro_bike_metatile
+
+ thumb_func_start SetPlayerAvatarTransitionFlags
+SetPlayerAvatarTransitionFlags: @ 8059058
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r2, _08059070 @ =gPlayerAvatar
+ ldrb r1, [r2, 0x1]
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ bl DoPlayerAvatarTransition
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059070: .4byte gPlayerAvatar
+ thumb_func_end SetPlayerAvatarTransitionFlags
+
+ thumb_func_start DoPlayerAvatarTransition
+DoPlayerAvatarTransition: @ 8059074
+ push {r4,r5,lr}
+ ldr r0, _080590BC @ =gPlayerAvatar
+ ldrb r4, [r0, 0x1]
+ cmp r4, 0
+ beq _080590B4
+ movs r5, 0
+_08059080:
+ movs r0, 0x1
+ ands r0, r4
+ cmp r0, 0
+ beq _080590A2
+ ldr r0, _080590C0 @ =gUnknown_0830FC14
+ lsls r2, r5, 2
+ adds r2, r0
+ ldr r0, _080590BC @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080590C4 @ =gMapObjects
+ adds r0, r1
+ ldr r1, [r2]
+ bl _call_via_r1
+_080590A2:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsrs r4, 1
+ cmp r5, 0x7
+ bls _08059080
+ ldr r1, _080590BC @ =gPlayerAvatar
+ movs r0, 0
+ strb r0, [r1, 0x1]
+_080590B4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080590BC: .4byte gPlayerAvatar
+_080590C0: .4byte gUnknown_0830FC14
+_080590C4: .4byte gMapObjects
+ thumb_func_end DoPlayerAvatarTransition
+
+ thumb_func_start nullsub_49
+nullsub_49: @ 80590C8
+ bx lr
+ thumb_func_end nullsub_49
+
+ thumb_func_start PlayerAvatarTransition_Normal
+PlayerAvatarTransition_Normal: @ 80590CC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl FieldObjectTurn
+ movs r0, 0x1
+ bl SetPlayerAvatarStateMask
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerAvatarTransition_Normal
+
+ thumb_func_start PlayerAvatarTransition_MachBike
+PlayerAvatarTransition_MachBike: @ 80590F8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x1
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl FieldObjectTurn
+ movs r0, 0x2
+ bl SetPlayerAvatarStateMask
+ movs r0, 0
+ movs r1, 0
+ bl sub_80E5FCC
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerAvatarTransition_MachBike
+
+ thumb_func_start PlayerAvatarTransition_AcroBike
+PlayerAvatarTransition_AcroBike: @ 805912C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x2
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl FieldObjectTurn
+ movs r0, 0x4
+ bl SetPlayerAvatarStateMask
+ movs r0, 0
+ movs r1, 0
+ bl sub_80E5FCC
+ bl sub_80E6084
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerAvatarTransition_AcroBike
+
+ thumb_func_start PlayerAvatarTransition_Surfing
+PlayerAvatarTransition_Surfing: @ 8059164
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x3
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl FieldObjectTurn
+ movs r0, 0x8
+ bl SetPlayerAvatarStateMask
+ ldr r1, _080591B8 @ =gUnknown_0202FF84
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ str r0, [r1]
+ movs r2, 0x12
+ ldrsh r0, [r4, r2]
+ str r0, [r1, 0x4]
+ ldr r0, _080591BC @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ str r0, [r1, 0x8]
+ movs r0, 0x8
+ bl FieldEffectStart
+ lsls r0, 24
+ lsrs r0, 24
+ strb r0, [r4, 0x1A]
+ movs r1, 0x1
+ bl sub_8127ED0
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080591B8: .4byte gUnknown_0202FF84
+_080591BC: .4byte gPlayerAvatar
+ thumb_func_end PlayerAvatarTransition_Surfing
+
+ thumb_func_start PlayerAvatarTransition_Underwater
+PlayerAvatarTransition_Underwater: @ 80591C0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x4
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl FieldObjectTurn
+ movs r0, 0x10
+ bl SetPlayerAvatarStateMask
+ ldrb r0, [r4, 0x4]
+ bl sub_8128124
+ strb r0, [r4, 0x1A]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerAvatarTransition_Underwater
+
+ thumb_func_start sub_80591F4
+sub_80591F4: @ 80591F4
+ ldr r2, _08059200 @ =gPlayerAvatar
+ ldrb r1, [r2]
+ movs r0, 0x20
+ orrs r0, r1
+ strb r0, [r2]
+ bx lr
+ .align 2, 0
+_08059200: .4byte gPlayerAvatar
+ thumb_func_end sub_80591F4
+
+ thumb_func_start sub_8059204
+sub_8059204: @ 8059204
+ push {r4,lr}
+ ldr r4, _08059230 @ =gPlayerAvatar
+ movs r0, 0
+ strb r0, [r4, 0x3]
+ bl PlayerIsAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08059242
+ bl PlayerCheckIfAnimFinishedOrInactive
+ lsls r0, 24
+ cmp r0, 0
+ bne _08059234
+ bl player_is_anim_in_certain_ranges
+ lsls r0, 24
+ cmp r0, 0
+ bne _08059242
+ movs r0, 0x1
+ b _08059240
+ .align 2, 0
+_08059230: .4byte gPlayerAvatar
+_08059234:
+ bl sub_80592A4
+ lsls r0, 24
+ cmp r0, 0
+ bne _08059242
+ movs r0, 0x2
+_08059240:
+ strb r0, [r4, 0x3]
+_08059242:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059204
+
+ thumb_func_start player_is_anim_in_certain_ranges
+player_is_anim_in_certain_ranges: @ 8059248
+ push {lr}
+ ldr r2, _08059294 @ =gMapObjects
+ ldr r0, _08059298 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0, 0x1C]
+ cmp r1, 0x3
+ bls _0805928E
+ adds r0, r1, 0
+ subs r0, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ bls _0805928E
+ adds r0, r1, 0
+ subs r0, 0x19
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xF
+ bls _0805928E
+ adds r0, r1, 0
+ subs r0, 0x62
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB
+ bls _0805928E
+ adds r0, r1, 0
+ subs r0, 0x7A
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bhi _0805929C
+_0805928E:
+ movs r0, 0x1
+ b _0805929E
+ .align 2, 0
+_08059294: .4byte gMapObjects
+_08059298: .4byte gPlayerAvatar
+_0805929C:
+ movs r0, 0
+_0805929E:
+ pop {r1}
+ bx r1
+ thumb_func_end player_is_anim_in_certain_ranges
+
+ thumb_func_start sub_80592A4
+sub_80592A4: @ 80592A4
+ push {lr}
+ bl player_is_anim_in_certain_ranges
+ lsls r0, 24
+ cmp r0, 0
+ beq _080592C0
+ ldr r0, _080592BC @ =gPlayerAvatar
+ ldrb r0, [r0, 0x2]
+ cmp r0, 0x1
+ beq _080592C0
+ movs r0, 0x1
+ b _080592C2
+ .align 2, 0
+_080592BC: .4byte gPlayerAvatar
+_080592C0:
+ movs r0, 0
+_080592C2:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80592A4
+
+ thumb_func_start PlayerIsAnimActive
+PlayerIsAnimActive: @ 80592C8
+ push {lr}
+ ldr r0, _080592E4 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080592E8 @ =gMapObjects
+ adds r0, r1
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080592E4: .4byte gPlayerAvatar
+_080592E8: .4byte gMapObjects
+ thumb_func_end PlayerIsAnimActive
+
+ thumb_func_start PlayerCheckIfAnimFinishedOrInactive
+PlayerCheckIfAnimFinishedOrInactive: @ 80592EC
+ push {lr}
+ ldr r0, _08059308 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805930C @ =gMapObjects
+ adds r0, r1
+ bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08059308: .4byte gPlayerAvatar
+_0805930C: .4byte gMapObjects
+ thumb_func_end PlayerCheckIfAnimFinishedOrInactive
+
+ thumb_func_start player_set_x22
+player_set_x22: @ 8059310
+ ldr r3, _08059324 @ =gMapObjects
+ ldr r1, _08059328 @ =gPlayerAvatar
+ ldrb r2, [r1, 0x5]
+ lsls r1, r2, 3
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r3
+ adds r1, 0x22
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_08059324: .4byte gMapObjects
+_08059328: .4byte gPlayerAvatar
+ thumb_func_end player_set_x22
+
+ thumb_func_start player_get_x22
+player_get_x22: @ 805932C
+ ldr r2, _08059340 @ =gMapObjects
+ ldr r0, _08059344 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x22
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_08059340: .4byte gMapObjects
+_08059344: .4byte gPlayerAvatar
+ thumb_func_end player_get_x22
+
+ thumb_func_start sub_8059348
+sub_8059348: @ 8059348
+ push {lr}
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r0, _08059368 @ =gPlayerAvatar
+ ldrb r2, [r0, 0x5]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ ldr r2, _0805936C @ =gMapObjects
+ adds r0, r2
+ bl FieldObjectForceSetSpecialAnim
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059368: .4byte gPlayerAvatar
+_0805936C: .4byte gMapObjects
+ thumb_func_end sub_8059348
+
+ thumb_func_start player_npc_set_state_and_x22_etc
+player_npc_set_state_and_x22_etc: @ 8059370
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ bl PlayerIsAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805939E
+ adds r0, r4, 0
+ bl player_set_x22
+ ldr r0, _080593A4 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080593A8 @ =gMapObjects
+ adds r0, r1
+ adds r1, r5, 0
+ bl FieldObjectSetSpecialAnim
+_0805939E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080593A4: .4byte gPlayerAvatar
+_080593A8: .4byte gMapObjects
+ thumb_func_end player_npc_set_state_and_x22_etc
+
+ thumb_func_start PlayerGoSpeed0
+PlayerGoSpeed0: @ 80593AC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetGoSpeed0AnimId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerGoSpeed0
+
+ thumb_func_start sub_80593C4
+sub_80593C4: @ 80593C4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8060744
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80593C4
+
+ thumb_func_start npc_use_some_d2s
+npc_use_some_d2s: @ 80593DC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl d2s_08064034
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end npc_use_some_d2s
+
+ thumb_func_start sub_80593F4
+sub_80593F4: @ 80593F4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_806079C
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80593F4
+
+ thumb_func_start sub_805940C
+sub_805940C: @ 805940C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80607F4
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805940C
+
+ thumb_func_start PlayerOnBikeCollide
+PlayerOnBikeCollide: @ 8059424
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl PlayCollisionSoundIfNotFacingWarp
+ adds r0, r4, 0
+ bl GetStepInPlaceDelay16AnimId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerOnBikeCollide
+
+ thumb_func_start PlayerNotOnBikeCollide
+PlayerNotOnBikeCollide: @ 8059448
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl PlayCollisionSoundIfNotFacingWarp
+ adds r0, r4, 0
+ bl GetStepInPlaceDelay32AnimId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerNotOnBikeCollide
+
+ thumb_func_start PlayerFaceDirection
+PlayerFaceDirection: @ 805946C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetFaceDirectionAnimId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerFaceDirection
+
+ thumb_func_start PlayerTurnInPlace
+PlayerTurnInPlace: @ 8059484
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetStepInPlaceDelay8AnimId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerTurnInPlace
+
+ thumb_func_start PlayerJumpLedge
+PlayerJumpLedge: @ 805949C
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0xA
+ bl PlaySE
+ adds r0, r4, 0
+ bl GetJumpLedgeAnimId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x8
+ bl player_npc_set_state_and_x22_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end PlayerJumpLedge
+
+ thumb_func_start sub_80594C0
+sub_80594C0: @ 80594C0
+ push {r4,lr}
+ ldr r4, _080594FC @ =gPlayerAvatar
+ ldrb r0, [r4, 0x3]
+ cmp r0, 0x2
+ beq _080594CE
+ cmp r0, 0
+ bne _080594F6
+_080594CE:
+ bl player_should_look_direction_be_enforced_upon_movement
+ lsls r0, 24
+ cmp r0, 0
+ beq _080594F6
+ ldr r2, _08059500 @ =gMapObjects
+ ldrb r1, [r4, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8059348
+_080594F6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080594FC: .4byte gPlayerAvatar
+_08059500: .4byte gMapObjects
+ thumb_func_end sub_80594C0
+
+ thumb_func_start sub_8059504
+sub_8059504: @ 8059504
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80609D8
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059504
+
+ thumb_func_start sub_805951C
+sub_805951C: @ 805951C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8060A04
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805951C
+
+ thumb_func_start sub_8059534
+sub_8059534: @ 8059534
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8060A30
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059534
+
+ thumb_func_start sub_805954C
+sub_805954C: @ 805954C
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x22
+ bl PlaySE
+ adds r0, r4, 0
+ bl sub_8060A5C
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl player_npc_set_state_and_x22_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_805954C
+
+ thumb_func_start sub_8059570
+sub_8059570: @ 8059570
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x22
+ bl PlaySE
+ adds r0, r4, 0
+ bl sub_8060A88
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059570
+
+ thumb_func_start sub_8059594
+sub_8059594: @ 8059594
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x22
+ bl PlaySE
+ adds r0, r4, 0
+ bl sub_8060AB4
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x8
+ bl player_npc_set_state_and_x22_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059594
+
+ thumb_func_start sub_80595B8
+sub_80595B8: @ 80595B8
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x22
+ bl PlaySE
+ adds r0, r4, 0
+ bl sub_8060878
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x1
+ bl player_npc_set_state_and_x22_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80595B8
+
+ thumb_func_start sub_80595DC
+sub_80595DC: @ 80595DC
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x7
+ bl PlaySE
+ adds r0, r4, 0
+ bl sub_8060AE0
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80595DC
+
+ thumb_func_start sub_8059600
+sub_8059600: @ 8059600
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8060B0C
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059600
+
+ thumb_func_start sub_8059618
+sub_8059618: @ 8059618
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8060B38
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059618
+
+ thumb_func_start sub_8059630
+sub_8059630: @ 8059630
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8060B64
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059630
+
+ thumb_func_start PlayCollisionSoundIfNotFacingWarp
+PlayCollisionSoundIfNotFacingWarp: @ 8059648
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r2, _080596B8 @ =gMapObjects
+ ldr r0, _080596BC @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1E]
+ ldr r2, _080596C0 @ =gUnknown_0830FC34
+ subs r1, r4, 0x1
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl _call_via_r1
+ lsls r0, 24
+ cmp r0, 0
+ bne _080596B0
+ cmp r4, 0x2
+ bne _080596AA
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ movs r0, 0x2
+ mov r1, sp
+ adds r2, r4, 0
+ bl MoveCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl is_tile_x69_2_warp_door
+ lsls r0, 24
+ cmp r0, 0
+ bne _080596B0
+_080596AA:
+ movs r0, 0x7
+ bl PlaySE
+_080596B0:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080596B8: .4byte gMapObjects
+_080596BC: .4byte gPlayerAvatar
+_080596C0: .4byte gUnknown_0830FC34
+ thumb_func_end PlayCollisionSoundIfNotFacingWarp
+
+ thumb_func_start GetXYCoordsOneStepInFrontOfPlayer
+GetXYCoordsOneStepInFrontOfPlayer: @ 80596C4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r3, _08059700 @ =gMapObjects
+ ldr r2, _08059704 @ =gPlayerAvatar
+ ldrb r1, [r2, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0, 0x10]
+ strh r0, [r4]
+ ldrb r1, [r2, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0, 0x12]
+ strh r0, [r5]
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl MoveCoords
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059700: .4byte gMapObjects
+_08059704: .4byte gPlayerAvatar
+ thumb_func_end GetXYCoordsOneStepInFrontOfPlayer
+
+ thumb_func_start PlayerGetDestCoords
+PlayerGetDestCoords: @ 8059708
+ push {r4,r5,lr}
+ ldr r5, _08059730 @ =gMapObjects
+ ldr r4, _08059734 @ =gPlayerAvatar
+ ldrb r3, [r4, 0x5]
+ lsls r2, r3, 3
+ adds r2, r3
+ lsls r2, 2
+ adds r2, r5
+ ldrh r2, [r2, 0x10]
+ strh r2, [r0]
+ ldrb r2, [r4, 0x5]
+ lsls r0, r2, 3
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r5
+ ldrh r0, [r0, 0x12]
+ strh r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059730: .4byte gMapObjects
+_08059734: .4byte gPlayerAvatar
+ thumb_func_end PlayerGetDestCoords
+
+ thumb_func_start player_get_direction_lower_nybble
+player_get_direction_lower_nybble: @ 8059738
+ ldr r2, _08059750 @ =gMapObjects
+ ldr r0, _08059754 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bx lr
+ .align 2, 0
+_08059750: .4byte gMapObjects
+_08059754: .4byte gPlayerAvatar
+ thumb_func_end player_get_direction_lower_nybble
+
+ thumb_func_start player_get_direction_upper_nybble
+player_get_direction_upper_nybble: @ 8059758
+ ldr r2, _0805976C @ =gMapObjects
+ ldr r0, _08059770 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x18]
+ lsrs r0, 4
+ bx lr
+ .align 2, 0
+_0805976C: .4byte gMapObjects
+_08059770: .4byte gPlayerAvatar
+ thumb_func_end player_get_direction_upper_nybble
+
+ thumb_func_start PlayerGetZCoord
+PlayerGetZCoord: @ 8059774
+ ldr r2, _08059788 @ =gMapObjects
+ ldr r0, _0805978C @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0xB]
+ lsrs r0, 4
+ bx lr
+ .align 2, 0
+_08059788: .4byte gMapObjects
+_0805978C: .4byte gPlayerAvatar
+ thumb_func_end PlayerGetZCoord
+
+ thumb_func_start unref_sub_8059790
+unref_sub_8059790: @ 8059790
+ push {lr}
+ adds r3, r0, 0
+ adds r2, r1, 0
+ ldr r0, _080597B8 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080597BC @ =gMapObjects
+ adds r0, r1
+ lsls r3, 16
+ asrs r3, 16
+ lsls r2, 16
+ asrs r2, 16
+ adds r1, r3, 0
+ bl sub_805C058
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080597B8: .4byte gPlayerAvatar
+_080597BC: .4byte gMapObjects
+ thumb_func_end unref_sub_8059790
+
+ thumb_func_start TestPlayerAvatarFlags
+TestPlayerAvatarFlags: @ 80597C0
+ ldr r1, _080597CC @ =gPlayerAvatar
+ ldrb r1, [r1]
+ ands r1, r0
+ adds r0, r1, 0
+ bx lr
+ .align 2, 0
+_080597CC: .4byte gPlayerAvatar
+ thumb_func_end TestPlayerAvatarFlags
+
+ thumb_func_start sub_80597D0
+sub_80597D0: @ 80597D0
+ ldr r0, _080597D8 @ =gPlayerAvatar
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_080597D8: .4byte gPlayerAvatar
+ thumb_func_end sub_80597D0
+
+ thumb_func_start GetPlayerAvatarObjectId
+GetPlayerAvatarObjectId: @ 80597DC
+ ldr r0, _080597E4 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x4]
+ bx lr
+ .align 2, 0
+_080597E4: .4byte gPlayerAvatar
+ thumb_func_end GetPlayerAvatarObjectId
+
+ thumb_func_start sub_80597E8
+sub_80597E8: @ 80597E8
+ push {lr}
+ bl ForcedMovement_None
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80597E8
+
+ thumb_func_start sub_80597F4
+sub_80597F4: @ 80597F4
+ push {r4,lr}
+ ldr r0, _08059834 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08059838 @ =gMapObjects
+ adds r4, r0
+ adds r0, r4, 0
+ bl npc_clear_strange_bits
+ ldrb r1, [r4, 0x18]
+ lsls r1, 28
+ lsrs r1, 28
+ adds r0, r4, 0
+ bl FieldObjectSetDirection
+ movs r0, 0x6
+ bl TestPlayerAvatarFlags
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805982C
+ bl sub_80E6084
+ movs r0, 0
+ bl sub_80E6010
+_0805982C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059834: .4byte gPlayerAvatar
+_08059838: .4byte gMapObjects
+ thumb_func_end sub_80597F4
+
+ thumb_func_start sub_805983C
+sub_805983C: @ 805983C
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _08059850 @ =gUnknown_0830FC44
+ lsrs r0, 23
+ adds r1, r0
+ adds r1, r2
+ ldrb r0, [r1]
+ bx lr
+ .align 2, 0
+_08059850: .4byte gUnknown_0830FC44
+ thumb_func_end sub_805983C
+
+ thumb_func_start GetPlayerAvatarGraphicsIdByStateIdAndGender
+GetPlayerAvatarGraphicsIdByStateIdAndGender: @ 8059854
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _08059868 @ =gUnknown_0830FC54
+ lsrs r0, 23
+ adds r1, r0
+ adds r1, r2
+ ldrb r0, [r1]
+ bx lr
+ .align 2, 0
+_08059868: .4byte gUnknown_0830FC54
+ thumb_func_end GetPlayerAvatarGraphicsIdByStateIdAndGender
+
+ thumb_func_start GetPlayerAvatarGraphicsIdByStateId
+GetPlayerAvatarGraphicsIdByStateId: @ 805986C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _08059884 @ =gPlayerAvatar
+ ldrb r1, [r1, 0x7]
+ bl GetPlayerAvatarGraphicsIdByStateIdAndGender
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08059884: .4byte gPlayerAvatar
+ thumb_func_end GetPlayerAvatarGraphicsIdByStateId
+
+ thumb_func_start unref_sub_8059888
+unref_sub_8059888: @ 8059888
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ cmp r0, 0x70
+ beq _080598AA
+ cmp r0, 0x70
+ bgt _080598A2
+ cmp r0, 0x6D
+ bgt _080598AE
+ cmp r0, 0x69
+ blt _080598AE
+ b _080598AA
+_080598A2:
+ cmp r1, 0x8A
+ beq _080598AA
+ cmp r1, 0xC0
+ bne _080598AE
+_080598AA:
+ movs r0, 0x1
+ b _080598B0
+_080598AE:
+ movs r0, 0
+_080598B0:
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_8059888
+
+ thumb_func_start GetPlayerAvatarGenderByGraphicsId
+GetPlayerAvatarGenderByGraphicsId: @ 80598B4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ cmp r0, 0x70
+ beq _080598D6
+ cmp r0, 0x70
+ bgt _080598CE
+ cmp r0, 0x5D
+ bgt _080598DA
+ cmp r0, 0x59
+ blt _080598DA
+ b _080598D6
+_080598CE:
+ cmp r1, 0x8A
+ beq _080598D6
+ cmp r1, 0xC0
+ bne _080598DA
+_080598D6:
+ movs r0, 0x1
+ b _080598DC
+_080598DA:
+ movs r0, 0
+_080598DC:
+ pop {r1}
+ bx r1
+ thumb_func_end GetPlayerAvatarGenderByGraphicsId
+
+ thumb_func_start PartyHasMonWithSurf
+PartyHasMonWithSurf: @ 80598E0
+ push {r4,r5,lr}
+ movs r0, 0x8
+ bl TestPlayerAvatarFlags
+ lsls r0, 24
+ cmp r0, 0
+ bne _08059924
+ movs r5, 0
+ b _0805990A
+_080598F2:
+ adds r0, r4, 0
+ movs r1, 0x39
+ bl pokemon_has_move
+ lsls r0, 24
+ cmp r0, 0
+ beq _08059904
+ movs r0, 0x1
+ b _08059926
+_08059904:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+_0805990A:
+ cmp r5, 0x5
+ bhi _08059924
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _0805992C @ =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ cmp r0, 0
+ bne _080598F2
+_08059924:
+ movs r0, 0
+_08059926:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805992C: .4byte gPlayerParty
+ thumb_func_end PartyHasMonWithSurf
+
+ thumb_func_start IsPlayerSurfingNorth
+IsPlayerSurfingNorth: @ 8059930
+ push {lr}
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0805994E
+ movs r0, 0x8
+ bl TestPlayerAvatarFlags
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805994E
+ movs r0, 0x1
+ b _08059950
+_0805994E:
+ movs r0, 0
+_08059950:
+ pop {r1}
+ bx r1
+ thumb_func_end IsPlayerSurfingNorth
+
+ thumb_func_start IsPlayerFacingSurfableFishableWater
+IsPlayerFacingSurfableFishableWater: @ 8059954
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r0, _080599CC @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _080599D0 @ =gMapObjects
+ adds r4, r0
+ ldrh r1, [r4, 0x10]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r4, 0x12]
+ mov r5, sp
+ adds r5, 0x2
+ strh r0, [r5]
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ 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]
+ ldrb r3, [r4, 0x18]
+ lsls r3, 28
+ lsrs r3, 28
+ adds r0, r4, 0
+ bl npc_block_way
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _080599D4
+ bl PlayerGetZCoord
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _080599D4
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl MetatileBehavior_IsSurfableFishableWater
+ lsls r0, 24
+ cmp r0, 0
+ beq _080599D4
+ movs r0, 0x1
+ b _080599D6
+ .align 2, 0
+_080599CC: .4byte gPlayerAvatar
+_080599D0: .4byte gMapObjects
+_080599D4:
+ movs r0, 0
+_080599D6:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end IsPlayerFacingSurfableFishableWater
+
+ thumb_func_start ClearPlayerAvatarInfo
+ClearPlayerAvatarInfo: @ 80599E0
+ push {lr}
+ ldr r0, _080599F0 @ =gPlayerAvatar
+ movs r1, 0
+ movs r2, 0x24
+ bl memset
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080599F0: .4byte gPlayerAvatar
+ thumb_func_end ClearPlayerAvatarInfo
+
+ thumb_func_start SetPlayerAvatarStateMask
+SetPlayerAvatarStateMask: @ 80599F4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, _08059A08 @ =gPlayerAvatar
+ ldrb r2, [r3]
+ movs r1, 0xE0
+ ands r1, r2
+ orrs r0, r1
+ strb r0, [r3]
+ bx lr
+ .align 2, 0
+_08059A08: .4byte gPlayerAvatar
+ thumb_func_end SetPlayerAvatarStateMask
+
+ thumb_func_start GetPlayerAvatarStateTransitionByGraphicsId
+GetPlayerAvatarStateTransitionByGraphicsId: @ 8059A0C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0
+ ldr r3, _08059A34 @ =gUnknown_0830FC64
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r4, r0, 1
+ adds r6, r3, 0x1
+_08059A22:
+ lsls r0, r2, 1
+ adds r1, r0, r4
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, r5
+ bne _08059A38
+ adds r0, r1, r6
+ ldrb r0, [r0]
+ b _08059A44
+ .align 2, 0
+_08059A34: .4byte gUnknown_0830FC64
+_08059A38:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x4
+ bls _08059A22
+ movs r0, 0x1
+_08059A44:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end GetPlayerAvatarStateTransitionByGraphicsId
+
+ thumb_func_start GetPlayerAvatarGraphicsIdByCurrentState
+GetPlayerAvatarGraphicsIdByCurrentState: @ 8059A4C
+ push {r4-r6,lr}
+ ldr r0, _08059A74 @ =gPlayerAvatar
+ ldrb r5, [r0]
+ movs r2, 0
+ ldr r3, _08059A78 @ =gUnknown_0830FC64
+ ldrb r1, [r0, 0x7]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r4, r0, 1
+ adds r6, r3, 0x1
+_08059A60:
+ lsls r0, r2, 1
+ adds r1, r0, r4
+ adds r0, r1, r6
+ ldrb r0, [r0]
+ ands r0, r5
+ cmp r0, 0
+ beq _08059A7C
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ b _08059A88
+ .align 2, 0
+_08059A74: .4byte gPlayerAvatar
+_08059A78: .4byte gUnknown_0830FC64
+_08059A7C:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x4
+ bls _08059A60
+ movs r0, 0
+_08059A88:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end GetPlayerAvatarGraphicsIdByCurrentState
+
+ thumb_func_start SetPlayerAvatarExtraStateTransition
+SetPlayerAvatarExtraStateTransition: @ 8059A90
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r5, _08059ABC @ =gPlayerAvatar
+ ldrb r1, [r5, 0x7]
+ bl GetPlayerAvatarStateTransitionByGraphicsId
+ lsls r0, 24
+ lsrs r0, 24
+ orrs r0, r4
+ ldrb r1, [r5, 0x1]
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+ bl DoPlayerAvatarTransition
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059ABC: .4byte gPlayerAvatar
+ thumb_func_end SetPlayerAvatarExtraStateTransition
+
+ thumb_func_start InitPlayerAvatar
+InitPlayerAvatar: @ 8059AC0
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ sub sp, 0x18
+ adds r4, r0, 0
+ adds r5, r1, 0
+ mov r9, r2
+ mov r8, r3
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ mov r0, r9
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ mov r1, r8
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ mov r1, sp
+ movs r0, 0xFF
+ strb r0, [r1]
+ movs r0, 0
+ mov r1, r8
+ bl GetPlayerAvatarGraphicsIdByStateIdAndGender
+ mov r1, sp
+ movs r3, 0
+ strb r0, [r1, 0x1]
+ mov r0, sp
+ lsls r4, 16
+ asrs r4, 16
+ subs r4, 0x7
+ movs r6, 0
+ strh r4, [r0, 0x4]
+ lsls r5, 16
+ asrs r5, 16
+ subs r5, 0x7
+ strh r5, [r0, 0x6]
+ strb r6, [r0, 0x8]
+ movs r0, 0xB
+ strb r0, [r1, 0x9]
+ mov r2, sp
+ ldrb r1, [r2, 0xA]
+ subs r0, 0x1B
+ ands r0, r1
+ strb r0, [r2, 0xA]
+ mov r0, sp
+ strb r6, [r0, 0xA]
+ strh r3, [r0, 0xC]
+ strh r3, [r0, 0xE]
+ str r3, [sp, 0x10]
+ strh r3, [r0, 0x14]
+ bl SpawnSpecialFieldObject
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r4, r5, 3
+ adds r4, r5
+ lsls r4, 2
+ ldr r0, _08059B80 @ =gMapObjects
+ adds r4, r0
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4, 0x2]
+ bl sub_8126B54
+ strb r0, [r4, 0x1B]
+ adds r0, r4, 0
+ mov r1, r9
+ bl FieldObjectTurn
+ bl ClearPlayerAvatarInfo
+ ldr r0, _08059B84 @ =gPlayerAvatar
+ strb r6, [r0, 0x2]
+ strb r6, [r0, 0x3]
+ strb r5, [r0, 0x5]
+ ldrb r1, [r4, 0x4]
+ strb r1, [r0, 0x4]
+ mov r1, r8
+ strb r1, [r0, 0x7]
+ movs r0, 0x21
+ bl SetPlayerAvatarStateMask
+ add sp, 0x18
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059B80: .4byte gMapObjects
+_08059B84: .4byte gPlayerAvatar
+ thumb_func_end InitPlayerAvatar
+
+ thumb_func_start sub_8059B88
+sub_8059B88: @ 8059B88
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r6, _08059BE8 @ =gMapObjects
+ ldr r5, _08059BEC @ =gPlayerAvatar
+ ldrb r0, [r5, 0x5]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ movs r0, 0x1
+ ands r4, r0
+ lsls r3, r4, 5
+ ldrb r2, [r1, 0x1]
+ movs r0, 0x21
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1, 0x1]
+ movs r0, 0x8
+ bl TestPlayerAvatarFlags
+ lsls r0, 24
+ cmp r0, 0
+ beq _08059BE0
+ ldr r2, _08059BF0 @ =gSprites
+ ldrb r1, [r5, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldrb r0, [r0, 0x1A]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ lsls r3, r4, 2
+ ldrb r2, [r1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1]
+_08059BE0:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059BE8: .4byte gMapObjects
+_08059BEC: .4byte gPlayerAvatar
+_08059BF0: .4byte gSprites
+ thumb_func_end sub_8059B88
+
+ thumb_func_start sub_8059BF4
+sub_8059BF4: @ 8059BF4
+ push {r4,r5,lr}
+ ldr r5, _08059C30 @ =gPlayerAvatar
+ ldrb r0, [r5, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08059C34 @ =gMapObjects
+ adds r4, r0
+ movs r0, 0x5
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08059C38 @ =gSprites
+ adds r0, r1
+ movs r1, 0
+ bl StartSpriteAnim
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059C30: .4byte gPlayerAvatar
+_08059C34: .4byte gMapObjects
+_08059C38: .4byte gSprites
+ thumb_func_end sub_8059BF4
+
+ thumb_func_start sub_8059C3C
+sub_8059C3C: @ 8059C3C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _08059C88 @ =gPlayerAvatar
+ ldrb r0, [r6, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08059C8C @ =gMapObjects
+ adds r4, r0
+ movs r0, 0x6
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r0, [r6, 0x4]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08059C90 @ =gSprites
+ adds r4, r0
+ adds r0, r5, 0
+ bl sub_805FDE8
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059C88: .4byte gPlayerAvatar
+_08059C8C: .4byte gMapObjects
+_08059C90: .4byte gSprites
+ thumb_func_end sub_8059C3C
+
+ thumb_func_start sub_8059C94
+sub_8059C94: @ 8059C94
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _08059CFC @ =gPlayerAvatar
+ ldrb r0, [r6, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08059D00 @ =gMapObjects
+ adds r4, r0
+ movs r0, 0x2
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r0, [r6, 0x4]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08059D04 @ =gSprites
+ mov r8, r0
+ add r4, r8
+ adds r0, r5, 0
+ bl sub_805FD98
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldrb r1, [r6, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ add r0, r8
+ movs r1, 0x1
+ bl SeekSpriteAnim
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059CFC: .4byte gPlayerAvatar
+_08059D00: .4byte gMapObjects
+_08059D04: .4byte gSprites
+ thumb_func_end sub_8059C94
+
+ thumb_func_start sub_8059D08
+sub_8059D08: @ 8059D08
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _08059D54 @ =gPlayerAvatar
+ ldrb r0, [r6, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08059D58 @ =gMapObjects
+ adds r4, r0
+ movs r0, 0x7
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r0, [r6, 0x4]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08059D5C @ =gSprites
+ adds r4, r0
+ adds r0, r5, 0
+ bl FieldObjectDirectionToImageAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059D54: .4byte gPlayerAvatar
+_08059D58: .4byte gMapObjects
+_08059D5C: .4byte gSprites
+ thumb_func_end sub_8059D08
+
+ thumb_func_start sub_8059D60
+sub_8059D60: @ 8059D60
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrb r0, [r5, 0x1E]
+ mov r8, r0
+ movs r1, 0
+ mov r0, sp
+ strh r1, [r0]
+ movs r6, 0x1
+ ldr r1, _08059DC4 @ =gUnknown_0830FC78
+ mov r9, r1
+ mov r4, sp
+ mov r7, sp
+ adds r7, 0x2
+_08059D82:
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ lsls r0, 2
+ add r0, r9
+ ldr r1, [r0]
+ mov r0, r8
+ bl _call_via_r1
+ lsls r0, 24
+ cmp r0, 0
+ beq _08059DC8
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ cmp r6, r0
+ bne _08059DC8
+ ldrh r0, [r5, 0x10]
+ strh r0, [r4]
+ ldrh r0, [r5, 0x12]
+ strh r0, [r7]
+ adds r0, r6, 0
+ mov r1, sp
+ adds r2, r7, 0
+ bl MoveCoords
+ ldrb r0, [r5, 0x1B]
+ movs r1, 0
+ ldrsh r2, [r4, r1]
+ movs r1, 0
+ ldrsh r3, [r7, r1]
+ adds r1, r6, 0
+ bl sub_8126BC4
+ b _08059DE2
+ .align 2, 0
+_08059DC4: .4byte gUnknown_0830FC78
+_08059DC8:
+ ldrh r1, [r4]
+ adds r1, 0x1
+ strh r1, [r4]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x3
+ ble _08059D82
+ ldrb r0, [r5, 0x1B]
+ bl objid_set_invisible
+_08059DE2:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8059D60
+
+ thumb_func_start task_add_bump_boulder
+task_add_bump_boulder: @ 8059DF0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _08059E24 @ =sub_8059E2C
+ adds r0, r6, 0
+ movs r1, 0xFF
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08059E28 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r4, [r1, 0xA]
+ strh r5, [r1, 0xC]
+ bl _call_via_r6
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059E24: .4byte sub_8059E2C
+_08059E28: .4byte gTasks
+ thumb_func_end task_add_bump_boulder
+
+ thumb_func_start sub_8059E2C
+sub_8059E2C: @ 8059E2C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r6, _08059E74 @ =gUnknown_0830FC88
+ ldr r2, _08059E78 @ =gTasks
+ ldr r5, _08059E7C @ =gMapObjects
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r4, r1, r2
+_08059E40:
+ movs r0, 0x8
+ ldrsh r3, [r4, r0]
+ lsls r3, 2
+ adds r3, r6
+ ldr r0, _08059E80 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ lsls r2, r0, 3
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r5
+ ldr r3, [r3]
+ adds r0, r4, 0
+ bl _call_via_r3
+ lsls r0, 24
+ cmp r0, 0
+ bne _08059E40
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059E74: .4byte gUnknown_0830FC88
+_08059E78: .4byte gTasks
+_08059E7C: .4byte gMapObjects
+_08059E80: .4byte gPlayerAvatar
+ thumb_func_end sub_8059E2C
+
+ thumb_func_start sub_8059E84
+sub_8059E84: @ 8059E84
+ push {r4,lr}
+ adds r4, r0, 0
+ bl ScriptContext2_Enable
+ ldr r1, _08059EA0 @ =gPlayerAvatar
+ movs r0, 0x1
+ strb r0, [r1, 0x6]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08059EA0: .4byte gPlayerAvatar
+ thumb_func_end sub_8059E84
+
+ thumb_func_start sub_8059EA4
+sub_8059EA4: @ 8059EA4
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r0, r5, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ bne _08059F2E
+ adds r0, r4, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ bne _08059F2E
+ adds r0, r5, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ ldrb r0, [r6, 0xC]
+ bl GetStepInPlaceDelay16AnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl FieldObjectSetSpecialAnim
+ ldrb r0, [r6, 0xC]
+ bl GetSimpleGoAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldr r2, _08059F38 @ =gUnknown_0202FF84
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ str r0, [r2]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ str r0, [r2, 0x4]
+ ldrb r0, [r4, 0xB]
+ lsrs r0, 4
+ str r0, [r2, 0x8]
+ ldr r3, _08059F3C @ =gSprites
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrb r0, [r0, 0x5]
+ lsls r0, 28
+ lsrs r0, 30
+ str r0, [r2, 0xC]
+ movs r0, 0xA
+ bl FieldEffectStart
+ movs r0, 0xD6
+ bl PlaySE
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+_08059F2E:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08059F38: .4byte gUnknown_0202FF84
+_08059F3C: .4byte gSprites
+ thumb_func_end sub_8059EA4
+
+ thumb_func_start sub_8059F40
+sub_8059F40: @ 8059F40
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ adds r5, r2, 0
+ adds r0, r4, 0
+ bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08059F82
+ adds r0, r5, 0
+ bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
+ lsls r0, 24
+ cmp r0, 0
+ beq _08059F82
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ adds r0, r5, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ ldr r1, _08059F8C @ =gPlayerAvatar
+ movs r0, 0
+ strb r0, [r1, 0x6]
+ bl ScriptContext2_Disable
+ ldr r0, _08059F90 @ =sub_8059E2C
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+_08059F82:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08059F8C: .4byte gPlayerAvatar
+_08059F90: .4byte sub_8059E2C
+ thumb_func_end sub_8059F40
+
+ thumb_func_start sub_8059F94
+sub_8059F94: @ 8059F94
+ push {r4,lr}
+ ldr r4, _08059FB0 @ =sub_8059FB4
+ adds r0, r4, 0
+ movs r1, 0xFF
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059FB0: .4byte sub_8059FB4
+ thumb_func_end sub_8059F94
+
+ thumb_func_start sub_8059FB4
+sub_8059FB4: @ 8059FB4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r5, _08059FF0 @ =gUnknown_0830FC94
+ ldr r2, _08059FF4 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r4, r1, r2
+_08059FC6:
+ movs r0, 0x8
+ ldrsh r2, [r4, r0]
+ lsls r2, 2
+ adds r2, r5
+ ldr r0, _08059FF8 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08059FFC @ =gMapObjects
+ adds r1, r0
+ ldr r2, [r2]
+ adds r0, r4, 0
+ bl _call_via_r2
+ lsls r0, 24
+ cmp r0, 0
+ bne _08059FC6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08059FF0: .4byte gUnknown_0830FC94
+_08059FF4: .4byte gTasks
+_08059FF8: .4byte gPlayerAvatar
+_08059FFC: .4byte gMapObjects
+ thumb_func_end sub_8059FB4
+
+ thumb_func_start sub_805A000
+sub_805A000: @ 805A000
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ ldr r5, _0805A064 @ =gPlayerAvatar
+ movs r0, 0x1
+ strb r0, [r5, 0x6]
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A05C
+ movs r0, 0xA
+ bl PlaySE
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_806084C
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x1
+ strh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0805A05C
+ movs r0, 0
+ strb r0, [r5, 0x6]
+ ldrb r0, [r5, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+ ldr r0, _0805A068 @ =sub_8059FB4
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+_0805A05C:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A064: .4byte gPlayerAvatar
+_0805A068: .4byte sub_8059FB4
+ thumb_func_end sub_805A000
+
+ thumb_func_start sub_805A06C
+sub_805A06C: @ 805A06C
+ push {r4,lr}
+ ldr r4, _0805A088 @ =sub_805A08C
+ adds r0, r4, 0
+ movs r1, 0xFF
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ bl _call_via_r4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805A088: .4byte sub_805A08C
+ thumb_func_end sub_805A06C
+
+ thumb_func_start sub_805A08C
+sub_805A08C: @ 805A08C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r5, _0805A0C8 @ =gUnknown_0830FC98
+ ldr r2, _0805A0CC @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r4, r1, r2
+_0805A09E:
+ movs r0, 0x8
+ ldrsh r2, [r4, r0]
+ lsls r2, 2
+ adds r2, r5
+ ldr r0, _0805A0D0 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _0805A0D4 @ =gMapObjects
+ adds r1, r0
+ ldr r2, [r2]
+ adds r0, r4, 0
+ bl _call_via_r2
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805A09E
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805A0C8: .4byte gUnknown_0830FC98
+_0805A0CC: .4byte gTasks
+_0805A0D0: .4byte gPlayerAvatar
+_0805A0D4: .4byte gMapObjects
+ thumb_func_end sub_805A08C
+
+ thumb_func_start sub_805A0D8
+sub_805A0D8: @ 805A0D8
+ push {lr}
+ ldrh r2, [r0, 0x8]
+ adds r2, 0x1
+ strh r2, [r0, 0x8]
+ ldrb r1, [r1, 0x18]
+ lsrs r1, 4
+ strh r1, [r0, 0xA]
+ ldr r1, _0805A0FC @ =gPlayerAvatar
+ movs r0, 0x1
+ strb r0, [r1, 0x6]
+ bl ScriptContext2_Enable
+ movs r0, 0x2D
+ bl PlaySE
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A0FC: .4byte gPlayerAvatar
+ thumb_func_end sub_805A0D8
+
+ thumb_func_start sub_805A100
+sub_805A100: @ 805A100
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r1, _0805A174 @ =gUnknown_0830FCA8
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r5, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A168
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ subs r0, 0x1
+ add r0, sp
+ ldrb r6, [r0]
+ adds r0, r6, 0
+ bl GetFaceDirectionAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl FieldObjectSetSpecialAnim
+ ldrb r0, [r4, 0xA]
+ cmp r6, r0
+ bne _0805A146
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+_0805A146:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x3
+ ble _0805A168
+ ldrb r0, [r4, 0xA]
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r6, r0
+ bne _0805A168
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_0805A168:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A174: .4byte gUnknown_0830FCA8
+ thumb_func_end sub_805A100
+
+ thumb_func_start sub_805A178
+sub_805A178: @ 805A178
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r1, _0805A1B4 @ =gUnknown_0830FCAC
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A1A8
+ movs r1, 0xC
+ ldrsh r0, [r5, r1]
+ add r0, sp
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ movs r0, 0x1
+ strh r0, [r5, 0x8]
+_0805A1A8:
+ movs r0, 0
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A1B4: .4byte gUnknown_0830FCAC
+ thumb_func_end sub_805A178
+
+ thumb_func_start sub_805A1B8
+sub_805A1B8: @ 805A1B8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A1FC
+ ldrb r0, [r4, 0xA]
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetSimpleGoAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl FieldObjectSetSpecialAnim
+ bl ScriptContext2_Disable
+ ldr r1, _0805A204 @ =gPlayerAvatar
+ movs r0, 0
+ strb r0, [r1, 0x6]
+ ldr r0, _0805A208 @ =sub_805A08C
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+_0805A1FC:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A204: .4byte gPlayerAvatar
+_0805A208: .4byte sub_805A08C
+ thumb_func_end sub_805A1B8
+
+ thumb_func_start sub_805A20C
+sub_805A20C: @ 805A20C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl ScriptContext2_Enable
+ bl sav1_reset_battle_music_maybe
+ bl sub_8053F84
+ ldr r2, _0805A258 @ =gPlayerAvatar
+ ldrb r1, [r2]
+ movs r0, 0xF7
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x1
+ strb r0, [r2, 0x6]
+ ldr r5, _0805A25C @ =taskFF_0805D1D4
+ adds r0, r5, 0
+ movs r1, 0xFF
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0805A260 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r4, [r1, 0x8]
+ bl _call_via_r5
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805A258: .4byte gPlayerAvatar
+_0805A25C: .4byte taskFF_0805D1D4
+_0805A260: .4byte gTasks
+ thumb_func_end sub_805A20C
+
+ thumb_func_start taskFF_0805D1D4
+taskFF_0805D1D4: @ 805A264
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _0805A2C0 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805A2C4 @ =gMapObjects
+ adds r5, r0, r1
+ adds r0, r5, 0
+ bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A290
+ adds r0, r5, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A2B8
+_0805A290:
+ ldrb r0, [r5, 0x1A]
+ movs r1, 0x2
+ bl sub_8127ED0
+ ldr r0, _0805A2C8 @ =gTasks
+ lsls r4, r6, 2
+ adds r4, r6
+ lsls r4, 3
+ adds r4, r0
+ ldrb r0, [r4, 0x8]
+ bl sub_80608D0
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl FieldObjectSetSpecialAnim
+ ldr r0, _0805A2CC @ =sub_805A2D0
+ str r0, [r4]
+_0805A2B8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805A2C0: .4byte gPlayerAvatar
+_0805A2C4: .4byte gMapObjects
+_0805A2C8: .4byte gTasks
+_0805A2CC: .4byte sub_805A2D0
+ thumb_func_end taskFF_0805D1D4
+
+ thumb_func_start sub_805A2D0
+sub_805A2D0: @ 805A2D0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r6, _0805A33C @ =gPlayerAvatar
+ ldrb r1, [r6, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805A340 @ =gMapObjects
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A336
+ movs r0, 0
+ bl GetPlayerAvatarGraphicsIdByStateId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldObjectSetSpecialAnim
+ movs r0, 0
+ strb r0, [r6, 0x6]
+ bl ScriptContext2_Disable
+ ldrb r1, [r4, 0x1A]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805A344 @ =gSprites
+ adds r0, r1
+ bl DestroySprite
+ adds r0, r5, 0
+ bl DestroyTask
+_0805A336:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805A33C: .4byte gPlayerAvatar
+_0805A340: .4byte gMapObjects
+_0805A344: .4byte gSprites
+ thumb_func_end sub_805A2D0
+
+ thumb_func_start StartFishing
+StartFishing: @ 805A348
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r5, _0805A374 @ =sub_805A37C
+ adds r0, r5, 0
+ movs r1, 0xFF
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0805A378 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r4, [r1, 0x26]
+ bl _call_via_r5
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805A374: .4byte sub_805A37C
+_0805A378: .4byte gTasks
+ thumb_func_end StartFishing
+
+ thumb_func_start sub_805A37C
+sub_805A37C: @ 805A37C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r5, _0805A3AC @ =gUnknown_0830FCB4
+ ldr r2, _0805A3B0 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r4, r1, r2
+_0805A38E:
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r0, 2
+ adds r0, r5
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl _call_via_r1
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805A38E
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805A3AC: .4byte gUnknown_0830FCB4
+_0805A3B0: .4byte gTasks
+ thumb_func_end sub_805A37C
+
+ thumb_func_start sub_805A3B4
+sub_805A3B4: @ 805A3B4
+ push {r4,lr}
+ adds r4, r0, 0
+ bl ScriptContext2_Enable
+ ldr r1, _0805A3D0 @ =gPlayerAvatar
+ movs r0, 0x1
+ strb r0, [r1, 0x6]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A3D0: .4byte gPlayerAvatar
+ thumb_func_end sub_805A3B4
+
+ thumb_func_start fish1
+fish1: @ 805A3D4
+ push {r4-r6,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ ldr r1, _0805A45C @ =gUnknown_0830FCF4
+ mov r0, sp
+ movs r2, 0x6
+ bl memcpy
+ add r4, sp, 0x8
+ ldr r1, _0805A460 @ =gUnknown_0830FCFA
+ adds r0, r4, 0
+ movs r2, 0x6
+ bl memcpy
+ movs r0, 0
+ strh r0, [r5, 0x20]
+ bl Random
+ movs r2, 0x26
+ ldrsh r1, [r5, r2]
+ lsls r1, 1
+ mov r2, sp
+ adds r6, r2, r1
+ lsls r0, 16
+ lsrs r0, 16
+ adds r4, r1
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl __modsi3
+ ldrh r1, [r6]
+ adds r1, r0
+ strh r1, [r5, 0x22]
+ ldr r3, _0805A464 @ =gMapObjects
+ ldr r2, _0805A468 @ =gPlayerAvatar
+ ldrb r1, [r2, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrb r0, [r0, 0x5]
+ strh r0, [r5, 0x24]
+ ldrb r0, [r2, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ adds r4, r3
+ adds r0, r4, 0
+ bl FieldObjectClearAnimIfSpecialAnimActive
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_8059C3C
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ movs r0, 0
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A45C: .4byte gUnknown_0830FCF4
+_0805A460: .4byte gUnknown_0830FCFA
+_0805A464: .4byte gMapObjects
+_0805A468: .4byte gPlayerAvatar
+ thumb_func_end fish1
+
+ thumb_func_start fish2
+fish2: @ 805A46C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_805A954
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3B
+ ble _0805A488
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_0805A488:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end fish2
+
+ thumb_func_start fish3
+fish3: @ 805A490
+ push {r4,lr}
+ adds r4, r0, 0
+ bl MenuDisplayMessageBox
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x8]
+ strh r1, [r4, 0xA]
+ strh r1, [r4, 0xC]
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA
+ bl __umodsi3
+ adds r1, r0, 0
+ adds r0, r1, 0x1
+ strh r0, [r4, 0xE]
+ movs r2, 0x20
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _0805A4C4
+ adds r0, r1, 0x4
+ strh r0, [r4, 0xE]
+_0805A4C4:
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x9
+ ble _0805A4D0
+ movs r0, 0xA
+ strh r0, [r4, 0xE]
+_0805A4D0:
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end fish3
+
+ thumb_func_start fish4
+fish4: @ 805A4D8
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldr r1, _0805A514 @ =gUnknown_0830FD00
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ bl sub_805A954
+ ldrh r0, [r4, 0xA]
+ adds r2, r0, 0x1
+ strh r2, [r4, 0xA]
+ ldr r0, _0805A518 @ =gMain
+ ldrh r0, [r0, 0x2E]
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _0805A51C
+ movs r0, 0xB
+ strh r0, [r4, 0x8]
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0805A50E
+ movs r0, 0xC
+ strh r0, [r4, 0x8]
+_0805A50E:
+ movs r0, 0x1
+ b _0805A564
+ .align 2, 0
+_0805A514: .4byte gUnknown_0830FD00
+_0805A518: .4byte gMain
+_0805A51C:
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, 0x13
+ ble _0805A562
+ strh r1, [r4, 0xA]
+ ldrh r2, [r4, 0xC]
+ movs r3, 0xC
+ ldrsh r1, [r4, r3]
+ movs r3, 0xE
+ ldrsh r0, [r4, r3]
+ cmp r1, r0
+ blt _0805A54E
+ ldrh r0, [r4, 0x8]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x8]
+ ldrh r2, [r4, 0x20]
+ movs r3, 0x20
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _0805A548
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x8]
+_0805A548:
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x20]
+ b _0805A562
+_0805A54E:
+ adds r1, r2, 0x4
+ lsls r1, 24
+ lsrs r1, 24
+ mov r0, sp
+ movs r2, 0xF
+ bl MenuPrint
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+_0805A562:
+ movs r0, 0
+_0805A564:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end fish4
+
+ thumb_func_start party_menu_update_status_condition_object
+party_menu_update_status_condition_object: @ 805A56C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_805A954
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ bl GetFishingWildMonListHeader
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A590
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _0805A596
+_0805A590:
+ movs r0, 0xB
+ strh r0, [r4, 0x8]
+ b _0805A5BC
+_0805A596:
+ ldr r0, _0805A5C4 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x4]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0805A5C8 @ =gSprites
+ adds r4, r0
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_805FE08
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+_0805A5BC:
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A5C4: .4byte gPlayerAvatar
+_0805A5C8: .4byte gSprites
+ thumb_func_end party_menu_update_status_condition_object
+
+ thumb_func_start sub_805A5CC
+sub_805A5CC: @ 805A5CC
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_805A954
+ ldr r0, _0805A5F0 @ =gOtherText_OhABite
+ movs r1, 0x4
+ movs r2, 0x11
+ bl MenuPrint
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x8]
+ strh r1, [r4, 0xA]
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A5F0: .4byte gOtherText_OhABite
+ thumb_func_end sub_805A5CC
+
+ thumb_func_start fish7
+fish7: @ 805A5F4
+ push {r4,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldr r1, _0805A628 @ =gUnknown_0830FD02
+ mov r0, sp
+ movs r2, 0x6
+ bl memcpy
+ bl sub_805A954
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ movs r2, 0x26
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ add r0, sp
+ lsls r1, 16
+ asrs r1, 16
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r1, r0
+ blt _0805A62C
+ movs r0, 0xC
+ b _0805A63C
+ .align 2, 0
+_0805A628: .4byte gUnknown_0830FD02
+_0805A62C:
+ ldr r0, _0805A648 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0805A63E
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+_0805A63C:
+ strh r0, [r4, 0x8]
+_0805A63E:
+ movs r0, 0
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A648: .4byte gMain
+ thumb_func_end fish7
+
+ thumb_func_start fish8
+fish8: @ 805A64C
+ push {r4,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ ldr r1, _0805A6B0 @ =gUnknown_0830FD08
+ mov r0, sp
+ movs r2, 0xC
+ bl memcpy
+ bl sub_805A954
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ movs r0, 0x20
+ ldrsh r1, [r4, r0]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ blt _0805A6A2
+ cmp r1, 0x1
+ bgt _0805A6A6
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x64
+ bl __umodsi3
+ movs r3, 0x20
+ ldrsh r2, [r4, r3]
+ lsls r2, 1
+ movs r3, 0x26
+ ldrsh r1, [r4, r3]
+ lsls r1, 2
+ adds r2, r1
+ mov r3, sp
+ adds r1, r3, r2
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r1, r0
+ ble _0805A6A6
+_0805A6A2:
+ movs r0, 0x3
+ strh r0, [r4, 0x8]
+_0805A6A6:
+ movs r0, 0
+ add sp, 0xC
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A6B0: .4byte gUnknown_0830FD08
+ thumb_func_end fish8
+
+ thumb_func_start sub_805A6B4
+sub_805A6B4: @ 805A6B4
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_805A954
+ ldr r0, _0805A6D8 @ =gOtherText_PokeOnHook
+ bl sub_8072044
+ bl MenuDisplayMessageBox
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x8]
+ strh r1, [r4, 0xA]
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A6D8: .4byte gOtherText_PokeOnHook
+ thumb_func_end sub_805A6B4
+
+ thumb_func_start sub_805A6DC
+sub_805A6DC: @ 805A6DC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r5, r0, 0
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0805A780
+ bl sub_805A954
+ movs r0, 0xA
+ ldrsh r6, [r5, r0]
+ cmp r6, 0
+ bne _0805A780
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A778
+ ldr r7, _0805A76C @ =gPlayerAvatar
+ ldrb r0, [r7, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r1, _0805A770 @ =gMapObjects
+ mov r8, r1
+ add r4, r8
+ ldrh r1, [r5, 0x24]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl FieldObjectTurn
+ ldrb r1, [r7]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0805A746
+ ldrb r0, [r7, 0x5]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ add r1, r8
+ ldrb r0, [r1, 0x1A]
+ movs r1, 0
+ movs r2, 0
+ bl sub_8127F28
+_0805A746:
+ ldr r2, _0805A774 @ =gSprites
+ ldrb r1, [r7, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r6, [r0, 0x24]
+ ldrb r1, [r7, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r6, [r0, 0x26]
+ bl MenuZeroFillScreen
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ b _0805A7A8
+ .align 2, 0
+_0805A76C: .4byte gPlayerAvatar
+_0805A770: .4byte gMapObjects
+_0805A774: .4byte gSprites
+_0805A778:
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _0805A7A8
+_0805A780:
+ ldr r1, _0805A7B4 @ =gPlayerAvatar
+ movs r0, 0
+ strb r0, [r1, 0x6]
+ bl ScriptContext2_Disable
+ ldrh r0, [r5, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl FishingWildEncounter
+ movs r0, 0x1
+ bl sub_80BE97C
+ ldr r0, _0805A7B8 @ =sub_805A37C
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+_0805A7A8:
+ movs r0, 0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A7B4: .4byte gPlayerAvatar
+_0805A7B8: .4byte sub_805A37C
+ thumb_func_end sub_805A6DC
+
+ thumb_func_start sub_805A7BC
+sub_805A7BC: @ 805A7BC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_805A954
+ ldr r0, _0805A7FC @ =gPlayerAvatar
+ ldrb r0, [r0, 0x4]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0805A800 @ =gSprites
+ adds r4, r0
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_805FDF8
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r0, _0805A804 @ =gOtherText_NotEvenANibble
+ bl sub_8072044
+ movs r0, 0xD
+ strh r0, [r5, 0x8]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A7FC: .4byte gPlayerAvatar
+_0805A800: .4byte gSprites
+_0805A804: .4byte gOtherText_NotEvenANibble
+ thumb_func_end sub_805A7BC
+
+ thumb_func_start sub_805A808
+sub_805A808: @ 805A808
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_805A954
+ ldr r0, _0805A84C @ =gPlayerAvatar
+ ldrb r0, [r0, 0x4]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0805A850 @ =gSprites
+ adds r4, r0
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_805FDF8
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r0, _0805A854 @ =gOtherText_ItGotAway
+ bl sub_8072044
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A84C: .4byte gPlayerAvatar
+_0805A850: .4byte gSprites
+_0805A854: .4byte gOtherText_ItGotAway
+ thumb_func_end sub_805A808
+
+ thumb_func_start fishD
+fishD: @ 805A858
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_805A954
+ bl MenuDisplayMessageBox
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end fishD
+
+ thumb_func_start sub_805A874
+sub_805A874: @ 805A874
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ bl sub_805A954
+ ldr r7, _0805A908 @ =gSprites
+ ldr r5, _0805A90C @ =gPlayerAvatar
+ ldrb r0, [r5, 0x4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r7
+ adds r1, 0x3F
+ ldrb r0, [r1]
+ lsls r0, 27
+ cmp r0, 0
+ bge _0805A8FA
+ ldrb r0, [r5, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0805A910 @ =gMapObjects
+ mov r8, r0
+ add r4, r8
+ ldrh r1, [r6, 0x24]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_805B980
+ ldrb r1, [r4, 0x18]
+ lsrs r1, 4
+ adds r0, r4, 0
+ bl FieldObjectTurn
+ ldrb r1, [r5]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0805A8DA
+ ldrb r0, [r5, 0x5]
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ add r1, r8
+ ldrb r0, [r1, 0x1A]
+ movs r1, 0
+ movs r2, 0
+ bl sub_8127F28
+_0805A8DA:
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r7
+ movs r2, 0
+ strh r2, [r0, 0x24]
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r7
+ strh r2, [r0, 0x26]
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+_0805A8FA:
+ movs r0, 0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A908: .4byte gSprites
+_0805A90C: .4byte gPlayerAvatar
+_0805A910: .4byte gMapObjects
+ thumb_func_end sub_805A874
+
+ thumb_func_start fishF
+fishF: @ 805A914
+ push {lr}
+ bl MenuUpdateWindowText
+ lsls r0, 24
+ cmp r0, 0
+ beq _0805A946
+ ldr r1, _0805A94C @ =gPlayerAvatar
+ movs r0, 0
+ strb r0, [r1, 0x6]
+ bl ScriptContext2_Disable
+ bl sub_806451C
+ bl MenuZeroFillScreen
+ movs r0, 0
+ bl sub_80BE97C
+ ldr r0, _0805A950 @ =sub_805A37C
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+_0805A946:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805A94C: .4byte gPlayerAvatar
+_0805A950: .4byte sub_805A37C
+ thumb_func_end fishF
+
+ thumb_func_start sub_805A954
+sub_805A954: @ 805A954
+ push {r4-r7,lr}
+ ldr r0, _0805AA40 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0805AA44 @ =gSprites
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl AnimateSprite
+ movs r0, 0
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ adds r0, 0x2B
+ ldrb r5, [r0]
+ movs r0, 0x2A
+ adds r0, r4
+ mov r12, r0
+ ldrb r0, [r0]
+ ldr r1, [r4, 0x8]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ lsls r6, r5, 2
+ adds r0, r6, r0
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r7, 0x1
+ negs r7, r7
+ cmp r0, r7
+ beq _0805A9C6
+ adds r3, r4, 0
+ adds r3, 0x2C
+ ldrb r2, [r3]
+ lsls r1, r2, 26
+ lsrs r1, 26
+ adds r1, 0x1
+ movs r0, 0x3F
+ ands r1, r0
+ movs r0, 0x40
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ mov r1, r12
+ ldrb r0, [r1]
+ ldr r1, [r4, 0x8]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ adds r0, r6, r0
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, r7
+ bne _0805A9CC
+_0805A9C6:
+ subs r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+_0805A9CC:
+ adds r0, r4, 0
+ adds r0, 0x2A
+ ldrb r0, [r0]
+ ldr r1, [r4, 0x8]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r0, r5, 2
+ adds r0, r1
+ ldrb r5, [r0]
+ subs r0, r5, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bhi _0805A9FE
+ movs r0, 0x8
+ strh r0, [r4, 0x24]
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _0805A9FE
+ ldr r0, _0805AA48 @ =0x0000fff8
+ strh r0, [r4, 0x24]
+_0805A9FE:
+ cmp r5, 0x5
+ bne _0805AA06
+ ldr r0, _0805AA48 @ =0x0000fff8
+ strh r0, [r4, 0x26]
+_0805AA06:
+ adds r0, r5, 0
+ subs r0, 0xA
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0805AA16
+ movs r0, 0x8
+ strh r0, [r4, 0x26]
+_0805AA16:
+ ldr r3, _0805AA40 @ =gPlayerAvatar
+ ldrb r1, [r3]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0805AA3A
+ ldr r2, _0805AA4C @ =gMapObjects
+ ldrb r1, [r3, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1A]
+ movs r1, 0x26
+ ldrsh r2, [r4, r1]
+ movs r1, 0x1
+ bl sub_8127F28
+_0805AA3A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805AA40: .4byte gPlayerAvatar
+_0805AA44: .4byte gSprites
+_0805AA48: .4byte 0x0000fff8
+_0805AA4C: .4byte gMapObjects
+ thumb_func_end sub_805A954
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fieldmap.s b/asm/fieldmap.s
new file mode 100644
index 000000000..d92bc82a2
--- /dev/null
+++ b/asm/fieldmap.s
@@ -0,0 +1,1998 @@
+ .include "constants/gba_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start mapconnection_get_mapheader
+mapconnection_get_mapheader: @ 8055F90
+ push {lr}
+ ldrb r2, [r0, 0x8]
+ ldrb r1, [r0, 0x9]
+ adds r0, r2, 0
+ bl get_mapheader_by_bank_and_number
+ pop {r1}
+ bx r1
+ thumb_func_end mapconnection_get_mapheader
+
+ thumb_func_start not_trainer_hill_battle_pyramid
+not_trainer_hill_battle_pyramid: @ 8055FA0
+ push {r4,lr}
+ ldr r4, _08055FBC @ =gMapHeader
+ adds r0, r4, 0
+ bl mapheader_copy_mapdata_with_padding
+ ldr r0, [r4, 0x4]
+ bl sub_80BB970
+ bl mapheader_run_script_with_tag_x1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08055FBC: .4byte gMapHeader
+ thumb_func_end not_trainer_hill_battle_pyramid
+
+ thumb_func_start sub_8055FC0
+sub_8055FC0: @ 8055FC0
+ push {r4,lr}
+ ldr r4, _08055FF0 @ =gMapHeader
+ adds r0, r4, 0
+ bl mapheader_copy_mapdata_with_padding
+ movs r0, 0
+ bl sub_80BBCCC
+ ldr r0, [r4, 0x4]
+ bl sub_80BB970
+ bl sub_8056670
+ bl mapheader_run_script_with_tag_x1
+ ldr r1, _08055FF4 @ =gUnknown_03004870
+ ldr r0, [r1]
+ ldr r1, [r1, 0x4]
+ bl UpdateTVScreensOnMap
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08055FF0: .4byte gMapHeader
+_08055FF4: .4byte gUnknown_03004870
+ thumb_func_end sub_8055FC0
+
+ thumb_func_start mapheader_copy_mapdata_with_padding
+mapheader_copy_mapdata_with_padding: @ 8055FF8
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldr r5, [r6]
+ ldr r0, _08056044 @ =0x03ff03ff
+ str r0, [sp]
+ ldr r4, _08056048 @ =gUnknown_02029828
+ ldr r2, _0805604C @ =0x01001400
+ mov r0, sp
+ adds r1, r4, 0
+ bl CpuFastSet
+ ldr r2, _08056050 @ =gUnknown_03004870
+ str r4, [r2, 0x8]
+ ldr r1, [r5]
+ adds r1, 0xF
+ str r1, [r2]
+ ldr r0, [r5, 0x4]
+ adds r0, 0xE
+ str r0, [r2, 0x4]
+ muls r1, r0
+ movs r0, 0xA0
+ lsls r0, 6
+ cmp r1, r0
+ bgt _0805603A
+ ldr r0, [r5, 0xC]
+ ldrh r1, [r5]
+ ldrh r2, [r5, 0x4]
+ bl map_copy_with_padding
+ adds r0, r6, 0
+ bl sub_80560AC
+_0805603A:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08056044: .4byte 0x03ff03ff
+_08056048: .4byte gUnknown_02029828
+_0805604C: .4byte 0x01001400
+_08056050: .4byte gUnknown_03004870
+ thumb_func_end mapheader_copy_mapdata_with_padding
+
+ thumb_func_start map_copy_with_padding
+map_copy_with_padding: @ 8056054
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r7, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r0, _080560A8 @ =gUnknown_03004870
+ ldr r4, [r0, 0x8]
+ ldr r1, [r0]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 1
+ adds r0, 0xE
+ adds r4, r0
+ cmp r2, 0
+ beq _0805609C
+ mov r0, r8
+ lsls r6, r0, 1
+ adds r5, r2, 0
+ movs r0, 0x1E
+ adds r0, r6
+ mov r9, r0
+_08056088:
+ adds r0, r7, 0
+ adds r1, r4, 0
+ mov r2, r8
+ bl CpuSet
+ add r4, r9
+ adds r7, r6
+ subs r5, 0x1
+ cmp r5, 0
+ bne _08056088
+_0805609C:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080560A8: .4byte gUnknown_03004870
+ thumb_func_end map_copy_with_padding
+
+ thumb_func_start sub_80560AC
+sub_80560AC: @ 80560AC
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ ldr r0, [r6, 0xC]
+ ldr r1, [r0]
+ ldr r5, [r0, 0x4]
+ ldr r2, _080560E0 @ =gUnknown_0202E850
+ ldr r0, _080560E4 @ =gUnknown_08308E28
+ ldr r0, [r0]
+ str r0, [r2]
+ cmp r1, 0
+ ble _0805612C
+ adds r4, r2, 0
+ adds r7, r1, 0
+_080560C6:
+ adds r0, r5, 0
+ bl mapconnection_get_mapheader
+ adds r1, r0, 0
+ ldr r2, [r5, 0x4]
+ ldrb r0, [r5]
+ cmp r0, 0x2
+ beq _080560FE
+ cmp r0, 0x2
+ bgt _080560E8
+ cmp r0, 0x1
+ beq _080560F2
+ b _08056124
+ .align 2, 0
+_080560E0: .4byte gUnknown_0202E850
+_080560E4: .4byte gUnknown_08308E28
+_080560E8:
+ cmp r0, 0x3
+ beq _0805610A
+ cmp r0, 0x4
+ beq _08056116
+ b _08056124
+_080560F2:
+ adds r0, r6, 0
+ bl sub_8056198
+ ldrb r0, [r4]
+ movs r1, 0x1
+ b _08056120
+_080560FE:
+ adds r0, r6, 0
+ bl sub_8056200
+ ldrb r0, [r4]
+ movs r1, 0x2
+ b _08056120
+_0805610A:
+ adds r0, r6, 0
+ bl sub_8056260
+ ldrb r0, [r4]
+ movs r1, 0x4
+ b _08056120
+_08056116:
+ adds r0, r6, 0
+ bl sub_80562C0
+ ldrb r0, [r4]
+ movs r1, 0x8
+_08056120:
+ orrs r0, r1
+ strb r0, [r4]
+_08056124:
+ subs r7, 0x1
+ adds r5, 0xC
+ cmp r7, 0
+ bne _080560C6
+_0805612C:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80560AC
+
+ thumb_func_start sub_8056134
+sub_8056134: @ 8056134
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r5, [sp, 0x18]
+ ldr r4, [r2]
+ ldr r7, [r4]
+ adds r2, r7, 0
+ muls r2, r5
+ adds r2, r3
+ lsls r2, 1
+ ldr r3, [r4, 0xC]
+ adds r6, r3, r2
+ ldr r3, _08056190 @ =gUnknown_03004870
+ ldr r2, [r3]
+ muls r1, r2
+ adds r1, r0
+ lsls r1, 1
+ ldr r0, [r3, 0x8]
+ adds r5, r0, r1
+ ldr r0, [sp, 0x20]
+ cmp r0, 0
+ ble _08056186
+ adds r4, r0, 0
+ ldr r3, _08056194 @ =0x001fffff
+ mov r8, r3
+_08056166:
+ adds r0, r6, 0
+ adds r1, r5, 0
+ ldr r2, [sp, 0x1C]
+ mov r3, r8
+ ands r2, r3
+ bl CpuSet
+ ldr r0, _08056190 @ =gUnknown_03004870
+ ldr r0, [r0]
+ lsls r0, 1
+ adds r5, r0
+ lsls r0, r7, 1
+ adds r6, r0
+ subs r4, 0x1
+ cmp r4, 0
+ bne _08056166
+_08056186:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08056190: .4byte gUnknown_03004870
+_08056194: .4byte 0x001fffff
+ thumb_func_end sub_8056134
+
+ thumb_func_start sub_8056198
+sub_8056198: @ 8056198
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r3, r0, 0
+ adds r5, r1, 0
+ cmp r5, 0
+ beq _080561F2
+ ldr r0, [r5]
+ ldr r4, [r0]
+ adds r2, 0x7
+ ldr r0, [r3]
+ ldr r0, [r0, 0x4]
+ adds r7, r0, 0x7
+ cmp r2, 0
+ bge _080561CC
+ negs r6, r2
+ adds r2, r4
+ ldr r0, _080561C8 @ =gUnknown_03004870
+ ldr r3, [r0]
+ cmp r2, r3
+ bge _080561C2
+ adds r3, r2, 0
+_080561C2:
+ movs r2, 0
+ b _080561DC
+ .align 2, 0
+_080561C8: .4byte gUnknown_03004870
+_080561CC:
+ movs r6, 0
+ adds r0, r2, r4
+ ldr r1, _080561FC @ =gUnknown_03004870
+ ldr r1, [r1]
+ subs r3, r1, r2
+ cmp r0, r1
+ bge _080561DC
+ adds r3, r4, 0
+_080561DC:
+ movs r0, 0
+ str r0, [sp]
+ str r3, [sp, 0x4]
+ movs r0, 0x7
+ str r0, [sp, 0x8]
+ adds r0, r2, 0
+ adds r1, r7, 0
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl sub_8056134
+_080561F2:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080561FC: .4byte gUnknown_03004870
+ thumb_func_end sub_8056198
+
+ thumb_func_start sub_8056200
+sub_8056200: @ 8056200
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r5, r1, 0
+ cmp r5, 0
+ beq _08056254
+ ldr r0, [r5]
+ ldr r4, [r0]
+ ldr r0, [r0, 0x4]
+ adds r2, 0x7
+ subs r7, r0, 0x7
+ cmp r2, 0
+ bge _08056230
+ negs r6, r2
+ adds r2, r4
+ ldr r0, _0805622C @ =gUnknown_03004870
+ ldr r3, [r0]
+ cmp r2, r3
+ bge _08056226
+ adds r3, r2, 0
+_08056226:
+ movs r2, 0
+ b _08056240
+ .align 2, 0
+_0805622C: .4byte gUnknown_03004870
+_08056230:
+ movs r6, 0
+ adds r0, r2, r4
+ ldr r1, _0805625C @ =gUnknown_03004870
+ ldr r1, [r1]
+ subs r3, r1, r2
+ cmp r0, r1
+ bge _08056240
+ adds r3, r4, 0
+_08056240:
+ str r7, [sp]
+ str r3, [sp, 0x4]
+ movs r0, 0x7
+ str r0, [sp, 0x8]
+ adds r0, r2, 0
+ movs r1, 0
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl sub_8056134
+_08056254:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805625C: .4byte gUnknown_03004870
+ thumb_func_end sub_8056200
+
+ thumb_func_start sub_8056260
+sub_8056260: @ 8056260
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r5, r1, 0
+ cmp r5, 0
+ beq _080562B4
+ ldr r0, [r5]
+ ldr r1, [r0]
+ ldr r4, [r0, 0x4]
+ adds r2, 0x7
+ subs r7, r1, 0x7
+ cmp r2, 0
+ bge _08056290
+ negs r6, r2
+ adds r1, r2, r4
+ ldr r0, _0805628C @ =gUnknown_03004870
+ ldr r3, [r0, 0x4]
+ cmp r1, r3
+ bge _08056286
+ adds r3, r1, 0
+_08056286:
+ movs r2, 0
+ b _080562A0
+ .align 2, 0
+_0805628C: .4byte gUnknown_03004870
+_08056290:
+ movs r6, 0
+ adds r0, r2, r4
+ ldr r1, _080562BC @ =gUnknown_03004870
+ ldr r1, [r1, 0x4]
+ subs r3, r1, r2
+ cmp r0, r1
+ bge _080562A0
+ adds r3, r4, 0
+_080562A0:
+ str r6, [sp]
+ movs r0, 0x7
+ str r0, [sp, 0x4]
+ str r3, [sp, 0x8]
+ movs r0, 0
+ adds r1, r2, 0
+ adds r2, r5, 0
+ adds r3, r7, 0
+ bl sub_8056134
+_080562B4:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080562BC: .4byte gUnknown_03004870
+ thumb_func_end sub_8056260
+
+ thumb_func_start sub_80562C0
+sub_80562C0: @ 80562C0
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r3, r0, 0
+ adds r5, r1, 0
+ cmp r5, 0
+ beq _08056318
+ ldr r0, [r5]
+ ldr r4, [r0, 0x4]
+ ldr r0, [r3]
+ ldr r0, [r0]
+ adds r7, r0, 0x7
+ adds r2, 0x7
+ cmp r2, 0
+ bge _080562F4
+ negs r6, r2
+ adds r1, r2, r4
+ ldr r0, _080562F0 @ =gUnknown_03004870
+ ldr r3, [r0, 0x4]
+ cmp r1, r3
+ bge _080562EA
+ adds r3, r1, 0
+_080562EA:
+ movs r2, 0
+ b _08056304
+ .align 2, 0
+_080562F0: .4byte gUnknown_03004870
+_080562F4:
+ movs r6, 0
+ adds r0, r2, r4
+ ldr r1, _08056320 @ =gUnknown_03004870
+ ldr r1, [r1, 0x4]
+ subs r3, r1, r2
+ cmp r0, r1
+ bge _08056304
+ adds r3, r4, 0
+_08056304:
+ str r6, [sp]
+ movs r0, 0x8
+ str r0, [sp, 0x4]
+ str r3, [sp, 0x8]
+ adds r0, r7, 0
+ adds r1, r2, 0
+ adds r2, r5, 0
+ movs r3, 0
+ bl sub_8056134
+_08056318:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08056320: .4byte gUnknown_03004870
+ thumb_func_end sub_80562C0
+
+ thumb_func_start MapGridGetZCoordAt
+MapGridGetZCoordAt: @ 8056324
+ push {r4,lr}
+ adds r2, r0, 0
+ adds r4, r1, 0
+ cmp r2, 0
+ blt _08056354
+ ldr r1, _08056350 @ =gUnknown_03004870
+ ldr r3, [r1]
+ cmp r2, r3
+ bge _08056354
+ cmp r4, 0
+ blt _08056354
+ ldr r0, [r1, 0x4]
+ cmp r4, r0
+ bge _08056354
+ adds r0, r3, 0
+ muls r0, r4
+ adds r0, r2, r0
+ ldr r1, [r1, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ b _08056376
+ .align 2, 0
+_08056350: .4byte gUnknown_03004870
+_08056354:
+ ldr r0, _08056380 @ =gMapHeader
+ ldr r3, [r0]
+ adds r1, r2, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r4, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r1, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2, 0
+ orrs r1, r0
+_08056376:
+ ldr r0, _08056384 @ =0x000003ff
+ cmp r1, r0
+ beq _08056388
+ lsrs r0, r1, 12
+ b _0805638A
+ .align 2, 0
+_08056380: .4byte gMapHeader
+_08056384: .4byte 0x000003ff
+_08056388:
+ movs r0, 0
+_0805638A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end MapGridGetZCoordAt
+
+ thumb_func_start MapGridIsImpassableAt
+MapGridIsImpassableAt: @ 8056390
+ push {r4,lr}
+ adds r2, r0, 0
+ adds r4, r1, 0
+ cmp r2, 0
+ blt _080563C0
+ ldr r1, _080563BC @ =gUnknown_03004870
+ ldr r3, [r1]
+ cmp r2, r3
+ bge _080563C0
+ cmp r4, 0
+ blt _080563C0
+ ldr r0, [r1, 0x4]
+ cmp r4, r0
+ bge _080563C0
+ adds r0, r3, 0
+ muls r0, r4
+ adds r0, r2, r0
+ ldr r1, [r1, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ b _080563E2
+ .align 2, 0
+_080563BC: .4byte gUnknown_03004870
+_080563C0:
+ ldr r0, _080563F4 @ =gMapHeader
+ ldr r3, [r0]
+ adds r1, r2, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r4, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r1, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2, 0
+ orrs r1, r0
+_080563E2:
+ ldr r0, _080563F8 @ =0x000003ff
+ cmp r1, r0
+ beq _080563FC
+ movs r0, 0xC0
+ lsls r0, 4
+ ands r1, r0
+ lsrs r0, r1, 10
+ b _080563FE
+ .align 2, 0
+_080563F4: .4byte gMapHeader
+_080563F8: .4byte 0x000003ff
+_080563FC:
+ movs r0, 0x1
+_080563FE:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end MapGridIsImpassableAt
+
+ thumb_func_start MapGridGetMetatileIdAt
+MapGridGetMetatileIdAt: @ 8056404
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r6, r1, 0
+ cmp r5, 0
+ blt _08056434
+ ldr r1, _08056430 @ =gUnknown_03004870
+ ldr r2, [r1]
+ cmp r5, r2
+ bge _08056434
+ cmp r6, 0
+ blt _08056434
+ ldr r0, [r1, 0x4]
+ cmp r6, r0
+ bge _08056434
+ adds r0, r2, 0
+ muls r0, r6
+ adds r0, r5, r0
+ ldr r1, [r1, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r4, [r0]
+ b _08056458
+ .align 2, 0
+_08056430: .4byte gUnknown_03004870
+_08056434:
+ ldr r0, _08056464 @ =gMapHeader
+ ldr r3, [r0]
+ adds r1, r5, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r6, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r1, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2, 0
+ adds r4, r0, 0
+ orrs r4, r1
+_08056458:
+ ldr r0, _08056468 @ =0x000003ff
+ cmp r4, r0
+ beq _0805646C
+ ands r4, r0
+ adds r0, r4, 0
+ b _08056490
+ .align 2, 0
+_08056464: .4byte gMapHeader
+_08056468: .4byte 0x000003ff
+_0805646C:
+ ldr r0, _08056498 @ =gMapHeader
+ ldr r3, [r0]
+ adds r1, r5, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r6, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r0, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r1, r2, 0
+ orrs r0, r1
+ ands r0, r4
+_08056490:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08056498: .4byte gMapHeader
+ thumb_func_end MapGridGetMetatileIdAt
+
+ thumb_func_start MapGridGetMetatileBehaviorAt
+MapGridGetMetatileBehaviorAt: @ 805649C
+ push {lr}
+ bl MapGridGetMetatileIdAt
+ lsls r0, 16
+ lsrs r0, 16
+ bl GetBehaviorByMetatileId
+ adds r1, r0, 0
+ movs r0, 0xFF
+ ands r0, r1
+ pop {r1}
+ bx r1
+ thumb_func_end MapGridGetMetatileBehaviorAt
+
+ thumb_func_start MapGridGetMetatileLayerTypeAt
+MapGridGetMetatileLayerTypeAt: @ 80564B4
+ push {lr}
+ bl MapGridGetMetatileIdAt
+ lsls r0, 16
+ lsrs r0, 16
+ bl GetBehaviorByMetatileId
+ adds r1, r0, 0
+ movs r0, 0xF0
+ lsls r0, 8
+ ands r0, r1
+ lsrs r0, 12
+ pop {r1}
+ bx r1
+ thumb_func_end MapGridGetMetatileLayerTypeAt
+
+ thumb_func_start MapGridSetMetatileIdAt
+MapGridSetMetatileIdAt: @ 80564D0
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ lsls r2, 16
+ lsrs r5, r2, 16
+ cmp r3, 0
+ blt _08056508
+ ldr r2, _08056510 @ =gUnknown_03004870
+ ldr r4, [r2]
+ cmp r3, r4
+ bge _08056508
+ cmp r1, 0
+ blt _08056508
+ ldr r0, [r2, 0x4]
+ cmp r1, r0
+ bge _08056508
+ muls r1, r4
+ adds r1, r3, r1
+ ldr r0, [r2, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r0, [r1]
+ movs r2, 0xF0
+ lsls r2, 8
+ ands r2, r0
+ ldr r0, _08056514 @ =0x00000fff
+ ands r0, r5
+ orrs r2, r0
+ strh r2, [r1]
+_08056508:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08056510: .4byte gUnknown_03004870
+_08056514: .4byte 0x00000fff
+ thumb_func_end MapGridSetMetatileIdAt
+
+ thumb_func_start MapGridSetMetatileEntryAt
+MapGridSetMetatileEntryAt: @ 8056518
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ lsls r2, 16
+ lsrs r5, r2, 16
+ cmp r3, 0
+ blt _08056544
+ ldr r2, _0805654C @ =gUnknown_03004870
+ ldr r4, [r2]
+ cmp r3, r4
+ bge _08056544
+ cmp r1, 0
+ blt _08056544
+ ldr r0, [r2, 0x4]
+ cmp r1, r0
+ bge _08056544
+ adds r0, r4, 0
+ muls r0, r1
+ adds r0, r3, r0
+ ldr r1, [r2, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ strh r5, [r0]
+_08056544:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805654C: .4byte gUnknown_03004870
+ thumb_func_end MapGridSetMetatileEntryAt
+
+ thumb_func_start GetBehaviorByMetatileId
+GetBehaviorByMetatileId: @ 8056550
+ push {lr}
+ lsls r0, 16
+ lsrs r2, r0, 16
+ adds r3, r2, 0
+ ldr r0, _0805656C @ =0x000001ff
+ cmp r2, r0
+ bhi _08056574
+ ldr r0, _08056570 @ =gMapHeader
+ ldr r0, [r0]
+ ldr r0, [r0, 0x10]
+ ldr r1, [r0, 0x10]
+ lsls r0, r2, 1
+ b _08056592
+ .align 2, 0
+_0805656C: .4byte 0x000001ff
+_08056570: .4byte gMapHeader
+_08056574:
+ ldr r0, _08056580 @ =0x000003ff
+ cmp r2, r0
+ bls _08056584
+ movs r0, 0xFF
+ b _08056596
+ .align 2, 0
+_08056580: .4byte 0x000003ff
+_08056584:
+ ldr r0, _0805659C @ =gMapHeader
+ ldr r0, [r0]
+ ldr r0, [r0, 0x14]
+ ldr r1, [r0, 0x10]
+ lsls r0, r3, 1
+ adds r0, r1
+ ldr r1, _080565A0 @ =0xfffffc00
+_08056592:
+ adds r0, r1
+ ldrh r0, [r0]
+_08056596:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805659C: .4byte gMapHeader
+_080565A0: .4byte 0xfffffc00
+ thumb_func_end GetBehaviorByMetatileId
+
+ thumb_func_start save_serialize_map
+save_serialize_map: @ 80565A4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ ldr r5, _0805660C @ =gSaveBlock1 + 0x34
+ ldr r0, _08056610 @ =gUnknown_03004870
+ ldr r0, [r0]
+ mov r8, r0
+ adds r0, r5, 0
+ subs r0, 0x34
+ movs r1, 0
+ ldrsh r6, [r0, r1]
+ movs r2, 0x2
+ ldrsh r0, [r0, r2]
+ adds r1, r0, 0
+ adds r1, 0xE
+ cmp r0, r1
+ bge _080565FE
+ mov r12, r1
+ ldr r1, _08056614 @ =gUnknown_02029828
+ mov r9, r1
+ lsls r7, r6, 1
+_080565D0:
+ adds r1, r6, 0
+ adds r3, r1, 0
+ adds r3, 0xF
+ adds r4, r0, 0x1
+ cmp r1, r3
+ bge _080565F8
+ mov r2, r8
+ muls r2, r0
+ adds r0, r2, 0
+ lsls r0, 1
+ add r0, r9
+ adds r2, r7, r0
+ subs r1, r3, r1
+_080565EA:
+ ldrh r0, [r2]
+ strh r0, [r5]
+ adds r5, 0x2
+ adds r2, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bne _080565EA
+_080565F8:
+ adds r0, r4, 0
+ cmp r0, r12
+ blt _080565D0
+_080565FE:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0805660C: .4byte gSaveBlock1 + 0x34
+_08056610: .4byte gUnknown_03004870
+_08056614: .4byte gUnknown_02029828
+ thumb_func_end save_serialize_map
+
+ thumb_func_start sub_8056618
+sub_8056618: @ 8056618
+ push {r4,lr}
+ movs r2, 0
+ movs r1, 0
+ ldr r4, _0805663C @ =gSaveBlock1 + 0x34
+ ldr r3, _08056640 @ =0x000001ff
+_08056622:
+ lsls r0, r1, 1
+ adds r0, r4
+ ldrh r0, [r0]
+ orrs r2, r0
+ adds r0, r1, 0x1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, r3
+ bls _08056622
+ cmp r2, 0
+ beq _08056644
+ movs r0, 0
+ b _08056646
+ .align 2, 0
+_0805663C: .4byte gSaveBlock1 + 0x34
+_08056640: .4byte 0x000001ff
+_08056644:
+ movs r0, 0x1
+_08056646:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056618
+
+ thumb_func_start sav2_mapdata_clear
+sav2_mapdata_clear: @ 805664C
+ push {lr}
+ sub sp, 0x4
+ mov r1, sp
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08056668 @ =gSaveBlock1 + 0x34
+ ldr r2, _0805666C @ =0x01000100
+ mov r0, sp
+ bl CpuSet
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08056668: .4byte gSaveBlock1 + 0x34
+_0805666C: .4byte 0x01000100
+ thumb_func_end sav2_mapdata_clear
+
+ thumb_func_start sub_8056670
+sub_8056670: @ 8056670
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ ldr r5, _080566E4 @ =gSaveBlock1 + 0x34
+ bl sub_8056618
+ cmp r0, 0
+ bne _080566D6
+ ldr r0, _080566E8 @ =gUnknown_03004870
+ ldr r0, [r0]
+ mov r8, r0
+ adds r0, r5, 0
+ subs r0, 0x34
+ movs r1, 0
+ ldrsh r6, [r0, r1]
+ movs r2, 0x2
+ ldrsh r0, [r0, r2]
+ adds r1, r0, 0
+ adds r1, 0xE
+ cmp r0, r1
+ bge _080566D2
+ mov r12, r1
+ ldr r1, _080566EC @ =gUnknown_02029828
+ mov r9, r1
+ lsls r7, r6, 1
+_080566A4:
+ adds r1, r6, 0
+ adds r3, r1, 0
+ adds r3, 0xF
+ adds r4, r0, 0x1
+ cmp r1, r3
+ bge _080566CC
+ mov r2, r8
+ muls r2, r0
+ adds r0, r2, 0
+ lsls r0, 1
+ add r0, r9
+ adds r2, r7, r0
+ subs r1, r3, r1
+_080566BE:
+ ldrh r0, [r5]
+ strh r0, [r2]
+ adds r5, 0x2
+ adds r2, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bne _080566BE
+_080566CC:
+ adds r0, r4, 0
+ cmp r0, r12
+ blt _080566A4
+_080566D2:
+ bl sav2_mapdata_clear
+_080566D6:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080566E4: .4byte gSaveBlock1 + 0x34
+_080566E8: .4byte gUnknown_03004870
+_080566EC: .4byte gUnknown_02029828
+ thumb_func_end sub_8056670
+
+ thumb_func_start sub_80566F0
+sub_80566F0: @ 80566F0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r2, r1, 0
+ ldr r0, _08056734 @ =gSaveBlock1 + 0x34
+ mov r10, r0
+ ldr r0, _08056738 @ =gUnknown_03004870
+ ldr r0, [r0]
+ str r0, [sp]
+ movs r3, 0
+ mov r9, r3
+ mov r8, r3
+ mov r0, r10
+ subs r0, 0x34
+ movs r6, 0
+ ldrsh r4, [r0, r6]
+ str r4, [sp, 0x4]
+ movs r3, 0x2
+ ldrsh r5, [r0, r3]
+ movs r7, 0xF
+ movs r4, 0xE
+ mov r12, r4
+ cmp r1, 0x2
+ beq _08056746
+ cmp r1, 0x2
+ bgt _0805673C
+ cmp r1, 0x1
+ beq _0805674E
+ b _08056766
+ .align 2, 0
+_08056734: .4byte gSaveBlock1 + 0x34
+_08056738: .4byte gUnknown_03004870
+_0805673C:
+ cmp r2, 0x3
+ beq _08056758
+ cmp r2, 0x4
+ beq _08056760
+ b _08056766
+_08056746:
+ adds r5, 0x1
+ movs r6, 0xD
+ mov r12, r6
+ b _08056766
+_0805674E:
+ movs r0, 0x1
+ mov r8, r0
+ movs r1, 0xD
+ mov r12, r1
+ b _08056766
+_08056758:
+ ldr r3, [sp, 0x4]
+ adds r3, 0x1
+ str r3, [sp, 0x4]
+ b _08056764
+_08056760:
+ movs r4, 0x1
+ mov r9, r4
+_08056764:
+ movs r7, 0xE
+_08056766:
+ movs r1, 0
+ cmp r1, r12
+ bge _080567A8
+_0805676C:
+ adds r4, r1, 0x1
+ cmp r7, 0
+ beq _080567A2
+ adds r0, r1, r5
+ ldr r6, [sp]
+ adds r2, r6, 0
+ muls r2, r0
+ add r1, r8
+ lsls r0, r1, 4
+ subs r0, r1
+ add r0, r9
+ ldr r1, [sp, 0x4]
+ adds r2, r1, r2
+ adds r3, r7, 0
+ lsls r2, 1
+ ldr r6, _080567BC @ =gUnknown_02029828
+ adds r2, r6
+ lsls r0, 1
+ mov r6, r10
+ adds r1, r0, r6
+_08056794:
+ ldrh r0, [r1]
+ strh r0, [r2]
+ adds r1, 0x2
+ adds r2, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bne _08056794
+_080567A2:
+ adds r1, r4, 0
+ cmp r1, r12
+ blt _0805676C
+_080567A8:
+ bl sav2_mapdata_clear
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080567BC: .4byte gUnknown_02029828
+ thumb_func_end sub_80566F0
+
+ thumb_func_start GetMapBorderIdAt
+GetMapBorderIdAt: @ 80567C0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ cmp r4, 0
+ blt _080567FC
+ ldr r1, _080567F4 @ =gUnknown_03004870
+ ldr r2, [r1]
+ cmp r4, r2
+ bge _080567FC
+ cmp r5, 0
+ blt _080567FC
+ ldr r0, [r1, 0x4]
+ cmp r5, r0
+ bge _080567FC
+ adds r0, r2, 0
+ muls r0, r5
+ adds r0, r4, r0
+ ldr r1, [r1, 0x8]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ ldr r0, _080567F8 @ =0x000003ff
+ cmp r1, r0
+ beq _08056894
+ b _08056824
+ .align 2, 0
+_080567F4: .4byte gUnknown_03004870
+_080567F8: .4byte 0x000003ff
+_080567FC:
+ ldr r0, _08056840 @ =gMapHeader
+ ldr r3, [r0]
+ adds r1, r4, 0x1
+ movs r2, 0x1
+ ands r1, r2
+ adds r0, r5, 0x1
+ ands r0, r2
+ lsls r0, 1
+ adds r1, r0
+ ldr r0, [r3, 0x8]
+ lsls r1, 1
+ adds r1, r0
+ ldrh r1, [r1]
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2, 0
+ orrs r0, r1
+ ldr r1, _08056844 @ =0x000003ff
+ cmp r0, r1
+ beq _08056894
+_08056824:
+ ldr r1, _08056848 @ =gUnknown_03004870
+ ldr r0, [r1]
+ subs r0, 0x8
+ cmp r4, r0
+ blt _08056850
+ ldr r0, _0805684C @ =gUnknown_0202E850
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _08056894
+ movs r0, 0x4
+ b _080568A6
+ .align 2, 0
+_08056840: .4byte gMapHeader
+_08056844: .4byte 0x000003ff
+_08056848: .4byte gUnknown_03004870
+_0805684C: .4byte gUnknown_0202E850
+_08056850:
+ cmp r4, 0x6
+ bgt _08056868
+ ldr r0, _08056864 @ =gUnknown_0202E850
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08056894
+ movs r0, 0x3
+ b _080568A6
+ .align 2, 0
+_08056864: .4byte gUnknown_0202E850
+_08056868:
+ ldr r0, [r1, 0x4]
+ subs r0, 0x7
+ cmp r5, r0
+ blt _08056884
+ ldr r0, _08056880 @ =gUnknown_0202E850
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08056894
+ movs r0, 0x1
+ b _080568A6
+ .align 2, 0
+_08056880: .4byte gUnknown_0202E850
+_08056884:
+ cmp r5, 0x6
+ bgt _080568A4
+ ldr r0, _0805689C @ =gUnknown_0202E850
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _080568A0
+_08056894:
+ movs r0, 0x1
+ negs r0, r0
+ b _080568A6
+ .align 2, 0
+_0805689C: .4byte gUnknown_0202E850
+_080568A0:
+ movs r0, 0x2
+ b _080568A6
+_080568A4:
+ movs r0, 0
+_080568A6:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end GetMapBorderIdAt
+
+ thumb_func_start GetPostCameraMoveMapBorderId
+GetPostCameraMoveMapBorderId: @ 80568AC
+ push {r4,lr}
+ adds r3, r1, 0
+ ldr r1, _080568D0 @ =gSaveBlock1
+ movs r4, 0
+ ldrsh r2, [r1, r4]
+ adds r0, 0x7
+ adds r2, r0
+ movs r0, 0x2
+ ldrsh r1, [r1, r0]
+ adds r3, 0x7
+ adds r1, r3
+ adds r0, r2, 0
+ bl GetMapBorderIdAt
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080568D0: .4byte gSaveBlock1
+ thumb_func_end GetPostCameraMoveMapBorderId
+
+ thumb_func_start CanCameraMoveInDirection
+CanCameraMoveInDirection: @ 80568D4
+ push {r4,r5,lr}
+ ldr r4, _08056908 @ =gSaveBlock1
+ movs r1, 0
+ ldrsh r3, [r4, r1]
+ ldr r2, _0805690C @ =gUnknown_0821664C
+ lsls r0, 3
+ adds r1, r0, r2
+ ldr r1, [r1]
+ adds r1, 0x7
+ adds r3, r1
+ movs r5, 0x2
+ ldrsh r1, [r4, r5]
+ adds r2, 0x4
+ adds r0, r2
+ ldr r0, [r0]
+ adds r0, 0x7
+ adds r1, r0
+ adds r0, r3, 0
+ bl GetMapBorderIdAt
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ beq _08056910
+ movs r0, 0x1
+ b _08056912
+ .align 2, 0
+_08056908: .4byte gSaveBlock1
+_0805690C: .4byte gUnknown_0821664C
+_08056910:
+ movs r0, 0
+_08056912:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end CanCameraMoveInDirection
+
+ thumb_func_start sub_8056918
+sub_8056918: @ 8056918
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r6, r2, 0
+ adds r7, r3, 0
+ bl mapconnection_get_mapheader
+ adds r3, r0, 0
+ cmp r4, 0x2
+ beq _08056978
+ cmp r4, 0x2
+ bgt _08056936
+ cmp r4, 0x1
+ beq _08056964
+ b _08056988
+_08056936:
+ cmp r4, 0x3
+ beq _08056950
+ cmp r4, 0x4
+ bne _08056988
+ ldr r1, _0805694C @ =gSaveBlock1
+ negs r0, r6
+ strh r0, [r1]
+ ldr r2, [r5, 0x4]
+ ldrh r0, [r1, 0x2]
+ subs r0, r2
+ b _08056986
+ .align 2, 0
+_0805694C: .4byte gSaveBlock1
+_08056950:
+ ldr r1, _08056960 @ =gSaveBlock1
+ ldr r0, [r3]
+ ldr r0, [r0]
+ strh r0, [r1]
+ ldr r2, [r5, 0x4]
+ ldrh r0, [r1, 0x2]
+ subs r0, r2
+ b _08056986
+ .align 2, 0
+_08056960: .4byte gSaveBlock1
+_08056964:
+ ldr r1, _08056974 @ =gSaveBlock1
+ ldr r2, [r5, 0x4]
+ ldrh r0, [r1]
+ subs r0, r2
+ strh r0, [r1]
+ negs r0, r7
+ b _08056986
+ .align 2, 0
+_08056974: .4byte gSaveBlock1
+_08056978:
+ ldr r1, _08056990 @ =gSaveBlock1
+ ldr r2, [r5, 0x4]
+ ldrh r0, [r1]
+ subs r0, r2
+ strh r0, [r1]
+ ldr r0, [r3]
+ ldr r0, [r0, 0x4]
+_08056986:
+ strh r0, [r1, 0x2]
+_08056988:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08056990: .4byte gSaveBlock1
+ thumb_func_end sub_8056918
+
+ thumb_func_start CameraMove
+CameraMove: @ 8056994
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r10, r0
+ str r1, [sp]
+ ldr r1, _080569D4 @ =gUnknown_0202E844
+ ldrb r0, [r1]
+ movs r1, 0x2
+ negs r1, r1
+ ands r1, r0
+ ldr r2, _080569D4 @ =gUnknown_0202E844
+ strb r1, [r2]
+ mov r0, r10
+ ldr r1, [sp]
+ bl GetPostCameraMoveMapBorderId
+ adds r7, r0, 0
+ adds r0, r7, 0x1
+ cmp r0, 0x1
+ bhi _080569DC
+ ldr r0, _080569D8 @ =gSaveBlock1
+ ldrh r1, [r0]
+ add r1, r10
+ strh r1, [r0]
+ ldrh r1, [r0, 0x2]
+ ldr r2, [sp]
+ adds r1, r2
+ strh r1, [r0, 0x2]
+ b _08056A42
+ .align 2, 0
+_080569D4: .4byte gUnknown_0202E844
+_080569D8: .4byte gSaveBlock1
+_080569DC:
+ bl save_serialize_map
+ ldr r5, _08056A5C @ =gSaveBlock1
+ movs r0, 0
+ ldrsh r6, [r5, r0]
+ movs r2, 0x2
+ ldrsh r1, [r5, r2]
+ mov r8, r1
+ lsls r0, r7, 24
+ lsrs r0, 24
+ mov r9, r0
+ adds r1, r6, 0
+ mov r2, r8
+ bl sub_8056A64
+ adds r4, r0, 0
+ adds r1, r7, 0
+ mov r2, r10
+ ldr r3, [sp]
+ bl sub_8056918
+ ldrb r0, [r4, 0x8]
+ ldrb r1, [r4, 0x9]
+ bl sub_80538F0
+ ldr r1, _08056A60 @ =gUnknown_0202E844
+ ldrb r0, [r1]
+ movs r1, 0x1
+ orrs r0, r1
+ ldr r2, _08056A60 @ =gUnknown_0202E844
+ strb r0, [r2]
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ subs r6, r0
+ str r6, [r2, 0x4]
+ movs r2, 0x2
+ ldrsh r0, [r5, r2]
+ mov r1, r8
+ subs r1, r0
+ ldr r2, _08056A60 @ =gUnknown_0202E844
+ str r1, [r2, 0x8]
+ ldrh r0, [r5]
+ add r0, r10
+ strh r0, [r5]
+ ldrh r0, [r5, 0x2]
+ ldr r1, [sp]
+ adds r0, r1
+ strh r0, [r5, 0x2]
+ mov r0, r9
+ bl sub_80566F0
+_08056A42:
+ ldr r0, _08056A60 @ =gUnknown_0202E844
+ ldrb r0, [r0]
+ lsls r0, 31
+ lsrs r0, 31
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08056A5C: .4byte gSaveBlock1
+_08056A60: .4byte gUnknown_0202E844
+ thumb_func_end CameraMove
+
+ thumb_func_start sub_8056A64
+sub_8056A64: @ 8056A64
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ mov r9, r1
+ mov r8, r2
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _08056AA0 @ =gMapHeader
+ ldr r0, [r0, 0xC]
+ ldr r7, [r0]
+ ldr r4, [r0, 0x4]
+ movs r5, 0
+ cmp r5, r7
+ bge _08056AAC
+_08056A82:
+ ldrb r0, [r4]
+ cmp r0, r6
+ bne _08056AA4
+ adds r0, r6, 0
+ mov r1, r9
+ mov r2, r8
+ adds r3, r4, 0
+ bl sub_8056ABC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08056AA4
+ adds r0, r4, 0
+ b _08056AAE
+ .align 2, 0
+_08056AA0: .4byte gMapHeader
+_08056AA4:
+ adds r5, 0x1
+ adds r4, 0xC
+ cmp r5, r7
+ blt _08056A82
+_08056AAC:
+ movs r0, 0
+_08056AAE:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056A64
+
+ thumb_func_start sub_8056ABC
+sub_8056ABC: @ 8056ABC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r1, 0
+ mov r8, r2
+ adds r5, r3, 0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r6, r4, 0
+ adds r0, r5, 0
+ bl mapconnection_get_mapheader
+ adds r2, r0, 0
+ cmp r4, 0x1
+ blt _08056B14
+ cmp r4, 0x2
+ bgt _08056AF4
+ ldr r0, _08056AF0 @ =gMapHeader
+ ldr r0, [r0]
+ ldr r1, [r0]
+ ldr r0, [r2]
+ ldr r2, [r0]
+ ldr r3, [r5, 0x4]
+ adds r0, r7, 0
+ b _08056B06
+ .align 2, 0
+_08056AF0: .4byte gMapHeader
+_08056AF4:
+ cmp r6, 0x4
+ bgt _08056B14
+ ldr r0, _08056B10 @ =gMapHeader
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ ldr r0, [r2]
+ ldr r2, [r0, 0x4]
+ ldr r3, [r5, 0x4]
+ mov r0, r8
+_08056B06:
+ bl sub_8056B20
+ lsls r0, 24
+ lsrs r0, 24
+ b _08056B16
+ .align 2, 0
+_08056B10: .4byte gMapHeader
+_08056B14:
+ movs r0, 0
+_08056B16:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056ABC
+
+ thumb_func_start sub_8056B20
+sub_8056B20: @ 8056B20
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, r2, 0
+ adds r2, r3, 0
+ cmp r3, 0
+ bge _08056B2E
+ movs r3, 0
+_08056B2E:
+ adds r2, r0, r2
+ cmp r2, r1
+ bge _08056B36
+ adds r1, r2, 0
+_08056B36:
+ cmp r3, r4
+ bgt _08056B42
+ cmp r4, r1
+ bgt _08056B42
+ movs r0, 0x1
+ b _08056B44
+_08056B42:
+ movs r0, 0
+_08056B44:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056B20
+
+ thumb_func_start sub_8056B4C
+sub_8056B4C: @ 8056B4C
+ push {lr}
+ cmp r0, 0
+ blt _08056B5A
+ cmp r0, r1
+ bge _08056B5A
+ movs r0, 0x1
+ b _08056B5C
+_08056B5A:
+ movs r0, 0
+_08056B5C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056B4C
+
+ thumb_func_start sub_8056B60
+sub_8056B60: @ 8056B60
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ bl mapconnection_get_mapheader
+ adds r1, r0, 0
+ ldrb r0, [r4]
+ cmp r0, 0x1
+ blt _08056B98
+ cmp r0, 0x2
+ bgt _08056B86
+ ldr r0, [r4, 0x4]
+ subs r0, r5, r0
+ ldr r1, [r1]
+ ldr r1, [r1]
+ bl sub_8056B4C
+ b _08056B9A
+_08056B86:
+ cmp r0, 0x4
+ bgt _08056B98
+ ldr r0, [r4, 0x4]
+ subs r0, r6, r0
+ ldr r1, [r1]
+ ldr r1, [r1, 0x4]
+ bl sub_8056B4C
+ b _08056B9A
+_08056B98:
+ movs r0, 0
+_08056B9A:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056B60
+
+ thumb_func_start sub_8056BA0
+sub_8056BA0: @ 8056BA0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r2, _08056BC0 @ =gMapHeader
+ ldr r0, [r2, 0xC]
+ cmp r0, 0
+ bne _08056BC8
+ b _08056C3E
+ .align 2, 0
+_08056BC0: .4byte gMapHeader
+_08056BC4:
+ adds r0, r4, 0
+ b _08056C40
+_08056BC8:
+ ldr r7, [r0]
+ ldr r4, [r0, 0x4]
+ movs r6, 0
+ cmp r6, r7
+ bge _08056C3E
+ lsls r0, r1, 16
+ asrs r5, r0, 16
+ mov r9, r2
+ mov r1, r8
+ lsls r0, r1, 16
+ asrs r0, 16
+ mov r10, r0
+_08056BE0:
+ ldrb r1, [r4]
+ adds r3, r1, 0
+ subs r0, r1, 0x5
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _08056C36
+ cmp r1, 0x2
+ bne _08056BF6
+ cmp r5, 0x6
+ bgt _08056C36
+_08056BF6:
+ cmp r1, 0x1
+ bne _08056C06
+ mov r2, r9
+ ldr r0, [r2]
+ ldr r0, [r0, 0x4]
+ adds r0, 0x7
+ cmp r5, r0
+ blt _08056C36
+_08056C06:
+ mov r0, r8
+ lsls r2, r0, 16
+ cmp r1, 0x3
+ bne _08056C14
+ mov r1, r10
+ cmp r1, 0x6
+ bgt _08056C36
+_08056C14:
+ cmp r3, 0x4
+ bne _08056C26
+ asrs r1, r2, 16
+ mov r3, r9
+ ldr r0, [r3]
+ ldr r0, [r0]
+ adds r0, 0x7
+ cmp r1, r0
+ blt _08056C36
+_08056C26:
+ asrs r1, r2, 16
+ subs r1, 0x7
+ adds r0, r4, 0
+ subs r2, r5, 0x7
+ bl sub_8056B60
+ cmp r0, 0x1
+ beq _08056BC4
+_08056C36:
+ adds r6, 0x1
+ adds r4, 0xC
+ cmp r6, r7
+ blt _08056BE0
+_08056C3E:
+ movs r0, 0
+_08056C40:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056BA0
+
+ thumb_func_start sub_8056C50
+sub_8056C50: @ 8056C50
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ lsrs r1, 16
+ ldr r2, _08056C64 @ =gSaveBlock1
+ subs r0, 0x7
+ strh r0, [r2]
+ subs r1, 0x7
+ strh r1, [r2, 0x2]
+ bx lr
+ .align 2, 0
+_08056C64: .4byte gSaveBlock1
+ thumb_func_end sub_8056C50
+
+ thumb_func_start sav1_camera_get_focus_coords
+sav1_camera_get_focus_coords: @ 8056C68
+ ldr r3, _08056C78 @ =gSaveBlock1
+ ldrh r2, [r3]
+ adds r2, 0x7
+ strh r2, [r0]
+ ldrh r0, [r3, 0x2]
+ adds r0, 0x7
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_08056C78: .4byte gSaveBlock1
+ thumb_func_end sav1_camera_get_focus_coords
+
+ thumb_func_start unref_sub_8056C7C
+unref_sub_8056C7C: @ 8056C7C
+ ldr r2, _08056C84 @ =gSaveBlock1
+ strh r0, [r2]
+ strh r1, [r2, 0x2]
+ bx lr
+ .align 2, 0
+_08056C84: .4byte gSaveBlock1
+ thumb_func_end unref_sub_8056C7C
+
+ thumb_func_start GetCameraCoords
+GetCameraCoords: @ 8056C88
+ ldr r3, _08056C94 @ =gSaveBlock1
+ ldrh r2, [r3]
+ strh r2, [r0]
+ ldrh r0, [r3, 0x2]
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_08056C94: .4byte gSaveBlock1
+ thumb_func_end GetCameraCoords
+
+ thumb_func_start sub_8056C98
+sub_8056C98: @ 8056C98
+ push {lr}
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _08056CB8
+ ldrb r0, [r2]
+ cmp r0, 0
+ bne _08056CB2
+ ldr r0, [r2, 0x4]
+ movs r2, 0x80
+ lsls r2, 5
+ bl CpuFastSet
+ b _08056CB8
+_08056CB2:
+ ldr r0, [r2, 0x4]
+ bl LZ77UnCompVram
+_08056CB8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8056C98
+
+ thumb_func_start sub_8056CBC
+sub_8056CBC: @ 8056CBC
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ cmp r4, 0
+ beq _08056D1E
+ ldrb r1, [r4, 0x1]
+ cmp r1, 0
+ bne _08056CEE
+ mov r0, sp
+ strh r1, [r0]
+ lsls r1, r5, 16
+ lsrs r1, 16
+ movs r2, 0x2
+ bl LoadPalette
+ ldr r0, [r4, 0x8]
+ adds r0, 0x2
+ adds r1, r5, 0x1
+ lsls r1, 16
+ lsrs r1, 16
+ subs r2, r6, 0x2
+ lsls r2, 16
+ b _08056CFC
+_08056CEE:
+ cmp r1, 0x1
+ bne _08056D04
+ ldr r0, [r4, 0x8]
+ adds r0, 0xC0
+ lsls r1, r5, 16
+ lsrs r1, 16
+ lsls r2, r6, 16
+_08056CFC:
+ lsrs r2, 16
+ bl LoadPalette
+ b _08056D1E
+_08056D04:
+ ldr r0, [r4, 0x8]
+ movs r4, 0x80
+ lsls r4, 18
+ adds r1, r4, 0
+ bl LZ77UnCompVram
+ lsls r1, r5, 16
+ lsrs r1, 16
+ lsls r2, r6, 16
+ lsrs r2, 16
+ adds r0, r4, 0
+ bl LoadPalette
+_08056D1E:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8056CBC
+
+ thumb_func_start sub_8056D28
+sub_8056D28: @ 8056D28
+ push {lr}
+ movs r1, 0xC0
+ lsls r1, 19
+ ldr r0, [r0, 0x10]
+ bl sub_8056C98
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8056D28
+
+ thumb_func_start sub_8056D38
+sub_8056D38: @ 8056D38
+ push {lr}
+ ldr r1, _08056D48 @ =0x06004000
+ ldr r0, [r0, 0x14]
+ bl sub_8056C98
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08056D48: .4byte 0x06004000
+ thumb_func_end sub_8056D38
+
+ thumb_func_start apply_map_tileset1_palette
+apply_map_tileset1_palette: @ 8056D4C
+ push {lr}
+ ldr r0, [r0, 0x10]
+ movs r1, 0
+ movs r2, 0xC0
+ bl sub_8056CBC
+ pop {r0}
+ bx r0
+ thumb_func_end apply_map_tileset1_palette
+
+ thumb_func_start apply_map_tileset2_palette
+apply_map_tileset2_palette: @ 8056D5C
+ push {lr}
+ ldr r0, [r0, 0x14]
+ movs r1, 0x60
+ movs r2, 0xC0
+ bl sub_8056CBC
+ pop {r0}
+ bx r0
+ thumb_func_end apply_map_tileset2_palette
+
+ thumb_func_start copy_map_tileset1_tileset2_to_vram
+copy_map_tileset1_tileset2_to_vram: @ 8056D6C
+ push {r4,lr}
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _08056D7E
+ bl sub_8056D28
+ adds r0, r4, 0
+ bl sub_8056D38
+_08056D7E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end copy_map_tileset1_tileset2_to_vram
+
+ thumb_func_start apply_map_tileset1_tileset2_palette
+apply_map_tileset1_tileset2_palette: @ 8056D84
+ push {r4,lr}
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _08056D96
+ bl apply_map_tileset1_palette
+ adds r0, r4, 0
+ bl apply_map_tileset2_palette
+_08056D96:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end apply_map_tileset1_tileset2_palette
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/metatile_behavior.s b/asm/metatile_behavior.s
new file mode 100644
index 000000000..2607b8b3b
--- /dev/null
+++ b/asm/metatile_behavior.s
@@ -0,0 +1,2345 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8056D9C
+sub_8056D9C: @ 8056D9C
+ movs r0, 0x1
+ bx lr
+ thumb_func_end sub_8056D9C
+
+ thumb_func_start sub_8056DA0
+sub_8056DA0: @ 8056DA0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _08056DB8 @ =gUnknown_08308E2C
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08056DBC
+ movs r0, 0
+ b _08056DBE
+ .align 2, 0
+_08056DB8: .4byte gUnknown_08308E2C
+_08056DBC:
+ movs r0, 0x1
+_08056DBE:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056DA0
+
+ thumb_func_start MetatileBehavior_IsJumpEast
+MetatileBehavior_IsJumpEast: @ 8056DC4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x38
+ beq _08056DD2
+ movs r0, 0
+ b _08056DD4
+_08056DD2:
+ movs r0, 0x1
+_08056DD4:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsJumpEast
+
+ thumb_func_start MetatileBehavior_IsJumpWest
+MetatileBehavior_IsJumpWest: @ 8056DD8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x39
+ beq _08056DE6
+ movs r0, 0
+ b _08056DE8
+_08056DE6:
+ movs r0, 0x1
+_08056DE8:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsJumpWest
+
+ thumb_func_start MetatileBehavior_IsJumpNorth
+MetatileBehavior_IsJumpNorth: @ 8056DEC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3A
+ beq _08056DFA
+ movs r0, 0
+ b _08056DFC
+_08056DFA:
+ movs r0, 0x1
+_08056DFC:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsJumpNorth
+
+ thumb_func_start MetatileBehavior_IsJumpSouth
+MetatileBehavior_IsJumpSouth: @ 8056E00
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3B
+ beq _08056E0E
+ movs r0, 0
+ b _08056E10
+_08056E0E:
+ movs r0, 0x1
+_08056E10:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsJumpSouth
+
+ thumb_func_start sub_8056E14
+sub_8056E14: @ 8056E14
+ push {lr}
+ lsls r0, 24
+ movs r1, 0xFE
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _08056E28
+ movs r0, 0
+ b _08056E2A
+_08056E28:
+ movs r0, 0x1
+_08056E2A:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056E14
+
+ thumb_func_start MetatileBehavior_IsSandOrDeepSand
+MetatileBehavior_IsSandOrDeepSand: @ 8056E30
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x21
+ beq _08056E3E
+ cmp r0, 0x6
+ bne _08056E42
+_08056E3E:
+ movs r0, 0x1
+ b _08056E44
+_08056E42:
+ movs r0, 0
+_08056E44:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSandOrDeepSand
+
+ thumb_func_start MetatileBehavior_IsDeepSand
+MetatileBehavior_IsDeepSand: @ 8056E48
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x6
+ beq _08056E56
+ movs r0, 0
+ b _08056E58
+_08056E56:
+ movs r0, 0x1
+_08056E58:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsDeepSand
+
+ thumb_func_start MetatileBehavior_IsReflective
+MetatileBehavior_IsReflective: @ 8056E5C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x10
+ beq _08056E7A
+ cmp r0, 0x16
+ beq _08056E7A
+ cmp r0, 0x1A
+ beq _08056E7A
+ cmp r0, 0x20
+ beq _08056E7A
+ cmp r0, 0x14
+ beq _08056E7A
+ cmp r0, 0x2B
+ bne _08056E7E
+_08056E7A:
+ movs r0, 0x1
+ b _08056E80
+_08056E7E:
+ movs r0, 0
+_08056E80:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsReflective
+
+ thumb_func_start MetatileBehavior_IsIce
+MetatileBehavior_IsIce: @ 8056E84
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x20
+ beq _08056E92
+ movs r0, 0
+ b _08056E94
+_08056E92:
+ movs r0, 0x1
+_08056E94:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsIce
+
+ thumb_func_start is_tile_x69_2_warp_door
+is_tile_x69_2_warp_door: @ 8056E98
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x69
+ beq _08056EA6
+ movs r0, 0
+ b _08056EA8
+_08056EA6:
+ movs r0, 0x1
+_08056EA8:
+ pop {r1}
+ bx r1
+ thumb_func_end is_tile_x69_2_warp_door
+
+ thumb_func_start sub_8056EAC
+sub_8056EAC: @ 8056EAC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x8D
+ beq _08056EBA
+ cmp r0, 0x69
+ bne _08056EBE
+_08056EBA:
+ movs r0, 0x1
+ b _08056EC0
+_08056EBE:
+ movs r0, 0
+_08056EC0:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056EAC
+
+ thumb_func_start MetatileBehavior_IsEscalator
+MetatileBehavior_IsEscalator: @ 8056EC4
+ push {lr}
+ lsls r0, 24
+ movs r1, 0x96
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _08056ED8
+ movs r0, 0
+ b _08056EDA
+_08056ED8:
+ movs r0, 0x1
+_08056EDA:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsEscalator
+
+ thumb_func_start unref_sub_8056EE0
+unref_sub_8056EE0: @ 8056EE0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x4
+ beq _08056EEE
+ movs r0, 0
+ b _08056EF0
+_08056EEE:
+ movs r0, 0x1
+_08056EF0:
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_8056EE0
+
+ thumb_func_start MetatileBehavior_IsLadder
+MetatileBehavior_IsLadder: @ 8056EF4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x61
+ beq _08056F02
+ movs r0, 0
+ b _08056F04
+_08056F02:
+ movs r0, 0x1
+_08056F04:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsLadder
+
+ thumb_func_start sub_8056F08
+sub_8056F08: @ 8056F08
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x60
+ beq _08056F1A
+ cmp r0, 0x6C
+ beq _08056F1A
+ cmp r0, 0x6E
+ bne _08056F1E
+_08056F1A:
+ movs r0, 0x1
+ b _08056F20
+_08056F1E:
+ movs r0, 0
+_08056F20:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056F08
+
+ thumb_func_start sub_8056F24
+sub_8056F24: @ 8056F24
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x6E
+ beq _08056F32
+ movs r0, 0
+ b _08056F34
+_08056F32:
+ movs r0, 0x1
+_08056F34:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056F24
+
+ thumb_func_start MetatileBehavior_IsSurfableWaterOrUnderwater
+MetatileBehavior_IsSurfableWaterOrUnderwater: @ 8056F38
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _08056F50 @ =gUnknown_08308E2C
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _08056F54
+ movs r0, 0
+ b _08056F56
+ .align 2, 0
+_08056F50: .4byte gUnknown_08308E2C
+_08056F54:
+ movs r0, 0x1
+_08056F56:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSurfableWaterOrUnderwater
+
+ thumb_func_start MetatileBehavior_IsEastArrowWarp
+MetatileBehavior_IsEastArrowWarp: @ 8056F5C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x62
+ beq _08056F6A
+ movs r0, 0
+ b _08056F6C
+_08056F6A:
+ movs r0, 0x1
+_08056F6C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsEastArrowWarp
+
+ thumb_func_start MetatileBehavior_IsWestArrowWarp
+MetatileBehavior_IsWestArrowWarp: @ 8056F70
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x63
+ beq _08056F7E
+ movs r0, 0
+ b _08056F80
+_08056F7E:
+ movs r0, 0x1
+_08056F80:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWestArrowWarp
+
+ thumb_func_start MetatileBehavior_IsNorthArrowWarp
+MetatileBehavior_IsNorthArrowWarp: @ 8056F84
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x64
+ beq _08056F92
+ cmp r0, 0x1B
+ bne _08056F96
+_08056F92:
+ movs r0, 0x1
+ b _08056F98
+_08056F96:
+ movs r0, 0
+_08056F98:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsNorthArrowWarp
+
+ thumb_func_start MetatileBehavior_IsSouthArrowWarp
+MetatileBehavior_IsSouthArrowWarp: @ 8056F9C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x65
+ beq _08056FAE
+ cmp r0, 0x6D
+ beq _08056FAE
+ cmp r0, 0x1C
+ bne _08056FB2
+_08056FAE:
+ movs r0, 0x1
+ b _08056FB4
+_08056FB2:
+ movs r0, 0
+_08056FB4:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSouthArrowWarp
+
+ thumb_func_start unref_sub_8056FB8
+unref_sub_8056FB8: @ 8056FB8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r5, 0
+ adds r0, r4, 0
+ bl MetatileBehavior_IsEastArrowWarp
+ lsls r0, 24
+ cmp r0, 0
+ bne _08056FF0
+ adds r0, r4, 0
+ bl MetatileBehavior_IsWestArrowWarp
+ lsls r0, 24
+ cmp r0, 0
+ bne _08056FF0
+ adds r0, r4, 0
+ bl MetatileBehavior_IsNorthArrowWarp
+ lsls r0, 24
+ cmp r0, 0
+ bne _08056FF0
+ adds r0, r4, 0
+ bl MetatileBehavior_IsSouthArrowWarp
+ lsls r0, 24
+ cmp r0, 0
+ beq _08056FF2
+_08056FF0:
+ movs r5, 0x1
+_08056FF2:
+ adds r0, r5, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_8056FB8
+
+ thumb_func_start sub_8056FFC
+sub_8056FFC: @ 8056FFC
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xC0
+ lsls r2, 24
+ adds r0, r2
+ lsrs r0, 24
+ cmp r0, 0x8
+ bls _08057032
+ adds r0, r1, 0
+ subs r0, 0x50
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _08057032
+ cmp r1, 0xD0
+ beq _08057032
+ cmp r1, 0xD2
+ beq _08057032
+ cmp r1, 0x13
+ beq _08057032
+ cmp r1, 0x20
+ beq _08057032
+ cmp r1, 0xBB
+ beq _08057032
+ cmp r1, 0xBC
+ bne _08057036
+_08057032:
+ movs r0, 0x1
+ b _08057038
+_08057036:
+ movs r0, 0
+_08057038:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8056FFC
+
+ thumb_func_start MetatileBehavior_IsIce_2
+MetatileBehavior_IsIce_2: @ 805703C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x20
+ beq _0805704A
+ movs r0, 0
+ b _0805704C
+_0805704A:
+ movs r0, 0x1
+_0805704C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsIce_2
+
+ thumb_func_start MetatileBehavior_IsTrickHouseSlipperyFloor
+MetatileBehavior_IsTrickHouseSlipperyFloor: @ 8057050
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x48
+ beq _0805705E
+ movs r0, 0
+ b _08057060
+_0805705E:
+ movs r0, 0x1
+_08057060:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsTrickHouseSlipperyFloor
+
+ thumb_func_start MetatileBehavior_0x05
+MetatileBehavior_0x05: @ 8057064
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x5
+ beq _08057072
+ movs r0, 0
+ b _08057074
+_08057072:
+ movs r0, 0x1
+_08057074:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_0x05
+
+ thumb_func_start MetatileBehavior_IsWalkNorth
+MetatileBehavior_IsWalkNorth: @ 8057078
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x42
+ beq _08057086
+ movs r0, 0
+ b _08057088
+_08057086:
+ movs r0, 0x1
+_08057088:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWalkNorth
+
+ thumb_func_start MetatileBehavior_IsWalkSouth
+MetatileBehavior_IsWalkSouth: @ 805708C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x43
+ beq _0805709A
+ movs r0, 0
+ b _0805709C
+_0805709A:
+ movs r0, 0x1
+_0805709C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWalkSouth
+
+ thumb_func_start MetatileBehavior_IsWalkWest
+MetatileBehavior_IsWalkWest: @ 80570A0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x41
+ beq _080570AE
+ movs r0, 0
+ b _080570B0
+_080570AE:
+ movs r0, 0x1
+_080570B0:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWalkWest
+
+ thumb_func_start MetatileBehavior_IsWalkEast
+MetatileBehavior_IsWalkEast: @ 80570B4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080570C2
+ movs r0, 0
+ b _080570C4
+_080570C2:
+ movs r0, 0x1
+_080570C4:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWalkEast
+
+ thumb_func_start MetatileBehavior_IsNorthwardCurrent
+MetatileBehavior_IsNorthwardCurrent: @ 80570C8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x52
+ beq _080570D6
+ movs r0, 0
+ b _080570D8
+_080570D6:
+ movs r0, 0x1
+_080570D8:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsNorthwardCurrent
+
+ thumb_func_start MetatileBehavior_IsSouthwardCurrent
+MetatileBehavior_IsSouthwardCurrent: @ 80570DC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x53
+ beq _080570EA
+ movs r0, 0
+ b _080570EC
+_080570EA:
+ movs r0, 0x1
+_080570EC:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSouthwardCurrent
+
+ thumb_func_start MetatileBehavior_IsWestwardCurrent
+MetatileBehavior_IsWestwardCurrent: @ 80570F0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x51
+ beq _080570FE
+ movs r0, 0
+ b _08057100
+_080570FE:
+ movs r0, 0x1
+_08057100:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWestwardCurrent
+
+ thumb_func_start MetatileBehavior_IsEastwardCurrent
+MetatileBehavior_IsEastwardCurrent: @ 8057104
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x50
+ beq _08057112
+ movs r0, 0
+ b _08057114
+_08057112:
+ movs r0, 0x1
+_08057114:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsEastwardCurrent
+
+ thumb_func_start MetatileBehavior_IsSlideNorth
+MetatileBehavior_IsSlideNorth: @ 8057118
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x46
+ beq _08057126
+ movs r0, 0
+ b _08057128
+_08057126:
+ movs r0, 0x1
+_08057128:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSlideNorth
+
+ thumb_func_start MetatileBehavior_IsSlideSouth
+MetatileBehavior_IsSlideSouth: @ 805712C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x47
+ beq _0805713A
+ movs r0, 0
+ b _0805713C
+_0805713A:
+ movs r0, 0x1
+_0805713C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSlideSouth
+
+ thumb_func_start MetatileBehavior_IsSlideWest
+MetatileBehavior_IsSlideWest: @ 8057140
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x45
+ beq _0805714E
+ movs r0, 0
+ b _08057150
+_0805714E:
+ movs r0, 0x1
+_08057150:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSlideWest
+
+ thumb_func_start MetatileBehavior_IsSlideEast
+MetatileBehavior_IsSlideEast: @ 8057154
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x44
+ beq _08057162
+ movs r0, 0
+ b _08057164
+_08057162:
+ movs r0, 0x1
+_08057164:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSlideEast
+
+ thumb_func_start MetatileBehavior_IsCounter
+MetatileBehavior_IsCounter: @ 8057168
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x80
+ beq _08057176
+ movs r0, 0
+ b _08057178
+_08057176:
+ movs r0, 0x1
+_08057178:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsCounter
+
+ thumb_func_start MetatileBehavior_IsPlayerFacingTVScreen
+MetatileBehavior_IsPlayerFacingTVScreen: @ 805717C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ cmp r1, 0x2
+ bne _0805718E
+ cmp r0, 0x86
+ beq _08057192
+_0805718E:
+ movs r0, 0
+ b _08057194
+_08057192:
+ movs r0, 0x1
+_08057194:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsPlayerFacingTVScreen
+
+ thumb_func_start MetatileBehavior_IsPC
+MetatileBehavior_IsPC: @ 8057198
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x83
+ beq _080571A6
+ movs r0, 0
+ b _080571A8
+_080571A6:
+ movs r0, 0x1
+_080571A8:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsPC
+
+ thumb_func_start is_tile_x84
+is_tile_x84: @ 80571AC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x84
+ beq _080571BA
+ movs r0, 0
+ b _080571BC
+_080571BA:
+ movs r0, 0x1
+_080571BC:
+ pop {r1}
+ bx r1
+ thumb_func_end is_tile_x84
+
+ thumb_func_start sub_80571C0
+sub_80571C0: @ 80571C0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x91
+ beq _080571E2
+ cmp r0, 0x93
+ beq _080571E2
+ cmp r0, 0x95
+ beq _080571E2
+ cmp r0, 0x97
+ beq _080571E2
+ cmp r0, 0x99
+ beq _080571E2
+ cmp r0, 0x9B
+ beq _080571E2
+ cmp r0, 0x9D
+ bne _080571E6
+_080571E2:
+ movs r0, 0x1
+ b _080571E8
+_080571E6:
+ movs r0, 0
+_080571E8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80571C0
+
+ thumb_func_start sub_80571EC
+sub_80571EC: @ 80571EC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x90
+ beq _08057202
+ cmp r0, 0x92
+ beq _08057202
+ cmp r0, 0x94
+ beq _08057202
+ cmp r0, 0x9A
+ bne _08057206
+_08057202:
+ movs r0, 0x1
+ b _08057208
+_08057206:
+ movs r0, 0
+_08057208:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80571EC
+
+ thumb_func_start sub_805720C
+sub_805720C: @ 805720C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x96
+ beq _0805721A
+ cmp r0, 0x9C
+ bne _0805721E
+_0805721A:
+ movs r0, 0x1
+ b _08057220
+_0805721E:
+ movs r0, 0
+_08057220:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805720C
+
+ thumb_func_start is_tile_x98
+is_tile_x98: @ 8057224
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x98
+ beq _08057232
+ movs r0, 0
+ b _08057234
+_08057232:
+ movs r0, 0x1
+_08057234:
+ pop {r1}
+ bx r1
+ thumb_func_end is_tile_x98
+
+ thumb_func_start sub_8057238
+sub_8057238: @ 8057238
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB0
+ beq _08057246
+ movs r0, 0
+ b _08057248
+_08057246:
+ movs r0, 0x1
+_08057248:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057238
+
+ thumb_func_start sub_805724C
+sub_805724C: @ 805724C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB1
+ beq _0805725A
+ movs r0, 0
+ b _0805725C
+_0805725A:
+ movs r0, 0x1
+_0805725C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805724C
+
+ thumb_func_start unref_sub_8057260
+unref_sub_8057260: @ 8057260
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB2
+ beq _0805726E
+ movs r0, 0
+ b _08057270
+_0805726E:
+ movs r0, 0x1
+_08057270:
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_8057260
+
+ thumb_func_start sub_8057274
+sub_8057274: @ 8057274
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB3
+ beq _08057282
+ movs r0, 0
+ b _08057284
+_08057282:
+ movs r0, 0x1
+_08057284:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057274
+
+ thumb_func_start sub_8057288
+sub_8057288: @ 8057288
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB9
+ beq _08057296
+ movs r0, 0
+ b _08057298
+_08057296:
+ movs r0, 0x1
+_08057298:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057288
+
+ thumb_func_start sub_805729C
+sub_805729C: @ 805729C
+ push {lr}
+ lsls r0, 24
+ cmp r0, 0
+ beq _080572A8
+ movs r0, 0
+ b _080572AA
+_080572A8:
+ movs r0, 0x1
+_080572AA:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805729C
+
+ thumb_func_start sub_80572B0
+sub_80572B0: @ 80572B0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB7
+ beq _080572BE
+ movs r0, 0
+ b _080572C0
+_080572BE:
+ movs r0, 0x1
+_080572C0:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80572B0
+
+ thumb_func_start unref_sub_80572C4
+unref_sub_80572C4: @ 80572C4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB2
+ beq _080572D2
+ movs r0, 0
+ b _080572D4
+_080572D2:
+ movs r0, 0x1
+_080572D4:
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_80572C4
+
+ thumb_func_start sub_80572D8
+sub_80572D8: @ 80572D8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB5
+ beq _080572E6
+ movs r0, 0
+ b _080572E8
+_080572E6:
+ movs r0, 0x1
+_080572E8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80572D8
+
+ thumb_func_start sub_80572EC
+sub_80572EC: @ 80572EC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xC3
+ beq _080572FA
+ movs r0, 0
+ b _080572FC
+_080572FA:
+ movs r0, 0x1
+_080572FC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80572EC
+
+ thumb_func_start sub_8057300
+sub_8057300: @ 8057300
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xC2
+ beq _0805730E
+ movs r0, 0
+ b _08057310
+_0805730E:
+ movs r0, 0x1
+_08057310:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057300
+
+ thumb_func_start sub_8057314
+sub_8057314: @ 8057314
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB8
+ beq _08057322
+ movs r0, 0
+ b _08057324
+_08057322:
+ movs r0, 0x1
+_08057324:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057314
+
+ thumb_func_start sub_8057328
+sub_8057328: @ 8057328
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xBE
+ beq _08057336
+ movs r0, 0
+ b _08057338
+_08057336:
+ movs r0, 0x1
+_08057338:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057328
+
+ thumb_func_start sub_805733C
+sub_805733C: @ 805733C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xBD
+ beq _0805734A
+ movs r0, 0
+ b _0805734C
+_0805734A:
+ movs r0, 0x1
+_0805734C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805733C
+
+ thumb_func_start sub_8057350
+sub_8057350: @ 8057350
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xBA
+ beq _0805735E
+ movs r0, 0
+ b _08057360
+_0805735E:
+ movs r0, 0x1
+_08057360:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057350
+
+ thumb_func_start sub_8057364
+sub_8057364: @ 8057364
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xBF
+ beq _08057372
+ movs r0, 0
+ b _08057374
+_08057372:
+ movs r0, 0x1
+_08057374:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057364
+
+ thumb_func_start sub_8057378
+sub_8057378: @ 8057378
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xC4
+ beq _08057386
+ movs r0, 0
+ b _08057388
+_08057386:
+ movs r0, 0x1
+_08057388:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057378
+
+ thumb_func_start sub_805738C
+sub_805738C: @ 805738C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xC5
+ beq _0805739A
+ movs r0, 0
+ b _0805739C
+_0805739A:
+ movs r0, 0x1
+_0805739C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805738C
+
+ thumb_func_start MetatileBehavior_HasRipples
+MetatileBehavior_HasRipples: @ 80573A0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x10
+ beq _080573B2
+ cmp r0, 0x16
+ beq _080573B2
+ cmp r0, 0x14
+ bne _080573B6
+_080573B2:
+ movs r0, 0x1
+ b _080573B8
+_080573B6:
+ movs r0, 0
+_080573B8:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_HasRipples
+
+ thumb_func_start MetatileBehavior_IsPuddle
+MetatileBehavior_IsPuddle: @ 80573BC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x16
+ beq _080573CA
+ movs r0, 0
+ b _080573CC
+_080573CA:
+ movs r0, 0x1
+_080573CC:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsPuddle
+
+ thumb_func_start MetatileBehavior_IsTallGrass
+MetatileBehavior_IsTallGrass: @ 80573D0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ beq _080573DE
+ movs r0, 0
+ b _080573E0
+_080573DE:
+ movs r0, 0x1
+_080573E0:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsTallGrass
+
+ thumb_func_start MetatileBehavior_IsLongGrass
+MetatileBehavior_IsLongGrass: @ 80573E4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ beq _080573F2
+ movs r0, 0
+ b _080573F4
+_080573F2:
+ movs r0, 0x1
+_080573F4:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsLongGrass
+
+ thumb_func_start MetatileBehavior_IsBerryTreeSoil
+MetatileBehavior_IsBerryTreeSoil: @ 80573F8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xA0
+ beq _08057406
+ movs r0, 0
+ b _08057408
+_08057406:
+ movs r0, 0x1
+_08057408:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsBerryTreeSoil
+
+ thumb_func_start MetatileBehavior_IsAsh
+MetatileBehavior_IsAsh: @ 805740C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x24
+ beq _0805741A
+ movs r0, 0
+ b _0805741C
+_0805741A:
+ movs r0, 0x1
+_0805741C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsAsh
+
+ thumb_func_start MetatileBehavior_IsUnusedFootprintMetatile
+MetatileBehavior_IsUnusedFootprintMetatile: @ 8057420
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x25
+ beq _0805742E
+ movs r0, 0
+ b _08057430
+_0805742E:
+ movs r0, 0x1
+_08057430:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsUnusedFootprintMetatile
+
+ thumb_func_start MetatileBehavior_IsBridge
+MetatileBehavior_IsBridge: @ 8057434
+ push {lr}
+ lsls r0, 24
+ movs r1, 0x90
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _08057448
+ movs r0, 0
+ b _0805744A
+_08057448:
+ movs r0, 0x1
+_0805744A:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsBridge
+
+ thumb_func_start sub_8057450
+sub_8057450: @ 8057450
+ push {lr}
+ lsls r0, 24
+ movs r1, 0x90
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _08057462
+ movs r0, 0
+_08057462:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057450
+
+ thumb_func_start MetatileBehavior_IsLandWildEncounter
+MetatileBehavior_IsLandWildEncounter: @ 8057468
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _0805748C
+ adds r0, r4, 0
+ bl sub_8056DA0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0805748C
+ movs r0, 0x1
+ b _0805748E
+_0805748C:
+ movs r0, 0
+_0805748E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsLandWildEncounter
+
+ thumb_func_start MetatileBehavior_IsWaterWildEncounter
+MetatileBehavior_IsWaterWildEncounter: @ 8057494
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080574BA
+ adds r0, r4, 0
+ bl sub_8056DA0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080574BA
+ movs r0, 0x1
+ b _080574BC
+_080574BA:
+ movs r0, 0
+_080574BC:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWaterWildEncounter
+
+ thumb_func_start sub_80574C4
+sub_80574C4: @ 80574C4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xB
+ beq _080574D2
+ movs r0, 0
+ b _080574D4
+_080574D2:
+ movs r0, 0x1
+_080574D4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80574C4
+
+ thumb_func_start sub_80574D8
+sub_80574D8: @ 80574D8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xC
+ beq _080574E6
+ movs r0, 0
+ b _080574E8
+_080574E6:
+ movs r0, 0x1
+_080574E8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80574D8
+
+ thumb_func_start sub_80574EC
+sub_80574EC: @ 80574EC
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xEF
+ lsls r2, 24
+ adds r0, r2
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _08057502
+ cmp r1, 0x14
+ bne _08057506
+_08057502:
+ movs r0, 0x1
+ b _08057508
+_08057506:
+ movs r0, 0
+_08057508:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80574EC
+
+ thumb_func_start sub_805750C
+sub_805750C: @ 805750C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x19
+ beq _0805751A
+ cmp r0, 0x2A
+ bne _0805751E
+_0805751A:
+ movs r0, 0x1
+ b _08057520
+_0805751E:
+ movs r0, 0
+_08057520:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805750C
+
+ thumb_func_start MetatileBehavior_IsShallowFlowingWater
+MetatileBehavior_IsShallowFlowingWater: @ 8057524
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x17
+ beq _08057536
+ cmp r0, 0x1B
+ beq _08057536
+ cmp r0, 0x1C
+ bne _0805753A
+_08057536:
+ movs r0, 0x1
+ b _0805753C
+_0805753A:
+ movs r0, 0
+_0805753C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsShallowFlowingWater
+
+ thumb_func_start sub_8057540
+sub_8057540: @ 8057540
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x26
+ beq _0805754E
+ movs r0, 0
+ b _08057550
+_0805754E:
+ movs r0, 0x1
+_08057550:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057540
+
+ thumb_func_start sub_8057554
+sub_8057554: @ 8057554
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x27
+ beq _08057562
+ movs r0, 0
+ b _08057564
+_08057562:
+ movs r0, 0x1
+_08057564:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057554
+
+ thumb_func_start sub_8057568
+sub_8057568: @ 8057568
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x15
+ beq _0805757A
+ cmp r0, 0x11
+ beq _0805757A
+ cmp r0, 0x12
+ bne _0805757E
+_0805757A:
+ movs r0, 0x1
+ b _08057580
+_0805757E:
+ movs r0, 0
+_08057580:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057568
+
+ thumb_func_start unref_sub_8057584
+unref_sub_8057584: @ 8057584
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x18
+ beq _08057592
+ cmp r0, 0x1A
+ bne _08057596
+_08057592:
+ movs r0, 0x1
+ b _08057598
+_08057596:
+ movs r0, 0
+_08057598:
+ pop {r1}
+ bx r1
+ thumb_func_end unref_sub_8057584
+
+ thumb_func_start sub_805759C
+sub_805759C: @ 805759C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ beq _080575BE
+ adds r0, r4, 0
+ bl MetatileBehavior_IsWaterfall
+ lsls r0, 24
+ cmp r0, 0
+ bne _080575BE
+ movs r0, 0x1
+ b _080575C0
+_080575BE:
+ movs r0, 0
+_080575C0:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805759C
+
+ thumb_func_start MetatileBehavior_IsEastBlocked
+MetatileBehavior_IsEastBlocked: @ 80575C8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x30
+ beq _080575E2
+ cmp r0, 0x34
+ beq _080575E2
+ cmp r0, 0x36
+ beq _080575E2
+ cmp r0, 0xC1
+ beq _080575E2
+ cmp r0, 0xBE
+ bne _080575E6
+_080575E2:
+ movs r0, 0x1
+ b _080575E8
+_080575E6:
+ movs r0, 0
+_080575E8:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsEastBlocked
+
+ thumb_func_start MetatileBehavior_IsWestBlocked
+MetatileBehavior_IsWestBlocked: @ 80575EC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x31
+ beq _08057606
+ cmp r0, 0x35
+ beq _08057606
+ cmp r0, 0x37
+ beq _08057606
+ cmp r0, 0xC1
+ beq _08057606
+ cmp r0, 0xBE
+ bne _0805760A
+_08057606:
+ movs r0, 0x1
+ b _0805760C
+_0805760A:
+ movs r0, 0
+_0805760C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWestBlocked
+
+ thumb_func_start MetatileBehavior_IsNorthBlocked
+MetatileBehavior_IsNorthBlocked: @ 8057610
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x32
+ beq _08057626
+ cmp r0, 0x34
+ beq _08057626
+ cmp r0, 0x35
+ beq _08057626
+ cmp r0, 0xC0
+ bne _0805762A
+_08057626:
+ movs r0, 0x1
+ b _0805762C
+_0805762A:
+ movs r0, 0
+_0805762C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsNorthBlocked
+
+ thumb_func_start MetatileBehavior_IsSouthBlocked
+MetatileBehavior_IsSouthBlocked: @ 8057630
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x33
+ beq _08057646
+ cmp r0, 0x36
+ beq _08057646
+ cmp r0, 0x37
+ beq _08057646
+ cmp r0, 0xC0
+ bne _0805764A
+_08057646:
+ movs r0, 0x1
+ b _0805764C
+_0805764A:
+ movs r0, 0
+_0805764C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSouthBlocked
+
+ thumb_func_start MetatileBehavior_IsShortGrass
+MetatileBehavior_IsShortGrass: @ 8057650
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x7
+ beq _0805765E
+ movs r0, 0
+ b _08057660
+_0805765E:
+ movs r0, 0x1
+_08057660:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsShortGrass
+
+ thumb_func_start MetatileBehavior_IsHotSprings
+MetatileBehavior_IsHotSprings: @ 8057664
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x28
+ beq _08057672
+ movs r0, 0
+ b _08057674
+_08057672:
+ movs r0, 0x1
+_08057674:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsHotSprings
+
+ thumb_func_start MetatileBehavior_IsWaterfall
+MetatileBehavior_IsWaterfall: @ 8057678
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x13
+ beq _08057686
+ movs r0, 0
+ b _08057688
+_08057686:
+ movs r0, 0x1
+_08057688:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsWaterfall
+
+ thumb_func_start MetatileBehavior_IsFortreeBridge
+MetatileBehavior_IsFortreeBridge: @ 805768C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x78
+ beq _0805769A
+ movs r0, 0
+ b _0805769C
+_0805769A:
+ movs r0, 0x1
+_0805769C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsFortreeBridge
+
+ thumb_func_start sub_80576A0
+sub_80576A0: @ 80576A0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x74
+ beq _080576AE
+ movs r0, 0
+ b _080576B0
+_080576AE:
+ movs r0, 0x1
+_080576B0:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80576A0
+
+ thumb_func_start sub_80576B4
+sub_80576B4: @ 80576B4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x75
+ beq _080576C2
+ movs r0, 0
+ b _080576C4
+_080576C2:
+ movs r0, 0x1
+_080576C4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80576B4
+
+ thumb_func_start sub_80576C8
+sub_80576C8: @ 80576C8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x76
+ beq _080576D6
+ movs r0, 0
+ b _080576D8
+_080576D6:
+ movs r0, 0x1
+_080576D8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80576C8
+
+ thumb_func_start sub_80576DC
+sub_80576DC: @ 80576DC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x77
+ beq _080576EA
+ movs r0, 0
+ b _080576EC
+_080576EA:
+ movs r0, 0x1
+_080576EC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80576DC
+
+ thumb_func_start MetatileBehavior_IsPacifidlogLog
+MetatileBehavior_IsPacifidlogLog: @ 80576F0
+ push {lr}
+ lsls r0, 24
+ movs r1, 0x8C
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _08057704
+ movs r0, 0
+ b _08057706
+_08057704:
+ movs r0, 0x1
+_08057706:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsPacifidlogLog
+
+ thumb_func_start is_tile_x8C
+is_tile_x8C: @ 805770C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x8C
+ beq _0805771A
+ movs r0, 0
+ b _0805771C
+_0805771A:
+ movs r0, 0x1
+_0805771C:
+ pop {r1}
+ bx r1
+ thumb_func_end is_tile_x8C
+
+ thumb_func_start is_tile_x85
+is_tile_x85: @ 8057720
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x85
+ beq _0805772E
+ movs r0, 0
+ b _08057730
+_0805772E:
+ movs r0, 0x1
+_08057730:
+ pop {r1}
+ bx r1
+ thumb_func_end is_tile_x85
+
+ thumb_func_start is_tile_x8B
+is_tile_x8B: @ 8057734
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x8B
+ beq _08057742
+ movs r0, 0
+ b _08057744
+_08057742:
+ movs r0, 0x1
+_08057744:
+ pop {r1}
+ bx r1
+ thumb_func_end is_tile_x8B
+
+ thumb_func_start is_tile_x8A
+is_tile_x8A: @ 8057748
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x8A
+ beq _08057756
+ movs r0, 0
+ b _08057758
+_08057756:
+ movs r0, 0x1
+_08057758:
+ pop {r1}
+ bx r1
+ thumb_func_end is_tile_x8A
+
+ thumb_func_start is_tile_x87
+is_tile_x87: @ 805775C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x87
+ beq _0805776A
+ movs r0, 0
+ b _0805776C
+_0805776A:
+ movs r0, 0x1
+_0805776C:
+ pop {r1}
+ bx r1
+ thumb_func_end is_tile_x87
+
+ thumb_func_start MetatileBehavior_0xBB
+MetatileBehavior_0xBB: @ 8057770
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xBB
+ beq _0805777E
+ movs r0, 0
+ b _08057780
+_0805777E:
+ movs r0, 0x1
+_08057780:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_0xBB
+
+ thumb_func_start MetatileBehavior_0xBC
+MetatileBehavior_0xBC: @ 8057784
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xBC
+ beq _08057792
+ movs r0, 0
+ b _08057794
+_08057792:
+ movs r0, 0x1
+_08057794:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_0xBC
+
+ thumb_func_start sub_8057798
+sub_8057798: @ 8057798
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x29
+ beq _080577A6
+ movs r0, 0
+ b _080577A8
+_080577A6:
+ movs r0, 0x1
+_080577A8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057798
+
+ thumb_func_start is_role_x68
+is_role_x68: @ 80577AC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x68
+ beq _080577BA
+ movs r0, 0
+ b _080577BC
+_080577BA:
+ movs r0, 0x1
+_080577BC:
+ pop {r1}
+ bx r1
+ thumb_func_end is_role_x68
+
+ thumb_func_start MetatileBehavior_IsAquaHideoutWarp
+MetatileBehavior_IsAquaHideoutWarp: @ 80577C0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x67
+ beq _080577CE
+ movs r0, 0
+ b _080577D0
+_080577CE:
+ movs r0, 0x1
+_080577D0:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsAquaHideoutWarp
+
+ thumb_func_start MetatileBehavior_IsSurfableFishableWater
+MetatileBehavior_IsSurfableFishableWater: @ 80577D4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x10
+ beq _080577F8
+ cmp r0, 0x15
+ beq _080577F8
+ cmp r0, 0x11
+ beq _080577F8
+ cmp r0, 0x12
+ beq _080577F8
+ cmp r0, 0x14
+ beq _080577F8
+ subs r0, 0x50
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bhi _080577FC
+_080577F8:
+ movs r0, 0x1
+ b _080577FE
+_080577FC:
+ movs r0, 0
+_080577FE:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSurfableFishableWater
+
+ thumb_func_start sub_8057804
+sub_8057804: @ 8057804
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xF
+ beq _08057812
+ movs r0, 0
+ b _08057814
+_08057812:
+ movs r0, 0x1
+_08057814:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057804
+
+ thumb_func_start sub_8057818
+sub_8057818: @ 8057818
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x66
+ beq _08057826
+ movs r0, 0
+ b _08057828
+_08057826:
+ movs r0, 0x1
+_08057828:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057818
+
+ thumb_func_start sub_805782C
+sub_805782C: @ 805782C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xD2
+ beq _0805783A
+ movs r0, 0
+ b _0805783C
+_0805783A:
+ movs r0, 0x1
+_0805783C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805782C
+
+ thumb_func_start MetatileBehavior_IsMuddySlope
+MetatileBehavior_IsMuddySlope: @ 8057840
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xD0
+ beq _0805784E
+ movs r0, 0
+ b _08057850
+_0805784E:
+ movs r0, 0x1
+_08057850:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsMuddySlope
+
+ thumb_func_start MetatileBehavior_IsBumpySlope
+MetatileBehavior_IsBumpySlope: @ 8057854
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xD1
+ beq _08057862
+ movs r0, 0
+ b _08057864
+_08057862:
+ movs r0, 0x1
+_08057864:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsBumpySlope
+
+ thumb_func_start MetatileBehavior_IsIsolatedVerticalRail
+MetatileBehavior_IsIsolatedVerticalRail: @ 8057868
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xD3
+ beq _08057876
+ movs r0, 0
+ b _08057878
+_08057876:
+ movs r0, 0x1
+_08057878:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsIsolatedVerticalRail
+
+ thumb_func_start MetatileBehavior_IsIsolatedHorizontalRail
+MetatileBehavior_IsIsolatedHorizontalRail: @ 805787C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xD4
+ beq _0805788A
+ movs r0, 0
+ b _0805788C
+_0805788A:
+ movs r0, 0x1
+_0805788C:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsIsolatedHorizontalRail
+
+ thumb_func_start MetatileBehavior_IsVerticalRail
+MetatileBehavior_IsVerticalRail: @ 8057890
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xD5
+ beq _0805789E
+ movs r0, 0
+ b _080578A0
+_0805789E:
+ movs r0, 0x1
+_080578A0:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsVerticalRail
+
+ thumb_func_start MetatileBehavior_IsHorizontalRail
+MetatileBehavior_IsHorizontalRail: @ 80578A4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xD6
+ beq _080578B2
+ movs r0, 0
+ b _080578B4
+_080578B2:
+ movs r0, 0x1
+_080578B4:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsHorizontalRail
+
+ thumb_func_start MetatileBehavior_IsSeaweed
+MetatileBehavior_IsSeaweed: @ 80578B8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x22
+ beq _080578C6
+ cmp r0, 0x2A
+ bne _080578CA
+_080578C6:
+ movs r0, 0x1
+ b _080578CC
+_080578CA:
+ movs r0, 0
+_080578CC:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsSeaweed
+
+ thumb_func_start MetatileBehavior_IsRunningDisallowed
+MetatileBehavior_IsRunningDisallowed: @ 80578D0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xA
+ beq _080578EC
+ cmp r0, 0x3
+ beq _080578EC
+ cmp r0, 0x28
+ beq _080578EC
+ bl MetatileBehavior_IsPacifidlogLog
+ lsls r0, 24
+ cmp r0, 0
+ beq _080578F0
+_080578EC:
+ movs r0, 0x1
+ b _080578F2
+_080578F0:
+ movs r0, 0
+_080578F2:
+ pop {r1}
+ bx r1
+ thumb_func_end MetatileBehavior_IsRunningDisallowed
+
+ thumb_func_start sub_80578F8
+sub_80578F8: @ 80578F8
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xFE
+ lsls r2, 24
+ adds r0, r2
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _08057912
+ cmp r1, 0x24
+ beq _08057912
+ cmp r1, 0x9
+ bne _08057916
+_08057912:
+ movs r0, 0x1
+ b _08057918
+_08057916:
+ movs r0, 0
+_08057918:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80578F8
+
+ thumb_func_start sub_805791C
+sub_805791C: @ 805791C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x8E
+ beq _0805792A
+ movs r0, 0
+ b _0805792C
+_0805792A:
+ movs r0, 0x1
+_0805792C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805791C
+
+ thumb_func_start sub_8057930
+sub_8057930: @ 8057930
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xE0
+ beq _0805793E
+ movs r0, 0
+ b _08057940
+_0805793E:
+ movs r0, 0x1
+_08057940:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057930
+
+ thumb_func_start sub_8057944
+sub_8057944: @ 8057944
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xE1
+ beq _08057952
+ movs r0, 0
+ b _08057954
+_08057952:
+ movs r0, 0x1
+_08057954:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057944
+
+ thumb_func_start sub_8057958
+sub_8057958: @ 8057958
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xE2
+ beq _08057966
+ movs r0, 0
+ b _08057968
+_08057966:
+ movs r0, 0x1
+_08057968:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057958
+
+ thumb_func_start sub_805796C
+sub_805796C: @ 805796C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xE3
+ beq _0805797A
+ movs r0, 0
+ b _0805797C
+_0805797A:
+ movs r0, 0x1
+_0805797C:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805796C
+
+ thumb_func_start sub_8057980
+sub_8057980: @ 8057980
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xE4
+ beq _0805798E
+ movs r0, 0
+ b _08057990
+_0805798E:
+ movs r0, 0x1
+_08057990:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057980
+
+ thumb_func_start sub_8057994
+sub_8057994: @ 8057994
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xE5
+ beq _080579A2
+ movs r0, 0
+ b _080579A4
+_080579A2:
+ movs r0, 0x1
+_080579A4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057994
+
+ thumb_func_start sub_80579A8
+sub_80579A8: @ 80579A8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xE6
+ beq _080579B6
+ movs r0, 0
+ b _080579B8
+_080579B6:
+ movs r0, 0x1
+_080579B8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80579A8
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index cb6a6031e..a0d6fd441 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -64,7 +64,13 @@ SECTIONS {
src/play_time.o(.text);
src/new_game.o(.text);
src/rom4.o(.text);
- asm/rom4.o(.text);
+ asm/fieldmap.o(.text);
+ asm/metatile_behavior.o(.text);
+ asm/field_camera.o(.text);
+ asm/field_door.o(.text);
+ asm/field_player_avatar.o(.text);
+ asm/field_map_obj.o(.text);
+ asm/field_ground_effect.o(.text);
src/map_obj_80643A4.o(.text);
src/field_message_box.o(.text);
src/map_obj_lock.o(.text);