diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-02-11 12:43:48 -0800 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-02-11 13:29:15 -0800 |
commit | c775680d716299ae74cbcfb7eeb41c8982010021 (patch) | |
tree | 16123943bc4974766ff04c0c1bc36c72e52f61f8 | |
parent | 4fe6a8bd80ff947661aea391060207a53895338e (diff) |
Document battle anim things related to STRENGTH, TACKLE, BODY_SLAM, and SUPERSONIC
34 files changed, 450 insertions, 400 deletions
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index 007d9f32b..dd0e9bac1 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -262,7 +262,7 @@ _0812C31A: strh r0, [r5, 0x2E] strh r7, [r5, 0x32] strh r6, [r5, 0x36] - ldr r0, _0812C350 @ =sub_8078B34 + ldr r0, _0812C350 @ =StartTranslateAnimSpriteByDeltas str r0, [r5, 0x1C] ldr r1, _0812C354 @ =DestroyAnimSprite adds r0, r5, 0 @@ -274,7 +274,7 @@ _0812C31A: .align 2, 0 _0812C348: .4byte gAnimBankTarget _0812C34C: .4byte gBattleAnimArgs -_0812C350: .4byte sub_8078B34 +_0812C350: .4byte StartTranslateAnimSpriteByDeltas _0812C354: .4byte DestroyAnimSprite thumb_func_end sub_812C2BC @@ -2376,7 +2376,7 @@ _0812D2F0: lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x36] - ldr r0, _0812D34C @ =sub_8078B34 + ldr r0, _0812D34C @ =StartTranslateAnimSpriteByDeltas str r0, [r5, 0x1C] _0812D33C: pop {r4,r5} @@ -2385,7 +2385,7 @@ _0812D33C: .align 2, 0 _0812D344: .4byte DestroyAnimSprite _0812D348: .4byte gAnimBankTarget -_0812D34C: .4byte sub_8078B34 +_0812D34C: .4byte StartTranslateAnimSpriteByDeltas thumb_func_end sub_812D294 thumb_func_start sub_812D350 diff --git a/asm/flying.s b/asm/flying.s index a99c5444c..a9872c903 100644 --- a/asm/flying.s +++ b/asm/flying.s @@ -342,7 +342,7 @@ _080DA2C2: ldrh r3, [r5, 0x36] adds r0, r3 strh r0, [r5, 0x36] - ldr r0, _080DA2F8 @ =sub_8078B34 + ldr r0, _080DA2F8 @ =StartTranslateAnimSpriteByDeltas str r0, [r5, 0x1C] ldr r1, _080DA2FC @ =DestroyAnimSprite adds r0, r5, 0 @@ -356,7 +356,7 @@ _080DA2C2: .align 2, 0 _080DA2F0: .4byte gAnimBankTarget _080DA2F4: .4byte gBattleAnimArgs -_080DA2F8: .4byte sub_8078B34 +_080DA2F8: .4byte StartTranslateAnimSpriteByDeltas _080DA2FC: .4byte DestroyAnimSprite thumb_func_end sub_80DA208 @@ -1743,7 +1743,7 @@ sub_80DAD30: @ 80DAD30 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] - ldr r0, _080DAD80 @ =sub_807941C + ldr r0, _080DAD80 @ =TranslateAnimSpriteToTargetMonLocation str r0, [r4, 0x1C] pop {r4,r5} pop {r0} @@ -1751,7 +1751,7 @@ sub_80DAD30: @ 80DAD30 .align 2, 0 _080DAD78: .4byte gAnimBankTarget _080DAD7C: .4byte gAnimBankAttacker -_080DAD80: .4byte sub_807941C +_080DAD80: .4byte TranslateAnimSpriteToTargetMonLocation thumb_func_end sub_80DAD30 thumb_func_start sub_80DAD84 diff --git a/asm/ground.s b/asm/ground.s index 9b55fea39..607065061 100644 --- a/asm/ground.s +++ b/asm/ground.s @@ -157,7 +157,7 @@ _080E1024: ldrh r4, [r4, 0x6] adds r0, r4 strh r0, [r6, 0x36] - ldr r0, _080E1070 @ =sub_8078B34 + ldr r0, _080E1070 @ =StartTranslateAnimSpriteByDeltas str r0, [r6, 0x1C] ldr r1, _080E1074 @ =DestroyAnimSprite adds r0, r6, 0 @@ -169,7 +169,7 @@ _080E1024: _080E1064: .4byte gAnimBankAttacker _080E1068: .4byte gBattleAnimArgs _080E106C: .4byte gAnimBankTarget -_080E1070: .4byte sub_8078B34 +_080E1070: .4byte StartTranslateAnimSpriteByDeltas _080E1074: .4byte DestroyAnimSprite thumb_func_end sub_80E1004 @@ -224,7 +224,7 @@ _080E10D0: strh r0, [r6, 0x32] adds r0, r7, r4 strh r0, [r6, 0x36] - ldr r0, _080E1100 @ =sub_8078B34 + ldr r0, _080E1100 @ =StartTranslateAnimSpriteByDeltas str r0, [r6, 0x1C] ldr r1, _080E1104 @ =move_anim_8074EE0 adds r0, r6, 0 @@ -237,7 +237,7 @@ _080E10D0: .align 2, 0 _080E10F8: .4byte gAnimBankTarget _080E10FC: .4byte gBattleAnimArgs -_080E1100: .4byte sub_8078B34 +_080E1100: .4byte StartTranslateAnimSpriteByDeltas _080E1104: .4byte move_anim_8074EE0 thumb_func_end sub_80E1078 @@ -371,7 +371,7 @@ _080D7976: ldr r1, _080D79AC @ =DestroyAnimSprite adds r0, r4, 0 bl StoreSpriteCallbackInData - ldr r0, _080D79B0 @ =sub_8078B34 + ldr r0, _080D79B0 @ =StartTranslateAnimSpriteByDeltas str r0, [r4, 0x1C] pop {r4} pop {r0} @@ -380,7 +380,7 @@ _080D7976: _080D79A4: .4byte gBattleAnimArgs _080D79A8: .4byte gAnimBankTarget _080D79AC: .4byte DestroyAnimSprite -_080D79B0: .4byte sub_8078B34 +_080D79B0: .4byte StartTranslateAnimSpriteByDeltas thumb_func_end sub_80D792C thumb_func_start sub_80D79B4 @@ -1696,14 +1696,14 @@ sub_80D83E0: @ 80D83E0 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x22] - ldr r0, _080D8410 @ =sub_807941C + ldr r0, _080D8410 @ =TranslateAnimSpriteToTargetMonLocation str r0, [r4, 0x1C] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080D840C: .4byte gAnimBankAttacker -_080D8410: .4byte sub_807941C +_080D8410: .4byte TranslateAnimSpriteToTargetMonLocation thumb_func_end sub_80D83E0 thumb_func_start sub_80D8414 diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s index 765d801f4..3ffefdb45 100644 --- a/data/battle_anim_80CA710.s +++ b/data/battle_anim_80CA710.s @@ -1031,7 +1031,7 @@ gBattleAnimSpriteTemplate_83D6EF0:: @ 83D6EF0 .align 2 gBattleAnimSpriteTemplate_83D6F08:: @ 83D6F08 - spr_template 10017, 10017, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807941C + spr_template 10017, 10017, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation .align 2 gSpriteAnim_83D6F20:: @ 83D6F20 @@ -1490,16 +1490,16 @@ gSpriteAffineAnimTable_83D7530:: @ 83D7530 .4byte gSpriteAffineAnim_83D74EC .align 2 -gBattleAnimSpriteTemplate_83D7534:: @ 83D7534 - spr_template 10163, 10163, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, sub_807941C +gSupersonicWaveSpriteTemplate:: @ 83D7534 + spr_template 10163, 10163, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, TranslateAnimSpriteToTargetMonLocation .align 2 gBattleAnimSpriteTemplate_83D754C:: @ 83D754C - spr_template 10164, 10164, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, sub_807941C + spr_template 10164, 10164, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, TranslateAnimSpriteToTargetMonLocation .align 2 gBattleAnimSpriteTemplate_83D7564:: @ 83D7564 - spr_template 10260, 10260, gOamData_837E03C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, sub_807941C + spr_template 10260, 10260, gOamData_837E03C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, TranslateAnimSpriteToTargetMonLocation .align 2 gBattleAnimSpriteTemplate_83D757C:: @ 83D757C @@ -2449,7 +2449,7 @@ gSpriteAnimTable_83D95E0:: @ 83D95E0 .align 2 gBattleAnimSpriteTemplate_83D95E4:: @ 83D95E4 - spr_template 10029, 10029, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807941C + spr_template 10029, 10029, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation .align 2 gBattleAnimSpriteTemplate_83D95FC:: @ 83D95FC @@ -2631,7 +2631,7 @@ gBattleAnimSpriteTemplate_83D985C:: @ 83D985C .align 2 gBattleAnimSpriteTemplate_83D9874:: @ 83D9874 - spr_template 10171, 10171, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807941C + spr_template 10171, 10171, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation .align 2 gSpriteAffineAnim_83D988C:: @ 83D988C @@ -3713,7 +3713,7 @@ gBattleAnimSpriteTemplate_83DA76C:: @ 83DA76C .align 2 gBattleAnimSpriteTemplate_83DA784:: @ 83DA784 - spr_template 10163, 10163, gOamData_837DF74, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807941C + spr_template 10163, 10163, gOamData_837DF74, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation .align 2 gSpriteAnim_83DA79C:: @ 83DA79C diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index be90e7fff..dadcf9f0e 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -556,11 +556,11 @@ Move_STRENGTH: @ 81C7C5E monbg ANIM_BANK_DEF_PARTNER setalpha 12, 8 playsewithpan SE_W036, 192 - createvisualtask sub_80A8314, 5, 0, 2, 0, 96, 30 + createvisualtask AnimTask_ShakeAndSinkMon, 5, ANIM_BANK_ATTACKER, 2, 0, 96, 30 waitforvisualfinish delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 4 - createvisualtask sub_80A8500, 2, 1, 18, 6, 2, 4 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_TARGET, 18, 6, 2, 4 delay 4 playsewithpan SE_W025B, 63 createsprite gBasicHitSplatSpriteTemplate, 3, 16, 12, 1, 1 @@ -581,7 +581,7 @@ Move_TACKLE: @ 81C7CF2 loadspritegfx 10135 monbg ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4 delay 6 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1 @@ -596,22 +596,22 @@ Move_BODY_SLAM: @ 81C7D30 monbg ANIM_BANK_DEF_PARTNER setalpha 12, 8 playsewithpan SE_W036, 192 - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER waitforvisualfinish delay 11 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 26, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 26, 0, 0, 5 delay 6 createsprite gBasicHitSplatSpriteTemplate, 4, -10, 0, 1, 0 loopsewithpan SE_W025B, 63, 10, 2 delay 1 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -28, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -28, 0, 0, 3 waitforvisualfinish - createvisualtask sub_80A8154, 2, 1, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 12, 1 waitforvisualfinish delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 6 delay 5 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -620,22 +620,22 @@ Move_BODY_SLAM: @ 81C7D30 Move_SUPERSONIC: @ 81C7DBD loadspritegfx 10163 monbg ANIM_BANK_ATK_PARTNER - monbgprio_2A 0 + monbgprio_2A ANIM_BANK_ATTACKER setalpha 12, 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 2, 0, 8, 1 - call _81C7DFB - call _81C7DFB - call _81C7DFB - call _81C7DFB - call _81C7DFB - call _81C7DFB + call Move_SUPERSONIC_CreateWaveSprite + call Move_SUPERSONIC_CreateWaveSprite + call Move_SUPERSONIC_CreateWaveSprite + call Move_SUPERSONIC_CreateWaveSprite + call Move_SUPERSONIC_CreateWaveSprite + call Move_SUPERSONIC_CreateWaveSprite waitforvisualfinish clearmonbg ANIM_BANK_ATK_PARTNER blendoff end -_81C7DFB: +Move_SUPERSONIC_CreateWaveSprite: playsewithpan SE_W048, 192 - createsprite gBattleAnimSpriteTemplate_83D7534, 130, 16, 0, 0, 0, 30, 0 + createsprite gSupersonicWaveSpriteTemplate, 130, 16, 0, 0, 0, 30, 0 delay 2 return @@ -657,7 +657,7 @@ _81C7E48: Move_FLAME_WHEEL: @ 81C7E62 loadspritegfx 10029 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 0 playsewithpan SE_W172, 192 delay 2 @@ -679,14 +679,14 @@ Move_FLAME_WHEEL: @ 81C7E62 createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 24 playsewithpan SE_W172, 192 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 6 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 6 delay 4 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 8, 1 createvisualtask sub_8079790, 3, 1, 31, 12, 1, 1 playsewithpan SE_W172B, 63 call _81D11A2 delay 7 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 9 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 9 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER end @@ -765,14 +765,14 @@ Move_TAKE_DOWN: @ 81C80E6 createsprite gBasicHitSplatSpriteTemplate, 4, -10, 0, 1, 0 playsewithpan SE_W025B, 63 delay 1 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -16, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -16, 0, 0, 4 waitforvisualfinish - createvisualtask sub_80A8154, 2, 1, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 12, 1 waitforvisualfinish delay 2 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5 delay 3 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 7 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -786,28 +786,28 @@ Move_DOUBLE_EDGE: @ 81C817A delay 10 playsewithpan SE_W207, 192 waitplaysewithpan SE_W207, 192, 8 - createvisualtask sub_80A8500, 2, 0, 18, 6, 2, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 2, 4 waitforvisualfinish createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 16, 16, 32767 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4 delay 3 waitforvisualfinish playsewithpan SE_W025B, 63 createsprite gBasicHitSplatSpriteTemplate, 132, -10, 0, 1, 0 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -32, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -32, 0, 0, 3 waitforvisualfinish createvisualtask sub_80A8E04, 2, 8, -256, 0, 0 createvisualtask sub_80A8E04, 2, 8, -256, 1, 0 - createvisualtask sub_80A8154, 2, 0, 4, 0, 12, 1 - createvisualtask sub_80A8154, 2, 1, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 12, 1 createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 32767 waitforvisualfinish createvisualtask sub_80A8E04, 2, 8, -256, 0, 1 createvisualtask sub_80A8E04, 2, 8, -256, 1, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5 delay 3 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 7 waitforvisualfinish end @@ -1191,7 +1191,7 @@ Move_STOMP: @ 81C8B2A Move_TAIL_WHIP: @ 81C8B71 loopsewithpan SE_W039, 192, 24, 3 - createvisualtask sub_80A8500, 2, 0, 12, 4, 2, 3 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 12, 4, 2, 3 waitforvisualfinish end @@ -1258,7 +1258,7 @@ Move_REVERSAL: @ 81C8CA5 createsprite gBattleAnimSpriteTemplate_8402738, 2, 26, 210 waitforvisualfinish delay 20 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 delay 8 playsewithpan SE_W233B, 63 createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 32767, 8, 0, 0 @@ -1303,7 +1303,7 @@ Move_SPIKE_CANNON: @ 81C8DF1 createvisualtask sub_80A8920, 5, 0, -4, 0, 4, 6, 8, 4 waitforvisualfinish loopsewithpan SE_W013B, 192, 5, 3 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5 createsprite gBattleAnimSpriteTemplate_83DAB8C, 2, 10, -8, -8, -8, 20 createsprite gBattleAnimSpriteTemplate_83DAB8C, 2, 18, 0, 0, 0, 20 createsprite gBattleAnimSpriteTemplate_83DAB8C, 2, 26, 8, 8, 8, 20 @@ -1323,7 +1323,7 @@ Move_SWORDS_DANCE: @ 81C8EA4 monbg ANIM_BANK_ATTACKER setalpha 12, 8 playsewithpan SE_W014, 192 - createvisualtask sub_80A8500, 2, 0, 16, 6, 1, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 16, 6, 1, 4 createsprite gBattleAnimSpriteTemplate_83D748C, 2, 0, 0 delay 22 createvisualtask sub_80E21A8, 2, 10005, 2, 2, 32754, 16, 0, 0 @@ -1384,7 +1384,7 @@ Move_DIZZY_PUNCH: @ 81C8F5C blendoff end _81C9077: - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 delay 6 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 7, 1 return @@ -1488,19 +1488,19 @@ Move_SLAM: @ 81C9309 monbg ANIM_BANK_TARGET setalpha 12, 8 playsewithpan SE_W004, 192 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 3, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 3, 0, 4 delay 1 createsprite gBattleAnimSpriteTemplate_83D69DC, 2, 0, 0 delay 3 playsewithpan SE_W025B, 63 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -12, 10, 0, 3 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -12, 10, 0, 3 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5 delay 3 - createvisualtask sub_80A8154, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 0, 3, 6, 1 waitforvisualfinish delay 5 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6 waitforvisualfinish clearmonbg ANIM_BANK_TARGET blendoff @@ -1509,7 +1509,7 @@ Move_SLAM: @ 81C9309 Move_VINE_WHIP: @ 81C9391 loadspritegfx 10287 playsewithpan SE_W026, 192 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6 delay 6 playsewithpan SE_W010, 63 createsprite gBattleAnimSpriteTemplate_83D69F4, 130, 0, 0 @@ -1532,7 +1532,7 @@ Move_DRILL_PECK: @ 81C93C8 waitforvisualfinish createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 6 waitforvisualfinish end @@ -1569,7 +1569,7 @@ Move_WATERFALL: @ 81C9421 createsprite gBattleAnimSpriteTemplate_83D9348, 2, 12, 0, 25, 0 waitforvisualfinish delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 5 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 5 delay 6 call _81C9502 waitforvisualfinish @@ -1768,13 +1768,13 @@ _81C9A37: createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28 waitforvisualfinish delay 5 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4 delay 6 playsewithpan SE_W004, 63 createsprite gBasicHitSplatSpriteTemplate, 2, 10, 4, 1, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 6, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4 delay 6 playsewithpan SE_W004, 63 createsprite gBasicHitSplatSpriteTemplate, 2, -10, -4, 1, 2 @@ -1784,7 +1784,7 @@ _81C9AB3: createsprite gBattleAnimSpriteTemplate_8402630, 2, 20, -28 waitforvisualfinish delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 10, 2 + createsprite gHorizontalLungeSpriteTemplate, 2, 10, 2 delay 12 playsewithpan SE_W004, 63 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2 @@ -1896,7 +1896,7 @@ Move_OUTRAGE: @ 81C9D08 loadspritegfx 10029 loopsewithpan SE_W082, 192, 8, 3 createvisualtask sub_80E1F8C, 2, 7, 2, 5, 3, 8, 430 - createvisualtask sub_80A8500, 2, 0, 12, 6, 5, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 12, 6, 5, 4 delay 0 createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 0, 3 delay 0 @@ -1972,7 +1972,7 @@ Move_SPARK: @ 81C9EA3 delay 4 waitforvisualfinish createvisualtask sub_80E1F8C, 2, 3, -31, 1, 0, 0, 23551 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4 delay 4 playsewithpan SE_W063, 63 createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 2 @@ -2036,7 +2036,7 @@ Move_WHIRLWIND: @ 81CA1E9 loopsewithpan SE_W104, 63, 10, 4 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 15, 1 delay 29 - createvisualtask sub_80A8500, 2, 1, 12, 6, 1, 5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_TARGET, 12, 6, 1, 5 delay 7 playsewithpan SE_W081, 63 createvisualtask sub_80A8A80, 5, 1, 8 @@ -2168,7 +2168,7 @@ Move_THIEF: @ 81CA52C fadetobg 1 waitbgfadein setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 delay 6 playsewithpan SE_W233, 63 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2 @@ -2334,7 +2334,7 @@ Move_CONVERSION: @ 81CA809 Move_CONVERSION_2: @ 81CA91E loadspritegfx 10018 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET setalpha 0, 16 delay 0 playsewithpan SE_W112, 63 @@ -2381,19 +2381,19 @@ Move_ROLLING_KICK: @ 81CAA3A loadspritegfx 10135 monbg ANIM_BANK_TARGET setalpha 12, 8 - createvisualtask sub_80A8500, 2, 0, 18, 6, 1, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 1, 4 playsewithpan SE_W104, 192 delay 6 playsewithpan SE_W104, 192 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4 createsprite gBattleAnimSpriteTemplate_83D9FF0, 2, -24, 0, 48, 10, 160, 0 delay 5 playsewithpan SE_W233B, 63 createsprite gBasicHitSplatSpriteTemplate, 2, -8, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 1, 8 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 1, 8 clearmonbg ANIM_BANK_TARGET blendoff end @@ -2406,7 +2406,7 @@ Move_HEADBUTT: @ 81CAABD delay 2 createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1 waitforvisualfinish - createvisualtask sub_80A8154, 2, 0, 2, 0, 4, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 4, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1 createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2 createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1 @@ -2424,7 +2424,7 @@ Move_HORN_ATTACK: @ 81CAB1A createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1 createsprite gBattleAnimSpriteTemplate_83D7050, 132, 0, 0, 10 waitforvisualfinish - createvisualtask sub_80A8154, 2, 0, 2, 0, 4, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 4, 1 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1 createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2 createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1 @@ -2472,8 +2472,8 @@ _81CAC21: createsprite gBattleAnimSpriteTemplate_83D7050, 132, 0, 0, 12 waitforvisualfinish playse SE_BAN - createvisualtask sub_80A8154, 2, 0, 2, 0, 40, 1 - createvisualtask sub_80A8154, 2, 1, 10, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 10, 0, 40, 1 createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 3 playsewithpan SE_W030, 63 delay 4 @@ -2526,15 +2526,15 @@ Move_THRASH: @ 81CAD81 createvisualtask sub_80D0A4C, 2 createvisualtask sub_80D0AB8, 2 createsprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 0 - createvisualtask sub_80A8154, 2, 1, 4, 0, 7, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 7, 1 playsewithpan SE_W004, 63 delay 28 createsprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 1 - createvisualtask sub_80A8154, 2, 1, 4, 0, 7, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 7, 1 playsewithpan SE_W233B, 63 delay 28 createsprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 3 - createvisualtask sub_80A8154, 2, 1, 8, 0, 16, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 8, 0, 16, 1 playsewithpan SE_W025B, 63 end @@ -2577,14 +2577,14 @@ Move_SING: @ 81CAE00 Move_LOW_KICK: @ 81CAED4 loadspritegfx 10143 loadspritegfx 10135 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4 createsprite gBattleAnimSpriteTemplate_83D9FF0, 130, -24, 28, 40, 8, 160, 0 delay 4 createsprite gBasicHitSplatSpriteTemplate, 130, -8, 8, 1, 2 createvisualtask sub_80A8E04, 2, 6, 384, 1, 2 playsewithpan SE_W233B, 63 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 1, 4 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 1, 4 end Move_EARTHQUAKE: @ 81CAF31 @@ -2699,7 +2699,7 @@ Move_MEDITATE: @ 81CB1BD Move_AGILITY: @ 81CB1DA monbg ANIM_BANK_ATK_PARTNER setalpha 12, 8 - createvisualtask sub_80A8500, 2, 0, 24, 6, 4, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 24, 6, 4, 4 createvisualtask sub_80E2DD8, 2, 0, 4, 7, 10 playsewithpan SE_W104, 192 delay 12 @@ -2721,7 +2721,7 @@ Move_QUICK_ATTACK: @ 81CB224 loadspritegfx 10135 monbg ANIM_BANK_ATK_PARTNER setalpha 12, 8 - createvisualtask sub_80A8500, 2, 0, 24, 6, 1, 5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 24, 6, 1, 5 createvisualtask sub_80E2DD8, 2, 0, 4, 7, 3 playsewithpan SE_W026, 192 delay 4 @@ -2746,7 +2746,7 @@ Move_RAGE: @ 81CB27C createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28 playsewithpan SE_W207B, 192 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6 delay 4 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2 createvisualtask sub_80A9058, 2, 1, 1, 10, 1, 0 @@ -2836,8 +2836,8 @@ _81CB3E6: waitforvisualfinish playse SE_BAN createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14 - createvisualtask sub_80A8154, 2, 0, 2, 0, 40, 1 - createvisualtask sub_80A8154, 2, 1, 10, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 10, 0, 40, 1 createsprite gBattleAnimSpriteTemplate_83DB538, 132, 0, 0, 1, 0 loopsewithpan SE_W025B, 63, 8, 3 waitforvisualfinish @@ -3002,14 +3002,14 @@ Move_SHARPEN: @ 81CB74E Move_SUPER_FANG: @ 81CB75A loadspritegfx 10192 - createvisualtask sub_80A8154, 2, 0, 1, 0, 20, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 1, 0, 20, 1 playsewithpan SE_W082, 192 waitforvisualfinish - createvisualtask sub_80A8154, 2, 0, 3, 0, 48, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 3, 0, 48, 1 createvisualtask sub_8079790, 2, 0, 1247, 12, 4, 1 waitforvisualfinish delay 20 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4 delay 4 createsprite gBattleAnimSpriteTemplate_83D7080, 130 playsewithpan SE_W044, 63 @@ -3036,13 +3036,13 @@ Move_STRUGGLE: @ 81CB815 loadspritegfx 10215 monbg ANIM_BANK_TARGET setalpha 12, 8 - createvisualtask sub_80A8154, 2, 0, 3, 0, 12, 4 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 3, 0, 12, 4 createsprite gBattleAnimSpriteTemplate_83D7C90, 2, 0, 0, 2 createsprite gBattleAnimSpriteTemplate_83D7C90, 2, 0, 1, 2 loopsewithpan SE_W029, 192, 12, 4 waitforvisualfinish createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2 - createvisualtask sub_80A8154, 2, 1, 3, 0, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 3, 0, 6, 1 playsewithpan SE_W025B, 63 waitforvisualfinish clearmonbg ANIM_BANK_TARGET @@ -3170,7 +3170,7 @@ Move_DESTINY_BOND: @ 81CBA2C createvisualtask sub_80DE918, 5, 0, 48 playsewithpan SE_W109, 192 delay 48 - createvisualtask sub_80A8154, 2, 0, 2, 0, 24, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 24, 1 createvisualtask sub_80E2A7C, 2, 6, 1, 0, 12, 30653 delay 24 createvisualtask sub_80E2A7C, 2, 6, 1, 12, 0, 30653 @@ -3697,14 +3697,14 @@ Move_BRICK_BREAK: @ 81CC492 _81CC4A7: monbg ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 8 + createsprite gHorizontalLungeSpriteTemplate, 2, 3, 8 delay 4 delay 1 createsprite gBasicHitSplatSpriteTemplate, 3, -18, -18, 1, 1 createsprite gBattleAnimSpriteTemplate_83D9FA8, 2, -18, -18, 10, 1, 0 playsewithpan SE_W233, 63 delay 20 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 8 + createsprite gHorizontalLungeSpriteTemplate, 2, 3, 8 delay 5 createsprite gBasicHitSplatSpriteTemplate, 3, 18, 18, 1, 1 createsprite gBattleAnimSpriteTemplate_83D9FA8, 2, 18, 18, 10, 1, 0 @@ -3724,7 +3724,7 @@ _81CC4A7: _81CC576: monbg ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 8 + createsprite gHorizontalLungeSpriteTemplate, 2, 3, 8 delay 4 createsprite gBattleAnimSpriteTemplate_83DA0A0, 3, 1, 0, 0, 90, 10 delay 1 @@ -3732,7 +3732,7 @@ _81CC576: createsprite gBattleAnimSpriteTemplate_83D9FA8, 2, -18, -18, 10, 1, 0 playsewithpan SE_W233, 63 delay 20 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 8 + createsprite gHorizontalLungeSpriteTemplate, 2, 3, 8 delay 5 createsprite gBasicHitSplatSpriteTemplate, 3, 18, 18, 1, 1 createsprite gBattleAnimSpriteTemplate_83D9FA8, 2, 18, 18, 10, 1, 0 @@ -4105,7 +4105,7 @@ Move_CRUSH_CLAW: @ 81CCF3B loadspritegfx 10208 monbg ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 delay 4 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 18, 1 createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, -10, 0 @@ -4208,10 +4208,10 @@ Move_ODOR_SLEUTH: @ 81CD1FF monbg ANIM_BANK_TARGET createvisualtask sub_81316F8, 5 delay 24 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 3, 4 playsewithpan SE_W207, 192 delay 6 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 3, 4 playsewithpan SE_W207, 192 waitforvisualfinish clearmonbg ANIM_BANK_TARGET @@ -4338,7 +4338,7 @@ Move_AERIAL_ACE: @ 81CD499 loadspritegfx 10138 monbg ANIM_BANK_TARGET setalpha 12, 8 - createvisualtask sub_80A8500, 2, 0, 24, 6, 1, 5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 24, 6, 1, 5 createvisualtask sub_80E2DD8, 2, 0, 4, 7, 3 createsprite gBattleAnimSpriteTemplate_83D6B28, 2, 40, -32, 0 playsewithpan SE_W013B, 192 @@ -5156,7 +5156,7 @@ Move_FAINT_ATTACK: @ 81CE6ED waitbgfadein delay 0 playsewithpan SE_W185, 192 - createvisualtask sub_80A8500, 2, 0, 18, 6, 1, 3 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 1, 3 createvisualtask sub_80DFC24, 2, 1 waitforvisualfinish clearmonbg ANIM_BANK_ATTACKER @@ -5191,9 +5191,9 @@ Move_SAND_ATTACK: @ 81CE774 monbgprio_28 0 setalpha 12, 8 playsewithpan SE_W028, 192 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, -10, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, -10, 0, 0, 3 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 2 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 2 call _81CE7C4 call _81CE7C4 call _81CE7C4 @@ -5216,9 +5216,9 @@ _81CE7C4: Move_MUD_SLAP: @ 81CE81C loadspritegfx 10074 playsewithpan SE_W028, 192 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, -10, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, -10, 0, 0, 3 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 2 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 2 call _81CE862 call _81CE862 call _81CE862 @@ -5242,7 +5242,7 @@ Move_DRAGON_RAGE: @ 81CE8BA playsewithpan SE_W082, 192 createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FF8, 130, 0, 15, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 130, 0, 15, 0, 0, 4 waitforvisualfinish createsprite gBattleAnimSpriteTemplate_83DB0D0, 130, 30, 15, 0, 10, 10 waitforvisualfinish @@ -5264,7 +5264,7 @@ Move_DRAGON_RAGE: @ 81CE8BA delay 1 createsprite gBattleAnimSpriteTemplate_83DB078, 194, 1, 0, 8 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 194, 0, 0, 4 + createsprite gSlideMonToOriginalPosSpriteTemplate, 194, 0, 0, 4 waitforvisualfinish end @@ -5698,7 +5698,7 @@ Move_ABSORB: @ 81CF427 loadspritegfx 10031 loadspritegfx 10135 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET setalpha 12, 8 createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293 waitforvisualfinish @@ -5750,7 +5750,7 @@ Move_MEGA_DRAIN: @ 81CF53F loadspritegfx 10031 loadspritegfx 10135 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET setalpha 12, 8 createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 8, 13293 waitforvisualfinish @@ -5810,7 +5810,7 @@ Move_GIGA_DRAIN: @ 81CF6CF loadspritegfx 10031 loadspritegfx 10135 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET setalpha 12, 8 createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 12, 13293 waitforvisualfinish @@ -5880,7 +5880,7 @@ Move_LEECH_LIFE: @ 81CF8D7 loadspritegfx 10031 loadspritegfx 10135 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET setalpha 12, 8 delay 1 createsprite gBattleAnimSpriteTemplate_83DAB10, 2, -20, 15, 12 @@ -6040,7 +6040,7 @@ Move_BONEMERANG: @ 81CFC54 createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 5, 1 delay 17 playsewithpan SE_W233, 192 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, -4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, -4 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -6112,20 +6112,20 @@ _81CFDCF: createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1 waitforvisualfinish delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 6 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 6 delay 3 createsprite gBattleAnimSpriteTemplate_83DAABC, 3, -42, 25, 0, 0, 6 delay 4 playsewithpan SE_W011, 63 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -16, 4, 1, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -16, 4, 1, 4 waitforvisualfinish - createvisualtask sub_80A8154, 2, 1, -4, 1, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, -4, 1, 12, 1 createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 7, 5, 1, 32767, 10, 0, 0 delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 11 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 11 delay 3 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 7 waitforvisualfinish waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER @@ -6166,18 +6166,18 @@ Move_WING_ATTACK: @ 81CFEEB monbgprio_28 1 setalpha 12, 8 loopsewithpan SE_W017, 192, 20, 2 - createvisualtask sub_80A8408, 2, 0, 12, 4, 1, 4 + createvisualtask AnimTask_TranslateMonElliptical, 2, ANIM_BANK_ATTACKER, 12, 4, 1, 4 createvisualtask sub_80DA09C, 5, 1, 70 createsprite gBattleAnimSpriteTemplate_83DA3B4, 2, -25, 0, 0, 0, 20 createsprite gBattleAnimSpriteTemplate_83DA3B4, 2, 25, 0, 0, 0, 20 delay 24 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 9 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 9 delay 17 createsprite gBasicHitSplatSpriteTemplate, 2, 16, 0, 1, 1 createsprite gBasicHitSplatSpriteTemplate, 2, -16, 0, 1, 1 loopsewithpan SE_W003, 63, 5, 2 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 11 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 11 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -6265,11 +6265,11 @@ Move_CRABHAMMER: @ 81D0159 playsewithpan SE_W233B, 63 delay 1 createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 32429, 10, 0, 0 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -24, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -24, 0, 0, 4 waitforvisualfinish delay 8 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 4 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 4 waitforvisualfinish loopsewithpan SE_W152, 63, 20, 3 createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 8, 1 @@ -6473,7 +6473,7 @@ Move_JUMP_KICK: @ 81D05F7 loadspritegfx 10135 monbg ANIM_BANK_DEF_PARTNER setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4 delay 3 createsprite gBattleAnimSpriteTemplate_83D9F90, 2, -16, 8, 0, 0, 10, 1, 1, 1 playsewithpan SE_W026, 63 @@ -6491,22 +6491,22 @@ Move_HI_JUMP_KICK: @ 81D0654 loadspritegfx 10135 monbg ANIM_BANK_DEF_PARTNER setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, -24, 0, 0, 8 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, -24, 0, 0, 8 waitforvisualfinish delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 3 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 3 delay 2 createsprite gBattleAnimSpriteTemplate_83D9F90, 2, -16, 8, 0, 0, 10, 1, 1, 1 playsewithpan SE_W026, 63 waitforvisualfinish createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 1 playsewithpan SE_W233B, 63 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -28, 0, 0, 3 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -28, 0, 0, 3 delay 3 - createvisualtask sub_80A8154, 2, 1, 3, 0, 11, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 3, 0, 11, 1 waitforvisualfinish delay 5 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -6595,10 +6595,10 @@ Move_COUNTER: @ 81D08AC loadspritegfx 10143 monbg ANIM_BANK_DEF_PARTNER setalpha 12, 8 - createvisualtask sub_80A8500, 2, 0, 18, 6, 1, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 1, 4 playsewithpan SE_W233, 192 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4 delay 4 createsprite gBasicHitSplatSpriteTemplate, 2, -15, 18, 1, 0 playsewithpan SE_W233B, 63 @@ -6616,7 +6616,7 @@ Move_COUNTER: @ 81D08AC delay 1 createsprite gBattleAnimSpriteTemplate_83D9FA8, 3, 15, 9, 8, 1, 0 delay 5 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -6627,19 +6627,19 @@ Move_VITAL_THROW: @ 81D097B monbg ANIM_BANK_DEF_PARTNER setalpha 12, 8 playsewithpan SE_W233, 192 - createvisualtask sub_80A8500, 2, 0, 12, 4, 1, 2 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 12, 4, 1, 2 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4 delay 2 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1 playsewithpan SE_W233B, 63 delay 1 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -24, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -24, 0, 0, 4 waitforvisualfinish delay 3 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 7 delay 11 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 10 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 10 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -6686,8 +6686,8 @@ Move_SUBMISSION: @ 81D0AEE waitplaysewithpan SE_W004, 63, 70 waitplaysewithpan SE_W104, 192, 80 waitplaysewithpan SE_W004, 63, 90 - createvisualtask sub_80A8408, 2, 0, -18, 6, 6, 4 - createvisualtask sub_80A8408, 2, 1, 18, 6, 6, 4 + createvisualtask AnimTask_TranslateMonElliptical, 2, ANIM_BANK_ATTACKER, -18, 6, 6, 4 + createvisualtask AnimTask_TranslateMonElliptical, 2, ANIM_BANK_TARGET, 18, 6, 6, 4 call _81D0B5D call _81D0B5D call _81D0B5D @@ -6775,7 +6775,7 @@ Move_PETAL_DANCE: @ 81D0CA6 monbg ANIM_BANK_DEF_PARTNER setalpha 12, 8 playsewithpan SE_W080, 192 - createvisualtask sub_80A8500, 2, 0, 12, 6, 6, 3 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 12, 6, 6, 3 createsprite gBattleAnimSpriteTemplate_83D6428, 2, 0, -24, 8, 140 createsprite gBattleAnimSpriteTemplate_83D6440, 2, 16, -24, 8, 100 createsprite gBattleAnimSpriteTemplate_83D6440, 2, -16, -24, 8, 100 @@ -6794,14 +6794,14 @@ Move_PETAL_DANCE: @ 81D0CA6 createsprite gBattleAnimSpriteTemplate_83D6440, 2, 20, -16, 14, 80 createsprite gBattleAnimSpriteTemplate_83D6440, 2, -20, -14, 16, 80 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 5 delay 3 playsewithpan SE_W025B, 63 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 0 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 6, 0, 8, 1 waitforvisualfinish delay 8 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 7 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -6868,13 +6868,13 @@ Move_ANCIENT_POWER: @ 81D0EE5 createsprite gBattleAnimSpriteTemplate_83DAD60, 2, 0, 32, -42, 25, 5 createsprite gBattleAnimSpriteTemplate_83DAD60, 2, -25, 32, -48, 30, 4 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 16, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 16, 0, 0, 4 delay 3 playsewithpan SE_W120, 63 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 6, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 7 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -6988,7 +6988,7 @@ Move_DREAM_EATER: @ 81D1271 loadspritegfx 10147 loadspritegfx 10031 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET playsewithpan SE_W060, 192 call Unknown_81D61E7 setalpha 8, 8 @@ -7100,7 +7100,7 @@ _81D1578: return Move_WRAP: @ 81D158C - createvisualtask sub_80A8500, 2, 0, 6, 4, 2, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 6, 4, 2, 4 goto _81D1568 Move_PSYBEAM: @ 81D15A2 @@ -7203,18 +7203,18 @@ Move_STEEL_WING: @ 81D1807 monbgprio_28 1 setalpha 12, 8 loopsewithpan SE_W017, 192, 20, 2 - createvisualtask sub_80A8408, 2, 0, 12, 4, 1, 4 + createvisualtask AnimTask_TranslateMonElliptical, 2, ANIM_BANK_ATTACKER, 12, 4, 1, 4 createvisualtask sub_80DA09C, 5, 1, 70 createsprite gBattleAnimSpriteTemplate_83DA3B4, 2, -25, 0, 0, 0, 20 createsprite gBattleAnimSpriteTemplate_83DA3B4, 2, 25, 0, 0, 0, 20 delay 24 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 9 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 9 delay 17 createsprite gBasicHitSplatSpriteTemplate, 2, 16, 0, 1, 1 createsprite gBasicHitSplatSpriteTemplate, 2, -16, 0, 1, 1 playsewithpan SE_W013, 63 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 11 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 11 waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER blendoff @@ -7227,7 +7227,7 @@ Move_IRON_TAIL: @ 81D18B6 waitforvisualfinish monbg ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4 delay 6 createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1 @@ -7247,7 +7247,7 @@ Move_POISON_TAIL: @ 81D1914 waitforvisualfinish monbg ANIM_BANK_TARGET setalpha 12, 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4 delay 6 createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1 @@ -7265,14 +7265,14 @@ Move_METAL_CLAW: @ 81D197A loopsewithpan SE_W231, 192, 28, 2 createvisualtask sub_80E0A4C, 5, 0, 0, 0 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 delay 2 playsewithpan SE_W013, 63 createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, -10, 0 createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, 10, 0 createsprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1 delay 8 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 delay 2 playsewithpan SE_W013, 63 createsprite gBattleAnimSpriteTemplate_83DB288, 130, 10, -10, 1 @@ -7379,9 +7379,9 @@ _81D1BCF: createvisualtask sub_80E2A38, 10, 2, 2, 0, 11, 31 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 32, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 4 waitforvisualfinish - createvisualtask sub_80A8154, 2, 0, 2, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 12, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 16, 1 playsewithpan SE_W004, 63 createsprite gBasicHitSplatSpriteTemplate, 1, 18, -8, 1, 1 @@ -7393,7 +7393,7 @@ _81D1BCF: createsprite gBasicHitSplatSpriteTemplate, 1, -8, -5, 1, 1 waitforvisualfinish delay 5 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 7 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 7 waitforvisualfinish createvisualtask sub_80E2A38, 10, 2, 2, 11, 0, 31 waitforvisualfinish @@ -7780,13 +7780,13 @@ Move_LOVELY_KISS: @ 81D24AF Move_FURY_SWIPES: @ 81D24F6 loadspritegfx 10222 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 5, 5 + createsprite gHorizontalLungeSpriteTemplate, 2, 5, 5 delay 4 playsewithpan SE_W010, 63 createsprite gBattleAnimSpriteTemplate_83D7C48, 130, 16, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 5, 1 delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 130, 5, 5 + createsprite gHorizontalLungeSpriteTemplate, 130, 5, 5 delay 4 playsewithpan SE_W010, 63 createsprite gBattleAnimSpriteTemplate_83D7C48, 130, -16, 0, 0 @@ -8035,7 +8035,7 @@ Move_WILL_O_WISP: @ 81D2B83 loadspritegfx 10232 loadspritegfx 10231 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET playsewithpan SE_W052, 192 waitplaysewithpan SE_W052, 192, 10 createvisualtask sub_812B374, 2, -64, -64, 1, 0 @@ -8376,9 +8376,9 @@ Move_FLATTER: @ 81D332C waitforvisualfinish createsprite gBattleAnimSpriteTemplate_8402720, 130, 0, -8, 80 delay 0 - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 5, 2, 1 + createsprite gVerticalDipSpriteTemplate, 2, 5, 2, ANIM_BANK_TARGET delay 10 - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 5, 2, 1 + createsprite gVerticalDipSpriteTemplate, 2, 5, 2, ANIM_BANK_TARGET delay 0 createvisualtask sub_812B30C, 5, 229, -64 call _81D3415 @@ -8532,7 +8532,7 @@ Move_ARM_THRUST: @ 81D36CF setalpha 12, 8 createvisualtask sub_80A8E04, 5, 8, 5, 0, 0 delay 6 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 3 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 3 delay 4 playsewithpan SE_W207, 63 createsprite gBattleAnimSpriteTemplate_83DA144, 130, 10, -8, 14, 3 @@ -8591,7 +8591,7 @@ Move_DRAGON_CLAW: @ 81D380C createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 15, 1 call _81D39E9 call _81D39E9 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 528, 30, 13, 50, 0 delay 2 createvisualtask sub_812B30C, 5, 136, 63 @@ -8604,7 +8604,7 @@ Move_DRAGON_CLAW: @ 81D380C delay 2 createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 31, 400, 25, 11, -42, 0 delay 2 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 512, 25, 16, 46, 0 delay 2 createvisualtask sub_812B30C, 5, 136, 63 @@ -8713,7 +8713,7 @@ Move_REVENGE: @ 81D3B99 waitforvisualfinish unloadspritegfx 10245 loadspritegfx 10246 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4 delay 4 playsewithpan SE_W207, 63 createsprite gBattleAnimSpriteTemplate_83DA1E0, 130, 10, -10 @@ -8812,7 +8812,7 @@ Move_FRENZY_PLANT: @ 81D3C7B Move_METAL_SOUND: @ 81D3E1F loadspritegfx 10260 monbg ANIM_BANK_DEF_PARTNER - monbgprio_2A 1 + monbgprio_2A ANIM_BANK_TARGET createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 2, 0, 8, 1 call _81D3E52 call _81D3E52 @@ -8893,39 +8893,39 @@ _81D3F67: blendoff end _81D3F6C: - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 16, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 16, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 16, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 16, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 delay 5 createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2 createvisualtask sub_812B30C, 5, 139, 63 goto _81D3F67 _81D3FBE: - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 waitforvisualfinish delay 11 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 5, 4 + createsprite gHorizontalLungeSpriteTemplate, 2, 5, 4 delay 6 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2 createvisualtask sub_812B30C, 5, 141, 63 goto _81D3F67 _81D401E: - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 waitforvisualfinish createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2 @@ -8947,13 +8947,13 @@ _81D401E: _81D4139: createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 6, 0 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 16, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 16, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 delay 8 createsprite gBasicHitSplatSpriteTemplate, 2, 3, -5, 1, 2 createvisualtask sub_812B30C, 5, 123, 63 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 12, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 12, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 delay 5 createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2 @@ -8961,7 +8961,7 @@ _81D4139: createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 waitforvisualfinish delay 4 - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 8, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 8, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 delay 5 createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2 @@ -8970,14 +8970,14 @@ _81D4139: waitforvisualfinish delay 2 createvisualtask sub_80E2DD8, 2, 0, 4, 5, 1 - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 4, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 4, 1, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2 createvisualtask sub_812B30C, 5, 123, 63 createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 createvisualtask sub_80E2DD8, 2, 0, 4, 5, 1 waitforvisualfinish - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 4, 2, 0 + createsprite gVerticalDipSpriteTemplate, 2, 4, 2, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 delay 5 createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2 @@ -9005,7 +9005,7 @@ _81D4139: createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 6, 0, 0 goto _81D3F67 _81D4371: - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 4, 3, 0 + createsprite gVerticalDipSpriteTemplate, 2, 4, 3, ANIM_BANK_ATTACKER createvisualtask sub_812B340, 5, 167, -64 createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2 createvisualtask sub_812B30C, 5, 123, 63 @@ -9226,7 +9226,7 @@ _81D4A48: Move_ROCK_BLAST: @ 81D4A5F loadspritegfx 10058 loadspritegfx 10135 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6 delay 3 playsewithpan SE_W207, 192 createsprite gBattleAnimSpriteTemplate_83DADE8, 130, 16, 0, 0, 0, 25, 257 @@ -9363,7 +9363,7 @@ _81D4EA8: Move_ASTONISH: @ 81D4F10 loadspritegfx 10273 playsewithpan SE_W227, 192 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6 delay 25 createsprite gBattleAnimSpriteTemplate_83DA62C, 133, 0, 1 playsewithpan SE_W166, 63 @@ -9511,7 +9511,7 @@ Move_PSYCHO_BOOST: @ 81D51C7 Move_KNOCK_OFF: @ 81D523B loadspritegfx 10277 loadspritegfx 10135 - createsprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6 + createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6 delay 4 playsewithpan SE_W233, 63 createsprite gBattleAnimSpriteTemplate_8402AE4, 130, -16, -16 @@ -9519,12 +9519,12 @@ Move_KNOCK_OFF: @ 81D523B createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 5, 1, 32767, 10, 0, 0 createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 2 playsewithpan SE_W004, 63 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -12, 10, 0, 3 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -12, 10, 0, 3 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5 delay 3 - createvisualtask sub_80A8154, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 0, 3, 6, 1 delay 5 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6 delay 10 waitforvisualfinish end @@ -9561,7 +9561,7 @@ Unknown_81D532F: @ 81D532F delay 10 playsewithpan SE_W109, 63 delay 23 - createvisualtask sub_80A8154, 2, 1, 10, 0, 20, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 10, 0, 20, 1 playsewithpan SE_W120, 63 createsprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 1, 1 delay 6 @@ -9592,7 +9592,7 @@ Move_SKY_UPPERCUT: @ 81D53ED waitbgfadein setalpha 12, 8 delay 38 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 28, 0, 0, 5 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 28, 0, 0, 5 delay 4 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 6, 1 playsewithpan SE_W233B, 63 @@ -9610,13 +9610,13 @@ Move_SKY_UPPERCUT: @ 81D53ED delay 1 playsewithpan SE_W233B, 63 createsprite gBasicHitSplatSpriteTemplate, 131, 5, -52, 1, 1 - createsprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -26, 16, 1, 4 + createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -26, 16, 1, 4 delay 4 - createvisualtask sub_80A8154, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 0, 3, 6, 1 delay 30 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 6 delay 4 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6 clearmonbg ANIM_BANK_DEF_PARTNER blendoff restorebg @@ -9668,8 +9668,8 @@ Move_TWISTER: @ 81D553A waitforvisualfinish createsprite gBasicHitSplatSpriteTemplate, 131, -32, -16, 1, 3 playsewithpan SE_W004, 63 - createvisualtask sub_80A8154, 2, 1, 3, 0, 12, 1 - createvisualtask sub_80A8154, 2, 3, 3, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 3, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_DEF_PARTNER, 3, 0, 12, 1 delay 4 createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 3 playsewithpan SE_W004, 63 @@ -9820,7 +9820,7 @@ _81D597D: Move_WEATHER_BALL: @ 81D5989 loadspritegfx 10283 - createsprite gBattleAnimSpriteTemplate_83C1FC8, 2, 8, 1, 0 + createsprite gVerticalDipSpriteTemplate, 2, 8, 1, ANIM_BANK_ATTACKER delay 8 playsewithpan SE_W207, 192 createsprite gBattleAnimSpriteTemplate_83930A8, 2 @@ -10491,7 +10491,7 @@ General_HangedOn: @ 81D676E createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 4, 9, 0, 31 waitforvisualfinish delay 6 - createsprite gBattleAnimSpriteTemplate_83C1FE0, 0, 0, 0, 15 + createsprite gSlideMonToOriginalPosSpriteTemplate, 0, 0, 0, 15 end General_Rain: @ 81D67BB @@ -10598,7 +10598,7 @@ General_DoomDesireHit: @ 81D6934 delay 9 playsewithpan SE_W109, 63 delay 25 - createvisualtask sub_80A8154, 2, 1, 10, 0, 20, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 10, 0, 20, 1 playsewithpan SE_W120, 63 createsprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 1, 1 delay 6 diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h index 97e001635..ed42871a6 100644 --- a/include/rom_8077ABC.h +++ b/include/rom_8077ABC.h @@ -16,8 +16,8 @@ u8 GetAnimBankSpriteId(u8 side); void StoreSpriteCallbackInData(struct Sprite *sprite, void(*callback)(struct Sprite *)); void sub_8078314(struct Sprite *sprite); void sub_8078364(struct Sprite *sprite); -void sub_8078458(struct Sprite *sprite); -void sub_80784A8(struct Sprite *sprite); +void TranslateMonBGUntil(struct Sprite *sprite); +void TranslateMonBGSubPixelUntil(struct Sprite *sprite); u8 GetBankSide(u8); u8 GetBankSide(u8); u8 GetBankSide(u8 side); @@ -34,11 +34,10 @@ u8 IsDoubleBattle(void); bool8 IsDoubleBattle(void); void sub_8078914(); u8 sub_80789BC(); -void sub_8078A5C(struct Sprite *sprite); -void sub_8078A5C(struct Sprite *sprite); +void InitSpriteDataForLinearTranslation(struct Sprite *sprite); void InitAnimSpriteTranslationDeltas(struct Sprite *sprite); bool8 TranslateAnimSpriteByDeltas(struct Sprite *sprite); -void sub_8078BB8(struct Sprite *sprite); +void TranslateAnimSpriteByDeltasUntil(struct Sprite *sprite); void sub_8078D44(struct Sprite *sprite); void obj_id_set_rotscale(u8 sprite, s16, s16, u16); bool8 sub_8078E38(); @@ -67,7 +66,7 @@ void sub_807A960(struct Sprite *sprite); void sub_8078A34(struct Sprite *sprite); void InitAnimSpritePos(struct Sprite *sprite, u8); void sub_8078764(struct Sprite *sprite, u8); -void sub_8078B34(struct Sprite *sprite); +void StartTranslateAnimSpriteByDeltas(struct Sprite *sprite); void sub_8078D60(struct Sprite *sprite); void sub_80786EC(struct Sprite *sprite); void sub_80782D8(struct Sprite *sprite); @@ -103,7 +102,7 @@ bool8 TranslateAnimSpriteLinearAndSine(struct Sprite *sprite); bool8 sub_8078CE8(struct Sprite *sprite); void oamt_add_pos2_onto_pos1(struct Sprite *sprite); void sub_8078BD4(struct Sprite *sprite); -void sub_807941C(struct Sprite *sprite); +void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); void sub_80789D4(bool8 a1); void sub_8079AB8(u8 sprite, u8 sprite2); u8 sub_807A4A0(int bank, u8 sprite, int species); diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index b2726d8dd..e12f55a8b 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -40,7 +40,7 @@ void sub_80DC824(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -65,7 +65,7 @@ void sub_80DC8F4(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -224,7 +224,7 @@ void sub_80DCBCC(struct Sprite *sprite) sprite->data[2] = lVarX; sprite->data[4] = lVarY; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c index 8fc581d47..1dca0b886 100644 --- a/src/battle/anim/bullet.c +++ b/src/battle/anim/bullet.c @@ -21,7 +21,7 @@ void sub_80CFFD8(struct Sprite* sprite) sprite->data[0] = 20; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; sprite->affineAnimPaused = 1; StoreSpriteCallbackInData(sprite, sub_80D0030); } diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 83a375495..aaf8507c6 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -128,7 +128,7 @@ void sub_80DFE14(struct Sprite *sprite) sprite->data[3] = GetBankPosition(gAnimBankTarget, 3); sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3); sprite->data[0] = 0x7E; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = -sprite->data[1]; sprite->data[4] = -sprite->data[2]; sprite->data[6] = 0xFFD8; diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index 4f25cf1a5..dc2c0bc50 100644 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -68,7 +68,7 @@ void sub_80DF63C(struct Sprite *sprite) StartSpriteAnim(sprite, 1); } sprite->data[0] = gBattleAnimArgs[4]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, move_anim_8074EE0); } diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c index acab7bf80..8111f70a3 100644 --- a/src/battle/anim/energy_wave.c +++ b/src/battle/anim/energy_wave.c @@ -157,6 +157,6 @@ void sub_80D3728(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, var2) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c index f589622bd..a7c25de49 100644 --- a/src/battle/anim/fight.c +++ b/src/battle/anim/fight.c @@ -166,7 +166,7 @@ void sub_80D92D0(struct Sprite *sprite) } sprite->data[4] = sprite->pos1.y - 20; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80D9328); } @@ -182,7 +182,7 @@ static void sub_80D9328(struct Sprite *sprite) sprite->pos2.y = 0; sprite->pos2.x = 0; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } } @@ -261,7 +261,7 @@ static void sub_80D94CC(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80D9524); } } @@ -437,7 +437,7 @@ static void sub_80D986C(struct Sprite *sprite) InitAnimSpriteTranslationDeltas(sprite); StoreSpriteCallbackInData(sprite, move_anim_8074EE0); - sprite->callback = sub_8078BB8; + sprite->callback = TranslateAnimSpriteByDeltasUntil; } } @@ -532,7 +532,7 @@ void sub_80D9A38(struct Sprite *sprite) InitAnimSpriteTranslationDeltas(sprite); StoreSpriteCallbackInData(sprite, DestroyAnimSprite); - sprite->callback = sub_8078BB8; + sprite->callback = TranslateAnimSpriteByDeltasUntil; } static void sub_80D9B24(struct Sprite *sprite) diff --git a/src/battle/anim/grip.c b/src/battle/anim/grip.c index c4d7b1cef..dbf7a1562 100644 --- a/src/battle/anim/grip.c +++ b/src/battle/anim/grip.c @@ -33,7 +33,7 @@ void sub_80D0178(struct Sprite* sprite) sprite->data[0] = 6; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r8; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + r6; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80D020C); } diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c index 9dcfa9f5d..211e0e841 100644 --- a/src/battle/anim/guard.c +++ b/src/battle/anim/guard.c @@ -30,6 +30,6 @@ void sub_80D3014(struct Sprite *sprite) sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y - 72; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/lunge_1.c b/src/battle/anim/lunge_1.c index a2adfba13..a3b5f19c5 100644 --- a/src/battle/anim/lunge_1.c +++ b/src/battle/anim/lunge_1.c @@ -48,7 +48,7 @@ void sub_80CD7CC(struct Sprite* sprite) sprite->data[2] = 0; sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; StoreSpriteCallbackInData(sprite, sub_80CD81C); - sprite->callback = sub_8078458; + sprite->callback = TranslateMonBGUntil; } void sub_80CD81C(struct Sprite* sprite) @@ -78,7 +78,7 @@ void sub_80CD8A8(struct Sprite* sprite) sprite->data[2] = 0; sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; StoreSpriteCallbackInData(sprite, sub_80CD9B8); - sprite->callback = sub_8078458; + sprite->callback = TranslateMonBGUntil; } void sub_80CD8F8(struct Sprite* sprite) diff --git a/src/battle/anim/note_rain.c b/src/battle/anim/note_rain.c index 552329a57..44817b0a0 100644 --- a/src/battle/anim/note_rain.c +++ b/src/battle/anim/note_rain.c @@ -31,7 +31,7 @@ void sub_80D1C08(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); } diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c index eede55695..b965cacb8 100644 --- a/src/battle/anim/orbs.c +++ b/src/battle/anim/orbs.c @@ -23,7 +23,7 @@ void sub_80CA7B0(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2); sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, move_anim_8074EE0); } @@ -34,7 +34,7 @@ void sub_80CA800(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c index 656e923bc..272d99e84 100644 --- a/src/battle/anim/poison.c +++ b/src/battle/anim/poison.c @@ -71,7 +71,7 @@ void sub_80D9E94(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; @@ -104,7 +104,7 @@ void sub_80D9F14(struct Sprite *sprite) sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; sprite->data[4] = sprite->pos1.y + sprite->data[0]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c index 2df7e6642..1d1772b1b 100644 --- a/src/battle/anim/rock.c +++ b/src/battle/anim/rock.c @@ -91,7 +91,7 @@ void sub_80DCF60(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3]; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; @@ -281,7 +281,7 @@ void sub_80DD490(struct Sprite *sprite) sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -517,7 +517,7 @@ void sub_80DD978(struct Sprite *sprite) if (GetBankSide(gAnimBankAttacker) == SIDE_OPPONENT) StartSpriteAffineAnim(sprite, 1); - sub_807941C(sprite); + TranslateAnimSpriteToTargetMonLocation(sprite); } void sub_80DD9A4(struct Sprite *sprite) diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c index 22bb26973..e6b85dd5f 100644 --- a/src/battle/anim/scan.c +++ b/src/battle/anim/scan.c @@ -47,7 +47,7 @@ void sub_80CD408(struct Sprite* sprite) sprite->data[0] = 8; sprite->data[2] = sprite->pos1.x + gUnknown_083D6DDC[sprite->data[5] >> 8][0]; sprite->data[4] = sprite->pos1.y + gUnknown_083D6DDC[sprite->data[5] >> 8][1]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80CD4B8); sprite->data[5] += 0x100; PlaySE12WithPanning(0xD2, BattleAnimAdjustPanning(0x3F)); @@ -112,7 +112,7 @@ void sub_80CD4EC(struct Sprite* sprite) sprite->data[0] = 6; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + a; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + b; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80CD654); } } diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c index 280943a67..2808c86c2 100644 --- a/src/battle/anim/sonic.c +++ b/src/battle/anim/sonic.c @@ -41,7 +41,7 @@ void sub_80CF6DC(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = a; sprite->data[4] = b; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c index e6fd49a11..88112c74a 100644 --- a/src/battle/anim/sunlight.c +++ b/src/battle/anim/sunlight.c @@ -12,6 +12,6 @@ void sub_80D517C(struct Sprite *sprite) sprite->data[0] = 60; sprite->data[2] = 140; sprite->data[4] = 80; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/sword.c b/src/battle/anim/sword.c index ca74980ea..3367cca07 100644 --- a/src/battle/anim/sword.c +++ b/src/battle/anim/sword.c @@ -25,6 +25,6 @@ void sub_80CF6B4(struct Sprite* sprite) sprite->data[0] = 6; sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y - 32; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/anim/tile_out.c b/src/battle/anim/tile_out.c index 50468a440..39d4ff01f 100644 --- a/src/battle/anim/tile_out.c +++ b/src/battle/anim/tile_out.c @@ -37,7 +37,7 @@ void sub_80CE1AC(struct Sprite* sprite) sprite->data[0] = 30; sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2); sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3); - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } } diff --git a/src/battle/anim/unused_8.c b/src/battle/anim/unused_8.c index 0a06d3ac8..b5e150dd8 100644 --- a/src/battle/anim/unused_8.c +++ b/src/battle/anim/unused_8.c @@ -28,7 +28,7 @@ void sub_80CF490(struct Sprite* sprite) sprite->data[0] = sprite->data[1]; sprite->data[2] = sprite->pos1.x; sprite->data[4] = sprite->pos1.y + 15; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, sub_80CF4B8); } diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c index d1ed05747..e6945f9b2 100644 --- a/src/battle/anim/water.c +++ b/src/battle/anim/water.c @@ -18,7 +18,7 @@ void sub_80D37FC(struct Sprite *sprite) sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c index aadeb71b0..73e606b79 100644 --- a/src/battle/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle.h" #include "battle_anim.h" #include "rom_8077ABC.h" #include "sprite.h" @@ -17,16 +18,16 @@ extern u8 gAnimBankTarget; static void AnimTask_ShakeMonStep(u8 taskId); static void AnimTask_ShakeMon2Step(u8 taskId); -static void sub_80A81D8(u8 taskId); -static void sub_80A8374(u8 taskId); +static void AnimTask_ShakeMonInPlaceStep(u8 taskId); +static void AnimTask_ShakeAndSinkMonStep(u8 taskId); static void sub_80A8488(u8 taskId); -static void sub_80A8530(struct Sprite *sprite); -static void sub_80A85A4(struct Sprite *sprite); -static void sub_80A85C8(struct Sprite *sprite); -static void sub_80A8614(struct Sprite* sprite); -static void sub_80A8638(struct Sprite *sprite); -static void sub_80A86F4(struct Sprite *sprite); -static void sub_80A8764(struct Sprite *sprite); +static void DoHorizontalLunge(struct Sprite *sprite); +static void ReverseHorizontalLungeDirection(struct Sprite *sprite); +static void DoVerticalDip(struct Sprite *sprite); +static void ReverseVerticalDipDirection(struct Sprite* sprite); +static void SlideMonToOriginalPos(struct Sprite *sprite); +static void SlideMonToOriginalPosStep(struct Sprite *sprite); +static void SlideMonToOffset(struct Sprite *sprite); static void sub_80A8818(struct Sprite *sprite); static void sub_80A88F0(struct Sprite *sprite); static void sub_80A89B4(u8 taskId); @@ -36,7 +37,7 @@ static void sub_80A8D8C(u8 taskId); static void sub_80A8FD8(u8 taskId); static void sub_80A913C(u8 taskId); -const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 = +const struct SpriteTemplate gHorizontalLungeSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -44,10 +45,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A8530, + .callback = DoHorizontalLunge, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 = +const struct SpriteTemplate gVerticalDipSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -55,10 +56,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A85C8, + .callback = DoVerticalDip, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 = +const struct SpriteTemplate gSlideMonToOriginalPosSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -66,10 +67,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A8638, + .callback = SlideMonToOriginalPos, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 = +const struct SpriteTemplate gSlideMonToOffsetSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -77,7 +78,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80A8764, + .callback = SlideMonToOffset, }; const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 = @@ -252,29 +253,37 @@ static void AnimTask_ShakeMon2Step(u8 taskId) } } -void sub_80A8154(u8 taskId) +// Task to facilitate simple shaking of a pokemon's picture in battle. +// The shaking alternates between the positive and negative versions of the specified pixel offsets +// with respect to the current location of the mon's picture. +// arg 0: battler +// arg 1: x offset +// arg 2: y offset +// arg 3: num shakes +// arg 4: delay +void AnimTask_ShakeMonInPlace(u8 taskId) { - u8 sprite; - sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); - if (sprite == 0xff) + u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + if (spriteId == 0xff) { DestroyAnimVisualTask(taskId); return; } - gSprites[sprite].pos2.x += gBattleAnimArgs[1]; - gSprites[sprite].pos2.y += gBattleAnimArgs[2]; - TASK.data[0] = sprite; + + gSprites[spriteId].pos2.x += gBattleAnimArgs[1]; + gSprites[spriteId].pos2.y += gBattleAnimArgs[2]; + TASK.data[0] = spriteId; TASK.data[1] = 0; TASK.data[2] = gBattleAnimArgs[3]; TASK.data[3] = 0; TASK.data[4] = gBattleAnimArgs[4]; TASK.data[5] = gBattleAnimArgs[1] * 2; TASK.data[6] = gBattleAnimArgs[2] * 2; - TASK.func = sub_80A81D8; - sub_80A81D8(taskId); + TASK.func = AnimTask_ShakeMonInPlaceStep; + TASK.func(taskId); } -static void sub_80A81D8(u8 taskId) +static void AnimTask_ShakeMonInPlaceStep(u8 taskId) { if (TASK.data[3] == 0) { @@ -311,7 +320,13 @@ static void sub_80A81D8(u8 taskId) } } -void sub_80A8314(u8 taskId) +// Shakes a mon bg horizontally and moves it downward linearly. +// arg 0: battler +// arg 1: x offset +// arg 2: frame delay between each movement +// arg 3: downward speed (subpixel) +// arg 4: duration +void AnimTask_ShakeAndSinkMon(u8 taskId) { u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); gSprites[sprite].pos2.x = gBattleAnimArgs[1]; @@ -320,11 +335,11 @@ void sub_80A8314(u8 taskId) TASK.data[2] = gBattleAnimArgs[2]; TASK.data[3] = gBattleAnimArgs[3]; TASK.data[4] = gBattleAnimArgs[4]; - TASK.func = sub_80A8374; - sub_80A8374(taskId); + TASK.func = AnimTask_ShakeAndSinkMonStep; + TASK.func(taskId); } -static void sub_80A8374(u8 taskId) +static void AnimTask_ShakeAndSinkMonStep(u8 taskId) { s16 x; u8 sprite; @@ -334,11 +349,11 @@ static void sub_80A8374(u8 taskId) { TASK.data[8] = 0; if (gSprites[sprite].pos2.x == x) - { x = -x; - } + gSprites[sprite].pos2.x += x; } + TASK.data[1] = x; TASK.data[9] += TASK.data[3]; gSprites[sprite].pos2.y = TASK.data[9] >> 8; @@ -349,89 +364,109 @@ static void sub_80A8374(u8 taskId) } } -void sub_80A8408(u8 taskId) +// Moves a mon bg picture along an elliptical path that begins +// and ends at the mon's origin location. +// arg 0: battler +// arg 1: ellipse width +// arg 2: ellipse height +// arg 3: num loops +// arg 4: speed (valid values are 0-5) +void AnimTask_TranslateMonElliptical(u8 taskId) { u8 i; - u8 sprite; - u8 v1; - v1 = 1; - sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); + u8 spriteId; + u8 wavePeriod; + + wavePeriod = 1; + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (gBattleAnimArgs[4] > 5) - { gBattleAnimArgs[4] = 5; - } + for (i = 0; i < gBattleAnimArgs[4]; i++) { - v1 <<= 1; + wavePeriod <<= 1; } - TASK.data[0] = sprite; + + TASK.data[0] = spriteId; TASK.data[1] = gBattleAnimArgs[1]; TASK.data[2] = gBattleAnimArgs[2]; TASK.data[3] = gBattleAnimArgs[3]; - TASK.data[4] = v1; + TASK.data[4] = wavePeriod; TASK.func = sub_80A8488; - sub_80A8488(taskId); + TASK.func(taskId); } static void sub_80A8488(u8 taskId) { - u8 sprite; - sprite = TASK.data[0]; - gSprites[sprite].pos2.x = Sin(TASK.data[5], TASK.data[1]); - gSprites[sprite].pos2.y = -Cos(TASK.data[5], TASK.data[2]); - gSprites[sprite].pos2.y += TASK.data[2]; + u8 spriteId = TASK.data[0]; + gSprites[spriteId].pos2.x = Sin(TASK.data[5], TASK.data[1]); + gSprites[spriteId].pos2.y = -Cos(TASK.data[5], TASK.data[2]); + gSprites[spriteId].pos2.y += TASK.data[2]; TASK.data[5] += TASK.data[4]; TASK.data[5] &= 0xff; + if (TASK.data[5] == 0) - { TASK.data[3]--; - } + if (TASK.data[3] == 0) { - gSprites[sprite].pos2.x = 0; - gSprites[sprite].pos2.y = 0; + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; DestroyAnimVisualTask(taskId); return; } } -void sub_80A8500(u8 taskId) +// Moves a mon bg picture along an elliptical path that begins +// and ends at the mon's origin location. Reverses the direction +// of the path if it's not on the player's side of the battle. +// arg 0: battler +// arg 1: ellipse width +// arg 2: ellipse height +// arg 3: num loops +// arg 4: speed (valid values are 0-5) +void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId) { - if (GetBankSide(gAnimBankAttacker)) - { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; - } - sub_80A8408(taskId); + + AnimTask_TranslateMonElliptical(taskId); } -static void sub_80A8530(struct Sprite *sprite) +// Performs a simple horizontal lunge, where the mon moves +// horizontally, and then moves back in the opposite direction. +// arg 0: duration of single lunge direction +// arg 1: x pixel delta that is applied each frame +static void DoHorizontalLunge(struct Sprite *sprite) { sprite->invisible = TRUE; - if (GetBankSide(gAnimBankAttacker)) - { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) sprite->data[1] = -gBattleAnimArgs[1]; - } else - { sprite->data[1] = gBattleAnimArgs[1]; - } + sprite->data[0] = gBattleAnimArgs[0]; sprite->data[2] = 0; sprite->data[3] = gBankSpriteIds[gAnimBankAttacker]; sprite->data[4] = gBattleAnimArgs[0]; - StoreSpriteCallbackInData(sprite, sub_80A85A4); - sprite->callback = sub_8078458; + StoreSpriteCallbackInData(sprite, ReverseHorizontalLungeDirection); + sprite->callback = TranslateMonBGUntil; } -static void sub_80A85A4(struct Sprite *sprite) +static void ReverseHorizontalLungeDirection(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[1] = -sprite->data[1]; - sprite->callback = sub_8078458; + sprite->callback = TranslateMonBGUntil; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -static void sub_80A85C8(struct Sprite *sprite) +// Performs a simple vertical dipping motion, where moves vertically, and then +// moves back in the opposite direction. +// arg 0: duration of single dip direction +// arg 1: y pixel delta that is applied each frame +// arg 2: battler +static void DoVerticalDip(struct Sprite *sprite) { u8 spriteId; sprite->invisible = TRUE; @@ -441,73 +476,72 @@ static void sub_80A85C8(struct Sprite *sprite) sprite->data[2] = gBattleAnimArgs[1]; sprite->data[3] = spriteId; sprite->data[4] = gBattleAnimArgs[0]; - StoreSpriteCallbackInData(sprite, sub_80A8614); - sprite->callback = sub_8078458; + StoreSpriteCallbackInData(sprite, ReverseVerticalDipDirection); + sprite->callback = TranslateMonBGUntil; } -static void sub_80A8614(struct Sprite *sprite) +static void ReverseVerticalDipDirection(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[2] = -sprite->data[2]; - sprite->callback = sub_8078458; + sprite->callback = TranslateMonBGUntil; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -static void sub_80A8638(struct Sprite *sprite) +// Linearly slides a mon's bg picture back to its original sprite position. +// The sprite parameter is a dummy sprite used for facilitating the movement with its callback. +// arg 0: 1 = target or 0 = attacker +// arg 1: direction (0 = horizontal and vertical, 1 = horizontal only, 2 = vertical only) +// arg 2: duration +static void SlideMonToOriginalPos(struct Sprite *sprite) { int something; - int spriteId; + int monSpriteId; if (!gBattleAnimArgs[0]) - { - spriteId = gBankSpriteIds[gAnimBankAttacker]; - } + monSpriteId = gBankSpriteIds[gAnimBankAttacker]; else - { - spriteId = gBankSpriteIds[gAnimBankTarget]; - } + monSpriteId = gBankSpriteIds[gAnimBankTarget]; + sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; - sprite->data[2] = gSprites[spriteId].pos1.x; - sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; - sprite->data[4] = gSprites[spriteId].pos1.y; + sprite->data[1] = gSprites[monSpriteId].pos1.x + gSprites[monSpriteId].pos2.x; + sprite->data[2] = gSprites[monSpriteId].pos1.x; + sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y; + sprite->data[4] = gSprites[monSpriteId].pos1.y; something = 0; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = something; sprite->data[4] = something; - sprite->data[5] = gSprites[spriteId].pos2.x; - sprite->data[6] = gSprites[spriteId].pos2.y; + sprite->data[5] = gSprites[monSpriteId].pos2.x; + sprite->data[6] = gSprites[monSpriteId].pos2.y; sprite->invisible = TRUE; + if (gBattleAnimArgs[1] == 1) - { sprite->data[2] = something; - } else if (gBattleAnimArgs[1] == 2) - { sprite->data[1] = something; - } + sprite->data[7] = gBattleAnimArgs[1]; - sprite->data[7] |= spriteId << 8; - sprite->callback = sub_80A86F4; + sprite->data[7] |= monSpriteId << 8; + sprite->callback = SlideMonToOriginalPosStep; } -static void sub_80A86F4(struct Sprite *sprite) +static void SlideMonToOriginalPosStep(struct Sprite *sprite) { - s8 spriteId; + s8 monSpriteId; u8 lo; - struct Sprite *sprite2; + struct Sprite *monSprite; + lo = sprite->data[7] & 0xff; - spriteId = sprite->data[7] >> 8; - sprite2 = &gSprites[spriteId]; + monSpriteId = sprite->data[7] >> 8; + monSprite = &gSprites[monSpriteId]; if (sprite->data[0] == 0) { if (lo < 2) - { - sprite2->pos2.x = 0; - } + monSprite->pos2.x = 0; + if (lo == 2 || lo == 0) - { - sprite2->pos2.y = 0; - } + monSprite->pos2.y = 0; + DestroyAnimSprite(sprite); } else @@ -515,25 +549,30 @@ static void sub_80A86F4(struct Sprite *sprite) sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; - sprite2->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5]; - sprite2->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6]; + monSprite->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5]; + monSprite->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6]; } } -static void sub_80A8764(struct Sprite *sprite) +// Linearly translates a mon to a target offset. The horizontal offset +// is mirrored for the opponent's pokemon, and the vertical offset +// is only mirrored if arg 3 is set to 1. +// arg 0: 0 = attacker, 1 = target +// arg 1: target x pixel offset +// arg 2: target y pixel offset +// arg 3: mirror vertical translation for opposite battle side +// arg 4: duration +static void SlideMonToOffset(struct Sprite *sprite) { - u8 v1; - u8 spriteId; + u8 battler; + u8 monSpriteId; if (!gBattleAnimArgs[0]) - { - v1 = gAnimBankAttacker; - } + battler = gAnimBankAttacker; else - { - v1 = gAnimBankTarget; - } - spriteId = gBankSpriteIds[v1]; - if (GetBankSide(v1)) + battler = gAnimBankTarget; + + monSpriteId = gBankSpriteIds[battler]; + if (GetBankSide(battler) != SIDE_PLAYER) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; if (gBattleAnimArgs[3] == 1) @@ -541,18 +580,19 @@ static void sub_80A8764(struct Sprite *sprite) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } } + sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[1] = gSprites[spriteId].pos1.x; - sprite->data[2] = gSprites[spriteId].pos1.x + gBattleAnimArgs[1]; - sprite->data[3] = gSprites[spriteId].pos1.y; - sprite->data[4] = gSprites[spriteId].pos1.y + gBattleAnimArgs[2]; - sub_8078A5C(sprite); + sprite->data[1] = gSprites[monSpriteId].pos1.x; + sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1]; + sprite->data[3] = gSprites[monSpriteId].pos1.y; + sprite->data[4] = gSprites[monSpriteId].pos1.y + gBattleAnimArgs[2]; + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; - sprite->data[5] = spriteId; + sprite->data[5] = monSpriteId; sprite->invisible = TRUE; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); - sprite->callback = sub_80784A8; + sprite->callback = TranslateMonBGSubPixelUntil; } static void sub_80A8818(struct Sprite *sprite) @@ -582,7 +622,7 @@ static void sub_80A8818(struct Sprite *sprite) sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1]; sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y; sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2]; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = gSprites[spriteId].pos2.x << 8; sprite->data[4] = gSprites[spriteId].pos2.y << 8; sprite->data[5] = spriteId; @@ -595,7 +635,7 @@ static void sub_80A8818(struct Sprite *sprite) { StoreSpriteCallbackInData(sprite, sub_80A88F0); } - sprite->callback = sub_80784A8; + sprite->callback = TranslateMonBGSubPixelUntil; } diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 604c21e6d..21ac62401 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -73,7 +73,7 @@ extern void sub_80313A0(struct Sprite *); extern void sub_803757C(void); extern void oamt_add_pos2_onto_pos1(); extern void StoreSpriteCallbackInData(); -extern void sub_8078B34(struct Sprite *); +extern void StartTranslateAnimSpriteByDeltas(struct Sprite *); extern void sub_80375B4(void); extern void sub_8010384(struct Sprite *); extern void sub_8037B78(void); @@ -1282,7 +1282,7 @@ void LinkOpponentHandleTrainerSlideBack(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_80375B4; } @@ -1633,7 +1633,7 @@ void LinkOpponentHandleTrainerBallThrow(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_803A3A8); taskId = CreateTask(sub_803A2C4, 5); gTasks[taskId].data[0] = gActiveBank; diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index e1f93ba08..1d42f56c3 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -76,7 +76,7 @@ extern u8 sub_8031720(); extern u8 mplay_80342A4(); extern void oamt_add_pos2_onto_pos1(); extern void StoreSpriteCallbackInData(); -extern void sub_8078B34(struct Sprite *); +extern void StartTranslateAnimSpriteByDeltas(struct Sprite *); extern void sub_80105EC(struct Sprite *); extern s32 sub_803FC34(u16); extern void LoadPlayerTrainerBankSprite(); @@ -1227,7 +1227,7 @@ void LinkPartnerHandleTrainerSlideBack(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_811DB1C; } @@ -1579,7 +1579,7 @@ void LinkPartnerHandleTrainerBallThrow(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50; gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1); diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 5fb642e0c..8e8743dbc 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -84,7 +84,7 @@ extern void sub_80313A0(struct Sprite *); extern void sub_8032B4C(void); extern void sub_8031A6C(u16, u8); extern void sub_8032B84(void); -extern void sub_8078B34(struct Sprite *); +extern void StartTranslateAnimSpriteByDeltas(struct Sprite *); extern void sub_8032BBC(void); extern void oamt_add_pos2_onto_pos1(); extern void StoreSpriteCallbackInData(); @@ -1286,7 +1286,7 @@ void OpponentHandleTrainerSlideBack(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_8032BBC; } @@ -2225,7 +2225,7 @@ void OpponentHandleTrainerBallThrow(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35; gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8035C10); taskId = CreateTask(sub_8035C44, 5); gTasks[taskId].data[0] = gActiveBank; diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 33a29c064..e28c058a3 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -102,7 +102,7 @@ extern void sub_8047858(); extern u8 GetBankSide(u8); extern void StartBattleIntroAnim(); extern void oamt_add_pos2_onto_pos1(); -extern void sub_8078B34(struct Sprite *); +extern void StartTranslateAnimSpriteByDeltas(struct Sprite *); extern void StoreSpriteCallbackInData(); extern void BattleLoadPlayerMonSprite(); extern bool8 IsDoubleBattle(void); @@ -3145,7 +3145,7 @@ void PlayerHandleTrainerSlideBack(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50; gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy); StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1); gBattleBankFunc[gActiveBank] = sub_802D274; @@ -3600,7 +3600,7 @@ void PlayerHandleTrainerBallThrow(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50; gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1); diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 3eacaa085..c590b487c 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -87,7 +87,7 @@ extern void sub_80304A8(void); extern void sub_8047858(); extern void StartBattleIntroAnim(); extern void oamt_add_pos2_onto_pos1(); -extern void sub_8078B34(struct Sprite *); +extern void StartTranslateAnimSpriteByDeltas(struct Sprite *); extern void sub_8030E38(struct Sprite *); extern void StoreSpriteCallbackInData(); extern u8 sub_8046400(); @@ -1484,7 +1484,7 @@ void WallyHandleTrainerBallThrow(void) gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50; gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40; gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y; - gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8078B34; + gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas; gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank; StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1); diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 9119c74ef..395736d03 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -636,7 +636,7 @@ void unref_sub_8078414(struct Sprite *sprite) sprite->callback = sub_80782F8; } -void sub_8078458(struct Sprite *sprite) +void TranslateMonBGUntil(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -650,7 +650,9 @@ void sub_8078458(struct Sprite *sprite) } } -void sub_80784A8(struct Sprite *sprite) +// Same as TranslateMonBGUntil, but it operates on sub-pixel values +// to handle slower translations. +void TranslateMonBGSubPixelUntil(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -938,12 +940,12 @@ void sub_8078A34(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; - sub_8078A5C(sprite); + InitSpriteDataForLinearTranslation(sprite); sprite->callback = sub_80783D0; sprite->callback(sprite); } -void sub_8078A5C(struct Sprite *sprite) +void InitSpriteDataForLinearTranslation(struct Sprite *sprite) { s16 x = (sprite->data[2] - sprite->data[1]) << 8; s16 y = (sprite->data[4] - sprite->data[3]) << 8; @@ -981,12 +983,12 @@ void InitAnimSpriteTranslationDeltas(struct Sprite *sprite) sprite->data[3] = 0; } -void sub_8078B34(struct Sprite *sprite) +void StartTranslateAnimSpriteByDeltas(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; InitAnimSpriteTranslationDeltas(sprite); - sprite->callback = sub_8078BB8; + sprite->callback = TranslateAnimSpriteByDeltasUntil; sprite->callback(sprite); } @@ -1020,7 +1022,7 @@ bool8 TranslateAnimSpriteByDeltas(struct Sprite *sprite) return FALSE; } -void sub_8078BB8(struct Sprite *sprite) +void TranslateAnimSpriteByDeltasUntil(struct Sprite *sprite) { if (TranslateAnimSpriteByDeltas(sprite)) SetCallbackToStoredInData(sprite); @@ -1038,7 +1040,7 @@ void sub_8078C00(struct Sprite *sprite) sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078BD4(sprite); - sprite->callback = sub_8078BB8; + sprite->callback = TranslateAnimSpriteByDeltasUntil; sprite->callback(sprite); } @@ -1392,7 +1394,15 @@ void sub_80793C4(struct Sprite *sprite) } } -void sub_807941C(struct Sprite *sprite) +// Linearly translates a sprite to a target position on the +// other mon's sprite. +// arg 0: initial x offset +// arg 1: initial y offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: duration +// arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target +void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) { bool8 v1; u8 v2; @@ -1408,12 +1418,13 @@ void sub_807941C(struct Sprite *sprite) v2 = 1; InitAnimSpritePos(sprite, v1); - if (GetBankSide(gAnimBankAttacker)) + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, v2) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -1466,7 +1477,7 @@ void sub_8079534(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(slot, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(slot, r7) + gBattleAnimArgs[3]; - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -2338,6 +2349,6 @@ void sub_807A9BC(struct Sprite *sprite) sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 80; } - sprite->callback = sub_8078B34; + sprite->callback = StartTranslateAnimSpriteByDeltas; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } |