summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/event_object_movement.s501
-rw-r--r--include/constants/global.h4
-rw-r--r--src/event_object_movement.c519
3 files changed, 523 insertions, 501 deletions
diff --git a/data/event_object_movement.s b/data/event_object_movement.s
index c298c4e85..84277cc03 100644
--- a/data/event_object_movement.s
+++ b/data/event_object_movement.s
@@ -7666,504 +7666,3 @@ gUnknown_83A63FC:: @ 83A63FC
gUnknown_83A6404:: @ 83A6404
.4byte sub_80633D4
.4byte sub_80633F4
-
-gFaceDirectionAnimNums:: @ 83A640C
- .byte 0x00 @ DIR_NONE
- .byte 0x00 @ DIR_SOUTH
- .byte 0x01 @ DIR_NORTH
- .byte 0x02 @ DIR_WEST
- .byte 0x03 @ DIR_EAST
- .byte 0x00 @ DIR_SOUTHWEST
- .byte 0x00 @ DIR_SOUTHEAST
- .byte 0x01 @ DIR_NORTHWEST
- .byte 0x01 @ DIR_NORTHEAST
-
-gMoveDirectionAnimNums:: @ 83A6415
- .byte 0x4 @ DIR_NONE
- .byte 0x4 @ DIR_SOUTH
- .byte 0x5 @ DIR_NORTH
- .byte 0x6 @ DIR_WEST
- .byte 0x7 @ DIR_EAST
- .byte 0x4 @ DIR_SOUTHWEST
- .byte 0x4 @ DIR_SOUTHEAST
- .byte 0x5 @ DIR_NORTHWEST
- .byte 0x5 @ DIR_NORTHEAST
-
-gMoveDirectionFastAnimNums:: @ 83A641E
- .byte 0x8 @ DIR_NONE
- .byte 0x8 @ DIR_SOUTH
- .byte 0x9 @ DIR_NORTH
- .byte 0xA @ DIR_WEST
- .byte 0xB @ DIR_EAST
- .byte 0x8 @ DIR_SOUTHWEST
- .byte 0x8 @ DIR_SOUTHEAST
- .byte 0x9 @ DIR_NORTHWEST
- .byte 0x9 @ DIR_NORTHEAST
-
-gMoveDirectionFasterAnimNums:: @ 83A6427
- .byte 0xC @ DIR_NONE
- .byte 0xC @ DIR_SOUTH
- .byte 0xD @ DIR_NORTH
- .byte 0xE @ DIR_WEST
- .byte 0xF @ DIR_EAST
- .byte 0xC @ DIR_SOUTHWEST
- .byte 0xC @ DIR_SOUTHEAST
- .byte 0xD @ DIR_NORTHWEST
- .byte 0xD @ DIR_NORTHEAST
-
-gMoveDirectionFastestAnimNums:: @ 83A6430
- .byte 0x10 @ DIR_NONE
- .byte 0x10 @ DIR_SOUTH
- .byte 0x11 @ DIR_NORTH
- .byte 0x12 @ DIR_WEST
- .byte 0x13 @ DIR_EAST
- .byte 0x10 @ DIR_SOUTHWEST
- .byte 0x10 @ DIR_SOUTHEAST
- .byte 0x11 @ DIR_NORTHWEST
- .byte 0x11 @ DIR_NORTHEAST
-
-gJumpSpecialDirectionAnimNums:: @ 83A6439
- .byte 0x14 @ DIR_NONE
- .byte 0x14 @ DIR_SOUTH
- .byte 0x15 @ DIR_NORTH
- .byte 0x16 @ DIR_WEST
- .byte 0x17 @ DIR_EAST
- .byte 0x14 @ DIR_SOUTHWEST
- .byte 0x14 @ DIR_SOUTHEAST
- .byte 0x15 @ DIR_NORTHWEST
- .byte 0x15 @ DIR_NORTHEAST
-
-gAcroWheelieDirectionAnimNums:: @ 83A6442
- .byte 0x14 @ DIR_NONE
- .byte 0x14 @ DIR_SOUTH
- .byte 0x15 @ DIR_NORTH
- .byte 0x16 @ DIR_WEST
- .byte 0x17 @ DIR_EAST
- .byte 0x14 @ DIR_SOUTHWEST
- .byte 0x14 @ DIR_SOUTHEAST
- .byte 0x15 @ DIR_NORTHWEST
- .byte 0x15 @ DIR_NORTHEAST
-
-gUnrefAnimNums_080634A0:: @ 83A644B
- .byte 0x18 @ DIR_NONE
- .byte 0x18 @ DIR_SOUTH
- .byte 0x19 @ DIR_NORTH
- .byte 0x1A @ DIR_WEST
- .byte 0x1B @ DIR_EAST
- .byte 0x18 @ DIR_SOUTHWEST
- .byte 0x18 @ DIR_SOUTHEAST
- .byte 0x19 @ DIR_NORTHWEST
- .byte 0x19 @ DIR_NORTHEAST
-
-gAcroEndWheelieDirectionAnimNums:: @ 83A6454
- .byte 0x1C @ DIR_NONE
- .byte 0x1C @ DIR_SOUTH
- .byte 0x1D @ DIR_NORTH
- .byte 0x1E @ DIR_WEST
- .byte 0x1F @ DIR_EAST
- .byte 0x1C @ DIR_SOUTHWEST
- .byte 0x1C @ DIR_SOUTHEAST
- .byte 0x1D @ DIR_NORTHWEST
- .byte 0x1D @ DIR_NORTHEAST
-
-@ gAcroUnusedActionDirectionAnimNums?
-gAcroUnusedActionDirectionAnimNums:: @ 83A645D
- .byte 0x18 @ DIR_NONE
- .byte 0x18 @ DIR_SOUTH
- .byte 0x19 @ DIR_NORTH
- .byte 0x1A @ DIR_WEST
- .byte 0x1B @ DIR_EAST
- .byte 0x18 @ DIR_SOUTHWEST
- .byte 0x19 @ DIR_SOUTHEAST
- .byte 0x1A @ DIR_NORTHWEST
- .byte 0x1B @ DIR_NORTHEAST
-
-@ gAcroWheeliePedalDirectionAnimNums?
-gAcroWheeliePedalDirectionAnimNums:: @ 83A6466
- .byte 0x20 @ DIR_NONE
- .byte 0x20 @ DIR_SOUTH
- .byte 0x21 @ DIR_NORTH
- .byte 0x22 @ DIR_WEST
- .byte 0x23 @ DIR_EAST
- .byte 0x20 @ DIR_SOUTHWEST
- .byte 0x20 @ DIR_SOUTHEAST
- .byte 0x21 @ DIR_NORTHWEST
- .byte 0x21 @ DIR_NORTHEAST
-
-@ ???
-gFishingDirectionAnimNums:: @ 83A646F
- .byte 0x24 @ DIR_NONE
- .byte 0x24 @ DIR_SOUTH
- .byte 0x25 @ DIR_NORTH
- .byte 0x26 @ DIR_WEST
- .byte 0x27 @ DIR_EAST
- .byte 0x24 @ DIR_SOUTHWEST
- .byte 0x24 @ DIR_SOUTHEAST
- .byte 0x25 @ DIR_NORTHWEST
- .byte 0x25 @ DIR_NORTHEAST
-
-@ gFishingDirectionAnimNums?
-gFishingNoCatchDirectionAnimNums:: @ 83A6478
- .byte 0x0 @ DIR_NONE
- .byte 0x0 @ DIR_SOUTH
- .byte 0x1 @ DIR_NORTH
- .byte 0x2 @ DIR_WEST
- .byte 0x3 @ DIR_EAST
- .byte 0x0 @ DIR_SOUTHWEST
- .byte 0x0 @ DIR_SOUTHEAST
- .byte 0x1 @ DIR_NORTHWEST
- .byte 0x1 @ DIR_NORTHEAST
-
-@ gFishingNoCatchDirectionAnimNums?
-gFishingBiteDirectionAnimNums:: @ 83A6481
- .byte 0x4 @ DIR_NONE
- .byte 0x4 @ DIR_SOUTH
- .byte 0x5 @ DIR_NORTH
- .byte 0x6 @ DIR_WEST
- .byte 0x7 @ DIR_EAST
- .byte 0x4 @ DIR_SOUTHWEST
- .byte 0x4 @ DIR_SOUTHEAST
- .byte 0x5 @ DIR_NORTHWEST
- .byte 0x5 @ DIR_NORTHEAST
-
-@ gFishingBiteDirectionAnimNums?
-gUnknown_83A648A:: @ 83A648A
- .byte 0x8 @ DIR_NONE
- .byte 0x8 @ DIR_SOUTH
- .byte 0x9 @ DIR_NORTH
- .byte 0xA @ DIR_WEST
- .byte 0xB @ DIR_EAST
- .byte 0x8 @ DIR_SOUTHWEST
- .byte 0x8 @ DIR_SOUTHEAST
- .byte 0x9 @ DIR_NORTHWEST
- .byte 0x9 @ DIR_NORTHEAST
-
-@ gRunningDirectionAnimNums?
-gRunningDirectionAnimNums:: @ 83A6493
- .byte 0x14 @ DIR_NONE
- .byte 0x14 @ DIR_SOUTH
- .byte 0x15 @ DIR_NORTH
- .byte 0x16 @ DIR_WEST
- .byte 0x17 @ DIR_EAST
- .byte 0x14 @ DIR_SOUTHWEST
- .byte 0x14 @ DIR_SOUTHEAST
- .byte 0x15 @ DIR_NORTHWEST
- .byte 0x15 @ DIR_NORTHEAST
-
-gTrainerFacingDirectionMovementTypes:: @ 83A649C
- .byte 0x08 @ DIR_NONE
- .byte 0x08 @ DIR_SOUTH
- .byte 0x07 @ DIR_NORTH
- .byte 0x09 @ DIR_WEST
- .byte 0x0A @ DIR_EAST
- .byte 0x08 @ DIR_SOUTHWEST
- .byte 0x08 @ DIR_SOUTHEAST
- .byte 0x07 @ DIR_NORTHWEST
- .byte 0x07 @ DIR_NORTHEAST
-
- .align 2
-gOppositeDirectionBlockedMetatileFuncs:: @ 83A64A8
- .4byte MetatileBehavior_IsSouthBlocked
- .4byte MetatileBehavior_IsNorthBlocked
- .4byte MetatileBehavior_IsWestBlocked
- .4byte MetatileBehavior_IsEastBlocked
-
-gDirectionBlockedMetatileFuncs:: @ 83A64B8
- .4byte MetatileBehavior_IsNorthBlocked
- .4byte MetatileBehavior_IsSouthBlocked
- .4byte MetatileBehavior_IsEastBlocked
- .4byte MetatileBehavior_IsWestBlocked
-
-@ sDirectionToVectors
-sDirectionToVectors:: @ 83A64C8
- .2byte 0, 0 @ DIR_NONE
- .2byte 0, 1 @ DIR_SOUTH
- .2byte 0, -1 @ DIR_NORTH
- .2byte -1, 0 @ DIR_WEST
- .2byte 1, 0 @ DIR_EAST
- .2byte -1, 1 @ DIR_SOUTHWEST
- .2byte 1, 1 @ DIR_SOUTHEAST
- .2byte -1, -1 @ DIR_NORTHWEST
- .2byte 1, -1 @ DIR_NORTHEAST
-
-@ gFaceDirectionMovementActions
-gFaceDirectionMovementActions:: @ 83A64EC
- .byte 0x0 @ DIR_NONE
- .byte 0x0 @ DIR_SOUTH
- .byte 0x1 @ DIR_NORTH
- .byte 0x2 @ DIR_WEST
- .byte 0x3 @ DIR_EAST
-
-gWalkSlowMovementActions:: @ 83A64F1
- .byte 0x4 @ DIR_NONE
- .byte 0x4 @ DIR_SOUTH
- .byte 0x5 @ DIR_NORTH
- .byte 0x6 @ DIR_WEST
- .byte 0x7 @ DIR_EAST
-
-gUnknown_83A64F6:: @ 83A64F6
- .byte 0x9B @ DIR_NONE
- .byte 0x9B @ DIR_SOUTH
- .byte 0x9C @ DIR_NORTH
- .byte 0x9D @ DIR_WEST
- .byte 0x9E @ DIR_EAST
-
-gUnknown_83A64FB:: @ 83A64FB
- .byte 0x8 @ DIR_NONE
- .byte 0x8 @ DIR_SOUTH
- .byte 0x9 @ DIR_NORTH
- .byte 0xA @ DIR_WEST
- .byte 0xB @ DIR_EAST
-
-gUnknown_83A6500:: @ 83A6500
- .byte 0xC @ DIR_NONE
- .byte 0xC @ DIR_SOUTH
- .byte 0xD @ DIR_NORTH
- .byte 0xE @ DIR_WEST
- .byte 0xF @ DIR_EAST
-
-gUnknown_83A6505:: @ 83A6505
- .byte 0x10 @ DIR_NONE
- .byte 0x10 @ DIR_SOUTH
- .byte 0x11 @ DIR_NORTH
- .byte 0x12 @ DIR_WEST
- .byte 0x13 @ DIR_EAST
-
-gUnknown_83A650A:: @ 83A650A
- .byte 0x1D @ DIR_NONE
- .byte 0x1D @ DIR_SOUTH
- .byte 0x1E @ DIR_NORTH
- .byte 0x1F @ DIR_WEST
- .byte 0x20 @ DIR_EAST
-
-gUnknown_83A650F:: @ 83A650F
- .byte 0xA0 @ DIR_NONE
- .byte 0xA0 @ DIR_SOUTH
- .byte 0xA1 @ DIR_NORTH
- .byte 0xA2 @ DIR_WEST
- .byte 0xA3 @ DIR_EAST
-
-gUnknown_83A6514:: @ 83A6514
- .byte 0x31 @ DIR_NONE
- .byte 0x31 @ DIR_SOUTH
- .byte 0x32 @ DIR_NORTH
- .byte 0x33 @ DIR_WEST
- .byte 0x34 @ DIR_EAST
-
-gUnknown_83A6519:: @ 83A6519
- .byte 0x35 @ DIR_NONE
- .byte 0x35 @ DIR_SOUTH
- .byte 0x36 @ DIR_NORTH
- .byte 0x37 @ DIR_WEST
- .byte 0x38 @ DIR_EAST
-
-gUnknown_83A651E:: @ 83A651E
- .byte 0x39 @ DIR_NONE
- .byte 0x39 @ DIR_SOUTH
- .byte 0x3A @ DIR_NORTH
- .byte 0x3B @ DIR_WEST
- .byte 0x3C @ DIR_EAST
-
-gUnknown_83A6523:: @ 83A6523
- .byte 0x3D @ DIR_NONE
- .byte 0x3D @ DIR_SOUTH
- .byte 0x3E @ DIR_NORTH
- .byte 0x3F @ DIR_WEST
- .byte 0x40 @ DIR_EAST
-
-gUnknown_83A6528:: @ 83A6528
- .byte 0x41 @ DIR_NONE
- .byte 0x41 @ DIR_SOUTH
- .byte 0x42 @ DIR_NORTH
- .byte 0x43 @ DIR_WEST
- .byte 0x44 @ DIR_EAST
-
-gUnknown_83A652D:: @ 83A652D
- .byte 0x94 @ DIR_NONE
- .byte 0x94 @ DIR_SOUTH
- .byte 0x95 @ DIR_NORTH
- .byte 0x96 @ DIR_WEST
- .byte 0x97 @ DIR_EAST
-
-gUnknown_83A6532:: @ 83A6532
- .byte 0x14 @ DIR_NONE
- .byte 0x14 @ DIR_SOUTH
- .byte 0x15 @ DIR_NORTH
- .byte 0x16 @ DIR_WEST
- .byte 0x17 @ DIR_EAST
-
-gUnknown_83A6537:: @ 83A6537
- .byte 0x52 @ DIR_NONE
- .byte 0x52 @ DIR_SOUTH
- .byte 0x53 @ DIR_NORTH
- .byte 0x54 @ DIR_WEST
- .byte 0x55 @ DIR_EAST
-
-gUnknown_83A653C:: @ 83A653C
- .byte 0x57 @ DIR_NONE
- .byte 0x57 @ DIR_SOUTH
- .byte 0x56 @ DIR_NORTH
- .byte 0x59 @ DIR_WEST
- .byte 0x58 @ DIR_EAST
-
-gUnknown_83A6541:: @ 83A6541
- .byte 0x4E @ DIR_NONE
- .byte 0x4E @ DIR_SOUTH
- .byte 0x4F @ DIR_NORTH
- .byte 0x50 @ DIR_WEST
- .byte 0x51 @ DIR_EAST
-
-gUnknown_83A6546:: @ 83A6546
- .byte 0x46 @ DIR_NONE
- .byte 0x46 @ DIR_SOUTH
- .byte 0x47 @ DIR_NORTH
- .byte 0x48 @ DIR_WEST
- .byte 0x49 @ DIR_EAST
-
-gUnknown_83A654B:: @ 83A654B
- .byte 0xA6 @ DIR_NONE
- .byte 0xA6 @ DIR_SOUTH
- .byte 0xA7 @ DIR_NORTH
- .byte 0xA8 @ DIR_WEST
- .byte 0xA9 @ DIR_EAST
-
-gUnknown_83A6550:: @ 83A6550
- .byte 0x21 @ DIR_NONE
- .byte 0x21 @ DIR_SOUTH
- .byte 0x22 @ DIR_NORTH
- .byte 0x23 @ DIR_WEST
- .byte 0x24 @ DIR_EAST
-
-gUnknown_83A6555:: @ 83A6555
- .byte 0x25 @ DIR_NONE
- .byte 0x25 @ DIR_SOUTH
- .byte 0x26 @ DIR_NORTH
- .byte 0x27 @ DIR_WEST
- .byte 0x28 @ DIR_EAST
-
-gUnknown_83A655A:: @ 83A655A
- .byte 0x29 @ DIR_NONE
- .byte 0x29 @ DIR_SOUTH
- .byte 0x2A @ DIR_NORTH
- .byte 0x2B @ DIR_WEST
- .byte 0x2C @ DIR_EAST
-
-gUnknown_83A655F:: @ 83A655F
- .byte 0x2D @ DIR_NONE
- .byte 0x2D @ DIR_SOUTH
- .byte 0x2E @ DIR_NORTH
- .byte 0x2F @ DIR_WEST
- .byte 0x30 @ DIR_EAST
-
-gUnknown_83A6564:: @ 83A6564
- .byte 0x70 @ DIR_NONE
- .byte 0x70 @ DIR_SOUTH
- .byte 0x71 @ DIR_NORTH
- .byte 0x72 @ DIR_WEST
- .byte 0x73 @ DIR_EAST
-
-gUnknown_83A6569:: @ 83A6569
- .byte 0x74 @ DIR_NONE
- .byte 0x74 @ DIR_SOUTH
- .byte 0x75 @ DIR_NORTH
- .byte 0x76 @ DIR_WEST
- .byte 0x77 @ DIR_EAST
-
-gUnknown_83A656E:: @ 83A656E
- .byte 0x78 @ DIR_NONE
- .byte 0x78 @ DIR_SOUTH
- .byte 0x79 @ DIR_NORTH
- .byte 0x7A @ DIR_WEST
- .byte 0x7B @ DIR_EAST
-
-gUnknown_83A6573:: @ 83A6573
- .byte 0x7C @ DIR_NONE
- .byte 0x7C @ DIR_SOUTH
- .byte 0x7D @ DIR_NORTH
- .byte 0x7E @ DIR_WEST
- .byte 0x7F @ DIR_EAST
-
-gUnknown_83A6578:: @ 83A6578
- .byte 0x80 @ DIR_NONE
- .byte 0x80 @ DIR_SOUTH
- .byte 0x81 @ DIR_NORTH
- .byte 0x82 @ DIR_WEST
- .byte 0x83 @ DIR_EAST
-
-gUnknown_83A657D:: @ 83A657D
- .byte 0x84 @ DIR_NONE
- .byte 0x84 @ DIR_SOUTH
- .byte 0x85 @ DIR_NORTH
- .byte 0x86 @ DIR_WEST
- .byte 0x87 @ DIR_EAST
-
-gUnknown_83A6582:: @ 83A6582
- .byte 0x88 @ DIR_NONE
- .byte 0x88 @ DIR_SOUTH
- .byte 0x89 @ DIR_NORTH
- .byte 0x8A @ DIR_WEST
- .byte 0x8B @ DIR_EAST
-
-gUnknown_83A6587:: @ 83A6587
- .byte 0x8C @ DIR_NONE
- .byte 0x8C @ DIR_SOUTH
- .byte 0x8D @ DIR_NORTH
- .byte 0x8E @ DIR_WEST
- .byte 0x8F @ DIR_EAST
-
-gUnknown_83A658C:: @ 83A658C
- .byte 0x90 @ DIR_NONE
- .byte 0x90 @ DIR_SOUTH
- .byte 0x91 @ DIR_NORTH
- .byte 0x92 @ DIR_WEST
- .byte 0x93 @ DIR_EAST
-
-@ gOppositeDirections ?
-gOppositeDirections:: @ 83A6591
- .byte 0x02
- .byte 0x01
- .byte 0x04
- .byte 0x03
- .byte 0x08
- .byte 0x07
- .byte 0x06
- .byte 0x05
-
-gUnknown_83A6599:: @ 83A6599
- .byte 0x02
- .byte 0x01
- .byte 0x04
- .byte 0x03
- .byte 0x01
- .byte 0x02
- .byte 0x03
- .byte 0x04
- .byte 0x03
- .byte 0x04
- .byte 0x02
- .byte 0x01
- .byte 0x04
- .byte 0x03
- .byte 0x01
- .byte 0x02
-
-gUnknown_83A65A9:: @ 83A65A9
- .byte 0x02
- .byte 0x01
- .byte 0x04
- .byte 0x03
- .byte 0x01
- .byte 0x02
- .byte 0x03
- .byte 0x04
- .byte 0x04
- .byte 0x03
- .byte 0x01
- .byte 0x02
- .byte 0x03
- .byte 0x04
- .byte 0x02
- .byte 0x01
- .byte 0x00
- .byte 0x00
- .byte 0x00
diff --git a/include/constants/global.h b/include/constants/global.h
index 28fe660e3..f8cfaa4b0 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -78,5 +78,9 @@
#define DIR_NORTH 2
#define DIR_WEST 3
#define DIR_EAST 4
+#define DIR_SOUTHWEST 5
+#define DIR_SOUTHEAST 6
+#define DIR_NORTHWEST 7
+#define DIR_NORTHEAST 8
#endif //GUARD_CONSTANTS_GLOBAL_H
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 42e203ada..c9d02470b 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -291,6 +291,525 @@ extern const s16 gUnknown_83A695E[3];
#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
+const u8 gFaceDirectionAnimNums[] = {
+ [DIR_NONE] = 0x00,
+ [DIR_SOUTH] = 0x00,
+ [DIR_NORTH] = 0x01,
+ [DIR_WEST] = 0x02,
+ [DIR_EAST] = 0x03,
+ [DIR_SOUTHWEST] = 0x00,
+ [DIR_SOUTHEAST] = 0x00,
+ [DIR_NORTHWEST] = 0x01,
+ [DIR_NORTHEAST] = 0x01,
+};
+
+const u8 gMoveDirectionAnimNums[] = {
+ [DIR_NONE] = 0x4,
+ [DIR_SOUTH] = 0x4,
+ [DIR_NORTH] = 0x5,
+ [DIR_WEST] = 0x6,
+ [DIR_EAST] = 0x7,
+ [DIR_SOUTHWEST] = 0x4,
+ [DIR_SOUTHEAST] = 0x4,
+ [DIR_NORTHWEST] = 0x5,
+ [DIR_NORTHEAST] = 0x5,
+};
+
+const u8 gMoveDirectionFastAnimNums[] = {
+ [DIR_NONE] = 0x8,
+ [DIR_SOUTH] = 0x8,
+ [DIR_NORTH] = 0x9,
+ [DIR_WEST] = 0xA,
+ [DIR_EAST] = 0xB,
+ [DIR_SOUTHWEST] = 0x8,
+ [DIR_SOUTHEAST] = 0x8,
+ [DIR_NORTHWEST] = 0x9,
+ [DIR_NORTHEAST] = 0x9,
+};
+
+const u8 gMoveDirectionFasterAnimNums[] = {
+ [DIR_NONE] = 0xC,
+ [DIR_SOUTH] = 0xC,
+ [DIR_NORTH] = 0xD,
+ [DIR_WEST] = 0xE,
+ [DIR_EAST] = 0xF,
+ [DIR_SOUTHWEST] = 0xC,
+ [DIR_SOUTHEAST] = 0xC,
+ [DIR_NORTHWEST] = 0xD,
+ [DIR_NORTHEAST] = 0xD,
+};
+
+const u8 gMoveDirectionFastestAnimNums[] = {
+ [DIR_NONE] = 0x10,
+ [DIR_SOUTH] = 0x10,
+ [DIR_NORTH] = 0x11,
+ [DIR_WEST] = 0x12,
+ [DIR_EAST] = 0x13,
+ [DIR_SOUTHWEST] = 0x10,
+ [DIR_SOUTHEAST] = 0x10,
+ [DIR_NORTHWEST] = 0x11,
+ [DIR_NORTHEAST] = 0x11,
+};
+
+const u8 gJumpSpecialDirectionAnimNums[] = {
+ [DIR_NONE] = 0x14,
+ [DIR_SOUTH] = 0x14,
+ [DIR_NORTH] = 0x15,
+ [DIR_WEST] = 0x16,
+ [DIR_EAST] = 0x17,
+ [DIR_SOUTHWEST] = 0x14,
+ [DIR_SOUTHEAST] = 0x14,
+ [DIR_NORTHWEST] = 0x15,
+ [DIR_NORTHEAST] = 0x15,
+};
+
+const u8 gAcroWheelieDirectionAnimNums[] = {
+ [DIR_NONE] = 0x14,
+ [DIR_SOUTH] = 0x14,
+ [DIR_NORTH] = 0x15,
+ [DIR_WEST] = 0x16,
+ [DIR_EAST] = 0x17,
+ [DIR_SOUTHWEST] = 0x14,
+ [DIR_SOUTHEAST] = 0x14,
+ [DIR_NORTHWEST] = 0x15,
+ [DIR_NORTHEAST] = 0x15,
+};
+
+const u8 gUnrefAnimNums_080634A0[] = {
+ [DIR_NONE] = 0x18,
+ [DIR_SOUTH] = 0x18,
+ [DIR_NORTH] = 0x19,
+ [DIR_WEST] = 0x1A,
+ [DIR_EAST] = 0x1B,
+ [DIR_SOUTHWEST] = 0x18,
+ [DIR_SOUTHEAST] = 0x18,
+ [DIR_NORTHWEST] = 0x19,
+ [DIR_NORTHEAST] = 0x19,
+};
+
+const u8 gAcroEndWheelieDirectionAnimNums[] = {
+ [DIR_NONE] = 0x1C,
+ [DIR_SOUTH] = 0x1C,
+ [DIR_NORTH] = 0x1D,
+ [DIR_WEST] = 0x1E,
+ [DIR_EAST] = 0x1F,
+ [DIR_SOUTHWEST] = 0x1C,
+ [DIR_SOUTHEAST] = 0x1C,
+ [DIR_NORTHWEST] = 0x1D,
+ [DIR_NORTHEAST] = 0x1D,
+};
+
+const u8 gAcroUnusedActionDirectionAnimNums[] = {
+ [DIR_NONE] = 0x18,
+ [DIR_SOUTH] = 0x18,
+ [DIR_NORTH] = 0x19,
+ [DIR_WEST] = 0x1A,
+ [DIR_EAST] = 0x1B,
+ [DIR_SOUTHWEST] = 0x18,
+ [DIR_SOUTHEAST] = 0x19,
+ [DIR_NORTHWEST] = 0x1A,
+ [DIR_NORTHEAST] = 0x1B,
+};
+
+const u8 gAcroWheeliePedalDirectionAnimNums[] = {
+ [DIR_NONE] = 0x20,
+ [DIR_SOUTH] = 0x20,
+ [DIR_NORTH] = 0x21,
+ [DIR_WEST] = 0x22,
+ [DIR_EAST] = 0x23,
+ [DIR_SOUTHWEST] = 0x20,
+ [DIR_SOUTHEAST] = 0x20,
+ [DIR_NORTHWEST] = 0x21,
+ [DIR_NORTHEAST] = 0x21,
+};
+
+const u8 gFishingDirectionAnimNums[] = {
+ [DIR_NONE] = 0x24,
+ [DIR_SOUTH] = 0x24,
+ [DIR_NORTH] = 0x25,
+ [DIR_WEST] = 0x26,
+ [DIR_EAST] = 0x27,
+ [DIR_SOUTHWEST] = 0x24,
+ [DIR_SOUTHEAST] = 0x24,
+ [DIR_NORTHWEST] = 0x25,
+ [DIR_NORTHEAST] = 0x25,
+};
+
+const u8 gFishingNoCatchDirectionAnimNums[] = {
+ [DIR_NONE] = 0x0,
+ [DIR_SOUTH] = 0x0,
+ [DIR_NORTH] = 0x1,
+ [DIR_WEST] = 0x2,
+ [DIR_EAST] = 0x3,
+ [DIR_SOUTHWEST] = 0x0,
+ [DIR_SOUTHEAST] = 0x0,
+ [DIR_NORTHWEST] = 0x1,
+ [DIR_NORTHEAST] = 0x1,
+};
+
+const u8 gFishingBiteDirectionAnimNums[] = {
+ [DIR_NONE] = 0x4,
+ [DIR_SOUTH] = 0x4,
+ [DIR_NORTH] = 0x5,
+ [DIR_WEST] = 0x6,
+ [DIR_EAST] = 0x7,
+ [DIR_SOUTHWEST] = 0x4,
+ [DIR_SOUTHEAST] = 0x4,
+ [DIR_NORTHWEST] = 0x5,
+ [DIR_NORTHEAST] = 0x5,
+};
+
+const u8 gUnknown_83A648A[] = {
+ [DIR_NONE] = 0x8,
+ [DIR_SOUTH] = 0x8,
+ [DIR_NORTH] = 0x9,
+ [DIR_WEST] = 0xA,
+ [DIR_EAST] = 0xB,
+ [DIR_SOUTHWEST] = 0x8,
+ [DIR_SOUTHEAST] = 0x8,
+ [DIR_NORTHWEST] = 0x9,
+ [DIR_NORTHEAST] = 0x9,
+};
+
+const u8 gRunningDirectionAnimNums[] = {
+ [DIR_NONE] = 0x14,
+ [DIR_SOUTH] = 0x14,
+ [DIR_NORTH] = 0x15,
+ [DIR_WEST] = 0x16,
+ [DIR_EAST] = 0x17,
+ [DIR_SOUTHWEST] = 0x14,
+ [DIR_SOUTHEAST] = 0x14,
+ [DIR_NORTHWEST] = 0x15,
+ [DIR_NORTHEAST] = 0x15,
+};
+
+const u8 gTrainerFacingDirectionMovementTypes[] = {
+ [DIR_NONE] = 0x08,
+ [DIR_SOUTH] = 0x08,
+ [DIR_NORTH] = 0x07,
+ [DIR_WEST] = 0x09,
+ [DIR_EAST] = 0x0A,
+ [DIR_SOUTHWEST] = 0x08,
+ [DIR_SOUTHEAST] = 0x08,
+ [DIR_NORTHWEST] = 0x07,
+ [DIR_NORTHEAST] = 0x07,
+};
+
+bool8 (*const gOppositeDirectionBlockedMetatileFuncs[])(u8) = {
+ MetatileBehavior_IsSouthBlocked,
+ MetatileBehavior_IsNorthBlocked,
+ MetatileBehavior_IsWestBlocked,
+ MetatileBehavior_IsEastBlocked
+};
+
+bool8 (*const gDirectionBlockedMetatileFuncs[])(u8) = {
+ MetatileBehavior_IsNorthBlocked,
+ MetatileBehavior_IsSouthBlocked,
+ MetatileBehavior_IsEastBlocked,
+ MetatileBehavior_IsWestBlocked
+};
+
+static const struct Coords16 sDirectionToVectors[] = {
+ [DIR_NONE] = { 0, 0},
+ [DIR_SOUTH] = { 0, 1},
+ [DIR_NORTH] = { 0, -1},
+ [DIR_WEST] = {-1, 0},
+ [DIR_EAST] = { 1, 0},
+ [DIR_SOUTHWEST] = {-1, 1},
+ [DIR_SOUTHEAST] = { 1, 1},
+ [DIR_NORTHWEST] = {-1, -1},
+ [DIR_NORTHEAST] = { 1, -1},
+};
+
+const u8 gFaceDirectionMovementActions[] = {
+ [DIR_NONE] = 0x0,
+ [DIR_SOUTH] = 0x0,
+ [DIR_NORTH] = 0x1,
+ [DIR_WEST] = 0x2,
+ [DIR_EAST] = 0x3,
+};
+
+const u8 gWalkSlowMovementActions[] = {
+ [DIR_NONE] = 0x4,
+ [DIR_SOUTH] = 0x4,
+ [DIR_NORTH] = 0x5,
+ [DIR_WEST] = 0x6,
+ [DIR_EAST] = 0x7,
+};
+
+const u8 gUnknown_83A64F6[] = {
+ [DIR_NONE] = 0x9B,
+ [DIR_SOUTH] = 0x9B,
+ [DIR_NORTH] = 0x9C,
+ [DIR_WEST] = 0x9D,
+ [DIR_EAST] = 0x9E,
+};
+
+const u8 gUnknown_83A64FB[] = {
+ [DIR_NONE] = 0x8,
+ [DIR_SOUTH] = 0x8,
+ [DIR_NORTH] = 0x9,
+ [DIR_WEST] = 0xA,
+ [DIR_EAST] = 0xB,
+};
+
+const u8 gUnknown_83A6500[] = {
+ [DIR_NONE] = 0xC,
+ [DIR_SOUTH] = 0xC,
+ [DIR_NORTH] = 0xD,
+ [DIR_WEST] = 0xE,
+ [DIR_EAST] = 0xF,
+};
+
+const u8 gUnknown_83A6505[] = {
+ [DIR_NONE] = 0x10,
+ [DIR_SOUTH] = 0x10,
+ [DIR_NORTH] = 0x11,
+ [DIR_WEST] = 0x12,
+ [DIR_EAST] = 0x13,
+};
+
+const u8 gUnknown_83A650A[] = {
+ [DIR_NONE] = 0x1D,
+ [DIR_SOUTH] = 0x1D,
+ [DIR_NORTH] = 0x1E,
+ [DIR_WEST] = 0x1F,
+ [DIR_EAST] = 0x20,
+};
+
+const u8 gUnknown_83A650F[] = {
+ [DIR_NONE] = 0xA0,
+ [DIR_SOUTH] = 0xA0,
+ [DIR_NORTH] = 0xA1,
+ [DIR_WEST] = 0xA2,
+ [DIR_EAST] = 0xA3,
+};
+
+const u8 gUnknown_83A6514[] = {
+ [DIR_NONE] = 0x31,
+ [DIR_SOUTH] = 0x31,
+ [DIR_NORTH] = 0x32,
+ [DIR_WEST] = 0x33,
+ [DIR_EAST] = 0x34,
+};
+
+const u8 gUnknown_83A6519[] = {
+ [DIR_NONE] = 0x35,
+ [DIR_SOUTH] = 0x35,
+ [DIR_NORTH] = 0x36,
+ [DIR_WEST] = 0x37,
+ [DIR_EAST] = 0x38,
+};
+
+const u8 gUnknown_83A651E[] = {
+ [DIR_NONE] = 0x39,
+ [DIR_SOUTH] = 0x39,
+ [DIR_NORTH] = 0x3A,
+ [DIR_WEST] = 0x3B,
+ [DIR_EAST] = 0x3C,
+};
+
+const u8 gUnknown_83A6523[] = {
+ [DIR_NONE] = 0x3D,
+ [DIR_SOUTH] = 0x3D,
+ [DIR_NORTH] = 0x3E,
+ [DIR_WEST] = 0x3F,
+ [DIR_EAST] = 0x40,
+};
+
+const u8 gUnknown_83A6528[] = {
+ [DIR_NONE] = 0x41,
+ [DIR_SOUTH] = 0x41,
+ [DIR_NORTH] = 0x42,
+ [DIR_WEST] = 0x43,
+ [DIR_EAST] = 0x44,
+};
+
+const u8 gUnknown_83A652D[] = {
+ [DIR_NONE] = 0x94,
+ [DIR_SOUTH] = 0x94,
+ [DIR_NORTH] = 0x95,
+ [DIR_WEST] = 0x96,
+ [DIR_EAST] = 0x97,
+};
+
+const u8 gUnknown_83A6532[] = {
+ [DIR_NONE] = 0x14,
+ [DIR_SOUTH] = 0x14,
+ [DIR_NORTH] = 0x15,
+ [DIR_WEST] = 0x16,
+ [DIR_EAST] = 0x17,
+};
+
+const u8 gUnknown_83A6537[] = {
+ [DIR_NONE] = 0x52,
+ [DIR_SOUTH] = 0x52,
+ [DIR_NORTH] = 0x53,
+ [DIR_WEST] = 0x54,
+ [DIR_EAST] = 0x55,
+};
+
+const u8 gUnknown_83A653C[] = {
+ [DIR_NONE] = 0x57,
+ [DIR_SOUTH] = 0x57,
+ [DIR_NORTH] = 0x56,
+ [DIR_WEST] = 0x59,
+ [DIR_EAST] = 0x58,
+};
+
+const u8 gUnknown_83A6541[] = {
+ [DIR_NONE] = 0x4E,
+ [DIR_SOUTH] = 0x4E,
+ [DIR_NORTH] = 0x4F,
+ [DIR_WEST] = 0x50,
+ [DIR_EAST] = 0x51,
+};
+
+const u8 gUnknown_83A6546[] = {
+ [DIR_NONE] = 0x46,
+ [DIR_SOUTH] = 0x46,
+ [DIR_NORTH] = 0x47,
+ [DIR_WEST] = 0x48,
+ [DIR_EAST] = 0x49,
+};
+
+const u8 gUnknown_83A654B[] = {
+ [DIR_NONE] = 0xA6,
+ [DIR_SOUTH] = 0xA6,
+ [DIR_NORTH] = 0xA7,
+ [DIR_WEST] = 0xA8,
+ [DIR_EAST] = 0xA9,
+};
+
+const u8 gUnknown_83A6550[] = {
+ [DIR_NONE] = 0x21,
+ [DIR_SOUTH] = 0x21,
+ [DIR_NORTH] = 0x22,
+ [DIR_WEST] = 0x23,
+ [DIR_EAST] = 0x24,
+};
+
+const u8 gUnknown_83A6555[] = {
+ [DIR_NONE] = 0x25,
+ [DIR_SOUTH] = 0x25,
+ [DIR_NORTH] = 0x26,
+ [DIR_WEST] = 0x27,
+ [DIR_EAST] = 0x28,
+};
+
+const u8 gUnknown_83A655A[] = {
+ [DIR_NONE] = 0x29,
+ [DIR_SOUTH] = 0x29,
+ [DIR_NORTH] = 0x2A,
+ [DIR_WEST] = 0x2B,
+ [DIR_EAST] = 0x2C,
+};
+
+const u8 gUnknown_83A655F[] = {
+ [DIR_NONE] = 0x2D,
+ [DIR_SOUTH] = 0x2D,
+ [DIR_NORTH] = 0x2E,
+ [DIR_WEST] = 0x2F,
+ [DIR_EAST] = 0x30,
+};
+
+const u8 gUnknown_83A6564[] = {
+ [DIR_NONE] = 0x70,
+ [DIR_SOUTH] = 0x70,
+ [DIR_NORTH] = 0x71,
+ [DIR_WEST] = 0x72,
+ [DIR_EAST] = 0x73,
+};
+
+const u8 gUnknown_83A6569[] = {
+ [DIR_NONE] = 0x74,
+ [DIR_SOUTH] = 0x74,
+ [DIR_NORTH] = 0x75,
+ [DIR_WEST] = 0x76,
+ [DIR_EAST] = 0x77,
+};
+
+const u8 gUnknown_83A656E[] = {
+ [DIR_NONE] = 0x78,
+ [DIR_SOUTH] = 0x78,
+ [DIR_NORTH] = 0x79,
+ [DIR_WEST] = 0x7A,
+ [DIR_EAST] = 0x7B,
+};
+
+const u8 gUnknown_83A6573[] = {
+ [DIR_NONE] = 0x7C,
+ [DIR_SOUTH] = 0x7C,
+ [DIR_NORTH] = 0x7D,
+ [DIR_WEST] = 0x7E,
+ [DIR_EAST] = 0x7F,
+};
+
+const u8 gUnknown_83A6578[] = {
+ [DIR_NONE] = 0x80,
+ [DIR_SOUTH] = 0x80,
+ [DIR_NORTH] = 0x81,
+ [DIR_WEST] = 0x82,
+ [DIR_EAST] = 0x83,
+};
+
+const u8 gUnknown_83A657D[] = {
+ [DIR_NONE] = 0x84,
+ [DIR_SOUTH] = 0x84,
+ [DIR_NORTH] = 0x85,
+ [DIR_WEST] = 0x86,
+ [DIR_EAST] = 0x87,
+};
+
+const u8 gUnknown_83A6582[] = {
+ [DIR_NONE] = 0x88,
+ [DIR_SOUTH] = 0x88,
+ [DIR_NORTH] = 0x89,
+ [DIR_WEST] = 0x8A,
+ [DIR_EAST] = 0x8B,
+};
+
+const u8 gUnknown_83A6587[] = {
+ [DIR_NONE] = 0x8C,
+ [DIR_SOUTH] = 0x8C,
+ [DIR_NORTH] = 0x8D,
+ [DIR_WEST] = 0x8E,
+ [DIR_EAST] = 0x8F,
+};
+
+const u8 gUnknown_83A658C[] = {
+ [DIR_NONE] = 0x90,
+ [DIR_SOUTH] = 0x90,
+ [DIR_NORTH] = 0x91,
+ [DIR_WEST] = 0x92,
+ [DIR_EAST] = 0x93,
+};
+
+const u8 gOppositeDirections[] = {
+ DIR_NORTH,
+ DIR_SOUTH,
+ DIR_EAST,
+ DIR_WEST,
+ DIR_NORTHEAST,
+ DIR_NORTHWEST,
+ DIR_SOUTHEAST,
+ DIR_SOUTHWEST,
+};
+
+const u8 gUnknown_83A6599[][4] = {
+ {2, 1, 4, 3},
+ {1, 2, 3, 4},
+ {3, 4, 2, 1},
+ {4, 3, 1, 2}
+};
+
+const u8 gUnknown_83A65A9[][4] = {
+ {2, 1, 4, 3},
+ {1, 2, 3, 4},
+ {4, 3, 1, 2},
+ {3, 4, 2, 1}
+};
+
#include "data/object_events/movement_action_func_tables.h"
static void ClearObjectEvent(struct ObjectEvent *objectEvent)