summaryrefslogtreecommitdiff
path: root/asm/bike.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/bike.s')
-rw-r--r--asm/bike.s2211
1 files changed, 2211 insertions, 0 deletions
diff --git a/asm/bike.s b/asm/bike.s
new file mode 100644
index 000000000..4b324c111
--- /dev/null
+++ b/asm/bike.s
@@ -0,0 +1,2211 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start MovePlayerOnBike
+MovePlayerOnBike: @ 80E50A8
+ 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, _080E50CC @ =gPlayerAvatar
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080E50D0
+ adds r0, r3, 0
+ adds r1, r4, 0
+ bl MovePlayerOnMachBike
+ b _080E50D8
+ .align 2, 0
+_080E50CC: .4byte gPlayerAvatar
+_080E50D0:
+ adds r0, r3, 0
+ adds r1, r4, 0
+ bl MovePlayerOnAcroBike
+_080E50D8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end MovePlayerOnBike
+
+ thumb_func_start MovePlayerOnMachBike
+MovePlayerOnMachBike: @ 80E50E0
+ push {r4,lr}
+ sub sp, 0x4
+ mov r1, sp
+ strb r0, [r1]
+ ldr r4, _080E510C @ =gUnknown_083DB594
+ mov r0, sp
+ bl CheckMovementInputMachBike
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r4
+ mov r1, sp
+ ldrb r1, [r1]
+ ldr r2, [r0]
+ adds r0, r1, 0
+ bl _call_via_r2
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E510C: .4byte gUnknown_083DB594
+ thumb_func_end MovePlayerOnMachBike
+
+ thumb_func_start CheckMovementInputMachBike
+CheckMovementInputMachBike: @ 80E5110
+ push {r4,lr}
+ adds r4, r0, 0
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r0, 0
+ ldrb r1, [r4]
+ cmp r1, 0
+ bne _080E5138
+ strb r0, [r4]
+ ldr r2, _080E5134 @ =gPlayerAvatar
+ ldrb r0, [r2, 0xB]
+ cmp r0, 0
+ bne _080E514C
+ strb r1, [r2, 0x2]
+ movs r0, 0
+ b _080E5160
+ .align 2, 0
+_080E5134: .4byte gPlayerAvatar
+_080E5138:
+ ldr r2, _080E5154 @ =gPlayerAvatar
+ cmp r1, r3
+ beq _080E515C
+ ldrb r0, [r2, 0x2]
+ cmp r0, 0x2
+ beq _080E515C
+ ldrb r0, [r2, 0xB]
+ cmp r0, 0
+ beq _080E5158
+ strb r3, [r4]
+_080E514C:
+ movs r0, 0x2
+ strb r0, [r2, 0x2]
+ movs r0, 0x3
+ b _080E5160
+ .align 2, 0
+_080E5154: .4byte gPlayerAvatar
+_080E5158:
+ movs r0, 0x1
+ b _080E515E
+_080E515C:
+ movs r0, 0x2
+_080E515E:
+ strb r0, [r2, 0x2]
+_080E5160:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckMovementInputMachBike
+
+ thumb_func_start sub_80E5168
+sub_80E5168: @ 80E5168
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl PlayerFaceDirection
+ bl sub_80E6024
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E5168
+
+ thumb_func_start sub_80E517C
+sub_80E517C: @ 80E517C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080E51AC @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E51B0 @ =gMapObjects
+ adds r4, r0, r1
+ ldrb r1, [r4, 0x1E]
+ adds r0, r5, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E51B4
+ adds r0, r5, 0
+ bl PlayerTurnInPlace
+ bl sub_80E6024
+ b _080E51BE
+ .align 2, 0
+_080E51AC: .4byte gPlayerAvatar
+_080E51B0: .4byte gMapObjects
+_080E51B4:
+ ldrb r0, [r4, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl sub_80E5168
+_080E51BE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E517C
+
+ thumb_func_start sub_80E51C4
+sub_80E51C4: @ 80E51C4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r7, r5, 0
+ ldr r6, _080E51F8 @ =gPlayerAvatar
+ ldrb r1, [r6, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E51FC @ =gMapObjects
+ adds r4, r0, r1
+ ldrb r1, [r4, 0x1E]
+ adds r0, r5, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E520A
+ ldrb r0, [r6, 0xB]
+ cmp r0, 0
+ beq _080E5200
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_80E5270
+ b _080E5266
+ .align 2, 0
+_080E51F8: .4byte gPlayerAvatar
+_080E51FC: .4byte gMapObjects
+_080E5200:
+ ldrb r0, [r4, 0x18]
+ lsrs r0, 4
+ bl sub_80E5168
+ b _080E5266
+_080E520A:
+ adds r0, r5, 0
+ bl sub_80E5D34
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r1, 0xFF
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0xA
+ bhi _080E5242
+ cmp r4, 0x6
+ bne _080E522C
+ adds r0, r5, 0
+ bl PlayerJumpLedge
+ b _080E5266
+_080E522C:
+ bl sub_80E6024
+ subs r0, r4, 0x5
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _080E5266
+ adds r0, r5, 0
+ bl PlayerOnBikeCollide
+ b _080E5266
+_080E5242:
+ ldr r1, _080E526C @ =gUnknown_083DB5A4
+ ldrb r0, [r6, 0xA]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ adds r0, r7, 0
+ bl _call_via_r1
+ ldrb r2, [r6, 0xA]
+ lsls r0, r2, 24
+ lsrs r1, r0, 24
+ lsrs r0, 25
+ adds r0, r2, r0
+ strb r0, [r6, 0xB]
+ cmp r1, 0x1
+ bhi _080E5266
+ adds r0, r2, 0x1
+ strb r0, [r6, 0xA]
+_080E5266:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E526C: .4byte gUnknown_083DB5A4
+ thumb_func_end sub_80E51C4
+
+ thumb_func_start sub_80E5270
+sub_80E5270: @ 80E5270
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r7, r4, 0
+ ldr r6, _080E52A8 @ =gPlayerAvatar
+ ldrb r0, [r6, 0xB]
+ cmp r0, 0
+ beq _080E5286
+ subs r0, 0x1
+ strb r0, [r6, 0xB]
+ strb r0, [r6, 0xA]
+_080E5286:
+ adds r0, r4, 0
+ bl sub_80E5D34
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r1, 0xFF
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0xA
+ bhi _080E52C2
+ cmp r5, 0x6
+ bne _080E52AC
+ adds r0, r4, 0
+ bl PlayerJumpLedge
+ b _080E52D2
+ .align 2, 0
+_080E52A8: .4byte gPlayerAvatar
+_080E52AC:
+ bl sub_80E6024
+ subs r0, r5, 0x5
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _080E52D2
+ adds r0, r4, 0
+ bl PlayerOnBikeCollide
+ b _080E52D2
+_080E52C2:
+ ldr r0, _080E52D8 @ =gUnknown_083DB5A4
+ ldrb r1, [r6, 0xA]
+ lsls r1, 2
+ adds r1, r0
+ ldr r1, [r1]
+ adds r0, r7, 0
+ bl _call_via_r1
+_080E52D2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E52D8: .4byte gUnknown_083DB5A4
+ thumb_func_end sub_80E5270
+
+ thumb_func_start MovePlayerOnAcroBike
+MovePlayerOnAcroBike: @ 80E52DC
+ push {r4,lr}
+ sub sp, 0x4
+ mov r3, sp
+ strb r0, [r3]
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r4, _080E5310 @ =gUnknown_083DB5B0
+ mov r0, sp
+ bl CheckMovementInputAcroBike
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r4
+ mov r1, sp
+ ldrb r1, [r1]
+ ldr r2, [r0]
+ adds r0, r1, 0
+ bl _call_via_r2
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E5310: .4byte gUnknown_083DB5B0
+ thumb_func_end MovePlayerOnAcroBike
+
+ thumb_func_start CheckMovementInputAcroBike
+CheckMovementInputAcroBike: @ 80E5314
+ push {r4,lr}
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r4, _080E5338 @ =gUnknown_083DB5E4
+ ldr r3, _080E533C @ =gPlayerAvatar
+ ldrb r3, [r3, 0x8]
+ lsls r3, 2
+ adds r3, r4
+ ldr r3, [r3]
+ bl _call_via_r3
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080E5338: .4byte gUnknown_083DB5E4
+_080E533C: .4byte gPlayerAvatar
+ thumb_func_end CheckMovementInputAcroBike
+
+ thumb_func_start CheckMovementInputAcroBikeNormal
+CheckMovementInputAcroBikeNormal: @ 80E5340
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r5, r2, 16
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080E5374 @ =gPlayerAvatar
+ movs r0, 0
+ strb r0, [r2, 0xA]
+ ldrb r1, [r4]
+ cmp r1, 0
+ bne _080E5380
+ movs r0, 0x2
+ ands r0, r6
+ cmp r0, 0
+ beq _080E5378
+ strb r3, [r4]
+ strb r1, [r2, 0x2]
+ movs r0, 0x2
+ strb r0, [r2, 0x8]
+ movs r0, 0x3
+ b _080E53D4
+ .align 2, 0
+_080E5374: .4byte gPlayerAvatar
+_080E5378:
+ strb r3, [r4]
+ strb r1, [r2, 0x2]
+ movs r0, 0
+ b _080E53D4
+_080E5380:
+ cmp r1, r3
+ bne _080E53A6
+ movs r0, 0x2
+ ands r0, r5
+ cmp r0, 0
+ beq _080E539E
+ ldrb r0, [r2, 0xB]
+ cmp r0, 0
+ bne _080E539E
+ adds r0, 0x1
+ strb r0, [r2, 0xB]
+ movs r0, 0x4
+ strb r0, [r2, 0x8]
+ movs r0, 0xB
+ b _080E53D4
+_080E539E:
+ ldrb r0, [r4]
+ ldr r2, _080E53CC @ =gPlayerAvatar
+ cmp r0, r3
+ beq _080E53D0
+_080E53A6:
+ ldr r0, _080E53CC @ =gPlayerAvatar
+ ldrb r1, [r0, 0x2]
+ adds r2, r0, 0
+ cmp r1, 0x2
+ beq _080E53D0
+ movs r1, 0
+ movs r0, 0x1
+ strb r0, [r2, 0x8]
+ ldrb r0, [r4]
+ strb r0, [r2, 0x9]
+ strb r1, [r2, 0x2]
+ adds r0, r4, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ bl CheckMovementInputAcroBike
+ lsls r0, 24
+ lsrs r0, 24
+ b _080E53D4
+ .align 2, 0
+_080E53CC: .4byte gPlayerAvatar
+_080E53D0:
+ movs r0, 0x2
+ strb r0, [r2, 0x2]
+_080E53D4:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckMovementInputAcroBikeNormal
+
+ thumb_func_start CheckMovementInputAcroBikeChangingDirection
+CheckMovementInputAcroBikeChangingDirection: @ 80E53DC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r4, _080E5404 @ =gPlayerAvatar
+ ldrb r0, [r4, 0x9]
+ strb r0, [r5]
+ ldrb r0, [r4, 0xA]
+ adds r0, 0x1
+ strb r0, [r4, 0xA]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x6
+ bls _080E5408
+ movs r0, 0x1
+ strb r0, [r4, 0x2]
+ movs r0, 0
+ strb r0, [r4, 0x8]
+ bl sub_80E6024
+ movs r0, 0x1
+ b _080E544E
+ .align 2, 0
+_080E5404: .4byte gPlayerAvatar
+_080E5408:
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r6, r0, 24
+ bl sub_80E5C2C
+ ldrb r1, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r1, r0
+ bne _080E544A
+ bl sub_80E6024
+ movs r0, 0x1
+ strb r0, [r4, 0xB]
+ adds r0, r6, 0
+ bl GetOppositeDirection
+ ldrb r1, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r1, r0
+ bne _080E543E
+ movs r0, 0x6
+ strb r0, [r4, 0x8]
+ movs r0, 0x9
+ b _080E544E
+_080E543E:
+ movs r0, 0x2
+ strb r0, [r4, 0x2]
+ movs r0, 0x5
+ strb r0, [r4, 0x8]
+ movs r0, 0x8
+ b _080E544E
+_080E544A:
+ strb r6, [r5]
+ movs r0, 0
+_080E544E:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckMovementInputAcroBikeChangingDirection
+
+ thumb_func_start CheckMovementInputAcroBikeStandingWheelie
+CheckMovementInputAcroBikeStandingWheelie: @ 80E5454
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ lsls r4, r2, 16
+ lsrs r4, 16
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r5, _080E54A0 @ =gPlayerAvatar
+ ldrb r1, [r5, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E54A4 @ =gMapObjects
+ adds r1, r0, r1
+ movs r0, 0
+ strb r0, [r5, 0x2]
+ movs r0, 0x2
+ ands r4, r0
+ lsls r4, 16
+ lsrs r4, 16
+ cmp r4, 0
+ bne _080E54A8
+ strb r4, [r5, 0xA]
+ ldrb r0, [r1, 0x1E]
+ bl MetatileBehavior_IsBumpySlope
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080E54AE
+ strb r6, [r7]
+ strb r0, [r5, 0x8]
+ bl sub_80E6024
+ movs r0, 0x4
+ b _080E54EC
+ .align 2, 0
+_080E54A0: .4byte gPlayerAvatar
+_080E54A4: .4byte gMapObjects
+_080E54A8:
+ ldrb r0, [r5, 0xA]
+ adds r0, 0x1
+ strb r0, [r5, 0xA]
+_080E54AE:
+ ldr r1, _080E54C4 @ =gPlayerAvatar
+ ldrb r0, [r1, 0xA]
+ cmp r0, 0x27
+ bls _080E54C8
+ strb r6, [r7]
+ movs r0, 0x3
+ strb r0, [r1, 0x8]
+ bl sub_80E6024
+ movs r0, 0x6
+ b _080E54EC
+ .align 2, 0
+_080E54C4: .4byte gPlayerAvatar
+_080E54C8:
+ ldrb r0, [r7]
+ cmp r0, r6
+ bne _080E54DE
+ movs r0, 0x2
+ strb r0, [r1, 0x2]
+ movs r0, 0x4
+ strb r0, [r1, 0x8]
+ bl sub_80E6024
+ movs r0, 0xA
+ b _080E54EC
+_080E54DE:
+ cmp r0, 0
+ beq _080E54E8
+ movs r0, 0x1
+ strb r0, [r1, 0x2]
+ b _080E54EA
+_080E54E8:
+ strb r6, [r7]
+_080E54EA:
+ movs r0, 0x5
+_080E54EC:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckMovementInputAcroBikeStandingWheelie
+
+ thumb_func_start CheckMovementInputAcroBikeBunnyHop
+CheckMovementInputAcroBikeBunnyHop: @ 80E54F4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r6, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r9, r1
+ lsls r2, 16
+ lsrs r2, 16
+ mov r8, r2
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r2, r5, 0
+ ldr r4, _080E5554 @ =gPlayerAvatar
+ ldrb r1, [r4, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E5558 @ =gMapObjects
+ adds r7, r0, r1
+ movs r0, 0x2
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ bne _080E5566
+ bl sub_80E6024
+ ldrb r0, [r7, 0x1E]
+ bl MetatileBehavior_IsBumpySlope
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _080E555C
+ movs r0, 0x2
+ strb r0, [r4, 0x8]
+ adds r0, r6, 0
+ mov r1, r9
+ mov r2, r8
+ bl CheckMovementInputAcroBike
+ lsls r0, 24
+ lsrs r0, 24
+ b _080E558A
+ .align 2, 0
+_080E5554: .4byte gPlayerAvatar
+_080E5558: .4byte gMapObjects
+_080E555C:
+ strb r5, [r6]
+ strb r0, [r4, 0x2]
+ strb r0, [r4, 0x8]
+ movs r0, 0x4
+ b _080E558A
+_080E5566:
+ ldrb r0, [r6]
+ cmp r0, 0
+ bne _080E5570
+ strb r5, [r6]
+ b _080E557C
+_080E5570:
+ cmp r0, r2
+ beq _080E5582
+ ldrb r0, [r4, 0x2]
+ cmp r0, 0x2
+ beq _080E5582
+ movs r0, 0x1
+_080E557C:
+ strb r0, [r4, 0x2]
+ movs r0, 0x6
+ b _080E558A
+_080E5582:
+ ldr r1, _080E5598 @ =gPlayerAvatar
+ movs r0, 0x2
+ strb r0, [r1, 0x2]
+ movs r0, 0x7
+_080E558A:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080E5598: .4byte gPlayerAvatar
+ thumb_func_end CheckMovementInputAcroBikeBunnyHop
+
+ thumb_func_start CheckMovementInputAcroBikeMovingWheelie
+CheckMovementInputAcroBikeMovingWheelie: @ 80E559C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r6, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r10, r1
+ lsls r2, 16
+ lsrs r2, 16
+ mov r8, r2
+ bl player_get_direction_lower_nybble
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r2, r5, 0
+ ldr r4, _080E55F8 @ =gPlayerAvatar
+ ldrb r1, [r4, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E55FC @ =gMapObjects
+ adds r7, r0, r1
+ movs r0, 0x2
+ mov r9, r0
+ movs r0, 0x2
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ bne _080E5634
+ bl sub_80E6024
+ ldrb r0, [r7, 0x1E]
+ bl MetatileBehavior_IsBumpySlope
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080E5620
+ strb r1, [r4, 0x8]
+ ldrb r0, [r6]
+ cmp r0, 0
+ bne _080E5600
+ strb r5, [r6]
+ b _080E560A
+ .align 2, 0
+_080E55F8: .4byte gPlayerAvatar
+_080E55FC: .4byte gMapObjects
+_080E5600:
+ cmp r0, r5
+ beq _080E5610
+ ldrb r0, [r4, 0x2]
+ cmp r0, 0x2
+ beq _080E5610
+_080E560A:
+ strb r1, [r4, 0x2]
+ movs r0, 0x4
+ b _080E5664
+_080E5610:
+ ldr r1, _080E561C @ =gPlayerAvatar
+ movs r0, 0x2
+ strb r0, [r1, 0x2]
+ movs r0, 0xC
+ b _080E5664
+ .align 2, 0
+_080E561C: .4byte gPlayerAvatar
+_080E5620:
+ mov r0, r9
+ strb r0, [r4, 0x8]
+ adds r0, r6, 0
+ mov r1, r10
+ mov r2, r8
+ bl CheckMovementInputAcroBike
+ lsls r0, 24
+ lsrs r0, 24
+ b _080E5664
+_080E5634:
+ ldrb r0, [r6]
+ cmp r0, 0
+ bne _080E564A
+ strb r5, [r6]
+ mov r1, r9
+ strb r1, [r4, 0x8]
+ strb r0, [r4, 0x2]
+ bl sub_80E6024
+ movs r0, 0x5
+ b _080E5664
+_080E564A:
+ cmp r2, r0
+ beq _080E565C
+ ldrb r0, [r4, 0x2]
+ cmp r0, 0x2
+ beq _080E565C
+ movs r0, 0
+ strb r0, [r4, 0x2]
+ movs r0, 0x5
+ b _080E5664
+_080E565C:
+ ldr r1, _080E5674 @ =gPlayerAvatar
+ movs r0, 0x2
+ strb r0, [r1, 0x2]
+ movs r0, 0xA
+_080E5664:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080E5674: .4byte gPlayerAvatar
+ thumb_func_end CheckMovementInputAcroBikeMovingWheelie
+
+ thumb_func_start CheckMovementInputAcroBikeUnknownMode5
+CheckMovementInputAcroBikeUnknownMode5: @ 80E5678
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ mov r8, r0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ ldr r6, _080E56CC @ =gPlayerAvatar
+ ldrb r1, [r6, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E56D0 @ =gMapObjects
+ adds r0, r1
+ ldrb r2, [r0, 0x1]
+ movs r1, 0x3
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0, 0x1]
+ ldrb r1, [r0, 0x18]
+ lsls r1, 28
+ lsrs r1, 28
+ bl FieldObjectSetDirection
+ movs r0, 0
+ strb r0, [r6, 0x8]
+ mov r0, r8
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl CheckMovementInputAcroBike
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080E56CC: .4byte gPlayerAvatar
+_080E56D0: .4byte gMapObjects
+ thumb_func_end CheckMovementInputAcroBikeUnknownMode5
+
+ thumb_func_start CheckMovementInputAcroBikeUnknownMode6
+CheckMovementInputAcroBikeUnknownMode6: @ 80E56D4
+ push {r4,lr}
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r4, _080E56F4 @ =gPlayerAvatar
+ movs r3, 0
+ strb r3, [r4, 0x8]
+ bl CheckMovementInputAcroBike
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080E56F4: .4byte gPlayerAvatar
+ thumb_func_end CheckMovementInputAcroBikeUnknownMode6
+
+ thumb_func_start sub_80E56F8
+sub_80E56F8: @ 80E56F8
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl PlayerFaceDirection
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E56F8
+
+ thumb_func_start sub_80E5708
+sub_80E5708: @ 80E5708
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080E573C @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E5740 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E572E
+ ldrb r0, [r5, 0x18]
+ lsrs r4, r0, 4
+_080E572E:
+ adds r0, r4, 0
+ bl PlayerFaceDirection
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E573C: .4byte gPlayerAvatar
+_080E5740: .4byte gMapObjects
+ thumb_func_end sub_80E5708
+
+ thumb_func_start sub_80E5744
+sub_80E5744: @ 80E5744
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r6, r4, 0
+ ldr r0, _080E5774 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E5778 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E577C
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ bl sub_80E56F8
+ b _080E57B6
+ .align 2, 0
+_080E5774: .4byte gPlayerAvatar
+_080E5778: .4byte gMapObjects
+_080E577C:
+ adds r0, r4, 0
+ bl sub_80E5D34
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xFF
+ lsls r2, 24
+ adds r0, r2
+ lsrs r0, 24
+ cmp r0, 0xA
+ bhi _080E57B0
+ cmp r1, 0x6
+ bne _080E579E
+ adds r0, r4, 0
+ bl PlayerJumpLedge
+ b _080E57B6
+_080E579E:
+ subs r0, r1, 0x5
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _080E57B6
+ adds r0, r4, 0
+ bl PlayerOnBikeCollide
+ b _080E57B6
+_080E57B0:
+ adds r0, r6, 0
+ bl npc_use_some_d2s
+_080E57B6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E5744
+
+ thumb_func_start sub_80E57BC
+sub_80E57BC: @ 80E57BC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080E57F0 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E57F4 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E57E2
+ ldrb r0, [r5, 0x18]
+ lsrs r4, r0, 4
+_080E57E2:
+ adds r0, r4, 0
+ bl sub_805951C
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E57F0: .4byte gPlayerAvatar
+_080E57F4: .4byte gMapObjects
+ thumb_func_end sub_80E57BC
+
+ thumb_func_start sub_80E57F8
+sub_80E57F8: @ 80E57F8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080E582C @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E5830 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E581E
+ ldrb r0, [r5, 0x18]
+ lsrs r4, r0, 4
+_080E581E:
+ adds r0, r4, 0
+ bl sub_8059534
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E582C: .4byte gPlayerAvatar
+_080E5830: .4byte gMapObjects
+ thumb_func_end sub_80E57F8
+
+ thumb_func_start sub_80E5834
+sub_80E5834: @ 80E5834
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080E5868 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E586C @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E585A
+ ldrb r0, [r5, 0x18]
+ lsrs r4, r0, 4
+_080E585A:
+ adds r0, r4, 0
+ bl sub_8059504
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E5868: .4byte gPlayerAvatar
+_080E586C: .4byte gMapObjects
+ thumb_func_end sub_80E5834
+
+ thumb_func_start sub_80E5870
+sub_80E5870: @ 80E5870
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080E58A4 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E58A8 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5896
+ ldrb r0, [r5, 0x18]
+ lsrs r4, r0, 4
+_080E5896:
+ adds r0, r4, 0
+ bl sub_805954C
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E58A4: .4byte gPlayerAvatar
+_080E58A8: .4byte gMapObjects
+ thumb_func_end sub_80E5870
+
+ thumb_func_start sub_80E58AC
+sub_80E58AC: @ 80E58AC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080E58D8 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E58DC @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E58E0
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ bl sub_80E5870
+ b _080E591A
+ .align 2, 0
+_080E58D8: .4byte gPlayerAvatar
+_080E58DC: .4byte gMapObjects
+_080E58E0:
+ adds r0, r4, 0
+ bl sub_80E5D34
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _080E5914
+ cmp r1, 0x9
+ beq _080E5914
+ cmp r1, 0x6
+ bne _080E58FE
+ adds r0, r4, 0
+ bl sub_8059594
+ b _080E591A
+_080E58FE:
+ subs r0, r1, 0x5
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _080E591A
+ cmp r1, 0xB
+ bhi _080E5914
+ adds r0, r4, 0
+ bl sub_80E5870
+ b _080E591A
+_080E5914:
+ adds r0, r4, 0
+ bl sub_8059570
+_080E591A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E58AC
+
+ thumb_func_start sub_80E5920
+sub_80E5920: @ 80E5920
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r5, 0
+ bl sub_80E5D34
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ cmp r0, 0
+ beq _080E5954
+ cmp r0, 0x7
+ beq _080E5980
+ cmp r0, 0x9
+ bls _080E594C
+ adds r0, r1, 0
+ adds r1, r5, 0
+ bl sub_80E5EC0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5954
+_080E594C:
+ adds r0, r5, 0
+ bl sub_80E5708
+ b _080E5980
+_080E5954:
+ ldr r0, _080E5988 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _080E598C @ =gMapObjects
+ adds r4, r0
+ movs r0, 0x22
+ bl PlaySE
+ ldrb r0, [r4, 0x1]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r0, r5, 0
+ bl sub_80608A4
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl player_npc_set_state_and_x22_etc
+_080E5980:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E5988: .4byte gPlayerAvatar
+_080E598C: .4byte gMapObjects
+ thumb_func_end sub_80E5920
+
+ thumb_func_start sub_80E5990
+sub_80E5990: @ 80E5990
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80595B8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E5990
+
+ thumb_func_start sub_80E59A0
+sub_80E59A0: @ 80E59A0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r6, r4, 0
+ ldr r7, _080E59D0 @ =gPlayerAvatar
+ ldrb r1, [r7, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E59D4 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E59D8
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ bl sub_8059504
+ b _080E5A28
+ .align 2, 0
+_080E59D0: .4byte gPlayerAvatar
+_080E59D4: .4byte gMapObjects
+_080E59D8:
+ adds r0, r4, 0
+ bl sub_80E5D34
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xFF
+ lsls r2, 24
+ adds r0, r2
+ lsrs r0, 24
+ cmp r0, 0xA
+ bhi _080E5A1E
+ cmp r1, 0x6
+ bne _080E59FA
+ adds r0, r4, 0
+ bl sub_8059594
+ b _080E5A28
+_080E59FA:
+ cmp r1, 0x9
+ beq _080E5A0E
+ cmp r1, 0x4
+ bhi _080E5A28
+ ldrb r0, [r5, 0x1E]
+ bl MetatileBehavior_IsBumpySlope
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E5A16
+_080E5A0E:
+ adds r0, r4, 0
+ bl sub_8059504
+ b _080E5A28
+_080E5A16:
+ adds r0, r4, 0
+ bl sub_80595DC
+ b _080E5A28
+_080E5A1E:
+ adds r0, r6, 0
+ bl sub_8059618
+ movs r0, 0x2
+ strb r0, [r7, 0x2]
+_080E5A28:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E59A0
+
+ thumb_func_start sub_80E5A30
+sub_80E5A30: @ 80E5A30
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r6, r4, 0
+ ldr r7, _080E5A60 @ =gPlayerAvatar
+ ldrb r1, [r7, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E5A64 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5A68
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ bl sub_805951C
+ b _080E5AB8
+ .align 2, 0
+_080E5A60: .4byte gPlayerAvatar
+_080E5A64: .4byte gMapObjects
+_080E5A68:
+ adds r0, r4, 0
+ bl sub_80E5D34
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xFF
+ lsls r2, 24
+ adds r0, r2
+ lsrs r0, 24
+ cmp r0, 0xA
+ bhi _080E5AAE
+ cmp r1, 0x6
+ bne _080E5A8A
+ adds r0, r4, 0
+ bl sub_8059594
+ b _080E5AB8
+_080E5A8A:
+ cmp r1, 0x9
+ beq _080E5A9E
+ cmp r1, 0x4
+ bhi _080E5AB8
+ ldrb r0, [r5, 0x1E]
+ bl MetatileBehavior_IsBumpySlope
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E5AA6
+_080E5A9E:
+ adds r0, r4, 0
+ bl sub_8059504
+ b _080E5AB8
+_080E5AA6:
+ adds r0, r4, 0
+ bl sub_80595DC
+ b _080E5AB8
+_080E5AAE:
+ adds r0, r6, 0
+ bl sub_8059600
+ movs r0, 0x2
+ strb r0, [r7, 0x2]
+_080E5AB8:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E5A30
+
+ thumb_func_start sub_80E5AC0
+sub_80E5AC0: @ 80E5AC0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r6, r4, 0
+ ldr r0, _080E5AF0 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E5AF4 @ =gMapObjects
+ adds r5, r0, r1
+ ldrb r1, [r5, 0x1E]
+ adds r0, r4, 0
+ bl sub_80E5E70
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5AF8
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ bl sub_8059534
+ b _080E5B32
+ .align 2, 0
+_080E5AF0: .4byte gPlayerAvatar
+_080E5AF4: .4byte gMapObjects
+_080E5AF8:
+ adds r0, r4, 0
+ bl sub_80E5D34
+ lsls r0, 24
+ lsrs r1, r0, 24
+ movs r2, 0xFF
+ lsls r2, 24
+ adds r0, r2
+ lsrs r0, 24
+ cmp r0, 0xA
+ bhi _080E5B2C
+ cmp r1, 0x6
+ bne _080E5B1A
+ adds r0, r4, 0
+ bl PlayerJumpLedge
+ b _080E5B32
+_080E5B1A:
+ subs r0, r1, 0x5
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bls _080E5B32
+ adds r0, r4, 0
+ bl sub_8059534
+ b _080E5B32
+_080E5B2C:
+ adds r0, r6, 0
+ bl sub_8059630
+_080E5B32:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E5AC0
+
+ thumb_func_start sub_80E5B38
+sub_80E5B38: @ 80E5B38
+ push {lr}
+ lsls r0, 16
+ lsrs r3, r0, 16
+ lsls r1, 16
+ lsrs r2, r1, 16
+ ldr r0, _080E5B5C @ =gPlayerAvatar
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080E5B56
+ adds r0, r3, 0
+ adds r1, r2, 0
+ bl sub_80E5B60
+_080E5B56:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E5B5C: .4byte gPlayerAvatar
+ thumb_func_end sub_80E5B38
+
+ thumb_func_start sub_80E5B60
+sub_80E5B60: @ 80E5B60
+ push {r4,r5,lr}
+ lsls r1, 16
+ lsrs r5, r1, 16
+ adds r0, r5, 0
+ bl sub_80E5CF4
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r4, _080E5B88 @ =gPlayerAvatar
+ ldr r0, [r4, 0xC]
+ movs r1, 0xF
+ ands r0, r1
+ cmp r2, r0
+ bne _080E5B8C
+ ldrb r0, [r4, 0x14]
+ cmp r0, 0xFE
+ bhi _080E5B96
+ adds r0, 0x1
+ strb r0, [r4, 0x14]
+ b _080E5B96
+ .align 2, 0
+_080E5B88: .4byte gPlayerAvatar
+_080E5B8C:
+ adds r0, r2, 0
+ bl sub_80E5C7C
+ movs r0, 0
+ strb r0, [r4, 0xB]
+_080E5B96:
+ movs r0, 0xF
+ adds r2, r5, 0
+ ands r2, r0
+ ldr r4, _080E5BB4 @ =gPlayerAvatar
+ ldr r0, [r4, 0x10]
+ movs r1, 0xF
+ ands r0, r1
+ cmp r2, r0
+ bne _080E5BB8
+ ldrb r0, [r4, 0x1C]
+ cmp r0, 0xFE
+ bhi _080E5BC2
+ adds r0, 0x1
+ strb r0, [r4, 0x1C]
+ b _080E5BC2
+ .align 2, 0
+_080E5BB4: .4byte gPlayerAvatar
+_080E5BB8:
+ adds r0, r2, 0
+ bl sub_80E5CB8
+ movs r0, 0
+ strb r0, [r4, 0xB]
+_080E5BC2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E5B60
+
+ thumb_func_start sub_80E5BC8
+sub_80E5BC8: @ 80E5BC8
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ adds r4, r1, 0
+ movs r2, 0
+ ldrb r0, [r3]
+ cmp r0, 0
+ beq _080E5BF2
+ ldr r5, _080E5C0C @ =gUnknown_0202E86C
+_080E5BD8:
+ adds r0, r2, r5
+ adds r1, r3, r2
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bhi _080E5C08
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ adds r0, r3, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080E5BD8
+_080E5BF2:
+ movs r2, 0
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _080E5C22
+ ldr r3, _080E5C10 @ =gUnknown_0202E874
+_080E5BFC:
+ adds r0, r2, r3
+ adds r1, r4, r2
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bls _080E5C14
+_080E5C08:
+ movs r0, 0
+ b _080E5C24
+ .align 2, 0
+_080E5C0C: .4byte gUnknown_0202E86C
+_080E5C10: .4byte gUnknown_0202E874
+_080E5C14:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ adds r0, r4, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080E5BFC
+_080E5C22:
+ movs r0, 0x1
+_080E5C24:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E5BC8
+
+ thumb_func_start sub_80E5C2C
+sub_80E5C2C: @ 80E5C2C
+ push {r4-r6,lr}
+ movs r6, 0
+ movs r5, 0
+_080E5C32:
+ ldr r0, _080E5C64 @ =gUnknown_083DB608
+ adds r4, r5, r0
+ ldr r0, _080E5C68 @ =gPlayerAvatar
+ ldr r1, [r0, 0xC]
+ ldr r2, [r0, 0x10]
+ ldr r0, [r4, 0x8]
+ ands r1, r0
+ ldr r0, [r4, 0xC]
+ ands r2, r0
+ ldr r0, [r4]
+ cmp r1, r0
+ bne _080E5C6C
+ ldr r0, [r4, 0x4]
+ cmp r2, r0
+ bne _080E5C6C
+ ldr r0, [r4, 0x10]
+ ldr r1, [r4, 0x14]
+ bl sub_80E5BC8
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E5C6C
+ ldrb r0, [r4, 0x18]
+ b _080E5C76
+ .align 2, 0
+_080E5C64: .4byte gUnknown_083DB608
+_080E5C68: .4byte gPlayerAvatar
+_080E5C6C:
+ adds r5, 0x1C
+ adds r6, 0x1
+ cmp r6, 0x3
+ bls _080E5C32
+ movs r0, 0
+_080E5C76:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E5C2C
+
+ thumb_func_start sub_80E5C7C
+sub_80E5C7C: @ 80E5C7C
+ push {r4,lr}
+ lsls r0, 24
+ ldr r3, _080E5CB4 @ =gPlayerAvatar
+ ldr r2, [r3, 0xC]
+ lsls r2, 4
+ movs r1, 0xF0
+ lsls r1, 20
+ ands r1, r0
+ lsrs r1, 24
+ orrs r2, r1
+ str r2, [r3, 0xC]
+ movs r1, 0x7
+ adds r4, r3, 0
+ adds r3, 0x14
+_080E5C98:
+ adds r2, r1, r3
+ subs r1, 0x1
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ strb r0, [r2]
+ lsls r1, 24
+ lsrs r1, 24
+ cmp r1, 0
+ bne _080E5C98
+ movs r0, 0x1
+ strb r0, [r4, 0x14]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E5CB4: .4byte gPlayerAvatar
+ thumb_func_end sub_80E5C7C
+
+ thumb_func_start sub_80E5CB8
+sub_80E5CB8: @ 80E5CB8
+ push {r4,lr}
+ lsls r0, 24
+ ldr r3, _080E5CF0 @ =gPlayerAvatar
+ ldr r2, [r3, 0x10]
+ lsls r2, 4
+ movs r1, 0xF0
+ lsls r1, 20
+ ands r1, r0
+ lsrs r1, 24
+ orrs r2, r1
+ str r2, [r3, 0x10]
+ movs r1, 0x7
+ adds r4, r3, 0
+ adds r3, 0x1C
+_080E5CD4:
+ adds r2, r1, r3
+ subs r1, 0x1
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ strb r0, [r2]
+ lsls r1, 24
+ lsrs r1, 24
+ cmp r1, 0
+ bne _080E5CD4
+ movs r0, 0x1
+ strb r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E5CF0: .4byte gPlayerAvatar
+ thumb_func_end sub_80E5CB8
+
+ thumb_func_start sub_80E5CF4
+sub_80E5CF4: @ 80E5CF4
+ push {lr}
+ lsls r0, 16
+ lsrs r1, r0, 16
+ adds r2, r1, 0
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080E5D08
+ movs r0, 0x2
+ b _080E5D2E
+_080E5D08:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080E5D14
+ movs r0, 0x1
+ b _080E5D2E
+_080E5D14:
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080E5D20
+ movs r0, 0x3
+ b _080E5D2E
+_080E5D20:
+ movs r0, 0x10
+ ands r2, r0
+ cmp r2, 0
+ bne _080E5D2C
+ movs r0, 0
+ b _080E5D2E
+_080E5D2C:
+ movs r0, 0x4
+_080E5D2E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E5CF4
+
+ thumb_func_start sub_80E5D34
+sub_80E5D34: @ 80E5D34
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _080E5D98 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x5]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _080E5D9C @ =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 sub_80E5DA0
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080E5D98: .4byte gPlayerAvatar
+_080E5D9C: .4byte gMapObjects
+ thumb_func_end sub_80E5D34
+
+ thumb_func_start sub_80E5DA0
+sub_80E5DA0: @ 80E5DA0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r4, [sp, 0x10]
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ adds r5, r4, 0
+ lsls r1, 16
+ asrs r1, 16
+ lsls r2, 16
+ asrs r2, 16
+ str r5, [sp]
+ bl CheckForFieldObjectCollision
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x4
+ bhi _080E5DE0
+ cmp r4, 0
+ bne _080E5DDC
+ adds r0, r5, 0
+ bl IsRunningDisallowedByMetatile
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E5DD8
+ movs r4, 0x2
+_080E5DD8:
+ cmp r4, 0
+ beq _080E5DE0
+_080E5DDC:
+ bl sub_80E5E4C
+_080E5DE0:
+ adds r0, r4, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E5DA0
+
+ thumb_func_start sub_80E5DEC
+sub_80E5DEC: @ 80E5DEC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl IsRunningDisallowedByMetatile
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5E04
+ ldr r0, _080E5E08 @ =gMapHeader
+ ldrb r0, [r0, 0x17]
+ cmp r0, 0x8
+ bne _080E5E0C
+_080E5E04:
+ movs r0, 0x1
+ b _080E5E0E
+ .align 2, 0
+_080E5E08: .4byte gMapHeader
+_080E5E0C:
+ movs r0, 0
+_080E5E0E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E5DEC
+
+ thumb_func_start IsRunningDisallowedByMetatile
+IsRunningDisallowedByMetatile: @ 80E5E14
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl MetatileBehavior_IsRunningDisallowed
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5E3E
+ adds r0, r4, 0
+ bl MetatileBehavior_IsFortreeBridge
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E5E42
+ bl PlayerGetZCoord
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ bne _080E5E42
+_080E5E3E:
+ movs r0, 0x1
+ b _080E5E44
+_080E5E42:
+ movs r0, 0
+_080E5E44:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end IsRunningDisallowedByMetatile
+
+ thumb_func_start sub_80E5E4C
+sub_80E5E4C: @ 80E5E4C
+ push {lr}
+ ldr r0, _080E5E68 @ =gUnknown_02039250
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080E5E62
+ ldr r1, _080E5E6C @ =gUnknown_02039251
+ ldrb r0, [r1]
+ cmp r0, 0x63
+ bhi _080E5E62
+ adds r0, 0x1
+ strb r0, [r1]
+_080E5E62:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E5E68: .4byte gUnknown_02039250
+_080E5E6C: .4byte gUnknown_02039251
+ thumb_func_end sub_80E5E4C
+
+ thumb_func_start sub_80E5E70
+sub_80E5E70: @ 80E5E70
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ adds r5, r4, 0
+ movs r1, 0xFD
+ lsls r1, 24
+ adds r0, r1
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _080E5E9A
+ adds r0, r4, 0
+ bl MetatileBehavior_IsIsolatedVerticalRail
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5EB2
+ adds r0, r4, 0
+ bl MetatileBehavior_IsVerticalRail
+ b _080E5EAC
+_080E5E9A:
+ adds r0, r5, 0
+ bl MetatileBehavior_IsIsolatedHorizontalRail
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5EB2
+ adds r0, r5, 0
+ bl MetatileBehavior_IsHorizontalRail
+_080E5EAC:
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E5EB6
+_080E5EB2:
+ movs r0, 0
+ b _080E5EB8
+_080E5EB6:
+ movs r0, 0x1
+_080E5EB8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E5E70
+
+ thumb_func_start sub_80E5EC0
+sub_80E5EC0: @ 80E5EC0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ lsls r1, 24
+ movs r3, 0xFF
+ lsls r3, 24
+ adds r1, r3
+ lsrs r1, 24
+ cmp r1, 0x1
+ bhi _080E5EE0
+ cmp r0, 0xA
+ beq _080E5EE8
+ cmp r0, 0xC
+ bne _080E5EEC
+ b _080E5EE8
+_080E5EE0:
+ cmp r2, 0xB
+ beq _080E5EE8
+ cmp r2, 0xD
+ bne _080E5EEC
+_080E5EE8:
+ movs r0, 0
+ b _080E5EEE
+_080E5EEC:
+ movs r0, 0x1
+_080E5EEE:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E5EC0
+
+ thumb_func_start sub_80E5EF4
+sub_80E5EF4: @ 80E5EF4
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r0, _080E5F30 @ =gPlayerAvatar
+ ldrb r1, [r0]
+ movs r0, 0x18
+ ands r0, r1
+ cmp r0, 0
+ bne _080E5F34
+ 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 r0, 24
+ bl IsRunningDisallowedByMetatile
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E5F34
+ movs r0, 0
+ b _080E5F36
+ .align 2, 0
+_080E5F30: .4byte gPlayerAvatar
+_080E5F34:
+ movs r0, 0x1
+_080E5F36:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E5EF4
+
+ thumb_func_start player_should_look_direction_be_enforced_upon_movement
+player_should_look_direction_be_enforced_upon_movement: @ 80E5F40
+ push {lr}
+ movs r0, 0x4
+ bl TestPlayerAvatarFlags
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E5F74
+ ldr r2, _080E5F6C @ =gMapObjects
+ ldr r0, _080E5F70 @ =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1E]
+ bl MetatileBehavior_IsBumpySlope
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E5F74
+ movs r0, 0
+ b _080E5F76
+ .align 2, 0
+_080E5F6C: .4byte gMapObjects
+_080E5F70: .4byte gPlayerAvatar
+_080E5F74:
+ movs r0, 0x1
+_080E5F76:
+ pop {r1}
+ bx r1
+ thumb_func_end player_should_look_direction_be_enforced_upon_movement
+
+ thumb_func_start GetOnOffBike
+GetOnOffBike: @ 80E5F7C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080E5FA4 @ =gUnknown_0202E854
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, _080E5FA8 @ =gPlayerAvatar
+ ldrb r1, [r0]
+ movs r0, 0x6
+ ands r0, r1
+ cmp r0, 0
+ beq _080E5FAC
+ movs r0, 0x1
+ bl SetPlayerAvatarTransitionFlags
+ bl sav1_reset_battle_music_maybe
+ bl sub_8053E90
+ b _080E5FC0
+ .align 2, 0
+_080E5FA4: .4byte gUnknown_0202E854
+_080E5FA8: .4byte gPlayerAvatar
+_080E5FAC:
+ adds r0, r2, 0
+ bl SetPlayerAvatarTransitionFlags
+ ldr r4, _080E5FC8 @ =0x00000193
+ adds r0, r4, 0
+ bl sav1_set_battle_music_maybe
+ adds r0, r4, 0
+ bl sub_8053FB0
+_080E5FC0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E5FC8: .4byte 0x00000193
+ thumb_func_end GetOnOffBike
+
+ thumb_func_start sub_80E5FCC
+sub_80E5FCC: @ 80E5FCC
+ push {lr}
+ ldr r2, _080E6008 @ =gPlayerAvatar
+ movs r3, 0
+ strb r3, [r2, 0x8]
+ strb r3, [r2, 0x9]
+ strb r3, [r2, 0xA]
+ strb r3, [r2, 0xB]
+ str r0, [r2, 0xC]
+ str r1, [r2, 0x10]
+ movs r1, 0
+ adds r2, 0x14
+_080E5FE2:
+ adds r0, r1, r2
+ strb r3, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x7
+ bls _080E5FE2
+ movs r1, 0
+ ldr r3, _080E600C @ =gUnknown_0202E874
+ movs r2, 0
+_080E5FF6:
+ adds r0, r1, r3
+ strb r2, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x7
+ bls _080E5FF6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E6008: .4byte gPlayerAvatar
+_080E600C: .4byte gUnknown_0202E874
+ thumb_func_end sub_80E5FCC
+
+ thumb_func_start sub_80E6010
+sub_80E6010: @ 80E6010
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080E6020 @ =gPlayerAvatar
+ strb r0, [r2, 0xA]
+ lsrs r1, r0, 1
+ adds r0, r1
+ strb r0, [r2, 0xB]
+ bx lr
+ .align 2, 0
+_080E6020: .4byte gPlayerAvatar
+ thumb_func_end sub_80E6010
+
+ thumb_func_start sub_80E6024
+sub_80E6024: @ 80E6024
+ ldr r1, _080E6030 @ =gPlayerAvatar
+ movs r0, 0
+ strb r0, [r1, 0xA]
+ strb r0, [r1, 0xB]
+ bx lr
+ .align 2, 0
+_080E6030: .4byte gPlayerAvatar
+ thumb_func_end sub_80E6024
+
+ thumb_func_start sub_80E6034
+sub_80E6034: @ 80E6034
+ push {lr}
+ sub sp, 0x8
+ ldr r1, _080E605C @ =gUnknown_083DB600
+ mov r0, sp
+ movs r2, 0x6
+ bl memcpy
+ ldr r2, _080E6060 @ =gPlayerAvatar
+ ldrb r1, [r2]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080E6064
+ ldrb r0, [r2, 0xA]
+ lsls r0, 1
+ add r0, sp
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ b _080E607E
+ .align 2, 0
+_080E605C: .4byte gUnknown_083DB600
+_080E6060: .4byte gPlayerAvatar
+_080E6064:
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080E6070
+ movs r0, 0x3
+ b _080E607E
+_080E6070:
+ movs r0, 0x88
+ ands r0, r1
+ cmp r0, 0
+ bne _080E607C
+ movs r0, 0x1
+ b _080E607E
+_080E607C:
+ movs r0, 0x2
+_080E607E:
+ add sp, 0x8
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80E6034
+
+ thumb_func_start sub_80E6084
+sub_80E6084: @ 80E6084
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r5, _080E60D4 @ =gPlayerAvatar
+ ldrb r1, [r5]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080E60CC
+ 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 r0, 24
+ bl MetatileBehavior_IsBumpySlope
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E60CC
+ movs r0, 0x2
+ strb r0, [r5, 0x8]
+ bl player_get_direction_upper_nybble
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8059C94
+_080E60CC:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E60D4: .4byte gPlayerAvatar
+ thumb_func_end sub_80E6084
+
+ .align 2, 0 @ Don't pad with nop.