From 1e48e1ea1480d18ac6cba51021b85e229c87578e Mon Sep 17 00:00:00 2001 From: Hedara Date: Fri, 17 Jan 2025 10:50:21 +0100 Subject: [PATCH 1/2] Fixed trainerslide animation --- src/battle_controllers.c | 107 ++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 727bc8e27fb..508885d2425 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -26,6 +26,7 @@ #include "constants/abilities.h" #include "constants/songs.h" +static EWRAM_DATA u8 trainerSlideSpriteIds[MAX_BATTLERS_COUNT]; static EWRAM_DATA u8 sLinkSendTaskId = 0; static EWRAM_DATA u8 sLinkReceiveTaskId = 0; EWRAM_DATA struct UnusedControllerStruct gUnusedControllerStruct = {}; // Debug? Unused code that writes to it, never read @@ -2258,12 +2259,12 @@ static void Controller_DoMoveAnimation(u32 battler) static void Controller_HandleTrainerSlideBack(u32 battler) { - if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy) + if (gSprites[trainerSlideSpriteIds[battler]].callback == SpriteCallbackDummy) { if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - FreeTrainerFrontPicPalette(gSprites[gBattlerSpriteIds[battler]].oam.affineParam); - FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[battler]]); - DestroySprite(&gSprites[gBattlerSpriteIds[battler]]); + FreeTrainerFrontPicPalette(gSprites[trainerSlideSpriteIds[battler]].oam.affineParam); + FreeSpriteOamMatrix(&gSprites[trainerSlideSpriteIds[battler]]); + DestroySprite(&gSprites[trainerSlideSpriteIds[battler]]); BattleControllerComplete(battler); } } @@ -2305,7 +2306,7 @@ static void Controller_WaitForStatusAnimation(u32 battler) static void Controller_WaitForTrainerPic(u32 battler) { - if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy) + if (gSprites[trainerSlideSpriteIds[battler]].callback == SpriteCallbackDummy) BattleControllerComplete(battler); } @@ -2495,18 +2496,18 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is if (GetBattlerSide(battler) == B_SIDE_OPPONENT) // Always the front sprite for the opponent. { DecompressTrainerFrontPic(trainerPicId, battler); - SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); + SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(battler)); if (subpriority == -1) subpriority = GetBattlerSpriteSubpriority(battler); - gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, + trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, subpriority); - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); - gSprites[gBattlerSpriteIds[battler]].x2 = -DISPLAY_WIDTH; - gSprites[gBattlerSpriteIds[battler]].sSpeedX = 2; - gSprites[gBattlerSpriteIds[battler]].oam.affineParam = trainerPicId; + gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); + gSprites[trainerSlideSpriteIds[battler]].x2 = -DISPLAY_WIDTH; + gSprites[trainerSlideSpriteIds[battler]].sSpeedX = 2; + gSprites[trainerSlideSpriteIds[battler]].oam.affineParam = trainerPicId; } else // Player's side { @@ -2516,15 +2517,15 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(battler)); if (subpriority == -1) subpriority = GetBattlerSpriteSubpriority(battler); - gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, + trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, subpriority); - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); - gSprites[gBattlerSpriteIds[battler]].oam.affineMode = ST_OAM_AFFINE_OFF; - gSprites[gBattlerSpriteIds[battler]].hFlip = 1; - gSprites[gBattlerSpriteIds[battler]].y2 = 48; + gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); + gSprites[trainerSlideSpriteIds[battler]].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[trainerSlideSpriteIds[battler]].hFlip = 1; + gSprites[trainerSlideSpriteIds[battler]].y2 = 48; } else { @@ -2532,20 +2533,20 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); if (subpriority == -1) subpriority = GetBattlerSpriteSubpriority(battler); - gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, + trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, subpriority); - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; + gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = battler; } - gSprites[gBattlerSpriteIds[battler]].x2 = DISPLAY_WIDTH; - gSprites[gBattlerSpriteIds[battler]].sSpeedX = -2; + gSprites[trainerSlideSpriteIds[battler]].x2 = DISPLAY_WIDTH; + gSprites[trainerSlideSpriteIds[battler]].sSpeedX = -2; } if (B_FAST_INTRO_NO_SLIDE || gTestRunnerHeadless) - gSprites[gBattlerSpriteIds[battler]].callback = SpriteCB_TrainerSpawn; + gSprites[trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSpawn; else - gSprites[gBattlerSpriteIds[battler]].callback = SpriteCB_TrainerSlideIn; + gSprites[trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSlideIn; gBattlerControllerFuncs[battler] = Controller_WaitForTrainerPic; } @@ -2556,26 +2557,26 @@ void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId) { DecompressTrainerBackPic(trainerPicId, battler); SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); - gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, + trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 80, (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80, 30); - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; - gSprites[gBattlerSpriteIds[battler]].x2 = -96; - gSprites[gBattlerSpriteIds[battler]].sSpeedX = 2; + gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = battler; + gSprites[trainerSlideSpriteIds[battler]].x2 = -96; + gSprites[trainerSlideSpriteIds[battler]].sSpeedX = 2; } else { DecompressTrainerFrontPic(trainerPicId, battler); - SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); - gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 176, 40, 30); - gSprites[gBattlerSpriteIds[battler]].oam.affineParam = trainerPicId; - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); - gSprites[gBattlerSpriteIds[battler]].x2 = 96; - gSprites[gBattlerSpriteIds[battler]].x += 32; - gSprites[gBattlerSpriteIds[battler]].sSpeedX = -2; + SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(battler)); + trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 176, 40, 0); + gSprites[trainerSlideSpriteIds[battler]].oam.affineParam = trainerPicId; + gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); + gSprites[trainerSlideSpriteIds[battler]].x2 = 96; + gSprites[trainerSlideSpriteIds[battler]].x += 32; + gSprites[trainerSlideSpriteIds[battler]].sSpeedX = -2; } - gSprites[gBattlerSpriteIds[battler]].callback = SpriteCB_TrainerSlideIn; + gSprites[trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSlideIn; gBattlerControllerFuncs[battler] = Controller_WaitForTrainerPic; } @@ -2586,14 +2587,14 @@ void BtlController_HandleTrainerSlideBack(u32 battler, s16 data0, bool32 startAn { u32 side = GetBattlerSide(battler); - SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[battler]]); - gSprites[gBattlerSpriteIds[battler]].data[0] = data0; - gSprites[gBattlerSpriteIds[battler]].data[2] = (side == B_SIDE_PLAYER) ? -40 : 280; - gSprites[gBattlerSpriteIds[battler]].data[4] = gSprites[gBattlerSpriteIds[battler]].y; - gSprites[gBattlerSpriteIds[battler]].callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[battler]], SpriteCallbackDummy); + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[trainerSlideSpriteIds[battler]]); + gSprites[trainerSlideSpriteIds[battler]].data[0] = data0; + gSprites[trainerSlideSpriteIds[battler]].data[2] = (side == B_SIDE_PLAYER) ? -40 : 280; + gSprites[trainerSlideSpriteIds[battler]].data[4] = gSprites[trainerSlideSpriteIds[battler]].y; + gSprites[trainerSlideSpriteIds[battler]].callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(&gSprites[trainerSlideSpriteIds[battler]], SpriteCallbackDummy); if (startAnim) - StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 1); + StartSpriteAnim(&gSprites[trainerSlideSpriteIds[battler]], 1); gBattlerControllerFuncs[battler] = Controller_HandleTrainerSlideBack; } @@ -2887,34 +2888,34 @@ void BtlController_HandleIntroTrainerBallThrow(u32 battler, u16 tagTrainerPal, c u8 paletteNum, taskId; u32 side = GetBattlerSide(battler); - SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[battler]]); + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[trainerSlideSpriteIds[battler]]); if (side == B_SIDE_PLAYER) { - gSprites[gBattlerSpriteIds[battler]].data[0] = 50; - gSprites[gBattlerSpriteIds[battler]].data[2] = -40; + gSprites[trainerSlideSpriteIds[battler]].data[0] = 50; + gSprites[trainerSlideSpriteIds[battler]].data[2] = -40; } else { - gSprites[gBattlerSpriteIds[battler]].data[0] = 35; - gSprites[gBattlerSpriteIds[battler]].data[2] = 280; + gSprites[trainerSlideSpriteIds[battler]].data[0] = 35; + gSprites[trainerSlideSpriteIds[battler]].data[2] = 280; } - gSprites[gBattlerSpriteIds[battler]].data[4] = gSprites[gBattlerSpriteIds[battler]].y; - gSprites[gBattlerSpriteIds[battler]].callback = StartAnimLinearTranslation; - gSprites[gBattlerSpriteIds[battler]].sBattlerId = battler; + gSprites[trainerSlideSpriteIds[battler]].data[4] = gSprites[trainerSlideSpriteIds[battler]].y; + gSprites[trainerSlideSpriteIds[battler]].callback = StartAnimLinearTranslation; + gSprites[trainerSlideSpriteIds[battler]].sBattlerId = battler; if (side == B_SIDE_PLAYER) { - StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[battler]], SpriteCB_FreePlayerSpriteLoadMonSprite); - StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], ShouldDoSlideInAnim() ? 2 : 1); + StoreSpriteCallbackInData6(&gSprites[trainerSlideSpriteIds[battler]], SpriteCB_FreePlayerSpriteLoadMonSprite); + StartSpriteAnim(&gSprites[trainerSlideSpriteIds[battler]], ShouldDoSlideInAnim() ? 2 : 1); paletteNum = AllocSpritePalette(tagTrainerPal); LoadCompressedPalette(trainerPal, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = paletteNum; + gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = paletteNum; } else { - StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[battler]], SpriteCB_FreeOpponentSprite); + StoreSpriteCallbackInData6(&gSprites[trainerSlideSpriteIds[battler]], SpriteCB_FreeOpponentSprite); } taskId = CreateTask(Task_StartSendOutAnim, 5); From a30d4531dbf99461ab418d5a681ac661d1552291 Mon Sep 17 00:00:00 2001 From: Hedara Date: Fri, 17 Jan 2025 11:01:23 +0100 Subject: [PATCH 2/2] Moved sprite Ids to the battlestruct --- include/battle.h | 1 + include/config/battle.h | 3 +- src/battle_controllers.c | 103 +++++++++++++++++++-------------------- 3 files changed, 53 insertions(+), 54 deletions(-) diff --git a/include/battle.h b/include/battle.h index c762e7f766b..10724041ca2 100644 --- a/include/battle.h +++ b/include/battle.h @@ -832,6 +832,7 @@ struct BattleStruct u8 padding:7; u8 usedEjectItem; u8 usedMicleBerry; + u8 trainerSlideSpriteIds[MAX_BATTLERS_COUNT]; }; // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, diff --git a/include/config/battle.h b/include/config/battle.h index cdb0caacfee..24cb9907f8a 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -290,7 +290,6 @@ #define B_SHOW_TYPES SHOW_TYPES_NEVER // When defined as SHOW_TYPES_ALWAYS, after selecting "Fight" in battle, the types of all Pokemon are revealed. Whe defined as SHOW_TYPES_OWN, types are only revealed if the player owns the mon in question. // Pokémon battle sprite settings -#define B_ENEMY_MON_SHADOW_STYLE GEN_3 // In Gen4+, all enemy Pokemon will have a shadow drawn beneath them. - // Currently Gen4+ shadows don't properly work with Trainerslides +#define B_ENEMY_MON_SHADOW_STYLE GEN_LATEST // In Gen4+, all enemy Pokemon will have a shadow drawn beneath them. #endif // GUARD_CONFIG_BATTLE_H diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 508885d2425..cb794abacfa 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -26,7 +26,6 @@ #include "constants/abilities.h" #include "constants/songs.h" -static EWRAM_DATA u8 trainerSlideSpriteIds[MAX_BATTLERS_COUNT]; static EWRAM_DATA u8 sLinkSendTaskId = 0; static EWRAM_DATA u8 sLinkReceiveTaskId = 0; EWRAM_DATA struct UnusedControllerStruct gUnusedControllerStruct = {}; // Debug? Unused code that writes to it, never read @@ -2259,12 +2258,12 @@ static void Controller_DoMoveAnimation(u32 battler) static void Controller_HandleTrainerSlideBack(u32 battler) { - if (gSprites[trainerSlideSpriteIds[battler]].callback == SpriteCallbackDummy) + if (gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback == SpriteCallbackDummy) { if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - FreeTrainerFrontPicPalette(gSprites[trainerSlideSpriteIds[battler]].oam.affineParam); - FreeSpriteOamMatrix(&gSprites[trainerSlideSpriteIds[battler]]); - DestroySprite(&gSprites[trainerSlideSpriteIds[battler]]); + FreeTrainerFrontPicPalette(gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.affineParam); + FreeSpriteOamMatrix(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]]); + DestroySprite(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]]); BattleControllerComplete(battler); } } @@ -2306,7 +2305,7 @@ static void Controller_WaitForStatusAnimation(u32 battler) static void Controller_WaitForTrainerPic(u32 battler) { - if (gSprites[trainerSlideSpriteIds[battler]].callback == SpriteCallbackDummy) + if (gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback == SpriteCallbackDummy) BattleControllerComplete(battler); } @@ -2499,15 +2498,15 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(battler)); if (subpriority == -1) subpriority = GetBattlerSpriteSubpriority(battler); - trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, + gBattleStruct->trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, subpriority); - gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); - gSprites[trainerSlideSpriteIds[battler]].x2 = -DISPLAY_WIDTH; - gSprites[trainerSlideSpriteIds[battler]].sSpeedX = 2; - gSprites[trainerSlideSpriteIds[battler]].oam.affineParam = trainerPicId; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].x2 = -DISPLAY_WIDTH; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].sSpeedX = 2; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.affineParam = trainerPicId; } else // Player's side { @@ -2517,15 +2516,15 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(battler)); if (subpriority == -1) subpriority = GetBattlerSpriteSubpriority(battler); - trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, + gBattleStruct->trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, subpriority); - gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); - gSprites[trainerSlideSpriteIds[battler]].oam.affineMode = ST_OAM_AFFINE_OFF; - gSprites[trainerSlideSpriteIds[battler]].hFlip = 1; - gSprites[trainerSlideSpriteIds[battler]].y2 = 48; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.affineMode = ST_OAM_AFFINE_OFF; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].hFlip = 1; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].y2 = 48; } else { @@ -2533,20 +2532,20 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); if (subpriority == -1) subpriority = GetBattlerSpriteSubpriority(battler); - trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, + gBattleStruct->trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, subpriority); - gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = battler; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = battler; } - gSprites[trainerSlideSpriteIds[battler]].x2 = DISPLAY_WIDTH; - gSprites[trainerSlideSpriteIds[battler]].sSpeedX = -2; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].x2 = DISPLAY_WIDTH; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].sSpeedX = -2; } if (B_FAST_INTRO_NO_SLIDE || gTestRunnerHeadless) - gSprites[trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSpawn; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSpawn; else - gSprites[trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSlideIn; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSlideIn; gBattlerControllerFuncs[battler] = Controller_WaitForTrainerPic; } @@ -2557,26 +2556,26 @@ void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId) { DecompressTrainerBackPic(trainerPicId, battler); SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); - trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, + gBattleStruct->trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 80, (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80, 30); - gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = battler; - gSprites[trainerSlideSpriteIds[battler]].x2 = -96; - gSprites[trainerSlideSpriteIds[battler]].sSpeedX = 2; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = battler; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].x2 = -96; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].sSpeedX = 2; } else { DecompressTrainerFrontPic(trainerPicId, battler); SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(battler)); - trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 176, 40, 0); - gSprites[trainerSlideSpriteIds[battler]].oam.affineParam = trainerPicId; - gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); - gSprites[trainerSlideSpriteIds[battler]].x2 = 96; - gSprites[trainerSlideSpriteIds[battler]].x += 32; - gSprites[trainerSlideSpriteIds[battler]].sSpeedX = -2; + gBattleStruct->trainerSlideSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 176, 40, 0); + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.affineParam = trainerPicId; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].x2 = 96; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].x += 32; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].sSpeedX = -2; } - gSprites[trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSlideIn; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback = SpriteCB_TrainerSlideIn; gBattlerControllerFuncs[battler] = Controller_WaitForTrainerPic; } @@ -2587,14 +2586,14 @@ void BtlController_HandleTrainerSlideBack(u32 battler, s16 data0, bool32 startAn { u32 side = GetBattlerSide(battler); - SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[trainerSlideSpriteIds[battler]]); - gSprites[trainerSlideSpriteIds[battler]].data[0] = data0; - gSprites[trainerSlideSpriteIds[battler]].data[2] = (side == B_SIDE_PLAYER) ? -40 : 280; - gSprites[trainerSlideSpriteIds[battler]].data[4] = gSprites[trainerSlideSpriteIds[battler]].y; - gSprites[trainerSlideSpriteIds[battler]].callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(&gSprites[trainerSlideSpriteIds[battler]], SpriteCallbackDummy); + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]]); + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[0] = data0; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[2] = (side == B_SIDE_PLAYER) ? -40 : 280; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[4] = gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].y; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback = StartAnimLinearTranslation; + StoreSpriteCallbackInData6(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], SpriteCallbackDummy); if (startAnim) - StartSpriteAnim(&gSprites[trainerSlideSpriteIds[battler]], 1); + StartSpriteAnim(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], 1); gBattlerControllerFuncs[battler] = Controller_HandleTrainerSlideBack; } @@ -2888,34 +2887,34 @@ void BtlController_HandleIntroTrainerBallThrow(u32 battler, u16 tagTrainerPal, c u8 paletteNum, taskId; u32 side = GetBattlerSide(battler); - SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[trainerSlideSpriteIds[battler]]); + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]]); if (side == B_SIDE_PLAYER) { - gSprites[trainerSlideSpriteIds[battler]].data[0] = 50; - gSprites[trainerSlideSpriteIds[battler]].data[2] = -40; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[0] = 50; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[2] = -40; } else { - gSprites[trainerSlideSpriteIds[battler]].data[0] = 35; - gSprites[trainerSlideSpriteIds[battler]].data[2] = 280; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[0] = 35; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[2] = 280; } - gSprites[trainerSlideSpriteIds[battler]].data[4] = gSprites[trainerSlideSpriteIds[battler]].y; - gSprites[trainerSlideSpriteIds[battler]].callback = StartAnimLinearTranslation; - gSprites[trainerSlideSpriteIds[battler]].sBattlerId = battler; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].data[4] = gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].y; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].callback = StartAnimLinearTranslation; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].sBattlerId = battler; if (side == B_SIDE_PLAYER) { - StoreSpriteCallbackInData6(&gSprites[trainerSlideSpriteIds[battler]], SpriteCB_FreePlayerSpriteLoadMonSprite); - StartSpriteAnim(&gSprites[trainerSlideSpriteIds[battler]], ShouldDoSlideInAnim() ? 2 : 1); + StoreSpriteCallbackInData6(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], SpriteCB_FreePlayerSpriteLoadMonSprite); + StartSpriteAnim(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], ShouldDoSlideInAnim() ? 2 : 1); paletteNum = AllocSpritePalette(tagTrainerPal); LoadCompressedPalette(trainerPal, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); - gSprites[trainerSlideSpriteIds[battler]].oam.paletteNum = paletteNum; + gSprites[gBattleStruct->trainerSlideSpriteIds[battler]].oam.paletteNum = paletteNum; } else { - StoreSpriteCallbackInData6(&gSprites[trainerSlideSpriteIds[battler]], SpriteCB_FreeOpponentSprite); + StoreSpriteCallbackInData6(&gSprites[gBattleStruct->trainerSlideSpriteIds[battler]], SpriteCB_FreeOpponentSprite); } taskId = CreateTask(Task_StartSendOutAnim, 5);