diff options
Diffstat (limited to 'src/battle_anim_utility_funcs.c')
-rw-r--r-- | src/battle_anim_utility_funcs.c | 154 |
1 files changed, 75 insertions, 79 deletions
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 53ed5698a..737b35d5c 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -29,16 +29,16 @@ static void AnimTask_HardwarePaletteFade_Step(u8); static void AnimTask_TraceMonBlended_Step(u8); static void AnimMonTrace(struct Sprite*); static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8); -static void sub_8116F04(u8); -static void sub_81170EC(u8); -static void sub_81172EC(u8); +static void StatsChangeAnimation_Step1(u8); +static void StatsChangeAnimation_Step2(u8); +static void StatsChangeAnimation_Step3(u8); static void AnimTask_Flash_Step(u8); -static void sub_81175C4(u32, u16); +static void SetPalettesToColor(u32, u16); static void AnimTask_UpdateSlidingBg(u8); -static void sub_8117A60(u8); +static void UpdateMonScrollingBgMask(u8); static void AnimTask_WaitAndRestoreVisibility(u8); -const u16 gUnknown_08597418 = RGB(31, 31, 31); +static const u16 wCurseLinesPalette[] = { RGB_WHITE }; // These belong in battle_intro.c, but putting them there causes 2 bytes of alignment padding // between the two .rodata segments. Perhaps battle_intro.c actually belongs in this file, too. @@ -47,8 +47,8 @@ const u8 gBattleAnimBgCntGet[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFS void AnimTask_BlendBattleAnimPal(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); - selectedPalettes |= sub_80A76C4((gBattleAnimArgs[0] >> 7) & 1, + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); + selectedPalettes |= GetBattleMonSpritePalettesMask((gBattleAnimArgs[0] >> 7) & 1, (gBattleAnimArgs[0] >> 8) & 1, (gBattleAnimArgs[0] >> 9) & 1, (gBattleAnimArgs[0] >> 10) & 1); @@ -62,7 +62,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) u8 animBattlers[2]; animBattlers[1] = 0xFF; - selectedPalettes = UnpackSelectedBattleAnimPalettes(1); + selectedPalettes = UnpackSelectedBattleBgPalettes(1); switch (gBattleAnimArgs[0]) { case 2: @@ -105,7 +105,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) void AnimTask_SetCamouflageBlend(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); switch (gBattleTerrain) { case BATTLE_TERRAIN_GRASS: @@ -278,7 +278,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) int spriteId, newSpriteId; u16 var0; u16 bg1Cnt; - struct BattleAnimBgData unknownStruct; + struct BattleAnimBgData animBgData; var0 = 0; gBattle_WIN0H = 0; @@ -329,11 +329,11 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) } spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); - newSpriteId = sub_80A89C8(gBattleAnimAttacker, spriteId, species); - GetDefaultBattleAnimBgData(&unknownStruct); - AnimLoadCompressedBgTilemapHandleContest(&unknownStruct, gUnknown_08C20684, 0); - AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_08C20668, unknownStruct.tilesOffset); - LoadPalette(&gUnknown_08597418, unknownStruct.paletteId * 16 + 1, 2); + newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species); + GetBattleAnimBg1Data(&animBgData); + AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleAnimMaskTilemap_Curse, 0); + AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnimMaskImage_Curse, animBgData.tilesOffset); + LoadPalette(wCurseLinesPalette, animBgData.paletteId * 16 + 1, 2); gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32; gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32; @@ -344,7 +344,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId) { - struct BattleAnimBgData unknownStruct; + struct BattleAnimBgData animBgData; struct Sprite *sprite; u16 bg1Cnt; @@ -356,7 +356,7 @@ static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId) gBattle_BG1_Y += 64; if (++gTasks[taskId].data[11] == 4) { - sub_80A477C(0); + ResetBattleAnimBg(0); gBattle_WIN0H = 0; gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR @@ -377,8 +377,8 @@ static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId) sprite = &gSprites[gTasks[taskId].data[0]]; DestroySprite(sprite); - GetDefaultBattleAnimBgData(&unknownStruct); - sub_80A6C68(unknownStruct.bgId); + GetBattleAnimBg1Data(&animBgData); + ClearBattleAnimBg(animBgData.bgId); if (gTasks[taskId].data[6] == 1) gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority++; @@ -388,7 +388,7 @@ static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId) } } -void sub_8116EB4(u8 taskId) +void InitStatsChangeAnimation(u8 taskId) { u8 i; @@ -396,10 +396,10 @@ void sub_8116EB4(u8 taskId) for (i = 0; i < 8; i++) sAnimStatsChangeData->data[i] = gBattleAnimArgs[i]; - gTasks[taskId].func = sub_8116F04; + gTasks[taskId].func = StatsChangeAnimation_Step1; } -static void sub_8116F04(u8 taskId) +static void StatsChangeAnimation_Step1(u8 taskId) { if (sAnimStatsChangeData->data[2] == 0) sAnimStatsChangeData->battler1 = gBattleAnimAttacker; @@ -450,56 +450,56 @@ static void sub_8116F04(u8 taskId) sAnimStatsChangeData->species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[sAnimStatsChangeData->battler1]], MON_DATA_SPECIES); } - gTasks[taskId].func = sub_81170EC; + gTasks[taskId].func = StatsChangeAnimation_Step2; } -static void sub_81170EC(u8 taskId) +static void StatsChangeAnimation_Step2(u8 taskId) { - struct BattleAnimBgData unknownStruct; + struct BattleAnimBgData animBgData; u8 spriteId, spriteId2; u8 battlerSpriteId; spriteId2 = 0; battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1]; - spriteId = sub_80A89C8(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species); + spriteId = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species); if (sAnimStatsChangeData->data[3]) { battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2]; - spriteId2 = sub_80A89C8(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species); + spriteId2 = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species); } - GetDefaultBattleAnimBgData(&unknownStruct); + GetBattleAnimBg1Data(&animBgData); if (sAnimStatsChangeData->data[0] == 0) - AnimLoadCompressedBgTilemapHandleContest(&unknownStruct, gBattleStatMask1_Tilemap, 0); + AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask1_Tilemap, 0); else - AnimLoadCompressedBgTilemapHandleContest(&unknownStruct, gBattleStatMask2_Tilemap, 0); + AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask2_Tilemap, 0); - AnimLoadCompressedBgGfx(unknownStruct.bgId, gBattleStatMask_Gfx, unknownStruct.tilesOffset); + AnimLoadCompressedBgGfx(animBgData.bgId, gBattleStatMask_Gfx, animBgData.tilesOffset); switch (sAnimStatsChangeData->data[1]) { case 0: - LoadCompressedPalette(gBattleStatMask2_Pal, unknownStruct.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask2_Pal, animBgData.paletteId * 16, 32); break; case 1: - LoadCompressedPalette(gBattleStatMask1_Pal, unknownStruct.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask1_Pal, animBgData.paletteId * 16, 32); break; case 2: - LoadCompressedPalette(gBattleStatMask3_Pal, unknownStruct.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask3_Pal, animBgData.paletteId * 16, 32); break; case 3: - LoadCompressedPalette(gBattleStatMask4_Pal, unknownStruct.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask4_Pal, animBgData.paletteId * 16, 32); break; case 4: - LoadCompressedPalette(gBattleStatMask6_Pal, unknownStruct.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask6_Pal, animBgData.paletteId * 16, 32); break; case 5: - LoadCompressedPalette(gBattleStatMask7_Pal, unknownStruct.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask7_Pal, animBgData.paletteId * 16, 32); break; case 6: - LoadCompressedPalette(gBattleStatMask8_Pal, unknownStruct.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask8_Pal, animBgData.paletteId * 16, 32); break; default: - LoadCompressedPalette(gBattleStatMask5_Pal, unknownStruct.paletteId * 16, 32); + LoadCompressedPalette(gBattleStatMask5_Pal, animBgData.paletteId * 16, 32); break; } @@ -532,7 +532,7 @@ static void sub_81170EC(u8 taskId) gTasks[taskId].data[3] = spriteId2; gTasks[taskId].data[6] = sAnimStatsChangeData->higherPriority; gTasks[taskId].data[7] = gBattlerSpriteIds[sAnimStatsChangeData->battler2]; - gTasks[taskId].func = sub_81172EC; + gTasks[taskId].func = StatsChangeAnimation_Step3; if (sAnimStatsChangeData->data[0] == 0) PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(-64)); @@ -540,7 +540,7 @@ static void sub_81170EC(u8 taskId) PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(-64)); } -static void sub_81172EC(u8 taskId) +static void StatsChangeAnimation_Step3(u8 taskId) { gBattle_BG1_Y += gTasks[taskId].data[1]; @@ -568,7 +568,7 @@ static void sub_81172EC(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); if (gTasks[taskId].data[12] == 0) { - sub_80A477C(0); + ResetBattleAnimBg(0); gTasks[taskId].data[15]++; } } @@ -603,12 +603,12 @@ static void sub_81172EC(u8 taskId) void AnimTask_Flash(u8 taskId) { - u32 selectedPalettes = sub_80A76C4(1, 1, 1, 1); - sub_81175C4(selectedPalettes, 0); + u32 selectedPalettes = GetBattleMonSpritePalettesMask(1, 1, 1, 1); + SetPalettesToColor(selectedPalettes, RGB_BLACK); gTasks[taskId].data[14] = selectedPalettes >> 16; - selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; - sub_81175C4(selectedPalettes, 0xFFFF); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + SetPalettesToColor(selectedPalettes, RGB_WHITEALPHA); gTasks[taskId].data[15] = selectedPalettes; gTasks[taskId].data[0] = 0; @@ -662,7 +662,7 @@ static void AnimTask_Flash_Step(u8 taskId) } } -static void sub_81175C4(u32 selectedPalettes, u16 color) +static void SetPalettesToColor(u32 selectedPalettes, u16 color) { u16 i; @@ -756,8 +756,6 @@ void AnimTask_GetTargetIsAttackerPartner(u8 taskId) DestroyAnimVisualTask(taskId); } -#define tInvisible gBattleAnimArgs[0]; - // For hiding or subsequently revealing all other battlers void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) { @@ -766,27 +764,25 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++) { if (battler != gBattleAnimAttacker && IsBattlerSpriteVisible(battler)) - gSprites[gBattlerSpriteIds[battler]].invisible = tInvisible; + gSprites[gBattlerSpriteIds[battler]].invisible = gBattleAnimArgs[0]; } DestroyAnimVisualTask(taskId); } -#undef tInvisible - -void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette) +void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette) { u16 species; u8 spriteId, spriteId2; u16 bg1Cnt; - struct BattleAnimBgData unknownStruct; + struct BattleAnimBgData animBgData; u8 battler2; spriteId2 = 0; - battler2 = BATTLE_PARTNER(battler1); + battler2 = BATTLE_PARTNER(battler); - if (IsContest() || (arg4 && !IsBattlerSpriteVisible(battler2))) - arg4 = 0; + if (IsContest() || (includePartner && !IsBattlerSpriteVisible(battler2))) + includePartner = FALSE; gBattle_WIN0H = 0; gBattle_WIN0V = 0; @@ -814,34 +810,34 @@ void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, } else { - if (GetBattlerSide(battler1) != B_SIDE_PLAYER) - species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); else - species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); } - spriteId = sub_80A89C8(battler1, gBattlerSpriteIds[battler1], species); - if (arg4) - spriteId2 = sub_80A89C8(battler2, gBattlerSpriteIds[battler2], species); + spriteId = CreateInvisibleSpriteCopy(battler, gBattlerSpriteIds[battler], species); + if (includePartner) + spriteId2 = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species); - GetDefaultBattleAnimBgData(&unknownStruct); - AnimLoadCompressedBgTilemapHandleContest(&unknownStruct, tilemap, 0); - AnimLoadCompressedBgGfx(unknownStruct.bgId, gfx, unknownStruct.tilesOffset); - LoadCompressedPalette(palette, unknownStruct.paletteId * 16, 32); + GetBattleAnimBg1Data(&animBgData); + AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, 0); + AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset); + LoadCompressedPalette(palette, animBgData.paletteId * 16, 32); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; - gTasks[taskId].data[1] = arg2; - gTasks[taskId].data[4] = arg5; - gTasks[taskId].data[5] = arg7; - gTasks[taskId].data[6] = arg6; + gTasks[taskId].data[1] = scrollSpeed; + gTasks[taskId].data[4] = numFadeSteps; + gTasks[taskId].data[5] = duration; + gTasks[taskId].data[6] = fadeStepDelay; gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[2] = arg4; + gTasks[taskId].data[2] = includePartner; gTasks[taskId].data[3] = spriteId2; - gTasks[taskId].func = sub_8117A60; + gTasks[taskId].func = UpdateMonScrollingBgMask; } -static void sub_8117A60(u8 taskId) +static void UpdateMonScrollingBgMask(u8 taskId) { gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1]; if (gTasks[taskId].data[1] < 0) @@ -874,7 +870,7 @@ static void sub_8117A60(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12])); if (gTasks[taskId].data[12] == 0) { - sub_80A477C(0); + ResetBattleAnimBg(0); gBattle_WIN0H = 0; gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR @@ -927,7 +923,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; @@ -954,7 +950,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; @@ -981,7 +977,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; |