diff options
Diffstat (limited to 'src/battle/anim/bubble.c')
-rw-r--r-- | src/battle/anim/bubble.c | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c index d6ec06be9..e024091d7 100644 --- a/src/battle/anim/bubble.c +++ b/src/battle/anim/bubble.c @@ -8,6 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; +void sub_80D31C8(struct Sprite* sprite); static void sub_80D32E8(struct Sprite *sprite); static void sub_80D3370(struct Sprite *sprite); static void sub_80D3398(struct Sprite *sprite); @@ -15,33 +16,69 @@ static void sub_80D3398(struct Sprite *sprite); // bubble (indidivual bubble that floats around) // Used in Bubble and Bubblebeam +const union AffineAnimCmd gSpriteAffineAnim_83D9148[] = +{ + AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 10), + AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9160[] = +{ + gSpriteAffineAnim_83D9148, +}; + +const union AnimCmd gSpriteAnim_83D9164[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9174[] = +{ + gSpriteAnim_83D9164, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9178 = +{ + .tileTag = 10146, + .paletteTag = 10146, + .oam = &gOamData_837E0AC, + .anims = gSpriteAnimTable_83D9174, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9160, + .callback = sub_80D31C8, +}; + void sub_80D31C8(struct Sprite* sprite) { u8 newSpriteId; - if (GetBankSide(gAnimBankAttacker) != 0) + if (GetBattlerSide(gAnimBankAttacker) != 0) { - sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) - gBattleAnimArgs[0]; - sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[1]; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) - gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[1]; } else { - sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + gBattleAnimArgs[0]; - sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[1]; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[1]; } sprite->animPaused = 1; - if (GetBankSide(gAnimBankAttacker) != 0) + if (GetBattlerSide(gAnimBankAttacker) != 0) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data[0] = gBattleAnimArgs[6]; sprite->data[1] = sprite->pos1.x; - sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); sprite->data[3] = sprite->pos1.y; - sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); InitAnimSpriteTranslationDeltas(sprite); |