Sync battle anim - flying, header cleanup

This commit is contained in:
GriffinR
2022-08-18 12:31:06 -04:00
parent 5813cb43c2
commit a3c2108af7
7 changed files with 407 additions and 559 deletions
+1 -1
View File
@@ -245,7 +245,7 @@ $(C_BUILDDIR)/isagbprn.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE)
$(C_BUILDDIR)/isagbprn.o: CFLAGS := -mthumb-interwork
$(C_BUILDDIR)/trainer_tower.o: CFLAGS += -ffreestanding
$(C_BUILDDIR)/flying.o: CFLAGS += -ffreestanding
$(C_BUILDDIR)/battle_anim_flying.o: CFLAGS += -ffreestanding
$(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE)
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet
+51 -339
View File
@@ -17,6 +17,36 @@ enum
BG_ANIM_SCREEN_BASE_BLOCK
};
enum
{
BATTLER_COORD_X,
BATTLER_COORD_Y,
BATTLER_COORD_X_2,
BATTLER_COORD_Y_PIC_OFFSET,
BATTLER_COORD_Y_PIC_OFFSET_DEFAULT,
};
enum
{
BATTLER_COORD_ATTR_HEIGHT,
BATTLER_COORD_ATTR_WIDTH,
BATTLER_COORD_ATTR_TOP,
BATTLER_COORD_ATTR_BOTTOM,
BATTLER_COORD_ATTR_LEFT,
BATTLER_COORD_ATTR_RIGHT,
BATTLER_COORD_ATTR_RAW_BOTTOM,
};
// battle_anim_status_effects.s
#define STAT_ANIM_PLUS1 15
#define STAT_ANIM_PLUS2 39
#define STAT_ANIM_MINUS1 22
#define STAT_ANIM_MINUS2 46
#define STAT_ANIM_MULTIPLE_PLUS1 55
#define STAT_ANIM_MULTIPLE_PLUS2 56
#define STAT_ANIM_MULTIPLE_MINUS1 57
#define STAT_ANIM_MULTIPLE_MINUS2 58
struct BattleAnimBgData
{
u8 *bgTiles;
@@ -62,7 +92,6 @@ extern s32 gAnimMoveDmg;
extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT];
extern u8 gAnimCustomPanning;
// battle_anim.c
extern const struct OamData gOamData_AffineOff_ObjNormal_8x8;
extern const struct OamData gOamData_AffineOff_ObjNormal_16x16;
extern const struct OamData gOamData_AffineOff_ObjNormal_32x32;
@@ -135,8 +164,27 @@ extern const struct OamData gOamData_AffineDouble_ObjBlend_8x16;
extern const struct OamData gOamData_AffineDouble_ObjBlend_8x32;
extern const struct OamData gOamData_AffineDouble_ObjBlend_16x32;
extern const struct OamData gOamData_AffineDouble_ObjBlend_32x64;
extern const struct MonCoords gCastformFrontSpriteCoords[];
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate;
extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate;
extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate;
extern const struct SpriteTemplate gWishStarSpriteTemplate;
extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate;
extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate;
extern const union AffineAnimCmd *const gAffineAnims_Bite[];
extern const union AffineAnimCmd *const gAffineAnims_Droplet[];
extern const union AffineAnimCmd *const gGrowingRingAffineAnimTable[];
extern const union AnimCmd *const gAnims_SmallBubblePair[];
extern const union AnimCmd *const gAnims_BasicFire[];
extern const union AnimCmd *const gAnims_WaterMudOrb[];
extern const union AnimCmd *const gAnims_WaterBubble[];
extern const union AnimCmd *const gMusicNotesAnimTable[];
extern const u8 *const gBattleAnims_StatusConditions[];
extern const u8 *const gBattleAnims_Moves[];
extern const u16 gMovesWithQuietBGM[];
void MoveBattlerSpriteToBG(u8 battlerId, u8);
void ResetBattleAnimBg(u8);
void ClearBattleAnimationVars(void);
@@ -152,207 +200,19 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
bool8 IsBattlerSpriteVisible(u8 battlerId);
s16 KeepPanInRange(s16 a, s32 oldPan);
void RelocateBattleBgPal(u16 paletteNum, u16 *dest, s32 offset, u8 largeScreen);
// battle_intro.c
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
s32 GetAnimBgAttribute(u8 bgId, u8 attributeId);
void HandleIntroSlide(u8 terrain);
void BattleIntroSlideEnd(u8 taskId);
void CopyBattlerSpriteToBg(s32 bgId, u8 x, u8 y, u8 battlerPosition, u8 palno, u8 *tilesDest, u16 *tilemapDest, u16 tilesOffset);
// battle_anim_effects_1.c
extern const union AnimCmd *const gMusicNotesAnimTable[];
extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate;
void AnimMovePowderParticle(struct Sprite *);
void AnimPowerAbsorptionOrb(struct Sprite *);
void AnimSolarBeamBigOrb(struct Sprite *);
void AnimSolarBeamSmallOrb(struct Sprite *);
void AnimAbsorptionOrb(struct Sprite *);
void AnimHyperBeamOrb(struct Sprite *);
void AnimSporeParticle(struct Sprite *);
void AnimPetalDanceBigFlower(struct Sprite *);
void AnimPetalDanceSmallFlower(struct Sprite *);
void AnimRazorLeafParticle(struct Sprite *);
void AnimLeechSeed(struct Sprite *);
void AnimTranslateLinearSingleSineWave(struct Sprite *);
void AnimMoveTwisterParticle(struct Sprite *);
void AnimConstrictBinding(struct Sprite *);
void AnimMimicOrb(struct Sprite *);
void AnimIngrainRoot(struct Sprite *);
void AnimFrenzyPlantRoot(struct Sprite *);
void AnimIngrainOrb(struct Sprite *);
void AnimPresent(struct Sprite *);
void AnimKnockOffItem(struct Sprite *);
void AnimPresentHealParticle(struct Sprite *);
void AnimItemSteal(struct Sprite *);
void AnimTrickBag(struct Sprite *);
void AnimFlyingParticle(struct Sprite *);
void AnimNeedleArmSpike(struct Sprite *);
void AnimSlidingHit(struct Sprite *);
void AnimWhipHit(struct Sprite *);
void AnimFlickeringPunch(struct Sprite *);
void AnimCuttingSlice(struct Sprite *);
void AnimAirCutterSlice(struct Sprite *);
void AnimCirclingMusicNote(struct Sprite *);
void AnimProtect(struct Sprite *);
void AnimMilkBottle(struct Sprite *);
void AnimGrantingStars(struct Sprite *);
void AnimSparkingStars(struct Sprite *);
void AnimBubbleBurst(struct Sprite *);
void AnimSleepLetterZ(struct Sprite *);
void AnimLockOnTarget(struct Sprite *);
void AnimLockOnMoveTarget(struct Sprite *);
void AnimBowMon(struct Sprite *);
void AnimTipMon(struct Sprite *);
void AnimSlashSlice(struct Sprite *);
void AnimFalseSwipeSlice(struct Sprite *);
void AnimFalseSwipePositionedSlice(struct Sprite *);
void AnimEndureEnergy(struct Sprite *);
void AnimSharpenSphere(struct Sprite *);
void AnimConversion(struct Sprite *);
void AnimConversion2(struct Sprite *);
void AnimMoon(struct Sprite *);
void AnimMoonlightSparkle(struct Sprite *);
void AnimHornHit(struct Sprite *);
void AnimSuperFang(struct Sprite *);
void AnimFlyingMusicNotes(struct Sprite *);
void AnimBellyDrumHand(struct Sprite *);
void AnimSlowFlyingMusicNotes(struct Sprite *);
void AnimThoughtBubble(struct Sprite *);
void AnimMetronomeFinger(struct Sprite *);
void AnimFollowMeFinger(struct Sprite *);
void AnimTauntFinger(struct Sprite *);
void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite);
void AnimTask_ShrinkTargetCopy(u8 taskId);
// battle_anim_effects_2.c
extern const union AffineAnimCmd *const gGrowingRingAffineAnimTable[];
void AnimCirclingFinger(struct Sprite *);
void AnimBouncingMusicNote(struct Sprite *);
void AnimVibrateBattlerBack(struct Sprite *);
void AnimMovingClamp(struct Sprite *);
void AnimKinesisZapEnergy(struct Sprite *);
void AnimSwordsDanceBlade(struct Sprite *);
void AnimSonicBoomProjectile(struct Sprite *);
void AnimAirWaveProjectile(struct Sprite *);
void AnimVoidLines(struct Sprite *);
void AnimCoinThrow(struct Sprite *);
void AnimFallingCoin(struct Sprite *);
void AnimBulletSeed(struct Sprite *);
void AnimRazorWindTornado(struct Sprite *);
void AnimViceGripPincer(struct Sprite *);
void AnimGuillotinePincer(struct Sprite *);
void AnimBreathPuff(struct Sprite *);
void AnimAngerMark(struct Sprite *);
void AnimPencil(struct Sprite *);
void AnimBlendThinRing(struct Sprite *);
void AnimHyperVoiceRing(struct Sprite *);
void AnimUproarRing(struct Sprite *);
void AnimSoftBoiledEgg(struct Sprite *);
void AnimSpeedDust(struct Sprite *);
void AnimHealBellMusicNote(struct Sprite *);
void AnimMagentaHeart(struct Sprite *);
void AnimRedHeartProjectile(struct Sprite *);
void AnimParticleBurst(struct Sprite *);
void AnimRedHeartRising(struct Sprite *);
void AnimOrbitFast(struct Sprite *);
void AnimOrbitScatter(struct Sprite *);
void AnimSpitUpOrb(struct Sprite *);
void AnimEyeSparkle(struct Sprite *);
void AnimAngel(struct Sprite *);
void AnimPinkHeart(struct Sprite *);
void AnimDevil(struct Sprite *);
void AnimFurySwipes(struct Sprite *);
void AnimMovementWaves(struct Sprite *);
void AnimJaggedMusicNote(struct Sprite *);
void AnimPerishSongMusicNote2(struct Sprite *);
void AnimPerishSongMusicNote(struct Sprite *);
void AnimGuardRing(struct Sprite *);
// battle_anim_effects_3.c
extern const struct SpriteTemplate gWishStarSpriteTemplate;
extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate;
void AnimBlackSmoke(struct Sprite *);
void AnimWhiteHalo(struct Sprite *);
void AnimTealAlert(struct Sprite *);
void AnimMeanLookEye(struct Sprite *);
void AnimSpikes(struct Sprite *);
void AnimLeer(struct Sprite *);
void AnimLetterZ(struct Sprite *);
void AnimFang(struct Sprite *);
void AnimSpotlight(struct Sprite *);
void AnimClappingHand(struct Sprite *);
void AnimClappingHand2(struct Sprite *);
void AnimRapidSpin(struct Sprite *);
void AnimTriAttackTriangle(struct Sprite *);
void AnimBatonPassPokeball(struct Sprite *);
void AnimWishStar(struct Sprite *);
void AnimMiniTwinklingStar(struct Sprite *);
void AnimSwallowBlueOrb(struct Sprite *);
void AnimGreenStar(struct Sprite *);
void AnimWeakFrustrationAngerMark(struct Sprite *);
void AnimSweetScentPetal(struct Sprite *);
void AnimPainSplitProjectile(struct Sprite *);
void AnimFlatterConfetti(struct Sprite *);
void AnimFlatterSpotlight(struct Sprite *);
void AnimReversalOrb(struct Sprite *);
void AnimYawnCloud(struct Sprite *);
void AnimSmokeBallEscapeCloud(struct Sprite *);
void AnimFacadeSweatDrop(struct Sprite *);
void AnimRoarNoiseLine(struct Sprite *);
void AnimGlareEyeDot(struct Sprite *);
void AnimAssistPawprint(struct Sprite *);
void AnimSmellingSaltsHand(struct Sprite *);
void AnimSmellingSaltExclamation(struct Sprite *);
void AnimHelpingHandClap(struct Sprite *);
void AnimForesightMagnifyingGlass(struct Sprite *);
void AnimMeteorMashStar(struct Sprite *);
void AnimBlockX(struct Sprite *);
void AnimUnusedItemBagSteal(struct Sprite *);
void AnimKnockOffStrike(struct Sprite *);
void AnimRecycle(struct Sprite *);
// battle_anim_special.c
void TryShinyAnimation(u8 battler, struct Pokemon *mon);
u8 ItemIdToBallId(u16 itemId);
u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
void DoLoadHealthboxPalsForLevelUp(u8 *, u8 *, u8 battlerId);
void DoFreeHealthboxPalsForLevelUp(u8 batterId);
enum
{
BATTLER_COORD_X,
BATTLER_COORD_Y,
BATTLER_COORD_X_2,
BATTLER_COORD_Y_PIC_OFFSET,
BATTLER_COORD_Y_PIC_OFFSET_DEFAULT,
};
enum
{
BATTLER_COORD_ATTR_HEIGHT,
BATTLER_COORD_ATTR_WIDTH,
BATTLER_COORD_ATTR_TOP,
BATTLER_COORD_ATTR_BOTTOM,
BATTLER_COORD_ATTR_LEFT,
BATTLER_COORD_ATTR_RIGHT,
BATTLER_COORD_ATTR_RAW_BOTTOM,
};
// battle_anim_status_effects.s
#define STAT_ANIM_PLUS1 15
#define STAT_ANIM_PLUS2 39
#define STAT_ANIM_MINUS1 22
#define STAT_ANIM_MINUS2 46
#define STAT_ANIM_MULTIPLE_PLUS1 55
#define STAT_ANIM_MULTIPLE_PLUS2 56
#define STAT_ANIM_MULTIPLE_MINUS1 57
#define STAT_ANIM_MULTIPLE_MINUS2 58
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
// battle_anim_mons.c
extern const struct MonCoords gCastformFrontSpriteCoords[];
u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType);
u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType);
u8 GetBattlerSpriteDefault_Y(u8 battlerId);
@@ -428,9 +288,6 @@ void AnimThrowProjectile(struct Sprite *sprite);
void AnimTravelDiagonally(struct Sprite *sprite);
s16 CloneBattlerSpriteWithBlend(u8 animBattler);
void DestroySpriteWithActiveSheet(struct Sprite *sprite);
void AnimTask_AlphaFadeIn(u8 taskId);
void AnimTask_BlendMonInAndOut(u8 task);
void AnimTask_BlendPalInAndOutByTag(u8 taskId);
void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
bool8 RunAffineAnimFromTaskData(struct Task *task);
void SetBattlerSpriteYOffsetFromYScale(u8 spriteId);
@@ -439,13 +296,9 @@ void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr);
void *LoadPointerFromVars(s16 lo, s16 hi);
void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration);
u8 BattleAnimHelper_RunSpriteSquash(struct Task *task);
void AnimTask_GetFrustrationPowerLevel(u8 taskId);
void InitPrioritiesForVisibleBattlers(void);
u8 GetBattlerSpriteSubpriority(u8 battlerId);
u8 GetBattlerSpriteBGPriority(u8 battlerId);
// Returns 2 if player left or opp right
// Returns 1 if player right or opp left
u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templateId, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 ignoreDeoxys);
void DestroySpriteAndFreeResources_(struct Sprite *sprite);
@@ -455,157 +308,16 @@ u8 CreateInvisibleSpriteCopy(s32 battlerId, u8 spriteId, s32 species);
void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite);
void AnimTranslateLinearAndFlicker(struct Sprite *sprite);
void AnimSpinningSparkle(struct Sprite *sprite);
void AnimTask_AttackerPunchWithTrace(u8 taskId);
void AnimWeatherBallUp(struct Sprite *sprite);
void AnimWeatherBallDown(struct Sprite *sprite);
// battle_anim_mon_movement.c
void AnimTask_ShakeMon(u8 taskId);
void AnimTask_ShakeMon2(u8 taskId);
void AnimTask_ShakeMonInPlace(u8 taskId);
void AnimTask_ShakeAndSinkMon(u8 taskId);
void AnimTask_TranslateMonElliptical(u8 taskId);
void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId);
void AnimTask_WindUpLunge(u8 taskId);
void AnimTask_SlideOffScreen(u8 taskId);
void AnimTask_SwayMon(u8 taskId);
void AnimTask_ScaleMonAndRestore(u8 taskId);
void AnimTask_RotateMonSpriteToSide(u8 taskId);
void AnimTask_RotateMonToSideAndRestore(u8 taskId);
void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId);
// normal.c
extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate;
extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate;
extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate;
void AnimParticleBurst(struct Sprite *);
void AnimMoveTwisterParticle(struct Sprite *);
u32 UnpackSelectedBattlePalettes(s16 selector);
void AnimTask_CurseBlendEffect(u8 taskId);
void AnimTask_BlendColorCycleExclude(u8 taskId);
void AnimTask_BlendColorCycleByTag(u8 taskId);
void AnimTask_FlashAnimTagWithColor(u8 taskId);
void AnimTask_InvertScreenColor(u8 taskId);
void AnimTask_ShakeBattleTerrain(u8 taskId);
// ground.c
void AnimTask_DigDownMovement(u8 taskId);
void AnimTask_DigUpMovement(u8 taskId);
void AnimTask_HorizontalShake(u8 taskId);
void AnimTask_IsPowerOver99(u8 taskId);
void AnimTask_PositionFissureBgOnBattler(u8 taskId);
// dragon.c
void AnimTask_DragonDanceWaver(u8 taskId);
// ghost.c
void AnimTask_NightShadeClone(u8 taskId);
void AnimTask_NightmareClone(u8 taskId);
void AnimTask_SpiteTargetShadow(u8 taskId);
void AnimTask_DestinyBondWhiteShadow(u8 taskId);
void AnimTask_CurseStretchingBlackBg(u8 taskId);
void AnimTask_GrudgeFlames(u8 taskId);
void sub_80B6BBC(u8 taskId);
// rock.c
void AnimTask_LoadSandstormBackground(u8 taskId);
void AnimTask_Rollout(u8 taskId);
void AnimTask_GetSeismicTossDamageLevel(u8 taskId);
void AnimTask_MoveSeismicTossBg(u8 taskId);
void AnimTask_SeismicTossBgAccelerateDownAtEnd(u8 taskId);
// psychic.c
void AnimTask_MeditateStretchAttacker(u8 taskId);
void AnimTask_Teleport(u8 taskId);
void AnimTask_ImprisonOrbs(u8 taskId);
void AnimTask_SkillSwap(u8 taskId);
void AnimTask_ExtrasensoryDistortion(u8 taskId);
void AnimTask_TransparentCloneGrowAndShrink(u8 taskId);
// dark.c
extern const union AffineAnimCmd *const gAffineAnims_Bite[];
void AnimTask_AttackerFadeToInvisible(u8 taskId);
void AnimTask_AttackerFadeFromInvisible(u8 taskId);
void AnimTask_InitAttackerFadeFromInvisible(u8 taskId);
void AnimTask_MoveAttackerMementoShadow(u8 taskId);
void AnimTask_MoveTargetMementoShadow(u8 taskId);
void AnimTask_InitMementoShadow(u8 taskId);
void AnimTask_MementoHandleBg(u8 taskId);
void AnimTask_MetallicShine(u8 taskId);
void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId);
void GetIsDoomDesireHitTurn(u8 taskId);
// flying.c
void AnimTask_AnimateGustTornadoPalette(u8 taskId);
void DestroyAnimSpriteAfterTimer(struct Sprite *sprite);
void AnimTask_DrillPeckHitSplats(u8 taskId);
// poison.c
extern const union AffineAnimCmd *const gAffineAnims_Droplet[];
// fighting.c
void AnimTask_MoveSkyUppercutBg(u8 taskId);
// ice.c
extern const union AnimCmd *const gAnims_SmallBubblePair[];
void AnimTask_HazeScrollingFog(u8 taskId);
void AnimTask_MistBallFog(u8 taskId);
void AnimTask_Hail(u8 taskId);
void AnimTask_GetRolloutCounter(u8 taskId);
// electric.c
void AnimTask_ElectricBolt(u8 taskId);
void AnimTask_ElectricChargingParticles(u8 taskId);
void AnimTask_VoltTackleAttackerReappear(u8 taskId);
void AnimTask_VoltTackleBolt(u8 taskId);
void AnimTask_ShockWaveProgressingBolt(u8 taskId);
void AnimTask_ShockWaveLightning(u8 taskId);
// fire.c
extern const union AnimCmd *const gAnims_BasicFire[];
void AnimTask_EruptionLaunchRocks(u8 taskId);
void AnimTask_ShakeTargetInPattern(u8 taskId);
void AnimTask_BlendBackground(u8 taskId);
void AnimTask_MoveHeatWaveTargets(u8 taskId);
// water.c
extern const union AnimCmd *const gAnims_WaterMudOrb[];
extern const union AnimCmd *const gAnims_WaterBubble[];
void AnimWaterPulseRing(struct Sprite *sprite);
// smokescreen.c
u8 SmokescreenImpact(s16 x, s16 y, u8 a3);
// battle_anim_utility_funcs.c
void AnimTask_BlendSelected(u8 taskId);
void AnimTask_BlendExcept(u8 taskId);
void AnimTask_SetCamouflageBlend(u8 taskId);
void AnimTask_BlendParticle(u8 taskId);
void AnimTask_HardwarePaletteFade(u8 taskId);
void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId);
void AnimTask_SetUpCurseBackground(u8 taskId);
void InitStatsChangeAnimation(u8 taskId);
void AnimTask_BlendNonAttackerPalettes(u8 taskId);
void AnimTask_StartSlidingBg(u8 taskId);
void AnimTask_GetAttackerSide(u8 taskId);
void AnimTask_GetTargetSide(u8 taskId);
void AnimTask_GetTargetIsAttackerPartner(u8 taskId);
void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId);
void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette);
void AnimTask_GetBattleTerrain(u8 taskId);
void AnimTask_AllocBackupPalBuffer(u8 taskId);
void AnimTask_FreeBackupPalBuffer(u8 taskId);
void AnimTask_CopyPalUnfadedToBackup(u8 taskId);
void AnimTask_CopyPalUnfadedFromBackup(u8 taskId);
void AnimTask_CopyPalFadedToUnfaded(u8 taskId);
void AnimTask_IsContest(u8 taskId);
void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId);
void AnimTask_IsTargetSameSide(u8 taskId);
void AnimTask_SetAnimTargetToBattlerTarget(u8 taskId);
void AnimTask_SetAnimAttackerAndTargetForEffectAtk(u8 taskId);
void AnimTask_SetAttackerInvisibleWaitForSignal(u8 taskId);
// battle_anim_scripts.s
extern const u8 *const gBattleAnims_StatusConditions[];
extern const u16 gMovesWithQuietBGM[];
extern const u8 *const gBattleAnims_Moves[];
#endif // GUARD_BATTLE_ANIM_H
+2 -2
View File
@@ -168,7 +168,7 @@ SECTIONS {
src/battle_anim_ice.o(.text);
src/battle_anim_fight.o(.text);
src/battle_anim_poison.o(.text);
src/flying.o(.text);
src/battle_anim_flying.o(.text);
src/battle_anim_psychic.o(.text);
src/battle_anim_bug.o(.text);
src/battle_anim_rock.o(.text);
@@ -480,7 +480,7 @@ SECTIONS {
src/battle_anim_ice.o(.rodata);
src/battle_anim_fight.o(.rodata);
src/battle_anim_poison.o(.rodata);
src/flying.o(.rodata);
src/battle_anim_flying.o(.rodata);
src/battle_anim_psychic.o(.rodata);
src/battle_anim_bug.o(.rodata);
src/battle_anim_rock.o(.rodata);
+121 -63
View File
@@ -14,25 +14,47 @@ struct {
s16 targetY;
} static EWRAM_DATA sFrenzyPlantRootData = {0}; // Debug? Written to but never read.
static void AnimMovePowderParticle(struct Sprite *);
static void AnimMovePowderParticle_Step(struct Sprite *);
static void AnimSolarBeamSmallOrb(struct Sprite *);
static void AnimSolarBeamSmallOrb_Step(struct Sprite *);
static void AnimSolarBeamBigOrb(struct Sprite *);
static void AnimPowerAbsorptionOrb(struct Sprite *);
static void AnimAbsorptionOrb(struct Sprite *);
static void AnimAbsorptionOrb_Step(struct Sprite *);
static void AnimHyperBeamOrb(struct Sprite *);
static void AnimHyperBeamOrb_Step(struct Sprite *);
static void AnimMimicOrb(struct Sprite *);
static void AnimLeechSeed(struct Sprite *);
static void AnimLeechSeed_Step(struct Sprite *);
static void AnimLeechSeedSprouts(struct Sprite *);
static void AnimSporeParticle(struct Sprite *);
static void AnimSporeParticle_Step(struct Sprite *);
static void AnimPetalDanceBigFlower(struct Sprite *);
static void AnimPetalDanceBigFlower_Step(struct Sprite *);
static void AnimPetalDanceSmallFlower(struct Sprite *);
static void AnimPetalDanceSmallFlower_Step(struct Sprite *);
static void AnimRazorLeafParticle(struct Sprite *);
static void AnimRazorLeafParticle_Step1(struct Sprite *);
static void AnimRazorLeafParticle_Step2(struct Sprite *);
static void AnimIngrainRoot(struct Sprite *);
static void AnimFrenzyPlantRoot(struct Sprite *);
static void AnimIngrainOrb(struct Sprite *);
static void AnimTranslateLinearSingleSineWave(struct Sprite *);
static void AnimTranslateLinearSingleSineWave_Step(struct Sprite *);
static void AnimMoveTwisterParticle_Step(struct Sprite *);
static void AnimConstrictBinding(struct Sprite *);
static void AnimConstrictBinding_Step1(struct Sprite *);
static void AnimConstrictBinding_Step2(struct Sprite *);
static void AnimTask_DuplicateAndShrinkToPos_Step1(u8);
static void AnimTask_DuplicateAndShrinkToPos_Step2(u8);
static void AnimKnockOffItem(struct Sprite *);
static void AnimPresent(struct Sprite *);
static void AnimPresentHealParticle(struct Sprite *);
static void AnimItemSteal(struct Sprite *);
static void AnimItemSteal_Step3(struct Sprite *);
static void AnimRootFlickerOut(struct Sprite *);
static void AnimTrickBag(struct Sprite *);
static void AnimTrickBag_Step1(struct Sprite *);
static void AnimTrickBag_Step2(struct Sprite *);
static void AnimTrickBag_Step3(struct Sprite *);
@@ -40,52 +62,88 @@ static void AnimTask_LeafBlade_Step(u8);
static s16 LeafBladeGetPosFactor(struct Sprite *);
static void AnimTask_LeafBlade_Step2(struct Task *, u8);
static void AnimTask_LeafBlade_Step2_Callback(struct Sprite *);
static void AnimFlyingParticle(struct Sprite *);
static void AnimFlyingParticle_Step(struct Sprite *);
static void AnimNeedleArmSpike(struct Sprite *);
static void AnimNeedleArmSpike_Step(struct Sprite *);
static void AnimSlice_Step(struct Sprite *);
static void AnimCirclingMusicNote(struct Sprite *);
static void AnimCirclingMusicNote_Step(struct Sprite *);
static void AnimProtect(struct Sprite *);
static void AnimProtect_Step(struct Sprite *);
static void AnimMilkBottle(struct Sprite *);
static void AnimMilkBottle_Step1(struct Sprite *);
static void AnimMilkBottle_Step2(struct Sprite *, int, int);
static void AnimBubbleBurst(struct Sprite *);
static void AnimBubbleBurst_Step(struct Sprite *);
static void AnimSleepLetterZ(struct Sprite *);
static void AnimSleepLetterZ_Step(struct Sprite *);
static void AnimLockOnTarget(struct Sprite *);
static void AnimLockOnTarget_Step1(struct Sprite *);
static void AnimLockOnTarget_Step2(struct Sprite *);
static void AnimLockOnTarget_Step3(struct Sprite *);
static void AnimLockOnTarget_Step4(struct Sprite *);
static void AnimLockOnTarget_Step5(struct Sprite *);
static void AnimLockOnTarget_Step6(struct Sprite *);
static void AnimLockOnMoveTarget(struct Sprite *);
static void AnimBowMon(struct Sprite *);
static void AnimBowMon_Step1(struct Sprite *);
static void AnimBowMon_Step1_Callback(struct Sprite *);
static void AnimBowMon_Step2(struct Sprite *);
static void AnimBowMon_Step3(struct Sprite *);
static void AnimBowMon_Step4(struct Sprite *);
static void AnimBowMon_Step3_Callback(struct Sprite *);
static void AnimTipMon(struct Sprite *sprite);
static void AnimTipMon_Step(struct Sprite *);
static void AnimTask_SkullBashPositionSet(u8);
static void AnimTask_SkullBashPositionReset(u8);
static void AnimSlashSlice(struct Sprite *);
static void AnimFalseSwipeSlice(struct Sprite *);
static void AnimFalseSwipeSlice_Step1(struct Sprite *);
static void AnimFalseSwipeSlice_Step2(struct Sprite *);
static void AnimFalseSwipeSlice_Step3(struct Sprite *);
static void AnimFalseSwipePositionedSlice(struct Sprite *);
static void AnimEndureEnergy(struct Sprite *);
static void AnimEndureEnergy_Step(struct Sprite *);
static void AnimSharpenSphere(struct Sprite *);
static void AnimSharpenSphere_Step(struct Sprite *);
static void AnimConversion2Step(struct Sprite *);
static void AnimConversion(struct Sprite *);
static void AnimConversion2(struct Sprite *);
static void AnimConversion2_Step(struct Sprite *);
static void AnimMoon(struct Sprite *);
static void AnimMoon_Step(struct Sprite *);
static void AnimMoonlightSparkle(struct Sprite *);
static void AnimMoonlightSparkle_Step(struct Sprite *);
static void AnimHornHit(struct Sprite *);
static void AnimHornHit_Step(struct Sprite *);
static void AnimTask_DoubleTeam_Step(u8);
static void AnimDoubleTeam(struct Sprite *);
static void AnimWavyMusicNotes(struct Sprite* sprite);
static void AnimWavyMusicNotes(struct Sprite *);
static void AnimWavyMusicNotes_CalcVelocity(s16, s16, s16 *, s16 *, s8);
static void AnimWavyMusicNotes_Step(struct Sprite *);
static void AnimFlyingMusicNotes(struct Sprite *);
static void AnimFlyingMusicNotes_Step(struct Sprite *);
static void AnimSlowFlyingMusicNotes(struct Sprite *);
static void AnimSlowFlyingMusicNotes_Step(struct Sprite *);
static void AnimThoughtBubble(struct Sprite *);
static void AnimThoughtBubble_Step(struct Sprite *);
static void AnimMetronomeFinger(struct Sprite *);
static void AnimMetronomeFinger_Step(struct Sprite *);
static void AnimFollowMeFinger(struct Sprite *);
static void AnimFollowMeFinger_Step1(struct Sprite *);
static void AnimFollowMeFinger_Step2(struct Sprite *);
static void AnimTauntFinger(struct Sprite *);
static void AnimTauntFinger_Step1(struct Sprite *);
static void AnimTauntFinger_Step2(struct Sprite *);
static void AnimBellyDrumHand(struct Sprite *);
static void AnimSuperFang(struct Sprite *);
static void AnimGrantingStars(struct Sprite *);
static void AnimSparklingStars(struct Sprite *);
static void AnimCuttingSlice(struct Sprite *);
static void AnimAirCutterSlice(struct Sprite *);
static void AnimFlickeringPunch(struct Sprite *);
static void AnimSlidingHit(struct Sprite *);
static void AnimWhipHit(struct Sprite *);
static const u8 sUnused[] = {2, 4, 1, 3};
@@ -1385,7 +1443,7 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate =
.anims = sGrantingStarsAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimSparkingStars,
.callback = AnimSparklingStars,
};
static const union AnimCmd sAnim_BubbleBurst[] =
@@ -2166,7 +2224,7 @@ const struct SpriteTemplate gTauntFingerSpriteTemplate =
// arg 3: vertical movement speed (sub-pixel value)
// arg 4: wave amplitude
// arg 5: wave speed
void AnimMovePowderParticle(struct Sprite* sprite)
static void AnimMovePowderParticle(struct Sprite* sprite)
{
sprite->x += gBattleAnimArgs[0];
sprite->y += gBattleAnimArgs[1];
@@ -2206,7 +2264,7 @@ static void AnimMovePowderParticle_Step(struct Sprite* sprite)
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
// arg 2: duration
void AnimPowerAbsorptionOrb(struct Sprite* sprite)
static void AnimPowerAbsorptionOrb(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
@@ -2221,7 +2279,7 @@ void AnimPowerAbsorptionOrb(struct Sprite* sprite)
// arg 1: initial y pixel offset
// arg 2: duration
// arg 3: sprite anim number
void AnimSolarBeamBigOrb(struct Sprite* sprite)
static void AnimSolarBeamBigOrb(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
@@ -2238,7 +2296,7 @@ void AnimSolarBeamBigOrb(struct Sprite* sprite)
// arg 1: initial y pixel offset
// arg 2: duration
// arg 3: initial wave offset
void AnimSolarBeamSmallOrb(struct Sprite* sprite)
static void AnimSolarBeamSmallOrb(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
@@ -2296,7 +2354,7 @@ void AnimTask_CreateSmallSolarBeamOrbs(u8 taskId)
// arg 1: initial y pixel offset
// arg 2: wave amplitude
// arg 3: wave period (lower means faster wave)
void AnimAbsorptionOrb(struct Sprite* sprite)
static void AnimAbsorptionOrb(struct Sprite* sprite)
{
InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[3];
@@ -2315,7 +2373,7 @@ static void AnimAbsorptionOrb_Step(struct Sprite* sprite)
// Moves an orb in a wave-like fashion towards the target mon. The wave's
// properties and the sprite anim are randomly determined.
void AnimHyperBeamOrb(struct Sprite* sprite)
static void AnimHyperBeamOrb(struct Sprite* sprite)
{
u16 speed;
u16 animNum = Random();
@@ -2368,7 +2426,7 @@ static void AnimHyperBeamOrb_Step(struct Sprite* sprite)
// arg 3: target y pixel offset
// arg 4: duration
// arg 5: wave amplitude
void AnimLeechSeed(struct Sprite* sprite)
static void AnimLeechSeed(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -2410,7 +2468,7 @@ static void AnimLeechSeedSprouts(struct Sprite* sprite)
// arg 2: initial wave offset
// arg 3: duration
// arg 4: blend (0 = off, 1 = on)
void AnimSporeParticle(struct Sprite* sprite)
static void AnimSporeParticle(struct Sprite* sprite)
{
InitSpritePosToAnimTarget(sprite, TRUE);
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
@@ -2472,7 +2530,7 @@ void AnimTask_SporeDoubleBattle(u8 taskId)
// arg 1: initial y pixel offset
// arg 2: target y pixel offset
// arg 3: duration
void AnimPetalDanceBigFlower(struct Sprite* sprite)
static void AnimPetalDanceBigFlower(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
sprite->data[0] = gBattleAnimArgs[3];
@@ -2510,7 +2568,7 @@ static void AnimPetalDanceBigFlower_Step(struct Sprite* sprite)
// arg 1: initial y pixel offset
// arg 2: target y pixel offset
// arg 3: duration
void AnimPetalDanceSmallFlower(struct Sprite* sprite)
static void AnimPetalDanceSmallFlower(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[3];
@@ -2545,7 +2603,7 @@ static void AnimPetalDanceSmallFlower_Step(struct Sprite* sprite)
// arg 0: upward x delta per frame
// arg 1: upward y delta per frame
// arg 2: upward duration
void AnimRazorLeafParticle(struct Sprite* sprite)
static void AnimRazorLeafParticle(struct Sprite* sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@@ -2608,7 +2666,7 @@ static void AnimRazorLeafParticle_Step2(struct Sprite* sprite)
// arg 4: translation duration
// arg 5: wave amplitude
// arg 6: target between double battle opponents (boolean)
void AnimTranslateLinearSingleSineWave(struct Sprite* sprite)
static void AnimTranslateLinearSingleSineWave(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -2722,7 +2780,7 @@ static void AnimMoveTwisterParticle_Step(struct Sprite* sprite)
// arg 1: initial y pixel offset
// arg 2: affine anim num
// arg 3: num squeezes
void AnimConstrictBinding(struct Sprite* sprite)
static void AnimConstrictBinding(struct Sprite* sprite)
{
InitSpritePosToAnimTarget(sprite, FALSE);
sprite->affineAnimPaused = TRUE;
@@ -2833,7 +2891,7 @@ static void AnimTask_DuplicateAndShrinkToPos_Step2(u8 taskId)
// Moves an orb from the target mon to the attacking mon.
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
void AnimMimicOrb(struct Sprite* sprite)
static void AnimMimicOrb(struct Sprite* sprite)
{
switch (sprite->data[0])
{
@@ -2867,7 +2925,7 @@ void AnimMimicOrb(struct Sprite* sprite)
// arg 2: sprite subpriority offset
// arg 3: sprite anim num
// arg 4: duration
void AnimIngrainRoot(struct Sprite* sprite)
static void AnimIngrainRoot(struct Sprite* sprite)
{
if (!sprite->data[0])
{
@@ -2892,7 +2950,7 @@ void AnimIngrainRoot(struct Sprite* sprite)
// arg 3: sprite subpriority offset
// arg 4: sprite anum num
// arg 5: duration
void AnimFrenzyPlantRoot(struct Sprite *sprite)
static void AnimFrenzyPlantRoot(struct Sprite *sprite)
{
s16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
s16 attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@@ -2930,7 +2988,7 @@ static void AnimRootFlickerOut(struct Sprite* sprite)
// arg 2: horizontal velocity
// arg 3: wave amplitude
// arg 4: duration
void AnimIngrainOrb(struct Sprite* sprite)
static void AnimIngrainOrb(struct Sprite* sprite)
{
if (!sprite->data[0])
{
@@ -3017,7 +3075,7 @@ static void AnimItemSteal_Step1(struct Sprite* sprite)
}
}
void AnimPresent(struct Sprite* sprite)
static void AnimPresent(struct Sprite* sprite)
{
s16 targetX;
s16 targetY;
@@ -3065,7 +3123,7 @@ static void AnimKnockOffOpponentsItem(struct Sprite* sprite)
}
}
void AnimKnockOffItem(struct Sprite* sprite)
static void AnimKnockOffItem(struct Sprite* sprite)
{
s16 targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
@@ -3097,7 +3155,7 @@ void AnimKnockOffItem(struct Sprite* sprite)
// arg 1: initial y pixel offset
// arg 2: vertical velocity
// arg 3: unused
void AnimPresentHealParticle(struct Sprite* sprite)
static void AnimPresentHealParticle(struct Sprite* sprite)
{
if (!sprite->data[0])
{
@@ -3111,7 +3169,7 @@ void AnimPresentHealParticle(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimItemSteal(struct Sprite* sprite)
static void AnimItemSteal(struct Sprite* sprite)
{
s16 attackerX;
s16 attackerY;
@@ -3166,7 +3224,7 @@ static void AnimItemSteal_Step3(struct Sprite* sprite)
// Moves a bag in a circular motion.
// arg 0: y position
// arg 1: initial wave offset
void AnimTrickBag(struct Sprite* sprite)
static void AnimTrickBag(struct Sprite* sprite)
{
int a;
int b;
@@ -3536,7 +3594,7 @@ static void AnimTask_LeafBlade_Step2_Callback(struct Sprite* sprite)
}
}
void AnimFlyingParticle(struct Sprite* sprite)
static void AnimFlyingParticle(struct Sprite* sprite)
{
u8 battler;
@@ -3638,7 +3696,7 @@ void AnimTask_CycleMagicalLeafPal(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void AnimNeedleArmSpike(struct Sprite* sprite)
static void AnimNeedleArmSpike(struct Sprite* sprite)
{
u8 a;
u8 b;
@@ -3716,7 +3774,7 @@ static void AnimWhipHit_WaitEnd(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimSlidingHit(struct Sprite* sprite)
static void AnimSlidingHit(struct Sprite* sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
@@ -3733,7 +3791,7 @@ void AnimSlidingHit(struct Sprite* sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
void AnimWhipHit(struct Sprite* sprite)
static void AnimWhipHit(struct Sprite* sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
StartSpriteAnim(sprite, 1);
@@ -3743,7 +3801,7 @@ void AnimWhipHit(struct Sprite* sprite)
sprite->y += gBattleAnimArgs[1];
}
void AnimFlickeringPunch(struct Sprite* sprite)
static void AnimFlickeringPunch(struct Sprite* sprite)
{
sprite->x += gBattleAnimArgs[0];
sprite->y += gBattleAnimArgs[1];
@@ -3761,7 +3819,7 @@ void AnimFlickeringPunch(struct Sprite* sprite)
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right
void AnimCuttingSlice(struct Sprite* sprite)
static void AnimCuttingSlice(struct Sprite* sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
@@ -3787,7 +3845,7 @@ void AnimCuttingSlice(struct Sprite* sprite)
sprite->data[1] = -sprite->data[1];
}
void AnimAirCutterSlice(struct Sprite* sprite)
static void AnimAirCutterSlice(struct Sprite* sprite)
{
u8 a;
u8 b;
@@ -3892,7 +3950,7 @@ static void UnusedFlickerAnim(struct Sprite* sprite)
}
}
void AnimCirclingMusicNote(struct Sprite* sprite)
static void AnimCirclingMusicNote(struct Sprite* sprite)
{
sprite->data[0] = gBattleAnimArgs[2];
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -3925,7 +3983,7 @@ static void AnimCirclingMusicNote_Step(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimProtect(struct Sprite* sprite)
static void AnimProtect(struct Sprite* sprite)
{
if (IsContest())
gBattleAnimArgs[1] += 8;
@@ -3988,7 +4046,7 @@ static void AnimProtect_Step(struct Sprite *sprite)
}
}
void AnimMilkBottle(struct Sprite* sprite)
static void AnimMilkBottle(struct Sprite* sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 0xFFE8;
@@ -4098,7 +4156,7 @@ static void AnimMilkBottle_Step2(struct Sprite* sprite, int unk1, int unk2)
sprite->data[3] = 0;
}
void AnimGrantingStars(struct Sprite* sprite)
static void AnimGrantingStars(struct Sprite* sprite)
{
if (!gBattleAnimArgs[2])
SetSpriteCoordsToAnimAttackerCoords(sprite);
@@ -4112,7 +4170,7 @@ void AnimGrantingStars(struct Sprite* sprite)
sprite->callback = TranslateSpriteLinearFixedPoint;
}
void AnimSparkingStars(struct Sprite* sprite)
static void AnimSparklingStars(struct Sprite* sprite)
{
u8 battler;
@@ -4150,7 +4208,7 @@ void AnimSparkingStars(struct Sprite* sprite)
sprite->callback = TranslateSpriteLinearFixedPoint;
}
void AnimBubbleBurst(struct Sprite* sprite)
static void AnimBubbleBurst(struct Sprite* sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
@@ -4181,7 +4239,7 @@ static void AnimBubbleBurst_Step(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimSleepLetterZ(struct Sprite* sprite)
static void AnimSleepLetterZ(struct Sprite* sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
@@ -4211,7 +4269,7 @@ static void AnimSleepLetterZ_Step(struct Sprite* sprite)
DestroySpriteAndMatrix(sprite);
}
void AnimLockOnTarget(struct Sprite* sprite)
static void AnimLockOnTarget(struct Sprite* sprite)
{
sprite->x -= 32;
sprite->y -= 32;
@@ -4358,7 +4416,7 @@ static void AnimLockOnTarget_Step6(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimLockOnMoveTarget(struct Sprite* sprite)
static void AnimLockOnMoveTarget(struct Sprite* sprite)
{
sprite->oam.affineParam = gBattleAnimArgs[0];
if ((s16)sprite->oam.affineParam == 1)
@@ -4390,7 +4448,7 @@ void AnimLockOnMoveTarget(struct Sprite* sprite)
sprite->callback(sprite);
}
void AnimBowMon(struct Sprite* sprite)
static void AnimBowMon(struct Sprite* sprite)
{
sprite->invisible = TRUE;
sprite->data[0] = 0;
@@ -4493,7 +4551,7 @@ static void AnimBowMon_Step4(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimTipMon(struct Sprite *sprite)
static void AnimTipMon(struct Sprite *sprite)
{
sprite->data[0] = 0;
sprite->callback = AnimTipMon_Step;
@@ -4684,7 +4742,7 @@ static void AnimTask_SkullBashPositionReset(u8 taskId)
}
}
void AnimSlashSlice(struct Sprite* sprite)
static void AnimSlashSlice(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
@@ -4703,7 +4761,7 @@ void AnimSlashSlice(struct Sprite* sprite)
sprite->callback = RunStoredCallbackWhenAnimEnds;
}
void AnimFalseSwipeSlice(struct Sprite* sprite)
static void AnimFalseSwipeSlice(struct Sprite* sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0;
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
@@ -4711,7 +4769,7 @@ void AnimFalseSwipeSlice(struct Sprite* sprite)
sprite->callback = RunStoredCallbackWhenAnimEnds;
}
void AnimFalseSwipePositionedSlice(struct Sprite* sprite)
static void AnimFalseSwipePositionedSlice(struct Sprite* sprite)
{
sprite->x = sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0 + gBattleAnimArgs[0];
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
@@ -4751,7 +4809,7 @@ static void AnimFalseSwipeSlice_Step3(struct Sprite* sprite)
}
}
void AnimEndureEnergy(struct Sprite* sprite)
static void AnimEndureEnergy(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
@@ -4782,7 +4840,7 @@ static void AnimEndureEnergy_Step(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimSharpenSphere(struct Sprite* sprite)
static void AnimSharpenSphere(struct Sprite* sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - 12;
@@ -4819,7 +4877,7 @@ static void AnimSharpenSphere_Step(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimConversion(struct Sprite* sprite)
static void AnimConversion(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
{
@@ -4859,15 +4917,15 @@ void AnimTask_ConversionAlphaBlend(u8 taskId)
}
}
void AnimConversion2(struct Sprite* sprite)
static void AnimConversion2(struct Sprite* sprite)
{
InitSpritePosToAnimTarget(sprite, FALSE);
sprite->animPaused = TRUE;
sprite->data[0] = gBattleAnimArgs[2];
sprite->callback = AnimConversion2Step;
sprite->callback = AnimConversion2_Step;
}
static void AnimConversion2Step(struct Sprite* sprite)
static void AnimConversion2_Step(struct Sprite* sprite)
{
if (sprite->data[0])
{
@@ -4923,7 +4981,7 @@ static void AnimTask_ShowBattlersHealthbox(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void AnimMoon(struct Sprite* sprite)
static void AnimMoon(struct Sprite* sprite)
{
if (IsContest())
{
@@ -4948,7 +5006,7 @@ static void AnimMoon_Step(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
void AnimMoonlightSparkle(struct Sprite* sprite)
static void AnimMoonlightSparkle(struct Sprite* sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
sprite->y = gBattleAnimArgs[1];
@@ -5085,7 +5143,7 @@ void AnimTask_FadeScreenBlue_Step(u8 taskId)
}
}
void AnimHornHit(struct Sprite* sprite)
static void AnimHornHit(struct Sprite* sprite)
{
if (gBattleAnimArgs[2] < 2)
gBattleAnimArgs[2] = 2;
@@ -5222,7 +5280,7 @@ static void AnimDoubleTeam(struct Sprite* sprite)
}
}
void AnimSuperFang(struct Sprite* sprite)
static void AnimSuperFang(struct Sprite* sprite)
{
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
sprite->callback = RunStoredCallbackWhenAnimEnds;
@@ -5353,7 +5411,7 @@ static void AnimWavyMusicNotes_Step(struct Sprite* sprite)
}
}
void AnimFlyingMusicNotes(struct Sprite* sprite)
static void AnimFlyingMusicNotes(struct Sprite* sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
gBattleAnimArgs[1] *= -1;
@@ -5389,7 +5447,7 @@ static void AnimFlyingMusicNotes_Step(struct Sprite* sprite)
DestroySpriteAndMatrix(sprite);
}
void AnimBellyDrumHand(struct Sprite* sprite)
static void AnimBellyDrumHand(struct Sprite* sprite)
{
s16 a;
@@ -5410,7 +5468,7 @@ void AnimBellyDrumHand(struct Sprite* sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
void AnimSlowFlyingMusicNotes(struct Sprite* sprite)
static void AnimSlowFlyingMusicNotes(struct Sprite* sprite)
{
s16 xDiff;
u8 index;
@@ -5463,7 +5521,7 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite)
sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) - (s16)GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
}
void AnimThoughtBubble(struct Sprite* sprite)
static void AnimThoughtBubble(struct Sprite* sprite)
{
u8 animNum;
u8 battler;
@@ -5492,7 +5550,7 @@ static void AnimThoughtBubble_Step(struct Sprite* sprite)
}
}
void AnimMetronomeFinger(struct Sprite* sprite)
static void AnimMetronomeFinger(struct Sprite* sprite)
{
u8 battler;
@@ -5517,7 +5575,7 @@ static void AnimMetronomeFinger_Step(struct Sprite* sprite)
}
}
void AnimFollowMeFinger(struct Sprite* sprite)
static void AnimFollowMeFinger(struct Sprite* sprite)
{
u8 battler;
@@ -5576,7 +5634,7 @@ static void AnimFollowMeFinger_Step2(struct Sprite* sprite)
sprite->x2 = (x1 >> 3) + (x2 >> 1);
}
void AnimTauntFinger(struct Sprite* sprite)
static void AnimTauntFinger(struct Sprite* sprite)
{
u8 battler;
+80 -40
View File
@@ -11,16 +11,24 @@
#include "util.h"
#include "constants/songs.h"
static void AnimBouncingMusicNote(struct Sprite *);
static void AnimBouncingMusicNote_Step(struct Sprite *);
static void AnimMovingClamp(struct Sprite *);
static void AnimMovingClamp_Step(struct Sprite *);
static void AnimMovingClamp_End(struct Sprite *);
static void AnimTask_Withdraw_Step(u8);
static void AnimSwordsDanceBlade(struct Sprite *);
static void AnimSwordsDanceBlade_Step(struct Sprite *);
static void AnimVoidLines(struct Sprite *);
static void AnimVoidLines_Step(struct Sprite *);
static void AnimFallingCoin(struct Sprite *);
static void AnimFallingCoin_Step(struct Sprite *);
static void AnimBulletSeed(struct Sprite *);
static void AnimBulletSeed_Step1(struct Sprite *);
static void AnimBulletSeed_Step2(struct Sprite *);
static void AnimViceGripPincer(struct Sprite *);
static void AnimViceGripPincer_Step(struct Sprite *);
static void AnimGuillotinePincer(struct Sprite *);
static void AnimGuillotinePincer_Step1(struct Sprite *);
static void AnimGuillotinePincer_Step2(struct Sprite *);
static void AnimGuillotinePincer_Step3(struct Sprite *);
@@ -33,7 +41,9 @@ static void AnimTask_GrowAndShrink_Step(u8);
static void AnimTask_ThrashMoveMonHorizontal_Step(u8);
static void AnimTask_ThrashMoveMonVertical_Step(u8);
static void AnimTask_SketchDrawMon_Step(u8);
static void AnimPencil(struct Sprite *);
static void AnimPencil_Step(struct Sprite *);
static void AnimSoftBoiledEgg(struct Sprite *);
static void AnimSoftBoiledEgg_Step1(struct Sprite *);
static void AnimSoftBoiledEgg_Step2(struct Sprite *);
static void AnimSoftBoiledEgg_Step3(struct Sprite *);
@@ -47,17 +57,47 @@ static void AnimTask_ExtremeSpeedMonReappear_Step(u8);
static void AnimTask_SpeedDust_Step(u8);
static void AnimTask_FakeOut_Step1(u8);
static void AnimTask_FakeOut_Step2(u8);
static void AnimRedHeartProjectile(struct Sprite *);
static void AnimRedHeartProjectile_Step(struct Sprite *);
static void AnimRedHeartRising(struct Sprite *);
static void AnimRedHeartRising_Step(struct Sprite *);
static void AnimTask_HeartsBackground_Step(u8);
static void AnimTask_ScaryFace_Step(u8);
static void AnimOrbitFast(struct Sprite *);
static void AnimOrbitFast_Step(struct Sprite *);
static void AnimOrbitScatter(struct Sprite *);
static void AnimOrbitScatter_Step(struct Sprite *);
static void AnimMovementWaves(struct Sprite *);
static void AnimMovementWaves_Step(struct Sprite *);
static void AnimTask_UproarDistortion_Step(u8);
static void AnimJaggedMusicNote(struct Sprite *);
static void AnimJaggedMusicNote_Step(struct Sprite *);
static void AnimPerishSongMusicNote2(struct Sprite *);
static void AnimPerishSongMusicNote(struct Sprite *);
static void AnimPerishSongMusicNote_Step1(struct Sprite *);
static void AnimPerishSongMusicNote_Step2(struct Sprite *);
static void AnimCirclingFinger(struct Sprite *);
static void AnimVibrateBattlerBack(struct Sprite *);
static void AnimKinesisZapEnergy(struct Sprite *);
static void AnimSonicBoomProjectile(struct Sprite *);
static void AnimAirWaveProjectile(struct Sprite *);
static void AnimCoinThrow(struct Sprite *);
static void AnimRazorWindTornado(struct Sprite *);
static void AnimBreathPuff(struct Sprite *);
static void AnimAngerMark(struct Sprite *);
static void AnimBlendThinRing(struct Sprite *);
static void AnimHyperVoiceRing(struct Sprite *);
static void AnimUproarRing(struct Sprite *);
static void AnimSpeedDust(struct Sprite *);
static void AnimHealBellMusicNote(struct Sprite *);
static void AnimMagentaHeart(struct Sprite *);
static void AnimSpitUpOrb(struct Sprite *);
static void AnimEyeSparkle(struct Sprite *);
static void AnimAngel(struct Sprite *);
static void AnimPinkHeart(struct Sprite *);
static void AnimDevil(struct Sprite *);
static void AnimFurySwipes(struct Sprite *);
static void AnimGuardRing(struct Sprite *);
// Unused
static const struct SpriteTemplate sCirclingFingerSpriteTemplate =
@@ -1216,7 +1256,7 @@ const struct SpriteTemplate gGuardRingSpriteTemplate =
#define sMoveSteps data[3]
#define sAmplitudeY data[4]
void AnimCirclingFinger(struct Sprite *sprite)
static void AnimCirclingFinger(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
@@ -1235,7 +1275,7 @@ void AnimCirclingFinger(struct Sprite *sprite)
#undef sMoveSteps
#undef sAmplitudeY
void AnimBouncingMusicNote(struct Sprite *sprite)
static void AnimBouncingMusicNote(struct Sprite *sprite)
{
u8 battler;
@@ -1286,7 +1326,7 @@ static void AnimVibrateBattlerBack_Step(struct Sprite *sprite)
sprite->data[0]--;
}
void AnimVibrateBattlerBack(struct Sprite *sprite)
static void AnimVibrateBattlerBack(struct Sprite *sprite)
{
u8 spriteId;
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
@@ -1305,7 +1345,7 @@ void AnimVibrateBattlerBack(struct Sprite *sprite)
sprite->invisible = TRUE;
}
void AnimMovingClamp(struct Sprite *sprite)
static void AnimMovingClamp(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
@@ -1390,7 +1430,7 @@ static void AnimTask_Withdraw_Step(u8 taskId)
// arg 0: x pixel offset
// arg 1: y pixel offset
// arg 2: vertical flip
void AnimKinesisZapEnergy(struct Sprite *sprite)
static void AnimKinesisZapEnergy(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -1418,7 +1458,7 @@ void AnimKinesisZapEnergy(struct Sprite *sprite)
// Animates a sword that rises into the air after a brief pause.
// arg 0: x pixel offset
// arg 1: y pixel offset
void AnimSwordsDanceBlade(struct Sprite *sprite)
static void AnimSwordsDanceBlade(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
@@ -1441,7 +1481,7 @@ static void AnimSwordsDanceBlade_Step(struct Sprite *sprite)
// arg 2: target x pixel offset
// arg 3: target y pixel offset
// arg 4: duration
void AnimSonicBoomProjectile(struct Sprite *sprite)
static void AnimSonicBoomProjectile(struct Sprite *sprite)
{
s16 targetXPos;
s16 targetYPos;
@@ -1517,7 +1557,7 @@ static void AnimAirWaveProjectile_Step1(struct Sprite *sprite)
}
}
void AnimAirWaveProjectile(struct Sprite *sprite)
static void AnimAirWaveProjectile(struct Sprite *sprite)
{
s16 a;
s16 b;
@@ -1701,7 +1741,7 @@ void AnimTask_AirCutterProjectile(u8 taskId)
gTasks[taskId].func = AirCutterProjectile_Step1;
}
void AnimVoidLines(struct Sprite *sprite)
static void AnimVoidLines(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sVoidLinesSpriteTemplate.paletteTag) << 4);
@@ -1728,7 +1768,7 @@ static void AnimVoidLines_Step(struct Sprite *sprite)
}
}
void AnimCoinThrow(struct Sprite *sprite)
static void AnimCoinThrow(struct Sprite *sprite)
{
s16 r6;
s16 r7;
@@ -1751,7 +1791,7 @@ void AnimCoinThrow(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
void AnimFallingCoin(struct Sprite *sprite)
static void AnimFallingCoin(struct Sprite *sprite)
{
sprite->data[2] = -16;
sprite->y += 8;
@@ -1776,7 +1816,7 @@ static void AnimFallingCoin_Step(struct Sprite *sprite)
}
}
void AnimBulletSeed(struct Sprite *sprite)
static void AnimBulletSeed(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = 20;
@@ -1836,7 +1876,7 @@ static void AnimBulletSeed_Step2(struct Sprite *sprite)
// arg 4: initial wave offset
// arg 5: wave period (higher means faster wave)
// arg 6: duration
void AnimRazorWindTornado(struct Sprite *sprite)
static void AnimRazorWindTornado(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
@@ -1854,7 +1894,7 @@ void AnimRazorWindTornado(struct Sprite *sprite)
// Animates a single pincer line that extends towards the center of the target mon.
// arg 0: invert
void AnimViceGripPincer(struct Sprite *sprite)
static void AnimViceGripPincer(struct Sprite *sprite)
{
s16 startXOffset = 32;
s16 startYOffset = -32;
@@ -1887,7 +1927,7 @@ static void AnimViceGripPincer_Step(struct Sprite *sprite)
// Animates a single pincer line that extends towards the center of the target mon, and then back out.
// arg 0: animation id
void AnimGuillotinePincer(struct Sprite *sprite)
static void AnimGuillotinePincer(struct Sprite *sprite)
{
s16 startXOffset = 32;
s16 startYOffset = -32;
@@ -2214,7 +2254,7 @@ static void AnimTask_GrowAndShrink_Step(u8 taskId)
// Animates a little puff of the mon's breath.
// Used by MOVE_SWAGGER and MOVE_BULK_UP
// No args.
void AnimBreathPuff(struct Sprite *sprite)
static void AnimBreathPuff(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
@@ -2242,7 +2282,7 @@ void AnimBreathPuff(struct Sprite *sprite)
// arg 0: target mon (0 = attacker, 1 = target)
// arg 1: x pixel offset
// arg 2: y pixel offset
void AnimAngerMark(struct Sprite *sprite)
static void AnimAngerMark(struct Sprite *sprite)
{
u8 battler;
@@ -2444,7 +2484,7 @@ static void AnimTask_SketchDrawMon_Step(u8 taskId)
}
}
void AnimPencil(struct Sprite *sprite)
static void AnimPencil(struct Sprite *sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) - 16;
sprite->y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16;
@@ -2517,7 +2557,7 @@ static void AnimPencil_Step(struct Sprite *sprite)
}
}
void AnimBlendThinRing(struct Sprite *sprite)
static void AnimBlendThinRing(struct Sprite *sprite)
{
u8 battler = 0;
u16 sp0 = 0;
@@ -2557,7 +2597,7 @@ static void AnimHyperVoiceRing_WaitEnd(struct Sprite *sprite)
}
}
void AnimHyperVoiceRing(struct Sprite *sprite)
static void AnimHyperVoiceRing(struct Sprite *sprite)
{
u16 startX = 0;
u16 startY = 0;
@@ -2642,7 +2682,7 @@ void AnimHyperVoiceRing(struct Sprite *sprite)
sprite->callback(sprite);
}
void AnimUproarRing(struct Sprite *sprite)
static void AnimUproarRing(struct Sprite *sprite)
{
u8 index = IndexOfSpritePaletteTag(ANIM_TAG_THIN_RING);
@@ -2656,7 +2696,7 @@ void AnimUproarRing(struct Sprite *sprite)
sprite->callback(sprite);
}
void AnimSoftBoiledEgg(struct Sprite *sprite)
static void AnimSoftBoiledEgg(struct Sprite *sprite)
{
s16 r1;
@@ -2983,7 +3023,7 @@ static void AnimTask_SpeedDust_Step(u8 taskId)
}
}
void AnimSpeedDust(struct Sprite *sprite)
static void AnimSpeedDust(struct Sprite *sprite)
{
sprite->invisible = gTasks[sprite->data[0]].data[5];
if (sprite->animEnded)
@@ -3028,7 +3068,7 @@ static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b)
sprite->oam.paletteNum = IndexOfSpritePaletteTag(gMusicNotePaletteTagsTable[b >> 1]);
}
void AnimHealBellMusicNote(struct Sprite *sprite)
static void AnimHealBellMusicNote(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -3042,7 +3082,7 @@ void AnimHealBellMusicNote(struct Sprite *sprite)
SetMusicNotePalette(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]);
}
void AnimMagentaHeart(struct Sprite *sprite)
static void AnimMagentaHeart(struct Sprite *sprite)
{
if (++sprite->data[0] == 1)
InitSpritePosToAnimAttacker(sprite, FALSE);
@@ -3150,7 +3190,7 @@ void AnimTask_StretchAttackerUp(u8 taskId)
}
}
void AnimRedHeartProjectile(struct Sprite *sprite)
static void AnimRedHeartProjectile(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = 95;
@@ -3197,7 +3237,7 @@ void AnimParticleBurst(struct Sprite *sprite)
}
}
void AnimRedHeartRising(struct Sprite *sprite)
static void AnimRedHeartRising(struct Sprite *sprite)
{
sprite->x = gBattleAnimArgs[0];
sprite->y = DISPLAY_HEIGHT;
@@ -3398,7 +3438,7 @@ static void AnimTask_ScaryFace_Step(u8 taskId)
// Used by MOVE_HIDDEN_POWER
// arg 0: duration
// arg 1: initial wave offset
void AnimOrbitFast(struct Sprite *sprite)
static void AnimOrbitFast(struct Sprite *sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@@ -3449,7 +3489,7 @@ static void AnimOrbitFast_Step(struct Sprite *sprite)
// Moves orbs away from the mon, based on where they are in their orbit.
// Used in MOVE_HIDDEN_POWER.
// arg 0: initial wave offset
void AnimOrbitScatter(struct Sprite *sprite)
static void AnimOrbitScatter(struct Sprite *sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@@ -3475,7 +3515,7 @@ static void AnimSpitUpOrb_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimSpitUpOrb(struct Sprite *sprite)
static void AnimSpitUpOrb(struct Sprite *sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@@ -3491,13 +3531,13 @@ static void AnimEyeSparkle_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimEyeSparkle(struct Sprite *sprite)
static void AnimEyeSparkle(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->callback = AnimEyeSparkle_Step;
}
void AnimAngel(struct Sprite *sprite)
static void AnimAngel(struct Sprite *sprite)
{
s16 var0;
@@ -3536,7 +3576,7 @@ static void AnimPinkHeart_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimPinkHeart(struct Sprite *sprite)
static void AnimPinkHeart(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
@@ -3562,7 +3602,7 @@ void AnimPinkHeart(struct Sprite *sprite)
}
}
void AnimDevil(struct Sprite *sprite)
static void AnimDevil(struct Sprite *sprite)
{
if (sprite->data[3] == 0)
{
@@ -3591,7 +3631,7 @@ void AnimDevil(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimFurySwipes(struct Sprite *sprite)
static void AnimFurySwipes(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
@@ -3606,7 +3646,7 @@ void AnimFurySwipes(struct Sprite *sprite)
}
}
void AnimMovementWaves(struct Sprite *sprite)
static void AnimMovementWaves(struct Sprite *sprite)
{
if (!gBattleAnimArgs[2])
{
@@ -3662,7 +3702,7 @@ static void AnimTask_UproarDistortion_Step(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void AnimJaggedMusicNote(struct Sprite *sprite)
static void AnimJaggedMusicNote(struct Sprite *sprite)
{
int var1;
u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget;
@@ -3700,7 +3740,7 @@ static void AnimJaggedMusicNote_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimPerishSongMusicNote2(struct Sprite *sprite)
static void AnimPerishSongMusicNote2(struct Sprite *sprite)
{
if (!sprite->data[0])
{
@@ -3715,7 +3755,7 @@ void AnimPerishSongMusicNote2(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimPerishSongMusicNote(struct Sprite *sprite)
static void AnimPerishSongMusicNote(struct Sprite *sprite)
{
int index;
int var2;
@@ -3791,7 +3831,7 @@ static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite)
}
}
void AnimGuardRing(struct Sprite *sprite)
static void AnimGuardRing(struct Sprite *sprite)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
{
+78 -39
View File
@@ -15,60 +15,99 @@
#include "constants/songs.h"
#include "constants/weather.h"
static void AnimBlackSmoke(struct Sprite *);
static void AnimBlackSmoke_Step(struct Sprite *);
static void AnimWhiteHalo(struct Sprite *);
static void AnimWhiteHalo_Step1(struct Sprite *);
static void AnimWhiteHalo_Step2(struct Sprite *);
static void AnimMeanLookEye(struct Sprite *);
static void AnimMeanLookEye_Step1(struct Sprite *);
static void AnimMeanLookEye_Step2(struct Sprite *);
static void AnimMeanLookEye_Step3(struct Sprite *);
static void AnimMeanLookEye_Step4(struct Sprite *);
static void SetPsychicBackground_Step(u8);
static void FadeScreenToWhite_Step(u8);
static void AnimSpikes(struct Sprite *);
static void AnimSpikes_Step1(struct Sprite *);
static void AnimSpikes_Step2(struct Sprite *);
static void AnimSpotlight(struct Sprite *);
static void AnimSpotlight_Step1(struct Sprite *);
static void AnimSpotlight_Step2(struct Sprite *);
static void AnimClappingHand(struct Sprite *);
static void AnimClappingHand_Step(struct Sprite *);
static void AnimClappingHand2(struct Sprite *);
static void AnimRapidSpin(struct Sprite *);
static void AnimRapidSpin_Step(struct Sprite *);
static void RapinSpinMonElevation_Step(u8);
static void TormentAttacker_Step(u8);
static void TormentAttacker_Callback(struct Sprite *);
static void AnimWishStar(struct Sprite *);
static void AnimWishStar_Step(struct Sprite *);
static void AnimMiniTwinklingStar(struct Sprite *);
static void AnimMiniTwinklingStar_Step(struct Sprite *);
static void AnimGreenStar(struct Sprite *);
static void AnimGreenStar_Step1(struct Sprite *);
static void AnimGreenStar_Step2(struct Sprite *);
static void AnimGreenStar_Callback(struct Sprite *);
static void AnimTask_RockMonBackAndForth_Step(u8);
static void AnimSweetScentPetal(struct Sprite *);
static void AnimSweetScentPetal_Step(struct Sprite *);
static void AnimTask_FlailMovement_Step(u8);
static void AnimFlatterConfetti(struct Sprite *);
static void AnimFlatterConfetti_Step(struct Sprite *);
static void AnimFlatterSpotlight(struct Sprite *);
static void AnimFlatterSpotlight_Step(struct Sprite *);
static void AnimReversalOrb(struct Sprite *);
static void AnimReversalOrb_Step(struct Sprite *);
static void AnimTask_RolePlaySilhouette_Step1(u8);
static void AnimTask_RolePlaySilhouette_Step2(u8);
static void AnimTask_AcidArmor_Step(u8);
static void AnimTask_DeepInhale_Step(u8);
static void AnimYawnCloud(struct Sprite *);
static void AnimYawnCloud_Step(struct Sprite *);
static void AnimTask_SquishAndSweatDroplets_Step(u8);
static void CreateSweatDroplets(u8, bool8);
static void AnimTask_FacadeColorBlend_Step(u8);
static void AnimRoarNoiseLine(struct Sprite *);
static void AnimRoarNoiseLine_Step(struct Sprite *);
static void AnimTask_GlareEyeDots_Step(u8);
static void GetGlareEyeDotCoords(s16, s16, s16, s16, u8, u8, s16 *, s16 *);
static void AnimTask_BarrageBall_Step(u8);
static void AnimSmellingSaltsHand(struct Sprite *);
static void AnimSmellingSaltsHand_Step(struct Sprite *);
static void AnimTask_SmellingSaltsSquish_Step(u8);
static void AnimSmellingSaltExclamation(struct Sprite *);
static void AnimSmellingSaltExclamation_Step(struct Sprite *);
static void AnimHelpingHandClap(struct Sprite *);
static void AnimHelpingHandClap_Step(struct Sprite *);
static void AnimTask_HelpingHandAttackerMovement_Step(u8);
static void AnimForesightMagnifyingGlass(struct Sprite *);
static void AnimForesightMagnifyingGlass_Step(struct Sprite *);
static void AnimTask_MonToSubstituteDoll(u8);
static void AnimBlockX(struct Sprite *);
static void AnimBlockX_Step(struct Sprite *);
static void AnimTask_OdorSleuthMovementWaitFinish(u8);
static void MoveOdorSleuthClone(struct Sprite *);
static void AnimTask_TeeterDanceMovement_Step(u8);
static void AnimRecycle(struct Sprite *);
static void AnimRecycle_Step(struct Sprite *);
static void AnimTask_SlackOffSquish_Step(u8);
static void AnimTealAlert(struct Sprite *);
static void AnimLeer(struct Sprite *);
static void AnimLetterZ(struct Sprite *);
static void AnimFang(struct Sprite *);
static void AnimTriAttackTriangle(struct Sprite *);
static void AnimBatonPassPokeball(struct Sprite *);
static void AnimSwallowBlueOrb(struct Sprite *);
static void AnimWeakFrustrationAngerMark(struct Sprite *);
static void AnimPainSplitProjectile(struct Sprite *);
static void AnimSmokeBallEscapeCloud(struct Sprite *);
static void AnimFacadeSweatDrop(struct Sprite *);
static void AnimGlareEyeDot(struct Sprite *);
static void AnimAssistPawprint(struct Sprite *);
static void AnimMeteorMashStar(struct Sprite *);
static void AnimUnusedItemBagSteal(struct Sprite *);
static void AnimKnockOffStrike(struct Sprite *);
static const union AnimCmd sScratchAnimCmds[] =
{
@@ -1129,7 +1168,7 @@ static const union AffineAnimCmd sSlackOffSquishAffineAnimCmds[] =
AFFINEANIMCMD_END,
};
void AnimBlackSmoke(struct Sprite *sprite)
static void AnimBlackSmoke(struct Sprite *sprite)
{
sprite->x += gBattleAnimArgs[0];
sprite->y += gBattleAnimArgs[1];
@@ -1166,7 +1205,7 @@ void AnimTask_SmokescreenImpact(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void AnimWhiteHalo(struct Sprite *sprite)
static void AnimWhiteHalo(struct Sprite *sprite)
{
sprite->data[0] = 90;
sprite->callback = WaitAnimForDuration;
@@ -1193,7 +1232,7 @@ static void AnimWhiteHalo_Step2(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimTealAlert(struct Sprite *sprite)
static void AnimTealAlert(struct Sprite *sprite)
{
u16 rotation;
u8 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
@@ -1213,7 +1252,7 @@ void AnimTealAlert(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
void AnimMeanLookEye(struct Sprite *sprite)
static void AnimMeanLookEye(struct Sprite *sprite)
{
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
@@ -1371,7 +1410,7 @@ static void FadeScreenToWhite_Step(u8 taskId)
DestroyTask(taskId);
}
void AnimSpikes(struct Sprite *sprite)
static void AnimSpikes(struct Sprite *sprite)
{
u16 x;
u16 y;
@@ -1409,7 +1448,7 @@ static void AnimSpikes_Step2(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimLeer(struct Sprite *sprite)
static void AnimLeer(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
@@ -1418,7 +1457,7 @@ void AnimLeer(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
void AnimLetterZ(struct Sprite *sprite)
static void AnimLetterZ(struct Sprite *sprite)
{
int var0;
@@ -1456,7 +1495,7 @@ void AnimLetterZ(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimFang(struct Sprite *sprite)
static void AnimFang(struct Sprite *sprite)
{
if (sprite->animEnded)
DestroyAnimSprite(sprite);
@@ -1482,7 +1521,7 @@ void AnimTask_IsHealingMove(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void AnimSpotlight(struct Sprite *sprite)
static void AnimSpotlight(struct Sprite *sprite)
{
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
@@ -1545,7 +1584,7 @@ static void AnimSpotlight_Step2(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimClappingHand(struct Sprite *sprite)
static void AnimClappingHand(struct Sprite *sprite)
{
if (gBattleAnimArgs[3] == 0)
{
@@ -1604,7 +1643,7 @@ static void AnimClappingHand_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimClappingHand2(struct Sprite *sprite)
static void AnimClappingHand2(struct Sprite *sprite)
{
sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
sprite->data[3] = 255;
@@ -1645,7 +1684,7 @@ void AnimTask_RemoveSpotlight(u8 taskId)
DestroyAnimVisualTask(taskId);
}
void AnimRapidSpin(struct Sprite *sprite)
static void AnimRapidSpin(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
@@ -1946,7 +1985,7 @@ static void TormentAttacker_Callback(struct Sprite *sprite)
}
}
void AnimTriAttackTriangle(struct Sprite *sprite)
static void AnimTriAttackTriangle(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
InitSpritePosToAnimAttacker(sprite, FALSE);
@@ -1992,7 +2031,7 @@ void AnimTask_DefenseCurlDeformMon(u8 taskId)
}
}
void AnimBatonPassPokeball(struct Sprite *sprite)
static void AnimBatonPassPokeball(struct Sprite *sprite)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
@@ -2035,7 +2074,7 @@ void AnimBatonPassPokeball(struct Sprite *sprite)
}
}
void AnimWishStar(struct Sprite *sprite)
static void AnimWishStar(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
sprite->x = -16;
@@ -2073,7 +2112,7 @@ static void AnimWishStar_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
void AnimMiniTwinklingStar(struct Sprite *sprite)
static void AnimMiniTwinklingStar(struct Sprite *sprite)
{
u8 rand;
s8 y;
@@ -2148,7 +2187,7 @@ void AnimTask_SpitUpDeformMon(u8 taskId)
}
}
void AnimSwallowBlueOrb(struct Sprite *sprite)
static void AnimSwallowBlueOrb(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -2363,7 +2402,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
}
}
void AnimGreenStar(struct Sprite *sprite)
static void AnimGreenStar(struct Sprite *sprite)
{
s16 xOffset;
u8 spriteId1;
@@ -2574,7 +2613,7 @@ void AnimTask_StrongFrustrationGrowAndShrink(u8 taskId)
// Animates an anger mark near the mon's head.
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
void AnimWeakFrustrationAngerMark(struct Sprite *sprite)
static void AnimWeakFrustrationAngerMark(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
@@ -2699,7 +2738,7 @@ static void AnimTask_RockMonBackAndForth_Step(u8 taskId)
// arg 0: initial y pixel offset
// arg 1: sprite anim num
// arg 2: unused
void AnimSweetScentPetal(struct Sprite *sprite)
static void AnimSweetScentPetal(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
@@ -2835,7 +2874,7 @@ static void AnimTask_FlailMovement_Step(u8 taskId)
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
// arg 2: which battler
void AnimPainSplitProjectile(struct Sprite *sprite)
static void AnimPainSplitProjectile(struct Sprite *sprite)
{
if (!sprite->data[0])
{
@@ -2931,7 +2970,7 @@ void AnimTask_PainSplitMovement(u8 taskId)
// Move a piece of confetti in a slightly-random speed across the screen.
// arg 0: which battler the confetti starts from
void AnimFlatterConfetti(struct Sprite *sprite)
static void AnimFlatterConfetti(struct Sprite *sprite)
{
u8 tileOffset;
int rand1;
@@ -2988,7 +3027,7 @@ static void AnimFlatterConfetti_Step(struct Sprite *sprite)
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
// arg 2: duration of fully-opened spotlight
void AnimFlatterSpotlight(struct Sprite *sprite)
static void AnimFlatterSpotlight(struct Sprite *sprite)
{
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
@@ -3037,7 +3076,7 @@ static void AnimFlatterSpotlight_Step(struct Sprite *sprite)
// Spins an orb around the attacking mon, while its path radius grows and shrinks.
// arg 0: duration
// arg 1: initial wave offset
void AnimReversalOrb(struct Sprite *sprite)
static void AnimReversalOrb(struct Sprite *sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
@@ -3417,7 +3456,7 @@ static void UpdateYawnCloudPosition(struct Sprite *sprite)
// Drifts a cloud in a wavy path towards the target mon.
// arg 0: which affine anim
void AnimYawnCloud(struct Sprite *sprite)
static void AnimYawnCloud(struct Sprite *sprite)
{
s16 destX = sprite->x;
s16 destY = sprite->y;
@@ -3455,7 +3494,7 @@ static void AnimYawnCloud_Step(struct Sprite *sprite)
// arg 1: initial x pixel offset
// arg 2: initial y pixel offset
// arg 3: ?
void AnimSmokeBallEscapeCloud(struct Sprite *sprite)
static void AnimSmokeBallEscapeCloud(struct Sprite *sprite)
{
sprite->data[0] = gBattleAnimArgs[3];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
@@ -3731,7 +3770,7 @@ static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets)
}
}
void AnimFacadeSweatDrop(struct Sprite *sprite)
static void AnimFacadeSweatDrop(struct Sprite *sprite)
{
sprite->x += sprite->sVelocX;
sprite->y += sprite->sVelocY;
@@ -3797,7 +3836,7 @@ void AnimTask_StatusClearedEffect(u8 taskId)
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
// arg 2: which direction (0 = upward, 1 = downward, 2 = horizontal)
void AnimRoarNoiseLine(struct Sprite *sprite)
static void AnimRoarNoiseLine(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
@@ -3978,7 +4017,7 @@ static void GetGlareEyeDotCoords(s16 startX, s16 startY, s16 endX, s16 endY, u8
*y = y2 >> 8;
}
void AnimGlareEyeDot(struct Sprite *sprite)
static void AnimGlareEyeDot(struct Sprite *sprite)
{
if (++sprite->sTimer > 36)
{
@@ -4009,7 +4048,7 @@ void AnimGlareEyeDot(struct Sprite *sprite)
// arg 2: destination x position
// arg 3: destination y position
// arg 4: duration
void AnimAssistPawprint(struct Sprite *sprite)
static void AnimAssistPawprint(struct Sprite *sprite)
{
sprite->x = gBattleAnimArgs[0];
sprite->y = gBattleAnimArgs[1];
@@ -4096,7 +4135,7 @@ static void AnimTask_BarrageBall_Step(u8 taskId)
// arg 0: which battler
// arg 1: horizontal flip
// arg 2: num squishes
void AnimSmellingSaltsHand(struct Sprite *sprite)
static void AnimSmellingSaltsHand(struct Sprite *sprite)
{
u8 battler;
@@ -4219,7 +4258,7 @@ static void AnimTask_SmellingSaltsSquish_Step(u8 taskId)
// arg 0: which mon
// arg 1: blink delay
// arg 2: number of blinks
void AnimSmellingSaltExclamation(struct Sprite *sprite)
static void AnimSmellingSaltExclamation(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
@@ -4257,7 +4296,7 @@ static void AnimSmellingSaltExclamation_Step(struct Sprite *sprite)
// Claps a hand several times.
// arg 0: which hand
// arg 1:
void AnimHelpingHandClap(struct Sprite *sprite)
static void AnimHelpingHandClap(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
@@ -4469,7 +4508,7 @@ static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId)
// Moves a magnifying glass around in straight lines.
// arg 0: magnifying glass target mon
void AnimForesightMagnifyingGlass(struct Sprite *sprite)
static void AnimForesightMagnifyingGlass(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
@@ -4615,7 +4654,7 @@ static void AnimMeteorMashStar_Step(struct Sprite *sprite)
// arg 2: destination x pixel offset
// arg 3: destination y pixel offset
// arg 4: duration
void AnimMeteorMashStar(struct Sprite *sprite)
static void AnimMeteorMashStar(struct Sprite *sprite)
{
s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
@@ -4729,7 +4768,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
// Moves down an X that flickers and disappears.
// No args.
void AnimBlockX(struct Sprite *sprite)
static void AnimBlockX(struct Sprite *sprite)
{
s16 y;
@@ -5060,7 +5099,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
}
}
void AnimUnusedItemBagSteal(struct Sprite *sprite)
static void AnimUnusedItemBagSteal(struct Sprite *sprite)
{
switch (sprite->data[7])
{
@@ -5241,7 +5280,7 @@ static void AnimKnockOffStrike_Step(struct Sprite *sprite)
// Animates a strike that swipes downard at the target mon.
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
void AnimKnockOffStrike(struct Sprite *sprite)
static void AnimKnockOffStrike(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
{
@@ -5264,7 +5303,7 @@ void AnimKnockOffStrike(struct Sprite *sprite)
// Gradually fades a rotating recyle arrow sprite in and back out.
// No args.
void AnimRecycle(struct Sprite *sprite)
static void AnimRecycle(struct Sprite *sprite)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP);
+74 -75
View File
@@ -11,29 +11,29 @@ static void AnimAirWaveCrescent(struct Sprite *sprite);
static void AnimFlyBallUp(struct Sprite *sprite);
static void AnimFlyBallAttack(struct Sprite *sprite);
static void AnimFallingFeather(struct Sprite *sprite);
static void sub_80B24C0(struct Sprite *sprite);
static void sub_80B2514(struct Sprite *sprite);
static void AnimUnusedBubbleThrow(struct Sprite *sprite);
static void AnimUnusedFeather(struct Sprite *sprite);
static void AnimWhirlwindLine(struct Sprite *sprite);
static void AnimBounceBallShrink(struct Sprite *sprite);
static void AnimBounceBallLand(struct Sprite *sprite);
static void AnimDiveBall(struct Sprite *sprite);
static void AnimDiveWaterSplash(struct Sprite *sprite);
static void AnimSprayWaterDroplet(struct Sprite *sprite);
static void sub_80B2CE4(struct Sprite *sprite);
static void AnimUnusedFlashingLight(struct Sprite *sprite);
static void AnimSkyAttackBird(struct Sprite *sprite);
static void sub_80B190C(struct Sprite *sprite);
static void sub_80B198C(u8 taskId);
static void sub_80B1A9C(struct Sprite *sprite);
static void sub_80B1BF8(struct Sprite *sprite);
static void sub_80B1CC0(struct Sprite *sprite);
static void AnimEllipticalGust_Step(struct Sprite *sprite);
static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId);
static void AnimGustToTarget_Step(struct Sprite *sprite);
static void AnimFlyBallUp_Step(struct Sprite *sprite);
static void AnimFlyBallAttack_Step(struct Sprite *sprite);
static void AnimFallingFeather_Step(struct Sprite *sprite);
static void sub_80B268C(struct Sprite *sprite);
static void sub_80B2820(struct Sprite *sprite);
static void sub_80B2A50(struct Sprite *sprite);
static void sub_80B2AB0(struct Sprite *sprite);
static void sub_80B2C88(struct Sprite *sprite);
static void sub_80B2CF8(struct Sprite *sprite);
static void sub_80B2E20(struct Sprite *sprite);
static void AnimUnusedFeather_Step(struct Sprite *sprite);
static void AnimWhirlwindLine_Step(struct Sprite *sprite);
static void AnimDiveBall_Step1(struct Sprite *sprite);
static void AnimDiveBall_Step2(struct Sprite *sprite);
static void AnimSprayWaterDroplet_Step(struct Sprite *sprite);
static void AnimUnusedFlashingLight_Step(struct Sprite *sprite);
static void AnimSkyAttackBird_Step(struct Sprite *sprite);
const struct SpriteTemplate gEllipticalGustSpriteTemplate =
{
@@ -177,10 +177,9 @@ const struct SpriteTemplate gFallingFeatherSpriteTemplate =
.callback = AnimFallingFeather,
};
// not used
static const u16 gUnknown_83E6C18[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal");
static const u16 sUnusedPal[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal");
const struct SpriteTemplate gUnknown_83E6C38 =
static const struct SpriteTemplate sUnusedBubbleThrowSpriteTemplate =
{
.tileTag = ANIM_TAG_SMALL_BUBBLES,
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
@@ -188,10 +187,10 @@ const struct SpriteTemplate gUnknown_83E6C38 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80B24C0,
.callback = AnimUnusedBubbleThrow,
};
const struct SpriteTemplate gUnknown_83E6C50 =
static const struct SpriteTemplate sUnusedFeatherSpriteTemplate =
{
.tileTag = ANIM_TAG_WHITE_FEATHER,
.paletteTag = ANIM_TAG_WHITE_FEATHER,
@@ -199,7 +198,7 @@ const struct SpriteTemplate gUnknown_83E6C50 =
.anims = sAnims_FallingFeather,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80B2514,
.callback = AnimUnusedFeather,
};
static const union AnimCmd sAnim_WhirlwindLines[] =
@@ -301,8 +300,7 @@ const struct SpriteTemplate gDiveBallSpriteTemplate =
.callback = AnimDiveBall,
};
// not used
static const union AffineAnimCmd gUnknown_83E6D58[] =
static const union AffineAnimCmd sAnim_Unused[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12),
@@ -310,10 +308,9 @@ static const union AffineAnimCmd gUnknown_83E6D58[] =
AFFINEANIMCMD_END,
};
// not used
static const union AffineAnimCmd *const gUnknown_83E6D80[] =
static const union AffineAnimCmd *const sAnims_Unused[] =
{
gUnknown_83E6D58,
sAnim_Unused,
};
const struct SpriteTemplate gDiveWaterSplashSpriteTemplate =
@@ -338,7 +335,7 @@ const struct SpriteTemplate gSprayWaterDropletSpriteTemplate =
.callback = AnimSprayWaterDroplet,
};
const struct SpriteTemplate gUnknown_83E6DAC =
static const struct SpriteTemplate sUnusedFlashingLightSpriteTemplate =
{
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
.paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
@@ -346,7 +343,7 @@ const struct SpriteTemplate gUnknown_83E6DAC =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80B2CE4,
.callback = AnimUnusedFlashingLight,
};
const struct SpriteTemplate gSkyAttackBirdSpriteTemplate =
@@ -365,11 +362,11 @@ static void AnimEllipticalGust(struct Sprite *sprite)
InitSpritePosToAnimTarget(sprite, FALSE);
sprite->y += 20;
sprite->data[1] = 191;
sprite->callback = sub_80B190C;
sprite->callback = AnimEllipticalGust_Step;
sprite->callback(sprite);
}
static void sub_80B190C(struct Sprite *sprite)
static void AnimEllipticalGust_Step(struct Sprite *sprite)
{
sprite->x2 = Sin(sprite->data[1], 32);
sprite->y2 = Cos(sprite->data[1], 8);
@@ -379,15 +376,16 @@ static void sub_80B190C(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
// Animates the palette on the gust tornado to make it look like its spinning
void AnimTask_AnimateGustTornadoPalette(u8 taskId)
{
gTasks[taskId].data[0] = gBattleAnimArgs[1];
gTasks[taskId].data[1] = gBattleAnimArgs[0];
gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST);
gTasks[taskId].func = sub_80B198C;
gTasks[taskId].func = AnimTask_AnimateGustTornadoPalette_Step;
}
static void sub_80B198C(u8 taskId)
static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId)
{
u8 data2;
u16 temp;
@@ -423,10 +421,10 @@ static void AnimGustToTarget(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
InitAnimLinearTranslation(sprite);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
StoreSpriteCallbackInData6(sprite, sub_80B1A9C);
StoreSpriteCallbackInData6(sprite, AnimGustToTarget_Step);
}
static void sub_80B1A9C(struct Sprite *sprite)
static void AnimGustToTarget_Step(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
DestroyAnimSprite(sprite);
@@ -472,11 +470,11 @@ static void AnimFlyBallUp(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->callback = sub_80B1BF8;
sprite->callback = AnimFlyBallUp_Step;
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE;
}
static void sub_80B1BF8(struct Sprite *sprite)
static void AnimFlyBallUp_Step(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -495,7 +493,7 @@ static void AnimFlyBallAttack(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->x = 272;
sprite->x = DISPLAY_WIDTH + 32;
sprite->y = -32;
StartSpriteAffineAnim(sprite, 1);
}
@@ -510,10 +508,10 @@ static void AnimFlyBallAttack(struct Sprite *sprite)
sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimLinearTranslation(sprite);
sprite->callback = sub_80B1CC0;
sprite->callback = AnimFlyBallAttack_Step;
}
static void sub_80B1CC0(struct Sprite *sprite)
static void AnimFlyBallAttack_Step(struct Sprite *sprite)
{
sprite->data[0] = 1;
AnimTranslateLinear(sprite);
@@ -524,8 +522,8 @@ static void sub_80B1CC0(struct Sprite *sprite)
sprite->data[3] &= 0xFF;
}
if (sprite->x + sprite->x2 < -32
|| sprite->x + sprite->x2 > 272
|| sprite->y + sprite->y2 > 160)
|| sprite->x + sprite->x2 > DISPLAY_WIDTH + 32
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT)
{
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
DestroyAnimSprite(sprite);
@@ -883,7 +881,7 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
}
}
static void sub_80B24C0(struct Sprite *sprite)
static void AnimUnusedBubbleThrow(struct Sprite *sprite)
{
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
@@ -891,7 +889,7 @@ static void sub_80B24C0(struct Sprite *sprite)
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
static void sub_80B2514(struct Sprite *sprite)
static void AnimUnusedFeather(struct Sprite *sprite)
{
u8 matrixNum;
s16 rn, sinVal;
@@ -935,10 +933,10 @@ static void sub_80B2514(struct Sprite *sprite)
sprite->animNum = 1;
sprite->hFlip = TRUE;
}
sprite->callback = sub_80B268C;
sprite->callback = AnimUnusedFeather_Step;
}
static void sub_80B268C(struct Sprite *sprite)
static void AnimUnusedFeather_Step(struct Sprite *sprite)
{
struct FeatherDanceData fData;
struct FeatherDanceData *tData = (struct FeatherDanceData *)sprite->data;
@@ -992,12 +990,12 @@ static void AnimWhirlwindLine(struct Sprite *sprite)
u16 arg;
u8 mult;
if (!gBattleAnimArgs[2])
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
InitSpritePosToAnimAttacker(sprite, 0);
else
InitSpritePosToAnimTarget(sprite, FALSE);
if ((!gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|| (gBattleAnimArgs[2] == 1 && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER))
if ((gBattleAnimArgs[2] == ANIM_ATTACKER && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|| (gBattleAnimArgs[2] == ANIM_TARGET && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER))
sprite->x += 8;
SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
sprite->x -= 32;
@@ -1007,10 +1005,10 @@ static void AnimWhirlwindLine(struct Sprite *sprite)
sprite->x2 += mult * arg;
sprite->data[0] = arg;
sprite->data[7] = gBattleAnimArgs[3];
sprite->callback = sub_80B2820;
sprite->callback = AnimWhirlwindLine_Step;
}
static void sub_80B2820(struct Sprite *sprite)
static void AnimWhirlwindLine_Step(struct Sprite *sprite)
{
sprite->x2 += sprite->data[1] >> 8;
if (++sprite->data[0] == 6)
@@ -1064,7 +1062,7 @@ static void AnimBounceBallLand(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
sprite->y2 = -sprite->y - 32;
++sprite->data[0];
break;
@@ -1089,11 +1087,11 @@ static void AnimDiveBall(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->callback = sub_80B2A50;
sprite->callback = AnimDiveBall_Step1;
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE;
}
static void sub_80B2A50(struct Sprite *sprite)
static void AnimDiveBall_Step1(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -1108,11 +1106,11 @@ static void sub_80B2A50(struct Sprite *sprite)
{
sprite->invisible = TRUE;
if (sprite->data[3]++ > 20)
sprite->callback = sub_80B2AB0;
sprite->callback = AnimDiveBall_Step2;
}
}
static void sub_80B2AB0(struct Sprite *sprite)
static void AnimDiveBall_Step2(struct Sprite *sprite)
{
sprite->y2 += sprite->data[2] >> 8;
if (sprite->y + sprite->y2 > -32)
@@ -1131,13 +1129,13 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
case 0:
if (!gBattleAnimArgs[0])
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
}
else
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
}
sprite->data[1] = 512;
TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
@@ -1166,6 +1164,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
}
}
// Launches a water droplet away from the specified battler. Used by Astonish and Dive
static void AnimSprayWaterDroplet(struct Sprite *sprite)
{
s32 v1 = 0x1FF & Random();
@@ -1185,18 +1184,18 @@ static void AnimSprayWaterDroplet(struct Sprite *sprite)
sprite->oam.matrixNum = ST_OAM_HFLIP;
if (gBattleAnimArgs[1] == 0)
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 32;
}
else
{
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 32;
}
sprite->callback = sub_80B2C88;
sprite->callback = AnimSprayWaterDroplet_Step;
}
static void sub_80B2C88(struct Sprite *sprite)
static void AnimSprayWaterDroplet_Step(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -1216,14 +1215,14 @@ static void sub_80B2C88(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
static void sub_80B2CE4(struct Sprite *sprite)
static void AnimUnusedFlashingLight(struct Sprite *sprite)
{
sprite->data[6] = 0;
sprite->data[7] = 64;
sprite->callback = sub_80B2CF8;
sprite->callback = AnimUnusedFlashingLight_Step;
}
static void sub_80B2CF8(struct Sprite *sprite)
static void AnimUnusedFlashingLight_Step(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -1248,8 +1247,8 @@ static void AnimSkyAttackBird(struct Sprite *sprite)
s16 posx = sprite->x;
s16 posy = sprite->y;
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[4] = sprite->x << 4;
sprite->data[5] = sprite->y << 4;
sprite->data[6] = ((posx - sprite->x) << 4) / 12;
@@ -1257,22 +1256,22 @@ static void AnimSkyAttackBird(struct Sprite *sprite)
rotation = ArcTan2Neg(posx - sprite->x, posy - sprite->y);
rotation += 49152;
TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation);
sprite->callback = sub_80B2E20;
sprite->callback = AnimSkyAttackBird_Step;
}
static void sub_80B2E20(struct Sprite *sprite)
static void AnimSkyAttackBird_Step(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
sprite->x = sprite->data[4] >> 4;
sprite->y = sprite->data[5] >> 4;
if (sprite->x > 285 || sprite->x < -45
if (sprite->x > DISPLAY_WIDTH + 45 || sprite->x < -45
|| sprite->y > 157 || sprite->y < -45)
DestroySpriteAndMatrix(sprite);
}
// not used
static void sub_80B2E64(u8 taskId)
// Unused
static void AnimTask_SetAttackerVisibility(u8 taskId)
{
if (gBattleAnimArgs[0] == 0)
{