diff options
Diffstat (limited to 'src/battle/anim/bug.c')
-rw-r--r-- | src/battle/anim/bug.c | 230 |
1 files changed, 207 insertions, 23 deletions
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index d57a1046e..c4c7fe937 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -3,18 +3,202 @@ #include "contest.h" #include "rom_8077ABC.h" #include "trig.h" -// #include "util.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; +void sub_80DC824(struct Sprite *sprite); +void sub_80DC8F4(struct Sprite *sprite); +void sub_80DC9A0(struct Sprite *sprite); +void sub_80DCA70(struct Sprite *sprite); +void sub_80DCB38(struct Sprite *sprite); +void AnimTranslateStinger(struct Sprite *sprite); +void AnimMissileArc(struct Sprite *sprite); +void sub_80DCE40(struct Sprite *sprite); static void sub_80DCA38(struct Sprite *sprite); static void sub_80DCAEC(struct Sprite *sprite); static void sub_80DCB5C(struct Sprite *sprite); static void sub_80DCBB4(struct Sprite *sprite); static void AnimMissileArcStep(struct Sprite *sprite); +const union AffineAnimCmd gSpriteAffineAnim_83DAA80[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 30, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAA90[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, -99, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAAA0[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 94, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAAB0[] = +{ + gSpriteAffineAnim_83DAA80, + gSpriteAffineAnim_83DAA90, + gSpriteAffineAnim_83DAAA0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAABC = +{ + .tileTag = 10153, + .paletteTag = 10153, + .oam = &gOamData_837E014, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAAB0, + .callback = sub_80DC824, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAAD4[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -33, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAAE4[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAAF4[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAB04[] = +{ + gSpriteAffineAnim_83DAAD4, + gSpriteAffineAnim_83DAAE4, + gSpriteAffineAnim_83DAAF4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB10 = +{ + .tileTag = 10161, + .paletteTag = 10161, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAB04, + .callback = sub_80DC8F4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB28 = +{ + .tileTag = 10180, + .paletteTag = 10180, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DC9A0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB40 = +{ + .tileTag = 10179, + .paletteTag = 10179, + .oam = &gOamData_837DF5C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DCA70, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAB58[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAB70[] = +{ + gSpriteAffineAnim_83DAB58, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB74 = +{ + .tileTag = 10181, + .paletteTag = 10181, + .oam = &gOamData_837E11C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAB70, + .callback = sub_80DCB38, +}; + +const struct SpriteTemplate gLinearStingerSpriteTemplate = +{ + .tileTag = 10161, + .paletteTag = 10161, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimTranslateStinger, +}; + +const struct SpriteTemplate gPinMissileSpriteTemplate = +{ + .tileTag = 10161, + .paletteTag = 10161, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMissileArc, +}; + +const struct SpriteTemplate gIcicleSpearSpriteTemplate = +{ + .tileTag = 10262, + .paletteTag = 10262, + .oam = &gOamData_837DF94, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMissileArc, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DABD4[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 18), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 8), + AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 8), + AFFINEANIMCMD_LOOP(5), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAC0C[] = +{ + gSpriteAffineAnim_83DABD4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC10 = +{ + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E0BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAC0C, + .callback = sub_80DCE40, +}; + // used in Move_MEGAHORN void sub_80DC824(struct Sprite *sprite) { @@ -24,7 +208,7 @@ void sub_80DC824(struct Sprite *sprite) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } - else if (!GetBankSide(gAnimBankTarget)) + else if (!GetBattlerSide(gAnimBankTarget)) { StartSpriteAffineAnim(sprite, 1); gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -37,8 +221,8 @@ void sub_80DC824(struct Sprite *sprite) sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); @@ -52,7 +236,7 @@ void sub_80DC8F4(struct Sprite *sprite) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; StartSpriteAffineAnim(sprite, 2); } - else if (!GetBankSide(gAnimBankTarget)) + else if (!GetBattlerSide(gAnimBankTarget)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -62,8 +246,8 @@ void sub_80DC8F4(struct Sprite *sprite) sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); - sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); @@ -83,8 +267,8 @@ void sub_80DC9A0(struct Sprite *sprite) if (!gBattleAnimArgs[4]) { - sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); - sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); } else { @@ -112,13 +296,13 @@ static void sub_80DCA38(struct Sprite *sprite) void sub_80DCA70(struct Sprite *sprite) { SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); - if (GetBankSide(gAnimBankAttacker)) + if (GetBattlerSide(gAnimBankAttacker)) sprite->pos1.x -= gBattleAnimArgs[0]; else sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; - if (!GetBankSide(gAnimBankTarget)) + if (!GetBattlerSide(gAnimBankTarget)) sprite->pos1.y += 8; sprite->callback = sub_80DCAEC; @@ -193,7 +377,7 @@ void AnimTranslateStinger(struct Sprite *sprite) } else { - if (GetBankSide(gAnimBankAttacker)) + if (GetBattlerSide(gAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -203,9 +387,9 @@ void AnimTranslateStinger(struct Sprite *sprite) if (!IsContest()) { - if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget)) + if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget)) { - if (GetBankIdentity(gAnimBankTarget) == 0 || GetBankIdentity(gAnimBankTarget) == 1) + if (GetBattlerPosition(gAnimBankTarget) == 0 || GetBattlerPosition(gAnimBankTarget) == 1) { s16 temp1, temp2; @@ -220,8 +404,8 @@ void AnimTranslateStinger(struct Sprite *sprite) InitAnimSpritePos(sprite, 1); - lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; - lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + lVarX = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + lVarY = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y); rot += 0xC000; sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); @@ -247,12 +431,12 @@ void AnimMissileArc(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); - if (GetBankSide(gAnimBankAttacker)) + if (GetBattlerSide(gAnimBankAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[5]; InitAnimSpriteTranslationOverDuration(sprite); @@ -301,13 +485,13 @@ void sub_80DCE40(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); - sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 18; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + 18; } else { - sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2); - sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + 18; + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3) + 18; } StoreSpriteCallbackInData(sprite, move_anim_8074EE0); |