Document move anims A-C

This commit is contained in:
GriffinR 2020-02-14 16:05:43 -05:00 committed by huderlem
parent b1d131ace2
commit 6eb44dc507
20 changed files with 516 additions and 477 deletions

File diff suppressed because it is too large Load Diff

View File

@ -10,6 +10,8 @@ u16 Random2(void);
//Returns a 32-bit pseudorandom number
#define Random32() (Random() | (Random() << 16))
#define ISO_RANDOMIZE1(val)(1103515245 * (val) + 24691)
#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345)
//Sets the initial seed value of the pseudorandom number generator
void SeedRng(u16 seed);

View File

@ -3114,7 +3114,7 @@ static void FakeOutStep2(u8 taskId)
}
}
void sub_8106020(u8 taskId)
void AnimTask_StretchTargetUp(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
if (++gTasks[taskId].data[0] == 1)

View File

@ -3863,7 +3863,8 @@ static void AnimTask_FacadeColorBlendStep(u8 taskId)
}
}
void sub_815DFCC(u8 taskId)
// The sliding circle effect used by Refresh and Aromatherapy
void AnimTask_StatusClearedEffect(u8 taskId)
{
sub_8117854(
taskId,

View File

@ -870,7 +870,7 @@ void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
}
}
void sub_80D6134(u8 taskId)
void AminTask_DipMonSpriteToSide(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);

View File

@ -211,7 +211,8 @@ static void sub_81169A0(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void sub_81169C0(u8 taskId)
// Used to leave blended traces of a mon, usually to imply speed as in Agility or Aerial Ace
void AnimTask_TraceMonBlended(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@ -681,7 +682,7 @@ static void sub_81175C4(u32 selectedPalettes, u16 color)
}
}
void sub_8117610(u8 taskId)
void AnimTask_BlendAllBattlerPalettesButAttacker(u8 taskId)
{
u32 battler;
int j;
@ -699,7 +700,7 @@ void sub_8117610(u8 taskId)
StartBlendAnimSpriteColor(taskId, selectedPalettes);
}
void sub_8117660(u8 taskId)
void AnimTask_StartSlidingBg(u8 taskId)
{
u8 newTaskId;
@ -754,19 +755,24 @@ void AnimTask_GetTargetIsAttackerPartner(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void sub_81177E4(u8 taskId)
#define tInvisible gBattleAnimArgs[0];
// For hiding or subsequently revealing all other battlers
void AnimTask_SetAllBattlersButAttackerInvisiblity(u8 taskId)
{
u16 battler;
for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++)
{
if (battler != gBattleAnimAttacker && IsBattlerSpriteVisible(battler))
gSprites[gBattlerSpriteIds[battler]].invisible = gBattleAnimArgs[0];
gSprites[gBattlerSpriteIds[battler]].invisible = tInvisible;
}
DestroyAnimVisualTask(taskId);
}
#undef tInvisible
void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette)
{

View File

@ -10,7 +10,7 @@
#include "constants/rgb.h"
void sub_81138D4(struct Sprite *);
void sub_81139DC(struct Sprite *);
static void AnimBite(struct Sprite *);
void sub_8113A90(struct Sprite *);
void sub_81144BC(struct Sprite *);
static void sub_811375C(u8);
@ -96,7 +96,7 @@ const union AffineAnimCmd *const gUnknown_08597060[] =
gUnknown_08597050,
};
const struct SpriteTemplate gUnknown_08597080 =
const struct SpriteTemplate gSharpTeethSpriteTemplate =
{
.tileTag = ANIM_TAG_SHARP_TEETH,
.paletteTag = ANIM_TAG_SHARP_TEETH,
@ -104,10 +104,10 @@ const struct SpriteTemplate gUnknown_08597080 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_08597060,
.callback = sub_81139DC,
.callback = AnimBite,
};
const struct SpriteTemplate gUnknown_08597098 =
const struct SpriteTemplate gClampJawSpriteTemplate =
{
.tileTag = ANIM_TAG_CLAMP,
.paletteTag = ANIM_TAG_CLAMP,
@ -115,7 +115,7 @@ const struct SpriteTemplate gUnknown_08597098 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_08597060,
.callback = sub_81139DC,
.callback = AnimBite,
};
const union AffineAnimCmd gUnknown_085970B0[] =
@ -186,7 +186,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8597138 =
.callback = sub_81144BC,
};
void sub_81136E8(u8 taskId)
void AnimTask_AttackerFadeToInvisible(u8 taskId)
{
int battler;
gTasks[taskId].data[0] = gBattleAnimArgs[0];
@ -224,7 +224,7 @@ static void sub_811375C(u8 taskId)
}
}
void sub_81137E4(u8 taskId)
void AnimTask_AttackerFadeFromInvisible(u8 taskId)
{
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = BLDALPHA_BLEND(0, 16);
@ -310,7 +310,8 @@ static void sub_8113950(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void sub_81139DC(struct Sprite *sprite)
// Move sprite inward for Bite/Crunch and Clamp
static void AnimBite(struct Sprite *sprite)
{
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];

View File

@ -25,8 +25,8 @@ static void sub_810AAB0(struct Sprite *);
static void sub_810AB78(u8 taskId);
static void sub_810AC8C(struct Sprite *);
static void sub_810ACC0(struct Sprite *);
static void sub_810ACD8(struct Sprite *);
static void sub_810AD30(struct Sprite *);
static void AnimGrowingElectricOrb(struct Sprite *);
static void AnimElectricPuff(struct Sprite *);
static void sub_810AD98(struct Sprite *);
static void sub_810ADF8(struct Sprite *);
static bool8 sub_810B154(struct Task *task, u8 taskId);
@ -331,7 +331,7 @@ const union AffineAnimCmd *const gUnknown_08595950[] =
gUnknown_08595930,
};
const struct SpriteTemplate gUnknown_0859595C =
const struct SpriteTemplate gGrowingElectricOrbSpriteTemplate =
{
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
.paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
@ -339,7 +339,7 @@ const struct SpriteTemplate gUnknown_0859595C =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_08595950,
.callback = sub_810ACD8,
.callback = AnimGrowingElectricOrb,
};
const union AnimCmd gUnknown_08595974[] =
@ -356,7 +356,7 @@ const union AnimCmd *const gUnknown_08595988[] =
gUnknown_08595974,
};
const struct SpriteTemplate gUnknown_0859598C =
const struct SpriteTemplate gElectricPuffSpriteTemplate =
{
.tileTag = ANIM_TAG_ELECTRICITY,
.paletteTag = ANIM_TAG_ELECTRICITY,
@ -364,7 +364,7 @@ const struct SpriteTemplate gUnknown_0859598C =
.anims = gUnknown_08595988,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810AD30,
.callback = AnimElectricPuff,
};
const struct SpriteTemplate gUnknown_085959A4 =
@ -794,11 +794,12 @@ static void sub_810AAB0(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void sub_810AAFC(u8 taskId)
// Animates small electric orbs moving from around the battler inward. For Charge/Shock Wave
void AnimTask_ElectricChargingParticles(u8 taskId)
{
struct Task *task = &gTasks[taskId];
if (!gBattleAnimArgs[0])
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@ -882,9 +883,10 @@ static void sub_810ACC0(struct Sprite *sprite)
sprite->callback = sub_810AC8C;
}
static void sub_810ACD8(struct Sprite *sprite)
// The growing orb for Charge
static void AnimGrowingElectricOrb(struct Sprite *sprite)
{
if (!gBattleAnimArgs[0])
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@ -899,9 +901,10 @@ static void sub_810ACD8(struct Sprite *sprite)
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
}
static void sub_810AD30(struct Sprite *sprite)
// The quick electric burst at the end of Charge / during the Volt Tackle hit
static void AnimElectricPuff(struct Sprite *sprite)
{
if (!gBattleAnimArgs[0])
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);

View File

@ -21,7 +21,7 @@ void sub_810D4F4(struct Sprite *);
void sub_810D608(struct Sprite *);
void sub_810D714(struct Sprite *);
void sub_810D874(struct Sprite *);
void sub_810D984(struct Sprite *);
static void AnimArmThrustHit(struct Sprite *);
void sub_810DA10(struct Sprite *);
void sub_810DA7C(struct Sprite *);
static void sub_810D0B8(struct Sprite *);
@ -174,7 +174,8 @@ const union AffineAnimCmd *const gUnknown_08595F10[] =
gUnknown_08595EF8,
};
const struct SpriteTemplate gUnknown_08595F14 =
// Blaze Kick / Meteor Mash
const struct SpriteTemplate gSpinningHandOrFootSpriteTemplate =
{
.tileTag = ANIM_TAG_HANDS_AND_FEET,
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
@ -299,7 +300,7 @@ const struct SpriteTemplate gUnknown_0859601C =
.callback = sub_810D874,
};
const struct SpriteTemplate gUnknown_08596034 =
const struct SpriteTemplate gArmThrustHandSpriteTemplate =
{
.tileTag = ANIM_TAG_HANDS_AND_FEET,
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
@ -307,7 +308,7 @@ const struct SpriteTemplate gUnknown_08596034 =
.anims = gUnknown_08595E54,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810D984,
.callback = AnimArmThrustHit,
};
const union AnimCmd gUnknown_0859604C[] =
@ -935,7 +936,7 @@ static void sub_810D960(struct Sprite *sprite)
sprite->data[0]++;
}
void sub_810D984(struct Sprite *sprite)
static void AnimArmThrustHit(struct Sprite *sprite)
{
u8 turn;

View File

@ -8,7 +8,7 @@
#include "trig.h"
static void sub_8108EC8(struct Sprite *);
static void sub_8108F08(struct Sprite *);
static void AnimFireSpread(struct Sprite *);
static void sub_8108F4C(struct Sprite *);
static void sub_8108FBC(struct Sprite *);
static void sub_8109028(struct Sprite *);
@ -72,7 +72,7 @@ const struct SpriteTemplate gUnknown_08595368 =
.callback = sub_8108EC8,
};
const struct SpriteTemplate gUnknown_08595380 =
const struct SpriteTemplate gFireSpreadSpriteTemplate =
{
.tileTag = ANIM_TAG_SMALL_EMBER,
.paletteTag = ANIM_TAG_SMALL_EMBER,
@ -80,7 +80,7 @@ const struct SpriteTemplate gUnknown_08595380 =
.anims = gUnknown_08595360,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_8108F08,
.callback = AnimFireSpread,
};
const union AnimCmd gUnknown_08595398[] =
@ -150,7 +150,7 @@ const struct SpriteTemplate gUnknown_08595410 =
.callback = sub_8108FBC,
};
const struct SpriteTemplate gUnknown_08595428 =
const struct SpriteTemplate gFirePlumeSpriteTemplate =
{
.tileTag = ANIM_TAG_FIRE_PLUME,
.paletteTag = ANIM_TAG_FIRE_PLUME,
@ -267,7 +267,7 @@ const struct SpriteTemplate gUnknown_08595504 =
.callback = sub_8109200,
};
const struct SpriteTemplate gUnknown_0859551C =
const struct SpriteTemplate gFireBlastRingSpriteTemplate =
{
.tileTag = ANIM_TAG_SMALL_EMBER,
.paletteTag = ANIM_TAG_SMALL_EMBER,
@ -308,7 +308,7 @@ const union AffineAnimCmd *const gUnknown_08595564[] =
gUnknown_08595554,
};
const struct SpriteTemplate gUnknown_0859556C =
const struct SpriteTemplate gFireBlastCrossSpriteTemplate =
{
.tileTag = ANIM_TAG_SMALL_EMBER,
.paletteTag = ANIM_TAG_SMALL_EMBER,
@ -470,7 +470,8 @@ static void sub_8108EC8(struct Sprite *sprite)
sprite->callback(sprite);
}
static void sub_8108F08(struct Sprite *sprite)
// For the impact spread of fire sprites for moves like Blaze Kick or Fire Punch
static void AnimFireSpread(struct Sprite *sprite)
{
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);

View File

@ -24,13 +24,12 @@ void sub_810ED28(struct Sprite *);
void sub_810ED70(struct Sprite *);
void sub_810EDD0(struct Sprite *);
void sub_810EE14(struct Sprite *);
void sub_810EEF8(struct Sprite *);
static void AnimSprayWaterDroplet(struct Sprite *);
void sub_810EFA8(struct Sprite *);
void sub_810F004(struct Sprite *);
void sub_810F018(struct Sprite *);
void sub_810F084(struct Sprite *);
void sub_810F140(struct Sprite *);
static void sub_810DE98(struct Sprite *);
static void sub_810DF18(u8);
static void sub_810E028(struct Sprite *);
@ -86,7 +85,7 @@ const union AnimCmd *const gUnknown_085962D0[] =
gUnknown_085962BC,
};
const struct SpriteTemplate gUnknown_085962D4 =
const struct SpriteTemplate gAirWaveCrescentSpriteTemplate =
{
.tileTag = ANIM_TAG_AIR_WAVE_2,
.paletteTag = ANIM_TAG_AIR_WAVE_2,
@ -232,7 +231,7 @@ const union AffineAnimCmd *const gUnknown_0859641C[] =
gUnknown_085963EC,
};
const struct SpriteTemplate gUnknown_08596420 =
const struct SpriteTemplate gBounceBallShrinkSpriteTemplate =
{
.tileTag = ANIM_TAG_ROUND_SHADOW,
.paletteTag = ANIM_TAG_ROUND_SHADOW,
@ -254,7 +253,7 @@ const union AffineAnimCmd *const gUnknown_08596448[] =
gUnknown_08596438,
};
const struct SpriteTemplate gUnknown_0859644C =
const struct SpriteTemplate gBounceBallLandSpriteTemplate =
{
.tileTag = ANIM_TAG_ROUND_SHADOW,
.paletteTag = ANIM_TAG_ROUND_SHADOW,
@ -314,7 +313,7 @@ const struct SpriteTemplate gUnknown_085964CC =
.callback = sub_810EE14,
};
const struct SpriteTemplate gUnknown_085964E4 =
const struct SpriteTemplate gSprayWaterDropletSpriteTemplate =
{
.tileTag = ANIM_TAG_SWEAT_BEAD,
.paletteTag = ANIM_TAG_SWEAT_BEAD,
@ -322,7 +321,7 @@ const struct SpriteTemplate gUnknown_085964E4 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810EEF8,
.callback = AnimSprayWaterDroplet,
};
const struct SpriteTemplate gUnknown_085964FC =
@ -1111,7 +1110,8 @@ void sub_810EE14(struct Sprite *sprite)
}
}
void sub_810EEF8(struct Sprite *sprite)
// Launches a water droplet away from the specified battler. Used by Astonish and Dive
static void AnimSprayWaterDroplet(struct Sprite *sprite)
{
int v1 = 0x1ff & Random2();
int v2 = 0x7f & Random2();

View File

@ -10,11 +10,11 @@
#include "trig.h"
#include "util.h"
static void sub_811160C(struct Sprite *);
static void AnimConfuseRayBallBounce(struct Sprite *);
static void sub_8111674(struct Sprite *);
static void sub_81116E8(struct Sprite *);
static void sub_8111764(struct Sprite *);
static void sub_81117F4(struct Sprite *);
static void AnimConfuseRayBallSpiral(struct Sprite *);
static void sub_8111814(struct Sprite *);
static void sub_8111914(u8 taskId);
static void sub_811196C(u8 taskId);
@ -54,7 +54,7 @@ const union AffineAnimCmd *const gUnknown_08596D10[] =
gUnknown_08596CF8,
};
const struct SpriteTemplate gUnknown_08596D14 =
const struct SpriteTemplate gConfuseRayBallBounceSpriteTemplate =
{
.tileTag = ANIM_TAG_YELLOW_BALL,
.paletteTag = ANIM_TAG_YELLOW_BALL,
@ -62,10 +62,10 @@ const struct SpriteTemplate gUnknown_08596D14 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gUnknown_08596D10,
.callback = sub_811160C,
.callback = AnimConfuseRayBallBounce,
};
const struct SpriteTemplate gUnknown_08596D2C =
const struct SpriteTemplate gConfuseRayBallSpiralSpriteTemplate =
{
.tileTag = ANIM_TAG_YELLOW_BALL,
.paletteTag = ANIM_TAG_YELLOW_BALL,
@ -73,7 +73,7 @@ const struct SpriteTemplate gUnknown_08596D2C =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_81117F4,
.callback = AnimConfuseRayBallSpiral,
};
const union AffineAnimCmd gUnknown_08596D44[] =
@ -215,7 +215,7 @@ const struct SpriteTemplate gUnknown_08596E48 =
.callback = sub_8112F60,
};
static void sub_811160C(struct Sprite *sprite)
static void AnimConfuseRayBallBounce(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
@ -311,7 +311,7 @@ static void sub_8111764(struct Sprite *sprite)
}
}
static void sub_81117F4(struct Sprite *sprite)
static void AnimConfuseRayBallSpiral(struct Sprite *sprite)
{
InitSpritePosToAnimTarget(sprite, TRUE);
sprite->callback = sub_8111814;

View File

@ -49,7 +49,7 @@ const union AffineAnimCmd *const gUnknown_08597174[] =
gUnknown_08597160,
};
const struct SpriteTemplate gUnknown_08597178 =
const struct SpriteTemplate gBonemerangSpriteTemplate =
{
.tileTag = ANIM_TAG_BONE,
.paletteTag = ANIM_TAG_BONE,
@ -60,7 +60,7 @@ const struct SpriteTemplate gUnknown_08597178 =
.callback = AnimBonemerangProjectile,
};
const struct SpriteTemplate gUnknown_08597190 =
const struct SpriteTemplate gSpinningBoneSpriteTemplate =
{
.tileTag = ANIM_TAG_BONE,
.paletteTag = ANIM_TAG_BONE,

View File

@ -219,7 +219,7 @@ const union AffineAnimCmd *const gUnknown_08595B64[] =
gUnknown_08595B44,
};
const struct SpriteTemplate gUnknown_08595B68 =
const struct SpriteTemplate gIceCrystalHitLargeSpriteTemplate =
{
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
@ -230,7 +230,7 @@ const struct SpriteTemplate gUnknown_08595B68 =
.callback = AnimIceEffectParticle,
};
const struct SpriteTemplate gUnknown_08595B80 =
const struct SpriteTemplate gIceCrystalHitSmallSpriteTemplate =
{
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
@ -241,7 +241,7 @@ const struct SpriteTemplate gUnknown_08595B80 =
.callback = AnimIceEffectParticle,
};
const struct SpriteTemplate gUnknown_08595B98 =
const struct SpriteTemplate gSwirlingSnowballSpriteTemplate =
{
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
@ -252,7 +252,7 @@ const struct SpriteTemplate gUnknown_08595B98 =
.callback = AnimSwirlingSnowball_Step1,
};
const struct SpriteTemplate gUnknown_08595BB0 =
const struct SpriteTemplate gBlizzardIceCrystalSpriteTemplate =
{
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
@ -1452,7 +1452,7 @@ void AnimHailBegin(struct Sprite *sprite)
if (sprite->data[0] == 1 && sprite->data[5] == 0)
{
spriteId = CreateSprite(&gUnknown_08595B68,
spriteId = CreateSprite(&gIceCrystalHitLargeSpriteTemplate,
sprite->data[3], sprite->data[4], sprite->subpriority);
sprite->data[0] = spriteId;

View File

@ -90,7 +90,7 @@
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct SpriteTemplate gUnknown_08596C10[];
extern const struct SpriteTemplate gAncientPowerRockSpriteTemplate[];
//ewram
EWRAM_DATA u16 gIntroCharacterGender = 0;
@ -1782,7 +1782,7 @@ static void CreateGroudonRockSprites(u8 a0)
for (i = 0; i < 6; i++)
{
spriteId = CreateSprite(gUnknown_08596C10, gIntroGroudonRockData[i][0], 0xA0, i);
spriteId = CreateSprite(gAncientPowerRockSpriteTemplate, gIntroGroudonRockData[i][0], 0xA0, i);
gSprites[spriteId].callback = SpriteCB_IntroGroudonRocks;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].data[1] = i;

View File

@ -22,8 +22,8 @@ static void AnimConfusionDuckStep(struct Sprite *);
static void AnimSimplePaletteBlendStep(struct Sprite *);
static void sub_81158F8(struct Sprite *);
static void sub_8115984(struct Sprite *);
static void sub_8115A54(u8, u8, u8);
static void sub_8115AA4(u8);
static void BlendMonColorInCycle(u8, u8, u8);
static void AnimTask_BlendCycleMonColorLoop(u8);
static void sub_8115BC8(u8, u8, u8);
static void sub_8115C18(u8);
static void sub_8115CD0(u8, u8, u8);
@ -187,7 +187,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8597370 =
.callback = sub_8116420,
};
const struct SpriteTemplate gUnknown_08597388 =
const struct SpriteTemplate gWaterHitSplatSpriteTemplate =
{
.tileTag = ANIM_TAG_WATER_IMPACT,
.paletteTag = ANIM_TAG_WATER_IMPACT,
@ -413,55 +413,68 @@ void sub_81159B4(struct Sprite *sprite)
sprite->callback(sprite);
}
void sub_8115A04(u8 taskId)
// Task data for AnimTask_BlendCycleMonColor
#define tPalSelector data[0]
#define tDelay data[1]
#define tNumBlends data[2]
#define tInitialBlendY data[3]
#define tTargetBlendY data[4]
#define tBlendColor data[5]
#define tRestoreBlend data[8]
// Blends mon sprite to designated color or back alternately tNumBlends times
// Many uses of this task only set a tNumBlends of 2, which has the effect of blending to a color and back once
void AnimTask_BlendCycleMonColor(u8 taskId)
{
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1];
gTasks[taskId].data[2] = gBattleAnimArgs[2];
gTasks[taskId].data[3] = gBattleAnimArgs[3];
gTasks[taskId].data[4] = gBattleAnimArgs[4];
gTasks[taskId].data[5] = gBattleAnimArgs[5];
gTasks[taskId].data[8] = 0;
sub_8115A54(taskId, 0, gTasks[taskId].data[4]);
gTasks[taskId].func = sub_8115AA4;
gTasks[taskId].tPalSelector = gBattleAnimArgs[0];
gTasks[taskId].tDelay = gBattleAnimArgs[1];
gTasks[taskId].tNumBlends = gBattleAnimArgs[2];
gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3];
gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4];
gTasks[taskId].tBlendColor = gBattleAnimArgs[5];
gTasks[taskId].tRestoreBlend = FALSE;
BlendMonColorInCycle(taskId, 0, gTasks[taskId].tTargetBlendY);
gTasks[taskId].func = AnimTask_BlendCycleMonColorLoop;
}
static void sub_8115A54(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
static void BlendMonColorInCycle(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount)
{
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]);
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].tPalSelector);
BeginNormalPaletteFade(
selectedPalettes,
gTasks[taskId].data[1],
initialBlendAmount,
gTasks[taskId].tDelay,
startBlendAmount,
targetBlendAmount,
gTasks[taskId].data[5]);
gTasks[taskId].tBlendColor);
gTasks[taskId].data[2]--;
gTasks[taskId].data[8] ^= 1;
gTasks[taskId].tNumBlends--;
gTasks[taskId].tRestoreBlend ^= 1;
}
static void sub_8115AA4(u8 taskId)
static void AnimTask_BlendCycleMonColorLoop(u8 taskId)
{
u8 initialBlendAmount, targetBlendAmount;
u8 startBlendAmount, targetBlendAmount;
if (!gPaletteFade.active)
{
if (gTasks[taskId].data[2] > 0)
if (gTasks[taskId].tNumBlends > 0)
{
if (gTasks[taskId].data[8] == 0)
if (gTasks[taskId].tRestoreBlend == FALSE)
{
initialBlendAmount = gTasks[taskId].data[3];
targetBlendAmount = gTasks[taskId].data[4];
// Blend to designated color
startBlendAmount = gTasks[taskId].tInitialBlendY;
targetBlendAmount = gTasks[taskId].tTargetBlendY;
}
else
{
initialBlendAmount = gTasks[taskId].data[4];
targetBlendAmount = gTasks[taskId].data[3];
// Blend back to original color
startBlendAmount = gTasks[taskId].tTargetBlendY;
targetBlendAmount = gTasks[taskId].tInitialBlendY;
}
if (gTasks[taskId].data[2] == 1)
if (gTasks[taskId].tNumBlends == 1)
targetBlendAmount = 0;
sub_8115A54(taskId, initialBlendAmount, targetBlendAmount);
BlendMonColorInCycle(taskId, startBlendAmount, targetBlendAmount);
}
else
{
@ -470,6 +483,14 @@ static void sub_8115AA4(u8 taskId)
}
}
#undef tPalSelector
#undef tDelay
#undef tNumBlends
#undef tInitialBlendY
#undef tTargetBlendY
#undef tBlendColor
#undef tFirstBlendDone
void sub_8115B0C(u8 taskId)
{
int battler;

View File

@ -4,9 +4,9 @@
#include "constants/rgb.h"
void sub_810DBAC(struct Sprite *);
void sub_810DC2C(struct Sprite *);
void AnimAcidPoisonBubble(struct Sprite *);
void sub_810DCD0(struct Sprite *);
void sub_810DD50(struct Sprite *);
void AnimAcidPoisonDroplet(struct Sprite *);
void AnimBubbleEffect(struct Sprite *);
static void sub_810DC10(struct Sprite *);
static void sub_810DCB4(struct Sprite *);
@ -108,7 +108,7 @@ const struct SpriteTemplate gUnknown_085961A8 =
.callback = sub_810DBAC,
};
const struct SpriteTemplate gUnknown_085961C0 =
const struct SpriteTemplate gAcidPoisonBubbleSpriteTemplate =
{
.tileTag = ANIM_TAG_POISON_BUBBLE,
.paletteTag = ANIM_TAG_POISON_BUBBLE,
@ -116,7 +116,7 @@ const struct SpriteTemplate gUnknown_085961C0 =
.anims = gUnknown_08596164,
.images = NULL,
.affineAnims = gUnknown_085961A0,
.callback = sub_810DC2C,
.callback = AnimAcidPoisonBubble,
};
const struct SpriteTemplate gUnknown_085961D8 =
@ -142,7 +142,7 @@ const union AffineAnimCmd *const gUnknown_08596208[] =
gUnknown_085961F0,
};
const struct SpriteTemplate gUnknown_0859620C =
const struct SpriteTemplate gAcidPoisonDropletSpriteTemplate =
{
.tileTag = ANIM_TAG_POISON_BUBBLE,
.paletteTag = ANIM_TAG_POISON_BUBBLE,
@ -150,7 +150,7 @@ const struct SpriteTemplate gUnknown_0859620C =
.anims = gUnknown_08596168,
.images = NULL,
.affineAnims = gUnknown_08596208,
.callback = sub_810DD50,
.callback = AnimAcidPoisonDroplet,
};
const union AffineAnimCmd gUnknown_08596224[] =
@ -210,7 +210,7 @@ static void sub_810DC10(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void sub_810DC2C(struct Sprite *sprite)
void AnimAcidPoisonBubble(struct Sprite *sprite)
{
s16 l1, l2;
if (!gBattleAnimArgs[3])
@ -265,7 +265,7 @@ static void sub_810DD24(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void sub_810DD50(struct Sprite *sprite)
void AnimAcidPoisonDroplet(struct Sprite *sprite)
{
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);

View File

@ -8,10 +8,10 @@
#include "constants/rgb.h"
#include "constants/songs.h"
void sub_810F1EC(struct Sprite *);
static void AnimDefensiveWall(struct Sprite *);
void sub_810F58C(struct Sprite *);
void sub_810F634(struct Sprite *);
void sub_810F6B0(struct Sprite *);
static void AnimQuestionMark(struct Sprite *);
void sub_810FBA8(struct Sprite *);
void sub_810FDF0(struct Sprite *);
void sub_8110240(struct Sprite *);
@ -60,7 +60,7 @@ const struct SpriteTemplate gUnknown_08596560 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F1EC,
.callback = AnimDefensiveWall,
};
const struct SpriteTemplate gUnknown_08596578 =
@ -71,7 +71,7 @@ const struct SpriteTemplate gUnknown_08596578 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F1EC,
.callback = AnimDefensiveWall,
};
const struct SpriteTemplate gUnknown_08596590 =
@ -82,10 +82,10 @@ const struct SpriteTemplate gUnknown_08596590 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F1EC,
.callback = AnimDefensiveWall,
};
const struct SpriteTemplate gUnknown_085965A8 =
const struct SpriteTemplate gBarrierWallSpriteTemplate =
{
.tileTag = ANIM_TAG_GRAY_LIGHT_WALL,
.paletteTag = ANIM_TAG_GRAY_LIGHT_WALL,
@ -93,7 +93,7 @@ const struct SpriteTemplate gUnknown_085965A8 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F1EC,
.callback = AnimDefensiveWall,
};
const struct SpriteTemplate gUnknown_085965C0 =
@ -104,7 +104,7 @@ const struct SpriteTemplate gUnknown_085965C0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F1EC,
.callback = AnimDefensiveWall,
};
const union AnimCmd gUnknown_085965D8[] =
@ -257,7 +257,7 @@ const union AffineAnimCmd *const gUnknown_08596740[] =
gUnknown_08596718,
};
const struct SpriteTemplate gUnknown_08596744 =
const struct SpriteTemplate gAmnesiaQuestionMarkSpriteTemplate =
{
.tileTag = ANIM_TAG_AMNESIA,
.paletteTag = ANIM_TAG_AMNESIA,
@ -265,7 +265,7 @@ const struct SpriteTemplate gUnknown_08596744 =
.anims = gUnknown_08596714,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F6B0,
.callback = AnimQuestionMark,
};
const union AffineAnimCmd gUnknown_0859675C[] =
@ -419,7 +419,8 @@ const struct SpriteTemplate gUnknown_08596920 =
.callback = sub_8110240,
};
void sub_810F1EC(struct Sprite *sprite)
// For the rectangular wall sprite used by Reflect, Mirror Coat, etc
static void AnimDefensiveWall(struct Sprite *sprite)
{
u8 isContest = IsContest();
@ -639,7 +640,7 @@ void sub_810F634(struct Sprite *sprite)
sprite->callback = RunStoredCallbackWhenAnimEnds;
}
void sub_810F6B0(struct Sprite *sprite)
static void AnimQuestionMark(struct Sprite *sprite)
{
s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2;
s16 y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / -2;

View File

@ -199,7 +199,7 @@ const union AnimCmd *const gUnknown_08596C08[] =
gUnknown_08596BF0,
};
const struct SpriteTemplate gUnknown_08596C10 =
const struct SpriteTemplate gAncientPowerRockSpriteTemplate =
{
.tileTag = ANIM_TAG_ROCKS,
.paletteTag = ANIM_TAG_ROCKS,

View File

@ -15,11 +15,11 @@
void sub_810721C(struct Sprite *);
void sub_8107228(struct Sprite *);
void sub_8107260(struct Sprite *);
static void AnimMovingWaterBubble(struct Sprite *);
void sub_8107380(struct Sprite *);
void sub_8107408(struct Sprite *);
void sub_8107430(struct Sprite *);
void sub_810744C(struct Sprite *);
static void AnimAuroraBeamRings(struct Sprite *);
void sub_81074E4(struct Sprite *);
void sub_81075EC(struct Sprite *);
void sub_8107674(struct Sprite *);
@ -115,7 +115,7 @@ const union AnimCmd *const gUnknown_08595064[] =
gUnknown_08595054,
};
const struct SpriteTemplate gBattleAnimSpriteTemplate_8595068 =
const struct SpriteTemplate gMovingWaterBubbleSpriteTemplate =
{
.tileTag = ANIM_TAG_BUBBLE,
.paletteTag = ANIM_TAG_BUBBLE,
@ -123,7 +123,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_8595068 =
.anims = gUnknown_08595064,
.images = NULL,
.affineAnims = gUnknown_08595050,
.callback = sub_8107260,
.callback = AnimMovingWaterBubble,
};
const union AnimCmd gUnknown_08595080[] =
@ -156,8 +156,7 @@ const union AffineAnimCmd *const gUnknown_085950B0[] =
gUnknown_08595098,
};
// Multi-colored rings used in Aurora Beam.
const struct SpriteTemplate gUnknown_085950B4 =
const struct SpriteTemplate gAuroraBeamRingSpriteTemplate =
{
.tileTag = ANIM_TAG_RAINBOW_RINGS,
.paletteTag = ANIM_TAG_RAINBOW_RINGS,
@ -165,7 +164,7 @@ const struct SpriteTemplate gUnknown_085950B4 =
.anims = gUnknown_08595090,
.images = NULL,
.affineAnims = gUnknown_085950B0,
.callback = sub_810744C,
.callback = AnimAuroraBeamRings,
};
const union AnimCmd gUnknown_085950CC[] =
@ -351,7 +350,7 @@ const struct SpriteTemplate gUnknown_08595220 =
.callback = sub_8107894,
};
const struct SpriteTemplate gUnknown_08595238 =
const struct SpriteTemplate gSmallBubblePairSpriteTemplate =
{
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
@ -478,7 +477,7 @@ const struct SpriteTemplate gUnknown_08595328 =
.callback = sub_80A8EE4,
};
extern const struct SpriteTemplate gUnknown_08597388;
extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate;
void AnimTask_CreateRaindrops(u8 taskId)
{
@ -517,7 +516,8 @@ void sub_8107228(struct Sprite *sprite)
DestroySprite(sprite);
}
void sub_8107260(struct Sprite *sprite)
// For water bubbles that move to a dest, as in Bubble/Bubblebeam
static void AnimMovingWaterBubble(struct Sprite *sprite)
{
u8 spriteId;
@ -590,7 +590,7 @@ void sub_8107430(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
}
void sub_810744C(struct Sprite *sprite)
static void AnimAuroraBeamRings(struct Sprite *sprite)
{
s16 unkArg;
@ -1762,7 +1762,7 @@ void sub_810871C(struct Task *task, u8 taskId)
}
task->data[11]++;
task->data[8] = (task->data[8] + 39) & 0xFF;
task->data[7] = ((task->data[7] * 0x41c64e6d + 0x3039) % task->data[5]) + task->data[4];
task->data[7] = ((task->data[7] * 1103515245 + 12345) % task->data[5]) + task->data[4];
}
void sub_81087C0(struct Sprite *sprite)
@ -1773,7 +1773,7 @@ void sub_81087C0(struct Sprite *sprite)
if (sprite->pos1.y >= sprite->data[5])
{
gTasks[sprite->data[6]].data[10] = 1;
sprite->data[1] = CreateSprite(&gUnknown_08597388, sprite->pos1.x, sprite->pos1.y, 1);
sprite->data[1] = CreateSprite(&gWaterHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, 1);
if (sprite->data[1] != MAX_SPRITES)
{
StartSpriteAffineAnim(&gSprites[sprite->data[1]], 3);