diff options
Diffstat (limited to 'asm/bike.s')
-rw-r--r-- | asm/bike.s | 2211 |
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. |