diff options
Diffstat (limited to 'src/battle_anim_80A5C6C.c')
-rw-r--r-- | src/battle_anim_80A5C6C.c | 223 |
1 files changed, 110 insertions, 113 deletions
diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_80A5C6C.c index 3efc86bf8..372377a0c 100644 --- a/src/battle_anim_80A5C6C.c +++ b/src/battle_anim_80A5C6C.c @@ -33,21 +33,18 @@ extern const u8 gEnemyMonElevation[]; extern const struct CompressedSpriteSheet gMonFrontPicTable[]; extern const union AffineAnimCmd *gUnknown_082FF6C0[]; -// This file's functions. -void sub_80A64EC(struct Sprite *sprite); -void sub_80A6FB4(struct Sprite *sprite); -void sub_80A7144(struct Sprite *sprite); -void sub_80A791C(struct Sprite *sprite); -void sub_80A8DFC(struct Sprite *sprite); -void sub_80A8E88(struct Sprite *sprite); -void SetBattlerSpriteYOffsetFromYScale(u8 spriteId); -u16 GetBattlerYDeltaFromSpriteId(u8 spriteId); -void AnimTask_BlendMonInAndOutSetup(struct Task *task); -void sub_80A7AFC(u8 taskId); -void sub_80A8CAC(u8 taskId); -void AnimTask_BlendMonInAndOutStep(u8 taskId); -bool8 sub_80A7238(void); -void sub_80A8D78(struct Task *task, u8 taskId); +static void sub_80A6FB4(struct Sprite *sprite); +static void sub_80A7144(struct Sprite *sprite); +static void sub_80A791C(struct Sprite *sprite); +static void sub_80A8DFC(struct Sprite *sprite); +static void sub_80A8E88(struct Sprite *sprite); +static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId); +static void AnimTask_BlendMonInAndOutSetup(struct Task *task); +static void sub_80A7AFC(u8 taskId); +static void sub_80A8CAC(u8 taskId); +static void AnimTask_BlendMonInAndOutStep(u8 taskId); +static bool8 sub_80A7238(void); +static void sub_80A8D78(struct Task *task, u8 taskId); // EWRAM vars EWRAM_DATA static union AffineAnimCmd *gAnimTaskAffineAnim = NULL; @@ -503,7 +500,7 @@ void sub_80A63C8(struct Sprite *sprite) } } -void sub_80A6450(struct Sprite *sprite) +void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite) { if (sprite->data[3]) { @@ -533,28 +530,28 @@ void WaitAnimForDuration(struct Sprite *sprite) SetCallbackToStoredInData6(sprite); } -void sub_80A64D0(struct Sprite *sprite) +static void sub_80A64D0(struct Sprite *sprite) { sub_80A64EC(sprite); - sprite->callback = TranslateSpriteOverDuration; + sprite->callback = TranslateSpriteLinear; sprite->callback(sprite); } void sub_80A64EC(struct Sprite *sprite) { s16 old; - int v1; + int xDiff; if (sprite->data[1] > sprite->data[2]) sprite->data[0] = -sprite->data[0]; - v1 = sprite->data[2] - sprite->data[1]; + xDiff = sprite->data[2] - sprite->data[1]; old = sprite->data[0]; - sprite->data[0] = abs(v1 / sprite->data[0]); + sprite->data[0] = abs(xDiff / sprite->data[0]); sprite->data[2] = (sprite->data[4] - sprite->data[3]) / sprite->data[0]; sprite->data[1] = old; } -void TranslateSpriteOverDuration(struct Sprite *sprite) +void TranslateSpriteLinear(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -568,7 +565,7 @@ void TranslateSpriteOverDuration(struct Sprite *sprite) } } -void AnimTranslateLinearSimple(struct Sprite *sprite) +void TranslateSpriteLinearFixedPoint(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -584,7 +581,7 @@ void AnimTranslateLinearSimple(struct Sprite *sprite) } } -void sub_80A65A8(struct Sprite *sprite) +static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -598,6 +595,7 @@ void sub_80A65A8(struct Sprite *sprite) { SetCallbackToStoredInData6(sprite); } + UpdateMonIconFrame(sprite); } @@ -605,12 +603,12 @@ void sub_80A65EC(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x + sprite->pos2.x; sprite->data[3] = sprite->pos1.y + sprite->pos2.y; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->callback = sub_80A64D0; } -void TranslateMonBGUntil(struct Sprite *sprite) +void TranslateMonSpriteLinear(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -624,9 +622,7 @@ void TranslateMonBGUntil(struct Sprite *sprite) } } -// Same as TranslateMonBGUntil, but it operates on sub-pixel values -// to handle slower translations. -void sub_80A6680(struct Sprite *sprite) +void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -642,7 +638,7 @@ void sub_80A6680(struct Sprite *sprite) } } -void sub_80A66DC(struct Sprite *sprite) +void TranslateSpriteLinearAndFlicker(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -673,8 +669,8 @@ void sub_80A6760(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x + sprite->pos2.x; sprite->data[3] = sprite->pos1.y + sprite->pos2.y; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->callback = sub_80A64D0; } @@ -696,7 +692,7 @@ void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite) SetCallbackToStoredInData6(sprite); } -void sub_80A67F4(struct Sprite *sprite) +void DestroyAnimSpriteAndDisableBlend(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -749,7 +745,7 @@ void InitAnimArcTranslation(struct Sprite *sprite) sprite->data[7] = 0; } -bool8 TranslateAnimArc(struct Sprite *sprite) +bool8 TranslateAnimHorizontalArc(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) return TRUE; @@ -758,7 +754,7 @@ bool8 TranslateAnimArc(struct Sprite *sprite) return FALSE; } -bool8 sub_80A6934(struct Sprite *sprite) +bool8 TranslateAnimVerticalArc(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) return TRUE; @@ -767,7 +763,7 @@ bool8 sub_80A6934(struct Sprite *sprite) return FALSE; } -void oamt_add_pos2_onto_pos1(struct Sprite *sprite) +void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite) { sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; @@ -862,38 +858,38 @@ bool8 IsDoubleBattle(void) return IS_DOUBLE_BATTLE(); } -void sub_80A6B30(struct UnknownAnimStruct2 *unk) +void sub_80A6B30(struct BattleAnimBgData *unk) { if (IsContest()) { unk->bgTiles = gUnknown_0202305C; - unk->unk4 = (u16 *)gUnknown_02023060; - unk->unk8 = 0xe; + unk->bgTilemap = (u16 *)gUnknown_02023060; + unk->paletteId = 14; unk->bgId = 1; unk->tilesOffset = 0; - unk->unkC = 0; + unk->unused = 0; } else { unk->bgTiles = gUnknown_0202305C; - unk->unk4 = (u16 *)gUnknown_02023060; - unk->unk8 = 0x8; + unk->bgTilemap = (u16 *)gUnknown_02023060; + unk->paletteId = 8; unk->bgId = 1; unk->tilesOffset = 0x200; - unk->unkC = 0; + unk->unused = 0; } } -void sub_80A6B90(struct UnknownAnimStruct2 *unk, u32 arg1) +void sub_80A6B90(struct BattleAnimBgData *unk, u32 arg1) { if (IsContest()) { unk->bgTiles = gUnknown_0202305C; - unk->unk4 = (u16 *)gUnknown_02023060; - unk->unk8 = 0xe; + unk->bgTilemap = (u16 *)gUnknown_02023060; + unk->paletteId = 14; unk->bgId = 1; unk->tilesOffset = 0; - unk->unkC = 0; + unk->unused = 0; } else if (arg1 == 1) { @@ -902,76 +898,76 @@ void sub_80A6B90(struct UnknownAnimStruct2 *unk, u32 arg1) else { unk->bgTiles = gUnknown_0202305C; - unk->unk4 = (u16 *)gUnknown_02023060; - unk->unk8 = 0x9; + unk->bgTilemap = (u16 *)gUnknown_02023060; + unk->paletteId = 9; unk->bgId = 2; unk->tilesOffset = 0x300; - unk->unkC = 0; + unk->unused = 0; } } -void sub_80A6BFC(struct UnknownAnimStruct2 *unk, u8 unused) +void sub_80A6BFC(struct BattleAnimBgData *unk, u8 unused) { unk->bgTiles = gUnknown_0202305C; - unk->unk4 = (u16 *)gUnknown_02023060; + unk->bgTilemap = (u16 *)gUnknown_02023060; if (IsContest()) { - unk->unk8 = 0xe; + unk->paletteId = 14; unk->bgId = 1; unk->tilesOffset = 0; - unk->unkC = 0; + unk->unused = 0; } else if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { - unk->unk8 = 8; + unk->paletteId = 8; unk->bgId = 1; unk->tilesOffset = 0x200; - unk->unkC = 0; + unk->unused = 0; } else { - unk->unk8 = 0x9; + unk->paletteId = 9; unk->bgId = 2; unk->tilesOffset = 0x300; - unk->unkC = 0; + unk->unused = 0; } } void sub_80A6C68(u32 bgId) { - struct UnknownAnimStruct2 unkStruct; + struct BattleAnimBgData unkStruct; sub_80A6B90(&unkStruct, bgId); CpuFill32(0, unkStruct.bgTiles, 0x2000); LoadBgTiles(unkStruct.bgId, unkStruct.bgTiles, 0x2000, unkStruct.tilesOffset); - FillBgTilemapBufferRect(unkStruct.bgId, 0, 0, 0, 0x20, 0x40, 0x11); + FillBgTilemapBufferRect(unkStruct.bgId, 0, 0, 0, 32, 64, 17); CopyBgTilemapBufferToVram(unkStruct.bgId); } -void sub_80A6CC0(u32 bgId, const u32 *src, u32 tilesOffset) +void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset) { CpuFill32(0, gUnknown_0202305C, 0x2000); LZDecompressWram(src, gUnknown_0202305C); LoadBgTiles(bgId, gUnknown_0202305C, 0x2000, tilesOffset); } -void sub_80A6D10(u32 bgId, const void *src) +static void InitAnimBgTilemapBuffer(u32 bgId, const void *src) { - FillBgTilemapBufferRect(bgId, 0, 0, 0, 0x20, 0x40, 0x11); + FillBgTilemapBufferRect(bgId, 0, 0, 0, 32, 64, 17); CopyToBgTilemapBuffer(bgId, src, 0, 0); } -void sub_80A6D48(u32 bgId, const void *src) +void AnimLoadCompressedBgTilemap(u32 bgId, const void *src) { - sub_80A6D10(bgId, src); + InitAnimBgTilemapBuffer(bgId, src); CopyBgTilemapBufferToVram(bgId); } -void sub_80A6D60(struct UnknownAnimStruct2 *unk, const void *src, u32 arg2) +void sub_80A6D60(struct BattleAnimBgData *unk, const void *src, u32 arg2) { - sub_80A6D10(unk->bgId, src); + InitAnimBgTilemapBuffer(unk->bgId, src); if (IsContest() == TRUE) - sub_80A4720(unk->unk8, unk->unk4, 0, arg2); + sub_80A4720(unk->paletteId, unk->bgTilemap, 0, arg2); CopyBgTilemapBufferToVram(unk->bgId); } @@ -1002,7 +998,7 @@ void sub_80A6DEC(struct Sprite *sprite) sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; InitSpriteDataForLinearTranslation(sprite); - sprite->callback = sub_80A65A8; + sprite->callback = TranslateSpriteLinearFixedPointIconFrame; sprite->callback(sprite); } @@ -1098,7 +1094,7 @@ void sub_80A6F98(struct Sprite *sprite) SetCallbackToStoredInData6(sprite); } -void sub_80A6FB4(struct Sprite *sprite) +static void sub_80A6FB4(struct Sprite *sprite) { sub_8039E9C(sprite); if (AnimTranslateLinear(sprite)) @@ -1188,7 +1184,7 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite) return FALSE; } -void sub_80A7144(struct Sprite *sprite) +static void sub_80A7144(struct Sprite *sprite) { if (AnimFastTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); @@ -1229,7 +1225,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation) gOamMatrices[i].d = matrix.d; } -bool8 sub_80A7238(void) +static bool8 sub_80A7238(void) { if (IsContest()) { @@ -1352,56 +1348,57 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) } } -u32 sub_80A75AC(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +u32 sub_80A75AC(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7) { - u32 var = 0; + u32 selectedPalettes = 0; u32 shift; - if (a1) + if (battleBackground) { if (!IsContest()) - var = 0xe; + selectedPalettes = 0xe; else - var = 1 << sub_80A6D94(); + selectedPalettes = 1 << sub_80A6D94(); } - if (a2) + if (attacker) { shift = gBattleAnimAttacker + 16; - var |= 1 << shift; + selectedPalettes |= 1 << shift; } - if (a3) { + if (target) + { shift = gBattleAnimTarget + 16; - var |= 1 << shift; + selectedPalettes |= 1 << shift; } - if (a4) + if (attackerPartner) { - if (IsBattlerSpriteVisible(gBattleAnimAttacker ^ 2)) + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) { - shift = (gBattleAnimAttacker ^ 2) + 16; - var |= 1 << shift; + shift = BATTLE_PARTNER(gBattleAnimAttacker) + 16; + selectedPalettes |= 1 << shift; } } - if (a5) + if (targetPartner) { - if (IsBattlerSpriteVisible(gBattleAnimTarget ^ 2)) + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) { - shift = (gBattleAnimTarget ^ 2) + 16; - var |= 1 << shift; + shift = BATTLE_PARTNER(gBattleAnimTarget) + 16; + selectedPalettes |= 1 << shift; } } if (a6) { if (!IsContest()) - var |= 0x100; + selectedPalettes |= 0x100; else - var |= 0x4000; + selectedPalettes |= 0x4000; } if (a7) { if (!IsContest()) - var |= 0x200; + selectedPalettes |= 0x200; } - return var; + return selectedPalettes; } u32 sub_80A76C4(u8 a1, u8 a2, u8 a3, u8 a4) @@ -1459,7 +1456,7 @@ u8 sub_80A77AC(u8 a1) return a1; } -u8 sub_80A77B4(u8 position) +static u8 GetBattlerAtPosition_(u8 position) { return GetBattlerAtPosition(position); } @@ -1527,33 +1524,33 @@ void sub_80A78AC(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[5]; InitAnimArcTranslation(sprite); sprite->callback = sub_80A791C; } -void sub_80A791C(struct Sprite *sprite) +static void sub_80A791C(struct Sprite *sprite) { - if (TranslateAnimArc(sprite)) + if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); } void sub_80A7938(struct Sprite *sprite) { bool8 r4; - u8 battlerId, attributeId; + u8 battlerId, coordType; if (!gBattleAnimArgs[6]) { r4 = TRUE; - attributeId = BATTLER_COORD_Y_PIC_OFFSET; + coordType = BATTLER_COORD_Y_PIC_OFFSET; } else { r4 = FALSE; - attributeId = BATTLER_COORD_Y; + coordType = BATTLER_COORD_Y; } if (!gBattleAnimArgs[5]) { @@ -1570,7 +1567,7 @@ void sub_80A7938(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, r4); sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(battlerId, attributeId) + gBattleAnimArgs[3]; + sprite->data[4] = GetBattlerSpriteCoord(battlerId, coordType) + gBattleAnimArgs[3]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -1629,7 +1626,7 @@ void sub_80A7A74(u8 taskId) gTasks[taskId].func = sub_80A7AFC; } -void sub_80A7AFC(u8 taskId) +static void sub_80A7AFC(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1674,7 +1671,7 @@ void AnimTask_BlendMonInAndOut(u8 task) AnimTask_BlendMonInAndOutSetup(&gTasks[task]); } -void AnimTask_BlendMonInAndOutSetup(struct Task *task) +static void AnimTask_BlendMonInAndOutSetup(struct Task *task) { task->data[1] = gBattleAnimArgs[1]; task->data[2] = 0; @@ -1686,7 +1683,7 @@ void AnimTask_BlendMonInAndOutSetup(struct Task *task) task->func = AnimTask_BlendMonInAndOutStep; } -void AnimTask_BlendMonInAndOutStep(u8 taskId) +static void AnimTask_BlendMonInAndOutStep(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1844,7 +1841,7 @@ void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId) gSprites[spriteId].pos2.y = (var - var2) / 2; } -u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) +static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) { struct BattleSpriteInfo *spriteInfo; u8 battlerId = gSprites[spriteId].data[0]; @@ -2300,7 +2297,7 @@ void sub_80A8A6C(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[4]; sprite->data[5] = gBattleAnimArgs[5]; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = sub_80A66DC; + sprite->callback = TranslateSpriteLinearAndFlicker; } void sub_80A8AEC(struct Sprite *sprite) @@ -2321,7 +2318,7 @@ void sub_80A8AEC(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[5]; StartSpriteAnim(sprite, gBattleAnimArgs[6]); StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = sub_80A66DC; + sprite->callback = TranslateSpriteLinearAndFlicker; } void sub_80A8B64(struct Sprite *sprite) @@ -2362,7 +2359,7 @@ void sub_80A8BC4(u8 taskId) task->func = sub_80A8CAC; } -void sub_80A8CAC(u8 taskId) +static void sub_80A8CAC(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->data[2]) @@ -2395,7 +2392,7 @@ void sub_80A8CAC(u8 taskId) } } -void sub_80A8D78(struct Task *task, u8 taskId) +static void sub_80A8D78(struct Task *task, u8 taskId) { s16 spriteId = CloneBattlerSpriteWithBlend(0); if (spriteId >= 0) @@ -2411,7 +2408,7 @@ void sub_80A8D78(struct Task *task, u8 taskId) } } -void sub_80A8DFC(struct Sprite *sprite) +static void sub_80A8DFC(struct Sprite *sprite) { if (--sprite->data[0] == 0) { @@ -2432,7 +2429,7 @@ void sub_80A8E30(struct Sprite *sprite) sprite->callback = sub_80A8E88; } -void sub_80A8E88(struct Sprite *sprite) +static void sub_80A8E88(struct Sprite *sprite) { sprite->data[2] += sprite->data[0]; sprite->data[3] += sprite->data[1]; |