diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2016-10-23 22:21:30 -0400 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2016-10-23 19:21:30 -0700 |
commit | e53e9e3b760be3672a6040da77ac7260ef51786e (patch) | |
tree | e1cf6ef1bf0decc109d5ba7b545466ee53d45bd7 /src | |
parent | 72d197c3f23c4cf539ed465104fbf836b2253e58 (diff) |
decompile fldeff_emotion.c (#69)
* decompile fldeff_emotion.c
* formatting
* remove unnecessary << 24
* spaces
Diffstat (limited to 'src')
-rw-r--r-- | src/fldeff_emotion.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/fldeff_emotion.c b/src/fldeff_emotion.c new file mode 100644 index 000000000..06eb7bd9e --- /dev/null +++ b/src/fldeff_emotion.c @@ -0,0 +1,82 @@ +#include "global.h" +#include "sprite.h" +#include "fieldmap.h" + +extern u32 gUnknown_0202FF84[]; + +extern struct SpriteTemplate gSpriteTemplate_839B510; +extern struct SpriteTemplate gSpriteTemplate_839B528; + +bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *); + +void FieldEffectStop(struct Sprite *sprite, u16 a2); +void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3); +void objc_exclamation_mark_probably(struct Sprite *sprite); + +u8 FldEff_ExclamationMarkIcon1(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 0, 0); + + return 0; +} + +u8 FldEff_ExclamationMarkIcon2(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x52); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 33, 1); + + return 0; +} + +u8 FldEff_HeartIcon(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B528, 0, 0, 0x52); + + if (spriteId != 64) + sub_8084894(&gSprites[spriteId], 46, 0); + + return 0; +} + +void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) +{ + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = 1; + + sprite->data0 = gUnknown_0202FF84[0]; + sprite->data1 = gUnknown_0202FF84[1]; + sprite->data2 = gUnknown_0202FF84[2]; + sprite->data3 = -5; + sprite->data7 = a2; + + StartSpriteAnim(sprite, a3); +} + +void objc_exclamation_mark_probably(struct Sprite *sprite) +{ + u8 mapObjId; + + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjId) + || sprite->animEnded) + { + FieldEffectStop(sprite, (u8)sprite->data7); + } + else + { + struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId]; + sprite->data4 += sprite->data3; + sprite->pos1.x = mapObjSprite->pos1.x; + sprite->pos1.y = mapObjSprite->pos1.y - 16; + sprite->pos2.x = mapObjSprite->pos2.x; + sprite->pos2.y = mapObjSprite->pos2.y + sprite->data4; + if (sprite->data4) + sprite->data3++; + else + sprite->data3 = 0; + } +}
\ No newline at end of file |