diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index 1a617aeaf..1b1934071 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -7,10 +7,10 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite); static void AnimSludgeBombHitParticle(struct Sprite *sprite); static void AnimAcidPoisonDroplet(struct Sprite *sprite); static void AnimBubbleEffect(struct Sprite *sprite); -static void sub_80B1684(struct Sprite *sprite); -static void sub_80B1728(struct Sprite *sprite); -static void sub_80B1798(struct Sprite *sprite); -static void AnimBubbleEffectStep(struct Sprite *sprite); +static void AnimSludgeProjectile_Step(struct Sprite *sprite); +static void AnimAcidPoisonBubble_Step(struct Sprite *sprite); +static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite); +static void AnimBubbleEffect_Step(struct Sprite *sprite); static const union AnimCmd sAnim_ToxicBubble[] = { @@ -194,10 +194,10 @@ static void AnimSludgeProjectile(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); sprite->data[5] = -30; InitAnimArcTranslation(sprite); - sprite->callback = sub_80B1684; + sprite->callback = AnimSludgeProjectile_Step; } -static void sub_80B1684(struct Sprite *sprite) +static void AnimSludgeProjectile_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -218,10 +218,10 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite) sprite->data[4] = l2 + gBattleAnimArgs[5]; sprite->data[5] = -30; InitAnimArcTranslation(sprite); - sprite->callback = sub_80B1728; + sprite->callback = AnimAcidPoisonBubble_Step; } -static void sub_80B1728(struct Sprite *sprite) +static void AnimAcidPoisonBubble_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -237,10 +237,10 @@ static void AnimSludgeBombHitParticle(struct Sprite *sprite) InitSpriteDataForLinearTranslation(sprite); sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; - sprite->callback = sub_80B1798; + sprite->callback = AnimSludgeBombHitParticle_Step; } -static void sub_80B1798(struct Sprite *sprite) +static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite) { TranslateSpriteLinearFixedPoint(sprite); sprite->data[1] -= sprite->data[5]; @@ -284,10 +284,10 @@ static void AnimBubbleEffect(struct Sprite *sprite) sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; } - sprite->callback = AnimBubbleEffectStep; + sprite->callback = AnimBubbleEffect_Step; } -static void AnimBubbleEffectStep(struct Sprite *sprite) +static void AnimBubbleEffect_Step(struct Sprite *sprite) { sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF; sprite->x2 = Sin(sprite->data[0], 4); diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index 97e1714ba..5125001f0 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -12,18 +12,18 @@ static void AnimQuestionMark(struct Sprite *sprite); static void AnimRedX(struct Sprite *sprite); static void AnimSkillSwapOrb(struct Sprite *sprite); static void AnimPsychoBoost(struct Sprite *sprite); -static void sub_80B300C(struct Sprite *sprite); -static void sub_80B3044(struct Sprite *sprite); -static void sub_80B30B0(struct Sprite *sprite); -static void sub_80B3168(struct Sprite *sprite); -static void sub_80B3384(struct Sprite *sprite); -static void sub_80B33B8(struct Sprite *sprite); -static void sub_80B3454(u8 taskId); -static void sub_80B34DC(u8 taskId); -static void sub_80B3618(u8 taskId); -static void sub_80B3980(u8 taskId); -static void sub_80B3B78(u8 taskId); -static void sub_80B3D78(u8 taskId); +static void AnimDefensiveWall_Step2(struct Sprite *sprite); +static void AnimDefensiveWall_Step3(struct Sprite *sprite); +static void AnimDefensiveWall_Step4(struct Sprite *sprite); +static void AnimDefensiveWall_Step5(struct Sprite *sprite); +static void AnimQuestionMark_Step1(struct Sprite *sprite); +static void AnimQuestionMark_Step2(struct Sprite *sprite); +static void AnimTask_MeditateStretchAttacker_Step(u8 taskId); +static void AnimTask_Teleport_Step(u8 taskId); +static void AnimTask_ImprisonOrbs_Step(u8 taskId); +static void AnimTask_SkillSwap_Step(u8 taskId); +static void AnimTask_ExtrasensoryDistortion_Step(u8 taskId); +static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId); static const union AffineAnimCmd sAffineAnim_PsychUpSpiral[] = { @@ -415,6 +415,7 @@ const struct SpriteTemplate gPsychoBoostOrbSpriteTemplate = .callback = AnimPsychoBoost, }; +// For the rectangular wall sprite used by Reflect, Mirror Coat, etc static void AnimDefensiveWall(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest()) @@ -459,20 +460,22 @@ static void AnimDefensiveWall(struct Sprite *sprite) if (IsContest()) sprite->y += 9; sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16; - sprite->callback = sub_80B300C; - sub_80B300C(sprite); + sprite->callback = AnimDefensiveWall_Step2; + sprite->callback(sprite); } -static void sub_80B300C(struct Sprite *sprite) +// AnimDefensiveWall_Step1 is removed in FRLG from the removal of Contest handling + +static void AnimDefensiveWall_Step2(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3])); if (sprite->data[3] == 13) - sprite->callback = sub_80B3044; + sprite->callback = AnimDefensiveWall_Step3; else ++sprite->data[3]; } -static void sub_80B3044(struct Sprite *sprite) +static void AnimDefensiveWall_Step3(struct Sprite *sprite) { u16 color; u16 startOffset; @@ -487,11 +490,11 @@ static void sub_80B3044(struct Sprite *sprite) gPlttBufferFaded[startOffset + i] = gPlttBufferFaded[startOffset + i - 1]; gPlttBufferFaded[startOffset + 1] = color; if (++sprite->data[2] == 16) - sprite->callback = sub_80B30B0; + sprite->callback = AnimDefensiveWall_Step4; } } -static void sub_80B30B0(struct Sprite *sprite) +static void AnimDefensiveWall_Step4(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3])); if (--sprite->data[3] == -1) @@ -508,11 +511,11 @@ static void sub_80B30B0(struct Sprite *sprite) gSprites[gBattlerSpriteIds[battler]].invisible = FALSE; } sprite->invisible = TRUE; - sprite->callback = sub_80B3168; + sprite->callback = AnimDefensiveWall_Step5; } } -static void sub_80B3168(struct Sprite *sprite) +static void AnimDefensiveWall_Step5(struct Sprite *sprite) { if (!IsContest()) { @@ -531,13 +534,14 @@ static void sub_80B3168(struct Sprite *sprite) sprite->callback = DestroyAnimSprite; } +// Animates the sparkle that appears during Reflect or Light Screen/Mirror Coat static void AnimWallSparkle(struct Sprite *sprite) { if (sprite->data[0] == 0) { - int arg3 = gBattleAnimArgs[3]; + bool32 ignoreOffsets = gBattleAnimArgs[3]; bool8 respectMonPicOffsets = FALSE; - if (arg3 == 0) + if (!ignoreOffsets) respectMonPicOffsets = TRUE; if (!IsContest() && IsDoubleBattle()) { @@ -589,6 +593,7 @@ static void AnimBentSpoon(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAnimEnds; } +// Used by Amnesia static void AnimQuestionMark(struct Sprite *sprite) { s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2; @@ -600,20 +605,20 @@ static void AnimQuestionMark(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y; if (sprite->y < 16) sprite->y = 16; - StoreSpriteCallbackInData6(sprite, sub_80B3384); + StoreSpriteCallbackInData6(sprite, AnimQuestionMark_Step1); sprite->callback = RunStoredCallbackWhenAnimEnds; } -static void sub_80B3384(struct Sprite *sprite) +static void AnimQuestionMark_Step1(struct Sprite *sprite) { sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; sprite->affineAnims = sAffineAnims_QuestionMark; sprite->data[0] = 0; InitSpriteAffineAnim(sprite); - sprite->callback = sub_80B33B8; + sprite->callback = AnimQuestionMark_Step2; } -static void sub_80B33B8(struct Sprite *sprite) +static void AnimQuestionMark_Step2(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -640,10 +645,10 @@ void AnimTask_MeditateStretchAttacker(u8 taskId) task->data[0] = spriteId; PrepareAffineAnimInTaskData(task, spriteId, sAffineAnim_MeditateStretchAttacker); - task->func = sub_80B3454; + task->func = AnimTask_MeditateStretchAttacker_Step; } -static void sub_80B3454(u8 taskId) +static void AnimTask_MeditateStretchAttacker_Step(u8 taskId) { if (!RunAffineAnimFromTaskData(&gTasks[taskId])) DestroyAnimVisualTask(taskId); @@ -659,10 +664,10 @@ void AnimTask_Teleport(u8 taskId) task->data[2] = 0; task->data[3] = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 4 : 8; PrepareAffineAnimInTaskData(task, task->data[0], sAffineAnim_Teleport); - task->func = sub_80B34DC; + task->func = AnimTask_Teleport_Step; } -static void sub_80B34DC(u8 taskId) +static void AnimTask_Teleport_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -682,7 +687,7 @@ static void sub_80B34DC(u8 taskId) else { gSprites[task->data[0]].invisible = TRUE; - gSprites[task->data[0]].x = 272; + gSprites[task->data[0]].x = DISPLAY_WIDTH + 32; ResetSpriteRotScale(task->data[0]); DestroyAnimVisualTask(taskId); } @@ -704,10 +709,10 @@ void AnimTask_ImprisonOrbs(u8 taskId) task->data[12] = var0 > var1 ? var0 : var1; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); - task->func = sub_80B3618; + task->func = AnimTask_ImprisonOrbs_Step; } -static void sub_80B3618(u8 taskId) +static void AnimTask_ImprisonOrbs_Step(u8 taskId) { u16 i; u8 spriteId; @@ -757,7 +762,7 @@ static void sub_80B3618(u8 taskId) if (++task->data[1] == 32) { for (i = 8; i < 13; ++i) - if (task->data[i] != 64) + if (task->data[i] != MAX_SPRITES) DestroySprite(&gSprites[task->data[i]]); ++task->data[0]; } @@ -773,7 +778,7 @@ static void sub_80B3618(u8 taskId) } } -static void sub_80B37A4(struct Sprite *sprite) +static void AnimRedX_Step(struct Sprite *sprite) { if (sprite->data[1] > sprite->data[0] - 10) sprite->invisible = sprite->data[1] & 1; @@ -790,7 +795,7 @@ static void AnimRedX(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); } sprite->data[0] = gBattleAnimArgs[1]; - sprite->callback = sub_80B37A4; + sprite->callback = AnimRedX_Step; } void AnimTask_SkillSwap(u8 taskId) @@ -799,7 +804,7 @@ void AnimTask_SkillSwap(u8 taskId) if (IsContest()) { - if (gBattleAnimArgs[0] == 1) + if (gBattleAnimArgs[0] == ANIM_TARGET) { task->data[10] = -10; task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_RIGHT) - 8; @@ -836,10 +841,10 @@ void AnimTask_SkillSwap(u8 taskId) } } task->data[1] = 6; - task->func = sub_80B3980; + task->func = AnimTask_SkillSwap_Step; } -static void sub_80B3980(u8 taskId) +static void AnimTask_SkillSwap_Step(u8 taskId) { u8 spriteId; struct Task *task = &gTasks[taskId]; @@ -881,6 +886,8 @@ static void AnimSkillSwapOrb(struct Sprite *sprite) } } +// The scanline effect that distorts the target during Extrasensory by segmenting the mon vertically and shifting the slices +// arg0: Stage. Stage 0 is a slight right distortion, 1 is a medium left distortion, and 2 is a severe right distortion void AnimTask_ExtrasensoryDistortion(u8 taskId) { s16 i; @@ -932,10 +939,10 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId) scanlineParams.initState = 1; scanlineParams.unused9 = 0; ScanlineEffect_SetParams(scanlineParams); - task->func = sub_80B3B78; + task->func = AnimTask_ExtrasensoryDistortion_Step; } -static void sub_80B3B78(u8 taskId) +static void AnimTask_ExtrasensoryDistortion_Step(u8 taskId) { s16 sineIndex, i; struct Task *task = &gTasks[taskId]; @@ -969,6 +976,8 @@ static void sub_80B3B78(u8 taskId) } } +// Creates a cloned transparent sprite of the battler that grows and then shrinks back to original size. Used by Extrasensory +// arg0: battler void AnimTask_TransparentCloneGrowAndShrink(u8 taskId) { s16 spriteId; @@ -998,10 +1007,10 @@ void AnimTask_TransparentCloneGrowAndShrink(u8 taskId) task->data[13] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); task->data[14] = matrixNum; task->data[15] = spriteId; - task->func = sub_80B3D78; + task->func = AnimTask_TransparentCloneGrowAndShrink_Step; } -static void sub_80B3D78(u8 taskId) +static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId) { struct Task *task = &gTasks[taskId];