summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-06-14 08:08:51 -0500
committerGitHub <noreply@github.com>2018-06-14 08:08:51 -0500
commitbebcea402921d23232f7657fcfdab810f8699399 (patch)
treea59ea431d486bf23cde76e35ca789d1a0d113f3e /src
parentf810c9ecade3d793a139f67cd8f63effc5644b99 (diff)
parente01dd90bb36f850fe88f2b1edae65c74b3bc48b1 (diff)
Merge pull request #263 from huderlem/event_object_movement
Sync event object movement with pokeruby
Diffstat (limited to 'src')
-rw-r--r--src/battle_setup.c63
-rw-r--r--src/battle_transition.c6
-rw-r--r--src/berry.c56
-rw-r--r--src/berry_tag_screen.c2
-rw-r--r--src/bike.c142
-rwxr-xr-xsrc/data/field_event_obj/base_oam.h52
-rwxr-xr-xsrc/data/field_event_obj/berry_tree_graphics_tables.h570
-rwxr-xr-xsrc/data/field_event_obj/event_object_anims.h1176
-rwxr-xr-xsrc/data/field_event_obj/event_object_graphics.h1667
-rwxr-xr-xsrc/data/field_event_obj/event_object_graphics_info.h250
-rwxr-xr-xsrc/data/field_event_obj/event_object_graphics_info_pointers.h504
-rwxr-xr-xsrc/data/field_event_obj/event_object_pic_tables.h2179
-rwxr-xr-xsrc/data/field_event_obj/event_object_subsprites.h342
-rwxr-xr-xsrc/data/field_event_obj/field_effect_object_template_pointers.h82
-rwxr-xr-xsrc/data/field_event_obj/field_effect_objects.h997
-rwxr-xr-xsrc/data/field_event_obj/movement_action_func_tables.h1518
-rwxr-xr-xsrc/data/field_event_obj/movement_type_func_tables.h443
-rw-r--r--src/decoration.c54
-rw-r--r--src/event_data.c2
-rw-r--r--src/event_obj_lock.c (renamed from src/map_obj_lock.c)65
-rw-r--r--src/event_object_movement.c9159
-rw-r--r--src/field_camera.c8
-rw-r--r--src/field_effect.c429
-rw-r--r--src/field_map_obj.c5119
-rwxr-xr-xsrc/field_map_obj_helpers.c705
-rw-r--r--src/field_special_scene.c10
-rw-r--r--src/fldeff_groundshake.c20
-rw-r--r--src/fossil_specials.c2
-rwxr-xr-xsrc/item_menu.c4
-rwxr-xr-xsrc/item_use.c19
-rw-r--r--src/load_save.c16
-rw-r--r--src/mauville_old_man.c10
-rw-r--r--src/metatile_behavior.c3
-rw-r--r--src/naming_screen.c8
-rw-r--r--src/overworld.c326
-rw-r--r--src/player_pc.c2
-rw-r--r--src/rom6.c28
-rw-r--r--src/rotating_gate.c2
-rw-r--r--src/scrcmd.c51
-rw-r--r--src/script_movement.c47
-rw-r--r--src/secret_base.c20
-rw-r--r--src/start_menu.c4
-rw-r--r--src/trainer_see.c305
-rw-r--r--src/tv.c6
44 files changed, 19789 insertions, 6684 deletions
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 48a2ef257..ccc36b7c2 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -21,7 +21,7 @@
#include "constants/items.h"
#include "palette.h"
#include "window.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "event_scripts.h"
#include "trainer_see.h"
#include "field_message_box.h"
@@ -32,7 +32,6 @@
#include "overworld.h"
#include "field_weather.h"
#include "gym_leader_rematch.h"
-#include "field_map_obj_helpers.h"
enum
{
@@ -63,8 +62,8 @@ extern void sub_80EECC8(void);
extern void sub_80AF6F0(void);
extern u16 sub_81A9AA8(u8 localId);
extern u16 sub_81D6180(u8 localId);
-extern bool8 GetBattlePyramidTrainerFlag(u8 mapObjId);
-extern bool8 GetTrainerHillTrainerFlag(u8 mapObjId);
+extern bool8 GetBattlePyramidTrainerFlag(u8 eventObjId);
+extern bool8 GetTrainerHillTrainerFlag(u8 eventObjId);
extern bool8 sub_81D5C18(void);
extern void sub_816306C(u8 a0);
extern void sub_8163048(u8 a0);
@@ -102,7 +101,7 @@ EWRAM_DATA static u16 sTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_B = 0;
EWRAM_DATA u16 gPartnerTrainerId = 0;
-EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0;
+EWRAM_DATA static u16 sTrainerEventObjectLocalId = 0;
EWRAM_DATA static u8 *sTrainerAIntroSpeech = NULL;
EWRAM_DATA static u8 *sTrainerBIntroSpeech = NULL;
EWRAM_DATA static u8 *sTrainerADefeatSpeech = NULL;
@@ -156,7 +155,7 @@ static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -169,7 +168,7 @@ static const struct TrainerBattleParameter sContinueScriptBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -182,7 +181,7 @@ static const struct TrainerBattleParameter sDoubleBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -195,7 +194,7 @@ static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -208,7 +207,7 @@ static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -221,7 +220,7 @@ static const struct TrainerBattleParameter sTrainerBOrdinaryBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -234,7 +233,7 @@ static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[]
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
- {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
@@ -388,7 +387,7 @@ void BattleSetup_StartBattlePikeWildBattle(void)
static void DoStandardWildBattle(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_808BCF4();
gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = 0;
@@ -407,7 +406,7 @@ static void DoStandardWildBattle(void)
void BattleSetup_StartRoamerBattle(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_808BCF4();
gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = BATTLE_TYPE_ROAMER;
@@ -421,7 +420,7 @@ void BattleSetup_StartRoamerBattle(void)
static void DoSafariBattle(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_808BCF4();
gMain.savedCallback = CB2_EndSafariBattle;
gBattleTypeFlags = BATTLE_TYPE_SAFARI;
@@ -431,7 +430,7 @@ static void DoSafariBattle(void)
static void DoBattlePikeWildBattle(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_808BCF4();
gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = BATTLE_TYPE_PIKE;
@@ -1012,7 +1011,7 @@ static void InitTrainerBattleVariables(void)
sTrainerBDefeatSpeech = NULL;
sTrainerBBattleScriptRetAddr = NULL;
}
- sTrainerMapObjectLocalId = 0;
+ sTrainerEventObjectLocalId = 0;
sTrainerVictorySpeech = NULL;
sTrainerCannotBattleSpeech = NULL;
sTrainerBattleEndScript = NULL;
@@ -1075,10 +1074,10 @@ static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, co
void SetMapVarsToTrainer(void)
{
- if (sTrainerMapObjectLocalId != 0)
+ if (sTrainerEventObjectLocalId != 0)
{
- gSpecialVar_LastTalked = sTrainerMapObjectLocalId;
- gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ gSpecialVar_LastTalked = sTrainerEventObjectLocalId;
+ gSelectedEventObject = GetEventObjectIdByLocalIdAndMap(sTrainerEventObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
}
@@ -1172,19 +1171,19 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
}
}
-void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript)
+void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript)
{
- gSelectedMapObject = trainerMapObjId;
- gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
+ gSelectedEventObject = trainerEventObjId;
+ gSpecialVar_LastTalked = gEventObjects[trainerEventObjId].localId;
BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
ScriptContext1_SetupScript(EventScript_271354);
ScriptContext2_Enable();
}
-void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript)
+void ConfigureTwoTrainersBattle(u8 trainerEventObjId, const u8 *trainerScript)
{
- gSelectedMapObject = trainerMapObjId;
- gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
+ gSelectedEventObject = trainerEventObjId;
+ gSpecialVar_LastTalked = gEventObjects[trainerEventObjId].localId;
BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
}
@@ -1202,9 +1201,9 @@ bool32 GetTrainerFlagFromScriptPointer(const u8 *data)
void sub_80B16D8(void)
{
- struct MapObject *mapObject = &gMapObjects[gSelectedMapObject];
+ struct EventObject *eventObject = &gEventObjects[gSelectedEventObject];
- npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18));
+ SetTrainerMovementType(eventObject, GetTrainerFacingDirectionMovementType(eventObject->facingDirection));
}
u8 GetTrainerBattleMode(void)
@@ -1215,9 +1214,9 @@ u8 GetTrainerBattleMode(void)
bool8 GetTrainerFlag(void)
{
if (InBattlePyramid())
- return GetBattlePyramidTrainerFlag(gSelectedMapObject);
+ return GetBattlePyramidTrainerFlag(gSelectedEventObject);
else if (InTrainerHill())
- return GetTrainerHillTrainerFlag(gSelectedMapObject);
+ return GetTrainerHillTrainerFlag(gSelectedEventObject);
else
return FlagGet(GetTrainerAFlag());
}
@@ -1362,7 +1361,7 @@ void ShowTrainerIntroSpeech(void)
if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
sub_81A9EDC(sub_81A9AA8(gSpecialVar_LastTalked));
else
- sub_81A9EDC(sub_81A9AA8(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId));
+ sub_81A9EDC(sub_81A9AA8(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
sub_80982B8();
}
@@ -1371,7 +1370,7 @@ void ShowTrainerIntroSpeech(void)
if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
sub_81D572C(2, sub_81D6180(gSpecialVar_LastTalked));
else
- sub_81D572C(2, sub_81D6180(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId));
+ sub_81D572C(2, sub_81D6180(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
sub_80982B8();
}
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 8b9b50140..41729eec9 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -59,7 +59,7 @@ typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite);
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern const struct OamData gFieldObjectBaseOam_32x32;
+extern const struct OamData gEventObjectBaseOam_32x32;
extern void sub_80AC3D0(void);
@@ -753,7 +753,7 @@ static const struct SpriteTemplate gUnknown_085C8E68 =
{
.tileTag = 0xFFFF,
.paletteTag = 4105,
- .oam = &gFieldObjectBaseOam_32x32,
+ .oam = &gEventObjectBaseOam_32x32,
.anims = sSpriteAnimTable_85C8E3C,
.images = sSpriteImageTable_85C8E2C,
.affineAnims = sSpriteAffineAnimTable_85C8E60,
@@ -820,7 +820,7 @@ static const struct SpriteTemplate sSpriteTemplate_85C8EBC =
.callback = sub_8148380
};
-static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/map_objects/palettes/field_effect_object_palette_10.gbapal");
+static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_10.gbapal");
const struct SpritePalette gFieldEffectObjectPaletteInfo10 =
{
diff --git a/src/berry.c b/src/berry.c
index e128eb0ec..f8a0204c4 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -8,11 +8,11 @@
#include "event_data.h"
#include "fieldmap.h"
-extern u8 FieldObjectGetBerryTreeId(u8 mapObjectId);
+extern u8 EventObjectGetBerryTreeId(u8 eventObjectId);
extern void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);
extern void CB2_ChooseBerry(void);
-extern const u8* GetFieldObjectScriptPointerForComparison(void);
-extern bool8 sub_8092E9C(u8, u8, u8);
+extern const u8* GetEventObjectScriptPointerForComparison(void);
+extern bool8 IsBerryTreeSparkling(u8, u8, u8);
extern u16 gSpecialVar_ItemId;
@@ -904,9 +904,9 @@ struct BerryTree *GetBerryTreeInfo(u8 id)
return &gSaveBlock1Ptr->berryTrees[id];
}
-bool32 FieldObjectInteractionWaterBerryTree(void)
+bool32 EventObjectInteractionWaterBerryTree(void)
{
- struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject));
+ struct BerryTree *tree = GetBerryTreeInfo(EventObjectGetBerryTreeId(gSelectedEventObject));
switch (tree->stage)
{
@@ -930,8 +930,8 @@ bool32 FieldObjectInteractionWaterBerryTree(void)
bool8 IsPlayerFacingPlantedBerryTree(void)
{
- if (GetFieldObjectScriptPointerForComparison() == BerryTreeScript
- && GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0)
+ if (GetEventObjectScriptPointerForComparison() == BerryTreeScript
+ && GetStageByBerryTreeId(EventObjectGetBerryTreeId(gSelectedEventObject)) == 0)
return TRUE;
else
return FALSE;
@@ -939,10 +939,10 @@ bool8 IsPlayerFacingPlantedBerryTree(void)
bool8 TryToWaterBerryTree(void)
{
- if (GetFieldObjectScriptPointerForComparison() != BerryTreeScript)
+ if (GetEventObjectScriptPointerForComparison() != BerryTreeScript)
return FALSE;
else
- return FieldObjectInteractionWaterBerryTree();
+ return EventObjectInteractionWaterBerryTree();
}
void ClearBerryTrees(void)
@@ -1152,7 +1152,7 @@ u16 GetStageDurationByBerryType(u8 berry)
return GetBerryInfo(berry)->stageDuration * 60;
}
-void FieldObjectInteractionGetBerryTreeData(void)
+void EventObjectInteractionGetBerryTreeData(void)
{
u8 id;
u8 berry;
@@ -1160,13 +1160,13 @@ void FieldObjectInteractionGetBerryTreeData(void)
u8 group;
u8 num;
- id = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ id = EventObjectGetBerryTreeId(gSelectedEventObject);
berry = GetBerryTypeByBerryTreeId(id);
ResetBerryTreeSparkleFlag(id);
unk = gSpecialVar_LastTalked;
num = gSaveBlock1Ptr->location.mapNum;
group = gSaveBlock1Ptr->location.mapGroup;
- if (sub_8092E9C(unk, num, group))
+ if (IsBerryTreeSparkling(unk, num, group))
gSpecialVar_0x8004 = 0xFF;
else
gSpecialVar_0x8004 = GetStageByBerryTreeId(id);
@@ -1175,15 +1175,15 @@ void FieldObjectInteractionGetBerryTreeData(void)
GetBerryCountStringByBerryType(berry, gStringVar1, gSpecialVar_0x8006);
}
-void FieldObjectInteractionGetBerryName(void)
+void EventObjectInteractionGetBerryName(void)
{
- u8 berryType = GetBerryTypeByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject));
+ u8 berryType = GetBerryTypeByBerryTreeId(EventObjectGetBerryTreeId(gSelectedEventObject));
GetBerryNameByBerryType(berryType, gStringVar1);
}
-void FieldObjectInteractionGetBerryCountString(void)
+void EventObjectInteractionGetBerryCountString(void)
{
- u8 treeId = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ u8 treeId = EventObjectGetBerryTreeId(gSelectedEventObject);
u8 berry = GetBerryTypeByBerryTreeId(treeId);
u8 count = GetBerryCountByBerryTreeId(treeId);
GetBerryCountStringByBerryType(berry, gStringVar1, count);
@@ -1194,25 +1194,25 @@ void Bag_ChooseBerry(void)
SetMainCallback2(CB2_ChooseBerry);
}
-void FieldObjectInteractionPlantBerryTree(void)
+void EventObjectInteractionPlantBerryTree(void)
{
u8 berry = ItemIdToBerryType(gSpecialVar_ItemId);
- PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, TRUE);
- FieldObjectInteractionGetBerryTreeData();
+ PlantBerryTree(EventObjectGetBerryTreeId(gSelectedEventObject), berry, 1, TRUE);
+ EventObjectInteractionGetBerryTreeData();
}
-void FieldObjectInteractionPickBerryTree(void)
+void EventObjectInteractionPickBerryTree(void)
{
- u8 id = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ u8 id = EventObjectGetBerryTreeId(gSelectedEventObject);
u8 berry = GetBerryTypeByBerryTreeId(id);
gSpecialVar_0x8004 = AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id));
}
-void FieldObjectInteractionRemoveBerryTree(void)
+void EventObjectInteractionRemoveBerryTree(void)
{
- RemoveBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject));
+ RemoveBerryTree(EventObjectGetBerryTreeId(gSelectedEventObject));
sub_8092EF0(gSpecialVar_LastTalked, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
@@ -1236,14 +1236,14 @@ void ResetBerryTreeSparkleFlags(void)
top = cam_top + 3;
right = cam_left + 14;
bottom = top + 8;
- for (i = 0; i < MAP_OBJECTS_COUNT; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
- if (gMapObjects[i].active && gMapObjects[i].animPattern == 12)
+ if (gEventObjects[i].active && gEventObjects[i].movementType == 12)
{
- cam_left = gMapObjects[i].coords2.x;
- cam_top = gMapObjects[i].coords2.y;
+ cam_left = gEventObjects[i].currentCoords.x;
+ cam_top = gEventObjects[i].currentCoords.y;
if (left <= cam_left && cam_left <= right && top <= cam_top && cam_top <= bottom)
- ResetBerryTreeSparkleFlag(gMapObjects[i].trainerRange_berryTreeId);
+ ResetBerryTreeSparkleFlag(gEventObjects[i].trainerRange_berryTreeId);
}
}
}
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 9a6e78c81..a755f4f44 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -2,7 +2,7 @@
#include "berry_tag_screen.h"
#include "berry.h"
#include "decompress.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "item_menu.h"
#include "constants/items.h"
#include "item.h"
diff --git a/src/bike.c b/src/bike.c
index e827707cd..87110b87b 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "bike.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "constants/flags.h"
@@ -56,7 +56,7 @@ static void Bike_UpdateDirTimerHistory(u8);
static void Bike_UpdateABStartSelectHistory(u8);
static u8 Bike_DPadToDirection(u16);
static u8 get_some_collision(u8);
-static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct MapObject *, s16, s16, u8, u8);
+static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct EventObject *, s16, s16, u8, u8);
static bool8 IsRunningDisallowedByMetatile(u8);
static void Bike_TryAdvanceCyclingRoadCollisions();
static u8 CanBikeFaceDirOnMetatile(u8, u8);
@@ -152,7 +152,7 @@ static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys)
static u8 GetMachBikeTransition(u8 *dirTraveling)
{
// if the dir updated before this function, get the relevent new direction to check later.
- u8 direction = player_get_direction_upper_nybble();
+ u8 direction = GetPlayerMovementDirection();
// is the player standing still?
if (*dirTraveling == 0)
@@ -196,31 +196,31 @@ static void MachBikeTransition_FaceDirection(u8 direction)
static void MachBikeTransition_TurnDirection(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E))
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior))
{
PlayerTurnInPlace(direction);
Bike_SetBikeStill();
}
else
{
- MachBikeTransition_FaceDirection(playerMapObj->mapobj_unk_18);
+ MachBikeTransition_FaceDirection(playerEventObj->facingDirection);
}
}
static void MachBikeTransition_TrySpeedUp(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
u8 collision;
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == FALSE)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == FALSE)
{
// we cannot go forward, so either slow down or, if we are stopped, idle face direction.
if (gPlayerAvatar.bikeSpeed)
- MachBikeTransition_TrySlowDown(playerMapObj->placeholder18);
+ MachBikeTransition_TrySlowDown(playerEventObj->movementDirection);
else
- MachBikeTransition_FaceDirection(playerMapObj->placeholder18);
+ MachBikeTransition_FaceDirection(playerEventObj->movementDirection);
}
else
{
@@ -296,7 +296,7 @@ static u8 CheckMovementInputAcroBike(u8 *newDirection, u16 newKeys, u16 heldKeys
static u8 AcroBikeHandleInputNormal(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
- u8 direction = player_get_direction_upper_nybble();
+ u8 direction = GetPlayerMovementDirection();
gPlayerAvatar.bikeFrameCounter = 0;
if (*newDirection == DIR_NONE)
@@ -349,7 +349,7 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys
Bike_SetBikeStill();
return ACRO_TRANS_TURN_DIRECTION;
}
- direction = player_get_direction_upper_nybble();
+ direction = GetPlayerMovementDirection();
if (*newDirection == AcroBike_GetJumpDirection())
{
Bike_SetBikeStill(); // Bike_SetBikeStill sets speed to standing, but the next line immediately overrides it. could have just reset acroBikeState to 0 here instead of wasting a jump.
@@ -376,10 +376,10 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys
static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
u8 direction;
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
- direction = player_get_direction_upper_nybble();
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ direction = GetPlayerMovementDirection();
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
gPlayerAvatar.runningState = NOT_MOVING;
if (heldKeys & B_BUTTON)
@@ -388,7 +388,7 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16
{
// B button was released.
gPlayerAvatar.bikeFrameCounter = 0;
- if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (!MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
{
// Go back to normal on flat ground
*newDirection = direction;
@@ -423,15 +423,15 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16
static u8 AcroBikeHandleInputBunnyHop(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
u8 direction;
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
- direction = player_get_direction_upper_nybble();
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ direction = GetPlayerMovementDirection();
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
if (!(heldKeys & B_BUTTON))
{
// B button was released
Bike_SetBikeStill();
- if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
{
// even though B was released, dont undo the wheelie on the bumpy slope.
gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
@@ -470,15 +470,15 @@ static u8 AcroBikeHandleInputBunnyHop(u8 *newDirection, u16 newKeys, u16 heldKey
static u8 AcroBikeHandleInputWheelieMoving(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
u8 direction;
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
- direction = player_get_direction_lower_nybble();
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ direction = GetPlayerFacingDirection();
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
if (!(heldKeys & B_BUTTON))
{
// we were moving on a wheelie, but we let go while moving. reset bike still status
Bike_SetBikeStill();
- if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (!MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
{
// we let go of B and arent on a bumpy slope, set state to normal because now we need to handle this
gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
@@ -524,10 +524,10 @@ static u8 AcroBikeHandleInputWheelieMoving(u8 *newDirection, u16 newKeys, u16 he
static u8 AcroBikeHandleInputSidewaysJump(u8 *ptr, u16 newKeys, u16 heldKeys)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- playerMapObj->mapobj_bit_9 = 0;
- FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
+ playerEventObj->facingDirectionLocked = 0;
+ SetEventObjectDirection(playerEventObj, playerEventObj->facingDirection);
gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
}
@@ -545,21 +545,21 @@ static void AcroBikeTransition_FaceDirection(u8 direction)
static void AcroBikeTransition_TurnDirection(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerFaceDirection(direction);
}
static void AcroBikeTransition_Moving(u8 direction)
{
u8 collision;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- AcroBikeTransition_FaceDirection(playerMapObj->placeholder18);
+ AcroBikeTransition_FaceDirection(playerEventObj->movementDirection);
return;
}
collision = get_some_collision(direction);
@@ -580,48 +580,48 @@ static void AcroBikeTransition_Moving(u8 direction)
static void AcroBikeTransition_NormalToWheelie(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerStartWheelie(direction);
}
static void AcroBikeTransition_WheelieToNormal(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerEndWheelie(direction);
}
static void AcroBikeTransition_WheelieIdle(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerIdleWheelie(direction);
}
static void AcroBikeTransition_WheelieHoppingStanding(u8 direction)
{
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
- direction = playerMapObj->placeholder18;
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
+ direction = playerEventObj->movementDirection;
PlayerStandingHoppingWheelie(direction);
}
static void AcroBikeTransition_WheelieHoppingMoving(u8 direction)
{
u8 collision;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- AcroBikeTransition_WheelieHoppingStanding(playerMapObj->placeholder18);
+ AcroBikeTransition_WheelieHoppingStanding(playerEventObj->movementDirection);
return;
}
collision = get_some_collision(direction);
@@ -651,7 +651,7 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction)
static void AcroBikeTransition_SideJump(u8 direction)
{
u8 collision;
- struct MapObject *playerMapObj;
+ struct EventObject *playerEventObj;
collision = get_some_collision(direction);
if (collision != 0)
@@ -669,10 +669,10 @@ static void AcroBikeTransition_SideJump(u8 direction)
return;
}
}
- playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
PlaySE(SE_JITE_PYOKO);
- playerMapObj->mapobj_bit_9 = 1;
- PlayerSetAnimId(sub_8093514(direction), 2);
+ playerEventObj->facingDirectionLocked = 1;
+ PlayerSetAnimId(GetJumpMovementAction(direction), 2);
}
static void AcroBikeTransition_TurnJump(u8 direction)
@@ -683,11 +683,11 @@ static void AcroBikeTransition_TurnJump(u8 direction)
static void AcroBikeTransition_WheelieMoving(u8 direction)
{
u8 collision;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- PlayerIdleWheelie(playerMapObj->placeholder18);
+ PlayerIdleWheelie(playerEventObj->movementDirection);
return;
}
collision = get_some_collision(direction);
@@ -703,7 +703,7 @@ static void AcroBikeTransition_WheelieMoving(u8 direction)
}
else if (collision <= 4)
{
- if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
PlayerIdleWheelie(direction);
else
sub_808B980(direction); //hit wall?
@@ -717,11 +717,11 @@ static void AcroBikeTransition_WheelieMoving(u8 direction)
static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
{
u8 collision;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- PlayerStartWheelie(playerMapObj->placeholder18);
+ PlayerStartWheelie(playerEventObj->movementDirection);
return;
}
collision = get_some_collision(direction);
@@ -737,7 +737,7 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
}
else if (collision <= 4)
{
- if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
+ if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
PlayerIdleWheelie(direction);
else
sub_808B980(direction); //hit wall?
@@ -751,11 +751,11 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
static void AcroBikeTransition_WheelieLoweringMoving(u8 direction)
{
u8 collision;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
{
- PlayerEndWheelie(playerMapObj->placeholder18);
+ PlayerEndWheelie(playerEventObj->movementDirection);
return;
}
collision = get_some_collision(direction);
@@ -880,18 +880,18 @@ static u8 get_some_collision(u8 direction)
s16 x;
s16 y;
u8 metatitleBehavior;
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- x = playerMapObj->coords2.x;
- y = playerMapObj->coords2.y;
+ x = playerEventObj->currentCoords.x;
+ y = playerEventObj->currentCoords.y;
MoveCoords(direction, &x, &y);
metatitleBehavior = MapGridGetMetatileBehaviorAt(x, y);
- return Bike_CheckCollisionTryAdvanceCollisionCount(playerMapObj, x, y, direction, metatitleBehavior);
+ return Bike_CheckCollisionTryAdvanceCollisionCount(playerEventObj, x, y, direction, metatitleBehavior);
}
-static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior)
+static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct EventObject *eventObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior)
{
- u8 collision = CheckForFieldObjectCollision(mapObject, x, y, direction, metatitleBehavior);
+ u8 collision = CheckForEventObjectCollision(eventObject, x, y, direction, metatitleBehavior);
if (collision > 4)
return collision;
@@ -979,7 +979,7 @@ bool8 IsBikingDisallowedByPlayer(void)
bool8 player_should_look_direction_be_enforced_upon_movement(void)
{
- if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE) != FALSE && MetatileBehavior_IsBumpySlope(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) != FALSE)
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE) != FALSE && MetatileBehavior_IsBumpySlope(gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior) != FALSE)
return FALSE;
else
return TRUE;
@@ -1062,7 +1062,7 @@ void Bike_HandleBumpySlopeJump(void)
if (MetatileBehavior_IsBumpySlope(tileBehavior))
{
gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
- sub_808C1B4(player_get_direction_upper_nybble());
+ sub_808C1B4(GetPlayerMovementDirection());
}
}
}
diff --git a/src/data/field_event_obj/base_oam.h b/src/data/field_event_obj/base_oam.h
new file mode 100755
index 000000000..1aa6987c3
--- /dev/null
+++ b/src/data/field_event_obj/base_oam.h
@@ -0,0 +1,52 @@
+#ifndef GUARD_BASE_OAM_H
+#define GUARD_BASE_OAM_H
+
+const struct OamData gEventObjectBaseOam_8x8 = {
+ .shape = 0,
+ .size = 0,
+ .priority = 2
+};
+
+const struct OamData gEventObjectBaseOam_16x8 = {
+ .shape = 1,
+ .size = 0,
+ .priority = 2
+};
+
+const struct OamData gEventObjectBaseOam_16x16 = {
+ .shape = 0,
+ .size = 1,
+ .priority = 2
+};
+
+const struct OamData gEventObjectBaseOam_32x8 = {
+ .shape = 1,
+ .size = 1,
+ .priority = 2
+};
+
+const struct OamData gEventObjectBaseOam_64x32 = {
+ .shape = 1,
+ .size = 3,
+ .priority = 2
+};
+
+const struct OamData gEventObjectBaseOam_16x32 = {
+ .shape = 2,
+ .size = 2,
+ .priority = 2
+};
+
+const struct OamData gEventObjectBaseOam_32x32 = {
+ .shape = 0,
+ .size = 2,
+ .priority = 2
+};
+
+const struct OamData gEventObjectBaseOam_64x64 = {
+ .shape = 0,
+ .size = 3,
+ .priority = 2
+};
+
+#endif //GUARD_BASE_OAM_H
diff --git a/src/data/field_event_obj/berry_tree_graphics_tables.h b/src/data/field_event_obj/berry_tree_graphics_tables.h
new file mode 100755
index 000000000..31d515a82
--- /dev/null
+++ b/src/data/field_event_obj/berry_tree_graphics_tables.h
@@ -0,0 +1,570 @@
+#ifndef GUARD_BERRY_TREE_GRAPHICS_TABLES_H
+#define GUARD_BERRY_TREE_GRAPHICS_TABLES_H
+
+const struct SpriteFrameImage gEventObjectPicTable_PechaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_PechaBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_KelpsyBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_WepearBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_WepearBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_IapapaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_IapapaBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_CheriBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_CheriBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_FigyBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_FigyBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_MagoBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_MagoBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_LumBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_LumBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_RazzBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_RazzBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_GrepaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_GrepaBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_RabutaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_RabutaBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_NomelBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_NomelBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_LeppaBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_LeppaBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_LiechiBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_LiechiBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_HondewBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_HondewBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5};
+
+const struct SpriteFrameImage gEventObjectPicTable_AguavBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_AguavBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_WikiBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_WikiBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_PomegBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_PomegBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_RawstBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_RawstBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_SpelonBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_SpelonBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_ChestoBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_ChestoBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_OranBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_OranBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_PersimBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_PersimBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_SitrusBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_SitrusBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_AspearBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_AspearBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3};
+
+const struct SpriteFrameImage gEventObjectPicTable_PamtreBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_PamtreBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_CornnBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_CornnBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_LansatBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_LansatBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2};
+
+const struct SpriteFrameImage gEventObjectPicTable_DurinBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_DurinBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4};
+
+const struct SpriteFrameImage gEventObjectPicTable_TamatoBerryTree[] = {
+ obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
+ obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_0),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_1),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_2),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_3),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_4),
+ obj_frame_tiles(gEventObjectPic_TamatoBerryTree_5),
+};
+
+const u8 gBerryTreePaletteSlotTable_Tamato[] = {3, 4, 2, 2, 2};
+
+const u8 gDeadBerryTreeEventObjectGraphicsIdTable[] = {EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES};
+
+const u8 gBerryTreeEventObjectGraphicsIdTable[] = {EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES};
+
+const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = {
+ gEventObjectPicTable_CheriBerryTree,
+ gEventObjectPicTable_ChestoBerryTree,
+ gEventObjectPicTable_PechaBerryTree,
+ gEventObjectPicTable_RawstBerryTree,
+ gEventObjectPicTable_AspearBerryTree,
+ gEventObjectPicTable_LeppaBerryTree,
+ gEventObjectPicTable_OranBerryTree,
+ gEventObjectPicTable_PersimBerryTree,
+ gEventObjectPicTable_LumBerryTree,
+ gEventObjectPicTable_SitrusBerryTree,
+ gEventObjectPicTable_FigyBerryTree,
+ gEventObjectPicTable_WikiBerryTree,
+ gEventObjectPicTable_MagoBerryTree,
+ gEventObjectPicTable_AguavBerryTree,
+ gEventObjectPicTable_IapapaBerryTree,
+ gEventObjectPicTable_RazzBerryTree,
+ gEventObjectPicTable_RazzBerryTree,
+ gEventObjectPicTable_MagoBerryTree,
+ gEventObjectPicTable_WepearBerryTree,
+ gEventObjectPicTable_IapapaBerryTree,
+ gEventObjectPicTable_PomegBerryTree,
+ gEventObjectPicTable_KelpsyBerryTree,
+ gEventObjectPicTable_WepearBerryTree,
+ gEventObjectPicTable_HondewBerryTree,
+ gEventObjectPicTable_GrepaBerryTree,
+ gEventObjectPicTable_TamatoBerryTree,
+ gEventObjectPicTable_CornnBerryTree,
+ gEventObjectPicTable_PomegBerryTree,
+ gEventObjectPicTable_RabutaBerryTree,
+ gEventObjectPicTable_NomelBerryTree,
+ gEventObjectPicTable_SpelonBerryTree,
+ gEventObjectPicTable_PamtreBerryTree,
+ gEventObjectPicTable_RabutaBerryTree,
+ gEventObjectPicTable_DurinBerryTree,
+ gEventObjectPicTable_HondewBerryTree,
+ gEventObjectPicTable_LiechiBerryTree,
+ gEventObjectPicTable_HondewBerryTree,
+ gEventObjectPicTable_AguavBerryTree,
+ gEventObjectPicTable_PomegBerryTree,
+ gEventObjectPicTable_GrepaBerryTree,
+ gEventObjectPicTable_LansatBerryTree,
+ gEventObjectPicTable_CornnBerryTree,
+ gEventObjectPicTable_DurinBerryTree,
+};
+
+const u8 *const gBerryTreePaletteSlotTablePointers[] = {
+ gBerryTreePaletteSlotTable_Cheri,
+ gBerryTreePaletteSlotTable_Chesto,
+ gBerryTreePaletteSlotTable_Pecha,
+ gBerryTreePaletteSlotTable_Rawst,
+ gBerryTreePaletteSlotTable_Aspear,
+ gBerryTreePaletteSlotTable_Leppa,
+ gBerryTreePaletteSlotTable_Oran,
+ gBerryTreePaletteSlotTable_Persim,
+ gBerryTreePaletteSlotTable_Lum,
+ gBerryTreePaletteSlotTable_Sitrus,
+ gBerryTreePaletteSlotTable_Figy,
+ gBerryTreePaletteSlotTable_Wiki,
+ gBerryTreePaletteSlotTable_Mago,
+ gBerryTreePaletteSlotTable_Aguav,
+ gBerryTreePaletteSlotTable_Iapapa,
+ gBerryTreePaletteSlotTable_Razz,
+ gBerryTreePaletteSlotTable_Razz,
+ gBerryTreePaletteSlotTable_Mago,
+ gBerryTreePaletteSlotTable_Wepear,
+ gBerryTreePaletteSlotTable_Iapapa,
+ gBerryTreePaletteSlotTable_Pomeg,
+ gBerryTreePaletteSlotTable_Kelpsy,
+ gBerryTreePaletteSlotTable_Wepear,
+ gBerryTreePaletteSlotTable_Hondew,
+ gBerryTreePaletteSlotTable_Grepa,
+ gBerryTreePaletteSlotTable_Tamato,
+ gBerryTreePaletteSlotTable_Cornn,
+ gBerryTreePaletteSlotTable_Pomeg,
+ gBerryTreePaletteSlotTable_Rabuta,
+ gBerryTreePaletteSlotTable_Nomel,
+ gBerryTreePaletteSlotTable_Spelon,
+ gBerryTreePaletteSlotTable_Pamtre,
+ gBerryTreePaletteSlotTable_Rabuta,
+ gBerryTreePaletteSlotTable_Durin,
+ gBerryTreePaletteSlotTable_Hondew,
+ gBerryTreePaletteSlotTable_Liechi,
+ gBerryTreePaletteSlotTable_Hondew,
+ gBerryTreePaletteSlotTable_Aguav,
+ gBerryTreePaletteSlotTable_Pomeg,
+ gBerryTreePaletteSlotTable_Grepa,
+ gBerryTreePaletteSlotTable_Lansat,
+ gBerryTreePaletteSlotTable_Cornn,
+ gBerryTreePaletteSlotTable_Durin,
+};
+
+const u8 *const gBerryTreeEventObjectGraphicsIdTablePointers[] = {
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+ gBerryTreeEventObjectGraphicsIdTable,
+};
+
+
+#endif //GUARD_BERRY_TREE_GRAPHICS_TABLES_H
diff --git a/src/data/field_event_obj/event_object_anims.h b/src/data/field_event_obj/event_object_anims.h
new file mode 100755
index 000000000..9b897651d
--- /dev/null
+++ b/src/data/field_event_obj/event_object_anims.h
@@ -0,0 +1,1176 @@
+#ifndef GUARD_EVENT_OBJECT_ANIMS_H
+#define GUARD_EVENT_OBJECT_ANIMS_H
+
+const union AnimCmd gEventObjectImageAnim_StayStill[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpFaceSouth[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpFaceNorth[] =
+{
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpFaceWest[] =
+{
+ ANIMCMD_FRAME(2, 16),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpFaceEast[] =
+{
+ ANIMCMD_FRAME(2, 16, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoSouth[] =
+{
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoNorth[] =
+{
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(4, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoWest[] =
+{
+ ANIMCMD_FRAME(5, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoEast[] =
+{
+ ANIMCMD_FRAME(5, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(6, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFastSouth[] =
+{
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFastNorth[] =
+{
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(4, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFastWest[] =
+{
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFastEast[] =
+{
+ ANIMCMD_FRAME(5, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(6, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFasterSouth[] =
+{
+ ANIMCMD_FRAME(3, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(3, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFasterNorth[] =
+{
+ ANIMCMD_FRAME(4, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_FRAME(4, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFasterWest[] =
+{
+ ANIMCMD_FRAME(5, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_FRAME(6, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFasterEast[] =
+{
+ ANIMCMD_FRAME(5, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(6, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFastestSouth[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(3, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFastestNorth[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(4, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFastestWest[] =
+{
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_QuintyPlumpGoFastestEast[] =
+{
+ ANIMCMD_FRAME(5, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(6, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_FaceSouth[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_FaceNorth[] =
+{
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_FaceWest[] =
+{
+ ANIMCMD_FRAME(2, 16),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_FaceEast[] =
+{
+ ANIMCMD_FRAME(2, 16, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoSouth[] =
+{
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoNorth[] =
+{
+ ANIMCMD_FRAME(5, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoWest[] =
+{
+ ANIMCMD_FRAME(7, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoEast[] =
+{
+ ANIMCMD_FRAME(7, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFastSouth[] =
+{
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFastNorth[] =
+{
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFastWest[] =
+{
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFastEast[] =
+{
+ ANIMCMD_FRAME(7, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFasterSouth[] =
+{
+ ANIMCMD_FRAME(3, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(4, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFasterNorth[] =
+{
+ ANIMCMD_FRAME(5, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_FRAME(6, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFasterWest[] =
+{
+ ANIMCMD_FRAME(7, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_FRAME(8, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFasterEast[] =
+{
+ ANIMCMD_FRAME(7, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFastestSouth[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFastestNorth[] =
+{
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFastestWest[] =
+{
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GoFastestEast[] =
+{
+ ANIMCMD_FRAME(7, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_RunSouth[] =
+{
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(9, 3),
+ ANIMCMD_FRAME(13, 5),
+ ANIMCMD_FRAME(9, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_RunNorth[] =
+{
+ ANIMCMD_FRAME(14, 5),
+ ANIMCMD_FRAME(10, 3),
+ ANIMCMD_FRAME(15, 5),
+ ANIMCMD_FRAME(10, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_RunWest[] =
+{
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(11, 3),
+ ANIMCMD_FRAME(17, 5),
+ ANIMCMD_FRAME(11, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_RunEast[] =
+{
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(11, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(17, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(11, 3, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_FieldMove[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_GetOnOffSurfBlobSouth[] =
+{
+ ANIMCMD_FRAME(9, 32),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GetOnOffSurfBlobNorth[] =
+{
+ ANIMCMD_FRAME(10, 32),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GetOnOffSurfBlobWest[] =
+{
+ ANIMCMD_FRAME(11, 32),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_GetOnOffSurfBlobEast[] =
+{
+ ANIMCMD_FRAME(11, 32, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_BunnyHoppyBackWheelSouth[] =
+{
+ ANIMCMD_FRAME(9, 4),
+ ANIMCMD_FRAME(10, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BunnyHoppyBackWheelNorth[] =
+{
+ ANIMCMD_FRAME(13, 4),
+ ANIMCMD_FRAME(14, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BunnyHoppyBackWheelWest[] =
+{
+ ANIMCMD_FRAME(17, 4),
+ ANIMCMD_FRAME(18, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BunnyHoppyBackWheelEast[] =
+{
+ ANIMCMD_FRAME(17, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BunnyHoppyFrontWheelSouth[] =
+{
+ ANIMCMD_FRAME(11, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BunnyHoppyFrontWheelNorth[] =
+{
+ ANIMCMD_FRAME(15, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BunnyHoppyFrontWheelWest[] =
+{
+ ANIMCMD_FRAME(19, 4),
+ ANIMCMD_FRAME(20, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BunnyHoppyFrontWheelEast[] =
+{
+ ANIMCMD_FRAME(19, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(20, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_StandingWheelieBackWheelSouth[] =
+{
+ ANIMCMD_FRAME(9, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_StandingWheelieBackWheelNorth[] =
+{
+ ANIMCMD_FRAME(13, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_StandingWheelieBackWheelWest[] =
+{
+ ANIMCMD_FRAME(17, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_StandingWheelieBackWheelEast[] =
+{
+ ANIMCMD_FRAME(17, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_StandingWheelieFrontWheelSouth[] =
+{
+ ANIMCMD_FRAME(11, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_StandingWheelieFrontWheelNorth[] =
+{
+ ANIMCMD_FRAME(15, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_StandingWheelieFrontWheelWest[] =
+{
+ ANIMCMD_FRAME(19, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_StandingWheelieFrontWheelEast[] =
+{
+ ANIMCMD_FRAME(19, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_MovingWheelieSouth[] =
+{
+ ANIMCMD_FRAME(21, 4),
+ ANIMCMD_FRAME(10, 4),
+ ANIMCMD_FRAME(22, 4),
+ ANIMCMD_FRAME(10, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_MovingWheelieNorth[] =
+{
+ ANIMCMD_FRAME(23, 4),
+ ANIMCMD_FRAME(14, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_FRAME(14, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_MovingWheelieWest[] =
+{
+ ANIMCMD_FRAME(25, 4),
+ ANIMCMD_FRAME(18, 4),
+ ANIMCMD_FRAME(26, 4),
+ ANIMCMD_FRAME(18, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_MovingWheelieEast[] =
+{
+ ANIMCMD_FRAME(25, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(26, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_BerryTreeStage0[] =
+{
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BerryTreeStage1[] =
+{
+ ANIMCMD_FRAME(1, 32),
+ ANIMCMD_FRAME(2, 32),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BerryTreeStage2[] =
+{
+ ANIMCMD_FRAME(3, 48),
+ ANIMCMD_FRAME(4, 48),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BerryTreeStage3[] =
+{
+ ANIMCMD_FRAME(5, 32),
+ ANIMCMD_FRAME(5, 32),
+ ANIMCMD_FRAME(6, 32),
+ ANIMCMD_FRAME(6, 32),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_BerryTreeStage4[] =
+{
+ ANIMCMD_FRAME(7, 48),
+ ANIMCMD_FRAME(7, 48),
+ ANIMCMD_FRAME(8, 48),
+ ANIMCMD_FRAME(8, 48),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_NurseBow[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(9, 32),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_RockBreak[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_TreeCut[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_FRAME(2, 6),
+ ANIMCMD_FRAME(3, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_TakeOutRodSouth[] =
+{
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(9, 4),
+ ANIMCMD_FRAME(10, 4),
+ ANIMCMD_FRAME(11, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_TakeOutRodNorth[] =
+{
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_TakeOutRodWest[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_TakeOutRodEast[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_PutAwayRodSouth[] =
+{
+ ANIMCMD_FRAME(11, 4),
+ ANIMCMD_FRAME(10, 6),
+ ANIMCMD_FRAME(9, 6),
+ ANIMCMD_FRAME(8, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_PutAwayRodNorth[] =
+{
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_FRAME(6, 6),
+ ANIMCMD_FRAME(5, 6),
+ ANIMCMD_FRAME(4, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_PutAwayRodWest[] =
+{
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_PutAwayRodEast[] =
+{
+ ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_HookedPokemonSouth[] =
+{
+ ANIMCMD_FRAME(10, 6),
+ ANIMCMD_FRAME(11, 6),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(11, 30),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_HookedPokemonNorth[] =
+{
+ ANIMCMD_FRAME(6, 6),
+ ANIMCMD_FRAME(7, 6),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(7, 30),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_HookedPokemonWest[] =
+{
+ ANIMCMD_FRAME(2, 6),
+ ANIMCMD_FRAME(3, 6),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(3, 30),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_HookedPokemonEast[] =
+{
+ ANIMCMD_FRAME(2, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(3, 6, .hFlip = TRUE),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(3, 30, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gEventObjectRotScalAnim_8508FD8[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_LOOP(7),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gEventObjectRotScalAnim_8509008[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_LOOP(15),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_LOOP(15),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gEventObjectRotScalAnim_8509040[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 10, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gEventObjectRotScalAnim_8509050[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 10, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gEventObjectRotScalAnim_8509060[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 1),
+ AFFINEANIMCMD_LOOP(8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gEventObjectRotScalAnim_8509078[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
+ AFFINEANIMCMD_LOOP(8),
+ AFFINEANIMCMD_END,
+};
+
+const union AnimCmd gEventObjectImageAnim_HoOhFlapWings[] =
+{
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_HoOhStayStill[] =
+{
+ ANIMCMD_FRAME(3, 16),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Inanimate[] = {
+ gEventObjectImageAnim_StayStill,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_QuintyPlump[] = {
+ gEventObjectImageAnim_QuintyPlumpFaceSouth,
+ gEventObjectImageAnim_QuintyPlumpFaceNorth,
+ gEventObjectImageAnim_QuintyPlumpFaceWest,
+ gEventObjectImageAnim_QuintyPlumpFaceEast,
+ gEventObjectImageAnim_QuintyPlumpGoSouth,
+ gEventObjectImageAnim_QuintyPlumpGoNorth,
+ gEventObjectImageAnim_QuintyPlumpGoWest,
+ gEventObjectImageAnim_QuintyPlumpGoEast,
+ gEventObjectImageAnim_QuintyPlumpGoFastSouth,
+ gEventObjectImageAnim_QuintyPlumpGoFastNorth,
+ gEventObjectImageAnim_QuintyPlumpGoFastWest,
+ gEventObjectImageAnim_QuintyPlumpGoFastEast,
+ gEventObjectImageAnim_QuintyPlumpGoFasterSouth,
+ gEventObjectImageAnim_QuintyPlumpGoFasterNorth,
+ gEventObjectImageAnim_QuintyPlumpGoFasterWest,
+ gEventObjectImageAnim_QuintyPlumpGoFasterEast,
+ gEventObjectImageAnim_QuintyPlumpGoFastestSouth,
+ gEventObjectImageAnim_QuintyPlumpGoFastestNorth,
+ gEventObjectImageAnim_QuintyPlumpGoFastestWest,
+ gEventObjectImageAnim_QuintyPlumpGoFastestEast,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Standard[] = {
+ gEventObjectImageAnim_FaceSouth,
+ gEventObjectImageAnim_FaceNorth,
+ gEventObjectImageAnim_FaceWest,
+ gEventObjectImageAnim_FaceEast,
+ gEventObjectImageAnim_GoSouth,
+ gEventObjectImageAnim_GoNorth,
+ gEventObjectImageAnim_GoWest,
+ gEventObjectImageAnim_GoEast,
+ gEventObjectImageAnim_GoFastSouth,
+ gEventObjectImageAnim_GoFastNorth,
+ gEventObjectImageAnim_GoFastWest,
+ gEventObjectImageAnim_GoFastEast,
+ gEventObjectImageAnim_GoFasterSouth,
+ gEventObjectImageAnim_GoFasterNorth,
+ gEventObjectImageAnim_GoFasterWest,
+ gEventObjectImageAnim_GoFasterEast,
+ gEventObjectImageAnim_GoFastestSouth,
+ gEventObjectImageAnim_GoFastestNorth,
+ gEventObjectImageAnim_GoFastestWest,
+ gEventObjectImageAnim_GoFastestEast,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_HoOh[] = {
+ gEventObjectImageAnim_FaceSouth,
+ gEventObjectImageAnim_FaceNorth,
+ gEventObjectImageAnim_FaceWest,
+ gEventObjectImageAnim_FaceEast,
+ gEventObjectImageAnim_HoOhFlapWings,
+ gEventObjectImageAnim_HoOhStayStill,
+ gEventObjectImageAnim_GoWest,
+ gEventObjectImageAnim_GoEast,
+ gEventObjectImageAnim_GoFastSouth,
+ gEventObjectImageAnim_GoFastNorth,
+ gEventObjectImageAnim_GoFastWest,
+ gEventObjectImageAnim_GoFastEast,
+ gEventObjectImageAnim_GoFasterSouth,
+ gEventObjectImageAnim_GoFasterNorth,
+ gEventObjectImageAnim_GoFasterWest,
+ gEventObjectImageAnim_GoFasterEast,
+ gEventObjectImageAnim_GoFastestSouth,
+ gEventObjectImageAnim_GoFastestNorth,
+ gEventObjectImageAnim_GoFastestWest,
+ gEventObjectImageAnim_GoFastestEast,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Groudon3[] = {
+ gEventObjectImageAnim_FaceSouth,
+ gEventObjectImageAnim_FaceNorth,
+ gEventObjectImageAnim_FaceWest,
+ gEventObjectImageAnim_FaceEast,
+ gEventObjectImageAnim_GoSouth,
+ gEventObjectImageAnim_GoEast,
+ gEventObjectImageAnim_GoWest,
+ gEventObjectImageAnim_GoEast,
+ gEventObjectImageAnim_GoFastSouth,
+ gEventObjectImageAnim_GoFastEast,
+ gEventObjectImageAnim_GoFastWest,
+ gEventObjectImageAnim_GoFastEast,
+ gEventObjectImageAnim_GoFasterSouth,
+ gEventObjectImageAnim_GoFasterEast,
+ gEventObjectImageAnim_GoFasterWest,
+ gEventObjectImageAnim_GoFasterEast,
+ gEventObjectImageAnim_GoFastestSouth,
+ gEventObjectImageAnim_GoFastestEast,
+ gEventObjectImageAnim_GoFastestWest,
+ gEventObjectImageAnim_GoFastestEast,
+};
+
+const union AnimCmd gEventObjectImageAnim_85091F0[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_85091F8[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_8509200[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_8509208[] =
+{
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_8509210[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_8509218[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_8509220[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_8509228[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gEventObjectImageAnim_8509230[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Rayquaza2[] = {
+ gEventObjectImageAnim_8509218,
+ gEventObjectImageAnim_8509220,
+ gEventObjectImageAnim_8509228,
+ gEventObjectImageAnim_8509230,
+ gEventObjectImageAnim_8509200,
+ gEventObjectImageAnim_85091F8,
+ gEventObjectImageAnim_8509208,
+ gEventObjectImageAnim_8509210,
+ gEventObjectImageAnim_8509200,
+ gEventObjectImageAnim_85091F8,
+ gEventObjectImageAnim_85091F0,
+ gEventObjectImageAnim_8509210,
+ gEventObjectImageAnim_8509200,
+ gEventObjectImageAnim_85091F8,
+ gEventObjectImageAnim_8509208,
+ gEventObjectImageAnim_8509210,
+ gEventObjectImageAnim_8509200,
+ gEventObjectImageAnim_85091F8,
+ gEventObjectImageAnim_8509208,
+ gEventObjectImageAnim_8509210,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_BrendanMayNormal[] = {
+ gEventObjectImageAnim_FaceSouth,
+ gEventObjectImageAnim_FaceNorth,
+ gEventObjectImageAnim_FaceWest,
+ gEventObjectImageAnim_FaceEast,
+ gEventObjectImageAnim_GoSouth,
+ gEventObjectImageAnim_GoNorth,
+ gEventObjectImageAnim_GoWest,
+ gEventObjectImageAnim_GoEast,
+ gEventObjectImageAnim_GoFastSouth,
+ gEventObjectImageAnim_GoFastNorth,
+ gEventObjectImageAnim_GoFastWest,
+ gEventObjectImageAnim_GoFastEast,
+ gEventObjectImageAnim_GoFasterSouth,
+ gEventObjectImageAnim_GoFasterNorth,
+ gEventObjectImageAnim_GoFasterWest,
+ gEventObjectImageAnim_GoFasterEast,
+ gEventObjectImageAnim_GoFastestSouth,
+ gEventObjectImageAnim_GoFastestNorth,
+ gEventObjectImageAnim_GoFastestWest,
+ gEventObjectImageAnim_GoFastestEast,
+ gEventObjectImageAnim_RunSouth,
+ gEventObjectImageAnim_RunNorth,
+ gEventObjectImageAnim_RunWest,
+ gEventObjectImageAnim_RunEast,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_AcroBike[] = {
+ gEventObjectImageAnim_FaceSouth,
+ gEventObjectImageAnim_FaceNorth,
+ gEventObjectImageAnim_FaceWest,
+ gEventObjectImageAnim_FaceEast,
+ gEventObjectImageAnim_GoSouth,
+ gEventObjectImageAnim_GoNorth,
+ gEventObjectImageAnim_GoWest,
+ gEventObjectImageAnim_GoEast,
+ gEventObjectImageAnim_GoFastSouth,
+ gEventObjectImageAnim_GoFastNorth,
+ gEventObjectImageAnim_GoFastWest,
+ gEventObjectImageAnim_GoFastEast,
+ gEventObjectImageAnim_GoFasterSouth,
+ gEventObjectImageAnim_GoFasterNorth,
+ gEventObjectImageAnim_GoFasterWest,
+ gEventObjectImageAnim_GoFasterEast,
+ gEventObjectImageAnim_GoFastestSouth,
+ gEventObjectImageAnim_GoFastestNorth,
+ gEventObjectImageAnim_GoFastestWest,
+ gEventObjectImageAnim_GoFastestEast,
+ gEventObjectImageAnim_BunnyHoppyBackWheelSouth,
+ gEventObjectImageAnim_BunnyHoppyBackWheelNorth,
+ gEventObjectImageAnim_BunnyHoppyBackWheelWest,
+ gEventObjectImageAnim_BunnyHoppyBackWheelEast,
+ gEventObjectImageAnim_BunnyHoppyFrontWheelSouth,
+ gEventObjectImageAnim_BunnyHoppyFrontWheelNorth,
+ gEventObjectImageAnim_BunnyHoppyFrontWheelWest,
+ gEventObjectImageAnim_BunnyHoppyFrontWheelEast,
+ gEventObjectImageAnim_StandingWheelieBackWheelSouth,
+ gEventObjectImageAnim_StandingWheelieBackWheelNorth,
+ gEventObjectImageAnim_StandingWheelieBackWheelWest,
+ gEventObjectImageAnim_StandingWheelieBackWheelEast,
+ gEventObjectImageAnim_StandingWheelieFrontWheelSouth,
+ gEventObjectImageAnim_StandingWheelieFrontWheelNorth,
+ gEventObjectImageAnim_StandingWheelieFrontWheelWest,
+ gEventObjectImageAnim_StandingWheelieFrontWheelEast,
+ gEventObjectImageAnim_MovingWheelieSouth,
+ gEventObjectImageAnim_MovingWheelieNorth,
+ gEventObjectImageAnim_MovingWheelieWest,
+ gEventObjectImageAnim_MovingWheelieEast,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Surfing[] = {
+ gEventObjectImageAnim_FaceSouth,
+ gEventObjectImageAnim_FaceNorth,
+ gEventObjectImageAnim_FaceWest,
+ gEventObjectImageAnim_FaceEast,
+ gEventObjectImageAnim_GoSouth,
+ gEventObjectImageAnim_GoNorth,
+ gEventObjectImageAnim_GoWest,
+ gEventObjectImageAnim_GoEast,
+ gEventObjectImageAnim_GoFastSouth,
+ gEventObjectImageAnim_GoFastNorth,
+ gEventObjectImageAnim_GoFastWest,
+ gEventObjectImageAnim_GoFastEast,
+ gEventObjectImageAnim_GoFasterSouth,
+ gEventObjectImageAnim_GoFasterNorth,
+ gEventObjectImageAnim_GoFasterWest,
+ gEventObjectImageAnim_GoFasterEast,
+ gEventObjectImageAnim_GoFastestSouth,
+ gEventObjectImageAnim_GoFastestNorth,
+ gEventObjectImageAnim_GoFastestWest,
+ gEventObjectImageAnim_GoFastestEast,
+ gEventObjectImageAnim_GetOnOffSurfBlobSouth,
+ gEventObjectImageAnim_GetOnOffSurfBlobNorth,
+ gEventObjectImageAnim_GetOnOffSurfBlobWest,
+ gEventObjectImageAnim_GetOnOffSurfBlobEast,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Nurse[] = {
+ gEventObjectImageAnim_FaceSouth,
+ gEventObjectImageAnim_FaceNorth,
+ gEventObjectImageAnim_FaceWest,
+ gEventObjectImageAnim_FaceEast,
+ gEventObjectImageAnim_GoSouth,
+ gEventObjectImageAnim_GoNorth,
+ gEventObjectImageAnim_GoWest,
+ gEventObjectImageAnim_GoEast,
+ gEventObjectImageAnim_GoFastSouth,
+ gEventObjectImageAnim_GoFastNorth,
+ gEventObjectImageAnim_GoFastWest,
+ gEventObjectImageAnim_GoFastEast,
+ gEventObjectImageAnim_GoFasterSouth,
+ gEventObjectImageAnim_GoFasterNorth,
+ gEventObjectImageAnim_GoFasterWest,
+ gEventObjectImageAnim_GoFasterEast,
+ gEventObjectImageAnim_GoFastestSouth,
+ gEventObjectImageAnim_GoFastestNorth,
+ gEventObjectImageAnim_GoFastestWest,
+ gEventObjectImageAnim_GoFastestEast,
+ gEventObjectImageAnim_NurseBow,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_FieldMove[] = {
+ gEventObjectImageAnim_FieldMove,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_BerryTree[] = {
+ gEventObjectImageAnim_BerryTreeStage0,
+ gEventObjectImageAnim_BerryTreeStage1,
+ gEventObjectImageAnim_BerryTreeStage2,
+ gEventObjectImageAnim_BerryTreeStage3,
+ gEventObjectImageAnim_BerryTreeStage4,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_BreakableRock[] = {
+ gEventObjectImageAnim_StayStill,
+ gEventObjectImageAnim_RockBreak,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_CuttableTree[] = {
+ gEventObjectImageAnim_StayStill,
+ gEventObjectImageAnim_TreeCut,
+};
+
+const union AnimCmd *const gEventObjectImageAnimTable_Fishing[] = {
+ gEventObjectImageAnim_TakeOutRodSouth,
+ gEventObjectImageAnim_TakeOutRodNorth,
+ gEventObjectImageAnim_TakeOutRodWest,
+ gEventObjectImageAnim_TakeOutRodEast,
+ gEventObjectImageAnim_PutAwayRodSouth,
+ gEventObjectImageAnim_PutAwayRodNorth,
+ gEventObjectImageAnim_PutAwayRodWest,
+ gEventObjectImageAnim_PutAwayRodEast,
+ gEventObjectImageAnim_HookedPokemonSouth,
+ gEventObjectImageAnim_HookedPokemonNorth,
+ gEventObjectImageAnim_HookedPokemonWest,
+ gEventObjectImageAnim_HookedPokemonEast,
+};
+
+const union AffineAnimCmd *const gEventObjectRotScalAnimTable_KyogreGroudon[] = {
+ gEventObjectRotScalAnim_8508FD8,
+ gEventObjectRotScalAnim_8509008,
+ gEventObjectRotScalAnim_8509050,
+ gEventObjectRotScalAnim_8509040,
+ gEventObjectRotScalAnim_8509078,
+ gEventObjectRotScalAnim_8509060,
+};
+
+const struct UnkStruct_085094AC gUnknown_085094AC[] = {
+ {
+ .anims = gEventObjectImageAnimTable_QuintyPlump,
+ .animPos = {1, 3, 0, 2},
+ },
+ {
+ .anims = gEventObjectImageAnimTable_Standard,
+ .animPos = {1, 3, 0, 2},
+ },
+ {
+ .anims = gEventObjectImageAnimTable_BrendanMayNormal,
+ .animPos = {1, 3, 0, 2},
+ },
+ {
+ .anims = gEventObjectImageAnimTable_AcroBike,
+ .animPos = {1, 3, 0, 2},
+ },
+ {
+ .anims = gEventObjectImageAnimTable_Surfing,
+ .animPos = {1, 3, 0, 2},
+ },
+ {
+ .anims = gEventObjectImageAnimTable_Nurse,
+ .animPos = {1, 3, 0, 2},
+ },
+ {
+ .anims = gEventObjectImageAnimTable_Fishing,
+ .animPos = {1, 3, 0, 2},
+ },
+ {
+ NULL,
+ {0, 0, 0, 0},
+ },
+};
+
+#endif //GUARD_EVENT_OBJECT_ANIMS_H
diff --git a/src/data/field_event_obj/event_object_graphics.h b/src/data/field_event_obj/event_object_graphics.h
new file mode 100755
index 000000000..3d4303189
--- /dev/null
+++ b/src/data/field_event_obj/event_object_graphics.h
@@ -0,0 +1,1667 @@
+#ifndef GUARD_EVENT_OBJECT_GFX_H
+#define GUARD_EVENT_OBJECT_GFX_H
+
+const u32 gEventObjectPic_BrendanNormal_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/00.4bpp");
+const u32 gEventObjectPic_BrendanNormal_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/01.4bpp");
+const u32 gEventObjectPic_BrendanNormal_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/02.4bpp");
+const u32 gEventObjectPic_BrendanNormal_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/03.4bpp");
+const u32 gEventObjectPic_BrendanNormal_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/04.4bpp");
+const u32 gEventObjectPic_BrendanNormal_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/05.4bpp");
+const u32 gEventObjectPic_BrendanNormal_6[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/06.4bpp");
+const u32 gEventObjectPic_BrendanNormal_7[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/07.4bpp");
+const u32 gEventObjectPic_BrendanNormal_8[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/08.4bpp");
+const u32 gEventObjectPic_BrendanNormal_9[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/09.4bpp");
+const u32 gEventObjectPic_BrendanNormal_10[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/10.4bpp");
+const u32 gEventObjectPic_BrendanNormal_11[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/11.4bpp");
+const u32 gEventObjectPic_BrendanNormal_12[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/12.4bpp");
+const u32 gEventObjectPic_BrendanNormal_13[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/13.4bpp");
+const u32 gEventObjectPic_BrendanNormal_14[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/14.4bpp");
+const u32 gEventObjectPic_BrendanNormal_15[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/15.4bpp");
+const u32 gEventObjectPic_BrendanNormal_16[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/16.4bpp");
+const u32 gEventObjectPic_BrendanNormal_17[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/normal/17.4bpp");
+const u16 gEventObjectPalette8[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_08.gbapal");
+const u32 gEventObjectPic_RubySapphireBrendan_0[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/00.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_1[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/01.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_2[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/02.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_3[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/03.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_4[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/04.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_5[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/05.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_6[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/06.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_7[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/07.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_8[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/08.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_9[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/09.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_10[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/10.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_11[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/11.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_12[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/12.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_13[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/13.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_14[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/14.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_15[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/15.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_16[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/16.4bpp");
+const u32 gEventObjectPic_RubySapphireBrendan_17[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_brendan/17.4bpp");
+const u16 gEventObjectPalette33[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_33.gbapal");
+const u16 NullPalette_8499A38[16] = {};
+const u16 NullPalette_8499A58[16] = {};
+const u16 NullPalette_8499A78[16] = {};
+const u16 NullPalette_8499A98[16] = {};
+const u16 NullPalette_8499AB8[16] = {};
+const u16 NullPalette_8499AD8[16] = {};
+const u16 NullPalette_8499AF8[16] = {};
+const u16 NullPalette_8499B18[16] = {};
+const u16 NullPalette_8499B38[16] = {};
+const u16 NullPalette_8499B58[16] = {};
+const u16 NullPalette_8499B78[16] = {};
+const u16 NullPalette_8499B98[16] = {};
+const u16 NullPalette_8499BB8[16] = {};
+const u16 NullPalette_8499BD8[16] = {};
+const u16 NullPalette_8499BF8[16] = {};
+const u16 gEventObjectPalette9[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_09.gbapal");
+const u16 gEventObjectPalette10[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_10.gbapal");
+const u32 gEventObjectPic_BrendanFieldMove_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/0.4bpp");
+const u32 gEventObjectPic_BrendanFieldMove_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/1.4bpp");
+const u32 gEventObjectPic_BrendanFieldMove_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/2.4bpp");
+const u32 gEventObjectPic_BrendanFieldMove_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/3.4bpp");
+const u32 gEventObjectPic_BrendanFieldMove_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/field_move/4.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/0.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/3.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/1.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/4.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/2.4bpp");
+const u32 gEventObjectPic_BrendanSurfing_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/surfing/5.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/0.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/1.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/2.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/3.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/4.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/5.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_6[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/6.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_7[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/7.4bpp");
+const u32 gEventObjectPic_BrendanMachBike_8[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/mach_bike/8.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/00.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/01.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/02.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/03.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/04.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/05.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_6[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/06.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_7[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/07.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_8[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/08.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_9[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/09.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_10[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/10.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_11[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/11.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_12[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/12.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_13[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/13.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_14[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/14.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_15[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/15.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_16[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/16.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_17[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/17.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_18[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/18.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_19[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/19.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_20[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/20.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_21[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/21.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_22[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/22.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_23[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/23.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_24[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/24.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_25[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/25.4bpp");
+const u32 gEventObjectPic_BrendanAcroBike_26[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/acro_bike/26.4bpp");
+const u32 gEventObjectPic_BrendanFishing_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/00.4bpp");
+const u32 gEventObjectPic_BrendanFishing_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/01.4bpp");
+const u32 gEventObjectPic_BrendanFishing_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/02.4bpp");
+const u32 gEventObjectPic_BrendanFishing_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/03.4bpp");
+const u32 gEventObjectPic_BrendanFishing_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/04.4bpp");
+const u32 gEventObjectPic_BrendanFishing_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/05.4bpp");
+const u32 gEventObjectPic_BrendanFishing_6[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/06.4bpp");
+const u32 gEventObjectPic_BrendanFishing_7[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/07.4bpp");
+const u32 gEventObjectPic_BrendanFishing_8[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/08.4bpp");
+const u32 gEventObjectPic_BrendanFishing_9[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/09.4bpp");
+const u32 gEventObjectPic_BrendanFishing_10[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/10.4bpp");
+const u32 gEventObjectPic_BrendanFishing_11[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/fishing/11.4bpp");
+const u32 gEventObjectPic_BrendanWatering_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/0.4bpp");
+const u32 gEventObjectPic_BrendanWatering_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/3.4bpp");
+const u32 gEventObjectPic_BrendanWatering_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/1.4bpp");
+const u32 gEventObjectPic_BrendanWatering_4[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/4.4bpp");
+const u32 gEventObjectPic_BrendanWatering_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/2.4bpp");
+const u32 gEventObjectPic_BrendanWatering_5[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/watering/5.4bpp");
+const u32 gEventObjectPic_BrendanDecorating[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/decorating.4bpp");
+const u32 gEventObjectPic_MayDecorating[] = INCBIN_U32("graphics/event_objects/pics/people/may/decorating.4bpp");
+const u32 gEventObjectPic_BrendanUnderwater_0[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/underwater/0.4bpp");
+const u32 gEventObjectPic_BrendanUnderwater_1[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/underwater/1.4bpp");
+const u32 gEventObjectPic_BrendanUnderwater_2[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/underwater/2.4bpp");
+const u32 gEventObjectPic_BrendanUnderwater_3[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/underwater/3.4bpp");
+const u32 gEventObjectPic_MayUnderwater_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/underwater/0.4bpp");
+const u32 gEventObjectPic_MayUnderwater_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/underwater/1.4bpp");
+const u32 gEventObjectPic_MayUnderwater_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/underwater/2.4bpp");
+const u32 gEventObjectPic_MayUnderwater_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/underwater/3.4bpp");
+const u16 gEventObjectPalette11[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_11.gbapal");
+const u32 gEventObjectPic_MayNormal_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/00.4bpp");
+const u32 gEventObjectPic_MayNormal_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/01.4bpp");
+const u32 gEventObjectPic_MayNormal_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/02.4bpp");
+const u32 gEventObjectPic_MayNormal_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/03.4bpp");
+const u32 gEventObjectPic_MayNormal_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/04.4bpp");
+const u32 gEventObjectPic_MayNormal_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/05.4bpp");
+const u32 gEventObjectPic_MayNormal_6[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/06.4bpp");
+const u32 gEventObjectPic_MayNormal_7[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/07.4bpp");
+const u32 gEventObjectPic_MayNormal_8[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/08.4bpp");
+const u32 gEventObjectPic_MayNormal_9[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/09.4bpp");
+const u32 gEventObjectPic_MayNormal_10[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/10.4bpp");
+const u32 gEventObjectPic_MayNormal_11[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/11.4bpp");
+const u32 gEventObjectPic_MayNormal_12[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/12.4bpp");
+const u32 gEventObjectPic_MayNormal_13[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/13.4bpp");
+const u32 gEventObjectPic_MayNormal_14[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/14.4bpp");
+const u32 gEventObjectPic_MayNormal_15[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/15.4bpp");
+const u32 gEventObjectPic_MayNormal_16[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/16.4bpp");
+const u32 gEventObjectPic_MayNormal_17[] = INCBIN_U32("graphics/event_objects/pics/people/may/normal/17.4bpp");
+const u16 gEventObjectPalette17[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_17.gbapal");
+const u16 gEventObjectPalette18[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_18.gbapal");
+const u32 gEventObjectPic_RubySapphireMay_0[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/00.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_1[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/01.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_2[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/02.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_3[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/03.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_4[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/04.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_5[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/05.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_6[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/06.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_7[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/07.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_8[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/08.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_9[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/09.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_10[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/10.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_11[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/11.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_12[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/12.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_13[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/13.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_14[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/14.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_15[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/15.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_16[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/16.4bpp");
+const u32 gEventObjectPic_RubySapphireMay_17[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_may/17.4bpp");
+const u16 gEventObjectPalette34[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_34.gbapal");
+const u16 gUnusedEventObjectPalette[] = INCBIN_U16("graphics/event_objects/palettes/unused_palette.gbapal");
+const u16 NullPalette_84A54F8[16] = {};
+const u16 NullPalette_84A5518[16] = {};
+const u16 NullPalette_84A5538[16] = {};
+const u16 NullPalette_84A5558[16] = {};
+const u16 NullPalette_84A5578[16] = {};
+const u16 NullPalette_84A5598[16] = {};
+const u16 NullPalette_84A55B8[16] = {};
+const u16 NullPalette_84A55D8[16] = {};
+const u16 NullPalette_84A55F8[16] = {};
+const u16 NullPalette_84A5618[16] = {};
+const u16 NullPalette_84A5638[16] = {};
+const u16 NullPalette_84A5658[16] = {};
+const u16 NullPalette_84A5678[16] = {};
+const u16 NullPalette_84A5698[16] = {};
+const u32 gEventObjectPic_MayMachBike_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/0.4bpp");
+const u32 gEventObjectPic_MayMachBike_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/1.4bpp");
+const u32 gEventObjectPic_MayMachBike_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/2.4bpp");
+const u32 gEventObjectPic_MayMachBike_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/3.4bpp");
+const u32 gEventObjectPic_MayMachBike_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/4.4bpp");
+const u32 gEventObjectPic_MayMachBike_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/5.4bpp");
+const u32 gEventObjectPic_MayMachBike_6[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/6.4bpp");
+const u32 gEventObjectPic_MayMachBike_7[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/7.4bpp");
+const u32 gEventObjectPic_MayMachBike_8[] = INCBIN_U32("graphics/event_objects/pics/people/may/mach_bike/8.4bpp");
+const u32 gEventObjectPic_MayAcroBike_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/00.4bpp");
+const u32 gEventObjectPic_MayAcroBike_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/01.4bpp");
+const u32 gEventObjectPic_MayAcroBike_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/02.4bpp");
+const u32 gEventObjectPic_MayAcroBike_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/03.4bpp");
+const u32 gEventObjectPic_MayAcroBike_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/04.4bpp");
+const u32 gEventObjectPic_MayAcroBike_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/05.4bpp");
+const u32 gEventObjectPic_MayAcroBike_6[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/06.4bpp");
+const u32 gEventObjectPic_MayAcroBike_7[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/07.4bpp");
+const u32 gEventObjectPic_MayAcroBike_8[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/08.4bpp");
+const u32 gEventObjectPic_MayAcroBike_9[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/09.4bpp");
+const u32 gEventObjectPic_MayAcroBike_10[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/10.4bpp");
+const u32 gEventObjectPic_MayAcroBike_11[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/11.4bpp");
+const u32 gEventObjectPic_MayAcroBike_12[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/12.4bpp");
+const u32 gEventObjectPic_MayAcroBike_13[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/13.4bpp");
+const u32 gEventObjectPic_MayAcroBike_14[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/14.4bpp");
+const u32 gEventObjectPic_MayAcroBike_15[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/15.4bpp");
+const u32 gEventObjectPic_MayAcroBike_16[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/16.4bpp");
+const u32 gEventObjectPic_MayAcroBike_17[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/17.4bpp");
+const u32 gEventObjectPic_MayAcroBike_18[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/18.4bpp");
+const u32 gEventObjectPic_MayAcroBike_19[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/19.4bpp");
+const u32 gEventObjectPic_MayAcroBike_20[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/20.4bpp");
+const u32 gEventObjectPic_MayAcroBike_21[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/21.4bpp");
+const u32 gEventObjectPic_MayAcroBike_22[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/22.4bpp");
+const u32 gEventObjectPic_MayAcroBike_23[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/23.4bpp");
+const u32 gEventObjectPic_MayAcroBike_24[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/24.4bpp");
+const u32 gEventObjectPic_MayAcroBike_25[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/25.4bpp");
+const u32 gEventObjectPic_MayAcroBike_26[] = INCBIN_U32("graphics/event_objects/pics/people/may/acro_bike/26.4bpp");
+const u32 gEventObjectPic_MaySurfing_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/0.4bpp");
+const u32 gEventObjectPic_MaySurfing_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/3.4bpp");
+const u32 gEventObjectPic_MaySurfing_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/1.4bpp");
+const u32 gEventObjectPic_MaySurfing_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/4.4bpp");
+const u32 gEventObjectPic_MaySurfing_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/2.4bpp");
+const u32 gEventObjectPic_MaySurfing_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/surfing/5.4bpp");
+const u32 gEventObjectPic_MayFieldMove_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/0.4bpp");
+const u32 gEventObjectPic_MayFieldMove_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/1.4bpp");
+const u32 gEventObjectPic_MayFieldMove_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/2.4bpp");
+const u32 gEventObjectPic_MayFieldMove_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/3.4bpp");
+const u32 gEventObjectPic_MayFieldMove_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/field_move/4.4bpp");
+const u32 gEventObjectPic_MayFishing_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/00.4bpp");
+const u32 gEventObjectPic_MayFishing_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/01.4bpp");
+const u32 gEventObjectPic_MayFishing_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/02.4bpp");
+const u32 gEventObjectPic_MayFishing_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/03.4bpp");
+const u32 gEventObjectPic_MayFishing_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/04.4bpp");
+const u32 gEventObjectPic_MayFishing_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/05.4bpp");
+const u32 gEventObjectPic_MayFishing_6[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/06.4bpp");
+const u32 gEventObjectPic_MayFishing_7[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/07.4bpp");
+const u32 gEventObjectPic_MayFishing_8[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/08.4bpp");
+const u32 gEventObjectPic_MayFishing_9[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/09.4bpp");
+const u32 gEventObjectPic_MayFishing_10[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/10.4bpp");
+const u32 gEventObjectPic_MayFishing_11[] = INCBIN_U32("graphics/event_objects/pics/people/may/fishing/11.4bpp");
+const u32 gEventObjectPic_MayWatering_0[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/0.4bpp");
+const u32 gEventObjectPic_MayWatering_3[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/3.4bpp");
+const u32 gEventObjectPic_MayWatering_1[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/1.4bpp");
+const u32 gEventObjectPic_MayWatering_4[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/4.4bpp");
+const u32 gEventObjectPic_MayWatering_2[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/2.4bpp");
+const u32 gEventObjectPic_MayWatering_5[] = INCBIN_U32("graphics/event_objects/pics/people/may/watering/5.4bpp");
+const u16 gEventObjectPalette0[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_00.gbapal");
+const u16 gEventObjectPalette1[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_01.gbapal");
+const u16 gEventObjectPalette2[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_02.gbapal");
+const u16 gEventObjectPalette3[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_03.gbapal");
+const u16 gEventObjectPalette4[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_04.gbapal");
+const u16 gEventObjectPalette5[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_05.gbapal");
+const u16 gEventObjectPalette6[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_06.gbapal");
+const u16 gEventObjectPalette7[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_07.gbapal");
+const u32 gEventObjectPic_LittleBoy1_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/0.4bpp");
+const u32 gEventObjectPic_LittleBoy1_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/1.4bpp");
+const u32 gEventObjectPic_LittleBoy1_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/2.4bpp");
+const u32 gEventObjectPic_LittleBoy1_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/3.4bpp");
+const u32 gEventObjectPic_LittleBoy1_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/4.4bpp");
+const u32 gEventObjectPic_LittleBoy1_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/5.4bpp");
+const u32 gEventObjectPic_LittleBoy1_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/6.4bpp");
+const u32 gEventObjectPic_LittleBoy1_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/7.4bpp");
+const u32 gEventObjectPic_LittleBoy1_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_1/8.4bpp");
+const u32 gEventObjectPic_LittleGirl1_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/0.4bpp");
+const u32 gEventObjectPic_LittleGirl1_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/1.4bpp");
+const u32 gEventObjectPic_LittleGirl1_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/2.4bpp");
+const u32 gEventObjectPic_LittleGirl1_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/3.4bpp");
+const u32 gEventObjectPic_LittleGirl1_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/4.4bpp");
+const u32 gEventObjectPic_LittleGirl1_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/5.4bpp");
+const u32 gEventObjectPic_LittleGirl1_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/6.4bpp");
+const u32 gEventObjectPic_LittleGirl1_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/7.4bpp");
+const u32 gEventObjectPic_LittleGirl1_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_1/8.4bpp");
+const u32 gEventObjectPic_Boy1_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/0.4bpp");
+const u32 gEventObjectPic_Boy1_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/1.4bpp");
+const u32 gEventObjectPic_Boy1_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/2.4bpp");
+const u32 gEventObjectPic_Boy1_3[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/3.4bpp");
+const u32 gEventObjectPic_Boy1_4[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/4.4bpp");
+const u32 gEventObjectPic_Boy1_5[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/5.4bpp");
+const u32 gEventObjectPic_Boy1_6[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/6.4bpp");
+const u32 gEventObjectPic_Boy1_7[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/7.4bpp");
+const u32 gEventObjectPic_Boy1_8[] = INCBIN_U32("graphics/event_objects/pics/people/boy_1/8.4bpp");
+const u32 gEventObjectPic_Girl1_0[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/0.4bpp");
+const u32 gEventObjectPic_Girl1_1[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/1.4bpp");
+const u32 gEventObjectPic_Girl1_2[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/2.4bpp");
+const u32 gEventObjectPic_Girl1_3[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/3.4bpp");
+const u32 gEventObjectPic_Girl1_4[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/4.4bpp");
+const u32 gEventObjectPic_Girl1_5[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/5.4bpp");
+const u32 gEventObjectPic_Girl1_6[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/6.4bpp");
+const u32 gEventObjectPic_Girl1_7[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/7.4bpp");
+const u32 gEventObjectPic_Girl1_8[] = INCBIN_U32("graphics/event_objects/pics/people/girl_1/8.4bpp");
+const u32 gEventObjectPic_Boy2_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/0.4bpp");
+const u32 gEventObjectPic_Boy2_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/1.4bpp");
+const u32 gEventObjectPic_Boy2_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/2.4bpp");
+const u32 gEventObjectPic_Boy2_3[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/3.4bpp");
+const u32 gEventObjectPic_Boy2_4[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/4.4bpp");
+const u32 gEventObjectPic_Boy2_5[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/5.4bpp");
+const u32 gEventObjectPic_Boy2_6[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/6.4bpp");
+const u32 gEventObjectPic_Boy2_7[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/7.4bpp");
+const u32 gEventObjectPic_Boy2_8[] = INCBIN_U32("graphics/event_objects/pics/people/boy_2/8.4bpp");
+const u32 gEventObjectPic_Girl2_0[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/0.4bpp");
+const u32 gEventObjectPic_Girl2_1[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/1.4bpp");
+const u32 gEventObjectPic_Girl2_2[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/2.4bpp");
+const u32 gEventObjectPic_Girl2_3[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/3.4bpp");
+const u32 gEventObjectPic_Girl2_4[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/4.4bpp");
+const u32 gEventObjectPic_Girl2_5[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/5.4bpp");
+const u32 gEventObjectPic_Girl2_6[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/6.4bpp");
+const u32 gEventObjectPic_Girl2_7[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/7.4bpp");
+const u32 gEventObjectPic_Girl2_8[] = INCBIN_U32("graphics/event_objects/pics/people/girl_2/8.4bpp");
+const u32 gEventObjectPic_LittleBoy2_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/0.4bpp");
+const u32 gEventObjectPic_LittleBoy2_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/1.4bpp");
+const u32 gEventObjectPic_LittleBoy2_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/2.4bpp");
+const u32 gEventObjectPic_LittleBoy2_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/3.4bpp");
+const u32 gEventObjectPic_LittleBoy2_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/4.4bpp");
+const u32 gEventObjectPic_LittleBoy2_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/5.4bpp");
+const u32 gEventObjectPic_LittleBoy2_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/6.4bpp");
+const u32 gEventObjectPic_LittleBoy2_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/7.4bpp");
+const u32 gEventObjectPic_LittleBoy2_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_boy_2/8.4bpp");
+const u32 gEventObjectPic_LittleGirl2_0[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/0.4bpp");
+const u32 gEventObjectPic_LittleGirl2_1[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/1.4bpp");
+const u32 gEventObjectPic_LittleGirl2_2[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/2.4bpp");
+const u32 gEventObjectPic_LittleGirl2_3[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/3.4bpp");
+const u32 gEventObjectPic_LittleGirl2_4[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/4.4bpp");
+const u32 gEventObjectPic_LittleGirl2_5[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/5.4bpp");
+const u32 gEventObjectPic_LittleGirl2_6[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/6.4bpp");
+const u32 gEventObjectPic_LittleGirl2_7[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/7.4bpp");
+const u32 gEventObjectPic_LittleGirl2_8[] = INCBIN_U32("graphics/event_objects/pics/people/little_girl_2/8.4bpp");
+const u32 gEventObjectPic_Boy3_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/0.4bpp");
+const u32 gEventObjectPic_Boy3_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/1.4bpp");
+const u32 gEventObjectPic_Boy3_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/2.4bpp");
+const u32 gEventObjectPic_Boy3_3[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/3.4bpp");
+const u32 gEventObjectPic_Boy3_4[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/4.4bpp");
+const u32 gEventObjectPic_Boy3_5[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/5.4bpp");
+const u32 gEventObjectPic_Boy3_6[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/6.4bpp");
+const u32 gEventObjectPic_Boy3_7[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/7.4bpp");
+const u32 gEventObjectPic_Boy3_8[] = INCBIN_U32("graphics/event_objects/pics/people/boy_3/8.4bpp");
+const u32 gEventObjectPic_Girl3_0[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/0.4bpp");
+const u32 gEventObjectPic_Girl3_1[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/1.4bpp");
+const u32 gEventObjectPic_Girl3_2[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/2.4bpp");
+const u32 gEventObjectPic_Girl3_3[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/3.4bpp");
+const u32 gEventObjectPic_Girl3_4[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/4.4bpp");
+const u32 gEventObjectPic_Girl3_5[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/5.4bpp");
+const u32 gEventObjectPic_Girl3_6[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/6.4bpp");
+const u32 gEventObjectPic_Girl3_7[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/7.4bpp");
+const u32 gEventObjectPic_Girl3_8[] = INCBIN_U32("graphics/event_objects/pics/people/girl_3/8.4bpp");
+const u32 gEventObjectPic_Boy4_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/0.4bpp");
+const u32 gEventObjectPic_Boy4_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/1.4bpp");
+const u32 gEventObjectPic_Boy4_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/2.4bpp");
+const u32 gEventObjectPic_Boy4_3[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/3.4bpp");
+const u32 gEventObjectPic_Boy4_4[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/4.4bpp");
+const u32 gEventObjectPic_Boy4_5[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/5.4bpp");
+const u32 gEventObjectPic_Boy4_6[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/6.4bpp");
+const u32 gEventObjectPic_Boy4_7[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/7.4bpp");
+const u32 gEventObjectPic_Boy4_8[] = INCBIN_U32("graphics/event_objects/pics/people/boy_4/8.4bpp");
+const u32 gEventObjectPic_Woman1_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/0.4bpp");
+const u32 gEventObjectPic_Woman1_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/1.4bpp");
+const u32 gEventObjectPic_Woman1_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/2.4bpp");
+const u32 gEventObjectPic_Woman1_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/3.4bpp");
+const u32 gEventObjectPic_Woman1_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/4.4bpp");
+const u32 gEventObjectPic_Woman1_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/5.4bpp");
+const u32 gEventObjectPic_Woman1_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/6.4bpp");
+const u32 gEventObjectPic_Woman1_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/7.4bpp");
+const u32 gEventObjectPic_Woman1_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_1/8.4bpp");
+const u32 gEventObjectPic_FatMan_0[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/0.4bpp");
+const u32 gEventObjectPic_FatMan_1[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/1.4bpp");
+const u32 gEventObjectPic_FatMan_2[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/2.4bpp");
+const u32 gEventObjectPic_FatMan_3[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/3.4bpp");
+const u32 gEventObjectPic_FatMan_4[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/4.4bpp");
+const u32 gEventObjectPic_FatMan_5[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/5.4bpp");
+const u32 gEventObjectPic_FatMan_6[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/6.4bpp");
+const u32 gEventObjectPic_FatMan_7[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/7.4bpp");
+const u32 gEventObjectPic_FatMan_8[] = INCBIN_U32("graphics/event_objects/pics/people/fat_man/8.4bpp");
+const u32 gEventObjectPic_Woman2_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/0.4bpp");
+const u32 gEventObjectPic_Woman2_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/1.4bpp");
+const u32 gEventObjectPic_Woman2_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/2.4bpp");
+const u32 gEventObjectPic_Woman2_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/3.4bpp");
+const u32 gEventObjectPic_Woman2_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/4.4bpp");
+const u32 gEventObjectPic_Woman2_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/5.4bpp");
+const u32 gEventObjectPic_Woman2_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/6.4bpp");
+const u32 gEventObjectPic_Woman2_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/7.4bpp");
+const u32 gEventObjectPic_Woman2_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_2/8.4bpp");
+const u32 gEventObjectPic_Man1_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/0.4bpp");
+const u32 gEventObjectPic_Man1_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/1.4bpp");
+const u32 gEventObjectPic_Man1_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/2.4bpp");
+const u32 gEventObjectPic_Man1_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/3.4bpp");
+const u32 gEventObjectPic_Man1_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/4.4bpp");
+const u32 gEventObjectPic_Man1_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/5.4bpp");
+const u32 gEventObjectPic_Man1_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/6.4bpp");
+const u32 gEventObjectPic_Man1_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/7.4bpp");
+const u32 gEventObjectPic_Man1_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_1/8.4bpp");
+const u32 gEventObjectPic_Woman3_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/0.4bpp");
+const u32 gEventObjectPic_Woman3_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/1.4bpp");
+const u32 gEventObjectPic_Woman3_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/2.4bpp");
+const u32 gEventObjectPic_Woman3_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/3.4bpp");
+const u32 gEventObjectPic_Woman3_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/4.4bpp");
+const u32 gEventObjectPic_Woman3_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/5.4bpp");
+const u32 gEventObjectPic_Woman3_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/6.4bpp");
+const u32 gEventObjectPic_Woman3_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/7.4bpp");
+const u32 gEventObjectPic_Woman3_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_3/8.4bpp");
+const u32 gEventObjectPic_OldMan1_0[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/0.4bpp");
+const u32 gEventObjectPic_OldMan1_1[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/1.4bpp");
+const u32 gEventObjectPic_OldMan1_2[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/2.4bpp");
+const u32 gEventObjectPic_OldMan1_3[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/3.4bpp");
+const u32 gEventObjectPic_OldMan1_4[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/4.4bpp");
+const u32 gEventObjectPic_OldMan1_5[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/5.4bpp");
+const u32 gEventObjectPic_OldMan1_6[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/6.4bpp");
+const u32 gEventObjectPic_OldMan1_7[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/7.4bpp");
+const u32 gEventObjectPic_OldMan1_8[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_1/8.4bpp");
+const u32 gEventObjectPic_OldWoman1_0[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/0.4bpp");
+const u32 gEventObjectPic_OldWoman1_1[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/1.4bpp");
+const u32 gEventObjectPic_OldWoman1_2[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/2.4bpp");
+const u32 gEventObjectPic_OldWoman1_3[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/3.4bpp");
+const u32 gEventObjectPic_OldWoman1_4[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/4.4bpp");
+const u32 gEventObjectPic_OldWoman1_5[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/5.4bpp");
+const u32 gEventObjectPic_OldWoman1_6[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/6.4bpp");
+const u32 gEventObjectPic_OldWoman1_7[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/7.4bpp");
+const u32 gEventObjectPic_OldWoman1_8[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_1/8.4bpp");
+const u32 gEventObjectPic_Man2_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/0.4bpp");
+const u32 gEventObjectPic_Man2_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/1.4bpp");
+const u32 gEventObjectPic_Man2_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/2.4bpp");
+const u32 gEventObjectPic_Man2_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/3.4bpp");
+const u32 gEventObjectPic_Man2_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/4.4bpp");
+const u32 gEventObjectPic_Man2_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/5.4bpp");
+const u32 gEventObjectPic_Man2_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/6.4bpp");
+const u32 gEventObjectPic_Man2_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/7.4bpp");
+const u32 gEventObjectPic_Man2_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_2/8.4bpp");
+const u32 gEventObjectPic_Woman4_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/0.4bpp");
+const u32 gEventObjectPic_Woman4_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/1.4bpp");
+const u32 gEventObjectPic_Woman4_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/2.4bpp");
+const u32 gEventObjectPic_Woman4_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/3.4bpp");
+const u32 gEventObjectPic_Woman4_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/4.4bpp");
+const u32 gEventObjectPic_Woman4_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/5.4bpp");
+const u32 gEventObjectPic_Woman4_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/6.4bpp");
+const u32 gEventObjectPic_Woman4_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/7.4bpp");
+const u32 gEventObjectPic_Woman4_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_4/8.4bpp");
+const u32 gEventObjectPic_Man3_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/0.4bpp");
+const u32 gEventObjectPic_Man3_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/1.4bpp");
+const u32 gEventObjectPic_Man3_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/2.4bpp");
+const u32 gEventObjectPic_Man3_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/3.4bpp");
+const u32 gEventObjectPic_Man3_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/4.4bpp");
+const u32 gEventObjectPic_Man3_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/5.4bpp");
+const u32 gEventObjectPic_Man3_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/6.4bpp");
+const u32 gEventObjectPic_Man3_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/7.4bpp");
+const u32 gEventObjectPic_Man3_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_3/8.4bpp");
+const u32 gEventObjectPic_Woman5_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/0.4bpp");
+const u32 gEventObjectPic_Woman5_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/1.4bpp");
+const u32 gEventObjectPic_Woman5_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/2.4bpp");
+const u32 gEventObjectPic_Woman5_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/3.4bpp");
+const u32 gEventObjectPic_Woman5_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/4.4bpp");
+const u32 gEventObjectPic_Woman5_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/5.4bpp");
+const u32 gEventObjectPic_Woman5_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/6.4bpp");
+const u32 gEventObjectPic_Woman5_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/7.4bpp");
+const u32 gEventObjectPic_Woman5_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_5/8.4bpp");
+const u32 gEventObjectPic_Cook_0[] = INCBIN_U32("graphics/event_objects/pics/people/cook/0.4bpp");
+const u32 gEventObjectPic_Cook_1[] = INCBIN_U32("graphics/event_objects/pics/people/cook/1.4bpp");
+const u32 gEventObjectPic_Cook_2[] = INCBIN_U32("graphics/event_objects/pics/people/cook/2.4bpp");
+const u32 gEventObjectPic_Woman6_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/0.4bpp");
+const u32 gEventObjectPic_Woman6_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/1.4bpp");
+const u32 gEventObjectPic_Woman6_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/2.4bpp");
+const u32 gEventObjectPic_Woman6_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/3.4bpp");
+const u32 gEventObjectPic_Woman6_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/4.4bpp");
+const u32 gEventObjectPic_Woman6_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/5.4bpp");
+const u32 gEventObjectPic_Woman6_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/6.4bpp");
+const u32 gEventObjectPic_Woman6_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/7.4bpp");
+const u32 gEventObjectPic_Woman6_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_6/8.4bpp");
+const u32 gEventObjectPic_OldMan2_0[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_2/0.4bpp");
+const u32 gEventObjectPic_OldMan2_1[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_2/1.4bpp");
+const u32 gEventObjectPic_OldMan2_2[] = INCBIN_U32("graphics/event_objects/pics/people/old_man_2/2.4bpp");
+const u32 gEventObjectPic_OldWoman2_0[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/0.4bpp");
+const u32 gEventObjectPic_OldWoman2_1[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/1.4bpp");
+const u32 gEventObjectPic_OldWoman2_2[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/2.4bpp");
+const u32 gEventObjectPic_OldWoman2_3[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/3.4bpp");
+const u32 gEventObjectPic_OldWoman2_4[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/4.4bpp");
+const u32 gEventObjectPic_OldWoman2_5[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/5.4bpp");
+const u32 gEventObjectPic_OldWoman2_6[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/6.4bpp");
+const u32 gEventObjectPic_OldWoman2_7[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/7.4bpp");
+const u32 gEventObjectPic_OldWoman2_8[] = INCBIN_U32("graphics/event_objects/pics/people/old_woman_2/8.4bpp");
+const u32 gEventObjectPic_Camper_0[] = INCBIN_U32("graphics/event_objects/pics/people/camper/0.4bpp");
+const u32 gEventObjectPic_Camper_1[] = INCBIN_U32("graphics/event_objects/pics/people/camper/1.4bpp");
+const u32 gEventObjectPic_Camper_2[] = INCBIN_U32("graphics/event_objects/pics/people/camper/2.4bpp");
+const u32 gEventObjectPic_Camper_3[] = INCBIN_U32("graphics/event_objects/pics/people/camper/3.4bpp");
+const u32 gEventObjectPic_Camper_4[] = INCBIN_U32("graphics/event_objects/pics/people/camper/4.4bpp");
+const u32 gEventObjectPic_Camper_5[] = INCBIN_U32("graphics/event_objects/pics/people/camper/5.4bpp");
+const u32 gEventObjectPic_Camper_6[] = INCBIN_U32("graphics/event_objects/pics/people/camper/6.4bpp");
+const u32 gEventObjectPic_Camper_7[] = INCBIN_U32("graphics/event_objects/pics/people/camper/7.4bpp");
+const u32 gEventObjectPic_Camper_8[] = INCBIN_U32("graphics/event_objects/pics/people/camper/8.4bpp");
+const u32 gEventObjectPic_Picnicker_0[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/0.4bpp");
+const u32 gEventObjectPic_Picnicker_1[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/1.4bpp");
+const u32 gEventObjectPic_Picnicker_2[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/2.4bpp");
+const u32 gEventObjectPic_Picnicker_3[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/3.4bpp");
+const u32 gEventObjectPic_Picnicker_4[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/4.4bpp");
+const u32 gEventObjectPic_Picnicker_5[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/5.4bpp");
+const u32 gEventObjectPic_Picnicker_6[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/6.4bpp");
+const u32 gEventObjectPic_Picnicker_7[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/7.4bpp");
+const u32 gEventObjectPic_Picnicker_8[] = INCBIN_U32("graphics/event_objects/pics/people/picnicker/8.4bpp");
+const u32 gEventObjectPic_Man4_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/0.4bpp");
+const u32 gEventObjectPic_Man4_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/1.4bpp");
+const u32 gEventObjectPic_Man4_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/2.4bpp");
+const u32 gEventObjectPic_Man4_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/3.4bpp");
+const u32 gEventObjectPic_Man4_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/4.4bpp");
+const u32 gEventObjectPic_Man4_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/5.4bpp");
+const u32 gEventObjectPic_Man4_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/6.4bpp");
+const u32 gEventObjectPic_Man4_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/7.4bpp");
+const u32 gEventObjectPic_Man4_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_4/8.4bpp");
+const u32 gEventObjectPic_Woman7_0[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/0.4bpp");
+const u32 gEventObjectPic_Woman7_1[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/1.4bpp");
+const u32 gEventObjectPic_Woman7_2[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/2.4bpp");
+const u32 gEventObjectPic_Woman7_3[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/3.4bpp");
+const u32 gEventObjectPic_Woman7_4[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/4.4bpp");
+const u32 gEventObjectPic_Woman7_5[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/5.4bpp");
+const u32 gEventObjectPic_Woman7_6[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/6.4bpp");
+const u32 gEventObjectPic_Woman7_7[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/7.4bpp");
+const u32 gEventObjectPic_Woman7_8[] = INCBIN_U32("graphics/event_objects/pics/people/woman_7/8.4bpp");
+const u32 gEventObjectPic_Youngster_0[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/0.4bpp");
+const u32 gEventObjectPic_Youngster_1[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/1.4bpp");
+const u32 gEventObjectPic_Youngster_2[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/2.4bpp");
+const u32 gEventObjectPic_Youngster_3[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/3.4bpp");
+const u32 gEventObjectPic_Youngster_4[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/4.4bpp");
+const u32 gEventObjectPic_Youngster_5[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/5.4bpp");
+const u32 gEventObjectPic_Youngster_6[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/6.4bpp");
+const u32 gEventObjectPic_Youngster_7[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/7.4bpp");
+const u32 gEventObjectPic_Youngster_8[] = INCBIN_U32("graphics/event_objects/pics/people/youngster/8.4bpp");
+const u32 gEventObjectPic_BugCatcher_0[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/0.4bpp");
+const u32 gEventObjectPic_BugCatcher_1[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/1.4bpp");
+const u32 gEventObjectPic_BugCatcher_2[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/2.4bpp");
+const u32 gEventObjectPic_BugCatcher_3[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/3.4bpp");
+const u32 gEventObjectPic_BugCatcher_4[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/4.4bpp");
+const u32 gEventObjectPic_BugCatcher_5[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/5.4bpp");
+const u32 gEventObjectPic_BugCatcher_6[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/6.4bpp");
+const u32 gEventObjectPic_BugCatcher_7[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/7.4bpp");
+const u32 gEventObjectPic_BugCatcher_8[] = INCBIN_U32("graphics/event_objects/pics/people/bug_catcher/8.4bpp");
+const u32 gEventObjectPic_PsychicM_0[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/0.4bpp");
+const u32 gEventObjectPic_PsychicM_1[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/1.4bpp");
+const u32 gEventObjectPic_PsychicM_2[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/2.4bpp");
+const u32 gEventObjectPic_PsychicM_3[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/3.4bpp");
+const u32 gEventObjectPic_PsychicM_4[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/4.4bpp");
+const u32 gEventObjectPic_PsychicM_5[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/5.4bpp");
+const u32 gEventObjectPic_PsychicM_6[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/6.4bpp");
+const u32 gEventObjectPic_PsychicM_7[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/7.4bpp");
+const u32 gEventObjectPic_PsychicM_8[] = INCBIN_U32("graphics/event_objects/pics/people/psychic_m/8.4bpp");
+const u32 gEventObjectPic_SchoolKidM_0[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/0.4bpp");
+const u32 gEventObjectPic_SchoolKidM_1[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/1.4bpp");
+const u32 gEventObjectPic_SchoolKidM_2[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/2.4bpp");
+const u32 gEventObjectPic_SchoolKidM_3[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/3.4bpp");
+const u32 gEventObjectPic_SchoolKidM_4[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/4.4bpp");
+const u32 gEventObjectPic_SchoolKidM_5[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/5.4bpp");
+const u32 gEventObjectPic_SchoolKidM_6[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/6.4bpp");
+const u32 gEventObjectPic_SchoolKidM_7[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/7.4bpp");
+const u32 gEventObjectPic_SchoolKidM_8[] = INCBIN_U32("graphics/event_objects/pics/people/school_kid_m/8.4bpp");
+const u32 gEventObjectPic_Maniac_0[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/0.4bpp");
+const u32 gEventObjectPic_Maniac_1[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/1.4bpp");
+const u32 gEventObjectPic_Maniac_2[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/2.4bpp");
+const u32 gEventObjectPic_Maniac_3[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/3.4bpp");
+const u32 gEventObjectPic_Maniac_4[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/4.4bpp");
+const u32 gEventObjectPic_Maniac_5[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/5.4bpp");
+const u32 gEventObjectPic_Maniac_6[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/6.4bpp");
+const u32 gEventObjectPic_Maniac_7[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/7.4bpp");
+const u32 gEventObjectPic_Maniac_8[] = INCBIN_U32("graphics/event_objects/pics/people/maniac/8.4bpp");
+const u32 gEventObjectPic_HexManiac_0[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/0.4bpp");
+const u32 gEventObjectPic_HexManiac_1[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/1.4bpp");
+const u32 gEventObjectPic_HexManiac_2[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/2.4bpp");
+const u32 gEventObjectPic_HexManiac_3[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/3.4bpp");
+const u32 gEventObjectPic_HexManiac_4[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/4.4bpp");
+const u32 gEventObjectPic_HexManiac_5[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/5.4bpp");
+const u32 gEventObjectPic_HexManiac_6[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/6.4bpp");
+const u32 gEventObjectPic_HexManiac_7[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/7.4bpp");
+const u32 gEventObjectPic_HexManiac_8[] = INCBIN_U32("graphics/event_objects/pics/people/hex_maniac/8.4bpp");
+const u32 gEventObjectPic_UnusedWoman_0[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/0.4bpp");
+const u32 gEventObjectPic_UnusedWoman_1[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/1.4bpp");
+const u32 gEventObjectPic_UnusedWoman_2[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/2.4bpp");
+const u32 gEventObjectPic_UnusedWoman_3[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/3.4bpp");
+const u32 gEventObjectPic_UnusedWoman_4[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/4.4bpp");
+const u32 gEventObjectPic_UnusedWoman_5[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/5.4bpp");
+const u32 gEventObjectPic_UnusedWoman_6[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/6.4bpp");
+const u32 gEventObjectPic_UnusedWoman_7[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/7.4bpp");
+const u32 gEventObjectPic_UnusedWoman_8[] = INCBIN_U32("graphics/event_objects/pics/people/unused_woman/8.4bpp");
+const u32 gEventObjectPic_SwimmerM_0[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/0.4bpp");
+const u32 gEventObjectPic_SwimmerM_1[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/1.4bpp");
+const u32 gEventObjectPic_SwimmerM_2[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/2.4bpp");
+const u32 gEventObjectPic_SwimmerM_3[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/3.4bpp");
+const u32 gEventObjectPic_SwimmerM_4[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/4.4bpp");
+const u32 gEventObjectPic_SwimmerM_5[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/5.4bpp");
+const u32 gEventObjectPic_SwimmerM_6[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/6.4bpp");
+const u32 gEventObjectPic_SwimmerM_7[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/7.4bpp");
+const u32 gEventObjectPic_SwimmerM_8[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_m/8.4bpp");
+const u32 gEventObjectPic_SwimmerF_0[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/0.4bpp");
+const u32 gEventObjectPic_SwimmerF_1[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/1.4bpp");
+const u32 gEventObjectPic_SwimmerF_2[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/2.4bpp");
+const u32 gEventObjectPic_SwimmerF_3[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/3.4bpp");
+const u32 gEventObjectPic_SwimmerF_4[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/4.4bpp");
+const u32 gEventObjectPic_SwimmerF_5[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/5.4bpp");
+const u32 gEventObjectPic_SwimmerF_6[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/6.4bpp");
+const u32 gEventObjectPic_SwimmerF_7[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/7.4bpp");
+const u32 gEventObjectPic_SwimmerF_8[] = INCBIN_U32("graphics/event_objects/pics/people/swimmer_f/8.4bpp");
+const u32 gEventObjectPic_BlackBelt_0[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/0.4bpp");
+const u32 gEventObjectPic_BlackBelt_1[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/1.4bpp");
+const u32 gEventObjectPic_BlackBelt_2[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/2.4bpp");
+const u32 gEventObjectPic_BlackBelt_3[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/3.4bpp");
+const u32 gEventObjectPic_BlackBelt_4[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/4.4bpp");
+const u32 gEventObjectPic_BlackBelt_5[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/5.4bpp");
+const u32 gEventObjectPic_BlackBelt_6[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/6.4bpp");
+const u32 gEventObjectPic_BlackBelt_7[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/7.4bpp");
+const u32 gEventObjectPic_BlackBelt_8[] = INCBIN_U32("graphics/event_objects/pics/people/black_belt/8.4bpp");
+const u32 gEventObjectPic_Beauty_0[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/0.4bpp");
+const u32 gEventObjectPic_Beauty_1[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/1.4bpp");
+const u32 gEventObjectPic_Beauty_2[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/2.4bpp");
+const u32 gEventObjectPic_Beauty_3[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/3.4bpp");
+const u32 gEventObjectPic_Beauty_4[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/4.4bpp");
+const u32 gEventObjectPic_Beauty_5[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/5.4bpp");
+const u32 gEventObjectPic_Beauty_6[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/6.4bpp");
+const u32 gEventObjectPic_Beauty_7[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/7.4bpp");
+const u32 gEventObjectPic_Beauty_8[] = INCBIN_U32("graphics/event_objects/pics/people/beauty/8.4bpp");
+const u32 gEventObjectPic_Scientist1_0[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/0.4bpp");
+const u32 gEventObjectPic_Scientist1_1[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/1.4bpp");
+const u32 gEventObjectPic_Scientist1_2[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/2.4bpp");
+const u32 gEventObjectPic_Scientist1_3[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/3.4bpp");
+const u32 gEventObjectPic_Scientist1_4[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/4.4bpp");
+const u32 gEventObjectPic_Scientist1_5[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/5.4bpp");
+const u32 gEventObjectPic_Scientist1_6[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/6.4bpp");
+const u32 gEventObjectPic_Scientist1_7[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/7.4bpp");
+const u32 gEventObjectPic_Scientist1_8[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_1/8.4bpp");
+const u32 gEventObjectPic_Lass_0[] = INCBIN_U32("graphics/event_objects/pics/people/lass/0.4bpp");
+const u32 gEventObjectPic_Lass_1[] = INCBIN_U32("graphics/event_objects/pics/people/lass/1.4bpp");
+const u32 gEventObjectPic_Lass_2[] = INCBIN_U32("graphics/event_objects/pics/people/lass/2.4bpp");
+const u32 gEventObjectPic_Lass_3[] = INCBIN_U32("graphics/event_objects/pics/people/lass/3.4bpp");
+const u32 gEventObjectPic_Lass_4[] = INCBIN_U32("graphics/event_objects/pics/people/lass/4.4bpp");
+const u32 gEventObjectPic_Lass_5[] = INCBIN_U32("graphics/event_objects/pics/people/lass/5.4bpp");
+const u32 gEventObjectPic_Lass_6[] = INCBIN_U32("graphics/event_objects/pics/people/lass/6.4bpp");
+const u32 gEventObjectPic_Lass_7[] = INCBIN_U32("graphics/event_objects/pics/people/lass/7.4bpp");
+const u32 gEventObjectPic_Lass_8[] = INCBIN_U32("graphics/event_objects/pics/people/lass/8.4bpp");
+const u32 gEventObjectPic_Gentleman_0[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/0.4bpp");
+const u32 gEventObjectPic_Gentleman_1[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/1.4bpp");
+const u32 gEventObjectPic_Gentleman_2[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/2.4bpp");
+const u32 gEventObjectPic_Gentleman_3[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/3.4bpp");
+const u32 gEventObjectPic_Gentleman_4[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/4.4bpp");
+const u32 gEventObjectPic_Gentleman_5[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/5.4bpp");
+const u32 gEventObjectPic_Gentleman_6[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/6.4bpp");
+const u32 gEventObjectPic_Gentleman_7[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/7.4bpp");
+const u32 gEventObjectPic_Gentleman_8[] = INCBIN_U32("graphics/event_objects/pics/people/gentleman/8.4bpp");
+const u32 gEventObjectPic_Sailor_0[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/0.4bpp");
+const u32 gEventObjectPic_Sailor_1[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/1.4bpp");
+const u32 gEventObjectPic_Sailor_2[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/2.4bpp");
+const u32 gEventObjectPic_Sailor_3[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/3.4bpp");
+const u32 gEventObjectPic_Sailor_4[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/4.4bpp");
+const u32 gEventObjectPic_Sailor_5[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/5.4bpp");
+const u32 gEventObjectPic_Sailor_6[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/6.4bpp");
+const u32 gEventObjectPic_Sailor_7[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/7.4bpp");
+const u32 gEventObjectPic_Sailor_8[] = INCBIN_U32("graphics/event_objects/pics/people/sailor/8.4bpp");
+const u32 gEventObjectPic_Fisherman_0[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/0.4bpp");
+const u32 gEventObjectPic_Fisherman_1[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/1.4bpp");
+const u32 gEventObjectPic_Fisherman_2[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/2.4bpp");
+const u32 gEventObjectPic_Fisherman_3[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/3.4bpp");
+const u32 gEventObjectPic_Fisherman_4[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/4.4bpp");
+const u32 gEventObjectPic_Fisherman_5[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/5.4bpp");
+const u32 gEventObjectPic_Fisherman_6[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/6.4bpp");
+const u32 gEventObjectPic_Fisherman_7[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/7.4bpp");
+const u32 gEventObjectPic_Fisherman_8[] = INCBIN_U32("graphics/event_objects/pics/people/fisherman/8.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_0[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/0.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_1[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/1.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_2[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/2.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_3[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/3.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_4[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/4.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_5[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/5.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_6[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/6.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_7[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/7.4bpp");
+const u32 gEventObjectPic_RunningTriathleteM_8[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_m/8.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_0[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/0.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_1[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/1.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_2[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/2.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_3[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/3.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_4[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/4.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_5[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/5.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_6[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/6.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_7[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/7.4bpp");
+const u32 gEventObjectPic_RunningTriathleteF_8[] = INCBIN_U32("graphics/event_objects/pics/people/running_triathlete_f/8.4bpp");
+const u32 gEventObjectPic_TuberF_0[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/0.4bpp");
+const u32 gEventObjectPic_TuberF_1[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/1.4bpp");
+const u32 gEventObjectPic_TuberF_2[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/2.4bpp");
+const u32 gEventObjectPic_TuberF_3[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/3.4bpp");
+const u32 gEventObjectPic_TuberF_4[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/4.4bpp");
+const u32 gEventObjectPic_TuberF_5[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/5.4bpp");
+const u32 gEventObjectPic_TuberF_6[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/6.4bpp");
+const u32 gEventObjectPic_TuberF_7[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/7.4bpp");
+const u32 gEventObjectPic_TuberF_8[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_f/8.4bpp");
+const u32 gEventObjectPic_TuberM_0[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/0.4bpp");
+const u32 gEventObjectPic_TuberM_1[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/1.4bpp");
+const u32 gEventObjectPic_TuberM_2[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/2.4bpp");
+const u32 gEventObjectPic_TuberM_3[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/3.4bpp");
+const u32 gEventObjectPic_TuberM_4[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/4.4bpp");
+const u32 gEventObjectPic_TuberM_5[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/5.4bpp");
+const u32 gEventObjectPic_TuberM_6[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/6.4bpp");
+const u32 gEventObjectPic_TuberM_7[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/7.4bpp");
+const u32 gEventObjectPic_TuberM_8[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m/8.4bpp");
+const u32 gEventObjectPic_Hiker_0[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/0.4bpp");
+const u32 gEventObjectPic_Hiker_1[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/1.4bpp");
+const u32 gEventObjectPic_Hiker_2[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/2.4bpp");
+const u32 gEventObjectPic_Hiker_3[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/3.4bpp");
+const u32 gEventObjectPic_Hiker_4[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/4.4bpp");
+const u32 gEventObjectPic_Hiker_5[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/5.4bpp");
+const u32 gEventObjectPic_Hiker_6[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/6.4bpp");
+const u32 gEventObjectPic_Hiker_7[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/7.4bpp");
+const u32 gEventObjectPic_Hiker_8[] = INCBIN_U32("graphics/event_objects/pics/people/hiker/8.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_0[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/0.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_1[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/1.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_2[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/2.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_3[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/3.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_4[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/4.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_5[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/5.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_6[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/6.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_7[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/7.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteM_8[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_m/8.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_0[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/0.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_1[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/1.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_2[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/2.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_3[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/3.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_4[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/4.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_5[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/5.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_6[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/6.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_7[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/7.4bpp");
+const u32 gEventObjectPic_CyclingTriathleteF_8[] = INCBIN_U32("graphics/event_objects/pics/people/cycling_triathlete_f/8.4bpp");
+const u32 gEventObjectPic_Man5_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/0.4bpp");
+const u32 gEventObjectPic_Man5_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/1.4bpp");
+const u32 gEventObjectPic_Man5_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/2.4bpp");
+const u32 gEventObjectPic_Man5_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/3.4bpp");
+const u32 gEventObjectPic_Man5_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/4.4bpp");
+const u32 gEventObjectPic_Man5_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/5.4bpp");
+const u32 gEventObjectPic_Man5_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/6.4bpp");
+const u32 gEventObjectPic_Man5_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/7.4bpp");
+const u32 gEventObjectPic_Man5_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_5/8.4bpp");
+const u32 gEventObjectPic_Man6_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/0.4bpp");
+const u32 gEventObjectPic_Man6_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/1.4bpp");
+const u32 gEventObjectPic_Man6_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/2.4bpp");
+const u32 gEventObjectPic_Man6_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/3.4bpp");
+const u32 gEventObjectPic_Man6_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/4.4bpp");
+const u32 gEventObjectPic_Man6_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/5.4bpp");
+const u32 gEventObjectPic_Man6_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/6.4bpp");
+const u32 gEventObjectPic_Man6_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/7.4bpp");
+const u32 gEventObjectPic_Man6_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_6/8.4bpp");
+const u32 gEventObjectPic_Nurse_0[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/0.4bpp");
+const u32 gEventObjectPic_Nurse_1[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/1.4bpp");
+const u32 gEventObjectPic_Nurse_2[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/2.4bpp");
+const u32 gEventObjectPic_Nurse_3[] = INCBIN_U32("graphics/event_objects/pics/people/nurse/3.4bpp");
+const u32 gEventObjectPic_ItemBall[] = INCBIN_U32("graphics/event_objects/pics/misc/item_ball.4bpp");
+const u32 gEventObjectPic_ProfBirch_0[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/0.4bpp");
+const u32 gEventObjectPic_ProfBirch_1[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/1.4bpp");
+const u32 gEventObjectPic_ProfBirch_2[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/2.4bpp");
+const u32 gEventObjectPic_ProfBirch_3[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/3.4bpp");
+const u32 gEventObjectPic_ProfBirch_4[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/4.4bpp");
+const u32 gEventObjectPic_ProfBirch_5[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/5.4bpp");
+const u32 gEventObjectPic_ProfBirch_6[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/6.4bpp");
+const u32 gEventObjectPic_ProfBirch_7[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/7.4bpp");
+const u32 gEventObjectPic_ProfBirch_8[] = INCBIN_U32("graphics/event_objects/pics/people/prof_birch/8.4bpp");
+const u32 gEventObjectPic_ReporterM_0[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/0.4bpp");
+const u32 gEventObjectPic_ReporterM_1[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/1.4bpp");
+const u32 gEventObjectPic_ReporterM_2[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/2.4bpp");
+const u32 gEventObjectPic_ReporterM_3[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/3.4bpp");
+const u32 gEventObjectPic_ReporterM_4[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/4.4bpp");
+const u32 gEventObjectPic_ReporterM_5[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/5.4bpp");
+const u32 gEventObjectPic_ReporterM_6[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/6.4bpp");
+const u32 gEventObjectPic_ReporterM_7[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/7.4bpp");
+const u32 gEventObjectPic_ReporterM_8[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_m/8.4bpp");
+const u32 gEventObjectPic_ReporterF_0[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/0.4bpp");
+const u32 gEventObjectPic_ReporterF_1[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/1.4bpp");
+const u32 gEventObjectPic_ReporterF_2[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/2.4bpp");
+const u32 gEventObjectPic_ReporterF_3[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/3.4bpp");
+const u32 gEventObjectPic_ReporterF_4[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/4.4bpp");
+const u32 gEventObjectPic_ReporterF_5[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/5.4bpp");
+const u32 gEventObjectPic_ReporterF_6[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/6.4bpp");
+const u32 gEventObjectPic_ReporterF_7[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/7.4bpp");
+const u32 gEventObjectPic_ReporterF_8[] = INCBIN_U32("graphics/event_objects/pics/people/reporter_f/8.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_0[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/0.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_1[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/1.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_2[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/2.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_3[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/3.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_4[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/4.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_5[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/5.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_6[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/6.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_7[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/7.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan1_8[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_1/8.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_0[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/0.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_1[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/1.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_2[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/2.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_3[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/3.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_4[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/4.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_5[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/5.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_6[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/6.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_7[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/7.4bpp");
+const u32 gEventObjectPic_MauvilleOldMan2_8[] = INCBIN_U32("graphics/event_objects/pics/people/mauville_old_man_2/8.4bpp");
+const u32 gEventObjectPic_MartEmployee_0[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/0.4bpp");
+const u32 gEventObjectPic_MartEmployee_1[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/1.4bpp");
+const u32 gEventObjectPic_MartEmployee_2[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/2.4bpp");
+const u32 gEventObjectPic_MartEmployee_3[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/3.4bpp");
+const u32 gEventObjectPic_MartEmployee_4[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/4.4bpp");
+const u32 gEventObjectPic_MartEmployee_5[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/5.4bpp");
+const u32 gEventObjectPic_MartEmployee_6[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/6.4bpp");
+const u32 gEventObjectPic_MartEmployee_7[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/7.4bpp");
+const u32 gEventObjectPic_MartEmployee_8[] = INCBIN_U32("graphics/event_objects/pics/people/mart_employee/8.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_0[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/0.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_1[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/1.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_2[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/2.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_3[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/3.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_4[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/4.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_5[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/5.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_6[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/6.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_7[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/7.4bpp");
+const u32 gEventObjectPic_RooftopSaleWoman_8[] = INCBIN_U32("graphics/event_objects/pics/people/rooftop_sale_woman/8.4bpp");
+const u32 gEventObjectPic_Teala_0[] = INCBIN_U32("graphics/event_objects/pics/people/teala/0.4bpp");
+const u32 gEventObjectPic_Teala_1[] = INCBIN_U32("graphics/event_objects/pics/people/teala/1.4bpp");
+const u32 gEventObjectPic_Teala_2[] = INCBIN_U32("graphics/event_objects/pics/people/teala/2.4bpp");
+const u32 gEventObjectPic_Teala_3[] = INCBIN_U32("graphics/event_objects/pics/people/teala/3.4bpp");
+const u32 gEventObjectPic_Teala_4[] = INCBIN_U32("graphics/event_objects/pics/people/teala/4.4bpp");
+const u32 gEventObjectPic_Teala_5[] = INCBIN_U32("graphics/event_objects/pics/people/teala/5.4bpp");
+const u32 gEventObjectPic_Teala_6[] = INCBIN_U32("graphics/event_objects/pics/people/teala/6.4bpp");
+const u32 gEventObjectPic_Teala_7[] = INCBIN_U32("graphics/event_objects/pics/people/teala/7.4bpp");
+const u32 gEventObjectPic_Teala_8[] = INCBIN_U32("graphics/event_objects/pics/people/teala/8.4bpp");
+const u32 gEventObjectPic_Artist_0[] = INCBIN_U32("graphics/event_objects/pics/people/artist/0.4bpp");
+const u32 gEventObjectPic_Artist_1[] = INCBIN_U32("graphics/event_objects/pics/people/artist/1.4bpp");
+const u32 gEventObjectPic_Artist_2[] = INCBIN_U32("graphics/event_objects/pics/people/artist/2.4bpp");
+const u32 gEventObjectPic_Artist_3[] = INCBIN_U32("graphics/event_objects/pics/people/artist/3.4bpp");
+const u32 gEventObjectPic_Artist_4[] = INCBIN_U32("graphics/event_objects/pics/people/artist/4.4bpp");
+const u32 gEventObjectPic_Artist_5[] = INCBIN_U32("graphics/event_objects/pics/people/artist/5.4bpp");
+const u32 gEventObjectPic_Artist_6[] = INCBIN_U32("graphics/event_objects/pics/people/artist/6.4bpp");
+const u32 gEventObjectPic_Artist_7[] = INCBIN_U32("graphics/event_objects/pics/people/artist/7.4bpp");
+const u32 gEventObjectPic_Artist_8[] = INCBIN_U32("graphics/event_objects/pics/people/artist/8.4bpp");
+const u32 gEventObjectPic_Cameraman_0[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/0.4bpp");
+const u32 gEventObjectPic_Cameraman_1[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/1.4bpp");
+const u32 gEventObjectPic_Cameraman_2[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/2.4bpp");
+const u32 gEventObjectPic_Cameraman_3[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/3.4bpp");
+const u32 gEventObjectPic_Cameraman_4[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/4.4bpp");
+const u32 gEventObjectPic_Cameraman_5[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/5.4bpp");
+const u32 gEventObjectPic_Cameraman_6[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/6.4bpp");
+const u32 gEventObjectPic_Cameraman_7[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/7.4bpp");
+const u32 gEventObjectPic_Cameraman_8[] = INCBIN_U32("graphics/event_objects/pics/people/cameraman/8.4bpp");
+const u32 gEventObjectPic_Scientist2_0[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/0.4bpp");
+const u32 gEventObjectPic_Scientist2_1[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/1.4bpp");
+const u32 gEventObjectPic_Scientist2_2[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/2.4bpp");
+const u32 gEventObjectPic_Scientist2_3[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/3.4bpp");
+const u32 gEventObjectPic_Scientist2_4[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/4.4bpp");
+const u32 gEventObjectPic_Scientist2_5[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/5.4bpp");
+const u32 gEventObjectPic_Scientist2_6[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/6.4bpp");
+const u32 gEventObjectPic_Scientist2_7[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/7.4bpp");
+const u32 gEventObjectPic_Scientist2_8[] = INCBIN_U32("graphics/event_objects/pics/people/scientist_2/8.4bpp");
+const u32 gEventObjectPic_Man7_0[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/0.4bpp");
+const u32 gEventObjectPic_Man7_1[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/1.4bpp");
+const u32 gEventObjectPic_Man7_2[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/2.4bpp");
+const u32 gEventObjectPic_Man7_3[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/3.4bpp");
+const u32 gEventObjectPic_Man7_4[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/4.4bpp");
+const u32 gEventObjectPic_Man7_5[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/5.4bpp");
+const u32 gEventObjectPic_Man7_6[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/6.4bpp");
+const u32 gEventObjectPic_Man7_7[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/7.4bpp");
+const u32 gEventObjectPic_Man7_8[] = INCBIN_U32("graphics/event_objects/pics/people/man_7/8.4bpp");
+const u32 gEventObjectPic_AquaMemberM_0[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/0.4bpp");
+const u32 gEventObjectPic_AquaMemberM_1[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/1.4bpp");
+const u32 gEventObjectPic_AquaMemberM_2[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/2.4bpp");
+const u32 gEventObjectPic_AquaMemberM_3[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/3.4bpp");
+const u32 gEventObjectPic_AquaMemberM_4[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/4.4bpp");
+const u32 gEventObjectPic_AquaMemberM_5[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/5.4bpp");
+const u32 gEventObjectPic_AquaMemberM_6[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/6.4bpp");
+const u32 gEventObjectPic_AquaMemberM_7[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/7.4bpp");
+const u32 gEventObjectPic_AquaMemberM_8[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_m/8.4bpp");
+const u32 gEventObjectPic_AquaMemberF_0[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/0.4bpp");
+const u32 gEventObjectPic_AquaMemberF_1[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/1.4bpp");
+const u32 gEventObjectPic_AquaMemberF_2[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/2.4bpp");
+const u32 gEventObjectPic_AquaMemberF_3[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/3.4bpp");
+const u32 gEventObjectPic_AquaMemberF_4[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/4.4bpp");
+const u32 gEventObjectPic_AquaMemberF_5[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/5.4bpp");
+const u32 gEventObjectPic_AquaMemberF_6[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/6.4bpp");
+const u32 gEventObjectPic_AquaMemberF_7[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/7.4bpp");
+const u32 gEventObjectPic_AquaMemberF_8[] = INCBIN_U32("graphics/event_objects/pics/people/aqua_member_f/8.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_0[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/0.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_1[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/1.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_2[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/2.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_3[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/3.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_4[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/4.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_5[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/5.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_6[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/6.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_7[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/7.4bpp");
+const u32 gEventObjectPic_MagmaMemberM_8[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_m/8.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_0[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/0.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_1[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/1.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_2[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/2.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_3[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/3.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_4[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/4.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_5[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/5.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_6[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/6.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_7[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/7.4bpp");
+const u32 gEventObjectPic_MagmaMemberF_8[] = INCBIN_U32("graphics/event_objects/pics/people/magma_member_f/8.4bpp");
+const u32 gEventObjectPic_Sidney_0[] = INCBIN_U32("graphics/event_objects/pics/people/sidney/0.4bpp");
+const u32 gEventObjectPic_Sidney_1[] = INCBIN_U32("graphics/event_objects/pics/people/sidney/1.4bpp");
+const u32 gEventObjectPic_Sidney_2[] = INCBIN_U32("graphics/event_objects/pics/people/sidney/2.4bpp");
+const u32 gEventObjectPic_Phoebe_0[] = INCBIN_U32("graphics/event_objects/pics/people/phoebe/0.4bpp");
+const u32 gEventObjectPic_Phoebe_1[] = INCBIN_U32("graphics/event_objects/pics/people/phoebe/1.4bpp");
+const u32 gEventObjectPic_Phoebe_2[] = INCBIN_U32("graphics/event_objects/pics/people/phoebe/2.4bpp");
+const u32 gEventObjectPic_Glacia_0[] = INCBIN_U32("graphics/event_objects/pics/people/glacia/0.4bpp");
+const u32 gEventObjectPic_Glacia_1[] = INCBIN_U32("graphics/event_objects/pics/people/glacia/1.4bpp");
+const u32 gEventObjectPic_Glacia_2[] = INCBIN_U32("graphics/event_objects/pics/people/glacia/2.4bpp");
+const u32 gEventObjectPic_Drake_0[] = INCBIN_U32("graphics/event_objects/pics/people/drake/0.4bpp");
+const u32 gEventObjectPic_Drake_1[] = INCBIN_U32("graphics/event_objects/pics/people/drake/1.4bpp");
+const u32 gEventObjectPic_Drake_2[] = INCBIN_U32("graphics/event_objects/pics/people/drake/2.4bpp");
+const u32 gEventObjectPic_Roxanne_0[] = INCBIN_U32("graphics/event_objects/pics/people/roxanne/0.4bpp");
+const u32 gEventObjectPic_Roxanne_1[] = INCBIN_U32("graphics/event_objects/pics/people/roxanne/1.4bpp");
+const u32 gEventObjectPic_Roxanne_2[] = INCBIN_U32("graphics/event_objects/pics/people/roxanne/2.4bpp");
+const u32 gEventObjectPic_Brawly_0[] = INCBIN_U32("graphics/event_objects/pics/people/brawly/0.4bpp");
+const u32 gEventObjectPic_Brawly_1[] = INCBIN_U32("graphics/event_objects/pics/people/brawly/1.4bpp");
+const u32 gEventObjectPic_Brawly_2[] = INCBIN_U32("graphics/event_objects/pics/people/brawly/2.4bpp");
+const u32 gEventObjectPic_Wattson_0[] = INCBIN_U32("graphics/event_objects/pics/people/wattson/0.4bpp");
+const u32 gEventObjectPic_Wattson_1[] = INCBIN_U32("graphics/event_objects/pics/people/wattson/1.4bpp");
+const u32 gEventObjectPic_Wattson_2[] = INCBIN_U32("graphics/event_objects/pics/people/wattson/2.4bpp");
+const u32 gEventObjectPic_Flannery_0[] = INCBIN_U32("graphics/event_objects/pics/people/flannery/0.4bpp");
+const u32 gEventObjectPic_Flannery_1[] = INCBIN_U32("graphics/event_objects/pics/people/flannery/1.4bpp");
+const u32 gEventObjectPic_Flannery_2[] = INCBIN_U32("graphics/event_objects/pics/people/flannery/2.4bpp");
+const u32 gEventObjectPic_Norman_0[] = INCBIN_U32("graphics/event_objects/pics/people/norman/0.4bpp");
+const u32 gEventObjectPic_Norman_1[] = INCBIN_U32("graphics/event_objects/pics/people/norman/1.4bpp");
+const u32 gEventObjectPic_Norman_2[] = INCBIN_U32("graphics/event_objects/pics/people/norman/2.4bpp");
+const u32 gEventObjectPic_Norman_3[] = INCBIN_U32("graphics/event_objects/pics/people/norman/3.4bpp");
+const u32 gEventObjectPic_Norman_4[] = INCBIN_U32("graphics/event_objects/pics/people/norman/4.4bpp");
+const u32 gEventObjectPic_Norman_5[] = INCBIN_U32("graphics/event_objects/pics/people/norman/5.4bpp");
+const u32 gEventObjectPic_Norman_6[] = INCBIN_U32("graphics/event_objects/pics/people/norman/6.4bpp");
+const u32 gEventObjectPic_Norman_7[] = INCBIN_U32("graphics/event_objects/pics/people/norman/7.4bpp");
+const u32 gEventObjectPic_Norman_8[] = INCBIN_U32("graphics/event_objects/pics/people/norman/8.4bpp");
+const u32 gEventObjectPic_Winona_0[] = INCBIN_U32("graphics/event_objects/pics/people/winona/0.4bpp");
+const u32 gEventObjectPic_Winona_1[] = INCBIN_U32("graphics/event_objects/pics/people/winona/1.4bpp");
+const u32 gEventObjectPic_Winona_2[] = INCBIN_U32("graphics/event_objects/pics/people/winona/2.4bpp");
+const u32 gEventObjectPic_Liza_0[] = INCBIN_U32("graphics/event_objects/pics/people/liza/0.4bpp");
+const u32 gEventObjectPic_Liza_1[] = INCBIN_U32("graphics/event_objects/pics/people/liza/1.4bpp");
+const u32 gEventObjectPic_Liza_2[] = INCBIN_U32("graphics/event_objects/pics/people/liza/2.4bpp");
+const u32 gEventObjectPic_Tate_0[] = INCBIN_U32("graphics/event_objects/pics/people/tate/0.4bpp");
+const u32 gEventObjectPic_Tate_1[] = INCBIN_U32("graphics/event_objects/pics/people/tate/1.4bpp");
+const u32 gEventObjectPic_Tate_2[] = INCBIN_U32("graphics/event_objects/pics/people/tate/2.4bpp");
+const u32 gEventObjectPic_Wallace_0[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/0.4bpp");
+const u32 gEventObjectPic_Wallace_1[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/1.4bpp");
+const u32 gEventObjectPic_Wallace_2[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/2.4bpp");
+const u32 gEventObjectPic_Wallace_3[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/3.4bpp");
+const u32 gEventObjectPic_Wallace_4[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/4.4bpp");
+const u32 gEventObjectPic_Wallace_5[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/5.4bpp");
+const u32 gEventObjectPic_Wallace_6[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/6.4bpp");
+const u32 gEventObjectPic_Wallace_7[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/7.4bpp");
+const u32 gEventObjectPic_Wallace_8[] = INCBIN_U32("graphics/event_objects/pics/people/wallace/8.4bpp");
+const u32 gEventObjectPic_Steven_0[] = INCBIN_U32("graphics/event_objects/pics/people/steven/0.4bpp");
+const u32 gEventObjectPic_Steven_1[] = INCBIN_U32("graphics/event_objects/pics/people/steven/1.4bpp");
+const u32 gEventObjectPic_Steven_2[] = INCBIN_U32("graphics/event_objects/pics/people/steven/2.4bpp");
+const u32 gEventObjectPic_Steven_3[] = INCBIN_U32("graphics/event_objects/pics/people/steven/3.4bpp");
+const u32 gEventObjectPic_Steven_4[] = INCBIN_U32("graphics/event_objects/pics/people/steven/4.4bpp");
+const u32 gEventObjectPic_Steven_5[] = INCBIN_U32("graphics/event_objects/pics/people/steven/5.4bpp");
+const u32 gEventObjectPic_Steven_6[] = INCBIN_U32("graphics/event_objects/pics/people/steven/6.4bpp");
+const u32 gEventObjectPic_Steven_7[] = INCBIN_U32("graphics/event_objects/pics/people/steven/7.4bpp");
+const u32 gEventObjectPic_Steven_8[] = INCBIN_U32("graphics/event_objects/pics/people/steven/8.4bpp");
+const u32 gEventObjectPic_Wally_0[] = INCBIN_U32("graphics/event_objects/pics/people/wally/0.4bpp");
+const u32 gEventObjectPic_Wally_1[] = INCBIN_U32("graphics/event_objects/pics/people/wally/1.4bpp");
+const u32 gEventObjectPic_Wally_2[] = INCBIN_U32("graphics/event_objects/pics/people/wally/2.4bpp");
+const u32 gEventObjectPic_Wally_3[] = INCBIN_U32("graphics/event_objects/pics/people/wally/3.4bpp");
+const u32 gEventObjectPic_Wally_4[] = INCBIN_U32("graphics/event_objects/pics/people/wally/4.4bpp");
+const u32 gEventObjectPic_Wally_5[] = INCBIN_U32("graphics/event_objects/pics/people/wally/5.4bpp");
+const u32 gEventObjectPic_Wally_6[] = INCBIN_U32("graphics/event_objects/pics/people/wally/6.4bpp");
+const u32 gEventObjectPic_Wally_7[] = INCBIN_U32("graphics/event_objects/pics/people/wally/7.4bpp");
+const u32 gEventObjectPic_Wally_8[] = INCBIN_U32("graphics/event_objects/pics/people/wally/8.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_0[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/0.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_1[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/1.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_2[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/2.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_3[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/3.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_4[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/4.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_5[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/5.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_6[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/6.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_7[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/7.4bpp");
+const u32 gEventObjectPic_RubySapphireLittleBoy_8[] = INCBIN_U32("graphics/event_objects/pics/people/ruby_sapphire_little_boy/8.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_0[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/0.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_1[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/1.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_2[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/2.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_3[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/3.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_4[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/4.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_5[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/5.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_6[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/6.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_7[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/7.4bpp");
+const u32 gEventObjectPic_HotSpringsOldWoman_8[] = INCBIN_U32("graphics/event_objects/pics/people/hot_springs_old_woman/8.4bpp");
+const u32 gEventObjectPic_LatiasLatios_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/latias_latios/0.4bpp");
+const u32 gEventObjectPic_LatiasLatios_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/latias_latios/1.4bpp");
+const u32 gEventObjectPic_LatiasLatios_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/latias_latios/2.4bpp");
+const u32 gEventObjectPic_Boy5_0[] = INCBIN_U32("graphics/event_objects/pics/people/boy_5/0.4bpp");
+const u32 gEventObjectPic_Boy5_1[] = INCBIN_U32("graphics/event_objects/pics/people/boy_5/1.4bpp");
+const u32 gEventObjectPic_Boy5_2[] = INCBIN_U32("graphics/event_objects/pics/people/boy_5/2.4bpp");
+const u32 gEventObjectPic_ContestOldMan_0[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/0.4bpp");
+const u32 gEventObjectPic_ContestOldMan_1[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/1.4bpp");
+const u32 gEventObjectPic_ContestOldMan_2[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/2.4bpp");
+const u32 gEventObjectPic_ContestOldMan_3[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/3.4bpp");
+const u32 gEventObjectPic_ContestOldMan_4[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/4.4bpp");
+const u32 gEventObjectPic_ContestOldMan_5[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/5.4bpp");
+const u32 gEventObjectPic_ContestOldMan_6[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/6.4bpp");
+const u32 gEventObjectPic_ContestOldMan_7[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/7.4bpp");
+const u32 gEventObjectPic_ContestOldMan_8[] = INCBIN_U32("graphics/event_objects/pics/people/contest_old_man/8.4bpp");
+const u32 gEventObjectPic_Archie_0[] = INCBIN_U32("graphics/event_objects/pics/people/archie/0.4bpp");
+const u32 gEventObjectPic_Archie_1[] = INCBIN_U32("graphics/event_objects/pics/people/archie/1.4bpp");
+const u32 gEventObjectPic_Archie_2[] = INCBIN_U32("graphics/event_objects/pics/people/archie/2.4bpp");
+const u32 gEventObjectPic_Archie_3[] = INCBIN_U32("graphics/event_objects/pics/people/archie/3.4bpp");
+const u32 gEventObjectPic_Archie_4[] = INCBIN_U32("graphics/event_objects/pics/people/archie/4.4bpp");
+const u32 gEventObjectPic_Archie_5[] = INCBIN_U32("graphics/event_objects/pics/people/archie/5.4bpp");
+const u32 gEventObjectPic_Archie_6[] = INCBIN_U32("graphics/event_objects/pics/people/archie/6.4bpp");
+const u32 gEventObjectPic_Archie_7[] = INCBIN_U32("graphics/event_objects/pics/people/archie/7.4bpp");
+const u32 gEventObjectPic_Archie_8[] = INCBIN_U32("graphics/event_objects/pics/people/archie/8.4bpp");
+const u32 gEventObjectPic_Maxie_0[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/0.4bpp");
+const u32 gEventObjectPic_Maxie_1[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/1.4bpp");
+const u32 gEventObjectPic_Maxie_2[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/2.4bpp");
+const u32 gEventObjectPic_Maxie_3[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/3.4bpp");
+const u32 gEventObjectPic_Maxie_4[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/4.4bpp");
+const u32 gEventObjectPic_Maxie_5[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/5.4bpp");
+const u32 gEventObjectPic_Maxie_6[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/6.4bpp");
+const u32 gEventObjectPic_Maxie_7[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/7.4bpp");
+const u32 gEventObjectPic_Maxie_8[] = INCBIN_U32("graphics/event_objects/pics/people/maxie/8.4bpp");
+const u32 gEventObjectPic_KyogreFront_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kyogre_front/0.4bpp");
+const u32 gEventObjectPic_KyogreFront_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kyogre_front/1.4bpp");
+const u32 gEventObjectPic_KyogreSide_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kyogre_side/0.4bpp");
+const u32 gEventObjectPic_KyogreSide_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kyogre_side/1.4bpp");
+const u32 gEventObjectPic_GroudonFront_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/groudon_front/0.4bpp");
+const u32 gEventObjectPic_GroudonFront_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/groudon_front/1.4bpp");
+const u32 gEventObjectPic_GroudonSide_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/groudon_side/0.4bpp");
+const u32 gEventObjectPic_GroudonSide_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/groudon_side/1.4bpp");
+const u32 gEventObjectPic_Regi[] = INCBIN_U32("graphics/event_objects/pics/pokemon/regi.4bpp");
+const u32 gEventObjectPic_Skitty_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/skitty/0.4bpp");
+const u32 gEventObjectPic_Skitty_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/skitty/1.4bpp");
+const u32 gEventObjectPic_Skitty_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/skitty/2.4bpp");
+const u32 gEventObjectPic_Kecleon_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kecleon/0.4bpp");
+const u32 gEventObjectPic_Kecleon_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kecleon/1.4bpp");
+const u32 gEventObjectPic_Kecleon_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kecleon/2.4bpp");
+const u32 gEventObjectPic_Rayquaza_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/rayquaza/0.4bpp");
+const u32 gEventObjectPic_Rayquaza_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/rayquaza/1.4bpp");
+const u32 gEventObjectPic_Rayquaza_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/rayquaza/2.4bpp");
+const u32 gEventObjectPic_Rayquaza_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/rayquaza/3.4bpp");
+const u32 gEventObjectPic_Rayquaza_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/rayquaza/4.4bpp");
+const u32 gEventObjectPic_RayquazaStill[] = INCBIN_U32("graphics/event_objects/pics/pokemon/rayquaza_still.4bpp");
+const u32 gEventObjectPic_Zigzagoon_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/zigzagoon/0.4bpp");
+const u32 gEventObjectPic_Zigzagoon_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/zigzagoon/1.4bpp");
+const u32 gEventObjectPic_Zigzagoon_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/zigzagoon/2.4bpp");
+const u32 gEventObjectPic_Pikachu_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/pikachu/0.4bpp");
+const u32 gEventObjectPic_Pikachu_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/pikachu/1.4bpp");
+const u32 gEventObjectPic_Pikachu_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/pikachu/2.4bpp");
+const u32 gEventObjectPic_Azumarill_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azumarill/0.4bpp");
+const u32 gEventObjectPic_Azumarill_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azumarill/1.4bpp");
+const u32 gEventObjectPic_Azumarill_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azumarill/2.4bpp");
+const u32 gEventObjectPic_Wingull_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/0.4bpp");
+const u32 gEventObjectPic_Wingull_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/3.4bpp");
+const u32 gEventObjectPic_Wingull_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/1.4bpp");
+const u32 gEventObjectPic_Wingull_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/4.4bpp");
+const u32 gEventObjectPic_Wingull_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/2.4bpp");
+const u32 gEventObjectPic_Wingull_5[] = INCBIN_U32("graphics/event_objects/pics/pokemon/wingull/5.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_0[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/0.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_1[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/1.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_2[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/2.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_3[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/3.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_4[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/4.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_5[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/5.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_6[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/6.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_7[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/7.4bpp");
+const u32 gEventObjectPic_TuberMSwimming_8[] = INCBIN_U32("graphics/event_objects/pics/people/tuber_m_swimming/8.4bpp");
+const u32 gEventObjectPic_Azurill_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azurill/0.4bpp");
+const u32 gEventObjectPic_Azurill_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azurill/1.4bpp");
+const u32 gEventObjectPic_Azurill_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/azurill/2.4bpp");
+const u32 gEventObjectPic_Mom_0[] = INCBIN_U32("graphics/event_objects/pics/people/mom/0.4bpp");
+const u32 gEventObjectPic_Mom_1[] = INCBIN_U32("graphics/event_objects/pics/people/mom/1.4bpp");
+const u32 gEventObjectPic_Mom_2[] = INCBIN_U32("graphics/event_objects/pics/people/mom/2.4bpp");
+const u32 gEventObjectPic_Mom_3[] = INCBIN_U32("graphics/event_objects/pics/people/mom/3.4bpp");
+const u32 gEventObjectPic_Mom_4[] = INCBIN_U32("graphics/event_objects/pics/people/mom/4.4bpp");
+const u32 gEventObjectPic_Mom_5[] = INCBIN_U32("graphics/event_objects/pics/people/mom/5.4bpp");
+const u32 gEventObjectPic_Mom_6[] = INCBIN_U32("graphics/event_objects/pics/people/mom/6.4bpp");
+const u32 gEventObjectPic_Mom_7[] = INCBIN_U32("graphics/event_objects/pics/people/mom/7.4bpp");
+const u32 gEventObjectPic_Mom_8[] = INCBIN_U32("graphics/event_objects/pics/people/mom/8.4bpp");
+const u16 gEventObjectPalette22[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_22.gbapal");
+const u16 gEventObjectPalette23[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_23.gbapal");
+const u16 gEventObjectPalette24[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_24.gbapal");
+const u16 gEventObjectPalette25[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_25.gbapal");
+const u32 gEventObjectPic_UnusedNatuDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_natu_doll.4bpp");
+const u32 gEventObjectPic_UnusedMagnemiteDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_magnemite_doll.4bpp");
+const u32 gEventObjectPic_UnusedSquirtleDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_squirtle_doll.4bpp");
+const u32 gEventObjectPic_UnusedWooperDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_wooper_doll.4bpp");
+const u32 gEventObjectPic_UnusedPikachuDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_pikachu_doll.4bpp");
+const u32 gEventObjectPic_UnusedPorygon2Doll[] = INCBIN_U32("graphics/event_objects/pics/dolls/unused_porygon2_doll.4bpp");
+const u32 gEventObjectPic_PichuDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/pichu_doll.4bpp");
+const u32 gEventObjectPic_PikachuDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/pikachu_doll.4bpp");
+const u32 gEventObjectPic_MarillDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/marill_doll.4bpp");
+const u32 gEventObjectPic_TogepiDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/togepi_doll.4bpp");
+const u32 gEventObjectPic_CyndaquilDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/cyndaquil_doll.4bpp");
+const u32 gEventObjectPic_ChikoritaDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/chikorita_doll.4bpp");
+const u32 gEventObjectPic_TotodileDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/totodile_doll.4bpp");
+const u32 gEventObjectPic_JigglypuffDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/jigglypuff_doll.4bpp");
+const u32 gEventObjectPic_MeowthDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/meowth_doll.4bpp");
+const u32 gEventObjectPic_ClefairyDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/clefairy_doll.4bpp");
+const u32 gEventObjectPic_DittoDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/ditto_doll.4bpp");
+const u32 gEventObjectPic_SmoochumDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/smoochum_doll.4bpp");
+const u32 gEventObjectPic_TreeckoDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/treecko_doll.4bpp");
+const u32 gEventObjectPic_TorchicDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/torchic_doll.4bpp");
+const u32 gEventObjectPic_MudkipDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/mudkip_doll.4bpp");
+const u32 gEventObjectPic_DuskullDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/duskull_doll.4bpp");
+const u32 gEventObjectPic_WynautDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/wynaut_doll.4bpp");
+const u32 gEventObjectPic_BaltoyDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/baltoy_doll.4bpp");
+const u32 gEventObjectPic_KecleonDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/kecleon_doll.4bpp");
+const u32 gEventObjectPic_AzurillDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/azurill_doll.4bpp");
+const u32 gEventObjectPic_SkittyDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/skitty_doll.4bpp");
+const u32 gEventObjectPic_SwabluDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/swablu_doll.4bpp");
+const u32 gEventObjectPic_GulpinDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/gulpin_doll.4bpp");
+const u32 gEventObjectPic_LotadDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/lotad_doll.4bpp");
+const u32 gEventObjectPic_SeedotDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/seedot_doll.4bpp");
+const u32 gEventObjectPic_PikaCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/pika_cushion.4bpp");
+const u32 gEventObjectPic_RoundCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/round_cushion.4bpp");
+const u32 gEventObjectPic_KissCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/kiss_cushion.4bpp");
+const u32 gEventObjectPic_ZigzagCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/zigzag_cushion.4bpp");
+const u32 gEventObjectPic_SpinCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/spin_cushion.4bpp");
+const u32 gEventObjectPic_DiamondCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/diamond_cushion.4bpp");
+const u32 gEventObjectPic_BallCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/ball_cushion.4bpp");
+const u32 gEventObjectPic_GrassCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/grass_cushion.4bpp");
+const u32 gEventObjectPic_FireCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/fire_cushion.4bpp");
+const u32 gEventObjectPic_WaterCushion[] = INCBIN_U32("graphics/event_objects/pics/cushions/water_cushion.4bpp");
+const u32 gEventObjectPic_BigSnorlaxDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_snorlax_doll.4bpp");
+const u32 gEventObjectPic_BigRhydonDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_rhydon_doll.4bpp");
+const u32 gEventObjectPic_BigLaprasDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_lapras_doll.4bpp");
+const u32 gEventObjectPic_BigVenusaurDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_venusaur_doll.4bpp");
+const u32 gEventObjectPic_BigCharizardDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_charizard_doll.4bpp");
+const u32 gEventObjectPic_BigBlastoiseDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_blastoise_doll.4bpp");
+const u32 gEventObjectPic_BigWailmerDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_wailmer_doll.4bpp");
+const u32 gEventObjectPic_BigRegirockDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_regirock_doll.4bpp");
+const u32 gEventObjectPic_BigRegiceDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_regice_doll.4bpp");
+const u32 gEventObjectPic_BigRegisteelDoll[] = INCBIN_U32("graphics/event_objects/pics/dolls/big_registeel_doll.4bpp");
+const u32 gEventObjectPic_CuttableTree_0[] = INCBIN_U32("graphics/event_objects/pics/misc/cuttable_tree/0.4bpp");
+const u32 gEventObjectPic_CuttableTree_1[] = INCBIN_U32("graphics/event_objects/pics/misc/cuttable_tree/1.4bpp");
+const u32 gEventObjectPic_CuttableTree_2[] = INCBIN_U32("graphics/event_objects/pics/misc/cuttable_tree/2.4bpp");
+const u32 gEventObjectPic_CuttableTree_3[] = INCBIN_U32("graphics/event_objects/pics/misc/cuttable_tree/3.4bpp");
+const u32 gEventObjectPic_BreakableRock_0[] = INCBIN_U32("graphics/event_objects/pics/misc/breakable_rock/0.4bpp");
+const u32 gEventObjectPic_BreakableRock_1[] = INCBIN_U32("graphics/event_objects/pics/misc/breakable_rock/1.4bpp");
+const u32 gEventObjectPic_BreakableRock_2[] = INCBIN_U32("graphics/event_objects/pics/misc/breakable_rock/2.4bpp");
+const u32 gEventObjectPic_BreakableRock_3[] = INCBIN_U32("graphics/event_objects/pics/misc/breakable_rock/3.4bpp");
+const u32 gEventObjectPic_PushableBoulder[] = INCBIN_U32("graphics/event_objects/pics/misc/pushable_boulder.4bpp");
+const u32 gEventObjectPic_MrBrineysBoat_0[] = INCBIN_U32("graphics/event_objects/pics/misc/mr_brineys_boat/0.4bpp");
+const u32 gEventObjectPic_MrBrineysBoat_1[] = INCBIN_U32("graphics/event_objects/pics/misc/mr_brineys_boat/1.4bpp");
+const u32 gEventObjectPic_MrBrineysBoat_2[] = INCBIN_U32("graphics/event_objects/pics/misc/mr_brineys_boat/2.4bpp");
+const u32 gEventObjectPic_Fossil[] = INCBIN_U32("graphics/event_objects/pics/misc/fossil.4bpp");
+const u32 gEventObjectPic_SubmarineShadow[] = INCBIN_U32("graphics/event_objects/pics/misc/submarine_shadow.4bpp");
+const u16 gEventObjectPalette26[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_26.gbapal");
+const u32 gEventObjectPic_Truck[] = INCBIN_U32("graphics/event_objects/pics/misc/truck.4bpp");
+const u16 gEventObjectPalette14[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_14.gbapal");
+const u32 gEventObjectPic_VigorothCarryingBox_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/vigoroth_carrying_box/0.4bpp");
+const u32 gEventObjectPic_VigorothCarryingBox_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/vigoroth_carrying_box/1.4bpp");
+const u32 gEventObjectPic_VigorothCarryingBox_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/vigoroth_carrying_box/2.4bpp");
+const u32 gEventObjectPic_VigorothFacingAway_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/vigoroth_facing_away/0.4bpp");
+const u32 gEventObjectPic_VigorothFacingAway_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/vigoroth_facing_away/1.4bpp");
+const u16 gEventObjectPalette15[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_15.gbapal");
+const u32 gEventObjectPic_BirchsBag[] = INCBIN_U32("graphics/event_objects/pics/misc/birchs_bag.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/0.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/1.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/2.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/3.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/4.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_5[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/5.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_6[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/6.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_7[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/7.4bpp");
+const u32 gEventObjectPic_EnemyZigzagoon_8[] = INCBIN_U32("graphics/event_objects/pics/pokemon/enemy_zigzagoon/8.4bpp");
+const u16 gEventObjectPalette16[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_16.gbapal");
+const u32 gEventObjectPic_Poochyena_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/0.4bpp");
+const u32 gEventObjectPic_Poochyena_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/1.4bpp");
+const u32 gEventObjectPic_Poochyena_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/2.4bpp");
+const u32 gEventObjectPic_Poochyena_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/3.4bpp");
+const u32 gEventObjectPic_Poochyena_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/4.4bpp");
+const u32 gEventObjectPic_Poochyena_5[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/5.4bpp");
+const u32 gEventObjectPic_Poochyena_6[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/6.4bpp");
+const u32 gEventObjectPic_Poochyena_7[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/7.4bpp");
+const u32 gEventObjectPic_Poochyena_8[] = INCBIN_U32("graphics/event_objects/pics/pokemon/poochyena/8.4bpp");
+const u16 gEventObjectPalette27[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_27.gbapal");
+const u32 gEventObjectPic_CableCar[] = INCBIN_U32("graphics/event_objects/pics/misc/cable_car.4bpp");
+const u16 gEventObjectPalette20[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_20.gbapal");
+const u32 gEventObjectPic_SSTidal[] = INCBIN_U32("graphics/event_objects/pics/misc/ss_tidal.4bpp");
+const u16 gEventObjectPalette21[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_21.gbapal");
+const u32 gFieldEffectObjectPic_BerryTreeGrowthSparkle_0[] = INCBIN_U32("graphics/event_objects/pics/effects/berry_tree_growth_sparkle/0.4bpp");
+const u32 gFieldEffectObjectPic_BerryTreeGrowthSparkle_1[] = INCBIN_U32("graphics/event_objects/pics/effects/berry_tree_growth_sparkle/1.4bpp");
+const u32 gFieldEffectObjectPic_BerryTreeGrowthSparkle_2[] = INCBIN_U32("graphics/event_objects/pics/effects/berry_tree_growth_sparkle/2.4bpp");
+const u32 gFieldEffectObjectPic_BerryTreeGrowthSparkle_3[] = INCBIN_U32("graphics/event_objects/pics/effects/berry_tree_growth_sparkle/3.4bpp");
+const u32 gFieldEffectObjectPic_BerryTreeGrowthSparkle_4[] = INCBIN_U32("graphics/event_objects/pics/effects/berry_tree_growth_sparkle/4.4bpp");
+const u32 gFieldEffectObjectPic_BerryTreeGrowthSparkle_5[] = INCBIN_U32("graphics/event_objects/pics/effects/berry_tree_growth_sparkle/5.4bpp");
+const u32 gEventObjectPic_BerryTreeDirtPile[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/dirt_pile.4bpp");
+const u32 gEventObjectPic_BerryTreeSprout_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sprout/0.4bpp");
+const u32 gEventObjectPic_BerryTreeSprout_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sprout/1.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/0.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/1.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/2.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/3.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/4.4bpp");
+const u32 gEventObjectPic_PechaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pecha/5.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/0.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/1.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/2.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/3.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/4.4bpp");
+const u32 gEventObjectPic_KelpsyBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/kelpsy/5.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/0.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/1.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/2.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/3.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/4.4bpp");
+const u32 gEventObjectPic_WepearBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wepear/5.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/0.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/1.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/2.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/3.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/4.4bpp");
+const u32 gEventObjectPic_IapapaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/iapapa/5.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/0.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/1.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/2.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/3.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/4.4bpp");
+const u32 gEventObjectPic_CheriBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cheri/5.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/0.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/1.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/2.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/3.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/4.4bpp");
+const u32 gEventObjectPic_FigyBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/figy/5.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/0.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/1.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/2.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/3.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/4.4bpp");
+const u32 gEventObjectPic_MagoBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/mago/5.4bpp");
+const u32 gEventObjectPic_LumBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/0.4bpp");
+const u32 gEventObjectPic_LumBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/1.4bpp");
+const u32 gEventObjectPic_LumBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/2.4bpp");
+const u32 gEventObjectPic_LumBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/3.4bpp");
+const u32 gEventObjectPic_LumBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/4.4bpp");
+const u32 gEventObjectPic_LumBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lum/5.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/0.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/1.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/2.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/3.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/4.4bpp");
+const u32 gEventObjectPic_RazzBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/razz/5.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/0.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/1.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/2.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/3.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/4.4bpp");
+const u32 gEventObjectPic_GrepaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/grepa/5.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/0.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/1.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/2.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/3.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/4.4bpp");
+const u32 gEventObjectPic_RabutaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rabuta/5.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/0.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/1.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/2.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/3.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/4.4bpp");
+const u32 gEventObjectPic_NomelBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/nomel/5.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/0.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/1.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/2.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/3.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/4.4bpp");
+const u32 gEventObjectPic_LeppaBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/leppa/5.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/0.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/1.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/2.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/3.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/4.4bpp");
+const u32 gEventObjectPic_LiechiBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/liechi/5.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/0.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/1.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/2.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/3.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/4.4bpp");
+const u32 gEventObjectPic_HondewBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/hondew/5.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/0.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/1.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/2.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/3.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/4.4bpp");
+const u32 gEventObjectPic_AguavBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aguav/5.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/0.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/1.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/2.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/3.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/4.4bpp");
+const u32 gEventObjectPic_WikiBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/wiki/5.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/0.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/1.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/2.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/3.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/4.4bpp");
+const u32 gEventObjectPic_PomegBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pomeg/5.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/0.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/1.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/2.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/3.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/4.4bpp");
+const u32 gEventObjectPic_RawstBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/rawst/5.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/0.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/1.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/2.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/3.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/4.4bpp");
+const u32 gEventObjectPic_SpelonBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/spelon/5.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/0.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/1.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/2.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/3.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/4.4bpp");
+const u32 gEventObjectPic_ChestoBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/chesto/5.4bpp");
+const u32 gEventObjectPic_OranBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/0.4bpp");
+const u32 gEventObjectPic_OranBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/1.4bpp");
+const u32 gEventObjectPic_OranBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/2.4bpp");
+const u32 gEventObjectPic_OranBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/3.4bpp");
+const u32 gEventObjectPic_OranBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/4.4bpp");
+const u32 gEventObjectPic_OranBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/oran/5.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/0.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/1.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/2.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/3.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/4.4bpp");
+const u32 gEventObjectPic_PersimBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/persim/5.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/0.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/1.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/2.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/3.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/4.4bpp");
+const u32 gEventObjectPic_SitrusBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/sitrus/5.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/0.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/1.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/2.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/3.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/4.4bpp");
+const u32 gEventObjectPic_AspearBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/aspear/5.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/0.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/1.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/2.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/3.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/4.4bpp");
+const u32 gEventObjectPic_PamtreBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/pamtre/5.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/0.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/1.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/2.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/3.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/4.4bpp");
+const u32 gEventObjectPic_CornnBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/cornn/5.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/0.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/1.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/2.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/3.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/4.4bpp");
+const u32 gEventObjectPic_LansatBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/lansat/5.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/0.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/1.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/2.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/3.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/4.4bpp");
+const u32 gEventObjectPic_DurinBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/durin/5.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_0[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/0.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_1[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/1.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_2[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/2.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_3[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/3.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_4[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/4.4bpp");
+const u32 gEventObjectPic_TamatoBerryTree_5[] = INCBIN_U32("graphics/event_objects/pics/berry_trees/tamato/5.4bpp");
+const u32 gFieldEffectObjectPic_SurfBlob_0[] = INCBIN_U32("graphics/event_objects/pics/effects/surf_blob/0.4bpp");
+const u32 gFieldEffectObjectPic_SurfBlob_1[] = INCBIN_U32("graphics/event_objects/pics/effects/surf_blob/1.4bpp");
+const u32 gFieldEffectObjectPic_SurfBlob_2[] = INCBIN_U32("graphics/event_objects/pics/effects/surf_blob/2.4bpp");
+const u32 gEventObjectPic_QuintyPlump_0[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/0.4bpp");
+const u32 gEventObjectPic_QuintyPlump_1[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/1.4bpp");
+const u32 gEventObjectPic_QuintyPlump_2[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/2.4bpp");
+const u32 gEventObjectPic_QuintyPlump_3[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/3.4bpp");
+const u32 gEventObjectPic_QuintyPlump_4[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/4.4bpp");
+const u32 gEventObjectPic_QuintyPlump_5[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/5.4bpp");
+const u32 gEventObjectPic_QuintyPlump_6[] = INCBIN_U32("graphics/event_objects/pics/people/quinty_plump/6.4bpp");
+const u16 gEventObjectPalette12[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_12.gbapal");
+const u16 gEventObjectPalette13[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_13.gbapal");
+const u32 gFieldEffectObjectPic_ShadowSmall[] = INCBIN_U32("graphics/event_objects/pics/effects/shadow_small.4bpp");
+const u32 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U32("graphics/event_objects/pics/effects/shadow_medium.4bpp");
+const u32 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U32("graphics/event_objects/pics/effects/shadow_large.4bpp");
+const u32 gFieldEffectObjectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/event_objects/pics/effects/shadow_extra_large.4bpp");
+const u32 gUnknown_084F6D38[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_4F6D38/0.4bpp");
+const u16 gFieldEffectObjectPalette6[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_06.gbapal");
+const u32 gFieldEffectObjectPic_Ripple_0[] = INCBIN_U32("graphics/event_objects/pics/effects/ripple/0.4bpp");
+const u32 gFieldEffectObjectPic_Ripple_1[] = INCBIN_U32("graphics/event_objects/pics/effects/ripple/1.4bpp");
+const u32 gFieldEffectObjectPic_Ripple_2[] = INCBIN_U32("graphics/event_objects/pics/effects/ripple/2.4bpp");
+const u32 gFieldEffectObjectPic_Ripple_3[] = INCBIN_U32("graphics/event_objects/pics/effects/ripple/3.4bpp");
+const u32 gFieldEffectObjectPic_Ripple_4[] = INCBIN_U32("graphics/event_objects/pics/effects/ripple/4.4bpp");
+const u32 gFieldEffectObjectPic_Ash_0[] = INCBIN_U32("graphics/event_objects/pics/effects/ash/0.4bpp");
+const u32 gFieldEffectObjectPic_Ash_1[] = INCBIN_U32("graphics/event_objects/pics/effects/ash/1.4bpp");
+const u32 gFieldEffectObjectPic_Ash_2[] = INCBIN_U32("graphics/event_objects/pics/effects/ash/2.4bpp");
+const u32 gFieldEffectObjectPic_Ash_3[] = INCBIN_U32("graphics/event_objects/pics/effects/ash/3.4bpp");
+const u32 gFieldEffectObjectPic_Ash_4[] = INCBIN_U32("graphics/event_objects/pics/effects/ash/4.4bpp");
+const u32 gFieldEffectObjectPic_Arrow_0[] = INCBIN_U32("graphics/event_objects/pics/effects/arrow/0.4bpp");
+const u32 gFieldEffectObjectPic_Arrow_1[] = INCBIN_U32("graphics/event_objects/pics/effects/arrow/1.4bpp");
+const u32 gFieldEffectObjectPic_Arrow_2[] = INCBIN_U32("graphics/event_objects/pics/effects/arrow/2.4bpp");
+const u32 gFieldEffectObjectPic_Arrow_3[] = INCBIN_U32("graphics/event_objects/pics/effects/arrow/3.4bpp");
+const u32 gFieldEffectObjectPic_Arrow_4[] = INCBIN_U32("graphics/event_objects/pics/effects/arrow/4.4bpp");
+const u32 gFieldEffectObjectPic_Arrow_5[] = INCBIN_U32("graphics/event_objects/pics/effects/arrow/5.4bpp");
+const u32 gFieldEffectObjectPic_Arrow_6[] = INCBIN_U32("graphics/event_objects/pics/effects/arrow/6.4bpp");
+const u32 gFieldEffectObjectPic_Arrow_7[] = INCBIN_U32("graphics/event_objects/pics/effects/arrow/7.4bpp");
+const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_00.gbapal");
+const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_01.gbapal");
+const u32 gFieldEffectObjectPic_GroundImpactDust_0[] = INCBIN_U32("graphics/event_objects/pics/effects/ground_impact_dust/0.4bpp");
+const u32 gFieldEffectObjectPic_GroundImpactDust_1[] = INCBIN_U32("graphics/event_objects/pics/effects/ground_impact_dust/1.4bpp");
+const u32 gFieldEffectObjectPic_GroundImpactDust_2[] = INCBIN_U32("graphics/event_objects/pics/effects/ground_impact_dust/2.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopTallGrass_0[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_tall_grass/0.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopTallGrass_1[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_tall_grass/1.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopTallGrass_2[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_tall_grass/2.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopTallGrass_3[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_tall_grass/3.4bpp");
+const u32 gUnusedGrass_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unused_grass/0.4bpp");
+const u32 gUnusedGrass_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unused_grass/1.4bpp");
+const u32 gUnusedGrass_2[] = INCBIN_U32("graphics/event_objects/pics/effects/unused_grass/2.4bpp");
+const u32 gUnusedGrass_3[] = INCBIN_U32("graphics/event_objects/pics/effects/unused_grass/3.4bpp");
+const u32 gFieldEffectObjectPic_Unknown16_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_16/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown16_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_16/1.4bpp");
+const u32 gFieldEffectObjectPic_Unknown16_2[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_16/2.4bpp");
+const u32 gFieldEffectObjectPic_Unknown16_3[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_16/3.4bpp");
+const u32 gFieldEffectObjectPic_Unknown16_4[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_16/4.4bpp");
+const u32 gUnknown_084F7E38[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_4F7E38/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown16_5[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_16/5.4bpp");
+const u32 gFieldEffectObjectPic_Unknown17_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown17_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17/1.4bpp");
+const u32 gFieldEffectObjectPic_Unknown17_2[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17/2.4bpp");
+const u32 gFieldEffectObjectPic_Unknown17_3[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17/3.4bpp");
+const u32 gFieldEffectObjectPic_Unknown17_4[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17/4.4bpp");
+const u32 gFieldEffectObjectPic_Unknown17_5[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17/5.4bpp");
+const u32 gFieldEffectObjectPic_Unknown17_6[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17/6.4bpp");
+const u32 gFieldEffectObjectPic_Unknown17_7[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17/7.4bpp");
+const u32 gFieldEffectObjectPic_Unknown18_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_18/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown18_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_18/1.4bpp");
+const u32 gFieldEffectObjectPic_Unknown18_2[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_18/2.4bpp");
+const u32 gFieldEffectObjectPic_Unknown18_3[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_18/3.4bpp");
+const u32 gFieldEffectObjectPic_LongGrass_0[] = INCBIN_U32("graphics/event_objects/pics/effects/long_grass/0.4bpp");
+const u32 gFieldEffectObjectPic_LongGrass_1[] = INCBIN_U32("graphics/event_objects/pics/effects/long_grass/1.4bpp");
+const u32 gFieldEffectObjectPic_LongGrass_2[] = INCBIN_U32("graphics/event_objects/pics/effects/long_grass/2.4bpp");
+const u32 gFieldEffectObjectPic_LongGrass_3[] = INCBIN_U32("graphics/event_objects/pics/effects/long_grass/3.4bpp");
+const u32 gFieldEffectObjectPic_TallGrass_0[] = INCBIN_U32("graphics/event_objects/pics/effects/tall_grass/0.4bpp");
+const u32 gFieldEffectObjectPic_TallGrass_1[] = INCBIN_U32("graphics/event_objects/pics/effects/tall_grass/1.4bpp");
+const u32 gFieldEffectObjectPic_TallGrass_2[] = INCBIN_U32("graphics/event_objects/pics/effects/tall_grass/2.4bpp");
+const u32 gFieldEffectObjectPic_TallGrass_3[] = INCBIN_U32("graphics/event_objects/pics/effects/tall_grass/3.4bpp");
+const u32 gFieldEffectObjectPic_TallGrass_4[] = INCBIN_U32("graphics/event_objects/pics/effects/tall_grass/4.4bpp");
+const u32 gFieldEffectObjectPic_ShortGrass_0[] = INCBIN_U32("graphics/event_objects/pics/effects/short_grass/0.4bpp");
+const u32 gFieldEffectObjectPic_ShortGrass_1[] = INCBIN_U32("graphics/event_objects/pics/effects/short_grass/1.4bpp");
+const u32 gFieldEffectObjectPic_SandFootprints_0[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_footprints/0.4bpp");
+const u32 gFieldEffectObjectPic_SandFootprints_1[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_footprints/1.4bpp");
+const u32 gFieldEffectObjectPic_DeepSandFootprints_0[] = INCBIN_U32("graphics/event_objects/pics/effects/deep_sand_footprints/0.4bpp");
+const u32 gFieldEffectObjectPic_DeepSandFootprints_1[] = INCBIN_U32("graphics/event_objects/pics/effects/deep_sand_footprints/1.4bpp");
+const u32 gFieldEffectObjectPic_BikeTireTracks_0[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_tire_tracks/0.4bpp");
+const u32 gFieldEffectObjectPic_BikeTireTracks_1[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_tire_tracks/1.4bpp");
+const u32 gFieldEffectObjectPic_BikeTireTracks_2[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_tire_tracks/2.4bpp");
+const u32 gFieldEffectObjectPic_BikeTireTracks_3[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_tire_tracks/3.4bpp");
+const u32 gFieldEffectObjectPic_Unknown19_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_19/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown19_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_19/1.4bpp");
+const u32 gFieldEffectObjectPic_Unknown19_2[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_19/2.4bpp");
+const u32 gFieldEffectObjectPic_Unknown19_3[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_19/3.4bpp");
+const u32 gFieldEffectObjectPic_Unknown29_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_29/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown29_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_29/1.4bpp");
+const u32 gFieldEffectObjectPic_Unknown29_2[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_29/2.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopBigSplash_0[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_big_splash/0.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopBigSplash_1[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_big_splash/1.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopBigSplash_2[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_big_splash/2.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopBigSplash_3[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_big_splash/3.4bpp");
+const u32 gFieldEffectObjectPic_Splash_0[] = INCBIN_U32("graphics/event_objects/pics/effects/splash/0.4bpp");
+const u32 gFieldEffectObjectPic_Splash_1[] = INCBIN_U32("graphics/event_objects/pics/effects/splash/1.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopSmallSplash_0[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_small_splash/0.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopSmallSplash_1[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_small_splash/1.4bpp");
+const u32 gFieldEffectObjectPic_BikeHopSmallSplash_2[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_small_splash/2.4bpp");
+const u32 gFieldEffectObjectPic_Unknown20_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_20/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown20_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_20/1.4bpp");
+const u32 gFieldEffectObjectPic_Unknown20_2[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_20/2.4bpp");
+const u32 gFieldEffectObjectPic_Unknown20_3[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_20/3.4bpp");
+const u32 gFieldEffectObjectPic_Unknown20_4[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_20/4.4bpp");
+const u32 gFieldEffectObjectPic_TreeDisguise_0[] = INCBIN_U32("graphics/event_objects/pics/effects/tree_disguise/0.4bpp");
+const u32 gFieldEffectObjectPic_TreeDisguise_1[] = INCBIN_U32("graphics/event_objects/pics/effects/tree_disguise/1.4bpp");
+const u32 gFieldEffectObjectPic_TreeDisguise_2[] = INCBIN_U32("graphics/event_objects/pics/effects/tree_disguise/2.4bpp");
+const u32 gFieldEffectObjectPic_TreeDisguise_3[] = INCBIN_U32("graphics/event_objects/pics/effects/tree_disguise/3.4bpp");
+const u32 gFieldEffectObjectPic_TreeDisguise_4[] = INCBIN_U32("graphics/event_objects/pics/effects/tree_disguise/4.4bpp");
+const u32 gFieldEffectObjectPic_TreeDisguise_5[] = INCBIN_U32("graphics/event_objects/pics/effects/tree_disguise/5.4bpp");
+const u32 gFieldEffectObjectPic_TreeDisguise_6[] = INCBIN_U32("graphics/event_objects/pics/effects/tree_disguise/6.4bpp");
+const u32 gFieldEffectObjectPic_MountainDisguise_0[] = INCBIN_U32("graphics/event_objects/pics/effects/mountain_disguise/0.4bpp");
+const u32 gFieldEffectObjectPic_MountainDisguise_1[] = INCBIN_U32("graphics/event_objects/pics/effects/mountain_disguise/1.4bpp");
+const u32 gFieldEffectObjectPic_MountainDisguise_2[] = INCBIN_U32("graphics/event_objects/pics/effects/mountain_disguise/2.4bpp");
+const u32 gFieldEffectObjectPic_MountainDisguise_3[] = INCBIN_U32("graphics/event_objects/pics/effects/mountain_disguise/3.4bpp");
+const u32 gFieldEffectObjectPic_MountainDisguise_4[] = INCBIN_U32("graphics/event_objects/pics/effects/mountain_disguise/4.4bpp");
+const u32 gFieldEffectObjectPic_MountainDisguise_5[] = INCBIN_U32("graphics/event_objects/pics/effects/mountain_disguise/5.4bpp");
+const u32 gFieldEffectObjectPic_MountainDisguise_6[] = INCBIN_U32("graphics/event_objects/pics/effects/mountain_disguise/6.4bpp");
+const u32 gFieldEffectObjectPic_SandDisguisePlaceholder_0[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_disguise_placeholder/0.4bpp");
+const u32 gFieldEffectObjectPic_SandDisguisePlaceholder_1[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_disguise_placeholder/1.4bpp");
+const u32 gFieldEffectObjectPic_SandDisguisePlaceholder_2[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_disguise_placeholder/2.4bpp");
+const u32 gFieldEffectObjectPic_SandDisguisePlaceholder_3[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_disguise_placeholder/3.4bpp");
+const u32 gFieldEffectObjectPic_SandDisguisePlaceholder_4[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_disguise_placeholder/4.4bpp");
+const u32 gFieldEffectObjectPic_SandDisguisePlaceholder_5[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_disguise_placeholder/5.4bpp");
+const u32 gFieldEffectObjectPic_SandDisguisePlaceholder_6[] = INCBIN_U32("graphics/event_objects/pics/effects/sand_disguise_placeholder/6.4bpp");
+const u32 gFieldEffectObjectPic_HotSpringsWater[] = INCBIN_U32("graphics/event_objects/pics/effects/hot_springs_water.4bpp");
+const u16 gFieldEffectObjectPalette2[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_02.gbapal");
+const u32 gFieldEffectObjectPic_JumpOutOfAsh_0[] = INCBIN_U32("graphics/event_objects/pics/effects/jump_out_of_ash/0.4bpp");
+const u32 gFieldEffectObjectPic_JumpOutOfAsh_1[] = INCBIN_U32("graphics/event_objects/pics/effects/jump_out_of_ash/1.4bpp");
+const u32 gFieldEffectObjectPic_JumpOutOfAsh_2[] = INCBIN_U32("graphics/event_objects/pics/effects/jump_out_of_ash/2.4bpp");
+const u32 gFieldEffectObjectPic_JumpOutOfAsh_3[] = INCBIN_U32("graphics/event_objects/pics/effects/jump_out_of_ash/3.4bpp");
+const u32 gFieldEffectObjectPic_JumpOutOfAsh_4[] = INCBIN_U32("graphics/event_objects/pics/effects/jump_out_of_ash/4.4bpp");
+const u32 gFieldEffectObjectPic_Unknown33_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_33/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown33_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_33/1.4bpp");
+const u32 gFieldEffectObjectPic_Unknown33_2[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_33/2.4bpp");
+const u32 gFieldEffectObjectPic_Unknown33_3[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_33/3.4bpp");
+const u32 gFieldEffectObjectPic_Unknown33_4[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_33/4.4bpp");
+const u32 gFieldEffectObjectPic_Bubbles_0[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles/0.4bpp");
+const u32 gFieldEffectObjectPic_Bubbles_1[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles/1.4bpp");
+const u32 gFieldEffectObjectPic_Bubbles_2[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles/2.4bpp");
+const u32 gFieldEffectObjectPic_Bubbles_3[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles/3.4bpp");
+const u32 gFieldEffectObjectPic_Bubbles_4[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles/4.4bpp");
+const u32 gFieldEffectObjectPic_Bubbles_5[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles/5.4bpp");
+const u32 gFieldEffectObjectPic_Bubbles_6[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles/6.4bpp");
+const u32 gFieldEffectObjectPic_Bubbles_7[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles/7.4bpp");
+const u32 gFieldEffectObjectPic_Unknown35_0[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_35/0.4bpp");
+const u32 gFieldEffectObjectPic_Unknown35_1[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_35/1.4bpp");
+const u16 gFieldEffectObjectPalette3[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_03.gbapal");
+const u32 gFieldEffectObjectPic_Bird[] = INCBIN_U32("graphics/event_objects/pics/effects/bird.4bpp");
+const u32 gEventObjectPic_Juan_0[] = INCBIN_U32("graphics/event_objects/pics/people/juan/0.4bpp");
+const u32 gEventObjectPic_Juan_1[] = INCBIN_U32("graphics/event_objects/pics/people/juan/1.4bpp");
+const u32 gEventObjectPic_Juan_2[] = INCBIN_U32("graphics/event_objects/pics/people/juan/2.4bpp");
+const u32 gEventObjectPic_Juan_3[] = INCBIN_U32("graphics/event_objects/pics/people/juan/3.4bpp");
+const u32 gEventObjectPic_Juan_4[] = INCBIN_U32("graphics/event_objects/pics/people/juan/4.4bpp");
+const u32 gEventObjectPic_Juan_5[] = INCBIN_U32("graphics/event_objects/pics/people/juan/5.4bpp");
+const u32 gEventObjectPic_Juan_6[] = INCBIN_U32("graphics/event_objects/pics/people/juan/6.4bpp");
+const u32 gEventObjectPic_Juan_7[] = INCBIN_U32("graphics/event_objects/pics/people/juan/7.4bpp");
+const u32 gEventObjectPic_Juan_8[] = INCBIN_U32("graphics/event_objects/pics/people/juan/8.4bpp");
+const u32 gEventObjectPic_Scott_0[] = INCBIN_U32("graphics/event_objects/pics/people/scott/0.4bpp");
+const u32 gEventObjectPic_Scott_1[] = INCBIN_U32("graphics/event_objects/pics/people/scott/1.4bpp");
+const u32 gEventObjectPic_Scott_2[] = INCBIN_U32("graphics/event_objects/pics/people/scott/2.4bpp");
+const u32 gEventObjectPic_Scott_3[] = INCBIN_U32("graphics/event_objects/pics/people/scott/3.4bpp");
+const u32 gEventObjectPic_Scott_4[] = INCBIN_U32("graphics/event_objects/pics/people/scott/4.4bpp");
+const u32 gEventObjectPic_Scott_5[] = INCBIN_U32("graphics/event_objects/pics/people/scott/5.4bpp");
+const u32 gEventObjectPic_Scott_6[] = INCBIN_U32("graphics/event_objects/pics/people/scott/6.4bpp");
+const u32 gEventObjectPic_Scott_7[] = INCBIN_U32("graphics/event_objects/pics/people/scott/7.4bpp");
+const u32 gEventObjectPic_Scott_8[] = INCBIN_U32("graphics/event_objects/pics/people/scott/8.4bpp");
+const u32 gEventObjectPic_Statue[] = INCBIN_U32("graphics/event_objects/pics/misc/statue.4bpp");
+const u32 gEventObjectPic_Kirlia_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/0.4bpp");
+const u32 gEventObjectPic_Kirlia_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/1.4bpp");
+const u32 gEventObjectPic_Kirlia_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/2.4bpp");
+const u32 gEventObjectPic_Kirlia_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/3.4bpp");
+const u32 gEventObjectPic_Kirlia_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/4.4bpp");
+const u32 gEventObjectPic_Kirlia_5[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/5.4bpp");
+const u32 gEventObjectPic_Kirlia_6[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/6.4bpp");
+const u32 gEventObjectPic_Kirlia_7[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/7.4bpp");
+const u32 gEventObjectPic_Kirlia_8[] = INCBIN_U32("graphics/event_objects/pics/pokemon/kirlia/8.4bpp");
+const u32 gEventObjectPic_Dusclops_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/0.4bpp");
+const u32 gEventObjectPic_Dusclops_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/1.4bpp");
+const u32 gEventObjectPic_Dusclops_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/2.4bpp");
+const u32 gEventObjectPic_Dusclops_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/3.4bpp");
+const u32 gEventObjectPic_Dusclops_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/4.4bpp");
+const u32 gEventObjectPic_Dusclops_5[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/5.4bpp");
+const u32 gEventObjectPic_Dusclops_6[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/6.4bpp");
+const u32 gEventObjectPic_Dusclops_7[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/7.4bpp");
+const u32 gEventObjectPic_Dusclops_8[] = INCBIN_U32("graphics/event_objects/pics/pokemon/dusclops/8.4bpp");
+const u32 gEventObjectPic_MysteryEventDeliveryman_0[] = INCBIN_U32("graphics/event_objects/pics/people/mystery_event_deliveryman/0.4bpp");
+const u32 gEventObjectPic_MysteryEventDeliveryman_1[] = INCBIN_U32("graphics/event_objects/pics/people/mystery_event_deliveryman/1.4bpp");
+const u32 gEventObjectPic_MysteryEventDeliveryman_2[] = INCBIN_U32("graphics/event_objects/pics/people/mystery_event_deliveryman/2.4bpp");
+const u32 gEventObjectPic_UnionRoomAttendant_0[] = INCBIN_U32("graphics/event_objects/pics/people/union_room_attendant/0.4bpp");
+const u32 gEventObjectPic_UnionRoomAttendant_1[] = INCBIN_U32("graphics/event_objects/pics/people/union_room_attendant/1.4bpp");
+const u32 gEventObjectPic_UnionRoomAttendant_2[] = INCBIN_U32("graphics/event_objects/pics/people/union_room_attendant/2.4bpp");
+const u32 gEventObjectPic_MovingBox[] = INCBIN_U32("graphics/event_objects/pics/misc/moving_box.4bpp");
+const u16 gEventObjectPalette19[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_19.gbapal");
+const u32 gEventObjectPic_Sudowoodo_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/sudowoodo/0.4bpp");
+const u32 gEventObjectPic_Sudowoodo_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/sudowoodo/1.4bpp");
+const u32 gEventObjectPic_Sudowoodo_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/sudowoodo/2.4bpp");
+const u32 gEventObjectPic_Mew_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/0.4bpp");
+const u32 gEventObjectPic_Mew_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/1.4bpp");
+const u32 gEventObjectPic_Mew_2[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/2.4bpp");
+const u32 gEventObjectPic_Mew_3[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/3.4bpp");
+const u32 gEventObjectPic_Mew_4[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/4.4bpp");
+const u32 gEventObjectPic_Mew_5[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/5.4bpp");
+const u32 gEventObjectPic_Mew_6[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/6.4bpp");
+const u32 gEventObjectPic_Mew_7[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/7.4bpp");
+const u32 gEventObjectPic_Mew_8[] = INCBIN_U32("graphics/event_objects/pics/pokemon/mew/8.4bpp");
+const u16 gEventObjectPalette28[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_28.gbapal");
+const u32 gEventObjectPic_Red_0[] = INCBIN_U32("graphics/event_objects/pics/people/red/0.4bpp");
+const u32 gEventObjectPic_Red_1[] = INCBIN_U32("graphics/event_objects/pics/people/red/1.4bpp");
+const u32 gEventObjectPic_Red_2[] = INCBIN_U32("graphics/event_objects/pics/people/red/2.4bpp");
+const u32 gEventObjectPic_Red_3[] = INCBIN_U32("graphics/event_objects/pics/people/red/3.4bpp");
+const u32 gEventObjectPic_Red_4[] = INCBIN_U32("graphics/event_objects/pics/people/red/4.4bpp");
+const u32 gEventObjectPic_Red_5[] = INCBIN_U32("graphics/event_objects/pics/people/red/5.4bpp");
+const u32 gEventObjectPic_Red_6[] = INCBIN_U32("graphics/event_objects/pics/people/red/6.4bpp");
+const u32 gEventObjectPic_Red_7[] = INCBIN_U32("graphics/event_objects/pics/people/red/7.4bpp");
+const u32 gEventObjectPic_Red_8[] = INCBIN_U32("graphics/event_objects/pics/people/red/8.4bpp");
+const u32 gEventObjectPic_Leaf_0[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/0.4bpp");
+const u32 gEventObjectPic_Leaf_1[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/1.4bpp");
+const u32 gEventObjectPic_Leaf_2[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/2.4bpp");
+const u32 gEventObjectPic_Leaf_3[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/3.4bpp");
+const u32 gEventObjectPic_Leaf_4[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/4.4bpp");
+const u32 gEventObjectPic_Leaf_5[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/5.4bpp");
+const u32 gEventObjectPic_Leaf_6[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/6.4bpp");
+const u32 gEventObjectPic_Leaf_7[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/7.4bpp");
+const u32 gEventObjectPic_Leaf_8[] = INCBIN_U32("graphics/event_objects/pics/people/leaf/8.4bpp");
+const u16 gEventObjectPalette30[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_30.gbapal");
+const u32 gEventObjectPic_BirthIslandStone[] = INCBIN_U32("graphics/event_objects/pics/misc/birth_island_stone.4bpp");
+const u16 gEventObjectPalette29[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_29.gbapal");
+const u32 gEventObjectPic_Deoxys_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/deoxys/0.4bpp");
+const u32 gEventObjectPic_Deoxys_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/deoxys/1.4bpp");
+const u32 gEventObjectPic_Anabel_0[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/0.4bpp");
+const u32 gEventObjectPic_Anabel_1[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/1.4bpp");
+const u32 gEventObjectPic_Anabel_2[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/2.4bpp");
+const u32 gEventObjectPic_Anabel_3[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/3.4bpp");
+const u32 gEventObjectPic_Anabel_4[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/4.4bpp");
+const u32 gEventObjectPic_Anabel_5[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/5.4bpp");
+const u32 gEventObjectPic_Anabel_6[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/6.4bpp");
+const u32 gEventObjectPic_Anabel_7[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/7.4bpp");
+const u32 gEventObjectPic_Anabel_8[] = INCBIN_U32("graphics/event_objects/pics/people/anabel/8.4bpp");
+const u32 gEventObjectPic_Tucker_0[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/0.4bpp");
+const u32 gEventObjectPic_Tucker_1[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/1.4bpp");
+const u32 gEventObjectPic_Tucker_2[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/2.4bpp");
+const u32 gEventObjectPic_Tucker_3[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/3.4bpp");
+const u32 gEventObjectPic_Tucker_4[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/4.4bpp");
+const u32 gEventObjectPic_Tucker_5[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/5.4bpp");
+const u32 gEventObjectPic_Tucker_6[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/6.4bpp");
+const u32 gEventObjectPic_Tucker_7[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/7.4bpp");
+const u32 gEventObjectPic_Tucker_8[] = INCBIN_U32("graphics/event_objects/pics/people/tucker/8.4bpp");
+const u32 gEventObjectPic_Spenser_0[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/0.4bpp");
+const u32 gEventObjectPic_Spenser_1[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/1.4bpp");
+const u32 gEventObjectPic_Spenser_2[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/2.4bpp");
+const u32 gEventObjectPic_Spenser_3[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/3.4bpp");
+const u32 gEventObjectPic_Spenser_4[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/4.4bpp");
+const u32 gEventObjectPic_Spenser_5[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/5.4bpp");
+const u32 gEventObjectPic_Spenser_6[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/6.4bpp");
+const u32 gEventObjectPic_Spenser_7[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/7.4bpp");
+const u32 gEventObjectPic_Spenser_8[] = INCBIN_U32("graphics/event_objects/pics/people/spenser/8.4bpp");
+const u32 gEventObjectPic_Greta_0[] = INCBIN_U32("graphics/event_objects/pics/people/greta/0.4bpp");
+const u32 gEventObjectPic_Greta_1[] = INCBIN_U32("graphics/event_objects/pics/people/greta/1.4bpp");
+const u32 gEventObjectPic_Greta_2[] = INCBIN_U32("graphics/event_objects/pics/people/greta/2.4bpp");
+const u32 gEventObjectPic_Greta_3[] = INCBIN_U32("graphics/event_objects/pics/people/greta/3.4bpp");
+const u32 gEventObjectPic_Greta_4[] = INCBIN_U32("graphics/event_objects/pics/people/greta/4.4bpp");
+const u32 gEventObjectPic_Greta_5[] = INCBIN_U32("graphics/event_objects/pics/people/greta/5.4bpp");
+const u32 gEventObjectPic_Greta_6[] = INCBIN_U32("graphics/event_objects/pics/people/greta/6.4bpp");
+const u32 gEventObjectPic_Greta_7[] = INCBIN_U32("graphics/event_objects/pics/people/greta/7.4bpp");
+const u32 gEventObjectPic_Greta_8[] = INCBIN_U32("graphics/event_objects/pics/people/greta/8.4bpp");
+const u32 gEventObjectPic_Noland_0[] = INCBIN_U32("graphics/event_objects/pics/people/noland/0.4bpp");
+const u32 gEventObjectPic_Noland_1[] = INCBIN_U32("graphics/event_objects/pics/people/noland/1.4bpp");
+const u32 gEventObjectPic_Noland_2[] = INCBIN_U32("graphics/event_objects/pics/people/noland/2.4bpp");
+const u32 gEventObjectPic_Noland_3[] = INCBIN_U32("graphics/event_objects/pics/people/noland/3.4bpp");
+const u32 gEventObjectPic_Noland_4[] = INCBIN_U32("graphics/event_objects/pics/people/noland/4.4bpp");
+const u32 gEventObjectPic_Noland_5[] = INCBIN_U32("graphics/event_objects/pics/people/noland/5.4bpp");
+const u32 gEventObjectPic_Noland_6[] = INCBIN_U32("graphics/event_objects/pics/people/noland/6.4bpp");
+const u32 gEventObjectPic_Noland_7[] = INCBIN_U32("graphics/event_objects/pics/people/noland/7.4bpp");
+const u32 gEventObjectPic_Noland_8[] = INCBIN_U32("graphics/event_objects/pics/people/noland/8.4bpp");
+const u32 gEventObjectPic_Lucy_0[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/0.4bpp");
+const u32 gEventObjectPic_Lucy_1[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/1.4bpp");
+const u32 gEventObjectPic_Lucy_2[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/2.4bpp");
+const u32 gEventObjectPic_Lucy_3[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/3.4bpp");
+const u32 gEventObjectPic_Lucy_4[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/4.4bpp");
+const u32 gEventObjectPic_Lucy_5[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/5.4bpp");
+const u32 gEventObjectPic_Lucy_6[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/6.4bpp");
+const u32 gEventObjectPic_Lucy_7[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/7.4bpp");
+const u32 gEventObjectPic_Lucy_8[] = INCBIN_U32("graphics/event_objects/pics/people/lucy/8.4bpp");
+const u32 gEventObjectPic_Brandon_0[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/0.4bpp");
+const u32 gEventObjectPic_Brandon_1[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/1.4bpp");
+const u32 gEventObjectPic_Brandon_2[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/2.4bpp");
+const u32 gEventObjectPic_Brandon_3[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/3.4bpp");
+const u32 gEventObjectPic_Brandon_4[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/4.4bpp");
+const u32 gEventObjectPic_Brandon_5[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/5.4bpp");
+const u32 gEventObjectPic_Brandon_6[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/6.4bpp");
+const u32 gEventObjectPic_Brandon_7[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/7.4bpp");
+const u32 gEventObjectPic_Brandon_8[] = INCBIN_U32("graphics/event_objects/pics/people/brandon/8.4bpp");
+const u32 gEventObjectPic_Lugia_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/lugia/0.4bpp");
+const u32 gEventObjectPic_Lugia_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/lugia/1.4bpp");
+const u16 gEventObjectPalette32[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_32.gbapal");
+const u32 gEventObjectPic_HoOh_0[] = INCBIN_U32("graphics/event_objects/pics/pokemon/ho_oh/0.4bpp");
+const u32 gEventObjectPic_HoOh_1[] = INCBIN_U32("graphics/event_objects/pics/pokemon/ho_oh/1.4bpp");
+const u16 gEventObjectPalette31[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_31.gbapal");
+
+#endif //GUARD_EVENT_OBJECT_GFX_H
diff --git a/src/data/field_event_obj/event_object_graphics_info.h b/src/data/field_event_obj/event_object_graphics_info.h
new file mode 100755
index 000000000..14ef4983d
--- /dev/null
+++ b/src/data/field_event_obj/event_object_graphics_info.h
@@ -0,0 +1,250 @@
+#ifndef GUARD_EVENT_OBJECT_GRAPHICS_INFO_H
+#define GUARD_EVENT_OBJECT_GRAPHICS_INFO_H
+
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanNormal = {0xFFFF, 0x1100, 0x1102, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanMachBike = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanAcroBike = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanSurfing = {0xFFFF, 0x1100, 0x11FF, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFieldMove = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_QuintyPlump = {0xFFFF, 0x110B, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_QuintyPlump, gEventObjectPicTable_QuintyPlump, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy1 = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleBoy1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl1 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleGirl1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy1 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl1 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy2 = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl2 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy2 = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleBoy2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl2 = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleGirl2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy3 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl3 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy4 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy4, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman1 = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FatMan = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_FatMan, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman2 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man1 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman3 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan1 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldMan1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman1 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldWoman1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man2 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman4 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman4, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man3 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man3, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman5 = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman5, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cook = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Cook, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman6 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman6, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan2 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman2 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldWoman2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Camper = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Camper, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Picnicker = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Picnicker, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man4 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man4, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman7 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman7, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Youngster = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Youngster, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BugCatcher = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BugCatcher, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PsychicM = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_PsychicM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SchoolKidM = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SchoolKidM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maniac = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Maniac, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HexManiac = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_HexManiac, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza1 = {0xFFFF, 0x1105, 0x11FF, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_64x64, gEventObjectSpriteOamTables_64x64, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RayquazaStill, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerM = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SwimmerM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerF = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SwimmerF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BlackBelt = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BlackBelt, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Beauty = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Beauty, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist1 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Scientist1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lass = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Lass, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Gentleman = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Gentleman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sailor = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Sailor, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fisherman = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Fisherman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteM = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteF = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberF = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberM = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hiker = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Hiker, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteM = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteF = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Nurse = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Nurse, gEventObjectPicTable_Nurse, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ItemBall = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ItemBall, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTree = {0xFFFF, 0x1103, 0x11FF, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, NULL, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, 0x1103, 0x11FF, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeLateStages = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ProfBirch = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ProfBirch, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man5 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man5, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man6 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man6, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterM = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ReporterM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterF = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ReporterF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Bard = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hipster = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Trader = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Storyteller = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Giddy = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedNatuDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedWooperDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPikachuDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CuttableTree = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_CuttableTree, gEventObjectPicTable_CuttableTree, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MartEmployee = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MartEmployee, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RooftopSaleWoman = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Teala = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Teala, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BreakableRock = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_BreakableRock, gEventObjectPicTable_BreakableRock, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PushableBoulder = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PushableBoulder, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MrBrineysBoat = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayNormal = {0xFFFF, 0x1110, 0x1102, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayMachBike = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayMachBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayAcroBike = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MaySurfing = {0xFFFF, 0x1110, 0x11FF, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_MaySurfing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFieldMove = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Truck = {0xFFFF, 0x110D, 0x11FF, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_Truck, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_Truck, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_VigorothCarryingBox = {0xFFFF, 0x110E, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_VigorothFacingAway = {0xFFFF, 0x110E, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirchsBag = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BirchsBag, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_EnemyZigzagoon = {0xFFFF, 0x110F, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Poochyena = {0xFFFF, 0x111C, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Poochyena, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Artist = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Artist, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanNormal = {0xFFFF, 0x1100, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanMachBike = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanSurfing = {0xFFFF, 0x1100, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayNormal = {0xFFFF, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayMachBike = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayMachBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayAcroBike = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMaySurfing = {0xFFFF, 0x1110, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_MaySurfing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayFieldMove = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cameraman = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Cameraman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanUnderwater = {0xFFFF, 0x1115, 0x11FF, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayUnderwater = {0xFFFF, 0x1115, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayUnderwater, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MovingBox = {0xFFFF, 0x1112, 0x11FF, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MovingBox, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CableCar = {0xFFFF, 0x1113, 0x11FF, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_64x64, gEventObjectSpriteOamTables_64x64, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_CableCar, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist2 = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Scientist2, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man7 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man7, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberM = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_AquaMemberM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberF = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_AquaMemberF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberM = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MagmaMemberM, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberF = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MagmaMemberF, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sidney = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Sidney, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Phoebe = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Phoebe, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Glacia = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Glacia, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Drake = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Drake, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Roxanne = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Roxanne, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brawly = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Brawly, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wattson = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wattson, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Flannery = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Flannery, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Norman = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Norman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Winona = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Winona, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Liza = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Liza, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tate = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Tate, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wallace = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wallace, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Steven = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Steven, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wally = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wally, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFishing = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Fishing, gEventObjectPicTable_BrendanFishing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFishing = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Fishing, gEventObjectPicTable_MayFishing, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HotSpringsOldWoman = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SSTidal = {0xFFFF, 0x1114, 0x11FF, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_8x8, gEventObjectSpriteOamTables_SSTidal, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SSTidal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SubmarineShadow = {0xFFFF, 0x111B, 0x11FF, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_8x8, gEventObjectSpriteOamTables_SubmarineShadow, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SubmarineShadow, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PichuDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PichuDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikachuDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PikachuDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MarillDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MarillDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TogepiDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TogepiDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyndaquilDoll = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ChikoritaDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TotodileDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TotodileDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_JigglypuffDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MeowthDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MeowthDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ClefairyDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ClefairyDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DittoDoll = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DittoDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SmoochumDoll = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SmoochumDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TreeckoDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TreeckoDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TorchicDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TorchicDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MudkipDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MudkipDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DuskullDoll = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DuskullDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WynautDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_WynautDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BaltoyDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BaltoyDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KecleonDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_KecleonDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AzurillDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_AzurillDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SkittyDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SkittyDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwabluDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SwabluDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GulpinDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_GulpinDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LotadDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_LotadDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SeedotDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SeedotDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikaCushion = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PikaCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RoundCushion = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_RoundCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KissCushion = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_KissCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ZigzagCushion = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ZigzagCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SpinCushion = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SpinCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DiamondCushion = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DiamondCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BallCushion = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BallCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GrassCushion = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_GrassCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FireCushion = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_FireCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WaterCushion = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_WaterCushion, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigSnorlaxDoll = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRhydonDoll = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigLaprasDoll = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigVenusaurDoll = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigCharizardDoll = {0xFFFF, 0x1104, 0x11FF, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigBlastoiseDoll = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigWailmerDoll = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegirockDoll = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegiceDoll = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegisteelDoll = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latias = {0xFFFF, 0x1104, 0x11FF, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latios = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy5 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy5, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ContestOldMan = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ContestOldMan, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanWatering = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanWatering, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayWatering = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayWatering, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanDecorating = {0xFFFF, 0x1100, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BrendanDecorating, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayDecorating = {0xFFFF, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MayDecorating, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Archie = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Archie, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maxie = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Maxie, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre1 = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_KyogreFront, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon1 = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_GroudonFront, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre3 = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_KyogreSide, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon3 = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Groudon3, gEventObjectPicTable_GroudonSide, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fossil = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_Fossil, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regirock = {0xFFFF, 0x1104, 0x11FF, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regice = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Registeel = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Skitty = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Skitty, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon1 = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kecleon, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre2 = {0xFFFF, 0x1116, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_KyogreFront, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon2 = {0xFFFF, 0x1118, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_GroudonFront, gEventObjectRotScalAnimTable_KyogreGroudon};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza2 = {0xFFFF, 0x1105, 0x11FF, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_64x64, gEventObjectSpriteOamTables_64x64, gEventObjectImageAnimTable_Rayquaza2, gEventObjectPicTable_Rayquaza, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Zigzagoon = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Zigzagoon, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Pikachu = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Pikachu, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azumarill = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Azumarill, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wingull = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wingull, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon2 = {0xFFFF, 0x1105, 0x1102, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kecleon, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberMSwimming = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberMSwimming, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azurill = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Azurill, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mom = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Mom, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkBrendan = {0xFFFF, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkMay = {0xFFFF, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Juan = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Juan, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scott = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Scott, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Statue = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_Statue, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kirlia = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kirlia, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Dusclops = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Dusclops, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnionRoomAttendant = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Red = {0xFFFF, 0x111D, 0x11FF, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Red, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Leaf = {0xFFFF, 0x111D, 0x11FF, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Leaf, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sudowoodo = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Sudowoodo, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mew = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Mew, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Deoxys = {0xFFFF, 0x111E, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Deoxys, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirthIslandStone = {0xFFFF, 0x111F, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BirthIslandStone, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Anabel = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Anabel, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tucker = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Tucker, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Greta = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Greta, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Spenser = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Spenser, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Noland = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Noland, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lucy = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Lucy, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brandon = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Brandon, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireBrendan = {0xFFFF, 0x1122, 0x11FF, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireMay = {0xFFFF, 0x1123, 0x11FF, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RubySapphireMay, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lugia = {0xFFFF, 0x1121, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Lugia, gDummySpriteAffineAnimTable};
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HoOh = {0xFFFF, 0x1120, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_HoOh, gEventObjectPicTable_HoOh, gDummySpriteAffineAnimTable};
+
+#endif //GUARD_EVENT_OBJECT_GRAPHICS_INFO_H
diff --git a/src/data/field_event_obj/event_object_graphics_info_pointers.h b/src/data/field_event_obj/event_object_graphics_info_pointers.h
new file mode 100755
index 000000000..c0ca57b60
--- /dev/null
+++ b/src/data/field_event_obj/event_object_graphics_info_pointers.h
@@ -0,0 +1,504 @@
+#ifndef GUARD_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
+#define GUARD_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
+
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanNormal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanMachBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanSurfing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFieldMove;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_QuintyPlump;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy4;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FatMan;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman4;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman5;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cook;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman6;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Camper;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Picnicker;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man4;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman7;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Youngster;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BugCatcher;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PsychicM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SchoolKidM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maniac;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HexManiac;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BlackBelt;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Beauty;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lass;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Gentleman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sailor;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fisherman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hiker;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Nurse;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ItemBall;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTree;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeEarlyStages;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeLateStages;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanAcroBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ProfBirch;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man5;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man6;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Bard;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Anabel;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tucker;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Greta;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Spenser;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Noland;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lucy;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedNatuDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMagnemiteDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedSquirtleDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedWooperDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPikachuDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPorygon2Doll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CuttableTree;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MartEmployee;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RooftopSaleWoman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Teala;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BreakableRock;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PushableBoulder;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MrBrineysBoat;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayNormal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayMachBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayAcroBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MaySurfing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFieldMove;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Truck;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_VigorothCarryingBox;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_VigorothFacingAway;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirchsBag;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_EnemyZigzagoon;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Artist;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanNormal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanMachBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanAcroBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanSurfing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanFieldMove;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayNormal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayMachBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayAcroBike;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMaySurfing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayFieldMove;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cameraman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanUnderwater;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayUnderwater;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MovingBox;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CableCar;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man7;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberM;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberF;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sidney;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Phoebe;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Glacia;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Drake;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Roxanne;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brawly;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wattson;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Flannery;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Norman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Winona;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Liza;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tate;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wallace;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Steven;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wally;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireLittleBoy;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFishing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFishing;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HotSpringsOldWoman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SSTidal;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SubmarineShadow;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PichuDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikachuDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MarillDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TogepiDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyndaquilDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ChikoritaDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TotodileDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_JigglypuffDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MeowthDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ClefairyDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DittoDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SmoochumDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TreeckoDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TorchicDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MudkipDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DuskullDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WynautDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BaltoyDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KecleonDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AzurillDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SkittyDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwabluDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GulpinDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LotadDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SeedotDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikaCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RoundCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KissCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ZigzagCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SpinCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DiamondCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BallCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GrassCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FireCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WaterCushion;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigSnorlaxDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRhydonDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigLaprasDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigVenusaurDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigCharizardDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigBlastoiseDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigWailmerDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegirockDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegiceDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegisteelDoll;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latias;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latios;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy5;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ContestOldMan;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanWatering;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayWatering;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanDecorating;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayDecorating;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Archie;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maxie;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fossil;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regirock;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regice;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Registeel;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Skitty;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Zigzagoon;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Pikachu;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azumarill;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wingull;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon2;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberMSwimming;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azurill;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mom;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkBrendan;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkMay;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Juan;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scott;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Poochyena;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon3;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MysteryEventDeliveryman;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Statue;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kirlia;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Dusclops;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnionRoomAttendant;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sudowoodo;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mew;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Red;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Leaf;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Deoxys;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirthIslandStone;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brandon;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireBrendan;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireMay;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lugia;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HoOh;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Bard;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hipster;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Trader;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Storyteller;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Giddy;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan1;
+const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan2;
+
+
+const struct EventObjectGraphicsInfo *const gEventObjectGraphicsInfoPointers[] = {
+ &gEventObjectGraphicsInfo_BrendanNormal,
+ &gEventObjectGraphicsInfo_BrendanMachBike,
+ &gEventObjectGraphicsInfo_BrendanSurfing,
+ &gEventObjectGraphicsInfo_BrendanFieldMove,
+ &gEventObjectGraphicsInfo_QuintyPlump,
+ &gEventObjectGraphicsInfo_LittleBoy1,
+ &gEventObjectGraphicsInfo_LittleGirl1,
+ &gEventObjectGraphicsInfo_Boy1,
+ &gEventObjectGraphicsInfo_Girl1,
+ &gEventObjectGraphicsInfo_Boy2,
+ &gEventObjectGraphicsInfo_Girl2,
+ &gEventObjectGraphicsInfo_LittleBoy2,
+ &gEventObjectGraphicsInfo_LittleGirl2,
+ &gEventObjectGraphicsInfo_Boy3,
+ &gEventObjectGraphicsInfo_Girl3,
+ &gEventObjectGraphicsInfo_Boy4,
+ &gEventObjectGraphicsInfo_Woman1,
+ &gEventObjectGraphicsInfo_FatMan,
+ &gEventObjectGraphicsInfo_Woman2,
+ &gEventObjectGraphicsInfo_Man1,
+ &gEventObjectGraphicsInfo_Woman3,
+ &gEventObjectGraphicsInfo_OldMan1,
+ &gEventObjectGraphicsInfo_OldWoman1,
+ &gEventObjectGraphicsInfo_Man2,
+ &gEventObjectGraphicsInfo_Woman4,
+ &gEventObjectGraphicsInfo_Man3,
+ &gEventObjectGraphicsInfo_Woman5,
+ &gEventObjectGraphicsInfo_Cook,
+ &gEventObjectGraphicsInfo_Woman6,
+ &gEventObjectGraphicsInfo_OldMan2,
+ &gEventObjectGraphicsInfo_OldWoman2,
+ &gEventObjectGraphicsInfo_Camper,
+ &gEventObjectGraphicsInfo_Picnicker,
+ &gEventObjectGraphicsInfo_Man4,
+ &gEventObjectGraphicsInfo_Woman7,
+ &gEventObjectGraphicsInfo_Youngster,
+ &gEventObjectGraphicsInfo_BugCatcher,
+ &gEventObjectGraphicsInfo_PsychicM,
+ &gEventObjectGraphicsInfo_SchoolKidM,
+ &gEventObjectGraphicsInfo_Maniac,
+ &gEventObjectGraphicsInfo_HexManiac,
+ &gEventObjectGraphicsInfo_Rayquaza1,
+ &gEventObjectGraphicsInfo_SwimmerM,
+ &gEventObjectGraphicsInfo_SwimmerF,
+ &gEventObjectGraphicsInfo_BlackBelt,
+ &gEventObjectGraphicsInfo_Beauty,
+ &gEventObjectGraphicsInfo_Scientist1,
+ &gEventObjectGraphicsInfo_Lass,
+ &gEventObjectGraphicsInfo_Gentleman,
+ &gEventObjectGraphicsInfo_Sailor,
+ &gEventObjectGraphicsInfo_Fisherman,
+ &gEventObjectGraphicsInfo_RunningTriathleteM,
+ &gEventObjectGraphicsInfo_RunningTriathleteF,
+ &gEventObjectGraphicsInfo_TuberF,
+ &gEventObjectGraphicsInfo_TuberM,
+ &gEventObjectGraphicsInfo_Hiker,
+ &gEventObjectGraphicsInfo_CyclingTriathleteM,
+ &gEventObjectGraphicsInfo_CyclingTriathleteF,
+ &gEventObjectGraphicsInfo_Nurse,
+ &gEventObjectGraphicsInfo_ItemBall,
+ &gEventObjectGraphicsInfo_BerryTree,
+ &gEventObjectGraphicsInfo_BerryTreeEarlyStages,
+ &gEventObjectGraphicsInfo_BerryTreeLateStages,
+ &gEventObjectGraphicsInfo_BrendanAcroBike,
+ &gEventObjectGraphicsInfo_ProfBirch,
+ &gEventObjectGraphicsInfo_Man5,
+ &gEventObjectGraphicsInfo_Man6,
+ &gEventObjectGraphicsInfo_ReporterM,
+ &gEventObjectGraphicsInfo_ReporterF,
+ &gEventObjectGraphicsInfo_Bard,
+ &gEventObjectGraphicsInfo_Anabel,
+ &gEventObjectGraphicsInfo_Tucker,
+ &gEventObjectGraphicsInfo_Greta,
+ &gEventObjectGraphicsInfo_Spenser,
+ &gEventObjectGraphicsInfo_Noland,
+ &gEventObjectGraphicsInfo_Lucy,
+ &gEventObjectGraphicsInfo_UnusedNatuDoll,
+ &gEventObjectGraphicsInfo_UnusedMagnemiteDoll,
+ &gEventObjectGraphicsInfo_UnusedSquirtleDoll,
+ &gEventObjectGraphicsInfo_UnusedWooperDoll,
+ &gEventObjectGraphicsInfo_UnusedPikachuDoll,
+ &gEventObjectGraphicsInfo_UnusedPorygon2Doll,
+ &gEventObjectGraphicsInfo_CuttableTree,
+ &gEventObjectGraphicsInfo_MartEmployee,
+ &gEventObjectGraphicsInfo_RooftopSaleWoman,
+ &gEventObjectGraphicsInfo_Teala,
+ &gEventObjectGraphicsInfo_BreakableRock,
+ &gEventObjectGraphicsInfo_PushableBoulder,
+ &gEventObjectGraphicsInfo_MrBrineysBoat,
+ &gEventObjectGraphicsInfo_MayNormal,
+ &gEventObjectGraphicsInfo_MayMachBike,
+ &gEventObjectGraphicsInfo_MayAcroBike,
+ &gEventObjectGraphicsInfo_MaySurfing,
+ &gEventObjectGraphicsInfo_MayFieldMove,
+ &gEventObjectGraphicsInfo_Truck,
+ &gEventObjectGraphicsInfo_VigorothCarryingBox,
+ &gEventObjectGraphicsInfo_VigorothFacingAway,
+ &gEventObjectGraphicsInfo_BirchsBag,
+ &gEventObjectGraphicsInfo_EnemyZigzagoon,
+ &gEventObjectGraphicsInfo_Artist,
+ &gEventObjectGraphicsInfo_RivalBrendanNormal,
+ &gEventObjectGraphicsInfo_RivalBrendanMachBike,
+ &gEventObjectGraphicsInfo_RivalBrendanAcroBike,
+ &gEventObjectGraphicsInfo_RivalBrendanSurfing,
+ &gEventObjectGraphicsInfo_RivalBrendanFieldMove,
+ &gEventObjectGraphicsInfo_RivalMayNormal,
+ &gEventObjectGraphicsInfo_RivalMayMachBike,
+ &gEventObjectGraphicsInfo_RivalMayAcroBike,
+ &gEventObjectGraphicsInfo_RivalMaySurfing,
+ &gEventObjectGraphicsInfo_RivalMayFieldMove,
+ &gEventObjectGraphicsInfo_Cameraman,
+ &gEventObjectGraphicsInfo_BrendanUnderwater,
+ &gEventObjectGraphicsInfo_MayUnderwater,
+ &gEventObjectGraphicsInfo_MovingBox,
+ &gEventObjectGraphicsInfo_CableCar,
+ &gEventObjectGraphicsInfo_Scientist2,
+ &gEventObjectGraphicsInfo_Man7,
+ &gEventObjectGraphicsInfo_AquaMemberM,
+ &gEventObjectGraphicsInfo_AquaMemberF,
+ &gEventObjectGraphicsInfo_MagmaMemberM,
+ &gEventObjectGraphicsInfo_MagmaMemberF,
+ &gEventObjectGraphicsInfo_Sidney,
+ &gEventObjectGraphicsInfo_Phoebe,
+ &gEventObjectGraphicsInfo_Glacia,
+ &gEventObjectGraphicsInfo_Drake,
+ &gEventObjectGraphicsInfo_Roxanne,
+ &gEventObjectGraphicsInfo_Brawly,
+ &gEventObjectGraphicsInfo_Wattson,
+ &gEventObjectGraphicsInfo_Flannery,
+ &gEventObjectGraphicsInfo_Norman,
+ &gEventObjectGraphicsInfo_Winona,
+ &gEventObjectGraphicsInfo_Liza,
+ &gEventObjectGraphicsInfo_Tate,
+ &gEventObjectGraphicsInfo_Wallace,
+ &gEventObjectGraphicsInfo_Steven,
+ &gEventObjectGraphicsInfo_Wally,
+ &gEventObjectGraphicsInfo_RubySapphireLittleBoy,
+ &gEventObjectGraphicsInfo_BrendanFishing,
+ &gEventObjectGraphicsInfo_MayFishing,
+ &gEventObjectGraphicsInfo_HotSpringsOldWoman,
+ &gEventObjectGraphicsInfo_SSTidal,
+ &gEventObjectGraphicsInfo_SubmarineShadow,
+ &gEventObjectGraphicsInfo_PichuDoll,
+ &gEventObjectGraphicsInfo_PikachuDoll,
+ &gEventObjectGraphicsInfo_MarillDoll,
+ &gEventObjectGraphicsInfo_TogepiDoll,
+ &gEventObjectGraphicsInfo_CyndaquilDoll,
+ &gEventObjectGraphicsInfo_ChikoritaDoll,
+ &gEventObjectGraphicsInfo_TotodileDoll,
+ &gEventObjectGraphicsInfo_JigglypuffDoll,
+ &gEventObjectGraphicsInfo_MeowthDoll,
+ &gEventObjectGraphicsInfo_ClefairyDoll,
+ &gEventObjectGraphicsInfo_DittoDoll,
+ &gEventObjectGraphicsInfo_SmoochumDoll,
+ &gEventObjectGraphicsInfo_TreeckoDoll,
+ &gEventObjectGraphicsInfo_TorchicDoll,
+ &gEventObjectGraphicsInfo_MudkipDoll,
+ &gEventObjectGraphicsInfo_DuskullDoll,
+ &gEventObjectGraphicsInfo_WynautDoll,
+ &gEventObjectGraphicsInfo_BaltoyDoll,
+ &gEventObjectGraphicsInfo_KecleonDoll,
+ &gEventObjectGraphicsInfo_AzurillDoll,
+ &gEventObjectGraphicsInfo_SkittyDoll,
+ &gEventObjectGraphicsInfo_SwabluDoll,
+ &gEventObjectGraphicsInfo_GulpinDoll,
+ &gEventObjectGraphicsInfo_LotadDoll,
+ &gEventObjectGraphicsInfo_SeedotDoll,
+ &gEventObjectGraphicsInfo_PikaCushion,
+ &gEventObjectGraphicsInfo_RoundCushion,
+ &gEventObjectGraphicsInfo_KissCushion,
+ &gEventObjectGraphicsInfo_ZigzagCushion,
+ &gEventObjectGraphicsInfo_SpinCushion,
+ &gEventObjectGraphicsInfo_DiamondCushion,
+ &gEventObjectGraphicsInfo_BallCushion,
+ &gEventObjectGraphicsInfo_GrassCushion,
+ &gEventObjectGraphicsInfo_FireCushion,
+ &gEventObjectGraphicsInfo_WaterCushion,
+ &gEventObjectGraphicsInfo_BigSnorlaxDoll,
+ &gEventObjectGraphicsInfo_BigRhydonDoll,
+ &gEventObjectGraphicsInfo_BigLaprasDoll,
+ &gEventObjectGraphicsInfo_BigVenusaurDoll,
+ &gEventObjectGraphicsInfo_BigCharizardDoll,
+ &gEventObjectGraphicsInfo_BigBlastoiseDoll,
+ &gEventObjectGraphicsInfo_BigWailmerDoll,
+ &gEventObjectGraphicsInfo_BigRegirockDoll,
+ &gEventObjectGraphicsInfo_BigRegiceDoll,
+ &gEventObjectGraphicsInfo_BigRegisteelDoll,
+ &gEventObjectGraphicsInfo_Latias,
+ &gEventObjectGraphicsInfo_Latios,
+ &gEventObjectGraphicsInfo_Boy5,
+ &gEventObjectGraphicsInfo_ContestOldMan,
+ &gEventObjectGraphicsInfo_BrendanWatering,
+ &gEventObjectGraphicsInfo_MayWatering,
+ &gEventObjectGraphicsInfo_BrendanDecorating,
+ &gEventObjectGraphicsInfo_MayDecorating,
+ &gEventObjectGraphicsInfo_Archie,
+ &gEventObjectGraphicsInfo_Maxie,
+ &gEventObjectGraphicsInfo_Kyogre1,
+ &gEventObjectGraphicsInfo_Groudon1,
+ &gEventObjectGraphicsInfo_Fossil,
+ &gEventObjectGraphicsInfo_Regirock,
+ &gEventObjectGraphicsInfo_Regice,
+ &gEventObjectGraphicsInfo_Registeel,
+ &gEventObjectGraphicsInfo_Skitty,
+ &gEventObjectGraphicsInfo_Kecleon1,
+ &gEventObjectGraphicsInfo_Kyogre2,
+ &gEventObjectGraphicsInfo_Groudon2,
+ &gEventObjectGraphicsInfo_Rayquaza2,
+ &gEventObjectGraphicsInfo_Zigzagoon,
+ &gEventObjectGraphicsInfo_Pikachu,
+ &gEventObjectGraphicsInfo_Azumarill,
+ &gEventObjectGraphicsInfo_Wingull,
+ &gEventObjectGraphicsInfo_Kecleon2,
+ &gEventObjectGraphicsInfo_TuberMSwimming,
+ &gEventObjectGraphicsInfo_Azurill,
+ &gEventObjectGraphicsInfo_Mom,
+ &gEventObjectGraphicsInfo_LinkBrendan,
+ &gEventObjectGraphicsInfo_LinkMay,
+ &gEventObjectGraphicsInfo_Juan,
+ &gEventObjectGraphicsInfo_Scott,
+ &gEventObjectGraphicsInfo_Poochyena,
+ &gEventObjectGraphicsInfo_Kyogre3,
+ &gEventObjectGraphicsInfo_Groudon3,
+ &gEventObjectGraphicsInfo_MysteryEventDeliveryman,
+ &gEventObjectGraphicsInfo_Statue,
+ &gEventObjectGraphicsInfo_Kirlia,
+ &gEventObjectGraphicsInfo_Dusclops,
+ &gEventObjectGraphicsInfo_UnionRoomAttendant,
+ &gEventObjectGraphicsInfo_Sudowoodo,
+ &gEventObjectGraphicsInfo_Mew,
+ &gEventObjectGraphicsInfo_Red,
+ &gEventObjectGraphicsInfo_Leaf,
+ &gEventObjectGraphicsInfo_Deoxys,
+ &gEventObjectGraphicsInfo_BirthIslandStone,
+ &gEventObjectGraphicsInfo_Brandon,
+ &gEventObjectGraphicsInfo_RubySapphireBrendan,
+ &gEventObjectGraphicsInfo_RubySapphireMay,
+ &gEventObjectGraphicsInfo_Lugia,
+ &gEventObjectGraphicsInfo_HoOh,
+};
+
+const struct EventObjectGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = {
+ &gEventObjectGraphicsInfo_Bard,
+ &gEventObjectGraphicsInfo_Hipster,
+ &gEventObjectGraphicsInfo_Trader,
+ &gEventObjectGraphicsInfo_Storyteller,
+ &gEventObjectGraphicsInfo_Giddy,
+ &gEventObjectGraphicsInfo_UnusedMauvilleOldMan1,
+ &gEventObjectGraphicsInfo_UnusedMauvilleOldMan2,
+};
+
+#endif //GUARD_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
diff --git a/src/data/field_event_obj/event_object_pic_tables.h b/src/data/field_event_obj/event_object_pic_tables.h
new file mode 100755
index 000000000..892af7e9b
--- /dev/null
+++ b/src/data/field_event_obj/event_object_pic_tables.h
@@ -0,0 +1,2179 @@
+#ifndef GUARD_EVENT_OBJECT_PIC_TABLES_H
+#define GUARD_EVENT_OBJECT_PIC_TABLES_H
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanNormal[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_0),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_1),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_2),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_3),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_4),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_5),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_6),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_7),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_8),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_9),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_10),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_11),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_12),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_13),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_14),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_15),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_16),
+ obj_frame_tiles(gEventObjectPic_BrendanNormal_17),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanMachBike[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_0),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_1),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_2),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_3),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_4),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_5),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_6),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_7),
+ obj_frame_tiles(gEventObjectPic_BrendanMachBike_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanAcroBike[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_0),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_1),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_2),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_3),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_4),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_5),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_6),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_7),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_8),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_9),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_10),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_11),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_12),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_13),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_14),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_15),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_16),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_17),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_18),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_19),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_20),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_21),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_22),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_23),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_24),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_25),
+ obj_frame_tiles(gEventObjectPic_BrendanAcroBike_26),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanSurfing[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_0),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_1),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_2),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_0),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_0),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_1),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_1),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_2),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_2),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_3),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_4),
+ obj_frame_tiles(gEventObjectPic_BrendanSurfing_5),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanUnderwater[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_2),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_2),
+ obj_frame_tiles(gEventObjectPic_BrendanUnderwater_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanFieldMove[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_0),
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_1),
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_2),
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_3),
+ obj_frame_tiles(gEventObjectPic_BrendanFieldMove_4),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_QuintyPlump[] = {
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_0),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_1),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_2),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_3),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_4),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_5),
+ obj_frame_tiles(gEventObjectPic_QuintyPlump_6),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleBoy1[] = {
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_0),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_1),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_2),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_3),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_4),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_5),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_6),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_7),
+ obj_frame_tiles(gEventObjectPic_LittleBoy1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleGirl1[] = {
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_0),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_1),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_2),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_3),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_4),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_5),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_6),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_7),
+ obj_frame_tiles(gEventObjectPic_LittleGirl1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy1[] = {
+ obj_frame_tiles(gEventObjectPic_Boy1_0),
+ obj_frame_tiles(gEventObjectPic_Boy1_1),
+ obj_frame_tiles(gEventObjectPic_Boy1_2),
+ obj_frame_tiles(gEventObjectPic_Boy1_3),
+ obj_frame_tiles(gEventObjectPic_Boy1_4),
+ obj_frame_tiles(gEventObjectPic_Boy1_5),
+ obj_frame_tiles(gEventObjectPic_Boy1_6),
+ obj_frame_tiles(gEventObjectPic_Boy1_7),
+ obj_frame_tiles(gEventObjectPic_Boy1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Girl1[] = {
+ obj_frame_tiles(gEventObjectPic_Girl1_0),
+ obj_frame_tiles(gEventObjectPic_Girl1_1),
+ obj_frame_tiles(gEventObjectPic_Girl1_2),
+ obj_frame_tiles(gEventObjectPic_Girl1_3),
+ obj_frame_tiles(gEventObjectPic_Girl1_4),
+ obj_frame_tiles(gEventObjectPic_Girl1_5),
+ obj_frame_tiles(gEventObjectPic_Girl1_6),
+ obj_frame_tiles(gEventObjectPic_Girl1_7),
+ obj_frame_tiles(gEventObjectPic_Girl1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy2[] = {
+ obj_frame_tiles(gEventObjectPic_Boy2_0),
+ obj_frame_tiles(gEventObjectPic_Boy2_1),
+ obj_frame_tiles(gEventObjectPic_Boy2_2),
+ obj_frame_tiles(gEventObjectPic_Boy2_3),
+ obj_frame_tiles(gEventObjectPic_Boy2_4),
+ obj_frame_tiles(gEventObjectPic_Boy2_5),
+ obj_frame_tiles(gEventObjectPic_Boy2_6),
+ obj_frame_tiles(gEventObjectPic_Boy2_7),
+ obj_frame_tiles(gEventObjectPic_Boy2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Girl2[] = {
+ obj_frame_tiles(gEventObjectPic_Girl2_0),
+ obj_frame_tiles(gEventObjectPic_Girl2_1),
+ obj_frame_tiles(gEventObjectPic_Girl2_2),
+ obj_frame_tiles(gEventObjectPic_Girl2_3),
+ obj_frame_tiles(gEventObjectPic_Girl2_4),
+ obj_frame_tiles(gEventObjectPic_Girl2_5),
+ obj_frame_tiles(gEventObjectPic_Girl2_6),
+ obj_frame_tiles(gEventObjectPic_Girl2_7),
+ obj_frame_tiles(gEventObjectPic_Girl2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleBoy2[] = {
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_0),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_1),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_2),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_3),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_4),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_5),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_6),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_7),
+ obj_frame_tiles(gEventObjectPic_LittleBoy2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LittleGirl2[] = {
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_0),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_1),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_2),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_3),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_4),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_5),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_6),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_7),
+ obj_frame_tiles(gEventObjectPic_LittleGirl2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy3[] = {
+ obj_frame_tiles(gEventObjectPic_Boy3_0),
+ obj_frame_tiles(gEventObjectPic_Boy3_1),
+ obj_frame_tiles(gEventObjectPic_Boy3_2),
+ obj_frame_tiles(gEventObjectPic_Boy3_3),
+ obj_frame_tiles(gEventObjectPic_Boy3_4),
+ obj_frame_tiles(gEventObjectPic_Boy3_5),
+ obj_frame_tiles(gEventObjectPic_Boy3_6),
+ obj_frame_tiles(gEventObjectPic_Boy3_7),
+ obj_frame_tiles(gEventObjectPic_Boy3_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Girl3[] = {
+ obj_frame_tiles(gEventObjectPic_Girl3_0),
+ obj_frame_tiles(gEventObjectPic_Girl3_1),
+ obj_frame_tiles(gEventObjectPic_Girl3_2),
+ obj_frame_tiles(gEventObjectPic_Girl3_3),
+ obj_frame_tiles(gEventObjectPic_Girl3_4),
+ obj_frame_tiles(gEventObjectPic_Girl3_5),
+ obj_frame_tiles(gEventObjectPic_Girl3_6),
+ obj_frame_tiles(gEventObjectPic_Girl3_7),
+ obj_frame_tiles(gEventObjectPic_Girl3_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy4[] = {
+ obj_frame_tiles(gEventObjectPic_Boy4_0),
+ obj_frame_tiles(gEventObjectPic_Boy4_1),
+ obj_frame_tiles(gEventObjectPic_Boy4_2),
+ obj_frame_tiles(gEventObjectPic_Boy4_3),
+ obj_frame_tiles(gEventObjectPic_Boy4_4),
+ obj_frame_tiles(gEventObjectPic_Boy4_5),
+ obj_frame_tiles(gEventObjectPic_Boy4_6),
+ obj_frame_tiles(gEventObjectPic_Boy4_7),
+ obj_frame_tiles(gEventObjectPic_Boy4_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman1[] = {
+ obj_frame_tiles(gEventObjectPic_Woman1_0),
+ obj_frame_tiles(gEventObjectPic_Woman1_1),
+ obj_frame_tiles(gEventObjectPic_Woman1_2),
+ obj_frame_tiles(gEventObjectPic_Woman1_3),
+ obj_frame_tiles(gEventObjectPic_Woman1_4),
+ obj_frame_tiles(gEventObjectPic_Woman1_5),
+ obj_frame_tiles(gEventObjectPic_Woman1_6),
+ obj_frame_tiles(gEventObjectPic_Woman1_7),
+ obj_frame_tiles(gEventObjectPic_Woman1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_FatMan[] = {
+ obj_frame_tiles(gEventObjectPic_FatMan_0),
+ obj_frame_tiles(gEventObjectPic_FatMan_1),
+ obj_frame_tiles(gEventObjectPic_FatMan_2),
+ obj_frame_tiles(gEventObjectPic_FatMan_3),
+ obj_frame_tiles(gEventObjectPic_FatMan_4),
+ obj_frame_tiles(gEventObjectPic_FatMan_5),
+ obj_frame_tiles(gEventObjectPic_FatMan_6),
+ obj_frame_tiles(gEventObjectPic_FatMan_7),
+ obj_frame_tiles(gEventObjectPic_FatMan_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman2[] = {
+ obj_frame_tiles(gEventObjectPic_Woman2_0),
+ obj_frame_tiles(gEventObjectPic_Woman2_1),
+ obj_frame_tiles(gEventObjectPic_Woman2_2),
+ obj_frame_tiles(gEventObjectPic_Woman2_3),
+ obj_frame_tiles(gEventObjectPic_Woman2_4),
+ obj_frame_tiles(gEventObjectPic_Woman2_5),
+ obj_frame_tiles(gEventObjectPic_Woman2_6),
+ obj_frame_tiles(gEventObjectPic_Woman2_7),
+ obj_frame_tiles(gEventObjectPic_Woman2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man1[] = {
+ obj_frame_tiles(gEventObjectPic_Man1_0),
+ obj_frame_tiles(gEventObjectPic_Man1_1),
+ obj_frame_tiles(gEventObjectPic_Man1_2),
+ obj_frame_tiles(gEventObjectPic_Man1_3),
+ obj_frame_tiles(gEventObjectPic_Man1_4),
+ obj_frame_tiles(gEventObjectPic_Man1_5),
+ obj_frame_tiles(gEventObjectPic_Man1_6),
+ obj_frame_tiles(gEventObjectPic_Man1_7),
+ obj_frame_tiles(gEventObjectPic_Man1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman3[] = {
+ obj_frame_tiles(gEventObjectPic_Woman3_0),
+ obj_frame_tiles(gEventObjectPic_Woman3_1),
+ obj_frame_tiles(gEventObjectPic_Woman3_2),
+ obj_frame_tiles(gEventObjectPic_Woman3_3),
+ obj_frame_tiles(gEventObjectPic_Woman3_4),
+ obj_frame_tiles(gEventObjectPic_Woman3_5),
+ obj_frame_tiles(gEventObjectPic_Woman3_6),
+ obj_frame_tiles(gEventObjectPic_Woman3_7),
+ obj_frame_tiles(gEventObjectPic_Woman3_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_OldMan1[] = {
+ obj_frame_tiles(gEventObjectPic_OldMan1_0),
+ obj_frame_tiles(gEventObjectPic_OldMan1_1),
+ obj_frame_tiles(gEventObjectPic_OldMan1_2),
+ obj_frame_tiles(gEventObjectPic_OldMan1_3),
+ obj_frame_tiles(gEventObjectPic_OldMan1_4),
+ obj_frame_tiles(gEventObjectPic_OldMan1_5),
+ obj_frame_tiles(gEventObjectPic_OldMan1_6),
+ obj_frame_tiles(gEventObjectPic_OldMan1_7),
+ obj_frame_tiles(gEventObjectPic_OldMan1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_OldWoman1[] = {
+ obj_frame_tiles(gEventObjectPic_OldWoman1_0),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_1),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_2),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_3),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_4),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_5),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_6),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_7),
+ obj_frame_tiles(gEventObjectPic_OldWoman1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man2[] = {
+ obj_frame_tiles(gEventObjectPic_Man2_0),
+ obj_frame_tiles(gEventObjectPic_Man2_1),
+ obj_frame_tiles(gEventObjectPic_Man2_2),
+ obj_frame_tiles(gEventObjectPic_Man2_3),
+ obj_frame_tiles(gEventObjectPic_Man2_4),
+ obj_frame_tiles(gEventObjectPic_Man2_5),
+ obj_frame_tiles(gEventObjectPic_Man2_6),
+ obj_frame_tiles(gEventObjectPic_Man2_7),
+ obj_frame_tiles(gEventObjectPic_Man2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman4[] = {
+ obj_frame_tiles(gEventObjectPic_Woman4_0),
+ obj_frame_tiles(gEventObjectPic_Woman4_1),
+ obj_frame_tiles(gEventObjectPic_Woman4_2),
+ obj_frame_tiles(gEventObjectPic_Woman4_3),
+ obj_frame_tiles(gEventObjectPic_Woman4_4),
+ obj_frame_tiles(gEventObjectPic_Woman4_5),
+ obj_frame_tiles(gEventObjectPic_Woman4_6),
+ obj_frame_tiles(gEventObjectPic_Woman4_7),
+ obj_frame_tiles(gEventObjectPic_Woman4_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man3[] = {
+ obj_frame_tiles(gEventObjectPic_Man3_0),
+ obj_frame_tiles(gEventObjectPic_Man3_1),
+ obj_frame_tiles(gEventObjectPic_Man3_2),
+ obj_frame_tiles(gEventObjectPic_Man3_3),
+ obj_frame_tiles(gEventObjectPic_Man3_4),
+ obj_frame_tiles(gEventObjectPic_Man3_5),
+ obj_frame_tiles(gEventObjectPic_Man3_6),
+ obj_frame_tiles(gEventObjectPic_Man3_7),
+ obj_frame_tiles(gEventObjectPic_Man3_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman5[] = {
+ obj_frame_tiles(gEventObjectPic_Woman5_0),
+ obj_frame_tiles(gEventObjectPic_Woman5_1),
+ obj_frame_tiles(gEventObjectPic_Woman5_2),
+ obj_frame_tiles(gEventObjectPic_Woman5_3),
+ obj_frame_tiles(gEventObjectPic_Woman5_4),
+ obj_frame_tiles(gEventObjectPic_Woman5_5),
+ obj_frame_tiles(gEventObjectPic_Woman5_6),
+ obj_frame_tiles(gEventObjectPic_Woman5_7),
+ obj_frame_tiles(gEventObjectPic_Woman5_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Cook[] = {
+ obj_frame_tiles(gEventObjectPic_Cook_0),
+ obj_frame_tiles(gEventObjectPic_Cook_1),
+ obj_frame_tiles(gEventObjectPic_Cook_2),
+ obj_frame_tiles(gEventObjectPic_Cook_0),
+ obj_frame_tiles(gEventObjectPic_Cook_0),
+ obj_frame_tiles(gEventObjectPic_Cook_1),
+ obj_frame_tiles(gEventObjectPic_Cook_1),
+ obj_frame_tiles(gEventObjectPic_Cook_2),
+ obj_frame_tiles(gEventObjectPic_Cook_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman6[] = {
+ obj_frame_tiles(gEventObjectPic_Woman6_0),
+ obj_frame_tiles(gEventObjectPic_Woman6_1),
+ obj_frame_tiles(gEventObjectPic_Woman6_2),
+ obj_frame_tiles(gEventObjectPic_Woman6_3),
+ obj_frame_tiles(gEventObjectPic_Woman6_4),
+ obj_frame_tiles(gEventObjectPic_Woman6_5),
+ obj_frame_tiles(gEventObjectPic_Woman6_6),
+ obj_frame_tiles(gEventObjectPic_Woman6_7),
+ obj_frame_tiles(gEventObjectPic_Woman6_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_OldMan2[] = {
+ obj_frame_tiles(gEventObjectPic_OldMan2_0),
+ obj_frame_tiles(gEventObjectPic_OldMan2_1),
+ obj_frame_tiles(gEventObjectPic_OldMan2_2),
+ obj_frame_tiles(gEventObjectPic_OldMan2_0),
+ obj_frame_tiles(gEventObjectPic_OldMan2_0),
+ obj_frame_tiles(gEventObjectPic_OldMan2_1),
+ obj_frame_tiles(gEventObjectPic_OldMan2_1),
+ obj_frame_tiles(gEventObjectPic_OldMan2_2),
+ obj_frame_tiles(gEventObjectPic_OldMan2_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_OldWoman2[] = {
+ obj_frame_tiles(gEventObjectPic_OldWoman2_0),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_1),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_2),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_3),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_4),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_5),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_6),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_7),
+ obj_frame_tiles(gEventObjectPic_OldWoman2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Camper[] = {
+ obj_frame_tiles(gEventObjectPic_Camper_0),
+ obj_frame_tiles(gEventObjectPic_Camper_1),
+ obj_frame_tiles(gEventObjectPic_Camper_2),
+ obj_frame_tiles(gEventObjectPic_Camper_3),
+ obj_frame_tiles(gEventObjectPic_Camper_4),
+ obj_frame_tiles(gEventObjectPic_Camper_5),
+ obj_frame_tiles(gEventObjectPic_Camper_6),
+ obj_frame_tiles(gEventObjectPic_Camper_7),
+ obj_frame_tiles(gEventObjectPic_Camper_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Picnicker[] = {
+ obj_frame_tiles(gEventObjectPic_Picnicker_0),
+ obj_frame_tiles(gEventObjectPic_Picnicker_1),
+ obj_frame_tiles(gEventObjectPic_Picnicker_2),
+ obj_frame_tiles(gEventObjectPic_Picnicker_3),
+ obj_frame_tiles(gEventObjectPic_Picnicker_4),
+ obj_frame_tiles(gEventObjectPic_Picnicker_5),
+ obj_frame_tiles(gEventObjectPic_Picnicker_6),
+ obj_frame_tiles(gEventObjectPic_Picnicker_7),
+ obj_frame_tiles(gEventObjectPic_Picnicker_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man4[] = {
+ obj_frame_tiles(gEventObjectPic_Man4_0),
+ obj_frame_tiles(gEventObjectPic_Man4_1),
+ obj_frame_tiles(gEventObjectPic_Man4_2),
+ obj_frame_tiles(gEventObjectPic_Man4_3),
+ obj_frame_tiles(gEventObjectPic_Man4_4),
+ obj_frame_tiles(gEventObjectPic_Man4_5),
+ obj_frame_tiles(gEventObjectPic_Man4_6),
+ obj_frame_tiles(gEventObjectPic_Man4_7),
+ obj_frame_tiles(gEventObjectPic_Man4_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Woman7[] = {
+ obj_frame_tiles(gEventObjectPic_Woman7_0),
+ obj_frame_tiles(gEventObjectPic_Woman7_1),
+ obj_frame_tiles(gEventObjectPic_Woman7_2),
+ obj_frame_tiles(gEventObjectPic_Woman7_3),
+ obj_frame_tiles(gEventObjectPic_Woman7_4),
+ obj_frame_tiles(gEventObjectPic_Woman7_5),
+ obj_frame_tiles(gEventObjectPic_Woman7_6),
+ obj_frame_tiles(gEventObjectPic_Woman7_7),
+ obj_frame_tiles(gEventObjectPic_Woman7_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Youngster[] = {
+ obj_frame_tiles(gEventObjectPic_Youngster_0),
+ obj_frame_tiles(gEventObjectPic_Youngster_1),
+ obj_frame_tiles(gEventObjectPic_Youngster_2),
+ obj_frame_tiles(gEventObjectPic_Youngster_3),
+ obj_frame_tiles(gEventObjectPic_Youngster_4),
+ obj_frame_tiles(gEventObjectPic_Youngster_5),
+ obj_frame_tiles(gEventObjectPic_Youngster_6),
+ obj_frame_tiles(gEventObjectPic_Youngster_7),
+ obj_frame_tiles(gEventObjectPic_Youngster_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BugCatcher[] = {
+ obj_frame_tiles(gEventObjectPic_BugCatcher_0),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_1),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_2),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_3),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_4),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_5),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_6),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_7),
+ obj_frame_tiles(gEventObjectPic_BugCatcher_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PsychicM[] = {
+ obj_frame_tiles(gEventObjectPic_PsychicM_0),
+ obj_frame_tiles(gEventObjectPic_PsychicM_1),
+ obj_frame_tiles(gEventObjectPic_PsychicM_2),
+ obj_frame_tiles(gEventObjectPic_PsychicM_3),
+ obj_frame_tiles(gEventObjectPic_PsychicM_4),
+ obj_frame_tiles(gEventObjectPic_PsychicM_5),
+ obj_frame_tiles(gEventObjectPic_PsychicM_6),
+ obj_frame_tiles(gEventObjectPic_PsychicM_7),
+ obj_frame_tiles(gEventObjectPic_PsychicM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SchoolKidM[] = {
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_0),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_1),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_2),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_3),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_4),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_5),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_6),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_7),
+ obj_frame_tiles(gEventObjectPic_SchoolKidM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Maniac[] = {
+ obj_frame_tiles(gEventObjectPic_Maniac_0),
+ obj_frame_tiles(gEventObjectPic_Maniac_1),
+ obj_frame_tiles(gEventObjectPic_Maniac_2),
+ obj_frame_tiles(gEventObjectPic_Maniac_3),
+ obj_frame_tiles(gEventObjectPic_Maniac_4),
+ obj_frame_tiles(gEventObjectPic_Maniac_5),
+ obj_frame_tiles(gEventObjectPic_Maniac_6),
+ obj_frame_tiles(gEventObjectPic_Maniac_7),
+ obj_frame_tiles(gEventObjectPic_Maniac_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_HexManiac[] = {
+ obj_frame_tiles(gEventObjectPic_HexManiac_0),
+ obj_frame_tiles(gEventObjectPic_HexManiac_1),
+ obj_frame_tiles(gEventObjectPic_HexManiac_2),
+ obj_frame_tiles(gEventObjectPic_HexManiac_3),
+ obj_frame_tiles(gEventObjectPic_HexManiac_4),
+ obj_frame_tiles(gEventObjectPic_HexManiac_5),
+ obj_frame_tiles(gEventObjectPic_HexManiac_6),
+ obj_frame_tiles(gEventObjectPic_HexManiac_7),
+ obj_frame_tiles(gEventObjectPic_HexManiac_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SwimmerM[] = {
+ obj_frame_tiles(gEventObjectPic_SwimmerM_0),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_1),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_2),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_3),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_4),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_5),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_6),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_7),
+ obj_frame_tiles(gEventObjectPic_SwimmerM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SwimmerF[] = {
+ obj_frame_tiles(gEventObjectPic_SwimmerF_0),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_1),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_2),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_3),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_4),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_5),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_6),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_7),
+ obj_frame_tiles(gEventObjectPic_SwimmerF_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BlackBelt[] = {
+ obj_frame_tiles(gEventObjectPic_BlackBelt_0),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_1),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_2),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_3),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_4),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_5),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_6),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_7),
+ obj_frame_tiles(gEventObjectPic_BlackBelt_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Beauty[] = {
+ obj_frame_tiles(gEventObjectPic_Beauty_0),
+ obj_frame_tiles(gEventObjectPic_Beauty_1),
+ obj_frame_tiles(gEventObjectPic_Beauty_2),
+ obj_frame_tiles(gEventObjectPic_Beauty_3),
+ obj_frame_tiles(gEventObjectPic_Beauty_4),
+ obj_frame_tiles(gEventObjectPic_Beauty_5),
+ obj_frame_tiles(gEventObjectPic_Beauty_6),
+ obj_frame_tiles(gEventObjectPic_Beauty_7),
+ obj_frame_tiles(gEventObjectPic_Beauty_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Scientist1[] = {
+ obj_frame_tiles(gEventObjectPic_Scientist1_0),
+ obj_frame_tiles(gEventObjectPic_Scientist1_1),
+ obj_frame_tiles(gEventObjectPic_Scientist1_2),
+ obj_frame_tiles(gEventObjectPic_Scientist1_3),
+ obj_frame_tiles(gEventObjectPic_Scientist1_4),
+ obj_frame_tiles(gEventObjectPic_Scientist1_5),
+ obj_frame_tiles(gEventObjectPic_Scientist1_6),
+ obj_frame_tiles(gEventObjectPic_Scientist1_7),
+ obj_frame_tiles(gEventObjectPic_Scientist1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Lass[] = {
+ obj_frame_tiles(gEventObjectPic_Lass_0),
+ obj_frame_tiles(gEventObjectPic_Lass_1),
+ obj_frame_tiles(gEventObjectPic_Lass_2),
+ obj_frame_tiles(gEventObjectPic_Lass_3),
+ obj_frame_tiles(gEventObjectPic_Lass_4),
+ obj_frame_tiles(gEventObjectPic_Lass_5),
+ obj_frame_tiles(gEventObjectPic_Lass_6),
+ obj_frame_tiles(gEventObjectPic_Lass_7),
+ obj_frame_tiles(gEventObjectPic_Lass_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Gentleman[] = {
+ obj_frame_tiles(gEventObjectPic_Gentleman_0),
+ obj_frame_tiles(gEventObjectPic_Gentleman_1),
+ obj_frame_tiles(gEventObjectPic_Gentleman_2),
+ obj_frame_tiles(gEventObjectPic_Gentleman_3),
+ obj_frame_tiles(gEventObjectPic_Gentleman_4),
+ obj_frame_tiles(gEventObjectPic_Gentleman_5),
+ obj_frame_tiles(gEventObjectPic_Gentleman_6),
+ obj_frame_tiles(gEventObjectPic_Gentleman_7),
+ obj_frame_tiles(gEventObjectPic_Gentleman_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Sailor[] = {
+ obj_frame_tiles(gEventObjectPic_Sailor_0),
+ obj_frame_tiles(gEventObjectPic_Sailor_1),
+ obj_frame_tiles(gEventObjectPic_Sailor_2),
+ obj_frame_tiles(gEventObjectPic_Sailor_3),
+ obj_frame_tiles(gEventObjectPic_Sailor_4),
+ obj_frame_tiles(gEventObjectPic_Sailor_5),
+ obj_frame_tiles(gEventObjectPic_Sailor_6),
+ obj_frame_tiles(gEventObjectPic_Sailor_7),
+ obj_frame_tiles(gEventObjectPic_Sailor_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Fisherman[] = {
+ obj_frame_tiles(gEventObjectPic_Fisherman_0),
+ obj_frame_tiles(gEventObjectPic_Fisherman_1),
+ obj_frame_tiles(gEventObjectPic_Fisherman_2),
+ obj_frame_tiles(gEventObjectPic_Fisherman_3),
+ obj_frame_tiles(gEventObjectPic_Fisherman_4),
+ obj_frame_tiles(gEventObjectPic_Fisherman_5),
+ obj_frame_tiles(gEventObjectPic_Fisherman_6),
+ obj_frame_tiles(gEventObjectPic_Fisherman_7),
+ obj_frame_tiles(gEventObjectPic_Fisherman_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RunningTriathleteM[] = {
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_0),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_1),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_2),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_3),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_4),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_5),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_6),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_7),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RunningTriathleteF[] = {
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_0),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_1),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_2),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_3),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_4),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_5),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_6),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_7),
+ obj_frame_tiles(gEventObjectPic_RunningTriathleteF_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TuberF[] = {
+ obj_frame_tiles(gEventObjectPic_TuberF_0),
+ obj_frame_tiles(gEventObjectPic_TuberF_1),
+ obj_frame_tiles(gEventObjectPic_TuberF_2),
+ obj_frame_tiles(gEventObjectPic_TuberF_3),
+ obj_frame_tiles(gEventObjectPic_TuberF_4),
+ obj_frame_tiles(gEventObjectPic_TuberF_5),
+ obj_frame_tiles(gEventObjectPic_TuberF_6),
+ obj_frame_tiles(gEventObjectPic_TuberF_7),
+ obj_frame_tiles(gEventObjectPic_TuberF_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TuberM[] = {
+ obj_frame_tiles(gEventObjectPic_TuberM_0),
+ obj_frame_tiles(gEventObjectPic_TuberM_1),
+ obj_frame_tiles(gEventObjectPic_TuberM_2),
+ obj_frame_tiles(gEventObjectPic_TuberM_3),
+ obj_frame_tiles(gEventObjectPic_TuberM_4),
+ obj_frame_tiles(gEventObjectPic_TuberM_5),
+ obj_frame_tiles(gEventObjectPic_TuberM_6),
+ obj_frame_tiles(gEventObjectPic_TuberM_7),
+ obj_frame_tiles(gEventObjectPic_TuberM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Hiker[] = {
+ obj_frame_tiles(gEventObjectPic_Hiker_0),
+ obj_frame_tiles(gEventObjectPic_Hiker_1),
+ obj_frame_tiles(gEventObjectPic_Hiker_2),
+ obj_frame_tiles(gEventObjectPic_Hiker_3),
+ obj_frame_tiles(gEventObjectPic_Hiker_4),
+ obj_frame_tiles(gEventObjectPic_Hiker_5),
+ obj_frame_tiles(gEventObjectPic_Hiker_6),
+ obj_frame_tiles(gEventObjectPic_Hiker_7),
+ obj_frame_tiles(gEventObjectPic_Hiker_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CyclingTriathleteM[] = {
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_0),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_1),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_2),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_3),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_4),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_5),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_6),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_7),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CyclingTriathleteF[] = {
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_0),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_1),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_2),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_3),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_4),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_5),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_6),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_7),
+ obj_frame_tiles(gEventObjectPic_CyclingTriathleteF_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Nurse[] = {
+ obj_frame_tiles(gEventObjectPic_Nurse_0),
+ obj_frame_tiles(gEventObjectPic_Nurse_1),
+ obj_frame_tiles(gEventObjectPic_Nurse_2),
+ obj_frame_tiles(gEventObjectPic_Nurse_0),
+ obj_frame_tiles(gEventObjectPic_Nurse_0),
+ obj_frame_tiles(gEventObjectPic_Nurse_1),
+ obj_frame_tiles(gEventObjectPic_Nurse_1),
+ obj_frame_tiles(gEventObjectPic_Nurse_2),
+ obj_frame_tiles(gEventObjectPic_Nurse_2),
+ obj_frame_tiles(gEventObjectPic_Nurse_3),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ItemBall[] = {
+ obj_frame_tiles(gEventObjectPic_ItemBall),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ProfBirch[] = {
+ obj_frame_tiles(gEventObjectPic_ProfBirch_0),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_1),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_2),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_3),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_4),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_5),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_6),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_7),
+ obj_frame_tiles(gEventObjectPic_ProfBirch_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man5[] = {
+ obj_frame_tiles(gEventObjectPic_Man5_0),
+ obj_frame_tiles(gEventObjectPic_Man5_1),
+ obj_frame_tiles(gEventObjectPic_Man5_2),
+ obj_frame_tiles(gEventObjectPic_Man5_3),
+ obj_frame_tiles(gEventObjectPic_Man5_4),
+ obj_frame_tiles(gEventObjectPic_Man5_5),
+ obj_frame_tiles(gEventObjectPic_Man5_6),
+ obj_frame_tiles(gEventObjectPic_Man5_7),
+ obj_frame_tiles(gEventObjectPic_Man5_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man6[] = {
+ obj_frame_tiles(gEventObjectPic_Man6_0),
+ obj_frame_tiles(gEventObjectPic_Man6_1),
+ obj_frame_tiles(gEventObjectPic_Man6_2),
+ obj_frame_tiles(gEventObjectPic_Man6_3),
+ obj_frame_tiles(gEventObjectPic_Man6_4),
+ obj_frame_tiles(gEventObjectPic_Man6_5),
+ obj_frame_tiles(gEventObjectPic_Man6_6),
+ obj_frame_tiles(gEventObjectPic_Man6_7),
+ obj_frame_tiles(gEventObjectPic_Man6_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ReporterM[] = {
+ obj_frame_tiles(gEventObjectPic_ReporterM_0),
+ obj_frame_tiles(gEventObjectPic_ReporterM_1),
+ obj_frame_tiles(gEventObjectPic_ReporterM_2),
+ obj_frame_tiles(gEventObjectPic_ReporterM_3),
+ obj_frame_tiles(gEventObjectPic_ReporterM_4),
+ obj_frame_tiles(gEventObjectPic_ReporterM_5),
+ obj_frame_tiles(gEventObjectPic_ReporterM_6),
+ obj_frame_tiles(gEventObjectPic_ReporterM_7),
+ obj_frame_tiles(gEventObjectPic_ReporterM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ReporterF[] = {
+ obj_frame_tiles(gEventObjectPic_ReporterF_0),
+ obj_frame_tiles(gEventObjectPic_ReporterF_1),
+ obj_frame_tiles(gEventObjectPic_ReporterF_2),
+ obj_frame_tiles(gEventObjectPic_ReporterF_3),
+ obj_frame_tiles(gEventObjectPic_ReporterF_4),
+ obj_frame_tiles(gEventObjectPic_ReporterF_5),
+ obj_frame_tiles(gEventObjectPic_ReporterF_6),
+ obj_frame_tiles(gEventObjectPic_ReporterF_7),
+ obj_frame_tiles(gEventObjectPic_ReporterF_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MauvilleOldMan1[] = {
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_0),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_1),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_2),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_3),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_4),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_5),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_6),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_7),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan1_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MauvilleOldMan2[] = {
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_0),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_1),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_2),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_3),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_4),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_5),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_6),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_7),
+ obj_frame_tiles(gEventObjectPic_MauvilleOldMan2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedNatuDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedNatuDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedMagnemiteDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedMagnemiteDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedSquirtleDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedSquirtleDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedWooperDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedWooperDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedPikachuDoll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedPikachuDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnusedPorygon2Doll[] = {
+ obj_frame_tiles(gEventObjectPic_UnusedPorygon2Doll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CuttableTree[] = {
+ obj_frame_tiles(gEventObjectPic_CuttableTree_0),
+ obj_frame_tiles(gEventObjectPic_CuttableTree_1),
+ obj_frame_tiles(gEventObjectPic_CuttableTree_2),
+ obj_frame_tiles(gEventObjectPic_CuttableTree_3),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MartEmployee[] = {
+ obj_frame_tiles(gEventObjectPic_MartEmployee_0),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_1),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_2),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_3),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_4),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_5),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_6),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_7),
+ obj_frame_tiles(gEventObjectPic_MartEmployee_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RooftopSaleWoman[] = {
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_0),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_1),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_2),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_3),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_4),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_5),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_6),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_7),
+ obj_frame_tiles(gEventObjectPic_RooftopSaleWoman_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Teala[] = {
+ obj_frame_tiles(gEventObjectPic_Teala_0),
+ obj_frame_tiles(gEventObjectPic_Teala_1),
+ obj_frame_tiles(gEventObjectPic_Teala_2),
+ obj_frame_tiles(gEventObjectPic_Teala_3),
+ obj_frame_tiles(gEventObjectPic_Teala_4),
+ obj_frame_tiles(gEventObjectPic_Teala_5),
+ obj_frame_tiles(gEventObjectPic_Teala_6),
+ obj_frame_tiles(gEventObjectPic_Teala_7),
+ obj_frame_tiles(gEventObjectPic_Teala_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BreakableRock[] = {
+ obj_frame_tiles(gEventObjectPic_BreakableRock_0),
+ obj_frame_tiles(gEventObjectPic_BreakableRock_1),
+ obj_frame_tiles(gEventObjectPic_BreakableRock_2),
+ obj_frame_tiles(gEventObjectPic_BreakableRock_3),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PushableBoulder[] = {
+ obj_frame_tiles(gEventObjectPic_PushableBoulder),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MrBrineysBoat[] = {
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_0),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_1),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_2),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_0),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_0),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_1),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_1),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_2),
+ obj_frame_tiles(gEventObjectPic_MrBrineysBoat_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Truck[] = {
+ obj_frame_tiles(gEventObjectPic_Truck),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_VigorothCarryingBox[] = {
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_0),
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_0),
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_0),
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_1),
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_2),
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_1),
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_2),
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_1),
+ obj_frame_tiles(gEventObjectPic_VigorothCarryingBox_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_VigorothFacingAway[] = {
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_0),
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_0),
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_0),
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_1),
+ obj_frame_tiles(gEventObjectPic_VigorothFacingAway_1),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BirchsBag[] = {
+ obj_frame_tiles(gEventObjectPic_BirchsBag),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_EnemyZigzagoon[] = {
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_0),
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_1),
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_2),
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_3),
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_4),
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_5),
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_6),
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_7),
+ obj_frame_tiles(gEventObjectPic_EnemyZigzagoon_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Poochyena[] = {
+ obj_frame_tiles(gEventObjectPic_Poochyena_0),
+ obj_frame_tiles(gEventObjectPic_Poochyena_1),
+ obj_frame_tiles(gEventObjectPic_Poochyena_2),
+ obj_frame_tiles(gEventObjectPic_Poochyena_3),
+ obj_frame_tiles(gEventObjectPic_Poochyena_4),
+ obj_frame_tiles(gEventObjectPic_Poochyena_5),
+ obj_frame_tiles(gEventObjectPic_Poochyena_6),
+ obj_frame_tiles(gEventObjectPic_Poochyena_7),
+ obj_frame_tiles(gEventObjectPic_Poochyena_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Artist[] = {
+ obj_frame_tiles(gEventObjectPic_Artist_0),
+ obj_frame_tiles(gEventObjectPic_Artist_1),
+ obj_frame_tiles(gEventObjectPic_Artist_2),
+ obj_frame_tiles(gEventObjectPic_Artist_3),
+ obj_frame_tiles(gEventObjectPic_Artist_4),
+ obj_frame_tiles(gEventObjectPic_Artist_5),
+ obj_frame_tiles(gEventObjectPic_Artist_6),
+ obj_frame_tiles(gEventObjectPic_Artist_7),
+ obj_frame_tiles(gEventObjectPic_Artist_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayNormal[] = {
+ obj_frame_tiles(gEventObjectPic_MayNormal_0),
+ obj_frame_tiles(gEventObjectPic_MayNormal_1),
+ obj_frame_tiles(gEventObjectPic_MayNormal_2),
+ obj_frame_tiles(gEventObjectPic_MayNormal_3),
+ obj_frame_tiles(gEventObjectPic_MayNormal_4),
+ obj_frame_tiles(gEventObjectPic_MayNormal_5),
+ obj_frame_tiles(gEventObjectPic_MayNormal_6),
+ obj_frame_tiles(gEventObjectPic_MayNormal_7),
+ obj_frame_tiles(gEventObjectPic_MayNormal_8),
+ obj_frame_tiles(gEventObjectPic_MayNormal_9),
+ obj_frame_tiles(gEventObjectPic_MayNormal_10),
+ obj_frame_tiles(gEventObjectPic_MayNormal_11),
+ obj_frame_tiles(gEventObjectPic_MayNormal_12),
+ obj_frame_tiles(gEventObjectPic_MayNormal_13),
+ obj_frame_tiles(gEventObjectPic_MayNormal_14),
+ obj_frame_tiles(gEventObjectPic_MayNormal_15),
+ obj_frame_tiles(gEventObjectPic_MayNormal_16),
+ obj_frame_tiles(gEventObjectPic_MayNormal_17),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayMachBike[] = {
+ obj_frame_tiles(gEventObjectPic_MayMachBike_0),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_1),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_2),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_3),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_4),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_5),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_6),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_7),
+ obj_frame_tiles(gEventObjectPic_MayMachBike_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayAcroBike[] = {
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_0),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_1),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_2),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_3),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_4),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_5),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_6),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_7),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_8),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_9),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_10),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_11),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_12),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_13),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_14),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_15),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_16),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_17),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_18),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_19),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_20),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_21),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_22),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_23),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_24),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_25),
+ obj_frame_tiles(gEventObjectPic_MayAcroBike_26),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MaySurfing[] = {
+ obj_frame_tiles(gEventObjectPic_MaySurfing_0),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_1),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_2),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_0),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_0),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_1),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_1),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_2),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_2),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_3),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_4),
+ obj_frame_tiles(gEventObjectPic_MaySurfing_5),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayUnderwater[] = {
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_2),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_0),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_1),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_2),
+ obj_frame_tiles(gEventObjectPic_MayUnderwater_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayFieldMove[] = {
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_0),
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_1),
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_2),
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_3),
+ obj_frame_tiles(gEventObjectPic_MayFieldMove_4),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Cameraman[] = {
+ obj_frame_tiles(gEventObjectPic_Cameraman_0),
+ obj_frame_tiles(gEventObjectPic_Cameraman_1),
+ obj_frame_tiles(gEventObjectPic_Cameraman_2),
+ obj_frame_tiles(gEventObjectPic_Cameraman_3),
+ obj_frame_tiles(gEventObjectPic_Cameraman_4),
+ obj_frame_tiles(gEventObjectPic_Cameraman_5),
+ obj_frame_tiles(gEventObjectPic_Cameraman_6),
+ obj_frame_tiles(gEventObjectPic_Cameraman_7),
+ obj_frame_tiles(gEventObjectPic_Cameraman_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MovingBox[] = {
+ obj_frame_tiles(gEventObjectPic_MovingBox),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CableCar[] = {
+ obj_frame_tiles(gEventObjectPic_CableCar),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Scientist2[] = {
+ obj_frame_tiles(gEventObjectPic_Scientist2_0),
+ obj_frame_tiles(gEventObjectPic_Scientist2_1),
+ obj_frame_tiles(gEventObjectPic_Scientist2_2),
+ obj_frame_tiles(gEventObjectPic_Scientist2_3),
+ obj_frame_tiles(gEventObjectPic_Scientist2_4),
+ obj_frame_tiles(gEventObjectPic_Scientist2_5),
+ obj_frame_tiles(gEventObjectPic_Scientist2_6),
+ obj_frame_tiles(gEventObjectPic_Scientist2_7),
+ obj_frame_tiles(gEventObjectPic_Scientist2_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Man7[] = {
+ obj_frame_tiles(gEventObjectPic_Man7_0),
+ obj_frame_tiles(gEventObjectPic_Man7_1),
+ obj_frame_tiles(gEventObjectPic_Man7_2),
+ obj_frame_tiles(gEventObjectPic_Man7_3),
+ obj_frame_tiles(gEventObjectPic_Man7_4),
+ obj_frame_tiles(gEventObjectPic_Man7_5),
+ obj_frame_tiles(gEventObjectPic_Man7_6),
+ obj_frame_tiles(gEventObjectPic_Man7_7),
+ obj_frame_tiles(gEventObjectPic_Man7_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_AquaMemberM[] = {
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_0),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_1),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_2),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_3),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_4),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_5),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_6),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_7),
+ obj_frame_tiles(gEventObjectPic_AquaMemberM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_AquaMemberF[] = {
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_0),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_1),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_2),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_3),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_4),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_5),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_6),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_7),
+ obj_frame_tiles(gEventObjectPic_AquaMemberF_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MagmaMemberM[] = {
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_0),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_1),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_2),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_3),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_4),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_5),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_6),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_7),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberM_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MagmaMemberF[] = {
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_0),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_1),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_2),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_3),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_4),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_5),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_6),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_7),
+ obj_frame_tiles(gEventObjectPic_MagmaMemberF_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Sidney[] = {
+ obj_frame_tiles(gEventObjectPic_Sidney_0),
+ obj_frame_tiles(gEventObjectPic_Sidney_1),
+ obj_frame_tiles(gEventObjectPic_Sidney_2),
+ obj_frame_tiles(gEventObjectPic_Sidney_0),
+ obj_frame_tiles(gEventObjectPic_Sidney_0),
+ obj_frame_tiles(gEventObjectPic_Sidney_1),
+ obj_frame_tiles(gEventObjectPic_Sidney_1),
+ obj_frame_tiles(gEventObjectPic_Sidney_2),
+ obj_frame_tiles(gEventObjectPic_Sidney_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Phoebe[] = {
+ obj_frame_tiles(gEventObjectPic_Phoebe_0),
+ obj_frame_tiles(gEventObjectPic_Phoebe_1),
+ obj_frame_tiles(gEventObjectPic_Phoebe_2),
+ obj_frame_tiles(gEventObjectPic_Phoebe_0),
+ obj_frame_tiles(gEventObjectPic_Phoebe_0),
+ obj_frame_tiles(gEventObjectPic_Phoebe_1),
+ obj_frame_tiles(gEventObjectPic_Phoebe_1),
+ obj_frame_tiles(gEventObjectPic_Phoebe_2),
+ obj_frame_tiles(gEventObjectPic_Phoebe_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Glacia[] = {
+ obj_frame_tiles(gEventObjectPic_Glacia_0),
+ obj_frame_tiles(gEventObjectPic_Glacia_1),
+ obj_frame_tiles(gEventObjectPic_Glacia_2),
+ obj_frame_tiles(gEventObjectPic_Glacia_0),
+ obj_frame_tiles(gEventObjectPic_Glacia_0),
+ obj_frame_tiles(gEventObjectPic_Glacia_1),
+ obj_frame_tiles(gEventObjectPic_Glacia_1),
+ obj_frame_tiles(gEventObjectPic_Glacia_2),
+ obj_frame_tiles(gEventObjectPic_Glacia_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Drake[] = {
+ obj_frame_tiles(gEventObjectPic_Drake_0),
+ obj_frame_tiles(gEventObjectPic_Drake_1),
+ obj_frame_tiles(gEventObjectPic_Drake_2),
+ obj_frame_tiles(gEventObjectPic_Drake_0),
+ obj_frame_tiles(gEventObjectPic_Drake_0),
+ obj_frame_tiles(gEventObjectPic_Drake_1),
+ obj_frame_tiles(gEventObjectPic_Drake_1),
+ obj_frame_tiles(gEventObjectPic_Drake_2),
+ obj_frame_tiles(gEventObjectPic_Drake_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Roxanne[] = {
+ obj_frame_tiles(gEventObjectPic_Roxanne_0),
+ obj_frame_tiles(gEventObjectPic_Roxanne_1),
+ obj_frame_tiles(gEventObjectPic_Roxanne_2),
+ obj_frame_tiles(gEventObjectPic_Roxanne_0),
+ obj_frame_tiles(gEventObjectPic_Roxanne_0),
+ obj_frame_tiles(gEventObjectPic_Roxanne_1),
+ obj_frame_tiles(gEventObjectPic_Roxanne_1),
+ obj_frame_tiles(gEventObjectPic_Roxanne_2),
+ obj_frame_tiles(gEventObjectPic_Roxanne_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Brawly[] = {
+ obj_frame_tiles(gEventObjectPic_Brawly_0),
+ obj_frame_tiles(gEventObjectPic_Brawly_1),
+ obj_frame_tiles(gEventObjectPic_Brawly_2),
+ obj_frame_tiles(gEventObjectPic_Brawly_0),
+ obj_frame_tiles(gEventObjectPic_Brawly_0),
+ obj_frame_tiles(gEventObjectPic_Brawly_1),
+ obj_frame_tiles(gEventObjectPic_Brawly_1),
+ obj_frame_tiles(gEventObjectPic_Brawly_2),
+ obj_frame_tiles(gEventObjectPic_Brawly_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Wattson[] = {
+ obj_frame_tiles(gEventObjectPic_Wattson_0),
+ obj_frame_tiles(gEventObjectPic_Wattson_1),
+ obj_frame_tiles(gEventObjectPic_Wattson_2),
+ obj_frame_tiles(gEventObjectPic_Wattson_0),
+ obj_frame_tiles(gEventObjectPic_Wattson_0),
+ obj_frame_tiles(gEventObjectPic_Wattson_1),
+ obj_frame_tiles(gEventObjectPic_Wattson_1),
+ obj_frame_tiles(gEventObjectPic_Wattson_2),
+ obj_frame_tiles(gEventObjectPic_Wattson_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Flannery[] = {
+ obj_frame_tiles(gEventObjectPic_Flannery_0),
+ obj_frame_tiles(gEventObjectPic_Flannery_1),
+ obj_frame_tiles(gEventObjectPic_Flannery_2),
+ obj_frame_tiles(gEventObjectPic_Flannery_0),
+ obj_frame_tiles(gEventObjectPic_Flannery_0),
+ obj_frame_tiles(gEventObjectPic_Flannery_1),
+ obj_frame_tiles(gEventObjectPic_Flannery_1),
+ obj_frame_tiles(gEventObjectPic_Flannery_2),
+ obj_frame_tiles(gEventObjectPic_Flannery_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Norman[] = {
+ obj_frame_tiles(gEventObjectPic_Norman_0),
+ obj_frame_tiles(gEventObjectPic_Norman_1),
+ obj_frame_tiles(gEventObjectPic_Norman_2),
+ obj_frame_tiles(gEventObjectPic_Norman_3),
+ obj_frame_tiles(gEventObjectPic_Norman_4),
+ obj_frame_tiles(gEventObjectPic_Norman_5),
+ obj_frame_tiles(gEventObjectPic_Norman_6),
+ obj_frame_tiles(gEventObjectPic_Norman_7),
+ obj_frame_tiles(gEventObjectPic_Norman_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Winona[] = {
+ obj_frame_tiles(gEventObjectPic_Winona_0),
+ obj_frame_tiles(gEventObjectPic_Winona_1),
+ obj_frame_tiles(gEventObjectPic_Winona_2),
+ obj_frame_tiles(gEventObjectPic_Winona_0),
+ obj_frame_tiles(gEventObjectPic_Winona_0),
+ obj_frame_tiles(gEventObjectPic_Winona_1),
+ obj_frame_tiles(gEventObjectPic_Winona_1),
+ obj_frame_tiles(gEventObjectPic_Winona_2),
+ obj_frame_tiles(gEventObjectPic_Winona_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Liza[] = {
+ obj_frame_tiles(gEventObjectPic_Liza_0),
+ obj_frame_tiles(gEventObjectPic_Liza_1),
+ obj_frame_tiles(gEventObjectPic_Liza_2),
+ obj_frame_tiles(gEventObjectPic_Liza_0),
+ obj_frame_tiles(gEventObjectPic_Liza_0),
+ obj_frame_tiles(gEventObjectPic_Liza_1),
+ obj_frame_tiles(gEventObjectPic_Liza_1),
+ obj_frame_tiles(gEventObjectPic_Liza_2),
+ obj_frame_tiles(gEventObjectPic_Liza_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Tate[] = {
+ obj_frame_tiles(gEventObjectPic_Tate_0),
+ obj_frame_tiles(gEventObjectPic_Tate_1),
+ obj_frame_tiles(gEventObjectPic_Tate_2),
+ obj_frame_tiles(gEventObjectPic_Tate_0),
+ obj_frame_tiles(gEventObjectPic_Tate_0),
+ obj_frame_tiles(gEventObjectPic_Tate_1),
+ obj_frame_tiles(gEventObjectPic_Tate_1),
+ obj_frame_tiles(gEventObjectPic_Tate_2),
+ obj_frame_tiles(gEventObjectPic_Tate_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Wallace[] = {
+ obj_frame_tiles(gEventObjectPic_Wallace_0),
+ obj_frame_tiles(gEventObjectPic_Wallace_1),
+ obj_frame_tiles(gEventObjectPic_Wallace_2),
+ obj_frame_tiles(gEventObjectPic_Wallace_3),
+ obj_frame_tiles(gEventObjectPic_Wallace_4),
+ obj_frame_tiles(gEventObjectPic_Wallace_5),
+ obj_frame_tiles(gEventObjectPic_Wallace_6),
+ obj_frame_tiles(gEventObjectPic_Wallace_7),
+ obj_frame_tiles(gEventObjectPic_Wallace_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Steven[] = {
+ obj_frame_tiles(gEventObjectPic_Steven_0),
+ obj_frame_tiles(gEventObjectPic_Steven_1),
+ obj_frame_tiles(gEventObjectPic_Steven_2),
+ obj_frame_tiles(gEventObjectPic_Steven_3),
+ obj_frame_tiles(gEventObjectPic_Steven_4),
+ obj_frame_tiles(gEventObjectPic_Steven_5),
+ obj_frame_tiles(gEventObjectPic_Steven_6),
+ obj_frame_tiles(gEventObjectPic_Steven_7),
+ obj_frame_tiles(gEventObjectPic_Steven_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Wally[] = {
+ obj_frame_tiles(gEventObjectPic_Wally_0),
+ obj_frame_tiles(gEventObjectPic_Wally_1),
+ obj_frame_tiles(gEventObjectPic_Wally_2),
+ obj_frame_tiles(gEventObjectPic_Wally_3),
+ obj_frame_tiles(gEventObjectPic_Wally_4),
+ obj_frame_tiles(gEventObjectPic_Wally_5),
+ obj_frame_tiles(gEventObjectPic_Wally_6),
+ obj_frame_tiles(gEventObjectPic_Wally_7),
+ obj_frame_tiles(gEventObjectPic_Wally_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RubySapphireLittleBoy[] = {
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_0),
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_1),
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_2),
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_3),
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_4),
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_5),
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_6),
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_7),
+ obj_frame_tiles(gEventObjectPic_RubySapphireLittleBoy_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanFishing[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_0),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_1),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_2),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_3),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_4),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_5),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_6),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_7),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_8),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_9),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_10),
+ obj_frame_tiles(gEventObjectPic_BrendanFishing_11),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayFishing[] = {
+ obj_frame_tiles(gEventObjectPic_MayFishing_0),
+ obj_frame_tiles(gEventObjectPic_MayFishing_1),
+ obj_frame_tiles(gEventObjectPic_MayFishing_2),
+ obj_frame_tiles(gEventObjectPic_MayFishing_3),
+ obj_frame_tiles(gEventObjectPic_MayFishing_4),
+ obj_frame_tiles(gEventObjectPic_MayFishing_5),
+ obj_frame_tiles(gEventObjectPic_MayFishing_6),
+ obj_frame_tiles(gEventObjectPic_MayFishing_7),
+ obj_frame_tiles(gEventObjectPic_MayFishing_8),
+ obj_frame_tiles(gEventObjectPic_MayFishing_9),
+ obj_frame_tiles(gEventObjectPic_MayFishing_10),
+ obj_frame_tiles(gEventObjectPic_MayFishing_11),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_HotSpringsOldWoman[] = {
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_0),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_1),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_2),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_3),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_4),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_5),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_6),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_7),
+ obj_frame_tiles(gEventObjectPic_HotSpringsOldWoman_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SSTidal[] = {
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+ obj_frame_tiles(gEventObjectPic_SSTidal),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SubmarineShadow[] = {
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+ obj_frame_tiles(gEventObjectPic_SubmarineShadow),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PichuDoll[] = {
+ obj_frame_tiles(gEventObjectPic_PichuDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PikachuDoll[] = {
+ obj_frame_tiles(gEventObjectPic_PikachuDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MarillDoll[] = {
+ obj_frame_tiles(gEventObjectPic_MarillDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TogepiDoll[] = {
+ obj_frame_tiles(gEventObjectPic_TogepiDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_CyndaquilDoll[] = {
+ obj_frame_tiles(gEventObjectPic_CyndaquilDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ChikoritaDoll[] = {
+ obj_frame_tiles(gEventObjectPic_ChikoritaDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TotodileDoll[] = {
+ obj_frame_tiles(gEventObjectPic_TotodileDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_JigglypuffDoll[] = {
+ obj_frame_tiles(gEventObjectPic_JigglypuffDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MeowthDoll[] = {
+ obj_frame_tiles(gEventObjectPic_MeowthDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ClefairyDoll[] = {
+ obj_frame_tiles(gEventObjectPic_ClefairyDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_DittoDoll[] = {
+ obj_frame_tiles(gEventObjectPic_DittoDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SmoochumDoll[] = {
+ obj_frame_tiles(gEventObjectPic_SmoochumDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TreeckoDoll[] = {
+ obj_frame_tiles(gEventObjectPic_TreeckoDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TorchicDoll[] = {
+ obj_frame_tiles(gEventObjectPic_TorchicDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MudkipDoll[] = {
+ obj_frame_tiles(gEventObjectPic_MudkipDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_DuskullDoll[] = {
+ obj_frame_tiles(gEventObjectPic_DuskullDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_WynautDoll[] = {
+ obj_frame_tiles(gEventObjectPic_WynautDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BaltoyDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BaltoyDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_KecleonDoll[] = {
+ obj_frame_tiles(gEventObjectPic_KecleonDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_AzurillDoll[] = {
+ obj_frame_tiles(gEventObjectPic_AzurillDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SkittyDoll[] = {
+ obj_frame_tiles(gEventObjectPic_SkittyDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SwabluDoll[] = {
+ obj_frame_tiles(gEventObjectPic_SwabluDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_GulpinDoll[] = {
+ obj_frame_tiles(gEventObjectPic_GulpinDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LotadDoll[] = {
+ obj_frame_tiles(gEventObjectPic_LotadDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SeedotDoll[] = {
+ obj_frame_tiles(gEventObjectPic_SeedotDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_PikaCushion[] = {
+ obj_frame_tiles(gEventObjectPic_PikaCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RoundCushion[] = {
+ obj_frame_tiles(gEventObjectPic_RoundCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_KissCushion[] = {
+ obj_frame_tiles(gEventObjectPic_KissCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ZigzagCushion[] = {
+ obj_frame_tiles(gEventObjectPic_ZigzagCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_SpinCushion[] = {
+ obj_frame_tiles(gEventObjectPic_SpinCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_DiamondCushion[] = {
+ obj_frame_tiles(gEventObjectPic_DiamondCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BallCushion[] = {
+ obj_frame_tiles(gEventObjectPic_BallCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_GrassCushion[] = {
+ obj_frame_tiles(gEventObjectPic_GrassCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_FireCushion[] = {
+ obj_frame_tiles(gEventObjectPic_FireCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_WaterCushion[] = {
+ obj_frame_tiles(gEventObjectPic_WaterCushion),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigSnorlaxDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigSnorlaxDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigRhydonDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigRhydonDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigLaprasDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigLaprasDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigVenusaurDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigVenusaurDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigCharizardDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigCharizardDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigBlastoiseDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigBlastoiseDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigWailmerDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigWailmerDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigRegirockDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigRegirockDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigRegiceDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigRegiceDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BigRegisteelDoll[] = {
+ obj_frame_tiles(gEventObjectPic_BigRegisteelDoll),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_LatiasLatios[] = {
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_0),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_0),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_0),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_1),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_2),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_1),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_2),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_1),
+ obj_frame_tiles(gEventObjectPic_LatiasLatios_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Boy5[] = {
+ obj_frame_tiles(gEventObjectPic_Boy5_0),
+ obj_frame_tiles(gEventObjectPic_Boy5_1),
+ obj_frame_tiles(gEventObjectPic_Boy5_2),
+ obj_frame_tiles(gEventObjectPic_Boy5_0),
+ obj_frame_tiles(gEventObjectPic_Boy5_0),
+ obj_frame_tiles(gEventObjectPic_Boy5_1),
+ obj_frame_tiles(gEventObjectPic_Boy5_1),
+ obj_frame_tiles(gEventObjectPic_Boy5_2),
+ obj_frame_tiles(gEventObjectPic_Boy5_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_ContestOldMan[] = {
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_0),
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_1),
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_2),
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_3),
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_4),
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_5),
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_6),
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_7),
+ obj_frame_tiles(gEventObjectPic_ContestOldMan_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanWatering[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_0),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_1),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_2),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_3),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_3),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_4),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_4),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_5),
+ obj_frame_tiles(gEventObjectPic_BrendanWatering_5),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayWatering[] = {
+ obj_frame_tiles(gEventObjectPic_MayWatering_0),
+ obj_frame_tiles(gEventObjectPic_MayWatering_1),
+ obj_frame_tiles(gEventObjectPic_MayWatering_2),
+ obj_frame_tiles(gEventObjectPic_MayWatering_3),
+ obj_frame_tiles(gEventObjectPic_MayWatering_3),
+ obj_frame_tiles(gEventObjectPic_MayWatering_4),
+ obj_frame_tiles(gEventObjectPic_MayWatering_4),
+ obj_frame_tiles(gEventObjectPic_MayWatering_5),
+ obj_frame_tiles(gEventObjectPic_MayWatering_5),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BrendanDecorating[] = {
+ obj_frame_tiles(gEventObjectPic_BrendanDecorating),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MayDecorating[] = {
+ obj_frame_tiles(gEventObjectPic_MayDecorating),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Archie[] = {
+ obj_frame_tiles(gEventObjectPic_Archie_0),
+ obj_frame_tiles(gEventObjectPic_Archie_1),
+ obj_frame_tiles(gEventObjectPic_Archie_2),
+ obj_frame_tiles(gEventObjectPic_Archie_3),
+ obj_frame_tiles(gEventObjectPic_Archie_4),
+ obj_frame_tiles(gEventObjectPic_Archie_5),
+ obj_frame_tiles(gEventObjectPic_Archie_6),
+ obj_frame_tiles(gEventObjectPic_Archie_7),
+ obj_frame_tiles(gEventObjectPic_Archie_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Maxie[] = {
+ obj_frame_tiles(gEventObjectPic_Maxie_0),
+ obj_frame_tiles(gEventObjectPic_Maxie_1),
+ obj_frame_tiles(gEventObjectPic_Maxie_2),
+ obj_frame_tiles(gEventObjectPic_Maxie_3),
+ obj_frame_tiles(gEventObjectPic_Maxie_4),
+ obj_frame_tiles(gEventObjectPic_Maxie_5),
+ obj_frame_tiles(gEventObjectPic_Maxie_6),
+ obj_frame_tiles(gEventObjectPic_Maxie_7),
+ obj_frame_tiles(gEventObjectPic_Maxie_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_KyogreFront[] = {
+ obj_frame_tiles(gEventObjectPic_KyogreFront_0),
+ obj_frame_tiles(gEventObjectPic_KyogreFront_0),
+ obj_frame_tiles(gEventObjectPic_KyogreFront_0),
+ obj_frame_tiles(gEventObjectPic_KyogreFront_1),
+ obj_frame_tiles(gEventObjectPic_KyogreFront_1),
+ obj_frame_tiles(gEventObjectPic_KyogreFront_1),
+ obj_frame_tiles(gEventObjectPic_KyogreFront_1),
+ obj_frame_tiles(gEventObjectPic_KyogreFront_1),
+ obj_frame_tiles(gEventObjectPic_KyogreFront_1),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_GroudonFront[] = {
+ obj_frame_tiles(gEventObjectPic_GroudonFront_0),
+ obj_frame_tiles(gEventObjectPic_GroudonFront_0),
+ obj_frame_tiles(gEventObjectPic_GroudonFront_0),
+ obj_frame_tiles(gEventObjectPic_GroudonFront_1),
+ obj_frame_tiles(gEventObjectPic_GroudonFront_1),
+ obj_frame_tiles(gEventObjectPic_GroudonFront_1),
+ obj_frame_tiles(gEventObjectPic_GroudonFront_1),
+ obj_frame_tiles(gEventObjectPic_GroudonFront_1),
+ obj_frame_tiles(gEventObjectPic_GroudonFront_1),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_KyogreSide[] = {
+ obj_frame_tiles(gEventObjectPic_KyogreSide_0),
+ obj_frame_tiles(gEventObjectPic_KyogreSide_0),
+ obj_frame_tiles(gEventObjectPic_KyogreSide_0),
+ obj_frame_tiles(gEventObjectPic_KyogreSide_1),
+ obj_frame_tiles(gEventObjectPic_KyogreSide_1),
+ obj_frame_tiles(gEventObjectPic_KyogreSide_1),
+ obj_frame_tiles(gEventObjectPic_KyogreSide_1),
+ obj_frame_tiles(gEventObjectPic_KyogreSide_1),
+ obj_frame_tiles(gEventObjectPic_KyogreSide_1),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_GroudonSide[] = {
+ obj_frame_tiles(gEventObjectPic_GroudonSide_0),
+ obj_frame_tiles(gEventObjectPic_GroudonSide_0),
+ obj_frame_tiles(gEventObjectPic_GroudonSide_0),
+ obj_frame_tiles(gEventObjectPic_GroudonSide_1),
+ obj_frame_tiles(gEventObjectPic_GroudonSide_1),
+ obj_frame_tiles(gEventObjectPic_GroudonSide_1),
+ obj_frame_tiles(gEventObjectPic_GroudonSide_1),
+ obj_frame_tiles(gEventObjectPic_GroudonSide_1),
+ obj_frame_tiles(gEventObjectPic_GroudonSide_1),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Fossil[] = {
+ obj_frame_tiles(gEventObjectPic_Fossil),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Regi[] = {
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+ obj_frame_tiles(gEventObjectPic_Regi),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Skitty[] = {
+ obj_frame_tiles(gEventObjectPic_Skitty_0),
+ obj_frame_tiles(gEventObjectPic_Skitty_1),
+ obj_frame_tiles(gEventObjectPic_Skitty_2),
+ obj_frame_tiles(gEventObjectPic_Skitty_0),
+ obj_frame_tiles(gEventObjectPic_Skitty_0),
+ obj_frame_tiles(gEventObjectPic_Skitty_1),
+ obj_frame_tiles(gEventObjectPic_Skitty_1),
+ obj_frame_tiles(gEventObjectPic_Skitty_2),
+ obj_frame_tiles(gEventObjectPic_Skitty_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Kecleon[] = {
+ obj_frame_tiles(gEventObjectPic_Kecleon_0),
+ obj_frame_tiles(gEventObjectPic_Kecleon_1),
+ obj_frame_tiles(gEventObjectPic_Kecleon_2),
+ obj_frame_tiles(gEventObjectPic_Kecleon_0),
+ obj_frame_tiles(gEventObjectPic_Kecleon_0),
+ obj_frame_tiles(gEventObjectPic_Kecleon_1),
+ obj_frame_tiles(gEventObjectPic_Kecleon_1),
+ obj_frame_tiles(gEventObjectPic_Kecleon_2),
+ obj_frame_tiles(gEventObjectPic_Kecleon_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Rayquaza[] = {
+ obj_frame_tiles(gEventObjectPic_Rayquaza_0),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_1),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_2),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_3),
+ obj_frame_tiles(gEventObjectPic_Rayquaza_4),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RayquazaStill[] = {
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+ obj_frame_tiles(gEventObjectPic_RayquazaStill),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Zigzagoon[] = {
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_0),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_1),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_2),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_0),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_0),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_1),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_1),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_2),
+ obj_frame_tiles(gEventObjectPic_Zigzagoon_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Pikachu[] = {
+ obj_frame_tiles(gEventObjectPic_Pikachu_0),
+ obj_frame_tiles(gEventObjectPic_Pikachu_1),
+ obj_frame_tiles(gEventObjectPic_Pikachu_2),
+ obj_frame_tiles(gEventObjectPic_Pikachu_0),
+ obj_frame_tiles(gEventObjectPic_Pikachu_0),
+ obj_frame_tiles(gEventObjectPic_Pikachu_1),
+ obj_frame_tiles(gEventObjectPic_Pikachu_1),
+ obj_frame_tiles(gEventObjectPic_Pikachu_2),
+ obj_frame_tiles(gEventObjectPic_Pikachu_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Azumarill[] = {
+ obj_frame_tiles(gEventObjectPic_Azumarill_0),
+ obj_frame_tiles(gEventObjectPic_Azumarill_1),
+ obj_frame_tiles(gEventObjectPic_Azumarill_2),
+ obj_frame_tiles(gEventObjectPic_Azumarill_0),
+ obj_frame_tiles(gEventObjectPic_Azumarill_0),
+ obj_frame_tiles(gEventObjectPic_Azumarill_1),
+ obj_frame_tiles(gEventObjectPic_Azumarill_1),
+ obj_frame_tiles(gEventObjectPic_Azumarill_2),
+ obj_frame_tiles(gEventObjectPic_Azumarill_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Wingull[] = {
+ obj_frame_tiles(gEventObjectPic_Wingull_0),
+ obj_frame_tiles(gEventObjectPic_Wingull_1),
+ obj_frame_tiles(gEventObjectPic_Wingull_2),
+ obj_frame_tiles(gEventObjectPic_Wingull_3),
+ obj_frame_tiles(gEventObjectPic_Wingull_3),
+ obj_frame_tiles(gEventObjectPic_Wingull_4),
+ obj_frame_tiles(gEventObjectPic_Wingull_4),
+ obj_frame_tiles(gEventObjectPic_Wingull_5),
+ obj_frame_tiles(gEventObjectPic_Wingull_5),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_TuberMSwimming[] = {
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_0),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_1),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_2),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_3),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_4),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_5),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_6),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_7),
+ obj_frame_tiles(gEventObjectPic_TuberMSwimming_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Azurill[] = {
+ obj_frame_tiles(gEventObjectPic_Azurill_0),
+ obj_frame_tiles(gEventObjectPic_Azurill_1),
+ obj_frame_tiles(gEventObjectPic_Azurill_2),
+ obj_frame_tiles(gEventObjectPic_Azurill_0),
+ obj_frame_tiles(gEventObjectPic_Azurill_0),
+ obj_frame_tiles(gEventObjectPic_Azurill_1),
+ obj_frame_tiles(gEventObjectPic_Azurill_1),
+ obj_frame_tiles(gEventObjectPic_Azurill_2),
+ obj_frame_tiles(gEventObjectPic_Azurill_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Mom[] = {
+ obj_frame_tiles(gEventObjectPic_Mom_0),
+ obj_frame_tiles(gEventObjectPic_Mom_1),
+ obj_frame_tiles(gEventObjectPic_Mom_2),
+ obj_frame_tiles(gEventObjectPic_Mom_3),
+ obj_frame_tiles(gEventObjectPic_Mom_4),
+ obj_frame_tiles(gEventObjectPic_Mom_5),
+ obj_frame_tiles(gEventObjectPic_Mom_6),
+ obj_frame_tiles(gEventObjectPic_Mom_7),
+ obj_frame_tiles(gEventObjectPic_Mom_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Scott[] = {
+ obj_frame_tiles(gEventObjectPic_Scott_0),
+ obj_frame_tiles(gEventObjectPic_Scott_1),
+ obj_frame_tiles(gEventObjectPic_Scott_2),
+ obj_frame_tiles(gEventObjectPic_Scott_3),
+ obj_frame_tiles(gEventObjectPic_Scott_4),
+ obj_frame_tiles(gEventObjectPic_Scott_5),
+ obj_frame_tiles(gEventObjectPic_Scott_6),
+ obj_frame_tiles(gEventObjectPic_Scott_7),
+ obj_frame_tiles(gEventObjectPic_Scott_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Juan[] = {
+ obj_frame_tiles(gEventObjectPic_Juan_0),
+ obj_frame_tiles(gEventObjectPic_Juan_1),
+ obj_frame_tiles(gEventObjectPic_Juan_2),
+ obj_frame_tiles(gEventObjectPic_Juan_3),
+ obj_frame_tiles(gEventObjectPic_Juan_4),
+ obj_frame_tiles(gEventObjectPic_Juan_5),
+ obj_frame_tiles(gEventObjectPic_Juan_6),
+ obj_frame_tiles(gEventObjectPic_Juan_7),
+ obj_frame_tiles(gEventObjectPic_Juan_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_MysteryEventDeliveryman[] = {
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_0),
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_1),
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_2),
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_0),
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_0),
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_1),
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_1),
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_2),
+ obj_frame_tiles(gEventObjectPic_MysteryEventDeliveryman_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Statue[] = {
+ obj_frame_tiles(gEventObjectPic_Statue),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Dusclops[] = {
+ obj_frame_tiles(gEventObjectPic_Dusclops_0),
+ obj_frame_tiles(gEventObjectPic_Dusclops_1),
+ obj_frame_tiles(gEventObjectPic_Dusclops_2),
+ obj_frame_tiles(gEventObjectPic_Dusclops_3),
+ obj_frame_tiles(gEventObjectPic_Dusclops_4),
+ obj_frame_tiles(gEventObjectPic_Dusclops_5),
+ obj_frame_tiles(gEventObjectPic_Dusclops_6),
+ obj_frame_tiles(gEventObjectPic_Dusclops_7),
+ obj_frame_tiles(gEventObjectPic_Dusclops_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Kirlia[] = {
+ obj_frame_tiles(gEventObjectPic_Kirlia_0),
+ obj_frame_tiles(gEventObjectPic_Kirlia_1),
+ obj_frame_tiles(gEventObjectPic_Kirlia_2),
+ obj_frame_tiles(gEventObjectPic_Kirlia_3),
+ obj_frame_tiles(gEventObjectPic_Kirlia_4),
+ obj_frame_tiles(gEventObjectPic_Kirlia_5),
+ obj_frame_tiles(gEventObjectPic_Kirlia_6),
+ obj_frame_tiles(gEventObjectPic_Kirlia_7),
+ obj_frame_tiles(gEventObjectPic_Kirlia_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_UnionRoomAttendant[] = {
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_0),
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_1),
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_2),
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_0),
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_0),
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_1),
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_1),
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_2),
+ obj_frame_tiles(gEventObjectPic_UnionRoomAttendant_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Sudowoodo[] = {
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_0),
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_0),
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_1),
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_0),
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_0),
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_0),
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_0),
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_1),
+ obj_frame_tiles(gEventObjectPic_Sudowoodo_2),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Mew[] = {
+ obj_frame_tiles(gEventObjectPic_Mew_0),
+ obj_frame_tiles(gEventObjectPic_Mew_1),
+ obj_frame_tiles(gEventObjectPic_Mew_2),
+ obj_frame_tiles(gEventObjectPic_Mew_3),
+ obj_frame_tiles(gEventObjectPic_Mew_4),
+ obj_frame_tiles(gEventObjectPic_Mew_5),
+ obj_frame_tiles(gEventObjectPic_Mew_6),
+ obj_frame_tiles(gEventObjectPic_Mew_7),
+ obj_frame_tiles(gEventObjectPic_Mew_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Red[] = {
+ obj_frame_tiles(gEventObjectPic_Red_0),
+ obj_frame_tiles(gEventObjectPic_Red_1),
+ obj_frame_tiles(gEventObjectPic_Red_2),
+ obj_frame_tiles(gEventObjectPic_Red_3),
+ obj_frame_tiles(gEventObjectPic_Red_4),
+ obj_frame_tiles(gEventObjectPic_Red_5),
+ obj_frame_tiles(gEventObjectPic_Red_6),
+ obj_frame_tiles(gEventObjectPic_Red_7),
+ obj_frame_tiles(gEventObjectPic_Red_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Leaf[] = {
+ obj_frame_tiles(gEventObjectPic_Leaf_0),
+ obj_frame_tiles(gEventObjectPic_Leaf_1),
+ obj_frame_tiles(gEventObjectPic_Leaf_2),
+ obj_frame_tiles(gEventObjectPic_Leaf_3),
+ obj_frame_tiles(gEventObjectPic_Leaf_4),
+ obj_frame_tiles(gEventObjectPic_Leaf_5),
+ obj_frame_tiles(gEventObjectPic_Leaf_6),
+ obj_frame_tiles(gEventObjectPic_Leaf_7),
+ obj_frame_tiles(gEventObjectPic_Leaf_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Deoxys[] = {
+ obj_frame_tiles(gEventObjectPic_Deoxys_0),
+ obj_frame_tiles(gEventObjectPic_Deoxys_0),
+ obj_frame_tiles(gEventObjectPic_Deoxys_0),
+ obj_frame_tiles(gEventObjectPic_Deoxys_0),
+ obj_frame_tiles(gEventObjectPic_Deoxys_1),
+ obj_frame_tiles(gEventObjectPic_Deoxys_0),
+ obj_frame_tiles(gEventObjectPic_Deoxys_1),
+ obj_frame_tiles(gEventObjectPic_Deoxys_0),
+ obj_frame_tiles(gEventObjectPic_Deoxys_0),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_BirthIslandStone[] = {
+ obj_frame_tiles(gEventObjectPic_BirthIslandStone),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Anabel[] = {
+ obj_frame_tiles(gEventObjectPic_Anabel_0),
+ obj_frame_tiles(gEventObjectPic_Anabel_1),
+ obj_frame_tiles(gEventObjectPic_Anabel_2),
+ obj_frame_tiles(gEventObjectPic_Anabel_3),
+ obj_frame_tiles(gEventObjectPic_Anabel_4),
+ obj_frame_tiles(gEventObjectPic_Anabel_5),
+ obj_frame_tiles(gEventObjectPic_Anabel_6),
+ obj_frame_tiles(gEventObjectPic_Anabel_7),
+ obj_frame_tiles(gEventObjectPic_Anabel_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Tucker[] = {
+ obj_frame_tiles(gEventObjectPic_Tucker_0),
+ obj_frame_tiles(gEventObjectPic_Tucker_1),
+ obj_frame_tiles(gEventObjectPic_Tucker_2),
+ obj_frame_tiles(gEventObjectPic_Tucker_3),
+ obj_frame_tiles(gEventObjectPic_Tucker_4),
+ obj_frame_tiles(gEventObjectPic_Tucker_5),
+ obj_frame_tiles(gEventObjectPic_Tucker_6),
+ obj_frame_tiles(gEventObjectPic_Tucker_7),
+ obj_frame_tiles(gEventObjectPic_Tucker_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Spenser[] = {
+ obj_frame_tiles(gEventObjectPic_Spenser_0),
+ obj_frame_tiles(gEventObjectPic_Spenser_1),
+ obj_frame_tiles(gEventObjectPic_Spenser_2),
+ obj_frame_tiles(gEventObjectPic_Spenser_3),
+ obj_frame_tiles(gEventObjectPic_Spenser_4),
+ obj_frame_tiles(gEventObjectPic_Spenser_5),
+ obj_frame_tiles(gEventObjectPic_Spenser_6),
+ obj_frame_tiles(gEventObjectPic_Spenser_7),
+ obj_frame_tiles(gEventObjectPic_Spenser_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Greta[] = {
+ obj_frame_tiles(gEventObjectPic_Greta_0),
+ obj_frame_tiles(gEventObjectPic_Greta_1),
+ obj_frame_tiles(gEventObjectPic_Greta_2),
+ obj_frame_tiles(gEventObjectPic_Greta_3),
+ obj_frame_tiles(gEventObjectPic_Greta_4),
+ obj_frame_tiles(gEventObjectPic_Greta_5),
+ obj_frame_tiles(gEventObjectPic_Greta_6),
+ obj_frame_tiles(gEventObjectPic_Greta_7),
+ obj_frame_tiles(gEventObjectPic_Greta_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Noland[] = {
+ obj_frame_tiles(gEventObjectPic_Noland_0),
+ obj_frame_tiles(gEventObjectPic_Noland_1),
+ obj_frame_tiles(gEventObjectPic_Noland_2),
+ obj_frame_tiles(gEventObjectPic_Noland_3),
+ obj_frame_tiles(gEventObjectPic_Noland_4),
+ obj_frame_tiles(gEventObjectPic_Noland_5),
+ obj_frame_tiles(gEventObjectPic_Noland_6),
+ obj_frame_tiles(gEventObjectPic_Noland_7),
+ obj_frame_tiles(gEventObjectPic_Noland_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Lucy[] = {
+ obj_frame_tiles(gEventObjectPic_Lucy_0),
+ obj_frame_tiles(gEventObjectPic_Lucy_1),
+ obj_frame_tiles(gEventObjectPic_Lucy_2),
+ obj_frame_tiles(gEventObjectPic_Lucy_3),
+ obj_frame_tiles(gEventObjectPic_Lucy_4),
+ obj_frame_tiles(gEventObjectPic_Lucy_5),
+ obj_frame_tiles(gEventObjectPic_Lucy_6),
+ obj_frame_tiles(gEventObjectPic_Lucy_7),
+ obj_frame_tiles(gEventObjectPic_Lucy_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Brandon[] = {
+ obj_frame_tiles(gEventObjectPic_Brandon_0),
+ obj_frame_tiles(gEventObjectPic_Brandon_1),
+ obj_frame_tiles(gEventObjectPic_Brandon_2),
+ obj_frame_tiles(gEventObjectPic_Brandon_3),
+ obj_frame_tiles(gEventObjectPic_Brandon_4),
+ obj_frame_tiles(gEventObjectPic_Brandon_5),
+ obj_frame_tiles(gEventObjectPic_Brandon_6),
+ obj_frame_tiles(gEventObjectPic_Brandon_7),
+ obj_frame_tiles(gEventObjectPic_Brandon_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_Lugia[] = {
+ obj_frame_tiles(gEventObjectPic_Lugia_0),
+ obj_frame_tiles(gEventObjectPic_Lugia_0),
+ obj_frame_tiles(gEventObjectPic_Lugia_0),
+ obj_frame_tiles(gEventObjectPic_Lugia_0),
+ obj_frame_tiles(gEventObjectPic_Lugia_1),
+ obj_frame_tiles(gEventObjectPic_Lugia_0),
+ obj_frame_tiles(gEventObjectPic_Lugia_1),
+ obj_frame_tiles(gEventObjectPic_Lugia_0),
+ obj_frame_tiles(gEventObjectPic_Lugia_1),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_HoOh[] = {
+ obj_frame_tiles(gEventObjectPic_HoOh_0),
+ obj_frame_tiles(gEventObjectPic_HoOh_0),
+ obj_frame_tiles(gEventObjectPic_HoOh_0),
+ obj_frame_tiles(gEventObjectPic_HoOh_0),
+ obj_frame_tiles(gEventObjectPic_HoOh_1),
+ obj_frame_tiles(gEventObjectPic_HoOh_0),
+ obj_frame_tiles(gEventObjectPic_HoOh_1),
+ obj_frame_tiles(gEventObjectPic_HoOh_0),
+ obj_frame_tiles(gEventObjectPic_HoOh_1),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RubySapphireBrendan[] = {
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_0),
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_1),
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_2),
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_3),
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_4),
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_5),
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_6),
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_7),
+ obj_frame_tiles(gEventObjectPic_RubySapphireBrendan_8),
+};
+
+const struct SpriteFrameImage gEventObjectPicTable_RubySapphireMay[] = {
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_0),
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_1),
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_2),
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_3),
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_4),
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_5),
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_6),
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_7),
+ obj_frame_tiles(gEventObjectPic_RubySapphireMay_8),
+};
+
+#endif //GUARD_EVENT_OBJECT_PIC_TABLES_H
diff --git a/src/data/field_event_obj/event_object_subsprites.h b/src/data/field_event_obj/event_object_subsprites.h
new file mode 100755
index 000000000..db5fddf1e
--- /dev/null
+++ b/src/data/field_event_obj/event_object_subsprites.h
@@ -0,0 +1,342 @@
+#ifndef GUARD_EVENT_OBJECT_SUBSPRITES_H
+#define GUARD_EVENT_OBJECT_SUBSPRITES_H
+
+const struct Subsprite gEventObjectSpriteOamTable_16x16_0[] = {
+ { -8, -8, 0, 1, 0, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x16_1[] = {
+ { -8, -8, 0, 1, 0, 1}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x16_2[] = {
+ { -8, -8, 1, 0, 0, 2},
+ { -8, 0, 1, 0, 2, 3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x16_3[] = {
+ { -8, -8, 0, 1, 0, 2},
+ { -8, -8, 0, 1, 0, 3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x16_4[] = {
+ { -8, -8, 0, 1, 0, 1},
+ { -8, -8, 0, 1, 0, 3}
+};
+
+const struct SubspriteTable gEventObjectSpriteOamTables_16x16[] = {
+ {0, NULL},
+ {1, gEventObjectSpriteOamTable_16x16_0},
+ {1, gEventObjectSpriteOamTable_16x16_1},
+ {2, gEventObjectSpriteOamTable_16x16_2},
+ {2, gEventObjectSpriteOamTable_16x16_3},
+ {2, gEventObjectSpriteOamTable_16x16_4}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x32_0[] = {
+ { -8, -16, 2, 2, 0, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x32_1[] = {
+ { -8, -16, 2, 2, 0, 1}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x32_2[] = {
+ { -8, -16, 0, 1, 0, 2},
+ { -8, 0, 1, 0, 4, 2},
+ { -8, 8, 1, 0, 6, 3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x32_3[] = {
+ { -8, -16, 0, 1, 0, 2},
+ { -8, 0, 0, 1, 4, 3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_16x32_4[] = {
+ { -8, -16, 0, 1, 0, 1},
+ { -8, 0, 0, 1, 4, 3}
+};
+
+const struct SubspriteTable gEventObjectSpriteOamTables_16x32[] = {
+ {0, NULL},
+ {1, gEventObjectSpriteOamTable_16x32_0},
+ {1, gEventObjectSpriteOamTable_16x32_1},
+ {3, gEventObjectSpriteOamTable_16x32_2},
+ {2, gEventObjectSpriteOamTable_16x32_3},
+ {2, gEventObjectSpriteOamTable_16x32_4}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_32x32_0[] = {
+ {-16, -16, 0, 2, 0, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_32x32_1[] = {
+ {-16, -16, 0, 2, 0, 1}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_32x32_2[] = {
+ {-16, -16, 1, 2, 0, 2},
+ {-16, 0, 1, 1, 8, 2},
+ {-16, 8, 1, 1, 12, 3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_32x32_3[] = {
+ {-16, -16, 1, 2, 0, 2},
+ {-16, 0, 1, 2, 8, 3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_32x32_4[] = {
+ {-16, -16, 1, 2, 0, 1},
+ {-16, 0, 1, 2, 8, 3}
+};
+
+const struct SubspriteTable gEventObjectSpriteOamTables_32x32[] = {
+ {0, NULL},
+ {1, gEventObjectSpriteOamTable_32x32_0},
+ {1, gEventObjectSpriteOamTable_32x32_1},
+ {3, gEventObjectSpriteOamTable_32x32_2},
+ {2, gEventObjectSpriteOamTable_32x32_3},
+ {2, gEventObjectSpriteOamTable_32x32_4}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_Truck_0[] = {
+ {-24, -24, 1, 1, 0, 2},
+ { 8, -24, 1, 0, 4, 2},
+ {-24, -16, 1, 1, 6, 2},
+ { 8, -16, 1, 0, 10, 2},
+ {-24, -8, 1, 1, 12, 2},
+ { 8, -8, 1, 0, 16, 2},
+ {-24, 0, 1, 1, 18, 2},
+ { 8, 0, 1, 0, 22, 2},
+ {-24, 8, 1, 1, 24, 2},
+ { 8, 8, 1, 0, 28, 2},
+ {-24, 16, 1, 1, 30, 2},
+ { 8, 16, 1, 0, 34, 2}
+};
+
+const struct SubspriteTable gEventObjectSpriteOamTables_Truck[] = {
+ {12, gEventObjectSpriteOamTable_Truck_0},
+ {12, gEventObjectSpriteOamTable_Truck_0},
+ {12, gEventObjectSpriteOamTable_Truck_0},
+ {12, gEventObjectSpriteOamTable_Truck_0},
+ {12, gEventObjectSpriteOamTable_Truck_0},
+ {12, gEventObjectSpriteOamTable_Truck_0}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_Unused_0[] = {
+ {-32, -16, 1, 3, 0, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_Unused_1[] = {
+ {-32, -16, 1, 3, 0, 1}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_Unused_2[] = {
+ {-32, -16, 1, 3, 0, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_Unused_3[] = {
+ {-32, -16, 1, 3, 0, 2}
+};
+
+const struct SubspriteTable gEventObjectSpriteOamTables_Unused[] = {
+ {0, NULL},
+ {1, gEventObjectSpriteOamTable_Unused_0},
+ {1, gEventObjectSpriteOamTable_Unused_1},
+ {1, gEventObjectSpriteOamTable_Unused_2},
+ {1, gEventObjectSpriteOamTable_Unused_3},
+ {1, gEventObjectSpriteOamTable_Unused_3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_64x64_0[] = {
+ {-32, -32, 0, 3, 0, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_64x64_1[] = {
+ {-32, -32, 0, 3, 0, 1}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_64x64_2[] = {
+ {-32, -32, 0, 3, 0, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_64x64_3[] = {
+ {-32, -32, 0, 3, 0, 2}
+};
+
+const struct SubspriteTable gEventObjectSpriteOamTables_64x64[] = {
+ {0, NULL},
+ {1, gEventObjectSpriteOamTable_64x64_0},
+ {1, gEventObjectSpriteOamTable_64x64_1},
+ {1, gEventObjectSpriteOamTable_64x64_2},
+ {1, gEventObjectSpriteOamTable_64x64_3},
+ {1, gEventObjectSpriteOamTable_64x64_3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_SSTidal_0[] = {
+ {-48, -20, 1, 1, 0, 2},
+ {-16, -20, 1, 1, 4, 2},
+ { 16, -20, 1, 1, 8, 2},
+ {-48, -12, 1, 1, 12, 2},
+ {-16, -12, 1, 1, 16, 2},
+ { 16, -12, 1, 1, 20, 2},
+ {-48, -4, 1, 1, 24, 2},
+ {-16, -4, 1, 1, 28, 2},
+ { 16, -4, 1, 1, 32, 2},
+ {-48, 4, 1, 1, 36, 2},
+ {-16, 4, 1, 1, 40, 2},
+ { 16, 4, 1, 1, 44, 2},
+ {-48, 12, 1, 1, 48, 2},
+ {-16, 12, 1, 1, 52, 2},
+ { 16, 12, 1, 1, 56, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_SSTidal_1[] = {
+ {-48, -20, 1, 1, 0, 1},
+ {-16, -20, 1, 1, 4, 1},
+ { 16, -20, 1, 1, 8, 1},
+ {-48, -12, 1, 1, 12, 1},
+ {-16, -12, 1, 1, 16, 1},
+ { 16, -12, 1, 1, 20, 1},
+ {-48, -4, 1, 1, 24, 1},
+ {-16, -4, 1, 1, 28, 1},
+ { 16, -4, 1, 1, 32, 1},
+ {-48, 4, 1, 1, 36, 1},
+ {-16, 4, 1, 1, 40, 1},
+ { 16, 4, 1, 1, 44, 1},
+ {-48, 12, 1, 1, 48, 1},
+ {-16, 12, 1, 1, 52, 1},
+ { 16, 12, 1, 1, 56, 1}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_SSTidal_2[] = {
+ {-48, -20, 1, 1, 0, 2},
+ {-16, -20, 1, 1, 4, 2},
+ { 16, -20, 1, 1, 8, 2},
+ {-48, -12, 1, 1, 12, 2},
+ {-16, -12, 1, 1, 16, 2},
+ { 16, -12, 1, 1, 20, 2},
+ {-48, -4, 1, 1, 24, 2},
+ {-16, -4, 1, 1, 28, 2},
+ { 16, -4, 1, 1, 32, 2},
+ {-48, 4, 1, 1, 36, 2},
+ {-16, 4, 1, 1, 40, 2},
+ { 16, 4, 1, 1, 44, 2},
+ {-48, 12, 1, 1, 48, 2},
+ {-16, 12, 1, 1, 52, 2},
+ { 16, 12, 1, 1, 56, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_SSTidal_3[] = {
+ {-48, -20, 1, 1, 0, 1},
+ {-16, -20, 1, 1, 4, 1},
+ { 16, -20, 1, 1, 8, 1},
+ {-48, -12, 1, 1, 12, 1},
+ {-16, -12, 1, 1, 16, 1},
+ { 16, -12, 1, 1, 20, 1},
+ {-48, -4, 1, 1, 24, 2},
+ {-16, -4, 1, 1, 28, 2},
+ { 16, -4, 1, 1, 32, 2},
+ {-48, 4, 1, 1, 36, 2},
+ {-16, 4, 1, 1, 40, 2},
+ { 16, 4, 1, 1, 44, 2},
+ {-48, 12, 1, 1, 48, 2},
+ {-16, 12, 1, 1, 52, 2},
+ { 16, 12, 1, 1, 56, 2}
+};
+
+const struct SubspriteTable gEventObjectSpriteOamTables_SSTidal[] = {
+ {15, gEventObjectSpriteOamTable_SSTidal_0},
+ {15, gEventObjectSpriteOamTable_SSTidal_0},
+ {15, gEventObjectSpriteOamTable_SSTidal_1},
+ {15, gEventObjectSpriteOamTable_SSTidal_2},
+ {15, gEventObjectSpriteOamTable_SSTidal_3},
+ {15, gEventObjectSpriteOamTable_SSTidal_3}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_SubmarineShadow_0[] = {
+ {-48, -20, 1, 1, 0, 2},
+ {-16, -20, 1, 1, 4, 2},
+ { 16, -20, 1, 0, 8, 2},
+ { 32, -20, 0, 0, 10, 2},
+ {-48, -12, 1, 1, 11, 2},
+ {-16, -12, 1, 1, 15, 2},
+ { 16, -12, 1, 0, 19, 2},
+ { 32, -12, 0, 0, 21, 2},
+ {-48, -4, 1, 1, 22, 2},
+ {-16, -4, 1, 1, 26, 2},
+ { 16, -4, 1, 0, 30, 2},
+ { 32, -4, 0, 0, 32, 2},
+ {-48, 4, 1, 1, 33, 2},
+ {-16, 4, 1, 1, 37, 2},
+ { 16, 4, 1, 0, 41, 2},
+ { 32, 4, 0, 0, 43, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_SubmarineShadow_1[] = {
+ {-48, -20, 1, 1, 0, 1},
+ {-16, -20, 1, 1, 4, 1},
+ { 16, -20, 1, 0, 8, 1},
+ { 32, -20, 0, 0, 10, 1},
+ {-48, -12, 1, 1, 11, 1},
+ {-16, -12, 1, 1, 15, 1},
+ { 16, -12, 1, 0, 19, 1},
+ { 32, -12, 0, 0, 21, 1},
+ {-48, -4, 1, 1, 22, 1},
+ {-16, -4, 1, 1, 26, 1},
+ { 16, -4, 1, 0, 30, 1},
+ { 32, -4, 0, 0, 32, 1},
+ {-48, 4, 1, 1, 33, 1},
+ {-16, 4, 1, 1, 37, 1},
+ { 16, 4, 1, 0, 41, 1},
+ { 32, 4, 0, 0, 43, 1}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_SubmarineShadow_2[] = {
+ {-48, -20, 1, 1, 0, 2},
+ {-16, -20, 1, 1, 4, 2},
+ { 16, -20, 1, 0, 8, 2},
+ { 32, -20, 0, 0, 10, 2},
+ {-48, -12, 1, 1, 11, 2},
+ {-16, -12, 1, 1, 15, 2},
+ { 16, -12, 1, 0, 19, 2},
+ { 32, -12, 0, 0, 21, 2},
+ {-48, -4, 1, 1, 22, 2},
+ {-16, -4, 1, 1, 26, 2},
+ { 16, -4, 1, 0, 30, 2},
+ { 32, -4, 0, 0, 32, 2},
+ {-48, 4, 1, 1, 33, 2},
+ {-16, 4, 1, 1, 37, 2},
+ { 16, 4, 1, 0, 41, 2},
+ { 32, 4, 0, 0, 43, 2}
+};
+
+const struct Subsprite gEventObjectSpriteOamTable_SubmarineShadow_3[] = {
+ {-48, -20, 1, 1, 0, 1},
+ {-16, -20, 1, 1, 4, 1},
+ { 16, -20, 1, 0, 8, 1},
+ { 32, -20, 0, 0, 10, 1},
+ {-48, -12, 1, 1, 11, 1},
+ {-16, -12, 1, 1, 15, 1},
+ { 16, -12, 1, 0, 19, 1},
+ { 32, -12, 0, 0, 21, 1},
+ {-48, -4, 1, 1, 22, 2},
+ {-16, -4, 1, 1, 26, 2},
+ { 16, -4, 1, 0, 30, 2},
+ { 32, -4, 0, 0, 32, 2},
+ {-48, 4, 1, 1, 33, 2},
+ {-16, 4, 1, 1, 37, 2},
+ { 16, 4, 1, 0, 41, 2},
+ { 32, 4, 0, 0, 43, 2}
+};
+
+const struct SubspriteTable gEventObjectSpriteOamTables_SubmarineShadow[] = {
+ {16, gEventObjectSpriteOamTable_SubmarineShadow_0},
+ {16, gEventObjectSpriteOamTable_SubmarineShadow_0},
+ {16, gEventObjectSpriteOamTable_SubmarineShadow_1},
+ {16, gEventObjectSpriteOamTable_SubmarineShadow_2},
+ {16, gEventObjectSpriteOamTable_SubmarineShadow_3},
+ {16, gEventObjectSpriteOamTable_SubmarineShadow_3}
+};
+
+#endif //GUARD_EVENT_OBJECT_SUBSPRITES_H
diff --git a/src/data/field_event_obj/field_effect_object_template_pointers.h b/src/data/field_event_obj/field_effect_object_template_pointers.h
new file mode 100755
index 000000000..3b08a5ff1
--- /dev/null
+++ b/src/data/field_event_obj/field_effect_object_template_pointers.h
@@ -0,0 +1,82 @@
+#ifndef GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
+#define GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall;
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium;
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge;
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge;
+const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Ash;
+const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow;
+const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust;
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopTallGrass;
+const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints;
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopBigSplash;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Splash;
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopSmallSplash;
+const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown16;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown18;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown21;
+const struct SpriteTemplate gFieldEffectObjectTemplate_BerryTreeGrowthSparkle;
+const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints;
+const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise;
+const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Bird;
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks;
+const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown29;
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass;
+const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater;
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown33;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown35;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza;
+
+const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
+ &gFieldEffectObjectTemplate_ShadowSmall,
+ &gFieldEffectObjectTemplate_ShadowMedium,
+ &gFieldEffectObjectTemplate_ShadowLarge,
+ &gFieldEffectObjectTemplate_ShadowExtraLarge,
+ &gFieldEffectObjectTemplate_TallGrass,
+ &gFieldEffectObjectTemplate_Ripple,
+ &gFieldEffectObjectTemplate_Ash,
+ &gFieldEffectObjectTemplate_SurfBlob,
+ &gFieldEffectObjectTemplate_Arrow,
+ &gFieldEffectObjectTemplate_GroundImpactDust,
+ &gFieldEffectObjectTemplate_BikeHopTallGrass,
+ &gFieldEffectObjectTemplate_SandFootprints,
+ &gFieldEffectObjectTemplate_BikeHopBigSplash,
+ &gFieldEffectObjectTemplate_Splash,
+ &gFieldEffectObjectTemplate_BikeHopSmallSplash,
+ &gFieldEffectObjectTemplate_LongGrass,
+ &gFieldEffectObjectTemplate_Unknown16,
+ &gFieldEffectObjectTemplate_Unknown17,
+ &gFieldEffectObjectTemplate_Unknown18,
+ &gFieldEffectObjectTemplate_Unknown19,
+ &gFieldEffectObjectTemplate_Unknown20,
+ &gFieldEffectObjectTemplate_Unknown21,
+ &gFieldEffectObjectTemplate_BerryTreeGrowthSparkle,
+ &gFieldEffectObjectTemplate_DeepSandFootprints,
+ &gFieldEffectObjectTemplate_TreeDisguise,
+ &gFieldEffectObjectTemplate_MountainDisguise,
+ &gFieldEffectObjectTemplate_Bird,
+ &gFieldEffectObjectTemplate_BikeTireTracks,
+ &gFieldEffectObjectTemplate_SandDisguisePlaceholder,
+ &gFieldEffectObjectTemplate_Unknown29,
+ &gFieldEffectObjectTemplate_ShortGrass,
+ &gFieldEffectObjectTemplate_HotSpringsWater,
+ &gFieldEffectObjectTemplate_JumpOutOfAsh,
+ &gFieldEffectObjectTemplate_Unknown33,
+ &gFieldEffectObjectTemplate_Bubbles,
+ &gFieldEffectObjectTemplate_Unknown35,
+ &gFieldEffectObjectTemplate_Rayquaza,
+};
+
+#endif //GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
diff --git a/src/data/field_event_obj/field_effect_objects.h b/src/data/field_event_obj/field_effect_objects.h
new file mode 100755
index 000000000..c8633daa7
--- /dev/null
+++ b/src/data/field_event_obj/field_effect_objects.h
@@ -0,0 +1,997 @@
+#ifndef GUARD_FIELD_EFFECT_OBJECTS_H
+#define GUARD_FIELD_EFFECT_OBJECTS_H
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo0 = {gFieldEffectObjectPalette0, 0x1004};
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo1 = {gFieldEffectObjectPalette1, 0x1005};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850C9D0[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Shadow[] =
+{
+ gFieldEffectObjectImageAnim_850C9D0,
+};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowSmall[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_ShadowSmall),
+};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowMedium[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_ShadowMedium),
+};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowLarge[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_ShadowLarge),
+};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowExtraLarge[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge),
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_8x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowSmall, gDummySpriteAffineAnimTable, oamc_shadow};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowMedium, gDummySpriteAffineAnimTable, oamc_shadow};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowLarge, gDummySpriteAffineAnimTable, oamc_shadow};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_64x32, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, oamc_shadow};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_TallGrass[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_TallGrass_0),
+ obj_frame_tiles(gFieldEffectObjectPic_TallGrass_1),
+ obj_frame_tiles(gFieldEffectObjectPic_TallGrass_2),
+ obj_frame_tiles(gFieldEffectObjectPic_TallGrass_3),
+ obj_frame_tiles(gFieldEffectObjectPic_TallGrass_4),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CA84[] =
+{
+ ANIMCMD_FRAME(1, 10),
+ ANIMCMD_FRAME(2, 10),
+ ANIMCMD_FRAME(3, 10),
+ ANIMCMD_FRAME(4, 10),
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_TallGrass[] =
+{
+ gFieldEffectObjectImageAnim_850CA84,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_TallGrass, gFieldEffectObjectPicTable_TallGrass, gDummySpriteAffineAnimTable, unc_grass_normal};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Ripple[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Ripple_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Ripple_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Ripple_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Ripple_3),
+ obj_frame_tiles(gFieldEffectObjectPic_Ripple_4),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CAE0[] =
+{
+ ANIMCMD_FRAME(0, 12),
+ ANIMCMD_FRAME(1, 9),
+ ANIMCMD_FRAME(2, 9),
+ ANIMCMD_FRAME(3, 9),
+ ANIMCMD_FRAME(0, 9),
+ ANIMCMD_FRAME(1, 9),
+ ANIMCMD_FRAME(2, 11),
+ ANIMCMD_FRAME(4, 11),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Ripple[] =
+{
+ gFieldEffectObjectImageAnim_850CAE0,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Ripple, gFieldEffectObjectPicTable_Ripple, gDummySpriteAffineAnimTable, sub_81561D0};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Ash[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Ash_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Ash_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Ash_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Ash_3),
+ obj_frame_tiles(gFieldEffectObjectPic_Ash_4),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CB48[] =
+{
+ ANIMCMD_FRAME(0, 12),
+ ANIMCMD_FRAME(1, 12),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 12),
+ ANIMCMD_FRAME(4, 12),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Ash[] =
+{
+ gFieldEffectObjectImageAnim_850CB48,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Ash = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Ash, gFieldEffectObjectPicTable_Ash, gDummySpriteAffineAnimTable, sub_8155460};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_SurfBlob[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_SurfBlob_0),
+ obj_frame_tiles(gFieldEffectObjectPic_SurfBlob_1),
+ obj_frame_tiles(gFieldEffectObjectPic_SurfBlob_2),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CB94[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CB9C[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CBA4[] =
+{
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CBAC[] =
+{
+ ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_SurfBlob[] =
+{
+ gFieldEffectObjectImageAnim_850CB94,
+ gFieldEffectObjectImageAnim_850CB9C,
+ gFieldEffectObjectImageAnim_850CBA4,
+ gFieldEffectObjectImageAnim_850CBAC,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x32, gFieldEffectObjectImageAnimTable_SurfBlob, gFieldEffectObjectPicTable_SurfBlob, gDummySpriteAffineAnimTable, sub_8155658};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Arrow[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Arrow_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Arrow_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Arrow_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Arrow_3),
+ obj_frame_tiles(gFieldEffectObjectPic_Arrow_4),
+ obj_frame_tiles(gFieldEffectObjectPic_Arrow_5),
+ obj_frame_tiles(gFieldEffectObjectPic_Arrow_6),
+ obj_frame_tiles(gFieldEffectObjectPic_Arrow_7),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CC1C[] =
+{
+ ANIMCMD_FRAME(3, 32),
+ ANIMCMD_FRAME(7, 32),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CC28[] =
+{
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_FRAME(4, 32),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CC34[] =
+{
+ ANIMCMD_FRAME(1, 32),
+ ANIMCMD_FRAME(5, 32),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CC40[] =
+{
+ ANIMCMD_FRAME(2, 32),
+ ANIMCMD_FRAME(6, 32),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Arrow[] =
+{
+ gFieldEffectObjectImageAnim_850CC1C,
+ gFieldEffectObjectImageAnim_850CC28,
+ gFieldEffectObjectImageAnim_850CC34,
+ gFieldEffectObjectImageAnim_850CC40,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Arrow, gFieldEffectObjectPicTable_Arrow, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_GroundImpactDust[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_GroundImpactDust_0),
+ obj_frame_tiles(gFieldEffectObjectPic_GroundImpactDust_1),
+ obj_frame_tiles(gFieldEffectObjectPic_GroundImpactDust_2),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CC8C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_GroundImpactDust[] =
+{
+ gFieldEffectObjectImageAnim_850CC8C,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_GroundImpactDust, gFieldEffectObjectPicTable_GroundImpactDust, gDummySpriteAffineAnimTable, sub_8156194};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopTallGrass[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopTallGrass_0),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopTallGrass_1),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopTallGrass_2),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopTallGrass_3),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CCD8[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopTallGrass[] =
+{
+ gFieldEffectObjectImageAnim_850CCD8,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopTallGrass = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_BikeHopTallGrass, gFieldEffectObjectPicTable_BikeHopTallGrass, gDummySpriteAffineAnimTable, sub_8156194};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_SandFootprints[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_SandFootprints_0),
+ obj_frame_tiles(gFieldEffectObjectPic_SandFootprints_1),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CD18[] =
+{
+ ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CD20[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CD28[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CD30[] =
+{
+ ANIMCMD_FRAME(1, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_SandFootprints[] =
+{
+ gFieldEffectObjectImageAnim_850CD18,
+ gFieldEffectObjectImageAnim_850CD18,
+ gFieldEffectObjectImageAnim_850CD20,
+ gFieldEffectObjectImageAnim_850CD28,
+ gFieldEffectObjectImageAnim_850CD30,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_SandFootprints, gFieldEffectObjectPicTable_SandFootprints, gDummySpriteAffineAnimTable, sub_8154C60};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_DeepSandFootprints[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_DeepSandFootprints_0),
+ obj_frame_tiles(gFieldEffectObjectPic_DeepSandFootprints_1),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CD74[] =
+{
+ ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CD7C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CD84[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CD8C[] =
+{
+ ANIMCMD_FRAME(1, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_DeepSandFootprints[] =
+{
+ gFieldEffectObjectImageAnim_850CD74,
+ gFieldEffectObjectImageAnim_850CD74,
+ gFieldEffectObjectImageAnim_850CD7C,
+ gFieldEffectObjectImageAnim_850CD84,
+ gFieldEffectObjectImageAnim_850CD8C,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_DeepSandFootprints, gFieldEffectObjectPicTable_DeepSandFootprints, gDummySpriteAffineAnimTable, sub_8154C60};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeTireTracks[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_BikeTireTracks_0),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeTireTracks_1),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeTireTracks_2),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeTireTracks_3),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CDE0[] =
+{
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CDE8[] =
+{
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CDF0[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CDF8[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CE00[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CE08[] =
+{
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CE10[] =
+{
+ ANIMCMD_FRAME(3, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CE18[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeTireTracks[] =
+{
+ gFieldEffectObjectImageAnim_850CDE0,
+ gFieldEffectObjectImageAnim_850CDE0,
+ gFieldEffectObjectImageAnim_850CDE8,
+ gFieldEffectObjectImageAnim_850CDF0,
+ gFieldEffectObjectImageAnim_850CDF8,
+ gFieldEffectObjectImageAnim_850CE00,
+ gFieldEffectObjectImageAnim_850CE08,
+ gFieldEffectObjectImageAnim_850CE10,
+ gFieldEffectObjectImageAnim_850CE18,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_BikeTireTracks, gFieldEffectObjectPicTable_BikeTireTracks, gDummySpriteAffineAnimTable, sub_8154C60};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopBigSplash[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopBigSplash_0),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopBigSplash_1),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopBigSplash_2),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopBigSplash_3),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CE7C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopBigSplash[] =
+{
+ gFieldEffectObjectImageAnim_850CE7C,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopBigSplash = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_BikeHopBigSplash, gFieldEffectObjectPicTable_BikeHopBigSplash, gDummySpriteAffineAnimTable, sub_8156194};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Splash[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Splash_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Splash_1),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CEBC[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CEC8[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Splash[] =
+{
+ gFieldEffectObjectImageAnim_850CEBC,
+ gFieldEffectObjectImageAnim_850CEC8,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Splash = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_Splash, gFieldEffectObjectPicTable_Splash, gDummySpriteAffineAnimTable, sub_8154D90};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopSmallSplash[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopSmallSplash_0),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopSmallSplash_1),
+ obj_frame_tiles(gFieldEffectObjectPic_BikeHopSmallSplash_2),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CF24[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopSmallSplash[] =
+{
+ gFieldEffectObjectImageAnim_850CF24,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopSmallSplash = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_BikeHopSmallSplash, gFieldEffectObjectPicTable_BikeHopSmallSplash, gDummySpriteAffineAnimTable, sub_8156194};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_LongGrass[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_LongGrass_0),
+ obj_frame_tiles(gFieldEffectObjectPic_LongGrass_1),
+ obj_frame_tiles(gFieldEffectObjectPic_LongGrass_2),
+ obj_frame_tiles(gFieldEffectObjectPic_LongGrass_3),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CF70[] =
+{
+ ANIMCMD_FRAME(1, 3),
+ ANIMCMD_FRAME(2, 3),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_LongGrass[] =
+{
+ gFieldEffectObjectImageAnim_850CF70,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_LongGrass, gFieldEffectObjectPicTable_LongGrass, gDummySpriteAffineAnimTable, unc_grass_tall};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown16[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown16_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown16_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown16_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown16_3),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown16_4),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown16_5),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850CFDC[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(5, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown16[] =
+{
+ gFieldEffectObjectImageAnim_850CFDC,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown16 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown16, gFieldEffectObjectPicTable_Unknown16, gDummySpriteAffineAnimTable, sub_8156194};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown17[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown16_5),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown17_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown17_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown17_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown17_3),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown17_4),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown17_5),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown17_6),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown17_7),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D05C[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_JUMP(7),
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown17[] =
+{
+ gFieldEffectObjectImageAnim_850D05C,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown17, gFieldEffectObjectPicTable_Unknown17, gDummySpriteAffineAnimTable, sub_81561D0};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown18[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown18_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown18_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown18_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown18_3),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D0C0[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown18[] =
+{
+ gFieldEffectObjectImageAnim_850D0C0,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown18 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown18, gFieldEffectObjectPicTable_Unknown18, gDummySpriteAffineAnimTable, sub_81561D0};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown19[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown19_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown19_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown19_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown19_3),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D118[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown19[] =
+{
+ gFieldEffectObjectImageAnim_850D118,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown19, gFieldEffectObjectPicTable_Unknown19, gDummySpriteAffineAnimTable, sub_81561D0};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown29[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown29_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown29_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown29_2),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D160[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown29[] =
+{
+ gFieldEffectObjectImageAnim_850D160,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown29 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_Unknown29, gFieldEffectObjectPicTable_Unknown29, gDummySpriteAffineAnimTable, sub_81559BC};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown20[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown20_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown20_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown20_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown20_3),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D1AC[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown20[] =
+{
+ gFieldEffectObjectImageAnim_850D1AC,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown20, gFieldEffectObjectPicTable_Unknown20, gDummySpriteAffineAnimTable, sub_81561D0};
+
+const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D1E4[] =
+{
+ AFFINEANIMCMD_FRAME(0xFF00, 0x100, -128, 0),
+ AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D234[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
+ AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gFieldEffectObjectRotScalAnimTable_Unknown21[] =
+{
+ gFieldEffectObjectRotScalAnim_850D1E4,
+ gFieldEffectObjectRotScalAnim_850D234,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown21 = {0x0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gFieldEffectObjectRotScalAnimTable_Unknown21, SpriteCallbackDummy};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_BerryTreeGrowthSparkle[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_0),
+ obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_1),
+ obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_2),
+ obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_3),
+ obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_4),
+ obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_5),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D2D4[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(5, 8),
+ ANIMCMD_LOOP(0),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_LOOP(3),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(3, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(5, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_BerryTreeGrowthSparkle[] =
+{
+ gFieldEffectObjectImageAnim_850D2D4,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_BerryTreeGrowthSparkle = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_BerryTreeGrowthSparkle, gFieldEffectObjectPicTable_BerryTreeGrowthSparkle, gDummySpriteAffineAnimTable, sub_81561D0};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_TreeDisguise[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_0),
+ obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_1),
+ obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_2),
+ obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_3),
+ obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_4),
+ obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_5),
+ obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_6),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D37C[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D384[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_TreeDisguise[] =
+{
+ gFieldEffectObjectImageAnim_850D37C,
+ gFieldEffectObjectImageAnim_850D384,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x32, gFieldEffectObjectImageAnimTable_TreeDisguise, gFieldEffectObjectPicTable_TreeDisguise, gDummySpriteAffineAnimTable, sub_8155C88};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_MountainDisguise[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_0),
+ obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_1),
+ obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_2),
+ obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_3),
+ obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_4),
+ obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_5),
+ obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_6),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D3FC[] =
+{
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D404[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_MountainDisguise[] =
+{
+ gFieldEffectObjectImageAnim_850D3FC,
+ gFieldEffectObjectImageAnim_850D404,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x32, gFieldEffectObjectImageAnimTable_MountainDisguise, gFieldEffectObjectPicTable_MountainDisguise, gDummySpriteAffineAnimTable, sub_8155C88};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_SandDisguisePlaceholder[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_0),
+ obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_1),
+ obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_2),
+ obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_3),
+ obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_4),
+ obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_5),
+ obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_6),
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x32, gFieldEffectObjectImageAnimTable_TreeDisguise, gFieldEffectObjectPicTable_SandDisguisePlaceholder, gDummySpriteAffineAnimTable, sub_8155C88};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Bird[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Bird),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D49C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Bird[] =
+{
+ gFieldEffectObjectImageAnim_850D49C,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x32, gFieldEffectObjectImageAnimTable_Bird, gFieldEffectObjectPicTable_Bird, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_ShortGrass[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_ShortGrass_0),
+ obj_frame_tiles(gFieldEffectObjectPic_ShortGrass_1),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D4D0[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_ShortGrass[] =
+{
+ gFieldEffectObjectImageAnim_850D4D0,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_ShortGrass, gFieldEffectObjectPicTable_ShortGrass, gDummySpriteAffineAnimTable, sub_8154A10};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_HotSpringsWater[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_HotSpringsWater),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D500[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_HotSpringsWater[] =
+{
+ gFieldEffectObjectImageAnim_850D500,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_HotSpringsWater, gFieldEffectObjectPicTable_HotSpringsWater, gDummySpriteAffineAnimTable, sub_8155158};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_JumpOutOfAsh[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_0),
+ obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_1),
+ obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_2),
+ obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_3),
+ obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_4),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D54C[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_FRAME(2, 6),
+ ANIMCMD_FRAME(3, 6),
+ ANIMCMD_FRAME(4, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_JumpOutOfAsh[] =
+{
+ gFieldEffectObjectImageAnim_850D54C,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh = {0xFFFF, 0x100D, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_JumpOutOfAsh, gFieldEffectObjectPicTable_JumpOutOfAsh, gDummySpriteAffineAnimTable, sub_80B7CAC};
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo2 = {gFieldEffectObjectPalette2, 0x100D};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown33[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown33_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown33_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown33_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown33_3),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown33_4),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D5B0[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_FRAME(2, 6),
+ ANIMCMD_FRAME(3, 6),
+ ANIMCMD_FRAME(4, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown33[] =
+{
+ gFieldEffectObjectImageAnim_850D5B0,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown33 = {0xFFFF, 0x100D, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown33, gFieldEffectObjectPicTable_Unknown33, gDummySpriteAffineAnimTable, sub_80B7A58};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Bubbles[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Bubbles_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Bubbles_1),
+ obj_frame_tiles(gFieldEffectObjectPic_Bubbles_2),
+ obj_frame_tiles(gFieldEffectObjectPic_Bubbles_3),
+ obj_frame_tiles(gFieldEffectObjectPic_Bubbles_4),
+ obj_frame_tiles(gFieldEffectObjectPic_Bubbles_5),
+ obj_frame_tiles(gFieldEffectObjectPic_Bubbles_6),
+ obj_frame_tiles(gFieldEffectObjectPic_Bubbles_7),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D624[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(3, 6),
+ ANIMCMD_FRAME(4, 6),
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Bubbles[] =
+{
+ gFieldEffectObjectImageAnim_850D624,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x32, gFieldEffectObjectImageAnimTable_Bubbles, gFieldEffectObjectPicTable_Bubbles, gDummySpriteAffineAnimTable, sub_8155AEC};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown35[] = {
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown35_0),
+ obj_frame_tiles(gFieldEffectObjectPic_Unknown35_1),
+};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D674[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown35[] =
+{
+ gFieldEffectObjectImageAnim_850D674,
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown35 = {0xFFFF, 0x100F, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown35, gFieldEffectObjectPicTable_Unknown35, gDummySpriteAffineAnimTable, sub_8155E50};
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo3 = {gFieldEffectObjectPalette3, 0x100F};
+
+const union AnimCmd gFieldEffectObjectImageAnim_850D6A8[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gFieldEffectObjectImageAnimTable_Rayquaza[] = {
+ gFieldEffectObjectImageAnim_850D6A8,
+};
+
+const struct SpriteFrameImage gFieldEffectObjectPicTable_Rayquaza[] = {
+ {.data = (u8*)gEventObjectPic_Rayquaza_0, .size = (sizeof gEventObjectPic_Rayquaza_0) / 4}
+};
+
+const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x32, gFieldEffectObjectImageAnimTable_Rayquaza, gFieldEffectObjectPicTable_Rayquaza, gDummySpriteAffineAnimTable, sub_8155F80};
+
+const struct SpritePalette gFieldEffectObjectPaletteInfoUnused = {gEventObjectPalette2, 0x1011};
+
+#endif //GUARD_FIELD_EFFECT_OBJECTS_H
diff --git a/src/data/field_event_obj/movement_action_func_tables.h b/src/data/field_event_obj/movement_action_func_tables.h
new file mode 100755
index 000000000..b24f5dea4
--- /dev/null
+++ b/src/data/field_event_obj/movement_action_func_tables.h
@@ -0,0 +1,1518 @@
+#ifndef GUARD_MOVEMENT_ACTION_FUNC_TABLES_H
+#define GUARD_MOVEMENT_ACTION_FUNC_TABLES_H
+
+u8 MovementAction_FaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PauseSpriteAnim(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDiagonalUpLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDiagonalUpLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDiagonalUpRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDiagonalUpRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDiagonalDownLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDiagonalDownLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDiagonalDownRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDiagonalDownRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkSlowRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDiagonalUpLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDiagonalUpLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDiagonalUpRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDiagonalUpRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDiagonalDownLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDiagonalDownLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDiagonalDownRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkNormalRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Down_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Down_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Up_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Up_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Left_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Left_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Right_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Jump2Right_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay1_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Finish(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay2_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay4_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay8_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Delay16_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlowDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlow_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlowUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlowLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceSlowRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceNormalDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlace_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceNormalUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceNormalLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceNormalRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastestDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastestUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastestLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkInPlaceFastestRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RideWaterCurrentRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkFastestRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SlideRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_PlayerRunRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_StartAnimInDirection_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WaitSpriteAnim(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpSpecialRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_FacePlayer_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceAwayPlayer_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_LockFacingDirection_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnlockFacingDirection_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceDownUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceDownUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceUpDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceUpDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceLeftRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceLeftRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceRightLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_JumpInPlaceRightLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_FaceOriginalDirection_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_NurseJoyBowDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_EnableJumpLandingGroundEffect_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_DisableJumpLandingGroundEffect_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_DisableAnimation_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RestoreAnimation_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SetInvisible_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_SetVisible_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_EmoteExclamationMark_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_EmoteQuestionMark_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_EmoteHeart_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RevealTrainer_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RevealTrainer_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RockSmashBreak_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_RockSmashBreak_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_RockSmashBreak_Step2(struct EventObject *, struct Sprite *);
+u8 MovementAction_CutTree_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_CutTree_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_CutTree_Step2(struct EventObject *, struct Sprite *);
+u8 MovementAction_SetFixedPriority_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_ClearFixedPriority_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_InitAffineAnim_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_ClearAffineAnim_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Unknown1_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Unknown2_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkDownStartAffine_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkDownStartAffine_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkDownAffine_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkDownAffine_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkLeftAffine_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkLeftAffine_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkRightAffine_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_WalkRightAffine_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieFaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieFaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieFaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieFaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieFaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieFaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieFaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieFaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnusedAcroActionDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnusedAcroActionUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnusedAcroActionLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_UnusedAcroActionRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Figure8_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Figure8_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopFaceRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieHopRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieJumpRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieInPlaceDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieInPlaceUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieInPlaceLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieInPlaceRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroPopWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveDown_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveRight_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_AcroEndWheelieMoveRight_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Levitate_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_StopLevitate_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_DestroyExtraTaskIfAtTop_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_StoreAndLockAnim_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_Finish(struct EventObject *, struct Sprite *);
+u8 MovementAction_FreeAndUnlockAnim_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FlyUp_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FlyUp_Step1(struct EventObject *, struct Sprite *);
+u8 MovementAction_Fly_Finish(struct EventObject *, struct Sprite *);
+u8 MovementAction_FlyDown_Step0(struct EventObject *, struct Sprite *);
+u8 MovementAction_FlyDown_Step1(struct EventObject *, struct Sprite *);
+
+u8 (*const gMovementActionFuncs_FaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Jump2Down[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Jump2Up[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Jump2Left[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Jump2Right[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay1[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay2[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay4[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay8[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Delay16[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RideWaterCurrentDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RideWaterCurrentUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RideWaterCurrentLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RideWaterCurrentRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastestDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastestUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastestLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFastestRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SlideDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SlideUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SlideLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SlideRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_PlayerRunDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_PlayerRunUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_PlayerRunLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_PlayerRunRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_StartAnimInDirection[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpSpecialDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpSpecialUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpSpecialLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpSpecialRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FacePlayer[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceAwayPlayer[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_LockFacingDirection[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_UnlockFacingDirection[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceDownUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceUpDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceLeftRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_JumpInPlaceRightLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FaceOriginalDirection[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_NurseJoyBowDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_EnableJumpLandingGroundEffect[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_DisableJumpLandingGroundEffect[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_DisableAnimation[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RestoreAnimation[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SetInvisible[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SetVisible[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_EmoteExclamationMark[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_EmoteQuestionMark[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_EmoteHeart[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RevealTrainer[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_RockSmashBreak[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_CutTree[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_SetFixedPriority[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_ClearFixedPriority[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_InitAffineAnim[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_ClearAffineAnim[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Unknown1[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Unknown2[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkDownStartAffine[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkDownAffine[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieFaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieFaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieFaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieFaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieHopRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieJumpDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieJumpUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieJumpLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieJumpRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieMoveDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieMoveUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieMoveLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroWheelieMoveRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveDown[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalDiagonalUpLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalDiagonalUpRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalDiagonalDownLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkNormalDiagonalDownRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownLeft[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownRight[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkLeftAffine[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkRightAffine[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Levitate[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_StopLevitate[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_DestroyExtraTaskIfAtTop[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_Figure8[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FlyUp[])(struct EventObject *, struct Sprite *);
+u8 (*const gMovementActionFuncs_FlyDown[])(struct EventObject *, struct Sprite *);
+
+u8 (*const *const gMovementActionFuncs[])(struct EventObject *, struct Sprite *) = {
+ gMovementActionFuncs_FaceDown, // MOVEMENT_ACTION_FACE_DOWN
+ gMovementActionFuncs_FaceUp, // MOVEMENT_ACTION_FACE_UP
+ gMovementActionFuncs_FaceLeft, // MOVEMENT_ACTION_FACE_LEFT
+ gMovementActionFuncs_FaceRight, // MOVEMENT_ACTION_FACE_RIGHT
+ gMovementActionFuncs_WalkSlowDown, // MOVEMENT_ACTION_WALK_SLOW_DOWN
+ gMovementActionFuncs_WalkSlowUp, // MOVEMENT_ACTION_WALK_SLOW_UP
+ gMovementActionFuncs_WalkSlowLeft, // MOVEMENT_ACTION_WALK_SLOW_LEFT
+ gMovementActionFuncs_WalkSlowRight, // MOVEMENT_ACTION_WALK_SLOW_RIGHT
+ gMovementActionFuncs_WalkNormalDown, // MOVEMENT_ACTION_WALK_NORMAL_DOWN
+ gMovementActionFuncs_WalkNormalUp, // MOVEMENT_ACTION_WALK_NORMAL_UP
+ gMovementActionFuncs_WalkNormalLeft, // MOVEMENT_ACTION_WALK_NORMAL_LEFT
+ gMovementActionFuncs_WalkNormalRight, // MOVEMENT_ACTION_WALK_NORMAL_RIGHT
+ gMovementActionFuncs_Jump2Down, // MOVEMENT_ACTION_JUMP_2_DOWN
+ gMovementActionFuncs_Jump2Up, // MOVEMENT_ACTION_JUMP_2_UP
+ gMovementActionFuncs_Jump2Left, // MOVEMENT_ACTION_JUMP_2_LEFT
+ gMovementActionFuncs_Jump2Right, // MOVEMENT_ACTION_JUMP_2_RIGHT
+ gMovementActionFuncs_Delay1, // MOVEMENT_ACTION_DELAY_1
+ gMovementActionFuncs_Delay2, // MOVEMENT_ACTION_DELAY_2
+ gMovementActionFuncs_Delay4, // MOVEMENT_ACTION_DELAY_4
+ gMovementActionFuncs_Delay8, // MOVEMENT_ACTION_DELAY_8
+ gMovementActionFuncs_Delay16, // MOVEMENT_ACTION_DELAY_16
+ gMovementActionFuncs_WalkFastDown, // MOVEMENT_ACTION_WALK_FAST_DOWN
+ gMovementActionFuncs_WalkFastUp, // MOVEMENT_ACTION_WALK_FAST_UP
+ gMovementActionFuncs_WalkFastLeft, // MOVEMENT_ACTION_WALK_FAST_LEFT
+ gMovementActionFuncs_WalkFastRight, // MOVEMENT_ACTION_WALK_FAST_RIGHT
+ gMovementActionFuncs_WalkInPlaceSlowDown, // MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN
+ gMovementActionFuncs_WalkInPlaceSlowUp, // MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP
+ gMovementActionFuncs_WalkInPlaceSlowLeft, // MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT
+ gMovementActionFuncs_WalkInPlaceSlowRight, // MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT
+ gMovementActionFuncs_WalkInPlaceNormalDown, // MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN
+ gMovementActionFuncs_WalkInPlaceNormalUp, // MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP
+ gMovementActionFuncs_WalkInPlaceNormalLeft, // MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT
+ gMovementActionFuncs_WalkInPlaceNormalRight, // MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT
+ gMovementActionFuncs_WalkInPlaceFastDown, // MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN
+ gMovementActionFuncs_WalkInPlaceFastUp, // MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP
+ gMovementActionFuncs_WalkInPlaceFastLeft, // MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT
+ gMovementActionFuncs_WalkInPlaceFastRight, // MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT
+ gMovementActionFuncs_WalkInPlaceFastestDown, // MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN
+ gMovementActionFuncs_WalkInPlaceFastestUp, // MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP
+ gMovementActionFuncs_WalkInPlaceFastestLeft, // MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT
+ gMovementActionFuncs_WalkInPlaceFastestRight, // MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT
+ gMovementActionFuncs_RideWaterCurrentDown, // MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN
+ gMovementActionFuncs_RideWaterCurrentUp, // MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP
+ gMovementActionFuncs_RideWaterCurrentLeft, // MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT
+ gMovementActionFuncs_RideWaterCurrentRight, // MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT
+ gMovementActionFuncs_WalkFastestDown, // MOVEMENT_ACTION_WALK_FASTEST_DOWN
+ gMovementActionFuncs_WalkFastestUp, // MOVEMENT_ACTION_WALK_FASTEST_UP
+ gMovementActionFuncs_WalkFastestLeft, // MOVEMENT_ACTION_WALK_FASTEST_LEFT
+ gMovementActionFuncs_WalkFastestRight, // MOVEMENT_ACTION_WALK_FASTEST_RIGHT
+ gMovementActionFuncs_SlideDown, // MOVEMENT_ACTION_SLIDE_DOWN
+ gMovementActionFuncs_SlideUp, // MOVEMENT_ACTION_SLIDE_UP
+ gMovementActionFuncs_SlideLeft, // MOVEMENT_ACTION_SLIDE_LEFT
+ gMovementActionFuncs_SlideRight, // MOVEMENT_ACTION_SLIDE_RIGHT
+ gMovementActionFuncs_PlayerRunDown, // MOVEMENT_ACTION_PLAYER_RUN_DOWN
+ gMovementActionFuncs_PlayerRunUp, // MOVEMENT_ACTION_PLAYER_RUN_UP
+ gMovementActionFuncs_PlayerRunLeft, // MOVEMENT_ACTION_PLAYER_RUN_LEFT
+ gMovementActionFuncs_PlayerRunRight, // MOVEMENT_ACTION_PLAYER_RUN_RIGHT
+ gMovementActionFuncs_StartAnimInDirection, // MOVEMENT_ACTION_START_ANIM_IN_DIRECTION
+ gMovementActionFuncs_JumpSpecialDown, // MOVEMENT_ACTION_JUMP_SPECIAL_DOWN
+ gMovementActionFuncs_JumpSpecialUp, // MOVEMENT_ACTION_JUMP_SPECIAL_UP
+ gMovementActionFuncs_JumpSpecialLeft, // MOVEMENT_ACTION_JUMP_SPECIAL_LEFT
+ gMovementActionFuncs_JumpSpecialRight, // MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT
+ gMovementActionFuncs_FacePlayer, // MOVEMENT_ACTION_FACE_PLAYER
+ gMovementActionFuncs_FaceAwayPlayer, // MOVEMENT_ACTION_FACE_AWAY_PLAYER
+ gMovementActionFuncs_LockFacingDirection, // MOVEMENT_ACTION_LOCK_FACING_DIRECTION
+ gMovementActionFuncs_UnlockFacingDirection, // MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION
+ gMovementActionFuncs_JumpDown, // MOVEMENT_ACTION_JUMP_DOWN
+ gMovementActionFuncs_JumpUp, // MOVEMENT_ACTION_JUMP_UP
+ gMovementActionFuncs_JumpLeft, // MOVEMENT_ACTION_JUMP_LEFT
+ gMovementActionFuncs_JumpRight, // MOVEMENT_ACTION_JUMP_RIGHT
+ gMovementActionFuncs_JumpInPlaceDown, // MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN
+ gMovementActionFuncs_JumpInPlaceUp, // MOVEMENT_ACTION_JUMP_IN_PLACE_UP
+ gMovementActionFuncs_JumpInPlaceLeft, // MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT
+ gMovementActionFuncs_JumpInPlaceRight, // MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT
+ gMovementActionFuncs_JumpInPlaceDownUp, // MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP
+ gMovementActionFuncs_JumpInPlaceUpDown, // MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN
+ gMovementActionFuncs_JumpInPlaceLeftRight, // MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT
+ gMovementActionFuncs_JumpInPlaceRightLeft, // MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT
+ gMovementActionFuncs_FaceOriginalDirection, // MOVEMENT_ACTION_FACE_ORIGINAL_DIRECTION
+ gMovementActionFuncs_NurseJoyBowDown, // MOVEMENT_ACTION_NURSE_JOY_BOW_DOWN
+ gMovementActionFuncs_EnableJumpLandingGroundEffect, // MOVEMENT_ACTION_ENABLE_JUMP_LANDING_GROUND_EFFECT
+ gMovementActionFuncs_DisableJumpLandingGroundEffect, // MOVEMENT_ACTION_DISABLE_JUMP_LANDING_GROUND_EFFECT
+ gMovementActionFuncs_DisableAnimation, // MOVEMENT_ACTION_DISABLE_ANIMATION
+ gMovementActionFuncs_RestoreAnimation, // MOVEMENT_ACTION_RESTORE_ANIMATION
+ gMovementActionFuncs_SetInvisible, // MOVEMENT_ACTION_SET_INVISIBLE
+ gMovementActionFuncs_SetVisible, // MOVEMENT_ACTION_SET_VISIBLE
+ gMovementActionFuncs_EmoteExclamationMark, // MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK
+ gMovementActionFuncs_EmoteQuestionMark, // MOVEMENT_ACTION_EMOTE_QUESTION_MARK
+ gMovementActionFuncs_EmoteHeart, // MOVEMENT_ACTION_EMOTE_HEART
+ gMovementActionFuncs_RevealTrainer, // MOVEMENT_ACTION_REVEAL_TRAINER
+ gMovementActionFuncs_RockSmashBreak, // MOVEMENT_ACTION_ROCK_SMASH_BREAK
+ gMovementActionFuncs_CutTree, // MOVEMENT_ACTION_CUT_TREE
+ gMovementActionFuncs_SetFixedPriority, // MOVEMENT_ACTION_SET_FIXED_PRIORITY
+ gMovementActionFuncs_ClearFixedPriority, // MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY
+ gMovementActionFuncs_InitAffineAnim, // MOVEMENT_ACTION_INIT_AFFINE_ANIM
+ gMovementActionFuncs_ClearAffineAnim, // MOVEMENT_ACTION_CLEAR_AFFINE_ANIM
+ gMovementActionFuncs_Unknown1, // MOVEMENT_ACTION_UNKNOWN1
+ gMovementActionFuncs_Unknown2, // MOVEMENT_ACTION_UNKNOWN2
+ gMovementActionFuncs_WalkDownStartAffine, // MOVEMENT_ACTION_WALK_DOWN_START_AFFINE
+ gMovementActionFuncs_WalkDownAffine, // MOVEMENT_ACTION_WALK_DOWN_AFFINE
+ gMovementActionFuncs_AcroWheelieFaceDown, // MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN
+ gMovementActionFuncs_AcroWheelieFaceUp, // MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP
+ gMovementActionFuncs_AcroWheelieFaceLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT
+ gMovementActionFuncs_AcroWheelieFaceRight, // MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT
+ gMovementActionFuncs_AcroPopWheelieDown, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN
+ gMovementActionFuncs_AcroPopWheelieUp, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP
+ gMovementActionFuncs_AcroPopWheelieLeft, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT
+ gMovementActionFuncs_AcroPopWheelieRight, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT
+ gMovementActionFuncs_AcroEndWheelieFaceDown, // MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN
+ gMovementActionFuncs_AcroEndWheelieFaceUp, // MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP
+ gMovementActionFuncs_AcroEndWheelieFaceLeft, // MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT
+ gMovementActionFuncs_AcroEndWheelieFaceRight, // MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT
+ gMovementActionFuncs_AcroWheelieHopFaceDown, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN
+ gMovementActionFuncs_AcroWheelieHopFaceUp, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP
+ gMovementActionFuncs_AcroWheelieHopFaceLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT
+ gMovementActionFuncs_AcroWheelieHopFaceRight, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT
+ gMovementActionFuncs_AcroWheelieHopDown, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN
+ gMovementActionFuncs_AcroWheelieHopUp, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP
+ gMovementActionFuncs_AcroWheelieHopLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT
+ gMovementActionFuncs_AcroWheelieHopRight, // MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT
+ gMovementActionFuncs_AcroWheelieJumpDown, // MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN
+ gMovementActionFuncs_AcroWheelieJumpUp, // MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP
+ gMovementActionFuncs_AcroWheelieJumpLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT
+ gMovementActionFuncs_AcroWheelieJumpRight, // MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT
+ gMovementActionFuncs_AcroWheelieInPlaceDown, // MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN
+ gMovementActionFuncs_AcroWheelieInPlaceUp, // MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP
+ gMovementActionFuncs_AcroWheelieInPlaceLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT
+ gMovementActionFuncs_AcroWheelieInPlaceRight, // MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT
+ gMovementActionFuncs_AcroPopWheelieMoveDown, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN
+ gMovementActionFuncs_AcroPopWheelieMoveUp, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP
+ gMovementActionFuncs_AcroPopWheelieMoveLeft, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT
+ gMovementActionFuncs_AcroPopWheelieMoveRight, // MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT
+ gMovementActionFuncs_AcroWheelieMoveDown, // MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN
+ gMovementActionFuncs_AcroWheelieMoveUp, // MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP
+ gMovementActionFuncs_AcroWheelieMoveLeft, // MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT
+ gMovementActionFuncs_AcroWheelieMoveRight, // MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT
+ gMovementActionFuncs_AcroEndWheelieMoveDown, // MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN
+ gMovementActionFuncs_AcroEndWheelieMoveUp, // MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP
+ gMovementActionFuncs_AcroEndWheelieMoveLeft, // MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT
+ gMovementActionFuncs_AcroEndWheelieMoveRight, // MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT
+ gMovementActionFuncs_WalkNormalDiagonalUpLeft, // MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_LEFT
+ gMovementActionFuncs_WalkNormalDiagonalUpRight, // MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_UP_RIGHT
+ gMovementActionFuncs_WalkNormalDiagonalDownLeft, // MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_LEFT
+ gMovementActionFuncs_WalkNormalDiagonalDownRight, // MOVEMENT_ACTION_WALK_NORMAL_DIAGONAL_DOWN_RIGHT
+ gMovementActionFuncs_WalkSlowDiagonalUpLeft, // MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_LEFT
+ gMovementActionFuncs_WalkSlowDiagonalUpRight, // MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT
+ gMovementActionFuncs_WalkSlowDiagonalDownLeft, // MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT
+ gMovementActionFuncs_WalkSlowDiagonalDownRight, // MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT
+ gMovementActionFuncs_StoreAndLockAnim, // MOVEMENT_ACTION_STORE_AND_LOCK_ANIM
+ gMovementActionFuncs_FreeAndUnlockAnim, // MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM
+ gMovementActionFuncs_WalkLeftAffine, // MOVEMENT_ACTION_WALK_LEFT_AFFINE
+ gMovementActionFuncs_WalkRightAffine, // MOVEMENT_ACTION_WALK_RIGHT_AFFINE
+ gMovementActionFuncs_Levitate, // MOVEMENT_ACTION_LEVITATE
+ gMovementActionFuncs_StopLevitate, // MOVEMENT_ACTION_STOP_LEVITATE
+ gMovementActionFuncs_DestroyExtraTaskIfAtTop, // MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP
+ gMovementActionFuncs_Figure8, // MOVEMENT_ACTION_FIGURE_8
+ gMovementActionFuncs_FlyUp, // MOVEMENT_ACTION_FLY_UP
+ gMovementActionFuncs_FlyDown, // MOVEMENT_ACTION_FLY_DOWN
+};
+
+u8 (*const gMovementActionFuncs_FaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceDown_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_FaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceUp_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_FaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceLeft_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_FaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceRight_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gUnknown_0850DEE8[])(u8) = {
+ GetMoveDirectionAnimNum,
+ GetMoveDirectionFastAnimNum,
+ GetMoveDirectionFastAnimNum,
+ GetMoveDirectionFasterAnimNum,
+ GetMoveDirectionFastestAnimNum,
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowDiagonalUpLeft_Step0,
+ MovementAction_WalkSlowDiagonalUpLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowDiagonalUpRight_Step0,
+ MovementAction_WalkSlowDiagonalUpRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowDiagonalDownLeft_Step0,
+ MovementAction_WalkSlowDiagonalDownLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowDiagonalDownRight_Step0,
+ MovementAction_WalkSlowDiagonalDownRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowDown_Step0,
+ MovementAction_WalkSlowDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowUp_Step0,
+ MovementAction_WalkSlowUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowLeft_Step0,
+ MovementAction_WalkSlowLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkSlowRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkSlowRight_Step0,
+ MovementAction_WalkSlowRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalDiagonalUpLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalDiagonalUpLeft_Step0,
+ MovementAction_WalkNormalDiagonalUpLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalDiagonalUpRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalDiagonalUpRight_Step0,
+ MovementAction_WalkNormalDiagonalUpRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalDiagonalDownLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalDiagonalDownLeft_Step0,
+ MovementAction_WalkNormalDiagonalDownLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalDiagonalDownRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalDiagonalDownRight_Step0,
+ MovementAction_WalkNormalDiagonalDownRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalDown_Step0,
+ MovementAction_WalkNormalDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalUp_Step0,
+ MovementAction_WalkNormalUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalLeft_Step0,
+ MovementAction_WalkNormalLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkNormalRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkNormalRight_Step0,
+ MovementAction_WalkNormalRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+const s16 gUnknown_0850DFBC[] = {0, 1, 1};
+const s16 gUnknown_0850DFC2[] = {0, 0, 1};
+
+u8 (*const gMovementActionFuncs_Jump2Down[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Jump2Down_Step0,
+ MovementAction_Jump2Down_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_Jump2Up[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Jump2Up_Step0,
+ MovementAction_Jump2Up_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_Jump2Left[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Jump2Left_Step0,
+ MovementAction_Jump2Left_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_Jump2Right[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Jump2Right_Step0,
+ MovementAction_Jump2Right_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_Delay1[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay1_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_Delay2[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay2_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_Delay4[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay4_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_Delay8[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay8_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_Delay16[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Delay16_Step0,
+ MovementAction_Delay_Step1,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_WalkFastDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastDown_Step0,
+ MovementAction_WalkFastDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkFastUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastUp_Step0,
+ MovementAction_WalkFastUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkFastLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastLeft_Step0,
+ MovementAction_WalkFastLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkFastRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastRight_Step0,
+ MovementAction_WalkFastRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceSlowDown_Step0,
+ MovementAction_WalkInPlaceSlow_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceSlowUp_Step0,
+ MovementAction_WalkInPlaceSlow_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceSlowLeft_Step0,
+ MovementAction_WalkInPlaceSlow_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceSlowRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceSlowRight_Step0,
+ MovementAction_WalkInPlaceSlow_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceNormalDown_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceNormalUp_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceNormalLeft_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceNormalRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceNormalRight_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastDown_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastUp_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastLeft_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastRight_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastestDown_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastestUp_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastestLeft_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkInPlaceFastestRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkInPlaceFastestRight_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_RideWaterCurrentDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RideWaterCurrentDown_Step0,
+ MovementAction_RideWaterCurrentDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_RideWaterCurrentUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RideWaterCurrentUp_Step0,
+ MovementAction_RideWaterCurrentUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_RideWaterCurrentLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RideWaterCurrentLeft_Step0,
+ MovementAction_RideWaterCurrentLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_RideWaterCurrentRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RideWaterCurrentRight_Step0,
+ MovementAction_RideWaterCurrentRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkFastestDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastestDown_Step0,
+ MovementAction_WalkFastestDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkFastestUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastestUp_Step0,
+ MovementAction_WalkFastestUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkFastestLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastestLeft_Step0,
+ MovementAction_WalkFastestLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkFastestRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkFastestRight_Step0,
+ MovementAction_WalkFastestRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_SlideDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SlideDown_Step0,
+ MovementAction_SlideDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_SlideUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SlideUp_Step0,
+ MovementAction_SlideUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_SlideLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SlideLeft_Step0,
+ MovementAction_SlideLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_SlideRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SlideRight_Step0,
+ MovementAction_SlideRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_PlayerRunDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_PlayerRunDown_Step0,
+ MovementAction_PlayerRunDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_PlayerRunUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_PlayerRunUp_Step0,
+ MovementAction_PlayerRunUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_PlayerRunLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_PlayerRunLeft_Step0,
+ MovementAction_PlayerRunLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_PlayerRunRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_PlayerRunRight_Step0,
+ MovementAction_PlayerRunRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_StartAnimInDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_StartAnimInDirection_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpSpecialDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpSpecialDown_Step0,
+ MovementAction_JumpSpecialDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpSpecialUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpSpecialUp_Step0,
+ MovementAction_JumpSpecialUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpSpecialLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpSpecialLeft_Step0,
+ MovementAction_JumpSpecialLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpSpecialRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpSpecialRight_Step0,
+ MovementAction_JumpSpecialRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_FacePlayer[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FacePlayer_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_FaceAwayPlayer[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceAwayPlayer_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_LockFacingDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_LockFacingDirection_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_UnlockFacingDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnlockFacingDirection_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpDown_Step0,
+ MovementAction_JumpDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpUp_Step0,
+ MovementAction_JumpUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpLeft_Step0,
+ MovementAction_JumpLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpRight_Step0,
+ MovementAction_JumpRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceDown_Step0,
+ MovementAction_JumpInPlaceDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceUp_Step0,
+ MovementAction_JumpInPlaceUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceLeft_Step0,
+ MovementAction_JumpInPlaceLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceRight_Step0,
+ MovementAction_JumpInPlaceRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceDownUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceDownUp_Step0,
+ MovementAction_JumpInPlaceDownUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceUpDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceUpDown_Step0,
+ MovementAction_JumpInPlaceUpDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceLeftRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceLeftRight_Step0,
+ MovementAction_JumpInPlaceLeftRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_JumpInPlaceRightLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_JumpInPlaceRightLeft_Step0,
+ MovementAction_JumpInPlaceRightLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_FaceOriginalDirection[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FaceOriginalDirection_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_NurseJoyBowDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_NurseJoyBowDown_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_EnableJumpLandingGroundEffect[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_EnableJumpLandingGroundEffect_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_DisableJumpLandingGroundEffect[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_DisableJumpLandingGroundEffect_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_DisableAnimation[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_DisableAnimation_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_RestoreAnimation[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RestoreAnimation_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_SetInvisible[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SetInvisible_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_SetVisible[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SetVisible_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_EmoteExclamationMark[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_EmoteExclamationMark_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_EmoteQuestionMark[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_EmoteQuestionMark_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_EmoteHeart[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_EmoteHeart_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_RevealTrainer[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RevealTrainer_Step0,
+ MovementAction_RevealTrainer_Step1,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_RockSmashBreak[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_RockSmashBreak_Step0,
+ MovementAction_RockSmashBreak_Step1,
+ MovementAction_RockSmashBreak_Step2,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_CutTree[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_CutTree_Step0,
+ MovementAction_CutTree_Step1,
+ MovementAction_CutTree_Step2,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_SetFixedPriority[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_SetFixedPriority_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_ClearFixedPriority[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_ClearFixedPriority_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_InitAffineAnim[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_InitAffineAnim_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_ClearAffineAnim[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_ClearAffineAnim_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_Unknown1[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Unknown1_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_Unknown2[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Unknown2_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_WalkDownStartAffine[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkDownStartAffine_Step0,
+ MovementAction_WalkDownStartAffine_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkDownAffine[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkDownAffine_Step0,
+ MovementAction_WalkDownAffine_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkLeftAffine[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkLeftAffine_Step0,
+ MovementAction_WalkLeftAffine_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_WalkRightAffine[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_WalkRightAffine_Step0,
+ MovementAction_WalkRightAffine_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieFaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieFaceDown_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieFaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieFaceUp_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieFaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieFaceLeft_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieFaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieFaceRight_Step0,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieDown_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieUp_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieLeft_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieRight_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieFaceDown_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieFaceUp_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieFaceLeft_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieFaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieFaceRight_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroUnusedAcroActionDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnusedAcroActionDown_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroUnusedAcroActionUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnusedAcroActionUp_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroUnusedAcroActionLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnusedAcroActionLeft_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroUnusedAcroActionRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_UnusedAcroActionRight_Step0,
+ MovementAction_WaitSpriteAnim,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_Figure8[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Figure8_Step0,
+ MovementAction_Figure8_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopFaceDown_Step0,
+ MovementAction_AcroWheelieHopFaceDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopFaceUp_Step0,
+ MovementAction_AcroWheelieHopFaceUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopFaceLeft_Step0,
+ MovementAction_AcroWheelieHopFaceLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopFaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopFaceRight_Step0,
+ MovementAction_AcroWheelieHopFaceRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopDown_Step0,
+ MovementAction_AcroWheelieHopDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopUp_Step0,
+ MovementAction_AcroWheelieHopUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopLeft_Step0,
+ MovementAction_AcroWheelieHopLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieHopRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieHopRight_Step0,
+ MovementAction_AcroWheelieHopRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieJumpDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieJumpDown_Step0,
+ MovementAction_AcroWheelieJumpDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieJumpUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieJumpUp_Step0,
+ MovementAction_AcroWheelieJumpUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieJumpLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieJumpLeft_Step0,
+ MovementAction_AcroWheelieJumpLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieJumpRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieJumpRight_Step0,
+ MovementAction_AcroWheelieJumpRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieInPlaceDown_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieInPlaceUp_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieInPlaceLeft_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieInPlaceRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieInPlaceRight_Step0,
+ MovementAction_WalkInPlace_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieMoveDown_Step0,
+ MovementAction_AcroPopWheelieMoveDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieMoveUp_Step0,
+ MovementAction_AcroPopWheelieMoveUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieMoveLeft_Step0,
+ MovementAction_AcroPopWheelieMoveLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroPopWheelieMoveRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroPopWheelieMoveRight_Step0,
+ MovementAction_AcroPopWheelieMoveRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieMoveDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieMoveDown_Step0,
+ MovementAction_AcroWheelieMoveDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieMoveUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieMoveUp_Step0,
+ MovementAction_AcroWheelieMoveUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieMoveLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieMoveLeft_Step0,
+ MovementAction_AcroWheelieMoveLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroWheelieMoveRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroWheelieMoveRight_Step0,
+ MovementAction_AcroWheelieMoveRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieMoveDown_Step0,
+ MovementAction_AcroEndWheelieMoveDown_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieMoveUp_Step0,
+ MovementAction_AcroEndWheelieMoveUp_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveLeft[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieMoveLeft_Step0,
+ MovementAction_AcroEndWheelieMoveLeft_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_AcroEndWheelieMoveRight[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_AcroEndWheelieMoveRight_Step0,
+ MovementAction_AcroEndWheelieMoveRight_Step1,
+ MovementAction_PauseSpriteAnim,
+};
+
+u8 (*const gMovementActionFuncs_Levitate[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_Levitate_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_StopLevitate[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_StopLevitate_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_DestroyExtraTaskIfAtTop[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_DestroyExtraTaskIfAtTop_Step0,
+ MovementAction_Finish,
+};
+
+#endif //GUARD_MOVEMENT_ACTION_FUNC_TABLES_H
diff --git a/src/data/field_event_obj/movement_type_func_tables.h b/src/data/field_event_obj/movement_type_func_tables.h
new file mode 100755
index 000000000..165e96220
--- /dev/null
+++ b/src/data/field_event_obj/movement_type_func_tables.h
@@ -0,0 +1,443 @@
+#ifndef GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
+#define GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
+
+u8 (*const gMovementTypeFuncs_WanderAround[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WanderAround_Step0,
+ MovementType_WanderAround_Step1,
+ MovementType_WanderAround_Step2,
+ MovementType_WanderAround_Step3,
+ MovementType_WanderAround_Step4,
+ MovementType_WanderAround_Step5,
+ 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 EventObject *, struct Sprite *) = {
+ MovementType_LookAround_Step0,
+ MovementType_LookAround_Step1,
+ MovementType_LookAround_Step2,
+ MovementType_LookAround_Step3,
+ MovementType_LookAround_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_WanderUpAndDown[])(struct EventObject *, 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 EventObject *, 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 EventObject *, struct Sprite *) = {
+ MovementType_FaceDirection_Step0,
+ MovementType_FaceDirection_Step1,
+ MovementType_FaceDirection_Step2,
+};
+
+u8 (*const gMovementTypeFuncs_BerryTreeGrowth[])(struct EventObject *, struct Sprite *) = {
+ MovementType_BerryTreeGrowth_Step0,
+ MovementType_BerryTreeGrowth_Step1,
+ MovementType_BerryTreeGrowth_Step2,
+ MovementType_BerryTreeGrowth_Step3,
+ MovementType_BerryTreeGrowth_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_FaceDownAndUp[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceDownAndUp_Step0,
+ MovementType_FaceDownAndUp_Step1,
+ MovementType_FaceDownAndUp_Step2,
+ MovementType_FaceDownAndUp_Step3,
+ MovementType_FaceDownAndUp_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_FaceLeftAndRight[])(struct EventObject *, struct Sprite *) = {
+ MovementType_FaceLeftAndRight_Step0,
+ MovementType_FaceLeftAndRight_Step1,
+ MovementType_FaceLeftAndRight_Step2,
+ MovementType_FaceLeftAndRight_Step3,
+ MovementType_FaceLeftAndRight_Step4,
+};
+
+u8 (*const gMovementTypeFuncs_FaceUpAndLeft[])(struct EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, struct Sprite *) = {
+ MovementType_WalkBackAndForth_Step0,
+ MovementType_WalkBackAndForth_Step1,
+ MovementType_WalkBackAndForth_Step2,
+ MovementType_WalkBackAndForth_Step3,
+};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceUpRightLeftDown[])(struct EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, struct Sprite *) = {
+ MovementType_WalkSequence_Step0,
+ MovementType_WalkSequenceDownUpLeftRight_Step1,
+ MovementType_WalkSequence_Step2,
+};
+
+u8 (*const gMovementTypeFuncs_WalkSequenceRightDownUpLeft[])(struct EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, 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 EventObject *, struct Sprite *) = {
+ MovementType_CopyPlayer_Step0,
+ MovementType_CopyPlayer_Step1,
+ MovementType_CopyPlayer_Step2,
+};
+
+bool8 (*const gCopyPlayerMovementFuncs[])(struct EventObject *, 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 EventObject *, struct Sprite *) = {
+ MovementType_CopyPlayer_Step0,
+ MovementType_CopyPlayerInGrass_Step1,
+ MovementType_CopyPlayer_Step2,
+};
+
+u8 (*const gMovementTypeFuncs_Hidden[])(struct EventObject *, struct Sprite *) = {
+ MovementType_Hidden_Step0,
+};
+
+u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkInPlace_Step0,
+ MovementType_MoveInPlace_Step1,
+};
+
+u8 (*const gMovementTypeFuncs_WalkSlowlyInPlace[])(struct EventObject *, struct Sprite *) = {
+ MovementType_WalkSlowlyInPlace_Step0,
+ MovementType_MoveInPlace_Step1,
+};
+
+u8 (*const gMovementTypeFuncs_JogInPlace[])(struct EventObject *, struct Sprite *) = {
+ MovementType_JogInPlace_Step0,
+ MovementType_MoveInPlace_Step1,
+};
+
+u8 (*const gMovementTypeFuncs_RunInPlace[])(struct EventObject *, struct Sprite *) = {
+ MovementType_RunInPlace_Step0,
+ MovementType_MoveInPlace_Step1,
+};
+
+u8 (*const gMovementTypeFuncs_Invisible[])(struct EventObject *, struct Sprite *) = {
+ MovementType_Invisible_Step0,
+ MovementType_Invisible_Step1,
+ MovementType_Invisible_Step2,
+};
+
+#endif //GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
diff --git a/src/decoration.c b/src/decoration.c
index 08287a3cc..ad2cdfa30 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -17,7 +17,7 @@
#include "field_player_avatar.h"
#include "field_camera.h"
#include "field_screen.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "list_menu.h"
#include "menu_helpers.h"
#include "menu.h"
@@ -32,7 +32,7 @@
#include "tilesets.h"
#include "item_icon.h"
#include "trader.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "decoration_inventory.h"
#include "decoration.h"
#include "graphics.h"
@@ -1202,15 +1202,15 @@ void sub_8127E18(void)
if (FlagGet(0xAE + i) == TRUE)
{
FlagClear(0xAE + i);
- for (j = 0; j < gMapHeader.events->mapObjectCount; j ++)
+ for (j = 0; j < gMapHeader.events->eventObjectCount; j ++)
{
- if (gMapHeader.events->mapObjects[j].flagId == 0xAE + i)
+ if (gMapHeader.events->eventObjects[j].flagId == 0xAE + i)
{
break;
}
}
- VarSet(0x3F20 + gMapHeader.events->mapObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
- gSpecialVar_0x8005 = gMapHeader.events->mapObjects[j].localId;
+ VarSet(0x3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
+ gSpecialVar_0x8005 = gMapHeader.events->eventObjects[j].localId;
gSpecialVar_0x8006 = sCurDecorMapX;
gSpecialVar_0x8007 = sCurDecorMapY;
show_sprite(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
@@ -1321,11 +1321,11 @@ void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphic
}
if (gSaveBlock2Ptr->playerGender == MALE)
{
- sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0);
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0);
}
else
{
- sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0);
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0);
}
gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
@@ -1466,7 +1466,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
return FALSE;
}
- behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0);
+ behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
if (behaviorAt != 0 && behaviorAt != 16)
{
return FALSE;
@@ -1491,7 +1491,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
return FALSE;
}
- if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16)
+ if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
{
return FALSE;
}
@@ -1511,7 +1511,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
return FALSE;
}
- behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0);
+ behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
if (behaviorAt != 0 && behaviorAt != 16)
{
return FALSE;
@@ -1556,7 +1556,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
return FALSE;
}
}
- if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16)
+ if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
{
return FALSE;
}
@@ -1990,7 +1990,7 @@ u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuf
data->decoration = &gDecorations[decor];
if (data->decoration->permission == DECORPERM_SOLID_MAT)
{
- return AddPseudoFieldObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
+ return AddPseudoEventObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
}
FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG);
sub_81291E8(data);
@@ -2040,7 +2040,7 @@ const u8 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
return gUnknown_085A6BE8[decor][mode];
}
-u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decor)
+u8 AddDecorationIconObjectFromEventObject(u16 tilesTag, u16 paletteTag, u8 decor)
{
u8 spriteId;
struct SpriteSheet sheet;
@@ -2071,7 +2071,7 @@ u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decor
}
else
{
- spriteId = AddPseudoFieldObject(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
+ spriteId = AddPseudoEventObject(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
}
return spriteId;
}
@@ -2092,7 +2092,7 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
}
else if (gUnknown_085A6BE8[decor][0] == NULL)
{
- spriteId = AddDecorationIconObjectFromFieldObject(tilesTag, paletteTag, decor);
+ spriteId = AddDecorationIconObjectFromEventObject(tilesTag, paletteTag, decor);
if (spriteId == MAX_SPRITES)
{
return MAX_SPRITES;
@@ -2141,11 +2141,11 @@ void sub_8129708(void)
{
gSpecialVar_0x8005 = sDecorRearrangementDataBuffer[gSpecialVar_0x8004].flagId;
sub_81296EC(sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx);
- for (i = 0; i < gMapHeader.events->mapObjectCount; i ++)
+ for (i = 0; i < gMapHeader.events->eventObjectCount; i ++)
{
- if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8005)
+ if (gMapHeader.events->eventObjects[i].flagId == gSpecialVar_0x8005)
{
- gSpecialVar_0x8006 = gMapHeader.events->mapObjects[i].localId;
+ gSpecialVar_0x8006 = gMapHeader.events->eventObjects[i].localId;
break;
}
}
@@ -2156,11 +2156,11 @@ void sub_81297AC(void)
{
u8 i;
- for (i = 0; i < gMapHeader.events->mapObjectCount; i ++)
+ for (i = 0; i < gMapHeader.events->eventObjectCount; i ++)
{
- if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8004)
+ if (gMapHeader.events->eventObjects[i].flagId == gSpecialVar_0x8004)
{
- gSpecialVar_0x8005 = gMapHeader.events->mapObjects[i].localId;
+ gSpecialVar_0x8005 = gMapHeader.events->eventObjects[i].localId;
break;
}
}
@@ -2247,17 +2247,17 @@ bool8 sub_81299AC(u8 taskId)
void SetUpPuttingAwayDecorationPlayerAvatar(void)
{
- player_get_direction_lower_nybble();
+ GetPlayerFacingDirection();
sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.spriteId].data[0];
sub_812A39C();
gUnknown_03005DD0.spriteId = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0);
if (gSaveBlock2Ptr->playerGender == MALE)
{
- sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0);
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0);
}
else
{
- sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0);
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0);
}
gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
@@ -2451,9 +2451,9 @@ void sub_8129F20(void)
yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] & 0x0F;
for (i = 0; i < 0x40; i ++)
{
- if (gSaveBlock1Ptr->mapObjectTemplates[i].x == xOff && gSaveBlock1Ptr->mapObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->mapObjectTemplates[i].flagId))
+ if (gSaveBlock1Ptr->eventObjectTemplates[i].x == xOff && gSaveBlock1Ptr->eventObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->eventObjectTemplates[i].flagId))
{
- sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].flagId = gSaveBlock1Ptr->mapObjectTemplates[i].flagId;
+ sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].flagId = gSaveBlock1Ptr->eventObjectTemplates[i].flagId;
break;
}
}
diff --git a/src/event_data.c b/src/event_data.c
index 9f1432f17..efd439a3c 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -190,7 +190,7 @@ bool8 VarSet(u16 id, u16 value)
return TRUE;
}
-u8 VarGetFieldObjectGraphicsId(u8 id)
+u8 VarGetEventObjectGraphicsId(u8 id)
{
return VarGet(0x4010 + id);
}
diff --git a/src/map_obj_lock.c b/src/event_obj_lock.c
index 688d0594d..efa498c0f 100644
--- a/src/map_obj_lock.c
+++ b/src/event_obj_lock.c
@@ -1,9 +1,8 @@
#include "global.h"
#include "event_data.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "script_movement.h"
#include "task.h"
#include "trainer_see.h"
@@ -39,9 +38,9 @@ bool8 sub_80983C4(void)
}
-void ScriptFreezeMapObjects(void)
+void ScriptFreezeEventObjects(void)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CreateTask(sub_80983A4, 80);
}
@@ -54,9 +53,9 @@ static void sub_8098400(u8 taskId)
sub_808B864();
task->data[0] = 1;
}
- if (!task->data[1] && !gMapObjects[gSelectedMapObject].mapobj_bit_1)
+ if (!task->data[1] && !gEventObjects[gSelectedEventObject].singleMovementActive)
{
- FreezeMapObject(&gMapObjects[gSelectedMapObject]);
+ FreezeEventObject(&gEventObjects[gSelectedEventObject]);
task->data[1] = 1;
}
if (task->data[0] && task->data[1])
@@ -76,61 +75,61 @@ bool8 sub_809847C(void)
}
}
-void LockSelectedMapObject(void)
+void LockSelectedEventObject(void)
{
u8 taskId;
- FreezeMapObjectsExceptOne(gSelectedMapObject);
+ FreezeEventObjectsExceptOne(gSelectedEventObject);
taskId = CreateTask(sub_8098400, 80);
- if (!gMapObjects[gSelectedMapObject].mapobj_bit_1)
+ if (!gEventObjects[gSelectedEventObject].singleMovementActive)
{
- FreezeMapObject(&gMapObjects[gSelectedMapObject]);
+ FreezeEventObject(&gEventObjects[gSelectedEventObject]);
gTasks[taskId].data[1] = 1;
}
}
void sub_80984F4(void)
{
- u8 objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ u8 objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
sub_80D338C();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
}
void sub_8098524(void)
{
u8 objectId;
- if (gMapObjects[gSelectedMapObject].active)
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]);
- objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ if (gEventObjects[gSelectedEventObject].active)
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
+ objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
sub_80D338C();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
}
void sub_8098574(void)
{
- FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], gSpecialVar_Facing);
+ EventObjectFaceOppositeDirection(&gEventObjects[gSelectedEventObject], gSpecialVar_Facing);
}
void sub_809859C(void)
{
- FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[gSelectedMapObject]);
+ EventObjectClearHeldMovementIfActive(&gEventObjects[gSelectedEventObject]);
}
static void sub_80985BC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- u8 mapObjectId = task->data[2];
+ u8 eventObjectId = task->data[2];
if (!task->data[0] && walkrun_is_standing_still() == TRUE)
{
sub_808B864();
task->data[0] = 1;
}
- if (!task->data[1] && !gMapObjects[mapObjectId].mapobj_bit_1)
+ if (!task->data[1] && !gEventObjects[eventObjectId].singleMovementActive)
{
- FreezeMapObject(&gMapObjects[mapObjectId]);
+ FreezeEventObject(&gEventObjects[eventObjectId]);
task->data[1] = 1;
}
if (task->data[0] && task->data[1])
@@ -140,34 +139,34 @@ static void sub_80985BC(u8 taskId)
void sub_8098630(void)
{
u8 trainerObjectId1, trainerObjectId2, taskId;
- trainerObjectId1 = GetChosenApproachingTrainerMapObjectId(0);
+ trainerObjectId1 = GetChosenApproachingTrainerEventObjectId(0);
if(gNoOfApproachingTrainers == 2)
{
- trainerObjectId2 = GetChosenApproachingTrainerMapObjectId(1);
+ trainerObjectId2 = GetChosenApproachingTrainerEventObjectId(1);
sub_8098074(trainerObjectId1, trainerObjectId2);
taskId = CreateTask(sub_80985BC, 80);
gTasks[taskId].data[2] = trainerObjectId1;
- if(!gMapObjects[trainerObjectId1].mapobj_bit_1)
+ if(!gEventObjects[trainerObjectId1].singleMovementActive)
{
- FreezeMapObject(&gMapObjects[trainerObjectId1]);
+ FreezeEventObject(&gEventObjects[trainerObjectId1]);
gTasks[taskId].data[1] = 1;
}
taskId = CreateTask(sub_80985BC, 81);
gTasks[taskId].data[2] = trainerObjectId2;
- if(!gMapObjects[trainerObjectId2].mapobj_bit_1)
+ if(!gEventObjects[trainerObjectId2].singleMovementActive)
{
- FreezeMapObject(&gMapObjects[trainerObjectId2]);
+ FreezeEventObject(&gEventObjects[trainerObjectId2]);
gTasks[taskId].data[1] = 1;
}
}
else
{
- FreezeMapObjectsExceptOne(trainerObjectId1);
+ FreezeEventObjectsExceptOne(trainerObjectId1);
taskId = CreateTask(sub_80985BC, 80);
gTasks[taskId].data[2] = trainerObjectId1;
- if(!gMapObjects[trainerObjectId1].mapobj_bit_1)
+ if(!gEventObjects[trainerObjectId1].singleMovementActive)
{
- FreezeMapObject(&gMapObjects[trainerObjectId1]);
+ FreezeEventObject(&gEventObjects[trainerObjectId1]);
gTasks[taskId].data[1] = 1;
}
}
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
new file mode 100644
index 000000000..35b04ea1e
--- /dev/null
+++ b/src/event_object_movement.c
@@ -0,0 +1,9159 @@
+#include "global.h"
+#include "berry.h"
+#include "decoration.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_scripts.h"
+#include "field_camera.h"
+#include "field_effect.h"
+#include "field_effect_helpers.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "malloc.h"
+#include "mauville_old_man.h"
+#include "metatile_behavior.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokenav.h"
+#include "random.h"
+#include "rom_818CFC8.h"
+#include "rom_81BE66C.h"
+#include "sprite.h"
+#include "trainer_see.h"
+#include "util.h"
+#include "constants/event_objects.h"
+
+// this file was known as evobjmv.c in Game Freak's original source
+
+extern u8 gUnknown_020375B4;
+extern u16 gUnknown_020375B6;
+extern struct LockedAnimEventObjects *gLockedAnimEventObjects;
+
+static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16);
+static bool8 EventObjectExecSingleMovementAction(struct EventObject *, struct Sprite *);
+static void SetMovementDelay(struct Sprite *, s16);
+static bool8 WaitForMovementDelay(struct Sprite *);
+static u8 GetCollisionInDirection(struct EventObject *, u8);
+static u32 state_to_direction(u8, u32, u32);
+static void TryEnableEventObjectAnim(struct EventObject *, struct Sprite *);
+static void EventObjectExecHeldMovementAction(struct EventObject *, struct Sprite *);
+static void UpdateEventObjectSpriteAnimPause(struct EventObject *, struct Sprite *);
+static bool8 IsCoordOutsideEventObjectMovementRange(struct EventObject *, s16, s16);
+static bool8 IsMetatileDirectionallyImpassable(struct EventObject *, s16, s16, u8);
+static bool8 DoesObjectCollideWithObjectAt(struct EventObject *, s16, s16);
+static void sub_8096530(struct EventObject *, struct Sprite *);
+static void npc_update_obj_anim_flag(struct EventObject *, struct Sprite *);
+static void EventObjectUpdateMetatileBehaviors(struct EventObject*);
+static void GetGroundEffectFlags_Reflection(struct EventObject*, u32*);
+static void GetGroundEffectFlags_TallGrassOnSpawn(struct EventObject*, u32*);
+static void GetGroundEffectFlags_LongGrassOnSpawn(struct EventObject*, u32*);
+static void GetGroundEffectFlags_SandHeap(struct EventObject*, u32*);
+static void GetGroundEffectFlags_ShallowFlowingWater(struct EventObject*, u32*);
+static void GetGroundEffectFlags_ShortGrass(struct EventObject*, u32*);
+static void GetGroundEffectFlags_HotSprings(struct EventObject*, u32*);
+static void GetGroundEffectFlags_TallGrassOnBeginStep(struct EventObject*, u32*);
+static void GetGroundEffectFlags_LongGrassOnBeginStep(struct EventObject*, u32*);
+static void GetGroundEffectFlags_Tracks(struct EventObject*, u32*);
+static void GetGroundEffectFlags_Puddle(struct EventObject*, u32*);
+static void GetGroundEffectFlags_Ripple(struct EventObject*, u32*);
+static void GetGroundEffectFlags_Seaweed(struct EventObject*, u32*);
+static void GetGroundEffectFlags_JumpLanding(struct EventObject*, u32*);
+static u8 EventObjectCheckForReflectiveSurface(struct EventObject*);
+static u8 GetReflectionTypeByMetatileBehavior(u32);
+static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z);
+static void EventObjectUpdateSubpriority(struct EventObject*, struct Sprite*);
+static void DoTracksGroundEffect_None(struct EventObject*, struct Sprite*, u8);
+static void DoTracksGroundEffect_Footprints(struct EventObject*, struct Sprite*, u8);
+static void DoTracksGroundEffect_BikeTireTracks(struct EventObject*, struct Sprite*, u8);
+static void DoRippleFieldEffect(struct EventObject*, struct Sprite*);
+static void DoGroundEffects_OnSpawn(struct EventObject*, struct Sprite*);
+static void DoGroundEffects_OnBeginStep(struct EventObject*, struct Sprite*);
+static void DoGroundEffects_OnFinishStep(struct EventObject*, struct Sprite*);
+static void sub_8097D68(struct Sprite*);
+static void ApplyLevitateMovement(u8);
+static bool8 MovementType_Disguise_Callback(struct EventObject *, struct Sprite *);
+static bool8 MovementType_Hidden_Callback(struct EventObject *, struct Sprite *);
+static void sub_808D450(void);
+static u8 GetEventObjectIdByLocalId(u8);
+static u8 GetEventObjectIdByLocalIdAndMapInternal(u8, u8, u8);
+static bool8 GetAvailableEventObjectId(u16, u8, u8, u8 *);
+static void SetEventObjectDynamicGraphicsId(struct EventObject *);
+static void RemoveEventObjectInternal(struct EventObject *);
+static u16 GetEventObjectFlagIdByEventObjectId(u8);
+static void UpdateEventObjectVisibility(struct EventObject *, struct Sprite *);
+static void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *, struct SpriteTemplate *, const struct SubspriteTable **);
+static void GetEventObjectMovingCameraOffset(s16 *, s16 *);
+static struct EventObjectTemplate *GetEventObjectTemplateByLocalIdAndMap(u8, u8, u8);
+static void sub_808E894(u16);
+static void RemoveEventObjectIfOutsideView(struct EventObject *);
+static void sub_808E1B8(u8, s16, s16);
+static void SetPlayerAvatarEventObjectIdAndObjectId(u8, u8);
+static void sub_808E38C(struct EventObject *);
+static u8 sub_808E8F4(const struct SpritePalette *);
+static u8 FindEventObjectPaletteIndexByTag(u16);
+static void sub_808EAB0(u16, u8);
+static bool8 EventObjectDoesZCoordMatch(struct EventObject *, u8);
+static void ObjectCB_CameraObject(struct Sprite *);
+static void CameraObject_0(struct Sprite *);
+static void CameraObject_1(struct Sprite *);
+static void CameraObject_2(struct Sprite *);
+static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8 localId, struct EventObjectTemplate *templates, u8 count);
+static void ClearEventObjectMovement(struct EventObject *, struct Sprite *);
+static void EventObjectSetSingleMovement(struct EventObject *, struct Sprite *, u8);
+
+const u8 gUnknown_084975C4[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
+
+const struct SpriteTemplate gCameraSpriteTemplate = {0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject};
+
+void (*const gCameraObjectFuncs[])(struct Sprite *) = {
+ CameraObject_0,
+ CameraObject_1,
+ CameraObject_2,
+};
+
+#include "data/field_event_obj/event_object_graphics.h"
+
+// movement type callbacks
+static void (*const sMovementTypeCallbacks[])(struct Sprite *) =
+{
+ MovementType_None, // MOVEMENT_TYPE_NONE
+ MovementType_LookAround, // MOVEMENT_TYPE_LOOK_AROUND
+ MovementType_WanderAround, // MOVEMENT_TYPE_WANDER_AROUND
+ MovementType_WanderUpAndDown, // MOVEMENT_TYPE_WANDER_UP_AND_DOWN
+ MovementType_WanderUpAndDown, // MOVEMENT_TYPE_WANDER_DOWN_AND_UP
+ MovementType_WanderLeftAndRight, // MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT
+ MovementType_WanderLeftAndRight, // MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT
+ MovementType_FaceDirection, // MOVEMENT_TYPE_FACE_UP
+ MovementType_FaceDirection, // MOVEMENT_TYPE_FACE_DOWN
+ MovementType_FaceDirection, // MOVEMENT_TYPE_FACE_LEFT
+ MovementType_FaceDirection, // MOVEMENT_TYPE_FACE_RIGHT
+ MovementType_Player, // MOVEMENT_TYPE_PLAYER
+ MovementType_BerryTreeGrowth, // MOVEMENT_TYPE_BERRY_TREE_GROWTH
+ MovementType_FaceDownAndUp, // MOVEMENT_TYPE_FACE_DOWN_AND_UP
+ MovementType_FaceLeftAndRight, // MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT
+ MovementType_FaceUpAndLeft, // MOVEMENT_TYPE_FACE_UP_AND_LEFT
+ MovementType_FaceUpAndRight, // MOVEMENT_TYPE_FACE_UP_AND_RIGHT
+ MovementType_FaceDownAndLeft, // MOVEMENT_TYPE_FACE_DOWN_AND_LEFT
+ MovementType_FaceDownAndRight, // MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT
+ MovementType_FaceDownUpAndLeft, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT
+ MovementType_FaceDownUpAndRight, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT
+ MovementType_FaceUpRightAndLeft, // MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT
+ MovementType_FaceDownRightAndLeft, // MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT
+ MovementType_RotateCounterclockwise, // MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE
+ MovementType_RotateClockwise, // MOVEMENT_TYPE_ROTATE_CLOCKWISE
+ MovementType_WalkBackAndForth, // MOVEMENT_TYPE_WALK_UP_AND_DOWN
+ MovementType_WalkBackAndForth, // MOVEMENT_TYPE_WALK_DOWN_AND_UP
+ MovementType_WalkBackAndForth, // MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT
+ MovementType_WalkBackAndForth, // MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT
+ MovementType_WalkSequenceUpRightLeftDown, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN
+ MovementType_WalkSequenceRightLeftDownUp, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP
+ MovementType_WalkSequenceDownUpRightLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT
+ MovementType_WalkSequenceLeftDownUpRight, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT
+ MovementType_WalkSequenceUpLeftRightDown, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN
+ MovementType_WalkSequenceLeftRightDownUp, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP
+ MovementType_WalkSequenceDownUpLeftRight, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT
+ MovementType_WalkSequenceRightDownUpLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT
+ MovementType_WalkSequenceLeftUpDownRight, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT
+ MovementType_WalkSequenceUpDownRightLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT
+ MovementType_WalkSequenceRightLeftUpDown, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN
+ MovementType_WalkSequenceDownRightLeftUp, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP
+ MovementType_WalkSequenceRightUpDownLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT
+ MovementType_WalkSequenceUpDownLeftRight, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT
+ MovementType_WalkSequenceLeftRightUpDown, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN
+ MovementType_WalkSequenceDownLeftRightUp, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP
+ MovementType_WalkSequenceUpLeftDownRight, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT
+ MovementType_WalkSequenceDownRightUpLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT
+ MovementType_WalkSequenceLeftDownRightUp, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP
+ MovementType_WalkSequenceRightUpLeftDown, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN
+ MovementType_WalkSequenceUpRightDownLeft, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT
+ MovementType_WalkSequenceDownLeftUpRight, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT
+ MovementType_WalkSequenceLeftUpRightDown, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN
+ MovementType_WalkSequenceRightDownLeftUp, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP
+ MovementType_CopyPlayer, // MOVEMENT_TYPE_COPY_PLAYER
+ MovementType_CopyPlayer, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE
+ MovementType_CopyPlayer, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE
+ MovementType_CopyPlayer, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE
+ MovementType_TreeDisguise, // MOVEMENT_TYPE_TREE_DISGUISE
+ MovementType_MountainDisguise, // MOVEMENT_TYPE_MOUNTAIN_DISGUISE
+ MovementType_CopyPlayerInGrass, // MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS
+ MovementType_CopyPlayerInGrass, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS
+ MovementType_CopyPlayerInGrass, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS
+ MovementType_CopyPlayerInGrass, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS
+ MovementType_Hidden, // MOVEMENT_TYPE_HIDDEN
+ MovementType_WalkInPlace, // MOVEMENT_TYPE_WALK_IN_PLACE_DOWN
+ MovementType_WalkInPlace, // MOVEMENT_TYPE_WALK_IN_PLACE_UP
+ MovementType_WalkInPlace, // MOVEMENT_TYPE_WALK_IN_PLACE_LEFT
+ MovementType_WalkInPlace, // MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT
+ MovementType_JogInPlace, // MOVEMENT_TYPE_JOG_IN_PLACE_DOWN
+ MovementType_JogInPlace, // MOVEMENT_TYPE_JOG_IN_PLACE_UP
+ MovementType_JogInPlace, // MOVEMENT_TYPE_JOG_IN_PLACE_LEFT
+ MovementType_JogInPlace, // MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT
+ MovementType_RunInPlace, // MOVEMENT_TYPE_RUN_IN_PLACE_DOWN
+ MovementType_RunInPlace, // MOVEMENT_TYPE_RUN_IN_PLACE_UP
+ MovementType_RunInPlace, // MOVEMENT_TYPE_RUN_IN_PLACE_LEFT
+ MovementType_RunInPlace, // MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT
+ MovementType_Invisible, // MOVEMENT_TYPE_INVISIBLE
+ MovementType_WalkSlowlyInPlace, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN
+ MovementType_WalkSlowlyInPlace, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP
+ MovementType_WalkSlowlyInPlace, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT
+ MovementType_WalkSlowlyInPlace, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT
+};
+
+const u8 gRangedMovementTypes[] = {
+ 0, // MOVEMENT_TYPE_NONE
+ 0, // MOVEMENT_TYPE_LOOK_AROUND
+ 1, // MOVEMENT_TYPE_WANDER_AROUND
+ 1, // MOVEMENT_TYPE_WANDER_UP_AND_DOWN
+ 1, // MOVEMENT_TYPE_WANDER_DOWN_AND_UP
+ 1, // MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT
+ 1, // MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT
+ 0, // MOVEMENT_TYPE_FACE_UP
+ 0, // MOVEMENT_TYPE_FACE_DOWN
+ 0, // MOVEMENT_TYPE_FACE_LEFT
+ 0, // MOVEMENT_TYPE_FACE_RIGHT
+ 0, // MOVEMENT_TYPE_PLAYER
+ 0, // MOVEMENT_TYPE_BERRY_TREE_GROWTH
+ 0, // MOVEMENT_TYPE_FACE_DOWN_AND_UP
+ 0, // MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_UP_AND_LEFT
+ 0, // MOVEMENT_TYPE_FACE_UP_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_AND_LEFT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT
+ 0, // MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT
+ 0, // MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE
+ 0, // MOVEMENT_TYPE_ROTATE_CLOCKWISE
+ 1, // MOVEMENT_TYPE_WALK_UP_AND_DOWN
+ 1, // MOVEMENT_TYPE_WALK_DOWN_AND_UP
+ 1, // MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN
+ 1, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP
+ 1, // MOVEMENT_TYPE_COPY_PLAYER
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE
+ 0, // MOVEMENT_TYPE_TREE_DISGUISE
+ 0, // MOVEMENT_TYPE_MOUNTAIN_DISGUISE
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS
+ 1, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS
+ 0, // MOVEMENT_TYPE_HIDDEN
+ 0, // MOVEMENT_TYPE_WALK_IN_PLACE_DOWN
+ 0, // MOVEMENT_TYPE_WALK_IN_PLACE_UP
+ 0, // MOVEMENT_TYPE_WALK_IN_PLACE_LEFT
+ 0, // MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT
+ 0, // MOVEMENT_TYPE_JOG_IN_PLACE_DOWN
+ 0, // MOVEMENT_TYPE_JOG_IN_PLACE_UP
+ 0, // MOVEMENT_TYPE_JOG_IN_PLACE_LEFT
+ 0, // MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT
+ 0, // MOVEMENT_TYPE_RUN_IN_PLACE_DOWN
+ 0, // MOVEMENT_TYPE_RUN_IN_PLACE_UP
+ 0, // MOVEMENT_TYPE_RUN_IN_PLACE_LEFT
+ 0, // MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT
+ 0, // MOVEMENT_TYPE_INVISIBLE
+ 0, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN
+ 0, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP
+ 0, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT
+ 0, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT
+};
+
+const u8 gInitialMovementTypeFacingDirections[] = {
+ DIR_SOUTH, // MOVEMENT_TYPE_NONE
+ DIR_SOUTH, // MOVEMENT_TYPE_LOOK_AROUND
+ DIR_SOUTH, // MOVEMENT_TYPE_WANDER_AROUND
+ DIR_NORTH, // MOVEMENT_TYPE_WANDER_UP_AND_DOWN
+ DIR_SOUTH, // MOVEMENT_TYPE_WANDER_DOWN_AND_UP
+ DIR_WEST, // MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT
+ DIR_EAST, // MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT
+ DIR_NORTH, // MOVEMENT_TYPE_FACE_UP
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN
+ DIR_WEST, // MOVEMENT_TYPE_FACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_FACE_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_PLAYER
+ DIR_SOUTH, // MOVEMENT_TYPE_BERRY_TREE_GROWTH
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_AND_UP
+ DIR_WEST, // MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT
+ DIR_NORTH, // MOVEMENT_TYPE_FACE_UP_AND_LEFT
+ DIR_NORTH, // MOVEMENT_TYPE_FACE_UP_AND_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_AND_LEFT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT
+ DIR_NORTH, // MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE
+ DIR_SOUTH, // MOVEMENT_TYPE_ROTATE_CLOCKWISE
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_UP_AND_DOWN
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_DOWN_AND_UP
+ DIR_WEST, // MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP
+ DIR_NORTH, // MOVEMENT_TYPE_COPY_PLAYER
+ DIR_SOUTH, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE
+ DIR_WEST, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE
+ DIR_EAST, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE
+ DIR_SOUTH, // MOVEMENT_TYPE_TREE_DISGUISE
+ DIR_SOUTH, // MOVEMENT_TYPE_MOUNTAIN_DISGUISE
+ DIR_NORTH, // MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS
+ DIR_SOUTH, // MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS
+ DIR_WEST, // MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS
+ DIR_EAST, // MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS
+ DIR_SOUTH, // MOVEMENT_TYPE_HIDDEN
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_IN_PLACE_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_IN_PLACE_UP
+ DIR_WEST, // MOVEMENT_TYPE_WALK_IN_PLACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_JOG_IN_PLACE_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_JOG_IN_PLACE_UP
+ DIR_WEST, // MOVEMENT_TYPE_JOG_IN_PLACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_RUN_IN_PLACE_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_RUN_IN_PLACE_UP
+ DIR_WEST, // MOVEMENT_TYPE_RUN_IN_PLACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT
+ DIR_SOUTH, // MOVEMENT_TYPE_INVISIBLE
+ DIR_SOUTH, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN
+ DIR_NORTH, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP
+ DIR_WEST, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT
+ DIR_EAST, // MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT
+};
+
+#include "data/field_event_obj/event_object_graphics_info_pointers.h"
+#include "data/field_event_obj/field_effect_object_template_pointers.h"
+#include "data/field_event_obj/event_object_pic_tables.h"
+#include "data/field_event_obj/event_object_anims.h"
+#include "data/field_event_obj/base_oam.h"
+#include "data/field_event_obj/event_object_subsprites.h"
+#include "data/field_event_obj/event_object_graphics_info.h"
+
+const struct SpritePalette gUnknown_0850BBC8[] = {
+ {gEventObjectPalette0, 0x1103},
+ {gEventObjectPalette1, 0x1104},
+ {gEventObjectPalette2, 0x1105},
+ {gEventObjectPalette3, 0x1106},
+ {gEventObjectPalette4, 0x1107},
+ {gEventObjectPalette5, 0x1108},
+ {gEventObjectPalette6, 0x1109},
+ {gEventObjectPalette7, 0x110A},
+ {gEventObjectPalette8, 0x1100},
+ {gEventObjectPalette9, 0x1101},
+ {gEventObjectPalette10, 0x1102},
+ {gEventObjectPalette11, 0x1115},
+ {gEventObjectPalette12, 0x110B},
+ {gEventObjectPalette13, 0x110C},
+ {gEventObjectPalette14, 0x110D},
+ {gEventObjectPalette15, 0x110E},
+ {gEventObjectPalette16, 0x110F},
+ {gEventObjectPalette17, 0x1110},
+ {gEventObjectPalette18, 0x1111},
+ {gEventObjectPalette19, 0x1112},
+ {gEventObjectPalette20, 0x1113},
+ {gEventObjectPalette21, 0x1114},
+ {gEventObjectPalette22, 0x1116},
+ {gEventObjectPalette23, 0x1117},
+ {gEventObjectPalette24, 0x1118},
+ {gEventObjectPalette25, 0x1119},
+ {gEventObjectPalette26, 0x111B},
+ {gEventObjectPalette27, 0x111C},
+ {gEventObjectPalette28, 0x111D},
+ {gEventObjectPalette29, 0x111E},
+ {gEventObjectPalette30, 0x111F},
+ {gEventObjectPalette31, 0x1120},
+ {gEventObjectPalette32, 0x1121},
+ {gEventObjectPalette33, 0x1122},
+ {gEventObjectPalette34, 0x1123},
+ {NULL, 0x0000},
+};
+
+const u16 Unknown_0850BCE8[] = {
+ 0x1101,
+ 0x1101,
+ 0x1101,
+ 0x1101,
+};
+
+const u16 Unknown_0850BCF0[] = {
+ 0x1111,
+ 0x1111,
+ 0x1111,
+ 0x1111,
+};
+
+const u16 Unknown_0850BCF8[] = {
+ 0x1115,
+ 0x1115,
+ 0x1115,
+ 0x1115,
+};
+
+const struct PairedPalettes gUnknown_0850BD00[] = {
+ {0x1100, Unknown_0850BCE8},
+ {0x1110, Unknown_0850BCF0},
+ {0x1115, Unknown_0850BCF8},
+ {0x11FF, NULL},
+};
+
+const u16 Unknown_0850BD20[] = {
+ 0x110C,
+ 0x110C,
+ 0x110C,
+ 0x110C,
+};
+
+const u16 Unknown_0850BD28[] = {
+ 0x110D,
+ 0x110D,
+ 0x110D,
+ 0x110D,
+};
+
+const u16 Unknown_0850BD30[] = {
+ 0x110E,
+ 0x110E,
+ 0x110E,
+ 0x110E,
+};
+
+const u16 Unknown_0850BD38[] = {
+ 0x1112,
+ 0x1112,
+ 0x1112,
+ 0x1112,
+};
+
+const u16 Unknown_0850BD40[] = {
+ 0x1113,
+ 0x1113,
+ 0x1113,
+ 0x1113,
+};
+
+const u16 Unknown_0850BD48[] = {
+ 0x1114,
+ 0x1114,
+ 0x1114,
+ 0x1114,
+};
+
+const u16 Unknown_0850BD50[] = {
+ 0x111B,
+ 0x111B,
+ 0x111B,
+ 0x111B,
+};
+
+const u16 Unknown_0850BD58[] = {
+ 0x1117,
+ 0x1117,
+ 0x1117,
+ 0x1117,
+};
+
+const u16 Unknown_0850BD60[] = {
+ 0x1119,
+ 0x1119,
+ 0x1119,
+ 0x1119,
+};
+
+const u16 Unknown_0850BD68[] = {
+ 0x1109,
+ 0x1109,
+ 0x1109,
+ 0x1109,
+};
+
+const u16 Unknown_0850BD70[] = {
+ 0x111D,
+ 0x111D,
+ 0x111D,
+ 0x111D,
+};
+
+const struct PairedPalettes gUnknown_0850BD78[] = {
+ {4352, Unknown_0850BCE8},
+ {4368, Unknown_0850BCF0},
+ {4363, Unknown_0850BD20},
+ {4365, Unknown_0850BD28},
+ {4366, Unknown_0850BD30},
+ {4370, Unknown_0850BD38},
+ {4371, Unknown_0850BD40},
+ {4372, Unknown_0850BD48},
+ {4374, Unknown_0850BD58},
+ {4376, Unknown_0850BD60},
+ {4357, Unknown_0850BD68},
+ {4379, Unknown_0850BD50},
+ {4381, Unknown_0850BD70},
+ {4607, NULL},
+};
+
+const u16 gUnknown_0850BDE8[] = {
+ 0x1100,
+ 0x1101,
+ 0x1103,
+ 0x1104,
+ 0x1105,
+ 0x1106,
+ 0x1107,
+ 0x1108,
+ 0x1109,
+ 0x110A,
+};
+
+const u16 gUnknown_0850BDFC[] = {
+ 0x1100,
+ 0x1101,
+ 0x1103,
+ 0x1104,
+ 0x1105,
+ 0x1106,
+ 0x1107,
+ 0x1108,
+ 0x1109,
+ 0x110A,
+};
+
+const u16 gUnknown_0850BE10[] = {
+ 0x1100,
+ 0x1101,
+ 0x1103,
+ 0x1104,
+ 0x1105,
+ 0x1106,
+ 0x1107,
+ 0x1108,
+ 0x1109,
+ 0x110A,
+};
+
+const u16 gUnknown_0850BE24[] = {
+ 0x1100,
+ 0x1101,
+ 0x1103,
+ 0x1104,
+ 0x1105,
+ 0x1106,
+ 0x1107,
+ 0x1108,
+ 0x1109,
+ 0x110A,
+};
+
+
+const u16 *const gUnknown_0850BE38[] = {
+ gUnknown_0850BDE8,
+ gUnknown_0850BDFC,
+ gUnknown_0850BE10,
+ gUnknown_0850BE24,
+};
+
+#include "data/field_event_obj/berry_tree_graphics_tables.h"
+#include "data/field_event_obj/field_effect_objects.h"
+
+const s16 gMovementDelaysMedium[] = {32, 64, 96, 128};
+const s16 gMovementDelaysLong[] = {32, 64, 128, 192};
+const s16 gMovementDelaysShort[] = {32, 48, 64, 80};
+
+#include "data/field_event_obj/movement_type_func_tables.h"
+
+const u8 gFaceDirectionAnimNums[] = {
+ 0, // DIR_NONE
+ 0, // DIR_SOUTH
+ 1, // DIR_NORTH
+ 2, // DIR_WEST
+ 3, // DIR_EAST
+ 0, // DIR_SOUTHWEST
+ 0, // DIR_SOUTHEAST
+ 1, // DIR_NORTHWEST
+ 1, // DIR_NORTHEAST
+};
+const u8 gMoveDirectionAnimNums[] = {
+ 4, // DIR_NONE
+ 4, // DIR_SOUTH
+ 5, // DIR_NORTH
+ 6, // DIR_WEST
+ 7, // DIR_EAST
+ 4, // DIR_SOUTHWEST
+ 4, // DIR_SOUTHEAST
+ 5, // DIR_NORTHWEST
+ 5, // DIR_NORTHEAST
+};
+const u8 gMoveDirectionFastAnimNums[] = {
+ 8, // DIR_NONE
+ 8, // DIR_SOUTH
+ 9, // DIR_NORTH
+ 10, // DIR_WEST
+ 11, // DIR_EAST
+ 8, // DIR_SOUTHWEST
+ 8, // DIR_SOUTHEAST
+ 9, // DIR_NORTHWEST
+ 9, // DIR_NORTHEAST
+};
+const u8 gMoveDirectionFasterAnimNums[] = {
+ 12, // DIR_NONE
+ 12, // DIR_SOUTH
+ 13, // DIR_NORTH
+ 14, // DIR_WEST
+ 15, // DIR_EAST
+ 12, // DIR_SOUTHWEST
+ 12, // DIR_SOUTHEAST
+ 13, // DIR_NORTHWEST
+ 13, // DIR_NORTHEAST
+};
+const u8 gMoveDirectionFastestAnimNums[] = {
+ 16, // DIR_NONE
+ 16, // DIR_SOUTH
+ 17, // DIR_NORTH
+ 18, // DIR_WEST
+ 19, // DIR_EAST
+ 16, // DIR_SOUTHWEST
+ 16, // DIR_SOUTHEAST
+ 17, // DIR_NORTHWEST
+ 17, // DIR_NORTHEAST
+};
+const u8 gJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
+ 20, // DIR_NONE
+ 20, // DIR_SOUTH
+ 21, // DIR_NORTH
+ 22, // DIR_WEST
+ 23, // DIR_EAST
+ 20, // DIR_SOUTHWEST
+ 20, // DIR_SOUTHEAST
+ 21, // DIR_NORTHWEST
+ 21, // DIR_NORTHEAST
+};
+const u8 gAcroWheelieDirectionAnimNums[] = {
+ 20, // DIR_NONE
+ 20, // DIR_SOUTH
+ 21, // DIR_NORTH
+ 22, // DIR_WEST
+ 23, // DIR_EAST
+ 20, // DIR_SOUTHWEST
+ 20, // DIR_SOUTHEAST
+ 21, // DIR_NORTHWEST
+ 21, // DIR_NORTHEAST
+};
+const u8 gUnrefAnimNums_08375633[] = {
+ 24, // DIR_NONE
+ 24, // DIR_SOUTH
+ 25, // DIR_NORTH
+ 26, // DIR_WEST
+ 27, // DIR_EAST
+ 24, // DIR_SOUTHWEST
+ 24, // DIR_SOUTHEAST
+ 25, // DIR_NORTHWEST
+ 25, // DIR_NORTHEAST
+};
+const u8 gAcroEndWheelieDirectionAnimNums[] = {
+ 28, // DIR_NONE
+ 28, // DIR_SOUTH
+ 29, // DIR_NORTH
+ 30, // DIR_WEST
+ 31, // DIR_EAST
+ 28, // DIR_SOUTHWEST
+ 28, // DIR_SOUTHEAST
+ 29, // DIR_NORTHWEST
+ 29, // DIR_NORTHEAST
+};
+const u8 gAcroUnusedActionDirectionAnimNums[] = {
+ 32, // DIR_NONE
+ 32, // DIR_SOUTH
+ 33, // DIR_NORTH
+ 34, // DIR_WEST
+ 35, // DIR_EAST
+ 32, // DIR_SOUTHWEST
+ 32, // DIR_SOUTHEAST
+ 33, // DIR_NORTHWEST
+ 33, // DIR_NORTHEAST
+};
+const u8 gAcroWheeliePedalDirectionAnimNums[] = {
+ 36, // DIR_NONE
+ 36, // DIR_SOUTH
+ 37, // DIR_NORTH
+ 38, // DIR_WEST
+ 39, // DIR_EAST
+ 36, // DIR_SOUTHWEST
+ 36, // DIR_SOUTHEAST
+ 37, // DIR_NORTHWEST
+ 37, // DIR_NORTHEAST
+};
+const u8 gFishingDirectionAnimNums[] = {
+ 0, // DIR_NONE
+ 0, // DIR_SOUTH
+ 1, // DIR_NORTH
+ 2, // DIR_WEST
+ 3, // DIR_EAST
+ 0, // DIR_SOUTHWEST
+ 0, // DIR_SOUTHEAST
+ 1, // DIR_NORTHWEST
+ 1, // DIR_NORTHEAST
+};
+const u8 gFishingNoCatchDirectionAnimNums[] = {
+ 4, // DIR_NONE
+ 4, // DIR_SOUTH
+ 5, // DIR_NORTH
+ 6, // DIR_WEST
+ 7, // DIR_EAST
+ 4, // DIR_SOUTHWEST
+ 4, // DIR_SOUTHEAST
+ 5, // DIR_NORTHWEST
+ 5, // DIR_NORTHEAST
+};
+const u8 gFishingBiteDirectionAnimNums[] = {
+ 8, // DIR_NONE
+ 8, // DIR_SOUTH
+ 9, // DIR_NORTH
+ 10, // DIR_WEST
+ 11, // DIR_EAST
+ 8, // DIR_SOUTHWEST
+ 8, // DIR_SOUTHEAST
+ 9, // DIR_NORTHWEST
+ 9, // DIR_NORTHEAST
+};
+const u8 gRunningDirectionAnimNums[] = {
+ 20, // DIR_NONE
+ 20, // DIR_SOUTH
+ 21, // DIR_NORTH
+ 22, // DIR_WEST
+ 23, // DIR_EAST
+ 20, // DIR_SOUTHWEST
+ 20, // DIR_SOUTHEAST
+ 21, // DIR_NORTHWEST
+ 21, // DIR_NORTHEAST
+};
+
+const u8 gTrainerFacingDirectionMovementTypes[] = {
+ MOVEMENT_TYPE_FACE_DOWN, // DIR_NONE
+ MOVEMENT_TYPE_FACE_DOWN, // DIR_SOUTH
+ MOVEMENT_TYPE_FACE_UP, // DIR_NORTH
+ MOVEMENT_TYPE_FACE_LEFT, // DIR_WEST
+ MOVEMENT_TYPE_FACE_RIGHT, // DIR_EAST
+ MOVEMENT_TYPE_FACE_DOWN, // DIR_SOUTHWEST
+ MOVEMENT_TYPE_FACE_DOWN, // DIR_SOUTHEAST
+ MOVEMENT_TYPE_FACE_UP, // DIR_NORTHWEST
+ MOVEMENT_TYPE_FACE_UP, // DIR_NORTHEAST
+};
+
+bool8 (*const gOppositeDirectionBlockedMetatileFuncs[])(u8) = {
+ MetatileBehavior_IsSouthBlocked,
+ MetatileBehavior_IsNorthBlocked,
+ MetatileBehavior_IsWestBlocked,
+ MetatileBehavior_IsEastBlocked
+};
+
+bool8 (*const gDirectionBlockedMetatileFuncs[])(u8) = {
+ MetatileBehavior_IsNorthBlocked,
+ MetatileBehavior_IsSouthBlocked,
+ MetatileBehavior_IsEastBlocked,
+ MetatileBehavior_IsWestBlocked
+};
+
+const struct Coords16 gDirectionToVectors[] = {
+ { 0, 0},
+ { 0, 1},
+ { 0, -1},
+ {-1, 0},
+ { 1, 0},
+ {-1, 1},
+ { 1, 1},
+ {-1, -1},
+ { 1, -1}
+};
+
+const u8 gFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_FACE_DOWN,
+ MOVEMENT_ACTION_FACE_DOWN,
+ MOVEMENT_ACTION_FACE_UP,
+ MOVEMENT_ACTION_FACE_LEFT,
+ MOVEMENT_ACTION_FACE_RIGHT,
+};
+const u8 gWalkSlowMovementActions[] = {
+ MOVEMENT_ACTION_WALK_SLOW_DOWN,
+ MOVEMENT_ACTION_WALK_SLOW_DOWN,
+ MOVEMENT_ACTION_WALK_SLOW_UP,
+ MOVEMENT_ACTION_WALK_SLOW_LEFT,
+ MOVEMENT_ACTION_WALK_SLOW_RIGHT,
+};
+const u8 gWalkNormalMovementActions[] = {
+ MOVEMENT_ACTION_WALK_NORMAL_DOWN,
+ MOVEMENT_ACTION_WALK_NORMAL_DOWN,
+ MOVEMENT_ACTION_WALK_NORMAL_UP,
+ MOVEMENT_ACTION_WALK_NORMAL_LEFT,
+ MOVEMENT_ACTION_WALK_NORMAL_RIGHT,
+};
+const u8 gWalkFastMovementActions[] = {
+ MOVEMENT_ACTION_WALK_FAST_DOWN,
+ MOVEMENT_ACTION_WALK_FAST_DOWN,
+ MOVEMENT_ACTION_WALK_FAST_UP,
+ MOVEMENT_ACTION_WALK_FAST_LEFT,
+ MOVEMENT_ACTION_WALK_FAST_RIGHT,
+};
+const u8 gRideWaterCurrentMovementActions[] = {
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN,
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN,
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP,
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT,
+ MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT,
+};
+const u8 gWalkFastestMovementActions[] = {
+ MOVEMENT_ACTION_WALK_FASTEST_DOWN,
+ MOVEMENT_ACTION_WALK_FASTEST_DOWN,
+ MOVEMENT_ACTION_WALK_FASTEST_UP,
+ MOVEMENT_ACTION_WALK_FASTEST_LEFT,
+ MOVEMENT_ACTION_WALK_FASTEST_RIGHT,
+};
+const u8 gSlideMovementActions[] = {
+ MOVEMENT_ACTION_SLIDE_DOWN,
+ MOVEMENT_ACTION_SLIDE_DOWN,
+ MOVEMENT_ACTION_SLIDE_UP,
+ MOVEMENT_ACTION_SLIDE_LEFT,
+ MOVEMENT_ACTION_SLIDE_RIGHT,
+};
+const u8 gPlayerRunMovementActions[] = {
+ MOVEMENT_ACTION_PLAYER_RUN_DOWN,
+ MOVEMENT_ACTION_PLAYER_RUN_DOWN,
+ MOVEMENT_ACTION_PLAYER_RUN_UP,
+ MOVEMENT_ACTION_PLAYER_RUN_LEFT,
+ MOVEMENT_ACTION_PLAYER_RUN_RIGHT,
+};
+const u8 gJump2MovementActions[] = {
+ MOVEMENT_ACTION_JUMP_2_DOWN,
+ MOVEMENT_ACTION_JUMP_2_DOWN,
+ MOVEMENT_ACTION_JUMP_2_UP,
+ MOVEMENT_ACTION_JUMP_2_LEFT,
+ MOVEMENT_ACTION_JUMP_2_RIGHT,
+};
+const u8 gJumpInPlaceMovementActions[] = {
+ MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_UP,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT,
+};
+const u8 gJumpInPlaceTurnAroundMovementActions[] = {
+ MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT,
+ MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT,
+};
+const u8 gJumpMovementActions[] = {
+ MOVEMENT_ACTION_JUMP_DOWN,
+ MOVEMENT_ACTION_JUMP_DOWN,
+ MOVEMENT_ACTION_JUMP_UP,
+ MOVEMENT_ACTION_JUMP_LEFT,
+ MOVEMENT_ACTION_JUMP_RIGHT,
+};
+const u8 gJumpSpecialMovementActions[] = {
+ MOVEMENT_ACTION_JUMP_SPECIAL_DOWN,
+ MOVEMENT_ACTION_JUMP_SPECIAL_DOWN,
+ MOVEMENT_ACTION_JUMP_SPECIAL_UP,
+ MOVEMENT_ACTION_JUMP_SPECIAL_LEFT,
+ MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT,
+};
+const u8 gWalkInPlaceSlowMovementActions[] = {
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP,
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT,
+ MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT,
+};
+const u8 gWalkInPlaceNormalMovementActions[] = {
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP,
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT,
+ MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT,
+};
+const u8 gWalkInPlaceFastMovementActions[] = {
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT,
+};
+const u8 gWalkInPlaceFastestMovementActions[] = {
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT,
+ MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT,
+};
+const u8 gAcroWheelieFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT,
+};
+const u8 gAcroPopWheelieFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_UP,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_LEFT,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT,
+};
+const u8 gAcroEndWheelieFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_UP,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_LEFT,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT,
+};
+const u8 gAcroWheelieHopFaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT,
+};
+const u8 gAcroWheelieHopDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT,
+};
+const u8 gAcroWheelieJumpDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT,
+};
+const u8 gAcroWheelieInPlaceDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT,
+};
+const u8 gAcroPopWheelieMoveDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_UP,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_LEFT,
+ MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT,
+};
+const u8 gAcroWheelieMoveDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP,
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT,
+ MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT,
+};
+const u8 gAcroEndWheelieMoveDirectionMovementActions[] = {
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT,
+ MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT,
+};
+
+const u8 gOppositeDirections[] = {
+ DIR_NORTH,
+ DIR_SOUTH,
+ DIR_EAST,
+ DIR_WEST,
+ DIR_NORTHEAST,
+ DIR_NORTHWEST,
+ DIR_SOUTHEAST,
+ DIR_SOUTHWEST,
+};
+
+const u8 gUnknown_0850DC2F[][4] = {
+ {2, 1, 4, 3},
+ {1, 2, 3, 4},
+ {3, 4, 2, 1},
+ {4, 3, 1, 2}
+};
+
+const u8 gUnknown_0850DC3F[][4] = {
+ {2, 1, 4, 3},
+ {1, 2, 3, 4},
+ {4, 3, 1, 2},
+ {3, 4, 2, 1}
+};
+
+#include "data/field_event_obj/movement_action_func_tables.h"
+
+// Code
+
+static void ClearEventObject(struct EventObject *eventObject)
+{
+ *eventObject = (struct EventObject){};
+ eventObject->localId = 0xFF;
+ eventObject->mapNum = 0xFF;
+ eventObject->mapGroup = 0xFF;
+ eventObject->movementActionId = 0xFF;
+}
+
+static void ClearAllEventObjects(void)
+{
+ u8 i;
+
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ ClearEventObject(&gEventObjects[i]);
+}
+
+void sub_808D438(void)
+{
+ ClearLinkPlayerEventObjects();
+ ClearAllEventObjects();
+ ClearPlayerAvatarInfo();
+ sub_808D450();
+}
+
+static void sub_808D450(void)
+{
+ u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31);
+ gSprites[spriteId].oam.affineMode = 1;
+ InitSpriteAffineAnim(&gSprites[spriteId]);
+ StartSpriteAffineAnim(&gSprites[spriteId], 0);
+ gSprites[spriteId].invisible = 1;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31);
+ gSprites[spriteId].oam.affineMode = 1;
+ InitSpriteAffineAnim(&gSprites[spriteId]);
+ StartSpriteAffineAnim(&gSprites[spriteId], 1);
+ gSprites[spriteId].invisible = 1;
+}
+
+u8 GetFirstInactiveEventObjectId(void)
+{
+ u8 i;
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (!gEventObjects[i].active)
+ break;
+ }
+
+ return i;
+}
+
+u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId)
+{
+ if (localId < 0xff)
+ {
+ return GetEventObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId);
+ }
+ return GetEventObjectIdByLocalId(localId);
+}
+
+bool8 TryGetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId, u8 *eventObjectId)
+{
+ *eventObjectId = GetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroupId);
+ if (*eventObjectId == NUM_EVENT_OBJECTS)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 GetEventObjectIdByXY(s16 x, s16 y)
+{
+ u8 i;
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (gEventObjects[i].active && gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y)
+ break;
+ }
+
+ return i;
+}
+
+static u8 GetEventObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapNum, u8 mapGroupId)
+{
+ u8 i;
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (gEventObjects[i].active && gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroupId)
+ return i;
+ }
+
+ return NUM_EVENT_OBJECTS;
+}
+
+static u8 GetEventObjectIdByLocalId(u8 localId)
+{
+ u8 i;
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (gEventObjects[i].active && gEventObjects[i].localId == localId)
+ return i;
+ }
+
+ return NUM_EVENT_OBJECTS;
+}
+
+// This function has the same nonmatching quirk as in Ruby/Sapphire.
+#ifdef NONMATCHING
+static u8 InitEventObjectStateFromTemplate(struct EventObjectTemplate *template, u8 mapNum, u8 mapGroup)
+{
+ struct EventObject *eventObject;
+ u8 eventObjectId;
+ s16 x;
+ s16 y;
+
+ // mapNum and mapGroup are in the wrong registers (r7/r6 instead of r6/r7)
+ if (GetAvailableEventObjectId(template->localId, mapNum, mapGroup, &eventObjectId))
+ {
+ return NUM_EVENT_OBJECTS;
+ }
+ eventObject = &gEventObjects[eventObjectId];
+ ClearEventObject(eventObject);
+ x = template->x + 7;
+ y = template->y + 7;
+ eventObject->active = TRUE;
+ eventObject->triggerGroundEffectsOnMove = TRUE;
+ eventObject->graphicsId = template->graphicsId;
+ eventObject->movementType = template->movementType;
+ eventObject->localId = template->localId;
+ eventObject->mapNum = mapNum;
+ eventObject->mapGroup = mapGroup;
+ eventObject->initialCoords.x = x;
+ eventObject->initialCoords.y = y;
+ eventObject->currentCoords.x = x;
+ eventObject->currentCoords.y = y;
+ eventObject->previousCoords.x = x;
+ eventObject->previousCoords.y = y;
+ eventObject->currentElevation = template->elevation;
+ eventObject->previousElevation = template->elevation;
+ // For some reason, 0x0F is placed in r9, to be used later
+ eventObject->range.as_nybbles.x = template->movementRangeX;
+ eventObject->range.as_nybbles.y = template->movementRangeY;
+ eventObject->trainerType = template->trainerType;
+ eventObject->trainerRange_berryTreeId = template->trainerRange_berryTreeId;
+ eventObject->previousMovementDirection = gInitialMovementTypeFacingDirections[template->movementType];
+ SetEventObjectDirection(eventObject, eventObject->previousMovementDirection);
+ SetEventObjectDynamicGraphicsId(eventObject);
+
+ if (gRangedMovementTypes[eventObject->movementType])
+ {
+ if ((eventObject->range.as_nybbles.x) == 0)
+ {
+ // r9 is invoked here
+ eventObject->range.as_nybbles.x++;
+ }
+ if ((eventObject->range.as_nybbles.y) == 0)
+ {
+ eventObject->range.as_nybbles.y++;
+ }
+ }
+ return eventObjectId;
+}
+#else
+static NAKED u8 InitEventObjectStateFromTemplate(struct EventObjectTemplate *template, u8 mapId, u8 mapGroupId)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tsub sp, 0x4\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r6, r1, 24\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r7, r2, 24\n"
+ "\tldrb r0, [r5]\n"
+ "\tadds r1, r6, 0\n"
+ "\tadds r2, r7, 0\n"
+ "\tmov r3, sp\n"
+ "\tbl GetAvailableEventObjectId\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0808D66E\n"
+ "\tmovs r0, 0x10\n"
+ "\tb _0808D762\n"
+ "_0808D66E:\n"
+ "\tmov r0, sp\n"
+ "\tldrb r1, [r0]\n"
+ "\tlsls r0, r1, 3\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, =gEventObjects\n"
+ "\tadds r4, r0, r1\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl ClearEventObject\n"
+ "\tldrh r3, [r5, 0x4]\n"
+ "\tadds r3, 0x7\n"
+ "\tlsls r3, 16\n"
+ "\tlsrs r3, 16\n"
+ "\tldrh r2, [r5, 0x6]\n"
+ "\tadds r2, 0x7\n"
+ "\tlsls r2, 16\n"
+ "\tlsrs r2, 16\n"
+ "\tldrb r0, [r4]\n"
+ "\tmovs r1, 0x1\n"
+ "\torrs r0, r1\n"
+ "\tmovs r1, 0x4\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4]\n"
+ "\tldrb r0, [r5, 0x1]\n"
+ "\tstrb r0, [r4, 0x5]\n"
+ "\tldrb r0, [r5, 0x9]\n"
+ "\tstrb r0, [r4, 0x6]\n"
+ "\tldrb r0, [r5]\n"
+ "\tstrb r0, [r4, 0x8]\n"
+ "\tstrb r6, [r4, 0x9]\n"
+ "\tstrb r7, [r4, 0xA]\n"
+ "\tstrh r3, [r4, 0xC]\n"
+ "\tstrh r2, [r4, 0xE]\n"
+ "\tstrh r3, [r4, 0x10]\n"
+ "\tstrh r2, [r4, 0x12]\n"
+ "\tstrh r3, [r4, 0x14]\n"
+ "\tstrh r2, [r4, 0x16]\n"
+ "\tldrb r0, [r5, 0x8]\n"
+ "\tmovs r7, 0xF\n"
+ "\tadds r1, r7, 0\n"
+ "\tands r1, r0\n"
+ "\tldrb r2, [r4, 0xB]\n"
+ "\tmovs r0, 0x10\n"
+ "\tnegs r0, r0\n"
+ "\tmov r8, r0\n"
+ "\tands r0, r2\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4, 0xB]\n"
+ "\tldrb r1, [r5, 0x8]\n"
+ "\tlsls r1, 4\n"
+ "\tands r0, r7\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4, 0xB]\n"
+ "\tldrb r1, [r5, 0xA]\n"
+ "\tlsls r1, 28\n"
+ "\tmovs r0, 0xF\n"
+ "\tmov r9, r0\n"
+ "\tlsrs r1, 28\n"
+ "\tldrb r2, [r4, 0x19]\n"
+ "\tmov r0, r8\n"
+ "\tands r0, r2\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4, 0x19]\n"
+ "\tldrb r1, [r5, 0xA]\n"
+ "\tlsrs r1, 4\n"
+ "\tlsls r1, 4\n"
+ "\tands r0, r7\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4, 0x19]\n"
+ "\tldrh r0, [r5, 0xC]\n"
+ "\tstrb r0, [r4, 0x7]\n"
+ "\tldrh r0, [r5, 0xE]\n"
+ "\tstrb r0, [r4, 0x1D]\n"
+ "\tldr r1, =gInitialMovementTypeFacingDirections\n"
+ "\tldrb r0, [r5, 0x9]\n"
+ "\tadds r0, r1\n"
+ "\tldrb r1, [r0]\n"
+ "\tadds r0, r4, 0\n"
+ "\tadds r0, 0x20\n"
+ "\tstrb r1, [r0]\n"
+ "\tldrb r1, [r0]\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl SetEventObjectDirection\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl SetEventObjectDynamicGraphicsId\n"
+ "\tldr r1, =gRangedMovementTypes\n"
+ "\tldrb r0, [r4, 0x6]\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0808D75E\n"
+ "\tldrb r2, [r4, 0x19]\n"
+ "\tadds r0, r7, 0\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0808D746\n"
+ "\tlsls r0, r2, 28\n"
+ "\tlsrs r0, 28\n"
+ "\tadds r0, 0x1\n"
+ "\tmov r1, r9\n"
+ "\tands r0, r1\n"
+ "\tmov r1, r8\n"
+ "\tands r1, r2\n"
+ "\torrs r1, r0\n"
+ "\tstrb r1, [r4, 0x19]\n"
+ "_0808D746:\n"
+ "\tldrb r2, [r4, 0x19]\n"
+ "\tmovs r0, 0xF0\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0808D75E\n"
+ "\tlsrs r1, r2, 4\n"
+ "\tadds r1, 0x1\n"
+ "\tlsls r1, 4\n"
+ "\tadds r0, r7, 0\n"
+ "\tands r0, r2\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4, 0x19]\n"
+ "_0808D75E:\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "_0808D762:\n"
+ "\tadd sp, 0x4\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ ".pool");
+}
+#endif
+
+u8 Unref_TryInitLocalEventObject(u8 localId)
+{
+ u8 i;
+ u8 nObjects;
+ struct EventObjectTemplate *template;
+
+ if (gMapHeader.events != NULL)
+ {
+ if (InBattlePyramid())
+ {
+ nObjects = sub_81AAA40();
+ }
+ else if (InTrainerHill())
+ {
+ nObjects = 2;
+ }
+ else
+ {
+ nObjects = gMapHeader.events->eventObjectCount;
+ }
+ for (i = 0; i < nObjects; i++)
+ {
+ template = &gSaveBlock1Ptr->eventObjectTemplates[i];
+ if (template->localId == localId && !FlagGet(template->flagId))
+ {
+ return InitEventObjectStateFromTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ }
+ }
+ }
+ return NUM_EVENT_OBJECTS;
+}
+
+static bool8 GetAvailableEventObjectId(u16 localId, u8 mapNum, u8 mapGroup, u8 *eventObjectId)
+// Looks for an empty slot.
+// Returns FALSE and the location of the available slot
+// in *eventObjectId.
+// If no slots are available, or if the object is already
+// loaded, returns TRUE.
+{
+ u8 i = 0;
+
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (!gEventObjects[i].active)
+ break;
+ if (gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup)
+ return TRUE;
+ }
+ if (i >= NUM_EVENT_OBJECTS)
+ return TRUE;
+ *eventObjectId = i;
+ do
+ {
+ if (gEventObjects[i].active && gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup)
+ return TRUE;
+ i++;
+ } while (i < NUM_EVENT_OBJECTS);
+ return FALSE;
+}
+
+static void RemoveEventObject(struct EventObject *eventObject)
+{
+ eventObject->active = FALSE;
+ RemoveEventObjectInternal(eventObject);
+}
+
+void RemoveEventObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 eventObjectId;
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ FlagSet(GetEventObjectFlagIdByEventObjectId(eventObjectId));
+ RemoveEventObject(&gEventObjects[eventObjectId]);
+ }
+}
+
+static void RemoveEventObjectInternal(struct EventObject *eventObject)
+{
+ struct SpriteFrameImage image;
+ image.size = GetEventObjectGraphicsInfo(eventObject->graphicsId)->size;
+ gSprites[eventObject->spriteId].images = &image;
+ DestroySprite(&gSprites[eventObject->spriteId]);
+}
+
+void RemoveAllEventObjectsExceptPlayer(void)
+{
+ u8 i;
+
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (i != gPlayerAvatar.eventObjectId)
+ RemoveEventObject(&gEventObjects[i]);
+ }
+}
+
+static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
+{
+ struct EventObject *eventObject;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *sprite;
+ u8 eventObjectId;
+ u8 paletteSlot;
+ u8 spriteId;
+
+ eventObjectId = InitEventObjectStateFromTemplate(eventObjectTemplate, mapNum, mapGroup);
+ if (eventObjectId == NUM_EVENT_OBJECTS)
+ return NUM_EVENT_OBJECTS;
+
+ eventObject = &gEventObjects[eventObjectId];
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ paletteSlot = graphicsInfo->paletteSlot;
+ if (paletteSlot == 0)
+ {
+ npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, 0);
+ }
+ else if (paletteSlot == 10)
+ {
+ npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, 10);
+ }
+ else if (paletteSlot >= 16)
+ {
+ paletteSlot -= 16;
+ sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ }
+ if (eventObject->movementType == 0x4c)
+ {
+ eventObject->invisible = TRUE;
+ }
+ *(u16 *)&spriteTemplate->paletteTag = 0xFFFF;
+ spriteId = CreateSprite(spriteTemplate, 0, 0, 0);
+ if (spriteId == MAX_SPRITES)
+ {
+ gEventObjects[eventObjectId].active = FALSE;
+ return NUM_EVENT_OBJECTS;
+ }
+ sprite = &gSprites[spriteId];
+ sub_8092FF0(eventObject->currentCoords.x + cameraX, eventObject->currentCoords.y + cameraY, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
+ sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
+ sprite->pos1.x += 8;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->oam.paletteNum = paletteSlot;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[0] = eventObjectId;
+ eventObject->spriteId = spriteId;
+ eventObject->inanimate = graphicsInfo->inanimate;
+ if (!eventObject->inanimate)
+ {
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection));
+ }
+ SetObjectSubpriorityByZCoord(eventObject->previousElevation, sprite, 1);
+ UpdateEventObjectVisibility(eventObject, sprite);
+ return eventObjectId;
+}
+
+static u8 TrySpawnEventObject(struct EventObjectTemplate *eventObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
+{
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+ struct SpriteTemplate spriteTemplate;
+ const struct SubspriteTable *subspriteTables;
+ struct SpriteFrameImage spriteFrameImage;
+ u8 eventObjectId;
+
+ subspriteTables = NULL;
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObjectTemplate->graphicsId);
+ MakeObjectTemplateFromEventObjectTemplate(eventObjectTemplate, &spriteTemplate, &subspriteTables);
+ spriteFrameImage.size = graphicsInfo->size;
+ spriteTemplate.images = &spriteFrameImage;
+ eventObjectId = TrySetupEventObjectSprite(eventObjectTemplate, &spriteTemplate, mapNum, mapGroup, cameraX, cameraY);
+ if (eventObjectId == NUM_EVENT_OBJECTS)
+ {
+ return NUM_EVENT_OBJECTS;
+ }
+ gSprites[gEventObjects[eventObjectId].spriteId].images = graphicsInfo->images;
+ if (subspriteTables != NULL)
+ {
+ SetSubspriteTables(&gSprites[gEventObjects[eventObjectId].spriteId], subspriteTables);
+ }
+ return eventObjectId;
+}
+
+u8 SpawnSpecialEventObject(struct EventObjectTemplate *eventObjectTemplate)
+{
+ s16 cameraX;
+ s16 cameraY;
+
+ GetEventObjectMovingCameraOffset(&cameraX, &cameraY);
+ return TrySpawnEventObject(eventObjectTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
+}
+
+u8 SpawnSpecialEventObjectParametrized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z)
+{
+ struct EventObjectTemplate eventObjectTemplate;
+
+ x -= 7;
+ y -= 7;
+ eventObjectTemplate.localId = localId;
+ eventObjectTemplate.graphicsId = graphicsId;
+ eventObjectTemplate.unk2 = 0;
+ eventObjectTemplate.x = x;
+ eventObjectTemplate.y = y;
+ eventObjectTemplate.elevation = z;
+ eventObjectTemplate.movementType = movementBehavior;
+ eventObjectTemplate.movementRangeX = 0;
+ eventObjectTemplate.movementRangeY = 0;
+ eventObjectTemplate.trainerType = 0;
+ eventObjectTemplate.trainerRange_berryTreeId = 0;
+ return SpawnSpecialEventObject(&eventObjectTemplate);
+}
+
+u8 show_sprite(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ struct EventObjectTemplate *eventObjectTemplate;
+ s16 cameraX;
+ s16 cameraY;
+
+ eventObjectTemplate = GetEventObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
+ if (eventObjectTemplate == NULL)
+ {
+ return NUM_EVENT_OBJECTS;
+ }
+ GetEventObjectMovingCameraOffset(&cameraX, &cameraY);
+ return TrySpawnEventObject(eventObjectTemplate, mapNum, mapGroup, cameraX, cameraY);
+}
+
+static void MakeObjectTemplateFromEventObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
+{
+ const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(graphicsId);
+
+ sprTemplate->tileTag = gfxInfo->tileTag;
+ sprTemplate->paletteTag = gfxInfo->paletteTag1;
+ sprTemplate->oam = gfxInfo->oam;
+ sprTemplate->anims = gfxInfo->anims;
+ sprTemplate->images = gfxInfo->images;
+ sprTemplate->affineAnims = gfxInfo->affineAnims;
+ sprTemplate->callback = callback;
+ *subspriteTables = gfxInfo->subspriteTables;
+}
+
+static void MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
+{
+ MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, sMovementTypeCallbacks[callbackIndex], sprTemplate, subspriteTables);
+}
+
+static void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjectTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
+{
+ MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(eventObjectTemplate->graphicsId, eventObjectTemplate->movementType, spriteTemplate, subspriteTables);
+}
+
+u8 AddPseudoEventObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
+{
+ struct SpriteTemplate *spriteTemplate;
+ const struct SubspriteTable *subspriteTables;
+ struct Sprite *sprite;
+ u8 spriteIdx;
+
+ spriteTemplate = malloc(sizeof(struct SpriteTemplate));
+ MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, callback, spriteTemplate, &subspriteTables);
+ if (spriteTemplate->paletteTag != 0xffff)
+ {
+ sub_808E894(spriteTemplate->paletteTag);
+ }
+ spriteIdx = CreateSprite(spriteTemplate, x, y, subpriority);
+ free(spriteTemplate);
+
+ if (spriteIdx != MAX_SPRITES && subspriteTables != NULL)
+ {
+ sprite = &gSprites[spriteIdx];
+ SetSubspriteTables(sprite, subspriteTables);
+ sprite->subspriteMode = 2;
+ }
+ return spriteIdx;
+}
+
+u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
+{
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+ struct SpriteTemplate spriteTemplate;
+ const struct SubspriteTable *subspriteTables;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ graphicsInfo = GetEventObjectGraphicsInfo(graphicsId);
+ MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, UpdateEventObjectSpriteSubpriorityAndVisibility, &spriteTemplate, &subspriteTables);
+ *(u16 *)&spriteTemplate.paletteTag = 0xffff;
+ x += 7;
+ y += 7;
+ sub_80930E0(&x, &y, 8, 16);
+ spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
+ sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
+ sprite->pos1.y += sprite->centerToCornerVecY;
+ sprite->oam.paletteNum = graphicsInfo->paletteSlot;
+ if (sprite->oam.paletteNum >= 16)
+ {
+ sprite->oam.paletteNum -= 16;
+ }
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[0] = a1;
+ sprite->data[1] = z;
+ if (graphicsInfo->paletteSlot == 10)
+ {
+ npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ }
+ else if (graphicsInfo->paletteSlot >= 16)
+ {
+ sub_808EAB0(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot | 0xf0);
+ }
+ if (subspriteTables != NULL)
+ {
+ SetSubspriteTables(sprite, subspriteTables);
+ sprite->subspriteMode = 2;
+ }
+ InitObjectPriorityByZCoord(sprite, z);
+ SetObjectSubpriorityByZCoord(z, sprite, 1);
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction));
+ }
+ return spriteId;
+}
+
+void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
+{
+ u8 i;
+ s16 left;
+ s16 right;
+ s16 top;
+ s16 bottom;
+ u8 objectCount;
+ s16 npcX;
+ s16 npcY;
+
+ if (gMapHeader.events != NULL)
+ {
+ left = gSaveBlock1Ptr->pos.x - 2;
+ right = gSaveBlock1Ptr->pos.x + 17;
+ top = gSaveBlock1Ptr->pos.y;
+ bottom = gSaveBlock1Ptr->pos.y + 16;
+
+ if (InBattlePyramid())
+ {
+ objectCount = sub_81AAA40();
+ }
+ else if (InTrainerHill())
+ {
+ objectCount = 2;
+ }
+ else
+ {
+ objectCount = gMapHeader.events->eventObjectCount;
+ }
+
+ for (i = 0; i < objectCount; i++)
+ {
+ struct EventObjectTemplate *template = &gSaveBlock1Ptr->eventObjectTemplates[i];
+ npcX = template->x + 7;
+ npcY = template->y + 7;
+
+ if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX
+ && !FlagGet(template->flagId))
+ TrySpawnEventObject(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
+ }
+ }
+}
+
+void RemoveEventObjectsOutsideView(void)
+{
+ u8 i;
+ u8 j;
+ bool8 isActiveLinkPlayer;
+ struct EventObject *eventObject;
+
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ for (j = 0, isActiveLinkPlayer = FALSE; j < ARRAY_COUNT(gLinkPlayerEventObjects); j++)
+ {
+ if (gLinkPlayerEventObjects[j].active && i == gLinkPlayerEventObjects[j].eventObjId)
+ isActiveLinkPlayer = TRUE;
+ }
+ if (!isActiveLinkPlayer)
+ {
+ eventObject = &gEventObjects[i];
+
+ if (eventObject->active && !eventObject->isPlayer)
+ RemoveEventObjectIfOutsideView(eventObject);
+ }
+ }
+}
+
+static void RemoveEventObjectIfOutsideView(struct EventObject *eventObject)
+{
+ s16 left;
+ s16 right;
+ s16 top;
+ s16 bottom;
+
+ left = gSaveBlock1Ptr->pos.x - 2;
+ right = gSaveBlock1Ptr->pos.x + 17;
+ top = gSaveBlock1Ptr->pos.y;
+ bottom = gSaveBlock1Ptr->pos.y + 16;
+
+ if (eventObject->currentCoords.x >= left && eventObject->currentCoords.x <= right
+ && eventObject->currentCoords.y >= top && eventObject->currentCoords.y <= bottom)
+ return;
+ if (eventObject->initialCoords.x >= left && eventObject->initialCoords.x <= right
+ && eventObject->initialCoords.y >= top && eventObject->initialCoords.y <= bottom)
+ return;
+ RemoveEventObject(eventObject);
+}
+
+void sub_808E16C(s16 x, s16 y)
+{
+ u8 i;
+
+ ClearPlayerAvatarInfo();
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (gEventObjects[i].active)
+ {
+ sub_808E1B8(i, x, y);
+ }
+ }
+ sub_808D450();
+}
+
+static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
+{
+ u8 spriteId;
+ u8 paletteSlot;
+ struct EventObject *eventObject;
+ const struct SubspriteTable *subspriteTables;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+ struct SpriteFrameImage spriteFrameImage;
+ struct SpriteTemplate spriteTemplate;
+ struct Sprite *sprite;
+
+#define i spriteId
+ for (i = 0; i < ARRAY_COUNT(gLinkPlayerEventObjects); i++)
+ {
+ if (gLinkPlayerEventObjects[i].active && eventObjectId == gLinkPlayerEventObjects[i].eventObjId)
+ {
+ return;
+ }
+ }
+#undef i
+
+ eventObject = &gEventObjects[eventObjectId];
+ subspriteTables = NULL;
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ spriteFrameImage.size = graphicsInfo->size;
+ MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(eventObject->graphicsId, eventObject->movementType, &spriteTemplate, &subspriteTables);
+ spriteTemplate.images = &spriteFrameImage;
+ *(u16 *)&spriteTemplate.paletteTag = 0xffff;
+ paletteSlot = graphicsInfo->paletteSlot;
+ if (paletteSlot == 0)
+ {
+ npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ }
+ else if (paletteSlot == 10)
+ {
+ npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ }
+ else if (paletteSlot >= 16)
+ {
+ paletteSlot -= 16;
+ sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ }
+ *(u16 *)&spriteTemplate.paletteTag = 0xffff;
+ spriteId = CreateSprite(&spriteTemplate, 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sub_8092FF0(x + eventObject->currentCoords.x, y + eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
+ sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
+ sprite->pos1.x += 8;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->images = graphicsInfo->images;
+ if (eventObject->movementType == 0x0b)
+ {
+ SetPlayerAvatarEventObjectIdAndObjectId(eventObjectId, spriteId);
+ eventObject->warpArrowSpriteId = sub_8154228();
+ }
+ if (subspriteTables != NULL)
+ {
+ SetSubspriteTables(sprite, subspriteTables);
+ }
+ sprite->oam.paletteNum = paletteSlot;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[0] = eventObjectId;
+ eventObject->spriteId = spriteId;
+ if (!eventObject->inanimate && eventObject->movementType != 0x0b)
+ {
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection));
+ }
+ sub_808E38C(eventObject);
+ SetObjectSubpriorityByZCoord(eventObject->previousElevation, sprite, 1);
+ }
+}
+
+static void sub_808E38C(struct EventObject *eventObject)
+{
+ eventObject->singleMovementActive = 0;
+ eventObject->triggerGroundEffectsOnMove = TRUE;
+ eventObject->hasShadow = FALSE;
+ eventObject->hasReflection = FALSE;
+ eventObject->inShortGrass = FALSE;
+ eventObject->inShallowFlowingWater = FALSE;
+ eventObject->inSandPile = FALSE;
+ eventObject->inHotSprings = FALSE;
+ EventObjectClearHeldMovement(eventObject);
+}
+
+static void SetPlayerAvatarEventObjectIdAndObjectId(u8 eventObjectId, u8 spriteId)
+{
+ gPlayerAvatar.eventObjectId = eventObjectId;
+ gPlayerAvatar.spriteId = spriteId;
+ gPlayerAvatar.gender = GetPlayerAvatarGenderByGraphicsId(gEventObjects[eventObjectId].graphicsId);
+ SetPlayerAvatarExtraStateTransition(gEventObjects[eventObjectId].graphicsId, 0x20);
+}
+
+void EventObjectSetGraphicsId(struct EventObject *eventObject, u8 graphicsId)
+{
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *sprite;
+ u8 paletteSlot;
+
+ graphicsInfo = GetEventObjectGraphicsInfo(graphicsId);
+ sprite = &gSprites[eventObject->spriteId];
+ paletteSlot = graphicsInfo->paletteSlot;
+ if (paletteSlot == 0)
+ {
+ pal_patch_for_npc(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ }
+ else if (paletteSlot == 10)
+ {
+ npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ }
+ else if (paletteSlot >= 16)
+ {
+ paletteSlot -= 16;
+ sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ }
+ sprite->oam.shape = graphicsInfo->oam->shape;
+ sprite->oam.size = graphicsInfo->oam->size;
+ sprite->images = graphicsInfo->images;
+ sprite->anims = graphicsInfo->anims;
+ sprite->subspriteTables = graphicsInfo->subspriteTables;
+ sprite->oam.paletteNum = paletteSlot;
+ eventObject->inanimate = graphicsInfo->inanimate;
+ eventObject->graphicsId = graphicsId;
+ sub_8093038(eventObject->currentCoords.x, eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
+ sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
+ sprite->pos1.x += 8;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ if (eventObject->trackedByCamera)
+ {
+ CameraObjectReset1();
+ }
+}
+
+void EventObjectSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId)
+{
+ u8 eventObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ EventObjectSetGraphicsId(&gEventObjects[eventObjectId], graphicsId);
+ }
+}
+
+void EventObjectTurn(struct EventObject *eventObject, u8 direction)
+{
+ SetEventObjectDirection(eventObject, direction);
+ if (!eventObject->inanimate)
+ {
+ StartSpriteAnim(&gSprites[eventObject->spriteId], GetFaceDirectionAnimNum(eventObject->facingDirection));
+ SeekSpriteAnim(&gSprites[eventObject->spriteId], 0);
+ }
+}
+
+void EventObjectTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction)
+{
+ u8 eventObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ EventObjectTurn(&gEventObjects[eventObjectId], direction);
+ }
+}
+
+void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction)
+{
+ EventObjectTurn(&gEventObjects[playerAvatar->eventObjectId], direction);
+}
+
+/*static*/ void get_berry_tree_graphics(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 berryStage;
+ u8 berryId;
+
+ eventObject->invisible = TRUE;
+ sprite->invisible = TRUE;
+ berryStage = GetStageByBerryTreeId(eventObject->trainerRange_berryTreeId);
+ if (berryStage != 0)
+ {
+ eventObject->invisible = FALSE;
+ sprite->invisible = FALSE;
+ berryId = GetBerryTypeByBerryTreeId(eventObject->trainerRange_berryTreeId) - 1;
+ berryStage -= 1;
+ if (berryId >= NUM_BERRIES)
+ {
+ berryId = 0;
+ }
+ EventObjectSetGraphicsId(eventObject, gBerryTreeEventObjectGraphicsIdTablePointers[berryId][berryStage]);
+ sprite->images = gBerryTreePicTablePointers[berryId];
+ sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[berryId][berryStage];
+ StartSpriteAnim(sprite, berryStage);
+ }
+}
+
+const struct EventObjectGraphicsInfo *GetEventObjectGraphicsInfo(u8 graphicsId)
+{
+ u8 bard;
+
+ if (graphicsId >= SPRITE_VAR)
+ {
+ graphicsId = VarGetEventObjectGraphicsId(graphicsId - SPRITE_VAR);
+ }
+ if (graphicsId == 0x45)
+ {
+ bard = GetCurrentMauvilleOldMan();
+ return gMauvilleOldManGraphicsInfoPointers[bard];
+ }
+ if (graphicsId >= NUM_OBJECT_GRAPHICS_INFO)
+ {
+ graphicsId = 0x05; // LittleBoy1
+ }
+ return gEventObjectGraphicsInfoPointers[graphicsId];
+}
+
+static void SetEventObjectDynamicGraphicsId(struct EventObject *eventObject)
+{
+ if (eventObject->graphicsId >= SPRITE_VAR)
+ {
+ eventObject->graphicsId = VarGetEventObjectGraphicsId(eventObject->graphicsId - SPRITE_VAR);
+ }
+}
+
+void npc_by_local_id_and_map_set_field_1_bit_x20(u8 localId, u8 mapNum, u8 mapGroup, u8 state)
+{
+ u8 eventObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ gEventObjects[eventObjectId].invisible = state;
+ }
+}
+
+void EventObjectGetLocalIdAndMap(struct EventObject *eventObject, void *localId, void *mapNum, void *mapGroup)
+{
+ *(u8*)(localId) = eventObject->localId;
+ *(u8*)(mapNum) = eventObject->mapNum;
+ *(u8*)(mapGroup) = eventObject->mapGroup;
+}
+
+void sub_808E75C(s16 x, s16 y)
+{
+ u8 eventObjectId;
+ struct EventObject *eventObject;
+
+ eventObjectId = GetEventObjectIdByXY(x, y);
+ if (eventObjectId != NUM_EVENT_OBJECTS)
+ {
+ eventObject = &gEventObjects[eventObjectId];
+ eventObject->triggerGroundEffectsOnMove = TRUE;
+ }
+}
+
+void sub_808E78C(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
+{
+ u8 eventObjectId;
+ struct EventObject *eventObject;
+ struct Sprite *sprite;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ eventObject = &gEventObjects[eventObjectId];
+ sprite = &gSprites[eventObject->spriteId];
+ eventObject->fixedPriority = TRUE;
+ sprite->subpriority = subpriority;
+ }
+}
+
+void sub_808E7E4(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 eventObjectId;
+ struct EventObject *eventObject;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ eventObject = &gEventObjects[eventObjectId];
+ eventObject->fixedPriority = FALSE;
+ eventObject->triggerGroundEffectsOnMove = TRUE;
+ }
+}
+
+void sub_808E82C(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+{
+ u8 eventObjectId;
+ struct Sprite *sprite;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ sprite = &gSprites[gEventObjects[eventObjectId].spriteId];
+ sprite->pos2.x = x;
+ sprite->pos2.y = y;
+ }
+}
+
+void gpu_pal_allocator_reset__manage_upper_four(void)
+{
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 12;
+}
+
+static void sub_808E894(u16 paletteTag)
+{
+ u16 paletteSlot;
+
+ paletteSlot = FindEventObjectPaletteIndexByTag(paletteTag);
+ if (paletteSlot != 0x11ff) // always true
+ {
+ sub_808E8F4(&gUnknown_0850BBC8[paletteSlot]);
+ }
+}
+
+void sub_808E8C0(u16 *paletteTags)
+{
+ u8 i;
+
+ for (i = 0; paletteTags[i] != 0x11ff; i++)
+ {
+ sub_808E894(paletteTags[i]);
+ }
+}
+
+static u8 sub_808E8F4(const struct SpritePalette *spritePalette)
+{
+ if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xff)
+ {
+ return 0xff;
+ }
+ return LoadSpritePalette(spritePalette);
+}
+
+void pal_patch_for_npc(u16 paletteTag, u8 paletteSlot)
+{
+ u16 paletteIdx;
+
+ paletteIdx = FindEventObjectPaletteIndexByTag(paletteTag);
+ LoadPalette(gUnknown_0850BBC8[paletteIdx].data, 16 * paletteSlot + 256, 0x20);
+}
+
+void pal_patch_for_npc_range(const u16 *paletteTags, u8 minSlot, u8 maxSlot)
+{
+ while (minSlot < maxSlot)
+ {
+ pal_patch_for_npc(*paletteTags, minSlot);
+ paletteTags++;
+ minSlot++;
+ }
+}
+
+static u8 FindEventObjectPaletteIndexByTag(u16 tag)
+{
+ u8 i;
+
+ for (i = 0; gUnknown_0850BBC8[i].tag != 0x11ff; i++)
+ {
+ if (gUnknown_0850BBC8[i].tag == tag)
+ {
+ return i;
+ }
+ }
+ return 0xff;
+}
+
+void npc_load_two_palettes__no_record(u16 tag, u8 slot)
+{
+ u8 i;
+
+ pal_patch_for_npc(tag, slot);
+ for (i = 0; gUnknown_0850BD00[i].tag != 0x11ff; i++)
+ {
+ if (gUnknown_0850BD00[i].tag == tag)
+ {
+ pal_patch_for_npc(gUnknown_0850BD00[i].data[gUnknown_020375B4], gUnknown_084975C4[slot]);
+ return;
+ }
+ }
+}
+
+void npc_load_two_palettes__and_record(u16 tag, u8 slot)
+{
+ u8 i;
+
+ gUnknown_020375B6 = tag;
+ pal_patch_for_npc(tag, slot);
+ for (i = 0; gUnknown_0850BD78[i].tag != 0x11ff; i++)
+ {
+ if (gUnknown_0850BD78[i].tag == tag)
+ {
+ pal_patch_for_npc(gUnknown_0850BD78[i].data[gUnknown_020375B4], gUnknown_084975C4[slot]);
+ return;
+ }
+ }
+}
+
+static void sub_808EAB0(u16 tag, u8 slot)
+{
+ pal_patch_for_npc(tag, slot);
+}
+
+void unref_sub_808EAC4(struct EventObject *eventObject, s16 x, s16 y)
+{
+ eventObject->previousCoords.x = eventObject->currentCoords.x;
+ eventObject->previousCoords.y = eventObject->currentCoords.y;
+ eventObject->currentCoords.x += x;
+ eventObject->currentCoords.y += y;
+}
+
+void ShiftEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
+{
+ eventObject->previousCoords.x = eventObject->currentCoords.x;
+ eventObject->previousCoords.y = eventObject->currentCoords.y;
+ eventObject->currentCoords.x = x;
+ eventObject->currentCoords.y = y;
+}
+
+/*static*/ void npc_coords_set(struct EventObject *eventObject, s16 x, s16 y)
+{
+ eventObject->previousCoords.x = x;
+ eventObject->previousCoords.y = y;
+ eventObject->currentCoords.x = x;
+ eventObject->currentCoords.y = y;
+}
+
+void sub_808EB08(struct EventObject *eventObject, s16 x, s16 y)
+{
+ struct Sprite *sprite;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+
+ sprite = &gSprites[eventObject->spriteId];
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ npc_coords_set(eventObject, x, y);
+ sub_8093038(eventObject->currentCoords.x, eventObject->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
+ sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
+ sprite->pos1.x += 8;
+ sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sub_808E38C(eventObject);
+ if (eventObject->trackedByCamera)
+ {
+ CameraObjectReset1();
+ }
+}
+
+void sub_808EBA8(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+{
+ u8 eventObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ x += 7;
+ y += 7;
+ sub_808EB08(&gEventObjects[eventObjectId], x, y);
+ }
+}
+
+void ShiftStillEventObjectCoords(struct EventObject *eventObject)
+{
+ ShiftEventObjectCoords(eventObject, eventObject->currentCoords.x, eventObject->currentCoords.y);
+}
+
+void UpdateEventObjectCoordsForCameraUpdate(void)
+{
+ u8 i;
+ s16 dx;
+ s16 dy;
+
+ if (gCamera.active)
+ {
+ dx = gCamera.x;
+ dy = gCamera.y;
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (gEventObjects[i].active)
+ {
+ gEventObjects[i].initialCoords.x -= dx;
+ gEventObjects[i].initialCoords.y -= dy;
+ gEventObjects[i].currentCoords.x -= dx;
+ gEventObjects[i].currentCoords.y -= dy;
+ gEventObjects[i].previousCoords.x -= dx;
+ gEventObjects[i].previousCoords.y -= dy;
+ }
+ }
+ }
+}
+
+u8 GetEventObjectIdByXYZ(u16 x, u16 y, u8 z)
+{
+ u8 i;
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ if (gEventObjects[i].active)
+ {
+ if (gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y && EventObjectDoesZCoordMatch(&gEventObjects[i], z))
+ {
+ return i;
+ }
+ }
+ }
+ return NUM_EVENT_OBJECTS;
+}
+
+static bool8 EventObjectDoesZCoordMatch(struct EventObject *eventObject, u8 z)
+{
+ if (eventObject->currentElevation != 0 && z != 0 && eventObject->currentElevation != z)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void UpdateEventObjectsForCameraUpdate(s16 x, s16 y)
+{
+ UpdateEventObjectCoordsForCameraUpdate();
+ TrySpawnEventObjects(x, y);
+ RemoveEventObjectsOutsideView();
+}
+
+u8 AddCameraObject(u8 linkedSpriteId)
+{
+ u8 spriteId;
+
+ spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4);
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].data[0] = linkedSpriteId;
+ return spriteId;
+}
+
+static void ObjectCB_CameraObject(struct Sprite *sprite)
+{
+ void (*callbacks[ARRAY_COUNT(gCameraObjectFuncs)])(struct Sprite *);
+
+ memcpy(callbacks, gCameraObjectFuncs, sizeof gCameraObjectFuncs);
+ callbacks[sprite->data[1]](sprite);
+}
+
+static void CameraObject_0(struct Sprite *sprite)
+{
+ sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->invisible = TRUE;
+ sprite->data[1] = 1;
+ CameraObject_1(sprite);
+}
+
+static void CameraObject_1(struct Sprite *sprite)
+{
+ s16 x;
+ s16 y;
+
+ y = gSprites[sprite->data[0]].pos1.y;
+ x = gSprites[sprite->data[0]].pos1.x;
+ sprite->data[2] = x - sprite->pos1.x;
+ sprite->data[3] = y - sprite->pos1.y;
+ sprite->pos1.x = x;
+ sprite->pos1.y = y;
+}
+
+static void CameraObject_2(struct Sprite *sprite)
+{
+ sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+}
+
+static struct Sprite *FindCameraObject(void)
+{
+ u8 spriteId;
+
+ for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++)
+ {
+ if (gSprites[spriteId].inUse && gSprites[spriteId].callback == ObjectCB_CameraObject)
+ {
+ return &gSprites[spriteId];
+ }
+ }
+ return NULL;
+}
+
+void CameraObjectReset1(void)
+{
+ struct Sprite *cameraObject;
+
+ cameraObject = FindCameraObject();
+ if (cameraObject != NULL)
+ {
+ cameraObject->data[1] = 0;
+ cameraObject->callback(cameraObject);
+ }
+}
+
+void CameraObjectSetFollowedObjectId(u8 objectId)
+{
+ struct Sprite *cameraObject;
+
+ cameraObject = FindCameraObject();
+ if (cameraObject != NULL)
+ {
+ cameraObject->data[0] = objectId;
+ CameraObjectReset1();
+ }
+}
+
+u8 CameraObjectGetFollowedObjectId(void)
+{
+ struct Sprite *cameraObject;
+
+ cameraObject = FindCameraObject();
+ if (cameraObject == NULL)
+ {
+ return MAX_SPRITES;
+ }
+ return cameraObject->data[0];
+}
+
+void CameraObjectReset2(void)
+{
+ FindCameraObject()->data[1] = 2;
+}
+
+u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
+{
+ u8 i;
+
+ for (i = 0; i < MAX_SPRITES; i++)
+ {
+ if (!gSprites[i].inUse)
+ {
+ gSprites[i] = *sprite;
+ gSprites[i].pos1.x = x;
+ gSprites[i].pos1.y = y;
+ gSprites[i].subpriority = subpriority;
+ break;
+ }
+ }
+ return i;
+}
+
+u8 obj_unfreeze(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
+{
+ s16 i;
+
+ for (i = MAX_SPRITES - 1; i > -1; i --)
+ {
+ if (!gSprites[i].inUse)
+ {
+ gSprites[i] = *sprite;
+ gSprites[i].pos1.x = x;
+ gSprites[i].pos1.y = y;
+ gSprites[i].subpriority = subpriority;
+ return i;
+ }
+ }
+ return MAX_SPRITES;
+}
+
+void SetEventObjectDirection(struct EventObject *eventObject, u8 direction)
+{
+ s8 d2;
+ eventObject->previousMovementDirection = eventObject->facingDirection;
+ if (!eventObject->facingDirectionLocked)
+ {
+ d2 = direction;
+ eventObject->facingDirection = d2;
+ }
+ eventObject->movementDirection = direction;
+}
+
+static const u8 *GetEventObjectScriptPointerByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ return GetEventObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->script;
+}
+
+const u8 *GetEventObjectScriptPointerByEventObjectId(u8 eventObjectId)
+{
+ return GetEventObjectScriptPointerByLocalIdAndMap(gEventObjects[eventObjectId].localId, gEventObjects[eventObjectId].mapNum, gEventObjects[eventObjectId].mapGroup);
+}
+
+static u16 GetEventObjectFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ return GetEventObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->flagId;
+}
+
+static u16 GetEventObjectFlagIdByEventObjectId(u8 eventObjectId)
+{
+ return GetEventObjectFlagIdByLocalIdAndMap(gEventObjects[eventObjectId].localId, gEventObjects[eventObjectId].mapNum, gEventObjects[eventObjectId].mapGroup);
+}
+
+u8 sub_808F080(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 eventObjectId;
+
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ return 0xFF;
+ }
+ return gEventObjects[eventObjectId].trainerType;
+}
+
+u8 sub_808F0BC(u8 eventObjectId)
+{
+ return gEventObjects[eventObjectId].trainerType;
+}
+
+u8 sub_808F0D4(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 eventObjectId;
+
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ return 0xFF;
+ }
+ return gEventObjects[eventObjectId].trainerRange_berryTreeId;
+}
+
+u8 EventObjectGetBerryTreeId(u8 eventObjectId)
+{
+ return gEventObjects[eventObjectId].trainerRange_berryTreeId;
+}
+
+static struct EventObjectTemplate *GetEventObjectTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ struct EventObjectTemplate *templates;
+ const struct MapHeader *mapHeader;
+ u8 count;
+
+ if (gSaveBlock1Ptr->location.mapNum == mapNum && gSaveBlock1Ptr->location.mapGroup == mapGroup)
+ {
+ templates = gSaveBlock1Ptr->eventObjectTemplates;
+ count = gMapHeader.events->eventObjectCount;
+ }
+ else
+ {
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
+ templates = mapHeader->events->eventObjects;
+ count = mapHeader->events->eventObjectCount;
+ }
+ return FindEventObjectTemplateByLocalId(localId, templates, count);
+}
+
+static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8 localId, struct EventObjectTemplate *templates, u8 count)
+{
+ u8 i;
+
+ for (i = 0; i < count; i++)
+ {
+ if (templates[i].localId == localId)
+ {
+ return &templates[i];
+ }
+ }
+ return NULL;
+}
+
+struct EventObjectTemplate *GetBaseTemplateForEventObject(const struct EventObject *eventObject)
+{
+ int i;
+
+ if (eventObject->mapNum != gSaveBlock1Ptr->location.mapNum || eventObject->mapGroup != gSaveBlock1Ptr->location.mapGroup)
+ {
+ return NULL;
+ }
+ for (i = 0; i < 64; i++) // Using ARRAY_COUNT here results in the wrong conditional branch instruction (bls instead of ble)
+ {
+ if (eventObject->localId == gSaveBlock1Ptr->eventObjectTemplates[i].localId)
+ {
+ return &gSaveBlock1Ptr->eventObjectTemplates[i];
+ }
+ }
+ return NULL;
+}
+
+void OverrideTemplateCoordsForEventObject(const struct EventObject *eventObject)
+{
+ struct EventObjectTemplate *eventObjectTemplate;
+
+ eventObjectTemplate = GetBaseTemplateForEventObject(eventObject);
+ if (eventObjectTemplate != NULL)
+ {
+ eventObjectTemplate->x = eventObject->currentCoords.x - 7;
+ eventObjectTemplate->y = eventObject->currentCoords.y - 7;
+ }
+}
+
+void OverrideMovementTypeForEventObject(const struct EventObject *eventObject, const u8 *script)
+{
+ struct EventObjectTemplate *eventObjectTemplate;
+
+ eventObjectTemplate = GetBaseTemplateForEventObject(eventObject);
+ if (eventObjectTemplate != NULL)
+ {
+ eventObjectTemplate->script = script;
+ }
+}
+
+void TryOverrideTemplateCoordsForEventObject(const struct EventObject *eventObject, u8 movementType)
+{
+ struct EventObjectTemplate *eventObjectTemplate;
+
+ eventObjectTemplate = GetBaseTemplateForEventObject(eventObject);
+ if (eventObjectTemplate != NULL)
+ {
+ eventObjectTemplate->movementType = movementType;
+ }
+}
+
+void sub_808F254(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 eventObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ OverrideTemplateCoordsForEventObject(&gEventObjects[eventObjectId]);
+ }
+}
+
+void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat)
+{
+ u8 eventObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ switch (decorCat)
+ {
+ case DECORCAT_DOLL:
+ OverrideMovementTypeForEventObject(&gEventObjects[eventObjectId], EventScript_2766A2);
+ break;
+ case DECORCAT_CUSHION:
+ OverrideMovementTypeForEventObject(&gEventObjects[eventObjectId], EventScript_2766A6);
+ break;
+ }
+ }
+}
+
+void npc_paltag_set_load(u8 palSlot)
+{
+ gpu_pal_allocator_reset__manage_upper_four();
+ gUnknown_020375B6 = 0x11ff;
+ gUnknown_020375B4 = palSlot;
+ if (palSlot == 1)
+ {
+ pal_patch_for_npc_range(gUnknown_0850BE38[gUnknown_020375B4], 0, 6);
+ gReservedSpritePaletteCount = 8;
+ }
+ else
+ {
+ pal_patch_for_npc_range(gUnknown_0850BE38[gUnknown_020375B4], 0, 10);
+ }
+}
+
+u16 npc_paltag_by_palslot(u8 palSlot)
+{
+ u8 i;
+
+ if (palSlot < 10)
+ {
+ return gUnknown_0850BE38[gUnknown_020375B4][palSlot];
+ }
+ for (i = 0; gUnknown_0850BD78[i].tag != 0x11ff; i++)
+ {
+ if (gUnknown_0850BD78[i].tag == gUnknown_020375B6)
+ {
+ return gUnknown_0850BD78[i].data[gUnknown_020375B4];
+ }
+ }
+ return 0x11ff;
+}
+
+movement_type_empty_callback(MovementType_None)
+movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround)
+
+bool8 MovementType_WanderAround_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_WanderAround_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_WanderAround_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (!EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ return FALSE;
+ }
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ sprite->data[1] = 3;
+ return TRUE;
+}
+
+bool8 MovementType_WanderAround_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_WanderAround_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ u8 chosenDirection;
+
+ memcpy(directions, gStandardDirections, sizeof directions);
+ chosenDirection = directions[Random() & 3];
+ SetEventObjectDirection(eventObject, chosenDirection);
+ sprite->data[1] = 5;
+ if (GetCollisionInDirection(eventObject, chosenDirection))
+ {
+ sprite->data[1] = 1;
+ }
+ return TRUE;
+}
+
+bool8 MovementType_WanderAround_Step5(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkNormalMovementAction(eventObject->movementDirection));
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 6;
+ return TRUE;
+}
+
+bool8 MovementType_WanderAround_Step6(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 1;
+ }
+ return FALSE;
+}
+
+bool8 EventObjectIsTrainerAndCloseToPlayer(struct EventObject *eventObject)
+{
+ s16 playerX;
+ s16 playerY;
+ s16 objX;
+ s16 objY;
+ s16 minX;
+ s16 maxX;
+ s16 minY;
+ s16 maxY;
+
+ if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH))
+ {
+ return FALSE;
+ }
+ if (eventObject->trainerType != 1 && eventObject->trainerType != 3)
+ {
+ return FALSE;
+ }
+ PlayerGetDestCoords(&playerX, &playerY);
+ objX = eventObject->currentCoords.x;
+ objY = eventObject->currentCoords.y;
+ minX = objX - eventObject->trainerRange_berryTreeId;
+ minY = objY - eventObject->trainerRange_berryTreeId;
+ maxX = objX + eventObject->trainerRange_berryTreeId;
+ maxY = objY + eventObject->trainerRange_berryTreeId;
+ if (minX > playerX || maxX < playerX || minY > playerY || maxY < playerY)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ if (absdx > absdy)
+ {
+ direction = DIR_EAST;
+ if (dx < 0)
+ {
+ direction = DIR_WEST;
+ }
+ }
+ else
+ {
+ direction = DIR_SOUTH;
+ if (dy < 0)
+ {
+ direction = DIR_NORTH;
+ }
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = DIR_SOUTH;
+ if (dy < 0)
+ {
+ direction = DIR_NORTH;
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_WestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = DIR_EAST;
+ if (dx < 0)
+ {
+ direction = DIR_WEST;
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_WestNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = GetVectorDirection(dx, dy, absdx, absdy);
+ if (direction == DIR_SOUTH)
+ {
+ direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
+ if (direction == DIR_EAST)
+ {
+ direction = DIR_NORTH;
+ }
+ }
+ else if (direction == DIR_EAST)
+ {
+ direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
+ if (direction == DIR_SOUTH)
+ {
+ direction = DIR_NORTH;
+ }
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_EastNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = GetVectorDirection(dx, dy, absdx, absdy);
+ if (direction == DIR_SOUTH)
+ {
+ direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
+ if (direction == DIR_WEST)
+ {
+ direction = DIR_NORTH;
+ }
+ }
+ else if (direction == DIR_WEST)
+ {
+ direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
+ if (direction == DIR_SOUTH)
+ {
+ direction = DIR_NORTH;
+ }
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_WestSouth(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = GetVectorDirection(dx, dy, absdx, absdy);
+ if (direction == DIR_NORTH)
+ {
+ direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
+ if (direction == DIR_EAST)
+ {
+ direction = DIR_SOUTH;
+ }
+ }
+ else if (direction == DIR_EAST)
+ {
+ direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
+ if (direction == DIR_NORTH)
+ {
+ direction = DIR_SOUTH;
+ }
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_EastSouth(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = GetVectorDirection(dx, dy, absdx, absdy);
+ if (direction == DIR_NORTH)
+ {
+ direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
+ if (direction == DIR_WEST)
+ {
+ direction = DIR_SOUTH;
+ }
+ }
+ else if (direction == DIR_WEST)
+ {
+ direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
+ if (direction == DIR_NORTH)
+ {
+ direction = DIR_SOUTH;
+ }
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_SouthNorthWest(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = GetVectorDirection(dx, dy, absdx, absdy);
+ if (direction == DIR_EAST)
+ {
+ direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_SouthNorthEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = GetVectorDirection(dx, dy, absdx, absdy);
+ if (direction == DIR_WEST)
+ {
+ direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_NorthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = GetVectorDirection(dx, dy, absdx, absdy);
+ if (direction == DIR_SOUTH)
+ {
+ direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
+ }
+ return direction;
+}
+
+u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
+{
+ u8 direction;
+
+ direction = GetVectorDirection(dx, dy, absdx, absdy);
+ if (direction == DIR_NORTH)
+ {
+ direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
+ }
+ return direction;
+}
+
+u8 TryGetTrainerEncounterDirection(struct EventObject *eventObject, u8 movementType)
+{
+ s16 dx;
+ s16 dy;
+ s16 absdx;
+ s16 absdy;
+
+ if (!EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ return 0;
+ }
+ PlayerGetDestCoords(&dx, &dy);
+ dx -= eventObject->currentCoords.x;
+ dy -= eventObject->currentCoords.y;
+ absdx = dx;
+ absdy = dy;
+ if (absdx < 0)
+ {
+ absdx = -absdx;
+ }
+ if (absdy < 0)
+ {
+ absdy = -absdy;
+ }
+ return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy);
+}
+
+movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround)
+
+bool8 MovementType_LookAround_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_LookAround_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_LookAround_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_LookAround_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_LookAround_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gStandardDirections, sizeof directions);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_ANY);
+ if (direction == DIR_NONE)
+ direction = directions[Random() & 3];
+
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_WanderUpAndDown, gMovementTypeFuncs_WanderUpAndDown)
+
+bool8 MovementType_WanderUpAndDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_WanderUpAndDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_WanderUpAndDown_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (!EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ return FALSE;
+ }
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ sprite->data[1] = 3;
+ return TRUE;
+}
+
+bool8 MovementType_WanderUpAndDown_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_WanderUpAndDown_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUpAndDownDirections, sizeof directions);
+ direction = directions[Random() & 1];
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 5;
+ if (GetCollisionInDirection(eventObject, direction))
+ {
+ sprite->data[1] = 1;
+ }
+ return TRUE;
+}
+
+bool8 MovementType_WanderUpAndDown_Step5(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkNormalMovementAction(eventObject->movementDirection));
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 6;
+ return TRUE;
+}
+
+bool8 MovementType_WanderUpAndDown_Step6(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 1;
+ }
+ return FALSE;
+}
+
+movement_type_def(MovementType_WanderLeftAndRight, gMovementTypeFuncs_WanderLeftAndRight)
+
+bool8 MovementType_WanderLeftAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_WanderLeftAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_WanderLeftAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (!EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ return FALSE;
+ }
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ sprite->data[1] = 3;
+ return TRUE;
+}
+
+bool8 MovementType_WanderLeftAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_WanderLeftAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gLeftAndRightDirections, sizeof directions);
+ direction = directions[Random() & 1];
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 5;
+ if (GetCollisionInDirection(eventObject, direction))
+ {
+ sprite->data[1] = 1;
+ }
+ return TRUE;
+}
+
+bool8 MovementType_WanderLeftAndRight_Step5(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkNormalMovementAction(eventObject->movementDirection));
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 6;
+ return TRUE;
+}
+
+bool8 MovementType_WanderLeftAndRight_Step6(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 1;
+ }
+ return FALSE;
+}
+
+movement_type_def(MovementType_FaceDirection, gMovementTypeFuncs_FaceDirection)
+
+bool8 MovementType_FaceDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDirection_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ sprite->data[1] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDirection_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->singleMovementActive = 0;
+ return FALSE;
+}
+
+static bool8 EventObjectCB2_BerryTree(struct EventObject *eventObject, struct Sprite *sprite);
+extern bool8 (*const gMovementTypeFuncs_BerryTreeGrowth[])(struct EventObject *eventObject, struct Sprite *sprite);
+void MovementType_BerryTreeGrowth(struct Sprite *sprite)
+{
+ struct EventObject *eventObject;
+
+ eventObject = &gEventObjects[sprite->data[0]];
+ if (!(sprite->data[7] & 1))
+ {
+ get_berry_tree_graphics(eventObject, sprite);
+ sprite->data[7] |= 1;
+ }
+ UpdateEventObjectCurrentMovement(eventObject, sprite, EventObjectCB2_BerryTree);
+}
+static bool8 EventObjectCB2_BerryTree(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ return gMovementTypeFuncs_BerryTreeGrowth[sprite->data[1]](eventObject, sprite);
+}
+
+bool8 MovementType_BerryTreeGrowth_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 berryStage;
+ ClearEventObjectMovement(eventObject, sprite);
+ eventObject->invisible = TRUE;
+ sprite->invisible = TRUE;
+ berryStage = GetStageByBerryTreeId(eventObject->trainerRange_berryTreeId);
+ if (berryStage == 0)
+ {
+ if (!(sprite->data[7] & 4) && sprite->animNum == 4)
+ {
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
+ sprite->animNum = berryStage;
+ }
+ return FALSE;
+ }
+ eventObject->invisible = FALSE;
+ sprite->invisible = FALSE;
+ berryStage --;
+ if (sprite->animNum != berryStage)
+ {
+ sprite->data[1] = 2;
+ return TRUE;
+ }
+ get_berry_tree_graphics(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_BerryTreeGrowth_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ sprite->data[1] = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_BerryTreeGrowth_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 3;
+ sprite->data[2] = 0;
+ sprite->data[7] |= 2;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
+ return TRUE;
+}
+
+bool8 MovementType_BerryTreeGrowth_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->data[2]++;
+ eventObject->invisible = (sprite->data[2] & 0x02) >> 1;
+ sprite->animPaused = TRUE;
+ if (sprite->data[2] > 64)
+ {
+ get_berry_tree_graphics(eventObject, sprite);
+ sprite->data[1] = 4;
+ sprite->data[2] = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_BerryTreeGrowth_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->data[2]++;
+ eventObject->invisible = (sprite->data[2] & 0x02) >> 1;
+ sprite->animPaused = TRUE;
+ if (sprite->data[2] > 64)
+ {
+ sprite->data[1] = 0;
+ sprite->data[7] &= ~0x0002;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+movement_type_def(MovementType_FaceDownAndUp, gMovementTypeFuncs_FaceDownAndUp)
+
+bool8 MovementType_FaceDownAndUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownAndUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownAndUp_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownAndUp_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownAndUp_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUpAndDownDirections, sizeof gUpAndDownDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_NORTH_SOUTH);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceLeftAndRight, gMovementTypeFuncs_FaceLeftAndRight)
+
+bool8 MovementType_FaceLeftAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceLeftAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceLeftAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceLeftAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceLeftAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gLeftAndRightDirections, sizeof gLeftAndRightDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_EAST_WEST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceUpAndLeft, gMovementTypeFuncs_FaceUpAndLeft)
+
+bool8 MovementType_FaceUpAndLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceUpAndLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceUpAndLeft_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceUpAndLeft_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceUpAndLeft_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUpAndLeftDirections, sizeof gUpAndLeftDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_NORTH_WEST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceUpAndRight, gMovementTypeFuncs_FaceUpAndRight)
+
+bool8 MovementType_FaceUpAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceUpAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceUpAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceUpAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceUpAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUpAndRightDirections, sizeof gUpAndRightDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_NORTH_EAST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceDownAndLeft, gMovementTypeFuncs_FaceDownAndLeft)
+
+bool8 MovementType_FaceDownAndLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownAndLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownAndLeft_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownAndLeft_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownAndLeft_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gDownAndLeftDirections, sizeof gDownAndLeftDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_SOUTH_WEST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceDownAndRight, gMovementTypeFuncs_FaceDownAndRight)
+
+bool8 MovementType_FaceDownAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gDownAndRightDirections, sizeof gDownAndRightDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_SOUTH_EAST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceDownUpAndLeft, gMovementTypeFuncs_FaceDownUpAndLeft)
+
+bool8 MovementType_FaceDownUpAndLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownUpAndLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownUpAndLeft_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownUpAndLeft_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownUpAndLeft_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gDownUpAndLeftDirections, sizeof gDownUpAndLeftDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_NORTH_SOUTH_WEST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceDownUpAndRight, gMovementTypeFuncs_FaceDownUpAndRight)
+
+bool8 MovementType_FaceDownUpAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownUpAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownUpAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownUpAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownUpAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gDownUpAndRightDirections, sizeof gDownUpAndRightDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_NORTH_SOUTH_EAST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceUpRightAndLeft, gMovementTypeFuncs_FaceUpLeftAndRight)
+
+bool8 MovementType_FaceUpLeftAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceUpLeftAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceUpLeftAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceUpLeftAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceUpLeftAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUpLeftAndRightDirections, sizeof gUpLeftAndRightDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_NORTH_EAST_WEST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_FaceDownRightAndLeft, gMovementTypeFuncs_FaceDownLeftAndRight)
+
+bool8 MovementType_FaceDownLeftAndRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownLeftAndRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_FaceDownLeftAndRight_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownLeftAndRight_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 4;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_FaceDownLeftAndRight_Step4(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gDownLeftAndRightDirections, sizeof gDownLeftAndRightDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_SOUTH_EAST_WEST);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_RotateCounterclockwise, gMovementTypeFuncs_RotateCounterclockwise)
+
+bool8 MovementType_RotateCounterclockwise_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_RotateCounterclockwise_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, 48);
+ sprite->data[1] = 2;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_RotateCounterclockwise_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_RotateCounterclockwise_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[5];
+ memcpy(directions, gCounterclockwiseDirections, sizeof gCounterclockwiseDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_ANY);
+ if (direction == 0)
+ {
+ direction = directions[eventObject->facingDirection];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 0;
+ return TRUE;
+}
+
+movement_type_def(MovementType_RotateClockwise, gMovementTypeFuncs_RotateClockwise)
+
+bool8 MovementType_RotateClockwise_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_RotateClockwise_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ SetMovementDelay(sprite, 48);
+ sprite->data[1] = 2;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_RotateClockwise_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (WaitForMovementDelay(sprite) || EventObjectIsTrainerAndCloseToPlayer(eventObject))
+ {
+ sprite->data[1] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_RotateClockwise_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[5];
+ memcpy(directions, gClockwiseDirections, sizeof gClockwiseDirections);
+ direction = TryGetTrainerEncounterDirection(eventObject, RUNFOLLOW_ANY);
+ if (direction == 0)
+ {
+ direction = directions[eventObject->facingDirection];
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 0;
+ return TRUE;
+}
+
+movement_type_def(MovementType_WalkBackAndForth, gMovementTypeFuncs_WalkBackAndForth)
+
+bool8 MovementType_WalkBackAndForth_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_WalkBackAndForth_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 direction;
+
+ direction = gInitialMovementTypeFacingDirections[eventObject->movementType];
+ if (eventObject->directionSequenceIndex)
+ {
+ direction = GetOppositeDirection(direction);
+ }
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_WalkBackAndForth_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ bool8 collisionState;
+ u8 movementActionId;
+
+ if (eventObject->directionSequenceIndex && eventObject->initialCoords.x == eventObject->currentCoords.x && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 0;
+ SetEventObjectDirection(eventObject, GetOppositeDirection(eventObject->movementDirection));
+ }
+ collisionState = GetCollisionInDirection(eventObject, eventObject->movementDirection);
+ movementActionId = GetWalkNormalMovementAction(eventObject->movementDirection);
+ if (collisionState == TRUE)
+ {
+ eventObject->directionSequenceIndex++;
+ SetEventObjectDirection(eventObject, GetOppositeDirection(eventObject->movementDirection));
+ movementActionId = GetWalkNormalMovementAction(eventObject->movementDirection);
+ collisionState = GetCollisionInDirection(eventObject, eventObject->movementDirection);
+ }
+ if (collisionState)
+ {
+ movementActionId = GetWalkInPlaceNormalMovementAction(eventObject->facingDirection);
+ }
+ EventObjectSetSingleMovement(eventObject, sprite, movementActionId);
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 3;
+ return TRUE;
+}
+
+bool8 MovementType_WalkBackAndForth_Step3(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 1;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_WalkSequence_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MoveNextDirectionInSequence(struct EventObject *eventObject, struct Sprite *sprite, u8 *route)
+{
+ u8 collisionState;
+ u8 movementActionId;
+
+ if (eventObject->directionSequenceIndex == 3 && eventObject->initialCoords.x == eventObject->currentCoords.x && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 0;
+ }
+ SetEventObjectDirection(eventObject, route[eventObject->directionSequenceIndex]);
+ movementActionId = GetWalkNormalMovementAction(eventObject->movementDirection);
+ collisionState = GetCollisionInDirection(eventObject, eventObject->movementDirection);
+ if (collisionState == TRUE)
+ {
+ eventObject->directionSequenceIndex++;
+ SetEventObjectDirection(eventObject, route[eventObject->directionSequenceIndex]);
+ movementActionId = GetWalkNormalMovementAction(eventObject->movementDirection);
+ collisionState = GetCollisionInDirection(eventObject, eventObject->movementDirection);
+ }
+ if (collisionState)
+ {
+ movementActionId = GetWalkInPlaceNormalMovementAction(eventObject->facingDirection);
+ }
+ EventObjectSetSingleMovement(eventObject, sprite, movementActionId);
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 MovementType_WalkSequence_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 1;
+ }
+ return FALSE;
+}
+
+movement_type_def(MovementType_WalkSequenceUpRightLeftDown, gMovementTypeFuncs_WalkSequenceUpRightLeftDown)
+
+u8 MovementType_WalkSequenceUpRightLeftDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gUpRightLeftDownDirections)];
+ memcpy(directions, gUpRightLeftDownDirections, sizeof(gUpRightLeftDownDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceRightLeftDownUp, gMovementTypeFuncs_WalkSequenceRightLeftDownUp)
+
+u8 MovementType_WalkSequenceRightLeftDownUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gRightLeftDownUpDirections)];
+ memcpy(directions, gRightLeftDownUpDirections, sizeof(gRightLeftDownUpDirections));
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 2;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceDownUpRightLeft, gMovementTypeFuncs_WalkSequenceDownUpRightLeft)
+
+u8 MovementType_WalkSequenceDownUpRightLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gDownUpRightLeftDirections)];
+ memcpy(directions, gDownUpRightLeftDirections, sizeof(gDownUpRightLeftDirections));
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 2;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceLeftDownUpRight, gMovementTypeFuncs_WalkSequenceLeftDownUpRight)
+
+u8 MovementType_WalkSequenceLeftDownUpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gLeftDownUpRightDirections)];
+ memcpy(directions, gLeftDownUpRightDirections, sizeof(gLeftDownUpRightDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceUpLeftRightDown, gMovementTypeFuncs_WalkSequenceUpLeftRightDown)
+
+u8 MovementType_WalkSequenceUpLeftRightDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gUpLeftRightDownDirections)];
+ memcpy(directions, gUpLeftRightDownDirections, sizeof(gUpLeftRightDownDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceLeftRightDownUp, gMovementTypeFuncs_WalkSequenceLeftRightDownUp)
+
+u8 MovementType_WalkSequenceLeftRightDownUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gLeftRightDownUpDirections)];
+ memcpy(directions, gLeftRightDownUpDirections, sizeof(gLeftRightDownUpDirections));
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 2;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceDownUpLeftRight, gMovementTypeFuncs_WalkSequenceDownUpLeftRight)
+
+u8 MovementType_WalkSequenceDownUpLeftRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gStandardDirections)];
+ memcpy(directions, gStandardDirections, sizeof(gStandardDirections));
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 2;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceRightDownUpLeft, gMovementTypeFuncs_WalkSequenceRightDownUpLeft)
+
+u8 MovementType_WalkSequenceRightDownUpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gRightDownUpLeftDirections)];
+ memcpy(directions, gRightDownUpLeftDirections, sizeof(gRightDownUpLeftDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceLeftUpDownRight, gMovementTypeFuncs_WalkSequenceLeftUpDownRight)
+
+u8 MovementType_WalkSequenceLeftUpDownRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gLeftUpDownRightDirections)];
+ memcpy(directions, gLeftUpDownRightDirections, sizeof(gLeftUpDownRightDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceUpDownRightLeft, gMovementTypeFuncs_WalkSequenceUpDownRightLeft)
+
+u8 MovementType_WalkSequenceUpDownRightLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gUpDownRightLeftDirections)];
+ memcpy(directions, gUpDownRightLeftDirections, sizeof(gUpDownRightLeftDirections));
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 2;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceRightLeftUpDown, gMovementTypeFuncs_WalkSequenceRightLeftUpDown)
+
+u8 MovementType_WalkSequenceRightLeftUpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gRightLeftUpDownDirections)];
+ memcpy(directions, gRightLeftUpDownDirections, sizeof(gRightLeftUpDownDirections));
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 2;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceDownRightLeftUp, gMovementTypeFuncs_WalkSequenceDownRightLeftUp)
+
+u8 MovementType_WalkSequenceDownRightLeftUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gDownRightLeftUpDirections)];
+ memcpy(directions, gDownRightLeftUpDirections, sizeof(gDownRightLeftUpDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceRightUpDownLeft, gMovementTypeFuncs_WalkSequenceRightUpDownLeft)
+
+u8 MovementType_WalkSequenceRightUpDownLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gRightUpDownLeftDirections)];
+ memcpy(directions, gRightUpDownLeftDirections, sizeof(gRightUpDownLeftDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceUpDownLeftRight, gMovementTypeFuncs_WalkSequenceUpDownLeftRight)
+
+u8 MovementType_WalkSequenceUpDownLeftRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gUpDownLeftRightDirections)];
+ memcpy(directions, gUpDownLeftRightDirections, sizeof(gUpDownLeftRightDirections));
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 2;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceLeftRightUpDown, gMovementTypeFuncs_WalkSequenceLeftRightUpDown)
+
+u8 MovementType_WalkSequenceLeftRightUpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gLeftRightUpDownDirections)];
+ memcpy(directions, gLeftRightUpDownDirections, sizeof(gLeftRightUpDownDirections));
+ if (eventObject->directionSequenceIndex == 1 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 2;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceDownLeftRightUp, gMovementTypeFuncs_WalkSequenceDownLeftRightUp)
+
+u8 MovementType_WalkSequenceDownLeftRightUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gDownLeftRightUpDirections)];
+ memcpy(directions, gDownLeftRightUpDirections, sizeof(gDownLeftRightUpDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceUpLeftDownRight, gMovementTypeFuncs_WalkSequenceUpLeftDownRight)
+
+u8 MovementType_WalkSequenceUpLeftDownRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gUpLeftDownRightDirections)];
+ memcpy(directions, gUpLeftDownRightDirections, sizeof(gUpLeftDownRightDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceDownRightUpLeft, gMovementTypeFuncs_WalkSequenceDownRightUpLeft)
+
+u8 MovementType_WalkSequenceDownRightUpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gDownRightUpLeftDirections)];
+ memcpy(directions, gDownRightUpLeftDirections, sizeof(gDownRightUpLeftDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceLeftDownRightUp, gMovementTypeFuncs_WalkSequenceLeftDownRightUp)
+
+u8 MovementType_WalkSequenceLeftDownRightUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gLeftDownRightUpDirections)];
+ memcpy(directions, gLeftDownRightUpDirections, sizeof(gLeftDownRightUpDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceRightUpLeftDown, gMovementTypeFuncs_WalkSequenceRightUpLeftDown)
+
+u8 MovementType_WalkSequenceRightUpLeftDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gRightUpLeftDownDirections)];
+ memcpy(directions, gRightUpLeftDownDirections, sizeof(gRightUpLeftDownDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceUpRightDownLeft, gMovementTypeFuncs_WalkSequenceUpRightDownLeft)
+
+u8 MovementType_WalkSequenceUpRightDownLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gUpRightDownLeftDirections)];
+ memcpy(directions, gUpRightDownLeftDirections, sizeof(gUpRightDownLeftDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceDownLeftUpRight, gMovementTypeFuncs_WalkSequenceDownLeftUpRight)
+
+u8 MovementType_WalkSequenceDownLeftUpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gDownLeftUpRightDirections)];
+ memcpy(directions, gDownLeftUpRightDirections, sizeof(gDownLeftUpRightDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.y == eventObject->currentCoords.y)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceLeftUpRightDown, gMovementTypeFuncs_WalkSequenceLeftUpRightDown)
+
+u8 MovementType_WalkSequenceLeftUpRightDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gLeftUpRightDownDirections)];
+ memcpy(directions, gLeftUpRightDownDirections, sizeof(gLeftUpRightDownDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_WalkSequenceRightDownLeftUp, gMovementTypeFuncs_WalkSequenceRightDownLeftUp)
+
+u8 MovementType_WalkSequenceRightDownLeftUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 directions[sizeof(gRightDownLeftUpDirections)];
+ memcpy(directions, gRightDownLeftUpDirections, sizeof(gRightDownLeftUpDirections));
+ if (eventObject->directionSequenceIndex == 2 && eventObject->initialCoords.x == eventObject->currentCoords.x)
+ {
+ eventObject->directionSequenceIndex = 3;
+ }
+ return MoveNextDirectionInSequence(eventObject, sprite, directions);
+}
+
+movement_type_def(MovementType_CopyPlayer, gMovementTypeFuncs_CopyPlayer)
+
+bool8 MovementType_CopyPlayer_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ if (eventObject->directionSequenceIndex == 0)
+ {
+ eventObject->directionSequenceIndex = GetPlayerFacingDirection();
+ }
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+bool8 MovementType_CopyPlayer_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (gEventObjects[gPlayerAvatar.eventObjectId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
+ {
+ return FALSE;
+ }
+ return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](eventObject, sprite, GetPlayerMovementDirection(), NULL);
+}
+
+bool8 MovementType_CopyPlayer_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ eventObject->singleMovementActive = 0;
+ sprite->data[1] = 1;
+ }
+ return FALSE;
+}
+
+bool8 CopyablePlayerMovement_None(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ return FALSE;
+}
+
+bool8 CopyablePlayerMovement_FaceDirection(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, playerDirection)));
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 CopyablePlayerMovement_GoSpeed0(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ if (EventObjectIsFarawayIslandMew(eventObject))
+ {
+ direction = sub_81D427C();
+ if (direction == 0)
+ {
+ direction = playerDirection;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+ }
+ }
+ else
+ {
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ }
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkNormalMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
+ }
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 CopyablePlayerMovement_GoSpeed1(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkFastMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
+ }
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 CopyablePlayerMovement_GoSpeed2(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkFastestMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
+ }
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 CopyablePlayerMovement_Slide(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetSlideMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
+ }
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 cph_IM_DIFFERENT(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ u32 direction;
+
+ direction = playerDirection;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectSetSingleMovement(eventObject, sprite, GetJumpInPlaceMovementAction(direction));
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 CopyablePlayerMovement_GoSpeed4(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ EventObjectMoveDestCoords(eventObject, direction, &x, &y);
+ EventObjectSetSingleMovement(eventObject, sprite, GetJumpMovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
+ }
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+bool8 CopyablePlayerMovement_Jump(struct EventObject *eventObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ MoveCoordsInDirection(direction, &x, &y, 2, 2);
+ EventObjectSetSingleMovement(eventObject, sprite, GetJump2MovementAction(direction));
+ if (GetCollisionAtCoords(eventObject, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
+ }
+ eventObject->singleMovementActive = 1;
+ sprite->data[1] = 2;
+ return TRUE;
+}
+
+movement_type_def(MovementType_CopyPlayerInGrass, gMovementTypeFuncs_CopyPlayerInGrass)
+
+bool8 MovementType_CopyPlayerInGrass_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (gEventObjects[gPlayerAvatar.eventObjectId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
+ {
+ return FALSE;
+ }
+ return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](eventObject, sprite, GetPlayerMovementDirection(), MetatileBehavior_IsPokeGrass);
+}
+
+void MovementType_TreeDisguise(struct Sprite *sprite)
+{
+ struct EventObject *eventObject;
+
+ eventObject = &gEventObjects[sprite->data[0]];
+ if (eventObject->directionSequenceIndex == 0 || (eventObject->directionSequenceIndex == 1 && !sprite->data[7]))
+ {
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ eventObject->fieldEffectSpriteId = FieldEffectStart(FLDEFF_TREE_DISGUISE);
+ eventObject->directionSequenceIndex = 1;
+ sprite->data[7]++;
+ }
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, MovementType_Disguise_Callback);
+}
+
+static bool8 MovementType_Disguise_Callback(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ return FALSE;
+}
+
+void MovementType_MountainDisguise(struct Sprite *sprite)
+{
+ struct EventObject *eventObject;
+
+ eventObject = &gEventObjects[sprite->data[0]];
+ if (eventObject->directionSequenceIndex == 0 || (eventObject->directionSequenceIndex == 1 && !sprite->data[7]))
+ {
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ eventObject->fieldEffectSpriteId = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE);
+ eventObject->directionSequenceIndex = 1;
+ sprite->data[7]++;
+ }
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, MovementType_Disguise_Callback);
+}
+
+void MovementType_Hidden(struct Sprite *sprite)
+{
+ if (!sprite->data[7])
+ {
+ gEventObjects[sprite->data[0]].fixedPriority = TRUE;
+ sprite->subspriteMode = 2;
+ sprite->oam.priority = 3;
+ sprite->data[7]++;
+ }
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, MovementType_Hidden_Callback);
+}
+
+static bool8 MovementType_Hidden_Callback(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ return gMovementTypeFuncs_Hidden[sprite->data[1]](eventObject, sprite);
+}
+
+bool8 MovementType_Hidden_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ return FALSE;
+}
+
+bool8 MovementType_MoveInPlace_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ sprite->data[1] = 0;
+ }
+ return FALSE;
+}
+
+movement_type_def(MovementType_WalkInPlace, gMovementTypeFuncs_WalkInPlace)
+
+bool8 MovementType_WalkInPlace_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkInPlaceNormalMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_WalkSlowlyInPlace, gMovementTypeFuncs_WalkSlowlyInPlace)
+
+bool8 MovementType_WalkSlowlyInPlace_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkInPlaceSlowMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_JogInPlace, gMovementTypeFuncs_JogInPlace)
+
+bool8 MovementType_JogInPlace_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkInPlaceFastMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_RunInPlace, gMovementTypeFuncs_RunInPlace)
+
+bool8 MovementType_RunInPlace_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetWalkInPlaceFastestMovementAction(eventObject->facingDirection));
+ sprite->data[1] = 1;
+ return TRUE;
+}
+
+movement_type_def(MovementType_Invisible, gMovementTypeFuncs_Invisible)
+
+bool8 MovementType_Invisible_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ ClearEventObjectMovement(eventObject, sprite);
+ EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(eventObject->facingDirection));
+ eventObject->invisible = TRUE;
+ sprite->data[1] = 1;
+ return TRUE;
+}
+bool8 MovementType_Invisible_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (EventObjectExecSingleMovementAction(eventObject, sprite))
+ {
+ sprite->data[1] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementType_Invisible_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->singleMovementActive = 0;
+ return FALSE;
+}
+
+static void ClearEventObjectMovement(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->singleMovementActive = 0;
+ eventObject->heldMovementActive = FALSE;
+ eventObject->heldMovementFinished = FALSE;
+ eventObject->movementActionId = 0xFF;
+ sprite->data[1] = 0;
+}
+
+u8 GetFaceDirectionAnimNum(u8 direction)
+{
+ return gFaceDirectionAnimNums[direction];
+}
+
+u8 GetMoveDirectionAnimNum(u8 direction)
+{
+ return gMoveDirectionAnimNums[direction];
+}
+
+u8 GetMoveDirectionFastAnimNum(u8 direction)
+{
+ return gMoveDirectionFastAnimNums[direction];
+}
+
+u8 GetMoveDirectionFasterAnimNum(u8 direction)
+{
+ return gMoveDirectionFasterAnimNums[direction];
+}
+
+u8 GetMoveDirectionFastestAnimNum(u8 direction)
+{
+ return gMoveDirectionFastestAnimNums[direction];
+}
+
+u8 GetJumpSpecialDirectionAnimNum(u8 direction)
+{
+ return gJumpSpecialDirectionAnimNums[direction];
+}
+
+u8 GetAcroWheelieDirectionAnimNum(u8 direction)
+{
+ return gAcroWheelieDirectionAnimNums[direction];
+}
+
+u8 Unref_GetAnimNums_08375633(u8 direction)
+{
+ return gUnrefAnimNums_08375633[direction];
+}
+
+u8 GetAcroEndWheelieDirectionAnimNum(u8 direction)
+{
+ return gAcroEndWheelieDirectionAnimNums[direction];
+}
+
+u8 GetAcroUnusedActionDirectionAnimNum(u8 direction)
+{
+ return gAcroUnusedActionDirectionAnimNums[direction];
+}
+
+u8 GetAcroWheeliePedalDirectionAnimNum(u8 direction)
+{
+ return gAcroWheeliePedalDirectionAnimNums[direction];
+}
+
+u8 GetFishingDirectionAnimNum(u8 direction)
+{
+ return gFishingDirectionAnimNums[direction];
+}
+
+u8 GetFishingNoCatchDirectionAnimNum(u8 direction)
+{
+ return gFishingNoCatchDirectionAnimNums[direction];
+}
+
+u8 GetFishingBiteDirectionAnimNum(u8 direction)
+{
+ return gFishingBiteDirectionAnimNums[direction];
+}
+
+u8 GetRunningDirectionAnimNum(u8 direction)
+{
+ return gRunningDirectionAnimNums[direction];
+}
+
+static const struct UnkStruct_085094AC *sub_8092A4C(const union AnimCmd *const *anims)
+{
+ const struct UnkStruct_085094AC *retval;
+
+ for (retval = gUnknown_085094AC; retval->anims != NULL; retval++)
+ {
+ if (retval->anims == anims)
+ {
+ return retval;
+ }
+ }
+ return NULL;
+}
+
+void npc_apply_anim_looping(struct EventObject *eventObject, struct Sprite *sprite, u8 animNum)
+{
+ const struct UnkStruct_085094AC *unk85094AC;
+
+ if (!eventObject->inanimate)
+ {
+ sprite->animNum = animNum;
+ unk85094AC = sub_8092A4C(sprite->anims);
+ if (unk85094AC != NULL)
+ {
+ if (sprite->animCmdIndex == unk85094AC->animPos[0])
+ {
+ sprite->animCmdIndex = unk85094AC->animPos[3];
+ }
+ else if (sprite->animCmdIndex == unk85094AC->animPos[1])
+ {
+ sprite->animCmdIndex = unk85094AC->animPos[2];
+ }
+ }
+ SeekSpriteAnim(sprite, sprite->animCmdIndex);
+ }
+}
+
+void obj_npc_animation_step(struct EventObject *eventObject, struct Sprite *sprite, u8 animNum)
+{
+ const struct UnkStruct_085094AC *unk85094AC;
+
+ if (!eventObject->inanimate)
+ {
+ u8 animPos;
+
+ sprite->animNum = animNum;
+ unk85094AC = sub_8092A4C(sprite->anims);
+ if (unk85094AC != NULL)
+ {
+ animPos = unk85094AC->animPos[1];
+ if (sprite->animCmdIndex <= unk85094AC->animPos[0])
+ {
+ animPos = unk85094AC->animPos[0];
+ }
+ SeekSpriteAnim(sprite, animPos);
+ }
+ }
+}
+
+// file boundary?
+
+u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2)
+{
+ if (x1 > x2)
+ {
+ return DIR_WEST;
+ }
+ if (x1 < x2)
+ {
+ return DIR_EAST;
+ }
+ if (y1 > y2)
+ {
+ return DIR_NORTH;
+ }
+ return DIR_SOUTH;
+}
+
+void SetTrainerMovementType(struct EventObject *eventObject, u8 movementType)
+{
+ eventObject->movementType = movementType;
+ eventObject->directionSequenceIndex = 0;
+ eventObject->playerCopyableMovement = 0;
+ gSprites[eventObject->spriteId].callback = sMovementTypeCallbacks[movementType];
+ gSprites[eventObject->spriteId].data[1] = 0;
+}
+
+u8 GetTrainerFacingDirectionMovementType(u8 direction)
+{
+ return gTrainerFacingDirectionMovementTypes[direction];
+}
+
+static u8 GetCollisionInDirection(struct EventObject *eventObject, u8 direction)
+{
+ s16 x;
+ s16 y;
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ MoveCoords(direction, &x, &y);
+ return GetCollisionAtCoords(eventObject, x, y, direction);
+}
+
+u8 GetCollisionAtCoords(struct EventObject *eventObject, s16 x, s16 y, u32 dirn)
+{
+ u8 direction;
+
+ direction = dirn;
+ if (IsCoordOutsideEventObjectMovementRange(eventObject, x, y))
+ return 1;
+ else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(eventObject, x, y, direction))
+ return 2;
+ else if (eventObject->trackedByCamera && !CanCameraMoveInDirection(direction))
+ return 2;
+ else if (IsZCoordMismatchAt(eventObject->currentElevation, x, y))
+ return 3;
+ else if (DoesObjectCollideWithObjectAt(eventObject, x, y))
+ return 4;
+ return 0;
+}
+
+u8 GetCollisionFlagsAtCoords(struct EventObject *eventObject, s16 x, s16 y, u8 direction)
+{
+ u8 flags = 0;
+
+ if (IsCoordOutsideEventObjectMovementRange(eventObject, x, y))
+ flags |= 1;
+ if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(eventObject, x, y, direction) || (eventObject->trackedByCamera && !CanCameraMoveInDirection(direction)))
+ flags |= 2;
+ if (IsZCoordMismatchAt(eventObject->currentElevation, x, y))
+ flags |= 4;
+ if (DoesObjectCollideWithObjectAt(eventObject, x, y))
+ flags |= 8;
+ return flags;
+}
+
+static bool8 IsCoordOutsideEventObjectMovementRange(struct EventObject *eventObject, s16 x, s16 y)
+{
+ s16 left;
+ s16 right;
+ s16 top;
+ s16 bottom;
+
+ if (eventObject->range.as_nybbles.x != 0)
+ {
+ left = eventObject->initialCoords.x - eventObject->range.as_nybbles.x;
+ right = eventObject->initialCoords.x + eventObject->range.as_nybbles.x;
+ if (left > x || right < x)
+ {
+ return TRUE;
+ }
+ }
+ if (eventObject->range.as_nybbles.y != 0)
+ {
+ top = eventObject->initialCoords.y - eventObject->range.as_nybbles.y;
+ bottom = eventObject->initialCoords.y + eventObject->range.as_nybbles.y;
+ if (top > y || bottom < y)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 IsMetatileDirectionallyImpassable(struct EventObject *eventObject, s16 x, s16 y, u8 direction)
+{
+ if (gOppositeDirectionBlockedMetatileFuncs[direction - 1](eventObject->currentMetatileBehavior)
+ || gDirectionBlockedMetatileFuncs[direction - 1](MapGridGetMetatileBehaviorAt(x, y)))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 DoesObjectCollideWithObjectAt(struct EventObject *eventObject, s16 x, s16 y)
+{
+ u8 i;
+ struct EventObject *curObject;
+
+ for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ {
+ curObject = &gEventObjects[i];
+ if (curObject->active && curObject != eventObject)
+ {
+ if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y))
+ {
+ if (AreZCoordsCompatible(eventObject->currentElevation, curObject->currentElevation))
+ {
+ return TRUE;
+ }
+ }
+ }
+ }
+ return FALSE;
+}
+
+bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 eventObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId)
+ && gSprites[gEventObjects[eventObjectId].spriteId].data[7] & 2)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_8092EF0(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 eventObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
+ {
+ gSprites[gEventObjects[eventObjectId].spriteId].data[7] |= 0x04;
+ }
+}
+
+void MoveCoords(u8 direction, s16 *x, s16 *y)
+{
+ *x += gDirectionToVectors[direction].x;
+ *y += gDirectionToVectors[direction].y;
+}
+
+void sub_8092F60(u8 direction, s16 *x, s16 *y)
+{
+ *x += gDirectionToVectors[direction].x << 4;
+ *y += gDirectionToVectors[direction].y << 4;
+}
+
+static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
+{
+ u8 direction = dir;
+ s16 dx2 = (u16)deltaX;
+ s16 dy2 = (u16)deltaY;
+ if (gDirectionToVectors[direction].x > 0)
+ *x += dx2;
+ if (gDirectionToVectors[direction].x < 0)
+ *x -= dx2;
+ if (gDirectionToVectors[direction].y > 0)
+ *y += dy2;
+ if (gDirectionToVectors[direction].y < 0)
+ *y -= dy2;
+}
+
+void sub_8092FF0(s16 x, s16 y, s16 *dest_x, s16 *dest_y)
+{
+ *dest_x = (x - gSaveBlock1Ptr->pos.x) << 4;
+ *dest_y = (y - gSaveBlock1Ptr->pos.y) << 4;
+ *dest_x -= gUnknown_03005DEC;
+ *dest_y -= gUnknown_03005DE8;
+}
+
+void sub_8093038(s16 x, s16 y, s16 *dest_x, s16 *dest_y)
+{
+ s16 dx;
+ s16 dy;
+
+ dx = -gUnknown_03005DEC - gUnknown_03005DD0.x;
+ dy = -gUnknown_03005DE8 - gUnknown_03005DD0.y;
+ if (gUnknown_03005DD0.x > 0)
+ {
+ dx += 0x10;
+ }
+ if (gUnknown_03005DD0.x < 0)
+ {
+ dx -= 0x10;
+ }
+ if (gUnknown_03005DD0.y > 0)
+ {
+ dy += 0x10;
+ }
+ if (gUnknown_03005DD0.y < 0)
+ {
+ dy -= 0x10;
+ }
+ *dest_x = ((x - gSaveBlock1Ptr->pos.x) << 4) + dx;
+ *dest_y = ((y - gSaveBlock1Ptr->pos.y) << 4) + dy;
+}
+
+void sub_80930E0(s16 *x, s16 *y, s16 dx, s16 dy)
+{
+ sub_8093038(*x, *y, x, y);
+ *x += dx;
+ *y += dy;
+}
+
+static void GetEventObjectMovingCameraOffset(s16 *x, s16 *y)
+{
+ *x = 0;
+ *y = 0;
+ if (gUnknown_03005DD0.x > 0)
+ {
+ (*x)++;
+ }
+ if (gUnknown_03005DD0.x < 0)
+ {
+ (*x) --;
+ }
+ if (gUnknown_03005DD0.y > 0)
+ {
+ (*y)++;
+ }
+ if (gUnknown_03005DD0.y < 0)
+ {
+ (*y) --;
+ }
+}
+
+void EventObjectMoveDestCoords(struct EventObject *eventObject, u32 direction, s16 *x, s16 *y)
+{
+ u8 newDirn = direction;
+ *x = eventObject->currentCoords.x;
+ *y = eventObject->currentCoords.y;
+ MoveCoords(newDirn, x, y);
+}
+
+bool8 EventObjectIsMovementOverridden(struct EventObject *eventObject)
+{
+ if (eventObject->singleMovementActive || eventObject->heldMovementActive)
+ return TRUE;
+
+ return FALSE;
+}
+
+bool8 EventObjectIsHeldMovementActive(struct EventObject *eventObject)
+{
+ if (eventObject->heldMovementActive && eventObject->movementActionId != 0xFF)
+ return TRUE;
+
+ return FALSE;
+}
+
+bool8 EventObjectSetHeldMovement(struct EventObject *eventObject, u8 movementActionId)
+{
+ if (EventObjectIsMovementOverridden(eventObject))
+ return TRUE;
+
+ UnfreezeEventObject(eventObject);
+ eventObject->movementActionId = movementActionId;
+ eventObject->heldMovementActive = TRUE;
+ eventObject->heldMovementFinished = FALSE;
+ gSprites[eventObject->spriteId].data[2] = 0;
+ return FALSE;
+}
+
+void EventObjectForceSetHeldMovement(struct EventObject *eventObject, u8 movementActionId)
+{
+ EventObjectClearHeldMovementIfActive(eventObject);
+ EventObjectSetHeldMovement(eventObject, movementActionId);
+}
+
+void EventObjectClearHeldMovementIfActive(struct EventObject *eventObject)
+{
+ if (eventObject->heldMovementActive)
+ EventObjectClearHeldMovement(eventObject);
+}
+
+void EventObjectClearHeldMovement(struct EventObject *eventObject)
+{
+ eventObject->movementActionId = 0xFF;
+ eventObject->heldMovementActive = FALSE;
+ eventObject->heldMovementFinished = FALSE;
+ gSprites[eventObject->spriteId].data[1] = 0;
+ gSprites[eventObject->spriteId].data[2] = 0;
+}
+
+u8 EventObjectCheckHeldMovementStatus(struct EventObject *eventObject)
+{
+ if (eventObject->heldMovementActive)
+ return eventObject->heldMovementFinished;
+
+ return 16;
+}
+
+u8 EventObjectClearHeldMovementIfFinished(struct EventObject *eventObject)
+{
+ u8 heldMovementStatus = EventObjectCheckHeldMovementStatus(eventObject);
+ if (heldMovementStatus != 0 && heldMovementStatus != 16)
+ EventObjectClearHeldMovementIfActive(eventObject);
+
+ return heldMovementStatus;
+}
+
+u8 EventObjectGetHeldMovementActionId(struct EventObject *eventObject)
+{
+ if (eventObject->heldMovementActive)
+ return eventObject->movementActionId;
+
+ return 0xFF;
+}
+
+void UpdateEventObjectCurrentMovement(struct EventObject *eventObject, struct Sprite *sprite, bool8 (*callback)(struct EventObject *, struct Sprite *))
+{
+ DoGroundEffects_OnSpawn(eventObject, sprite);
+ TryEnableEventObjectAnim(eventObject, sprite);
+ if (EventObjectIsHeldMovementActive(eventObject))
+ {
+ EventObjectExecHeldMovementAction(eventObject, sprite);
+ }
+ else if (!eventObject->frozen)
+ {
+ while (callback(eventObject, sprite));
+ }
+ DoGroundEffects_OnBeginStep(eventObject, sprite);
+ DoGroundEffects_OnFinishStep(eventObject, sprite);
+ UpdateEventObjectSpriteAnimPause(eventObject, sprite);
+ UpdateEventObjectVisibility(eventObject, sprite);
+ EventObjectUpdateSubpriority(eventObject, sprite);
+}
+
+#define dirn_to_anim(name, table)\
+u8 name(u32 idx)\
+{\
+ u8 direction;\
+ u8 animIds[sizeof(table)];\
+ direction = idx;\
+ memcpy(animIds, (table), sizeof(table));\
+ if (direction > DIR_EAST) direction = 0;\
+ return animIds[direction];\
+}
+
+dirn_to_anim(GetFaceDirectionMovementAction, gFaceDirectionMovementActions);
+dirn_to_anim(GetWalkSlowMovementAction, gWalkSlowMovementActions);
+dirn_to_anim(GetWalkNormalMovementAction, gWalkNormalMovementActions);
+dirn_to_anim(GetWalkFastMovementAction, gWalkFastMovementActions);
+dirn_to_anim(GetRideWaterCurrentMovementAction, gRideWaterCurrentMovementActions);
+dirn_to_anim(GetWalkFastestMovementAction, gWalkFastestMovementActions);
+dirn_to_anim(GetSlideMovementAction, gSlideMovementActions);
+dirn_to_anim(GetPlayerRunMovementAction, gPlayerRunMovementActions);
+dirn_to_anim(GetJump2MovementAction, gJump2MovementActions);
+dirn_to_anim(GetJumpInPlaceMovementAction, gJumpInPlaceMovementActions);
+dirn_to_anim(GetJumpInPlaceTurnAroundMovementAction, gJumpInPlaceTurnAroundMovementActions);
+dirn_to_anim(GetJumpMovementAction, gJumpMovementActions);
+dirn_to_anim(GetJumpSpecialMovementAction, gJumpSpecialMovementActions);
+dirn_to_anim(GetWalkInPlaceSlowMovementAction, gWalkInPlaceSlowMovementActions);
+dirn_to_anim(GetWalkInPlaceNormalMovementAction, gWalkInPlaceNormalMovementActions);
+dirn_to_anim(GetWalkInPlaceFastMovementAction, gWalkInPlaceFastMovementActions);
+dirn_to_anim(GetWalkInPlaceFastestMovementAction, gWalkInPlaceFastestMovementActions);
+
+bool8 EventObjectFaceOppositeDirection(struct EventObject *eventObject, u8 direction)
+{
+ return EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(GetOppositeDirection(direction)));
+}
+
+dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, gAcroWheelieFaceDirectionMovementActions);
+dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, gAcroPopWheelieFaceDirectionMovementActions);
+dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, gAcroEndWheelieFaceDirectionMovementActions);
+dirn_to_anim(GetAcroWheelieHopFaceDirectionMovementAction, gAcroWheelieHopFaceDirectionMovementActions);
+dirn_to_anim(GetAcroWheelieHopDirectionMovementAction, gAcroWheelieHopDirectionMovementActions);
+dirn_to_anim(GetAcroWheelieJumpDirectionMovementAction, gAcroWheelieJumpDirectionMovementActions);
+dirn_to_anim(GetAcroWheelieInPlaceDirectionMovementAction, gAcroWheelieInPlaceDirectionMovementActions);
+dirn_to_anim(GetAcroPopWheelieMoveDirectionMovementAction, gAcroPopWheelieMoveDirectionMovementActions);
+dirn_to_anim(GetAcroWheelieMoveDirectionMovementAction, gAcroWheelieMoveDirectionMovementActions);
+dirn_to_anim(GetAcroEndWheelieMoveDirectionMovementAction, gAcroEndWheelieMoveDirectionMovementActions);
+
+u8 GetOppositeDirection(u8 direction)
+{
+ u8 directions[sizeof gOppositeDirections];
+
+ memcpy(directions, gOppositeDirections, sizeof gOppositeDirections);
+ if (direction < 1 || direction > (sizeof gOppositeDirections))
+ {
+ return direction;
+ }
+ return directions[direction - 1];
+}
+
+static u32 zffu_offset_calc(u8 a0, u8 a1)
+{
+ return gUnknown_0850DC2F[a0 - 1][a1 - 1];
+}
+
+static u32 state_to_direction(u8 a0, u32 a1, u32 a2)
+{
+ u32 zffuOffset;
+ u8 a1_2;
+ u8 a2_2;
+
+ a1_2 = a1;
+ a2_2 = a2;
+ if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST)
+ {
+ return 0;
+ }
+ zffuOffset = zffu_offset_calc(a1_2, a2);
+ return gUnknown_0850DC3F[a0 - 1][zffuOffset - 1];
+}
+
+static void EventObjectExecHeldMovementAction(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (gMovementActionFuncs[eventObject->movementActionId][sprite->data[2]](eventObject, sprite))
+ {
+ eventObject->heldMovementFinished = TRUE;
+ }
+}
+
+static bool8 EventObjectExecSingleMovementAction(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (gMovementActionFuncs[eventObject->movementActionId][sprite->data[2]](eventObject, sprite))
+ {
+ eventObject->movementActionId = 0xFF;
+ sprite->data[2] = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void EventObjectSetSingleMovement(struct EventObject *eventObject, struct Sprite *sprite, u8 animId)
+{
+ eventObject->movementActionId = animId;
+ sprite->data[2] = 0;
+}
+
+static void FaceDirection(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
+{
+ SetEventObjectDirection(eventObject, direction);
+ ShiftStillEventObjectCoords(eventObject);
+ obj_npc_animation_step(eventObject, sprite, GetMoveDirectionAnimNum(eventObject->facingDirection));
+ sprite->animPaused = TRUE;
+ sprite->data[2] = 1;
+}
+
+bool8 MovementAction_FaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ FaceDirection(eventObject, sprite, DIR_SOUTH);
+ return TRUE;
+}
+
+bool8 MovementAction_FaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ FaceDirection(eventObject, sprite, DIR_NORTH);
+ return TRUE;
+}
+
+bool8 MovementAction_FaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ FaceDirection(eventObject, sprite, DIR_WEST);
+ return TRUE;
+}
+
+bool8 MovementAction_FaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ FaceDirection(eventObject, sprite, DIR_EAST);
+ return TRUE;
+}
+
+void npc_apply_direction(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 speed)
+{
+ s16 x;
+ s16 y;
+
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ SetEventObjectDirection(eventObject, direction);
+ MoveCoords(direction, &x, &y);
+ ShiftEventObjectCoords(eventObject, x, y);
+ oamt_npc_ministep_reset(sprite, direction, speed);
+ sprite->animPaused = FALSE;
+ if (gLockedAnimEventObjects != NULL && FindLockedEventObjectIndex(eventObject) != NUM_EVENT_OBJECTS)
+ {
+ sprite->animPaused = TRUE;
+ }
+ eventObject->triggerGroundEffectsOnMove = TRUE;
+ sprite->data[2] = 1;
+}
+
+void do_go_anim(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 speed)
+{
+ u8 (*functions[ARRAY_COUNT(gUnknown_0850DEE8)])(u8);
+
+ memcpy(functions, gUnknown_0850DEE8, sizeof gUnknown_0850DEE8);
+ npc_apply_direction(eventObject, sprite, direction, speed);
+ npc_apply_anim_looping(eventObject, sprite, functions[speed](eventObject->facingDirection));
+}
+
+void StartRunningAnim(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
+{
+ npc_apply_direction(eventObject, sprite, direction, 1);
+ npc_apply_anim_looping(eventObject, sprite, GetRunningDirectionAnimNum(eventObject->facingDirection));
+}
+
+bool8 npc_obj_ministep_stop_on_arrival(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (obj_npc_ministep(sprite))
+ {
+ ShiftStillEventObjectCoords(eventObject);
+ eventObject->triggerGroundEffectsOnStop = TRUE;
+ sprite->animPaused = TRUE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8093AF0(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
+{
+ s16 x;
+ s16 y;
+
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ SetEventObjectDirection(eventObject, direction);
+ MoveCoords(direction, &x, &y);
+ ShiftEventObjectCoords(eventObject, x, y);
+ sub_80976DC(sprite, direction);
+ sprite->animPaused = FALSE;
+ eventObject->triggerGroundEffectsOnMove = TRUE;
+ sprite->data[2] = 1;
+}
+
+void sub_8093B60(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
+{
+ sub_8093AF0(eventObject, sprite, direction);
+ npc_apply_anim_looping(eventObject, sprite, GetMoveDirectionAnimNum(eventObject->facingDirection));
+}
+
+bool8 an_walk_any_2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80976EC(sprite))
+ {
+ ShiftStillEventObjectCoords(eventObject);
+ eventObject->triggerGroundEffectsOnStop = TRUE;
+ sprite->animPaused = TRUE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkSlowDiagonalUpLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_NORTHWEST);
+ return MovementAction_WalkSlowDiagonalUpLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkSlowDiagonalUpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkSlowDiagonalUpRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_NORTHEAST);
+ return MovementAction_WalkSlowDiagonalUpRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkSlowDiagonalUpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkSlowDiagonalDownLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_SOUTHWEST);
+ return MovementAction_WalkSlowDiagonalDownLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkSlowDiagonalDownLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkSlowDiagonalDownRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_SOUTHEAST);
+ return MovementAction_WalkSlowDiagonalDownRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkSlowDiagonalDownRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkSlowDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_SOUTH);
+ return MovementAction_WalkSlowDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkSlowDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkSlowUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_NORTH);
+ return MovementAction_WalkSlowUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkSlowUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkSlowLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_WEST);
+ return MovementAction_WalkSlowLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkSlowLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkSlowRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_EAST);
+ return MovementAction_WalkSlowRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkSlowRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkNormalDiagonalUpLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_NORTHWEST, 0);
+ return MovementAction_WalkNormalDiagonalUpLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkNormalDiagonalUpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkNormalDiagonalUpRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_NORTHEAST, 0);
+ return MovementAction_WalkNormalDiagonalUpRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkNormalDiagonalUpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkNormalDiagonalDownLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_SOUTHWEST, 0);
+ return MovementAction_WalkNormalDiagonalDownLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkNormalDiagonalDownLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkNormalDiagonalDownRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_SOUTHEAST, 0);
+ return MovementAction_WalkNormalDiagonalDownRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkNormalDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 0);
+ return MovementAction_WalkNormalDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkNormalDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkNormalUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_NORTH, 0);
+ return MovementAction_WalkNormalUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkNormalUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkNormalLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_WEST, 0);
+ return MovementAction_WalkNormalLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkNormalLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkNormalRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_EAST, 0);
+ return MovementAction_WalkNormalRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkNormalRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8093FC4(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 speed, u8 a5)
+{
+ s16 displacements[ARRAY_COUNT(gUnknown_0850DFBC)];
+ s16 x;
+ s16 y;
+
+ memcpy(displacements, gUnknown_0850DFBC, sizeof gUnknown_0850DFBC);
+ x = 0;
+ y = 0;
+ SetEventObjectDirection(eventObject, direction);
+ MoveCoordsInDirection(direction, &x, &y, displacements[speed], displacements[speed]);
+ ShiftEventObjectCoords(eventObject, eventObject->currentCoords.x + x, eventObject->currentCoords.y + y);
+ sub_809783C(sprite, direction, speed, a5);
+ sprite->data[2] = 1;
+ sprite->animPaused = 0;
+ eventObject->triggerGroundEffectsOnMove = 1;
+ eventObject->disableCoveringGroundEffects = 1;
+}
+
+void maybe_shadow_1(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 speed, u8 a4)
+{
+ sub_8093FC4(eventObject, sprite, direction, speed, a4);
+ npc_apply_anim_looping(eventObject, sprite, GetMoveDirectionAnimNum(eventObject->facingDirection));
+ DoShadowFieldEffect(eventObject);
+}
+
+u8 sub_80940C4(struct EventObject *eventObject, struct Sprite *sprite, u8 callback(struct Sprite *))
+{
+ s16 displacements[ARRAY_COUNT(gUnknown_0850DFC2)];
+ s16 x;
+ s16 y;
+ u8 result;
+
+ memcpy(displacements, gUnknown_0850DFC2, sizeof gUnknown_0850DFC2);
+ result = callback(sprite);
+ if (result == 1 && displacements[sprite->data[4]] != 0)
+ {
+ x = 0;
+ y = 0;
+ MoveCoordsInDirection(eventObject->movementDirection, &x, &y, displacements[sprite->data[4]], displacements[sprite->data[4]]);
+ ShiftEventObjectCoords(eventObject, eventObject->currentCoords.x + x, eventObject->currentCoords.y + y);
+ eventObject->triggerGroundEffectsOnMove = TRUE;
+ eventObject->disableCoveringGroundEffects = TRUE;
+ }
+ else if (result == 0xFF)
+ {
+ ShiftStillEventObjectCoords(eventObject);
+ eventObject->triggerGroundEffectsOnStop = TRUE;
+ eventObject->landingJump = TRUE;
+ sprite->animPaused = TRUE;
+ }
+ return result;
+}
+
+u8 sub_8094188(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ return sub_80940C4(eventObject, sprite, sub_809785C);
+}
+
+u8 sub_809419C(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ return sub_80940C4(eventObject, sprite, sub_80978E4);
+}
+
+bool8 sub_80941B0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_8094188(eventObject, sprite) == 0xFF)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80941C8(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_809419C(eventObject, sprite) == 0xFF)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80941E0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ switch (sub_8094188(eventObject, sprite))
+ {
+ case 255:
+ return TRUE;
+ case 1:
+ SetEventObjectDirection(eventObject, GetOppositeDirection(eventObject->movementDirection));
+ obj_npc_animation_step(eventObject, sprite, GetMoveDirectionAnimNum(eventObject->facingDirection));
+ default:
+ return FALSE;
+ }
+}
+
+bool8 MovementAction_Jump2Down_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_SOUTH, 2, 0);
+ return MovementAction_Jump2Down_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Jump2Down_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_Jump2Up_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_NORTH, 2, 0);
+ return MovementAction_Jump2Up_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Jump2Up_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_Jump2Left_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_WEST, 2, 0);
+ return MovementAction_Jump2Left_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Jump2Left_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_Jump2Right_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_EAST, 2, 0);
+ return MovementAction_Jump2Right_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Jump2Right_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+void sub_8094390(struct Sprite *sprite, u16 duration)
+{
+ sprite->data[2] = 1;
+ sprite->data[3] = duration;
+}
+
+bool8 MovementAction_Delay_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (-- sprite->data[3] == 0)
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_Delay1_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094390(sprite, 1);
+ return MovementAction_Delay_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Delay2_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094390(sprite, 2);
+ return MovementAction_Delay_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Delay4_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094390(sprite, 4);
+ return MovementAction_Delay_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Delay8_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094390(sprite, 8);
+ return MovementAction_Delay_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Delay16_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094390(sprite, 16);
+ return MovementAction_Delay_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 1);
+ return MovementAction_WalkFastDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkFastUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_NORTH, 1);
+ return MovementAction_WalkFastUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkFastLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_WEST, 1);
+ return MovementAction_WalkFastLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkFastRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_EAST, 1);
+ return MovementAction_WalkFastRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+void sub_8094554(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration)
+{
+ SetEventObjectDirection(eventObject, direction);
+ npc_apply_anim_looping(eventObject, sprite, animNum);
+ sprite->animPaused = FALSE;
+ sprite->data[2] = 1;
+ sprite->data[3] = duration;
+}
+
+bool8 MovementAction_WalkInPlace_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (-- sprite->data[3] == 0)
+ {
+ sprite->data[2] = 2;
+ sprite->animPaused = TRUE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkInPlaceSlow_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sprite->data[3] & 1)
+ {
+ sprite->animDelayCounter++;
+ }
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32);
+ return MovementAction_WalkInPlaceSlow_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32);
+ return MovementAction_WalkInPlaceSlow_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceSlowLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32);
+ return MovementAction_WalkInPlaceSlow_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceSlowRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32);
+ return MovementAction_WalkInPlaceSlow_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceNormalDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceNormalUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceNormalLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceNormalRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceFastDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceFastUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceFastLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceFastRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceFastestDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceFastestUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceFastestLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkInPlaceFastestRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_RideWaterCurrentDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 2);
+ return MovementAction_RideWaterCurrentDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_RideWaterCurrentDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_RideWaterCurrentUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_NORTH, 2);
+ return MovementAction_RideWaterCurrentUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_RideWaterCurrentUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_RideWaterCurrentLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_WEST, 2);
+ return MovementAction_RideWaterCurrentLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_RideWaterCurrentLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_RideWaterCurrentRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_EAST, 2);
+ return MovementAction_RideWaterCurrentRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_RideWaterCurrentRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkFastestDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 3);
+ return MovementAction_WalkFastestDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastestDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkFastestUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_NORTH, 3);
+ return MovementAction_WalkFastestUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastestUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkFastestLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_WEST, 3);
+ return MovementAction_WalkFastestLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastestLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkFastestRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_EAST, 3);
+ return MovementAction_WalkFastestRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkFastestRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_SlideDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_SOUTH, 4);
+ return MovementAction_SlideDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_SlideDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_SlideUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_NORTH, 4);
+ return MovementAction_SlideUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_SlideUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_SlideLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_WEST, 4);
+ return MovementAction_SlideLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_SlideLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_SlideRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_EAST, 4);
+ return MovementAction_SlideRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_SlideRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_PlayerRunDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartRunningAnim(eventObject, sprite, DIR_SOUTH);
+ return MovementAction_PlayerRunDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_PlayerRunDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_PlayerRunUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartRunningAnim(eventObject, sprite, DIR_NORTH);
+ return MovementAction_PlayerRunUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_PlayerRunUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_PlayerRunLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartRunningAnim(eventObject, sprite, DIR_WEST);
+ return MovementAction_PlayerRunLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_PlayerRunLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_PlayerRunRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartRunningAnim(eventObject, sprite, DIR_EAST);
+ return MovementAction_PlayerRunRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_PlayerRunRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void StartSpriteAnimInDirection(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 animNum)
+{
+ SetAndStartSpriteAnim(sprite, animNum, 0);
+ SetEventObjectDirection(eventObject, direction);
+ sprite->data[2] = 1;
+}
+
+bool8 MovementAction_StartAnimInDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, eventObject->movementDirection, sprite->animNum);
+ return FALSE;
+}
+
+bool8 MovementAction_WaitSpriteAnim(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (SpriteAnimEnded(sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8094DE4(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
+{
+ sub_8093FC4(eventObject, sprite, direction, 1, 0);
+ StartSpriteAnim(sprite, GetJumpSpecialDirectionAnimNum(direction));
+}
+
+bool8 MovementAction_JumpSpecialDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094DE4(eventObject, sprite, DIR_SOUTH);
+ return MovementAction_JumpSpecialDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpSpecialDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941C8(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ eventObject->landingJump = FALSE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpSpecialUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094DE4(eventObject, sprite, DIR_NORTH);
+ return MovementAction_JumpSpecialUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpSpecialUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941C8(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ eventObject->landingJump = FALSE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpSpecialLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094DE4(eventObject, sprite, DIR_WEST);
+ return MovementAction_JumpSpecialLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpSpecialLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941C8(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ eventObject->landingJump = FALSE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpSpecialRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094DE4(eventObject, sprite, DIR_EAST);
+ return MovementAction_JumpSpecialRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpSpecialRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941C8(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ eventObject->landingJump = FALSE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_FacePlayer_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 playerObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(0xFF, 0, 0, &playerObjectId))
+ {
+ FaceDirection(eventObject, sprite, GetDirectionToFace(eventObject->currentCoords.x, eventObject->currentCoords.y, gEventObjects[playerObjectId].currentCoords.x, gEventObjects[playerObjectId].currentCoords.y));
+ }
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_FaceAwayPlayer_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u8 playerObjectId;
+
+ if (!TryGetEventObjectIdByLocalIdAndMap(0xFF, 0, 0, &playerObjectId))
+ {
+ FaceDirection(eventObject, sprite, GetOppositeDirection(GetDirectionToFace(eventObject->currentCoords.x, eventObject->currentCoords.y, gEventObjects[playerObjectId].currentCoords.x, gEventObjects[playerObjectId].currentCoords.y)));
+ }
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_LockFacingDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->facingDirectionLocked = TRUE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_UnlockFacingDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->facingDirectionLocked = FALSE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_JumpDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_SOUTH, 1, 2);
+ return MovementAction_JumpDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_NORTH, 1, 2);
+ return MovementAction_JumpUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_WEST, 1, 2);
+ return MovementAction_JumpLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_EAST, 1, 2);
+ return MovementAction_JumpRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpInPlaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_SOUTH, 0, 0);
+ return MovementAction_JumpInPlaceDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpInPlaceDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpInPlaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_NORTH, 0, 0);
+ return MovementAction_JumpInPlaceUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpInPlaceUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpInPlaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_WEST, 0, 0);
+ return MovementAction_JumpInPlaceLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpInPlaceLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpInPlaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_EAST, 0, 0);
+ return MovementAction_JumpInPlaceRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpInPlaceRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpInPlaceDownUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_SOUTH, 0, 2);
+ return MovementAction_JumpInPlaceDownUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpInPlaceDownUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941E0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpInPlaceUpDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_NORTH, 0, 2);
+ return MovementAction_JumpInPlaceUpDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpInPlaceUpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941E0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpInPlaceLeftRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_WEST, 0, 2);
+ return MovementAction_JumpInPlaceLeftRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941E0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_JumpInPlaceRightLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(eventObject, sprite, DIR_EAST, 0, 2);
+ return MovementAction_JumpInPlaceRightLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941E0(eventObject, sprite))
+ {
+ eventObject->hasShadow = 0;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_FaceOriginalDirection_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ FaceDirection(eventObject, sprite, gInitialMovementTypeFacingDirections[eventObject->movementType]);
+ return TRUE;
+}
+
+bool8 MovementAction_NurseJoyBowDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_SOUTH, 0x14);
+ return FALSE;
+}
+
+bool8 MovementAction_EnableJumpLandingGroundEffect_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->disableJumpLandingGroundEffect = FALSE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_DisableJumpLandingGroundEffect_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->disableJumpLandingGroundEffect = TRUE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_DisableAnimation_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->inanimate = TRUE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_RestoreAnimation_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->inanimate = GetEventObjectGraphicsInfo(eventObject->graphicsId)->inanimate;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_SetInvisible_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->invisible = TRUE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_SetVisible_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->invisible = FALSE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_EmoteExclamationMark_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON);
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_EmoteQuestionMark_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_QUESTION_MARK_ICON);
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_EmoteHeart_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_HEART_ICON);
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_RevealTrainer_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (eventObject->movementType == MOVEMENT_TYPE_HIDDEN)
+ {
+ sub_80B4578(eventObject);
+ return FALSE;
+ }
+ if (eventObject->movementType != MOVEMENT_TYPE_TREE_DISGUISE && eventObject->movementType != MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ sub_8155D78(eventObject);
+ sprite->data[2] = 1;
+ return MovementAction_RevealTrainer_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_RevealTrainer_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_8155DA0(eventObject))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_RockSmashBreak_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ SetAndStartSpriteAnim(sprite, 1, 0);
+ sprite->data[2] = 1;
+ return FALSE;
+}
+
+bool8 MovementAction_RockSmashBreak_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (SpriteAnimEnded(sprite))
+ {
+ SetMovementDelay(sprite, 32);
+ sprite->data[2] = 2;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_RockSmashBreak_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->invisible ^= TRUE;
+ if (WaitForMovementDelay(sprite))
+ {
+ eventObject->invisible = TRUE;
+ sprite->data[2] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_CutTree_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ SetAndStartSpriteAnim(sprite, 1, 0);
+ sprite->data[2] = 1;
+ return FALSE;
+}
+
+bool8 MovementAction_CutTree_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (SpriteAnimEnded(sprite))
+ {
+ SetMovementDelay(sprite, 32);
+ sprite->data[2] = 2;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_CutTree_Step2(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->invisible ^= TRUE;
+ if (WaitForMovementDelay(sprite))
+ {
+ eventObject->invisible = TRUE;
+ sprite->data[2] = 3;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_SetFixedPriority_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->fixedPriority = TRUE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_ClearFixedPriority_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->fixedPriority = FALSE;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_InitAffineAnim_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ InitSpriteAffineAnim(sprite);
+ sprite->affineAnimPaused = TRUE;
+ sprite->subspriteMode = 0;
+ return TRUE;
+}
+
+bool8 MovementAction_ClearAffineAnim_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
+ CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
+ return TRUE;
+}
+
+bool8 MovementAction_Unknown1_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->unk3_3 = TRUE;
+ return TRUE;
+}
+
+bool8 MovementAction_Unknown2_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ eventObject->unk3_3 = FALSE;
+ return TRUE;
+}
+
+bool8 MovementAction_WalkDownStartAffine_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_SOUTH);
+ sprite->affineAnimPaused = FALSE;
+ StartSpriteAffineAnimIfDifferent(sprite, 0);
+ return MovementAction_WalkDownStartAffine_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkDownStartAffine_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->affineAnimPaused = TRUE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkDownAffine_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8093B60(eventObject, sprite, DIR_SOUTH);
+ sprite->affineAnimPaused = FALSE;
+ ChangeSpriteAffineAnimIfDifferent(sprite, 1);
+ return MovementAction_WalkDownAffine_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkDownAffine_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(eventObject, sprite))
+ {
+ sprite->affineAnimPaused = TRUE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkLeftAffine_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_WEST, 1);
+ sprite->affineAnimPaused = FALSE;
+ ChangeSpriteAffineAnimIfDifferent(sprite, 2);
+ return MovementAction_WalkLeftAffine_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkLeftAffine_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->affineAnimPaused = TRUE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_WalkRightAffine_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ do_go_anim(eventObject, sprite, DIR_EAST, 1);
+ sprite->affineAnimPaused = FALSE;
+ ChangeSpriteAffineAnimIfDifferent(sprite, 3);
+ return MovementAction_WalkRightAffine_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_WalkRightAffine_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->affineAnimPaused = TRUE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_80958C0(struct EventObject *eventObject, struct Sprite *sprite, u8 direction)
+{
+ SetEventObjectDirection(eventObject, direction);
+ ShiftStillEventObjectCoords(eventObject);
+ obj_npc_animation_step(eventObject, sprite, GetAcroWheeliePedalDirectionAnimNum(direction));
+ sprite->animPaused = TRUE;
+ sprite->data[2] = 1;
+}
+
+bool8 MovementAction_AcroWheelieFaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_80958C0(eventObject, sprite, DIR_SOUTH);
+ return TRUE;
+}
+
+bool8 MovementAction_AcroWheelieFaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_80958C0(eventObject, sprite, DIR_NORTH);
+ return TRUE;
+}
+
+bool8 MovementAction_AcroWheelieFaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_80958C0(eventObject, sprite, DIR_WEST);
+ return TRUE;
+}
+
+bool8 MovementAction_AcroWheelieFaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_80958C0(eventObject, sprite, DIR_EAST);
+ return TRUE;
+}
+
+bool8 MovementAction_AcroPopWheelieDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_SOUTH, GetAcroWheelieDirectionAnimNum(DIR_SOUTH));
+ return FALSE;
+}
+
+bool8 MovementAction_AcroPopWheelieUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_NORTH, GetAcroWheelieDirectionAnimNum(DIR_NORTH));
+ return FALSE;
+}
+
+bool8 MovementAction_AcroPopWheelieLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_WEST, GetAcroWheelieDirectionAnimNum(DIR_WEST));
+ return FALSE;
+}
+
+bool8 MovementAction_AcroPopWheelieRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_EAST, GetAcroWheelieDirectionAnimNum(DIR_EAST));
+ return FALSE;
+}
+
+bool8 MovementAction_AcroEndWheelieFaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_SOUTH, GetAcroEndWheelieDirectionAnimNum(DIR_SOUTH));
+ return FALSE;
+}
+
+bool8 MovementAction_AcroEndWheelieFaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_NORTH, GetAcroEndWheelieDirectionAnimNum(DIR_NORTH));
+ return FALSE;
+}
+
+bool8 MovementAction_AcroEndWheelieFaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_WEST, GetAcroEndWheelieDirectionAnimNum(DIR_WEST));
+ return FALSE;
+}
+
+bool8 MovementAction_AcroEndWheelieFaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_EAST, GetAcroEndWheelieDirectionAnimNum(DIR_EAST));
+ return FALSE;
+}
+
+bool8 MovementAction_UnusedAcroActionDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_SOUTH, GetAcroUnusedActionDirectionAnimNum(DIR_SOUTH));
+ return FALSE;
+}
+
+bool8 MovementAction_UnusedAcroActionUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_NORTH, GetAcroUnusedActionDirectionAnimNum(DIR_NORTH));
+ return FALSE;
+}
+
+bool8 MovementAction_UnusedAcroActionLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_WEST, GetAcroUnusedActionDirectionAnimNum(DIR_WEST));
+ return FALSE;
+}
+
+bool8 MovementAction_UnusedAcroActionRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ StartSpriteAnimInDirection(eventObject, sprite, DIR_EAST, GetAcroUnusedActionDirectionAnimNum(DIR_EAST));
+ return FALSE;
+}
+
+void sub_8095AF0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8097750(sprite);
+ sprite->animPaused = FALSE;
+}
+
+bool8 sub_8095B0C(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_8097758(sprite))
+ {
+ ShiftStillEventObjectCoords(eventObject);
+ eventObject->triggerGroundEffectsOnStop = TRUE;
+ sprite->animPaused = TRUE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_Figure8_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095AF0(eventObject, sprite);
+ sprite->data[2] = 1;
+ return MovementAction_Figure8_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_Figure8_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_8095B0C(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8095B84(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 speed, u8 a4)
+{
+ sub_8093FC4(eventObject, sprite, direction, speed, a4);
+ StartSpriteAnimIfDifferent(sprite, GetAcroWheelieDirectionAnimNum(direction));
+ DoShadowFieldEffect(eventObject);
+}
+
+bool8 MovementAction_AcroWheelieHopFaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_SOUTH, 0, 1);
+ return MovementAction_AcroWheelieHopFaceDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieHopFaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_NORTH, 0, 1);
+ return MovementAction_AcroWheelieHopFaceUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieHopFaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_WEST, 0, 1);
+ return MovementAction_AcroWheelieHopFaceLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieHopFaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_EAST, 0, 1);
+ return MovementAction_AcroWheelieHopFaceRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieHopDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_SOUTH, 1, 1);
+ return MovementAction_AcroWheelieHopDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieHopDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieHopUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_NORTH, 1, 1);
+ return MovementAction_AcroWheelieHopUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieHopUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieHopLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_WEST, 1, 1);
+ return MovementAction_AcroWheelieHopLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieHopLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieHopRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_EAST, 1, 1);
+ return MovementAction_AcroWheelieHopRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieHopRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieJumpDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_SOUTH, 2, 0);
+ return MovementAction_AcroWheelieJumpDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieJumpDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieJumpUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_NORTH, 2, 0);
+ return MovementAction_AcroWheelieJumpUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieJumpUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieJumpLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_WEST, 2, 0);
+ return MovementAction_AcroWheelieJumpLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieJumpRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8095B84(eventObject, sprite, DIR_EAST, 2, 0);
+ return MovementAction_AcroWheelieJumpRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieJumpRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sub_80941B0(eventObject, sprite))
+ {
+ eventObject->hasShadow = FALSE;
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieInPlaceDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieInPlaceUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieInPlaceLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieInPlaceRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8094554(eventObject, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST), 8);
+ return MovementAction_WalkInPlace_Step1(eventObject, sprite);
+}
+
+void sub_80960C8(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 speed)
+{
+ npc_apply_direction(eventObject, sprite, direction, speed);
+ StartSpriteAnim(sprite, GetAcroWheelieDirectionAnimNum(eventObject->facingDirection));
+ SeekSpriteAnim(sprite, 0);
+}
+
+bool8 MovementAction_AcroPopWheelieMoveDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_80960C8(eventObject, sprite, DIR_SOUTH, 1);
+ return MovementAction_AcroPopWheelieMoveDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroPopWheelieMoveUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_80960C8(eventObject, sprite, DIR_NORTH, 1);
+ return MovementAction_AcroPopWheelieMoveUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroPopWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_80960C8(eventObject, sprite, DIR_WEST, 1);
+ return MovementAction_AcroPopWheelieMoveLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroPopWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_80960C8(eventObject, sprite, DIR_EAST, 1);
+ return MovementAction_AcroPopWheelieMoveRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroPopWheelieMoveRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8096200(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 speed)
+{
+ npc_apply_direction(eventObject, sprite, direction, speed);
+ npc_apply_anim_looping(eventObject, sprite, GetAcroWheeliePedalDirectionAnimNum(eventObject->facingDirection));
+}
+
+bool8 MovementAction_AcroWheelieMoveDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096200(eventObject, sprite, DIR_SOUTH, 1);
+ return MovementAction_AcroWheelieMoveDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieMoveDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieMoveUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096200(eventObject, sprite, DIR_NORTH, 1);
+ return MovementAction_AcroWheelieMoveUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieMoveUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096200(eventObject, sprite, DIR_WEST, 1);
+ return MovementAction_AcroWheelieMoveLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096200(eventObject, sprite, DIR_EAST, 1);
+ return MovementAction_AcroWheelieMoveRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroWheelieMoveRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8096330(struct EventObject *eventObject, struct Sprite *sprite, u8 direction, u8 speed)
+{
+ npc_apply_direction(eventObject, sprite, direction, speed);
+ StartSpriteAnim(sprite, GetAcroEndWheelieDirectionAnimNum(eventObject->facingDirection));
+ SeekSpriteAnim(sprite, 0);
+}
+
+bool8 MovementAction_AcroEndWheelieMoveDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096330(eventObject, sprite, DIR_SOUTH, 1);
+ return MovementAction_AcroEndWheelieMoveDown_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroEndWheelieMoveDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroEndWheelieMoveUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096330(eventObject, sprite, DIR_NORTH, 1);
+ return MovementAction_AcroEndWheelieMoveUp_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096330(eventObject, sprite, DIR_WEST, 1);
+ return MovementAction_AcroEndWheelieMoveLeft_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_AcroEndWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096330(eventObject, sprite, DIR_EAST, 1);
+ return MovementAction_AcroEndWheelieMoveRight_Step1(eventObject, sprite);
+}
+
+bool8 MovementAction_AcroEndWheelieMoveRight_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(eventObject, sprite))
+ {
+ sprite->data[2] = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 MovementAction_Levitate_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ CreateLevitateMovementTask(eventObject);
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_StopLevitate_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ DestroyExtraMovementTask(eventObject->warpArrowSpriteId);
+ sprite->pos2.y = 0;
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+bool8 MovementAction_DestroyExtraTaskIfAtTop_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (sprite->pos2.y == 0)
+ {
+ DestroyExtraMovementTask(eventObject->warpArrowSpriteId);
+ sprite->data[2] = 1;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 MovementAction_Finish(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ return TRUE;
+}
+
+bool8 MovementAction_PauseSpriteAnim(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->animPaused = TRUE;
+ return TRUE;
+}
+
+static void UpdateEventObjectSpriteAnimPause(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (eventObject->disableAnim)
+ {
+ sprite->animPaused = TRUE;
+ }
+}
+
+static void TryEnableEventObjectAnim(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ if (eventObject->enableAnim)
+ {
+ sprite->animPaused = FALSE;
+ eventObject->disableAnim = FALSE;
+ eventObject->enableAnim = FALSE;
+ }
+}
+
+static void UpdateEventObjectVisibility(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sub_8096530(eventObject, sprite);
+ npc_update_obj_anim_flag(eventObject, sprite);
+}
+
+static void sub_8096530(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u16 x;
+ u16 y;
+ u16 x2;
+ u16 y2;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+
+ eventObject->offScreen = FALSE;
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ if (sprite->coordOffsetEnabled)
+ {
+ x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ }
+ else
+ {
+ x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ }
+ x2 = graphicsInfo->width;
+ x2 += x;
+ y2 = y;
+ y2 += graphicsInfo->height;
+ if ((s16)x >= 0x100 || (s16)x2 < -0x10)
+ {
+ eventObject->offScreen = TRUE;
+ }
+ if ((s16)y >= 0xB0 || (s16)y2 < -0x10)
+ {
+ eventObject->offScreen = TRUE;
+ }
+}
+
+static void npc_update_obj_anim_flag(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+ if (eventObject->invisible || eventObject->offScreen)
+ {
+ sprite->invisible = TRUE;
+ }
+}
+
+/*static*/ void GetAllGroundEffectFlags_OnSpawn(struct EventObject *eventObj, u32 *flags)
+{
+ EventObjectUpdateMetatileBehaviors(eventObj);
+ GetGroundEffectFlags_Reflection(eventObj, flags);
+ GetGroundEffectFlags_TallGrassOnSpawn(eventObj, flags);
+ GetGroundEffectFlags_LongGrassOnSpawn(eventObj, flags);
+ GetGroundEffectFlags_SandHeap(eventObj, flags);
+ GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags);
+ GetGroundEffectFlags_ShortGrass(eventObj, flags);
+ GetGroundEffectFlags_HotSprings(eventObj, flags);
+}
+
+static void GetAllGroundEffectFlags_OnBeginStep(struct EventObject *eventObj, u32 *flags)
+{
+ EventObjectUpdateMetatileBehaviors(eventObj);
+ GetGroundEffectFlags_Reflection(eventObj, flags);
+ GetGroundEffectFlags_TallGrassOnBeginStep(eventObj, flags);
+ GetGroundEffectFlags_LongGrassOnBeginStep(eventObj, flags);
+ GetGroundEffectFlags_Tracks(eventObj, flags);
+ GetGroundEffectFlags_SandHeap(eventObj, flags);
+ GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags);
+ GetGroundEffectFlags_Puddle(eventObj, flags);
+ GetGroundEffectFlags_ShortGrass(eventObj, flags);
+ GetGroundEffectFlags_HotSprings(eventObj, flags);
+}
+
+/*static*/ void GetAllGroundEffectFlags_OnFinishStep(struct EventObject *eventObj, u32 *flags)
+{
+ EventObjectUpdateMetatileBehaviors(eventObj);
+ GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags);
+ GetGroundEffectFlags_SandHeap(eventObj, flags);
+ GetGroundEffectFlags_Puddle(eventObj, flags);
+ GetGroundEffectFlags_Ripple(eventObj, flags);
+ GetGroundEffectFlags_ShortGrass(eventObj, flags);
+ GetGroundEffectFlags_HotSprings(eventObj, flags);
+ GetGroundEffectFlags_Seaweed(eventObj, flags);
+ GetGroundEffectFlags_JumpLanding(eventObj, flags);
+}
+
+static void EventObjectUpdateMetatileBehaviors(struct EventObject *eventObj)
+{
+ eventObj->previousMetatileBehavior = MapGridGetMetatileBehaviorAt(eventObj->previousCoords.x, eventObj->previousCoords.y);
+ eventObj->currentMetatileBehavior = MapGridGetMetatileBehaviorAt(eventObj->currentCoords.x, eventObj->currentCoords.y);
+}
+
+static void GetGroundEffectFlags_Reflection(struct EventObject *eventObj, u32 *flags)
+{
+ u32 reflectionFlags[2] = { GROUND_EFFECT_FLAG_REFLECTION, GROUND_EFFECT_FLAG_ICE_REFLECTION };
+ u8 type = EventObjectCheckForReflectiveSurface(eventObj);
+
+ if (type)
+ {
+ if (!eventObj->hasReflection)
+ {
+ eventObj->hasReflection = 0;
+ eventObj->hasReflection = 1;
+ *flags |= reflectionFlags[type - 1];
+ }
+ }
+ else
+ {
+ eventObj->hasReflection = 0;
+ }
+}
+
+static void GetGroundEffectFlags_TallGrassOnSpawn(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsTallGrass(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN;
+}
+
+static void GetGroundEffectFlags_TallGrassOnBeginStep(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsTallGrass(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE;
+}
+
+static void GetGroundEffectFlags_LongGrassOnSpawn(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsLongGrass(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN;
+}
+
+static void GetGroundEffectFlags_LongGrassOnBeginStep(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsLongGrass(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE;
+}
+
+static void GetGroundEffectFlags_Tracks(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsDeepSand(eventObj->previousMetatileBehavior))
+ {
+ *flags |= GROUND_EFFECT_FLAG_DEEP_SAND;
+ }
+ else if (MetatileBehavior_IsSandOrDeepSand(eventObj->previousMetatileBehavior)
+ || MetatileBehavior_IsUnusedFootprintMetatile(eventObj->previousMetatileBehavior))
+ {
+ *flags |= GROUND_EFFECT_FLAG_SAND;
+ }
+}
+
+static void GetGroundEffectFlags_SandHeap(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsDeepSand(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsDeepSand(eventObj->previousMetatileBehavior))
+ {
+ if (!eventObj->inSandPile)
+ {
+ eventObj->inSandPile = 0;
+ eventObj->inSandPile = 1;
+ *flags |= GROUND_EFFECT_FLAG_SAND_PILE;
+ }
+ }
+ else
+ {
+ eventObj->inSandPile = 0;
+ }
+}
+
+static void GetGroundEffectFlags_ShallowFlowingWater(struct EventObject *eventObj, u32 *flags)
+{
+ if ((MetatileBehavior_IsShallowFlowingWater(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsShallowFlowingWater(eventObj->previousMetatileBehavior))
+ || (MetatileBehavior_IsPacifidlogLog(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsPacifidlogLog(eventObj->previousMetatileBehavior)))
+ {
+ if (!eventObj->inShallowFlowingWater)
+ {
+ eventObj->inShallowFlowingWater = 0;
+ eventObj->inShallowFlowingWater = 1;
+ *flags |= GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER;
+ }
+ }
+ else
+ {
+ eventObj->inShallowFlowingWater = 0;
+ }
+}
+
+static void GetGroundEffectFlags_Puddle(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsPuddle(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsPuddle(eventObj->previousMetatileBehavior))
+ {
+ *flags |= GROUND_EFFECT_FLAG_PUDDLE;
+ }
+}
+
+static void GetGroundEffectFlags_Ripple(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_HasRipples(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_RIPPLES;
+}
+
+static void GetGroundEffectFlags_ShortGrass(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsShortGrass(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsShortGrass(eventObj->previousMetatileBehavior))
+ {
+ if (!eventObj->inShortGrass)
+ {
+ eventObj->inShortGrass = 0;
+ eventObj->inShortGrass = 1;
+ *flags |= GROUND_EFFECT_FLAG_SHORT_GRASS;
+ }
+ }
+ else
+ {
+ eventObj->inShortGrass = 0;
+ }
+}
+
+static void GetGroundEffectFlags_HotSprings(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsHotSprings(eventObj->currentMetatileBehavior)
+ && MetatileBehavior_IsHotSprings(eventObj->previousMetatileBehavior))
+ {
+ if (!eventObj->inHotSprings)
+ {
+ eventObj->inHotSprings = 0;
+ eventObj->inHotSprings = 1;
+ *flags |= GROUND_EFFECT_FLAG_HOT_SPRINGS;
+ }
+ }
+ else
+ {
+ eventObj->inHotSprings = 0;
+ }
+}
+
+static void GetGroundEffectFlags_Seaweed(struct EventObject *eventObj, u32 *flags)
+{
+ if (MetatileBehavior_IsSeaweed(eventObj->currentMetatileBehavior))
+ *flags |= GROUND_EFFECT_FLAG_SEAWEED;
+}
+
+static void GetGroundEffectFlags_JumpLanding(struct EventObject *eventObj, u32 *flags)
+{
+ typedef bool8 (*MetatileFunc)(u8);
+
+ static const MetatileFunc metatileFuncs[] = {
+ MetatileBehavior_IsTallGrass,
+ MetatileBehavior_IsLongGrass,
+ MetatileBehavior_IsPuddle,
+ MetatileBehavior_IsSurfableWaterOrUnderwater,
+ MetatileBehavior_IsShallowFlowingWater,
+ MetatileBehavior_IsATile,
+ };
+
+ static const u32 jumpLandingFlags[] = {
+ GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS,
+ GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS,
+ GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER,
+ GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER,
+ GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER,
+ GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND,
+ };
+
+ if (eventObj->landingJump && !eventObj->disableJumpLandingGroundEffect)
+ {
+ u8 i;
+
+ for (i = 0; i < ARRAY_COUNT(metatileFuncs); i++)
+ {
+ if (metatileFuncs[i](eventObj->currentMetatileBehavior))
+ {
+ *flags |= jumpLandingFlags[i];
+ return;
+ }
+ }
+ }
+}
+
+static u8 EventObjectCheckForReflectiveSurface(struct EventObject *eventObj)
+{
+ const struct EventObjectGraphicsInfo *info = GetEventObjectGraphicsInfo(eventObj->graphicsId);
+
+ // ceil div by tile width?
+ s16 width = (info->width + 8) >> 4;
+ s16 height = (info->height + 8) >> 4;
+ s16 i;
+ s16 j;
+ u8 result;
+ u8 b;
+ s16 one;
+
+#define RETURN_REFLECTION_TYPE_AT(x, y) \
+ b = MapGridGetMetatileBehaviorAt(x, y); \
+ result = GetReflectionTypeByMetatileBehavior(b); \
+ if (result != 0) \
+ return result;
+
+ for (i = 0, one = 1; i < height; i++)
+ {
+ RETURN_REFLECTION_TYPE_AT(eventObj->currentCoords.x, eventObj->currentCoords.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->previousCoords.x, eventObj->previousCoords.y + one + i)
+ for (j = 1; j < width; j++)
+ {
+ RETURN_REFLECTION_TYPE_AT(eventObj->currentCoords.x + j, eventObj->currentCoords.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->currentCoords.x - j, eventObj->currentCoords.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->previousCoords.x + j, eventObj->previousCoords.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(eventObj->previousCoords.x - j, eventObj->previousCoords.y + one + i)
+ }
+ }
+ return 0;
+
+#undef RETURN_REFLECTION_TYPE_AT
+}
+
+static u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
+{
+ if (MetatileBehavior_IsIce(behavior))
+ return 1;
+ else if (MetatileBehavior_IsReflective(behavior))
+ return 2;
+ else
+ return 0;
+}
+
+u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
+{
+ static bool8 (*const unknown_08376040[])(u8) = {
+ MetatileBehavior_IsJumpSouth,
+ MetatileBehavior_IsJumpNorth,
+ MetatileBehavior_IsJumpWest,
+ MetatileBehavior_IsJumpEast,
+ };
+
+ u8 b;
+ u8 index = z;
+
+ if (index == 0)
+ return 0;
+ else if (index > 4)
+ index -= 4;
+
+ index--;
+ b = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (unknown_08376040[index](b) == 1)
+ return index + 1;
+
+ return 0;
+}
+
+void EventObjectSetSpriteOamTableForLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ if (eventObj->disableCoveringGroundEffects)
+ return;
+
+ if (!MetatileBehavior_IsLongGrass(eventObj->currentMetatileBehavior))
+ return;
+
+ if (!MetatileBehavior_IsLongGrass(eventObj->previousMetatileBehavior))
+ return;
+
+ sprite->subspriteTableNum = 4;
+
+ if (ZCoordToPriority(eventObj->previousElevation) == 1)
+ sprite->subspriteTableNum = 5;
+}
+
+bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
+{
+ u8 mapZ;
+
+ if (z == 0)
+ return FALSE;
+
+ mapZ = MapGridGetZCoordAt(x, y);
+
+ if (mapZ == 0 || mapZ == 0xF)
+ return FALSE;
+
+ if (mapZ != z)
+ return TRUE;
+
+ return FALSE;
+}
+
+static const u8 sUnknown_08376050[] = {
+ 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
+};
+
+// Each byte corresponds to a sprite priority for an event object.
+// This is directly the inverse of gEventObjectPriorities_08376070.
+static const u8 sEventObjectPriorities_08376060[] = {
+ 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
+};
+
+// Each byte corresponds to a sprite priority for an event object.
+// This is the inverse of gEventObjectPriorities_08376060.
+// 1 = Above player sprite
+// 2 = Below player sprite
+static const u8 sEventObjectPriorities_08376070[] = {
+ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
+};
+
+void EventObjectUpdateZCoordAndPriority(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ if (eventObj->fixedPriority)
+ return;
+
+ EventObjectUpdateZCoord(eventObj);
+
+ sprite->subspriteTableNum = sEventObjectPriorities_08376070[eventObj->previousElevation];
+ sprite->oam.priority = sEventObjectPriorities_08376060[eventObj->previousElevation];
+}
+
+static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
+{
+ sprite->subspriteTableNum = sEventObjectPriorities_08376070[z];
+ sprite->oam.priority = sEventObjectPriorities_08376060[z];
+}
+
+u8 ZCoordToPriority(u8 z)
+{
+ return sEventObjectPriorities_08376060[z];
+}
+
+void EventObjectUpdateZCoord(struct EventObject *eventObj)
+{
+ u8 z = MapGridGetZCoordAt(eventObj->currentCoords.x, eventObj->currentCoords.y);
+ u8 z2 = MapGridGetZCoordAt(eventObj->previousCoords.x, eventObj->previousCoords.y);
+
+ if (z == 0xF || z2 == 0xF)
+ return;
+
+ eventObj->currentElevation = z;
+
+ if (z != 0 && z != 0xF)
+ eventObj->previousElevation = z;
+}
+
+void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
+{
+ s32 tmp = sprite->centerToCornerVecY;
+ u32 tmpa = *(u16 *)&sprite->pos1.y;
+ u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
+ s32 tmp2 = (tmpa - tmp) + tmpb;
+ u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
+ sprite->subpriority = tmp3 + sUnknown_08376050[a] + b;
+}
+
+static void EventObjectUpdateSubpriority(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ if (eventObj->fixedPriority)
+ return;
+
+ SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
+}
+
+bool8 AreZCoordsCompatible(u8 a, u8 b)
+{
+ if (a == 0 || b == 0)
+ return TRUE;
+
+ if (a != b)
+ return FALSE;
+
+ return TRUE;
+}
+
+void GroundEffect_SpawnOnTallGrass(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = eventObj->localId << 8 | eventObj->mapNum;
+ gFieldEffectArguments[5] = eventObj->mapGroup;
+ gFieldEffectArguments[6] = (u8)gSaveBlock1Ptr->location.mapNum << 8 | (u8)gSaveBlock1Ptr->location.mapGroup;
+ gFieldEffectArguments[7] = 1;
+ FieldEffectStart(FLDEFF_TALL_GRASS);
+}
+
+void GroundEffect_StepOnTallGrass(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = eventObj->localId << 8 | eventObj->mapNum;
+ gFieldEffectArguments[5] = eventObj->mapGroup;
+ gFieldEffectArguments[6] = (u8)gSaveBlock1Ptr->location.mapNum << 8 | (u8)gSaveBlock1Ptr->location.mapGroup;
+ gFieldEffectArguments[7] = 0;
+ FieldEffectStart(FLDEFF_TALL_GRASS);
+}
+
+void GroundEffect_SpawnOnLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = eventObj->localId << 8 | eventObj->mapNum;
+ gFieldEffectArguments[5] = eventObj->mapGroup;
+ gFieldEffectArguments[6] = (u8)gSaveBlock1Ptr->location.mapNum << 8 | (u8)gSaveBlock1Ptr->location.mapGroup;
+ gFieldEffectArguments[7] = 1;
+ FieldEffectStart(FLDEFF_LONG_GRASS);
+}
+
+void GroundEffect_StepOnLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (eventObj->localId << 8) | eventObj->mapNum;
+ gFieldEffectArguments[5] = eventObj->mapGroup;
+ gFieldEffectArguments[6] = (u8)gSaveBlock1Ptr->location.mapNum << 8 | (u8)gSaveBlock1Ptr->location.mapGroup;
+ gFieldEffectArguments[7] = 0;
+ FieldEffectStart(FLDEFF_LONG_GRASS);
+}
+
+void GroundEffect_WaterReflection(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ SetUpReflection(eventObj, sprite, 0);
+}
+
+void GroundEffect_IceReflection(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ SetUpReflection(eventObj, sprite, 1);
+}
+
+void GroundEffect_FlowingWater(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ StartFieldEffectForEventObject(FLDEFF_FEET_IN_FLOWING_WATER, eventObj);
+}
+
+static void (*const sGroundEffectTracksFuncs[])(struct EventObject *eventObj, struct Sprite *sprite, u8 a) = {
+ DoTracksGroundEffect_None,
+ DoTracksGroundEffect_Footprints,
+ DoTracksGroundEffect_BikeTireTracks,
+};
+
+void GroundEffect_SandTracks(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ const struct EventObjectGraphicsInfo *info = GetEventObjectGraphicsInfo(eventObj->graphicsId);
+ sGroundEffectTracksFuncs[info->tracks](eventObj, sprite, 0);
+}
+
+void GroundEffect_DeepSandTracks(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ const struct EventObjectGraphicsInfo *info = GetEventObjectGraphicsInfo(eventObj->graphicsId);
+ sGroundEffectTracksFuncs[info->tracks](eventObj, sprite, 1);
+}
+
+static void DoTracksGroundEffect_None(struct EventObject *eventObj, struct Sprite *sprite, u8 a)
+{
+}
+
+static void DoTracksGroundEffect_Footprints(struct EventObject *eventObj, struct Sprite *sprite, u8 a)
+{
+ // First half-word is a Field Effect script id. (gFieldEffectScriptPointers)
+ u16 sandFootprints_FieldEffectData[2] = {
+ FLDEFF_SAND_FOOTPRINTS,
+ FLDEFF_DEEP_SAND_FOOTPRINTS
+ };
+
+ gFieldEffectArguments[0] = eventObj->previousCoords.x;
+ gFieldEffectArguments[1] = eventObj->previousCoords.y;
+ gFieldEffectArguments[2] = 149;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = eventObj->facingDirection;
+ FieldEffectStart(sandFootprints_FieldEffectData[a]);
+}
+
+static void DoTracksGroundEffect_BikeTireTracks(struct EventObject *eventObj, struct Sprite *sprite, u8 a)
+{
+ // Specifies which bike track shape to show next.
+ // For example, when the bike turns from up to right, it will show
+ // a track that curves to the right.
+ // Each 4-byte row corresponds to the initial direction of the bike, and
+ // each byte in that row is for the next direction of the bike in the order
+ // of down, up, left, right.
+ static const u8 bikeTireTracks_Transitions[4][4] = {
+ 1, 2, 7, 8,
+ 1, 2, 6, 5,
+ 5, 8, 3, 4,
+ 6, 7, 3, 4,
+ };
+
+ if (eventObj->currentCoords.x != eventObj->previousCoords.x || eventObj->currentCoords.y != eventObj->previousCoords.y)
+ {
+ gFieldEffectArguments[0] = eventObj->previousCoords.x;
+ gFieldEffectArguments[1] = eventObj->previousCoords.y;
+ gFieldEffectArguments[2] = 149;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] =
+ bikeTireTracks_Transitions[eventObj->previousMovementDirection][eventObj->facingDirection - 5];
+ FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS);
+ }
+}
+
+void GroundEffect_Ripple(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ DoRippleFieldEffect(eventObj, sprite);
+}
+
+void GroundEffect_StepOnPuddle(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ StartFieldEffectForEventObject(FLDEFF_SPLASH, eventObj);
+}
+
+void GroundEffect_SandHeap(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ StartFieldEffectForEventObject(FLDEFF_SAND_PILE, eventObj);
+}
+
+void GroundEffect_JumpOnTallGrass(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ u8 spriteId;
+
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = 2;
+ FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
+
+ spriteId = sub_81546C8(
+ eventObj->localId, eventObj->mapNum, eventObj->mapGroup, eventObj->currentCoords.x, eventObj->currentCoords.y);
+
+ if (spriteId == MAX_SPRITES)
+ GroundEffect_SpawnOnTallGrass(eventObj, sprite);
+}
+
+void GroundEffect_JumpOnLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = 2;
+ FieldEffectStart(FLDEFF_JUMP_LONG_GRASS);
+}
+
+void GroundEffect_JumpOnShallowWater(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH);
+}
+
+void GroundEffect_JumpOnWater(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH);
+}
+
+void GroundEffect_JumpLandingDust(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ gFieldEffectArguments[2] = eventObj->previousElevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_DUST);
+}
+
+void GroundEffect_ShortGrass(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ StartFieldEffectForEventObject(FLDEFF_SHORT_GRASS, eventObj);
+}
+
+void GroundEffect_HotSprings(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ StartFieldEffectForEventObject(FLDEFF_HOT_SPRINGS_WATER, eventObj);
+}
+
+void GroundEffect_Seaweed(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = eventObj->currentCoords.x;
+ gFieldEffectArguments[1] = eventObj->currentCoords.y;
+ FieldEffectStart(FLDEFF_BUBBLES);
+}
+
+static void (*const sGroundEffectFuncs[])(struct EventObject *eventObj, struct Sprite *sprite) = {
+ GroundEffect_SpawnOnTallGrass,
+ GroundEffect_StepOnTallGrass,
+ GroundEffect_SpawnOnLongGrass,
+ GroundEffect_StepOnLongGrass,
+ GroundEffect_WaterReflection,
+ GroundEffect_IceReflection,
+ GroundEffect_FlowingWater,
+ GroundEffect_SandTracks,
+ GroundEffect_DeepSandTracks,
+ GroundEffect_Ripple,
+ GroundEffect_StepOnPuddle,
+ GroundEffect_SandHeap,
+ GroundEffect_JumpOnTallGrass,
+ GroundEffect_JumpOnLongGrass,
+ GroundEffect_JumpOnShallowWater,
+ GroundEffect_JumpOnWater,
+ GroundEffect_JumpLandingDust,
+ GroundEffect_ShortGrass,
+ GroundEffect_HotSprings,
+ GroundEffect_Seaweed
+};
+
+/*static*/ void DoFlaggedGroundEffects(struct EventObject *eventObj, struct Sprite *sprite, u32 flags)
+{
+ u8 i;
+
+ if (EventObjectIsFarawayIslandMew(eventObj) == TRUE && !sub_81D4A58(eventObj))
+ return;
+
+ for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1)
+ if (flags & 1)
+ sGroundEffectFuncs[i](eventObj, sprite);
+}
+
+void filters_out_some_ground_effects(struct EventObject *eventObj, u32 *flags)
+{
+ if (eventObj->disableCoveringGroundEffects)
+ {
+ eventObj->inShortGrass = 0;
+ eventObj->inSandPile = 0;
+ eventObj->inShallowFlowingWater = 0;
+ eventObj->inHotSprings = 0;
+ *flags &= ~(GROUND_EFFECT_FLAG_HOT_SPRINGS
+ | GROUND_EFFECT_FLAG_SHORT_GRASS
+ | GROUND_EFFECT_FLAG_SAND_PILE
+ | GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER
+ | GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE);
+ }
+}
+
+void FilterOutStepOnPuddleGroundEffectIfJumping(struct EventObject *eventObj, u32 *flags)
+{
+ if (eventObj->landingJump)
+ *flags &= ~GROUND_EFFECT_FLAG_PUDDLE;
+}
+
+static void DoGroundEffects_OnSpawn(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (eventObj->triggerGroundEffectsOnMove)
+ {
+ flags = 0;
+ EventObjectUpdateZCoordAndPriority(eventObj, sprite);
+ GetAllGroundEffectFlags_OnSpawn(eventObj, &flags);
+ EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite);
+ DoFlaggedGroundEffects(eventObj, sprite, flags);
+ eventObj->triggerGroundEffectsOnMove = 0;
+ eventObj->disableCoveringGroundEffects = 0;
+ }
+}
+
+static void DoGroundEffects_OnBeginStep(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (eventObj->triggerGroundEffectsOnMove)
+ {
+ flags = 0;
+ EventObjectUpdateZCoordAndPriority(eventObj, sprite);
+ GetAllGroundEffectFlags_OnBeginStep(eventObj, &flags);
+ EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite);
+ filters_out_some_ground_effects(eventObj, &flags);
+ DoFlaggedGroundEffects(eventObj, sprite, flags);
+ eventObj->triggerGroundEffectsOnMove = 0;
+ eventObj->disableCoveringGroundEffects = 0;
+ }
+}
+
+static void DoGroundEffects_OnFinishStep(struct EventObject *eventObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (eventObj->triggerGroundEffectsOnStop)
+ {
+ flags = 0;
+ EventObjectUpdateZCoordAndPriority(eventObj, sprite);
+ GetAllGroundEffectFlags_OnFinishStep(eventObj, &flags);
+ EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite);
+ FilterOutStepOnPuddleGroundEffectIfJumping(eventObj, &flags);
+ DoFlaggedGroundEffects(eventObj, sprite, flags);
+ eventObj->triggerGroundEffectsOnStop = 0;
+ eventObj->landingJump = 0;
+ }
+}
+
+bool8 FreezeEventObject(struct EventObject *eventObject)
+{
+ if (eventObject->heldMovementActive || eventObject->frozen)
+ {
+ return TRUE;
+ }
+ else
+ {
+ eventObject->frozen = 1;
+ eventObject->spriteAnimPausedBackup = gSprites[eventObject->spriteId].animPaused;
+ eventObject->spriteAffineAnimPausedBackup = gSprites[eventObject->spriteId].affineAnimPaused;
+ gSprites[eventObject->spriteId].animPaused = 1;
+ gSprites[eventObject->spriteId].affineAnimPaused = 1;
+ return FALSE;
+ }
+}
+
+void FreezeEventObjects(void)
+{
+ u8 i;
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
+ if (gEventObjects[i].active && i != gPlayerAvatar.eventObjectId)
+ FreezeEventObject(&gEventObjects[i]);
+}
+
+void FreezeEventObjectsExceptOne(u8 a1)
+{
+ u8 i;
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
+ if (i != a1 && gEventObjects[i].active && i != gPlayerAvatar.eventObjectId)
+ FreezeEventObject(&gEventObjects[i]);
+}
+
+void UnfreezeEventObject(struct EventObject *eventObject)
+{
+ if (eventObject->active && eventObject->frozen)
+ {
+ eventObject->frozen = 0;
+ gSprites[eventObject->spriteId].animPaused = eventObject->spriteAnimPausedBackup;
+ gSprites[eventObject->spriteId].affineAnimPaused = eventObject->spriteAffineAnimPausedBackup;
+ }
+}
+
+void UnfreezeEventObjects(void)
+{
+ u8 i;
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
+ if (gEventObjects[i].active)
+ UnfreezeEventObject(&gEventObjects[i]);
+}
+
+void Step1(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += gDirectionToVectors[dir].x;
+ sprite->pos1.y += gDirectionToVectors[dir].y;
+}
+
+void Step2(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 2 * (u16) gDirectionToVectors[dir].x;
+ sprite->pos1.y += 2 * (u16) gDirectionToVectors[dir].y;
+}
+
+void Step3(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 2 * (u16) gDirectionToVectors[dir].x + (u16) gDirectionToVectors[dir].x;
+ sprite->pos1.y += 2 * (u16) gDirectionToVectors[dir].y + (u16) gDirectionToVectors[dir].y;
+}
+
+void Step4(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 4 * (u16) gDirectionToVectors[dir].x;
+ sprite->pos1.y += 4 * (u16) gDirectionToVectors[dir].y;
+}
+
+void Step8(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 8 * (u16) gDirectionToVectors[dir].x;
+ sprite->pos1.y += 8 * (u16) gDirectionToVectors[dir].y;
+}
+
+void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3)
+{
+ sprite->data[3] = a2;
+ sprite->data[4] = a3;
+ sprite->data[5] = 0;
+}
+
+typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
+
+static const SpriteStepFunc gUnknown_0850E6C4[] = {
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+};
+
+static const SpriteStepFunc gUnknown_0850E704[] = {
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+};
+
+static const SpriteStepFunc gUnknown_0850E724[] = {
+ Step2,
+ Step3,
+ Step3,
+ Step2,
+ Step3,
+ Step3,
+};
+
+static const SpriteStepFunc gUnknown_0850E73C[] = {
+ Step4,
+ Step4,
+ Step4,
+ Step4,
+};
+
+static const SpriteStepFunc gUnknown_0850E74C[] = {
+ Step8,
+ Step8,
+};
+
+static const SpriteStepFunc *const gUnknown_0850E754[] = {
+ gUnknown_0850E6C4,
+ gUnknown_0850E704,
+ gUnknown_0850E724,
+ gUnknown_0850E73C,
+ gUnknown_0850E74C,
+};
+
+static const s16 gUnknown_0850E768[] = {
+ 16, 8, 6, 4, 2
+};
+
+bool8 obj_npc_ministep(struct Sprite *sprite)
+{
+ if (sprite->data[5] >= gUnknown_0850E768[sprite->data[4]])
+ return FALSE;
+
+ gUnknown_0850E754[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]);
+
+ sprite->data[5]++;
+
+ if (sprite->data[5] < gUnknown_0850E768[sprite->data[4]])
+ return FALSE;
+
+ return TRUE;
+}
+
+void sub_80976DC(struct Sprite *sprite, u8 a2)
+{
+ sprite->data[3] = a2;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+bool8 sub_80976EC(struct Sprite *sprite)
+{
+ if (!(sprite->data[4] & 1))
+ {
+ Step1(sprite, sprite->data[3]);
+ sprite->data[5]++;
+ }
+
+ sprite->data[4]++;
+
+ if (sprite->data[5] > 15)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+const s8 gUnknown_0850E772[] = {
+ 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 1, 2, 2, 1, 2,
+ 2, 1, 2, 2, 1, 2, 1, 1,
+ 2, 1, 1, 2, 1, 1, 2, 1,
+ 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 1, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0,
+};
+
+const s8 gUnknown_0850E7BA[] = {
+ 0, 0, 1, 0, 0, 1, 0, 0,
+ 1, 0, 1, 1, 0, 1, 1, 0,
+ 1, 1, 0, 1, 1, 0, 1, 1,
+ 0, 0, 1, 0, 0, 1, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1, 0, 0, -1, 0, 0,
+ -1, 0, -1, -1, 0, -1, -1, 0,
+ -1, -1, -1, -1, -1, -1, -1, -2,
+};
+
+s16 sub_8097728(s16 a1)
+{
+ return gUnknown_0850E7BA[a1];
+}
+
+s16 sub_809773C(s16 a1)
+{
+ return gUnknown_0850E772[a1];
+}
+
+void sub_8097750(struct Sprite *sprite)
+{
+ sprite->data[6] = 0;
+ sprite->data[7] = 0;
+}
+
+bool8 sub_8097758(struct Sprite *sprite)
+{
+ bool8 result = FALSE;
+
+ switch(sprite->data[7])
+ {
+ case 0:
+ sprite->pos2.x += sub_809773C(sprite->data[6]);
+ sprite->pos2.y += sub_8097728(sprite->data[6]);
+ break;
+ case 1:
+ sprite->pos2.x -= sub_809773C(0x47 - sprite->data[6]);
+ sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
+ break;
+ case 2:
+ sprite->pos2.x -= sub_809773C(sprite->data[6]);
+ sprite->pos2.y += sub_8097728(sprite->data[6]);
+ break;
+ case 3:
+ sprite->pos2.x += sub_809773C(0x47 - sprite->data[6]);
+ sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
+ break;
+ }
+ if(++sprite->data[6] == 0x48)
+ {
+ sprite->data[6] = 0;
+ sprite->data[7]++;
+ }
+ if(sprite->data[7] == 0x4)
+ {
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ result = TRUE;
+ }
+ return result;
+}
+
+static const s8 gUnknown_0850E802[] = {
+ -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
+};
+
+static const s8 gUnknown_0850E812[] = {
+ 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
+};
+
+static const s8 gUnknown_0850E822[] = {
+ -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
+};
+
+static const s8 *const gUnknown_0850E834[] = {
+ gUnknown_0850E802,
+ gUnknown_0850E812,
+ gUnknown_0850E822
+};
+
+s16 sub_8097820(s16 a1, u8 a2)
+{
+ return gUnknown_0850E834[a2][a1];
+}
+
+void sub_809783C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
+{
+ sprite->data[3] = a2;
+ sprite->data[4] = a3;
+ sprite->data[5] = a4;
+ sprite->data[6] = 0;
+}
+
+static const s16 gUnknown_0850E840[] = {
+ 16, 16, 32,
+};
+
+static const u8 gUnknown_0850E846[] = {
+ 0, 0, 1,
+};
+
+u8 sub_809785C(struct Sprite *sprite)
+{
+ s16 v5[3];
+ u8 v6[3];
+ u8 v2;
+
+ memcpy(v5, gUnknown_0850E840, 6); // TODO: get rid of memcpy
+ memcpy(v6, gUnknown_0850E846, 3);
+ v2 = 0;
+
+ if (sprite->data[4])
+ Step1(sprite, sprite->data[3]);
+
+ sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+
+ sprite->data[6]++;
+
+ if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
+ v2 = 1;
+
+ if (sprite->data[6] >= v5[sprite->data[4]])
+ {
+ sprite->pos2.y = 0;
+ v2 = -1;
+ }
+
+ return v2;
+}
+
+static const s16 gUnknown_0850E84A[] = {
+ 32, 32, 64,
+};
+
+static const u8 gUnknown_0850E850[] = {
+ 1, 1, 2,
+};
+
+u8 sub_80978E4(struct Sprite *sprite)
+{
+ s16 v5[3];
+ u8 v6[3];
+ u8 v2;
+
+ memcpy(v5, gUnknown_0850E84A, 6);
+ memcpy(v6, gUnknown_0850E850, 3);
+ v2 = 0;
+
+ if (sprite->data[4] && !(sprite->data[6] & 1))
+ Step1(sprite, sprite->data[3]);
+
+ sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+
+ sprite->data[6]++;
+
+ if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
+ v2 = 1;
+
+ if (sprite->data[6] >= v5[sprite->data[4]])
+ {
+ sprite->pos2.y = 0;
+ v2 = -1;
+ }
+
+ return v2;
+}
+
+void SetMovementDelay(struct Sprite *sprite, s16 timer)
+{
+ sprite->data[3] = timer;
+}
+
+static bool8 WaitForMovementDelay(struct Sprite *sprite)
+{
+ sprite->data[3]--;
+
+ if (sprite->data[3] == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void SetAndStartSpriteAnim(struct Sprite *sprite, u8 a2, u8 a3)
+{
+ sprite->animNum = a2;
+ sprite->animPaused = 0 ;
+ SeekSpriteAnim(sprite, a3);
+}
+
+bool8 SpriteAnimEnded(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void UpdateEventObjectSpriteVisibility(struct Sprite *sprite, bool8 invisible)
+{
+ u16 x, y;
+ s16 x2, y2;
+
+ sprite->invisible = invisible;
+
+ if (sprite->coordOffsetEnabled)
+ {
+ x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ }
+ else
+ {
+ x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ }
+
+ x2 = x - (sprite->centerToCornerVecX >> 1);
+ y2 = y - (sprite->centerToCornerVecY >> 1);
+
+ if ((s16)x > 255 || x2 < -16)
+ sprite->invisible = 1;
+ if ((s16)y > 175 || y2 < -16)
+ sprite->invisible = 1;
+}
+
+void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *sprite)
+{
+ sub_8097D68(sprite);
+ SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
+ UpdateEventObjectSpriteVisibility(sprite, sprite->data[2]);
+}
+
+void sub_8097AF0(void)
+{
+ int i;
+
+ for(i = 0; i < MAX_SPRITES; i++)
+ {
+ struct Sprite *sprite = &gSprites[i];
+ if(sprite->inUse && sprite->callback == UpdateEventObjectSpriteSubpriorityAndVisibility)
+ DestroySprite(sprite);
+ }
+}
+
+int sub_8097B2C(u8 var) // this should return a u8, because all that call this shifts to u8, but it wont match because it doesnt shift u8 at the end.
+{
+ int i;
+
+ for(i = 0; i < MAX_SPRITES; i++)
+ {
+ struct Sprite *sprite = &gSprites[i];
+ if(sprite->inUse && sprite->callback == UpdateEventObjectSpriteSubpriorityAndVisibility && (u8)sprite->data[0] == var)
+ return i;
+ }
+ return MAX_SPRITES;
+}
+
+void sub_8097B78(u8 var1, u8 var2)
+{
+ u8 spriteId = sub_8097B2C(var1);
+
+ if(spriteId != MAX_SPRITES)
+ StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(var2));
+}
+
+void sub_8097BB4(u8 var1, u8 var2)
+{
+ int spriteId = sub_8097B2C(var1);
+
+ if(spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(var2);
+ u16 tileNum = sprite->oam.tileNum;
+
+ sprite->oam = *gfxInfo->oam;
+ sprite->oam.tileNum = tileNum;
+ sprite->oam.paletteNum = gfxInfo->paletteSlot;
+ sprite->images = gfxInfo->images;
+
+ if(gfxInfo->subspriteTables == NULL)
+ {
+ sprite->subspriteTables = NULL;
+ sprite->subspriteTableNum = 0;
+ sprite->subspriteMode = 0;
+ }
+ else
+ {
+ SetSubspriteTables(sprite, gfxInfo->subspriteTables);
+ sprite->subspriteMode = 2;
+ }
+ StartSpriteAnim(sprite, 0);
+ }
+}
+
+void sub_8097C44(u8 var, bool32 var2)
+{
+ u8 spriteId = sub_8097B2C(var);
+
+ if(spriteId == MAX_SPRITES)
+ return;
+
+ if(var2)
+ gSprites[spriteId].data[2] = 1;
+ else
+ gSprites[spriteId].data[2] = 0;
+}
+
+bool32 sub_8097C8C(u8 var)
+{
+ u8 spriteId = sub_8097B2C(var);
+
+ if(spriteId == MAX_SPRITES)
+ return FALSE;
+
+ return (gSprites[spriteId].data[2] == TRUE);
+}
+
+void sub_8097CC4(u8 var1, u8 var2)
+{
+ u8 spriteId = sub_8097B2C(var1);
+
+ if(spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[3] = var2;
+ gSprites[spriteId].data[4] = 0;
+ }
+}
+
+void sub_8097CF4(struct Sprite *sprite)
+{
+ switch(sprite->data[4])
+ {
+ case 0:
+ sprite->pos2.y = 0;
+ sprite->data[4]++;
+ case 1:
+ sprite->pos2.y -= 8;
+ if(sprite->pos2.y == -160)
+ {
+ sprite->pos2.y = 0;
+ sprite->data[2] = 1;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ }
+ }
+}
+
+void sub_8097D30(struct Sprite *sprite)
+{
+ switch(sprite->data[4])
+ {
+ case 0:
+ sprite->pos2.y = -160;
+ sprite->data[4]++;
+ case 1:
+ sprite->pos2.y += 8;
+ if(sprite->pos2.y == 0)
+ {
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ }
+ }
+}
+
+static void sub_8097D68(struct Sprite *sprite)
+{
+ switch(sprite->data[3])
+ {
+ case 1:
+ sub_8097D30(sprite);
+ break;
+ case 2:
+ sub_8097CF4(sprite);
+ break;
+ case 0:
+ break;
+ default:
+ sprite->data[3] = 0;
+ break;
+ }
+}
+
+bool32 sub_8097D9C(u8 var)
+{
+ u8 spriteId = sub_8097B2C(var);
+
+ if(spriteId == MAX_SPRITES)
+ return FALSE;
+
+ if(gSprites[spriteId].data[3] != FALSE)
+ return TRUE;
+
+ return FALSE;
+}
+
+u32 StartFieldEffectForEventObject(u8 fieldEffectId, struct EventObject *eventObject)
+{
+ EventObjectGetLocalIdAndMap(eventObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ return FieldEffectStart(fieldEffectId);
+}
+
+void DoShadowFieldEffect(struct EventObject *eventObject)
+{
+ if (!eventObject->hasShadow)
+ {
+ eventObject->hasShadow = 1;
+ StartFieldEffectForEventObject(FLDEFF_SHADOW, eventObject);
+ }
+}
+
+static void DoRippleFieldEffect(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ gFieldEffectArguments[0] = sprite->pos1.x;
+ gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
+ gFieldEffectArguments[2] = 151;
+ gFieldEffectArguments[3] = 3;
+ FieldEffectStart(FLDEFF_RIPPLE);
+}
+
+u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_StoreAndLockAnim_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FreeAndUnlockAnim_Step0,
+ MovementAction_Finish,
+};
+
+u8 (*const gMovementActionFuncs_FlyUp[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FlyUp_Step0,
+ MovementAction_FlyUp_Step1,
+ MovementAction_Fly_Finish,
+};
+
+u8 (*const gMovementActionFuncs_FlyDown[])(struct EventObject *, struct Sprite *) = {
+ MovementAction_FlyDown_Step0,
+ MovementAction_FlyDown_Step1,
+ MovementAction_Fly_Finish,
+};
+
+u8 MovementAction_StoreAndLockAnim_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ u32 one;
+ bool32 ableToStore = FALSE;
+ if (gLockedAnimEventObjects == NULL)
+ {
+ gLockedAnimEventObjects = AllocZeroed(sizeof(struct LockedAnimEventObjects));
+ gLockedAnimEventObjects->eventObjectIds[0] = eventObject->localId;
+ // needed to match
+ gLockedAnimEventObjects->count = (one = 1);
+ ableToStore = one;
+ }
+ else
+ {
+ u8 i;
+ u8 firstFreeSlot;
+ bool32 found;
+ for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
+ {
+ if (firstFreeSlot == 16 && gLockedAnimEventObjects->eventObjectIds[i] == 0)
+ firstFreeSlot = i;
+
+ if (gLockedAnimEventObjects->eventObjectIds[i] == eventObject->localId)
+ {
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found && firstFreeSlot != 16)
+ {
+ gLockedAnimEventObjects->eventObjectIds[firstFreeSlot] = eventObject->localId;
+ gLockedAnimEventObjects->count++;
+ ableToStore = TRUE;
+ }
+ }
+
+ if (ableToStore == TRUE)
+ {
+ eventObject->inanimate = TRUE;
+ eventObject->facingDirectionLocked = TRUE;
+ }
+
+ sprite->data[2] = 1;
+ return TRUE;
+}
+
+u8 MovementAction_FreeAndUnlockAnim_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ bool32 ableToStore;
+ u8 index;
+
+ sprite->data[2] = 1;
+ if (gLockedAnimEventObjects != NULL)
+ {
+ ableToStore = FALSE;
+ index = FindLockedEventObjectIndex(eventObject);
+ if (index != 16)
+ {
+ gLockedAnimEventObjects->eventObjectIds[index] = 0;
+ gLockedAnimEventObjects->count--;
+ ableToStore = TRUE;
+ }
+ if (gLockedAnimEventObjects->count == 0)
+ FREE_AND_SET_NULL(gLockedAnimEventObjects);
+ if (ableToStore == TRUE)
+ {
+ eventObject->inanimate = GetEventObjectGraphicsInfo(eventObject->graphicsId)->inanimate;
+ eventObject->facingDirectionLocked = FALSE;
+ sprite->animPaused = 0;
+ }
+ }
+
+ return TRUE;
+}
+
+u8 FindLockedEventObjectIndex(struct EventObject *eventObject)
+{
+ u8 i;
+
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
+ {
+ if (gLockedAnimEventObjects->eventObjectIds[i] == eventObject->localId)
+ return i;
+ }
+ return EVENT_OBJECTS_COUNT;
+}
+
+void CreateLevitateMovementTask(struct EventObject *eventObject)
+{
+ u8 taskId = CreateTask(ApplyLevitateMovement, 0xFF);
+ struct Task *task = &gTasks[taskId];
+
+ StoreWordInTwoHalfwords(&task->data[0], (u32)eventObject);
+ eventObject->warpArrowSpriteId = taskId;
+ task->data[3] = 0xFFFF;
+}
+
+static void ApplyLevitateMovement(u8 taskId)
+{
+ struct EventObject *eventObject;
+ struct Sprite *sprite;
+ struct Task *task = &gTasks[taskId];
+
+ LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&eventObject); // load the map object pointer.
+ sprite = &gSprites[eventObject->spriteId];
+
+ if(!(task->data[2] & 0x3))
+ sprite->pos2.y += task->data[3];
+
+ if(!(task->data[2] & 0xF))
+ task->data[3] = -task->data[3];
+
+ task->data[2]++;
+}
+
+void DestroyExtraMovementTask(u8 taskId)
+{
+ struct EventObject *eventObject;
+ struct Task *task = &gTasks[taskId];
+
+ LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&eventObject); // unused eventObject
+ DestroyTask(taskId);
+}
+
+void sub_8098074(u8 var1, u8 var2)
+{
+ u8 i;
+
+ for(i = 0; i < EVENT_OBJECTS_COUNT; i++)
+ {
+ if(i != var1 && i != var2 &&
+ gEventObjects[i].active && i != gPlayerAvatar.eventObjectId)
+ FreezeEventObject(&gEventObjects[i]);
+ }
+}
+
+u8 MovementAction_FlyUp_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->pos2.y = 0;
+ sprite->data[2]++;
+ return FALSE;
+}
+
+u8 MovementAction_FlyUp_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->pos2.y -= 8;
+
+ if(sprite->pos2.y == -160)
+ sprite->data[2]++;
+ return FALSE;
+}
+
+u8 MovementAction_FlyDown_Step0(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->pos2.y = -160;
+ sprite->data[2]++;
+ return FALSE;
+}
+
+u8 MovementAction_FlyDown_Step1(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ sprite->pos2.y += 8;
+
+ if(!sprite->pos2.y)
+ sprite->data[2]++;
+ return FALSE;
+}
+
+// though this function returns TRUE without doing anything, this header is required due to being in an array of functions which needs it.
+u8 MovementAction_Fly_Finish(struct EventObject *eventObject, struct Sprite *sprite)
+{
+ return TRUE;
+}
diff --git a/src/field_camera.c b/src/field_camera.c
index 95167ee10..d7063bd89 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -4,7 +4,7 @@
#include "field_camera.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "gpu_regs.h"
#include "menu.h"
#include "overworld.h"
@@ -406,7 +406,7 @@ void CameraUpdate(void)
if (deltaX != 0 || deltaY != 0)
{
CameraMove(deltaX, deltaY);
- UpdateFieldObjectsForCameraUpdate(deltaX, deltaY);
+ UpdateEventObjectsForCameraUpdate(deltaX, deltaY);
RotatingGatePuzzleCameraUpdate(deltaX, deltaY);
ResetBerryTreeSparkleFlags();
tilemap_move_something(&gUnknown_03000E20, deltaX * 2, deltaY * 2);
@@ -421,7 +421,7 @@ void CameraUpdate(void)
void camera_move_and_redraw(int a, int b) //unused
{
CameraMove(a, b);
- UpdateFieldObjectsForCameraUpdate(a, b);
+ UpdateEventObjectsForCameraUpdate(a, b);
DrawWholeMapView();
gUnknown_03005DEC -= a * 16;
gUnknown_03005DE8 -= b * 16;
@@ -477,7 +477,7 @@ static void CameraPanningCB_PanAhead(void)
gUnknown_03000E2C = 0;
}
- var = player_get_direction_upper_nybble();
+ var = GetPlayerMovementDirection();
if (var == 2)
{
if (gUnknown_03000E2A > -8)
diff --git a/src/field_effect.c b/src/field_effect.c
index 692090779..00814192e 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -6,8 +6,7 @@
#include "decompress.h"
#include "field_camera.h"
#include "field_effect_helpers.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "field_screen.h"
#include "field_weather.h"
@@ -49,12 +48,12 @@ const u32 gNewGameBirchPic[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
const u32 gUnusedBirchBeauty[] = INCBIN_U32("graphics/unused/intro_birch_beauty.4bpp");
const u16 gNewGameBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal");
const u32 gSpriteImage_855A970[] = INCBIN_U32("graphics/misc/pokeball_glow.4bpp");
-const u16 gFieldEffectObjectPalette4[16] = INCBIN_U16("graphics/map_objects/palettes/field_effect_object_palette_04.gbapal");
+const u16 gFieldEffectObjectPalette4[16] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_04.gbapal");
const u32 gSpriteImage_855A9B0[] = INCBIN_U32("graphics/misc/pokecenter_monitor/0.4bpp");
const u32 gSpriteImage_855AA70[] = INCBIN_U32("graphics/misc/pokecenter_monitor/1.4bpp");
const u32 gSpriteImage_855AB30[] = INCBIN_U32("graphics/misc/big_hof_monitor.4bpp");
const u8 gSpriteImage_855AD30[] = INCBIN_U8("graphics/misc/small_hof_monitor.4bpp");
-const u16 gFieldEffectObjectPalette5[16] = INCBIN_U16("graphics/map_objects/palettes/field_effect_object_palette_05.gbapal");
+const u16 gFieldEffectObjectPalette5[16] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_05.gbapal");
// Graphics for the lights streaking past your Pokemon when it uses a field move.
const u32 gFieldMoveStreaksTiles[] = INCBIN_U32("graphics/misc/field_move_streaks.4bpp");
@@ -287,7 +286,7 @@ bool8 (*const gUnknown_0855C3FC[])(struct Task *) = {
sub_80B72F4,
};
-bool8 (*const gUnknown_0855C418[])(struct Task *, struct MapObject *) = {
+bool8 (*const gUnknown_0855C418[])(struct Task *, struct EventObject *) = {
sub_80B73D0,
waterfall_1_do_anim_probably,
waterfall_2_wait_anim_finish_probably,
@@ -301,7 +300,7 @@ bool8 (*const gUnknown_0855C42C[])(struct Task *) = {
dive_3_unknown,
};
-bool8 (*const gUnknown_0855C438[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0855C438[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_80B764C,
sub_80B7684,
sub_80B76B8,
@@ -310,14 +309,14 @@ bool8 (*const gUnknown_0855C438[])(struct Task *, struct MapObject *, struct Spr
sub_80B7814,
};
-bool8 (*const gUnknown_0855C450[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0855C450[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_80B78EC,
sub_80B791C,
sub_80B7968,
sub_80B79BC,
};
-bool8 (*const gUnknown_0855C460[])(struct Task *, struct MapObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0855C460[])(struct Task *, struct EventObject *, struct Sprite *) = {
sub_80B7AE8,
sub_80B7B18,
sub_80B7B94,
@@ -1148,7 +1147,7 @@ void mapldr_080842E8(void)
pal_fill_black();
CreateTask(task00_8084310, 0);
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
}
@@ -1185,13 +1184,13 @@ void mapldr_08084390(void)
Overworld_PlaySpecialMapMusic();
pal_fill_black();
CreateTask(c3_080843F8, 0);
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
if (gPlayerAvatar.flags & 0x08)
{
- FieldObjectTurn(&gMapObjects[gPlayerAvatar.mapObjectId], DIR_WEST);
+ EventObjectTurn(&gEventObjects[gPlayerAvatar.eventObjectId], DIR_WEST);
}
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
}
@@ -1211,7 +1210,7 @@ void c3_080843F8(u8 taskId)
if (!FieldEffectActiveListContains(FLDEFF_FLY_IN))
{
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(taskId);
}
}
@@ -1226,7 +1225,7 @@ void sub_80B6B68(void)
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
CreateTask(sub_80B6B94, 0);
gFieldCallback = NULL;
}
@@ -1240,16 +1239,16 @@ void sub_80B6B94(u8 taskId)
bool8 sub_80B6BCC(struct Task *task) // gUnknown_0855C3C8[0]
{
- struct MapObject *playerObject;
+ struct EventObject *playerObject;
struct Sprite *playerSprite;
- playerObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ playerObject = &gEventObjects[gPlayerAvatar.eventObjectId];
playerSprite = &gSprites[gPlayerAvatar.spriteId];
CameraObjectReset2();
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
gPlayerAvatar.preventStep = TRUE;
- FieldObjectSetSpecialAnim(playerObject, GetFaceDirectionAnimId(player_get_direction_lower_nybble()));
+ EventObjectSetHeldMovement(playerObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
task->data[4] = playerSprite->subspriteMode;
- playerObject->mapobj_bit_26 = 1;
+ playerObject->fixedPriority = 1;
playerSprite->oam.priority = 1;
playerSprite->subspriteMode = 2;
task->data[0]++;
@@ -1274,7 +1273,7 @@ bool8 sub_80B6C90(struct Task *task) // gUnknown_0855C3C8[2]
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
task->data[1] = 1;
task->data[2] = 0;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 0;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 0;
PlaySE(SE_RU_HYUU);
task->data[0]++;
return FALSE;
@@ -1282,10 +1281,10 @@ bool8 sub_80B6C90(struct Task *task) // gUnknown_0855C3C8[2]
bool8 sub_80B6D04(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
sprite = &gSprites[gPlayerAvatar.spriteId];
sprite->pos2.y += task->data[1];
if (task->data[1] < 8)
@@ -1299,15 +1298,15 @@ bool8 sub_80B6D04(struct Task *task)
if (task->data[3] == 0 && sprite->pos2.y >= -16)
{
task->data[3]++;
- mapObject->mapobj_bit_26 = 0;
+ eventObject->fixedPriority = 0;
sprite->subspriteMode = task->data[4];
- mapObject->mapobj_bit_2 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
}
if (sprite->pos2.y >= 0)
{
PlaySE(SE_W070);
- mapObject->mapobj_bit_3 = 1;
- mapObject->mapobj_bit_5 = 1;
+ eventObject->triggerGroundEffectsOnStop = 1;
+ eventObject->landingJump = 1;
sprite->pos2.y = 0;
task->data[0]++;
}
@@ -1344,7 +1343,7 @@ bool8 sub_80B6E18(struct Task *task)
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
CameraObjectReset1();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
InstallCameraPanAheadCallback();
DestroyTask(FindTaskIdByFunc(sub_80B6B94));
return FALSE;
@@ -1383,7 +1382,7 @@ void sub_80B6E88(u8 taskId)
bool8 sub_80B6EC0(struct Task *task)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
sub_80E1558(task->data[1]);
task->data[0]++;
@@ -1392,11 +1391,11 @@ bool8 sub_80B6EC0(struct Task *task)
bool8 sub_80B6EE0(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(player_get_direction_lower_nybble()));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
task->data[0]++;
task->data[2] = 0;
task->data[3] = 0;
@@ -1507,13 +1506,13 @@ void sub_80B70DC(u8 taskId)
bool8 sub_80B7114(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
s16 x;
s16 y;
u8 behavior;
CameraObjectReset2();
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(DIR_EAST));
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(DIR_EAST));
PlayerGetDestCoords(&x, &y);
behavior = MapGridGetMetatileBehaviorAt(x, y);
task->data[0]++;
@@ -1605,13 +1604,13 @@ bool8 sub_80B72D0(struct Task *task)
bool8 sub_80B72F4(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
CameraObjectReset1();
ScriptContext2_Disable();
- FieldObjectSetSpecialAnim(mapObject, GetGoSpeed0AnimId(DIR_EAST));
+ EventObjectSetHeldMovement(eventObject, GetWalkNormalMovementAction(DIR_EAST));
DestroyTask(FindTaskIdByFunc(sub_80B70DC));
}
return FALSE;
@@ -1630,10 +1629,10 @@ bool8 FldEff_UseWaterfall(void)
void sub_80B7384(u8 taskId)
{
- while (gUnknown_0855C418[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId]));
+ while (gUnknown_0855C418[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId]));
}
-bool8 sub_80B73D0(struct Task *task, struct MapObject *mapObject)
+bool8 sub_80B73D0(struct Task *task, struct EventObject *eventObject)
{
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
@@ -1641,12 +1640,12 @@ bool8 sub_80B73D0(struct Task *task, struct MapObject *mapObject)
return FALSE;
}
-bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObject)
+bool8 waterfall_1_do_anim_probably(struct Task *task, struct EventObject *eventObject)
{
ScriptContext2_Enable();
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
+ if (!EventObjectIsMovementOverridden(eventObject))
{
- FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
+ EventObjectClearHeldMovementIfFinished(eventObject);
gFieldEffectArguments[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
@@ -1654,7 +1653,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec
return FALSE;
}
-bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct MapObject *mapObject)
+bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct EventObject *eventObject)
{
if (FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
@@ -1664,20 +1663,20 @@ bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct MapObject
return TRUE;
}
-bool8 sub_80B7450(struct Task *task, struct MapObject *mapObject)
+bool8 sub_80B7450(struct Task *task, struct EventObject *eventObject)
{
- FieldObjectSetSpecialAnim(mapObject, GetSimpleGoAnimId(DIR_NORTH));
+ EventObjectSetHeldMovement(eventObject, GetWalkSlowMovementAction(DIR_NORTH));
task->data[0]++;
return FALSE;
}
-bool8 sub_80B7478(struct Task *task, struct MapObject *mapObject)
+bool8 sub_80B7478(struct Task *task, struct EventObject *eventObject)
{
- if (!FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (!EventObjectClearHeldMovementIfFinished(eventObject))
{
return FALSE;
}
- if (MetatileBehavior_IsWaterfall(mapObject->mapobj_unk_1E))
+ if (MetatileBehavior_IsWaterfall(eventObject->currentMetatileBehavior))
{
task->data[0] = 3;
return TRUE;
@@ -1729,7 +1728,7 @@ bool8 dive_3_unknown(struct Task *task)
PlayerGetDestCoords(&mapPosition.x, &mapPosition.y);
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- dive_warp(&mapPosition, gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E);
+ dive_warp(&mapPosition, gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior);
DestroyTask(FindTaskIdByFunc(Task_Dive));
FieldEffectActiveListRemove(FLDEFF_USE_DIVE);
}
@@ -1746,22 +1745,22 @@ void sub_80B75D8(u8 priority)
void sub_80B75F0(u8 taskId)
{
- while (gUnknown_0855C438[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while (gUnknown_0855C438[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80B764C(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B764C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
SetCameraPanningCallback(NULL);
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
task->data[1] = 1;
task->data[0]++;
return TRUE;
}
-bool8 sub_80B7684(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7684(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
SetCameraPanning(0, task->data[1]);
task->data[1] = -task->data[1];
@@ -1774,12 +1773,12 @@ bool8 sub_80B7684(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_80B76B8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B76B8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->pos2.y = 0;
task->data[3] = 1;
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP);
@@ -1788,7 +1787,7 @@ bool8 sub_80B76B8(struct Task *task, struct MapObject *mapObject, struct Sprite
return TRUE;
}
-bool8 sub_80B7704(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7704(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
s16 centerToCornerVecY;
SetCameraPanning(0, task->data[1]);
@@ -1820,7 +1819,7 @@ bool8 sub_80B7704(struct Task *task, struct MapObject *mapObject, struct Sprite
if (task->data[5] == 0 && sprite->pos2.y < -0x10)
{
task->data[5]++;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
sprite->oam.priority = 1;
sprite->subspriteMode = 2;
}
@@ -1831,7 +1830,7 @@ bool8 sub_80B7704(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_80B77F8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B77F8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
music_something();
sub_80AF0B4();
@@ -1839,7 +1838,7 @@ bool8 sub_80B77F8(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_80B7814(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7814(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (!gPaletteFade.active && sub_80859A0() == TRUE)
{
@@ -1864,25 +1863,25 @@ void mapldr_080851BC(void)
void sub_80B7890(u8 taskId)
{
- while (gUnknown_0855C450[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while (gUnknown_0855C450[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80B78EC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B78EC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
CameraObjectReset2();
- FreezeMapObjects();
+ FreezeEventObjects();
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
task->data[0]++;
return FALSE;
}
-bool8 sub_80B791C(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B791C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (IsWeatherNotFadingIn())
{
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
@@ -1891,27 +1890,27 @@ bool8 sub_80B791C(struct Task *task, struct MapObject *mapObject, struct Sprite
return FALSE;
}
-bool8 sub_80B7968(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7968(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
sprite = &gSprites[task->data[1]];
if (sprite->animCmdIndex > 1)
{
task->data[0]++;
- mapObject->mapobj_bit_13 = 0;
+ eventObject->invisible = 0;
CameraObjectReset1();
PlaySE(SE_W091);
- FieldObjectSetSpecialAnim(mapObject, sub_8093514(DIR_EAST));
+ EventObjectSetHeldMovement(eventObject, GetJumpMovementAction(DIR_EAST));
}
return FALSE;
}
-bool8 sub_80B79BC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B79BC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_80B7890));
}
return FALSE;
@@ -1946,27 +1945,27 @@ void sub_80B7A74(u8 priority)
void sub_80B7A8C(u8 taskId)
{
- while(gUnknown_0855C460[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId], &gSprites[gPlayerAvatar.spriteId]));
+ while(gUnknown_0855C460[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80B7AE8(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7AE8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
gPlayerAvatar.preventStep = TRUE;
- mapObject->mapobj_bit_26 = 1;
+ eventObject->fixedPriority = 1;
task->data[0]++;
return FALSE;
}
-bool8 sub_80B7B18(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7B18(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
if (task->data[1] > 3)
{
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[0] = eventObject->currentCoords.x;
+ gFieldEffectArguments[1] = eventObject->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
@@ -1974,24 +1973,24 @@ bool8 sub_80B7B18(struct Task *task, struct MapObject *mapObject, struct Sprite
} else
{
task->data[1]++;
- FieldObjectSetSpecialAnim(mapObject, GetStepInPlaceDelay4AnimId(mapObject->mapobj_unk_18));
+ EventObjectSetHeldMovement(eventObject, GetWalkInPlaceFastestMovementAction(eventObject->facingDirection));
PlaySE(SE_FU_ZUZUZU);
}
}
return FALSE;
}
-bool8 sub_80B7B94(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7B94(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (gSprites[task->data[1]].animCmdIndex == 2)
{
- mapObject->mapobj_bit_13 = 1;
+ eventObject->invisible = 1;
task->data[0]++;
}
return FALSE;
}
-bool8 sub_80B7BCC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7BCC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
{
@@ -2005,7 +2004,7 @@ bool8 sub_80B7BCC(struct Task *task, struct MapObject *mapObject, struct Sprite
void sub_80B7CE4(u8);
void mapldr_080859D4(void);
-bool8 sub_80B7BF4(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite)
+bool8 sub_80B7BF4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (!gPaletteFade.active && sub_80859A0() == TRUE)
{
@@ -2038,7 +2037,7 @@ void sub_80B7CAC(struct Sprite *sprite)
void sub_80B7CC8(void)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
CreateTask(sub_80B7CE4, 0x50);
}
@@ -2051,24 +2050,24 @@ void sub_80B7D14(struct Task *task)
{
task->data[0]++;
task->data[14] = 64;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
}
void sub_80B7D34(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
u8 spinDirections[5] = {1, 3, 4, 2, 1};
if (task->data[14] != 0 && (--task->data[14]) == 0)
{
music_something();
sub_80AF0B4();
}
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
if (task->data[14] == 0 && !gPaletteFade.active && sub_80859A0() == TRUE)
{
- FieldObjectSetDirection(mapObject, task->data[15]);
+ SetEventObjectDirection(eventObject, task->data[15]);
sub_8084E14();
warp_in();
gFieldCallback = mapldr_080859D4;
@@ -2076,7 +2075,7 @@ void sub_80B7D34(struct Task *task)
DestroyTask(FindTaskIdByFunc(sub_80B7CE4));
} else if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(spinDirections[mapObject->mapobj_unk_18]));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(spinDirections[eventObject->facingDirection]));
if (task->data[2] < 12)
{
task->data[2]++;
@@ -2098,9 +2097,9 @@ void mapldr_080859D4(void)
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
CreateTask(sub_80B7E94, 0);
}
@@ -2114,36 +2113,36 @@ void sub_80B7EC4(struct Task *task)
if (IsWeatherNotFadingIn())
{
task->data[0]++;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
}
}
void sub_80B7EE8(struct Task *task)
{
u8 spinDirections[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) && !FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ if (EventObjectIsMovementOverridden(eventObject) && !EventObjectClearHeldMovementIfFinished(eventObject))
{
return;
}
- if (task->data[2] >= 32 && task->data[15] == player_get_direction_lower_nybble())
+ if (task->data[2] >= 32 && task->data[15] == GetPlayerFacingDirection())
{
- mapObject->mapobj_bit_13 = 0;
+ eventObject->invisible = 0;
ScriptContext2_Disable();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_80B7E94));
return;
}
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(spinDirections[mapObject->mapobj_unk_18]));
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(spinDirections[eventObject->facingDirection]));
if (task->data[2] < 32)
{
task->data[2]++;
}
task->data[1] = task->data[2] >> 2;
}
- mapObject->mapobj_bit_13 ^= 1;
+ eventObject->invisible ^= 1;
}
static void ExecuteTeleportFieldEffectTask(u8);
@@ -2173,23 +2172,23 @@ static void ExecuteTeleportFieldEffectTask(u8 taskId)
static void TeleportFieldEffectTask1(struct Task *task)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
CameraObjectReset2();
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
task->data[0]++;
}
static void TeleportFieldEffectTask2(struct Task *task)
{
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
- FieldObjectTurn(mapObject, spinDirections[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, spinDirections[eventObject->facingDirection]);
task->data[1] = 8;
task->data[2]++;
}
- if (task->data[2] > 7 && task->data[15] == mapObject->mapobj_unk_18)
+ if (task->data[2] > 7 && task->data[15] == eventObject->facingDirection)
{
task->data[0]++;
task->data[1] = 4;
@@ -2202,12 +2201,12 @@ static void TeleportFieldEffectTask2(struct Task *task)
static void TeleportFieldEffectTask3(struct Task *task)
{
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((--task->data[1]) <= 0)
{
task->data[1] = 4;
- FieldObjectTurn(mapObject, spinDirections[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, spinDirections[eventObject->facingDirection]);
}
sprite->pos1.y -= task->data[3];
task->data[4] += task->data[3];
@@ -2255,9 +2254,9 @@ static void mapldr_08085D88(void)
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gFieldCallback = NULL;
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 1;
CameraObjectReset2();
CreateTask(sub_80B8250, 0);
}
@@ -2282,12 +2281,12 @@ void sub_80B8280(struct Task *task)
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 0;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = 0;
task->data[0]++;
task->data[1] = 8;
task->data[2] = 1;
task->data[14] = sprite->subspriteMode;
- task->data[15] = player_get_direction_lower_nybble();
+ task->data[15] = GetPlayerFacingDirection();
PlaySE(SE_TK_WARPIN);
}
}
@@ -2295,14 +2294,14 @@ void sub_80B8280(struct Task *task)
void sub_80B830C(struct Task *task)
{
u8 spinDirections[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((sprite->pos2.y += task->data[1]) >= -8)
{
if (task->data[13] == 0)
{
task->data[13]++;
- mapObject->mapobj_bit_2 = 1;
+ eventObject->triggerGroundEffectsOnMove = 1;
sprite->subspriteMode = task->data[14];
}
} else
@@ -2320,7 +2319,7 @@ void sub_80B830C(struct Task *task)
if ((--task->data[2]) == 0)
{
task->data[2] = 4;
- FieldObjectTurn(mapObject, spinDirections[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, spinDirections[eventObject->facingDirection]);
}
if (sprite->pos2.y >= 0)
{
@@ -2334,16 +2333,16 @@ void sub_80B830C(struct Task *task)
void sub_80B8410(struct Task *task)
{
u8 spinDirections[5] = {1, 3, 4, 2, 1};
- struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if ((--task->data[1]) == 0)
{
- FieldObjectTurn(mapObject, spinDirections[mapObject->mapobj_unk_18]);
+ EventObjectTurn(eventObject, spinDirections[eventObject->facingDirection]);
task->data[1] = 8;
- if ((++task->data[2]) > 4 && task->data[14] == mapObject->mapobj_unk_18)
+ if ((++task->data[2]) > 4 && task->data[14] == eventObject->facingDirection)
{
ScriptContext2_Disable();
CameraObjectReset1();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DestroyTask(FindTaskIdByFunc(sub_80B8250));
}
}
@@ -2893,31 +2892,31 @@ void sub_80B8D84(u8 taskId)
void sub_80B8DB4(struct Task *task)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
gPlayerAvatar.preventStep = TRUE;
SetPlayerAvatarStateMask(8);
PlayerGetDestCoords(&task->data[1], &task->data[2]);
- MoveCoords(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18, &task->data[1], &task->data[2]);
+ MoveCoords(gEventObjects[gPlayerAvatar.eventObjectId].movementDirection, &task->data[1], &task->data[2]);
task->data[0]++;
}
void sub_80B8E14(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
sub_808C114();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, 0x39);
task->data[0]++;
}
}
void sub_80B8E60(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectCheckHeldMovementStatus(eventObject))
{
gFieldEffectArguments[0] = task->data[15] | 0x80000000;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
@@ -2927,32 +2926,32 @@ void sub_80B8E60(struct Task *task)
void sub_80B8EA8(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectSetGraphicsId(mapObject, GetPlayerAvatarGraphicsIdByStateId(3));
- FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
- FieldObjectSetSpecialAnim(mapObject, sub_8093540(mapObject->placeholder18));
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectSetGraphicsId(eventObject, GetPlayerAvatarGraphicsIdByStateId(3));
+ EventObjectClearHeldMovementIfFinished(eventObject);
+ EventObjectSetHeldMovement(eventObject, GetJumpSpecialMovementAction(eventObject->movementDirection));
gFieldEffectArguments[0] = task->data[1];
gFieldEffectArguments[1] = task->data[2];
- gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId;
- mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB);
+ gFieldEffectArguments[2] = gPlayerAvatar.eventObjectId;
+ eventObject->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB);
task->data[0]++;
}
}
void sub_80B8F24(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
gPlayerAvatar.preventStep = FALSE;
gPlayerAvatar.flags &= 0xdf;
- FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(mapObject->placeholder18));
- sub_81555AC(mapObject->mapobj_unk_1A, 1);
- UnfreezeMapObjects();
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(eventObject->movementDirection));
+ sub_81555AC(eventObject->fieldEffectSpriteId, 1);
+ UnfreezeEventObjects();
ScriptContext2_Disable();
FieldEffectActiveListRemove(FLDEFF_USE_SURF);
DestroyTask(FindTaskIdByFunc(sub_80B8D84));
@@ -3205,24 +3204,24 @@ void sub_80B91D4(u8 taskId)
void sub_80B9204(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[15] = gPlayerAvatar.flags;
gPlayerAvatar.preventStep = TRUE;
SetPlayerAvatarStateMask(1);
sub_808C114();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, 0x39);
task->data[0]++;
}
}
void sub_80B925C(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
gFieldEffectArguments[0] = task->data[1];
@@ -3232,14 +3231,14 @@ void sub_80B925C(struct Task *task)
void sub_80B92A0(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[15] & 0x08)
{
- sub_81555AC(mapObject->mapobj_unk_1A, 2);
- sub_81555D8(mapObject->mapobj_unk_1A, 0);
+ sub_81555AC(eventObject->fieldEffectSpriteId, 2);
+ sub_81555D8(eventObject->fieldEffectSpriteId, 0);
}
task->data[1] = sub_80B94C4();
task->data[0]++;
@@ -3253,15 +3252,15 @@ void sub_80B92F8(struct Task *task)
task->data[0]++;
task->data[2] = 16;
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
- FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], 0x02);
+ EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], 0x02);
}
}
void sub_80B933C(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if ((task->data[2] == 0 || (--task->data[2]) == 0) && FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if ((task->data[2] == 0 || (--task->data[2]) == 0) && EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
PlaySE(SE_W019);
@@ -3271,17 +3270,17 @@ void sub_80B933C(struct Task *task)
void sub_80B9390(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((++task->data[2]) >= 8)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectSetGraphicsId(mapObject, GetPlayerAvatarGraphicsIdByStateId(0x03));
- StartSpriteAnim(&gSprites[mapObject->spriteId], 0x16);
- mapObject->mapobj_bit_12 = 1;
- FieldObjectSetSpecialAnim(mapObject, 0x48);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectSetGraphicsId(eventObject, GetPlayerAvatarGraphicsIdByStateId(0x03));
+ StartSpriteAnim(&gSprites[eventObject->spriteId], 0x16);
+ eventObject->inanimate = 1;
+ EventObjectSetHeldMovement(eventObject, 0x48);
if (task->data[15] & 0x08)
{
- DestroySprite(&gSprites[mapObject->mapobj_unk_1A]);
+ DestroySprite(&gSprites[eventObject->fieldEffectSpriteId]);
}
task->data[0]++;
task->data[2] = 0;
@@ -3290,14 +3289,14 @@ void sub_80B9390(struct Task *task)
void sub_80B9418(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((++task->data[2]) >= 10)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- FieldObjectClearAnimIfSpecialAnimActive(mapObject);
- mapObject->mapobj_bit_12 = 0;
- mapObject->mapobj_bit_22 = 0;
- sub_80B9560(task->data[1], mapObject->spriteId);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectClearHeldMovementIfActive(eventObject);
+ eventObject->inanimate = 0;
+ eventObject->hasShadow = 0;
+ sub_80B9560(task->data[1], eventObject->spriteId);
CameraObjectReset2();
task->data[0]++;
}
@@ -3502,9 +3501,9 @@ void sub_80B97D4(u8 taskId)
void sub_80B9804(struct Task *task)
{
- struct MapObject *mapObject;
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
+ struct EventObject *eventObject;
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
task->data[2] = 17;
@@ -3513,27 +3512,27 @@ void sub_80B9804(struct Task *task)
SetPlayerAvatarStateMask(0x01);
if (task->data[15] & 0x08)
{
- sub_81555AC(mapObject->mapobj_unk_1A, 0);
+ sub_81555AC(eventObject->fieldEffectSpriteId, 0);
}
- FieldObjectSetGraphicsId(mapObject, GetPlayerAvatarGraphicsIdByStateId(0x3));
+ EventObjectSetGraphicsId(eventObject, GetPlayerAvatarGraphicsIdByStateId(0x3));
CameraObjectReset2();
- FieldObjectTurn(mapObject, DIR_WEST);
- StartSpriteAnim(&gSprites[mapObject->spriteId], 0x16);
- mapObject->mapobj_bit_13 = 0;
+ EventObjectTurn(eventObject, DIR_WEST);
+ StartSpriteAnim(&gSprites[eventObject->spriteId], 0x16);
+ eventObject->invisible = 0;
task->data[1] = sub_80B94C4();
sub_80B9524(task->data[1]);
- sub_80B9560(task->data[1], mapObject->spriteId);
+ sub_80B9560(task->data[1], eventObject->spriteId);
}
}
void sub_80B98B8(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
if (task->data[2] == 0 || (--task->data[2]) == 0)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[mapObject->spriteId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sprite = &gSprites[eventObject->spriteId];
sub_80B9560(task->data[1], 0x40);
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
@@ -3576,26 +3575,26 @@ void sub_80B9924(struct Task *task)
void sub_80B9978(struct Task *task)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *sprite;
if (sub_80B9508(task->data[1]))
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[mapObject->spriteId];
- mapObject->mapobj_bit_12 = 0;
- sub_808EB08(mapObject, mapObject->coords2.x, mapObject->coords2.y);
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ sprite = &gSprites[eventObject->spriteId];
+ eventObject->inanimate = 0;
+ sub_808EB08(eventObject, eventObject->currentCoords.x, eventObject->currentCoords.y);
sprite->pos2.x = 0;
sprite->pos2.y = 0;
sprite->coordOffsetEnabled = 1;
sub_808C114();
- FieldObjectSetSpecialAnim(mapObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, 0x39);
task->data[0]++;
}
}
void sub_80B99F0(struct Task *task)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gPlayerAvatar.mapObjectId]))
+ if (EventObjectClearHeldMovementIfFinished(&gEventObjects[gPlayerAvatar.eventObjectId]))
{
task->data[0]++;
sub_80B9794(task->data[1]);
@@ -3615,18 +3614,18 @@ void sub_80B9A28(struct Task *task)
void sub_80B9A60(struct Task *task)
{
u8 state;
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
if ((--task->data[1]) == 0)
{
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
state = 0;
if (task->data[15] & 0x08)
{
state = 3;
- sub_81555AC(mapObject->mapobj_unk_1A, 1);
+ sub_81555AC(eventObject->fieldEffectSpriteId, 1);
}
- FieldObjectSetGraphicsId(mapObject, GetPlayerAvatarGraphicsIdByStateId(state));
- FieldObjectTurn(mapObject, DIR_SOUTH);
+ EventObjectSetGraphicsId(eventObject, GetPlayerAvatarGraphicsIdByStateId(state));
+ EventObjectTurn(eventObject, DIR_SOUTH);
gPlayerAvatar.flags = task->data[15];
gPlayerAvatar.preventStep = FALSE;
FieldEffectActiveListRemove(FLDEFF_FLY_IN);
@@ -3639,11 +3638,11 @@ void sub_80B9BE8(u8 taskId);
bool8 sub_80B9ADC(void)
{
u8 taskId;
- u8 mapObjectIdBuffer;
- if (!TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &mapObjectIdBuffer))
+ u8 eventObjectIdBuffer;
+ if (!TryGetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &eventObjectIdBuffer))
{
taskId = CreateTask(sub_80B9BE8, 0x50);
- gTasks[taskId].data[2] = mapObjectIdBuffer;
+ gTasks[taskId].data[2] = eventObjectIdBuffer;
gTasks[taskId].data[6] = gFieldEffectArguments[0];
gTasks[taskId].data[7] = gFieldEffectArguments[1];
gTasks[taskId].data[8] = gFieldEffectArguments[2];
@@ -3722,8 +3721,8 @@ void sub_80B9C54(s16* data, u8 taskId)
{
if (++data[3] > 0x78)
{
- struct Sprite *sprite = &gSprites[gMapObjects[data[2]].spriteId];
- gMapObjects[data[2]].mapobj_bit_13 = TRUE;
+ struct Sprite *sprite = &gSprites[gEventObjects[data[2]].spriteId];
+ gEventObjects[data[2]].invisible = TRUE;
BlendPalettes(0x0000FFFF, 0x10, RGB_WHITE);
BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, RGB_WHITE);
sub_80B9D24(sprite);
@@ -3739,7 +3738,7 @@ void sub_80B9CDC(s16* a0, u8 taskId)
if (!gPaletteFade.active && !FuncIsActiveTask(sub_80B9B3C))
{
InstallCameraPanAheadCallback();
- RemoveFieldObjectByLocalIdAndMap(a0[6], a0[7], a0[8]);
+ RemoveEventObjectByLocalIdAndMap(a0[6], a0[7], a0[8]);
FieldEffectActiveListRemove(0x41);
DestroyTask(taskId);
}
@@ -3838,24 +3837,24 @@ void sub_80B9EDC(u8 taskId);
bool8 sub_80B9E28(struct Sprite* sprite)
{
- u8 mapObjectIdBuffer;
- if (!TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &mapObjectIdBuffer))
+ u8 eventObjectIdBuffer;
+ if (!TryGetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &eventObjectIdBuffer))
{
- struct MapObject *object;
+ struct EventObject *object;
int xPos, yPos;
u8 taskId;
- object = &gMapObjects[mapObjectIdBuffer];
- xPos = object->coords2.x - 7;
- yPos = object->coords2.y - 7;
+ object = &gEventObjects[eventObjectIdBuffer];
+ xPos = object->currentCoords.x - 7;
+ yPos = object->currentCoords.y - 7;
xPos = (gFieldEffectArguments[3] - xPos) * 16;
yPos = (gFieldEffectArguments[4] - yPos) * 16;
- npc_coords_shift(object, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7);
+ ShiftEventObjectCoords(object, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7);
taskId = CreateTask(sub_80B9EDC, 0x50);
gTasks[taskId].data[1] = object->spriteId;
gTasks[taskId].data[2] = gSprites[object->spriteId].pos1.x + xPos;
gTasks[taskId].data[3] = gSprites[object->spriteId].pos1.y + yPos;
gTasks[taskId].data[8] = gFieldEffectArguments[5];
- gTasks[taskId].data[9] = mapObjectIdBuffer;
+ gTasks[taskId].data[9] = eventObjectIdBuffer;
}
return FALSE;
}
@@ -3884,11 +3883,11 @@ void sub_80B9EDC(u8 taskId)
}
else
{
- struct MapObject *object = &gMapObjects[data[9]];
+ struct EventObject *object = &gEventObjects[data[9]];
sprite->pos1.x = data[2];
sprite->pos1.y = data[3];
- npc_coords_shift_still(object);
- object->mapobj_bit_3 = TRUE;
+ ShiftStillEventObjectCoords(object);
+ object->triggerGroundEffectsOnStop = TRUE;
FieldEffectActiveListRemove(0x42);
DestroyTask(taskId);
}
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
deleted file mode 100644
index af018eb16..000000000
--- a/src/field_map_obj.c
+++ /dev/null
@@ -1,5119 +0,0 @@
-// Includes
-
-#include "global.h"
-#include "malloc.h"
-#include "sprite.h"
-#include "overworld.h"
-#include "random.h"
-#include "event_scripts.h"
-#include "berry.h"
-#include "palette.h"
-#include "field_player_avatar.h"
-#include "fieldmap.h"
-#include "event_data.h"
-#include "rom_818CFC8.h"
-#include "rom_81BE66C.h"
-#include "field_ground_effect.h"
-#include "field_map_obj_helpers.h"
-#include "mauville_old_man.h"
-#include "metatile_behavior.h"
-#include "field_effect.h"
-#include "field_effect_helpers.h"
-#include "field_camera.h"
-#include "trainer_see.h"
-#include "decoration.h"
-#include "field_map_obj.h"
-
-#define NUM_FIELD_MAP_OBJECT_TEMPLATES 0x51
-
-#define null_object_step(name, retval) \
-bool8 FieldObjectCB2_##name(struct MapObject *, struct Sprite *);\
-void FieldObjectCB_##name(struct Sprite *sprite)\
-{\
- FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, FieldObjectCB2_##name);\
-}\
-bool8 FieldObjectCB2_##name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- return (retval);\
-}
-
-#define field_object_step(name, table) \
-extern bool8 (*const (table)[])(struct MapObject *, struct Sprite *);\
-bool8 FieldObjectCB2_##name(struct MapObject *, struct Sprite *);\
-void FieldObjectCB_##name(struct Sprite *sprite)\
-{\
- FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, FieldObjectCB2_##name);\
-}\
-bool8 FieldObjectCB2_##name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- return (table)[sprite->data[1]](mapObject, sprite);\
-}
-
-#define field_object_path(idx, table, sub, path, catch, coord)\
-field_object_step(GoInDirectionSequence##idx, table)\
-extern const u8 path[4];\
-bool8 sub(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- u8 route[sizeof(path)];\
- memcpy(route, path, sizeof(path));\
- if (mapObject->mapobj_unk_21 == (catch) && mapObject->coords1.coord == mapObject->coords2.coord)\
- {\
- mapObject->mapobj_unk_21 = (catch) + 1;\
- }\
- return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, route);\
-}\
-
-// Static struct declarations
-
-// Static RAM declarations
-
-extern u8 gUnknown_020375B4;
-extern u16 gUnknown_020375B6;
-
-// Static ROM declarations
-
-static void sub_808D450(void);
-static u8 GetFieldObjectIdByLocalId(u8);
-static u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8);
-static bool8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *);
-static void FieldObjectHandleDynamicGraphicsId(struct MapObject *);
-static void RemoveFieldObjectInternal (struct MapObject *);
-/*static*/ u16 GetFieldObjectFlagIdByFieldObjectId(u8);
-void sub_8096518(struct MapObject *, struct Sprite *);
-static void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *, struct SpriteTemplate *, const struct SubspriteTable **);
-/*static*/ void GetFieldObjectMovingCameraOffset(s16 *, s16 *);
-/*static*/ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8, u8, u8);
-static void sub_808E894(u16);
-static void RemoveFieldObjectIfOutsideView(struct MapObject *);
-static void sub_808E1B8(u8, s16, s16);
-static void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
-/*static*/ void sub_808E38C(struct MapObject *);
-static u8 sub_808E8F4(const struct SpritePalette *);
-static u8 FindFieldObjectPaletteIndexByTag(u16);
-static void sub_808EAB0(u16, u8);
-static bool8 FieldObjectDoesZCoordMatch(struct MapObject *, u8);
-//static void CameraObject_0(struct Sprite *);
-/*static*/ void CameraObject_1(struct Sprite *);
-//static void CameraObject_2(struct Sprite *);
-/*static*/ struct MapObjectTemplate *FindFieldObjectTemplateInArrayByLocalId(u8 localId, struct MapObjectTemplate *templates, u8 count);
-void npc_reset(struct MapObject *, struct Sprite *);
-void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8);
-
-u8 GetFaceDirectionAnimId(u32);
-u8 GetGoSpeed0AnimId(u32);
-u8 GetGoSpeed1AnimId(u32);
-u8 GetGoSpeed3AnimId(u32);
-u8 sub_8093438(u32);
-u8 sub_80934BC(u32);
-u8 sub_8093514(u32);
-u8 GetJumpLedgeAnimId(u32);
-void sub_8092F88(u32, s16 *, s16 *, s16, s16);
-
-bool8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *);
-void SetFieldObjectStepTimer(struct Sprite *, s16);
-bool8 RunFieldObjectStepTimer(struct Sprite *);
-bool8 npc_block_way__next_tile(struct MapObject *, u8);
-static u32 state_to_direction(u8, u32, u32);
-/*static*/ void sub_80964E8(struct MapObject *, struct Sprite *);
-static void FieldObjectExecSpecialAnim(struct MapObject *, struct Sprite *);
-/*static*/ void npc_obj_transfer_image_anim_pause_flag(struct MapObject *, struct Sprite *);
-
-static bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *, s16, s16);
-static bool8 IsMetatileDirectionallyImpassable(struct MapObject *, s16, s16, u8);
-static bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *, s16, s16);
-bool8 sub_809558C(struct MapObject *, struct Sprite *);
-bool8 sub_8095B64(struct MapObject *, struct Sprite *);
-static void sub_8096530(struct MapObject *, struct Sprite *);
-static void npc_update_obj_anim_flag(struct MapObject *, struct Sprite *);
-
-// ROM data
-
-extern void (*const gUnknown_08505438[NUM_FIELD_MAP_OBJECT_TEMPLATES])(struct Sprite *);
-extern const u8 gUnknown_0850557C[NUM_FIELD_MAP_OBJECT_TEMPLATES];
-extern const u8 gUnknown_085055CD[NUM_FIELD_MAP_OBJECT_TEMPLATES];
-extern const struct MapObjectGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[7];
-extern const struct MapObjectGraphicsInfo *const gFieldObjectGraphicsInfoPointers[0xEF];
-extern u8 (*const gUnknown_0850D714[11])(s16, s16, s16, s16);
-
-struct PairedPalettes {
- u16 tag;
- const u16 *data;
-};
-
-extern const u8 gUnknown_084975C4[0x10];
-extern const struct SpriteTemplate gUnknown_084975D4;
-extern void (*const gUnknown_084975EC[3])(struct Sprite *);
-extern const struct SpritePalette gUnknown_0850BBC8[39];
-extern const struct PairedPalettes gUnknown_0850BD00[4];
-extern const struct PairedPalettes gUnknown_0850BD78[14];
-extern const u16 *const gUnknown_0850BE38[2];
-extern const s16 gUnknown_0850D6DC[4]; // {0x20, 0x40, 0x60, 0x80}
-extern const s16 gUnknown_0850D6EC[4];
-extern const u8 gUnknown_0850D710[4]; // {DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST}
-extern const u8 gUnknown_0850D770[2]; // {DIR_SOUTH, DIR_NORTH}
-extern const u8 gUnknown_0850D790[2]; // {DIR_WEST, DIR_EAST}
-extern const u8 gUnknown_0850D7F0[2]; // {DIR_NORTH, DIR_WEST}
-extern const u8 gUnknown_0850D808[2]; // {DIR_NORTH, DIR_EAST}
-extern const u8 gUnknown_0850D820[2]; // {DIR_SOUTH, DIR_WEST}
-extern const u8 gUnknown_0850D838[2]; // {DIR_SOUTH, DIR_EAST}
-extern const u8 gUnknown_0850D850[4];
-extern const u8 gUnknown_0850D868[4];
-extern const u8 gUnknown_0850D880[4];
-extern const u8 gUnknown_0850D898[4];
-extern const u8 gUnknown_0850D8AC[5];
-extern const u8 gUnknown_0850D8C4[5];
-extern const u8 gUnknown_0850D8E8[4];
-extern bool8 (*const gUnknown_0850DA64[11])(struct MapObject *, struct Sprite *, u8, bool8(u8));
-extern bool8 (*const gUnknown_0850DB5C[4])(u8);
-extern bool8 (*const gUnknown_0850DB6C[4])(u8);
-extern const struct Coords16 gUnknown_0850DB7C[4];
-extern const u8 gUnknown_0850DC2F[4][4];
-extern const u8 gUnknown_0850DC3F[4][4];
-extern const u8 gUnknown_0850DBA0[5];
-extern bool8 (*const *const gUnknown_0850DC50[166])(struct MapObject *, struct Sprite *);
-extern u8 (*const gUnknown_0850DEE8[5])(u8);
-extern const s16 gUnknown_0850DFBC[3];
-extern const s16 gUnknown_0850DFC2[3];
-
-// Code
-
-static void npc_clear_ids_and_state(struct MapObject *mapObject)
-{
- *mapObject = (struct MapObject){};
- mapObject->localId = 0xFF;
- mapObject->mapNum = -1;
- mapObject->mapGroup = -1;
- mapObject->mapobj_unk_1C = -1;
-}
-
-static void npcs_clear_ids_and_state(void)
-{
- u8 i;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- npc_clear_ids_and_state(&gMapObjects[i]);
- }
-}
-
-void sub_808D438(void)
-{
- ZeroAllLinkPlayerMapObjects();
- npcs_clear_ids_and_state();
- ClearPlayerAvatarInfo();
- sub_808D450();
-}
-
-static void sub_808D450(void)
-{
- u8 spriteIdx;
-
- spriteIdx = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31);
- gSprites[spriteIdx].oam.affineMode = 1;
- InitSpriteAffineAnim(&gSprites[spriteIdx]);
- StartSpriteAffineAnim(&gSprites[spriteIdx], 0);
- gSprites[spriteIdx].invisible = TRUE;
-
- spriteIdx = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31);
- gSprites[spriteIdx].oam.affineMode = 1;
- InitSpriteAffineAnim(&gSprites[spriteIdx]);
- StartSpriteAffineAnim(&gSprites[spriteIdx], 1);
- gSprites[spriteIdx].invisible = TRUE;
-}
-
-u8 sub_808D4F4(void)
-{
- u8 i;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (!gMapObjects[i].active)
- {
- break;
- }
- }
- return i;
-}
-
-u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId)
-{
- if (localId < 0xff)
- {
- return GetFieldObjectIdByLocalIdAndMapInternal(localId, mapId, mapGroupId);
- }
- return GetFieldObjectIdByLocalId(localId);
-}
-
-bool8 TryGetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId, u8 *fieldObjectId)
-{
- *fieldObjectId = GetFieldObjectIdByLocalIdAndMap(localId, mapId, mapGroupId);
- if (*fieldObjectId == NUM_FIELD_OBJECTS)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-u8 GetFieldObjectIdByXY(s16 x, s16 y)
-{
- u8 i;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (gMapObjects[i].active && gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y)
- {
- break;
- }
- }
- return i;
-}
-
-static u8 GetFieldObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapId, u8 mapGroupId)
-{
- u8 i;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (gMapObjects[i].active && gMapObjects[i].localId == localId && gMapObjects[i].mapNum == mapId && gMapObjects[i].mapGroup == mapGroupId)
- {
- return i;
- }
- }
- return NUM_FIELD_OBJECTS;
-}
-
-static u8 GetFieldObjectIdByLocalId(u8 localId)
-{
- u8 i;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (gMapObjects[i].active && gMapObjects[i].localId == localId)
- {
- return i;
- }
- }
- return NUM_FIELD_OBJECTS;
-}
-
-// This function has the same nonmatching quirk as in Ruby/Sapphire.
-#ifdef NONMATCHING
-static u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 mapNum, u8 mapGroup)
-{
- struct MapObject *mapObject;
- s16 x;
- s16 y;
- u8 slot;
-
- // mapNum and mapGroup are in the wrong registers (r7/r6 instead of r6/r7)
- if (GetAvailableFieldObjectSlot(template->localId, mapNum, mapGroup, &slot))
- {
- return NUM_FIELD_OBJECTS;
- }
- mapObject = &gMapObjects[slot];
- npc_clear_ids_and_state(mapObject);
- x = template->x + 7;
- y = template->y + 7;
- mapObject->active = TRUE;
- mapObject->mapobj_bit_2 = TRUE;
- mapObject->graphicsId = template->graphicsId;
- mapObject->animPattern = template->movementType;
- mapObject->localId = template->localId;
- mapObject->mapNum = mapNum;
- mapObject->mapGroup = mapGroup;
- mapObject->coords1.x = x;
- mapObject->coords1.y = y;
- mapObject->coords2.x = x;
- mapObject->coords2.y = y;
- mapObject->coords3.x = x;
- mapObject->coords3.y = y;
- mapObject->mapobj_unk_0B_0 = template->elevation;
- mapObject->elevation = template->elevation;
- // For some reason, 0x0F is placed in r9, to be used later
- mapObject->range.as_nybbles.x = template->unkA_0;
- mapObject->range.as_nybbles.y = template->unkA_4;
- mapObject->trainerType = template->unkC;
- mapObject->trainerRange_berryTreeId = template->unkE;
- mapObject->mapobj_unk_20 = gUnknown_085055CD[template->movementType];
- FieldObjectSetDirection(mapObject, mapObject->mapobj_unk_20);
- FieldObjectHandleDynamicGraphicsId(mapObject);
-
- if (gUnknown_0850557C[mapObject->animPattern])
- {
- if ((mapObject->range.as_nybbles.x) == 0)
- {
- // r9 is invoked here
- mapObject->range.as_nybbles.x ++;
- }
- if ((mapObject->range.as_nybbles.y) == 0)
- {
- mapObject->range.as_nybbles.y ++;
- }
- }
- return slot;
-}
-#else
-static NAKED u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 mapId, u8 mapGroupId)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r9\n"
- "\tmov r6, r8\n"
- "\tpush {r6,r7}\n"
- "\tsub sp, 0x4\n"
- "\tadds r5, r0, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r6, r1, 24\n"
- "\tlsls r2, 24\n"
- "\tlsrs r7, r2, 24\n"
- "\tldrb r0, [r5]\n"
- "\tadds r1, r6, 0\n"
- "\tadds r2, r7, 0\n"
- "\tmov r3, sp\n"
- "\tbl GetAvailableFieldObjectSlot\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _0808D66E\n"
- "\tmovs r0, 0x10\n"
- "\tb _0808D762\n"
- "_0808D66E:\n"
- "\tmov r0, sp\n"
- "\tldrb r1, [r0]\n"
- "\tlsls r0, r1, 3\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 2\n"
- "\tldr r1, =gMapObjects\n"
- "\tadds r4, r0, r1\n"
- "\tadds r0, r4, 0\n"
- "\tbl npc_clear_ids_and_state\n"
- "\tldrh r3, [r5, 0x4]\n"
- "\tadds r3, 0x7\n"
- "\tlsls r3, 16\n"
- "\tlsrs r3, 16\n"
- "\tldrh r2, [r5, 0x6]\n"
- "\tadds r2, 0x7\n"
- "\tlsls r2, 16\n"
- "\tlsrs r2, 16\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0x1\n"
- "\torrs r0, r1\n"
- "\tmovs r1, 0x4\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r4]\n"
- "\tldrb r0, [r5, 0x1]\n"
- "\tstrb r0, [r4, 0x5]\n"
- "\tldrb r0, [r5, 0x9]\n"
- "\tstrb r0, [r4, 0x6]\n"
- "\tldrb r0, [r5]\n"
- "\tstrb r0, [r4, 0x8]\n"
- "\tstrb r6, [r4, 0x9]\n"
- "\tstrb r7, [r4, 0xA]\n"
- "\tstrh r3, [r4, 0xC]\n"
- "\tstrh r2, [r4, 0xE]\n"
- "\tstrh r3, [r4, 0x10]\n"
- "\tstrh r2, [r4, 0x12]\n"
- "\tstrh r3, [r4, 0x14]\n"
- "\tstrh r2, [r4, 0x16]\n"
- "\tldrb r0, [r5, 0x8]\n"
- "\tmovs r7, 0xF\n"
- "\tadds r1, r7, 0\n"
- "\tands r1, r0\n"
- "\tldrb r2, [r4, 0xB]\n"
- "\tmovs r0, 0x10\n"
- "\tnegs r0, r0\n"
- "\tmov r8, r0\n"
- "\tands r0, r2\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r4, 0xB]\n"
- "\tldrb r1, [r5, 0x8]\n"
- "\tlsls r1, 4\n"
- "\tands r0, r7\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r4, 0xB]\n"
- "\tldrb r1, [r5, 0xA]\n"
- "\tlsls r1, 28\n"
- "\tmovs r0, 0xF\n"
- "\tmov r9, r0\n"
- "\tlsrs r1, 28\n"
- "\tldrb r2, [r4, 0x19]\n"
- "\tmov r0, r8\n"
- "\tands r0, r2\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r4, 0x19]\n"
- "\tldrb r1, [r5, 0xA]\n"
- "\tlsrs r1, 4\n"
- "\tlsls r1, 4\n"
- "\tands r0, r7\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r4, 0x19]\n"
- "\tldrh r0, [r5, 0xC]\n"
- "\tstrb r0, [r4, 0x7]\n"
- "\tldrh r0, [r5, 0xE]\n"
- "\tstrb r0, [r4, 0x1D]\n"
- "\tldr r1, =gUnknown_085055CD\n"
- "\tldrb r0, [r5, 0x9]\n"
- "\tadds r0, r1\n"
- "\tldrb r1, [r0]\n"
- "\tadds r0, r4, 0\n"
- "\tadds r0, 0x20\n"
- "\tstrb r1, [r0]\n"
- "\tldrb r1, [r0]\n"
- "\tadds r0, r4, 0\n"
- "\tbl FieldObjectSetDirection\n"
- "\tadds r0, r4, 0\n"
- "\tbl FieldObjectHandleDynamicGraphicsId\n"
- "\tldr r1, =gUnknown_0850557C\n"
- "\tldrb r0, [r4, 0x6]\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbeq _0808D75E\n"
- "\tldrb r2, [r4, 0x19]\n"
- "\tadds r0, r7, 0\n"
- "\tands r0, r2\n"
- "\tcmp r0, 0\n"
- "\tbne _0808D746\n"
- "\tlsls r0, r2, 28\n"
- "\tlsrs r0, 28\n"
- "\tadds r0, 0x1\n"
- "\tmov r1, r9\n"
- "\tands r0, r1\n"
- "\tmov r1, r8\n"
- "\tands r1, r2\n"
- "\torrs r1, r0\n"
- "\tstrb r1, [r4, 0x19]\n"
- "_0808D746:\n"
- "\tldrb r2, [r4, 0x19]\n"
- "\tmovs r0, 0xF0\n"
- "\tands r0, r2\n"
- "\tcmp r0, 0\n"
- "\tbne _0808D75E\n"
- "\tlsrs r1, r2, 4\n"
- "\tadds r1, 0x1\n"
- "\tlsls r1, 4\n"
- "\tadds r0, r7, 0\n"
- "\tands r0, r2\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r4, 0x19]\n"
- "_0808D75E:\n"
- "\tmov r0, sp\n"
- "\tldrb r0, [r0]\n"
- "_0808D762:\n"
- "\tadd sp, 0x4\n"
- "\tpop {r3,r4}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- ".pool");
-}
-#endif
-
-u8 unref_sub_808D77C(u8 localId)
-{
- u8 i;
- u8 nObjects;
- struct MapObjectTemplate *template;
-
- if (gMapHeader.events != NULL)
- {
- if (InBattlePyramid())
- {
- nObjects = sub_81AAA40();
- }
- else if (InTrainerHill())
- {
- nObjects = 2;
- }
- else
- {
- nObjects = gMapHeader.events->mapObjectCount;
- }
- for (i = 0; i < nObjects; i ++)
- {
- template = &gSaveBlock1Ptr->mapObjectTemplates[i];
- if (template->localId == localId && !FlagGet(template->flagId))
- {
- return InitFieldObjectStateFromTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- }
- }
- }
- return NUM_FIELD_OBJECTS;
-}
-
-static bool8 GetAvailableFieldObjectSlot(u16 localId, u8 mapNum, u8 mapGroup, u8 *result)
-// Looks for an empty slot.
-// Returns FALSE and the location of the available slot
-// in *result.
-// If no slots are available, or if the object is already
-// loaded, returns TRUE.
-{
- u8 i = 0;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (!gMapObjects[i].active)
- break;
- if (gMapObjects[i].localId == localId && gMapObjects[i].mapNum == mapNum && gMapObjects[i].mapGroup == mapGroup)
- return TRUE;
- }
- if (i >= NUM_FIELD_OBJECTS)
- return TRUE;
- *result = i;
- do
- {
- if (gMapObjects[i].active && gMapObjects[i].localId == localId && gMapObjects[i].mapNum == mapNum && gMapObjects[i].mapGroup == mapGroup)
- return TRUE;
- i ++;
- } while (i < NUM_FIELD_OBJECTS);
- return FALSE;
-}
-
-static void RemoveFieldObject(struct MapObject *mapObject)
-{
- mapObject->active = FALSE;
- RemoveFieldObjectInternal(mapObject);
-}
-
-void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
-{
- u8 index;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &index))
- {
- FlagSet(GetFieldObjectFlagIdByFieldObjectId(index));
- RemoveFieldObject(&gMapObjects[index]);
- }
-}
-
-static void RemoveFieldObjectInternal(struct MapObject *mapObject)
-{
- struct SpriteFrameImage image;
- image.size = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->size;
- gSprites[mapObject->spriteId].images = &image;
- DestroySprite(&gSprites[mapObject->spriteId]);
-}
-
-void unref_sub_808D958(void)
-{
- u8 i;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (i != gPlayerAvatar.mapObjectId)
- {
- RemoveFieldObject(&gMapObjects[i]);
- }
- }
-}
-
-static u8 SpawnFieldObjectInternal(struct MapObjectTemplate *mapObjectTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
-{
- struct MapObject *mapObject;
- const struct MapObjectGraphicsInfo *graphicsInfo;
- struct Sprite *sprite;
- u8 mapObjectId;
- u8 paletteSlot;
- u8 spriteId;
-
- mapObjectId = InitFieldObjectStateFromTemplate(mapObjectTemplate, mapNum, mapGroup);
- if (mapObjectId == NUM_FIELD_OBJECTS)
- {
- return NUM_FIELD_OBJECTS;
- }
- mapObject = &gMapObjects[mapObjectId];
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- paletteSlot = graphicsInfo->paletteSlot;
- if (paletteSlot == 0)
- {
- npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, 0);
- }
- else if (paletteSlot == 10)
- {
- npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, 10);
- }
- else if (paletteSlot >= 16)
- {
- paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
- }
- if (mapObject->animPattern == 0x4c)
- {
- mapObject->mapobj_bit_13 = TRUE;
- }
- *(u16 *)&spriteTemplate->paletteTag = 0xFFFF;
- spriteId = CreateSprite(spriteTemplate, 0, 0, 0);
- if (spriteId == MAX_SPRITES)
- {
- gMapObjects[mapObjectId].active = FALSE;
- return NUM_FIELD_OBJECTS;
- }
- sprite = &gSprites[spriteId];
- sub_8092FF0(mapObject->coords2.x + cameraX, mapObject->coords2.y + cameraY, &sprite->pos1.x, &sprite->pos1.y);
- sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
- sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- sprite->oam.paletteNum = paletteSlot;
- sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = mapObjectId;
- mapObject->spriteId = spriteId;
- mapObject->mapobj_bit_12 = graphicsInfo->inanimate;
- if (!mapObject->mapobj_bit_12)
- {
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
- }
- SetObjectSubpriorityByZCoord(mapObject->elevation, sprite, 1);
- sub_8096518(mapObject, sprite);
- return mapObjectId;
-}
-
-static u8 SpawnFieldObject(struct MapObjectTemplate *mapObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
-{
- const struct MapObjectGraphicsInfo *graphicsInfo;
- struct SpriteTemplate spriteTemplate;
- const struct SubspriteTable *subspriteTables;
- struct SpriteFrameImage spriteFrameImage;
- u8 mapObjectId;
-
- subspriteTables = NULL;
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObjectTemplate->graphicsId);
- MakeObjectTemplateFromFieldObjectTemplate(mapObjectTemplate, &spriteTemplate, &subspriteTables);
- spriteFrameImage.size = graphicsInfo->size;
- spriteTemplate.images = &spriteFrameImage;
- mapObjectId = SpawnFieldObjectInternal(mapObjectTemplate, &spriteTemplate, mapNum, mapGroup, cameraX, cameraY);
- if (mapObjectId == NUM_FIELD_OBJECTS)
- {
- return NUM_FIELD_OBJECTS;
- }
- gSprites[gMapObjects[mapObjectId].spriteId].images = graphicsInfo->images;
- if (subspriteTables != NULL)
- {
- SetSubspriteTables(&gSprites[gMapObjects[mapObjectId].spriteId], subspriteTables);
- }
- return mapObjectId;
-}
-
-u8 SpawnSpecialFieldObject(struct MapObjectTemplate *mapObjectTemplate)
-{
- s16 cameraX;
- s16 cameraY;
-
- GetFieldObjectMovingCameraOffset(&cameraX, &cameraY);
- return SpawnFieldObject(mapObjectTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
-}
-
-u8 SpawnSpecialFieldObjectParametrized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z)
-{
- struct MapObjectTemplate mapObjectTemplate;
-
- x -= 7;
- y -= 7;
- mapObjectTemplate.localId = localId;
- mapObjectTemplate.graphicsId = graphicsId;
- mapObjectTemplate.unk2 = 0;
- mapObjectTemplate.x = x;
- mapObjectTemplate.y = y;
- mapObjectTemplate.elevation = z;
- mapObjectTemplate.movementType = movementBehavior;
- mapObjectTemplate.unkA_0 = 0;
- mapObjectTemplate.unkA_4 = 0;
- mapObjectTemplate.unkC = 0;
- mapObjectTemplate.unkE = 0;
- return SpawnSpecialFieldObject(&mapObjectTemplate);
-}
-
-u8 show_sprite(u8 localId, u8 mapNum, u8 mapGroup)
-{
- struct MapObjectTemplate *mapObjectTemplate;
- s16 cameraX;
- s16 cameraY;
-
- mapObjectTemplate = GetFieldObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
- if (mapObjectTemplate == NULL)
- {
- return NUM_FIELD_OBJECTS;
- }
- GetFieldObjectMovingCameraOffset(&cameraX, &cameraY);
- return SpawnFieldObject(mapObjectTemplate, mapNum, mapGroup, cameraX, cameraY);
-}
-
-static void MakeObjectTemplateFromFieldObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
-{
- const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(graphicsId);
-
- sprTemplate->tileTag = gfxInfo->tileTag;
- sprTemplate->paletteTag = gfxInfo->paletteTag1;
- sprTemplate->oam = gfxInfo->oam;
- sprTemplate->anims = gfxInfo->anims;
- sprTemplate->images = gfxInfo->images;
- sprTemplate->affineAnims = gfxInfo->affineAnims;
- sprTemplate->callback = callback;
- *subspriteTables = gfxInfo->subspriteTables;
-}
-
-static void MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
-{
- MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, gUnknown_08505438[callbackIndex], sprTemplate, subspriteTables);
-}
-
-static void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjectTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
-{
- MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObjectTemplate->graphicsId, mapObjectTemplate->movementType, spriteTemplate, subspriteTables);
-}
-
-u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
-{
- struct SpriteTemplate *spriteTemplate;
- const struct SubspriteTable *subspriteTables;
- struct Sprite *sprite;
- u8 spriteIdx;
-
- spriteTemplate = malloc(sizeof(struct SpriteTemplate));
- MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, callback, spriteTemplate, &subspriteTables);
- if (spriteTemplate->paletteTag != 0xffff)
- {
- sub_808E894(spriteTemplate->paletteTag);
- }
- spriteIdx = CreateSprite(spriteTemplate, x, y, subpriority);
- free(spriteTemplate);
-
- if (spriteIdx != MAX_SPRITES && subspriteTables != NULL)
- {
- sprite = &gSprites[spriteIdx];
- SetSubspriteTables(sprite, subspriteTables);
- sprite->subspriteMode = 2;
- }
- return spriteIdx;
-}
-
-u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
-{
- const struct MapObjectGraphicsInfo *graphicsInfo;
- struct SpriteTemplate spriteTemplate;
- const struct SubspriteTable *subspriteTables;
- u8 spriteId;
- struct Sprite *sprite;
-
- graphicsInfo = GetFieldObjectGraphicsInfo(graphicsId);
- MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, sub_8097AC8, &spriteTemplate, &subspriteTables);
- *(u16 *)&spriteTemplate.paletteTag = 0xffff;
- x += 7;
- y += 7;
- sub_80930E0(&x, &y, 8, 16);
- spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0);
- if (spriteId != MAX_SPRITES)
- {
- sprite = &gSprites[spriteId];
- sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
- sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.y += sprite->centerToCornerVecY;
- sprite->oam.paletteNum = graphicsInfo->paletteSlot;
- if (sprite->oam.paletteNum >= 16)
- {
- sprite->oam.paletteNum -= 16;
- }
- sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = a1;
- sprite->data[1] = z;
- if (graphicsInfo->paletteSlot == 10)
- {
- npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
- }
- else if (graphicsInfo->paletteSlot >= 16)
- {
- sub_808EAB0(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot | 0xf0);
- }
- if (subspriteTables != NULL)
- {
- SetSubspriteTables(sprite, subspriteTables);
- sprite->subspriteMode = 2;
- }
- InitObjectPriorityByZCoord(sprite, z);
- SetObjectSubpriorityByZCoord(z, sprite, 1);
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(direction));
- }
- return spriteId;
-}
-
-void SpawnFieldObjectsInView(s16 cameraX, s16 cameraY)
-{
- u8 i;
- s16 left;
- s16 right;
- s16 top;
- s16 bottom;
- u8 objectCount;
- s16 npcX;
- s16 npcY;
-
- if (gMapHeader.events != NULL)
- {
- left = gSaveBlock1Ptr->pos.x - 2;
- right = gSaveBlock1Ptr->pos.x + 17;
- top = gSaveBlock1Ptr->pos.y;
- bottom = gSaveBlock1Ptr->pos.y + 16;
-
- if (InBattlePyramid())
- {
- objectCount = sub_81AAA40();
- }
- else if (InTrainerHill())
- {
- objectCount = 2;
- }
- else
- {
- objectCount = gMapHeader.events->mapObjectCount;
- }
-
- for (i = 0; i < objectCount; i++)
- {
- struct MapObjectTemplate *template = &gSaveBlock1Ptr->mapObjectTemplates[i];
- npcX = template->x + 7;
- npcY = template->y + 7;
-
- if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX
- && !FlagGet(template->flagId))
- SpawnFieldObject(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
- }
- }
-}
-
-/*static*/ void RemoveFieldObjectsOutsideView(void)
-{
- u8 i;
- u8 j;
- bool8 isActiveLinkPlayer;
- struct MapObject *mapObject;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- for (j = 0, isActiveLinkPlayer = FALSE; j < ARRAY_COUNT(gLinkPlayerMapObjects); j ++)
- {
- if (gLinkPlayerMapObjects[j].active && i == gLinkPlayerMapObjects[j].mapObjId)
- isActiveLinkPlayer = TRUE;
- }
- if (!isActiveLinkPlayer)
- {
- mapObject = &gMapObjects[i];
-
- if (mapObject->active && !mapObject->mapobj_bit_16)
- RemoveFieldObjectIfOutsideView(mapObject);
- }
- }
-}
-
-static void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
-{
- s16 left;
- s16 right;
- s16 top;
- s16 bottom;
-
- left = gSaveBlock1Ptr->pos.x - 2;
- right = gSaveBlock1Ptr->pos.x + 17;
- top = gSaveBlock1Ptr->pos.y;
- bottom = gSaveBlock1Ptr->pos.y + 16;
-
- if (mapObject->coords2.x >= left && mapObject->coords2.x <= right
- && mapObject->coords2.y >= top && mapObject->coords2.y <= bottom)
- return;
- if (mapObject->coords1.x >= left && mapObject->coords1.x <= right
- && mapObject->coords1.y >= top && mapObject->coords1.y <= bottom)
- return;
- RemoveFieldObject(mapObject);
-}
-
-void sub_808E16C(s16 x, s16 y)
-{
- u8 i;
-
- ClearPlayerAvatarInfo();
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (gMapObjects[i].active)
- {
- sub_808E1B8(i, x, y);
- }
- }
- sub_808D450();
-}
-
-static void sub_808E1B8(u8 mapObjectId, s16 x, s16 y)
-{
- u8 spriteId;
- u8 paletteSlot;
- struct MapObject *mapObject;
- const struct SubspriteTable *subspriteTables;
- const struct MapObjectGraphicsInfo *graphicsInfo;
- struct SpriteFrameImage spriteFrameImage;
- struct SpriteTemplate spriteTemplate;
- struct Sprite *sprite;
-
-#define i spriteId
- for (i = 0; i < ARRAY_COUNT(gLinkPlayerMapObjects); i ++)
- {
- if (gLinkPlayerMapObjects[i].active && mapObjectId == gLinkPlayerMapObjects[i].mapObjId)
- {
- return;
- }
- }
-#undef i
-
- mapObject = &gMapObjects[mapObjectId];
- subspriteTables = NULL;
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- spriteFrameImage.size = graphicsInfo->size;
- MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObject->graphicsId, mapObject->animPattern, &spriteTemplate, &subspriteTables);
- spriteTemplate.images = &spriteFrameImage;
- *(u16 *)&spriteTemplate.paletteTag = 0xffff;
- paletteSlot = graphicsInfo->paletteSlot;
- if (paletteSlot == 0)
- {
- npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
- }
- else if (paletteSlot == 10)
- {
- npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
- }
- else if (paletteSlot >= 16)
- {
- paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
- }
- *(u16 *)&spriteTemplate.paletteTag = 0xffff;
- spriteId = CreateSprite(&spriteTemplate, 0, 0, 0);
- if (spriteId != MAX_SPRITES)
- {
- sprite = &gSprites[spriteId];
- sub_8092FF0(x + mapObject->coords2.x, y + mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
- sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
- sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- sprite->images = graphicsInfo->images;
- if (mapObject->animPattern == 0x0b)
- {
- SetPlayerAvatarFieldObjectIdAndObjectId(mapObjectId, spriteId);
- mapObject->mapobj_unk_1B = sub_8154228();
- }
- if (subspriteTables != NULL)
- {
- SetSubspriteTables(sprite, subspriteTables);
- }
- sprite->oam.paletteNum = paletteSlot;
- sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = mapObjectId;
- mapObject->spriteId = spriteId;
- if (!mapObject->mapobj_bit_12 && mapObject->animPattern != 0x0b)
- {
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
- }
- sub_808E38C(mapObject);
- SetObjectSubpriorityByZCoord(mapObject->elevation, sprite, 1);
- }
-}
-
-/*static*/ void sub_808E38C(struct MapObject *mapObject)
-{
- mapObject->mapobj_bit_1 = FALSE;
- mapObject->mapobj_bit_2 = TRUE;
- mapObject->mapobj_bit_22 = FALSE;
- mapObject->mapobj_bit_17 = FALSE;
- mapObject->mapobj_bit_18 = FALSE;
- mapObject->mapobj_bit_19 = FALSE;
- mapObject->mapobj_bit_20 = FALSE;
- mapObject->mapobj_bit_21 = FALSE;
- FieldObjectClearAnim(mapObject);
-}
-
-static void SetPlayerAvatarFieldObjectIdAndObjectId(u8 mapObjectId, u8 spriteId)
-{
- gPlayerAvatar.mapObjectId = mapObjectId;
- gPlayerAvatar.spriteId = spriteId;
- gPlayerAvatar.gender = GetPlayerAvatarGenderByGraphicsId(gMapObjects[mapObjectId].graphicsId);
- SetPlayerAvatarExtraStateTransition(gMapObjects[mapObjectId].graphicsId, 0x20);
-}
-
-void FieldObjectSetGraphicsId(struct MapObject *mapObject, u8 graphicsId)
-{
- const struct MapObjectGraphicsInfo *graphicsInfo;
- struct Sprite *sprite;
- u8 paletteSlot;
-
- graphicsInfo = GetFieldObjectGraphicsInfo(graphicsId);
- sprite = &gSprites[mapObject->spriteId];
- paletteSlot = graphicsInfo->paletteSlot;
- if (paletteSlot == 0)
- {
- pal_patch_for_npc(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
- }
- else if (paletteSlot == 10)
- {
- npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
- }
- else if (paletteSlot >= 16)
- {
- paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
- }
- sprite->oam.shape = graphicsInfo->oam->shape;
- sprite->oam.size = graphicsInfo->oam->size;
- sprite->images = graphicsInfo->images;
- sprite->anims = graphicsInfo->anims;
- sprite->subspriteTables = graphicsInfo->subspriteTables;
- sprite->oam.paletteNum = paletteSlot;
- mapObject->mapobj_bit_12 = graphicsInfo->inanimate;
- mapObject->graphicsId = graphicsId;
- sub_8093038(mapObject->coords2.x, mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
- sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
- sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- if (mapObject->mapobj_bit_15)
- {
- CameraObjectReset1();
- }
-}
-
-void FieldObjectSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- FieldObjectSetGraphicsId(&gMapObjects[mapObjectId], graphicsId);
- }
-}
-
-void FieldObjectTurn(struct MapObject *mapObject, u8 direction)
-{
- FieldObjectSetDirection(mapObject, direction);
- if (!mapObject->mapobj_bit_12)
- {
- StartSpriteAnim(&gSprites[mapObject->spriteId], FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18));
- SeekSpriteAnim(&gSprites[mapObject->spriteId], 0);
- }
-}
-
-void FieldObjectTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- FieldObjectTurn(&gMapObjects[mapObjectId], direction);
- }
-}
-
-void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction)
-{
- FieldObjectTurn(&gMapObjects[playerAvatar->mapObjectId], direction);
-}
-
-/*static*/ void get_berry_tree_graphics(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 berryStage;
- u8 berryId;
-
- mapObject->mapobj_bit_13 = TRUE;
- sprite->invisible = TRUE;
- berryStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
- if (berryStage != 0)
- {
- mapObject->mapobj_bit_13 = FALSE;
- sprite->invisible = FALSE;
- berryId = GetBerryTypeByBerryTreeId(mapObject->trainerRange_berryTreeId) - 1;
- berryStage -= 1;
- if (berryId >= NUM_BERRIES)
- {
- berryId = 0;
- }
- FieldObjectSetGraphicsId(mapObject, gBerryTreeFieldObjectGraphicsIdTablePointers[berryId][berryStage]);
- sprite->images = gBerryTreePicTablePointers[berryId];
- sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[berryId][berryStage];
- StartSpriteAnim(sprite, berryStage);
- }
-}
-
-const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8 graphicsId)
-{
- u8 bard;
-
- if (graphicsId >= SPRITE_VAR)
- {
- graphicsId = VarGetFieldObjectGraphicsId(graphicsId - SPRITE_VAR);
- }
- if (graphicsId == 0x45)
- {
- bard = GetCurrentMauvilleOldMan();
- return gMauvilleOldManGraphicsInfoPointers[bard];
- }
- if (graphicsId >= NUM_OBJECT_GRAPHICS_INFO)
- {
- graphicsId = 0x05; // LittleBoy1
- }
- return gFieldObjectGraphicsInfoPointers[graphicsId];
-}
-
-static void FieldObjectHandleDynamicGraphicsId(struct MapObject *mapObject)
-{
- if (mapObject->graphicsId >= SPRITE_VAR)
- {
- mapObject->graphicsId = VarGetFieldObjectGraphicsId(mapObject->graphicsId - SPRITE_VAR);
- }
-}
-
-void npc_by_local_id_and_map_set_field_1_bit_x20(u8 localId, u8 mapNum, u8 mapGroup, u8 state)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- gMapObjects[mapObjectId].mapobj_bit_13 = state;
- }
-}
-
-void FieldObjectGetLocalIdAndMap(struct MapObject *mapObject, void *localId, void *mapNum, void *mapGroup)
-{
- *(u8*)(localId) = mapObject->localId;
- *(u8*)(mapNum) = mapObject->mapNum;
- *(u8*)(mapGroup) = mapObject->mapGroup;
-}
-
-void sub_808E75C(s16 x, s16 y)
-{
- u8 mapObjectId;
- struct MapObject *mapObject;
-
- mapObjectId = GetFieldObjectIdByXY(x, y);
- if (mapObjectId != NUM_FIELD_OBJECTS)
- {
- mapObject = &gMapObjects[mapObjectId];
- mapObject->mapobj_bit_2 = TRUE;
- }
-}
-
-void sub_808E78C(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority)
-{
- u8 mapObjectId;
- struct MapObject *mapObject;
- struct Sprite *sprite;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- mapObject = &gMapObjects[mapObjectId];
- sprite = &gSprites[mapObject->spriteId];
- mapObject->mapobj_bit_26 = TRUE;
- sprite->subpriority = subpriority;
- }
-}
-
-void sub_808E7E4(u8 localId, u8 mapNum, u8 mapGroup)
-{
- u8 mapObjectId;
- struct MapObject *mapObject;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- mapObject = &gMapObjects[mapObjectId];
- mapObject->mapobj_bit_26 = FALSE;
- mapObject->mapobj_bit_2 = TRUE;
- }
-}
-
-void sub_808E82C(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
-{
- u8 mapObjectId;
- struct Sprite *sprite;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- sprite = &gSprites[gMapObjects[mapObjectId].spriteId];
- sprite->pos2.x = x;
- sprite->pos2.y = y;
- }
-}
-
-void gpu_pal_allocator_reset__manage_upper_four(void)
-{
- FreeAllSpritePalettes();
- gReservedSpritePaletteCount = 12;
-}
-
-static void sub_808E894(u16 paletteTag)
-{
- u16 paletteSlot;
-
- paletteSlot = FindFieldObjectPaletteIndexByTag(paletteTag);
- if (paletteSlot != 0x11ff) // always true
- {
- sub_808E8F4(&gUnknown_0850BBC8[paletteSlot]);
- }
-}
-
-void sub_808E8C0(u16 *paletteTags)
-{
- u8 i;
-
- for (i = 0; paletteTags[i] != 0x11ff; i ++)
- {
- sub_808E894(paletteTags[i]);
- }
-}
-
-static u8 sub_808E8F4(const struct SpritePalette *spritePalette)
-{
- if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xff)
- {
- return 0xff;
- }
- return LoadSpritePalette(spritePalette);
-}
-
-void pal_patch_for_npc(u16 paletteTag, u8 paletteSlot)
-{
- u16 paletteIdx;
-
- paletteIdx = FindFieldObjectPaletteIndexByTag(paletteTag);
- LoadPalette(gUnknown_0850BBC8[paletteIdx].data, 16 * paletteSlot + 256, 0x20);
-}
-
-void pal_patch_for_npc_range(const u16 *paletteTags, u8 minSlot, u8 maxSlot)
-{
- while (minSlot < maxSlot)
- {
- pal_patch_for_npc(*paletteTags, minSlot);
- paletteTags ++;
- minSlot ++;
- }
-}
-
-static u8 FindFieldObjectPaletteIndexByTag(u16 tag)
-{
- u8 i;
-
- for (i = 0; gUnknown_0850BBC8[i].tag != 0x11ff; i ++)
- {
- if (gUnknown_0850BBC8[i].tag == tag)
- {
- return i;
- }
- }
- return 0xff;
-}
-
-void npc_load_two_palettes__no_record(u16 tag, u8 slot)
-{
- u8 i;
-
- pal_patch_for_npc(tag, slot);
- for (i = 0; gUnknown_0850BD00[i].tag != 0x11ff; i ++)
- {
- if (gUnknown_0850BD00[i].tag == tag)
- {
- pal_patch_for_npc(gUnknown_0850BD00[i].data[gUnknown_020375B4], gUnknown_084975C4[slot]);
- return;
- }
- }
-}
-
-void npc_load_two_palettes__and_record(u16 tag, u8 slot)
-{
- u8 i;
-
- gUnknown_020375B6 = tag;
- pal_patch_for_npc(tag, slot);
- for (i = 0; gUnknown_0850BD78[i].tag != 0x11ff; i ++)
- {
- if (gUnknown_0850BD78[i].tag == tag)
- {
- pal_patch_for_npc(gUnknown_0850BD78[i].data[gUnknown_020375B4], gUnknown_084975C4[slot]);
- return;
- }
- }
-}
-
-static void sub_808EAB0(u16 tag, u8 slot)
-{
- pal_patch_for_npc(tag, slot);
-}
-
-void unref_sub_808EAC4(struct MapObject *mapObject, s16 x, s16 y)
-{
- mapObject->coords3.x = mapObject->coords2.x;
- mapObject->coords3.y = mapObject->coords2.y;
- mapObject->coords2.x += x;
- mapObject->coords2.y += y;
-}
-
-void npc_coords_shift(struct MapObject *mapObject, s16 x, s16 y)
-{
- mapObject->coords3.x = mapObject->coords2.x;
- mapObject->coords3.y = mapObject->coords2.y;
- mapObject->coords2.x = x;
- mapObject->coords2.y = y;
-}
-
-/*static*/ void npc_coords_set(struct MapObject *mapObject, s16 x, s16 y)
-{
- mapObject->coords3.x = x;
- mapObject->coords3.y = y;
- mapObject->coords2.x = x;
- mapObject->coords2.y = y;
-}
-
-void sub_808EB08(struct MapObject *mapObject, s16 x, s16 y)
-{
- struct Sprite *sprite;
- const struct MapObjectGraphicsInfo *graphicsInfo;
-
- sprite = &gSprites[mapObject->spriteId];
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- npc_coords_set(mapObject, x, y);
- sub_8093038(mapObject->coords2.x, mapObject->coords2.y, &sprite->pos1.x, &sprite->pos1.y);
- sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
- sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- sub_808E38C(mapObject);
- if (mapObject->mapobj_bit_15)
- {
- CameraObjectReset1();
- }
-}
-
-void sub_808EBA8(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- x += 7;
- y += 7;
- sub_808EB08(&gMapObjects[mapObjectId], x, y);
- }
-}
-
-void npc_coords_shift_still(struct MapObject *mapObject)
-{
- npc_coords_shift(mapObject, mapObject->coords2.x, mapObject->coords2.y);
-}
-
-void UpdateFieldObjectCoordsForCameraUpdate(void)
-{
- u8 i;
- s16 dx;
- s16 dy;
-
- if (gCamera.active)
- {
- dx = gCamera.x;
- dy = gCamera.y;
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (gMapObjects[i].active)
- {
- gMapObjects[i].coords1.x -= dx;
- gMapObjects[i].coords1.y -= dy;
- gMapObjects[i].coords2.x -= dx;
- gMapObjects[i].coords2.y -= dy;
- gMapObjects[i].coords3.x -= dx;
- gMapObjects[i].coords3.y -= dy;
- }
- }
- }
-}
-
-u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z)
-{
- u8 i;
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- if (gMapObjects[i].active)
- {
- if (gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y && FieldObjectDoesZCoordMatch(&gMapObjects[i], z))
- {
- return i;
- }
- }
- }
- return NUM_FIELD_OBJECTS;
-}
-
-static bool8 FieldObjectDoesZCoordMatch(struct MapObject *mapObject, u8 z)
-{
- if (mapObject->mapobj_unk_0B_0 != 0 && z != 0 && mapObject->mapobj_unk_0B_0 != z)
- {
- return FALSE;
- }
- return TRUE;
-}
-
-void UpdateFieldObjectsForCameraUpdate(s16 x, s16 y)
-{
- UpdateFieldObjectCoordsForCameraUpdate();
- SpawnFieldObjectsInView(x, y);
- RemoveFieldObjectsOutsideView();
-}
-
-u8 AddCameraObject(u8 linkedSpriteId)
-{
- u8 spriteId;
-
- spriteId = CreateSprite(&gUnknown_084975D4, 0, 0, 4);
- gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[0] = linkedSpriteId;
- return spriteId;
-}
-
-void ObjectCB_CameraObject(struct Sprite *sprite)
-{
- void (*callbacks[ARRAY_COUNT(gUnknown_084975EC)])(struct Sprite *);
-
- memcpy(callbacks, gUnknown_084975EC, sizeof gUnknown_084975EC);
- callbacks[sprite->data[1]](sprite);
-}
-
-/*static*/ void CameraObject_0(struct Sprite *sprite)
-{
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
- sprite->invisible = TRUE;
- sprite->data[1] = 1;
- CameraObject_1(sprite);
-}
-
-/*static*/ void CameraObject_1(struct Sprite *sprite)
-{
- s16 x;
- s16 y;
-
- y = gSprites[sprite->data[0]].pos1.y;
- x = gSprites[sprite->data[0]].pos1.x;
- sprite->data[2] = x - sprite->pos1.x;
- sprite->data[3] = y - sprite->pos1.y;
- sprite->pos1.x = x;
- sprite->pos1.y = y;
-}
-
-/*static*/ void CameraObject_2(struct Sprite *sprite)
-{
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
- sprite->data[2] = 0;
- sprite->data[3] = 0;
-}
-
-static struct Sprite *FindCameraObject(void)
-{
- u8 spriteId;
-
- for (spriteId = 0; spriteId < MAX_SPRITES; spriteId ++)
- {
- if (gSprites[spriteId].inUse && gSprites[spriteId].callback == ObjectCB_CameraObject)
- {
- return &gSprites[spriteId];
- }
- }
- return NULL;
-}
-
-void CameraObjectReset1(void)
-{
- struct Sprite *cameraObject;
-
- cameraObject = FindCameraObject();
- if (cameraObject != NULL)
- {
- cameraObject->data[1] = 0;
- cameraObject->callback(cameraObject);
- }
-}
-
-void CameraObjectSetFollowedObjectId(u8 objectId)
-{
- struct Sprite *cameraObject;
-
- cameraObject = FindCameraObject();
- if (cameraObject != NULL)
- {
- cameraObject->data[0] = objectId;
- CameraObjectReset1();
- }
-}
-
-u8 CameraObjectGetFollowedObjectId(void)
-{
- struct Sprite *cameraObject;
-
- cameraObject = FindCameraObject();
- if (cameraObject == NULL)
- {
- return MAX_SPRITES;
- }
- return cameraObject->data[0];
-}
-
-void CameraObjectReset2(void)
-{
- FindCameraObject()->data[1] = 2;
-}
-
-u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
-{
- u8 i;
-
- for (i = 0; i < MAX_SPRITES; i ++)
- {
- if (!gSprites[i].inUse)
- {
- gSprites[i] = *sprite;
- gSprites[i].pos1.x = x;
- gSprites[i].pos1.y = y;
- gSprites[i].subpriority = subpriority;
- break;
- }
- }
- return i;
-}
-
-u8 obj_unfreeze(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
-{
- s16 i;
-
- for (i = MAX_SPRITES - 1; i > -1; i --)
- {
- if (!gSprites[i].inUse)
- {
- gSprites[i] = *sprite;
- gSprites[i].pos1.x = x;
- gSprites[i].pos1.y = y;
- gSprites[i].subpriority = subpriority;
- return i;
- }
- }
- return MAX_SPRITES;
-}
-
-void FieldObjectSetDirection(struct MapObject *mapObject, u8 direction)
-{
- s8 d2;
- mapObject->mapobj_unk_20 = mapObject->mapobj_unk_18;
- if (!mapObject->mapobj_bit_9)
- {
- d2 = direction;
- mapObject->mapobj_unk_18 = d2;
- }
- mapObject->placeholder18 = direction;
-}
-
-static const u8 *GetFieldObjectScriptPointerByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
-{
- return GetFieldObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->script;
-}
-
-const u8 *GetFieldObjectScriptPointerByFieldObjectId(u8 mapObjectId)
-{
- return GetFieldObjectScriptPointerByLocalIdAndMap(gMapObjects[mapObjectId].localId, gMapObjects[mapObjectId].mapNum, gMapObjects[mapObjectId].mapGroup);
-}
-
-static u16 GetFieldObjectFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
-{
- return GetFieldObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->flagId;
-}
-
-u16 GetFieldObjectFlagIdByFieldObjectId(u8 mapObjectId)
-{
- return GetFieldObjectFlagIdByLocalIdAndMap(gMapObjects[mapObjectId].localId, gMapObjects[mapObjectId].mapNum, gMapObjects[mapObjectId].mapGroup);
-}
-
-u8 sub_808F080(u8 localId, u8 mapNum, u8 mapGroup)
-{
- u8 mapObjectId;
-
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- return 0xFF;
- }
- return gMapObjects[mapObjectId].trainerType;
-}
-
-u8 sub_808F0BC(u8 mapObjectId)
-{
- return gMapObjects[mapObjectId].trainerType;
-}
-
-u8 sub_808F0D4(u8 localId, u8 mapNum, u8 mapGroup)
-{
- u8 mapObjectId;
-
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- return 0xFF;
- }
- return gMapObjects[mapObjectId].trainerRange_berryTreeId;
-}
-
-u8 FieldObjectGetBerryTreeId(u8 mapObjectId)
-{
- return gMapObjects[mapObjectId].trainerRange_berryTreeId;
-}
-
-struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
-{
- struct MapObjectTemplate *templates;
- const struct MapHeader *mapHeader;
- u8 count;
-
- if (gSaveBlock1Ptr->location.mapNum == mapNum && gSaveBlock1Ptr->location.mapGroup == mapGroup)
- {
- templates = gSaveBlock1Ptr->mapObjectTemplates;
- count = gMapHeader.events->mapObjectCount;
- }
- else
- {
- mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
- templates = mapHeader->events->mapObjects;
- count = mapHeader->events->mapObjectCount;
- }
- return FindFieldObjectTemplateInArrayByLocalId(localId, templates, count);
-}
-
-struct MapObjectTemplate *FindFieldObjectTemplateInArrayByLocalId(u8 localId, struct MapObjectTemplate *templates, u8 count)
-{
- u8 i;
-
- for (i = 0; i < count; i ++)
- {
- if (templates[i].localId == localId)
- {
- return &templates[i];
- }
- }
- return NULL;
-}
-
-struct MapObjectTemplate *sub_808F1B4(const struct MapObject *mapObject)
-{
- int i;
-
- if (mapObject->mapNum != gSaveBlock1Ptr->location.mapNum || mapObject->mapGroup != gSaveBlock1Ptr->location.mapGroup)
- {
- return NULL;
- }
- for (i = 0; i < 64; i ++) // Using ARRAY_COUNT here results in the wrong conditional branch instruction (bls instead of ble)
- {
- if (mapObject->localId == gSaveBlock1Ptr->mapObjectTemplates[i].localId)
- {
- return &gSaveBlock1Ptr->mapObjectTemplates[i];
- }
- }
- return NULL;
-}
-
-void sub_808F208(const struct MapObject *mapObject)
-{
- struct MapObjectTemplate *mapObjectTemplate;
-
- mapObjectTemplate = sub_808F1B4(mapObject);
- if (mapObjectTemplate != NULL)
- {
- mapObjectTemplate->x = mapObject->coords2.x - 7;
- mapObjectTemplate->y = mapObject->coords2.y - 7;
- }
-}
-
-void sub_808F228(const struct MapObject *mapObject, const u8 *script)
-{
- struct MapObjectTemplate *mapObjectTemplate;
-
- mapObjectTemplate = sub_808F1B4(mapObject);
- if (mapObjectTemplate != NULL)
- {
- mapObjectTemplate->script = script;
- }
-}
-
-void sub_808F23C(const struct MapObject *mapObject, u8 movementType)
-{
- struct MapObjectTemplate *mapObjectTemplate;
-
- mapObjectTemplate = sub_808F1B4(mapObject);
- if (mapObjectTemplate != NULL)
- {
- mapObjectTemplate->movementType = movementType;
- }
-}
-
-void sub_808F254(u8 localId, u8 mapNum, u8 mapGroup)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- sub_808F208(&gMapObjects[mapObjectId]);
- }
-}
-
-void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- switch (decorCat)
- {
- case DECORCAT_DOLL:
- sub_808F228(&gMapObjects[mapObjectId], EventScript_2766A2);
- break;
- case DECORCAT_CUSHION:
- sub_808F228(&gMapObjects[mapObjectId], EventScript_2766A6);
- break;
- }
- }
-}
-
-void npc_paltag_set_load(u8 palSlot)
-{
- gpu_pal_allocator_reset__manage_upper_four();
- gUnknown_020375B6 = 0x11ff;
- gUnknown_020375B4 = palSlot;
- if (palSlot == 1)
- {
- pal_patch_for_npc_range(gUnknown_0850BE38[gUnknown_020375B4], 0, 6);
- gReservedSpritePaletteCount = 8;
- }
- else
- {
- pal_patch_for_npc_range(gUnknown_0850BE38[gUnknown_020375B4], 0, 10);
- }
-}
-
-u16 npc_paltag_by_palslot(u8 palSlot)
-{
- u8 i;
-
- if (palSlot < 10)
- {
- return gUnknown_0850BE38[gUnknown_020375B4][palSlot];
- }
- for (i = 0; gUnknown_0850BD78[i].tag != 0x11ff; i ++)
- {
- if (gUnknown_0850BD78[i].tag == gUnknown_020375B6)
- {
- return gUnknown_0850BD78[i].data[gUnknown_020375B4];
- }
- }
- return 0x11ff;
-}
-
-// Map Object Step Callbacks
-// file boundary?
-
-null_object_step(NoMovement1, FALSE)
-
-field_object_step(GoRandomDirections, gUnknown_0850D6F4)
-
-bool8 sub_808F44C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_808F460(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_808F48C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (!FieldObjectExecRegularAnim(mapObject, sprite))
- {
- return FALSE;
- }
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- sprite->data[1] = 3;
- return TRUE;
-}
-
-bool8 sub_808F4C8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_808F4E8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[4];
- u8 chosenDirection;
-
- memcpy(directions, gUnknown_0850D710, sizeof directions);
- chosenDirection = directions[Random() & 0x03];
- FieldObjectSetDirection(mapObject, chosenDirection);
- sprite->data[1] = 5;
- if (npc_block_way__next_tile(mapObject, chosenDirection))
- {
- sprite->data[1] = 1;
- }
- return TRUE;
-}
-
-bool8 sub_808F534(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 6;
- return TRUE;
-}
-
-bool8 sub_808F564(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 1;
- }
- return FALSE;
-}
-
-bool8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject)
-{
- s16 playerX;
- s16 playerY;
- s16 objX;
- s16 objY;
- s16 minX;
- s16 maxX;
- s16 minY;
- s16 maxY;
-
- if (!TestPlayerAvatarFlags(0x80))
- {
- return FALSE;
- }
- if (mapObject->trainerType != 1 && mapObject->trainerType != 3)
- {
- return FALSE;
- }
- PlayerGetDestCoords(&playerX, &playerY);
- objX = mapObject->coords2.x;
- objY = mapObject->coords2.y;
- minX = objX - mapObject->trainerRange_berryTreeId;
- minY = objY - mapObject->trainerRange_berryTreeId;
- maxX = objX + mapObject->trainerRange_berryTreeId;
- maxY = objY + mapObject->trainerRange_berryTreeId;
- if (minX > playerX || maxX < playerX || minY > playerY || maxY < playerY)
- {
- return FALSE;
- }
- return TRUE;
-}
-
-u8 GetRegularRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- if (absdx > absdy)
- {
- direction = DIR_EAST;
- if (dx < 0)
- {
- direction = DIR_WEST;
- }
- }
- else
- {
- direction = DIR_SOUTH;
- if (dy < 0)
- {
- direction = DIR_NORTH;
- }
- }
- return direction;
-}
-
-u8 GetNorthSouthRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = DIR_SOUTH;
- if (dy < 0)
- {
- direction = DIR_NORTH;
- }
- return direction;
-}
-
-u8 GetEastWestRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = DIR_EAST;
- if (dx < 0)
- {
- direction = DIR_WEST;
- }
- return direction;
-}
-
-u8 GetNorthEastRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = GetRegularRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_SOUTH)
- {
- direction = GetEastWestRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_EAST)
- {
- direction = DIR_NORTH;
- }
- }
- else if (direction == DIR_EAST)
- {
- direction = GetNorthSouthRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_SOUTH)
- {
- direction = DIR_NORTH;
- }
- }
- return direction;
-}
-
-u8 GetNorthWestRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = GetRegularRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_SOUTH)
- {
- direction = GetEastWestRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_WEST)
- {
- direction = DIR_NORTH;
- }
- }
- else if (direction == DIR_WEST)
- {
- direction = GetNorthSouthRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_SOUTH)
- {
- direction = DIR_NORTH;
- }
- }
- return direction;
-}
-
-u8 GetSouthEastRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = GetRegularRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_NORTH)
- {
- direction = GetEastWestRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_EAST)
- {
- direction = DIR_SOUTH;
- }
- }
- else if (direction == DIR_EAST)
- {
- direction = GetNorthSouthRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_NORTH)
- {
- direction = DIR_SOUTH;
- }
- }
- return direction;
-}
-
-u8 GetSouthWestRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = GetRegularRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_NORTH)
- {
- direction = GetEastWestRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_WEST)
- {
- direction = DIR_SOUTH;
- }
- }
- else if (direction == DIR_WEST)
- {
- direction = GetNorthSouthRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_NORTH)
- {
- direction = DIR_SOUTH;
- }
- }
- return direction;
-}
-
-u8 GetNonEastRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = GetRegularRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_EAST)
- {
- direction = GetNorthSouthRunningPastFacingDirection(dx, dy, absdx, absdy);
- }
- return direction;
-}
-
-u8 GetNonWestRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = GetRegularRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_WEST)
- {
- direction = GetNorthSouthRunningPastFacingDirection(dx, dy, absdx, absdy);
- }
- return direction;
-}
-
-u8 GetNonSouthRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = GetRegularRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_SOUTH)
- {
- direction = GetEastWestRunningPastFacingDirection(dx, dy, absdx, absdy);
- }
- return direction;
-}
-
-u8 GetNonNorthRunningPastFacingDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
-{
- u8 direction;
-
- direction = GetRegularRunningPastFacingDirection(dx, dy, absdx, absdy);
- if (direction == DIR_NORTH)
- {
- direction = GetEastWestRunningPastFacingDirection(dx, dy, absdx, absdy);
- }
- return direction;
-}
-
-u8 GetRunningPastFacingDirection(struct MapObject *mapObject, u8 movementType)
-{
- s16 dx;
- s16 dy;
- s16 absdx;
- s16 absdy;
-
- if (!FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- return 0;
- }
- PlayerGetDestCoords(&dx, &dy);
- dx -= mapObject->coords2.x;
- dy -= mapObject->coords2.y;
- absdx = dx;
- absdy = dy;
- if (absdx < 0)
- {
- absdx = -absdx;
- }
- if (absdy < 0)
- {
- absdy = -absdy;
- }
- return gUnknown_0850D714[movementType](dx, dy, absdx, absdy);
-}
-
-field_object_step(LookRandomDirections, gUnknown_0850D740)
-
-bool8 sub_808F988(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_808F99C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_808F9C8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_808FA0C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_808FA3C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[4];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D710, sizeof directions);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_ANY);
- if (direction == 0)
- {
- direction = directions[Random() & 0x03];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyGoNorthOrSouth, gUnknown_0850D754)
-
-bool8 sub_808FAC8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_808FADC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_808FB08(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (!FieldObjectExecRegularAnim(mapObject, sprite))
- {
- return FALSE;
- }
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- sprite->data[1] = 3;
- return TRUE;
-}
-
-bool8 sub_808FB44(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_808FB64(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[2];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D770, sizeof directions);
- direction = directions[Random() & 0x01];
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 5;
- if (npc_block_way__next_tile(mapObject, direction))
- {
- sprite->data[1] = 1;
- }
- return TRUE;
-}
-
-bool8 sub_808FBB0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 6;
- return TRUE;
-}
-
-bool8 sub_808FBE0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 1;
- }
- return FALSE;
-}
-
-field_object_step(RandomlyGoEastOrWest, gUnknown_0850D774)
-
-bool8 sub_808FC4C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_808FC60(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_808FC8C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (!FieldObjectExecRegularAnim(mapObject, sprite))
- {
- return FALSE;
- }
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- sprite->data[1] = 3;
- return TRUE;
-}
-
-bool8 sub_808FCC8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_808FCE8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[2];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D790, sizeof directions);
- direction = directions[Random() & 0x01];
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 5;
- if (npc_block_way__next_tile(mapObject, direction))
- {
- sprite->data[1] = 1;
- }
- return TRUE;
-}
-
-bool8 sub_808FD34(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 6;
- return TRUE;
-}
-
-bool8 sub_808FD64(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 1;
- }
- return FALSE;
-}
-
-field_object_step(FaceFixedDirection, gUnknown_0850D794)
-
-bool8 sub_808FDD0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_808FDFC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- sprite->data[1] = 2;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_808FE1C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_1 = FALSE;
- return FALSE;
-}
-
-static bool8 FieldObjectCB2_BerryTree(struct MapObject *mapObject, struct Sprite *sprite);
-extern bool8 (*const gUnknown_0850D7A0[])(struct MapObject *mapObject, struct Sprite *sprite);
-void FieldObjectCB_BerryTree(struct Sprite *sprite)
-{
- struct MapObject *mapObject;
-
- mapObject = &gMapObjects[sprite->data[0]];
- if (!(sprite->data[7] & 0x0001))
- {
- get_berry_tree_graphics(mapObject, sprite);
- sprite->data[7] |= 0x0001;
- }
- FieldObjectStep(mapObject, sprite, FieldObjectCB2_BerryTree);
-}
-static bool8 FieldObjectCB2_BerryTree(struct MapObject *mapObject, struct Sprite *sprite)
-{
- return gUnknown_0850D7A0[sprite->data[1]](mapObject, sprite);
-}
-
-bool8 do_berry_tree_growth_sparkle_1 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 berryStage;
-
- npc_reset(mapObject, sprite);
- mapObject->mapobj_bit_13 = TRUE;
- sprite->invisible = TRUE;
- berryStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
- if (berryStage == 0)
- {
- if (!(sprite->data[7] & 0x0004) && sprite->animNum == 4)
- {
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
- gFieldEffectArguments[2] = sprite->subpriority - 1;
- gFieldEffectArguments[3] = sprite->oam.priority;
- FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
- sprite->animNum = berryStage;
- }
- return FALSE;
- }
- mapObject->mapobj_bit_13 = FALSE;
- sprite->invisible = FALSE;
- berryStage --;
- if (sprite->animNum != berryStage)
- {
- sprite->data[1] = 2;
- return TRUE;
- }
- get_berry_tree_graphics(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, 0x39);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_808FF48 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- sprite->data[1] = 0;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 do_berry_tree_growth_sparkle_2 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 3;
- sprite->data[2] = 0;
- sprite->data[7] |= 0x0002;
- gFieldEffectArguments[0] = mapObject->coords2.x;
- gFieldEffectArguments[1] = mapObject->coords2.y;
- gFieldEffectArguments[2] = sprite->subpriority - 1;
- gFieldEffectArguments[3] = sprite->oam.priority;
- FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
- return TRUE;
-}
-
-bool8 sub_808FFB4 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->data[2] ++;
- mapObject->mapobj_bit_13 = (sprite->data[2] & 0x02) >> 1;
- sprite->animPaused = TRUE;
- if (sprite->data[2] > 64)
- {
- get_berry_tree_graphics(mapObject, sprite);
- sprite->data[1] = 4;
- sprite->data[2] = 0;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090004 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->data[2] ++;
- mapObject->mapobj_bit_13 = (sprite->data[2] & 0x02) >> 1;
- sprite->animPaused = TRUE;
- if (sprite->data[2] > 64)
- {
- sprite->data[1] = 0;
- sprite->data[7] &= ~0x0002;
- return TRUE;
- }
- return FALSE;
-}
-
-field_object_step(RandomlyLookNorthOrSouth, gUnknown_0850D7B4)
-
-bool8 sub_8090094 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_80900A8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_80900D4 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090118 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090148 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[2];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D770, sizeof gUnknown_0850D770);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_NORTH_SOUTH);
- if (direction == 0)
- {
- direction = directions[Random() & 0x01];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookEastOrWest, gUnknown_0850D7C8)
-
-bool8 sub_80901D4 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_80901E8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090214 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090258 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090288 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[2];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D790, sizeof gUnknown_0850D790);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_EAST_WEST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x01];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookNorthOrWest, gUnknown_0850D7DC)
-
-bool8 sub_8090314 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090328 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090354 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090398 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_80903C8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[2];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D7F0, sizeof gUnknown_0850D7F0);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_NORTH_WEST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x01];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookNorthOrEast, gUnknown_0850D7F4)
-
-bool8 sub_8090454 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090468 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090494 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_80904D8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090508 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[2];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D808, sizeof gUnknown_0850D808);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_NORTH_EAST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x01];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookSouthOrWest, gUnknown_0850D80C)
-
-bool8 sub_8090594 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_80905A8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_80905D4 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090618 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090648 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[2];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D820, sizeof gUnknown_0850D820);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_SOUTH_WEST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x01];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookSouthOrEast, gUnknown_0850D824)
-
-bool8 sub_80906D4 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_80906E8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090714 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090758 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090788 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[2];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D838, sizeof gUnknown_0850D838);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_SOUTH_EAST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x01];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookNorthOrSouthOrWest, gUnknown_0850D83C)
-
-bool8 sub_8090814 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090828 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090854 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090898 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_80908C8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[4];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D850, sizeof gUnknown_0850D850);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_NORTH_SOUTH_WEST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x03];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookNorthOrSouthOrEast, gUnknown_0850D854)
-
-bool8 sub_8090954 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090968 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090994 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_80909D8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090A08 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[4];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D868, sizeof gUnknown_0850D868);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_NORTH_SOUTH_EAST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x03];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookNorthOrEastOrWest, gUnknown_0850D86C)
-
-bool8 sub_8090A94 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090AA8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090AD4 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090B18 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090B48 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[4];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D880, sizeof gUnknown_0850D880);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_NORTH_EAST_WEST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x03];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(RandomlyLookSouthOrEastOrWest, gUnknown_0850D884)
-
-bool8 sub_8090BD4 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090BE8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090C14 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090C58 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 4;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8090C88 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[4];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D898, sizeof gUnknown_0850D898);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_SOUTH_EAST_WEST);
- if (direction == 0)
- {
- direction = directions[Random() & 0x03];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(LookAroundCounterclockwise, gUnknown_0850D89C)
-
-bool8 sub_8090D14 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090D40 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, 48);
- sprite->data[1] = 2;
- }
- return FALSE;
-}
-
-bool8 sub_8090D64 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090D90 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[5];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D8AC, sizeof gUnknown_0850D8AC);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_ANY);
- if (direction == 0)
- {
- direction = directions[mapObject->mapobj_unk_18];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 0;
- return TRUE;
-}
-
-field_object_step(LookAroundClockwise, gUnknown_0850D8B4)
-
-bool8 sub_8090E18 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090E44 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- SetFieldObjectStepTimer(sprite, 48);
- sprite->data[1] = 2;
- }
- return FALSE;
-}
-
-bool8 sub_8090E68 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
- {
- sprite->data[1] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8090E94 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 directions[5];
- u8 direction;
-
- memcpy(directions, gUnknown_0850D8C4, sizeof gUnknown_0850D8C4);
- direction = GetRunningPastFacingDirection(mapObject, RUNFOLLOW_ANY);
- if (direction == 0)
- {
- direction = directions[mapObject->mapobj_unk_18];
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 0;
- return TRUE;
-}
-
-field_object_step(AlternatelyGoInOppositeDirections, gUnknown_0850D8CC)
-
-bool8 sub_8090F1C (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8090F30 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 direction;
-
- direction = gUnknown_085055CD[mapObject->animPattern];
- if (mapObject->mapobj_unk_21)
- {
- direction = GetOppositeDirection(direction);
- }
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8090F68 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- bool8 blockingWay;
- u8 animId;
-
- if (mapObject->mapobj_unk_21 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y)
- {
- mapObject->mapobj_unk_21 = 0;
- FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
- }
- blockingWay = npc_block_way__next_tile(mapObject, mapObject->placeholder18);
- animId = GetGoSpeed0AnimId(mapObject->placeholder18);
- if (blockingWay == TRUE)
- {
- mapObject->mapobj_unk_21 ++;
- FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
- animId = GetGoSpeed0AnimId(mapObject->placeholder18);
- blockingWay = npc_block_way__next_tile(mapObject, mapObject->placeholder18);
- }
- if (blockingWay)
- {
- animId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18);
- }
- FieldObjectSetRegularAnim(mapObject, sprite, animId);
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 3;
- return TRUE;
-}
-
-bool8 sub_8091020 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 1;
- }
- return FALSE;
-}
-
-bool8 sub_8091048(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 MoveFieldObjectInNextDirectionInSequence(struct MapObject *mapObject, struct Sprite *sprite, u8 *route)
-{
- u8 blockingWay;
- u8 animId;
-
- if (mapObject->mapobj_unk_21 == 3 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y)
- {
- mapObject->mapobj_unk_21 = 0;
- }
- FieldObjectSetDirection(mapObject, route[mapObject->mapobj_unk_21]);
- animId = GetGoSpeed0AnimId(mapObject->placeholder18);
- blockingWay = npc_block_way__next_tile(mapObject, mapObject->placeholder18);
- if (blockingWay == TRUE)
- {
- mapObject->mapobj_unk_21 ++;
- FieldObjectSetDirection(mapObject, route[mapObject->mapobj_unk_21]);
- animId = GetGoSpeed0AnimId(mapObject->placeholder18);
- blockingWay = npc_block_way__next_tile(mapObject, mapObject->placeholder18);
- }
- if (blockingWay)
- {
- animId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18);
- }
- FieldObjectSetRegularAnim(mapObject, sprite, animId);
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8091110(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 1;
- }
- return FALSE;
-}
-
-field_object_path( 1, gUnknown_0850D8DC, sub_809117C, gUnknown_0850D8E8, 2, x)
-field_object_path( 2, gUnknown_0850D8EC, sub_8091208, gUnknown_0850D8F8, 1, x)
-field_object_path( 3, gUnknown_0850D8FC, sub_8091294, gUnknown_0850D908, 1, y)
-field_object_path( 4, gUnknown_0850D90C, sub_8091320, gUnknown_0850D918, 2, y)
-field_object_path( 5, gUnknown_0850D91C, sub_80913AC, gUnknown_0850D928, 2, x)
-field_object_path( 6, gUnknown_0850D92C, sub_8091438, gUnknown_0850D938, 1, x)
-field_object_path( 7, gUnknown_0850D93C, sub_80914C4, gUnknown_0850D710, 1, y)
-field_object_path( 8, gUnknown_0850D948, sub_8091550, gUnknown_0850D954, 2, y)
-field_object_path( 9, gUnknown_0850D958, sub_80915DC, gUnknown_0850D964, 2, y)
-field_object_path(10, gUnknown_0850D968, sub_8091668, gUnknown_0850D974, 1, y)
-field_object_path(11, gUnknown_0850D978, sub_80916F4, gUnknown_0850D984, 1, x)
-field_object_path(12, gUnknown_0850D988, sub_8091780, gUnknown_0850D994, 2, x)
-field_object_path(13, gUnknown_0850D998, sub_809180C, gUnknown_0850D9A4, 2, y)
-field_object_path(14, gUnknown_0850D9A8, sub_8091898, gUnknown_0850D9B4, 1, y)
-field_object_path(15, gUnknown_0850D9B8, sub_8091924, gUnknown_0850D9C4, 1, x)
-field_object_path(16, gUnknown_0850D9C8, sub_80919B0, gUnknown_0850D9D4, 2, x)
-field_object_path(17, gUnknown_0850D9D8, sub_8091A3C, gUnknown_0850D9E4, 2, y)
-field_object_path(18, gUnknown_0850D9E8, sub_8091AC8, gUnknown_0850D9F4, 2, y)
-field_object_path(19, gUnknown_0850D9F8, sub_8091B54, gUnknown_0850DA04, 2, x)
-field_object_path(20, gUnknown_0850DA08, sub_8091BE0, gUnknown_0850DA14, 2, x)
-field_object_path(21, gUnknown_0850DA18, sub_8091C6C, gUnknown_0850DA24, 2, y)
-field_object_path(22, gUnknown_0850DA28, sub_8091CF8, gUnknown_0850DA34, 2, y)
-field_object_path(23, gUnknown_0850DA38, sub_8091D84, gUnknown_0850DA44, 2, x)
-field_object_path(24, gUnknown_0850DA48, sub_8091E10, gUnknown_0850DA54, 2, x)
-
-field_object_step(CopyPlayer1, gUnknown_0850DA58)
-
-bool8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- if (mapObject->mapobj_unk_21 == 0)
- {
- mapObject->mapobj_unk_21 = player_get_direction_lower_nybble();
- }
- sprite->data[1] = 1;
- return TRUE;
-}
-
-bool8 sub_8091EC0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.tileTransitionState == 2)
- {
- return FALSE;
- }
- return gUnknown_0850DA64[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), NULL);
-}
-
-bool8 sub_8091F20(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- mapObject->mapobj_bit_1 = FALSE;
- sprite->data[1] = 1;
- }
- return FALSE;
-}
-
-bool8 sub_8091F48(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- return FALSE;
-}
-
-bool8 sub_8091F4C(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, playerDirection)));
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8091F94(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- u32 direction;
- s16 x;
- s16 y;
-
- direction = playerDirection;
- if (FieldObjectIsFarawayIslandMew(mapObject))
- {
- direction = sub_81D427C();
- if (direction == 0)
- {
- direction = playerDirection;
- direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
- }
- }
- else
- {
- direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- }
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
- {
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
- }
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_80920A4(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- u32 direction;
- s16 x;
- s16 y;
-
- direction = playerDirection;
- direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed1AnimId(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
- {
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
- }
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_809215C(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- u32 direction;
- s16 x;
- s16 y;
-
- direction = playerDirection;
- direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed3AnimId(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
- {
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
- }
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8092214(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- u32 direction;
- s16 x;
- s16 y;
-
- direction = playerDirection;
- direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, sub_8093438(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
- {
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
- }
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- u32 direction;
-
- direction = playerDirection;
- direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectSetRegularAnim(mapObject, sprite, sub_80934BC(direction));
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 sub_8092314(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- u32 direction;
- s16 x;
- s16 y;
-
- direction = playerDirection;
- direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
- FieldObjectSetRegularAnim(mapObject, sprite, sub_8093514(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
- {
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
- }
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
-{
- u32 direction;
- s16 x;
- s16 y;
-
- direction = playerDirection;
- direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
- sub_8092F88(direction, &x, &y, 2, 2);
- FieldObjectSetRegularAnim(mapObject, sprite, GetJumpLedgeAnimId(direction));
- if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
- {
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
- }
- mapObject->mapobj_bit_1 = TRUE;
- sprite->data[1] = 2;
- return TRUE;
-}
-
-field_object_step(CopyPlayer2, gUnknown_0850DA90)
-
-bool8 mss_08062EA4(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.tileTransitionState == 2)
- {
- return FALSE;
- }
- return gUnknown_0850DA64[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), MetatileBehavior_IsPokeGrass);
-}
-
-bool8 sub_80925AC(struct MapObject *, struct Sprite *);
-
-void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
-{
- struct MapObject *mapObject;
-
- mapObject = &gMapObjects[sprite->data[0]];
- if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data[7]))
- {
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE);
- mapObject->mapobj_unk_21 = 1;
- sprite->data[7] ++;
- }
- FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, sub_80925AC);
-}
-
-bool8 sub_80925AC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- return FALSE;
-}
-
-void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
-{
- struct MapObject *mapObject;
-
- mapObject = &gMapObjects[sprite->data[0]];
- if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data[7]))
- {
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE);
- mapObject->mapobj_unk_21 = 1;
- sprite->data[7] ++;
- }
- FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, sub_80925AC);
-}
-
-extern bool8 (*const gUnknown_0850DA9C[])(struct MapObject *, struct Sprite *);
-bool8 sub_809268C(struct MapObject *, struct Sprite *);
-
-void FieldObjectCB_Hidden1(struct Sprite *sprite)
-{
- if (!sprite->data[7])
- {
- gMapObjects[sprite->data[0]].mapobj_bit_26 = TRUE;
- sprite->subspriteMode = 2;
- sprite->oam.priority = 3;
- sprite->data[7] ++;
- }
- FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, sub_809268C);
-}
-
-bool8 sub_809268C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- return gUnknown_0850DA9C[sprite->data[1]](mapObject, sprite);
-}
-
-bool8 sub_80926AC (struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- return FALSE;
-}
-bool8 sub_80926B8 (struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- sprite->data[1] = 0;
- }
- return FALSE;
-}
-
-field_object_step(WalkInPlace1, gUnknown_0850DAA0)
-
-bool8 sub_8092718(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(WalkInPlace4, gUnknown_0850DAA8)
-
-bool8 sub_8092788(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay32AnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(WalkInPlace2, gUnknown_0850DAB0)
-
-bool8 sub_80927F8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay8AnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(WalkInPlace3, gUnknown_0850DAB8)
-
-bool8 sub_8092868(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay4AnimId(mapObject->mapobj_unk_18));
- sprite->data[1] = 1;
- return TRUE;
-}
-
-field_object_step(Hidden2, gUnknown_0850DAC0)
-
-bool8 sub_80928D8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_reset(mapObject, sprite);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- mapObject->mapobj_bit_13 = TRUE;
- sprite->data[1] = 1;
- return TRUE;
-}
-bool8 sub_809290C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (FieldObjectExecRegularAnim(mapObject, sprite))
- {
- sprite->data[1] = 2;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_809292C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_1 = FALSE;
- return FALSE;
-}
-
-void npc_reset(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_1 = FALSE;
- mapObject->mapobj_bit_6 = FALSE;
- mapObject->mapobj_bit_7 = FALSE;
- mapObject->mapobj_unk_1C = 0xFF;
- sprite->data[1] = 0;
-}
-
-#define dirn2anim(name, table)\
-extern const u8 table[4];\
-u8 name(u8 direction)\
-{\
- return table[direction];\
-}
-
-dirn2anim(FieldObjectDirectionToImageAnimId, gUnknown_0850DACC)
-dirn2anim(get_go_image_anim_num, gUnknown_0850DAD5)
-dirn2anim(get_go_fast_image_anim_num, gUnknown_0850DADE)
-dirn2anim(get_go_faster_image_anim_num, gUnknown_0850DAE7)
-dirn2anim(get_go_fastest_image_anim_num, gUnknown_0850DAF0)
-dirn2anim(sub_80929AC, gUnknown_0850DAF9)
-dirn2anim(sub_80929BC, gUnknown_0850DB02)
-dirn2anim(sub_80929CC, gUnknown_0850DB0B)
-dirn2anim(sub_80929DC, gUnknown_0850DB14)
-dirn2anim(sub_80929EC, gUnknown_0850DB1D)
-dirn2anim(sub_80929FC, gUnknown_0850DB26)
-dirn2anim(sub_8092A0C, gUnknown_0850DB2F)
-dirn2anim(sub_8092A1C, gUnknown_0850DB38)
-dirn2anim(sub_8092A2C, gUnknown_0850DB41)
-dirn2anim(get_run_image_anim_num, gUnknown_0850DB4A)
-
-// file boundary?
-
-struct UnkStruct_085094AC {
- const union AnimCmd *const *anims;
- u8 animPos[4];
-};
-
-extern const struct UnkStruct_085094AC gUnknown_085094AC[];
-
-static const struct UnkStruct_085094AC *sub_8092A4C(const union AnimCmd *const *anims)
-{
- const struct UnkStruct_085094AC *retval;
-
- for (retval = gUnknown_085094AC; retval->anims != NULL; retval ++)
- {
- if (retval->anims == anims)
- {
- return retval;
- }
- }
- return NULL;
-}
-
-void npc_apply_anim_looping(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
-{
- const struct UnkStruct_085094AC *unk85094AC;
-
- if (!mapObject->mapobj_bit_12)
- {
- sprite->animNum = animNum;
- unk85094AC = sub_8092A4C(sprite->anims);
- if (unk85094AC != NULL)
- {
- if (sprite->animCmdIndex == unk85094AC->animPos[0])
- {
- sprite->animCmdIndex = unk85094AC->animPos[3];
- }
- else if (sprite->animCmdIndex == unk85094AC->animPos[1])
- {
- sprite->animCmdIndex = unk85094AC->animPos[2];
- }
- }
- SeekSpriteAnim(sprite, sprite->animCmdIndex);
- }
-}
-
-void obj_npc_animation_step(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
-{
- const struct UnkStruct_085094AC *unk85094AC;
-
- if (!mapObject->mapobj_bit_12)
- {
- u8 animPos;
-
- sprite->animNum = animNum;
- unk85094AC = sub_8092A4C(sprite->anims);
- if (unk85094AC != NULL)
- {
- animPos = unk85094AC->animPos[1];
- if (sprite->animCmdIndex <= unk85094AC->animPos[0])
- {
- animPos = unk85094AC->animPos[0];
- }
- SeekSpriteAnim(sprite, animPos);
- }
- }
-}
-
-// file boundary?
-
-u8 sub_8092AF8(s16 x1, s16 y1, s16 x2, s16 y2)
-{
- if (x1 > x2)
- {
- return DIR_WEST;
- }
- if (x1 < x2)
- {
- return DIR_EAST;
- }
- if (y1 > y2)
- {
- return DIR_NORTH;
- }
- return DIR_SOUTH;
-}
-
-void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern)
-{
- mapObject->animPattern = animPattern;
- mapObject->mapobj_unk_21 = 0;
- mapObject->animId = 0;
- gSprites[mapObject->spriteId].callback = gUnknown_08505438[animPattern];
- gSprites[mapObject->spriteId].data[1] = 0;
-}
-
-dirn2anim(npc_running_behaviour_by_direction, gUnknown_0850DB53)
-
-u8 npc_block_way__next_tile(struct MapObject *mapObject, u8 direction)
-{
- s16 x;
- s16 y;
-
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
- MoveCoords(direction, &x, &y);
- return npc_block_way(mapObject, x, y, direction);
-}
-
-u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn)
-{
- u8 direction;
-
- direction = dirn;
- if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y))
- {
- return 1;
- }
- if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
- {
- return 2;
- }
- if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))
- {
- return 2;
- }
- if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
- {
- return 3;
- }
- if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
- {
- return 4;
- }
- return 0;
-}
-
-u8 sub_8092C8C(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
-{
- u8 retval;
-
- retval = 0x00;
- if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y))
- {
- retval |= 1;
- }
- if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)))
- {
- retval |= 2;
- }
- if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
- {
- retval |= 4;
- }
- if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
- {
- retval |= 8;
- }
- return retval;
-}
-
-static bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y)
-{
- s16 left;
- s16 right;
- s16 top;
- s16 bottom;
-
- if (mapObject->range.as_nybbles.x != 0)
- {
- left = mapObject->coords1.x - mapObject->range.as_nybbles.x;
- right = mapObject->coords1.x + mapObject->range.as_nybbles.x;
- if (left > x || right < x)
- {
- return TRUE;
- }
- }
- if (mapObject->range.as_nybbles.y != 0)
- {
- top = mapObject->coords1.y - mapObject->range.as_nybbles.y;
- bottom = mapObject->coords1.y + mapObject->range.as_nybbles.y;
- if (top > y || bottom < y)
- {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-static bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
-{
- if (gUnknown_0850DB5C[direction - 1](mapObject->mapobj_unk_1E) || gUnknown_0850DB6C[direction - 1](MapGridGetMetatileBehaviorAt(x, y)))
- {
- return TRUE;
- }
- return FALSE;
-}
-
-static bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y)
-{
- u8 i;
- struct MapObject *curObject;
-
- for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
- {
- curObject = &gMapObjects[i];
- if (curObject->active && curObject != mapObject)
- {
- if ((curObject->coords2.x == x && curObject->coords2.y == y) || (curObject->coords3.x == x && curObject->coords3.y == y))
- {
- if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, curObject->mapobj_unk_0B_0))
- {
- return TRUE;
- }
- }
- }
- }
- return FALSE;
-}
-
-bool8 sub_8092E9C(u8 localId, u8 mapNum, u8 mapGroup)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) && gSprites[gMapObjects[mapObjectId].spriteId].data[7] & 0x02)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-void sub_8092EF0(u8 localId, u8 mapNum, u8 mapGroup)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
- {
- gSprites[gMapObjects[mapObjectId].spriteId].data[7] |= 0x04;
- }
-}
-
-void MoveCoords(u8 direction, s16 *x, s16 *y)
-{
- *x += gUnknown_0850DB7C[direction].x;
- *y += gUnknown_0850DB7C[direction].y;
-}
-
-void sub_8092F60(u8 direction, s16 *x, s16 *y)
-{
- *x += gUnknown_0850DB7C[direction].x << 4;
- *y += gUnknown_0850DB7C[direction].y << 4;
-}
-
-void sub_8092F88(u32 dirn, s16 *x, s16 *y, s16 dx, s16 dy)
-{
- u8 direction;
- s16 dx_2;
- s16 dy_2;
- s16 cur_x;
- s16 cur_y;
-
- direction = dirn;
- dx_2 = dx;
- dy_2 = dy;
- cur_x = gUnknown_0850DB7C[direction].x;
- if (cur_x > 0)
- {
- *x += dx_2;
- }
- if (cur_x < 0)
- {
- *x -= dx_2;
- }
- cur_y = gUnknown_0850DB7C[direction].y;
- if (cur_y > 0)
- {
- *y += dy_2;
- }
- if (cur_y < 0)
- {
- *y -= dy_2;
- }
-}
-
-void sub_8092FF0(s16 x, s16 y, s16 *dest_x, s16 *dest_y)
-{
- *dest_x = (x - gSaveBlock1Ptr->pos.x) << 4;
- *dest_y = (y - gSaveBlock1Ptr->pos.y) << 4;
- *dest_x -= gUnknown_03005DEC;
- *dest_y -= gUnknown_03005DE8;
-}
-
-void sub_8093038(s16 x, s16 y, s16 *dest_x, s16 *dest_y)
-{
- s16 dx;
- s16 dy;
-
- dx = -gUnknown_03005DEC - gUnknown_03005DD0.x;
- dy = -gUnknown_03005DE8 - gUnknown_03005DD0.y;
- if (gUnknown_03005DD0.x > 0)
- {
- dx += 0x10;
- }
- if (gUnknown_03005DD0.x < 0)
- {
- dx -= 0x10;
- }
- if (gUnknown_03005DD0.y > 0)
- {
- dy += 0x10;
- }
- if (gUnknown_03005DD0.y < 0)
- {
- dy -= 0x10;
- }
- *dest_x = ((x - gSaveBlock1Ptr->pos.x) << 4) + dx;
- *dest_y = ((y - gSaveBlock1Ptr->pos.y) << 4) + dy;
-}
-
-void sub_80930E0(s16 *x, s16 *y, s16 dx, s16 dy)
-{
- sub_8093038(*x, *y, x, y);
- *x += dx;
- *y += dy;
-}
-
-void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y)
-{
- *x = 0;
- *y = 0;
- if (gUnknown_03005DD0.x > 0)
- {
- (*x) ++;
- }
- if (gUnknown_03005DD0.x < 0)
- {
- (*x) --;
- }
- if (gUnknown_03005DD0.y > 0)
- {
- (*y) ++;
- }
- if (gUnknown_03005DD0.y < 0)
- {
- (*y) --;
- }
-}
-
-void FieldObjectMoveDestCoords(struct MapObject *mapObject, u32 dirn, s16 *x, s16 *y)
-{
- u8 direction;
-
- direction = dirn;
- *x = mapObject->coords2.x;
- *y = mapObject->coords2.y;
- MoveCoords(direction, x, y);
-}
-
-// file boundary?
-
-bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject)
-{
- if (mapObject->mapobj_bit_1 || mapObject->mapobj_bit_6)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 FieldObjectIsSpecialAnimActive(struct MapObject *mapObject)
-{
- if (mapObject->mapobj_bit_6 && mapObject->mapobj_unk_1C != 0xFF)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
-{
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
- {
- return TRUE;
- }
- npc_sync_anim_pause_bits(mapObject);
- mapObject->mapobj_unk_1C = specialAnimId;
- mapObject->mapobj_bit_6 = TRUE;
- mapObject->mapobj_bit_7 = FALSE;
- gSprites[mapObject->spriteId].data[2] = 0;
- return FALSE;
-}
-
-void FieldObjectForceSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
-{
- FieldObjectClearAnimIfSpecialAnimActive(mapObject);
- FieldObjectSetSpecialAnim(mapObject, specialAnimId);
-}
-
-void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *mapObject)
-{
- if (mapObject->mapobj_bit_6)
- {
- FieldObjectClearAnim(mapObject);
- }
-}
-
-void FieldObjectClearAnim(struct MapObject *mapObject)
-{
- mapObject->mapobj_unk_1C = 0xFF;
- mapObject->mapobj_bit_6 = FALSE;
- mapObject->mapobj_bit_7 = FALSE;
- gSprites[mapObject->spriteId].data[1] = 0;
- gSprites[mapObject->spriteId].data[2] = 0;
-}
-
-u8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject)
-{
- if (mapObject->mapobj_bit_6)
- {
- return mapObject->mapobj_bit_7;
- }
- return 0x10;
-}
-
-u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *mapObject)
-{
- u8 specialAnimState;
-
- specialAnimState = FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject);
- if (specialAnimState != 0 && specialAnimState != 16)
- {
- FieldObjectClearAnimIfSpecialAnimActive(mapObject);
- }
- return specialAnimState;
-}
-
-u8 FieldObjectGetSpecialAnim(struct MapObject *mapObject)
-{
- if (mapObject->mapobj_bit_6)
- {
- return mapObject->mapobj_unk_1C;
- }
- return 0xFF;
-}
-
-void FieldObjectStep(struct MapObject *mapObject, struct Sprite *sprite, bool8 (*callback)(struct MapObject *, struct Sprite *))
-{
- DoGroundEffects_OnSpawn(mapObject, sprite);
- sub_80964E8(mapObject, sprite);
- if (FieldObjectIsSpecialAnimActive(mapObject))
- {
- FieldObjectExecSpecialAnim(mapObject, sprite);
- }
- else if (!mapObject->mapobj_bit_8)
- {
- while (callback(mapObject, sprite));
- }
- DoGroundEffects_OnBeginStep(mapObject, sprite);
- DoGroundEffects_OnFinishStep(mapObject, sprite);
- npc_obj_transfer_image_anim_pause_flag(mapObject, sprite);
- sub_8096518(mapObject, sprite);
- FieldObjectUpdateSubpriority(mapObject, sprite);
-}
-
-#define dirn2anim_2(name, table) \
-extern const u8 table[5]; \
-u8 name(u32 direction) \
-{ \
- u8 dirn2; \
- u8 animIds[5]; \
- dirn2 = direction; \
- memcpy(animIds, table, 5); \
- if (dirn2 > DIR_EAST) \
- { \
- dirn2 = 0; \
- } \
- return animIds[dirn2]; \
-}
-
-dirn2anim_2(GetFaceDirectionAnimId, gUnknown_0850DBA0);
-dirn2anim_2(GetSimpleGoAnimId, gUnknown_0850DBA5);
-dirn2anim_2(GetGoSpeed0AnimId, gUnknown_0850DBAA);
-dirn2anim_2(GetGoSpeed1AnimId, gUnknown_0850DBAF);
-dirn2anim_2(GetGoSpeed2AnimId, gUnknown_0850DBB4);
-dirn2anim_2(GetGoSpeed3AnimId, gUnknown_0850DBB9);
-dirn2anim_2(sub_8093438, gUnknown_0850DBBE);
-dirn2anim_2(GetRunAnimId, gUnknown_0850DBC3);
-dirn2anim_2(GetJumpLedgeAnimId, gUnknown_0850DBC8);
-dirn2anim_2(sub_80934BC, gUnknown_0850DBCD);
-dirn2anim_2(sub_80934E8, gUnknown_0850DBD2);
-dirn2anim_2(sub_8093514, gUnknown_0850DBD7);
-dirn2anim_2(sub_8093540, gUnknown_0850DBDC);
-dirn2anim_2(GetStepInPlaceDelay32AnimId, gUnknown_0850DBE1);
-dirn2anim_2(GetStepInPlaceDelay16AnimId, gUnknown_0850DBE6);
-dirn2anim_2(GetStepInPlaceDelay8AnimId, gUnknown_0850DBEB);
-dirn2anim_2(GetStepInPlaceDelay4AnimId, gUnknown_0850DBF0);
-
-bool8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction)
-{
- return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction)));
-}
-
-dirn2anim_2(sub_8093648, gUnknown_0850DBF5);
-dirn2anim_2(sub_8093674, gUnknown_0850DBFA);
-dirn2anim_2(sub_80936A0, gUnknown_0850DBFF);
-dirn2anim_2(sub_80936CC, gUnknown_0850DC04);
-dirn2anim_2(sub_80936F8, gUnknown_0850DC09);
-dirn2anim_2(sub_8093724, gUnknown_0850DC0E);
-dirn2anim_2(sub_8093750, gUnknown_0850DC13);
-dirn2anim_2(sub_809377C, gUnknown_0850DC18);
-dirn2anim_2(sub_80937A8, gUnknown_0850DC1D);
-dirn2anim_2(d2s_08064034, gUnknown_0850DC22);
-
-extern const u8 gUnknown_0850DC27[8];
-
-u8 GetOppositeDirection(u8 direction)
-{
- u8 directions[sizeof gUnknown_0850DC27];
-
- memcpy(directions, gUnknown_0850DC27, sizeof gUnknown_0850DC27);
- if (direction < 1 || direction > (sizeof gUnknown_0850DC27))
- {
- return direction;
- }
- return directions[direction - 1];
-}
-
-static u32 zffu_offset_calc(u8 a0, u8 a1)
-{
- return gUnknown_0850DC2F[a0 - 1][a1 - 1];
-}
-
-static u32 state_to_direction(u8 a0, u32 a1, u32 a2)
-{
- u32 zffuOffset;
- u8 a1_2;
- u8 a2_2;
-
- a1_2 = a1;
- a2_2 = a2;
- if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST)
- {
- return 0;
- }
- zffuOffset = zffu_offset_calc(a1_2, a2);
- return gUnknown_0850DC3F[a0 - 1][zffuOffset - 1];
-}
-
-static void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (gUnknown_0850DC50[mapObject->mapobj_unk_1C][sprite->data[2]](mapObject, sprite))
- {
- mapObject->mapobj_bit_7 = TRUE;
- }
-}
-
-bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (gUnknown_0850DC50[mapObject->mapobj_unk_1C][sprite->data[2]](mapObject, sprite))
- {
- mapObject->mapobj_unk_1C = 0xFF;
- sprite->data[2] = 0;
- return TRUE;
- }
- return FALSE;
-}
-
-void FieldObjectSetRegularAnim(struct MapObject *mapObject, struct Sprite *sprite, u8 animId)
-{
- mapObject->mapobj_unk_1C = animId;
- sprite->data[2] = 0;
-}
-
-// file boundary?
-
-void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
-{
- FieldObjectSetDirection(mapObject, direction);
- npc_coords_shift_still(mapObject);
- obj_npc_animation_step(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
- sprite->animPaused = TRUE;
- sprite->data[2] = 1;
-}
-
-bool8 sub_8093950(struct MapObject *mapObject, struct Sprite *sprite)
-{
- an_look_any(mapObject, sprite, DIR_SOUTH);
- return TRUE;
-}
-
-bool8 sub_8093960(struct MapObject *mapObject, struct Sprite *sprite)
-{
- an_look_any(mapObject, sprite, DIR_NORTH);
- return TRUE;
-}
-
-bool8 sub_8093970(struct MapObject *mapObject, struct Sprite *sprite)
-{
- an_look_any(mapObject, sprite, DIR_WEST);
- return TRUE;
-}
-
-bool8 sub_8093980(struct MapObject *mapObject, struct Sprite *sprite)
-{
- an_look_any(mapObject, sprite, DIR_EAST);
- return TRUE;
-}
-
-void npc_apply_direction(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed)
-{
- s16 x;
- s16 y;
-
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
- FieldObjectSetDirection(mapObject, direction);
- MoveCoords(direction, &x, &y);
- npc_coords_shift(mapObject, x, y);
- oamt_npc_ministep_reset(sprite, direction, speed);
- sprite->animPaused = FALSE;
- if (gUnknown_020375B8 != NULL && sub_8097F78(mapObject) != 0x10)
- {
- sprite->animPaused = TRUE;
- }
- mapObject->mapobj_bit_2 = TRUE;
- sprite->data[2] = 1;
-}
-
-void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed)
-{
- u8 (*functions[ARRAY_COUNT(gUnknown_0850DEE8)])(u8);
-
- memcpy(functions, gUnknown_0850DEE8, sizeof gUnknown_0850DEE8);
- npc_apply_direction(mapObject, sprite, direction, speed);
- npc_apply_anim_looping(mapObject, sprite, functions[speed](mapObject->mapobj_unk_18));
-}
-
-void do_run_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
-{
- npc_apply_direction(mapObject, sprite, direction, 1);
- npc_apply_anim_looping(mapObject, sprite, get_run_image_anim_num(mapObject->mapobj_unk_18));
-}
-
-bool8 npc_obj_ministep_stop_on_arrival(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (obj_npc_ministep(sprite))
- {
- npc_coords_shift_still(mapObject);
- mapObject->mapobj_bit_3 = TRUE;
- sprite->animPaused = TRUE;
- return TRUE;
- }
- return FALSE;
-}
-
-void sub_8093AF0(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
-{
- s16 x;
- s16 y;
-
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
- FieldObjectSetDirection(mapObject, direction);
- MoveCoords(direction, &x, &y);
- npc_coords_shift(mapObject, x, y);
- sub_80976DC(sprite, direction);
- sprite->animPaused = FALSE;
- mapObject->mapobj_bit_2 = TRUE;
- sprite->data[2] = 1;
-}
-
-void sub_8093B60(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
-{
- sub_8093AF0(mapObject, sprite, direction);
- npc_apply_anim_looping(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
-}
-
-bool8 an_walk_any_2(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_80976EC(sprite))
- {
- npc_coords_shift_still(mapObject);
- mapObject->mapobj_bit_3 = TRUE;
- sprite->animPaused = TRUE;
- return TRUE;
- }
- return FALSE;
-}
-
-#define an_walk_any_2_macro(name, fn1, fn2, ...) \
-bool8 name##_2(struct MapObject *, struct Sprite *);\
-bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- fn1(mapObject, sprite, __VA_ARGS__);\
- return name##_2(mapObject, sprite);\
-}\
-bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- if (fn2(mapObject, sprite))\
- {\
- sprite->data[2] = 2;\
- return TRUE;\
- }\
- return FALSE;\
-}
-
-an_walk_any_2_macro(sub_8093BC4, sub_8093B60, an_walk_any_2, 7)
-an_walk_any_2_macro(sub_8093C04, sub_8093B60, an_walk_any_2, 8)
-an_walk_any_2_macro(sub_8093C44, sub_8093B60, an_walk_any_2, 5)
-an_walk_any_2_macro(sub_8093C84, sub_8093B60, an_walk_any_2, 6)
-an_walk_any_2_macro(sub_8093CC4, sub_8093B60, an_walk_any_2, 1)
-an_walk_any_2_macro(sub_8093D04, sub_8093B60, an_walk_any_2, 2)
-an_walk_any_2_macro(sub_8093D44, sub_8093B60, an_walk_any_2, 3)
-an_walk_any_2_macro(sub_8093D84, sub_8093B60, an_walk_any_2, 4)
-an_walk_any_2_macro(sub_8093DC4, do_go_anim, npc_obj_ministep_stop_on_arrival, 7, 0)
-an_walk_any_2_macro(sub_8093E04, do_go_anim, npc_obj_ministep_stop_on_arrival, 8, 0)
-an_walk_any_2_macro(sub_8093E44, do_go_anim, npc_obj_ministep_stop_on_arrival, 5, 0)
-an_walk_any_2_macro(sub_8093E84, do_go_anim, npc_obj_ministep_stop_on_arrival, 6, 0)
-an_walk_any_2_macro(sub_8093EC4, do_go_anim, npc_obj_ministep_stop_on_arrival, 1, 0)
-an_walk_any_2_macro(sub_8093F04, do_go_anim, npc_obj_ministep_stop_on_arrival, 2, 0)
-an_walk_any_2_macro(sub_8093F44, do_go_anim, npc_obj_ministep_stop_on_arrival, 3, 0)
-an_walk_any_2_macro(sub_8093F84, do_go_anim, npc_obj_ministep_stop_on_arrival, 4, 0)
-
-void sub_8093FC4(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed, u8 a5)
-{
- s16 displacements[ARRAY_COUNT(gUnknown_0850DFBC)];
- s16 x;
- s16 y;
-
- memcpy(displacements, gUnknown_0850DFBC, sizeof gUnknown_0850DFBC);
- x = 0;
- y = 0;
- FieldObjectSetDirection(mapObject, direction);
- sub_8092F88(direction, &x, &y, displacements[speed], displacements[speed]);
- npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y);
- sub_809783C(sprite, direction, speed, a5);
- sprite->data[2] = 1;
- sprite->animPaused = 0;
- mapObject->mapobj_bit_2 = 1;
- mapObject->mapobj_bit_4 = 1;
-}
-
-void maybe_shadow_1(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed, u8 a4)
-{
- sub_8093FC4(mapObject, sprite, direction, speed, a4);
- npc_apply_anim_looping(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
- DoShadowFieldEffect(mapObject);
-}
-
-u8 sub_80940C4(struct MapObject *mapObject, struct Sprite *sprite, u8 callback(struct Sprite *))
-{
- s16 displacements[ARRAY_COUNT(gUnknown_0850DFC2)];
- s16 x;
- s16 y;
- u8 result;
-
- memcpy(displacements, gUnknown_0850DFC2, sizeof gUnknown_0850DFC2);
- result = callback(sprite);
- if (result == 1 && displacements[sprite->data[4]] != 0)
- {
- x = 0;
- y = 0;
- sub_8092F88(mapObject->placeholder18, &x, &y, displacements[sprite->data[4]], displacements[sprite->data[4]]);
- npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y);
- mapObject->mapobj_bit_2 = TRUE;
- mapObject->mapobj_bit_4 = TRUE;
- }
- else if (result == 0xFF)
- {
- npc_coords_shift_still(mapObject);
- mapObject->mapobj_bit_3 = TRUE;
- mapObject->mapobj_bit_5 = TRUE;
- sprite->animPaused = TRUE;
- }
- return result;
-}
-
-u8 sub_8094188(struct MapObject *mapObject, struct Sprite *sprite)
-{
- return sub_80940C4(mapObject, sprite, sub_809785C);
-}
-
-u8 sub_809419C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- return sub_80940C4(mapObject, sprite, sub_80978E4);
-}
-
-bool8 sub_80941B0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_8094188(mapObject, sprite) == 0xFF)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_80941C8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_809419C(mapObject, sprite) == 0xFF)
- {
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_80941E0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- switch (sub_8094188(mapObject, sprite))
- {
- case 255:
- return TRUE;
- case 1:
- FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
- obj_npc_animation_step(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
- default:
- return FALSE;
- }
-}
-
-#define maybe_shadow_1_macro(name, fn1, fn2, ...) \
-bool8 name##_2(struct MapObject *, struct Sprite *);\
-bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- fn1(mapObject, sprite, __VA_ARGS__);\
- return name##_2(mapObject, sprite);\
-}\
-bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- if (fn2(mapObject, sprite))\
- {\
- mapObject->mapobj_bit_22 = FALSE;\
- sprite->data[2] = 2;\
- return TRUE;\
- }\
- return FALSE;\
-}
-
-maybe_shadow_1_macro(sub_8094230, maybe_shadow_1, sub_80941B0, DIR_SOUTH, 2, 0)
-maybe_shadow_1_macro(sub_8094288, maybe_shadow_1, sub_80941B0, DIR_NORTH, 2, 0)
-maybe_shadow_1_macro(sub_80942E0, maybe_shadow_1, sub_80941B0, DIR_WEST, 2, 0)
-maybe_shadow_1_macro(sub_8094338, maybe_shadow_1, sub_80941B0, DIR_EAST, 2, 0)
-
-void sub_8094390(struct Sprite *sprite, u16 duration)
-{
- sprite->data[2] = 1;
- sprite->data[3] = duration;
-}
-
-bool8 sub_8094398(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (-- sprite->data[3] == 0)
- {
- sprite->data[2] = 2;
- return TRUE;
- }
- return FALSE;
-}
-
-#define special_anim_with_timer(name, duration)\
-bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- sub_8094390(sprite, duration);\
- return sub_8094398(mapObject, sprite);\
-}
-
-special_anim_with_timer(sub_80943B4, 1)
-special_anim_with_timer(sub_80943D4, 2)
-special_anim_with_timer(sub_80943F4, 4)
-special_anim_with_timer(sub_8094414, 8)
-special_anim_with_timer(sub_8094434, 16)
-
-an_walk_any_2_macro(sub_8094454, do_go_anim, npc_obj_ministep_stop_on_arrival, 1, 1)
-an_walk_any_2_macro(sub_8094494, do_go_anim, npc_obj_ministep_stop_on_arrival, 2, 1)
-an_walk_any_2_macro(sub_80944D4, do_go_anim, npc_obj_ministep_stop_on_arrival, 3, 1)
-an_walk_any_2_macro(sub_8094514, do_go_anim, npc_obj_ministep_stop_on_arrival, 4, 1)
-
-void sub_8094554(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration)
-{
- FieldObjectSetDirection(mapObject, direction);
- npc_apply_anim_looping(mapObject, sprite, animNum);
- sprite->animPaused = FALSE;
- sprite->data[2] = 1;
- sprite->data[3] = duration;
-}
-
-bool8 sub_809459C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (-- sprite->data[3] == 0)
- {
- sprite->data[2] = 2;
- sprite->animPaused = TRUE;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_80945C4(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sprite->data[3] & 1)
- {
- sprite->animDelayCounter ++;
- }
- return sub_809459C(mapObject, sprite);
-}
-
-#define special_anim_with_timer_2(name, direction, images, duration, timer) \
-bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- u8 animId;\
- animId = images(DIR_##direction);\
- sub_8094554(mapObject, sprite, DIR_##direction, animId, duration);\
- return timer(mapObject, sprite);\
-}
-
-special_anim_with_timer_2(sub_8094600, SOUTH, get_go_image_anim_num, 32, sub_80945C4)
-special_anim_with_timer_2(sub_8094638, NORTH, get_go_image_anim_num, 32, sub_80945C4)
-special_anim_with_timer_2(sub_8094670, WEST, get_go_image_anim_num, 32, sub_80945C4)
-special_anim_with_timer_2(sub_80946A8, EAST, get_go_image_anim_num, 32, sub_80945C4)
-special_anim_with_timer_2(sub_80946E0, SOUTH, get_go_image_anim_num, 16, sub_809459C)
-special_anim_with_timer_2(sub_8094718, NORTH, get_go_image_anim_num, 16, sub_809459C)
-special_anim_with_timer_2(sub_8094750, WEST, get_go_image_anim_num, 16, sub_809459C)
-special_anim_with_timer_2(sub_8094788, EAST, get_go_image_anim_num, 16, sub_809459C)
-special_anim_with_timer_2(sub_80947C0, SOUTH, get_go_fast_image_anim_num, 8, sub_809459C)
-special_anim_with_timer_2(sub_80947F8, NORTH, get_go_fast_image_anim_num, 8, sub_809459C)
-special_anim_with_timer_2(sub_8094830, WEST, get_go_fast_image_anim_num, 8, sub_809459C)
-special_anim_with_timer_2(sub_8094868, EAST, get_go_fast_image_anim_num, 8, sub_809459C)
-special_anim_with_timer_2(sub_80948A0, SOUTH, get_go_faster_image_anim_num, 4, sub_809459C)
-special_anim_with_timer_2(sub_80948D8, NORTH, get_go_faster_image_anim_num, 4, sub_809459C)
-special_anim_with_timer_2(sub_8094910, WEST, get_go_faster_image_anim_num, 4, sub_809459C)
-special_anim_with_timer_2(sub_8094948, EAST, get_go_faster_image_anim_num, 4, sub_809459C)
-
-an_walk_any_2_macro(sub_8094980, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_SOUTH, 2)
-an_walk_any_2_macro(sub_80949C0, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_NORTH, 2)
-an_walk_any_2_macro(sub_8094A00, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_WEST, 2)
-an_walk_any_2_macro(sub_8094A40, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_EAST, 2)
-an_walk_any_2_macro(sub_8094A80, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_SOUTH, 3)
-an_walk_any_2_macro(sub_8094AC0, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_NORTH, 3)
-an_walk_any_2_macro(sub_8094B00, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_WEST, 3)
-an_walk_any_2_macro(sub_8094B40, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_EAST, 3)
-an_walk_any_2_macro(sub_8094B80, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_SOUTH, 4)
-an_walk_any_2_macro(sub_8094BC0, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_NORTH, 4)
-an_walk_any_2_macro(sub_8094C00, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_WEST, 4)
-an_walk_any_2_macro(sub_8094C40, do_go_anim, npc_obj_ministep_stop_on_arrival, DIR_EAST, 4)
-an_walk_any_2_macro(sub_8094C80, do_run_anim, npc_obj_ministep_stop_on_arrival, DIR_SOUTH)
-an_walk_any_2_macro(sub_8094CC0, do_run_anim, npc_obj_ministep_stop_on_arrival, DIR_NORTH)
-an_walk_any_2_macro(sub_8094D00, do_run_anim, npc_obj_ministep_stop_on_arrival, DIR_WEST)
-an_walk_any_2_macro(sub_8094D40, do_run_anim, npc_obj_ministep_stop_on_arrival, DIR_EAST)
-
-void npc_set_direction_and_anim__an_proceed(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 animNum)
-{
- obj_anim_image_set_and_seek(sprite, animNum, 0);
- FieldObjectSetDirection(mapObject, direction);
- sprite->data[2] = 1;
-}
-
-bool8 sub_8094DAC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, mapObject->placeholder18, sprite->animNum);
- return FALSE;
-}
-
-bool8 sub_8094DC4(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_80979BC(sprite))
- {
- sprite->data[2] = 2;
- return TRUE;
- }
- return FALSE;
-}
-
-void sub_8094DE4(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
-{
- sub_8093FC4(mapObject, sprite, direction, 1, 0);
- StartSpriteAnim(sprite, sub_80929AC(direction));
-}
-
-#define unk_macro_8094E18(name, direction)\
-bool8 name##_2(struct MapObject *, struct Sprite *);\
-bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- sub_8094DE4(mapObject, sprite, direction);\
- return name##_2(mapObject, sprite);\
-}\
-bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- if (sub_80941C8(mapObject, sprite))\
- {\
- sprite->data[2] = 2;\
- mapObject->mapobj_bit_5 = FALSE;\
- return TRUE;\
- }\
- return FALSE;\
-}
-
-unk_macro_8094E18(sub_8094E18, DIR_SOUTH)
-unk_macro_8094E18(sub_8094E60, DIR_NORTH)
-unk_macro_8094E18(sub_8094EB8, DIR_WEST)
-unk_macro_8094E18(sub_8094710, DIR_EAST)
-
-bool8 sub_8094F38(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0, &mapObjectId))
- {
- an_look_any(mapObject, sprite, sub_8092AF8(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[mapObjectId].coords2.x, gMapObjects[mapObjectId].coords2.y));
- }
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_8094F94(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u8 mapObjectId;
-
- if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0, &mapObjectId))
- {
- an_look_any(mapObject, sprite, GetOppositeDirection(sub_8092AF8(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[mapObjectId].coords2.x, gMapObjects[mapObjectId].coords2.y)));
- }
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_8094FF8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_9 = TRUE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_8095008(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_9 = FALSE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-maybe_shadow_1_macro(sub_8095018, maybe_shadow_1, sub_80941B0, DIR_SOUTH, 1, 2)
-maybe_shadow_1_macro(sub_8095070, maybe_shadow_1, sub_80941B0, DIR_NORTH, 1, 2)
-maybe_shadow_1_macro(sub_80950C8, maybe_shadow_1, sub_80941B0, DIR_WEST, 1, 2)
-maybe_shadow_1_macro(sub_8095120, maybe_shadow_1, sub_80941B0, DIR_EAST, 1, 2)
-maybe_shadow_1_macro(sub_8095178, maybe_shadow_1, sub_80941B0, DIR_SOUTH, 0, 0)
-maybe_shadow_1_macro(sub_80951D0, maybe_shadow_1, sub_80941B0, DIR_NORTH, 0, 0)
-maybe_shadow_1_macro(sub_8095228, maybe_shadow_1, sub_80941B0, DIR_WEST, 0, 0)
-maybe_shadow_1_macro(sub_8095280, maybe_shadow_1, sub_80941B0, DIR_EAST, 0, 0)
-maybe_shadow_1_macro(sub_80952D8, maybe_shadow_1, sub_80941E0, DIR_SOUTH, 0, 2)
-maybe_shadow_1_macro(sub_8095330, maybe_shadow_1, sub_80941E0, DIR_NORTH, 0, 2)
-maybe_shadow_1_macro(sub_8095388, maybe_shadow_1, sub_80941E0, DIR_WEST, 0, 2)
-maybe_shadow_1_macro(sub_80953E0, maybe_shadow_1, sub_80941E0, DIR_EAST, 0, 2)
-
-bool8 sub_8095438(struct MapObject *mapObject, struct Sprite *sprite)
-{
- an_look_any(mapObject, sprite, gUnknown_085055CD[mapObject->animPattern]);
- return TRUE;
-}
-
-bool8 sub_8095450(struct MapObject *mapObject, struct Sprite *sprite)
-{
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, 0x14);
- return FALSE;
-}
-
-bool8 sub_8095460(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_25 = FALSE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_8095470(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_25 = TRUE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_8095480(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_12 = TRUE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_8095490(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_12 = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->inanimate;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_80954BC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_13 = TRUE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_80954CC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_13 = FALSE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2);
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- FieldEffectStart(FLDEFF_HEART_ICON);
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_8095548(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (mapObject->animPattern == 0x3F)
- {
- sub_80B4578(mapObject);
- return FALSE;
- }
- if (mapObject->animPattern != 0x39 && mapObject->animPattern != 0x3A)
- {
- sprite->data[2] = 2;
- return TRUE;
- }
- sub_8155D78(mapObject);
- sprite->data[2] = 1;
- return sub_809558C(mapObject, sprite);
-}
-
-bool8 sub_809558C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_8155DA0(mapObject))
- {
- sprite->data[2] = 2;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_80955AC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- obj_anim_image_set_and_seek(sprite, 1, 0);
- sprite->data[2] = 1;
- return FALSE;
-}
-
-bool8 sub_80955C8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_80979BC(sprite))
- {
- SetFieldObjectStepTimer(sprite, 32);
- sprite->data[2] = 2;
- }
- return FALSE;
-}
-
-bool8 sub_80955EC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_13 ^= TRUE;
- if (RunFieldObjectStepTimer(sprite))
- {
- mapObject->mapobj_bit_13 = TRUE;
- sprite->data[2] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_8095628(struct MapObject *mapObject, struct Sprite *sprite)
-{
- obj_anim_image_set_and_seek(sprite, 1, 0);
- sprite->data[2] = 1;
- return FALSE;
-}
-
-bool8 sub_8095644(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_80979BC(sprite))
- {
- SetFieldObjectStepTimer(sprite, 32);
- sprite->data[2] = 2;
- }
- return FALSE;
-}
-
-bool8 sub_8095668(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_13 ^= TRUE;
- if (RunFieldObjectStepTimer(sprite))
- {
- mapObject->mapobj_bit_13 = TRUE;
- sprite->data[2] = 3;
- }
- return FALSE;
-}
-
-bool8 sub_80956A4(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_26 = TRUE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_80956B4(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_26 = FALSE;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_80956C4(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->oam.affineMode = 3;
- InitSpriteAffineAnim(sprite);
- sprite->affineAnimPaused = TRUE;
- sprite->subspriteMode = 0;
- return TRUE;
-}
-
-bool8 sub_80956F4(struct MapObject *mapObject, struct Sprite *sprite)
-{
- FreeOamMatrix(sprite->oam.matrixNum);
- sprite->oam.affineMode = 0;
- CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
- return TRUE;
-}
-
-bool8 sub_8095724(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_27 = TRUE;
- return TRUE;
-}
-
-bool8 sub_8095730(struct MapObject *mapObject, struct Sprite *sprite)
-{
- mapObject->mapobj_bit_27 = FALSE;
- return TRUE;
-}
-
-#define affine_an_walk_any_2_macro(name, fn, fn2, action, anim, ...)\
-bool8 name##_2(struct MapObject *, struct Sprite *);\
-bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- fn(mapObject, sprite, __VA_ARGS__);\
- sprite->affineAnimPaused = FALSE;\
- action(sprite, anim);\
- return name##_2(mapObject, sprite);\
-}\
-bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- if (fn2(mapObject, sprite))\
- {\
- sprite->affineAnimPaused = TRUE;\
- sprite->data[2] = 2;\
- return TRUE;\
- }\
- return FALSE;\
-}\
-
-affine_an_walk_any_2_macro(sub_8095740, sub_8093B60, an_walk_any_2, StartSpriteAffineAnimIfDifferent, 0, DIR_SOUTH)
-affine_an_walk_any_2_macro(sub_80957A0, sub_8093B60, an_walk_any_2, ChangeSpriteAffineAnimIfDifferent, 1, DIR_SOUTH)
-affine_an_walk_any_2_macro(sub_8095800, do_go_anim, npc_obj_ministep_stop_on_arrival, ChangeSpriteAffineAnimIfDifferent, 2, DIR_WEST, 1)
-affine_an_walk_any_2_macro(sub_8095860, do_go_anim, npc_obj_ministep_stop_on_arrival, ChangeSpriteAffineAnimIfDifferent, 3, DIR_EAST, 1)
-
-static void sub_80958C0(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
-{
- FieldObjectSetDirection(mapObject, direction);
- npc_coords_shift_still(mapObject);
- obj_npc_animation_step(mapObject, sprite, sub_80929FC(direction));
- sprite->animPaused = TRUE;
- sprite->data[2] = 1;
-}
-
-bool8 sub_8095900(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_80958C0(mapObject, sprite, DIR_SOUTH);
- return TRUE;
-}
-
-bool8 sub_8095910(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_80958C0(mapObject, sprite, DIR_NORTH);
- return TRUE;
-}
-
-bool8 sub_8095920(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_80958C0(mapObject, sprite, DIR_WEST);
- return TRUE;
-}
-
-bool8 sub_8095930(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_80958C0(mapObject, sprite, DIR_EAST);
- return TRUE;
-}
-
-#define set_dirn_and_anim__an_proceed(name, direction, anims)\
-bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
-{\
- npc_set_direction_and_anim__an_proceed(mapObject, sprite, direction, anims(direction));\
- return FALSE;\
-}
-
-set_dirn_and_anim__an_proceed(sub_8095940, DIR_SOUTH, sub_80929BC)
-set_dirn_and_anim__an_proceed(sub_8095964, DIR_NORTH, sub_80929BC)
-set_dirn_and_anim__an_proceed(sub_8095988, DIR_WEST, sub_80929BC)
-set_dirn_and_anim__an_proceed(sub_80959AC, DIR_EAST, sub_80929BC)
-set_dirn_and_anim__an_proceed(sub_80959D0, DIR_SOUTH, sub_80929DC)
-set_dirn_and_anim__an_proceed(sub_80959F4, DIR_NORTH, sub_80929DC)
-set_dirn_and_anim__an_proceed(sub_8095A18, DIR_WEST, sub_80929DC)
-set_dirn_and_anim__an_proceed(sub_8095A3C, DIR_EAST, sub_80929DC)
-set_dirn_and_anim__an_proceed(sub_8095A60, DIR_SOUTH, sub_80929EC)
-set_dirn_and_anim__an_proceed(sub_8095A84, DIR_NORTH, sub_80929EC)
-set_dirn_and_anim__an_proceed(sub_8095AA8, DIR_WEST, sub_80929EC)
-set_dirn_and_anim__an_proceed(sub_8095ACC, DIR_EAST, sub_80929EC)
-
-void sub_8095AF0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_8097750(sprite);
- sprite->animPaused = FALSE;
-}
-
-bool8 sub_8095B0C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_8097758(sprite))
- {
- npc_coords_shift_still(mapObject);
- mapObject->mapobj_bit_3 = TRUE;
- sprite->animPaused = TRUE;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_8095B44(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_8095AF0(mapObject, sprite);
- sprite->data[2] = 1;
- return sub_8095B64(mapObject, sprite);
-}
-
-bool8 sub_8095B64(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sub_8095B0C(mapObject, sprite))
- {
- sprite->data[2] = 2;
- return TRUE;
- }
- return FALSE;
-}
-
-void sub_8095B84(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed, u8 a4)
-{
- sub_8093FC4(mapObject, sprite, direction, speed, a4);
- StartSpriteAnimIfDifferent(sprite, sub_80929BC(direction));
- DoShadowFieldEffect(mapObject);
-}
-
-maybe_shadow_1_macro(sub_8095BC8, sub_8095B84, sub_80941B0, DIR_SOUTH, 0, 1)
-maybe_shadow_1_macro(sub_8095C20, sub_8095B84, sub_80941B0, DIR_NORTH, 0, 1)
-maybe_shadow_1_macro(sub_8095C78, sub_8095B84, sub_80941B0, DIR_WEST, 0, 1)
-maybe_shadow_1_macro(sub_8095CD0, sub_8095B84, sub_80941B0, DIR_EAST, 0, 1)
-maybe_shadow_1_macro(sub_8095D28, sub_8095B84, sub_80941B0, DIR_SOUTH, 1, 1)
-maybe_shadow_1_macro(sub_8095D80, sub_8095B84, sub_80941B0, DIR_NORTH, 1, 1)
-maybe_shadow_1_macro(sub_8095DD8, sub_8095B84, sub_80941B0, DIR_WEST, 1, 1)
-maybe_shadow_1_macro(sub_8095E30, sub_8095B84, sub_80941B0, DIR_EAST, 1, 1)
-maybe_shadow_1_macro(sub_8095E88, sub_8095B84, sub_80941B0, DIR_SOUTH, 2, 0)
-maybe_shadow_1_macro(sub_8095EE0, sub_8095B84, sub_80941B0, DIR_NORTH, 2, 0)
-maybe_shadow_1_macro(sub_8095F38, sub_8095B84, sub_80941B0, DIR_WEST, 2, 0)
-maybe_shadow_1_macro(sub_8095F90, sub_8095B84, sub_80941B0, DIR_EAST, 2, 0)
-
-special_anim_with_timer_2(sub_8095FE8, SOUTH, sub_80929FC, 8, sub_809459C)
-special_anim_with_timer_2(sub_8096020, NORTH, sub_80929FC, 8, sub_809459C)
-special_anim_with_timer_2(sub_8096058, WEST, sub_80929FC, 8, sub_809459C)
-special_anim_with_timer_2(sub_8096090, EAST, sub_80929FC, 8, sub_809459C)
-
-void sub_80960C8(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed)
-{
- npc_apply_direction(mapObject, sprite, direction, speed);
- StartSpriteAnim(sprite, sub_80929BC(mapObject->mapobj_unk_18));
- SeekSpriteAnim(sprite, 0);
-}
-
-an_walk_any_2_macro(sub_8096100, sub_80960C8, npc_obj_ministep_stop_on_arrival, DIR_SOUTH, 1)
-an_walk_any_2_macro(sub_8096140, sub_80960C8, npc_obj_ministep_stop_on_arrival, DIR_NORTH, 1)
-an_walk_any_2_macro(sub_8096180, sub_80960C8, npc_obj_ministep_stop_on_arrival, DIR_WEST, 1)
-an_walk_any_2_macro(sub_80961C0, sub_80960C8, npc_obj_ministep_stop_on_arrival, DIR_EAST, 1)
-
-void sub_8096200(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed)
-{
- npc_apply_direction(mapObject, sprite, direction, speed);
- npc_apply_anim_looping(mapObject, sprite, sub_80929FC(mapObject->mapobj_unk_18));
-}
-
-an_walk_any_2_macro(sub_8096230, sub_8096200, npc_obj_ministep_stop_on_arrival, DIR_SOUTH, 1)
-an_walk_any_2_macro(sub_8096270, sub_8096200, npc_obj_ministep_stop_on_arrival, DIR_NORTH, 1)
-an_walk_any_2_macro(sub_80962B0, sub_8096200, npc_obj_ministep_stop_on_arrival, DIR_WEST, 1)
-an_walk_any_2_macro(sub_80962F0, sub_8096200, npc_obj_ministep_stop_on_arrival, DIR_EAST, 1)
-
-void sub_8096330(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed)
-{
- npc_apply_direction(mapObject, sprite, direction, speed);
- StartSpriteAnim(sprite, sub_80929DC(mapObject->mapobj_unk_18));
- SeekSpriteAnim(sprite, 0);
-}
-an_walk_any_2_macro(sub_8096368, sub_8096330, npc_obj_ministep_stop_on_arrival, DIR_SOUTH, 1)
-an_walk_any_2_macro(sub_80963A8, sub_8096330, npc_obj_ministep_stop_on_arrival, DIR_NORTH, 1)
-an_walk_any_2_macro(sub_80963E8, sub_8096330, npc_obj_ministep_stop_on_arrival, DIR_WEST, 1)
-an_walk_any_2_macro(sub_8096428, sub_8096330, npc_obj_ministep_stop_on_arrival, DIR_EAST, 1)
-
-bool8 sub_8096468(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_8097FA4(mapObject);
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_809647C(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_8098044(mapObject->mapobj_unk_1B);
- sprite->pos2.y = 0;
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool8 sub_8096494(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (sprite->pos2.y == 0)
- {
- sub_8098044(mapObject->mapobj_unk_1B);
- sprite->data[2] = 1;
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 sub_80964B8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- return TRUE;
-}
-
-bool8 sub_80964BC(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->animPaused = TRUE;
- return TRUE;
-}
-
-void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (mapObject->mapobj_bit_10)
- {
- sprite->animPaused = TRUE;
- }
-}
-
-void sub_80964E8(struct MapObject *mapObject, struct Sprite *sprite)
-{
- if (mapObject->mapobj_bit_11)
- {
- sprite->animPaused = FALSE;
- mapObject->mapobj_bit_10 = FALSE;
- mapObject->mapobj_bit_11 = FALSE;
- }
-}
-
-void sub_8096518(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sub_8096530(mapObject, sprite);
- npc_update_obj_anim_flag(mapObject, sprite);
-}
-
-static void sub_8096530(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u16 x;
- u16 y;
- u16 x2;
- u16 y2;
- const struct MapObjectGraphicsInfo *graphicsInfo;
-
- mapObject->mapobj_bit_14 = FALSE;
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- if (sprite->coordOffsetEnabled)
- {
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
- }
- else
- {
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
- }
- x2 = graphicsInfo->width;
- x2 += x;
- y2 = y;
- y2 += graphicsInfo->height;
- if ((s16)x >= 0x100 || (s16)x2 < -0x10)
- {
- mapObject->mapobj_bit_14 = TRUE;
- }
- if ((s16)y >= 0xB0 || (s16)y2 < -0x10)
- {
- mapObject->mapobj_bit_14 = TRUE;
- }
-}
-
-static void npc_update_obj_anim_flag(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->invisible = FALSE;
- if (mapObject->mapobj_bit_13 || mapObject->mapobj_bit_14)
- {
- sprite->invisible = TRUE;
- }
-}
diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c
deleted file mode 100755
index b8efcfe72..000000000
--- a/src/field_map_obj_helpers.c
+++ /dev/null
@@ -1,705 +0,0 @@
-#include "global.h"
-#include "field_ground_effect.h"
-#include "field_map_obj.h"
-#include "field_effect.h"
-#include "field_map_obj_helpers.h"
-#include "malloc.h"
-#include "task.h"
-#include "util.h"
-
-typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
-
-extern const struct Coords16 gUnknown_0850DB7C[4];
-extern s16 gUnknown_0850E768[];
-extern SpriteStepFunc *const gUnknown_0850E754[];
-extern const s8 gUnknown_0850E772[];
-extern const s8 gUnknown_0850E7BA[];
-extern const s8 *const gUnknown_0850E834[];
-extern s16 gUnknown_0850E840[];
-extern u8 gUnknown_0850E846[];
-extern s16 gUnknown_0850E84A[];
-extern u8 gUnknown_0850E850[];
-
-void sub_8097D68(struct Sprite *sprite);
-void sub_8097FE4(u8);
-
-bool8 FreezeMapObject(struct MapObject *mapObject)
-{
- if (mapObject->mapobj_bit_6 || mapObject->mapobj_bit_8)
- {
- return TRUE;
- }
- else
- {
- mapObject->mapobj_bit_8 = 1;
- mapObject->mapobj_bit_23 = gSprites[mapObject->spriteId].animPaused;
- mapObject->mapobj_bit_24 = gSprites[mapObject->spriteId].affineAnimPaused;
- gSprites[mapObject->spriteId].animPaused = 1;
- gSprites[mapObject->spriteId].affineAnimPaused = 1;
- return FALSE;
- }
-}
-
-void FreezeMapObjects(void)
-{
- u8 i;
- for (i = 0; i < MAP_OBJECTS_COUNT; i++)
- if (gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
- FreezeMapObject(&gMapObjects[i]);
-}
-
-void FreezeMapObjectsExceptOne(u8 a1)
-{
- u8 i;
- for (i = 0; i < MAP_OBJECTS_COUNT; i++)
- if (i != a1 && gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
- FreezeMapObject(&gMapObjects[i]);
-}
-
-void npc_sync_anim_pause_bits(struct MapObject *mapObject)
-{
- if (mapObject->active && mapObject->mapobj_bit_8)
- {
- mapObject->mapobj_bit_8 = 0;
- gSprites[mapObject->spriteId].animPaused = mapObject->mapobj_bit_23;
- gSprites[mapObject->spriteId].affineAnimPaused = mapObject->mapobj_bit_24;
- }
-}
-
-void UnfreezeMapObjects(void)
-{
- u8 i;
- for (i = 0; i < MAP_OBJECTS_COUNT; i++)
- if (gMapObjects[i].active)
- npc_sync_anim_pause_bits(&gMapObjects[i]);
-}
-
-void little_step(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += gUnknown_0850DB7C[dir].x;
- sprite->pos1.y += gUnknown_0850DB7C[dir].y;
-}
-
-void double_little_steps(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 2 * (u16) gUnknown_0850DB7C[dir].x;
- sprite->pos1.y += 2 * (u16) gUnknown_0850DB7C[dir].y;
-}
-
-void triple_little_steps(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 2 * (u16) gUnknown_0850DB7C[dir].x + (u16) gUnknown_0850DB7C[dir].x;
- sprite->pos1.y += 2 * (u16) gUnknown_0850DB7C[dir].y + (u16) gUnknown_0850DB7C[dir].y;
-}
-
-void quad_little_steps(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 4 * (u16) gUnknown_0850DB7C[dir].x;
- sprite->pos1.y += 4 * (u16) gUnknown_0850DB7C[dir].y;
-}
-
-void oct_little_steps(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 8 * (u16) gUnknown_0850DB7C[dir].x;
- sprite->pos1.y += 8 * (u16) gUnknown_0850DB7C[dir].y;
-}
-
-void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3)
-{
- sprite->data[3] = a2;
- sprite->data[4] = a3;
- sprite->data[5] = 0;
-}
-
-bool8 obj_npc_ministep(struct Sprite *sprite)
-{
- if (sprite->data[5] >= gUnknown_0850E768[sprite->data[4]])
- return FALSE;
-
- gUnknown_0850E754[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]);
-
- sprite->data[5]++;
-
- if (sprite->data[5] < gUnknown_0850E768[sprite->data[4]])
- return FALSE;
-
- return TRUE;
-}
-
-void sub_80976DC(struct Sprite *sprite, u8 a2)
-{
- sprite->data[3] = a2;
- sprite->data[4] = 0;
- sprite->data[5] = 0;
-}
-
-bool8 sub_80976EC(struct Sprite *sprite)
-{
- if (!(sprite->data[4] & 1))
- {
- little_step(sprite, sprite->data[3]);
- sprite->data[5]++;
- }
-
- sprite->data[4]++;
-
- if (sprite->data[5] > 15)
- return TRUE;
- else
- return FALSE;
-}
-
-// new helper added here in the middle. Perhaps Game Freak kept these organized in alphebetical order or some other heirarchy?
-
-s16 sub_8097728(s16 a1)
-{
- return gUnknown_0850E7BA[a1];
-}
-
-s16 sub_809773C(s16 a1)
-{
- return gUnknown_0850E772[a1];
-}
-
-void sub_8097750(struct Sprite *sprite)
-{
- sprite->data[6] = 0;
- sprite->data[7] = 0;
-}
-
-bool8 sub_8097758(struct Sprite *sprite)
-{
- bool8 result = FALSE;
-
- switch(sprite->data[7])
- {
- case 0:
- sprite->pos2.x += sub_809773C(sprite->data[6]);
- sprite->pos2.y += sub_8097728(sprite->data[6]);
- break;
- case 1:
- sprite->pos2.x -= sub_809773C(0x47 - sprite->data[6]);
- sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
- break;
- case 2:
- sprite->pos2.x -= sub_809773C(sprite->data[6]);
- sprite->pos2.y += sub_8097728(sprite->data[6]);
- break;
- case 3:
- sprite->pos2.x += sub_809773C(0x47 - sprite->data[6]);
- sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
- break;
- }
- if(++sprite->data[6] == 0x48)
- {
- sprite->data[6] = 0;
- sprite->data[7]++;
- }
- if(sprite->data[7] == 0x4)
- {
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
- result = TRUE;
- }
- return result;
-}
-
-s16 sub_8097820(s16 a1, u8 a2)
-{
- return gUnknown_0850E834[a2][a1];
-}
-
-void sub_809783C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
-{
- sprite->data[3] = a2;
- sprite->data[4] = a3;
- sprite->data[5] = a4;
- sprite->data[6] = 0;
-}
-
-u8 sub_809785C(struct Sprite *sprite)
-{
- s16 v5[3];
- u8 v6[3];
- u8 v2;
-
- memcpy(v5, gUnknown_0850E840, 6); // TODO: get rid of memcpy
- memcpy(v6, gUnknown_0850E846, 3);
- v2 = 0;
-
- if (sprite->data[4])
- little_step(sprite, sprite->data[3]);
-
- sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
-
- sprite->data[6]++;
-
- if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
- v2 = 1;
-
- if (sprite->data[6] >= v5[sprite->data[4]])
- {
- sprite->pos2.y = 0;
- v2 = -1;
- }
-
- return v2;
-}
-
-u8 sub_80978E4(struct Sprite *sprite)
-{
- s16 v5[3];
- u8 v6[3];
- u8 v2;
-
- memcpy(v5, gUnknown_0850E84A, 6);
- memcpy(v6, gUnknown_0850E850, 3);
- v2 = 0;
-
- if (sprite->data[4] && !(sprite->data[6] & 1))
- little_step(sprite, sprite->data[3]);
-
- sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
-
- sprite->data[6]++;
-
- if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
- v2 = 1;
-
- if (sprite->data[6] >= v5[sprite->data[4]])
- {
- sprite->pos2.y = 0;
- v2 = -1;
- }
-
- return v2;
-}
-
-void SetFieldObjectStepTimer(struct Sprite *sprite, u16 timer)
-{
- sprite->data[3] = timer;
-}
-
-
-bool8 RunFieldObjectStepTimer(struct Sprite *sprite)
-{
- sprite->data[3]--;
-
- if (sprite->data[3] == 0)
- return TRUE;
- else
- return FALSE;
-}
-
-void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3)
-{
- sprite->animNum = a2;
- sprite->animPaused = 0 ;
- SeekSpriteAnim(sprite, a3);
-}
-
-bool8 sub_80979BC(struct Sprite *sprite)
-{
- if (sprite->animEnded)
- return TRUE;
- else
- return FALSE;
-}
-
-void sub_80979D4(struct Sprite *sprite, bool8 invisible)
-{
- u16 x, y;
- s16 x2, y2;
-
- sprite->invisible = invisible;
-
- if (sprite->coordOffsetEnabled)
- {
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
- }
- else
- {
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
- }
-
- x2 = x - (sprite->centerToCornerVecX >> 1);
- y2 = y - (sprite->centerToCornerVecY >> 1);
-
- if ((s16)x > 255 || x2 < -16)
- sprite->invisible = 1;
- if ((s16)y > 175 || y2 < -16)
- sprite->invisible = 1;
-}
-
-void sub_8097AC8(struct Sprite *sprite)
-{
- sub_8097D68(sprite);
- SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
- sub_80979D4(sprite, sprite->data[2]);
-}
-
-void sub_8097AF0(void)
-{
- int i;
-
- for(i = 0; i < MAX_SPRITES; i++)
- {
- struct Sprite *sprite = &gSprites[i];
- if(sprite->inUse && sprite->callback == sub_8097AC8)
- DestroySprite(sprite);
- }
-}
-
-int sub_8097B2C(u8 var) // this should return a u8, because all that call this shifts to u8, but it wont match because it doesnt shift u8 at the end.
-{
- int i;
-
- for(i = 0; i < MAX_SPRITES; i++)
- {
- struct Sprite *sprite = &gSprites[i];
- if(sprite->inUse && sprite->callback == sub_8097AC8 && (u8)sprite->data[0] == var)
- return i;
- }
- return MAX_SPRITES;
-}
-
-void sub_8097B78(u8 var1, u8 var2)
-{
- u8 spriteId = sub_8097B2C(var1);
-
- if(spriteId != MAX_SPRITES)
- StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(var2));
-}
-
-void sub_8097BB4(u8 var1, u8 var2)
-{
- int spriteId = sub_8097B2C(var1);
-
- if(spriteId != MAX_SPRITES)
- {
- struct Sprite *sprite = &gSprites[spriteId];
- const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(var2);
- u16 tileNum = sprite->oam.tileNum;
-
- sprite->oam = *gfxInfo->oam;
- sprite->oam.tileNum = tileNum;
- sprite->oam.paletteNum = gfxInfo->paletteSlot;
- sprite->images = gfxInfo->images;
-
- if(gfxInfo->subspriteTables == NULL)
- {
- sprite->subspriteTables = NULL;
- sprite->subspriteTableNum = 0;
- sprite->subspriteMode = 0;
- }
- else
- {
- SetSubspriteTables(sprite, gfxInfo->subspriteTables);
- sprite->subspriteMode = 2;
- }
- StartSpriteAnim(sprite, 0);
- }
-}
-
-void sub_8097C44(u8 var, bool32 var2)
-{
- u8 spriteId = sub_8097B2C(var);
-
- if(spriteId == MAX_SPRITES)
- return;
-
- if(var2)
- gSprites[spriteId].data[2] = 1;
- else
- gSprites[spriteId].data[2] = 0;
-}
-
-bool32 sub_8097C8C(u8 var)
-{
- u8 spriteId = sub_8097B2C(var);
-
- if(spriteId == MAX_SPRITES)
- return FALSE;
-
- return (gSprites[spriteId].data[2] == TRUE);
-}
-
-void sub_8097CC4(u8 var1, u8 var2)
-{
- u8 spriteId = sub_8097B2C(var1);
-
- if(spriteId != MAX_SPRITES)
- {
- gSprites[spriteId].data[3] = var2;
- gSprites[spriteId].data[4] = 0;
- }
-}
-
-void sub_8097CF4(struct Sprite *sprite)
-{
- switch(sprite->data[4])
- {
- case 0:
- sprite->pos2.y = 0;
- sprite->data[4]++;
- case 1:
- sprite->pos2.y -= 8;
- if(sprite->pos2.y == -160)
- {
- sprite->pos2.y = 0;
- sprite->data[2] = 1;
- sprite->data[3] = 0;
- sprite->data[4] = 0;
- }
- }
-}
-
-void sub_8097D30(struct Sprite *sprite)
-{
- switch(sprite->data[4])
- {
- case 0:
- sprite->pos2.y = -160;
- sprite->data[4]++;
- case 1:
- sprite->pos2.y += 8;
- if(sprite->pos2.y == 0)
- {
- sprite->data[3] = 0;
- sprite->data[4] = 0;
- }
- }
-}
-
-void sub_8097D68(struct Sprite *sprite)
-{
- switch(sprite->data[3])
- {
- case 1:
- sub_8097D30(sprite);
- break;
- case 2:
- sub_8097CF4(sprite);
- break;
- case 0:
- break;
- default:
- sprite->data[3] = 0;
- break;
- }
-}
-
-bool32 sub_8097D9C(u8 var)
-{
- u8 spriteId = sub_8097B2C(var);
-
- if(spriteId == MAX_SPRITES)
- return FALSE;
-
- if(gSprites[spriteId].data[3] != FALSE)
- return TRUE;
-
- return FALSE;
-}
-
-u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject)
-{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- return FieldEffectStart(fieldEffectId);
-}
-
-void DoShadowFieldEffect(struct MapObject *mapObject)
-{
- if (!mapObject->mapobj_bit_22)
- {
- mapObject->mapobj_bit_22 = 1;
- oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject);
- }
-}
-
-void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
-{
- const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- gFieldEffectArguments[0] = sprite->pos1.x;
- gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
- gFieldEffectArguments[2] = 151;
- gFieldEffectArguments[3] = 3;
- FieldEffectStart(FLDEFF_RIPPLE);
-}
-
-bool32 sub_8097E50(struct MapObject *mapObject, struct Sprite *sprite)
-{
- u32 one;
- bool32 ableToStore = FALSE;
- if (gUnknown_020375B8 == NULL)
- {
- gUnknown_020375B8 = AllocZeroed(0x14);
- gUnknown_020375B8[0] = mapObject->localId;
- // needed to match
- gUnknown_020375B8[16] = (one = 1);
- ableToStore = one;
- }
- else
- {
- u8 i;
- u8 firstFreeSlot;
- bool32 found;
- for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
- {
- if (firstFreeSlot == 16 && gUnknown_020375B8[i] == 0)
- firstFreeSlot = i;
-
- if (gUnknown_020375B8[i] == mapObject->localId)
- {
- found = TRUE;
- break;
- }
- }
-
- if (!found && firstFreeSlot != 16)
- {
- gUnknown_020375B8[firstFreeSlot] = mapObject->localId;
- gUnknown_020375B8[16]++;
- ableToStore = TRUE;
- }
- }
-
- if (ableToStore == TRUE)
- {
- mapObject->mapobj_bit_12 = TRUE;
- mapObject->mapobj_bit_9 = TRUE;
- }
-
- sprite->data[2] = 1;
- return TRUE;
-}
-
-bool32 sub_8097EF0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- bool32 ableToStore;
- u8 id;
-
- sprite->data[2] = 1;
- if (gUnknown_020375B8 != NULL)
- {
- ableToStore = FALSE;
- id = sub_8097F78(mapObject);
- if (id != 16)
- {
- gUnknown_020375B8[id] = 0;
- gUnknown_020375B8[16]--;
- ableToStore = TRUE;
- }
- if (gUnknown_020375B8[16] == 0)
- FREE_AND_SET_NULL(gUnknown_020375B8);
- if (ableToStore == TRUE)
- {
- mapObject->mapobj_bit_12 = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->inanimate;
- mapObject->mapobj_bit_9 = 0;
- sprite->animPaused = 0;
- }
- }
-
- return TRUE;
-}
-
-u8 sub_8097F78(struct MapObject *mapObject)
-{
- u8 i;
-
- for(i = 0; i < MAP_OBJECTS_COUNT; i++)
- {
- if(gUnknown_020375B8[i] == mapObject->localId)
- return i;
- }
- return MAP_OBJECTS_COUNT;
-}
-
-void sub_8097FA4(struct MapObject *mapObject)
-{
- u8 taskId = CreateTask(sub_8097FE4, 0xFF);
- struct Task *task = &gTasks[taskId];
-
- StoreWordInTwoHalfwords(&task->data[0], (u32)mapObject);
- mapObject->mapobj_unk_1B = taskId;
- task->data[3] = 0xFFFF;
-}
-
-void sub_8097FE4(u8 taskId)
-{
- struct MapObject *mapObject;
- struct Sprite *sprite;
- struct Task *task = &gTasks[taskId];
-
- LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&mapObject); // load the map object pointer.
- sprite = &gSprites[mapObject->spriteId];
-
- if(!(task->data[2] & 0x3))
- sprite->pos2.y += task->data[3];
-
- if(!(task->data[2] & 0xF))
- task->data[3] = -task->data[3];
-
- task->data[2]++;
-}
-
-void sub_8098044(u8 taskId)
-{
- u32 word;
- struct Task *task = &gTasks[taskId];
-
- LoadWordFromTwoHalfwords(&task->data[0], &word); // huh??? why does it load a word that never gets used???
- DestroyTask(taskId);
-}
-
-void sub_8098074(u8 var1, u8 var2)
-{
- u8 i;
-
- for(i = 0; i < MAP_OBJECTS_COUNT; i++)
- {
- if(i != var1 && i != var2 &&
- gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
- FreezeMapObject(&gMapObjects[i]);
- }
-}
-
-bool32 sub_80980C0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->pos2.y = 0;
- sprite->data[2]++;
- return FALSE;
-}
-
-bool32 sub_80980D0(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->pos2.y -= 8;
-
- if(sprite->pos2.y == -160)
- sprite->data[2]++;
- return FALSE;
-}
-
-bool32 sub_80980F4(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->pos2.y = -160;
- sprite->data[2]++;
- return FALSE;
-}
-
-bool32 sub_8098108(struct MapObject *mapObject, struct Sprite *sprite)
-{
- sprite->pos2.y += 8;
-
- if(!sprite->pos2.y)
- sprite->data[2]++;
- return FALSE;
-}
-
-// though this function returns TRUE without doing anything, this header is required due to being in an array of functions which needs it.
-bool32 sub_8098124(struct MapObject *mapObject, struct Sprite *sprite)
-{
- return TRUE;
-}
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index a704beaab..39977808f 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "task.h"
#include "sprite.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "constants/songs.h"
#include "sound.h"
#include "palette.h"
@@ -329,24 +329,24 @@ void Task_HandlePorthole(u8 taskId)
void sub_80FB6EC(void)
{
- u8 spriteId = AddPseudoFieldObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
+ u8 spriteId = AddPseudoEventObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
gSprites[spriteId].coordOffsetEnabled = FALSE;
if (VarGet(0x40B4) == 2)
{
- StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4));
+ StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(4));
}
else
{
- StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(3));
+ StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(3));
}
}
void sub_80FB768(void)
{
sub_80FB6EC();
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = TRUE;
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = TRUE;
pal_fill_black();
CreateTask(Task_HandlePorthole, 80);
ScriptContext2_Enable();
diff --git a/src/fldeff_groundshake.c b/src/fldeff_groundshake.c
index bee4d2c4b..60b078982 100644
--- a/src/fldeff_groundshake.c
+++ b/src/fldeff_groundshake.c
@@ -4,7 +4,7 @@
#include "constants/songs.h"
#include "event_data.h"
#include "field_camera.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "malloc.h"
#include "random.h"
#include "roulette_util.h"
@@ -179,17 +179,17 @@ void sub_81BE7F4(void)
static void sub_81BE808(u8 taskId)
{
- u8 mapObjectIdBuffer;
- struct MapObject *fieldMapObject;
- struct MapObject *playerAvatarMapObject;
+ u8 eventObjectIdBuffer;
+ struct EventObject *fieldEventObject;
+ struct EventObject *playerAvatarEventObject;
- TryGetFieldObjectIdByLocalIdAndMap(0x2D, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjectIdBuffer);
- fieldMapObject = &(gMapObjects[mapObjectIdBuffer]);
- gSprites[fieldMapObject->spriteId].pos2.y += 4;
- playerAvatarMapObject = &(gMapObjects[gPlayerAvatar.mapObjectId]);
+ TryGetEventObjectIdByLocalIdAndMap(0x2D, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &eventObjectIdBuffer);
+ fieldEventObject = &(gEventObjects[eventObjectIdBuffer]);
+ gSprites[fieldEventObject->spriteId].pos2.y += 4;
+ playerAvatarEventObject = &(gEventObjects[gPlayerAvatar.eventObjectId]);
- if((gSprites[fieldMapObject->spriteId].pos1.y + gSprites[fieldMapObject->spriteId].pos2.y) >=
- (gSprites[playerAvatarMapObject->spriteId].pos1.y + gSprites[playerAvatarMapObject->spriteId].pos2.y))
+ if((gSprites[fieldEventObject->spriteId].pos1.y + gSprites[fieldEventObject->spriteId].pos2.y) >=
+ (gSprites[playerAvatarEventObject->spriteId].pos1.y + gSprites[playerAvatarEventObject->spriteId].pos2.y))
{
DestroyTask(taskId);
EnableBothScriptContexts();
diff --git a/src/fossil_specials.c b/src/fossil_specials.c
index 060915fa6..49db0f5b6 100644
--- a/src/fossil_specials.c
+++ b/src/fossil_specials.c
@@ -4,7 +4,7 @@
#include "bg.h"
#include "event_data.h"
#include "field_camera.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "fieldmap.h"
#include "global.fieldmap.h"
#include "gpu_regs.h"
diff --git a/src/item_menu.c b/src/item_menu.c
index c4b4b15b1..0642c771e 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -9,7 +9,7 @@
#include "constants/songs.h"
#include "decompress.h"
#include "event_data.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "field_specials.h"
#include "graphics.h"
@@ -1716,7 +1716,7 @@ bool8 UseRegisteredKeyItemOnField(void)
if (CheckBagHasItem(gSaveBlock1Ptr->registeredItem, 1) == TRUE)
{
ScriptContext2_Enable();
- FreezeMapObjects();
+ FreezeEventObjects();
sub_808B864();
sub_808BCF4();
gSpecialVar_ItemId = gSaveBlock1Ptr->registeredItem;
diff --git a/src/item_use.c b/src/item_use.c
index d036da6d3..96f63ee3e 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -12,12 +12,11 @@
#include "data2.h"
#include "event_data.h"
#include "fieldmap.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "field_screen.h"
#include "field_weather.h"
#include "item.h"
-#include "field_map_obj_helpers.h"
#include "mail.h"
#include "metatile_behavior.h"
#include "overworld.h"
@@ -338,7 +337,7 @@ void sub_80FD504(u8 taskId)
}
else
{
- playerDir = player_get_direction_lower_nybble();
+ playerDir = GetPlayerFacingDirection();
for (i = 0; i < 4; i++)
{
if (playerDir == gUnknown_085920E4[i])
@@ -580,15 +579,15 @@ u8 sub_80FD9B0(s16 itemX, s16 itemY)
void sub_80FDA24(u8 direction)
{
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
- FieldObjectClearAnim(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
- npc_sync_anim_pause_bits(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
+ EventObjectClearHeldMovement(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
+ UnfreezeEventObject(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
PlayerTurnInPlace(direction);
}
void sub_80FDA94(u8 taskId)
{
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
+ if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, sub_80FD5CC);
}
@@ -596,7 +595,7 @@ void sub_80FDADC(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
+ if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
|| data[2] == FALSE)
{
sub_80FDA24(gUnknown_085920E4[data[5]]);
@@ -728,8 +727,8 @@ bool8 sub_80FDE2C(void)
u8 objId;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
z = PlayerGetZCoord();
- objId = GetFieldObjectIdByXYZ(x, y, z);
- if (objId == 16 || gMapObjects[objId].graphicsId != 0xE4)
+ objId = GetEventObjectIdByXYZ(x, y, z);
+ if (objId == 16 || gEventObjects[objId].graphicsId != 0xE4)
return FALSE;
else
return TRUE;
diff --git a/src/load_save.c b/src/load_save.c
index 917c1dfe1..0c6df7662 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -180,32 +180,32 @@ void LoadPlayerParty(void)
gPlayerParty[i] = gSaveBlock1Ptr->playerParty[i];
}
-void SaveMapObjects(void)
+void SaveEventObjects(void)
{
int i;
- for (i = 0; i < MAP_OBJECTS_COUNT; i++)
- gSaveBlock1Ptr->mapObjects[i] = gMapObjects[i];
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
+ gSaveBlock1Ptr->eventObjects[i] = gEventObjects[i];
}
-void LoadMapObjects(void)
+void LoadEventObjects(void)
{
int i;
- for (i = 0; i < MAP_OBJECTS_COUNT; i++)
- gMapObjects[i] = gSaveBlock1Ptr->mapObjects[i];
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
+ gEventObjects[i] = gSaveBlock1Ptr->eventObjects[i];
}
void SaveSerializedGame(void)
{
SavePlayerParty();
- SaveMapObjects();
+ SaveEventObjects();
}
void LoadSerializedGame(void)
{
LoadPlayerParty();
- LoadMapObjects();
+ LoadEventObjects();
}
void LoadPlayerBag(void)
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 2ce8a271d..591e3ad9a 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -2,7 +2,7 @@
#include "main.h"
#include "constants/songs.h"
#include "constants/easy_chat.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "constants/vars.h"
#include "mauville_old_man.h"
#include "event_data.h"
@@ -136,7 +136,7 @@ void SetMauvilleOldMan(void)
SetupGiddy();
break;
}
- ScrSpecial_SetMauvilleOldManMapObjGfx();
+ ScrSpecial_SetMauvilleOldManEventObjGfx();
}
u8 GetCurrentMauvilleOldMan(void)
@@ -406,7 +406,7 @@ void ResetMauvilleOldManFlag(void)
case MAUVILLE_MAN_GIDDY:
break;
}
- ScrSpecial_SetMauvilleOldManMapObjGfx();
+ ScrSpecial_SetMauvilleOldManEventObjGfx();
}
@@ -671,9 +671,9 @@ static void Task_BardSong(u8 taskId)
sub_8197224();
}
-void ScrSpecial_SetMauvilleOldManMapObjGfx(void)
+void ScrSpecial_SetMauvilleOldManEventObjGfx(void)
{
- VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BARD);
+ VarSet(VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_BARD);
}
// Language fixers?
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index b9760f522..ad0062c20 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -252,8 +252,7 @@ static const u8 sTileBitAttributes[] =
TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEF
};
-// only used as default case for checking jump landing in field_ground_effect.
-bool8 ShouldDoJumpLandingDustEffect(u8 var)
+bool8 MetatileBehavior_IsATile(u8 var)
{
return TRUE;
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 0e350aa35..f99d23bc3 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -11,7 +11,7 @@
#include "pokemon.h"
#include "field_specials.h"
#include "field_player_avatar.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "event_data.h"
#include "constants/vars.h"
#include "constants/songs.h"
@@ -25,7 +25,7 @@
#include "menu.h"
#include "text_window.h"
#include "overworld.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
EWRAM_DATA static struct NamingScreenData *gNamingScreenData = NULL;
extern u16 gKeyRepeatStartDelay;
@@ -1142,7 +1142,7 @@ static void NamingScreen_CreatePlayerIcon(void)
u8 spriteId;
rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gNamingScreenData->monSpecies);
- spriteId = AddPseudoFieldObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x25, 0);
+ spriteId = AddPseudoEventObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x25, 0);
gSprites[spriteId].oam.priority = 3;
StartSpriteAnim(&gSprites[spriteId], 4);
}
@@ -1169,7 +1169,7 @@ static void NamingScreen_CreateWandaDadIcon(void)
{
u8 spriteId;
- spriteId = AddPseudoFieldObject(MAP_OBJ_GFX_MAN_1, SpriteCallbackDummy, 0x38, 0x25, 0);
+ spriteId = AddPseudoEventObject(EVENT_OBJ_GFX_MAN_1, SpriteCallbackDummy, 0x38, 0x25, 0);
gSprites[spriteId].oam.priority = 3;
StartSpriteAnim(&gSprites[spriteId], 4);
}
diff --git a/src/overworld.c b/src/overworld.c
index 3d9a1bdc2..1e4116053 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -10,9 +10,7 @@
#include "field_control_avatar.h"
#include "field_effect.h"
#include "field_fadetransition.h"
-#include "field_ground_effect.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
@@ -171,7 +169,7 @@ extern const u8* sub_809C2C8(struct MapPosition *a1, u8, u8);
extern u8 *sub_809D0F4(void*);
extern u8 sub_808BD6C(u8);
extern u8 sub_808BD7C(u8);
-extern void sub_80979D4(struct Sprite*, u8);
+extern void UpdateEventObjectSpriteVisibility(struct Sprite*, u8);
// this file's functions
static void Overworld_ResetStateAfterWhiteOut(void);
@@ -206,7 +204,7 @@ static void sub_8086C90(void);
static void sub_8086FA0(u16);
static void sub_8086F38(u16*, s32);
static u8 npc_something3(u8 a1, u8 a2);
-static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y);
+static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y);
static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion);
static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y);
static u8 sub_80878A0(u8 linkPlayerId);
@@ -214,15 +212,15 @@ static u8 sub_80878C0(u8 linkPlayerId);
static s32 sub_80878E4(u8 linkPlayerId);
static u8 GetLinkPlayerIdAt(s16 x, s16 y);
static void sub_808796C(u8 linkPlayerId, u8 a2);
-static void ZeroMapObject(struct MapObject *mapObj);
-static void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
-static void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y);
+static void ZeroEventObject(struct EventObject *eventObj);
+static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
+static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y);
static void sub_80877DC(u8 linkPlayerId, u8 a2);
static void sub_808780C(u8 linkPlayerId);
static u8 sub_8087858(u8 linkPlayerId);
static void sub_8087584(void);
static u32 sub_8087690(void);
-static void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj);
+static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj);
static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
static u16 sub_8087480(const u8 *script);
static void sub_8087510(void);
@@ -269,7 +267,7 @@ EWRAM_DATA static u16 sLastMapSectionId = 0;
EWRAM_DATA static struct UnkPlayerStruct sUnknown_02032300 = {0};
EWRAM_DATA static u16 sAmbientCrySpecies = 0;
EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
-EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
+EWRAM_DATA struct LinkPlayerEventObject gLinkPlayerEventObjects[4] = {0};
// const rom data
static const struct WarpData sDummyWarpData =
@@ -354,22 +352,22 @@ static const struct ScanlineEffectParams gUnknown_08339DBC =
0,
};
-static u8 sub_80879D8(struct LinkPlayerMapObject *, struct MapObject *, u8);
-static u8 sub_80879F8(struct LinkPlayerMapObject *, struct MapObject *, u8);
-static u8 sub_80879FC(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_80879D8(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 sub_80879F8(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 sub_80879FC(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
{
sub_80879D8,
sub_80879F8,
sub_80879FC,
};
-static u8 sub_8087A1C(struct LinkPlayerMapObject *, struct MapObject *, u8);
-static u8 sub_8087A20(struct LinkPlayerMapObject *, struct MapObject *, u8);
-static u8 sub_8087A88(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8087A1C(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 sub_8087A20(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 sub_8087A88(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
{
sub_8087A1C,
sub_8087A20,
@@ -384,10 +382,10 @@ static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapO
sub_8087A88,
};
-static void sub_8087AA0(struct LinkPlayerMapObject *, struct MapObject *);
-static void sub_8087AA8(struct LinkPlayerMapObject *, struct MapObject *);
+static void sub_8087AA0(struct LinkPlayerEventObject *, struct EventObject *);
+static void sub_8087AA8(struct LinkPlayerEventObject *, struct EventObject *);
-static void (*const gUnknown_08339E00[])(struct LinkPlayerMapObject *, struct MapObject *) =
+static void (*const gUnknown_08339E00[])(struct LinkPlayerEventObject *, struct EventObject *) =
{
sub_8087AA0,
sub_8087AA8,
@@ -503,55 +501,55 @@ void ApplyNewEncryptionKeyToGameStats(u32 newKey)
ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->gameStats[i], newKey);
}
-void LoadMapObjTemplatesFromHeader(void)
+void LoadEventObjTemplatesFromHeader(void)
{
// Clear map object templates
- CpuFill32(0, gSaveBlock1Ptr->mapObjectTemplates, sizeof(gSaveBlock1Ptr->mapObjectTemplates));
+ CpuFill32(0, gSaveBlock1Ptr->eventObjectTemplates, sizeof(gSaveBlock1Ptr->eventObjectTemplates));
// Copy map header events to save block
- CpuCopy32(gMapHeader.events->mapObjects,
- gSaveBlock1Ptr->mapObjectTemplates,
- gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate));
+ CpuCopy32(gMapHeader.events->eventObjects,
+ gSaveBlock1Ptr->eventObjectTemplates,
+ gMapHeader.events->eventObjectCount * sizeof(struct EventObjectTemplate));
}
-void LoadSaveblockMapObjScripts(void)
+void LoadSaveblockEventObjScripts(void)
{
- struct MapObjectTemplate *mapHeaderObjTemplates = gMapHeader.events->mapObjects;
- struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
+ struct EventObjectTemplate *mapHeaderObjTemplates = gMapHeader.events->eventObjects;
+ struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
s32 i;
for (i = 0; i < 64; i++)
savObjTemplates[i].script = mapHeaderObjTemplates[i].script;
}
-void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y)
+void Overworld_SetEventObjTemplateCoords(u8 localId, s16 x, s16 y)
{
s32 i;
- struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
+ struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
for (i = 0; i < 64; i++)
{
- struct MapObjectTemplate *mapObjectTemplate = &savObjTemplates[i];
- if (mapObjectTemplate->localId == localId)
+ struct EventObjectTemplate *eventObjectTemplate = &savObjTemplates[i];
+ if (eventObjectTemplate->localId == localId)
{
- mapObjectTemplate->x = x;
- mapObjectTemplate->y = y;
+ eventObjectTemplate->x = x;
+ eventObjectTemplate->y = y;
return;
}
}
}
-void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType)
+void Overworld_SetEventObjTemplateMovementType(u8 localId, u8 movementType)
{
s32 i;
- struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
+ struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
for (i = 0; i < 64; i++)
{
- struct MapObjectTemplate *mapObjectTemplate = &savObjTemplates[i];
- if (mapObjectTemplate->localId == localId)
+ struct EventObjectTemplate *eventObjectTemplate = &savObjTemplates[i];
+ if (eventObjectTemplate->localId == localId)
{
- mapObjectTemplate->movementType = movementType;
+ eventObjectTemplate->movementType = movementType;
return;
}
}
@@ -826,7 +824,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
ApplyCurrentWarp();
set_current_map_header_from_sav1_save_old_name();
- LoadMapObjTemplatesFromHeader();
+ LoadEventObjTemplatesFromHeader();
TrySetMapSaveWarpStatus();
ClearTempFieldEventData();
ResetCyclingRoadChallengeData();
@@ -869,7 +867,7 @@ static void mli0_load_map(u32 a1)
else if (InTrainerHill())
sub_81D5DF8();
else
- LoadMapObjTemplatesFromHeader();
+ LoadEventObjTemplatesFromHeader();
}
v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType);
@@ -914,7 +912,7 @@ void player_avatar_init_params_reset(void)
void walkrun_find_lowest_active_bit_in_bitfield(void)
{
- sUnknown_02032300.player_field_1 = player_get_direction_lower_nybble();
+ sUnknown_02032300.player_field_1 = GetPlayerFacingDirection();
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
sUnknown_02032300.player_field_0 = 2;
@@ -1736,9 +1734,9 @@ void CB2_ContinueSavedGame(void)
else if (trainerHillMapId != 0 && trainerHillMapId != 6)
sub_81D5F48();
else
- LoadSaveblockMapObjScripts();
+ LoadSaveblockEventObjScripts();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
DoTimeBasedEvents();
sub_8084788();
if (gMapHeader.mapDataId == 0x169)
@@ -2172,7 +2170,7 @@ static void sub_80869DC(void)
gUnknown_03005DEC = 0;
gUnknown_03005DE8 = 0;
sub_808D438();
- SpawnFieldObjectsInView(0, 0);
+ TrySpawnEventObjects(0, 0);
mapheader_run_first_tag4_script_list_match();
}
@@ -2189,7 +2187,7 @@ static void mli4_mapscripts_and_other(void)
InitPlayerAvatar(x, y, player->player_field_1, gSaveBlock2Ptr->playerGender);
SetPlayerAvatarTransitionFlags(player->player_field_0);
player_avatar_init_params_reset();
- SpawnFieldObjectsInView(0, 0);
+ TrySpawnEventObjects(0, 0);
mapheader_run_first_tag4_script_list_match();
}
@@ -2202,7 +2200,7 @@ static void sub_8086A68(void)
static void sub_8086A80(void)
{
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 = 1;
+ gEventObjects[gPlayerAvatar.eventObjectId].trackedByCamera = 1;
InitCameraUpdateCallback(gPlayerAvatar.spriteId);
}
@@ -2233,7 +2231,7 @@ static void sub_8086B14(void)
for (i = 0; i < gFieldLinkPlayerCount; i++)
{
- SpawnLinkPlayerMapObject(i, i + x, y, gLinkPlayers[i].gender);
+ SpawnLinkPlayerEventObject(i, i + x, y, gLinkPlayers[i].gender);
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
}
@@ -2678,7 +2676,7 @@ static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3)
a3->a = linkPlayerId;
a3->b = (linkPlayerId == a2) ? 1 : 0;
- a3->c = gLinkPlayerMapObjects[linkPlayerId].mode;
+ a3->c = gLinkPlayerEventObjects[linkPlayerId].mode;
a3->d = sub_80878A0(linkPlayerId);
sub_8087878(linkPlayerId, &x, &y);
a3->sub.x = x;
@@ -2891,109 +2889,109 @@ static u32 sub_8087690(void)
return gLink.sendQueue.count;
}
-static void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj)
+static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj)
{
- memset(linkPlayerMapObj, 0, sizeof(struct LinkPlayerMapObject));
+ memset(linkPlayerEventObj, 0, sizeof(struct LinkPlayerEventObject));
}
-void ZeroAllLinkPlayerMapObjects(void)
+void ClearLinkPlayerEventObjects(void)
{
- memset(gLinkPlayerMapObjects, 0, sizeof(gLinkPlayerMapObjects));
+ memset(gLinkPlayerEventObjects, 0, sizeof(gLinkPlayerEventObjects));
}
-static void ZeroMapObject(struct MapObject *mapObj)
+static void ZeroEventObject(struct EventObject *eventObj)
{
- memset(mapObj, 0, sizeof(struct MapObject));
+ memset(eventObj, 0, sizeof(struct EventObject));
}
-static void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
+static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
{
- u8 mapObjId = sub_808D4F4();
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
- struct MapObject *mapObj = &gMapObjects[mapObjId];
+ u8 eventObjId = GetFirstInactiveEventObjectId();
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
- ZeroLinkPlayerMapObject(linkPlayerMapObj);
- ZeroMapObject(mapObj);
+ ZeroLinkPlayerEventObject(linkPlayerEventObj);
+ ZeroEventObject(eventObj);
- linkPlayerMapObj->active = 1;
- linkPlayerMapObj->linkPlayerId = linkPlayerId;
- linkPlayerMapObj->mapObjId = mapObjId;
- linkPlayerMapObj->mode = 0;
+ linkPlayerEventObj->active = 1;
+ linkPlayerEventObj->linkPlayerId = linkPlayerId;
+ linkPlayerEventObj->eventObjId = eventObjId;
+ linkPlayerEventObj->mode = 0;
- mapObj->active = 1;
- mapObj->mapobj_bit_1 = a4;
- mapObj->range.as_byte = 2;
- mapObj->spriteId = 64;
+ eventObj->active = 1;
+ eventObj->singleMovementActive = a4;
+ eventObj->range.as_byte = 2;
+ eventObj->spriteId = 64;
- InitLinkPlayerMapObjectPos(mapObj, x, y);
+ InitLinkPlayerEventObjectPos(eventObj, x, y);
}
-static void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y)
+static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y)
{
- mapObj->coords2.x = x;
- mapObj->coords2.y = y;
- mapObj->coords3.x = x;
- mapObj->coords3.y = y;
- sub_8093038(x, y, &mapObj->coords1.x, &mapObj->coords1.y);
- mapObj->coords1.x += 8;
- FieldObjectUpdateZCoord(mapObj);
+ eventObj->currentCoords.x = x;
+ eventObj->currentCoords.y = y;
+ eventObj->previousCoords.x = x;
+ eventObj->previousCoords.y = y;
+ sub_8093038(x, y, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
+ eventObj->initialCoords.x += 8;
+ EventObjectUpdateZCoord(eventObj);
}
static void sub_80877DC(u8 linkPlayerId, u8 a2)
{
- if (gLinkPlayerMapObjects[linkPlayerId].active)
+ if (gLinkPlayerEventObjects[linkPlayerId].active)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- mapObj->range.as_byte = a2;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ eventObj->range.as_byte = a2;
}
}
static void sub_808780C(u8 linkPlayerId)
{
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
- u8 mapObjId = linkPlayerMapObj->mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- if (mapObj->spriteId != 64 )
- DestroySprite(&gSprites[mapObj->spriteId]);
- linkPlayerMapObj->active = 0;
- mapObj->active = 0;
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
+ u8 eventObjId = linkPlayerEventObj->eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ if (eventObj->spriteId != 64 )
+ DestroySprite(&gSprites[eventObj->spriteId]);
+ linkPlayerEventObj->active = 0;
+ eventObj->active = 0;
}
static u8 sub_8087858(u8 linkPlayerId)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- return mapObj->spriteId;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ return eventObj->spriteId;
}
static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- *x = mapObj->coords2.x;
- *y = mapObj->coords2.y;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ *x = eventObj->currentCoords.x;
+ *y = eventObj->currentCoords.y;
}
static u8 sub_80878A0(u8 linkPlayerId)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- return mapObj->range.as_byte;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ return eventObj->range.as_byte;
}
static u8 sub_80878C0(u8 linkPlayerId)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- return mapObj->mapobj_unk_0B_0;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ return eventObj->currentElevation;
}
static s32 sub_80878E4(u8 linkPlayerId)
{
- u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
- return 16 - (s8)mapObj->mapobj_unk_21;
+ u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
+ return 16 - (s8)eventObj->directionSequenceIndex;
}
static u8 GetLinkPlayerIdAt(s16 x, s16 y)
@@ -3001,11 +2999,11 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
u8 i;
for (i = 0; i < 4; i++)
{
- if (gLinkPlayerMapObjects[i].active
- && (gLinkPlayerMapObjects[i].mode == 0 || gLinkPlayerMapObjects[i].mode == 2))
+ if (gLinkPlayerEventObjects[i].active
+ && (gLinkPlayerEventObjects[i].mode == 0 || gLinkPlayerEventObjects[i].mode == 2))
{
- struct MapObject *mapObj = &gMapObjects[gLinkPlayerMapObjects[i].mapObjId];
- if (mapObj->coords2.x == x && mapObj->coords2.y == y)
+ struct EventObject *eventObj = &gEventObjects[gLinkPlayerEventObjects[i].eventObjId];
+ if (eventObj->currentCoords.x == x && eventObj->currentCoords.y == y)
return i;
}
}
@@ -3014,79 +3012,79 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
static void sub_808796C(u8 linkPlayerId, u8 a2)
{
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
- u8 mapObjId = linkPlayerMapObj->mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
+ u8 eventObjId = linkPlayerEventObj->eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
- if (linkPlayerMapObj->active)
+ if (linkPlayerEventObj->active)
{
if (a2 > 10)
- mapObj->mapobj_bit_2 = 1;
+ eventObj->triggerGroundEffectsOnMove = 1;
else
- gUnknown_08339E00[gUnknown_08339DC8[linkPlayerMapObj->mode](linkPlayerMapObj, mapObj, a2)](linkPlayerMapObj, mapObj);
+ gUnknown_08339E00[gUnknown_08339DC8[linkPlayerEventObj->mode](linkPlayerEventObj, eventObj, a2)](linkPlayerEventObj, eventObj);
}
}
-static u8 sub_80879D8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_80879D8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_08339DD4[a3](linkPlayerMapObj, mapObj, a3);
+ return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_80879F8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_80879F8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
return 1;
}
-static u8 sub_80879FC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_80879FC(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_08339DD4[a3](linkPlayerMapObj, mapObj, a3);
+ return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_8087A1C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8087A1C(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
return 0;
}
-static u8 sub_8087A20(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8087A20(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
s16 x, y;
- mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
- FieldObjectMoveDestCoords(mapObj, mapObj->range.as_byte, &x, &y);
+ eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
+ EventObjectMoveDestCoords(eventObj, eventObj->range.as_byte, &x, &y);
- if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->range.as_byte, x, y))
+ if (LinkPlayerDetectCollision(linkPlayerEventObj->eventObjId, eventObj->range.as_byte, x, y))
{
return 0;
}
else
{
- mapObj->mapobj_unk_21 = 16;
- npc_coords_shift(mapObj, x, y);
- FieldObjectUpdateZCoord(mapObj);
+ eventObj->directionSequenceIndex = 16;
+ ShiftEventObjectCoords(eventObj, x, y);
+ EventObjectUpdateZCoord(eventObj);
return 1;
}
}
-static u8 sub_8087A88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8087A88(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
+ eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
return 0;
}
-static void sub_8087AA0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+static void sub_8087AA0(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
- linkPlayerMapObj->mode = 0;
+ linkPlayerEventObj->mode = 0;
}
-static void sub_8087AA8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+static void sub_8087AA8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
- mapObj->mapobj_unk_21--;
- linkPlayerMapObj->mode = 1;
- MoveCoords(mapObj->range.as_byte, &mapObj->coords1.x, &mapObj->coords1.y);
- if (!mapObj->mapobj_unk_21)
+ eventObj->directionSequenceIndex--;
+ linkPlayerEventObj->mode = 1;
+ MoveCoords(eventObj->range.as_byte, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
+ if (!eventObj->directionSequenceIndex)
{
- npc_coords_shift_still(mapObj);
- linkPlayerMapObj->mode = 2;
+ ShiftStillEventObjectCoords(eventObj);
+ linkPlayerEventObj->mode = 2;
}
}
@@ -3110,15 +3108,15 @@ static u8 npc_something3(u8 a1, u8 a2)
return a2;
}
-static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y)
+static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y)
{
u8 i;
for (i = 0; i < 16; i++)
{
- if (i != selfMapObjId)
+ if (i != selfEventObjId)
{
- if ((gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y)
- || (gMapObjects[i].coords3.x == x && gMapObjects[i].coords3.y == y))
+ if ((gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y)
+ || (gEventObjects[i].previousCoords.x == x && gEventObjects[i].previousCoords.y == y))
{
return 1;
}
@@ -3129,51 +3127,51 @@ static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y)
static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
{
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
- u8 mapObjId = linkPlayerMapObj->mapObjId;
- struct MapObject *mapObj = &gMapObjects[mapObjId];
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
+ u8 eventObjId = linkPlayerEventObj->eventObjId;
+ struct EventObject *eventObj = &gEventObjects[eventObjId];
struct Sprite *sprite;
- if (linkPlayerMapObj->active)
+ if (linkPlayerEventObj->active)
{
switch (gameVersion)
{
case VERSION_FIRE_RED:
case VERSION_LEAF_GREEN:
- mapObj->spriteId = AddPseudoFieldObject(sub_808BD6C(mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
+ eventObj->spriteId = AddPseudoEventObject(sub_808BD6C(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_RUBY:
case VERSION_SAPPHIRE:
- mapObj->spriteId = AddPseudoFieldObject(sub_808BD7C(mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
+ eventObj->spriteId = AddPseudoEventObject(sub_808BD7C(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_EMERALD:
- mapObj->spriteId = AddPseudoFieldObject(GetRivalAvatarGraphicsIdByStateIdAndGender(0, mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
+ eventObj->spriteId = AddPseudoEventObject(GetRivalAvatarGraphicsIdByStateIdAndGender(0, eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
}
- sprite = &gSprites[mapObj->spriteId];
+ sprite = &gSprites[eventObj->spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = linkPlayerId;
- mapObj->mapobj_bit_2 = 0;
+ eventObj->triggerGroundEffectsOnMove = 0;
}
}
static void SpriteCB_LinkPlayer(struct Sprite *sprite)
{
- struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[sprite->data[0]];
- struct MapObject *mapObj = &gMapObjects[linkPlayerMapObj->mapObjId];
- sprite->pos1.x = mapObj->coords1.x;
- sprite->pos1.y = mapObj->coords1.y;
- SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
- sprite->oam.priority = ZCoordToPriority(mapObj->elevation);
+ struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[sprite->data[0]];
+ struct EventObject *eventObj = &gEventObjects[linkPlayerEventObj->eventObjId];
+ sprite->pos1.x = eventObj->initialCoords.x;
+ sprite->pos1.y = eventObj->initialCoords.y;
+ SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
+ sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation);
- if (!linkPlayerMapObj->mode)
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->range.as_byte));
+ if (!linkPlayerEventObj->mode)
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte));
else
- StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->range.as_byte));
+ StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte));
- sub_80979D4(sprite, 0);
- if (mapObj->mapobj_bit_2)
+ UpdateEventObjectSpriteVisibility(sprite, 0);
+ if (eventObj->triggerGroundEffectsOnMove)
{
sprite->invisible = ((sprite->data[7] & 4) >> 2);
sprite->data[7]++;
diff --git a/src/player_pc.c b/src/player_pc.c
index c10c63dda..48be0633f 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -4,7 +4,7 @@
#include "decoration.h"
#include "event_scripts.h"
#include "field_fadetransition.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_screen.h"
#include "field_weather.h"
#include "international_string_util.h"
diff --git a/src/rom6.c b/src/rom6.c
index 4a5c506b6..cdc1064dd 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -1,12 +1,12 @@
#include "global.h"
-#include "constants/map_objects.h"
+#include "constants/event_objects.h"
#include "constants/songs.h"
#include "rom6.h"
#include "braille_puzzles.h"
#include "event_data.h"
#include "event_scripts.h"
#include "field_effect.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "item_use.h"
#include "party_menu.h"
@@ -32,18 +32,18 @@ extern struct MapPosition gUnknown_0203AB40;
// text
bool8 npc_before_player_of_type(u8 a)
{
- u8 mapObjId;
+ u8 eventObjId;
GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203AB40.x, &gUnknown_0203AB40.y);
gUnknown_0203AB40.height = PlayerGetZCoord();
- mapObjId = GetFieldObjectIdByXYZ(gUnknown_0203AB40.x, gUnknown_0203AB40.y, gUnknown_0203AB40.height);
- if (gMapObjects[mapObjId].graphicsId != a)
+ eventObjId = GetEventObjectIdByXYZ(gUnknown_0203AB40.x, gUnknown_0203AB40.y, gUnknown_0203AB40.height);
+ if (gEventObjects[eventObjId].graphicsId != a)
{
return FALSE;
}
else
{
- gSpecialVar_LastTalked = gMapObjects[mapObjId].localId;
+ gSpecialVar_LastTalked = gEventObjects[eventObjId].localId;
return TRUE;
}
}
@@ -56,13 +56,13 @@ u8 oei_task_add(void)
static void task08_080C9820(u8 taskId)
{
- u8 mapObjId;
+ u8 eventObjId;
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
- mapObjId = gPlayerAvatar.mapObjectId;
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[mapObjId])
- || FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
+ eventObjId = gPlayerAvatar.eventObjectId;
+ if (!EventObjectIsMovementOverridden(&gEventObjects[eventObjId])
+ || EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]))
{
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
{
@@ -72,7 +72,7 @@ static void task08_080C9820(u8 taskId)
else
{
sub_808C114();
- FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 0x39);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], 0x39);
gTasks[taskId].func = sub_813552C;
}
}
@@ -80,7 +80,7 @@ static void task08_080C9820(u8 taskId)
static void sub_813552C(u8 taskId)
{
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE)
+ if (EventObjectCheckHeldMovementStatus(&gEventObjects[gPlayerAvatar.eventObjectId]) == TRUE)
{
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
gTasks[taskId].func = sub_8135578;
@@ -91,7 +91,7 @@ static void sub_8135578(u8 taskId)
{
if (!FieldEffectActiveListContains(6))
{
- gFieldEffectArguments[1] = player_get_direction_lower_nybble();
+ gFieldEffectArguments[1] = GetPlayerFacingDirection();
if (gFieldEffectArguments[1] == 1)
gFieldEffectArguments[2] = 0;
if (gFieldEffectArguments[1] == 2)
@@ -100,7 +100,7 @@ static void sub_8135578(u8 taskId)
gFieldEffectArguments[2] = 2;
if (gFieldEffectArguments[1] == 4)
gFieldEffectArguments[2] = 3;
- FieldObjectSetGraphicsId(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
+ EventObjectSetGraphicsId(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]);
FieldEffectActiveListRemove(6);
gTasks[taskId].func = sub_813561C;
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index b07814f58..1f5ef165f 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "bike.h"
#include "event_data.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "constants/maps.h"
#include "constants/songs.h"
#include "sound.h"
diff --git a/src/scrcmd.c b/src/scrcmd.c
index a29e64979..4e3fceb10 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -13,8 +13,7 @@
#include "field_door.h"
#include "field_effect.h"
#include "field_fadetransition.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
@@ -25,7 +24,7 @@
#include "item.h"
#include "lilycove_lady.h"
#include "main.h"
-#include "map_obj_lock.h"
+#include "event_obj_lock.h"
#include "menu.h"
#include "money.h"
#include "mystery_event_script.h"
@@ -1052,7 +1051,7 @@ bool8 ScrCmd_removeobject(struct ScriptContext *ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
- RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ RemoveEventObjectByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
@@ -1062,7 +1061,7 @@ bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx)
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
- RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup);
+ RemoveEventObjectByLocalIdAndMap(objectId, mapNum, mapGroup);
return FALSE;
}
@@ -1100,7 +1099,7 @@ bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
- Overworld_SetMapObjTemplateCoords(localId, x, y);
+ Overworld_SetEventObjTemplateCoords(localId, x, y);
return FALSE;
}
@@ -1155,10 +1154,10 @@ bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx)
bool8 ScrCmd_faceplayer(struct ScriptContext *ctx)
{
- if (gMapObjects[gSelectedMapObject].active)
+ if (gEventObjects[gSelectedEventObject].active)
{
- FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject],
- player_get_direction_lower_nybble());
+ EventObjectFaceOppositeDirection(&gEventObjects[gSelectedEventObject],
+ GetPlayerFacingDirection());
}
return FALSE;
}
@@ -1168,7 +1167,7 @@ bool8 ScrCmd_turnobject(struct ScriptContext *ctx)
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 direction = ScriptReadByte(ctx);
- FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, direction);
+ EventObjectTurnByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, direction);
return FALSE;
}
@@ -1177,7 +1176,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx)
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 movementType = ScriptReadByte(ctx);
- Overworld_SetMapObjTemplateMovementType(localId, movementType);
+ Overworld_SetEventObjTemplateMovementType(localId, movementType);
return FALSE;
}
@@ -1211,7 +1210,7 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx)
}
else
{
- ScriptFreezeMapObjects();
+ ScriptFreezeEventObjects();
SetupNativeScript(ctx, sub_80983C4);
return TRUE;
}
@@ -1225,14 +1224,14 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx)
}
else
{
- if (gMapObjects[gSelectedMapObject].active)
+ if (gEventObjects[gSelectedEventObject].active)
{
- LockSelectedMapObject();
+ LockSelectedEventObject();
SetupNativeScript(ctx, sub_809847C);
}
else
{
- ScriptFreezeMapObjects();
+ ScriptFreezeEventObjects();
SetupNativeScript(ctx, sub_80983C4);
}
return TRUE;
@@ -1244,10 +1243,10 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
u8 objectId;
HideFieldMessageBox();
- objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
sub_80D338C();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
return FALSE;
}
@@ -1256,12 +1255,12 @@ bool8 ScrCmd_release(struct ScriptContext *ctx)
u8 objectId;
HideFieldMessageBox();
- if (gMapObjects[gSelectedMapObject].active)
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]);
- objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
- FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ if (gEventObjects[gSelectedEventObject].active)
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
+ objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
sub_80D338C();
- UnfreezeMapObjects();
+ UnfreezeEventObjects();
return FALSE;
}
@@ -2179,7 +2178,7 @@ bool8 ScrCmd_mossdeepgym4(struct ScriptContext *ctx)
bool8 ScrCmd_cmdD8(struct ScriptContext *ctx)
{
- gSelectedMapObject = GetCurrentApproachingTrainerMapObjectId();
+ gSelectedEventObject = GetCurrentApproachingTrainerEventObjectId();
return FALSE;
}
@@ -2191,7 +2190,7 @@ bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
}
else
{
- if (gMapObjects[gSelectedMapObject].active)
+ if (gEventObjects[gSelectedEventObject].active)
{
sub_8098630();
SetupNativeScript(ctx, sub_8098734);
@@ -2239,7 +2238,7 @@ bool8 ScrCmd_warpD1(struct ScriptContext *ctx)
u16 y = VarGet(ScriptReadHalfword(ctx));
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
- sub_808D074(player_get_direction_lower_nybble());
+ sub_808D074(GetPlayerFacingDirection());
sub_80B0244();
player_avatar_init_params_reset();
return TRUE;
diff --git a/src/script_movement.c b/src/script_movement.c
index bbeb0eedc..9fee9e060 100644
--- a/src/script_movement.c
+++ b/src/script_movement.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "script_movement.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "task.h"
#include "util.h"
@@ -22,25 +21,25 @@ static EWRAM_DATA const u8 *gUnknown_02039D90[16] = {0};
// text
bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript)
{
- u8 mapObjId;
+ u8 eventObjId;
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjId))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjId))
return TRUE;
if (!FuncIsActiveTask(sub_80D3660))
sub_80D33AC(50);
- return sub_80D3408(sub_80D33F4(), mapObjId, movementScript);
+ return sub_80D3408(sub_80D33F4(), eventObjId, movementScript);
}
bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank)
{
- u8 mapObjId;
+ u8 eventObjId;
u8 r4;
u8 r1;
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &mapObjId))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &eventObjId))
return TRUE;
r4 = sub_80D33F4();
- r1 = sub_80D3474(r4, mapObjId);
+ r1 = sub_80D3474(r4, eventObjId);
if (r1 == 16)
return TRUE;
return sub_80D3584(r4, r1);
@@ -74,11 +73,11 @@ static u8 sub_80D33F4(void)
return FindTaskIdByFunc(sub_80D3660);
}
-static bool8 sub_80D3408(u8 taskId, u8 mapObjId, const u8 *movementScript)
+static bool8 sub_80D3408(u8 taskId, u8 eventObjId, const u8 *movementScript)
{
u8 r4;
- r4 = sub_80D3474(taskId, mapObjId);
+ r4 = sub_80D3474(taskId, eventObjId);
if (r4 != 16)
{
if (sub_80D3584(taskId, r4) == 0)
@@ -87,7 +86,7 @@ static bool8 sub_80D3408(u8 taskId, u8 mapObjId, const u8 *movementScript)
}
else
{
- sub_80D35DC(taskId, r4, mapObjId, movementScript);
+ sub_80D35DC(taskId, r4, eventObjId, movementScript);
return FALSE;
}
}
@@ -98,7 +97,7 @@ static bool8 sub_80D3408(u8 taskId, u8 mapObjId, const u8 *movementScript)
}
else
{
- sub_80D35DC(taskId, r4, mapObjId, movementScript);
+ sub_80D35DC(taskId, r4, eventObjId, movementScript);
return FALSE;
}
}
@@ -174,23 +173,23 @@ static const u8 *sub_80D35CC(u8 a)
return gUnknown_02039D90[a];
}
-static void sub_80D35DC(u8 taskId, u8 b, u8 mapObjId, const u8 *movementScript)
+static void sub_80D35DC(u8 taskId, u8 b, u8 eventObjId, const u8 *movementScript)
{
sub_80D352C(taskId, b);
npc_obj_offscreen_culling_and_flag_update(b, movementScript);
- sub_80D34E4(taskId, b, mapObjId);
+ sub_80D34E4(taskId, b, eventObjId);
}
static void UnfreezeObjects(u8 taskId)
{
- u8 *pMapObjId;
+ u8 *pEventObjId;
u8 i;
- pMapObjId = (u8 *)&gTasks[taskId].data[1];
- for (i = 0; i < 16; i++, pMapObjId++)
+ pEventObjId = (u8 *)&gTasks[taskId].data[1];
+ for (i = 0; i < 16; i++, pEventObjId++)
{
- if (*pMapObjId != 0xFF)
- npc_sync_anim_pause_bits(&gMapObjects[*pMapObjId]);
+ if (*pEventObjId != 0xFF)
+ UnfreezeEventObject(&gEventObjects[*pEventObjId]);
}
}
@@ -207,23 +206,23 @@ static void sub_80D3660(u8 taskId)
}
}
-static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, const u8 *d)
+static void sub_80A2490(u8 taskId, u8 b, u8 eventObjId, const u8 *d)
{
u8 var;
- if (FieldObjectIsSpecialAnimActive(&gMapObjects[mapObjId])
- && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
+ if (EventObjectIsHeldMovementActive(&gEventObjects[eventObjId])
+ && !EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]))
return;
var = *d;
if (var == 0xFE)
{
sub_80D355C(taskId, b);
- FreezeMapObject(&gMapObjects[mapObjId]);
+ FreezeEventObject(&gEventObjects[eventObjId]);
}
else
{
- if (!FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], var))
+ if (!EventObjectSetHeldMovement(&gEventObjects[eventObjId], var))
{
d++;
npc_obj_offscreen_culling_and_flag_update(b, d);
diff --git a/src/secret_base.c b/src/secret_base.c
index 44e980c43..d6f4e24a5 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -20,7 +20,7 @@
#include "field_player_avatar.h"
#include "field_screen.h"
#include "field_weather.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_effect.h"
#include "fldeff_80F9BCC.h"
#include "metatile_behavior.h"
@@ -412,7 +412,7 @@ bool8 sub_80E909C(void)
void sub_80E90C8(u8 taskId)
{
- FieldObjectTurn(&gMapObjects[gPlayerAvatar.mapObjectId], DIR_NORTH);
+ EventObjectTurn(&gEventObjects[gPlayerAvatar.eventObjectId], DIR_NORTH);
if (IsWeatherNotFadingIn() == TRUE)
{
EnableBothScriptContexts();
@@ -532,14 +532,14 @@ void sub_80E933C(void)
category = gDecorations[roomDecor[decorIdx]].category;
if (permission == DECORPERM_SOLID_MAT)
{
- for (objIdx = 0; objIdx < gMapHeader.events->mapObjectCount; objIdx ++)
+ for (objIdx = 0; objIdx < gMapHeader.events->eventObjectCount; objIdx ++)
{
- if (gMapHeader.events->mapObjects[objIdx].flagId == gSpecialVar_0x8004 + 0xAE)
+ if (gMapHeader.events->eventObjects[objIdx].flagId == gSpecialVar_0x8004 + 0xAE)
{
break;
}
}
- if (objIdx == gMapHeader.events->mapObjectCount)
+ if (objIdx == gMapHeader.events->eventObjectCount)
{
continue;
}
@@ -548,9 +548,9 @@ void sub_80E933C(void)
metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
if (MetatileBehavior_IsMB_B5(metatile) == TRUE || MetatileBehavior_IsMB_C3(metatile) == TRUE)
{
- gSpecialVar_Result = gMapHeader.events->mapObjects[objIdx].graphicsId + VAR_0x3F20;
+ gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + VAR_0x3F20;
VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]);
- gSpecialVar_Result = gMapHeader.events->mapObjects[objIdx].localId;
+ gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].localId;
FlagClear(gSpecialVar_0x8004 + 0xAE);
show_sprite(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
sub_808EBA8(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
@@ -578,12 +578,12 @@ void sub_80E9578(void)
u8 objectEventIdx;
u16 flagId;
- for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->mapObjectCount; objectEventIdx ++)
+ for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->eventObjectCount; objectEventIdx ++)
{
- flagId = gMapHeader.events->mapObjects[objectEventIdx].flagId;
+ flagId = gMapHeader.events->eventObjects[objectEventIdx].flagId;
if (flagId >= 0xAE && flagId <= 0xBB)
{
- RemoveFieldObjectByLocalIdAndMap(gMapHeader.events->mapObjects[objectEventIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ RemoveEventObjectByLocalIdAndMap(gMapHeader.events->eventObjects[objectEventIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
FlagSet(flagId);
}
}
diff --git a/src/start_menu.c b/src/start_menu.c
index c248ca86b..7080ae6a8 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -15,7 +15,7 @@
#include "battle_frontier_2.h"
#include "rom_818CFC8.h"
#include "field_specials.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "script.h"
#include "main.h"
#include "sound.h"
@@ -561,7 +561,7 @@ void ShowStartMenu(void) // Called from overworld.c and field_control_avatar.s
{
if (!is_c1_link_related_active())
{
- FreezeMapObjects();
+ FreezeEventObjects();
sub_808B864();
sub_808BCF4();
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 7706da703..f5e9c300e 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -4,9 +4,8 @@
#include "pokemon.h"
#include "sprite.h"
#include "field_effect.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
-#include "field_map_obj_helpers.h"
#include "pokenav.h"
#include "task.h"
#include "util.h"
@@ -16,36 +15,36 @@
extern bool8 InBattlePyramid(void);
extern bool32 InTrainerHill(void);
-extern bool8 GetBattlePyramidTrainerFlag(u8 mapObjectId);
-extern bool8 GetTrainerHillTrainerFlag(u8 mapObjectId);
+extern bool8 GetBattlePyramidTrainerFlag(u8 eventObjectId);
+extern bool8 GetTrainerHillTrainerFlag(u8 eventObjectId);
extern void sub_809BE48(u16 npcId);
// this file's functions
-static u8 CheckTrainer(u8 mapObjectId);
-static u8 GetTrainerApproachDistance(struct MapObject *trainerObj);
-static u8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction);
-static void TrainerApproachPlayer(struct MapObject *trainerObj, u8 range);
+static u8 CheckTrainer(u8 eventObjectId);
+static u8 GetTrainerApproachDistance(struct EventObject *trainerObj);
+static u8 CheckPathBetweenTrainerAndPlayer(struct EventObject *trainerObj, u8 approachDistance, u8 direction);
+static void TrainerApproachPlayer(struct EventObject *trainerObj, u8 range);
static void Task_RunTrainerSeeFuncList(u8 taskId);
static void Task_DestroyTrainerApproachTask(u8 taskId);
static void SetIconSpriteData(struct Sprite *sprite, u16 fldEffId, u8 spriteAnimNum);
-static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-
-static bool8 sub_80B4178(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B417C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B41C0(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B4200(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B425C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B4318(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B435C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B4390(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B43AC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B43E0(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B4438(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-static bool8 sub_80B44AC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static u8 GetTrainerApproachDistanceSouth(struct EventObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceNorth(struct EventObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceWest(struct EventObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceEast(struct EventObject *trainerObj, s16 range, s16 x, s16 y);
+
+static bool8 sub_80B4178(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B417C(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B41C0(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B4200(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B425C(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B4318(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B435C(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B4390(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B43AC(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B43E0(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B4438(u8 taskId, struct Task *task, struct EventObject *trainerObj);
+static bool8 sub_80B44AC(u8 taskId, struct Task *task, struct EventObject *trainerObj);
static void SpriteCB_TrainerIcons(struct Sprite *sprite);
@@ -64,7 +63,7 @@ static const u8 sEmotion_ExclamationMarkGfx[] = INCBIN_U8("graphics/misc/emotion
static const u8 sEmotion_QuestionMarkGfx[] = INCBIN_U8("graphics/misc/emotion_question.4bpp");
static const u8 sEmotion_HeartGfx[] = INCBIN_U8("graphics/misc/emotion_heart.4bpp");
-static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *trainerObj, s16 range, s16 x, s16 y) =
+static u8 (*const sDirectionalApproachDistanceFuncs[])(struct EventObject *trainerObj, s16 range, s16 x, s16 y) =
{
GetTrainerApproachDistanceSouth,
GetTrainerApproachDistanceNorth,
@@ -72,7 +71,7 @@ static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *trainer
GetTrainerApproachDistanceEast,
};
-static bool8 (*const sTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct MapObject *trainerObj) =
+static bool8 (*const sTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct EventObject *trainerObj) =
{
sub_80B4178,
sub_80B417C,
@@ -88,7 +87,7 @@ static bool8 (*const sTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct
sub_80B44AC
};
-static bool8 (*const sTrainerSeeFuncList2[])(u8 taskId, struct Task *task, struct MapObject *trainerObj) =
+static bool8 (*const sTrainerSeeFuncList2[])(u8 taskId, struct Task *task, struct EventObject *trainerObj) =
{
sub_80B43AC,
sub_80B43E0,
@@ -172,13 +171,13 @@ bool8 CheckForTrainersWantingBattle(void)
gNoOfApproachingTrainers = 0;
gApproachingTrainerId = 0;
- for (i = 0; i < MAP_OBJECTS_COUNT; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
u8 retVal;
- if (!gMapObjects[i].active)
+ if (!gEventObjects[i].active)
continue;
- if (gMapObjects[i].trainerType != 1 && gMapObjects[i].trainerType != 3)
+ if (gEventObjects[i].trainerType != 1 && gEventObjects[i].trainerType != 3)
continue;
retVal = CheckTrainer(i);
@@ -197,7 +196,7 @@ bool8 CheckForTrainersWantingBattle(void)
if (gNoOfApproachingTrainers == 1)
{
ResetTrainerOpponentIds();
- ConfigureAndSetUpOneTrainerBattle(gApproachingTrainers[gNoOfApproachingTrainers - 1].mapObjectId,
+ ConfigureAndSetUpOneTrainerBattle(gApproachingTrainers[gNoOfApproachingTrainers - 1].eventObjectId,
gApproachingTrainers[gNoOfApproachingTrainers - 1].trainerScriptPtr);
gUnknown_030060AC = 1;
return TRUE;
@@ -207,7 +206,7 @@ bool8 CheckForTrainersWantingBattle(void)
ResetTrainerOpponentIds();
for (i = 0; i < gNoOfApproachingTrainers; i++, gApproachingTrainerId++)
{
- ConfigureTwoTrainersBattle(gApproachingTrainers[i].mapObjectId,
+ ConfigureTwoTrainersBattle(gApproachingTrainers[i].eventObjectId,
gApproachingTrainers[i].trainerScriptPtr);
}
SetUpTwoTrainersBattle();
@@ -222,7 +221,7 @@ bool8 CheckForTrainersWantingBattle(void)
}
}
-static u8 CheckTrainer(u8 mapObjectId)
+static u8 CheckTrainer(u8 eventObjectId)
{
const u8 *scriptPtr;
u8 ret = 1;
@@ -231,16 +230,16 @@ static u8 CheckTrainer(u8 mapObjectId)
if (InTrainerHill() == TRUE)
scriptPtr = sub_81D62AC();
else
- scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjectId);
+ scriptPtr = GetEventObjectScriptPointerByEventObjectId(eventObjectId);
if (InBattlePyramid())
{
- if (GetBattlePyramidTrainerFlag(mapObjectId))
+ if (GetBattlePyramidTrainerFlag(eventObjectId))
return 0;
}
else if (InTrainerHill() == TRUE)
{
- if (GetTrainerHillTrainerFlag(mapObjectId))
+ if (GetTrainerHillTrainerFlag(eventObjectId))
return 0;
}
else
@@ -249,7 +248,7 @@ static u8 CheckTrainer(u8 mapObjectId)
return 0;
}
- approachDistance = GetTrainerApproachDistance(&gMapObjects[mapObjectId]);
+ approachDistance = GetTrainerApproachDistance(&gEventObjects[eventObjectId]);
if (approachDistance != 0)
{
@@ -263,10 +262,10 @@ static u8 CheckTrainer(u8 mapObjectId)
ret = 2;
}
- gApproachingTrainers[gNoOfApproachingTrainers].mapObjectId = mapObjectId;
+ gApproachingTrainers[gNoOfApproachingTrainers].eventObjectId = eventObjectId;
gApproachingTrainers[gNoOfApproachingTrainers].trainerScriptPtr = scriptPtr;
gApproachingTrainers[gNoOfApproachingTrainers].radius = approachDistance;
- TrainerApproachPlayer(&gMapObjects[mapObjectId], approachDistance - 1);
+ TrainerApproachPlayer(&gEventObjects[eventObjectId], approachDistance - 1);
gNoOfApproachingTrainers++;
return ret;
@@ -275,7 +274,7 @@ static u8 CheckTrainer(u8 mapObjectId)
return 0;
}
-static u8 GetTrainerApproachDistance(struct MapObject *trainerObj)
+static u8 GetTrainerApproachDistance(struct EventObject *trainerObj)
{
s16 x, y;
u8 i;
@@ -284,8 +283,8 @@ static u8 GetTrainerApproachDistance(struct MapObject *trainerObj)
PlayerGetDestCoords(&x, &y);
if (trainerObj->trainerType == 1) // can only see in one direction
{
- approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->mapobj_unk_18);
+ approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->facingDirection - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
+ return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->facingDirection);
}
else // can see in all directions
{
@@ -301,52 +300,52 @@ static u8 GetTrainerApproachDistance(struct MapObject *trainerObj)
}
// Returns how far south the player is from trainer. 0 if out of trainer's sight.
-static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceSouth(struct EventObject *trainerObj, s16 range, s16 x, s16 y)
{
- if (trainerObj->coords2.x == x
- && y > trainerObj->coords2.y
- && y <= trainerObj->coords2.y + range)
- return (y - trainerObj->coords2.y);
+ if (trainerObj->currentCoords.x == x
+ && y > trainerObj->currentCoords.y
+ && y <= trainerObj->currentCoords.y + range)
+ return (y - trainerObj->currentCoords.y);
else
return 0;
}
// Returns how far north the player is from trainer. 0 if out of trainer's sight.
-static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceNorth(struct EventObject *trainerObj, s16 range, s16 x, s16 y)
{
- if (trainerObj->coords2.x == x
- && y < trainerObj->coords2.y
- && y >= trainerObj->coords2.y - range)
- return (trainerObj->coords2.y - y);
+ if (trainerObj->currentCoords.x == x
+ && y < trainerObj->currentCoords.y
+ && y >= trainerObj->currentCoords.y - range)
+ return (trainerObj->currentCoords.y - y);
else
return 0;
}
// Returns how far west the player is from trainer. 0 if out of trainer's sight.
-static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceWest(struct EventObject *trainerObj, s16 range, s16 x, s16 y)
{
- if (trainerObj->coords2.y == y
- && x < trainerObj->coords2.x
- && x >= trainerObj->coords2.x - range)
- return (trainerObj->coords2.x - x);
+ if (trainerObj->currentCoords.y == y
+ && x < trainerObj->currentCoords.x
+ && x >= trainerObj->currentCoords.x - range)
+ return (trainerObj->currentCoords.x - x);
else
return 0;
}
// Returns how far east the player is from trainer. 0 if out of trainer's sight.
-static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceEast(struct EventObject *trainerObj, s16 range, s16 x, s16 y)
{
- if (trainerObj->coords2.y == y
- && x > trainerObj->coords2.x
- && x <= trainerObj->coords2.x + range)
- return (x - trainerObj->coords2.x);
+ if (trainerObj->currentCoords.y == y
+ && x > trainerObj->currentCoords.x
+ && x <= trainerObj->currentCoords.x + range)
+ return (x - trainerObj->currentCoords.x);
else
return 0;
}
#define COLLISION_MASK (~1)
-static u8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction)
+static u8 CheckPathBetweenTrainerAndPlayer(struct EventObject *trainerObj, u8 approachDistance, u8 direction)
{
s16 x, y;
u8 unk19_temp;
@@ -357,13 +356,13 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 appr
if (approachDistance == 0)
return 0;
- x = trainerObj->coords2.x;
- y = trainerObj->coords2.y;
+ x = trainerObj->currentCoords.x;
+ y = trainerObj->currentCoords.y;
MoveCoords(direction, &x, &y);
for (i = 0; i < approachDistance - 1; i++, MoveCoords(direction, &x, &y))
{
- collision = sub_8092C8C(trainerObj, x, y, direction);
+ collision = GetCollisionFlagsAtCoords(trainerObj, x, y, direction);
if (collision != 0 && (collision & COLLISION_MASK))
return 0;
}
@@ -374,7 +373,7 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 appr
trainerObj->range.as_nybbles.x = 0;
trainerObj->range.as_nybbles.y = 0;
- collision = npc_block_way(trainerObj, x, y, direction);
+ collision = GetCollisionAtCoords(trainerObj, x, y, direction);
trainerObj->range.as_nybbles.x = unk19_temp;
trainerObj->range.as_nybbles.y = unk19b_temp;
@@ -387,16 +386,16 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 appr
#define tFuncId data[0]
#define tTrainerRange data[3]
#define tOutOfAshSpriteId data[4]
-#define tTrainerMapObjectId data[7]
+#define tTrainerEventObjectId data[7]
-static void TrainerApproachPlayer(struct MapObject *trainerObj, u8 range)
+static void TrainerApproachPlayer(struct EventObject *trainerObj, u8 range)
{
struct Task *task;
gApproachingTrainers[gNoOfApproachingTrainers].taskId = CreateTask(Task_RunTrainerSeeFuncList, 0x50);
task = &gTasks[gApproachingTrainers[gNoOfApproachingTrainers].taskId];
task->tTrainerRange = range;
- task->tTrainerMapObjectId = gApproachingTrainers[gNoOfApproachingTrainers].mapObjectId;
+ task->tTrainerEventObjectId = gApproachingTrainers[gNoOfApproachingTrainers].eventObjectId;
}
static void sub_80B40C8(TaskFunc followupFunc)
@@ -418,7 +417,7 @@ static void sub_80B40C8(TaskFunc followupFunc)
static void Task_RunTrainerSeeFuncList(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- struct MapObject *trainerObj = &gMapObjects[task->tTrainerMapObjectId];
+ struct EventObject *trainerObj = &gEventObjects[task->tTrainerEventObjectId];
if (!trainerObj->active)
{
@@ -430,125 +429,125 @@ static void Task_RunTrainerSeeFuncList(u8 taskId)
}
}
-static bool8 sub_80B4178(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B4178(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
return FALSE;
}
-static bool8 sub_80B417C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B417C(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
u8 direction;
- FieldObjectGetLocalIdAndMap(trainerObj, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
- direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18);
- FieldObjectSetSpecialAnim(trainerObj, direction);
+ EventObjectGetLocalIdAndMap(trainerObj, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON);
+ direction = GetFaceDirectionMovementAction(trainerObj->facingDirection);
+ EventObjectSetHeldMovement(trainerObj, direction);
task->tFuncId++;
return TRUE;
}
-static bool8 sub_80B41C0(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B41C0(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (FieldEffectActiveListContains(FLDEFF_EXCLAMATION_MARK_ICON_1))
+ if (FieldEffectActiveListContains(FLDEFF_EXCLAMATION_MARK_ICON))
{
return FALSE;
}
else
{
task->tFuncId++;
- if (trainerObj->animPattern == 57 || trainerObj->animPattern == 58)
+ if (trainerObj->movementType == 57 || trainerObj->movementType == 58)
task->tFuncId = 6;
- if (trainerObj->animPattern == 63)
+ if (trainerObj->movementType == 63)
task->tFuncId = 8;
return TRUE;
}
}
-static bool8 sub_80B4200(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B4200(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (!(EventObjectIsMovementOverridden(trainerObj)) || EventObjectClearHeldMovementIfFinished(trainerObj))
{
if (task->tTrainerRange)
{
- FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18));
+ EventObjectSetHeldMovement(trainerObj, GetWalkNormalMovementAction(trainerObj->facingDirection));
task->tTrainerRange--;
}
else
{
- FieldObjectSetSpecialAnim(trainerObj, 0x3E);
+ EventObjectSetHeldMovement(trainerObj, 0x3E);
task->tFuncId++;
}
}
return FALSE;
}
-static bool8 sub_80B425C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B425C(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- struct MapObject *playerObj;
+ struct EventObject *playerObj;
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (EventObjectIsMovementOverridden(trainerObj) && !EventObjectClearHeldMovementIfFinished(trainerObj))
return FALSE;
- npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
- sub_808F23C(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
- sub_808F208(trainerObj);
+ SetTrainerMovementType(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
+ TryOverrideTemplateCoordsForEventObject(trainerObj, GetTrainerFacingDirectionMovementType(trainerObj->facingDirection));
+ OverrideTemplateCoordsForEventObject(trainerObj);
- playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
+ playerObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ if (EventObjectIsMovementOverridden(playerObj) && !EventObjectClearHeldMovementIfFinished(playerObj))
return FALSE;
sub_808BCE8();
- FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18)));
+ EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], GetFaceDirectionMovementAction(GetOppositeDirection(trainerObj->facingDirection)));
task->tFuncId++;
return FALSE;
}
-static bool8 sub_80B4318(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B4318(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct EventObject *playerObj = &gEventObjects[gPlayerAvatar.eventObjectId];
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
+ if (!EventObjectIsMovementOverridden(playerObj)
+ || EventObjectClearHeldMovementIfFinished(playerObj))
SwitchTaskToFollowupFunc(taskId);
return FALSE;
}
-static bool8 sub_80B435C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B435C(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (!EventObjectIsMovementOverridden(trainerObj)
+ || EventObjectClearHeldMovementIfFinished(trainerObj))
{
- FieldObjectSetSpecialAnim(trainerObj, 0x59);
+ EventObjectSetHeldMovement(trainerObj, 0x59);
task->tFuncId++;
}
return FALSE;
}
-static bool8 sub_80B4390(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B4390(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (EventObjectClearHeldMovementIfFinished(trainerObj))
task->tFuncId = 3;
return FALSE;
}
-static bool8 sub_80B43AC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B43AC(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ if (!EventObjectIsMovementOverridden(trainerObj)
+ || EventObjectClearHeldMovementIfFinished(trainerObj))
{
- FieldObjectSetSpecialAnim(trainerObj, 0x3E);
+ EventObjectSetHeldMovement(trainerObj, 0x3E);
task->tFuncId++;
}
return FALSE;
}
-static bool8 sub_80B43E0(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B43E0(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj))
+ if (EventObjectCheckHeldMovementStatus(trainerObj))
{
- gFieldEffectArguments[0] = trainerObj->coords2.x;
- gFieldEffectArguments[1] = trainerObj->coords2.y;
+ gFieldEffectArguments[0] = trainerObj->currentCoords.x;
+ gFieldEffectArguments[1] = trainerObj->currentCoords.y;
gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1;
gFieldEffectArguments[3] = 2;
task->tOutOfAshSpriteId = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
@@ -557,26 +556,26 @@ static bool8 sub_80B43E0(u8 taskId, struct Task *task, struct MapObject *trainer
return FALSE;
}
-static bool8 sub_80B4438(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B4438(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
struct Sprite *sprite;
if (gSprites[task->tOutOfAshSpriteId].animCmdIndex == 2)
{
- trainerObj->mapobj_bit_26 = 0;
- trainerObj->mapobj_bit_2 = 1;
+ trainerObj->fixedPriority = 0;
+ trainerObj->triggerGroundEffectsOnMove = 1;
sprite = &gSprites[trainerObj->spriteId];
sprite->oam.priority = 2;
- FieldObjectClearAnimIfSpecialAnimFinished(trainerObj);
- FieldObjectSetSpecialAnim(trainerObj, sub_80934BC(trainerObj->mapobj_unk_18));
+ EventObjectClearHeldMovementIfFinished(trainerObj);
+ EventObjectSetHeldMovement(trainerObj, GetJumpInPlaceMovementAction(trainerObj->facingDirection));
task->tFuncId++;
}
return FALSE;
}
-static bool8 sub_80B44AC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80B44AC(u8 taskId, struct Task *task, struct EventObject *trainerObj)
{
if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
task->tFuncId = 3;
@@ -587,34 +586,34 @@ static bool8 sub_80B44AC(u8 taskId, struct Task *task, struct MapObject *trainer
#undef tFuncId
#undef tTrainerRange
#undef tOutOfAshSpriteId
-#undef tTrainerMapObjectId
+#undef tTrainerEventObjectId
static void sub_80B44C8(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- struct MapObject *mapObj;
+ struct EventObject *eventObj;
- // another mapObj loaded into by loadword?
- LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj);
+ // another eventObj loaded into by loadword?
+ LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&eventObj);
if (!task->data[7])
{
- FieldObjectClearAnim(mapObj);
+ EventObjectClearHeldMovement(eventObj);
task->data[7]++;
}
- sTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj);
+ sTrainerSeeFuncList2[task->data[0]](taskId, task, eventObj);
if (task->data[0] == 3 && !FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
{
- npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
- sub_808F23C(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
+ SetTrainerMovementType(eventObj, GetTrainerFacingDirectionMovementType(eventObj->facingDirection));
+ TryOverrideTemplateCoordsForEventObject(eventObj, GetTrainerFacingDirectionMovementType(eventObj->facingDirection));
DestroyTask(taskId);
}
else
{
- mapObj->mapobj_bit_7 = 0;
+ eventObj->heldMovementFinished = 0;
}
}
-void sub_80B4578(struct MapObject *var)
+void sub_80B4578(struct EventObject *var)
{
StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80B44C8, 0)].data[1], (u32)var);
}
@@ -638,8 +637,8 @@ void sub_80B45D0(void)
{
gApproachingTrainerId++;
gSpecialVar_Result = 1;
- UnfreezeMapObjects();
- FreezeMapObjectsExceptOne(gApproachingTrainers[1].mapObjectId);
+ UnfreezeEventObjects();
+ FreezeEventObjectsExceptOne(gApproachingTrainers[1].eventObjectId);
}
else
{
@@ -660,22 +659,22 @@ void sub_80B45D0(void)
#define sData4 data[4]
#define sFldEffId data[7]
-u8 FldEff_ExclamationMarkIcon1(void)
+u8 FldEff_ExclamationMarkIcon(void)
{
u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x53);
if (spriteId != MAX_SPRITES)
- SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON_1, 0);
+ SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON, 0);
return 0;
}
-u8 FldEff_ExclamationMarkIcon2(void)
+u8 FldEff_QuestionMarkIcon(void)
{
u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52);
if (spriteId != MAX_SPRITES)
- SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON_2, 1);
+ SetIconSpriteData(&gSprites[spriteId], FLDEFF_QUESTION_MARK_ICON, 1);
return 0;
}
@@ -711,21 +710,21 @@ static void SetIconSpriteData(struct Sprite *sprite, u16 fldEffId, u8 spriteAnim
static void SpriteCB_TrainerIcons(struct Sprite *sprite)
{
- u8 mapObjId;
+ u8 eventObjId;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &mapObjId)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &eventObjId)
|| sprite->animEnded)
{
FieldEffectStop(sprite, sprite->sFldEffId);
}
else
{
- struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId];
+ struct Sprite *eventObjSprite = &gSprites[gEventObjects[eventObjId].spriteId];
sprite->sData4 += sprite->sData3;
- sprite->pos1.x = mapObjSprite->pos1.x;
- sprite->pos1.y = mapObjSprite->pos1.y - 16;
- sprite->pos2.x = mapObjSprite->pos2.x;
- sprite->pos2.y = mapObjSprite->pos2.y + sprite->sData4;
+ sprite->pos1.x = eventObjSprite->pos1.x;
+ sprite->pos1.y = eventObjSprite->pos1.y - 16;
+ sprite->pos2.x = eventObjSprite->pos2.x;
+ sprite->pos2.y = eventObjSprite->pos2.y + sprite->sData4;
if (sprite->sData4)
sprite->sData3++;
else
@@ -740,39 +739,39 @@ static void SpriteCB_TrainerIcons(struct Sprite *sprite)
#undef sData4
#undef sFldEffId
-u8 GetCurrentApproachingTrainerMapObjectId(void)
+u8 GetCurrentApproachingTrainerEventObjectId(void)
{
if (gApproachingTrainerId == 0)
- return gApproachingTrainers[0].mapObjectId;
+ return gApproachingTrainers[0].eventObjectId;
else
- return gApproachingTrainers[1].mapObjectId;
+ return gApproachingTrainers[1].eventObjectId;
}
-u8 GetChosenApproachingTrainerMapObjectId(u8 arrayId)
+u8 GetChosenApproachingTrainerEventObjectId(u8 arrayId)
{
if (arrayId >= ARRAY_COUNT(gApproachingTrainers))
return 0;
else if (arrayId == 0)
- return gApproachingTrainers[0].mapObjectId;
+ return gApproachingTrainers[0].eventObjectId;
else
- return gApproachingTrainers[1].mapObjectId;
+ return gApproachingTrainers[1].eventObjectId;
}
void sub_80B4808(void)
{
- struct MapObject *trainerObj;
+ struct EventObject *trainerObj;
if (gUnknown_030060AC == 1)
{
- trainerObj = &gMapObjects[gApproachingTrainers[gUnknown_03006080].mapObjectId];
- gUnknown_03006084[0] = GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18));
+ trainerObj = &gEventObjects[gApproachingTrainers[gUnknown_03006080].eventObjectId];
+ gUnknown_03006084[0] = GetFaceDirectionMovementAction(GetOppositeDirection(trainerObj->facingDirection));
gUnknown_03006084[1] = 0xFE;
ScriptMovement_StartObjectMovementScript(0xFF, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gUnknown_03006084);
}
else
{
- trainerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- gUnknown_03006084[0] = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18);
+ trainerObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ gUnknown_03006084[0] = GetFaceDirectionMovementAction(trainerObj->facingDirection);
gUnknown_03006084[1] = 0xFE;
ScriptMovement_StartObjectMovementScript(0xFF, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gUnknown_03006084);
}
diff --git a/src/tv.c b/src/tv.c
index e69f6f411..2219a720b 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -26,7 +26,7 @@
#include "lilycove_lady.h"
#include "rom6.h"
#include "pokedex.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "text.h"
#include "script_menu.h"
#include "naming_screen.h"
@@ -1037,7 +1037,7 @@ u8 GabbyAndTyGetLastBattleTrivia(void)
return 0;
}
-void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void)
+void GabbyAndTySetScriptVarsToEventObjectLocalIds(void)
{
switch (GabbyAndTyGetBattleNum())
{
@@ -3602,7 +3602,7 @@ void GetMomOrDadStringForTVMessage(void)
void sub_80F01B8(void)
{
VarSet(VAR_0x40BC, 0);
- RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ RemoveEventObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
FlagSet(0x396);
}