From 0c611fb2c9c2f62c8855d9337a45cb3890d19cb3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 12:01:30 -0400 Subject: SetUpReflection --- src/field_effect_helpers.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/field_effect_helpers.c (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c new file mode 100644 index 000000000..6b068a1b7 --- /dev/null +++ b/src/field_effect_helpers.c @@ -0,0 +1,46 @@ +// +// Created by scott on 9/9/2017. +// + + +// Includes +#include "global.h" +#include "sprite.h" +#include "field_map_obj.h" +#include "field_effect_helpers.h" + +// Static type declarations + +// Static RAM declarations + +// Static ROM declarations +/*static*/ void sub_81269E0(struct Sprite *); +/*static*/ void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite); + +// .rodata + +// .text + +void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) +{ + struct Sprite *newSprite; + + 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->data0 = sprite->data0; + newSprite->data1 = mapObject->localId; + newSprite->data7 = flag; + npc_pal_op(mapObject, newSprite); + if (!flag) + { + newSprite->oam.affineMode = 1; + } +} -- cgit v1.2.3 From add1b59b63bd00bd481333f6e68940cbc30208fc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 14:59:57 -0400 Subject: npc_pal_op and all data --- src/field_effect_helpers.c | 79 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 6b068a1b7..ea3d21710 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,6 +7,7 @@ #include "global.h" #include "sprite.h" #include "field_map_obj.h" +#include "metatile_behavior.h" #include "field_effect_helpers.h" // Static type declarations @@ -15,10 +16,63 @@ // Static ROM declarations /*static*/ void sub_81269E0(struct Sprite *); -/*static*/ void npc_pal_op(struct MapObject *mapObject, struct Sprite *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 *); // .rodata +const u8 UnusedEggString_8401E28[] = _("タマゴ"); + +const u16 gUnknown_08401E2C[] = { + 0x0c, + 0x1c, + 0x2c +}; + +const u8 gUnknown_08401E32[] = { + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E36[] = { + 4, + 4, + 4, + 16 +}; + +void (*const gUnknown_08401E40[])(struct Sprite *) = { + sub_81275A0, + sub_81275C4 +}; + +void (*const gUnknown_08401E48[])(struct Sprite *) = { + sub_8127DA0, + sub_8127DD0, + sub_8127E30 +}; + +const u8 gUnknown_08401E54[] = { + 0, + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E5A[] = { + 3, + 7 +}; + // .text void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) @@ -44,3 +98,26 @@ void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 f newSprite->oam.affineMode = 1; } } + +s16 sub_81268D0(struct MapObject *mapObject) +{ + return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2; +} + +static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 whichElement; + u16 unk_8041e2c[3]; + + memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C); + sprite->data2 = 0; + if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E)))) + { + sprite->data2 = unk_8041e2c[whichElement - 1]; + npc_pal_op_A(mapObject, sprite->oam.paletteNum); + } + else + { + npc_pal_op_B(mapObject, sprite->oam.paletteNum); + } +} -- cgit v1.2.3 From dd714a763a2c8c6f6fc07743ad16d099fef2037e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:05:48 -0400 Subject: npc_pal_op_B --- src/field_effect_helpers.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index ea3d21710..44403eef8 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,6 +7,7 @@ #include "global.h" #include "sprite.h" #include "field_map_obj.h" +#include "field_weather.h" #include "metatile_behavior.h" #include "field_effect_helpers.h" @@ -18,7 +19,7 @@ /*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 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 *); @@ -121,3 +122,26 @@ static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) npc_pal_op_B(mapObject, sprite->oam.paletteNum); } } + +static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum) +{ + const struct MapObjectGraphicsInfo *graphicsInfo; + + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (graphicsInfo->paletteTag2 != 0x11ff) + { + if (graphicsInfo->paletteSlot == 0) + { + npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum); + } + else if (graphicsInfo->paletteSlot == 10) + { + npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum); + } + else + { + pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum); + } + sub_807D78C(paletteNum); + } +} -- cgit v1.2.3 From 791f5a4451033421bdcf81543c744cf2ca981348 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:09:09 -0400 Subject: npc_pal_op_A --- src/field_effect_helpers.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 44403eef8..3771d24e4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -18,7 +18,7 @@ // Static ROM declarations /*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_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 *); @@ -145,3 +145,15 @@ static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum) sub_807D78C(paletteNum); } } + +static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) +{ + const struct MapObjectGraphicsInfo *graphicsInfo; + + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (graphicsInfo->paletteTag2 != 0x11ff) + { + pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum); + sub_807D78C(paletteNum); + } +} -- cgit v1.2.3 From 0ab00afabb9b494432306267e6af2520a89cdffa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:30:11 -0400 Subject: sub_81269E0 --- src/field_effect_helpers.c | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3771d24e4..63f3caa91 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -16,7 +16,7 @@ // Static RAM declarations // Static ROM declarations -/*static*/ void sub_81269E0(struct Sprite *); +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); @@ -157,3 +157,42 @@ static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) sub_807D78C(paletteNum); } } + +static void sub_81269E0(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *oldSprite; + + mapObject = &gMapObjects[sprite->data0]; + oldSprite = &gSprites[mapObject->spriteId]; + if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1) + { + sprite->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->data2; + 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->data7 == FALSE) + { + sprite->oam.matrixNum = 0; + if (oldSprite->oam.matrixNum & 0x8) + { + sprite->oam.matrixNum = 1; + } + } + } +} -- cgit v1.2.3 From b7843adeef78892090e8a2599aec30dc659120f1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:36:45 -0400 Subject: sub_8126B54 --- src/field_effect_helpers.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 63f3caa91..3607be0e4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -196,3 +196,19 @@ static void sub_81269E0(struct Sprite *sprite) } } } + +u8 sub_8126B54(void) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8], 0, 0, 0x52); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + sprite->invisible = TRUE; + } + return spriteId; +} -- cgit v1.2.3 From efbe634e4ad9f9997aa864deeba0434ce7620927 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:46:53 -0400 Subject: sub_8126BC4 --- src/field_effect_helpers.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3607be0e4..e77665eee 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -202,7 +202,7 @@ u8 sub_8126B54(void) u8 spriteId; struct Sprite *sprite; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8], 0, 0, 0x52); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; @@ -212,3 +212,28 @@ u8 sub_8126B54(void) } return spriteId; } + +void objid_set_invisible(u8 spriteId) +{ + gSprites[spriteId].invisible = TRUE; +} + +void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) +{ + s16 x2; + s16 y2; + struct Sprite *sprite; + + sprite = &gSprites[spriteId]; + if (sprite->invisible || sprite->data0 != x || sprite->data1 != y) + { + sub_80603CC(x, y, &x2, &y2); + sprite = &gSprites[spriteId]; + sprite->pos1.x = x2 + 8; + sprite->pos1.y = y2 + 8; + sprite->invisible = FALSE; + sprite->data0 = x; + sprite->data1 = y; + StartSpriteAnim(sprite, animNum - 1); + } +} -- cgit v1.2.3 From e0a25bc2c0f5917dcfd3048e87e2d434ceab6188 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 15:57:52 -0400 Subject: FldEff_Shadow --- src/field_effect_helpers.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e77665eee..b7dded198 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -6,9 +6,10 @@ // Includes #include "global.h" #include "sprite.h" +#include "metatile_behavior.h" #include "field_map_obj.h" #include "field_weather.h" -#include "metatile_behavior.h" +#include "field_effect.h" #include "field_effect_helpers.h" // Static type declarations @@ -237,3 +238,23 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) StartSpriteAnim(sprite, animNum - 1); } } + +bool8 FldEff_Shadow(void) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + u8 spriteId; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].data0 = gUnknown_0202FF84[0]; + gSprites[spriteId].data1 = gUnknown_0202FF84[1]; + gSprites[spriteId].data2 = gUnknown_0202FF84[2]; + gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; + } + return FALSE; +} -- cgit v1.2.3 From 994618e494365cfbaeef9f220ba99996c43d5fe8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 16:05:11 -0400 Subject: oamc_shadow --- src/field_effect_helpers.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index b7dded198..e10eeca52 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -258,3 +258,27 @@ bool8 FldEff_Shadow(void) } return FALSE; } + +void oamc_shadow(struct Sprite *sprite) +{ + u8 mapObjectId; + struct MapObject *mapObject; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + { + FieldEffectStop(sprite, 3); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->oam.priority = linkedSprite->oam.priority; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y + sprite->data3; + 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)) + { + FieldEffectStop(sprite, 3); + } + } +} -- cgit v1.2.3 From 1c93f4c4de65f16d1a4dc9ace20dd808ce4290db Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 16:14:01 -0400 Subject: FldEff_TallGrass --- src/field_effect_helpers.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e10eeca52..72fd0d554 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -282,3 +282,33 @@ void oamc_shadow(struct Sprite *sprite) } } } + +bool8 FldEff_TallGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gUnknown_0202FF84[0]; + y = gUnknown_0202FF84[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gUnknown_0202FF84[3]; + sprite->data0 = gUnknown_0202FF84[2]; + sprite->data1 = gUnknown_0202FF84[0]; + sprite->data2 = gUnknown_0202FF84[1]; + sprite->data3 = gUnknown_0202FF84[4]; + sprite->data4 = gUnknown_0202FF84[5]; + sprite->data5 = gUnknown_0202FF84[6]; + if (gUnknown_0202FF84[7]) + { + SeekSpriteAnim(sprite, 4); + } + } + return FALSE; +} -- cgit v1.2.3 From 32a762db4c2a7a0da5fea8a7302385414fb81e23 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 16:43:04 -0400 Subject: unc_grass_normal --- src/field_effect_helpers.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 72fd0d554..98e8242aa 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -6,8 +6,11 @@ // Includes #include "global.h" #include "sprite.h" +#include "fieldmap.h" #include "metatile_behavior.h" #include "field_map_obj.h" +#include "field_camera.h" +#include "field_map_obj_helpers.h" #include "field_weather.h" #include "field_effect.h" #include "field_effect_helpers.h" @@ -26,6 +29,7 @@ static void npc_pal_op_B(struct MapObject *, u8); /*static*/ void sub_8127DA0(struct Sprite *); /*static*/ void sub_8127DD0(struct Sprite *); /*static*/ void sub_8127E30(struct Sprite *); +/*static*/ void sub_812882C(struct Sprite *, u8, u8); // .rodata @@ -312,3 +316,45 @@ bool8 FldEff_TallGrass(void) } return FALSE; } + +void unc_grass_normal(struct Sprite *sprite) +{ + u8 mapNum; + u8 mapGroup; + u8 metatileBehavior; + u8 localId; + u8 mapObjectId; + struct MapObject *mapObject; + + mapNum = sprite->data5 >> 8; + mapGroup = sprite->data5; + if (gUnknown_0202E844.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + { + sprite->data1 -= gUnknown_0202E844.x; + sprite->data2 -= gUnknown_0202E844.y; + sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + } + localId = sprite->data3 >> 8; + mapNum = sprite->data3; + mapGroup = sprite->data4; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + { + FieldEffectStop(sprite, 4); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + { + sprite->data7 = TRUE; + } + metatileBehavior = 0; + if (sprite->animCmdIndex == 0) + { + metatileBehavior = 4; + } + sub_806487C(sprite, 0); + sub_812882C(sprite, sprite->data0, metatileBehavior); + } +} -- cgit v1.2.3 From 4481e60e09ecc135b260b5f98154bb30f08f241a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 17:37:50 -0400 Subject: gUnknown_0202E844 -> gCamera; fix internal compiler error --- src/field_effect_helpers.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 98e8242aa..5a71559ba 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -328,10 +328,10 @@ void unc_grass_normal(struct Sprite *sprite) mapNum = sprite->data5 >> 8; mapGroup = sprite->data5; - if (gUnknown_0202E844.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) { - sprite->data1 -= gUnknown_0202E844.x; - sprite->data2 -= gUnknown_0202E844.y; + sprite->data1 -= gCamera.x; + sprite->data2 -= gCamera.y; sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; } localId = sprite->data3 >> 8; -- cgit v1.2.3 From 56578b2197b1db1e215bf6ef466a765bf41830b1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 17:45:29 -0400 Subject: FldEff_JumpTallGrass; gUnknown_0202FF84 -> gFieldEffectSpawnParams --- src/field_effect_helpers.c | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 5a71559ba..d0b659131 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -249,15 +249,15 @@ bool8 FldEff_Shadow(void) const struct MapObjectGraphicsInfo *graphicsInfo; u8 spriteId; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data0 = gUnknown_0202FF84[0]; - gSprites[spriteId].data1 = gUnknown_0202FF84[1]; - gSprites[spriteId].data2 = gUnknown_0202FF84[2]; + gSprites[spriteId].data0 = gFieldEffectSpawnParams[0]; + gSprites[spriteId].data1 = gFieldEffectSpawnParams[1]; + gSprites[spriteId].data2 = gFieldEffectSpawnParams[2]; gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; } return FALSE; @@ -294,22 +294,22 @@ bool8 FldEff_TallGrass(void) u8 spriteId; struct Sprite *sprite; - x = gUnknown_0202FF84[0]; - y = gUnknown_0202FF84[1]; + x = gFieldEffectSpawnParams[0]; + y = gFieldEffectSpawnParams[1]; sub_8060470(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gUnknown_0202FF84[3]; - sprite->data0 = gUnknown_0202FF84[2]; - sprite->data1 = gUnknown_0202FF84[0]; - sprite->data2 = gUnknown_0202FF84[1]; - sprite->data3 = gUnknown_0202FF84[4]; - sprite->data4 = gUnknown_0202FF84[5]; - sprite->data5 = gUnknown_0202FF84[6]; - if (gUnknown_0202FF84[7]) + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = gFieldEffectSpawnParams[0]; + sprite->data2 = gFieldEffectSpawnParams[1]; + sprite->data3 = gFieldEffectSpawnParams[4]; + sprite->data4 = gFieldEffectSpawnParams[5]; + sprite->data5 = gFieldEffectSpawnParams[6]; + if (gFieldEffectSpawnParams[7]) { SeekSpriteAnim(sprite, 4); } @@ -358,3 +358,21 @@ void unc_grass_normal(struct Sprite *sprite) sub_812882C(sprite, sprite->data0, metatileBehavior); } } + +bool8 FldEff_JumpTallGrass(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = 12; + } + return FALSE; +} -- cgit v1.2.3 From db5f08aead7b5dcc8253620fd792b72c8de7def6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:05:44 -0400 Subject: sub_8126FF0 --- src/field_effect_helpers.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index d0b659131..cb4adbb43 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -376,3 +376,22 @@ bool8 FldEff_JumpTallGrass(void) } return FALSE; } + +u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) +{ + struct Sprite *sprite; + u8 i; + + for (i = 0; i < MAX_SPRITES; i ++) + { + if (gSprites[i].inUse) + { + sprite = &gSprites[i]; + if (sprite->callback == unc_grass_normal && (x == sprite->data1 && y == sprite->data2) && (localId == (u8)(sprite->data3 >> 8) && mapNum == (sprite->data3 & 0xFF) && mapGroup == sprite->data4)) + { + return i; + } + } + } + return MAX_SPRITES; +} -- cgit v1.2.3 From 9d2c7a60b0e4860d8d9fbf5a478217f0f88eb454 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:20:09 -0400 Subject: FldEff_LongGrass --- src/field_effect_helpers.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index cb4adbb43..b71a36122 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -13,6 +13,7 @@ #include "field_map_obj_helpers.h" #include "field_weather.h" #include "field_effect.h" +#include "field_ground_effect.h" #include "field_effect_helpers.h" // Static type declarations @@ -395,3 +396,33 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) } return MAX_SPRITES; } + +bool8 FldEff_LongGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectSpawnParams[0]; + y = gFieldEffectSpawnParams[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = ZCoordToPriority(gFieldEffectSpawnParams[2]); + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = gFieldEffectSpawnParams[0]; + sprite->data2 = gFieldEffectSpawnParams[1]; + sprite->data3 = gFieldEffectSpawnParams[4]; + sprite->data4 = gFieldEffectSpawnParams[5]; + sprite->data5 = gFieldEffectSpawnParams[6]; + if (gFieldEffectSpawnParams[7]) + { + SeekSpriteAnim(sprite, 6); + } + } + return FALSE; +} -- cgit v1.2.3 From 82da4b1b50b0f174da47fc5751305bdd48fa3917 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:25:28 -0400 Subject: unc_grass_tall --- src/field_effect_helpers.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index b71a36122..599441c3d 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -272,7 +272,7 @@ void oamc_shadow(struct Sprite *sprite) if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) { - FieldEffectStop(sprite, 3); + FieldEffectStop(sprite, FLDEFF_SHADOW); } else { @@ -283,7 +283,7 @@ void oamc_shadow(struct Sprite *sprite) sprite->pos1.y = linkedSprite->pos1.y + sprite->data3; 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)) { - FieldEffectStop(sprite, 3); + FieldEffectStop(sprite, FLDEFF_SHADOW); } } } @@ -341,7 +341,7 @@ void unc_grass_normal(struct Sprite *sprite) metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) { - FieldEffectStop(sprite, 4); + FieldEffectStop(sprite, FLDEFF_TALL_GRASS); } else { @@ -426,3 +426,40 @@ bool8 FldEff_LongGrass(void) } return FALSE; } + +void unc_grass_tall(struct Sprite *sprite) +{ + u8 mapNum; + u8 mapGroup; + u8 metatileBehavior; + u8 localId; + u8 mapObjectId; + struct MapObject *mapObject; + + mapNum = sprite->data5 >> 8; + mapGroup = sprite->data5; + if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) + { + sprite->data1 -= gCamera.x; + sprite->data2 -= gCamera.y; + sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + } + localId = sprite->data3 >> 8; + mapNum = sprite->data3; + mapGroup = sprite->data4; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + { + FieldEffectStop(sprite, FLDEFF_LONG_GRASS); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + { + sprite->data7 = TRUE; + } + sub_806487C(sprite, 0); + sub_812882C(sprite, sprite->data0, 0); + } +} -- cgit v1.2.3 From e1ce9a1122fdb173006f57c9a3b2a4b6ebae3629 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:29:09 -0400 Subject: FldEff_JumpLongGrass --- src/field_effect_helpers.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 599441c3d..87cf29b4c 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -463,3 +463,21 @@ void unc_grass_tall(struct Sprite *sprite) sub_812882C(sprite, sprite->data0, 0); } } + +bool8 FldEff_JumpLongGrass(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = 18; + } + return FALSE; +} -- cgit v1.2.3 From e01228611b9662c1bfa57c98975f9120d0e8211e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 18:35:01 -0400 Subject: FldEff_ShortGrass --- src/field_effect_helpers.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 87cf29b4c..c2cc19a71 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -481,3 +481,27 @@ bool8 FldEff_JumpLongGrass(void) } return FALSE; } + +bool8 FldEff_ShortGrass(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + 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->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + } + return FALSE; +} -- cgit v1.2.3 From 61d38ca54027b9d5d69216beadcd8644a9818c1f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 19:45:36 -0400 Subject: sub_8127334 --- src/field_effect_helpers.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index c2cc19a71..5fcaf7caf 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -505,3 +505,39 @@ bool8 FldEff_ShortGrass(void) } return FALSE; } + +void sub_8127334(struct Sprite *sprite) +{ + u8 mapObjectId; + s16 x; + s16 y; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18) + { + FieldEffectStop(sprite, FLDEFF_SHORT_GRASS); + } + else + { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + y = linkedSprite->pos1.y; + x = linkedSprite->pos1.x; + if (x != sprite->data3 || y != sprite->data4) + { + sprite->data3 = x; + sprite->data4 = y; + if (sprite->animEnded) + { + StartSpriteAnim(sprite, 0); + } + } + sprite->pos1.x = x; + sprite->pos1.y = y; + sprite->pos2.y = (graphicsInfo->height >> 1) - 8; + sprite->subpriority = linkedSprite->subpriority - 1; + sprite->oam.priority = linkedSprite->oam.priority; + sub_806487C(sprite, linkedSprite->invisible); + } +} -- cgit v1.2.3 From 261efc84820de61132aeaaff8901f412f0572d62 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 19:54:34 -0400 Subject: FldEff_SandFootprints --- src/field_effect_helpers.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 5fcaf7caf..d9055f262 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -541,3 +541,21 @@ void sub_8127334(struct Sprite *sprite) sub_806487C(sprite, linkedSprite->invisible); } } + +bool8 FldEff_SandFootprints(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data7 = 13; + StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + } + return FALSE; +} -- cgit v1.2.3 From e9ff33791bf99e1671dcd94830b814aec2fa733d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 19:57:48 -0400 Subject: FldEff_DeepSandFootprints --- src/field_effect_helpers.c | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index d9055f262..82b3ad25e 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -244,7 +244,7 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) } } -bool8 FldEff_Shadow(void) +u8 FldEff_Shadow(void) { u8 mapObjectId; const struct MapObjectGraphicsInfo *graphicsInfo; @@ -261,7 +261,7 @@ bool8 FldEff_Shadow(void) gSprites[spriteId].data2 = gFieldEffectSpawnParams[2]; gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; } - return FALSE; + return 0; } void oamc_shadow(struct Sprite *sprite) @@ -288,7 +288,7 @@ void oamc_shadow(struct Sprite *sprite) } } -bool8 FldEff_TallGrass(void) +u8 FldEff_TallGrass(void) { s16 x; s16 y; @@ -315,7 +315,7 @@ bool8 FldEff_TallGrass(void) SeekSpriteAnim(sprite, 4); } } - return FALSE; + return 0; } void unc_grass_normal(struct Sprite *sprite) @@ -360,7 +360,7 @@ void unc_grass_normal(struct Sprite *sprite) } } -bool8 FldEff_JumpTallGrass(void) +u8 FldEff_JumpTallGrass(void) { u8 spriteId; struct Sprite *sprite; @@ -375,7 +375,7 @@ bool8 FldEff_JumpTallGrass(void) sprite->data0 = gFieldEffectSpawnParams[2]; sprite->data1 = 12; } - return FALSE; + return 0; } u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) @@ -397,7 +397,7 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) return MAX_SPRITES; } -bool8 FldEff_LongGrass(void) +u8 FldEff_LongGrass(void) { s16 x; s16 y; @@ -424,7 +424,7 @@ bool8 FldEff_LongGrass(void) SeekSpriteAnim(sprite, 6); } } - return FALSE; + return 0; } void unc_grass_tall(struct Sprite *sprite) @@ -464,7 +464,7 @@ void unc_grass_tall(struct Sprite *sprite) } } -bool8 FldEff_JumpLongGrass(void) +u8 FldEff_JumpLongGrass(void) { u8 spriteId; struct Sprite *sprite; @@ -479,10 +479,10 @@ bool8 FldEff_JumpLongGrass(void) sprite->data0 = gFieldEffectSpawnParams[2]; sprite->data1 = 18; } - return FALSE; + return 0; } -bool8 FldEff_ShortGrass(void) +u8 FldEff_ShortGrass(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -503,7 +503,7 @@ bool8 FldEff_ShortGrass(void) sprite->data3 = gSprites[mapObject->spriteId].pos1.x; sprite->data4 = gSprites[mapObject->spriteId].pos1.y; } - return FALSE; + return 0; } void sub_8127334(struct Sprite *sprite) @@ -542,7 +542,7 @@ void sub_8127334(struct Sprite *sprite) } } -bool8 FldEff_SandFootprints(void) +u8 FldEff_SandFootprints(void) { u8 spriteId; struct Sprite *sprite; @@ -557,5 +557,23 @@ bool8 FldEff_SandFootprints(void) sprite->data7 = 13; StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); } - return FALSE; + return 0; +} + +u8 FldEff_DeepSandFootprints(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data7 = 24; + StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + } + return spriteId; } -- cgit v1.2.3 From 59f75daeb9c363957661c64bf509cf4f5e31c61c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 19:59:10 -0400 Subject: FldEff_BikeTireTracks --- src/field_effect_helpers.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 82b3ad25e..832a5b170 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -577,3 +577,21 @@ u8 FldEff_DeepSandFootprints(void) } return spriteId; } + +u8 FldEff_BikeTireTracks(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data7 = 35; + StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + } + return spriteId; +} -- cgit v1.2.3 From a3cd86b2ddd622dae3703a30280823174173a93d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:05:02 -0400 Subject: sub_8127584 --- src/field_effect_helpers.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 832a5b170..927d86538 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -25,8 +25,8 @@ 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_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 *); @@ -554,7 +554,7 @@ u8 FldEff_SandFootprints(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data7 = 13; + sprite->data7 = FLDEFF_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); } return 0; @@ -572,7 +572,7 @@ u8 FldEff_DeepSandFootprints(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data7 = 24; + sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); } return spriteId; @@ -590,8 +590,33 @@ u8 FldEff_BikeTireTracks(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data7 = 35; + sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS; StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); } return spriteId; } + +void sub_8127584(struct Sprite *sprite) +{ + gUnknown_08401E40[sprite->data0](sprite); +} + +static void sub_81275A0(struct Sprite *sprite) +{ + if (++sprite->data1 > 40) + { + sprite->data0 = 1; + } + sub_806487C(sprite, FALSE); +} + +static void sub_81275C4(struct Sprite *sprite) +{ + sprite->invisible ^= 1; + sprite->data1 ++; + sub_806487C(sprite, sprite->invisible); + if (sprite->data1 > 56) + { + FieldEffectStop(sprite, sprite->data7); + } +} -- cgit v1.2.3 From dbe959e0b6a467e8b68746f11e72b16e7bd23dd4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:12:21 -0400 Subject: FldEff_Splash --- src/field_effect_helpers.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 927d86538..713cda7ae 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -8,6 +8,8 @@ #include "sprite.h" #include "fieldmap.h" #include "metatile_behavior.h" +#include "songs.h" +#include "sound.h" #include "field_map_obj.h" #include "field_camera.h" #include "field_map_obj_helpers.h" @@ -620,3 +622,31 @@ static void sub_81275C4(struct Sprite *sprite) FieldEffectStop(sprite, sprite->data7); } } + +u8 FldEff_Splash(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + linkedSprite = &gSprites[mapObject->spriteId]; + sprite->oam.priority = linkedSprite->oam.priority; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->pos2.y = (graphicsInfo->height >> 1) - 4; + PlaySE(SE_MIZU); + } + return 0; +} -- cgit v1.2.3 From ac82616dc933de99a50d7a131b18cb38c79c7f77 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:42:51 -0400 Subject: sub_81276B4 --- src/field_effect_helpers.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 713cda7ae..53c18c158 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -650,3 +650,19 @@ u8 FldEff_Splash(void) } return 0; } + +void sub_81276B4(struct Sprite *sprite) +{ + u8 mapObjectId; + + if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + { + 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); + } +} -- cgit v1.2.3 From 2b48a1396cbe5adbf6755502e96e66392b6bd8a1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:46:58 -0400 Subject: FldEff_JumpSmallSplash --- src/field_effect_helpers.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 53c18c158..0f91605c0 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -666,3 +666,21 @@ void sub_81276B4(struct Sprite *sprite) sub_806487C(sprite, FALSE); } } + +u8 FldEff_JumpSmallSplash(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH; + } + return 0; +} -- cgit v1.2.3 From c72d74d953517902d67ae71be40f5653a105a7c6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:49:18 -0400 Subject: FldEff_JumpBigSplash --- src/field_effect_helpers.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 0f91605c0..14634e2b4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -684,3 +684,21 @@ u8 FldEff_JumpSmallSplash(void) } return 0; } + +u8 FldEff_JumpBigSplash(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = FLDEFF_JUMP_BIG_SPLASH; + } + return 0; +} -- cgit v1.2.3 From 8618a4be87b3cb92a45a7fbe4559385e5d2c4346 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 20:58:05 -0400 Subject: FldEff_FeetInFlowingWater --- src/field_effect_helpers.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 14634e2b4..2c4685bf4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -33,6 +33,7 @@ static void sub_81275C4(struct Sprite *); /*static*/ void sub_8127DD0(struct Sprite *); /*static*/ void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); +/*static*/ void sub_81278D8(struct Sprite *); // .rodata @@ -702,3 +703,32 @@ u8 FldEff_JumpBigSplash(void) } return 0; } + +u8 FldEff_FeetInFlowingWater(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->callback = sub_81278D8; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = -1; + sprite->data4 = -1; + sprite->pos2.y = (graphicsInfo->height >> 1) - 4; + StartSpriteAnim(sprite, 1); + } + return 0; +} -- cgit v1.2.3 From 6e57ac34492ec11017b8e741b8e7008f0e844e9b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 21:04:46 -0400 Subject: sub_81278D8 --- src/field_effect_helpers.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 2c4685bf4..9f12fd6a4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -33,7 +33,7 @@ static void sub_81275C4(struct Sprite *); /*static*/ void sub_8127DD0(struct Sprite *); /*static*/ void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); -/*static*/ void sub_81278D8(struct Sprite *); +static void sub_81278D8(struct Sprite *); // .rodata @@ -732,3 +732,33 @@ u8 FldEff_FeetInFlowingWater(void) } return 0; } + +static void sub_81278D8(struct Sprite *sprite) +{ + u8 mapObjectId; + struct Sprite *linkedSprite; + struct MapObject *mapObject; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19) + { + FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); + } + else + { + mapObject = &gMapObjects[mapObjectId]; + linkedSprite = &gSprites[mapObject->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->data3 || mapObject->coords2.y != sprite->data4) + { + sprite->data3 = mapObject->coords2.x; + sprite->data4 = mapObject->coords2.y; + if (!sprite->invisible) + { + PlaySE(SE_MIZU); + } + } + } +} -- cgit v1.2.3 From 959858eac27cc30382a2d309180a282d8144903b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 21:17:35 -0400 Subject: FldEff_Ripple --- src/field_effect_helpers.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9f12fd6a4..2df247600 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -762,3 +762,19 @@ static void sub_81278D8(struct Sprite *sprite) } } } + +u8 FldEff_Ripple(void) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_RIPPLE; + } + return 0; +} -- cgit v1.2.3 From 885d0fa2877b69f52ef58ce62ce828ef550c67ed Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 21:24:04 -0400 Subject: FldEff_HotSpringsWater --- src/field_effect_helpers.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 2df247600..3f821e0b7 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -778,3 +778,27 @@ u8 FldEff_Ripple(void) } return 0; } + +u8 FldEff_HotSpringsWater(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + 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->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + } + return 0; +} -- cgit v1.2.3 From 7980e39efb2eda587e41452b47d2503f17346368 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 9 Sep 2017 21:31:32 -0400 Subject: sub_8127A7C --- src/field_effect_helpers.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3f821e0b7..2113a79d7 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -802,3 +802,24 @@ u8 FldEff_HotSpringsWater(void) } return 0; } + +void sub_8127A7C(struct Sprite *sprite) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21) + { + FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER); + } + else + { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].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); + } +} -- cgit v1.2.3 From 490c4cd644463ce650df8333c1b1e5aeb3821dd0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 08:57:16 -0400 Subject: FldEff_Unknown19-22 --- src/field_effect_helpers.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 2113a79d7..510ca556f 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -823,3 +823,71 @@ void sub_8127A7C(struct Sprite *sprite) sub_806487C(sprite, FALSE); } } + +u8 FldEff_Unknown19(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_UNKNOWN_19; + } + return 0; +} + +u8 FldEff_Unknown20(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_UNKNOWN_20; + } + return 0; +} + +u8 FldEff_Unknown21(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_UNKNOWN_21; + } + return 0; +} + +u8 FldEff_Unknown22(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = FLDEFF_UNKNOWN_22; + } + return 0; +} -- cgit v1.2.3 From 1a53367ffbbb40b0f88e7bbca1444e3df6840aba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:14:02 -0400 Subject: ash. just ash. --- src/field_effect_helpers.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 510ca556f..493189f83 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -891,3 +891,14 @@ u8 FldEff_Unknown22(void) } return 0; } + +void ash(s16 x, s16 y, u16 c, s16 d) +{ + gFieldEffectSpawnParams[0] = x; + gFieldEffectSpawnParams[1] = y; + gFieldEffectSpawnParams[2] = 0x52; + gFieldEffectSpawnParams[3] = 1; + gFieldEffectSpawnParams[4] = c; + gFieldEffectSpawnParams[5] = d; + FieldEffectStart(FLDEFF_ASH); +} -- cgit v1.2.3 From bfa87b839b8561a61f7d01afba5c52e431a12370 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:18:23 -0400 Subject: FldEff_Ash --- src/field_effect_helpers.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 493189f83..3d3658b0f 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -902,3 +902,27 @@ void ash(s16 x, s16 y, u16 c, s16 d) gFieldEffectSpawnParams[5] = d; FieldEffectStart(FLDEFF_ASH); } + +u8 FldEff_Ash(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gFieldEffectSpawnParams[0]; + y = gFieldEffectSpawnParams[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data1 = gFieldEffectSpawnParams[0]; + sprite->data2 = gFieldEffectSpawnParams[1]; + sprite->data3 = gFieldEffectSpawnParams[4]; + sprite->data4 = gFieldEffectSpawnParams[5]; + } + return 0; +} -- cgit v1.2.3 From ceea25425899494415d0dbac2bb5c9358db48683 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:25:30 -0400 Subject: ash field effect callbacks --- src/field_effect_helpers.c | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3d3658b0f..0e8b6e8d3 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -29,9 +29,9 @@ 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 sub_8127DA0(struct Sprite *); +static void sub_8127DD0(struct Sprite *); +static void sub_8127E30(struct Sprite *); /*static*/ void sub_812882C(struct Sprite *, u8, u8); static void sub_81278D8(struct Sprite *); @@ -926,3 +926,37 @@ u8 FldEff_Ash(void) } return 0; } + +void sub_8127D84(struct Sprite *sprite) +{ + gUnknown_08401E48[sprite->data0](sprite); +} + +static void sub_8127DA0(struct Sprite *sprite) +{ + sprite->invisible = TRUE; + sprite->animPaused = TRUE; + if (--sprite->data4 == 0) + { + sprite->data0 = 1; + } +} + +static void sub_8127DD0(struct Sprite *sprite) +{ + sprite->invisible = FALSE; + sprite->animPaused = FALSE; + MapGridSetMetatileIdAt(sprite->data1, sprite->data2, sprite->data3); + CurrentMapDrawMetatileAt(sprite->data1, sprite->data2); + gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE; + sprite->data0 = 2; +} + +static void sub_8127E30(struct Sprite *sprite) +{ + sub_806487C(sprite, FALSE); + if (sprite->animEnded) + { + FieldEffectStop(sprite, FLDEFF_ASH); + } +} -- cgit v1.2.3 From ef751c02b70f1f81adc69775ba76efaa2374b92a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:30:36 -0400 Subject: FldEff_SurfBlob --- src/field_effect_helpers.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 0e8b6e8d3..29d474fb5 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -960,3 +960,24 @@ static void sub_8127E30(struct Sprite *sprite) FieldEffectStop(sprite, FLDEFF_ASH); } } + +u8 FldEff_SurfBlob(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x96); + if (spriteId !=MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.paletteNum = 0; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = -1; + sprite->data6 = -1; + sprite->data7 = -1; + } + FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); + return spriteId; +} -- cgit v1.2.3 From ab786df511b47bbe4101b3de3fdb3254da249228 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:35:24 -0400 Subject: sub_8127ED0, sub_8127EFC --- src/field_effect_helpers.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 29d474fb5..47676b0aa 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -981,3 +981,13 @@ u8 FldEff_SurfBlob(void) FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); return spriteId; } + +void sub_8127ED0(u8 spriteId, u8 value) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0x0F) | (value & 0x0F); +} + +void sub_8127EFC(u8 spriteId, u8 value) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4); +} -- cgit v1.2.3 From f93301e62ba6e2a83258eeabbf354e666d613f02 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:37:17 -0400 Subject: sub_8127F28 --- src/field_effect_helpers.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 47676b0aa..9cd46745b 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -984,10 +984,16 @@ u8 FldEff_SurfBlob(void) void sub_8127ED0(u8 spriteId, u8 value) { - gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0x0F) | (value & 0x0F); + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF) | (value & 0xF); } void sub_8127EFC(u8 spriteId, u8 value) { gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4); } + +void sub_8127F28(u8 spriteId, u8 value, s16 data1) +{ + gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8); + gSprites[spriteId].data1 = data1; +} -- cgit v1.2.3 From 0c5bf5559328562f42e85cad9621a55923b7b50b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:39:15 -0400 Subject: sub_8127F5C, sub_8127F64, sub_8127F70 --- src/field_effect_helpers.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9cd46745b..4a511fad1 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -997,3 +997,18 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1) gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8); gSprites[spriteId].data1 = data1; } + +u8 sub_8127F5C(struct Sprite *sprite) +{ + return sprite->data0 & 0xF; +} + +u8 sub_8127F64(struct Sprite *sprite) +{ + return (sprite->data0 & 0xF0) >> 4; +} + +u8 sub_8127F70(struct Sprite *sprite) +{ + return (sprite->data0 & 0xF00) >> 8; +} -- cgit v1.2.3 From 89023e84d6137fe425c8621f5ba914304f37ee7b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:43:25 -0400 Subject: sub_8127F7C --- src/field_effect_helpers.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 4a511fad1..474acf939 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -34,6 +34,9 @@ static void sub_8127DD0(struct Sprite *); static void sub_8127E30(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 *); // .rodata @@ -998,17 +1001,30 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1) gSprites[spriteId].data1 = data1; } -u8 sub_8127F5C(struct Sprite *sprite) +/*static*/ u8 sub_8127F5C(struct Sprite *sprite) { return sprite->data0 & 0xF; } -u8 sub_8127F64(struct Sprite *sprite) +/*static*/ u8 sub_8127F64(struct Sprite *sprite) { return (sprite->data0 & 0xF0) >> 4; } -u8 sub_8127F70(struct Sprite *sprite) +/*static*/ u8 sub_8127F70(struct Sprite *sprite) { return (sprite->data0 & 0xF00) >> 8; } + +void sub_8127F7C(struct Sprite *sprite) +{ + struct MapObject *mapObject; + struct Sprite *linkedSprite; + + mapObject = &gMapObjects[sprite->data2]; + linkedSprite = &gSprites[mapObject->spriteId]; + sub_8127FD4(mapObject, sprite); + sub_812800C(mapObject, sprite); + sub_81280A0(mapObject, linkedSprite, sprite); + sprite->oam.priority = linkedSprite->oam.priority; +} -- cgit v1.2.3 From faeef7d168212aeb99e6dc119c639b96f1f9e1c0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 09:48:46 -0400 Subject: sub_8127FD4 --- src/field_effect_helpers.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 474acf939..b764c9f57 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -34,7 +34,7 @@ static void sub_8127DD0(struct Sprite *); static void sub_8127E30(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_8127FD4(struct MapObject *, struct Sprite *); /*static*/ void sub_812800C(struct MapObject *, struct Sprite *); /*static*/ void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); @@ -120,7 +120,7 @@ s16 sub_81268D0(struct MapObject *mapObject) static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) { u8 whichElement; - u16 unk_8041e2c[3]; + u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)]; memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C); sprite->data2 = 0; @@ -1006,7 +1006,7 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1) return sprite->data0 & 0xF; } -/*static*/ u8 sub_8127F64(struct Sprite *sprite) +static u8 sub_8127F64(struct Sprite *sprite) { return (sprite->data0 & 0xF0) >> 4; } @@ -1028,3 +1028,14 @@ void sub_8127F7C(struct Sprite *sprite) sub_81280A0(mapObject, linkedSprite, sprite); sprite->oam.priority = linkedSprite->oam.priority; } + +static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)]; + + memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54); + if (sub_8127F64(sprite) == 0) + { + StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]); + } +} -- cgit v1.2.3 From a7ca32afb7614e73e9d50cec39c3140451ed9788 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 10 Sep 2017 10:12:16 -0400 Subject: sub_812800C --- src/field_effect_helpers.c | 107 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index b764c9f57..3d53db9fd 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -35,7 +35,7 @@ static void sub_8127E30(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_812800C(struct MapObject *, struct Sprite *); /*static*/ void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); // .rodata @@ -1039,3 +1039,108 @@ static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite) StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]); } } + +#ifdef NONMATCHING +static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +{ + s16 x; + s16 y; + u8 i; + + x = mapObject->coords2.x; + y = mapObject->coords2.y; + if (sprite->pos2.y == 0 && (x != sprite->data6 || y != sprite->data7)) + { + sprite->data5 = sprite->pos2.y; + for (sprite->data6 = x, sprite->data7 = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data6, y = sprite->data7) + { + MoveCoords(i, &x, &y); + if (MapGridGetZCoordAt(x, y) == 3) + { + sprite->data5 ++; + break; + } + } + } +} +#else +__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x4\n" + "\tadds r4, r1, 0\n" + "\tldrh r2, [r0, 0x10]\n" + "\tmov r1, sp\n" + "\tstrh r2, [r1]\n" + "\tldrh r1, [r0, 0x12]\n" + "\tmov r0, sp\n" + "\tadds r0, 0x2\n" + "\tstrh r1, [r0]\n" + "\tmovs r2, 0x26\n" + "\tldrsh r3, [r4, r2]\n" + "\tmov r8, r0\n" + "\tcmp r3, 0\n" + "\tbne _08128094\n" + "\tmov r0, sp\n" + "\tmovs r5, 0\n" + "\tldrsh r2, [r0, r5]\n" + "\tmovs r5, 0x3A\n" + "\tldrsh r0, [r4, r5]\n" + "\tcmp r2, r0\n" + "\tbne _08128048\n" + "\tlsls r0, r1, 16\n" + "\tasrs r0, 16\n" + "\tmovs r5, 0x3C\n" + "\tldrsh r1, [r4, r5]\n" + "\tcmp r0, r1\n" + "\tbeq _08128094\n" + "_08128048:\n" + "\tstrh r3, [r4, 0x38]\n" + "\tstrh r2, [r4, 0x3A]\n" + "\tmov r1, r8\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r1, r2]\n" + "\tstrh r0, [r4, 0x3C]\n" + "\tmovs r5, 0x1\n" + "\tmov r7, r8\n" + "\tmov r6, sp\n" + "_0812805A:\n" + "\tadds r0, r5, 0\n" + "\tmov r1, sp\n" + "\tadds r2, r7, 0\n" + "\tbl MoveCoords\n" + "\tmovs r1, 0\n" + "\tldrsh r0, [r6, r1]\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r7, r2]\n" + "\tbl MapGridGetZCoordAt\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x3\n" + "\tbne _08128080\n" + "\tldrh r0, [r4, 0x38]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r4, 0x38]\n" + "\tb _08128094\n" + "_08128080:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tldrh r0, [r4, 0x3A]\n" + "\tstrh r0, [r6]\n" + "\tldrh r0, [r4, 0x3C]\n" + "\tmov r1, r8\n" + "\tstrh r0, [r1]\n" + "\tcmp r5, 0x4\n" + "\tbls _0812805A\n" + "_08128094:\n" + "\tadd sp, 0x4\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif -- cgit v1.2.3 From 4645837cc2ce36c9638853552649f182486af8b2 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:17:39 -0400 Subject: sub_81280A0 --- src/field_effect_helpers.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3d53db9fd..6bfb7f3fb 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -332,7 +332,7 @@ void unc_grass_normal(struct Sprite *sprite) u8 localId; u8 mapObjectId; struct MapObject *mapObject; - + mapNum = sprite->data5 >> 8; mapGroup = sprite->data5; if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) @@ -1144,3 +1144,36 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru "\tbx r0"); } #endif + +void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) +{ + u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)]; + u8 v0; + + memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A); + v0 = sub_8127F5C(sprite); + if (v0 != 0) + { + if (((u16)(++ sprite->data4) & unk_8401E5A[sprite->data5]) == 0) + { + sprite->pos2.y += sprite->data3; + } + if ((sprite->data4 & 0x0F) == 0) + { + sprite->data3 = -sprite->data3; + } + if (v0 != 2) + { + if (sub_8127F70(sprite) == 0) + { + linkedSprite->pos2.y = sprite->pos2.y; + } + else + { + linkedSprite->pos2.y = sprite->data1 + sprite->pos2.y; + } + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = linkedSprite->pos1.y + 8; + } + } +} -- cgit v1.2.3 From 64dc157df603a6d3c1b59a60ad9f286ebd66fce5 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:21:54 -0400 Subject: sub_8128124 --- src/field_effect_helpers.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 6bfb7f3fb..e58fb9b31 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -36,7 +36,8 @@ static void sub_8127E30(struct Sprite *); 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 sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); +/*static*/ void sub_8128174(struct Sprite *); // .rodata @@ -1145,7 +1146,7 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru } #endif -void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) +static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) { u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)]; u8 v0; @@ -1177,3 +1178,17 @@ void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struc } } } + +u8 sub_8128124(u8 oldSpriteId) +{ + u8 spriteId; + struct Sprite *sprite; + + spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); + sprite = &gSprites[spriteId]; + sprite->callback = sub_8128174; + sprite->invisible = TRUE; + sprite->data0 = oldSpriteId; + sprite->data1 = 1; + return spriteId; +} -- cgit v1.2.3 From dd3edfd0c259f0c6edf481b13b1280cd566bfd31 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:29:02 -0400 Subject: sub_8128174 --- src/field_effect_helpers.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e58fb9b31..95d7ff0b1 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -37,7 +37,7 @@ 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 sub_8128174(struct Sprite *); +static void sub_8128174(struct Sprite *); // .rodata @@ -1192,3 +1192,18 @@ u8 sub_8128124(u8 oldSpriteId) sprite->data1 = 1; return spriteId; } + +static void sub_8128174(struct Sprite *sprite) +{ + struct Sprite *oldSprite; + + oldSprite = &gSprites[sprite->data0]; + if (((sprite->data2++) & 0x03) == 0) + { + oldSprite->pos2.y += sprite->data1; + } + if ((sprite->data2 & 0x0F) == 0) + { + sprite->data1 = -sprite->data1; + } +} -- cgit v1.2.3 From 14c3e4c2cc30d940584c5cf3de976639317ef0fe Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:31:49 -0400 Subject: FldEff_Dust --- src/field_effect_helpers.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 95d7ff0b1..3f372b4ee 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1207,3 +1207,21 @@ static void sub_8128174(struct Sprite *sprite) sprite->data1 = -sprite->data1; } } + +u8 FldEff_Dust(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->data1 = 10; + } + return 0; +} -- cgit v1.2.3 From 25c274e171b6bd9d2de2d1b457329619517e7749 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:36:40 -0400 Subject: FldEff_SandPile --- src/field_effect_helpers.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3f372b4ee..3cb89a7dc 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1225,3 +1225,31 @@ u8 FldEff_Dust(void) } return 0; } + +u8 FldEff_SandPile(void) +{ + u8 mapObjectId; + struct MapObject *mapObject; + u8 spriteId; + struct Sprite *sprite; + const struct MapObjectGraphicsInfo *graphicsInfo; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObject = &gMapObjects[mapObjectId]; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; + sprite->data0 = gFieldEffectSpawnParams[0]; + sprite->data1 = gFieldEffectSpawnParams[1]; + sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data3 = gSprites[mapObject->spriteId].pos1.x; + sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + sprite->pos2.y = (graphicsInfo->height >> 1) - 2; + SeekSpriteAnim(sprite, 2); + } + return 0; +} -- cgit v1.2.3 From 477be592a40837c532723be07a5d792e5a6ad703 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:42:24 -0400 Subject: sub_81282E0 --- src/field_effect_helpers.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3cb89a7dc..367d08cc0 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1253,3 +1253,33 @@ u8 FldEff_SandPile(void) } return 0; } + +void sub_81282E0(struct Sprite *sprite) +{ + u8 mapObjectId; + s16 x; + s16 y; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20) + { + FieldEffectStop(sprite, FLDEFF_SAND_PILE); + } + else + { + y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y; + x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x; + if (x != sprite->data3 || y != sprite->data4) + { + sprite->data3 = x; + sprite->data4 = y; + if (sprite->animEnded) + { + StartSpriteAnim(sprite, 0); + } + } + sprite->pos1.x = x; + sprite->pos1.y = y; + sprite->subpriority = gSprites[gMapObjects[mapObjectId].spriteId].subpriority; + sub_806487C(sprite, FALSE); + } +} -- cgit v1.2.3 From 7b42ee1259d243cecd4d997c8f784c5e9fecd8dd Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:45:03 -0400 Subject: FldEff_Bubbles --- src/field_effect_helpers.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 367d08cc0..9e240578d 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1283,3 +1283,19 @@ void sub_81282E0(struct Sprite *sprite) sub_806487C(sprite, FALSE); } } + +u8 FldEff_Bubbles(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 0); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x52); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = 1; + } + return 0; +} -- cgit v1.2.3 From 3fc4c1f3ab4abe7e6f1e6cff0cc93b012a65c836 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:52:15 -0400 Subject: sub_8128410 --- src/field_effect_helpers.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9e240578d..fab0c43eb 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1299,3 +1299,15 @@ u8 FldEff_Bubbles(void) } return 0; } + +void sub_8128410(struct Sprite *sprite) +{ + sprite->data0 += 0x80; + sprite->data0 &= 0x100; + sprite->pos1.y -= sprite->data0 >> 8; + sub_806487C(sprite, FALSE); + if (sprite->invisible || sprite->animEnded) + { + FieldEffectStop(sprite, FLDEFF_BUBBLES); + } +} -- cgit v1.2.3 From ad5a3e758fab2a51b1624e51834cd1ef04977cd1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 11:57:03 -0400 Subject: FldEff_BerryTreeGrowthSparkle --- src/field_effect_helpers.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index fab0c43eb..347eb18a5 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1311,3 +1311,21 @@ void sub_8128410(struct Sprite *sprite) FieldEffectStop(sprite, FLDEFF_BUBBLES); } } + +u8 FldEff_BerryTreeGrowthSparkle(void) +{ + u8 spriteId; + struct Sprite *sprite; + + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 4); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.paletteNum = 5; + sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; + } + return 0; +} -- cgit v1.2.3 From dc1f3024931e92253f36f0b150fb177e418392ea Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:07:57 -0400 Subject: Disguise effects --- src/field_effect_helpers.c | 94 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 69 insertions(+), 25 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 347eb18a5..da406daeb 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -38,6 +38,7 @@ 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 sub_8128174(struct Sprite *); +static u32 ShowDisguiseFieldEffect(u8, u8, u8); // .rodata @@ -251,7 +252,7 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) } } -u8 FldEff_Shadow(void) +u32 FldEff_Shadow(void) { u8 mapObjectId; const struct MapObjectGraphicsInfo *graphicsInfo; @@ -295,7 +296,7 @@ void oamc_shadow(struct Sprite *sprite) } } -u8 FldEff_TallGrass(void) +u32 FldEff_TallGrass(void) { s16 x; s16 y; @@ -367,7 +368,7 @@ void unc_grass_normal(struct Sprite *sprite) } } -u8 FldEff_JumpTallGrass(void) +u32 FldEff_JumpTallGrass(void) { u8 spriteId; struct Sprite *sprite; @@ -404,7 +405,7 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) return MAX_SPRITES; } -u8 FldEff_LongGrass(void) +u32 FldEff_LongGrass(void) { s16 x; s16 y; @@ -471,7 +472,7 @@ void unc_grass_tall(struct Sprite *sprite) } } -u8 FldEff_JumpLongGrass(void) +u32 FldEff_JumpLongGrass(void) { u8 spriteId; struct Sprite *sprite; @@ -489,7 +490,7 @@ u8 FldEff_JumpLongGrass(void) return 0; } -u8 FldEff_ShortGrass(void) +u32 FldEff_ShortGrass(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -549,7 +550,7 @@ void sub_8127334(struct Sprite *sprite) } } -u8 FldEff_SandFootprints(void) +u32 FldEff_SandFootprints(void) { u8 spriteId; struct Sprite *sprite; @@ -567,7 +568,7 @@ u8 FldEff_SandFootprints(void) return 0; } -u8 FldEff_DeepSandFootprints(void) +u32 FldEff_DeepSandFootprints(void) { u8 spriteId; struct Sprite *sprite; @@ -585,7 +586,7 @@ u8 FldEff_DeepSandFootprints(void) return spriteId; } -u8 FldEff_BikeTireTracks(void) +u32 FldEff_BikeTireTracks(void) { u8 spriteId; struct Sprite *sprite; @@ -628,7 +629,7 @@ static void sub_81275C4(struct Sprite *sprite) } } -u8 FldEff_Splash(void) +u32 FldEff_Splash(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -672,7 +673,7 @@ void sub_81276B4(struct Sprite *sprite) } } -u8 FldEff_JumpSmallSplash(void) +u32 FldEff_JumpSmallSplash(void) { u8 spriteId; struct Sprite *sprite; @@ -690,7 +691,7 @@ u8 FldEff_JumpSmallSplash(void) return 0; } -u8 FldEff_JumpBigSplash(void) +u32 FldEff_JumpBigSplash(void) { u8 spriteId; struct Sprite *sprite; @@ -708,7 +709,7 @@ u8 FldEff_JumpBigSplash(void) return 0; } -u8 FldEff_FeetInFlowingWater(void) +u32 FldEff_FeetInFlowingWater(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -767,7 +768,7 @@ static void sub_81278D8(struct Sprite *sprite) } } -u8 FldEff_Ripple(void) +u32 FldEff_Ripple(void) { u8 spriteId; struct Sprite *sprite; @@ -783,7 +784,7 @@ u8 FldEff_Ripple(void) return 0; } -u8 FldEff_HotSpringsWater(void) +u32 FldEff_HotSpringsWater(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -828,7 +829,7 @@ void sub_8127A7C(struct Sprite *sprite) } } -u8 FldEff_Unknown19(void) +u32 FldEff_Unknown19(void) { u8 spriteId; struct Sprite *sprite; @@ -845,7 +846,7 @@ u8 FldEff_Unknown19(void) return 0; } -u8 FldEff_Unknown20(void) +u32 FldEff_Unknown20(void) { u8 spriteId; struct Sprite *sprite; @@ -862,7 +863,7 @@ u8 FldEff_Unknown20(void) return 0; } -u8 FldEff_Unknown21(void) +u32 FldEff_Unknown21(void) { u8 spriteId; struct Sprite *sprite; @@ -879,7 +880,7 @@ u8 FldEff_Unknown21(void) return 0; } -u8 FldEff_Unknown22(void) +u32 FldEff_Unknown22(void) { u8 spriteId; struct Sprite *sprite; @@ -907,7 +908,7 @@ void ash(s16 x, s16 y, u16 c, s16 d) FieldEffectStart(FLDEFF_ASH); } -u8 FldEff_Ash(void) +u32 FldEff_Ash(void) { s16 x; s16 y; @@ -965,7 +966,7 @@ static void sub_8127E30(struct Sprite *sprite) } } -u8 FldEff_SurfBlob(void) +u32 FldEff_SurfBlob(void) { u8 spriteId; struct Sprite *sprite; @@ -1208,7 +1209,7 @@ static void sub_8128174(struct Sprite *sprite) } } -u8 FldEff_Dust(void) +u32 FldEff_Dust(void) { u8 spriteId; struct Sprite *sprite; @@ -1226,7 +1227,7 @@ u8 FldEff_Dust(void) return 0; } -u8 FldEff_SandPile(void) +u32 FldEff_SandPile(void) { u8 mapObjectId; struct MapObject *mapObject; @@ -1284,7 +1285,7 @@ void sub_81282E0(struct Sprite *sprite) } } -u8 FldEff_Bubbles(void) +u32 FldEff_Bubbles(void) { u8 spriteId; struct Sprite *sprite; @@ -1312,7 +1313,7 @@ void sub_8128410(struct Sprite *sprite) } } -u8 FldEff_BerryTreeGrowthSparkle(void) +u32 FldEff_BerryTreeGrowthSparkle(void) { u8 spriteId; struct Sprite *sprite; @@ -1329,3 +1330,46 @@ u8 FldEff_BerryTreeGrowthSparkle(void) } return 0; } + +u32 FldEff_TreeDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 0x18, 0x04); +} + + +u32 FldEff_MountainDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 0x19, 0x03); +} + + +u32 FldEff_SandDisguise(void) +{ + return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 0x1C, 0x02); +} + +static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) +{ + u8 spriteId; + struct Sprite *sprite; + + if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2], &spriteId)) + { + FieldEffectActiveListRemove(fldEff); + return MAX_SPRITES; + } + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled ++; + sprite->oam.paletteNum = paletteNum; + sprite->data1 = fldEff; + sprite->data2 = gFieldEffectSpawnParams[0]; + sprite->data3 = gFieldEffectSpawnParams[1]; + sprite->data4 = gFieldEffectSpawnParams[2]; + } + return spriteId; +} + + -- cgit v1.2.3 From e15b0256fe3c2e8713f185c1083629d51bd4cd3a Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:15:19 -0400 Subject: sub_81285AC --- src/field_effect_helpers.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index da406daeb..151efd400 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1372,4 +1372,36 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) return spriteId; } +void sub_81285AC(struct Sprite *sprite) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + struct Sprite *linkedSprite; + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data2, sprite->data3, sprite->data4, &mapObjectId)) + { + FieldEffectStop(sprite, sprite->data1); + } + // else { + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; + sprite->invisible = linkedSprite->invisible; + sprite->pos1.x = linkedSprite->pos1.x; + sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16; + sprite->subpriority = linkedSprite->subpriority - 1; + if (sprite->data0 == 1) + { + sprite->data0 ++; + StartSpriteAnim(sprite, 1); + } + if (sprite->data0 == 2 && sprite->animEnded) + { + sprite->data7 = 1; + } + if (sprite->data0 == 3) + { + FieldEffectStop(sprite, sprite->data1); + } + // } + +} -- cgit v1.2.3 From 88ee7928f6868c8bb167e74193902e8cd8eb7ca2 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:21:28 -0400 Subject: sub_81286C4 --- src/field_effect_helpers.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 151efd400..de85291f3 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1403,5 +1403,34 @@ void sub_81285AC(struct Sprite *sprite) FieldEffectStop(sprite, sprite->data1); } // } +} + +void sub_812869C(struct MapObject *mapObject) +{ + if (mapObject->mapobj_unk_21 == 1) + { + gSprites[mapObject->mapobj_unk_1A].data0 ++; + } +} + +bool8 sub_81286C4(struct MapObject *mapObject) +{ + struct Sprite *sprite; + if (mapObject->mapobj_unk_21 == 2) + { + return TRUE; + } + if (mapObject->mapobj_unk_21 == 0) + { + return TRUE; + } + sprite = &gSprites[mapObject->mapobj_unk_1A]; + if (sprite->data7) + { + mapObject->mapobj_unk_21 = 2; + sprite->data0 ++; + return TRUE; + } + return FALSE; } -- cgit v1.2.3 From b3bcd2872414a513b286b627d0b7df86b5962e2f Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:24:17 -0400 Subject: FldEff_Sparkle --- src/field_effect_helpers.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index de85291f3..c4b48a377 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1434,3 +1434,19 @@ bool8 sub_81286C4(struct MapObject *mapObject) } return FALSE; } + +u32 FldEff_Sparkle(void) +{ + u8 spriteId; + + gFieldEffectSpawnParams[0] += 7; + gFieldEffectSpawnParams[1] += 7; + sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x52); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[2]; + gSprites[spriteId].coordOffsetEnabled = TRUE; + } + return 0; +} -- cgit v1.2.3 From 6a848e2f9d014a7460137fa0e3d0b334867ef416 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:27:32 -0400 Subject: sub_8128774 --- src/field_effect_helpers.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index c4b48a377..a84746a04 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1450,3 +1450,23 @@ u32 FldEff_Sparkle(void) } return 0; } + +void sub_8128774(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + if (sprite->animEnded) + { + sprite->invisible = TRUE; + sprite->data0 ++; + } + if (sprite->data0 == 0) + { + return; + } + } + if (++ sprite->data1 >= 35) + { + FieldEffectStop(sprite, FLDEFF_SPARKLE); + } +} -- cgit v1.2.3 From 6ca5e691bf555cce48719ce666c087dbc86fd28d Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:28:51 -0400 Subject: sub_81287C4 --- src/field_effect_helpers.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index a84746a04..793bef3e2 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1470,3 +1470,16 @@ void sub_8128774(struct Sprite *sprite) FieldEffectStop(sprite, FLDEFF_SPARKLE); } } + +void sub_81287C4(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + FieldEffectStop(sprite, sprite->data1); + } + else + { + sub_806487C(sprite, FALSE); + SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0); + } +} -- cgit v1.2.3 From 7a3708b1f3583d235bcbe1b6022de98a79762dca Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 12:29:54 -0400 Subject: sub_8128800 --- src/field_effect_helpers.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 793bef3e2..9914defe4 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1483,3 +1483,15 @@ void sub_81287C4(struct Sprite *sprite) SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0); } } + +void sub_8128800(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + FieldEffectStop(sprite, sprite->data0); + } + else + { + sub_806487C(sprite, FALSE); + } +} -- cgit v1.2.3 From 7c19038c79cf733b3fc85816c8b8500e1068b6d1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 13:19:57 -0400 Subject: sub_812882C nonmatching --- src/field_effect_helpers.c | 152 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 151 insertions(+), 1 deletion(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9914defe4..3ff5b31db 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -32,7 +32,7 @@ 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 sub_812882C(struct Sprite *, u8, u8); +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 *); @@ -1495,3 +1495,153 @@ void sub_8128800(struct Sprite *sprite) sub_806487C(sprite, FALSE); } } + +#ifdef NONMATCHING +static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +{ + u8 i; + s16 xlo; + s16 xhi; + s16 lx; + s16 lyhi; + s16 ly; + s16 ylo; + s16 yhi; + struct MapObject *mapObject; // r4 + const struct MapObjectGraphicsInfo *graphicsInfo; // destroyed + struct Sprite *linkedSprite; // r5 + + SetObjectSubpriorityByZCoord(z, sprite, offset); + for (i = 0; i < 16; i ++) + { + mapObject = &gMapObjects[i]; + if (mapObject->active) + { + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + linkedSprite = &gSprites[mapObject->spriteId]; + xhi = sprite->pos1.x + sprite->centerToCornerVecX; + xlo = sprite->pos1.x - sprite->centerToCornerVecX; + lx = linkedSprite->pos1.x; + if (xhi < lx && xlo > lx) + { + lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY; + ly = linkedSprite->pos1.y; + ylo = sprite->pos1.y - sprite->centerToCornerVecY; + yhi = ylo + linkedSprite->centerToCornerVecY; + if ((lyhi < yhi || lyhi < ylo) && ly > yhi) + { + if (sprite->subpriority <= linkedSprite->subpriority) + { + sprite->subpriority = linkedSprite->subpriority + 2; + break; + } + } + } + } + } +} +#else +__attribute__((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" + "\tadds r0, r1, 0\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tadds r1, r6, 0\n" + "\tbl SetObjectSubpriorityByZCoord\n" + "\tmovs r7, 0\n" + "_08128842:\n" + "\tlsls r0, r7, 3\n" + "\tadds r0, r7\n" + "\tlsls r0, 2\n" + "\tldr r1, _081288DC @ =gMapObjects\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" + "\tldrb r1, [r4, 0x4]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _081288E0 @ =gSprites\n" + "\tadds r5, r0, r1\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x28\n" + "\tmovs r2, 0\n" + "\tldrsb r2, [r0, r2]\n" + "\tldrh r0, [r6, 0x20]\n" + "\tadds r1, r0, r2\n" + "\tsubs r0, r2\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tmovs r0, 0x20\n" + "\tldrsh r2, [r5, r0]\n" + "\tcmp r1, r2\n" + "\tbge _081288E4\n" + "\tlsls r0, r4, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r2\n" + "\tble _081288E4\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x29\n" + "\tmovs r3, 0\n" + "\tldrsb r3, [r0, r3]\n" + "\tldrh r2, [r5, 0x22]\n" + "\tadds r2, r3\n" + "\tldrh r4, [r5, 0x22]\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x29\n" + "\tmovs r1, 0\n" + "\tldrsb r1, [r0, r1]\n" + "\tldrh r0, [r6, 0x22]\n" + "\tsubs r0, r1\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tadds r3, r0, r3\n" + "\tlsls r2, 16\n" + "\tasrs r2, 16\n" + "\tlsls r3, 16\n" + "\tasrs r3, 16\n" + "\tcmp r2, r3\n" + "\tblt _081288BC\n" + "\tcmp r2, r0\n" + "\tbge _081288E4\n" + "_081288BC:\n" + "\tlsls r0, r4, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r3\n" + "\tble _081288E4\n" + "\tadds r2, r6, 0\n" + "\tadds r2, 0x43\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0x43\n" + "\tldrb r1, [r0]\n" + "\tldrb r0, [r2]\n" + "\tcmp r0, r1\n" + "\tbhi _081288E4\n" + "\tadds r0, r1, 0x2\n" + "\tstrb r0, [r2]\n" + "\tb _081288EE\n" + "\t.align 2, 0\n" + "_081288DC: .4byte gMapObjects\n" + "_081288E0: .4byte gSprites\n" + "_081288E4:\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tcmp r7, 0xF\n" + "\tbls _08128842\n" + "_081288EE:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif -- cgit v1.2.3 From 23d0a78beaeca0bec24c0839c73df6eb8969fb53 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 10 Sep 2017 13:24:58 -0400 Subject: Cleanup --- src/field_effect_helpers.c | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 3ff5b31db..1152c39bc 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1,9 +1,3 @@ -// -// Created by scott on 9/9/2017. -// - - -// Includes #include "global.h" #include "sprite.h" #include "fieldmap.h" @@ -18,11 +12,6 @@ #include "field_ground_effect.h" #include "field_effect_helpers.h" -// Static type declarations - -// Static RAM declarations - -// Static ROM declarations 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); @@ -40,8 +29,6 @@ static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); static void sub_8128174(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); -// .rodata - const u8 UnusedEggString_8401E28[] = _("タマゴ"); const u16 gUnknown_08401E2C[] = { @@ -88,8 +75,6 @@ const u16 gUnknown_08401E5A[] = { 7 }; -// .text - void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) { struct Sprite *newSprite; @@ -114,7 +99,7 @@ void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 f } } -s16 sub_81268D0(struct MapObject *mapObject) +static s16 sub_81268D0(struct MapObject *mapObject) { return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2; } @@ -1003,7 +988,7 @@ void sub_8127F28(u8 spriteId, u8 value, s16 data1) gSprites[spriteId].data1 = data1; } -/*static*/ u8 sub_8127F5C(struct Sprite *sprite) +static u8 sub_8127F5C(struct Sprite *sprite) { return sprite->data0 & 0xF; } @@ -1013,7 +998,7 @@ static u8 sub_8127F64(struct Sprite *sprite) return (sprite->data0 & 0xF0) >> 4; } -/*static*/ u8 sub_8127F70(struct Sprite *sprite) +static u8 sub_8127F70(struct Sprite *sprite) { return (sprite->data0 & 0xF00) >> 8; } -- cgit v1.2.3 From aecddc277130652a90e00ad0cc314b7ef9765bbb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Sep 2017 17:42:50 -0400 Subject: gFieldEffectSpawnParams -> gFieldEffectArguments --- src/field_effect_helpers.c | 242 ++++++++++++++++++++++----------------------- 1 file changed, 121 insertions(+), 121 deletions(-) (limited to 'src/field_effect_helpers.c') diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 1152c39bc..2ad8bdce3 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -243,15 +243,15 @@ u32 FldEff_Shadow(void) const struct MapObjectGraphicsInfo *graphicsInfo; u8 spriteId; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data0 = gFieldEffectSpawnParams[0]; - gSprites[spriteId].data1 = gFieldEffectSpawnParams[1]; - gSprites[spriteId].data2 = gFieldEffectSpawnParams[2]; + gSprites[spriteId].data0 = gFieldEffectArguments[0]; + gSprites[spriteId].data1 = gFieldEffectArguments[1]; + gSprites[spriteId].data2 = gFieldEffectArguments[2]; gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; } return 0; @@ -288,22 +288,22 @@ u32 FldEff_TallGrass(void) u8 spriteId; struct Sprite *sprite; - x = gFieldEffectSpawnParams[0]; - y = gFieldEffectSpawnParams[1]; + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; sub_8060470(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; - sprite->data1 = gFieldEffectSpawnParams[0]; - sprite->data2 = gFieldEffectSpawnParams[1]; - sprite->data3 = gFieldEffectSpawnParams[4]; - sprite->data4 = gFieldEffectSpawnParams[5]; - sprite->data5 = gFieldEffectSpawnParams[6]; - if (gFieldEffectSpawnParams[7]) + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + sprite->data5 = gFieldEffectArguments[6]; + if (gFieldEffectArguments[7]) { SeekSpriteAnim(sprite, 4); } @@ -358,14 +358,14 @@ u32 FldEff_JumpTallGrass(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = 12; } return 0; @@ -397,22 +397,22 @@ u32 FldEff_LongGrass(void) u8 spriteId; struct Sprite *sprite; - x = gFieldEffectSpawnParams[0]; - y = gFieldEffectSpawnParams[1]; + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; sub_8060470(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = ZCoordToPriority(gFieldEffectSpawnParams[2]); - sprite->data0 = gFieldEffectSpawnParams[2]; - sprite->data1 = gFieldEffectSpawnParams[0]; - sprite->data2 = gFieldEffectSpawnParams[1]; - sprite->data3 = gFieldEffectSpawnParams[4]; - sprite->data4 = gFieldEffectSpawnParams[5]; - sprite->data5 = gFieldEffectSpawnParams[6]; - if (gFieldEffectSpawnParams[7]) + sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]); + sprite->data0 = gFieldEffectArguments[2]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; + sprite->data5 = gFieldEffectArguments[6]; + if (gFieldEffectArguments[7]) { SeekSpriteAnim(sprite, 6); } @@ -462,14 +462,14 @@ u32 FldEff_JumpLongGrass(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = 18; } return 0; @@ -482,7 +482,7 @@ u32 FldEff_ShortGrass(void) u8 spriteId; struct Sprite *sprite; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -490,9 +490,9 @@ u32 FldEff_ShortGrass(void) sprite = &(gSprites[spriteId]); sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = gSprites[mapObject->spriteId].pos1.x; sprite->data4 = gSprites[mapObject->spriteId].pos1.y; } @@ -540,15 +540,15 @@ u32 FldEff_SandFootprints(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data7 = FLDEFF_SAND_FOOTPRINTS; - StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return 0; } @@ -558,15 +558,15 @@ u32 FldEff_DeepSandFootprints(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS; - StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; } @@ -576,15 +576,15 @@ u32 FldEff_BikeTireTracks(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS; - StartSpriteAnim(sprite, gFieldEffectSpawnParams[4]); + StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; } @@ -623,7 +623,7 @@ u32 FldEff_Splash(void) const struct MapObjectGraphicsInfo *graphicsInfo; struct Sprite *linkedSprite; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -633,9 +633,9 @@ u32 FldEff_Splash(void) sprite->coordOffsetEnabled = TRUE; linkedSprite = &gSprites[mapObject->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->pos2.y = (graphicsInfo->height >> 1) - 4; PlaySE(SE_MIZU); } @@ -663,14 +663,14 @@ u32 FldEff_JumpSmallSplash(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH; } return 0; @@ -681,14 +681,14 @@ u32 FldEff_JumpBigSplash(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = FLDEFF_JUMP_BIG_SPLASH; } return 0; @@ -702,7 +702,7 @@ u32 FldEff_FeetInFlowingWater(void) struct Sprite *sprite; const struct MapObjectGraphicsInfo *graphicsInfo; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -712,9 +712,9 @@ u32 FldEff_FeetInFlowingWater(void) sprite->callback = sub_81278D8; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = -1; sprite->data4 = -1; sprite->pos2.y = (graphicsInfo->height >> 1) - 4; @@ -758,12 +758,12 @@ u32 FldEff_Ripple(void) u8 spriteId; struct Sprite *sprite; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_RIPPLE; } return 0; @@ -776,7 +776,7 @@ u32 FldEff_HotSpringsWater(void) u8 spriteId; struct Sprite *sprite; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -784,9 +784,9 @@ u32 FldEff_HotSpringsWater(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = gSprites[mapObject->spriteId].pos1.x; sprite->data4 = gSprites[mapObject->spriteId].pos1.y; } @@ -819,13 +819,13 @@ u32 FldEff_Unknown19(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_UNKNOWN_19; } return 0; @@ -836,13 +836,13 @@ u32 FldEff_Unknown20(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_UNKNOWN_20; } return 0; @@ -853,13 +853,13 @@ u32 FldEff_Unknown21(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_UNKNOWN_21; } return 0; @@ -870,13 +870,13 @@ u32 FldEff_Unknown22(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->data0 = FLDEFF_UNKNOWN_22; } return 0; @@ -884,12 +884,12 @@ u32 FldEff_Unknown22(void) void ash(s16 x, s16 y, u16 c, s16 d) { - gFieldEffectSpawnParams[0] = x; - gFieldEffectSpawnParams[1] = y; - gFieldEffectSpawnParams[2] = 0x52; - gFieldEffectSpawnParams[3] = 1; - gFieldEffectSpawnParams[4] = c; - gFieldEffectSpawnParams[5] = d; + gFieldEffectArguments[0] = x; + gFieldEffectArguments[1] = y; + gFieldEffectArguments[2] = 0x52; + gFieldEffectArguments[3] = 1; + gFieldEffectArguments[4] = c; + gFieldEffectArguments[5] = d; FieldEffectStart(FLDEFF_ASH); } @@ -900,19 +900,19 @@ u32 FldEff_Ash(void) u8 spriteId; struct Sprite *sprite; - x = gFieldEffectSpawnParams[0]; - y = gFieldEffectSpawnParams[1]; + x = gFieldEffectArguments[0]; + y = gFieldEffectArguments[1]; sub_8060470(&x, &y, 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectSpawnParams[2]); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data1 = gFieldEffectSpawnParams[0]; - sprite->data2 = gFieldEffectSpawnParams[1]; - sprite->data3 = gFieldEffectSpawnParams[4]; - sprite->data4 = gFieldEffectSpawnParams[5]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data1 = gFieldEffectArguments[0]; + sprite->data2 = gFieldEffectArguments[1]; + sprite->data3 = gFieldEffectArguments[4]; + sprite->data4 = gFieldEffectArguments[5]; } return 0; } @@ -956,14 +956,14 @@ u32 FldEff_SurfBlob(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x96); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96); if (spriteId !=MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.paletteNum = 0; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = -1; sprite->data6 = -1; sprite->data7 = -1; @@ -1199,14 +1199,14 @@ u32 FldEff_Dust(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 12); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; - sprite->data0 = gFieldEffectSpawnParams[2]; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data0 = gFieldEffectArguments[2]; sprite->data1 = 10; } return 0; @@ -1220,7 +1220,7 @@ u32 FldEff_SandPile(void) struct Sprite *sprite; const struct MapObjectGraphicsInfo *graphicsInfo; - mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); mapObject = &gMapObjects[mapObjectId]; spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0); if (spriteId != MAX_SPRITES) @@ -1229,9 +1229,9 @@ u32 FldEff_SandPile(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectSpawnParams[0]; - sprite->data1 = gFieldEffectSpawnParams[1]; - sprite->data2 = gFieldEffectSpawnParams[2]; + sprite->data0 = gFieldEffectArguments[0]; + sprite->data1 = gFieldEffectArguments[1]; + sprite->data2 = gFieldEffectArguments[2]; sprite->data3 = gSprites[mapObject->spriteId].pos1.x; sprite->data4 = gSprites[mapObject->spriteId].pos1.y; sprite->pos2.y = (graphicsInfo->height >> 1) - 2; @@ -1275,8 +1275,8 @@ u32 FldEff_Bubbles(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 0); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x52); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; @@ -1303,13 +1303,13 @@ u32 FldEff_BerryTreeGrowthSparkle(void) u8 spriteId; struct Sprite *sprite; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 4); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]); + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = gFieldEffectSpawnParams[3]; + sprite->oam.priority = gFieldEffectArguments[3]; sprite->oam.paletteNum = 5; sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } @@ -1338,7 +1338,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) u8 spriteId; struct Sprite *sprite; - if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2], &spriteId)) + if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId)) { FieldEffectActiveListRemove(fldEff); return MAX_SPRITES; @@ -1350,9 +1350,9 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) sprite->coordOffsetEnabled ++; sprite->oam.paletteNum = paletteNum; sprite->data1 = fldEff; - sprite->data2 = gFieldEffectSpawnParams[0]; - sprite->data3 = gFieldEffectSpawnParams[1]; - sprite->data4 = gFieldEffectSpawnParams[2]; + sprite->data2 = gFieldEffectArguments[0]; + sprite->data3 = gFieldEffectArguments[1]; + sprite->data4 = gFieldEffectArguments[2]; } return spriteId; } @@ -1424,13 +1424,13 @@ u32 FldEff_Sparkle(void) { u8 spriteId; - gFieldEffectSpawnParams[0] += 7; - gFieldEffectSpawnParams[1] += 7; - sub_8060470((s16 *)&gFieldEffectSpawnParams[0], (s16 *)&gFieldEffectSpawnParams[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], 0x52); + gFieldEffectArguments[0] += 7; + gFieldEffectArguments[1] += 7; + sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].oam.priority = gFieldEffectSpawnParams[2]; + gSprites[spriteId].oam.priority = gFieldEffectArguments[2]; gSprites[spriteId].coordOffsetEnabled = TRUE; } return 0; -- cgit v1.2.3