summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-28 18:04:45 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-28 18:04:45 -0400
commit781aa8949c1e7ea0b1ac2c7fa3ae36226e98c289 (patch)
tree08dd3b5e1da1b0495efb124955b569f6029842e4
parentf3a632156b5ccf591677f079fb7a41162d4167f3 (diff)
parentd8c9214e0a911882daf28dec07204de3c3c2df80 (diff)
Merge branch 'master' of github.com:pret/pokefirered into overworld
-rw-r--r--asm/bike.s897
-rw-r--r--data/bike.s33
-rw-r--r--include/bike.h28
-rw-r--r--include/field_camera.h1
-rw-r--r--include/field_player_avatar.h1
-rw-r--r--include/metatile_behavior.h2
-rw-r--r--ld_script.txt4
-rw-r--r--src/bike.c426
-rw-r--r--src/field_camera.c4
-rw-r--r--src/field_player_avatar.c2
-rw-r--r--src/metatile_behavior.c2
11 files changed, 461 insertions, 939 deletions
diff --git a/asm/bike.s b/asm/bike.s
deleted file mode 100644
index c8f65a03b..000000000
--- a/asm/bike.s
+++ /dev/null
@@ -1,897 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start MovePlayerOnBike
-MovePlayerOnBike: @ 80BD09C
- 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, _080BD0D0 @ =gUnknown_83E7CFC
- mov r0, sp
- bl sub_80BD0D4
- 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
-_080BD0D0: .4byte gUnknown_83E7CFC
- thumb_func_end MovePlayerOnBike
-
- thumb_func_start sub_80BD0D4
-sub_80BD0D4: @ 80BD0D4
- push {r4,lr}
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r4, _080BD0F8 @ =gUnknown_83E7D10
- ldr r3, _080BD0FC @ =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
-_080BD0F8: .4byte gUnknown_83E7D10
-_080BD0FC: .4byte gPlayerAvatar
- thumb_func_end sub_80BD0D4
-
- thumb_func_start sub_80BD100
-sub_80BD100: @ 80BD100
- 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 r9, r2
- ldr r5, _080BD15C @ =gPlayerAvatar
- ldrb r0, [r5, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _080BD160 @ =gObjectEvents
- adds r4, r0
- bl GetPlayerMovementDirection
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r8, r0
- mov r0, r8
- strb r0, [r5, 0xA]
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsCyclingRoadPullDownTile
- cmp r0, 0x1
- bne _080BD176
- ldr r0, _080BD164 @ =gMain
- ldrh r1, [r0, 0x2C]
- movs r2, 0x2
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080BD168
- strb r2, [r5, 0x8]
- strb r2, [r5, 0x2]
- ldrb r0, [r6]
- cmp r0, 0x1
- bhi _080BD172
- movs r0, 0x3
- b _080BD1B6
- .align 2, 0
-_080BD15C: .4byte gPlayerAvatar
-_080BD160: .4byte gObjectEvents
-_080BD164: .4byte gMain
-_080BD168:
- ldrb r0, [r6]
- cmp r0, 0
- beq _080BD17E
- strb r2, [r5, 0x8]
- strb r2, [r5, 0x2]
-_080BD172:
- movs r0, 0x4
- b _080BD1B6
-_080BD176:
- ldrb r1, [r6]
- adds r0, r1, 0
- cmp r0, 0
- bne _080BD18C
-_080BD17E:
- strb r7, [r6]
- ldr r1, _080BD188 @ =gPlayerAvatar
- movs r0, 0
- b _080BD1B4
- .align 2, 0
-_080BD188: .4byte gPlayerAvatar
-_080BD18C:
- cmp r0, r7
- beq _080BD1B0
- ldrb r0, [r5, 0x2]
- cmp r0, 0x2
- beq _080BD1B0
- movs r0, 0x1
- strb r0, [r5, 0x8]
- strb r1, [r5, 0x9]
- mov r0, r8
- strb r0, [r5, 0x2]
- adds r0, r6, 0
- mov r1, r10
- mov r2, r9
- bl sub_80BD0D4
- lsls r0, 24
- lsrs r0, 24
- b _080BD1B6
-_080BD1B0:
- ldr r1, _080BD1C4 @ =gPlayerAvatar
- movs r0, 0x2
-_080BD1B4:
- strb r0, [r1, 0x2]
-_080BD1B6:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080BD1C4: .4byte gPlayerAvatar
- thumb_func_end sub_80BD100
-
- thumb_func_start sub_80BD1C8
-sub_80BD1C8: @ 80BD1C8
- push {lr}
- ldr r2, _080BD1E4 @ =gPlayerAvatar
- ldrb r1, [r2, 0x9]
- strb r1, [r0]
- movs r1, 0
- movs r0, 0x1
- strb r0, [r2, 0x2]
- strb r1, [r2, 0x8]
- bl sub_80BD664
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_080BD1E4: .4byte gPlayerAvatar
- thumb_func_end sub_80BD1C8
-
- thumb_func_start sub_80BD1E8
-sub_80BD1E8: @ 80BD1E8
- 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 GetPlayerMovementDirection
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- ldr r4, _080BD240 @ =gPlayerAvatar
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BD244 @ =gObjectEvents
- adds r0, r1
- ldrb r0, [r0, 0x1E]
- bl MetatileBehavior_IsCyclingRoadPullDownTile
- adds r2, r0, 0
- cmp r2, 0x1
- bne _080BD25A
- ldrb r1, [r6]
- cmp r1, r5
- beq _080BD248
- movs r0, 0
- strb r2, [r4, 0x8]
- strb r1, [r4, 0x9]
- strb r0, [r4, 0x2]
- adds r0, r6, 0
- mov r1, r9
- mov r2, r8
- bl sub_80BD0D4
- lsls r0, 24
- lsrs r0, 24
- b _080BD270
- .align 2, 0
-_080BD240: .4byte gPlayerAvatar
-_080BD244: .4byte gObjectEvents
-_080BD248:
- movs r0, 0x2
- strb r0, [r4, 0x2]
- strb r0, [r4, 0x8]
- cmp r5, 0x1
- bhi _080BD256
- movs r0, 0x3
- b _080BD270
-_080BD256:
- movs r0, 0x4
- b _080BD270
-_080BD25A:
- movs r0, 0
- strb r0, [r4, 0x8]
- ldrb r0, [r6]
- cmp r0, 0
- beq _080BD26A
- movs r0, 0x2
- strb r0, [r4, 0x2]
- b _080BD270
-_080BD26A:
- strb r7, [r6]
- strb r0, [r4, 0x2]
- movs r0, 0
-_080BD270:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80BD1E8
-
- thumb_func_start sub_80BD27C
-sub_80BD27C: @ 80BD27C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl PlayerFaceDirection
- pop {r0}
- bx r0
- thumb_func_end sub_80BD27C
-
- thumb_func_start sub_80BD28C
-sub_80BD28C: @ 80BD28C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BD2C0 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BD2C4 @ =gObjectEvents
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80BD4F0
- lsls r0, 24
- cmp r0, 0
- bne _080BD2B2
- ldrb r0, [r5, 0x18]
- lsrs r4, r0, 4
-_080BD2B2:
- adds r0, r4, 0
- bl PlayerFaceDirection
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BD2C0: .4byte gPlayerAvatar
-_080BD2C4: .4byte gObjectEvents
- thumb_func_end sub_80BD28C
-
- thumb_func_start sub_80BD2C8
-sub_80BD2C8: @ 80BD2C8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- ldr r0, _080BD2F8 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BD2FC @ =gObjectEvents
- adds r5, r0, r1
- ldrb r1, [r5, 0x1E]
- adds r0, r4, 0
- bl sub_80BD4F0
- lsls r0, 24
- cmp r0, 0
- bne _080BD300
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- bl sub_80BD27C
- b _080BD350
- .align 2, 0
-_080BD2F8: .4byte gPlayerAvatar
-_080BD2FC: .4byte gObjectEvents
-_080BD300:
- adds r0, r4, 0
- bl sub_80BD3A0
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0xA
- bhi _080BD334
- cmp r1, 0x6
- bne _080BD322
- adds r0, r4, 0
- bl PlayerJumpLedge
- b _080BD350
-_080BD322:
- subs r0, r1, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _080BD350
- adds r0, r4, 0
- bl PlayerOnBikeCollide
- b _080BD350
-_080BD334:
- cmp r1, 0xE
- beq _080BD342
- adds r0, r4, 0
- bl PlayerIsMovingOnRockStairs
- cmp r0, 0
- beq _080BD34A
-_080BD342:
- adds r0, r4, 0
- bl PlayerGoSpeed2
- b _080BD350
-_080BD34A:
- adds r0, r6, 0
- bl PlayerRideWaterCurrent
-_080BD350:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BD2C8
-
- thumb_func_start sub_80BD358
-sub_80BD358: @ 80BD358
- push {lr}
- movs r0, 0x1
- bl sub_80BD3A0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080BD370
- movs r0, 0x1
- bl sub_805C164
- b _080BD37A
-_080BD370:
- cmp r0, 0x6
- bne _080BD37A
- movs r0, 0x1
- bl PlayerJumpLedge
-_080BD37A:
- pop {r0}
- bx r0
- thumb_func_end sub_80BD358
-
- thumb_func_start sub_80BD380
-sub_80BD380: @ 80BD380
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_80BD3A0
- lsls r0, 24
- cmp r0, 0
- bne _080BD398
- adds r0, r4, 0
- bl PlayerGoSpeed1
-_080BD398:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80BD380
-
- thumb_func_start sub_80BD3A0
-sub_80BD3A0: @ 80BD3A0
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _080BD404 @ =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _080BD408 @ =gObjectEvents
- 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_80BD40C
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080BD404: .4byte gPlayerAvatar
-_080BD408: .4byte gObjectEvents
- thumb_func_end sub_80BD3A0
-
- thumb_func_start sub_80BD40C
-sub_80BD40C: @ 80BD40C
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r4, [sp, 0x14]
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r5, r4, 24
- adds r6, r5, 0
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- str r5, [sp]
- bl CheckForObjectEventCollision
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bhi _080BD456
- adds r0, r5, 0
- bl MetatileBehavior_IsCrackedIce
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BD444
- movs r0, 0xE
- b _080BD458
-_080BD444:
- cmp r4, 0
- bne _080BD456
- adds r0, r6, 0
- bl sub_80BD4B8
- lsls r0, 24
- cmp r0, 0
- beq _080BD456
- movs r4, 0x2
-_080BD456:
- adds r0, r4, 0
-_080BD458:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80BD40C
-
- thumb_func_start sub_80BD460
-sub_80BD460: @ 80BD460
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80BD4B8
- lsls r0, 24
- cmp r0, 0
- bne _080BD478
- ldr r0, _080BD47C @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x8
- bne _080BD480
-_080BD478:
- movs r0, 0x1
- b _080BD482
- .align 2, 0
-_080BD47C: .4byte gMapHeader
-_080BD480:
- movs r0, 0
-_080BD482:
- pop {r1}
- bx r1
- thumb_func_end sub_80BD460
-
- thumb_func_start IsRunningDisallowed
-IsRunningDisallowed: @ 80BD488
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080BD4AC @ =gMapHeader
- ldrb r1, [r0, 0x19]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BD4A8
- adds r0, r2, 0
- bl sub_80BD4B8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BD4B0
-_080BD4A8:
- movs r0, 0x1
- b _080BD4B2
- .align 2, 0
-_080BD4AC: .4byte gMapHeader
-_080BD4B0:
- movs r0, 0
-_080BD4B2:
- pop {r1}
- bx r1
- thumb_func_end IsRunningDisallowed
-
- thumb_func_start sub_80BD4B8
-sub_80BD4B8: @ 80BD4B8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsMB0A
- lsls r0, 24
- cmp r0, 0
- bne _080BD4E2
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_9
- lsls r0, 24
- cmp r0, 0
- beq _080BD4E6
- bl PlayerGetZCoord
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _080BD4E6
-_080BD4E2:
- movs r0, 0x1
- b _080BD4E8
-_080BD4E6:
- movs r0, 0
-_080BD4E8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BD4B8
-
- thumb_func_start sub_80BD4F0
-sub_80BD4F0: @ 80BD4F0
- 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 _080BD51A
- adds r0, r4, 0
- bl MetatileBehavior_IsIsolatedVerticalRail
- lsls r0, 24
- cmp r0, 0
- bne _080BD532
- adds r0, r4, 0
- bl MetatileBehavior_IsVerticalRail
- b _080BD52C
-_080BD51A:
- adds r0, r5, 0
- bl MetatileBehavior_IsIsolatedHorizontalRail
- lsls r0, 24
- cmp r0, 0
- bne _080BD532
- adds r0, r5, 0
- bl MetatileBehavior_IsHorizontalRail
-_080BD52C:
- lsls r0, 24
- cmp r0, 0
- beq _080BD536
-_080BD532:
- movs r0, 0
- b _080BD538
-_080BD536:
- movs r0, 0x1
-_080BD538:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80BD4F0
-
- thumb_func_start sub_80BD540
-sub_80BD540: @ 80BD540
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080BD57C @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- bne _080BD580
- 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 sub_80BD4B8
- lsls r0, 24
- cmp r0, 0
- bne _080BD580
- movs r0, 0
- b _080BD582
- .align 2, 0
-_080BD57C: .4byte gPlayerAvatar
-_080BD580:
- movs r0, 0x1
-_080BD582:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BD540
-
- thumb_func_start player_should_look_direction_be_enforced_upon_movement
-player_should_look_direction_be_enforced_upon_movement: @ 80BD58C
- push {lr}
- movs r0, 0x4
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _080BD5C0
- ldr r2, _080BD5B8 @ =gObjectEvents
- ldr r0, _080BD5BC @ =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 _080BD5C0
- movs r0, 0
- b _080BD5C2
- .align 2, 0
-_080BD5B8: .4byte gObjectEvents
-_080BD5BC: .4byte gPlayerAvatar
-_080BD5C0:
- movs r0, 0x1
-_080BD5C2:
- pop {r1}
- bx r1
- thumb_func_end player_should_look_direction_be_enforced_upon_movement
-
- thumb_func_start StartTransitionToFlipBikeState
-StartTransitionToFlipBikeState: @ 80BD5C8
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080BD5F0 @ =gUnusedBikeCameraAheadPanback
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080BD5F4 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _080BD5F8
- movs r0, 0x1
- bl SetPlayerAvatarTransitionFlags
- bl Overworld_ClearSavedMusic
- bl Overworld_PlaySpecialMapMusic
- b _080BD618
- .align 2, 0
-_080BD5F0: .4byte gUnusedBikeCameraAheadPanback
-_080BD5F4: .4byte gPlayerAvatar
-_080BD5F8:
- adds r0, r2, 0
- bl SetPlayerAvatarTransitionFlags
- movs r4, 0x8D @ MUS_CYCLING
- lsls r4, 1 @ MUS_CYCLING
- adds r0, r4, 0
- bl sub_8056124
- cmp r0, 0
- beq _080BD618
- adds r0, r4, 0
- bl Overworld_SetSavedMusic
- adds r0, r4, 0
- bl Overworld_ChangeMusicTo
-_080BD618:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end StartTransitionToFlipBikeState
-
- thumb_func_start sub_80BD620
-sub_80BD620: @ 80BD620
- push {lr}
- ldr r2, _080BD64C @ =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]
- strh r3, [r2, 0x1C]
- movs r1, 0
- adds r2, 0x14
-_080BD638:
- adds r0, r1, r2
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x7
- bls _080BD638
- pop {r0}
- bx r0
- .align 2, 0
-_080BD64C: .4byte gPlayerAvatar
- thumb_func_end sub_80BD620
-
- thumb_func_start Bike_UpdateBikeCounterSpeed
-Bike_UpdateBikeCounterSpeed: @ 80BD650
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BD660 @ =gPlayerAvatar
- strb r0, [r2, 0xA]
- lsrs r1, r0, 1
- adds r0, r1
- strb r0, [r2, 0xB]
- bx lr
- .align 2, 0
-_080BD660: .4byte gPlayerAvatar
- thumb_func_end Bike_UpdateBikeCounterSpeed
-
- thumb_func_start sub_80BD664
-sub_80BD664: @ 80BD664
- ldr r1, _080BD670 @ =gPlayerAvatar
- movs r0, 0
- strb r0, [r1, 0xA]
- strb r0, [r1, 0xB]
- bx lr
- .align 2, 0
-_080BD670: .4byte gPlayerAvatar
- thumb_func_end sub_80BD664
-
- thumb_func_start GetPlayerSpeed
-GetPlayerSpeed: @ 80BD674
- push {lr}
- sub sp, 0x8
- ldr r1, _080BD69C @ =gUnknown_83E7D1C
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- ldr r2, _080BD6A0 @ =gPlayerAvatar
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BD6A4
- ldrb r0, [r2, 0xA]
- lsls r0, 1
- add r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- b _080BD6BE
- .align 2, 0
-_080BD69C: .4byte gUnknown_83E7D1C
-_080BD6A0: .4byte gPlayerAvatar
-_080BD6A4:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080BD6B0
- movs r0, 0x3
- b _080BD6BE
-_080BD6B0:
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- bne _080BD6BC
- movs r0, 0x1
- b _080BD6BE
-_080BD6BC:
- movs r0, 0x2
-_080BD6BE:
- add sp, 0x8
- pop {r1}
- bx r1
- thumb_func_end GetPlayerSpeed
-
- thumb_func_start Bike_HandleBumpySlopeJump
-Bike_HandleBumpySlopeJump: @ 80BD6C4
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _080BD714 @ =gPlayerAvatar
- ldrb r1, [r5]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080BD70C
- 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 _080BD70C
- movs r0, 0x2
- strb r0, [r5, 0x8]
- bl GetPlayerMovementDirection
- lsls r0, 24
- lsrs r0, 24
- bl nullsub_24
-_080BD70C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BD714: .4byte gPlayerAvatar
- thumb_func_end Bike_HandleBumpySlopeJump
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/bike.s b/data/bike.s
deleted file mode 100644
index 0245f0206..000000000
--- a/data/bike.s
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "constants/maps.h"
-#include "constants/species.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnknown_83E7CFC:: @ 83E7CFC
- .4byte sub_80BD27C
- .4byte sub_80BD28C
- .4byte sub_80BD2C8
- .4byte sub_80BD358
- .4byte sub_80BD380
-
-gUnknown_83E7D10:: @ 83E7D10
- .4byte sub_80BD100
- .4byte sub_80BD1C8
- .4byte sub_80BD1E8
-
-gUnknown_83E7D1C:: @ 83E7D1C
- .2byte 0x0001, 0x0002, 0x0004
-
-gUnknown_83E7D22::
- .byte 4
-
- .align 2
-gUnknown_83E7D24::
- .4byte 1, 2, 15, 15, gUnknown_83E7D22, gUnknown_83E7D22, 1
- .4byte 2, 2, 15, 15, gUnknown_83E7D22, gUnknown_83E7D22, 2
- .4byte 3, 2, 15, 15, gUnknown_83E7D22, gUnknown_83E7D22, 3
- .4byte 4, 2, 15, 15, gUnknown_83E7D22, gUnknown_83E7D22, 4
-
diff --git a/include/bike.h b/include/bike.h
index ad2bd999a..abffae435 100644
--- a/include/bike.h
+++ b/include/bike.h
@@ -1,11 +1,35 @@
#ifndef GUARD_BIKE_H
#define GUARD_BIKE_H
-void sub_80BD620(u32 unkC, u32 unk10);
+// TODO: Do the constants make sense in FRLG?
+
+// Player speeds
+enum
+{
+ SPEED_STANDING,
+ SPEED_NORMAL,
+ SPEED_FAST,
+ SPEED_FASTER,
+ SPEED_FASTEST,
+};
+
+// Acro bike states
+enum
+{
+ ACRO_STATE_NORMAL,
+ ACRO_STATE_TURNING,
+ ACRO_STATE_WHEELIE_STANDING,
+ ACRO_STATE_BUNNY_HOP,
+ ACRO_STATE_WHEELIE_MOVING,
+ ACRO_STATE_SIDE_JUMP,
+ ACRO_STATE_TURN_JUMP,
+};
+
+void sub_80BD620(u32 directionHistory, u32 abStartSelectHistory);
bool8 sub_80BD540(void);
void StartTransitionToFlipBikeState(u8 flags);
s16 GetPlayerSpeed(void);
-
+bool8 sub_80BD460(u8);
void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys);
bool32 IsRunningDisallowed(u8 metatileBehavior);
void Bike_HandleBumpySlopeJump(void);
diff --git a/include/field_camera.h b/include/field_camera.h
index 9a76e6bfc..a3275eb9d 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -20,6 +20,7 @@ struct CameraObject
extern struct CameraObject gFieldCamera;
extern u16 gTotalCameraPixelOffsetX;
extern u16 gTotalCameraPixelOffsetY;
+extern bool8 gBikeCameraAheadPanback;
// Exported ROM declarations
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 56e821fbd..2dc8aab84 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -61,5 +61,6 @@ void player_step(u8 direction, u16 newKeys, u16 heldKeys);
bool32 PlayerIsMovingOnRockStairs(u8 direction);
void sub_805BEB8(void);
void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender);
+void nullsub_24(u8 direction);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index 899586e0f..793eeb8a1 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -96,7 +96,7 @@ bool8 MetatileBehavior_IsUnionRoomWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsWater(u8 metatileBehavior);
bool8 MetatileBehavior_IsFallWarp(u8 metatileBehavior);
bool8 MetatileBehavior_ReturnFalse_13(u8 metatileBehavior);
-bool8 MetatileBehavior_IsCyclingRoadPullDownTile(u8 metatileBehavior);
+bool32 MetatileBehavior_IsCyclingRoadPullDownTile(u8 metatileBehavior);
bool8 MetatileBehavior_IsCyclingRoadPullDownTileGrass(u8 metatileBehavior);
bool8 MetatileBehavior_IsBumpySlope(u8 metatileBehavior);
bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 metatileBehavior);
diff --git a/ld_script.txt b/ld_script.txt
index a91dd536d..122de0d53 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -180,7 +180,7 @@ SECTIONS {
src/normal.o(.text);
src/battle_anim_utility_funcs.o(.text);
src/battle_intro.o(.text);
- asm/bike.o(.text);
+ src/bike.o(.text);
src/easy_chat.o(.text);
src/mon_markings.o(.text);
src/mail.o(.text);
@@ -499,7 +499,7 @@ SECTIONS {
src/normal.o(.rodata);
src/battle_anim_utility_funcs.o(.rodata);
src/battle_intro.o(.rodata);
- data/bike.o(.rodata);
+ src/bike.o(.rodata);
src/easy_chat.o(.rodata);
src/mon_markings.o(.rodata);
src/mail.o(.rodata);
diff --git a/src/bike.c b/src/bike.c
new file mode 100644
index 000000000..5ec44ec7a
--- /dev/null
+++ b/src/bike.c
@@ -0,0 +1,426 @@
+#include "global.h"
+#include "bike.h"
+#include "field_player_avatar.h"
+#include "metatile_behavior.h"
+#include "event_object_movement.h"
+#include "fieldmap.h"
+#include "field_camera.h"
+#include "overworld.h"
+#include "constants/map_types.h"
+#include "constants/songs.h"
+
+static u8 sub_80BD0D4(u8 *, u16, u16);
+static void sub_80BD664(void);
+static u8 sub_80BD4F0(u8, u8);
+static u8 sub_80BD3A0(u8);
+static u8 sub_80BD40C(struct ObjectEvent *, s16, s16, u8, u8);
+static bool8 sub_80BD4B8(u8);
+static void sub_80BD27C(u8);
+static void sub_80BD28C(u8);
+static void sub_80BD2C8(u8);
+static void sub_80BD358(u8);
+static void sub_80BD380(u8);
+static u8 sub_80BD100(u8 *, u16, u16);
+static u8 sub_80BD1C8(u8 *, u16, u16);
+static u8 sub_80BD1E8(u8 *, u16, u16);
+
+static void (*const gUnknown_83E7CFC[])(u8) =
+{
+ sub_80BD27C,
+ sub_80BD28C,
+ sub_80BD2C8,
+ sub_80BD358,
+ sub_80BD380,
+};
+
+static u8 (*const gUnknown_83E7D10[])(u8 *, u16, u16) =
+{
+ sub_80BD100,
+ sub_80BD1C8,
+ sub_80BD1E8,
+};
+
+void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys)
+{
+ gUnknown_83E7CFC[sub_80BD0D4(&direction, newKeys, heldKeys)](direction);
+}
+
+static u8 sub_80BD0D4(u8 *direction, u16 newKeys, u16 heldKeys)
+{
+ return gUnknown_83E7D10[gPlayerAvatar.acroBikeState](direction, newKeys, heldKeys);
+}
+
+static u8 sub_80BD100(u8 *r6, u16 sl, u16 sb)
+{
+ struct ObjectEvent *r4 = &gObjectEvents[gPlayerAvatar.objectEventId];
+ u8 r7 = GetPlayerMovementDirection();
+
+ gPlayerAvatar.bikeFrameCounter = 0;
+ if (MetatileBehavior_IsCyclingRoadPullDownTile(r4->currentMetatileBehavior) == TRUE)
+ {
+ if (!JOY_HELD(B_BUTTON))
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ gPlayerAvatar.runningState = 2;
+ if (*r6 < 2)
+ return 3;
+ else
+ return 4;
+ }
+ else
+ {
+ if (*r6 != 0)
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ gPlayerAvatar.runningState = 2;
+ return 4;
+ }
+ else
+ {
+ goto _080BD17E; // for matching purpose
+ }
+ }
+ }
+ else
+ {
+ if (*r6 == 0)
+ {
+ _080BD17E:
+ *r6 = r7;
+ gPlayerAvatar.runningState = 0;
+ return 0;
+ }
+ else
+ {
+ if (*r6 != r7 && gPlayerAvatar.runningState != 2)
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_TURNING;
+ gPlayerAvatar.newDirBackup = *r6;
+ gPlayerAvatar.runningState = 0;
+ return sub_80BD0D4(r6, sl, sb);
+ }
+ else
+ {
+ gPlayerAvatar.runningState = 2;
+ return 2;
+ }
+ }
+ }
+}
+
+static u8 sub_80BD1C8(u8 *r0, UNUSED u16 r1, UNUSED u16 r2)
+{
+ *r0 = gPlayerAvatar.newDirBackup;
+ gPlayerAvatar.runningState = 1;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ sub_80BD664();
+ return 1;
+}
+
+static u8 sub_80BD1E8(u8 *r6, u16 sb, u16 r8)
+{
+ u8 r5 = GetPlayerMovementDirection();
+ u8 r1 = gPlayerAvatar.objectEventId;
+ if (MetatileBehavior_IsCyclingRoadPullDownTile(r1[gObjectEvents].currentMetatileBehavior) == TRUE)
+ {
+ if (*r6 != r5)
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_TURNING;
+ gPlayerAvatar.newDirBackup = *r6;
+ gPlayerAvatar.runningState = 0;
+ return sub_80BD0D4(r6, sb, r8);
+ }
+ else
+ {
+ gPlayerAvatar.runningState = 2;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ if (*r6 < 2)
+ return 3;
+ else
+ return 4;
+ }
+ }
+ else
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ if (*r6 == 0)
+ {
+ *r6 = r5;
+ gPlayerAvatar.runningState = 0;
+ return 0;
+ }
+ else
+ {
+ gPlayerAvatar.runningState = 2;
+ return 2;
+ }
+ }
+}
+
+static void sub_80BD27C(u8 r0)
+{
+ PlayerFaceDirection(r0);
+}
+
+static void sub_80BD28C(u8 r4)
+{
+ struct ObjectEvent *r5 = &gObjectEvents[gPlayerAvatar.objectEventId];
+
+ if (!sub_80BD4F0(r4, r5->currentMetatileBehavior))
+ r4 = r5->movementDirection;
+ PlayerFaceDirection(r4);
+}
+
+static void sub_80BD2C8(u8 r4)
+{
+ struct ObjectEvent *r5;
+
+ r5 = &gObjectEvents[gPlayerAvatar.objectEventId];
+ if (!sub_80BD4F0(r4, r5->currentMetatileBehavior))
+ {
+ sub_80BD27C(r5->movementDirection);
+ }
+ else
+ {
+ u8 r1 = sub_80BD3A0(r4);
+
+ if (r1 > 0 && r1 <= 11)
+ {
+ if (r1 == 6)
+ PlayerJumpLedge(r4);
+ else if (r1 != 5 && r1 != 6 && r1 != 7 && r1 != 8)
+ PlayerOnBikeCollide(r4);
+ }
+ else
+ {
+
+ if (r1 == 14)
+ PlayerGoSpeed2(r4);
+ else if (PlayerIsMovingOnRockStairs(r4))
+ PlayerGoSpeed2(r4);
+ else
+ PlayerRideWaterCurrent(r4);
+ }
+ }
+}
+
+static void sub_80BD358(UNUSED u8 v)
+{
+ u8 r0 = sub_80BD3A0(1);
+
+ if (r0 == 0)
+ sub_805C164(1);
+ else if (r0 == 6)
+ PlayerJumpLedge(1);
+}
+
+static void sub_80BD380(u8 r4)
+{
+ if (sub_80BD3A0(r4) == 0)
+ PlayerGoSpeed1(r4);
+}
+
+static u8 sub_80BD3A0(u8 r6)
+{
+ struct ObjectEvent *r4 = &gObjectEvents[gPlayerAvatar.objectEventId];
+ s16 sp04, sp06;
+ u8 r0;
+
+ sp04 = r4->currentCoords.x;
+ sp06 = r4->currentCoords.y;
+ MoveCoords(r6, &sp04, &sp06);
+ r0 = MapGridGetMetatileBehaviorAt(sp04, sp06);
+ return sub_80BD40C(r4, sp04, sp06, r6, r0);
+}
+
+static u8 sub_80BD40C(struct ObjectEvent *r0, s16 r1, s16 r2, u8 r3, u8 r5)
+{
+ u8 r4 = CheckForObjectEventCollision(r0, r1, r2, r3, r5);
+
+ if (r4 <= 4)
+ {
+ u8 r0 = MetatileBehavior_IsCrackedIce(r5);
+ if (r0 == TRUE)
+ return 14;
+ if (r4 == 0 && sub_80BD4B8(r5))
+ r4 = 2;
+ }
+ return r4;
+}
+
+bool8 sub_80BD460(u8 r0)
+{
+ if (sub_80BD4B8(r0))
+ return TRUE;
+ if (gMapHeader.mapType != MAP_TYPE_INDOOR)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool32 IsRunningDisallowed(u8 metatileBehavior)
+{
+ if (!(gMapHeader.escapeRope & 2)) // wrong name? probably a bitfield.
+ return TRUE;
+ if (sub_80BD4B8(metatileBehavior) != TRUE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static bool8 sub_80BD4B8(u8 r4)
+{
+ if (MetatileBehavior_IsMB0A(r4))
+ return TRUE;
+ if (!MetatileBehavior_ReturnFalse_9(r4))
+ return FALSE;
+ if (PlayerGetZCoord() & 1)
+ return FALSE;
+ return TRUE;
+}
+
+static bool8 sub_80BD4F0(u8 r0, u8 r4)
+{
+ if (r0 == DIR_EAST || r0 == DIR_WEST)
+ {
+ if (MetatileBehavior_IsIsolatedVerticalRail(r4) || MetatileBehavior_IsVerticalRail(r4))
+ return FALSE;
+ }
+ else
+ {
+ if (MetatileBehavior_IsIsolatedHorizontalRail(r4) || MetatileBehavior_IsHorizontalRail(r4))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_80BD540(void)
+{
+ s16 sp00, sp02;
+ u8 r0;
+
+ if (!(gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_UNDERWATER | PLAYER_AVATAR_FLAG_SURFING)))
+ {
+ PlayerGetDestCoords(&sp00, &sp02);
+ r0 = MapGridGetMetatileBehaviorAt(sp00, sp02);
+ if (!sub_80BD4B8(r0))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 player_should_look_direction_be_enforced_upon_movement(void)
+{
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_STATE_UNDERWATER))
+ {
+ if (MetatileBehavior_IsBumpySlope(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void StartTransitionToFlipBikeState(u8 flags)
+{
+ gBikeCameraAheadPanback = FALSE;
+ if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
+ {
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
+ Overworld_ClearSavedMusic();
+ Overworld_PlaySpecialMapMusic();
+ }
+ else
+ {
+ SetPlayerAvatarTransitionFlags(flags);
+ if (sub_8056124(MUS_CYCLING))
+ {
+ Overworld_SetSavedMusic(MUS_CYCLING);
+ Overworld_ChangeMusicTo(MUS_CYCLING);
+ }
+ }
+}
+
+void sub_80BD620(u32 directionHistory, u32 abStartSelectHistory)
+{
+ u8 i;
+
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ gPlayerAvatar.newDirBackup = 0;
+ gPlayerAvatar.bikeFrameCounter = 0;
+ gPlayerAvatar.bikeSpeed = SPEED_STANDING;
+ gPlayerAvatar.directionHistory = directionHistory;
+ gPlayerAvatar.abStartSelectHistory = abStartSelectHistory;
+ gPlayerAvatar.lastSpinTile = 0;
+ for (i = 0; i < NELEMS(gPlayerAvatar.dirTimerHistory); ++i)
+ gPlayerAvatar.dirTimerHistory[i] = 0;
+}
+
+void Bike_UpdateBikeCounterSpeed(u8 counter)
+{
+ gPlayerAvatar.bikeFrameCounter = counter;
+ gPlayerAvatar.bikeSpeed = counter + (gPlayerAvatar.bikeFrameCounter >> 1);
+}
+
+static void sub_80BD664(void)
+{
+ gPlayerAvatar.bikeFrameCounter = 0;
+ gPlayerAvatar.bikeSpeed = SPEED_STANDING;
+}
+
+s16 GetPlayerSpeed(void)
+{
+ s16 exp[] = { 1, 2, 4 };
+
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
+ return exp[gPlayerAvatar.bikeFrameCounter];
+ else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ return 3;
+ else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_WATERING))
+ return 2;
+ else
+ return 1;
+}
+
+void Bike_HandleBumpySlopeJump(void)
+{
+ s16 x, y;
+ u8 tileBehavior;
+
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ {
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsBumpySlope(tileBehavior))
+ {
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ nullsub_24(GetPlayerMovementDirection());
+ }
+ }
+}
+
+// R/S leftover
+
+// the struct below is used for checking button combinations of the last input so that the acro can potentially perform a side/turn jump.
+// its possible that at some point Game Freak intended for the acro bike to have more complex tricks: but only the acro jump combinations can be seen in the final ROM.
+struct BikeHistoryInputInfo
+{
+ u32 dirHistoryMatch; // the direction you need to press
+ u32 abStartSelectHistoryMatch; // the button you need to press
+ u32 dirHistoryMask; // mask applied so that way only the recent nybble (the recent input) is checked
+ u32 abStartSelectHistoryMask; // mask applied so that way only the recent nybble (the recent input) is checked
+ const u8 *dirTimerHistoryList; // list of timers to check for direction before the button+dir combination can be verified.
+ const u8 *abStartSelectHistoryList; // list of timers to check for buttons before the button+dir combination can be verified.
+ u32 direction; // direction to jump
+};
+
+// this is a list of timers to compare against later, terminated with 0. the only timer being compared against is 4 frames in this list.
+static const u8 sAcroBikeJumpTimerList[] = {4, 0};
+
+// this is a list of history inputs to do in order to do the check to retrieve a jump direction for acro bike. it seems to be an extensible list, so its possible that Game Freak may have intended for the Acro Bike to have more complex tricks at some point. The final list only has the acro jump.
+static const struct BikeHistoryInputInfo sAcroBikeTricksList[] =
+{
+ // the 0xF is a mask performed with each byte of the array in order to perform the check on only the last entry of the history list, otherwise the check wouldn't work as there can be 0xF0 as opposed to 0x0F.
+ {DIR_SOUTH, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_SOUTH},
+ {DIR_NORTH, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_NORTH},
+ {DIR_WEST, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_WEST},
+ {DIR_EAST, B_BUTTON, 0xF, 0xF, sAcroBikeJumpTimerList, sAcroBikeJumpTimerList, DIR_EAST},
+};
diff --git a/src/field_camera.c b/src/field_camera.c
index 40ab8f464..f383b2a27 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -7,7 +7,7 @@
#include "new_menu_helpers.h"
#include "overworld.h"
-EWRAM_DATA bool8 gUnusedBikeCameraAheadPanback = FALSE;
+EWRAM_DATA bool8 gBikeCameraAheadPanback = FALSE;
// Static type declarations
struct FieldCameraOffset
@@ -531,7 +531,7 @@ static void CameraPanningCB_PanAhead(void)
{
u8 var;
- if (gUnusedBikeCameraAheadPanback == FALSE)
+ if (gBikeCameraAheadPanback == FALSE)
{
InstallCameraPanAheadCallback();
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 481e55578..0bc4910eb 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1350,7 +1350,7 @@ void sub_805CC2C(u8 direction)
sub_8150498(2);
}
-void nullsub_24(void)
+void nullsub_24(u8 direction)
{
}
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index cbbc37ba1..77c839b89 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -664,7 +664,7 @@ bool8 MetatileBehavior_IsFallWarp(u8 metatileBehavior)
bool8 MetatileBehavior_ReturnFalse_13(u8 metatileBehavior){ return FALSE; }
-bool8 MetatileBehavior_IsCyclingRoadPullDownTile(u8 metatileBehavior)
+bool32 MetatileBehavior_IsCyclingRoadPullDownTile(u8 metatileBehavior)
{
if(metatileBehavior >= MB_CYCLING_ROAD_PULL_DOWN && metatileBehavior <= MB_CYCLING_ROAD_PULL_DOWN_GRASS)
return TRUE;