diff options
Diffstat (limited to 'src')
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 = ℑ + 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 = ℑ - 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); } @@ -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); } |