summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-03-23 22:42:36 -0400
committerGriffinR <griffin.g.richards@gmail.com>2020-03-23 22:42:36 -0400
commit68e942065aa0c5ba9783437fcd96d9b0739d31ef (patch)
tree30d7ed0dfccd4b9bfb4646a961e51336341e6513
parentb607821bf693e49612afd3580d13e9734f13c5a1 (diff)
Move movement type func tables to src
-rw-r--r--data/event_object_movement.s549
-rw-r--r--src/data/object_events/movement_type_func_tables.h614
-rw-r--r--src/event_object_movement.c2
3 files changed, 616 insertions, 549 deletions
diff --git a/data/event_object_movement.s b/data/event_object_movement.s
index 84277cc03..69d135ef2 100644
--- a/data/event_object_movement.s
+++ b/data/event_object_movement.s
@@ -7117,552 +7117,3 @@ gMovementDelaysShort:: @ 83A6010
.2byte 0x0030
.2byte 0x0040
.2byte 0x0050
-
-gMovementTypeFuncs_WanderAround:: @ 83A6018
- .4byte MovementType_WanderAround_Step0
- .4byte MovementType_WanderAround_Step1
- .4byte MovementType_WanderAround_Step2
- .4byte MovementType_WanderAround_Step3
- .4byte MovementType_WanderAround_Step4
- .4byte MovementType_WanderAround_Step5
- .4byte MovementType_WanderAround_Step6
-
-gMovementTypeFuncs_WanderAroundDuplicate:: @ 83A6034
- .4byte MovementType_WanderAround_Step0
- .4byte MovementType_WanderAround_Step1
- .4byte MovementType_WanderAround_Step2
- .4byte MovementType_WanderAround_Step3
- .4byte MovementType_WanderAround_Step4
- .4byte MovementType_WanderAround_Step5Duplicate
- .4byte MovementType_WanderAround_Step6
-
-gStandardDirections:: @ 83A6050
- .byte 1 @ DIR_SOUTH
- .byte 2 @ DIR_NORTH
- .byte 3 @ DIR_WEST
- .byte 4 @ DIR_EAST
-
-gGetVectorDirectionFuncs:: @ 83A6054
- .4byte GetVectorDirection
- .4byte GetLimitedVectorDirection_SouthNorth
- .4byte GetLimitedVectorDirection_WestEast
- .4byte GetLimitedVectorDirection_WestNorth
- .4byte GetLimitedVectorDirection_EastNorth
- .4byte GetLimitedVectorDirection_WestSouth
- .4byte GetLimitedVectorDirection_EastSouth
- .4byte GetLimitedVectorDirection_SouthNorthWest
- .4byte GetLimitedVectorDirection_SouthNorthEast
- .4byte GetLimitedVectorDirection_NorthWestEast
- .4byte GetLimitedVectorDirection_SouthWestEast
-
-gMovementTypeFuncs_LookAround:: @ 83A6080
- .4byte MovementType_LookAround_Step0
- .4byte MovementType_LookAround_Step1
- .4byte MovementType_LookAround_Step2
- .4byte MovementType_LookAround_Step3
- .4byte MovementType_LookAround_Step4
-
-gMovementTypeFuncs_WanderUpAndDown:: @ 83A6094
- .4byte MovementType_WanderUpAndDown_Step0
- .4byte MovementType_WanderUpAndDown_Step1
- .4byte MovementType_WanderUpAndDown_Step2
- .4byte MovementType_WanderUpAndDown_Step3
- .4byte MovementType_WanderUpAndDown_Step4
- .4byte MovementType_WanderUpAndDown_Step5
- .4byte MovementType_WanderUpAndDown_Step6
-
-gUpAndDownDirections:: @ 83A60B0
- .byte 1 @ DIR_SOUTH
- .byte 2 @ DIR_NORTH
- .byte 0 @ DIR_NONE
- .byte 0 @ DIR_NONE
-
-gMovementTypeFuncs_WanderLeftAndRight:: @ 83A60B4
- .4byte MovementType_WanderLeftAndRight_Step0
- .4byte MovementType_WanderLeftAndRight_Step1
- .4byte MovementType_WanderLeftAndRight_Step2
- .4byte MovementType_WanderLeftAndRight_Step3
- .4byte MovementType_WanderLeftAndRight_Step4
- .4byte MovementType_WanderLeftAndRight_Step5
- .4byte MovementType_WanderLeftAndRight_Step6
-
-gLeftAndRightDirections:: @ 83A60D0
- .byte 3 @ DIR_WEST
- .byte 4 @ DIR_EAST
- .byte 0 @ DIR_NONE
- .byte 0 @ DIR_NONE
-
-gMovementTypeFuncs_FaceDirection:: @ 83A60D4
- .4byte MovementType_FaceDirection_Step0
- .4byte MovementType_FaceDirection_Step1
- .4byte MovementType_FaceDirection_Step2
-
-gMovementTypeFuncs_FaceDownAndUp:: @ 83A60E0
- .4byte MovementType_FaceDownAndUp_Step0
- .4byte MovementType_FaceDownAndUp_Step1
- .4byte MovementType_FaceDownAndUp_Step2
- .4byte MovementType_FaceDownAndUp_Step3
- .4byte MovementType_FaceDownAndUp_Step4
-
-gMovementTypeFuncs_FaceLeftAndRight:: @ 83A60F4
- .4byte MovementType_FaceLeftAndRight_Step0
- .4byte MovementType_FaceLeftAndRight_Step1
- .4byte MovementType_FaceLeftAndRight_Step2
- .4byte MovementType_FaceLeftAndRight_Step3
- .4byte MovementType_FaceLeftAndRight_Step4
-
-gMovementTypeFuncs_FaceUpAndLeft:: @ 83A6108
- .4byte MovementType_FaceUpAndLeft_Step0
- .4byte MovementType_FaceUpAndLeft_Step1
- .4byte MovementType_FaceUpAndLeft_Step2
- .4byte MovementType_FaceUpAndLeft_Step3
- .4byte MovementType_FaceUpAndLeft_Step4
-
-gUpAndLeftDirections:: @ 83A611C
- .byte 2 @ DIR_NORTH
- .byte 3 @ DIR_WEST
- .byte 0 @ DIR_NONE
- .byte 0 @ DIR_NONE
-
-gMovementTypeFuncs_FaceUpAndRight:: @ 83A6120
- .4byte MovementType_FaceUpAndRight_Step0
- .4byte MovementType_FaceUpAndRight_Step1
- .4byte MovementType_FaceUpAndRight_Step2
- .4byte MovementType_FaceUpAndRight_Step3
- .4byte MovementType_FaceUpAndRight_Step4
-
-gUpAndRightDirections:: @ 83A6134
- .byte 2 @ DIR_NORTH
- .byte 4 @ DIR_EAST
- .byte 0 @ DIR_NONE
- .byte 0 @ DIR_NONE
-
-gMovementTypeFuncs_FaceDownAndLeft:: @ 83A6138
- .4byte MovementType_FaceDownAndLeft_Step0
- .4byte MovementType_FaceDownAndLeft_Step1
- .4byte MovementType_FaceDownAndLeft_Step2
- .4byte MovementType_FaceDownAndLeft_Step3
- .4byte MovementType_FaceDownAndLeft_Step4
-
-gDownAndLeftDirections:: @ 83A614C
- .byte 1 @ DIR_SOUTH
- .byte 3 @ DIR_WEST
- .byte 0 @ DIR_NONE
- .byte 0 @ DIR_NONE
-
-gMovementTypeFuncs_FaceDownAndRight:: @ 83A6150
- .4byte MovementType_FaceDownAndRight_Step0
- .4byte MovementType_FaceDownAndRight_Step1
- .4byte MovementType_FaceDownAndRight_Step2
- .4byte MovementType_FaceDownAndRight_Step3
- .4byte MovementType_FaceDownAndRight_Step4
-
-gDownAndRightDirections:: @ 83A6164
- .byte 1 @ DIR_SOUTH
- .byte 4 @ DIR_EAST
- .byte 0 @ DIR_NONE
- .byte 0 @ DIR_NONE
-
-gMovementTypeFuncs_FaceDownUpAndLeft:: @ 83A6168
- .4byte MovementType_FaceDownUpAndLeft_Step0
- .4byte MovementType_FaceDownUpAndLeft_Step1
- .4byte MovementType_FaceDownUpAndLeft_Step2
- .4byte MovementType_FaceDownUpAndLeft_Step3
- .4byte MovementType_FaceDownUpAndLeft_Step4
-
-gDownUpAndLeftDirections:: @ 83A617C
- .byte 2 @ DIR_NORTH
- .byte 1 @ DIR_SOUTH
- .byte 3 @ DIR_WEST
- .byte 1 @ DIR_SOUTH
-
-gMovementTypeFuncs_FaceDownUpAndRight:: @ 83A6180
- .4byte MovementType_FaceDownUpAndRight_Step0
- .4byte MovementType_FaceDownUpAndRight_Step1
- .4byte MovementType_FaceDownUpAndRight_Step2
- .4byte MovementType_FaceDownUpAndRight_Step3
- .4byte MovementType_FaceDownUpAndRight_Step4
-
-gDownUpAndRightDirections:: @ 83A6194
- .byte 1 @ DIR_SOUTH
- .byte 2 @ DIR_NORTH
- .byte 4 @ DIR_EAST
- .byte 1 @ DIR_SOUTH
-
-gMovementTypeFuncs_FaceUpLeftAndRight:: @ 83A6198
- .4byte MovementType_FaceUpLeftAndRight_Step0
- .4byte MovementType_FaceUpLeftAndRight_Step1
- .4byte MovementType_FaceUpLeftAndRight_Step2
- .4byte MovementType_FaceUpLeftAndRight_Step3
- .4byte MovementType_FaceUpLeftAndRight_Step4
-
-gUpLeftAndRightDirections:: @ 83A61AC
- .byte 2 @ DIR_NORTH
- .byte 3 @ DIR_WEST
- .byte 4 @ DIR_EAST
- .byte 2 @ DIR_NORTH
-
-gMovementTypeFuncs_FaceDownLeftAndRight:: @ 83A61B0
- .4byte MovementType_FaceDownLeftAndRight_Step0
- .4byte MovementType_FaceDownLeftAndRight_Step1
- .4byte MovementType_FaceDownLeftAndRight_Step2
- .4byte MovementType_FaceDownLeftAndRight_Step3
- .4byte MovementType_FaceDownLeftAndRight_Step4
-
-gDownLeftAndRightDirections:: @ 83A61C4
- .byte 3 @ DIR_WEST
- .byte 4 @ DIR_EAST
- .byte 1 @ DIR_SOUTH
- .byte 1 @ DIR_SOUTH
-
-gMovementTypeFuncs_RotateCounterclockwise:: @ 83A61C8
- .4byte MovementType_RotateCounterclockwise_Step0
- .4byte MovementType_RotateCounterclockwise_Step1
- .4byte MovementType_RotateCounterclockwise_Step2
- .4byte MovementType_RotateCounterclockwise_Step3
-
-gCounterclockwiseDirections:: @ 83A61D8
- .byte 0x01
- .byte 0x04
- .byte 0x03
- .byte 0x01
- .byte 0x02
- .byte 0x00
- .byte 0x00
- .byte 0x00
-
-gMovementTypeFuncs_RotateClockwise:: @ 83A61E0
- .4byte MovementType_RotateClockwise_Step0
- .4byte MovementType_RotateClockwise_Step1
- .4byte MovementType_RotateClockwise_Step2
- .4byte MovementType_RotateClockwise_Step3
-
-gClockwiseDirections:: @ 83A61F0
- .byte 0x01
- .byte 0x03
- .byte 0x04
- .byte 0x02
- .byte 0x01
- .byte 0x00
- .byte 0x00
- .byte 0x00
-
-gMovementTypeFuncs_WalkBackAndForth:: @ 83A61F8
- .4byte MovementType_WalkBackAndForth_Step0
- .4byte MovementType_WalkBackAndForth_Step1
- .4byte MovementType_WalkBackAndForth_Step2
- .4byte MovementType_WalkBackAndForth_Step3
-
-gMovementTypeFuncs_WalkSequenceUpRightLeftDown:: @ 83A6208
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceUpRightLeftDown_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gUpRightLeftDownDirections:: @ 83A6214
- .byte 2
- .byte 4
- .byte 3
- .byte 1
-
-gMovementTypeFuncs_WalkSequenceRightLeftDownUp:: @ 83A6218
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceRightLeftDownUp_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gRightLeftDownUpDirections:: @ 83A6224
- .byte 4
- .byte 3
- .byte 1
- .byte 2
-
-gMovementTypeFuncs_WalkSequenceDownUpRightLeft:: @ 83A6228
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceDownUpRightLeft_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gDownUpRightLeftDirections:: @ 83A6234
- .byte 1
- .byte 2
- .byte 4
- .byte 3
-
-gMovementTypeFuncs_WalkSequenceLeftDownUpRight:: @ 83A6238
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceLeftDownUpRight_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gLeftDownUpRightDirections:: @ 83A6244
- .byte 3
- .byte 1
- .byte 2
- .byte 4
-
-gMovementTypeFuncs_WalkSequenceUpLeftRightDown:: @ 83A6248
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceUpLeftRightDown_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gUpLeftRightDownDirections:: @ 83A6254
- .byte 2
- .byte 3
- .byte 4
- .byte 1
-
-gMovementTypeFuncs_WalkSequenceLeftRightDownUp:: @ 83A6258
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceLeftRightDownUp_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gLeftRightDownUpDirections:: @ 83A6264
- .byte 3
- .byte 4
- .byte 1
- .byte 2
-
-gMovementTypeFuncs_WalkSequenceDownUpLeftRight:: @ 83A6268
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceDownUpLeftRight_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gMovementTypeFuncs_WalkSequenceRightDownUpLeft:: @ 83A6274
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceRightDownUpLeft_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gRightDownUpLeftDirections:: @ 83A6280
- .byte 4
- .byte 1
- .byte 2
- .byte 3
-
-gMovementTypeFuncs_WalkSequenceLeftUpDownRight:: @ 83A6284
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceLeftUpDownRight_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gLeftUpDownRightDirections:: @ 83A6290
- .byte 3
- .byte 2
- .byte 1
- .byte 4
-
-gMovementTypeFuncs_WalkSequenceUpDownRightLeft:: @ 83A6294
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceUpDownRightLeft_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gUpDownRightLeftDirections:: @ 83A62A0
- .byte 2
- .byte 1
- .byte 4
- .byte 3
-
-gMovementTypeFuncs_WalkSequenceRightLeftUpDown:: @ 83A62A4
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceRightLeftUpDown_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gRightLeftUpDownDirections:: @ 83A62B0
- .byte 4
- .byte 3
- .byte 2
- .byte 1
-
-gMovementTypeFuncs_WalkSequenceDownRightLeftUp:: @ 83A62B4
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceDownRightLeftUp_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gDownRightLeftUpDirections:: @ 83A62C0
- .byte 1
- .byte 4
- .byte 3
- .byte 2
-
-gMovementTypeFuncs_WalkSequenceRightUpDownLeft:: @ 83A62C4
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceRightUpDownLeft_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gRightUpDownLeftDirections:: @ 83A62D0
- .byte 4
- .byte 2
- .byte 1
- .byte 3
-
-gMovementTypeFuncs_WalkSequenceUpDownLeftRight:: @ 83A62D4
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceUpDownLeftRight_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gUpDownLeftRightDirections:: @ 83A62E0
- .byte 2
- .byte 1
- .byte 3
- .byte 4
-
-gMovementTypeFuncs_WalkSequenceLeftRightUpDown:: @ 83A62E4
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceLeftRightUpDown_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gLeftRightUpDownDirections:: @ 83A62F0
- .byte 3
- .byte 4
- .byte 2
- .byte 1
-
-gMovementTypeFuncs_WalkSequenceDownLeftRightUp:: @ 83A62F4
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceDownLeftRightUp_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gDownLeftRightUpDirections:: @ 83A6300
- .byte 1
- .byte 3
- .byte 4
- .byte 2
-
-gMovementTypeFuncs_WalkSequenceUpLeftDownRight:: @ 83A6304
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceUpLeftDownRight_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gUpLeftDownRightDirections:: @ 83A6310
- .byte 2
- .byte 3
- .byte 1
- .byte 4
-
-gMovementTypeFuncs_WalkSequenceDownRightUpLeft:: @ 83A6314
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceDownRightUpLeft_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gDownRightUpLeftDirections:: @ 83A6320
- .byte 1
- .byte 4
- .byte 2
- .byte 3
-
-gMovementTypeFuncs_WalkSequenceLeftDownRightUp:: @ 83A6324
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceLeftDownRightUp_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gLeftDownRightUpDirections:: @ 83A6330
- .byte 3
- .byte 1
- .byte 4
- .byte 2
-
-gMovementTypeFuncs_WalkSequenceRightUpLeftDown:: @ 83A6334
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceRightUpLeftDown_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gRightUpLeftDownDirections:: @ 83A6340
- .byte 4
- .byte 2
- .byte 3
- .byte 1
-
-gMovementTypeFuncs_WalkSequenceUpRightDownLeft:: @ 83A6344
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceUpRightDownLeft_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gUpRightDownLeftDirections:: @ 83A6350
- .byte 2
- .byte 4
- .byte 1
- .byte 3
-
-gMovementTypeFuncs_WalkSequenceDownLeftUpRight:: @ 83A6354
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceDownLeftUpRight_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gDownLeftUpRightDirections:: @ 83A6360
- .byte 1
- .byte 3
- .byte 2
- .byte 4
-
-gMovementTypeFuncs_WalkSequenceLeftUpRightDown:: @ 83A6364
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceLeftUpRightDown_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gLeftUpRightDownDirections:: @ 83A6370
- .byte 3
- .byte 2
- .byte 4
- .byte 1
-
-gMovementTypeFuncs_WalkSequenceRightDownLeftUp:: @ 83A6374
- .4byte MovementType_WalkSequence_Step0
- .4byte MovementType_WalkSequenceRightDownLeftUp_Step1
- .4byte MovementType_WalkSequence_Step2
-
-gRightDownLeftUpDirections:: @ 83A6380
- .byte 4
- .byte 1
- .byte 3
- .byte 2
-
-gMovementTypeFuncs_CopyPlayer:: @ 83A6384
- .4byte MovementType_CopyPlayer_Step0
- .4byte MovementType_CopyPlayer_Step1
- .4byte MovementType_CopyPlayer_Step2
-
-gCopyPlayerMovementFuncs:: @ 83A6390
- .4byte CopyablePlayerMovement_None
- .4byte CopyablePlayerMovement_FaceDirection
- .4byte CopyablePlayerMovement_GoSpeed0
- .4byte CopyablePlayerMovement_GoSpeed1
- .4byte CopyablePlayerMovement_GoSpeed2
- .4byte CopyablePlayerMovement_Slide
- .4byte cph_IM_DIFFERENT
- .4byte CopyablePlayerMovement_GoSpeed4
- .4byte CopyablePlayerMovement_Jump
- .4byte CopyablePlayerMovement_None
- .4byte CopyablePlayerMovement_None
-
-gMovementTypeFuncs_CopyPlayerInGrass:: @ 83A63BC
- .4byte MovementType_CopyPlayer_Step0
- .4byte MovementType_CopyPlayerInGrass_Step1
- .4byte MovementType_CopyPlayer_Step2
-
-gMovementTypeFuncs_Hidden:: @ 83A63C8
- .4byte MovementType_Hidden_Step0
-
-gMovementTypeFuncs_WalkInPlace:: @ 83A63CC
- .4byte MovementType_WalkInPlace_Step0
- .4byte MovementType_MoveInPlace_Step1
-
-gMovementTypeFuncs_WalkSlowlyInPlace:: @ 83A63D4
- .4byte MovementType_WalkSlowlyInPlace_Step0
- .4byte MovementType_MoveInPlace_Step1
-
-gMovementTypeFuncs_JogInPlace:: @ 83A63DC
- .4byte MovementType_JogInPlace_Step0
- .4byte MovementType_MoveInPlace_Step1
-
-gMovementTypeFuncs_Invisible:: @ 83A63E4
- .4byte MovementType_Invisible_Step0
- .4byte MovementType_Invisible_Step1
- .4byte MovementType_Invisible_Step2
-
-gUnknown_83A63F0:: @ 83A63F0
- .4byte sub_8063364
- .4byte sub_8063384
- .4byte sub_80633A4
-
-gUnknown_83A63FC:: @ 83A63FC
- .4byte sub_80633B4
- .4byte sub_80633F4
-
-gUnknown_83A6404:: @ 83A6404
- .4byte sub_80633D4
- .4byte sub_80633F4
diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h
new file mode 100644
index 000000000..e83eeac4a
--- /dev/null
+++ b/src/data/object_events/movement_type_func_tables.h
@@ -0,0 +1,614 @@
+bool8 MovementType_WanderAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderAround_Step5Duplicate(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_LookAround_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_LookAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_LookAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderUpAndDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderUpAndDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderUpAndDown_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderUpAndDown_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderUpAndDown_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderUpAndDown_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderUpAndDown_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderLeftAndRight_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WanderLeftAndRight_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDirection_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDirection_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndUp_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndUp_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndUp_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndLeft_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndLeft_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownUpAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceUpLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownLeftAndRight_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_FaceDownLeftAndRight_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_RotateCounterclockwise_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_RotateCounterclockwise_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_RotateCounterclockwise_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_RotateCounterclockwise_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_RotateClockwise_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_RotateClockwise_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_RotateClockwise_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_RotateClockwise_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkBackAndForth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkBackAndForth_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkBackAndForth_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkBackAndForth_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequence_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequence_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceUpRightLeftDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceRightLeftDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceDownUpRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceLeftDownUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceUpLeftRightDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceLeftRightDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceDownUpLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceRightDownUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceLeftUpDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceUpDownRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceRightLeftUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceDownRightLeftUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceRightUpDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceUpDownLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceLeftRightUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceDownLeftRightUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceUpLeftDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceDownRightUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceLeftDownRightUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceRightUpLeftDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceUpRightDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceDownLeftUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceLeftUpRightDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSequenceRightDownLeftUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_CopyPlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_CopyPlayer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 CopyablePlayerMovement_None(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 cph_IM_DIFFERENT(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8));
+bool8 MovementType_CopyPlayer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_Hidden_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_JogInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_Invisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_Invisible_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 MovementType_Invisible_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 sub_8063364(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 sub_8063384(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 sub_80633A4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 sub_80633B4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 sub_80633F4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 sub_80633D4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+bool8 sub_80633F4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
+
+u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_WestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_WestNorth(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_EastNorth(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_WestSouth(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_EastSouth(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_SouthNorthWest(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_SouthNorthEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_NorthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
+u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy);
+
+u8 (*const gMovementTypeFuncs_WanderAround[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WanderAround_Step0,
+ MovementType_WanderAround_Step1,
+ MovementType_WanderAround_Step2,
+ MovementType_WanderAround_Step3,
+ MovementType_WanderAround_Step4,
+ MovementType_WanderAround_Step5,
+ MovementType_WanderAround_Step6,
+};
+
+u8 (*const gMovementTypeFuncs_WanderAroundDuplicate[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WanderAround_Step0,
+ MovementType_WanderAround_Step1,
+ MovementType_WanderAround_Step2,
+ MovementType_WanderAround_Step3,
+ MovementType_WanderAround_Step4,
+ MovementType_WanderAround_Step5Duplicate,
+ MovementType_WanderAround_Step6,
+};
+
+const u8 gStandardDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST};
+
+u8 (*const gGetVectorDirectionFuncs[])(s16, s16, s16, s16) = {
+ GetVectorDirection,
+ GetLimitedVectorDirection_SouthNorth,
+ GetLimitedVectorDirection_WestEast,
+ GetLimitedVectorDirection_WestNorth,
+ GetLimitedVectorDirection_EastNorth,
+ GetLimitedVectorDirection_WestSouth,
+ GetLimitedVectorDirection_EastSouth,
+ GetLimitedVectorDirection_SouthNorthWest,
+ GetLimitedVectorDirection_SouthNorthEast,
+ GetLimitedVectorDirection_NorthWestEast,
+ GetLimitedVectorDirection_SouthWestEast,
+};
+
+u8 (*const gMovementTypeFuncs_LookAround[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_LookAround_Step0,
+ MovementType_LookAround_Step1,
+ MovementType_LookAround_Step2,
+ MovementType_LookAround_Step3,
+ MovementType_LookAround_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_WanderUpAndDown[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WanderUpAndDown_Step0,
+ MovementType_WanderUpAndDown_Step1,
+ MovementType_WanderUpAndDown_Step2,
+ MovementType_WanderUpAndDown_Step3,
+ MovementType_WanderUpAndDown_Step4,
+ MovementType_WanderUpAndDown_Step5,
+ MovementType_WanderUpAndDown_Step6,
+};
+
+const u8 gUpAndDownDirections[] = {DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WanderLeftAndRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WanderLeftAndRight_Step0,
+ MovementType_WanderLeftAndRight_Step1,
+ MovementType_WanderLeftAndRight_Step2,
+ MovementType_WanderLeftAndRight_Step3,
+ MovementType_WanderLeftAndRight_Step4,
+ MovementType_WanderLeftAndRight_Step5,
+ MovementType_WanderLeftAndRight_Step6,
+};
+
+const u8 gLeftAndRightDirections[] = {DIR_WEST, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_FaceDirection[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceDirection_Step0,
+ MovementType_FaceDirection_Step1,
+ MovementType_FaceDirection_Step2,
+};
+
+u8 (*const gMovementTypeFuncs_FaceDownAndUp[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceDownAndUp_Step0,
+ MovementType_FaceDownAndUp_Step1,
+ MovementType_FaceDownAndUp_Step2,
+ MovementType_FaceDownAndUp_Step3,
+ MovementType_FaceDownAndUp_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_FaceLeftAndRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceLeftAndRight_Step0,
+ MovementType_FaceLeftAndRight_Step1,
+ MovementType_FaceLeftAndRight_Step2,
+ MovementType_FaceLeftAndRight_Step3,
+ MovementType_FaceLeftAndRight_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_FaceUpAndLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceUpAndLeft_Step0,
+ MovementType_FaceUpAndLeft_Step1,
+ MovementType_FaceUpAndLeft_Step2,
+ MovementType_FaceUpAndLeft_Step3,
+ MovementType_FaceUpAndLeft_Step4,
+};
+
+const u8 gUpAndLeftDirections[] = {DIR_NORTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_FaceUpAndRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceUpAndRight_Step0,
+ MovementType_FaceUpAndRight_Step1,
+ MovementType_FaceUpAndRight_Step2,
+ MovementType_FaceUpAndRight_Step3,
+ MovementType_FaceUpAndRight_Step4,
+};
+
+const u8 gUpAndRightDirections[] = {DIR_NORTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_FaceDownAndLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceDownAndLeft_Step0,
+ MovementType_FaceDownAndLeft_Step1,
+ MovementType_FaceDownAndLeft_Step2,
+ MovementType_FaceDownAndLeft_Step3,
+ MovementType_FaceDownAndLeft_Step4,
+};
+
+const u8 gDownAndLeftDirections[] = {DIR_SOUTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_FaceDownAndRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceDownAndRight_Step0,
+ MovementType_FaceDownAndRight_Step1,
+ MovementType_FaceDownAndRight_Step2,
+ MovementType_FaceDownAndRight_Step3,
+ MovementType_FaceDownAndRight_Step4,
+};
+
+const u8 gDownAndRightDirections[] = {DIR_SOUTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_FaceDownUpAndLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceDownUpAndLeft_Step0,
+ MovementType_FaceDownUpAndLeft_Step1,
+ MovementType_FaceDownUpAndLeft_Step2,
+ MovementType_FaceDownUpAndLeft_Step3,
+ MovementType_FaceDownUpAndLeft_Step4,
+};
+
+const u8 gDownUpAndLeftDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_FaceDownUpAndRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceDownUpAndRight_Step0,
+ MovementType_FaceDownUpAndRight_Step1,
+ MovementType_FaceDownUpAndRight_Step2,
+ MovementType_FaceDownUpAndRight_Step3,
+ MovementType_FaceDownUpAndRight_Step4,
+};
+
+const u8 gDownUpAndRightDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_FaceUpLeftAndRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceUpLeftAndRight_Step0,
+ MovementType_FaceUpLeftAndRight_Step1,
+ MovementType_FaceUpLeftAndRight_Step2,
+ MovementType_FaceUpLeftAndRight_Step3,
+ MovementType_FaceUpLeftAndRight_Step4,
+};
+
+const u8 gUpLeftAndRightDirections[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_FaceDownLeftAndRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_FaceDownLeftAndRight_Step0,
+ MovementType_FaceDownLeftAndRight_Step1,
+ MovementType_FaceDownLeftAndRight_Step2,
+ MovementType_FaceDownLeftAndRight_Step3,
+ MovementType_FaceDownLeftAndRight_Step4,
+};
+
+const u8 gDownLeftAndRightDirections[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_RotateCounterclockwise[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_RotateCounterclockwise_Step0,
+ MovementType_RotateCounterclockwise_Step1,
+ MovementType_RotateCounterclockwise_Step2,
+ MovementType_RotateCounterclockwise_Step3,
+};
+
+const u8 gCounterclockwiseDirections[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_RotateClockwise[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_RotateClockwise_Step0,
+ MovementType_RotateClockwise_Step1,
+ MovementType_RotateClockwise_Step2,
+ MovementType_RotateClockwise_Step3,
+};
+
+const u8 gClockwiseDirections[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkBackAndForth[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkBackAndForth_Step0,
+ MovementType_WalkBackAndForth_Step1,
+ MovementType_WalkBackAndForth_Step2,
+ MovementType_WalkBackAndForth_Step3,
+};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpRightLeftDown[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpRightLeftDown_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gUpRightLeftDownDirections[] = {DIR_NORTH, DIR_EAST, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightLeftDownUp[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightLeftDownUp_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gRightLeftDownUpDirections[] = {DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownUpRightLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownUpRightLeft_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gDownUpRightLeftDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftDownUpRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftDownUpRight_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gLeftDownUpRightDirections[] = {DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpLeftRightDown[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpLeftRightDown_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gUpLeftRightDownDirections[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftRightDownUp[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftRightDownUp_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gLeftRightDownUpDirections[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownUpLeftRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownUpLeftRight_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightDownUpLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightDownUpLeft_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gRightDownUpLeftDirections[] = {DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftUpDownRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftUpDownRight_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gLeftUpDownRightDirections[] = {DIR_WEST, DIR_NORTH, DIR_SOUTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpDownRightLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpDownRightLeft_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gUpDownRightLeftDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_EAST, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightLeftUpDown[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightLeftUpDown_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gRightLeftUpDownDirections[] = {DIR_EAST, DIR_WEST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownRightLeftUp[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownRightLeftUp_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gDownRightLeftUpDirections[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightUpDownLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightUpDownLeft_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gRightUpDownLeftDirections[] = {DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpDownLeftRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpDownLeftRight_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gUpDownLeftRightDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftRightUpDown[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftRightUpDown_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gLeftRightUpDownDirections[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownLeftRightUp[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownLeftRightUp_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gDownLeftRightUpDirections[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpLeftDownRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpLeftDownRight_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gUpLeftDownRightDirections[] = {DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownRightUpLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownRightUpLeft_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gDownRightUpLeftDirections[] = {DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftDownRightUp[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftDownRightUp_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gLeftDownRightUpDirections[] = {DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightUpLeftDown[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightUpLeftDown_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gRightUpLeftDownDirections[] = {DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpRightDownLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceUpRightDownLeft_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gUpRightDownLeftDirections[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceDownLeftUpRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownLeftUpRight_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gDownLeftUpRightDirections[] = {DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_EAST};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceLeftUpRightDown[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceLeftUpRightDown_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gLeftUpRightDownDirections[] = {DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightDownLeftUp[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceRightDownLeftUp_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+const u8 gRightDownLeftUpDirections[] = {DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH};
+
+u8 (*const gMovementTypeFuncs_CopyPlayer[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_CopyPlayer_Step0,
+ MovementType_CopyPlayer_Step1,
+ MovementType_CopyPlayer_Step2,
+};
+
+bool8 (*const gCopyPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)) = {
+ CopyablePlayerMovement_None,
+ CopyablePlayerMovement_FaceDirection,
+ CopyablePlayerMovement_GoSpeed0,
+ CopyablePlayerMovement_GoSpeed1,
+ CopyablePlayerMovement_GoSpeed2,
+ CopyablePlayerMovement_Slide,
+ cph_IM_DIFFERENT,
+ CopyablePlayerMovement_GoSpeed4,
+ CopyablePlayerMovement_Jump,
+ CopyablePlayerMovement_None,
+ CopyablePlayerMovement_None,
+};
+
+u8 (*const gMovementTypeFuncs_CopyPlayerInGrass[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_CopyPlayer_Step0,
+ MovementType_CopyPlayerInGrass_Step1,
+ MovementType_CopyPlayer_Step2,
+};
+
+u8 (*const gMovementTypeFuncs_Hidden[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_Hidden_Step0,
+};
+
+u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkInPlace_Step0,
+ MovementType_MoveInPlace_Step1,
+};
+
+u8 (*const gMovementTypeFuncs_WalkSlowlyInPlace[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_WalkSlowlyInPlace_Step0,
+ MovementType_MoveInPlace_Step1,
+};
+
+u8 (*const gMovementTypeFuncs_JogInPlace[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_JogInPlace_Step0,
+ MovementType_MoveInPlace_Step1,
+};
+
+u8 (*const gMovementTypeFuncs_Invisible[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_Invisible_Step0,
+ MovementType_Invisible_Step1,
+ MovementType_Invisible_Step2,
+};
+
+u8 (*const gUnknown_83A63F0[])(struct ObjectEvent *, struct Sprite *) = {
+ sub_8063364,
+ sub_8063384,
+ sub_80633A4,
+};
+
+u8 (*const gUnknown_83A63FC[])(struct ObjectEvent *, struct Sprite *) = {
+ sub_80633B4,
+ sub_80633F4,
+};
+
+u8 (*const gUnknown_83A6404[])(struct ObjectEvent *, struct Sprite *) = {
+ sub_80633D4,
+ sub_80633F4,
+};
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index c9d02470b..dae1a5926 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -291,6 +291,8 @@ extern const s16 gUnknown_83A695E[3];
#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
+#include "data/object_events/movement_type_func_tables.h"
+
const u8 gFaceDirectionAnimNums[] = {
[DIR_NONE] = 0x00,
[DIR_SOUTH] = 0x00,