summaryrefslogtreecommitdiff
path: root/src/field_effect_helpers.c
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-06-25 17:50:27 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-06-25 17:50:27 -0500
commit605f8ac1141daf66d3428923e004f82f5a5e1594 (patch)
treea3e5fae5d271175c7f10b6b455fcdc7f0fdd553e /src/field_effect_helpers.c
parente88e39d5fda1644f77e41fd652d4310612da7532 (diff)
parent659437f07a44b6f560bb58d6c12d141ed8ba7643 (diff)
Merge branch 'master' into contest_link_80C2020
Diffstat (limited to 'src/field_effect_helpers.c')
-rw-r--r--src/field_effect_helpers.c590
1 files changed, 296 insertions, 294 deletions
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index bc4a1770e..84f340b35 100644
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -2,156 +2,162 @@
#include "sprite.h"
#include "fieldmap.h"
#include "metatile_behavior.h"
-#include "constants/songs.h"
#include "sound.h"
#include "event_object_movement.h"
#include "field_camera.h"
#include "field_weather.h"
#include "field_effect.h"
#include "field_effect_helpers.h"
+#include "constants/field_effects.h"
+#include "constants/songs.h"
-static void sub_81269E0(struct Sprite *);
-static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite);
-static void npc_pal_op_A(struct MapObject *, u8);
-static void npc_pal_op_B(struct MapObject *, u8);
-static void sub_81275A0(struct Sprite *);
-static void sub_81275C4(struct Sprite *);
-static void sub_8127DA0(struct Sprite *);
-static void sub_8127DD0(struct Sprite *);
-static void sub_8127E30(struct Sprite *);
+static void UpdateObjectReflectionSprite(struct Sprite *);
+static void LoadObjectReflectionPalette(struct EventObject *eventObject, struct Sprite *sprite);
+static void LoadObjectHighBridgeReflectionPalette(struct EventObject *, u8);
+static void LoadObjectRegularReflectionPalette(struct EventObject *, u8);
+static void FadeFootprintsTireTracks_Step0(struct Sprite *);
+static void FadeFootprintsTireTracks_Step1(struct Sprite *);
+static void UpdateAshFieldEffect_Step0(struct Sprite *);
+static void UpdateAshFieldEffect_Step1(struct Sprite *);
+static void UpdateAshFieldEffect_Step2(struct Sprite *);
static void sub_812882C(struct Sprite *, u8, u8);
-static void sub_81278D8(struct Sprite *);
-static void sub_8127FD4(struct MapObject *, struct Sprite *);
-static void sub_812800C(struct MapObject *, struct Sprite *);
-static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
+static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *);
+static void sub_8127FD4(struct EventObject *, struct Sprite *);
+static void sub_812800C(struct EventObject *, struct Sprite *);
+static void sub_81280A0(struct EventObject *, struct Sprite *, struct Sprite *);
static void sub_8128174(struct Sprite *);
static u32 ShowDisguiseFieldEffect(u8, u8, u8);
-void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
+void InitObjectReflectionSprite(struct EventObject *eventObject, struct Sprite *sprite, bool8 stillReflection)
{
- struct Sprite *newSprite;
+ struct Sprite *reflectionSprite;
- newSprite = &gSprites[obj_unfreeze(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
- newSprite->callback = sub_81269E0;
- newSprite->oam.priority = 3;
- newSprite->oam.paletteNum = gUnknown_0830FD14[newSprite->oam.paletteNum];
- newSprite->usingSheet = TRUE;
- newSprite->anims = gDummySpriteAnimTable;
- StartSpriteAnim(newSprite, 0);
- newSprite->affineAnims = gDummySpriteAffineAnimTable;
- newSprite->affineAnimBeginning = TRUE;
- newSprite->subspriteMode = 0;
- newSprite->data[0] = sprite->data[0];
- newSprite->data[1] = mapObject->localId;
- newSprite->data[7] = flag;
- npc_pal_op(mapObject, newSprite);
- if (!flag)
- {
- newSprite->oam.affineMode = 1;
- }
+ reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
+ reflectionSprite->callback = UpdateObjectReflectionSprite;
+ reflectionSprite->oam.priority = 3;
+ reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum];
+ reflectionSprite->usingSheet = TRUE;
+ reflectionSprite->anims = gDummySpriteAnimTable;
+ StartSpriteAnim(reflectionSprite, 0);
+ reflectionSprite->affineAnims = gDummySpriteAffineAnimTable;
+ reflectionSprite->affineAnimBeginning = TRUE;
+ reflectionSprite->subspriteMode = SUBSPRITES_OFF;
+ reflectionSprite->data[0] = sprite->data[0];
+ reflectionSprite->data[1] = eventObject->localId;
+ reflectionSprite->data[7] = stillReflection;
+ LoadObjectReflectionPalette(eventObject, reflectionSprite);
+
+ if (!stillReflection)
+ reflectionSprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
}
-static s16 sub_81268D0(struct MapObject *mapObject)
+static s16 GetReflectionVerticalOffset(struct EventObject *eventObject)
{
- return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2;
+ return GetEventObjectGraphicsInfo(eventObject->graphicsId)->height - 2;
}
-static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite)
+static void LoadObjectReflectionPalette(struct EventObject *eventObject, struct Sprite *sprite)
{
- u8 whichElement;
- u16 unk_8041e2c[] = {0x0c, 0x1c, 0x2c};
+ u8 bridgeType;
+ u16 bridgeReflectionVerticalOffsets[] = { 12, 28, 44 };
sprite->data[2] = 0;
- if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E))))
+ if (!GetEventObjectGraphicsInfo(eventObject->graphicsId)->disableReflectionPaletteLoad && ((bridgeType = MetatileBehavior_GetBridgeType(eventObject->previousMetatileBehavior)) || (bridgeType = MetatileBehavior_GetBridgeType(eventObject->currentMetatileBehavior))))
{
- sprite->data[2] = unk_8041e2c[whichElement - 1];
- npc_pal_op_A(mapObject, sprite->oam.paletteNum);
+ sprite->data[2] = bridgeReflectionVerticalOffsets[bridgeType - 1];
+ LoadObjectHighBridgeReflectionPalette(eventObject, sprite->oam.paletteNum);
}
else
{
- npc_pal_op_B(mapObject, sprite->oam.paletteNum);
+ LoadObjectRegularReflectionPalette(eventObject, sprite->oam.paletteNum);
}
}
-static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum)
+static void LoadObjectRegularReflectionPalette(struct EventObject *eventObject, u8 paletteIndex)
{
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- if (graphicsInfo->paletteTag2 != 0x11ff)
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ if (graphicsInfo->bridgeReflectionPaletteTag != 0x11ff)
{
if (graphicsInfo->paletteSlot == 0)
{
- npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum);
+ LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
}
else if (graphicsInfo->paletteSlot == 10)
{
- npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
}
else
{
- pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum);
+ PatchObjectPalette(GetObjectPaletteTag(paletteIndex), paletteIndex);
}
- UpdateSpritePaletteWithWeather(paletteNum);
+ UpdateSpritePaletteWithWeather(paletteIndex);
}
}
-static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum)
+// When walking on a bridge high above water (Route 120), the reflection is a solid dark blue color.
+// This is so the sprite blends in with the dark water metatile underneath the bridge.
+static void LoadObjectHighBridgeReflectionPalette(struct EventObject *eventObject, u8 paletteNum)
{
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- if (graphicsInfo->paletteTag2 != 0x11ff)
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ if (graphicsInfo->bridgeReflectionPaletteTag != 0x11ff)
{
- pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum);
+ PatchObjectPalette(graphicsInfo->bridgeReflectionPaletteTag, paletteNum);
UpdateSpritePaletteWithWeather(paletteNum);
}
}
-static void sub_81269E0(struct Sprite *sprite)
+static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
{
- struct MapObject *mapObject;
- struct Sprite *oldSprite;
+ struct EventObject *eventObject;
+ struct Sprite *mainSprite;
- mapObject = &gMapObjects[sprite->data[0]];
- oldSprite = &gSprites[mapObject->spriteId];
- if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data[1])
+ eventObject = &gEventObjects[reflectionSprite->data[0]];
+ mainSprite = &gSprites[eventObject->spriteId];
+ if (!eventObject->active || !eventObject->hasReflection || eventObject->localId != reflectionSprite->data[1])
{
- sprite->inUse = FALSE;
+ reflectionSprite->inUse = FALSE;
}
else
{
- sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum];
- sprite->oam.shape = oldSprite->oam.shape;
- sprite->oam.size = oldSprite->oam.size;
- sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10;
- sprite->oam.tileNum = oldSprite->oam.tileNum;
- sprite->subspriteTables = oldSprite->subspriteTables;
- sprite->subspriteTableNum = oldSprite->subspriteTableNum;
- sprite->invisible = oldSprite->invisible;
- sprite->pos1.x = oldSprite->pos1.x;
- sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data[2];
- sprite->centerToCornerVecX = oldSprite->centerToCornerVecX;
- sprite->centerToCornerVecY = oldSprite->centerToCornerVecY;
- sprite->pos2.x = oldSprite->pos2.x;
- sprite->pos2.y = -oldSprite->pos2.y;
- sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled;
- if (sprite->data[7] == FALSE)
+ reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[mainSprite->oam.paletteNum];
+ reflectionSprite->oam.shape = mainSprite->oam.shape;
+ reflectionSprite->oam.size = mainSprite->oam.size;
+ reflectionSprite->oam.matrixNum = mainSprite->oam.matrixNum | 0x10;
+ reflectionSprite->oam.tileNum = mainSprite->oam.tileNum;
+ reflectionSprite->subspriteTables = mainSprite->subspriteTables;
+ reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum;
+ reflectionSprite->invisible = mainSprite->invisible;
+ reflectionSprite->pos1.x = mainSprite->pos1.x;
+ // reflectionSprite->data[2] holds an additional vertical offset, used by the high bridges on Route 120
+ reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(eventObject) + reflectionSprite->data[2];
+ reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX;
+ reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY;
+ reflectionSprite->pos2.x = mainSprite->pos2.x;
+ reflectionSprite->pos2.y = -mainSprite->pos2.y;
+ reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled;
+
+ // Check if the reflection is not still.
+ if (reflectionSprite->data[7] == FALSE)
{
- sprite->oam.matrixNum = 0;
- if (oldSprite->oam.matrixNum & 0x8)
- {
- sprite->oam.matrixNum = 1;
- }
+ // Sets the reflection sprite's rot/scale matrix to the appropriate
+ // matrix based on whether or not the main sprite is horizontally flipped.
+ // If the sprite is facing to the east, then it is flipped, and its matrixNum is 8.
+ reflectionSprite->oam.matrixNum = 0;
+ if (mainSprite->oam.matrixNum & 0x8)
+ reflectionSprite->oam.matrixNum = 1;
}
}
}
-u8 sub_8126B54(void)
+u8 CreateWarpArrowSprite(void)
{
u8 spriteId;
struct Sprite *sprite;
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8], 0, 0, 0x52);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -162,12 +168,12 @@ u8 sub_8126B54(void)
return spriteId;
}
-void objid_set_invisible(u8 spriteId)
+void SetSpriteInvisible(u8 spriteId)
{
gSprites[spriteId].invisible = TRUE;
}
-void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
+void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y)
{
s16 x2;
s16 y2;
@@ -183,18 +189,18 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
sprite->invisible = FALSE;
sprite->data[0] = x;
sprite->data[1] = y;
- StartSpriteAnim(sprite, animNum - 1);
+ StartSpriteAnim(sprite, direction - 1);
}
}
-const u8 gUnknown_08401E32[] = {
+const u8 gShadowEffectTemplateIds[] = {
0,
1,
2,
3
};
-const u16 gUnknown_08401E36[] = {
+const u16 gShadowVerticalOffsets[] = {
4,
4,
4,
@@ -203,42 +209,47 @@ const u16 gUnknown_08401E36[] = {
u32 FldEff_Shadow(void)
{
- u8 mapObjectId;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 eventObjectId;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
u8 spriteId;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94);
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[eventObjectId].graphicsId);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].coordOffsetEnabled = TRUE;
gSprites[spriteId].data[0] = gFieldEffectArguments[0];
gSprites[spriteId].data[1] = gFieldEffectArguments[1];
gSprites[spriteId].data[2] = gFieldEffectArguments[2];
- gSprites[spriteId].data[3] = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize];
+ gSprites[spriteId].data[3] = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize];
}
return 0;
}
-void oamc_shadow(struct Sprite *sprite)
+void UpdateShadowFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
struct Sprite *linkedSprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId))
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId))
{
FieldEffectStop(sprite, FLDEFF_SHADOW);
}
else
{
- mapObject = &gMapObjects[mapObjectId];
- linkedSprite = &gSprites[mapObject->spriteId];
+ eventObject = &gEventObjects[eventObjectId];
+ linkedSprite = &gSprites[eventObject->spriteId];
sprite->oam.priority = linkedSprite->oam.priority;
sprite->pos1.x = linkedSprite->pos1.x;
sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3];
- if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F))
+ if (!eventObject->active || !eventObject->hasShadow
+ || MetatileBehavior_IsPokeGrass(eventObject->currentMetatileBehavior)
+ || MetatileBehavior_IsSurfableWaterOrUnderwater(eventObject->currentMetatileBehavior)
+ || MetatileBehavior_IsSurfableWaterOrUnderwater(eventObject->previousMetatileBehavior)
+ || MetatileBehavior_IsReflective(eventObject->currentMetatileBehavior)
+ || MetatileBehavior_IsReflective(eventObject->previousMetatileBehavior))
{
FieldEffectStop(sprite, FLDEFF_SHADOW);
}
@@ -275,14 +286,14 @@ u32 FldEff_TallGrass(void)
return 0;
}
-void unc_grass_normal(struct Sprite *sprite)
+void UpdateTallGrassFieldEffect(struct Sprite *sprite)
{
u8 mapNum;
u8 mapGroup;
u8 metatileBehavior;
u8 localId;
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
mapNum = sprite->data[5] >> 8;
mapGroup = sprite->data[5];
@@ -296,23 +307,21 @@ void unc_grass_normal(struct Sprite *sprite)
mapNum = sprite->data[3];
mapGroup = sprite->data[4];
metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]);
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
{
FieldEffectStop(sprite, FLDEFF_TALL_GRASS);
}
else
{
- mapObject = &gMapObjects[mapObjectId];
- if ((mapObject->coords2.x != sprite->data[1] || mapObject->coords2.y != sprite->data[2]) && (mapObject->coords3.x != sprite->data[1] || mapObject->coords3.y != sprite->data[2]))
- {
+ eventObject = &gEventObjects[eventObjectId];
+ if ((eventObject->currentCoords.x != sprite->data[1] || eventObject->currentCoords.y != sprite->data[2]) && (eventObject->previousCoords.x != sprite->data[1] || eventObject->previousCoords.y != sprite->data[2]))
sprite->data[7] = TRUE;
- }
+
metatileBehavior = 0;
if (sprite->animCmdIndex == 0)
- {
metatileBehavior = 4;
- }
- sub_806487C(sprite, 0);
+
+ UpdateEventObjectSpriteVisibility(sprite, 0);
sub_812882C(sprite, sprite->data[0], metatileBehavior);
}
}
@@ -335,7 +344,7 @@ u32 FldEff_JumpTallGrass(void)
return 0;
}
-u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
{
struct Sprite *sprite;
u8 i;
@@ -345,12 +354,11 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
if (gSprites[i].inUse)
{
sprite = &gSprites[i];
- if (sprite->callback == unc_grass_normal && (x == sprite->data[1] && y == sprite->data[2]) && (localId == (u8)(sprite->data[3] >> 8) && mapNum == (sprite->data[3] & 0xFF) && mapGroup == sprite->data[4]))
- {
+ if (sprite->callback == UpdateTallGrassFieldEffect && (x == sprite->data[1] && y == sprite->data[2]) && (localId == (u8)(sprite->data[3] >> 8) && mapNum == (sprite->data[3] & 0xFF) && mapGroup == sprite->data[4]))
return i;
- }
}
}
+
return MAX_SPRITES;
}
@@ -384,14 +392,14 @@ u32 FldEff_LongGrass(void)
return 0;
}
-void unc_grass_tall(struct Sprite *sprite)
+void UpdateLongGrassFieldEffect(struct Sprite *sprite)
{
u8 mapNum;
u8 mapGroup;
u8 metatileBehavior;
u8 localId;
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
mapNum = sprite->data[5] >> 8;
mapGroup = sprite->data[5];
@@ -405,18 +413,18 @@ void unc_grass_tall(struct Sprite *sprite)
mapNum = sprite->data[3];
mapGroup = sprite->data[4];
metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]);
- if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
{
FieldEffectStop(sprite, FLDEFF_LONG_GRASS);
}
else
{
- mapObject = &gMapObjects[mapObjectId];
- if ((mapObject->coords2.x != sprite->data[1] || mapObject->coords2.y != sprite->data[2]) && (mapObject->coords3.x != sprite->data[1] || mapObject->coords3.y != sprite->data[2]))
+ eventObject = &gEventObjects[eventObjectId];
+ if ((eventObject->currentCoords.x != sprite->data[1] || eventObject->currentCoords.y != sprite->data[2]) && (eventObject->previousCoords.x != sprite->data[1] || eventObject->previousCoords.y != sprite->data[2]))
{
sprite->data[7] = TRUE;
}
- sub_806487C(sprite, 0);
+ UpdateEventObjectSpriteVisibility(sprite, 0);
sub_812882C(sprite, sprite->data[0], 0);
}
}
@@ -441,44 +449,44 @@ u32 FldEff_JumpLongGrass(void)
u32 FldEff_ShortGrass(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &(gSprites[spriteId]);
sprite->coordOffsetEnabled = TRUE;
- sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->oam.priority = gSprites[eventObject->spriteId].oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[mapObject->spriteId].pos1.x;
- sprite->data[4] = gSprites[mapObject->spriteId].pos1.y;
+ sprite->data[3] = gSprites[eventObject->spriteId].pos1.x;
+ sprite->data[4] = gSprites[eventObject->spriteId].pos1.y;
}
return 0;
}
-void sub_8127334(struct Sprite *sprite)
+void UpdateShortGrassFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
+ u8 eventObjectId;
s16 x;
s16 y;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId) || !gEventObjects[eventObjectId].inShortGrass)
{
FieldEffectStop(sprite, FLDEFF_SHORT_GRASS);
}
else
{
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
- linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[eventObjectId].graphicsId);
+ linkedSprite = &gSprites[gEventObjects[eventObjectId].spriteId];
y = linkedSprite->pos1.y;
x = linkedSprite->pos1.x;
if (x != sprite->data[3] || y != sprite->data[4])
@@ -495,7 +503,7 @@ void sub_8127334(struct Sprite *sprite)
sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
sprite->subpriority = linkedSprite->subpriority - 1;
sprite->oam.priority = linkedSprite->oam.priority;
- sub_806487C(sprite, linkedSprite->invisible);
+ UpdateEventObjectSpriteVisibility(sprite, linkedSprite->invisible);
}
}
@@ -553,30 +561,30 @@ u32 FldEff_BikeTireTracks(void)
return spriteId;
}
-void (*const gUnknown_08401E40[])(struct Sprite *) = {
- sub_81275A0,
- sub_81275C4
+void (*const gFadeFootprintsTireTracksFuncs[])(struct Sprite *) = {
+ FadeFootprintsTireTracks_Step0,
+ FadeFootprintsTireTracks_Step1
};
-void sub_8127584(struct Sprite *sprite)
+void UpdateFootprintsTireTracksFieldEffect(struct Sprite *sprite)
{
- gUnknown_08401E40[sprite->data[0]](sprite);
+ gFadeFootprintsTireTracksFuncs[sprite->data[0]](sprite);
}
-static void sub_81275A0(struct Sprite *sprite)
+static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite)
{
+ // Wait 40 frames before the flickering starts.
if (++sprite->data[1] > 40)
- {
sprite->data[0] = 1;
- }
- sub_806487C(sprite, FALSE);
+
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
-static void sub_81275C4(struct Sprite *sprite)
+static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite)
{
sprite->invisible ^= 1;
- sprite->data[1] ++;
- sub_806487C(sprite, sprite->invisible);
+ sprite->data[1]++;
+ UpdateEventObjectSpriteVisibility(sprite, sprite->invisible);
if (sprite->data[1] > 56)
{
FieldEffectStop(sprite, sprite->data[7]);
@@ -585,22 +593,22 @@ static void sub_81275C4(struct Sprite *sprite)
u32 FldEff_Splash(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
- linkedSprite = &gSprites[mapObject->spriteId];
+ linkedSprite = &gSprites[eventObject->spriteId];
sprite->oam.priority = linkedSprite->oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
@@ -611,19 +619,19 @@ u32 FldEff_Splash(void)
return 0;
}
-void sub_81276B4(struct Sprite *sprite)
+void UpdateSplashFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
+ u8 eventObjectId;
- if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId))
+ if (sprite->animEnded || TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId))
{
FieldEffectStop(sprite, FLDEFF_SPLASH);
}
else
{
- sprite->pos1.x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
- sprite->pos1.y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
- sub_806487C(sprite, FALSE);
+ sprite->pos1.x = gSprites[gEventObjects[eventObjectId].spriteId].pos1.x;
+ sprite->pos1.y = gSprites[gEventObjects[eventObjectId].spriteId].pos1.y;
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
}
@@ -665,22 +673,22 @@ u32 FldEff_JumpBigSplash(void)
u32 FldEff_FeetInFlowingWater(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
sprite = &gSprites[spriteId];
- sprite->callback = sub_81278D8;
+ sprite->callback = UpdateFeetInFlowingWaterFieldEffect;
sprite->coordOffsetEnabled = TRUE;
- sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->oam.priority = gSprites[eventObject->spriteId].oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
@@ -692,28 +700,28 @@ u32 FldEff_FeetInFlowingWater(void)
return 0;
}
-static void sub_81278D8(struct Sprite *sprite)
+static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
+ u8 eventObjectId;
struct Sprite *linkedSprite;
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId) || !gEventObjects[eventObjectId].inShallowFlowingWater)
{
FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER);
}
else
{
- mapObject = &gMapObjects[mapObjectId];
- linkedSprite = &gSprites[mapObject->spriteId];
+ eventObject = &gEventObjects[eventObjectId];
+ linkedSprite = &gSprites[eventObject->spriteId];
sprite->pos1.x = linkedSprite->pos1.x;
sprite->pos1.y = linkedSprite->pos1.y;
sprite->subpriority = linkedSprite->subpriority;
- sub_806487C(sprite, FALSE);
- if (mapObject->coords2.x != sprite->data[3] || mapObject->coords2.y != sprite->data[4])
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
+ if (eventObject->currentCoords.x != sprite->data[3] || eventObject->currentCoords.y != sprite->data[4])
{
- sprite->data[3] = mapObject->coords2.x;
- sprite->data[4] = mapObject->coords2.y;
+ sprite->data[3] = eventObject->currentCoords.x;
+ sprite->data[4] = eventObject->currentCoords.y;
if (!sprite->invisible)
{
PlaySE(SE_MIZU);
@@ -740,46 +748,46 @@ u32 FldEff_Ripple(void)
u32 FldEff_HotSpringsWater(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
- sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->oam.priority = gSprites[eventObject->spriteId].oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[mapObject->spriteId].pos1.x;
- sprite->data[4] = gSprites[mapObject->spriteId].pos1.y;
+ sprite->data[3] = gSprites[eventObject->spriteId].pos1.x;
+ sprite->data[4] = gSprites[eventObject->spriteId].pos1.y;
}
return 0;
}
-void sub_8127A7C(struct Sprite *sprite)
+void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 eventObjectId;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId) || !gEventObjects[eventObjectId].inHotSprings)
{
FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER);
}
else
{
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
- linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[eventObjectId].graphicsId);
+ linkedSprite = &gSprites[gEventObjects[eventObjectId].spriteId];
sprite->pos1.x = linkedSprite->pos1.x;
sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8;
sprite->subpriority = linkedSprite->subpriority - 1;
- sub_806487C(sprite, FALSE);
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
}
@@ -851,7 +859,7 @@ u32 FldEff_Unknown22(void)
return 0;
}
-void ash(s16 x, s16 y, u16 c, s16 d)
+void StartAshFieldEffect(s16 x, s16 y, u16 c, s16 d)
{
gFieldEffectArguments[0] = x;
gFieldEffectArguments[1] = y;
@@ -886,44 +894,40 @@ u32 FldEff_Ash(void)
return 0;
}
-void (*const gUnknown_08401E48[])(struct Sprite *) = {
- sub_8127DA0,
- sub_8127DD0,
- sub_8127E30
+void (*const gAshFieldEffectFuncs[])(struct Sprite *) = {
+ UpdateAshFieldEffect_Step0,
+ UpdateAshFieldEffect_Step1,
+ UpdateAshFieldEffect_Step2
};
-void sub_8127D84(struct Sprite *sprite)
+void UpdateAshFieldEffect(struct Sprite *sprite)
{
- gUnknown_08401E48[sprite->data[0]](sprite);
+ gAshFieldEffectFuncs[sprite->data[0]](sprite);
}
-static void sub_8127DA0(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step0(struct Sprite *sprite)
{
sprite->invisible = TRUE;
sprite->animPaused = TRUE;
if (--sprite->data[4] == 0)
- {
sprite->data[0] = 1;
- }
}
-static void sub_8127DD0(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step1(struct Sprite *sprite)
{
sprite->invisible = FALSE;
sprite->animPaused = FALSE;
MapGridSetMetatileIdAt(sprite->data[1], sprite->data[2], sprite->data[3]);
CurrentMapDrawMetatileAt(sprite->data[1], sprite->data[2]);
- gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE;
+ gEventObjects[gPlayerAvatar.eventObjectId].triggerGroundEffectsOnMove = TRUE;
sprite->data[0] = 2;
}
-static void sub_8127E30(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step2(struct Sprite *sprite)
{
- sub_806487C(sprite, FALSE);
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
if (sprite->animEnded)
- {
FieldEffectStop(sprite, FLDEFF_ASH);
- }
}
u32 FldEff_SurfBlob(void)
@@ -978,37 +982,42 @@ static u8 sub_8127F70(struct Sprite *sprite)
return (sprite->data[0] & 0xF00) >> 8;
}
-void sub_8127F7C(struct Sprite *sprite)
+void UpdateSurfBlobFieldEffect(struct Sprite *sprite)
{
- struct MapObject *mapObject;
+ struct EventObject *eventObject;
struct Sprite *linkedSprite;
- mapObject = &gMapObjects[sprite->data[2]];
- linkedSprite = &gSprites[mapObject->spriteId];
- sub_8127FD4(mapObject, sprite);
- sub_812800C(mapObject, sprite);
- sub_81280A0(mapObject, linkedSprite, sprite);
+ eventObject = &gEventObjects[sprite->data[2]];
+ linkedSprite = &gSprites[eventObject->spriteId];
+ sub_8127FD4(eventObject, sprite);
+ sub_812800C(eventObject, sprite);
+ sub_81280A0(eventObject, linkedSprite, sprite);
sprite->oam.priority = linkedSprite->oam.priority;
}
-static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite)
+static void sub_8127FD4(struct EventObject *eventObject, struct Sprite *sprite)
{
- u8 unk_8041E54[] = {0, 0, 1, 2, 3};
+ u8 surfBlobDirectionAnims[] = {
+ 0, // DIR_NONE
+ 0, // DIR_SOUTH
+ 1, // DIR_NORTH
+ 2, // DIR_WEST
+ 3, // DIR_EAST
+ };
+
if (sub_8127F64(sprite) == 0)
- {
- StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]);
- }
+ StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[eventObject->movementDirection]);
}
#ifdef NONMATCHING
-static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
+static void sub_812800C(struct EventObject *eventObject, struct Sprite *sprite)
{
s16 x;
s16 y;
u8 i;
- x = mapObject->coords2.x;
- y = mapObject->coords2.y;
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
if (sprite->pos2.y == 0 && (x != sprite->data[6] || y != sprite->data[7]))
{
sprite->data[5] = sprite->pos2.y;
@@ -1024,7 +1033,7 @@ static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
}
}
#else
-__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
+NAKED static void sub_812800C(struct EventObject *eventObject, struct Sprite *sprite)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r8\n"
@@ -1105,7 +1114,7 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru
}
#endif
-static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite)
+static void sub_81280A0(struct EventObject *eventObject, struct Sprite *linkedSprite, struct Sprite *sprite)
{
u16 unk_8401E5A[] = {3, 7};
u8 v0 = sub_8127F5C(sprite);
@@ -1184,46 +1193,46 @@ u32 FldEff_Dust(void)
u32 FldEff_SandPile(void)
{
- u8 mapObjectId;
- struct MapObject *mapObject;
+ u8 eventObjectId;
+ struct EventObject *eventObject;
u8 spriteId;
struct Sprite *sprite;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
- mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
- mapObject = &gMapObjects[mapObjectId];
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ eventObject = &gEventObjects[eventObjectId];
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
- sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->oam.priority = gSprites[eventObject->spriteId].oam.priority;
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[mapObject->spriteId].pos1.x;
- sprite->data[4] = gSprites[mapObject->spriteId].pos1.y;
+ sprite->data[3] = gSprites[eventObject->spriteId].pos1.x;
+ sprite->data[4] = gSprites[eventObject->spriteId].pos1.y;
sprite->pos2.y = (graphicsInfo->height >> 1) - 2;
SeekSpriteAnim(sprite, 2);
}
return 0;
}
-void sub_81282E0(struct Sprite *sprite)
+void UpdateSandPileFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
+ u8 eventObjectId;
s16 x;
s16 y;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20)
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &eventObjectId) || !gEventObjects[eventObjectId].inSandPile)
{
FieldEffectStop(sprite, FLDEFF_SAND_PILE);
}
else
{
- y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
- x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
+ y = gSprites[gEventObjects[eventObjectId].spriteId].pos1.y;
+ x = gSprites[gEventObjects[eventObjectId].spriteId].pos1.x;
if (x != sprite->data[3] || y != sprite->data[4])
{
sprite->data[3] = x;
@@ -1235,8 +1244,8 @@ void sub_81282E0(struct Sprite *sprite)
}
sprite->pos1.x = x;
sprite->pos1.y = y;
- sprite->subpriority = gSprites[gMapObjects[mapObjectId].spriteId].subpriority;
- sub_806487C(sprite, FALSE);
+ sprite->subpriority = gSprites[gEventObjects[eventObjectId].spriteId].subpriority;
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
}
@@ -1256,12 +1265,12 @@ u32 FldEff_Bubbles(void)
return 0;
}
-void sub_8128410(struct Sprite *sprite)
+void UpdateBubblesFieldEffect(struct Sprite *sprite)
{
sprite->data[0] += 0x80;
sprite->data[0] &= 0x100;
sprite->pos1.y -= sprite->data[0] >> 8;
- sub_806487C(sprite, FALSE);
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
if (sprite->invisible || sprite->animEnded)
{
FieldEffectStop(sprite, FLDEFF_BUBBLES);
@@ -1288,19 +1297,19 @@ u32 FldEff_BerryTreeGrowthSparkle(void)
u32 FldEff_TreeDisguise(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 0x18, 0x04);
+ return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 24, 4);
}
u32 FldEff_MountainDisguise(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 0x19, 0x03);
+ return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 25, 3);
}
u32 FldEff_SandDisguise(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 0x1C, 0x02);
+ return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 28, 2);
}
static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
@@ -1308,7 +1317,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
u8 spriteId;
struct Sprite *sprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId))
+ if (TryGetEventObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId))
{
FieldEffectActiveListRemove(fldEff);
return MAX_SPRITES;
@@ -1327,19 +1336,19 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
return spriteId;
}
-void sub_81285AC(struct Sprite *sprite)
+void UpdateDisguiseFieldEffect(struct Sprite *sprite)
{
- u8 mapObjectId;
- const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 eventObjectId;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[2], sprite->data[3], sprite->data[4], &mapObjectId))
+ if (TryGetEventObjectIdByLocalIdAndMap(sprite->data[2], sprite->data[3], sprite->data[4], &eventObjectId))
{
FieldEffectStop(sprite, sprite->data[1]);
}
- // else {
- graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
- linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[eventObjectId].graphicsId);
+ linkedSprite = &gSprites[gEventObjects[eventObjectId].spriteId];
sprite->invisible = linkedSprite->invisible;
sprite->pos1.x = linkedSprite->pos1.x;
sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16;
@@ -1357,34 +1366,33 @@ void sub_81285AC(struct Sprite *sprite)
{
FieldEffectStop(sprite, sprite->data[1]);
}
- // }
}
-void sub_812869C(struct MapObject *mapObject)
+void sub_812869C(struct EventObject *eventObject)
{
- if (mapObject->mapobj_unk_21 == 1)
+ if (eventObject->directionSequenceIndex == 1)
{
- gSprites[mapObject->mapobj_unk_1A].data[0] ++;
+ gSprites[eventObject->fieldEffectSpriteId].data[0]++;
}
}
-bool8 sub_81286C4(struct MapObject *mapObject)
+bool8 sub_81286C4(struct EventObject *eventObject)
{
struct Sprite *sprite;
- if (mapObject->mapobj_unk_21 == 2)
+ if (eventObject->directionSequenceIndex == 2)
{
return TRUE;
}
- if (mapObject->mapobj_unk_21 == 0)
+ if (eventObject->directionSequenceIndex == 0)
{
return TRUE;
}
- sprite = &gSprites[mapObject->mapobj_unk_1A];
+ sprite = &gSprites[eventObject->fieldEffectSpriteId];
if (sprite->data[7])
{
- mapObject->mapobj_unk_21 = 2;
- sprite->data[0] ++;
+ eventObject->directionSequenceIndex = 2;
+ sprite->data[0]++;
return TRUE;
}
return FALSE;
@@ -1406,27 +1414,25 @@ u32 FldEff_Sparkle(void)
return 0;
}
-void sub_8128774(struct Sprite *sprite)
+void UpdateSparkleFieldEffect(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
if (sprite->animEnded)
{
sprite->invisible = TRUE;
- sprite->data[0] ++;
+ sprite->data[0]++;
}
+
if (sprite->data[0] == 0)
- {
return;
- }
}
- if (++ sprite->data[1] >= 35)
- {
+
+ if (++sprite->data[1] > 34)
FieldEffectStop(sprite, FLDEFF_SPARKLE);
- }
}
-void sub_81287C4(struct Sprite *sprite)
+void UpdateJumpLandingFieldEffect(struct Sprite *sprite)
{
if (sprite->animEnded)
{
@@ -1434,21 +1440,17 @@ void sub_81287C4(struct Sprite *sprite)
}
else
{
- sub_806487C(sprite, FALSE);
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
SetObjectSubpriorityByZCoord(sprite->data[0], sprite, 0);
}
}
-void sub_8128800(struct Sprite *sprite)
+void WaitFieldEffectSpriteAnim(struct Sprite *sprite)
{
if (sprite->animEnded)
- {
FieldEffectStop(sprite, sprite->data[0]);
- }
else
- {
- sub_806487C(sprite, FALSE);
- }
+ UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
#ifdef NONMATCHING
@@ -1462,18 +1464,18 @@ static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
s16 ly;
s16 ylo;
s16 yhi;
- struct MapObject *mapObject; // r4
- const struct MapObjectGraphicsInfo *graphicsInfo; // destroyed
+ struct EventObject *eventObject; // r4
+ const struct EventObjectGraphicsInfo *graphicsInfo; // destroyed
struct Sprite *linkedSprite; // r5
SetObjectSubpriorityByZCoord(z, sprite, offset);
for (i = 0; i < 16; i ++)
{
- mapObject = &gMapObjects[i];
- if (mapObject->active)
+ eventObject = &gEventObjects[i];
+ if (eventObject->active)
{
- graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- linkedSprite = &gSprites[mapObject->spriteId];
+ graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ linkedSprite = &gSprites[eventObject->spriteId];
xhi = sprite->pos1.x + sprite->centerToCornerVecX;
xlo = sprite->pos1.x - sprite->centerToCornerVecX;
lx = linkedSprite->pos1.x;
@@ -1496,7 +1498,7 @@ static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
}
}
#else
-__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+NAKED static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tadds r6, r0, 0\n"
@@ -1512,14 +1514,14 @@ __attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8
"\tlsls r0, r7, 3\n"
"\tadds r0, r7\n"
"\tlsls r0, 2\n"
- "\tldr r1, _081288DC @ =gMapObjects\n"
+ "\tldr r1, _081288DC @ =gEventObjects\n"
"\tadds r4, r0, r1\n"
"\tldrb r0, [r4]\n"
"\tlsls r0, 31\n"
"\tcmp r0, 0\n"
"\tbeq _081288E4\n"
"\tldrb r0, [r4, 0x5]\n"
- "\tbl GetFieldObjectGraphicsInfo\n"
+ "\tbl GetEventObjectGraphicsInfo\n"
"\tldrb r1, [r4, 0x4]\n"
"\tlsls r0, r1, 4\n"
"\tadds r0, r1\n"
@@ -1586,7 +1588,7 @@ __attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8
"\tstrb r0, [r2]\n"
"\tb _081288EE\n"
"\t.align 2, 0\n"
- "_081288DC: .4byte gMapObjects\n"
+ "_081288DC: .4byte gEventObjects\n"
"_081288E0: .4byte gSprites\n"
"_081288E4:\n"
"\tadds r0, r7, 0x1\n"