Continue synchronising

This commit is contained in:
Slawter666
2018-10-20 21:01:45 +01:00
parent b7b1d609d0
commit 7a072d4527
2 changed files with 132 additions and 146 deletions
-2
View File
@@ -162,9 +162,7 @@ u8 ZCoordToPriority(u8);
void EventObjectUpdateZCoord(struct EventObject *pObject); void EventObjectUpdateZCoord(struct EventObject *pObject);
void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
bool8 IsZCoordMismatchAt(u8, s16, s16); bool8 IsZCoordMismatchAt(u8, s16, s16);
void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *);
void UnfreezeEventObject(struct EventObject *); void UnfreezeEventObject(struct EventObject *);
void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
u8 FindLockedEventObjectIndex(struct EventObject *); u8 FindLockedEventObjectIndex(struct EventObject *);
bool8 obj_npc_ministep(struct Sprite *sprite); bool8 obj_npc_ministep(struct Sprite *sprite);
bool8 sub_80976EC(struct Sprite *sprite); bool8 sub_80976EC(struct Sprite *sprite);
+132 -144
View File
@@ -43,7 +43,7 @@ static bool8 IsCoordOutsideEventObjectMovementRange(struct EventObject *, s16, s
static bool8 IsMetatileDirectionallyImpassable(struct EventObject *, s16, s16, u8); static bool8 IsMetatileDirectionallyImpassable(struct EventObject *, s16, s16, u8);
static bool8 DoesObjectCollideWithObjectAt(struct EventObject *, s16, s16); static bool8 DoesObjectCollideWithObjectAt(struct EventObject *, s16, s16);
static void sub_8096530(struct EventObject *, struct Sprite *); static void sub_8096530(struct EventObject *, struct Sprite *);
static void npc_update_obj_anim_flag(struct EventObject *, struct Sprite *); static void UpdateEventObjSpriteVisibility(struct EventObject *, struct Sprite *);
static void EventObjectUpdateMetatileBehaviors(struct EventObject*); static void EventObjectUpdateMetatileBehaviors(struct EventObject*);
static void GetGroundEffectFlags_Reflection(struct EventObject*, u32*); static void GetGroundEffectFlags_Reflection(struct EventObject*, u32*);
static void GetGroundEffectFlags_TallGrassOnSpawn(struct EventObject*, u32*); static void GetGroundEffectFlags_TallGrassOnSpawn(struct EventObject*, u32*);
@@ -101,6 +101,8 @@ static void CameraObject_2(struct Sprite *);
static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8 localId, struct EventObjectTemplate *templates, u8 count); static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8 localId, struct EventObjectTemplate *templates, u8 count);
static void ClearEventObjectMovement(struct EventObject *, struct Sprite *); static void ClearEventObjectMovement(struct EventObject *, struct Sprite *);
static void EventObjectSetSingleMovement(struct EventObject *, struct Sprite *, u8); static void EventObjectSetSingleMovement(struct EventObject *, struct Sprite *, u8);
static void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
static void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *);
const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
@@ -626,7 +628,6 @@ const u16 gObjectPaletteTags3[] = {
EVENT_OBJ_PAL_TAG_7, EVENT_OBJ_PAL_TAG_7,
}; };
const u16 *const gObjectPaletteTagSets[] = { const u16 *const gObjectPaletteTagSets[] = {
gObjectPaletteTags0, gObjectPaletteTags0,
gObjectPaletteTags1, gObjectPaletteTags1,
@@ -1120,7 +1121,7 @@ u8 GetFirstInactiveEventObjectId(void)
u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId)
{ {
if (localId < 0xff) if (localId < 0xFF)
{ {
return GetEventObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); return GetEventObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId);
} }
@@ -1388,24 +1389,24 @@ static NAKED u8 InitEventObjectStateFromTemplate(struct EventObjectTemplate *tem
u8 Unref_TryInitLocalEventObject(u8 localId) u8 Unref_TryInitLocalEventObject(u8 localId)
{ {
u8 i; u8 i;
u8 nObjects; u8 eventObjectCount;
struct EventObjectTemplate *template; struct EventObjectTemplate *template;
if (gMapHeader.events != NULL) if (gMapHeader.events != NULL)
{ {
if (InBattlePyramid()) if (InBattlePyramid())
{ {
nObjects = sub_81AAA40(); eventObjectCount = sub_81AAA40();
} }
else if (InTrainerHill()) else if (InTrainerHill())
{ {
nObjects = 2; eventObjectCount = 2;
} }
else else
{ {
nObjects = gMapHeader.events->eventObjectCount; eventObjectCount = gMapHeader.events->eventObjectCount;
} }
for (i = 0; i < nObjects; i++) for (i = 0; i < eventObjectCount; i++)
{ {
template = &gSaveBlock1Ptr->eventObjectTemplates[i]; template = &gSaveBlock1Ptr->eventObjectTemplates[i];
if (template->localId == localId && !FlagGet(template->flagId)) if (template->localId == localId && !FlagGet(template->flagId))
@@ -1482,12 +1483,12 @@ void RemoveAllEventObjectsExceptPlayer(void)
static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
{ {
u8 spriteId;
u8 paletteSlot;
u8 eventObjectId;
struct Sprite *sprite;
struct EventObject *eventObject; struct EventObject *eventObject;
const struct EventObjectGraphicsInfo *graphicsInfo; const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *sprite;
u8 eventObjectId;
u8 paletteSlot;
u8 spriteId;
eventObjectId = InitEventObjectStateFromTemplate(eventObjectTemplate, mapNum, mapGroup); eventObjectId = InitEventObjectStateFromTemplate(eventObjectTemplate, mapNum, mapGroup);
if (eventObjectId == EVENT_OBJECTS_COUNT) if (eventObjectId == EVENT_OBJECTS_COUNT)
@@ -1542,13 +1543,12 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl
static u8 TrySpawnEventObject(struct EventObjectTemplate *eventObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) 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; u8 eventObjectId;
struct SpriteTemplate spriteTemplate;
struct SpriteFrameImage spriteFrameImage;
const struct EventObjectGraphicsInfo *graphicsInfo;
const struct SubspriteTable *subspriteTables = NULL;
subspriteTables = NULL;
graphicsInfo = GetEventObjectGraphicsInfo(eventObjectTemplate->graphicsId); graphicsInfo = GetEventObjectGraphicsInfo(eventObjectTemplate->graphicsId);
MakeObjectTemplateFromEventObjectTemplate(eventObjectTemplate, &spriteTemplate, &subspriteTables); MakeObjectTemplateFromEventObjectTemplate(eventObjectTemplate, &spriteTemplate, &subspriteTables);
spriteFrameImage.size = graphicsInfo->size; spriteFrameImage.size = graphicsInfo->size;
@@ -1610,23 +1610,23 @@ u8 show_sprite(u8 localId, u8 mapNum, u8 mapGroup)
return TrySpawnEventObject(eventObjectTemplate, mapNum, mapGroup, 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) static void MakeObjectTemplateFromEventObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
{ {
const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(graphicsId); const struct EventObjectGraphicsInfo *graphicsInfo = GetEventObjectGraphicsInfo(graphicsId);
sprTemplate->tileTag = gfxInfo->tileTag; spriteTemplate->tileTag = graphicsInfo->tileTag;
sprTemplate->paletteTag = gfxInfo->paletteTag1; spriteTemplate->paletteTag = graphicsInfo->paletteTag1;
sprTemplate->oam = gfxInfo->oam; spriteTemplate->oam = graphicsInfo->oam;
sprTemplate->anims = gfxInfo->anims; spriteTemplate->anims = graphicsInfo->anims;
sprTemplate->images = gfxInfo->images; spriteTemplate->images = graphicsInfo->images;
sprTemplate->affineAnims = gfxInfo->affineAnims; spriteTemplate->affineAnims = graphicsInfo->affineAnims;
sprTemplate->callback = callback; spriteTemplate->callback = callback;
*subspriteTables = gfxInfo->subspriteTables; *subspriteTables = graphicsInfo->subspriteTables;
} }
static void MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables) static void MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
{ {
MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, sMovementTypeCallbacks[callbackIndex], sprTemplate, subspriteTables); MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, sMovementTypeCallbacks[callbackIndex], spriteTemplate, subspriteTables);
} }
static void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjectTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) static void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjectTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
@@ -1639,37 +1639,37 @@ u8 AddPseudoEventObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x
struct SpriteTemplate *spriteTemplate; struct SpriteTemplate *spriteTemplate;
const struct SubspriteTable *subspriteTables; const struct SubspriteTable *subspriteTables;
struct Sprite *sprite; struct Sprite *sprite;
u8 spriteIdx; u8 spriteId;
spriteTemplate = malloc(sizeof(struct SpriteTemplate)); spriteTemplate = malloc(sizeof(struct SpriteTemplate));
MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, callback, spriteTemplate, &subspriteTables); MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, callback, spriteTemplate, &subspriteTables);
if (spriteTemplate->paletteTag != 0xffff) if (spriteTemplate->paletteTag != 0xFFFF)
{ {
sub_808E894(spriteTemplate->paletteTag); sub_808E894(spriteTemplate->paletteTag);
} }
spriteIdx = CreateSprite(spriteTemplate, x, y, subpriority); spriteId = CreateSprite(spriteTemplate, x, y, subpriority);
free(spriteTemplate); free(spriteTemplate);
if (spriteIdx != MAX_SPRITES && subspriteTables != NULL) if (spriteId != MAX_SPRITES && subspriteTables != NULL)
{ {
sprite = &gSprites[spriteIdx]; sprite = &gSprites[spriteId];
SetSubspriteTables(sprite, subspriteTables); SetSubspriteTables(sprite, subspriteTables);
sprite->subspriteMode = 2; sprite->subspriteMode = 2;
} }
return spriteIdx; return spriteId;
} }
u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction) 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; u8 spriteId;
struct Sprite *sprite; struct Sprite *sprite;
struct SpriteTemplate spriteTemplate;
const struct SubspriteTable *subspriteTables;
const struct EventObjectGraphicsInfo *graphicsInfo;
graphicsInfo = GetEventObjectGraphicsInfo(graphicsId); graphicsInfo = GetEventObjectGraphicsInfo(graphicsId);
MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, UpdateEventObjectSpriteSubpriorityAndVisibility, &spriteTemplate, &subspriteTables); MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, UpdateEventObjectSpriteSubpriorityAndVisibility, &spriteTemplate, &subspriteTables);
*(u16 *)&spriteTemplate.paletteTag = 0xffff; *(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
x += 7; x += 7;
y += 7; y += 7;
sub_80930E0(&x, &y, 8, 16); sub_80930E0(&x, &y, 8, 16);
@@ -1711,20 +1711,14 @@ u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
void TrySpawnEventObjects(s16 cameraX, s16 cameraY) void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
{ {
u8 i; u8 i;
s16 left;
s16 right;
s16 top;
s16 bottom;
u8 objectCount; u8 objectCount;
s16 npcX;
s16 npcY;
if (gMapHeader.events != NULL) if (gMapHeader.events != NULL)
{ {
left = gSaveBlock1Ptr->pos.x - 2; s16 left = gSaveBlock1Ptr->pos.x - 2;
right = gSaveBlock1Ptr->pos.x + 17; s16 right = gSaveBlock1Ptr->pos.x + 17;
top = gSaveBlock1Ptr->pos.y; s16 top = gSaveBlock1Ptr->pos.y;
bottom = gSaveBlock1Ptr->pos.y + 16; s16 bottom = gSaveBlock1Ptr->pos.y + 16;
if (InBattlePyramid()) if (InBattlePyramid())
{ {
@@ -1742,8 +1736,8 @@ void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
for (i = 0; i < objectCount; i++) for (i = 0; i < objectCount; i++)
{ {
struct EventObjectTemplate *template = &gSaveBlock1Ptr->eventObjectTemplates[i]; struct EventObjectTemplate *template = &gSaveBlock1Ptr->eventObjectTemplates[i];
npcX = template->x + 7; s16 npcX = template->x + 7;
npcY = template->y + 7; s16 npcY = template->y + 7;
if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX
&& !FlagGet(template->flagId)) && !FlagGet(template->flagId))
@@ -1754,10 +1748,8 @@ void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
void RemoveEventObjectsOutsideView(void) void RemoveEventObjectsOutsideView(void)
{ {
u8 i; u8 i, j;
u8 j;
bool8 isActiveLinkPlayer; bool8 isActiveLinkPlayer;
struct EventObject *eventObject;
for (i = 0; i < EVENT_OBJECTS_COUNT; i++) for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{ {
@@ -1768,7 +1760,7 @@ void RemoveEventObjectsOutsideView(void)
} }
if (!isActiveLinkPlayer) if (!isActiveLinkPlayer)
{ {
eventObject = &gEventObjects[i]; struct EventObject *eventObject = &gEventObjects[i];
if (eventObject->active && !eventObject->isPlayer) if (eventObject->active && !eventObject->isPlayer)
RemoveEventObjectIfOutsideView(eventObject); RemoveEventObjectIfOutsideView(eventObject);
@@ -1811,12 +1803,12 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
{ {
u8 spriteId; u8 spriteId;
u8 paletteSlot; u8 paletteSlot;
struct Sprite *sprite;
struct EventObject *eventObject; struct EventObject *eventObject;
struct SpriteTemplate spriteTemplate;
struct SpriteFrameImage spriteFrameImage;
const struct SubspriteTable *subspriteTables; const struct SubspriteTable *subspriteTables;
const struct EventObjectGraphicsInfo *graphicsInfo; const struct EventObjectGraphicsInfo *graphicsInfo;
struct SpriteFrameImage spriteFrameImage;
struct SpriteTemplate spriteTemplate;
struct Sprite *sprite;
#define i spriteId #define i spriteId
for (i = 0; i < ARRAY_COUNT(gLinkPlayerEventObjects); i++) for (i = 0; i < ARRAY_COUNT(gLinkPlayerEventObjects); i++)
@@ -1834,7 +1826,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
spriteFrameImage.size = graphicsInfo->size; spriteFrameImage.size = graphicsInfo->size;
MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(eventObject->graphicsId, eventObject->movementType, &spriteTemplate, &subspriteTables); MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(eventObject->graphicsId, eventObject->movementType, &spriteTemplate, &subspriteTables);
spriteTemplate.images = &spriteFrameImage; spriteTemplate.images = &spriteFrameImage;
*(u16 *)&spriteTemplate.paletteTag = 0xffff; *(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
paletteSlot = graphicsInfo->paletteSlot; paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0) if (paletteSlot == 0)
{ {
@@ -1849,7 +1841,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
paletteSlot -= 16; paletteSlot -= 16;
sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot); sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
} }
*(u16 *)&spriteTemplate.paletteTag = 0xffff; *(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
spriteId = CreateSprite(&spriteTemplate, 0, 0, 0); spriteId = CreateSprite(&spriteTemplate, 0, 0, 0);
if (spriteId != MAX_SPRITES) if (spriteId != MAX_SPRITES)
{ {
@@ -1860,7 +1852,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
sprite->pos1.x += 8; sprite->pos1.x += 8;
sprite->pos1.y += 16 + sprite->centerToCornerVecY; sprite->pos1.y += 16 + sprite->centerToCornerVecY;
sprite->images = graphicsInfo->images; sprite->images = graphicsInfo->images;
if (eventObject->movementType == 0x0b) if (eventObject->movementType == MOVEMENT_TYPE_PLAYER)
{ {
SetPlayerAvatarEventObjectIdAndObjectId(eventObjectId, spriteId); SetPlayerAvatarEventObjectIdAndObjectId(eventObjectId, spriteId);
eventObject->warpArrowSpriteId = CreateWarpArrowSprite(); eventObject->warpArrowSpriteId = CreateWarpArrowSprite();
@@ -1873,7 +1865,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
sprite->coordOffsetEnabled = TRUE; sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = eventObjectId; sprite->data[0] = eventObjectId;
eventObject->spriteId = spriteId; eventObject->spriteId = spriteId;
if (!eventObject->inanimate && eventObject->movementType != 0x0b) if (!eventObject->inanimate && eventObject->movementType != MOVEMENT_TYPE_PLAYER)
{ {
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection)); StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection));
} }
@@ -1884,7 +1876,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
static void sub_808E38C(struct EventObject *eventObject) static void sub_808E38C(struct EventObject *eventObject)
{ {
eventObject->singleMovementActive = 0; eventObject->singleMovementActive = FALSE;
eventObject->triggerGroundEffectsOnMove = TRUE; eventObject->triggerGroundEffectsOnMove = TRUE;
eventObject->hasShadow = FALSE; eventObject->hasShadow = FALSE;
eventObject->hasReflection = FALSE; eventObject->hasReflection = FALSE;
@@ -1979,7 +1971,7 @@ void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction)
EventObjectTurn(&gEventObjects[playerAvatar->eventObjectId], direction); EventObjectTurn(&gEventObjects[playerAvatar->eventObjectId], direction);
} }
/*static*/ void get_berry_tree_graphics(struct EventObject *eventObject, struct Sprite *sprite) static void get_berry_tree_graphics(struct EventObject *eventObject, struct Sprite *sprite)
{ {
u8 berryStage; u8 berryStage;
u8 berryId; u8 berryId;
@@ -1992,7 +1984,7 @@ void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction)
eventObject->invisible = FALSE; eventObject->invisible = FALSE;
sprite->invisible = FALSE; sprite->invisible = FALSE;
berryId = GetBerryTypeByBerryTreeId(eventObject->trainerRange_berryTreeId) - 1; berryId = GetBerryTypeByBerryTreeId(eventObject->trainerRange_berryTreeId) - 1;
berryStage -= 1; berryStage--;
if (berryId >= NUM_BERRIES) if (berryId >= NUM_BERRIES)
{ {
berryId = 0; berryId = 0;
@@ -2111,9 +2103,8 @@ void FreeAndReserveObjectSpritePalettes(void)
static void sub_808E894(u16 paletteTag) static void sub_808E894(u16 paletteTag)
{ {
u16 paletteSlot; u16 paletteSlot = FindEventObjectPaletteIndexByTag(paletteTag);
paletteSlot = FindEventObjectPaletteIndexByTag(paletteTag);
if (paletteSlot != EVENT_OBJ_PAL_TAG_NONE) // always true if (paletteSlot != EVENT_OBJ_PAL_TAG_NONE) // always true
{ {
sub_808E8F4(&sEventObjectSpritePalettes[paletteSlot]); sub_808E8F4(&sEventObjectSpritePalettes[paletteSlot]);
@@ -2132,19 +2123,18 @@ void sub_808E8C0(u16 *paletteTags)
static u8 sub_808E8F4(const struct SpritePalette *spritePalette) static u8 sub_808E8F4(const struct SpritePalette *spritePalette)
{ {
if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xff) if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF)
{ {
return 0xff; return 0xFF;
} }
return LoadSpritePalette(spritePalette); return LoadSpritePalette(spritePalette);
} }
void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) void PatchObjectPalette(u16 paletteTag, u8 paletteSlot)
{ {
u16 paletteIdx; u8 paletteIndex = FindEventObjectPaletteIndexByTag(paletteTag);
paletteIdx = FindEventObjectPaletteIndexByTag(paletteTag); LoadPalette(sEventObjectSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20);
LoadPalette(sEventObjectSpritePalettes[paletteIdx].data, 16 * paletteSlot + 256, 0x20);
} }
void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot)
@@ -2168,7 +2158,7 @@ static u8 FindEventObjectPaletteIndexByTag(u16 tag)
return i; return i;
} }
} }
return 0xff; return 0xFF;
} }
void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot) void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot)
@@ -2223,7 +2213,7 @@ void ShiftEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
eventObject->currentCoords.y = y; eventObject->currentCoords.y = y;
} }
/*static*/ void SetEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y) static void SetEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
{ {
eventObject->previousCoords.x = x; eventObject->previousCoords.x = x;
eventObject->previousCoords.y = y; eventObject->previousCoords.y = y;
@@ -2296,6 +2286,7 @@ void UpdateEventObjectCoordsForCameraUpdate(void)
u8 GetEventObjectIdByXYZ(u16 x, u16 y, u8 z) u8 GetEventObjectIdByXYZ(u16 x, u16 y, u8 z)
{ {
u8 i; u8 i;
for (i = 0; i < EVENT_OBJECTS_COUNT; i++) for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{ {
if (gEventObjects[i].active) if (gEventObjects[i].active)
@@ -2327,9 +2318,8 @@ void UpdateEventObjectsForCameraUpdate(s16 x, s16 y)
u8 AddCameraObject(u8 linkedSpriteId) u8 AddCameraObject(u8 linkedSpriteId)
{ {
u8 spriteId; u8 spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4);
spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4);
gSprites[spriteId].invisible = TRUE; gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data[0] = linkedSpriteId; gSprites[spriteId].data[0] = linkedSpriteId;
return spriteId; return spriteId;
@@ -2354,11 +2344,9 @@ static void CameraObject_0(struct Sprite *sprite)
static void CameraObject_1(struct Sprite *sprite) static void CameraObject_1(struct Sprite *sprite)
{ {
s16 x; s16 x = gSprites[sprite->data[0]].pos1.x;
s16 y; s16 y = gSprites[sprite->data[0]].pos1.y;
y = gSprites[sprite->data[0]].pos1.y;
x = gSprites[sprite->data[0]].pos1.x;
sprite->data[2] = x - sprite->pos1.x; sprite->data[2] = x - sprite->pos1.x;
sprite->data[3] = y - sprite->pos1.y; sprite->data[3] = y - sprite->pos1.y;
sprite->pos1.x = x; sprite->pos1.x = x;
@@ -2375,13 +2363,13 @@ static void CameraObject_2(struct Sprite *sprite)
static struct Sprite *FindCameraObject(void) static struct Sprite *FindCameraObject(void)
{ {
u8 spriteId; u8 i;
for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++) for (i = 0; i < MAX_SPRITES; i++)
{ {
if (gSprites[spriteId].inUse && gSprites[spriteId].callback == ObjectCB_CameraObject) if (gSprites[i].inUse && gSprites[i].callback == ObjectCB_CameraObject)
{ {
return &gSprites[spriteId]; return &gSprites[i];
} }
} }
return NULL; return NULL;
@@ -2450,7 +2438,7 @@ u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
{ {
s16 i; s16 i;
for (i = MAX_SPRITES - 1; i > -1; i --) for (i = MAX_SPRITES - 1; i > -1; i--)
{ {
if (!gSprites[i].inUse) if (!gSprites[i].inUse)
{ {
@@ -2974,10 +2962,8 @@ u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
u8 TryGetTrainerEncounterDirection(struct EventObject *eventObject, u8 movementType) u8 TryGetTrainerEncounterDirection(struct EventObject *eventObject, u8 movementType)
{ {
s16 dx; s16 dx, dy;
s16 dy; s16 absdx, absdy;
s16 absdx;
s16 absdy;
if (!EventObjectIsTrainerAndCloseToPlayer(eventObject)) if (!EventObjectIsTrainerAndCloseToPlayer(eventObject))
{ {
@@ -4445,7 +4431,7 @@ bool8 CopyablePlayerMovement_GoSpeed1(struct EventObject *eventObject, struct Sp
{ {
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction)); EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
} }
eventObject->singleMovementActive = 1; eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2; sprite->data[1] = 2;
return TRUE; return TRUE;
} }
@@ -4464,7 +4450,7 @@ bool8 CopyablePlayerMovement_GoSpeed2(struct EventObject *eventObject, struct Sp
{ {
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction)); EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
} }
eventObject->singleMovementActive = 1; eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2; sprite->data[1] = 2;
return TRUE; return TRUE;
} }
@@ -4483,7 +4469,7 @@ bool8 CopyablePlayerMovement_Slide(struct EventObject *eventObject, struct Sprit
{ {
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction)); EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
} }
eventObject->singleMovementActive = 1; eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2; sprite->data[1] = 2;
return TRUE; return TRUE;
} }
@@ -4495,7 +4481,7 @@ bool8 cph_IM_DIFFERENT(struct EventObject *eventObject, struct Sprite *sprite, u
direction = playerDirection; direction = playerDirection;
direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction); direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
EventObjectSetSingleMovement(eventObject, sprite, GetJumpInPlaceMovementAction(direction)); EventObjectSetSingleMovement(eventObject, sprite, GetJumpInPlaceMovementAction(direction));
eventObject->singleMovementActive = 1; eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2; sprite->data[1] = 2;
return TRUE; return TRUE;
} }
@@ -4514,7 +4500,7 @@ bool8 CopyablePlayerMovement_GoSpeed4(struct EventObject *eventObject, struct Sp
{ {
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction)); EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
} }
eventObject->singleMovementActive = 1; eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2; sprite->data[1] = 2;
return TRUE; return TRUE;
} }
@@ -4535,7 +4521,7 @@ bool8 CopyablePlayerMovement_Jump(struct EventObject *eventObject, struct Sprite
{ {
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction)); EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
} }
eventObject->singleMovementActive = 1; eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2; sprite->data[1] = 2;
return TRUE; return TRUE;
} }
@@ -7431,7 +7417,7 @@ bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct EventObject *eventObject,
bool8 MovementAction_AcroWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite) bool8 MovementAction_AcroWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{ {
sub_8096200(eventObject, sprite, DIR_EAST, 1); sub_8096200(eventObject, sprite, DIR_EAST, 1);
return MovementAction_AcroWheelieMoveRight_Step1(eventObject, sprite); return MovementAction_AcroWheelieMoveRight_Step1(eventObject, sprite);
} }
@@ -7486,7 +7472,7 @@ bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct EventObject *eventObject,
bool8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite) bool8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{ {
sub_8096330(eventObject, sprite, DIR_WEST, 1); sub_8096330(eventObject, sprite, DIR_WEST, 1);
return MovementAction_AcroEndWheelieMoveLeft_Step1(eventObject, sprite); return MovementAction_AcroEndWheelieMoveLeft_Step1(eventObject, sprite);
} }
@@ -7502,7 +7488,7 @@ bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct EventObject *eventObjec
bool8 MovementAction_AcroEndWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite) bool8 MovementAction_AcroEndWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{ {
sub_8096330(eventObject, sprite, DIR_EAST, 1); sub_8096330(eventObject, sprite, DIR_EAST, 1);
return MovementAction_AcroEndWheelieMoveRight_Step1(eventObject, sprite); return MovementAction_AcroEndWheelieMoveRight_Step1(eventObject, sprite);
} }
@@ -7574,15 +7560,13 @@ static void TryEnableEventObjectAnim(struct EventObject *eventObject, struct Spr
static void UpdateEventObjectVisibility(struct EventObject *eventObject, struct Sprite *sprite) static void UpdateEventObjectVisibility(struct EventObject *eventObject, struct Sprite *sprite)
{ {
sub_8096530(eventObject, sprite); sub_8096530(eventObject, sprite);
npc_update_obj_anim_flag(eventObject, sprite); UpdateEventObjSpriteVisibility(eventObject, sprite);
} }
static void sub_8096530(struct EventObject *eventObject, struct Sprite *sprite) static void sub_8096530(struct EventObject *eventObject, struct Sprite *sprite)
{ {
u16 x; u16 x, y;
u16 y; u16 x2, y2;
u16 x2;
u16 y2;
const struct EventObjectGraphicsInfo *graphicsInfo; const struct EventObjectGraphicsInfo *graphicsInfo;
eventObject->offScreen = FALSE; eventObject->offScreen = FALSE;
@@ -7611,7 +7595,7 @@ static void sub_8096530(struct EventObject *eventObject, struct Sprite *sprite)
} }
} }
static void npc_update_obj_anim_flag(struct EventObject *eventObject, struct Sprite *sprite) static void UpdateEventObjSpriteVisibility(struct EventObject *eventObject, struct Sprite *sprite)
{ {
sprite->invisible = FALSE; sprite->invisible = FALSE;
if (eventObject->invisible || eventObject->offScreen) if (eventObject->invisible || eventObject->offScreen)
@@ -7620,7 +7604,7 @@ static void npc_update_obj_anim_flag(struct EventObject *eventObject, struct Spr
} }
} }
/*static*/ void GetAllGroundEffectFlags_OnSpawn(struct EventObject *eventObj, u32 *flags) static void GetAllGroundEffectFlags_OnSpawn(struct EventObject *eventObj, u32 *flags)
{ {
EventObjectUpdateMetatileBehaviors(eventObj); EventObjectUpdateMetatileBehaviors(eventObj);
GetGroundEffectFlags_Reflection(eventObj, flags); GetGroundEffectFlags_Reflection(eventObj, flags);
@@ -7646,7 +7630,7 @@ static void GetAllGroundEffectFlags_OnBeginStep(struct EventObject *eventObj, u3
GetGroundEffectFlags_HotSprings(eventObj, flags); GetGroundEffectFlags_HotSprings(eventObj, flags);
} }
/*static*/ void GetAllGroundEffectFlags_OnFinishStep(struct EventObject *eventObj, u32 *flags) static void GetAllGroundEffectFlags_OnFinishStep(struct EventObject *eventObj, u32 *flags)
{ {
EventObjectUpdateMetatileBehaviors(eventObj); EventObjectUpdateMetatileBehaviors(eventObj);
GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags); GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags);
@@ -7926,7 +7910,7 @@ u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
return 0; return 0;
} }
void EventObjectSetSpriteOamTableForLongGrass(struct EventObject *eventObj, struct Sprite *sprite) static void SetEventObjectSpriteOamTableForLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
{ {
if (eventObj->disableCoveringGroundEffects) if (eventObj->disableCoveringGroundEffects)
return; return;
@@ -7979,7 +7963,7 @@ static const u8 sEventObjectPriorities_08376070[] = {
1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
}; };
void EventObjectUpdateZCoordAndPriority(struct EventObject *eventObj, struct Sprite *sprite) void UpdateEventObjectZCoordAndPriority(struct EventObject *eventObj, struct Sprite *sprite)
{ {
if (eventObj->fixedPriority) if (eventObj->fixedPriority)
return; return;
@@ -8202,7 +8186,11 @@ void GroundEffect_JumpOnTallGrass(struct EventObject *eventObj, struct Sprite *s
FieldEffectStart(FLDEFF_JUMP_TALL_GRASS); FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
spriteId = FindTallGrassFieldEffectSpriteId( spriteId = FindTallGrassFieldEffectSpriteId(
eventObj->localId, eventObj->mapNum, eventObj->mapGroup, eventObj->currentCoords.x, eventObj->currentCoords.y); eventObj->localId,
eventObj->mapNum,
eventObj->mapGroup,
eventObj->currentCoords.x,
eventObj->currentCoords.y);
if (spriteId == MAX_SPRITES) if (spriteId == MAX_SPRITES)
GroundEffect_SpawnOnTallGrass(eventObj, sprite); GroundEffect_SpawnOnTallGrass(eventObj, sprite);
@@ -8284,7 +8272,7 @@ static void (*const sGroundEffectFuncs[])(struct EventObject *eventObj, struct S
GroundEffect_Seaweed GroundEffect_Seaweed
}; };
/*static*/ void DoFlaggedGroundEffects(struct EventObject *eventObj, struct Sprite *sprite, u32 flags) static void DoFlaggedGroundEffects(struct EventObject *eventObj, struct Sprite *sprite, u32 flags)
{ {
u8 i; u8 i;
@@ -8325,9 +8313,9 @@ static void DoGroundEffects_OnSpawn(struct EventObject *eventObj, struct Sprite
if (eventObj->triggerGroundEffectsOnMove) if (eventObj->triggerGroundEffectsOnMove)
{ {
flags = 0; flags = 0;
EventObjectUpdateZCoordAndPriority(eventObj, sprite); UpdateEventObjectZCoordAndPriority(eventObj, sprite);
GetAllGroundEffectFlags_OnSpawn(eventObj, &flags); GetAllGroundEffectFlags_OnSpawn(eventObj, &flags);
EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite); SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
DoFlaggedGroundEffects(eventObj, sprite, flags); DoFlaggedGroundEffects(eventObj, sprite, flags);
eventObj->triggerGroundEffectsOnMove = 0; eventObj->triggerGroundEffectsOnMove = 0;
eventObj->disableCoveringGroundEffects = 0; eventObj->disableCoveringGroundEffects = 0;
@@ -8341,9 +8329,9 @@ static void DoGroundEffects_OnBeginStep(struct EventObject *eventObj, struct Spr
if (eventObj->triggerGroundEffectsOnMove) if (eventObj->triggerGroundEffectsOnMove)
{ {
flags = 0; flags = 0;
EventObjectUpdateZCoordAndPriority(eventObj, sprite); UpdateEventObjectZCoordAndPriority(eventObj, sprite);
GetAllGroundEffectFlags_OnBeginStep(eventObj, &flags); GetAllGroundEffectFlags_OnBeginStep(eventObj, &flags);
EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite); SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
filters_out_some_ground_effects(eventObj, &flags); filters_out_some_ground_effects(eventObj, &flags);
DoFlaggedGroundEffects(eventObj, sprite, flags); DoFlaggedGroundEffects(eventObj, sprite, flags);
eventObj->triggerGroundEffectsOnMove = 0; eventObj->triggerGroundEffectsOnMove = 0;
@@ -8358,9 +8346,9 @@ static void DoGroundEffects_OnFinishStep(struct EventObject *eventObj, struct Sp
if (eventObj->triggerGroundEffectsOnStop) if (eventObj->triggerGroundEffectsOnStop)
{ {
flags = 0; flags = 0;
EventObjectUpdateZCoordAndPriority(eventObj, sprite); UpdateEventObjectZCoordAndPriority(eventObj, sprite);
GetAllGroundEffectFlags_OnFinishStep(eventObj, &flags); GetAllGroundEffectFlags_OnFinishStep(eventObj, &flags);
EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite); SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
FilterOutStepOnPuddleGroundEffectIfJumping(eventObj, &flags); FilterOutStepOnPuddleGroundEffectIfJumping(eventObj, &flags);
DoFlaggedGroundEffects(eventObj, sprite, flags); DoFlaggedGroundEffects(eventObj, sprite, flags);
eventObj->triggerGroundEffectsOnStop = 0; eventObj->triggerGroundEffectsOnStop = 0;
@@ -8393,11 +8381,11 @@ void FreezeEventObjects(void)
FreezeEventObject(&gEventObjects[i]); FreezeEventObject(&gEventObjects[i]);
} }
void FreezeEventObjectsExceptOne(u8 a1) void FreezeEventObjectsExceptOne(u8 eventObjectId)
{ {
u8 i; u8 i;
for (i = 0; i < EVENT_OBJECTS_COUNT; i++) for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
if (i != a1 && gEventObjects[i].active && i != gPlayerAvatar.eventObjectId) if (i != eventObjectId && gEventObjects[i].active && i != gPlayerAvatar.eventObjectId)
FreezeEventObject(&gEventObjects[i]); FreezeEventObject(&gEventObjects[i]);
} }
@@ -8419,44 +8407,44 @@ void UnfreezeEventObjects(void)
UnfreezeEventObject(&gEventObjects[i]); UnfreezeEventObject(&gEventObjects[i]);
} }
void Step1(struct Sprite *sprite, u8 dir) static void Step1(struct Sprite *sprite, u8 dir)
{ {
sprite->pos1.x += sDirectionToVectors[dir].x; sprite->pos1.x += sDirectionToVectors[dir].x;
sprite->pos1.y += sDirectionToVectors[dir].y; sprite->pos1.y += sDirectionToVectors[dir].y;
} }
void Step2(struct Sprite *sprite, u8 dir) static void Step2(struct Sprite *sprite, u8 dir)
{ {
sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x; sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x;
sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y; sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y;
} }
void Step3(struct Sprite *sprite, u8 dir) static void Step3(struct Sprite *sprite, u8 dir)
{ {
sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x; sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x;
sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y; sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y;
} }
void Step4(struct Sprite *sprite, u8 dir) static void Step4(struct Sprite *sprite, u8 dir)
{ {
sprite->pos1.x += 4 * (u16) sDirectionToVectors[dir].x; sprite->pos1.x += 4 * (u16) sDirectionToVectors[dir].x;
sprite->pos1.y += 4 * (u16) sDirectionToVectors[dir].y; sprite->pos1.y += 4 * (u16) sDirectionToVectors[dir].y;
} }
void Step8(struct Sprite *sprite, u8 dir) static void Step8(struct Sprite *sprite, u8 dir)
{ {
sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x; sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x;
sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y; sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y;
} }
void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3) static void oamt_npc_ministep_reset(struct Sprite *sprite, u8 direction, u8 a3)
{ {
sprite->data[3] = a2; sprite->data[3] = direction;
sprite->data[4] = a3; sprite->data[4] = a3;
sprite->data[5] = 0; sprite->data[5] = 0;
} }
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir); typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 direction);
static const SpriteStepFunc gUnknown_0850E6C4[] = { static const SpriteStepFunc gUnknown_0850E6C4[] = {
Step1, Step1,
@@ -8536,9 +8524,9 @@ bool8 obj_npc_ministep(struct Sprite *sprite)
return TRUE; return TRUE;
} }
void sub_80976DC(struct Sprite *sprite, u8 a2) void sub_80976DC(struct Sprite *sprite, u8 direction)
{ {
sprite->data[3] = a2; sprite->data[3] = direction;
sprite->data[4] = 0; sprite->data[4] = 0;
sprite->data[5] = 0; sprite->data[5] = 0;
} }
@@ -8559,7 +8547,7 @@ bool8 sub_80976EC(struct Sprite *sprite)
return FALSE; return FALSE;
} }
const s8 gUnknown_0850E772[] = { static const s8 gUnknown_0850E772[] = {
1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 1, 2,
2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1,
@@ -8571,7 +8559,7 @@ const s8 gUnknown_0850E772[] = {
0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
}; };
const s8 gUnknown_0850E7BA[] = { static const s8 gUnknown_0850E7BA[] = {
0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0,
1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1,
@@ -8741,7 +8729,7 @@ u8 sub_80978E4(struct Sprite *sprite)
return v2; return v2;
} }
void SetMovementDelay(struct Sprite *sprite, s16 timer) static void SetMovementDelay(struct Sprite *sprite, s16 timer)
{ {
sprite->data[3] = timer; sprite->data[3] = timer;
} }
@@ -8756,11 +8744,11 @@ static bool8 WaitForMovementDelay(struct Sprite *sprite)
return FALSE; return FALSE;
} }
void SetAndStartSpriteAnim(struct Sprite *sprite, u8 a2, u8 a3) void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex)
{ {
sprite->animNum = a2; sprite->animNum = animNum;
sprite->animPaused = 0 ; sprite->animPaused = FALSE;
SeekSpriteAnim(sprite, a3); SeekSpriteAnim(sprite, animCmdIndex);
} }
bool8 SpriteAnimEnded(struct Sprite *sprite) bool8 SpriteAnimEnded(struct Sprite *sprite)
@@ -8798,7 +8786,7 @@ void UpdateEventObjectSpriteVisibility(struct Sprite *sprite, bool8 invisible)
sprite->invisible = TRUE; sprite->invisible = TRUE;
} }
void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *sprite) static void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *sprite)
{ {
sub_8097D68(sprite); sub_8097D68(sprite);
SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1); SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
@@ -8845,15 +8833,15 @@ void sub_8097BB4(u8 var1, u8 graphicsId)
if(spriteId != MAX_SPRITES) if(spriteId != MAX_SPRITES)
{ {
struct Sprite *sprite = &gSprites[spriteId]; struct Sprite *sprite = &gSprites[spriteId];
const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(graphicsId); const struct EventObjectGraphicsInfo *graphicsInfo = GetEventObjectGraphicsInfo(graphicsId);
u16 tileNum = sprite->oam.tileNum; u16 tileNum = sprite->oam.tileNum;
sprite->oam = *gfxInfo->oam; sprite->oam = *graphicsInfo->oam;
sprite->oam.tileNum = tileNum; sprite->oam.tileNum = tileNum;
sprite->oam.paletteNum = gfxInfo->paletteSlot; sprite->oam.paletteNum = graphicsInfo->paletteSlot;
sprite->images = gfxInfo->images; sprite->images = graphicsInfo->images;
if(gfxInfo->subspriteTables == NULL) if(graphicsInfo->subspriteTables == NULL)
{ {
sprite->subspriteTables = NULL; sprite->subspriteTables = NULL;
sprite->subspriteTableNum = 0; sprite->subspriteTableNum = 0;
@@ -8861,7 +8849,7 @@ void sub_8097BB4(u8 var1, u8 graphicsId)
} }
else else
{ {
SetSubspriteTables(sprite, gfxInfo->subspriteTables); SetSubspriteTables(sprite, graphicsInfo->subspriteTables);
sprite->subspriteMode = 2; sprite->subspriteMode = 2;
} }
StartSpriteAnim(sprite, 0); StartSpriteAnim(sprite, 0);
@@ -8986,9 +8974,9 @@ void DoShadowFieldEffect(struct EventObject *eventObject)
static void DoRippleFieldEffect(struct EventObject *eventObject, struct Sprite *sprite) static void DoRippleFieldEffect(struct EventObject *eventObject, struct Sprite *sprite)
{ {
const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId); const struct EventObjectGraphicsInfo *graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
gFieldEffectArguments[0] = sprite->pos1.x; gFieldEffectArguments[0] = sprite->pos1.x;
gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2; gFieldEffectArguments[1] = sprite->pos1.y + (graphicsInfo->height >> 1) - 2;
gFieldEffectArguments[2] = 151; gFieldEffectArguments[2] = 151;
gFieldEffectArguments[3] = 3; gFieldEffectArguments[3] = 3;
FieldEffectStart(FLDEFF_RIPPLE); FieldEffectStart(FLDEFF_RIPPLE);