Battle controller opponent sync labels from emerald

This commit is contained in:
PikalaxALT
2021-03-16 08:24:53 -04:00
parent 14aa5bf52f
commit 10f0222d28
7 changed files with 72 additions and 72 deletions
+6 -6
View File
@@ -607,13 +607,13 @@ extern u8 *gLinkBattleRecvBuffer;
struct MonSpritesGfx struct MonSpritesGfx
{ {
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4]; void* sprites[MAX_BATTLERS_COUNT];
struct SpriteTemplate templates[4]; struct SpriteTemplate templates[MAX_BATTLERS_COUNT];
struct SpriteFrameImage field_74[4][4]; struct SpriteFrameImage images[MAX_BATTLERS_COUNT][4];
u8 field_F4[0x80]; u8 field_F4[0x80]; // unused
u8 *barFontGfx; u8 *barFontGfx;
void *field_178; void *field_178; // freed but never allocated
u16 *field_17C; u16 *multiUseBuffer;
}; };
extern u16 gBattle_BG0_X; extern u16 gBattle_BG0_X;
+4 -4
View File
@@ -2992,12 +2992,12 @@ void AnimTask_LoadMusicNotesPals(u8 taskId)
for (i = 1; i < 3; i++) for (i = 1; i < 3; i++)
paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i); paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i);
gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->field_17C); LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->multiUseBuffer);
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
LoadPalette(&gMonSpritesGfxPtr->field_17C[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32); LoadPalette(&gMonSpritesGfxPtr->multiUseBuffer[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
+8 -8
View File
@@ -1869,20 +1869,20 @@ u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
u16 sheet = LoadSpriteSheet(&gUnknown_83AE084[a3]); u16 sheet = LoadSpriteSheet(&gUnknown_83AE084[a3]);
u16 palette = AllocSpritePalette(gUnknown_83AE054[a3].paletteTag); u16 palette = AllocSpritePalette(gUnknown_83AE054[a3].paletteTag);
if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->field_17C == NULL) if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->multiUseBuffer == NULL)
gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
if (!isBackpic) if (!isBackpic)
{ {
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
gMonSpritesGfxPtr->field_17C, gMonSpritesGfxPtr->multiUseBuffer,
species, species,
personality, personality,
TRUE); TRUE);
else else
LoadSpecialPokePic(&gMonFrontPicTable[species], LoadSpecialPokePic(&gMonFrontPicTable[species],
gMonSpritesGfxPtr->field_17C, gMonSpritesGfxPtr->multiUseBuffer,
species, species,
personality, personality,
TRUE); TRUE);
@@ -1892,19 +1892,19 @@ u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) if (a10 == 1 || ShouldIgnoreDeoxysForm(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
gMonSpritesGfxPtr->field_17C, gMonSpritesGfxPtr->multiUseBuffer,
species, species,
personality, personality,
FALSE); FALSE);
else else
LoadSpecialPokePic(&gMonBackPicTable[species], LoadSpecialPokePic(&gMonBackPicTable[species],
gMonSpritesGfxPtr->field_17C, gMonSpritesGfxPtr->multiUseBuffer,
species, species,
personality, personality,
FALSE); FALSE);
} }
RequestDma3Copy(gMonSpritesGfxPtr->field_17C, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1); RequestDma3Copy(gMonSpritesGfxPtr->multiUseBuffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
if (!isBackpic) if (!isBackpic)
spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority); spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
else else
+4 -4
View File
@@ -839,13 +839,13 @@ void AnimTask_GetBattleTerrain(u8 taskId)
void AnimTask_AllocBackupPalBuffer(u8 taskId) void AnimTask_AllocBackupPalBuffer(u8 taskId)
{ {
gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
void AnimTask_FreeBackupPalBuffer(u8 taskId) void AnimTask_FreeBackupPalBuffer(u8 taskId)
{ {
FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
@@ -863,7 +863,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId)
paletteIndex = gBattleAnimAttacker + 16; paletteIndex = gBattleAnimAttacker + 16;
else if (gBattleAnimArgs[0] == 2) else if (gBattleAnimArgs[0] == 2)
paletteIndex = gBattleAnimTarget + 16; paletteIndex = gBattleAnimTarget + 16;
memcpy(&gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32); memcpy(&gMonSpritesGfxPtr->multiUseBuffer[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32);
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
@@ -881,7 +881,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId)
paletteIndex = gBattleAnimAttacker + 16; paletteIndex = gBattleAnimAttacker + 16;
else if (gBattleAnimArgs[0] == 2) else if (gBattleAnimArgs[0] == 2)
paletteIndex = gBattleAnimTarget + 16; paletteIndex = gBattleAnimTarget + 16;
memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], 32); memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->multiUseBuffer[gBattleAnimArgs[1] * 16], 32);
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
+40 -40
View File
@@ -83,11 +83,11 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst);
static void SetOpponentMonData(u8 monId); static void SetOpponentMonData(u8 monId);
static void DoSwitchOutAnimation(void); static void DoSwitchOutAnimation(void);
static void OpponentDoMoveAnimation(void); static void OpponentDoMoveAnimation(void);
static void sub_80362E8(void); static void SwitchIn_HandleSoundAndEnd(void);
static void sub_8037A28(u8 battlerId, bool8 dontClearSubstituteBit); static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
static void sub_8038DC4(u8 taskId); static void Task_StartSendOutAnim(u8 taskId);
static void sub_8038D90(struct Sprite *sprite); static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
static void sub_8038FBC(void); static void EndDrawPartyStatusSummary(void);
static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{ {
@@ -185,7 +185,7 @@ static void CompleteOnBattlerSpriteCallbackDummy2(void)
OpponentBufferExecCompleted(); OpponentBufferExecCompleted();
} }
static void sub_8035B58(void) static void FreeTrainerSpriteAfterSlide(void)
{ {
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{ {
@@ -197,7 +197,7 @@ static void sub_8035B58(void)
} }
} }
static void sub_8035BE8(void) static void Intro_DelayAndEnd(void)
{ {
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF) if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
{ {
@@ -206,7 +206,7 @@ static void sub_8035BE8(void)
} }
} }
static void sub_8035C30(void) static void Intro_WaitForShinyAnimAndHealthbox(void)
{ {
bool8 var = FALSE; bool8 var = FALSE;
@@ -235,11 +235,11 @@ static void sub_8035C30(void)
else else
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256); m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
gBattlerControllerFuncs[gActiveBattler] = sub_8035BE8; gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
} }
} }
static void sub_8035DF0(void) static void Intro_TryShinyAnimShowHealthbox(void)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
@@ -264,12 +264,12 @@ static void sub_8035DF0(void)
StartHealthboxSlideIn(gActiveBattler); StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 0; gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = FALSE;
gBattlerControllerFuncs[gActiveBattler] = sub_8035C30; gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForShinyAnimAndHealthbox;
} }
} }
static void sub_8035FE8(void) static void TryShinyAnimAfterMonAnim(void)
{ {
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0) && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
@@ -312,7 +312,7 @@ static void CompleteOnHealthbarDone(void)
} }
} }
static void sub_803612C(void) static void HideHealthboxAfterMonFaint(void)
{ {
if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse) if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
{ {
@@ -321,7 +321,7 @@ static void sub_803612C(void)
} }
} }
static void sub_8036170(void) static void FreeMonSpriteAfterSwitchOutAnim(void)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{ {
@@ -358,17 +358,17 @@ static void DoHitAnimBlinkSpriteEffect(void)
} }
} }
static void sub_8036278(void) static void SwitchIn_ShowSubstitute(void)
{ {
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{ {
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
gBattlerControllerFuncs[gActiveBattler] = sub_80362E8; gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
} }
} }
static void sub_80362E8(void) static void SwitchIn_HandleSoundAndEnd(void)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs()) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs())
{ {
@@ -377,7 +377,7 @@ static void sub_80362E8(void)
} }
} }
static void sub_8036334(void) static void SwitchIn_ShowHealthbox(void)
{ {
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{ {
@@ -390,11 +390,11 @@ static void sub_8036334(void)
StartHealthboxSlideIn(gActiveBattler); StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
CopyBattleSpriteInvisibility(gActiveBattler); CopyBattleSpriteInvisibility(gActiveBattler);
gBattlerControllerFuncs[gActiveBattler] = sub_8036278; gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowSubstitute;
} }
} }
static void sub_8036408(void) static void SwitchIn_TryShinyAnim(void)
{ {
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
@@ -403,7 +403,7 @@ static void sub_8036408(void)
{ {
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]); DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
gBattlerControllerFuncs[gActiveBattler] = sub_8036334; gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowHealthbox;
} }
} }
@@ -1045,18 +1045,18 @@ static void OpponentHandleLoadMonSprite(void)
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]); StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
if (!(gBattleTypeFlags & BATTLE_TYPE_GHOST)) if (!(gBattleTypeFlags & BATTLE_TYPE_GHOST))
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
gBattlerControllerFuncs[gActiveBattler] = sub_8035FE8; gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
} }
static void OpponentHandleSwitchInAnim(void) static void OpponentHandleSwitchInAnim(void)
{ {
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6; *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1]; gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
sub_8037A28(gActiveBattler, gBattleBufferA[gActiveBattler][2]); StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
gBattlerControllerFuncs[gActiveBattler] = sub_8036408; gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnim;
} }
static void sub_8037A28(u8 battlerId, bool8 dontClearSubstituteBit) static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
{ {
u16 species; u16 species;
@@ -1111,7 +1111,7 @@ static void DoSwitchOutAnimation(void)
{ {
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON); InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON);
gBattlerControllerFuncs[gActiveBattler] = sub_8036170; gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterSwitchOutAnim;
} }
break; break;
} }
@@ -1186,7 +1186,7 @@ static void OpponentHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy); StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_8035B58; gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
} }
static void OpponentHandleFaintAnimation(void) static void OpponentHandleFaintAnimation(void)
@@ -1204,7 +1204,7 @@ static void OpponentHandleFaintAnimation(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_TARGET); PlaySE12WithPanning(SE_FAINT, SOUND_PAN_TARGET);
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon; gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
gBattlerControllerFuncs[gActiveBattler] = sub_803612C; gBattlerControllerFuncs[gActiveBattler] = HideHealthboxAfterMonFaint;
} }
} }
} }
@@ -1632,16 +1632,16 @@ static void OpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8038D90); StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
taskId = CreateTask(sub_8038DC4, 5); taskId = CreateTask(Task_StartSendOutAnim, 5);
gTasks[taskId].data[0] = gActiveBattler; gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = 1; gBattleSpritesDataPtr->animationData->healthboxSlideInStarted = TRUE;
gBattlerControllerFuncs[gActiveBattler] = nullsub_17; gBattlerControllerFuncs[gActiveBattler] = nullsub_17;
} }
static void sub_8038D90(struct Sprite *sprite) static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite)
{ {
FreeTrainerFrontPicPaletteAndTile(sprite->oam.affineParam); FreeTrainerFrontPicPaletteAndTile(sprite->oam.affineParam);
sprite->oam.tileNum = sprite->data[5]; sprite->oam.tileNum = sprite->data[5];
@@ -1649,7 +1649,7 @@ static void sub_8038D90(struct Sprite *sprite)
DestroySprite(sprite); DestroySprite(sprite);
} }
static void sub_8038DC4(u8 taskId) static void Task_StartSendOutAnim(u8 taskId)
{ {
u8 savedActiveBattler = gActiveBattler; u8 savedActiveBattler = gActiveBattler;
@@ -1657,18 +1657,18 @@ static void sub_8038DC4(u8 taskId)
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{ {
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
sub_8037A28(gActiveBattler, FALSE); StartSendOutAnim(gActiveBattler, FALSE);
} }
else else
{ {
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
sub_8037A28(gActiveBattler, FALSE); StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK; gActiveBattler ^= BIT_FLANK;
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
sub_8037A28(gActiveBattler, FALSE); StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK; gActiveBattler ^= BIT_FLANK;
} }
gBattlerControllerFuncs[gActiveBattler] = sub_8035DF0; gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox;
gActiveBattler = savedActiveBattler; gActiveBattler = savedActiveBattler;
DestroyTask(taskId); DestroyTask(taskId);
} }
@@ -1701,11 +1701,11 @@ static void OpponentHandleDrawPartyStatusSummary(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
if (gBattleBufferA[gActiveBattler][2]) if (gBattleBufferA[gActiveBattler][2])
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0x5D; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0x5D;
gBattlerControllerFuncs[gActiveBattler] = sub_8038FBC; gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
} }
} }
static void sub_8038FBC(void) static void EndDrawPartyStatusSummary(void)
{ {
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 0x5C) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 0x5C)
{ {
+5 -5
View File
@@ -1017,11 +1017,11 @@ void AllocateMonSpritesGfx(void)
for (j = 0; j < 4; ++j) for (j = 0; j < 4; ++j)
{ {
gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800); gMonSpritesGfxPtr->images[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800);
gMonSpritesGfxPtr->field_74[i][j].size = 0x800; gMonSpritesGfxPtr->images[i][j].size = 0x800;
} }
gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->field_74[i]; gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->images[i];
} }
gMonSpritesGfxPtr->barFontGfx = AllocZeroed(0x1000); gMonSpritesGfxPtr->barFontGfx = AllocZeroed(0x1000);
} }
@@ -1030,8 +1030,8 @@ void FreeMonSpritesGfx(void)
{ {
if (gMonSpritesGfxPtr == NULL) if (gMonSpritesGfxPtr == NULL)
return; return;
if (gMonSpritesGfxPtr->field_17C != NULL) if (gMonSpritesGfxPtr->multiUseBuffer != NULL)
FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
if (gMonSpritesGfxPtr->field_178 != NULL) if (gMonSpritesGfxPtr->field_178 != NULL)
FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_178); FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_178);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx); FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx);
+5 -5
View File
@@ -1320,12 +1320,12 @@ static void sub_80B6BE4(u8 taskId)
break; break;
case 3: case 3:
sub_80752C8(&animBgData, 2); sub_80752C8(&animBgData, 2);
gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000); gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000);
LZDecompressWram(gBattleAnimBgTilemap_ScaryFacePlayer, gMonSpritesGfxPtr->field_17C); LZDecompressWram(gBattleAnimBgTilemap_ScaryFacePlayer, gMonSpritesGfxPtr->multiUseBuffer);
sub_80730C0(animBgData.paletteId, gMonSpritesGfxPtr->field_17C, 256, 0); sub_80730C0(animBgData.paletteId, gMonSpritesGfxPtr->multiUseBuffer, 256, 0);
CopyToBgTilemapBufferRect_ChangePalette(animBgData.bgId, gMonSpritesGfxPtr->field_17C, 0, 0, 0x20, 0x20, 0x11); CopyToBgTilemapBufferRect_ChangePalette(animBgData.bgId, gMonSpritesGfxPtr->multiUseBuffer, 0, 0, 0x20, 0x20, 0x11);
CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(2);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer);
break; break;
case 4: case 4:
++task->data[1]; ++task->data[1];