diff options
author | garak <garakmon@gmail.com> | 2018-09-23 22:21:36 -0400 |
---|---|---|
committer | garak <garakmon@gmail.com> | 2018-09-23 22:21:36 -0400 |
commit | fd6dcd2285920ec686254d3445571c82d0f5efa4 (patch) | |
tree | aa44e1d11f3b8761d012d0f0609d3b71ac938a37 /src | |
parent | 9f0bbcdd6f7fe3d18320ec692478b4fdfc313e68 (diff) |
label most ice anim functions
Diffstat (limited to 'src')
-rw-r--r-- | src/battle/anim/aurora.c | 34 | ||||
-rw-r--r-- | src/battle/anim/ice.c | 304 |
2 files changed, 210 insertions, 128 deletions
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]; |