summaryrefslogtreecommitdiff
path: root/asm/field_control_avatar.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/field_control_avatar.s')
-rw-r--r--asm/field_control_avatar.s2512
1 files changed, 2512 insertions, 0 deletions
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
new file mode 100644
index 000000000..7cae1d1ad
--- /dev/null
+++ b/asm/field_control_avatar.s
@@ -0,0 +1,2512 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_809BEDC
+sub_809BEDC: @ 809BEDC
+ push {r4,r5,lr}
+ movs r1, 0x2
+ negs r1, r1
+ movs r3, 0x3
+ negs r3, r3
+ movs r4, 0x5
+ negs r4, r4
+ movs r5, 0x9
+ negs r5, r5
+ movs r2, 0
+ strb r2, [r0]
+ ldrb r2, [r0, 0x1]
+ ands r1, r2
+ ands r1, r3
+ ands r1, r4
+ ands r1, r5
+ strb r1, [r0, 0x1]
+ movs r1, 0
+ strb r1, [r0, 0x2]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_809BEDC
+
+ thumb_func_start process_overworld_input
+@ void process_overworld_input(overworld_input_data *input_data, char buttons_new, char buttons_held)
+process_overworld_input: @ 809BF08
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r5, r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ mov r8, r2
+ ldr r0, =gUnknown_02037590
+ ldrb r6, [r0, 0x3]
+ ldrb r0, [r0, 0x2]
+ mov r9, r0
+ bl cur_mapdata_block_role_at_player_pos
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_808904C
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r6, 0x2
+ bne _0809BF3C
+ cmp r7, 0
+ beq _0809BF40
+_0809BF3C:
+ cmp r6, 0
+ bne _0809BFA2
+_0809BF40:
+ bl sub_811A138
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ beq _0809BF8C
+ movs r0, 0x8
+ ands r0, r5
+ cmp r0, 0
+ beq _0809BF5C
+ ldrb r0, [r4]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r4]
+_0809BF5C:
+ movs r0, 0x4
+ ands r0, r5
+ cmp r0, 0
+ beq _0809BF6C
+ ldrb r0, [r4]
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4]
+_0809BF6C:
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _0809BF7C
+ ldrb r0, [r4]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4]
+_0809BF7C:
+ movs r0, 0x2
+ ands r0, r5
+ cmp r0, 0
+ beq _0809BF8C
+ ldrb r0, [r4]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r4]
+_0809BF8C:
+ movs r0, 0xF0
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _0809BFA2
+ ldrb r0, [r4]
+ movs r1, 0x10
+ orrs r0, r1
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4]
+_0809BFA2:
+ cmp r7, 0
+ bne _0809BFC8
+ cmp r6, 0x2
+ bne _0809BFB8
+ mov r0, r9
+ cmp r0, 0x2
+ bne _0809BFB8
+ ldrb r0, [r4]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r4]
+_0809BFB8:
+ cmp r7, 0
+ bne _0809BFC8
+ cmp r6, 0x2
+ bne _0809BFC8
+ ldrb r0, [r4]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4]
+_0809BFC8:
+ movs r0, 0x40
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _0809BFDC
+ movs r0, 0x2
+ b _0809C004
+ .pool
+_0809BFDC:
+ movs r0, 0x80
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _0809BFEA
+ movs r0, 0x1
+ b _0809C004
+_0809BFEA:
+ movs r0, 0x20
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _0809BFF8
+ movs r0, 0x3
+ b _0809C004
+_0809BFF8:
+ movs r0, 0x10
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C006
+ movs r0, 0x4
+_0809C004:
+ strb r0, [r4, 0x2]
+_0809C006:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end process_overworld_input
+
+ thumb_func_start sub_809C014
+@ int sub_809C014(overworld_input_data *input_data)
+sub_809C014: @ 809C014
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ ldr r0, =gUnknown_020375F2
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, =gUnknown_03005DF0
+ strb r1, [r0]
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r4, sp
+ mov r0, sp
+ bl player_get_pos_to_and_height
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 16
+ lsrs r4, r0, 16
+ bl CheckForTrainersWantingBattle
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C14E
+ bl mapheader_run_first_tag2_script_list_match
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C14E
+ ldrb r1, [r5]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C070
+ bl sub_809C89C
+ cmp r0, 0x1
+ beq _0809C14E
+_0809C070:
+ ldrb r1, [r5]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C096
+ movs r0, 0x5
+ bl sav12_xor_increment
+ bl increment_var_x4026_on_birth_island_modulo_100
+ mov r0, sp
+ adds r1, r4, 0
+ adds r2, r6, 0
+ bl sub_809C8DC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C14E
+_0809C096:
+ ldrb r1, [r5]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C0AE
+ adds r0, r4, 0
+ bl is_it_battle_time_3
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C14E
+_0809C0AE:
+ ldrb r1, [r5]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C0D0
+ ldrb r0, [r5, 0x2]
+ cmp r0, r6
+ bne _0809C0D0
+ mov r0, sp
+ adds r1, r4, 0
+ adds r2, r6, 0
+ bl mapheader_run_first_tag2_script_list_match_conditionally
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C14E
+_0809C0D0:
+ mov r4, sp
+ mov r0, sp
+ bl player_get_next_pos_and_height
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldrb r1, [r5]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C106
+ mov r0, sp
+ adds r1, r4, 0
+ adds r2, r6, 0
+ bl sub_809C1FC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C14E
+_0809C106:
+ ldrb r1, [r5]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C128
+ ldrb r0, [r5, 0x2]
+ cmp r0, r6
+ bne _0809C128
+ mov r0, sp
+ adds r1, r4, 0
+ adds r2, r6, 0
+ bl map_warp_consider_2_to_inside
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C14E
+_0809C128:
+ ldrb r1, [r5]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C13A
+ bl sub_809C868
+ cmp r0, 0x1
+ beq _0809C14E
+_0809C13A:
+ ldrb r1, [r5]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C15C
+ movs r0, 0x6
+ bl audio_play
+ bl sub_809FA9C
+_0809C14E:
+ movs r0, 0x1
+ b _0809C172
+ .pool
+_0809C15C:
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0809C170
+ bl UseRegisteredKeyItemOnField
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C14E
+_0809C170:
+ movs r0, 0
+_0809C172:
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809C014
+
+ thumb_func_start player_get_pos_to_and_height
+player_get_pos_to_and_height: @ 809C17C
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r1, r4, 0x2
+ bl PlayerGetDestCoords
+ bl PlayerGetZCoord
+ strb r0, [r4, 0x4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end player_get_pos_to_and_height
+
+ thumb_func_start player_get_next_pos_and_height
+player_get_next_pos_and_height: @ 809C194
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r1, r5, 0x2
+ bl GetXYCoordsOneStepInFrontOfPlayer
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _0809C1C6
+ bl PlayerGetZCoord
+_0809C1C6:
+ strb r0, [r5, 0x4]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end player_get_next_pos_and_height
+
+ thumb_func_start cur_mapdata_block_role_at_player_pos
+cur_mapdata_block_role_at_player_pos: @ 809C1D0
+ push {r4,lr}
+ sub sp, 0x4
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 16
+ lsrs r0, 16
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end cur_mapdata_block_role_at_player_pos
+
+ thumb_func_start sub_809C1FC
+sub_809C1FC: @ 809C1FC
+ push {r4,lr}
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r1, 24
+ lsrs r1, 24
+ bl TryGetScriptOnPressingA
+ adds r4, r0, 0
+ cmp r4, 0
+ bne _0809C214
+ movs r0, 0
+ b _0809C24C
+_0809C214:
+ ldr r0, =gUnknown_081F860D
+ cmp r4, r0
+ beq _0809C244
+ ldr r0, =gUnknown_081F9553
+ cmp r4, r0
+ beq _0809C244
+ ldr r0, =gUnknown_0823B4BB
+ cmp r4, r0
+ beq _0809C244
+ ldr r0, =gUnknown_0823B589
+ cmp r4, r0
+ beq _0809C244
+ ldr r0, =gUnknown_082766A2
+ cmp r4, r0
+ beq _0809C244
+ ldr r0, =gUnknown_082766A6
+ cmp r4, r0
+ beq _0809C244
+ ldr r0, =gUnknown_08271D92
+ cmp r4, r0
+ beq _0809C244
+ movs r0, 0x5
+ bl audio_play
+_0809C244:
+ adds r0, r4, 0
+ bl script_env_1_execute_new_script
+ movs r0, 0x1
+_0809C24C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_809C1FC
+
+ thumb_func_start TryGetScriptOnPressingA
+TryGetScriptOnPressingA: @ 809C270
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ mov r8, r5
+ lsls r2, 24
+ lsrs r4, r2, 24
+ adds r7, r4, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl TryGetMapObjectScript
+ cmp r0, 0
+ bne _0809C2BC
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl TryGetInvisibleMapObjectScript
+ cmp r0, 0
+ bne _0809C2BC
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl TryGetMetatileBehaviorScript
+ cmp r0, 0
+ bne _0809C2BC
+ adds r0, r6, 0
+ mov r1, r8
+ adds r2, r7, 0
+ bl TryGetFieldMoveScript
+ cmp r0, 0
+ bne _0809C2BC
+ movs r0, 0
+_0809C2BC:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end TryGetScriptOnPressingA
+
+ thumb_func_start sub_809C2C8
+sub_809C2C8: @ 809C2C8
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r2, 24
+ lsrs r6, r2, 24
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r0, 24
+ bl MetatileBehavior_IsCounter
+ lsls r0, 24
+ cmp r0, 0
+ bne _0809C2F0
+ ldrh r0, [r4]
+ ldrh r1, [r4, 0x2]
+ b _0809C30E
+_0809C2F0:
+ ldr r1, =gUnknown_08339D64
+ lsls r2, r6, 3
+ adds r0, r2, r1
+ ldr r3, [r0]
+ ldrh r0, [r4]
+ adds r0, r3
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, 0x4
+ adds r2, r1
+ ldr r2, [r2]
+ ldrh r1, [r4, 0x2]
+ adds r1, r2
+ lsls r1, 16
+ lsrs r1, 16
+_0809C30E:
+ ldrb r2, [r4, 0x4]
+ bl GetFieldObjectIdByXYZ
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x10
+ beq _0809C32E
+ ldr r1, =gUnknown_02037350
+ lsls r2, r3, 3
+ adds r0, r2, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x8]
+ adds r5, r1, 0
+ cmp r0, 0xFF
+ bne _0809C33C
+_0809C32E:
+ movs r0, 0
+ b _0809C36E
+ .pool
+_0809C33C:
+ movs r4, 0
+ ldr r1, =gUnknown_02032308
+_0809C340:
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ bne _0809C34C
+ ldrb r0, [r1, 0x2]
+ cmp r0, r3
+ beq _0809C32E
+_0809C34C:
+ adds r1, 0x4
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0809C340
+ ldr r0, =gUnknown_03005DF0
+ strb r3, [r0]
+ ldr r1, =gUnknown_020375F2
+ adds r0, r2, r3
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0, 0x8]
+ strh r0, [r1]
+ ldr r0, =gUnknown_020375F4
+ strh r6, [r0]
+ adds r0, r3, 0
+ bl GetFieldObjectScriptPointerByFieldObjectId
+_0809C36E:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_809C2C8
+
+ thumb_func_start TryGetMapObjectScript
+TryGetMapObjectScript: @ 809C384
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ lsls r2, 24
+ lsrs r7, r2, 24
+ ldrh r0, [r5]
+ ldrh r1, [r5, 0x2]
+ ldrb r2, [r5, 0x4]
+ bl GetFieldObjectIdByXYZ
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x10
+ beq _0809C3B4
+ ldr r1, =gUnknown_02037350
+ lsls r2, r4, 3
+ adds r0, r2, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x8]
+ adds r3, r1, 0
+ cmp r0, 0xFF
+ bne _0809C40C
+_0809C3B4:
+ adds r0, r6, 0
+ bl MetatileBehavior_IsCounter
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C400
+ ldr r1, =gUnknown_08339D64
+ lsls r2, r7, 3
+ adds r0, r2, r1
+ ldr r3, [r0]
+ ldrh r0, [r5]
+ adds r0, r3
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, 0x4
+ adds r2, r1
+ ldr r2, [r2]
+ ldrh r1, [r5, 0x2]
+ adds r1, r2
+ lsls r1, 16
+ lsrs r1, 16
+ ldrb r2, [r5, 0x4]
+ bl GetFieldObjectIdByXYZ
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x10
+ beq _0809C400
+ ldr r1, =gUnknown_02037350
+ lsls r2, r4, 3
+ adds r0, r2, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x8]
+ adds r3, r1, 0
+ cmp r0, 0xFF
+ bne _0809C40C
+_0809C400:
+ movs r0, 0
+ b _0809C44E
+ .pool
+_0809C40C:
+ ldr r0, =gUnknown_03005DF0
+ strb r4, [r0]
+ ldr r1, =gUnknown_020375F2
+ adds r0, r2, r4
+ lsls r0, 2
+ adds r0, r3
+ ldrb r0, [r0, 0x8]
+ strh r0, [r1]
+ ldr r0, =gUnknown_020375F4
+ strh r7, [r0]
+ bl InTrainerHill
+ cmp r0, 0x1
+ bne _0809C43C
+ bl sub_81D62AC
+ b _0809C442
+ .pool
+_0809C43C:
+ adds r0, r4, 0
+ bl GetFieldObjectScriptPointerByFieldObjectId
+_0809C442:
+ adds r1, r0, 0
+ ldr r0, =gUnknown_020375F2
+ ldrb r0, [r0]
+ bl sub_8099188
+ adds r1, r0, 0
+_0809C44E:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end TryGetMapObjectScript
+
+ thumb_func_start TryGetInvisibleMapObjectScript
+@ signed int TryGetInvisibleMapObjectScript(int a1, int a2, u8 playerFacingDirection)
+TryGetInvisibleMapObjectScript: @ 809C458
+ push {r4,r5,lr}
+ lsls r2, 24
+ lsrs r5, r2, 24
+ ldr r4, =gUnknown_02037318
+ ldrh r1, [r0]
+ subs r1, 0x7
+ lsls r1, 16
+ lsrs r1, 16
+ ldrh r2, [r0, 0x2]
+ subs r2, 0x7
+ lsls r2, 16
+ lsrs r2, 16
+ ldrb r3, [r0, 0x4]
+ adds r0, r4, 0
+ bl FindInvisibleMapObjectByPosition
+ cmp r0, 0
+ beq _0809C4CC
+ ldr r2, [r0, 0x8]
+ cmp r2, 0
+ bne _0809C490
+ ldr r0, =gUnknown_082C8436
+ b _0809C532
+ .pool
+_0809C490:
+ ldrb r0, [r0, 0x5]
+ cmp r0, 0x8
+ bhi _0809C530
+ lsls r0, 2
+ ldr r1, =_0809C4A4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0809C4A4:
+ .4byte _0809C530
+ .4byte _0809C4C8
+ .4byte _0809C4D0
+ .4byte _0809C4D6
+ .4byte _0809C4DC
+ .4byte _0809C4E2
+ .4byte _0809C4E2
+ .4byte _0809C4E2
+ .4byte _0809C510
+_0809C4C8:
+ cmp r5, 0x2
+ beq _0809C530
+_0809C4CC:
+ movs r0, 0
+ b _0809C532
+_0809C4D0:
+ cmp r5, 0x1
+ beq _0809C530
+ b _0809C4CC
+_0809C4D6:
+ cmp r5, 0x4
+ beq _0809C530
+ b _0809C4CC
+_0809C4DC:
+ cmp r5, 0x3
+ beq _0809C530
+ b _0809C4CC
+_0809C4E2:
+ ldr r1, =gUnknown_020375E0
+ lsrs r0, r2, 16
+ movs r3, 0xFA
+ lsls r3, 1
+ adds r0, r3
+ strh r0, [r1]
+ ldr r0, =gUnknown_020375E2
+ strh r2, [r0]
+ ldrh r0, [r1]
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C4CC
+ ldr r0, =gUnknown_08271CB7
+ b _0809C532
+ .pool
+_0809C510:
+ cmp r5, 0x2
+ bne _0809C4CC
+ ldr r0, =gUnknown_020375E0
+ strh r2, [r0]
+ bl sub_80E9680
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809C4CC
+ ldr r0, =gUnknown_082759F1
+ b _0809C532
+ .pool
+_0809C530:
+ adds r0, r2, 0
+_0809C532:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end TryGetInvisibleMapObjectScript
+
+ thumb_func_start TryGetMetatileBehaviorScript
+TryGetMetatileBehaviorScript: @ 809C538
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ lsls r2, 24
+ lsrs r4, r2, 24
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl MetatileBehavior_IsPlayerFacingTVScreen
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C55C
+ ldr r0, =gUnknown_0827EE0B
+ b _0809C7E4
+ .pool
+_0809C55C:
+ adds r0, r5, 0
+ bl MetatileBehavior_IsPC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C574
+ ldr r0, =gUnknown_08271D92
+ b _0809C7E4
+ .pool
+_0809C574:
+ adds r0, r5, 0
+ bl is_tile_x8B
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C58C
+ ldr r0, =gUnknown_081E615D
+ b _0809C7E4
+ .pool
+_0809C58C:
+ adds r0, r5, 0
+ bl is_tile_xEA
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C5A4
+ ldr r0, =gUnknown_082393F9
+ b _0809C7E4
+ .pool
+_0809C5A4:
+ adds r0, r5, 0
+ bl is_tile_x84
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C5B4
+ b _0809C6E4
+_0809C5B4:
+ adds r0, r5, 0
+ bl is_tile_x87
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C5CC
+ ldr r0, =gUnknown_082A4BAC
+ b _0809C7E4
+ .pool
+_0809C5CC:
+ adds r0, r5, 0
+ bl is_tile_x8C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C5E4
+ ldr r0, =gUnknown_0826A22A
+ b _0809C7E4
+ .pool
+_0809C5E4:
+ adds r0, r5, 0
+ bl is_tile_x85
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C5FC
+ ldr r0, =gUnknown_0827208F
+ b _0809C7E4
+ .pool
+_0809C5FC:
+ adds r0, r5, 0
+ bl sub_8089A1C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C614
+ ldr r0, =gUnknown_08292DE5
+ b _0809C7E4
+ .pool
+_0809C614:
+ adds r0, r5, 0
+ bl sub_8089A30
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C62C
+ ldr r0, =gUnknown_082725CE
+ b _0809C7E4
+ .pool
+_0809C62C:
+ adds r0, r5, 0
+ bl sub_8089A44
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C644
+ ldr r0, =gUnknown_082725D7
+ b _0809C7E4
+ .pool
+_0809C644:
+ adds r0, r5, 0
+ bl sub_8089A58
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C65C
+ ldr r0, =gUnknown_082725E0
+ b _0809C7E4
+ .pool
+_0809C65C:
+ adds r0, r5, 0
+ bl sub_8089A6C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C674
+ ldr r0, =gUnknown_082725E9
+ b _0809C7E4
+ .pool
+_0809C674:
+ adds r0, r5, 0
+ bl sub_8089A80
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C68C
+ ldr r0, =gUnknown_082725F2
+ b _0809C7E4
+ .pool
+_0809C68C:
+ adds r0, r5, 0
+ bl sub_8089A94
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C6A4
+ ldr r0, =gUnknown_082725FB
+ b _0809C7E4
+ .pool
+_0809C6A4:
+ adds r0, r5, 0
+ bl sub_8089AA8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C6BC
+ ldr r0, =gUnknown_08272604
+ b _0809C7E4
+ .pool
+_0809C6BC:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8089AD0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C6D4
+ ldr r0, =gUnknown_08277B8A
+ b _0809C7E4
+ .pool
+_0809C6D4:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8089AEC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C6EC
+_0809C6E4:
+ ldr r0, =gUnknown_08277365
+ b _0809C7E4
+ .pool
+_0809C6EC:
+ adds r0, r5, 0
+ bl MetatileBehavior_IsQuestionnaire
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C704
+ ldr r0, =gUnknown_0827381B
+ b _0809C7E4
+ .pool
+_0809C704:
+ adds r0, r5, 0
+ bl MetatileBehavior_IsTrainerHillTimer
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C71C
+ ldr r0, =gUnknown_082C8393
+ b _0809C7E4
+ .pool
+_0809C71C:
+ movs r4, 0x4
+ ldrsb r4, [r6, r4]
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ movs r2, 0x2
+ ldrsh r1, [r6, r2]
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bne _0809C7D0
+ adds r0, r5, 0
+ bl sub_8089288
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C74C
+ ldr r0, =gUnknown_0823B4BB
+ b _0809C7E4
+ .pool
+_0809C74C:
+ adds r0, r5, 0
+ bl sub_808929C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C764
+ ldr r0, =gUnknown_0823B589
+ b _0809C7E4
+ .pool
+_0809C764:
+ adds r0, r5, 0
+ bl sub_80893DC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C77C
+ ldr r0, =gUnknown_0823B684
+ b _0809C7E4
+ .pool
+_0809C77C:
+ adds r0, r5, 0
+ bl sub_80893F0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C794
+ ldr r0, =gUnknown_0823B68C
+ b _0809C7E4
+ .pool
+_0809C794:
+ adds r0, r5, 0
+ bl sub_80892EC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C7A8
+ bl sub_80EB56C
+ b _0809C7E2
+_0809C7A8:
+ adds r0, r5, 0
+ bl sub_8089364
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C7BC
+ bl sub_80EB9E0
+ b _0809C7E2
+_0809C7BC:
+ adds r0, r5, 0
+ bl sub_8089350
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C7E2
+ bl sub_80EBB28
+ b _0809C7E2
+_0809C7D0:
+ adds r0, r5, 0
+ bl sub_8089300
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C7E2
+ bl sub_80EB498
+_0809C7E2:
+ movs r0, 0
+_0809C7E4:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end TryGetMetatileBehaviorScript
+
+ thumb_func_start TryGetFieldMoveScript
+TryGetFieldMoveScript: @ 809C7EC
+ push {r4,lr}
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldr r0, =0x0000086b
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C824
+ bl PartyHasMonWithSurf
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C824
+ bl IsPlayerFacingSurfableFishableWater
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C824
+ ldr r0, =gUnknown_08271EA0
+ b _0809C862
+ .pool
+_0809C824:
+ adds r0, r4, 0
+ bl MetatileBehavior_IsWaterfall
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C860
+ ldr r0, =0x0000086e
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C858
+ bl IsPlayerSurfingNorth
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C858
+ ldr r0, =gUnknown_08290A49
+ b _0809C862
+ .pool
+_0809C858:
+ ldr r0, =gUnknown_08290A83
+ b _0809C862
+ .pool
+_0809C860:
+ movs r0, 0
+_0809C862:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end TryGetFieldMoveScript
+
+ thumb_func_start sub_809C868
+sub_809C868: @ 809C868
+ push {lr}
+ ldr r0, =0x0000086d
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809C894
+ bl sub_809D1E8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0809C894
+ ldr r0, =gUnknown_08290B0F
+ bl script_env_1_execute_new_script
+ movs r0, 0x1
+ b _0809C896
+ .pool
+_0809C894:
+ movs r0, 0
+_0809C896:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809C868
+
+ thumb_func_start sub_809C89C
+sub_809C89C: @ 809C89C
+ push {lr}
+ ldr r0, =0x0000086d
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809C8D4
+ ldr r0, =gUnknown_02037318
+ ldrb r0, [r0, 0x17]
+ cmp r0, 0x5
+ bne _0809C8D4
+ bl sub_809D1E8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C8D4
+ ldr r0, =gUnknown_08290B5A
+ bl script_env_1_execute_new_script
+ movs r0, 0x1
+ b _0809C8D6
+ .pool
+_0809C8D4:
+ movs r0, 0
+_0809C8D6:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809C89C
+
+ thumb_func_start sub_809C8DC
+sub_809C8DC: @ 809C8DC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r1, 16
+ lsrs r4, r1, 16
+ adds r6, r4, 0
+ bl mapheader_trigger_activate_at__run_now
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C92E
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_809CC9C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C92E
+ adds r0, r4, 0
+ bl sub_809C96C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C92E
+ adds r0, r6, 0
+ bl per_step_scripts
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C92E
+ bl sub_80B5870
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C92E
+ movs r0, 0
+ b _0809C930
+_0809C92E:
+ movs r0, 0x1
+_0809C930:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809C8DC
+
+ thumb_func_start mapheader_trigger_activate_at__run_now
+mapheader_trigger_activate_at__run_now: @ 809C938
+ push {r4,lr}
+ ldr r4, =gUnknown_02037318
+ ldrh r1, [r0]
+ subs r1, 0x7
+ lsls r1, 16
+ lsrs r1, 16
+ ldrh r2, [r0, 0x2]
+ subs r2, 0x7
+ lsls r2, 16
+ lsrs r2, 16
+ ldrb r3, [r0, 0x4]
+ adds r0, r4, 0
+ bl mapheader_trigger_activate_at
+ cmp r0, 0
+ beq _0809C964
+ bl script_env_1_execute_new_script
+ movs r0, 0x1
+ b _0809C966
+ .pool
+_0809C964:
+ movs r0, 0
+_0809C966:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end mapheader_trigger_activate_at__run_now
+
+ thumb_func_start sub_809C96C
+sub_809C96C: @ 809C96C
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8089918
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809C988
+ ldr r0, =gUnknown_082A8337
+ b _0809C996
+ .pool
+_0809C988:
+ adds r0, r4, 0
+ bl sub_8089ABC
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809C9A4
+ ldr r0, =gUnknown_08252BE8
+_0809C996:
+ bl script_env_1_execute_new_script
+ movs r0, 0x1
+ b _0809C9EA
+ .pool
+_0809C9A4:
+ adds r0, r4, 0
+ bl sub_80893C8
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C9B8
+ bl sub_80FA9D0
+ b _0809C9E8
+_0809C9B8:
+ adds r0, r4, 0
+ bl sub_80893B4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809C9E8
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileIdAt
+ lsls r0, 16
+ asrs r0, 16
+ bl sub_80FA970
+_0809C9E8:
+ movs r0, 0
+_0809C9EA:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809C96C
+
+ thumb_func_start per_step_scripts
+per_step_scripts: @ 809C9F4
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ bl InUnionRoom
+ cmp r0, 0x1
+ bne _0809CA04
+ b _0809CB24
+_0809CA04:
+ bl sub_80B215C
+ bl happiness_algorithm_step
+ bl sub_81D4998
+ ldr r0, =gUnknown_02037590
+ ldrb r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0809CAF8
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl sub_808904C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0809CAF8
+ bl overworld_poison_step
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CA48
+ ldr r0, =gUnknown_082736BC
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CA48:
+ bl sub_8070BD0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809CA64
+ movs r0, 0xD
+ bl sav12_xor_increment
+ ldr r0, =gUnknown_08291FC0
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CA64:
+ bl sub_813B3B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CA7C
+ ldr r0, =gUnknown_08273D1F
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CA7C:
+ bl sub_8179A04
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CA94
+ ldr r0, =gUnknown_08238EAF
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CA94:
+ bl is_tile_that_overrides_player_control
+ cmp r0, 0x1
+ bne _0809CAA8
+ ldr r0, =gUnknown_081DF7BA
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CAA8:
+ bl sub_8138120
+ cmp r0, 0x1
+ bne _0809CABC
+ ldr r0, =gUnknown_081F49EC
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CABC:
+ bl sub_8138168
+ cmp r0, 0x1
+ bne _0809CAD0
+ ldr r0, =gUnknown_081FA4D6
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CAD0:
+ bl sub_81381B0
+ cmp r0, 0x1
+ bne _0809CAE4
+ ldr r0, =gUnknown_0821307B
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CAE4:
+ bl sub_81381F8
+ cmp r0, 0x1
+ bne _0809CAF8
+ ldr r0, =gUnknown_08224175
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CAF8:
+ bl safari_step
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CB28
+ movs r0, 0x1
+ bl sub_8137FC0
+ cmp r0, 0x1
+ bne _0809CB1C
+ ldr r0, =gUnknown_0823C050
+ bl script_env_1_execute_new_script
+ b _0809CB28
+ .pool
+_0809CB1C:
+ bl sub_8196034
+ cmp r0, 0
+ bne _0809CB28
+_0809CB24:
+ movs r0, 0
+ b _0809CB2A
+_0809CB28:
+ movs r0, 0x1
+_0809CB2A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end per_step_scripts
+
+ thumb_func_start sub_809CB30
+sub_809CB30: @ 809CB30
+ push {lr}
+ ldr r0, =0x0000402a
+ movs r1, 0
+ bl VarSet
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_809CB30
+
+ thumb_func_start happiness_algorithm_step
+happiness_algorithm_step: @ 809CB44
+ push {r4,r5,lr}
+ ldr r0, =0x0000402a
+ bl GetVarPointer
+ ldrh r1, [r0]
+ adds r1, 0x1
+ strh r1, [r0]
+ ldrh r1, [r0]
+ movs r2, 0x7F
+ ands r1, r2
+ strh r1, [r0]
+ cmp r1, 0
+ bne _0809CB72
+ ldr r5, =gUnknown_020244EC
+ movs r4, 0x5
+_0809CB62:
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl happiness_algorithm
+ adds r5, 0x64
+ subs r4, 0x1
+ cmp r4, 0
+ bge _0809CB62
+_0809CB72:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end happiness_algorithm_step
+
+ thumb_func_start overworld_poison_timer_set
+overworld_poison_timer_set: @ 809CB80
+ push {lr}
+ ldr r0, =0x0000402b
+ movs r1, 0
+ bl VarSet
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end overworld_poison_timer_set
+
+ thumb_func_start overworld_poison_step
+overworld_poison_step: @ 809CB94
+ push {lr}
+ ldr r0, =gUnknown_02037318
+ ldrb r0, [r0, 0x17]
+ cmp r0, 0x9
+ beq _0809CBD4
+ ldr r0, =0x0000402b
+ bl GetVarPointer
+ ldrh r1, [r0]
+ adds r1, 0x1
+ strh r1, [r0]
+ ldrh r1, [r0]
+ movs r2, 0x3
+ ands r1, r2
+ strh r1, [r0]
+ cmp r1, 0
+ bne _0809CBD4
+ bl overworld_poison
+ cmp r0, 0x1
+ beq _0809CBD4
+ cmp r0, 0x1
+ ble _0809CBD4
+ cmp r0, 0x2
+ bne _0809CBD4
+ movs r0, 0x1
+ b _0809CBD6
+ .pool
+_0809CBD4:
+ movs r0, 0
+_0809CBD6:
+ pop {r1}
+ bx r1
+ thumb_func_end overworld_poison_step
+
+ thumb_func_start prev_quest_postbuffer_cursor_backup_reset
+prev_quest_postbuffer_cursor_backup_reset: @ 809CBDC
+ ldr r1, =gUnknown_020375D4
+ movs r0, 0
+ strb r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end prev_quest_postbuffer_cursor_backup_reset
+
+ thumb_func_start is_it_battle_time_3
+is_it_battle_time_3: @ 809CBE8
+ push {r4-r7,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r7, r4, 0
+ ldr r6, =gUnknown_020375D4
+ ldrb r0, [r6]
+ cmp r0, 0x3
+ bhi _0809CC0C
+ adds r0, 0x1
+ strb r0, [r6]
+ ldr r0, =gUnknown_020375D6
+ strh r4, [r0]
+ movs r0, 0
+ b _0809CC30
+ .pool
+_0809CC0C:
+ ldr r5, =gUnknown_020375D6
+ ldrh r1, [r5]
+ adds r0, r4, 0
+ bl is_it_battle_time_2
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CC28
+ strh r4, [r5]
+ movs r0, 0
+ b _0809CC30
+ .pool
+_0809CC28:
+ movs r0, 0
+ strb r0, [r6]
+ strh r7, [r5]
+ movs r0, 0x1
+_0809CC30:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end is_it_battle_time_3
+
+ thumb_func_start mapheader_run_first_tag2_script_list_match_conditionally
+mapheader_run_first_tag2_script_list_match_conditionally: @ 809CC38
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, =gUnknown_02037318
+ mov r8, r0
+ adds r1, r7, 0
+ bl map_warp_check_packed
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl is_non_stair_warp_tile
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CC90
+ lsls r0, r6, 24
+ asrs r4, r0, 24
+ movs r0, 0x1
+ negs r0, r0
+ cmp r4, r0
+ beq _0809CC90
+ bl walkrun_find_lowest_active_bit_in_bitfield
+ mov r0, r8
+ adds r1, r4, 0
+ adds r2, r7, 0
+ bl sub_809CEB0
+ bl sub_80AF734
+ movs r0, 0x1
+ b _0809CC92
+ .pool
+_0809CC90:
+ movs r0, 0
+_0809CC92:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end mapheader_run_first_tag2_script_list_match_conditionally
+
+ thumb_func_start sub_809CC9C
+sub_809CC9C: @ 809CC9C
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ lsls r1, 16
+ lsrs r5, r1, 16
+ ldr r7, =gUnknown_02037318
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl map_warp_check_packed
+ lsls r0, 24
+ asrs r4, r0, 24
+ movs r0, 0x1
+ negs r0, r0
+ cmp r4, r0
+ beq _0809CD8A
+ adds r0, r5, 0
+ bl is_warp_tile
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CD8A
+ bl walkrun_find_lowest_active_bit_in_bitfield
+ adds r0, r7, 0
+ adds r1, r4, 0
+ adds r2, r6, 0
+ bl sub_809CEB0
+ lsls r0, r5, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl MetatileBehavior_IsEscalator
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CCF8
+ adds r0, r4, 0
+ bl sub_80AF80C
+ movs r0, 0x1
+ b _0809CD8C
+ .pool
+_0809CCF8:
+ adds r0, r4, 0
+ bl sub_8089870
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CD0E
+ bl sub_80AF828
+ movs r0, 0x1
+ b _0809CD8C
+_0809CD0E:
+ adds r0, r4, 0
+ bl is_role_x68
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CD24
+ bl sub_80AF838
+ movs r0, 0x1
+ b _0809CD8C
+_0809CD24:
+ adds r0, r4, 0
+ bl MetatileBehavior_IsAquaHideoutWarp
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CD3A
+ bl sub_80AF848
+ movs r0, 0x1
+ b _0809CD8C
+_0809CD3A:
+ adds r0, r4, 0
+ bl sub_80898AC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CD50
+ bl sub_80B0268
+ movs r0, 0x1
+ b _0809CD8C
+_0809CD50:
+ adds r0, r4, 0
+ bl sub_8089904
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CD6C
+ ldr r0, =gUnknown_082A8350
+ bl script_env_1_execute_new_script
+ movs r0, 0x1
+ b _0809CD8C
+ .pool
+_0809CD6C:
+ adds r0, r4, 0
+ bl sub_80898C0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CD82
+ bl sub_80AF87C
+ movs r0, 0x1
+ b _0809CD8C
+_0809CD82:
+ bl sub_80AF734
+ movs r0, 0x1
+ b _0809CD8C
+_0809CD8A:
+ movs r0, 0
+_0809CD8C:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809CC9C
+
+ thumb_func_start is_warp_tile
+is_warp_tile: @ 809CD94
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl is_tile_x69_2_warp_door
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl MetatileBehavior_IsLadder
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl MetatileBehavior_IsEscalator
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl sub_8088F58
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl sub_8089870
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl is_role_x68
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl MetatileBehavior_IsAquaHideoutWarp
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl sub_8089904
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl sub_80898C0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ adds r0, r4, 0
+ bl sub_80898AC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CE2A
+ movs r0, 0
+ b _0809CE2C
+_0809CE2A:
+ movs r0, 0x1
+_0809CE2C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end is_warp_tile
+
+ thumb_func_start is_non_stair_warp_tile
+is_non_stair_warp_tile: @ 809CE34
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ adds r2, r1, 0
+ cmp r1, 0x2
+ beq _0809CE58
+ cmp r1, 0x2
+ bgt _0809CE4E
+ cmp r1, 0x1
+ beq _0809CE62
+ b _0809CE84
+_0809CE4E:
+ cmp r2, 0x3
+ beq _0809CE6C
+ cmp r2, 0x4
+ beq _0809CE76
+ b _0809CE84
+_0809CE58:
+ lsls r0, 24
+ lsrs r0, 24
+ bl MetatileBehavior_IsNorthArrowWarp
+ b _0809CE7E
+_0809CE62:
+ lsls r0, 24
+ lsrs r0, 24
+ bl MetatileBehavior_IsSouthArrowWarp
+ b _0809CE7E
+_0809CE6C:
+ lsls r0, 24
+ lsrs r0, 24
+ bl MetatileBehavior_IsWestArrowWarp
+ b _0809CE7E
+_0809CE76:
+ lsls r0, 24
+ lsrs r0, 24
+ bl MetatileBehavior_IsEastArrowWarp
+_0809CE7E:
+ lsls r0, 24
+ lsrs r0, 24
+ b _0809CE86
+_0809CE84:
+ movs r0, 0
+_0809CE86:
+ pop {r1}
+ bx r1
+ thumb_func_end is_non_stair_warp_tile
+
+ thumb_func_start map_warp_check_packed
+map_warp_check_packed: @ 809CE8C
+ push {lr}
+ adds r3, r1, 0
+ ldrh r1, [r3]
+ subs r1, 0x7
+ lsls r1, 16
+ lsrs r1, 16
+ ldrh r2, [r3, 0x2]
+ subs r2, 0x7
+ lsls r2, 16
+ lsrs r2, 16
+ ldrb r3, [r3, 0x4]
+ bl map_warp_check
+ lsls r0, 24
+ asrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end map_warp_check_packed
+
+ thumb_func_start sub_809CEB0
+sub_809CEB0: @ 809CEB0
+ push {r4-r7,lr}
+ adds r7, r2, 0
+ lsls r1, 24
+ lsrs r4, r1, 24
+ bl GetCurrentTrainerHillMapId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r6, r5, 0
+ cmp r5, 0
+ beq _0809CF00
+ bl sub_81D6490
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r5, r0
+ bne _0809CEF0
+ lsls r0, r4, 24
+ adds r4, r0, 0
+ cmp r4, 0
+ bne _0809CEE8
+ ldr r0, =gUnknown_02037318
+ ldr r0, [r0, 0x4]
+ ldr r5, [r0, 0x8]
+ b _0809CF0E
+ .pool
+_0809CEE8:
+ bl sub_81D6120
+ adds r5, r0, 0
+ b _0809CF0E
+_0809CEF0:
+ cmp r6, 0x5
+ bne _0809CF00
+ lsls r4, 24
+ lsrs r0, r4, 24
+ bl sub_81D6134
+ adds r5, r0, 0
+ b _0809CF0E
+_0809CF00:
+ ldr r0, =gUnknown_02037318
+ ldr r0, [r0, 0x4]
+ lsls r2, r4, 24
+ asrs r1, r2, 21
+ ldr r0, [r0, 0x8]
+ adds r5, r0, r1
+ adds r4, r2, 0
+_0809CF0E:
+ ldrb r0, [r5, 0x6]
+ cmp r0, 0x7F
+ bne _0809CF20
+ ldrb r0, [r5, 0x5]
+ bl copy_saved_warp2_bank_and_enter_x_to_warp1
+ b _0809CF6E
+ .pool
+_0809CF20:
+ movs r0, 0x7
+ ldrsb r0, [r5, r0]
+ movs r1, 0x6
+ ldrsb r1, [r5, r1]
+ movs r2, 0x5
+ ldrsb r2, [r5, r2]
+ bl warp1_set_2
+ movs r1, 0
+ ldrsh r0, [r7, r1]
+ movs r2, 0x2
+ ldrsh r1, [r7, r2]
+ bl sub_8084D5C
+ ldrb r0, [r5, 0x7]
+ ldrb r1, [r5, 0x6]
+ bl get_mapheader_by_bank_and_number
+ ldr r1, [r0, 0x4]
+ ldrb r0, [r5, 0x5]
+ ldr r1, [r1, 0x8]
+ lsls r0, 3
+ adds r0, r1
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0x7F
+ bne _0809CF6E
+ asrs r3, r4, 24
+ lsls r0, r3, 3
+ adds r0, r1
+ ldrb r0, [r0, 0x5]
+ ldr r1, =gSaveBlock1Ptr
+ ldr r2, [r1]
+ movs r1, 0x4
+ ldrsb r1, [r2, r1]
+ ldrb r2, [r2, 0x5]
+ lsls r2, 24
+ asrs r2, 24
+ bl saved_warp2_set
+_0809CF6E:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_809CEB0
+
+ thumb_func_start map_warp_consider_2_to_inside
+map_warp_consider_2_to_inside: @ 809CF78
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ lsls r1, 16
+ lsrs r0, r1, 16
+ adds r7, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ cmp r2, 0x2
+ bne _0809CFFC
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8089210
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CFB0
+ ldr r0, =gUnknown_02037318
+ ldr r1, [r0, 0x4]
+ adds r0, r5, 0
+ bl sub_80E9668
+ movs r0, 0x1
+ b _0809CFFE
+ .pool
+_0809CFB0:
+ adds r0, r4, 0
+ bl is_tile_x69_2_warp_door
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CFFC
+ ldr r6, =gUnknown_02037318
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl map_warp_check_packed
+ lsls r0, 24
+ asrs r4, r0, 24
+ movs r0, 0x1
+ negs r0, r0
+ cmp r4, r0
+ beq _0809CFFC
+ adds r0, r7, 0
+ bl is_warp_tile
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CFFC
+ bl walkrun_find_lowest_active_bit_in_bitfield
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_809CEB0
+ bl sub_80AF7D0
+ movs r0, 0x1
+ b _0809CFFE
+ .pool
+_0809CFFC:
+ movs r0, 0
+_0809CFFE:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end map_warp_consider_2_to_inside
+
+ thumb_func_start map_warp_check
+map_warp_check: @ 809D004
+ push {r4-r6,lr}
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r5, r2, 16
+ lsls r3, 24
+ lsrs r4, r3, 24
+ ldr r0, [r0, 0x4]
+ ldr r1, [r0, 0x8]
+ ldrb r3, [r0, 0x1]
+ movs r2, 0
+ cmp r2, r3
+ bge _0809D042
+_0809D01E:
+ ldrh r0, [r1]
+ cmp r0, r6
+ bne _0809D03A
+ ldrh r0, [r1, 0x2]
+ cmp r0, r5
+ bne _0809D03A
+ ldrb r0, [r1, 0x4]
+ cmp r0, r4
+ beq _0809D034
+ cmp r0, 0
+ bne _0809D03A
+_0809D034:
+ lsls r0, r2, 24
+ asrs r0, 24
+ b _0809D046
+_0809D03A:
+ adds r2, 0x1
+ adds r1, 0x8
+ cmp r2, r3
+ blt _0809D01E
+_0809D042:
+ movs r0, 0x1
+ negs r0, r0
+_0809D046:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end map_warp_check
+
+ thumb_func_start trigger_activate
+trigger_activate: @ 809D04C
+ push {r4,lr}
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _0809D082
+ ldr r1, [r4, 0xC]
+ cmp r1, 0
+ bne _0809D062
+ ldrb r0, [r4, 0x6]
+ bl trigger_activate_weather
+ b _0809D082
+_0809D062:
+ ldrh r0, [r4, 0x6]
+ cmp r0, 0
+ beq _0809D07C
+ ldrh r0, [r4, 0x6]
+ bl VarGet
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r1, [r4, 0x8]
+ cmp r0, r1
+ bne _0809D082
+ ldr r0, [r4, 0xC]
+ b _0809D084
+_0809D07C:
+ adds r0, r1, 0
+ bl script_env_2_execute_new_script
+_0809D082:
+ movs r0, 0
+_0809D084:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end trigger_activate
+
+ thumb_func_start mapheader_trigger_activate_at
+mapheader_trigger_activate_at: @ 809D08C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r1, 16
+ lsrs r1, 16
+ mov r10, r1
+ lsls r2, 16
+ lsrs r2, 16
+ mov r9, r2
+ lsls r3, 24
+ lsrs r3, 24
+ mov r8, r3
+ ldr r0, [r0, 0x4]
+ ldr r1, [r0, 0xC]
+ ldrb r7, [r0, 0x2]
+ movs r6, 0
+ cmp r6, r7
+ bge _0809D0E2
+ adds r5, r1, 0
+ adds r4, r5, 0
+_0809D0B8:
+ ldrh r0, [r4]
+ cmp r0, r10
+ bne _0809D0D8
+ ldrh r0, [r4, 0x2]
+ cmp r0, r9
+ bne _0809D0D8
+ ldrb r0, [r4, 0x4]
+ cmp r0, r8
+ beq _0809D0CE
+ cmp r0, 0
+ bne _0809D0D8
+_0809D0CE:
+ adds r0, r5, 0
+ bl trigger_activate
+ cmp r0, 0
+ bne _0809D0E4
+_0809D0D8:
+ adds r4, 0x10
+ adds r5, 0x10
+ adds r6, 0x1
+ cmp r6, r7
+ blt _0809D0B8
+_0809D0E2:
+ movs r0, 0
+_0809D0E4:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end mapheader_trigger_activate_at
+
+ thumb_func_start sub_809D0F4
+sub_809D0F4: @ 809D0F4
+ push {r4,lr}
+ ldr r4, =gUnknown_02037318
+ ldrh r1, [r0]
+ subs r1, 0x7
+ lsls r1, 16
+ lsrs r1, 16
+ ldrh r2, [r0, 0x2]
+ subs r2, 0x7
+ lsls r2, 16
+ lsrs r2, 16
+ ldrb r3, [r0, 0x4]
+ adds r0, r4, 0
+ bl mapheader_trigger_activate_at
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_809D0F4
+
+ thumb_func_start FindInvisibleMapObjectByPosition
+@ int FindInvisibleMapObjectByPosition(struct mapheader *mapHeader, u16 x, u16 y, u8 elevation)
+FindInvisibleMapObjectByPosition: @ 809D11C
+ push {r4-r7,lr}
+ lsls r1, 16
+ lsrs r7, r1, 16
+ lsls r2, 16
+ lsrs r6, r2, 16
+ lsls r3, 24
+ lsrs r5, r3, 24
+ ldr r0, [r0, 0x4]
+ ldr r4, [r0, 0x10]
+ ldrb r3, [r0, 0x3]
+ movs r2, 0
+ cmp r2, r3
+ bcs _0809D162
+_0809D136:
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r4
+ ldrh r0, [r1]
+ cmp r0, r7
+ bne _0809D158
+ ldrh r0, [r1, 0x2]
+ cmp r0, r6
+ bne _0809D158
+ ldrb r0, [r1, 0x4]
+ cmp r0, r5
+ beq _0809D154
+ cmp r0, 0
+ bne _0809D158
+_0809D154:
+ adds r0, r1, 0
+ b _0809D164
+_0809D158:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, r3
+ bcc _0809D136
+_0809D162:
+ movs r0, 0
+_0809D164:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end FindInvisibleMapObjectByPosition
+
+ thumb_func_start dive_warp
+dive_warp: @ 809D16C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r5, r1, 16
+ ldr r0, =gUnknown_02037318
+ ldrb r0, [r0, 0x17]
+ cmp r0, 0x5
+ bne _0809D1A4
+ lsls r0, r5, 24
+ lsrs r0, 24
+ bl sub_80895D0
+ lsls r0, 24
+ cmp r0, 0
+ bne _0809D1A4
+ ldrh r0, [r4]
+ subs r0, 0x7
+ lsls r0, 16
+ lsrs r0, 16
+ ldrh r1, [r4, 0x2]
+ subs r1, 0x7
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8085058
+ b _0809D1C8
+ .pool
+_0809D1A4:
+ lsls r0, r5, 24
+ lsrs r0, 24
+ bl sub_80895B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809D1E0
+ ldrh r0, [r4]
+ subs r0, 0x7
+ lsls r0, 16
+ lsrs r0, 16
+ ldrh r1, [r4, 0x2]
+ subs r1, 0x7
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8085078
+_0809D1C8:
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809D1E0
+ bl walkrun_find_lowest_active_bit_in_bitfield
+ bl sp13E_warp_to_last_warp
+ movs r0, 0xE9
+ bl audio_play
+ movs r0, 0x1
+ b _0809D1E2
+_0809D1E0:
+ movs r0, 0
+_0809D1E2:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end dive_warp
+
+ thumb_func_start sub_809D1E8
+sub_809D1E8: @ 809D1E8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, =gUnknown_02037318
+ ldrb r0, [r0, 0x17]
+ cmp r0, 0x5
+ bne _0809D244
+ adds r0, r5, 0
+ bl sub_80895D0
+ lsls r0, 24
+ cmp r0, 0
+ bne _0809D244
+ mov r0, sp
+ ldrh r0, [r0]
+ subs r0, 0x7
+ lsls r0, 16
+ lsrs r0, 16
+ ldrh r1, [r4]
+ subs r1, 0x7
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8085058
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809D274
+ movs r0, 0x1
+ b _0809D276
+ .pool
+_0809D244:
+ adds r0, r5, 0
+ bl sub_80895B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809D274
+ mov r0, sp
+ ldrh r0, [r0]
+ subs r0, 0x7
+ lsls r0, 16
+ lsrs r0, 16
+ ldrh r1, [r4]
+ subs r1, 0x7
+ lsls r1, 16
+ lsrs r1, 16
+ bl sub_8085078
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809D274
+ movs r0, 0x2
+ b _0809D276
+_0809D274:
+ movs r0, 0
+_0809D276:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809D1E8
+
+ thumb_func_start GetFieldObjectScriptPointerForComparison
+@ u8 *GetFieldObjectScriptPointerForComparison()
+GetFieldObjectScriptPointerForComparison: @ 809D280
+ push {r4,r5,lr}
+ sub sp, 0x8
+ bl player_get_direction_upper_nybble
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ mov r5, sp
+ mov r0, sp
+ bl player_get_next_pos_and_height
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0x2
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r0, sp
+ adds r2, r4, 0
+ bl TryGetMapObjectScript
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end GetFieldObjectScriptPointerForComparison
+
+ thumb_func_start sub_809D2BC
+sub_809D2BC: @ 809D2BC
+ push {r4,lr}
+ sub sp, 0x8
+ bl player_get_direction_upper_nybble
+ mov r4, sp
+ mov r0, sp
+ bl player_get_pos_to_and_height
+ mov r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ bl MapGridGetMetatileBehaviorAt
+ ldr r4, =gUnknown_02037318
+ adds r0, r4, 0
+ mov r1, sp
+ bl map_warp_check_packed
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ adds r0, r4, 0
+ mov r2, sp
+ bl sub_809CEB0
+ movs r0, 0
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_809D2BC
+
+ .align 2, 0 @ Don't pad with nop.