diff options
-rw-r--r-- | data/battle_anim_80CA710.s | 2 | ||||
-rw-r--r-- | data/battle_anim_scripts.s | 34 | ||||
-rw-r--r-- | src/battle/battle_anim_80A7E7C.c | 56 |
3 files changed, 50 insertions, 42 deletions
diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s index 3ffefdb45..e1a1511c0 100644 --- a/data/battle_anim_80CA710.s +++ b/data/battle_anim_80CA710.s @@ -1494,7 +1494,7 @@ gSupersonicWaveSpriteTemplate:: @ 83D7534 spr_template 10163, 10163, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, TranslateAnimSpriteToTargetMonLocation .align 2 -gBattleAnimSpriteTemplate_83D754C:: @ 83D754C +gScreechWaveSpriteTemplate:: @ 83D754C spr_template 10164, 10164, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, TranslateAnimSpriteToTargetMonLocation .align 2 diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index dadcf9f0e..48af05ca4 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -642,15 +642,15 @@ Move_SUPERSONIC_CreateWaveSprite: Move_SCREECH: @ 81C7E15 loadspritegfx 10164 createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 3, 0, 2, 1 - call _81C7E48 - call _81C7E48 + call Move_SCREECH_CreateWaveSprite + call Move_SCREECH_CreateWaveSprite delay 16 - createvisualtask sub_80A8B88, 5, 0, 6, 2048, 2, 1 + createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 2, 1 waitforvisualfinish end -_81C7E48: +Move_SCREECH_CreateWaveSprite: playsewithpan SE_W103, 192 - createsprite gBattleAnimSpriteTemplate_83D754C, 130, 16, 0, 0, 0, 30, 0 + createsprite gScreechWaveSpriteTemplate, 130, 16, 0, 0, 0, 30, 0 delay 2 return @@ -1340,7 +1340,7 @@ Move_PSYCH_UP: @ 81C8EEA setalpha 12, 8 loopsewithpan SE_W060B, 192, 5, 10 createsprite gBattleAnimSpriteTemplate_83DA690, 2, 0, 0, 0, 0 - createvisualtask sub_80A8B88, 5, 0, 5, 2560, 8, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 5, 2560, 8, 0 delay 127 delay 4 playsewithpan SE_W060, 192 @@ -1714,7 +1714,7 @@ _81C9864: createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28 waitforvisualfinish delay 10 - createvisualtask sub_80A8B88, 5, 0, 16, 6144, 8, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, 0 delay 5 createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 30, 1 createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 0 @@ -1986,7 +1986,7 @@ Move_SPARK: @ 81C9EA3 Move_ATTRACT: @ 81CA0BA loadspritegfx 10216 loopsewithpan SE_W204, 192, 12, 3 - createvisualtask sub_80A8B88, 5, 0, 12, 4096, 4, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, 0 delay 15 createsprite gBattleAnimSpriteTemplate_83D7AB0, 131, 20, -8 waitforvisualfinish @@ -2189,7 +2189,7 @@ Move_BUBBLE_BEAM: @ 81CA573 setalpha 12, 8 delay 1 call _81CA5AD - createvisualtask sub_80A8B88, 5, 0, 3, 3072, 8, 1 + createvisualtask AnimTask_SwayMon, 5, 0, 3, 3072, 8, 1 call _81CA5AD call _81CA5AD waitforvisualfinish @@ -4268,7 +4268,7 @@ Move_TICKLE: @ 81CD33C createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 16, 0, 0 waitforvisualfinish delay 20 - createvisualtask sub_80A8B88, 3, 0, 6, 1280, 3, 0 + createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0 delay 12 createvisualtask sub_812E568, 3, 1, 6, 2 loopsewithpan SE_W039, 63, 8, 8 @@ -7086,7 +7086,7 @@ Move_POISON_GAS: @ 81D1474 end Move_BIND: @ 81D1552 - createvisualtask sub_80A8B88, 5, 0, 6, 3328, 4, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 6, 3328, 4, 0 goto _81D1568 _81D1568: playsewithpan SE_W020, 63 @@ -7110,7 +7110,7 @@ Move_PSYBEAM: @ 81D15A2 createsoundtask sub_812B058, 200, -64, 63, 3, 4, 0, 15 call _81D1626 call _81D1626 - createvisualtask sub_80A8B88, 5, 0, 6, 2048, 4, 1 + createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, 1 createvisualtask sub_80E1F8C, 2, 4, 2, 2, 0, 12, 32351 call _81D1626 call _81D1626 @@ -7635,7 +7635,7 @@ _81D20EB: playsewithpan SE_W020, 192 return _81D2101: - createvisualtask sub_80A8B88, 5, 0, 10, 1536, 3, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 10, 1536, 3, 0 waitforvisualfinish delay 10 call _81D211C @@ -7926,7 +7926,7 @@ Move_PERISH_SONG: @ 81D2784 Move_SLEEP_TALK: @ 81D28ED loadspritegfx 10228 - createvisualtask sub_80A8B88, 5, 0, 4, 4096, 2, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, 0 delay 20 createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -1 playsewithpan SE_W173, 192 @@ -8075,7 +8075,7 @@ Move_ENCORE: @ 81D2C41 createsprite gBattleAnimSpriteTemplate_84023BC, 3, 2, 0, 1, 0, 9 delay 16 createvisualtask sub_812B340, 5, 223, 63 - createvisualtask sub_80A8B88, 5, 1, 8, 1536, 5, 1 + createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, 1 waitforvisualfinish createvisualtask sub_80E2D78, 2, 248, 3, 10, 0, 1 waitforvisualfinish @@ -10337,7 +10337,7 @@ General_PokeblockThrow: @ 81D6438 createsprite gBattleAnimSpriteTemplate_840B4FC, 131, -16, 7, 0, 32 delay 50 loopsewithpan SE_W039, 63, 19, 2 - createvisualtask sub_80A8B88, 5, 1, 8, 1536, 2, 1 + createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, 1 waitforvisualfinish createvisualtask sub_8141C08, 2 end @@ -10546,7 +10546,7 @@ General_SnatchMove: @ 81D6877 createvisualtask sub_80E4234, 2 call Unknown_81D6AB6 delay 1 - createvisualtask sub_80A8B88, 2, 0, 5, 5120, 4, 1 + createvisualtask AnimTask_SwayMon, 2, 0, 5, 5120, 4, 1 waitforvisualfinish createvisualtask sub_80E4264, 2 jumpargeq 7, 0, _81D68B5 diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c index 73e606b79..f339a1206 100644 --- a/src/battle/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -32,7 +32,7 @@ static void sub_80A8818(struct Sprite *sprite); static void sub_80A88F0(struct Sprite *sprite); static void sub_80A89B4(u8 taskId); static void sub_80A8A18(u8 taskId); -static void sub_80A8C0C(u8 taskId); +static void AnimTask_SwayMonStep(u8 taskId); static void sub_80A8D8C(u8 taskId); static void sub_80A8FD8(u8 taskId); static void sub_80A913C(u8 taskId); @@ -754,59 +754,67 @@ static void sub_80A8B3C(u8 taskId) } } -void sub_80A8B88(u8 taskId) +// Task that facilitates translating the mon bg picture back and forth +// in a swaying motion (uses Sine wave). It can sway either horizontally +// or vertically, but not both. +// arg 0: direction (0 = horizontal, 1 = vertical) +// arg 1: wave amplitude +// arg 2: wave period +// arg 3: num sways +// arg 4: which mon (0 = attacker, 1`= target) +void AnimTask_SwayMon(u8 taskId) { u8 spriteId; - if (GetBankSide(gAnimBankAttacker)) - { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; - } + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]); TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; TASK.data[2] = gBattleAnimArgs[2]; TASK.data[3] = gBattleAnimArgs[3]; TASK.data[4] = spriteId; + if (gBattleAnimArgs[4] == 0) - { TASK.data[5] = gAnimBankAttacker; - } else - { TASK.data[5] = gAnimBankTarget; - } + TASK.data[12] = 1; - TASK.func = sub_80A8C0C; + TASK.func = AnimTask_SwayMonStep; } -static void sub_80A8C0C(u8 taskId) +static void AnimTask_SwayMonStep(u8 taskId) { - s16 y; + s16 sineValue; u8 spriteId; - int index; - u16 val; + int waveIndex; + u16 sineIndex; + spriteId = TASK.data[4]; - val = TASK.data[10] + TASK.data[2]; - TASK.data[10] = val; - index = val >> 8; - y = Sin(index, TASK.data[1]); + sineIndex = TASK.data[10] + TASK.data[2]; + TASK.data[10] = sineIndex; + waveIndex = sineIndex >> 8; + sineValue = Sin(waveIndex, TASK.data[1]); + if (TASK.data[0] == 0) { - gSprites[spriteId].pos2.x = y; + gSprites[spriteId].pos2.x = sineValue; } else { - if (GetBankSide(TASK.data[5]) == 0) + if (GetBankSide(TASK.data[5]) == SIDE_PLAYER) { - gSprites[spriteId].pos2.y = (y >= 0) ? y : -y; + gSprites[spriteId].pos2.y = (sineValue >= 0) ? sineValue : -sineValue; } else { - gSprites[spriteId].pos2.y = (y >= 0) ? -y : y; + gSprites[spriteId].pos2.y = (sineValue >= 0) ? -sineValue : sineValue; } } - if (((index >= 0x80u) && (TASK.data[11] == 0) && (TASK.data[12] == 1)) - || ((index < 0x7fu) && (TASK.data[11] == 1) && (TASK.data[12] == 0))) + + if (((waveIndex >= 0x80u) && (TASK.data[11] == 0) && (TASK.data[12] == 1)) + || ((waveIndex < 0x7fu) && (TASK.data[11] == 1) && (TASK.data[12] == 0))) { TASK.data[11] ^= 1; TASK.data[12] ^= 1; |