diff options
Diffstat (limited to 'src/battle_anim_mons.c')
-rw-r--r-- | src/battle_anim_mons.c | 88 |
1 files changed, 47 insertions, 41 deletions
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 0c3d4ea47..3e86f31f7 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -21,15 +21,15 @@ extern const struct OamData gOamData_AffineNormal_ObjNormal_64x64; static void sub_80A6FB4(struct Sprite *sprite); -static void sub_80A7144(struct Sprite *sprite); +static void AnimFastTranslateLinearWaitEnd(struct Sprite *sprite); static void AnimThrowProjectile_Step(struct Sprite *sprite); static void sub_80A8DFC(struct Sprite *sprite); -static void sub_80A8E88(struct Sprite *sprite); +static void AnimWeatherBallUp_Step(struct Sprite *sprite); static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId); static void AnimTask_BlendPalInAndOutSetup(struct Task *task); -static void sub_80A7AFC(u8 taskId); -static void sub_80A8CAC(u8 taskId); -static void AnimTask_BlendMonInAndOutStep(u8 taskId); +static void AnimTask_AlphaFadeIn_Step(u8 taskId); +static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId); +static void AnimTask_BlendMonInAndOut_Step(u8 taskId); static bool8 sub_80A7238(void); static void sub_80A8D78(struct Task *task, u8 taskId); @@ -79,11 +79,15 @@ static const u8 sCastformBackSpriteYCoords[] = 0, // HAIL }; -static const struct SpriteTemplate sUnknown_08525F90[] = +// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch) +#define TAG_MOVE_EFFECT_MON_1 55125 +#define TAG_MOVE_EFFECT_MON_2 55126 + +static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] = { { - .tileTag = 55125, - .paletteTag = 55125, + .tileTag = TAG_MOVE_EFFECT_MON_1, + .paletteTag = TAG_MOVE_EFFECT_MON_1, .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, @@ -91,8 +95,8 @@ static const struct SpriteTemplate sUnknown_08525F90[] = .callback = SpriteCallbackDummy, }, { - .tileTag = 55126, - .paletteTag = 55126, + .tileTag = TAG_MOVE_EFFECT_MON_2, + .paletteTag = TAG_MOVE_EFFECT_MON_2, .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, @@ -101,10 +105,10 @@ static const struct SpriteTemplate sUnknown_08525F90[] = } }; -static const struct SpriteSheet sUnknown_08525FC0[] = +static const struct SpriteSheet sSpriteSheet_MoveEffectMons[] = { - { gMiscBlank_Gfx, 0x800, 55125, }, - { gMiscBlank_Gfx, 0x800, 55126, }, + { gMiscBlank_Gfx, 0x800, TAG_MOVE_EFFECT_MON_1, }, + { gMiscBlank_Gfx, 0x800, TAG_MOVE_EFFECT_MON_2, }, }; u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType) @@ -1032,7 +1036,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite) sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; InitAnimLinearTranslation(sprite); - sprite->callback = sub_80A6F98; + sprite->callback = AnimTranslateLinear_WaitEnd; sprite->callback(sprite); } @@ -1075,7 +1079,7 @@ bool8 AnimTranslateLinear(struct Sprite *sprite) return FALSE; } -void sub_80A6F98(struct Sprite *sprite) +void AnimTranslateLinear_WaitEnd(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); @@ -1088,19 +1092,19 @@ static void sub_80A6FB4(struct Sprite *sprite) SetCallbackToStoredInData6(sprite); } -void sub_80A6FD4(struct Sprite *sprite) +void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite) { int v1 = abs(sprite->data[2] - sprite->data[1]) << 8; sprite->data[0] = v1 / sprite->data[0]; InitAnimLinearTranslation(sprite); } -void sub_80A7000(struct Sprite *sprite) +void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; - sub_80A6FD4(sprite); - sprite->callback = sub_80A6F98; + InitAnimLinearTranslationWithSpeed(sprite); + sprite->callback = AnimTranslateLinear_WaitEnd; sprite->callback(sprite); } @@ -1137,7 +1141,7 @@ void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite) sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; InitAnimFastLinearTranslation(sprite); - sprite->callback = sub_80A7144; + sprite->callback = AnimFastTranslateLinearWaitEnd; sprite->callback(sprite); } @@ -1171,7 +1175,7 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite) return FALSE; } -static void sub_80A7144(struct Sprite *sprite) +static void AnimFastTranslateLinearWaitEnd(struct Sprite *sprite) { if (AnimFastTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); @@ -1184,12 +1188,12 @@ void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite) InitAnimFastLinearTranslation(sprite); } -void sub_80A718C(struct Sprite *sprite) +void InitAnimFastLinearTranslationWithSpeedAndPos(struct Sprite *sprite) { sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; InitAnimFastLinearTranslationWithSpeed(sprite); - sprite->callback = sub_80A7144; + sprite->callback = AnimFastTranslateLinearWaitEnd; sprite->callback(sprite); } @@ -1438,9 +1442,10 @@ u32 sub_80A76C4(u8 a1, u8 a2, u8 a3, u8 a4) return var; } -u8 sub_80A77AC(u8 a1) +// Presumably something commented here, just returns arg +u8 AnimDummyReturnArg(u8 battler) { - return a1; + return battler; } static u8 GetBattlerAtPosition_(u8 position) @@ -1611,10 +1616,10 @@ void AnimTask_AlphaFadeIn(u8 taskId) gTasks[taskId].data[7] = gBattleAnimArgs[2]; gTasks[taskId].data[8] = gBattleAnimArgs[3]; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gBattleAnimArgs[0], gBattleAnimArgs[1])); - gTasks[taskId].func = sub_80A7AFC; + gTasks[taskId].func = AnimTask_AlphaFadeIn_Step; } -static void sub_80A7AFC(u8 taskId) +static void AnimTask_AlphaFadeIn_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1668,10 +1673,10 @@ static void AnimTask_BlendPalInAndOutSetup(struct Task *task) task->data[5] = gBattleAnimArgs[3]; task->data[6] = 0; task->data[7] = gBattleAnimArgs[4]; - task->func = AnimTask_BlendMonInAndOutStep; + task->func = AnimTask_BlendMonInAndOut_Step; } -static void AnimTask_BlendMonInAndOutStep(u8 taskId) +static void AnimTask_BlendMonInAndOut_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -2021,18 +2026,19 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId) return 1; } -u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10) +// Create pokemon sprite to be used for a move animation effect (e.g. Role Play / Snatch) +u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm) { u8 spriteId; - u16 sheet = LoadSpriteSheet(&sUnknown_08525FC0[a3]); - u16 palette = AllocSpritePalette(sUnknown_08525F90[a3].paletteTag); + u16 sheet = LoadSpriteSheet(&sSpriteSheet_MoveEffectMons[id]); + u16 palette = AllocSpritePalette(sSpriteTemplate_MoveEffectMons[id].paletteTag); if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->buffer == NULL) gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000); if (!isBackpic) { LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); - if (a10 == 1 || sub_80688F8(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) + if (ignoreDeoxysForm == TRUE || ShouldIgnoreDeoxysForm(5, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->buffer, species, @@ -2048,7 +2054,7 @@ u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority else { LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); - if (a10 == 1 || sub_80688F8(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) + if (ignoreDeoxysForm == TRUE || ShouldIgnoreDeoxysForm(5, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], gMonSpritesGfxPtr->buffer, species, @@ -2066,9 +2072,9 @@ u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer); if (!isBackpic) - spriteId = CreateSprite(&sUnknown_08525F90[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority); else - spriteId = CreateSprite(&sUnknown_08525F90[a3], x, y + gMonBackPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority); if (IsContest()) { @@ -2337,7 +2343,7 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) task->data[2] = 0; task->data[3] = 0; gSprites[task->data[0]].pos2.x -= task->data[0]; - task->data[4] = AllocSpritePalette(10097); + task->data[4] = AllocSpritePalette(ANIM_TAG_BENT_SPOON); task->data[5] = 0; dest = (task->data[4] + 0x10) * 0x10; @@ -2349,10 +2355,10 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) task->data[6] = 3; CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20); BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]); - task->func = sub_80A8CAC; + task->func = AnimTask_AttackerPunchWithTrace_Step; } -static void sub_80A8CAC(u8 taskId) +static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->data[2]) @@ -2419,10 +2425,10 @@ void AnimWeatherBallUp(struct Sprite *sprite) else sprite->data[0] = -10; sprite->data[1] = -40; - sprite->callback = sub_80A8E88; + sprite->callback = AnimWeatherBallUp_Step; } -static void sub_80A8E88(struct Sprite *sprite) +static void AnimWeatherBallUp_Step(struct Sprite *sprite) { sprite->data[2] += sprite->data[0]; sprite->data[3] += sprite->data[1]; |