diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-06-25 17:50:27 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-06-25 17:50:27 -0500 |
commit | 605f8ac1141daf66d3428923e004f82f5a5e1594 (patch) | |
tree | a3e5fae5d271175c7f10b6b455fcdc7f0fdd553e /src/battle/anim/espeed.c | |
parent | e88e39d5fda1644f77e41fd652d4310612da7532 (diff) | |
parent | 659437f07a44b6f560bb58d6c12d141ed8ba7643 (diff) |
Merge branch 'master' into contest_link_80C2020
Diffstat (limited to 'src/battle/anim/espeed.c')
-rw-r--r-- | src/battle/anim/espeed.c | 70 |
1 files changed, 58 insertions, 12 deletions
diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c index 469522092..a4f11c823 100644 --- a/src/battle/anim/espeed.c +++ b/src/battle/anim/espeed.c @@ -8,11 +8,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern s8 gUnknown_083D7A00[4][2]; - -extern struct AffineAnimFrameCmd gUnknown_083D79BC; -extern struct SpriteTemplate gSpriteTemplate_83D79E8; - +void sub_80D1A70(struct Sprite* sprite); static void sub_80D15E0(u8 taskId); static void sub_80D16A0(u8 taskId); static void sub_80D1808(u8 taskId); @@ -21,13 +17,53 @@ static void sub_80D1930(u8 taskId); // espeed (the Pokemon's width decreases as the sprite becomes vertically compressed) // Used in Extremespeed. +const union AffineAnimCmd gSpriteAffineAnim_83D79BC[] = +{ + AFFINEANIMCMD_FRAME(96, -13, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D79CC[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D79E4[] = +{ + gSpriteAnim_83D79CC, +}; + +const struct SpriteTemplate gSpriteTemplate_83D79E8 = +{ + .tileTag = 10207, + .paletteTag = 10207, + .oam = &gOamData_837DF2C, + .anims = gSpriteAnimTable_83D79E4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D1A70, +}; + +const s8 gUnknown_083D7A00[][2] = +{ + {30, 28}, + {-20, 24}, + {16, 26}, + {-10, 28}, +}; + // apply espeed void sub_80D15A4(u8 taskId) { struct Task* task = &gTasks[taskId]; - u8 spriteId = GetAnimBankSpriteId(0); + u8 spriteId = GetAnimBattlerSpriteId(0); task->data[0] = spriteId; - sub_80798F4(task, spriteId, &gUnknown_083D79BC); + sub_80798F4(task, spriteId, &gSpriteAffineAnim_83D79BC); task->func = sub_80D15E0; } @@ -51,7 +87,7 @@ void sub_80D1638(u8 taskId) task->data[2] = 0; task->data[3] = 0; task->data[12] = 3; - if (GetBankSide(gAnimBankTarget) == 0) + if (GetBattlerSide(gAnimBankTarget) == 0) { task->data[13] = 0xFFFF; task->data[14] = 8; @@ -62,7 +98,7 @@ void sub_80D1638(u8 taskId) task->data[14] = -8; } - task->data[15] = GetAnimBankSpriteId(1); + task->data[15] = GetAnimBattlerSpriteId(1); task->func = sub_80D16A0; } @@ -123,7 +159,7 @@ void sub_80D17C4(u8 taskId) task->data[4] = 1; task->data[13] = 14; task->data[14] = 2; - task->data[15] = GetAnimBankSpriteId(0); + task->data[15] = GetAnimBattlerSpriteId(0); task->func = sub_80D1808; } @@ -169,8 +205,8 @@ void sub_80D18D4(u8 taskId) task->data[7] = 0; task->data[8] = 0; task->data[13] = 0; - task->data[14] = GetBankPosition(gAnimBankAttacker, 0); - task->data[15] = GetBankPosition(gAnimBankAttacker, 1); + task->data[14] = GetBattlerSpriteCoord(gAnimBankAttacker, 0); + task->data[15] = GetBattlerSpriteCoord(gAnimBankAttacker, 1); task->func = sub_80D1930; } @@ -239,3 +275,13 @@ void sub_80D1930(u8 taskId) break; } } + +void sub_80D1A70(struct Sprite* sprite) +{ + sprite->invisible = gTasks[sprite->data[0]].data[5]; + if (sprite->animEnded) + { + gTasks[sprite->data[0]].data[sprite->data[1]]--; + DestroySprite(sprite); + } +} |