diff options
-rw-r--r-- | data/battle_anim_scripts.s | 230 | ||||
-rw-r--r-- | src/battle/anim/aurora.c | 34 | ||||
-rw-r--r-- | src/battle/anim/ice.c | 304 |
3 files changed, 325 insertions, 243 deletions
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index c5c6eb144..f81e52540 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -2247,15 +2247,15 @@ Move_ICY_WIND: @ 81CA650 waitbgfadein end _81CA6A8: - createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 0, 0, 0, 72, 1 + createsprite SmallSnowballSpriteTemplate1, 168, 0, 0, 0, 0, 72, 1 delay 5 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 10, 0, 10, 72, 1 + createsprite SmallSnowballSpriteTemplate1, 168, 0, 10, 0, 10, 72, 1 delay 5 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, -10, 0, -10, 72, 1 + createsprite SmallSnowballSpriteTemplate1, 168, 0, -10, 0, -10, 72, 1 delay 5 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 15, 0, 15, 72, 1 + createsprite SmallSnowballSpriteTemplate1, 168, 0, 15, 0, 15, 72, 1 delay 5 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, -5, 0, -5, 72, 1 + createsprite SmallSnowballSpriteTemplate1, 168, 0, -5, 0, -5, 72, 1 return Move_SMOKESCREEN: @ 81CA710 @@ -3477,7 +3477,7 @@ Move_HAIL: @ 81CC076 loadspritegfx 10141 createvisualtask sub_80E2A38, 10, 1, 3, 0, 6, 0 waitforvisualfinish - createvisualtask sub_80D8ADC, 5 + createvisualtask AnimTask_Hail1, 5 loopsewithpan SE_W258, 0, 8, 10 waitforvisualfinish createvisualtask sub_80E2A38, 10, 1, 3, 6, 0, 0 @@ -3946,14 +3946,14 @@ Move_MIST_BALL: @ 81CCA72 loadspritegfx 10270 delay 0 playsewithpan SE_W081, 192 - createsprite gBattleAnimSpriteTemplate_83D9D80, 128, 0, 0, 0, 0, 30, 0 + createsprite MistBallSpriteTemplate, 128, 0, 0, 0, 0, 30, 0 waitforvisualfinish playsewithpan SE_W028, 63 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 10, 0 createsprite gBattleAnimSpriteTemplate_83DB3DC, 0, 1, 1, 1, 32279, 16, 32767, 16 delay 0 playsewithpan SE_W114, 0 - createvisualtask sub_80D8414, 5 + createvisualtask AnimTask_LoadMistTiles, 5 createvisualtask sub_80E2A38, 10, 4, 3, 0, 16, 32767 delay 8 createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 4, 0, 70, 0 @@ -4662,15 +4662,15 @@ Move_ICE_PUNCH: @ 81CDB3E createvisualtask sub_80E2A38, 10, 4, 2, 0, 9, 32588 delay 20 playsewithpan SE_W081, 63 - createsprite gBattleAnimSpriteTemplate_83D9BF8, 2, 0 - createsprite gBattleAnimSpriteTemplate_83D9BF8, 2, 64 - createsprite gBattleAnimSpriteTemplate_83D9BF8, 2, 128 - createsprite gBattleAnimSpriteTemplate_83D9BF8, 2, 192 + createsprite SmallIcePunchCrystalSpriteTemplate, 2, 0 + createsprite SmallIcePunchCrystalSpriteTemplate, 2, 64 + createsprite SmallIcePunchCrystalSpriteTemplate, 2, 128 + createsprite SmallIcePunchCrystalSpriteTemplate, 2, 192 delay 5 - createsprite gBattleAnimSpriteTemplate_83D9BE0, 2, 32 - createsprite gBattleAnimSpriteTemplate_83D9BE0, 2, 96 - createsprite gBattleAnimSpriteTemplate_83D9BE0, 2, 160 - createsprite gBattleAnimSpriteTemplate_83D9BE0, 2, 224 + createsprite LargeIcePunchCrystalSpriteTemplate, 2, 32 + createsprite LargeIcePunchCrystalSpriteTemplate, 2, 96 + createsprite LargeIcePunchCrystalSpriteTemplate, 2, 160 + createsprite LargeIcePunchCrystalSpriteTemplate, 2, 224 delay 17 createsprite gFistFootSpriteTemplate, 4, 0, -10, 8, 1, 0 createsprite gBasicHitSplatSpriteTemplate, 3, 0, -10, 1, 1 @@ -4679,7 +4679,7 @@ Move_ICE_PUNCH: @ 81CDB3E createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 3, 1 waitforvisualfinish delay 15 - call Unknown_81D5C36 + call Effect_LightIceDamage delay 5 createvisualtask sub_80E2A38, 10, 4, 2, 9, 0, 32588 waitforvisualfinish @@ -5148,7 +5148,7 @@ Move_SMOG: @ 81CE672 blendoff end _81CE6D7: - createsprite gBattleAnimSpriteTemplate_83D9D54, 2, 0, -24, 48, 240, 1, 0 + createsprite SmogCloudSpriteTemplate, 2, 0, -24, 48, 240, 1, 0 delay 7 return @@ -5355,8 +5355,8 @@ Move_ICE_BEAM: @ 81CEB4D createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 1, 0, 7, rgb(0, 0, 0) waitforvisualfinish createsoundtask sub_812B058, 183, -64, 63, 4, 4, 0, 10 - createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, 12, 0, 12, 20 - createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, -12, 0, -12, 20 + createsprite IceBeamOuterParticleSpriteTemplate, 2, 20, 12, 0, 12, 20 + createsprite IceBeamOuterParticleSpriteTemplate, 2, 20, -12, 0, -12, 20 delay 1 call _81CEC4E call _81CEC4E @@ -5371,12 +5371,12 @@ Move_ICE_BEAM: @ 81CEB4D call _81CEC4E call _81CEC4E call _81CEC4E - createsprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11 + createsprite IceBeamCenterParticleSpriteTemplate, 2, 20, 0, 0, 0, 11 delay 1 - createsprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11 + createsprite IceBeamCenterParticleSpriteTemplate, 2, 20, 0, 0, 0, 11 waitforvisualfinish delay 20 - call Unknown_81D5C36 + call Effect_LightIceDamage createsprite gSimplePaletteBlendSpriteTemplate, 2, 4, 5, 7, 0, rgb(0, 20, 31) waitforvisualfinish createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 0, 7, 0, rgb(0, 0, 0) @@ -5385,9 +5385,9 @@ Move_ICE_BEAM: @ 81CEB4D blendoff end _81CEC4E: - createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, 12, 0, 12, 20 - createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, -12, 0, -12, 20 - createsprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11 + createsprite IceBeamOuterParticleSpriteTemplate, 2, 20, 12, 0, 12, 20 + createsprite IceBeamOuterParticleSpriteTemplate, 2, 20, -12, 0, -12, 20 + createsprite IceBeamCenterParticleSpriteTemplate, 2, 20, 0, 0, 0, 11 delay 1 return @@ -5403,7 +5403,7 @@ Move_AURORA_BEAM: @ 81CEC91 waitbgfadein playsewithpan SE_W062, 192 setarg 7, 0 - createvisualtask sub_80D3490, 10, 130 + createvisualtask AnimTask_RotateMonPalette1, 10, 130 call _81CED18 createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 17, 1 call _81CED18 @@ -5423,13 +5423,13 @@ Move_AURORA_BEAM: @ 81CEC91 waitbgfadein end _81CED18: - createsprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17 + createsprite RainbowRingSpriteTemplate, 130, 20, 0, 0, 0, 17 delay 1 - createsprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17 + createsprite RainbowRingSpriteTemplate, 130, 20, 0, 0, 0, 17 delay 1 - createsprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17 + createsprite RainbowRingSpriteTemplate, 130, 20, 0, 0, 0, 17 delay 1 - createsprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17 + createsprite RainbowRingSpriteTemplate, 130, 20, 0, 0, 0, 17 delay 1 return @@ -5538,7 +5538,7 @@ _81CEFD0: call _81CF00A playsewithpan SE_W059B, 63 waitforvisualfinish - call Unknown_81D5CBA + call Effect_HeavyIceDamage waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER delay 20 @@ -5548,26 +5548,26 @@ _81CEFD0: waitbgfadein end _81CF00A: - createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -10, 0, -10, 72, 1 - createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 0, 0, 0, 80, 0, 0, 1 + createsprite SmallSnowballSpriteTemplate1, 40, 0, -10, 0, -10, 72, 1 + createsprite LargeSnowballSpriteTemplate, 40, 0, 0, 0, 0, 80, 0, 0, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -15, 0, -15, 72, 1 - createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -10, 0, -10, 80, 0, 0, 1 + createsprite SmallSnowballSpriteTemplate1, 40, 0, -15, 0, -15, 72, 1 + createsprite LargeSnowballSpriteTemplate, 40, 0, -10, 0, -10, 80, 0, 0, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -5, 0, -5, 72, 1 - createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 10, 0, 10, 80, 0, 0, 1 + createsprite SmallSnowballSpriteTemplate1, 40, 0, -5, 0, -5, 72, 1 + createsprite LargeSnowballSpriteTemplate, 40, 0, 10, 0, 10, 80, 0, 0, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -10, 0, -10, 72, 1 - createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -20, 0, -20, 80, 0, 0, 1 + createsprite SmallSnowballSpriteTemplate1, 40, 0, -10, 0, -10, 72, 1 + createsprite LargeSnowballSpriteTemplate, 40, 0, -20, 0, -20, 80, 0, 0, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -20, 0, -20, 72, 1 - createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 15, 0, 15, 80, 0, 0, 1 + createsprite SmallSnowballSpriteTemplate1, 40, 0, -20, 0, -20, 72, 1 + createsprite LargeSnowballSpriteTemplate, 40, 0, 15, 0, 15, 80, 0, 0, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -15, 0, -15, 72, 1 - createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -20, 0, -20, 80, 0, 0, 1 + createsprite SmallSnowballSpriteTemplate1, 40, 0, -15, 0, -15, 72, 1 + createsprite LargeSnowballSpriteTemplate, 40, 0, -20, 0, -20, 80, 0, 0, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -25, 0, -25, 72, 1 - createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 20, 0, 20, 80, 0, 0, 1 + createsprite SmallSnowballSpriteTemplate1, 40, 0, -25, 0, -25, 72, 1 + createsprite LargeSnowballSpriteTemplate, 40, 0, 20, 0, 20, 80, 0, 0, 1 delay 3 return _81CF13F: @@ -5585,26 +5585,26 @@ Move_POWDER_SNOW: @ 81CF146 playsewithpan SE_W016B, 63 waitforvisualfinish waitsound - call Unknown_81D5CBA + call Effect_HeavyIceDamage waitforvisualfinish clearmonbg ANIM_BANK_DEF_PARTNER delay 20 createsprite gSimplePaletteBlendSpriteTemplate, 2, 31, 1, 3, 0, rgb(0, 0, 0) end _81CF190: - createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 0, 0, 0, 56, 4, 4, 1 + createsprite SmallSnowballSpriteTemplate2, 40, 0, 0, 0, 0, 56, 4, 4, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -10, 0, -10, 56, 4, 4, 1 + createsprite SmallSnowballSpriteTemplate2, 40, 0, -10, 0, -10, 56, 4, 4, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 10, 0, 10, 56, -4, 3, 1 + createsprite SmallSnowballSpriteTemplate2, 40, 0, 10, 0, 10, 56, -4, 3, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -20, 0, -20, 56, -4, 5, 1 + createsprite SmallSnowballSpriteTemplate2, 40, 0, -20, 0, -20, 56, -4, 5, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 15, 0, 15, 56, 4, 4, 1 + createsprite SmallSnowballSpriteTemplate2, 40, 0, 15, 0, 15, 56, 4, 4, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -20, 0, -20, 56, 4, 4, 1 + createsprite SmallSnowballSpriteTemplate2, 40, 0, -20, 0, -20, 56, 4, 4, 1 delay 3 - createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 20, 0, 20, 56, 4, 4, 1 + createsprite SmallSnowballSpriteTemplate2, 40, 0, 20, 0, 20, 56, 4, 4, 1 delay 3 return @@ -6919,14 +6919,14 @@ Move_MIST: @ 81D1073 blendoff end _81D10BE: - createsprite gBattleAnimSpriteTemplate_83D9D3C, 2, 0, -24, 48, 240, 0, 1 + createsprite MistCloudSpriteTemplate, 2, 0, -24, 48, 240, 0, 1 delay 7 return Move_HAZE: @ 81D10D4 waitforvisualfinish playsewithpan SE_W114, 0 - createvisualtask sub_80D80E0, 5 + createvisualtask AnimTask_Haze1, 5 delay 30 createvisualtask sub_80E2A38, 10, 1920, 2, 0, 16, 0 delay 90 @@ -7063,22 +7063,22 @@ Move_POISON_GAS: @ 81D1474 setalpha 12, 8 delay 0 playsewithpan SE_W054, 192 - createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 + createsprite PoisonGasCloudSpriteTemplate, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 playsewithpan SE_W054, 192 - createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 + createsprite PoisonGasCloudSpriteTemplate, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 playsewithpan SE_W054, 192 - createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 + createsprite PoisonGasCloudSpriteTemplate, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 playsewithpan SE_W054, 192 - createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 + createsprite PoisonGasCloudSpriteTemplate, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 playsewithpan SE_W054, 192 - createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 + createsprite PoisonGasCloudSpriteTemplate, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 playsewithpan SE_W054, 192 - createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 + createsprite PoisonGasCloudSpriteTemplate, 128, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 40 loopsewithpan SE_W054, 63, 28, 6 createvisualtask sub_80E1F8C, 2, 4, 6, 2, 0, 12, 26650 @@ -8029,7 +8029,7 @@ Move_TRI_ATTACK: @ 81D2A0F createvisualtask sub_80E2324, 2, 257, 257, 257 waitforvisualfinish loadspritegfx 10141 - call Unknown_81D5C36 + call Effect_LightIceDamage createsprite gSimplePaletteBlendSpriteTemplate, 2, 1, 2, 16, 0, rgb(0, 0, 0) waitforvisualfinish end @@ -9734,21 +9734,21 @@ Move_MAGICAL_LEAF: @ 81D5699 Move_ICE_BALL: @ 81D57BA loadspritegfx 10043 loadspritegfx 10141 - createvisualtask sub_80D8FC0, 5, 0 + createvisualtask AnimTask_CountIceBallThrows, 5, 0 jumpargeq 0, 4, _81D5831 _81D57D1: playsewithpan SE_W196, 192 - createsprite gBattleAnimSpriteTemplate_83D9EF4, 130, 15, 0, -12, -16, 30, -40 + createsprite IceBallSpriteTemplate, 130, 15, 0, -12, -16, 30, -40 delay 28 playsewithpan SE_W280, 63 - createvisualtask sub_80D8FC0, 5, 0 + createvisualtask AnimTask_CountIceBallThrows, 5, 0 jumpargeq 0, 0, _81D5842 jumpargeq 0, 1, _81D5871 jumpargeq 0, 2, _81D58AA jumpargeq 0, 3, _81D58ED jumpargeq 0, 4, _81D5935 _81D581F: - createvisualtask sub_80D8FC0, 5, 0 + createvisualtask AnimTask_CountIceBallThrows, 5, 0 jumpargeq 0, 4, _81D5838 _81D5830: end @@ -9818,7 +9818,7 @@ _81D5935: call _81D597D goto _81D581F _81D597D: - createsprite gBattleAnimSpriteTemplate_83D9F0C, 132, -12, -16 + createsprite IceBallParticleSpriteTemplate, 132, -12, -16 return Move_WEATHER_BALL: @ 81D5989 @@ -9900,18 +9900,18 @@ _81D5AF9: _81D5B99: loadspritegfx 10263 loadspritegfx 10141 - createsprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, -40, 20 + createsprite WeatherBallHailSpriteTemplate, 130, -30, -100, 25, 25, -40, 20 playsewithpan SE_W258, 63 delay 10 - createsprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, 40, 0 + createsprite WeatherBallHailSpriteTemplate, 130, -30, -100, 25, 25, 40, 0 playsewithpan SE_W258, 63 delay 10 - createsprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, 0, 0 + createsprite WeatherBallHailSpriteTemplate, 130, -30, -100, 25, 25, 0, 0 playsewithpan SE_W258, 63 waitforvisualfinish createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1 playsewithpan SE_W196, 63 - call Unknown_81D5C36 + call Effect_LightIceDamage waitforvisualfinish end @@ -9927,102 +9927,102 @@ PoundCopy: @ 81D5C05 blendoff end -Unknown_81D5C36: @ 81D5C36 - createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -10, -10, 0 +Effect_LightIceDamage: @ 81D5C36 + createsprite LargeIceEffectParticleSpriteTemplate, 130, -10, -10, 0 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 10, 20, 0 + createsprite SmallIceEffectParticleSpriteTemplate, 130, 10, 20, 0 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -5, 10, 0 + createsprite LargeIceEffectParticleSpriteTemplate, 130, -5, 10, 0 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 17, -12, 0 + createsprite SmallIceEffectParticleSpriteTemplate, 130, 17, -12, 0 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, -15, 15, 0 + createsprite SmallIceEffectParticleSpriteTemplate, 130, -15, 15, 0 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 0, 0, 0 + createsprite SmallIceEffectParticleSpriteTemplate, 130, 0, 0, 0 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C78, 130, 20, 2, 0 + createsprite LargeIceEffectParticleSpriteTemplate, 130, 20, 2, 0 playsewithpan SE_W196, 63 return -Unknown_81D5CBA: @ 81D5CBA - createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -10, -10, 1 +Effect_HeavyIceDamage: @ 81D5CBA + createsprite LargeIceEffectParticleSpriteTemplate, 130, -10, -10, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 10, 20, 1 + createsprite SmallIceEffectParticleSpriteTemplate, 130, 10, 20, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -29, 0, 1 + createsprite LargeIceEffectParticleSpriteTemplate, 130, -29, 0, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 29, -20, 1 + createsprite SmallIceEffectParticleSpriteTemplate, 130, 29, -20, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -5, 10, 1 + createsprite LargeIceEffectParticleSpriteTemplate, 130, -5, 10, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 17, -12, 1 + createsprite SmallIceEffectParticleSpriteTemplate, 130, 17, -12, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -20, 0, 1 + createsprite LargeIceEffectParticleSpriteTemplate, 130, -20, 0, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, -15, 15, 1 + createsprite SmallIceEffectParticleSpriteTemplate, 130, -15, 15, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 26, -5, 1 + createsprite SmallIceEffectParticleSpriteTemplate, 130, 26, -5, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 0, 0, 1 + createsprite SmallIceEffectParticleSpriteTemplate, 130, 0, 0, 1 playsewithpan SE_W196, 63 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9C78, 130, 20, 2, 1 + createsprite LargeIceEffectParticleSpriteTemplate, 130, 20, 2, 1 playsewithpan SE_W196, 63 return Unknown_81D5D8A: @ 81D5D8A loopsewithpan SE_W196, 63, 6, 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 0, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, 0, 24, 0 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 8, 24, 0 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -8, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, 8, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, -8, 24, 0 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 16, 24, 0 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -16, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, 16, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, -16, 24, 0 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 24, 24, 0 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -24, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, 24, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, -24, 24, 0 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 32, 24, 0 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -32, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, 32, 24, 0 + createsprite IceSpikeSpriteTemplate, 130, -32, 24, 0 return -Unknown_81D5E0E: @ 81D5E0E +Unknown_81D5E0E: @ 81D5E0E Icy Wind animates end bit with the wavy shiz loopsewithpan SE_W196, 63, 6, 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 0, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, 0, 24, 1 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 8, 24, 1 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -8, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, 8, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, -8, 24, 1 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 16, 24, 1 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -16, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, 16, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, -16, 24, 1 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 24, 24, 1 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -24, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, 24, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, -24, 24, 1 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 32, 24, 1 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -32, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, 32, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, -32, 24, 1 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 40, 24, 1 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -40, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, 40, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, -40, 24, 1 delay 4 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 48, 24, 1 - createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -48, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, 48, 24, 1 + createsprite IceSpikeSpriteTemplate, 130, -48, 24, 1 return Unknown_81D5ECA: @ 81D5ECA diff --git a/src/battle/anim/aurora.c b/src/battle/anim/aurora.c index c17748440..3564da811 100644 --- a/src/battle/anim/aurora.c +++ b/src/battle/anim/aurora.c @@ -9,9 +9,9 @@ extern s16 gBattleAnimArgs[8]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -void sub_80D33B4(struct Sprite *sprite); -static void sub_80D344C(struct Sprite *); -static void sub_80D34D4(u8); +void AnimAuroraRings(struct Sprite *sprite); +static void AnimGrowAuroraRings(struct Sprite *); +static void AnimTask_RotateMonPalette2(u8); const union AnimCmd gSpriteAnim_83D9190[] = { @@ -43,7 +43,8 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_83D91C0[] = gSpriteAffineAnim_83D91A8, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D91C4 = +// Multi-colored rings used in Aurora Beam. +const struct SpriteTemplate RainbowRingSpriteTemplate = { .tileTag = 10140, .paletteTag = 10140, @@ -51,10 +52,16 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D91C4 = .anims = gSpriteAnimTable_83D91A0, .images = NULL, .affineAnims = gSpriteAffineAnimTable_83D91C0, - .callback = sub_80D33B4, + .callback = AnimAuroraRings, }; -void sub_80D33B4(struct Sprite *sprite) +// Animates the colorful rings in Aurora Beam linearly towards the target mon. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: duration +void AnimAuroraRings(struct Sprite *sprite) { s16 r6; @@ -69,12 +76,14 @@ void sub_80D33B4(struct Sprite *sprite) sprite->data[3] = sprite->pos1.y; sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; InitAnimLinearTranslation(sprite); - sprite->callback = sub_80D344C; + sprite->callback = AnimGrowAuroraRings; sprite->affineAnimPaused = TRUE; sprite->callback(sprite); } -static void sub_80D344C(struct Sprite *sprite) +// Grows the rings in Aurora Beam. +// arg 7: if -1, grow the rings +static void AnimGrowAuroraRings(struct Sprite *sprite) { if ((u16)gBattleAnimArgs[7] == 0xFFFF) { @@ -85,14 +94,17 @@ static void sub_80D344C(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void sub_80D3490(u8 taskId) +// This seems to rotate the palette of the attacking mon, but the visual +// effect is not noticeable in-game. +// arg 0: duration +void AnimTask_RotateMonPalette1(u8 taskId) { gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[2] = 0x100 + IndexOfSpritePaletteTag(0x279C) * 16; - gTasks[taskId].func = sub_80D34D4; + gTasks[taskId].func = AnimTask_RotateMonPalette2; } -static void sub_80D34D4(u8 taskId) +static void AnimTask_RotateMonPalette2(u8 taskId) { gTasks[taskId].data[10]++; if (gTasks[taskId].data[10] == 3) diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c index 798c47fdb..c990303f5 100644 --- a/src/battle/anim/ice.c +++ b/src/battle/anim/ice.c @@ -26,33 +26,33 @@ extern struct INCBIN_U8 gBattleAnimFogTilemap; extern struct INCBIN_U8 gWeatherFog1Tiles; static void sub_80D7704(struct Sprite *sprite); -static void sub_80D78EC(struct Sprite *sprite); -static void sub_80D792C(struct Sprite *sprite); -static void sub_80D79B4(struct Sprite *sprite); -static void sub_80D7A28(struct Sprite *sprite); -static void sub_80D7A64(struct Sprite *sprite); -static void sub_80D7CD4(struct Sprite *sprite); -static void sub_80D7E88(struct Sprite *sprite); -static void sub_80D7F10(struct Sprite *sprite); -static void sub_80D83E0(struct Sprite *sprite); -static void sub_80D8700(struct Sprite *sprite); -static void sub_80D8D1C(struct Sprite *sprite); +static void AnimIcePunchSwirlingParticles(struct Sprite *sprite); +static void AnimIceBeamParticles(struct Sprite *sprite); +static void AnimIceEffectParticles(struct Sprite *sprite); +static void AnimFlickerIceEffectParticles(struct Sprite *sprite); +static void AnimSwirlingSnowball1(struct Sprite *sprite); +static void AnimMoveParticleBeyondTarget(struct Sprite *sprite); +static void AnimWaveFromCenterOfTarget(struct Sprite *sprite); +static void InitSwirlingFogAnim(struct Sprite *sprite); +static void AnimThrowMistBall(struct Sprite *sprite); +static void InitPoisonGasCloudAnim(struct Sprite *sprite); +static void AnimHailBegin(struct Sprite *sprite); void sub_807A9BC(struct Sprite *sprite); -static void unc_080B06FC(struct Sprite *sprite); -static void sub_80D8F10(struct Sprite *sprite); -static void sub_80D7BA0(struct Sprite *sprite); -static void sub_80D7C08(struct Sprite *sprite); -static void sub_80D7C8C(struct Sprite *sprite); -static void sub_80D7E18(struct Sprite *sprite); -static void sub_80D8048(struct Sprite *sprite); +static void InitIceBallAnim(struct Sprite *sprite); +static void InitIceBallParticles(struct Sprite *sprite); +static void AnimSwirlingSnowball2(struct Sprite *sprite); +static void AnimSwirlingSnowball3(struct Sprite *sprite); +static void AnimSwirlingSnowballEnd(struct Sprite *sprite); +static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite); +static void AnimSwirlingFogAnim(struct Sprite *sprite); static void sub_80D8874(struct Sprite *sprite); -static void sub_80D8E00(struct Sprite *sprite); -static void sub_80D8EE0(struct Sprite *sprite); -static void sub_80D8F74(struct Sprite *sprite); +static void AnimHailContinue(struct Sprite *sprite); +static void AnimThrowIceBall(struct Sprite *sprite); +static void AnimIceBallParticles(struct Sprite *sprite); -static void sub_80D81E0(u8 taskId); -static void sub_80D851C(u8 taskId); -static void sub_80D8AF8(u8 taskId); +static void AnimTask_Haze2(u8 taskId); +static void AnimTask_OverlayFogTiles(u8 taskId); +static void AnimTask_Hail2(u8 taskId); bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4); const union AnimCmd gSpriteAnim_83D9B58[] = @@ -67,6 +67,7 @@ const union AnimCmd *const gSpriteAnimTable_83D9B64[] = gSpriteAnim_83D9B58, }; +// unknown sprite template const struct SpriteTemplate gSpriteTemplate_83D9B68 = { .tileTag = 10141, @@ -156,7 +157,7 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9BDC[] = gSpriteAffineAnim_83D9BCC, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BE0 = +const struct SpriteTemplate LargeIcePunchCrystalSpriteTemplate = { .tileTag = 10141, .paletteTag = 10141, @@ -164,10 +165,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BE0 = .anims = gSpriteAnimTable_83D9BB8, .images = NULL, .affineAnims = gSpriteAffineAnimTable_83D9BDC, - .callback = sub_80D78EC, + .callback = AnimIcePunchSwirlingParticles, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BF8 = +const struct SpriteTemplate SmallIcePunchCrystalSpriteTemplate = { .tileTag = 10141, .paletteTag = 10141, @@ -175,7 +176,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BF8 = .anims = gSpriteAnimTable_83D9BBC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D78EC, + .callback = AnimIcePunchSwirlingParticles, }; const union AffineAnimCmd gSpriteAffineAnim_83D9C10[] = @@ -189,7 +190,7 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9C20[] = gSpriteAffineAnim_83D9C10, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C24 = +const struct SpriteTemplate IceBeamCenterParticleSpriteTemplate = { .tileTag = 10141, .paletteTag = 10141, @@ -197,10 +198,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C24 = .anims = gSpriteAnimTable_83D9BB8, .images = NULL, .affineAnims = gSpriteAffineAnimTable_83D9C20, - .callback = sub_80D792C, + .callback = AnimIceBeamParticles, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C3C = +const struct SpriteTemplate IceBeamOuterParticleSpriteTemplate = { .tileTag = 10141, .paletteTag = 10141, @@ -208,7 +209,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C3C = .anims = gSpriteAnimTable_83D9BBC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D792C, + .callback = AnimIceBeamParticles, }; const union AffineAnimCmd gSpriteAffineAnim_83D9C54[] = @@ -224,7 +225,7 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9C74[] = gSpriteAffineAnim_83D9C54, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C78 = +const struct SpriteTemplate LargeIceEffectParticleSpriteTemplate = { .tileTag = 10141, .paletteTag = 10141, @@ -232,10 +233,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C78 = .anims = gSpriteAnimTable_83D9BB8, .images = NULL, .affineAnims = gSpriteAffineAnimTable_83D9C74, - .callback = sub_80D79B4, + .callback = AnimIceEffectParticles, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C90 = +const struct SpriteTemplate SmallIceEffectParticleSpriteTemplate = { .tileTag = 10141, .paletteTag = 10141, @@ -243,10 +244,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C90 = .anims = gSpriteAnimTable_83D9BBC, .images = NULL, .affineAnims = gSpriteAffineAnimTable_83D9C74, - .callback = sub_80D79B4, + .callback = AnimIceEffectParticles, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CA8 = +const struct SpriteTemplate SmallSnowballSpriteTemplate1 = { .tileTag = 10141, .paletteTag = 10141, @@ -254,10 +255,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CA8 = .anims = gSpriteAnimTable_83D9BC0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D7A64, + .callback = AnimSwirlingSnowball1, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CC0 = +const struct SpriteTemplate LargeSnowballSpriteTemplate = { .tileTag = 10141, .paletteTag = 10141, @@ -265,10 +266,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CC0 = .anims = gSpriteAnimTable_83D9BC4, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D7CD4, + .callback = AnimMoveParticleBeyondTarget, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CD8 = +const struct SpriteTemplate SmallSnowballSpriteTemplate2 = { .tileTag = 10141, .paletteTag = 10141, @@ -276,7 +277,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CD8 = .anims = gSpriteAnimTable_83D9BC0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D7CD4, + .callback = AnimMoveParticleBeyondTarget, }; const union AnimCmd gSpriteAnim_83D9CF0[] = @@ -296,7 +297,7 @@ const union AnimCmd *const gSpriteAnimTable_83D9D10[] = gSpriteAnim_83D9CF0, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D14 = +const struct SpriteTemplate IceSpikeSpriteTemplate = { .tileTag = 10142, .paletteTag = 10142, @@ -304,7 +305,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D14 = .anims = gSpriteAnimTable_83D9D10, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D7E88, + .callback = AnimWaveFromCenterOfTarget, }; const union AnimCmd gSpriteAnim_83D9D2C[] = @@ -319,7 +320,7 @@ const union AnimCmd *const gSpriteAnimTable_83D9D38[] = gSpriteAnim_83D9D2C, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D3C = +const struct SpriteTemplate MistCloudSpriteTemplate = { .tileTag = 10144, .paletteTag = 10144, @@ -327,10 +328,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D3C = .anims = gSpriteAnimTable_83D9D38, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D7F10, + .callback = InitSwirlingFogAnim, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D54 = +const struct SpriteTemplate SmogCloudSpriteTemplate = { .tileTag = 10172, .paletteTag = 10172, @@ -338,7 +339,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D54 = .anims = gSpriteAnimTable_83D9D38, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D7F10, + .callback = InitSwirlingFogAnim, }; const u8 gUnknown_083D9D6C[] = @@ -346,7 +347,7 @@ const u8 gUnknown_083D9D6C[] = 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D80 = +const struct SpriteTemplate MistBallSpriteTemplate = { .tileTag = 10155, .paletteTag = 10155, @@ -354,7 +355,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D80 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D83E0, + .callback = AnimThrowMistBall, }; const u8 gUnknown_083D9D98[] = @@ -362,7 +363,7 @@ const u8 gUnknown_083D9D98[] = 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9DAC = +const struct SpriteTemplate PoisonGasCloudSpriteTemplate = { .tileTag = 10172, .paletteTag = 10172, @@ -370,7 +371,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9DAC = .anims = gSpriteAnimTable_83D9D38, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D8700, + .callback = InitPoisonGasCloudAnim, }; const u8 gUnknown_083D9DC4[][4] = @@ -423,7 +424,7 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9E38[] = gSpriteAffineAnim_83D9E1C, }; -const struct SpriteTemplate gSpriteTemplate_83D9E3C = +const struct SpriteTemplate HailSpriteTemplate = { .tileTag = 10263, .paletteTag = 10263, @@ -431,10 +432,10 @@ const struct SpriteTemplate gSpriteTemplate_83D9E3C = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gSpriteAffineAnimTable_83D9E2C, - .callback = sub_80D8D1C, + .callback = AnimHailBegin, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9E54 = +const struct SpriteTemplate WeatherBallHailSpriteTemplate = { .tileTag = 10263, .paletteTag = 10263, @@ -505,7 +506,7 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9EE0[] = gSpriteAffineAnim_83D9ED0, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9EF4 = +const struct SpriteTemplate IceBallSpriteTemplate = { .tileTag = 10043, .paletteTag = 10043, @@ -513,10 +514,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9EF4 = .anims = gSpriteAnimTable_83D9E88, .images = NULL, .affineAnims = gSpriteAffineAnimTable_83D9EE0, - .callback = unc_080B06FC, + .callback = InitIceBallAnim, }; -const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F0C = +const struct SpriteTemplate IceBallParticleSpriteTemplate = { .tileTag = 10141, .paletteTag = 10141, @@ -524,15 +525,11 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F0C = .anims = gSpriteAnimTable_83D9BBC, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80D8F10, + .callback = InitIceBallParticles, }; -/* - * possible moves include: aurora beam, blizzard, hail, haze, ice ball, - * ice beam, ice punch, icicle spear, icy wind, - * mist, powder snow, sheer cold, - */ - +// unknown - potentially used in weather ball +// TODO: decompile function and name it /* // NOT EQUIVALENT static void sub_80D7704(struct Sprite *sprite) @@ -809,7 +806,9 @@ void sub_80D7888(struct Sprite *sprite) } } -static void sub_80D78EC(struct Sprite *sprite) +// Animates the swirling ice crystals in Ice Punch. +// arg 0: initial position angle around circle (0-256) +static void AnimIcePunchSwirlingParticles(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[0]; sprite->data[1] = 60; @@ -821,7 +820,13 @@ static void sub_80D78EC(struct Sprite *sprite) sub_8078174(sprite); } -static void sub_80D792C(struct Sprite *sprite) +// Animates the ice particles in Ice Beam. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: duration +static void AnimIceBeamParticles(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); @@ -837,7 +842,12 @@ static void sub_80D792C(struct Sprite *sprite) sprite->callback = StartAnimLinearTranslation; } -static void sub_80D79B4(struct Sprite *sprite) +// Animates the ice crystals at the end of Ice Punch, Ice Beam, Tri Attack, +// Weather Ball (Hail), Blizzard, and Powder Snow. +// arg 0: target x offset +// arg 1: target y offset +// arg 2: ??? unknown boolean +static void AnimIceEffectParticles(struct Sprite *sprite) { if (gBattleAnimArgs[2] == 0) { @@ -853,11 +863,11 @@ static void sub_80D79B4(struct Sprite *sprite) sprite->pos1.y += gBattleAnimArgs[1]; } - StoreSpriteCallbackInData(sprite, sub_80D7A28); + StoreSpriteCallbackInData(sprite, AnimFlickerIceEffectParticles); sprite->callback = sub_80785E4; } -static void sub_80D7A28(struct Sprite *sprite) +static void AnimFlickerIceEffectParticles(struct Sprite *sprite) { sprite->invisible ^= 1; sprite->data[0] += 1; @@ -865,7 +875,14 @@ static void sub_80D7A28(struct Sprite *sprite) move_anim_8074EE0(sprite); } -static void sub_80D7A64(struct Sprite *sprite) +// Animates the small snowballs that swirl around the target in Blizzard and Icy Wind. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: particle speed +// arg 5: multiple targets? (boolean) +static void AnimSwirlingSnowball1(struct Sprite *sprite) { int i; s16 tempDataHolder[8]; @@ -876,7 +893,7 @@ static void sub_80D7A64(struct Sprite *sprite) sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; - if (gBattleAnimArgs[5] == 0) + if (!gBattleAnimArgs[5]) { sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3]; @@ -918,10 +935,10 @@ static void sub_80D7A64(struct Sprite *sprite) sprite->data[i] = tempDataHolder[i]; sprite->callback = sub_8078D8C; - StoreSpriteCallbackInData(sprite, sub_80D7BA0); + StoreSpriteCallbackInData(sprite, AnimSwirlingSnowball2); } -static void sub_80D7BA0(struct Sprite *sprite) +static void AnimSwirlingSnowball2(struct Sprite *sprite) { s16 tempVar; @@ -936,11 +953,11 @@ static void sub_80D7BA0(struct Sprite *sprite) sprite->data[3] = Sin(sprite->data[0], tempVar); sprite->data[4] = Cos(sprite->data[0], 0xF); sprite->data[5] = 0; - sprite->callback = sub_80D7C08; - sub_80D7C08(sprite); + sprite->callback = AnimSwirlingSnowball3; + AnimSwirlingSnowball3(sprite); } -static void sub_80D7C08(struct Sprite *sprite) +static void AnimSwirlingSnowball3(struct Sprite *sprite) { s16 tempVar; tempVar = GetBattlerSide(gAnimBankAttacker) != 0 ? 20 : 65516; @@ -960,11 +977,11 @@ static void sub_80D7C08(struct Sprite *sprite) sprite->pos2.x = 0; sprite->data[4] = 0; sprite->data[3] = 0; - sprite->callback = sub_80D7C8C; + sprite->callback = AnimSwirlingSnowballEnd; } } -static void sub_80D7C8C(struct Sprite *sprite) +static void AnimSwirlingSnowballEnd(struct Sprite *sprite) { sprite->data[0] = 1; sub_8078CE8(sprite); @@ -975,7 +992,17 @@ static void sub_80D7C8C(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void sub_80D7CD4(struct Sprite *sprite) +// Moves particles towards the target mon and off the screen. Used to animate +// the large snowballs in Blizzard and the small snowballs in Powder Snow. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: speed +// arg 5: wave amplitude +// arg 6: wave frequency +// arg 7: multiple targets? (boolean) +static void AnimMoveParticleBeyondTarget(struct Sprite *sprite) { int i; s16 tempDataHolder[8]; @@ -986,7 +1013,7 @@ static void sub_80D7CD4(struct Sprite *sprite) sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; - if (gBattleAnimArgs[7] == 0) + if (!gBattleAnimArgs[7]) { sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2); sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3); @@ -1029,10 +1056,11 @@ static void sub_80D7CD4(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[5]; sprite->data[6] = gBattleAnimArgs[6]; - sprite->callback = sub_80D7E18; + sprite->callback = AnimWiggleParticleTowardsTarget; } -static void sub_80D7E18(struct Sprite *sprite) +// Moves particles in a sine wave towards the target. +static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite) { sub_8078CE8(sprite); if (sprite->data[0] == 0) @@ -1049,7 +1077,11 @@ static void sub_80D7E18(struct Sprite *sprite) } } -static void sub_80D7E88(struct Sprite *sprite) +// Animates the ice pilar wave used by Icy Wind. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: ??? unknown boolean +static void AnimWaveFromCenterOfTarget(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -1077,7 +1109,14 @@ static void sub_80D7E88(struct Sprite *sprite) } } -static void sub_80D7F10(struct Sprite *sprite) +// Animates the fog that swirls around the mon in Mist and Smog. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: change in y pixels per rotation +// arg 3: duration +// arg 4: animate on opponent? (boolean) +// arg 5: ??? unknown boolean +static void InitSwirlingFogAnim(struct Sprite *sprite) { s16 tempVar; u8 battler; @@ -1140,11 +1179,12 @@ static void sub_80D7F10(struct Sprite *sprite) InitAnimLinearTranslation(sprite); sprite->data[5] = 64; - sprite->callback = sub_80D8048; - sub_80D8048(sprite); + sprite->callback = AnimSwirlingFogAnim; + AnimSwirlingFogAnim(sprite); } -static void sub_80D8048(struct Sprite *sprite) +// Animates swirling fog initialized by InitSwirlingFogAnim. +static void AnimSwirlingFogAnim(struct Sprite *sprite) { if (!TranslateAnimLinear(sprite)) { @@ -1164,8 +1204,8 @@ static void sub_80D8048(struct Sprite *sprite) } } -// Used in haze -void sub_80D80E0(u8 taskId) +// Fades mons to black and places foggy overlay in Haze. +void AnimTask_Haze1(u8 taskId) { struct Struct_sub_8078914 subStruct; @@ -1191,10 +1231,10 @@ void sub_80D80E0(u8 taskId) if (IsContest()) sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); - gTasks[taskId].func = sub_80D81E0; + gTasks[taskId].func = AnimTask_Haze2; } -static void sub_80D81E0(u8 taskId) +static void AnimTask_Haze2(u8 taskId) { struct Struct_sub_8078914 subStruct; @@ -1259,14 +1299,22 @@ static void sub_80D81E0(u8 taskId) } } -static void sub_80D83E0(struct Sprite *sprite) +// Throws the ball in Mist Ball. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: targey x offset +// arg 3: target y offset +// arg 4: duration +// arg 5: ??? unknown (seems to vibrate target mon somehow) +static void AnimThrowMistBall(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3); sprite->callback = TranslateAnimSpriteToTargetMonLocation; } -void sub_80D8414(u8 taskId) +// Displays misty background in Mist Ball. +void AnimTask_LoadMistTiles(u8 taskId) { struct Struct_sub_8078914 subStruct; @@ -1293,10 +1341,10 @@ void sub_80D8414(u8 taskId) sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); gTasks[taskId].data[15] = -1; - gTasks[taskId].func = sub_80D851C; + gTasks[taskId].func = AnimTask_OverlayFogTiles; } -static void sub_80D851C(u8 taskId) +static void AnimTask_OverlayFogTiles(u8 taskId) { struct Struct_sub_8078914 subStruct; @@ -1355,7 +1403,16 @@ static void sub_80D851C(u8 taskId) } } -static void sub_80D8700(struct Sprite *sprite) +// Initializes gas clouds in the Poison Gas animation. +// arg 0: duration +// arg 1: ? target x offset +// arg 2: ? target y offset +// arg 3: ? swirl start x +// arg 4: ? swirl start y +// arg 5: ??? unknown +// arg 6: ??? unknown +// arg 7: ??? unknown boolean +static void InitPoisonGasCloudAnim(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[0]; @@ -1402,9 +1459,10 @@ static void sub_80D8700(struct Sprite *sprite) sprite->callback = sub_80D8874; } -#ifdef NONMATCHING +// Animates the gas clouds towards the target mon in Poison Gas. // functionally correct, but there appears to be an unused local variable causing // switch case 1 to not match +#ifdef NONMATCHING static void sub_80D8874(struct Sprite *sprite) { int value; @@ -1818,14 +1876,15 @@ NAKED static void sub_80D8874(struct Sprite *sprite) } #endif // NONMATCHING -void sub_80D8ADC(u8 taskId) +// Creates Hail. +void AnimTask_Hail1(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->func = sub_80D8AF8; + task->func = AnimTask_Hail2; } -static void sub_80D8AF8(u8 taskId) +static void AnimTask_Hail2(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->data[0]) @@ -1872,6 +1931,7 @@ static void sub_80D8AF8(u8 taskId) /* +// Something to do with Hail. // possibly equivalent, possibly not bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)//(u8 spriteId, u8 taskId, u8 a3)//(u8 taskId) { @@ -1925,7 +1985,7 @@ bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)//(u8 spriteId, u8 taskId, u8 a3)// r6 = gUnknown_083D9DC4[a1][1]; } - spriteId = CreateSprite(&gSpriteTemplate_83D9E3C, r7 - r6, -0x8, 0x12); + spriteId = CreateSprite(&HailSpriteTemplate, r7 - r6, -0x8, 0x12); if (spriteId != 0x40) { @@ -2080,7 +2140,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) "\tlsls r1, r7, 16\n" "\tasrs r1, 16\n" "\tsubs r1, r0\n" - "\tldr r0, _080D8D00 @ =gSpriteTemplate_83D9E3C\n" + "\tldr r0, _080D8D00 @ =HailSpriteTemplate\n" "\tlsls r1, 16\n" "\tasrs r1, 16\n" "\tmovs r2, 0x8\n" @@ -2114,7 +2174,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) "\tmovs r0, 0x1\n" "\tb _080D8D0A\n" "\t.align 2, 0\n" - "_080D8D00: .4byte gSpriteTemplate_83D9E3C\n" + "_080D8D00: .4byte HailSpriteTemplate\n" "_080D8D04: .4byte gSprites\n" "_080D8D08:\n" "\tmovs r0, 0\n" @@ -2130,7 +2190,7 @@ NAKED bool8 sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4) } //*/ -static void sub_80D8D1C(struct Sprite *sprite) +static void AnimHailBegin(struct Sprite *sprite) { u8 spriteId; @@ -2142,13 +2202,13 @@ static void sub_80D8D1C(struct Sprite *sprite) if (sprite->data[0] == 1 && sprite->data[5] == 0) { - spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D9C78, + spriteId = CreateSprite(&LargeIceEffectParticleSpriteTemplate, sprite->data[3], sprite->data[4], sprite->subpriority); sprite->data[0] = spriteId; if (spriteId != 64) { - gSprites[sprite->data[0]].callback = sub_80D8E00; + gSprites[sprite->data[0]].callback = AnimHailContinue; gSprites[sprite->data[0]].data[6] = sprite->data[6]; gSprites[sprite->data[0]].data[7] = sprite->data[7]; } @@ -2164,7 +2224,7 @@ static void sub_80D8D1C(struct Sprite *sprite) } } -static void sub_80D8E00(struct Sprite *sprite) +static void AnimHailContinue(struct Sprite *sprite) { if (++sprite->data[0] == 20) { @@ -2174,8 +2234,14 @@ static void sub_80D8E00(struct Sprite *sprite) } } -// Does this animate icicle arc for icicle spear? -static void unc_080B06FC(struct Sprite *sprite) +// Initializes the animation for Ice Ball. +// arg 0: initial x pixel offset +// arg 1: initial y pixel offset +// arg 2: target x offset +// arg 3: target y offset +// arg 4: duration +// arg 5: arc height (negative) +static void InitIceBallAnim(struct Sprite *sprite) { u8 animNum = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1 - 1; @@ -2196,10 +2262,11 @@ static void unc_080B06FC(struct Sprite *sprite) InitAnimArcTranslation(sprite); - sprite->callback = sub_80D8EE0; + sprite->callback = AnimThrowIceBall; } -static void sub_80D8EE0(struct Sprite *sprite) +// Throws the ball of ice in Ice Ball. +static void AnimThrowIceBall(struct Sprite *sprite) { if (!TranslateAnimArc(sprite)) return; @@ -2209,7 +2276,8 @@ static void sub_80D8EE0(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -static void sub_80D8F10(struct Sprite *sprite) +// Initializes the particles that scatter at the end of the Ice Ball animation. +static void InitIceBallParticles(struct Sprite *sprite) { s16 randA, randB; @@ -2224,10 +2292,11 @@ static void sub_80D8F10(struct Sprite *sprite) sprite->data[1] = randA; sprite->data[2] = randB; - sprite->callback = sub_80D8F74; + sprite->callback = AnimIceBallParticles; } -static void sub_80D8F74(struct Sprite *sprite) +// Animates the particles created by InitIceBallParticles. +static void AnimIceBallParticles(struct Sprite *sprite) { sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; @@ -2238,12 +2307,13 @@ static void sub_80D8F74(struct Sprite *sprite) sprite->pos2.x = sprite->data[3] >> 8; sprite->pos2.y = sprite->data[4] >> 8; + if (++sprite->data[0] == 21) DestroyAnimSprite(sprite); } -// Counter for icicle spear? -void sub_80D8FC0(u8 taskId) +// Counter for Ice Ball. +void AnimTask_CountIceBallThrows(u8 taskId) { u8 arg = gBattleAnimArgs[0]; |