• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Substitute move animation

  • 47
    Posts
    5
    Years
    • Seen Jun 25, 2025
    Hello everyone,

    I'm trying to adjust the animation that plays every time your pokemon switches places with the substitute doll or vice-versa.
    It would be neat if the transition happened faster, like if there was a way to make both sprites move at the same time as they switch.

    I think I found the animation here:

    Does anyone have advice for me on this one?
     
    Hello everyone,

    I'm trying to adjust the animation that plays every time your pokemon switches places with the substitute doll or vice-versa.
    It would be neat if the transition happened faster, like if there was a way to make both sprites move at the same time as they switch.

    I think I found the animation here:

    Does anyone have advice for me on this one?
    The code you linked is for the animation of using the move substitute. For the place switching animation you'd want to look at AnimTask_SwapMonSpriteToFromSubstitute.

    In that function's switch statement case 0 slides the sprite off-screen, case 1 swaps the sprite and case 2 slides the sprite back on-screen. Since the substitute doll and mon are the same sprite object, showing them both at the same time would require changing how the animation is implemented. A simpler way to speed it up is to just increase the speed at which the sprite slides:
    Diff:
    diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c
    index 956020b30..fd4ec6d58 100755
    --- a/src/battle_anim_throw.c
    +++ b/src/battle_anim_throw.c
    @@ -2121,7 +2121,7 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId)
         {
         case 0:
             gTasks[taskId].data[11] = gBattleAnimArgs[0];
    -        gTasks[taskId].data[0] += 0x500;
    +        gTasks[taskId].data[0] += 0x1400;
             if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
                 gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8;
             else
    @@ -2137,7 +2137,7 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId)
             gTasks[taskId].data[10]++;
             break;
         case 2:
    -        gTasks[taskId].data[0] += 0x500;
    +        gTasks[taskId].data[0] += 0x1400;
             if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
                 gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8;
             else
    [PokeCommunity.com] Substitute move animation
     
    Back
    Top