Document throwing pokeball

continue

Document more

Doc more funcs

Remove workspace

Document shiny stars

Document PokeBlock

Clean up

Clean more
This commit is contained in:
hondew 2020-08-04 22:37:52 -04:00
parent 2e077f09e4
commit 328aecc96e
19 changed files with 691 additions and 463 deletions

View File

@ -0,0 +1,3 @@
gMonShrinkDuration
gMonShrinkDelta
gMonShrinkDistance

View File

@ -1,3 +0,0 @@
gUnknown_030062DC
gUnknown_030062E0
gUnknown_030062E4

View File

@ -10741,7 +10741,7 @@ BallThrowTrainerBlock:
Special_SafariBallThrow: Special_SafariBallThrow:
createvisualtask AnimTask_LoadBallGfx, 2 createvisualtask AnimTask_LoadBallGfx, 2
delay 0 delay 0
createvisualtask AnimTask_ThrowBallSpecial, 2 createvisualtask AnimTask_ThrowBall_StandingTrainer, 2
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_FreeBallGfx, 2 createvisualtask AnimTask_FreeBallGfx, 2
end end

View File

@ -523,14 +523,14 @@ struct BattleAnimationInfo
u8 field_7; u8 field_7;
u8 ballThrowCaseId; u8 ballThrowCaseId;
u8 field_9_x1:1; u8 field_9_x1:1;
u8 field_9_x2:1; u8 wildMonInvisible:1;
u8 field_9_x1C:3; u8 field_9_x1C:3;
u8 field_9_x20:1; u8 field_9_x20:1;
u8 field_9_x40:1; u8 field_9_x40:1;
u8 field_9_x80:1; u8 field_9_x80:1;
u8 field_A; u8 numBallParticles;
u8 field_B; u8 field_B;
s16 field_C; s16 ballSubpx;
u8 field_E; u8 field_E;
u8 field_F; u8 field_F;
}; };

View File

@ -207,8 +207,8 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
// battle_anim_ground.c // battle_anim_ground.c
void AnimTask_HorizontalShake(u8 taskId); void AnimTask_HorizontalShake(u8 taskId);
// battle_anim_special.c // battle_anim_pokeball.c
void sub_8172EF0(u8 battler, struct Pokemon *mon); void TryShinyAnimation(u8 battler, struct Pokemon *mon);
u8 ItemIdToBallId(u16 itemId); u8 ItemIdToBallId(u16 itemId);
u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId); u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId);

View File

@ -18,6 +18,14 @@ enum
POKEBALL_COUNT POKEBALL_COUNT
}; };
enum {
BALL_AFFINE_ANIM_0,
BALL_ROTATE_RIGHT,
BALL_ROTATE_LEFT,
BALL_AFFINE_ANIM_3,
BALL_AFFINE_ANIM_4
};
extern const struct SpriteTemplate gBallSpriteTemplates[]; extern const struct SpriteTemplate gBallSpriteTemplates[];
#define POKEBALL_PLAYER_SENDOUT 0xFF #define POKEBALL_PLAYER_SENDOUT 0xFF

View File

@ -258,7 +258,7 @@ SECTIONS {
src/intro.o(.text); src/intro.o(.text);
src/reset_save_heap.o(.text); src/reset_save_heap.o(.text);
src/field_region_map.o(.text); src/field_region_map.o(.text);
src/battle_anim_special.o(.text); src/battle_anim_pokeball.o(.text);
src/hall_of_fame.o(.text); src/hall_of_fame.o(.text);
src/credits.o(.text); src/credits.o(.text);
src/lottery_corner.o(.text); src/lottery_corner.o(.text);
@ -616,7 +616,7 @@ SECTIONS {
src/player_pc.o(.rodata); src/player_pc.o(.rodata);
src/intro.o(.rodata); src/intro.o(.rodata);
src/field_region_map.o(.rodata); src/field_region_map.o(.rodata);
src/battle_anim_special.o(.rodata); src/battle_anim_pokeball.o(.rodata);
src/hall_of_fame.o(.rodata); src/hall_of_fame.o(.rodata);
src/credits.o(.rodata); src/credits.o(.rodata);
src/lottery_corner.o(.rodata); src/lottery_corner.o(.rodata);

File diff suppressed because it is too large Load Diff

View File

@ -281,14 +281,14 @@ static void sub_8064734(void)
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{ {
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1) && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1)
{ {
sub_8172EF0(BATTLE_PARTNER(gActiveBattler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]); TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]);
} }
@ -369,7 +369,7 @@ static void sub_8064B04(void)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
{ {
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
else else
{ {
@ -497,7 +497,7 @@ static void sub_8064F40(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
{ {
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy

View File

@ -383,7 +383,7 @@ static void sub_814B69C(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{ {
sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy

View File

@ -290,9 +290,9 @@ static void sub_805F560(void)
bool32 r10 = FALSE; bool32 r10 = FALSE;
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1) if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80)
@ -369,7 +369,7 @@ static void sub_805F560(void)
static void sub_805F994(void) static void sub_805F994(void)
{ {
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{ {
@ -481,7 +481,7 @@ static void sub_805FD00(void)
static void sub_805FDF0(void) static void sub_805FDF0(void)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)

View File

@ -977,9 +977,9 @@ static void sub_8058B40(void)
bool32 r8 = FALSE; bool32 r8 = FALSE;
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{ {
@ -1082,7 +1082,7 @@ static void sub_805902C(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{ {
sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy

View File

@ -568,7 +568,7 @@ static void sub_81BBAE8(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{ {
sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy

View File

@ -263,9 +263,9 @@ static void sub_818686C(void)
bool32 r8 = FALSE; bool32 r8 = FALSE;
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{ {
@ -350,7 +350,7 @@ static void sub_8186C48(void)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
{ {
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
else else
{ {
@ -479,7 +479,7 @@ static void sub_8187084(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
{ {
sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy

View File

@ -280,12 +280,12 @@ static void sub_8189D40(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{ {
sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{ {
sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
} }
} }
@ -463,7 +463,7 @@ static void sub_818A470(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{ {
sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
} }
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy

View File

@ -286,9 +286,9 @@ static void CompleteOnChosenItem(void)
static void sub_816864C(void) static void sub_816864C(void)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive

View File

@ -10191,6 +10191,7 @@ static void Cmd_handleballthrow(void)
else // not caught else // not caught
{ {
gBattleCommunication[MULTISTRING_CHOOSER] = shakes; gBattleCommunication[MULTISTRING_CHOOSER] = shakes;
// Maybe inject SpriteCB_TestBallThrow here
gBattlescriptCurrInstr = BattleScript_ShakeBallThrow; gBattlescriptCurrInstr = BattleScript_ShakeBallThrow;
} }
} }

View File

@ -166,43 +166,43 @@ static const union AnimCmd *const sBallAnimSequences[] =
sBallAnimSeq6, sBallAnimSeq6,
}; };
static const union AffineAnimCmd sBallAffineAnimSeq0[] = static const union AffineAnimCmd sAffineAnim_BallRotate_0[] =
{ {
AFFINEANIMCMD_FRAME(0, 0, 0, 1), AFFINEANIMCMD_FRAME(0, 0, 0, 1),
AFFINEANIMCMD_JUMP(0), AFFINEANIMCMD_JUMP(0),
}; };
static const union AffineAnimCmd sBallAffineAnimSeq1[] = static const union AffineAnimCmd sAffineAnim_BallRotate_Right[] =
{ {
AFFINEANIMCMD_FRAME(0, 0, -3, 1), AFFINEANIMCMD_FRAME(0, 0, -3, 1),
AFFINEANIMCMD_JUMP(0), AFFINEANIMCMD_JUMP(0),
}; };
static const union AffineAnimCmd sBallAffineAnimSeq2[] = static const union AffineAnimCmd sAffineAnim_BallRotate_Left[] =
{ {
AFFINEANIMCMD_FRAME(0, 0, 3, 1), AFFINEANIMCMD_FRAME(0, 0, 3, 1),
AFFINEANIMCMD_JUMP(0), AFFINEANIMCMD_JUMP(0),
}; };
static const union AffineAnimCmd sBallAffineAnimSeq3[] = static const union AffineAnimCmd sAffineAnim_BallRotate_3[] =
{ {
AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_END, AFFINEANIMCMD_END,
}; };
static const union AffineAnimCmd sBallAffineAnimSeq4[] = static const union AffineAnimCmd sAffineAnim_BallRotate_4[] =
{ {
AFFINEANIMCMD_FRAME(0, 0, 25, 1), AFFINEANIMCMD_FRAME(0, 0, 25, 1),
AFFINEANIMCMD_JUMP(0), AFFINEANIMCMD_JUMP(0),
}; };
static const union AffineAnimCmd *const sBallAffineAnimSequences[] = static const union AffineAnimCmd *const sAffineAnim_BallRotate[] =
{ {
sBallAffineAnimSeq0, [BALL_AFFINE_ANIM_0] = sAffineAnim_BallRotate_0,
sBallAffineAnimSeq1, [BALL_ROTATE_RIGHT] = sAffineAnim_BallRotate_Right,
sBallAffineAnimSeq2, [BALL_ROTATE_LEFT] = sAffineAnim_BallRotate_Left,
sBallAffineAnimSeq3, [BALL_AFFINE_ANIM_3] = sAffineAnim_BallRotate_3,
sBallAffineAnimSeq4, [BALL_AFFINE_ANIM_4] = sAffineAnim_BallRotate_4,
}; };
const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
@ -213,7 +213,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -222,7 +222,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -231,7 +231,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -240,7 +240,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -249,7 +249,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -258,7 +258,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -267,7 +267,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -276,7 +276,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -285,7 +285,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -294,7 +294,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -303,7 +303,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
{ {
@ -312,7 +312,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.oam = &sBallOamData, .oam = &sBallOamData,
.anims = sBallAnimSequences, .anims = sBallAnimSequences,
.images = NULL, .images = NULL,
.affineAnims = sBallAffineAnimSequences, .affineAnims = sAffineAnim_BallRotate,
.callback = SpriteCB_TestBallThrow, .callback = SpriteCB_TestBallThrow,
}, },
}; };
@ -446,6 +446,7 @@ static void sub_80756D4(struct Sprite *sprite)
sprite->callback = sub_80756E0; sprite->callback = sub_80756E0;
} }
// Start something for battler
static void sub_80756E0(struct Sprite *sprite) static void sub_80756E0(struct Sprite *sprite)
{ {
if (++sprite->data[5] == 10) if (++sprite->data[5] == 10)
@ -458,6 +459,7 @@ static void sub_80756E0(struct Sprite *sprite)
} }
} }
// Shrink player
static void sub_807574C(struct Sprite *sprite) static void sub_807574C(struct Sprite *sprite)
{ {
sprite->data[5]++; sprite->data[5]++;
@ -738,7 +740,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
StartSpriteAnim(sprite, 1); StartSpriteAnim(sprite, 1);
ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId)); ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId));
AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId); AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
sprite->data[0] = LaunchBallFadeMonTask(1, sprite->sBattler, 14, ballId); sprite->data[0] = LaunchBallFadeMonTask(TRUE, sprite->sBattler, 14, ballId);
sprite->callback = HandleBallAnimEnd; sprite->callback = HandleBallAnimEnd;
if (gMain.inBattle) if (gMain.inBattle)

View File

@ -63,7 +63,7 @@ gReservedSpritePaletteCount:
.include "save.o" .include "save.o"
.include "battle_tower.o" .include "battle_tower.o"
.include "intro.o" .include "intro.o"
.include "battle_anim_special.o" .include "battle_anim_pokeball.o"
.include "battle_factory_screen.o" .include "battle_factory_screen.o"
.include "apprentice.o" .include "apprentice.o"