Sync battle anim.c

This commit is contained in:
GriffinR
2022-08-17 15:57:46 -04:00
parent c0b0e87f68
commit 5813cb43c2
8 changed files with 1859 additions and 1860 deletions
+8 -8
View File
@@ -2783,7 +2783,7 @@ Move_AGILITY::
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 4, 4 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 4, 4
createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 10 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 10
playsewithpan SE_M_DOUBLE_TEAM, 192 playsewithpan SE_M_DOUBLE_TEAM, 192
delay 12 delay 12
playsewithpan SE_M_DOUBLE_TEAM, 192 playsewithpan SE_M_DOUBLE_TEAM, 192
@@ -2805,7 +2805,7 @@ Move_QUICK_ATTACK::
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5
createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 3 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3
playsewithpan SE_M_JUMP_KICK, 192 playsewithpan SE_M_JUMP_KICK, 192
delay 4 delay 4
createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1
@@ -4438,7 +4438,7 @@ Move_AERIAL_ACE::
monbg 1 monbg 1
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5
createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 3 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3
createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0
playsewithpan SE_M_RAZOR_WIND2, 192 playsewithpan SE_M_RAZOR_WIND2, 192
delay 5 delay 5
@@ -7806,7 +7806,7 @@ CurseStats::
CurseStats1:: CurseStats1::
playsewithpan SE_M_DRAGON_RAGE, 192 playsewithpan SE_M_DRAGON_RAGE, 192
createvisualtask AnimTask_SetUpCurseBackground, 5, createvisualtask AnimTask_DrawFallingWhiteLinesOnAttacker, 5,
createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, 31 createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, 31
return return
@@ -9167,13 +9167,13 @@ ReturnStrongest::
createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
waitforvisualfinish waitforvisualfinish
delay 2 delay 2
createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1
createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 0 createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 0
createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63
createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1
waitforvisualfinish waitforvisualfinish
createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 2, 0 createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 2, 0
createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64
@@ -9181,7 +9181,7 @@ ReturnStrongest::
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63
createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1
waitforvisualfinish waitforvisualfinish
call ReturnStrongestHit call ReturnStrongestHit
call ReturnStrongestHit call ReturnStrongestHit
@@ -9209,7 +9209,7 @@ ReturnStrongestHit::
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63
createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1
waitforvisualfinish waitforvisualfinish
return return
+2 -2
View File
@@ -276,7 +276,7 @@
#define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266) #define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266)
#define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267) #define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267)
#define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268) #define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268)
#define ANIM_TAG_SAFARI_BAIT (ANIM_SPRITES_START + 269) #define ANIM_TAG_SAFARI_BAIT (ANIM_SPRITES_START + 269)
#define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270) #define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270)
#define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271) #define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271)
#define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272) #define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272)
@@ -318,7 +318,7 @@
#define SOUND_PAN_TARGET 63 #define SOUND_PAN_TARGET 63
// move background ids // move background ids
#define BG_DARK_ 0 // the same as BG_DARK but is unused #define BG_NONE 0 // the same as BG_DARK
#define BG_DARK 1 #define BG_DARK 1
#define BG_GHOST 2 #define BG_GHOST 2
#define BG_PSYCHIC 3 #define BG_PSYCHIC 3
+2 -2
View File
@@ -3912,7 +3912,7 @@ extern const u32 gBattleAnimSpriteGfx_Pokeball[];
extern const u32 gBattleAnimSpriteGfx_Spotlight[]; extern const u32 gBattleAnimSpriteGfx_Spotlight[];
extern const u32 gBattleAnimSpriteGfx_LetterZ[]; extern const u32 gBattleAnimSpriteGfx_LetterZ[];
extern const u32 gBattleAnimSpriteGfx_RapidSpin[]; extern const u32 gBattleAnimSpriteGfx_RapidSpin[];
extern const u32 gBattleAnimSpriteGfx_TriForceTriangle[]; extern const u32 gBattleAnimSpriteGfx_TriAttackTriangle[];
extern const u32 gBattleAnimSpriteGfx_WispOrb[]; extern const u32 gBattleAnimSpriteGfx_WispOrb[];
extern const u32 gBattleAnimSpriteGfx_WispFire[]; extern const u32 gBattleAnimSpriteGfx_WispFire[];
extern const u32 gBattleAnimSpriteGfx_GoldStars[]; extern const u32 gBattleAnimSpriteGfx_GoldStars[];
@@ -4165,7 +4165,7 @@ extern const u32 gBattleAnimSpritePal_JaggedMusicNote[];
extern const u32 gBattleAnimSpritePal_Pokeball[]; extern const u32 gBattleAnimSpritePal_Pokeball[];
extern const u32 gBattleAnimSpritePal_LetterZ[]; extern const u32 gBattleAnimSpritePal_LetterZ[];
extern const u32 gBattleAnimSpritePal_RapidSpin[]; extern const u32 gBattleAnimSpritePal_RapidSpin[];
extern const u32 gBattleAnimSpritePal_TriForceTriangle[]; extern const u32 gBattleAnimSpritePal_TriAttackTriangle[];
extern const u32 gBattleAnimSpritePal_WispOrb[]; extern const u32 gBattleAnimSpritePal_WispOrb[];
extern const u32 gBattleAnimSpritePal_GoldStars[]; extern const u32 gBattleAnimSpritePal_GoldStars[];
extern const u32 gBattleAnimSpritePal_EclipsingOrb[]; extern const u32 gBattleAnimSpritePal_EclipsingOrb[];
+147 -1773
View File
File diff suppressed because it is too large Load Diff
+49 -46
View File
@@ -18,22 +18,22 @@ struct AnimStatsChangeData
static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes); static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes);
static void AnimTask_BlendSpriteColor_Step2(u8 taskId); static void AnimTask_BlendSpriteColor_Step2(u8 taskId);
static void Task_WaitHardwarePaletteFade(u8 taskId); static void AnimTask_HardwarePaletteFade_Step(u8 taskId);
static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId); static void AnimTask_TraceMonBlended_Step(u8 taskId);
static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite); static void AnimMonTrace(struct Sprite *sprite);
static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId); static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId);
static void StatsChangeAnimation_Step1(u8 taskId); static void StatsChangeAnimation_Step1(u8 taskId);
static void StatsChangeAnimation_Step2(u8 taskId); static void StatsChangeAnimation_Step2(u8 taskId);
static void StatsChangeAnimation_Step3(u8 taskId); static void StatsChangeAnimation_Step3(u8 taskId);
static void sub_80BB6CC(u8 taskId); static void AnimTask_Flash_Step(u8 taskId);
static void sub_80BB790(u32 selectedPalettes, u16 color); static void SetPalettesToColor(u32 selectedPalettes, u16 color);
static void sub_80BB8A4(u8 taskId); static void AnimTask_UpdateSlidingBg(u8 taskId);
static void sub_80BBC2C(u8 taskId); static void UpdateMonScrollingBgMask(u8 taskId);
static void sub_80BC19C(u8 taskId); static void AnimTask_WaitAndRestoreVisibility(u8 taskId);
static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = NULL; static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = NULL;
static const u16 sRgbWhite[] = { RGB(31, 31, 31) }; static const u16 sRgbWhite[] = { RGB_WHITE };
const u8 gBattleAnimRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT }; const u8 gBattleAnimRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT }; const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
@@ -85,13 +85,13 @@ void AnimTask_BlendExcept(u8 taskId)
case 2: case 2:
selectedPalettes = 0; selectedPalettes = 0;
// fall through // fall through
case 0: case ANIM_ATTACKER:
animBattlers[0] = gBattleAnimAttacker; animBattlers[0] = gBattleAnimAttacker;
break; break;
case 3: case 3:
selectedPalettes = 0; selectedPalettes = 0;
// fall through // fall through
case 1: case ANIM_TARGET:
animBattlers[0] = gBattleAnimTarget; animBattlers[0] = gBattleAnimTarget;
break; break;
case 4: case 4:
@@ -217,16 +217,17 @@ void AnimTask_HardwarePaletteFade(u8 taskId)
gBattleAnimArgs[2], gBattleAnimArgs[2],
gBattleAnimArgs[3], gBattleAnimArgs[3],
gBattleAnimArgs[4]); gBattleAnimArgs[4]);
gTasks[taskId].func = Task_WaitHardwarePaletteFade; gTasks[taskId].func = AnimTask_HardwarePaletteFade_Step;
} }
static void Task_WaitHardwarePaletteFade(u8 taskId) static void AnimTask_HardwarePaletteFade_Step(u8 taskId)
{ {
if (!gPaletteFade.active) if (!gPaletteFade.active)
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId) // Used to leave blended traces of a mon, usually to imply speed as in Agility or Aerial Ace
void AnimTask_TraceMonBlended(u8 taskId)
{ {
struct Task *task = &gTasks[taskId]; struct Task *task = &gTasks[taskId];
@@ -236,9 +237,9 @@ void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId)
task->data[3] = gBattleAnimArgs[2]; task->data[3] = gBattleAnimArgs[2];
task->data[4] = gBattleAnimArgs[3]; task->data[4] = gBattleAnimArgs[3];
task->data[5] = 0; task->data[5] = 0;
task->func = Task_DoCloneBattlerSpriteWithBlend; task->func = AnimTask_TraceMonBlended_Step;
} }
static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId) static void AnimTask_TraceMonBlended_Step(u8 taskId)
{ {
struct Task *task = &gTasks[taskId]; struct Task *task = &gTasks[taskId];
@@ -257,7 +258,7 @@ static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId)
gSprites[task->data[6]].data[0] = task->data[3]; gSprites[task->data[6]].data[0] = task->data[3];
gSprites[task->data[6]].data[1] = taskId; gSprites[task->data[6]].data[1] = taskId;
gSprites[task->data[6]].data[2] = 5; gSprites[task->data[6]].data[2] = 5;
gSprites[task->data[6]].callback = Task_FinishCloneBattlerSpriteWithBlend; gSprites[task->data[6]].callback = AnimMonTrace;
++task->data[5]; ++task->data[5];
} }
--task->data[4]; --task->data[4];
@@ -270,7 +271,7 @@ static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId)
} }
} }
static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite) static void AnimMonTrace(struct Sprite *sprite)
{ {
if (sprite->data[0]) if (sprite->data[0])
{ {
@@ -283,7 +284,8 @@ static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite)
} }
} }
void AnimTask_SetUpCurseBackground(u8 taskId) // Only used by Curse for non-Ghost mons
void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
{ {
u16 species; u16 species;
s32 newSpriteId; s32 newSpriteId;
@@ -582,17 +584,17 @@ void AnimTask_Flash(u8 taskId)
{ {
u32 selectedPalettes = GetBattleMonSpritePalettesMask(1, 1, 1, 1); u32 selectedPalettes = GetBattleMonSpritePalettesMask(1, 1, 1, 1);
sub_80BB790(selectedPalettes, 0); SetPalettesToColor(selectedPalettes, 0);
gTasks[taskId].data[14] = selectedPalettes >> 16; gTasks[taskId].data[14] = selectedPalettes >> 16;
selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
sub_80BB790(selectedPalettes, 0xFFFF); SetPalettesToColor(selectedPalettes, 0xFFFF);
gTasks[taskId].data[15] = selectedPalettes; gTasks[taskId].data[15] = selectedPalettes;
gTasks[taskId].data[0] = 0; gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0; gTasks[taskId].data[1] = 0;
gTasks[taskId].func = sub_80BB6CC; gTasks[taskId].func = AnimTask_Flash_Step;
} }
static void sub_80BB6CC(u8 taskId) static void AnimTask_Flash_Step(u8 taskId)
{ {
u16 i; u16 i;
struct Task *task = &gTasks[taskId]; struct Task *task = &gTasks[taskId];
@@ -637,7 +639,7 @@ static void sub_80BB6CC(u8 taskId)
} }
} }
static void sub_80BB790(u32 selectedPalettes, u16 color) static void SetPalettesToColor(u32 selectedPalettes, u16 color)
{ {
u16 i, curOffset, paletteOffset; u16 i, curOffset, paletteOffset;
@@ -665,7 +667,7 @@ void AnimTask_StartSlidingBg(u8 taskId)
u8 newTaskId; u8 newTaskId;
ToggleBg3Mode(0); ToggleBg3Mode(0);
newTaskId = CreateTask(sub_80BB8A4, 5); newTaskId = CreateTask(AnimTask_UpdateSlidingBg, 5);
if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{ {
gBattleAnimArgs[0] = -gBattleAnimArgs[0]; gBattleAnimArgs[0] = -gBattleAnimArgs[0];
@@ -678,7 +680,7 @@ void AnimTask_StartSlidingBg(u8 taskId)
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
static void sub_80BB8A4(u8 taskId) static void AnimTask_UpdateSlidingBg(u8 taskId)
{ {
gTasks[taskId].data[10] += gTasks[taskId].data[1]; gTasks[taskId].data[10] += gTasks[taskId].data[1];
gTasks[taskId].data[11] += gTasks[taskId].data[2]; gTasks[taskId].data[11] += gTasks[taskId].data[2];
@@ -713,6 +715,7 @@ void AnimTask_GetTargetIsAttackerPartner(u8 taskId)
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
// For hiding or subsequently revealing all other battlers
void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId)
{ {
u16 battler; u16 battler;
@@ -723,7 +726,7 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId)
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
void StartMonScrollingBgMask(u8 taskId, s32 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, s32 unused, u16 scrollSpeed, u8 battler1, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette)
{ {
u16 species; u16 species;
u8 spriteId, newSpriteId = 0; u8 spriteId, newSpriteId = 0;
@@ -731,8 +734,8 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar
struct BattleAnimBgData animBgData; struct BattleAnimBgData animBgData;
u8 battler2 = BATTLE_PARTNER(battler1); u8 battler2 = BATTLE_PARTNER(battler1);
if (IsContest() || (arg4 && !IsBattlerSpriteVisible(battler2))) if (IsContest() || (includePartner && !IsBattlerSpriteVisible(battler2)))
arg4 = 0; includePartner = FALSE;
gBattle_WIN0H = 0; gBattle_WIN0H = 0;
gBattle_WIN0V = 0; gBattle_WIN0V = 0;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
@@ -754,7 +757,7 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar
else else
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
spriteId = CreateInvisibleSpriteCopy(battler1, gBattlerSpriteIds[battler1], species); spriteId = CreateInvisibleSpriteCopy(battler1, gBattlerSpriteIds[battler1], species);
if (arg4) if (includePartner)
newSpriteId = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species); newSpriteId = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species);
GetBattleAnimBg1Data(&animBgData); GetBattleAnimBg1Data(&animBgData);
AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap); AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap);
@@ -764,17 +767,17 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar
LoadCompressedPalette(palette, animBgData.paletteId * 16, 32); LoadCompressedPalette(palette, animBgData.paletteId * 16, 32);
gBattle_BG1_X = 0; gBattle_BG1_X = 0;
gBattle_BG1_Y = 0; gBattle_BG1_Y = 0;
gTasks[taskId].data[1] = arg2; gTasks[taskId].data[1] = scrollSpeed;
gTasks[taskId].data[4] = arg5; gTasks[taskId].data[4] = numFadeSteps;
gTasks[taskId].data[5] = arg7; gTasks[taskId].data[5] = duration;
gTasks[taskId].data[6] = arg6; gTasks[taskId].data[6] = fadeStepDelay;
gTasks[taskId].data[0] = spriteId; gTasks[taskId].data[0] = spriteId;
gTasks[taskId].data[2] = arg4; gTasks[taskId].data[2] = includePartner;
gTasks[taskId].data[3] = newSpriteId; gTasks[taskId].data[3] = newSpriteId;
gTasks[taskId].func = sub_80BBC2C; gTasks[taskId].func = UpdateMonScrollingBgMask;
} }
static void sub_80BBC2C(u8 taskId) static void UpdateMonScrollingBgMask(u8 taskId)
{ {
gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1]; gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1];
if (gTasks[taskId].data[1] < 0) if (gTasks[taskId].data[1] < 0)
@@ -856,7 +859,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId)
s32 paletteIndex = 0; s32 paletteIndex = 0;
if (gBattleAnimArgs[0] == 0) if (gBattleAnimArgs[0] == 0)
for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
(selectedPalettes & 1) == 0; (selectedPalettes & 1) == 0;
++paletteIndex) ++paletteIndex)
selectedPalettes >>= 1; selectedPalettes >>= 1;
@@ -874,7 +877,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId)
s32 paletteIndex = 0; s32 paletteIndex = 0;
if (gBattleAnimArgs[0] == 0) if (gBattleAnimArgs[0] == 0)
for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
(selectedPalettes & 1) == 0; (selectedPalettes & 1) == 0;
++paletteIndex) ++paletteIndex)
selectedPalettes >>= 1; selectedPalettes >>= 1;
@@ -892,7 +895,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId)
s32 paletteIndex = 0; s32 paletteIndex = 0;
if (gBattleAnimArgs[0] == 0) if (gBattleAnimArgs[0] == 0)
for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
(selectedPalettes & 1) == 0; (selectedPalettes & 1) == 0;
++paletteIndex) ++paletteIndex)
selectedPalettes >>= 1; selectedPalettes >>= 1;
@@ -907,9 +910,9 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId)
void AnimTask_IsContest(u8 taskId) void AnimTask_IsContest(u8 taskId)
{ {
if (IsContest()) if (IsContest())
gBattleAnimArgs[7] = 1; gBattleAnimArgs[ARG_RET_ID] = TRUE;
else else
gBattleAnimArgs[7] = 0; gBattleAnimArgs[ARG_RET_ID] = FALSE;
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
@@ -923,9 +926,9 @@ void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId)
void AnimTask_IsTargetSameSide(u8 taskId) void AnimTask_IsTargetSameSide(u8 taskId)
{ {
if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
gBattleAnimArgs[7] = 1; gBattleAnimArgs[ARG_RET_ID] = TRUE;
else else
gBattleAnimArgs[7] = 0; gBattleAnimArgs[ARG_RET_ID] = FALSE;
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
@@ -952,12 +955,12 @@ void AnimTask_SetAttackerInvisibleWaitForSignal(u8 taskId)
{ {
gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible; gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible;
gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1; gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1;
gTasks[taskId].func = sub_80BC19C; gTasks[taskId].func = AnimTask_WaitAndRestoreVisibility;
--gAnimVisualTaskCount; --gAnimVisualTaskCount;
} }
} }
static void sub_80BC19C(u8 taskId) static void AnimTask_WaitAndRestoreVisibility(u8 taskId)
{ {
if (gBattleAnimArgs[7] == 0x1000) if (gBattleAnimArgs[7] == 0x1000)
{ {
+24 -27
View File
@@ -12,8 +12,6 @@
#include "trig.h" #include "trig.h"
#include "util.h" #include "util.h"
#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345)
static void AnimRainDrop(struct Sprite *); static void AnimRainDrop(struct Sprite *);
static void AnimRainDrop_Step(struct Sprite *); static void AnimRainDrop_Step(struct Sprite *);
static void AnimWaterBubbleProjectile(struct Sprite *); static void AnimWaterBubbleProjectile(struct Sprite *);
@@ -55,9 +53,8 @@ static void AnimTask_WaterSport_Step(u8);
static void CreateWaterSportDroplet(struct Task *); static void CreateWaterSportDroplet(struct Task *);
static void CreateWaterPulseRingBubbles(struct Sprite *, s32, s32); static void CreateWaterPulseRingBubbles(struct Sprite *, s32, s32);
// Both unused? Comment copied from pokeemerald static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp");
static const u8 gUnknown_83E44F4[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp"); static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin");
static const u8 gUnknown_83E4874[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin");
static const union AnimCmd sAnim_RainDrop[] = static const union AnimCmd sAnim_RainDrop[] =
{ {
@@ -488,8 +485,8 @@ void AnimTask_CreateRaindrops(u8 taskId)
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1) if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1)
{ {
x = Random() % 240; x = Random() % DISPLAY_WIDTH;
y = Random() % 80; y = Random() % (DISPLAY_HEIGHT / 2);
CreateSprite(&gRainDropSpriteTemplate, x, y, 4); CreateSprite(&gRainDropSpriteTemplate, x, y, 4);
} }
if (gTasks[taskId].data[0] == gTasks[taskId].data[3]) if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
@@ -521,23 +518,23 @@ static void AnimWaterBubbleProjectile(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{ {
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0]; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - gBattleAnimArgs[0];
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1]; sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
sprite->animPaused = TRUE; sprite->animPaused = TRUE;
} }
else else
{ {
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0]; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1]; sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
sprite->animPaused = TRUE; sprite->animPaused = TRUE;
} }
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[6]; sprite->data[0] = gBattleAnimArgs[6];
sprite->data[1] = sprite->x; sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[3] = sprite->y; sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimLinearTranslation(sprite); InitAnimLinearTranslation(sprite);
spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
sprite->data[5] = spriteId; sprite->data[5] = spriteId;
@@ -599,9 +596,9 @@ static void AnimAuroraBeamRings(struct Sprite *sprite)
unkArg = gBattleAnimArgs[2]; unkArg = gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4]; sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = sprite->x; sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + unkArg; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + unkArg;
sprite->data[3] = sprite->y; sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
InitAnimLinearTranslation(sprite); InitAnimLinearTranslation(sprite);
sprite->callback = AnimAuroraBeamRings_Step; sprite->callback = AnimAuroraBeamRings_Step;
sprite->affineAnimPaused = TRUE; sprite->affineAnimPaused = TRUE;
@@ -653,9 +650,9 @@ static void AnimToTargetInSinWave(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, TRUE); InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = 30; sprite->data[0] = 30;
sprite->data[1] = sprite->x; sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[3] = sprite->y; sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimLinearTranslation(sprite); InitAnimLinearTranslation(sprite);
sprite->data[5] = 0xD200 / sprite->data[0]; sprite->data[5] = 0xD200 / sprite->data[0];
sprite->data[7] = gBattleAnimArgs[3]; sprite->data[7] = gBattleAnimArgs[3];
@@ -708,8 +705,8 @@ static void AnimHydroCannonCharge(struct Sprite *sprite)
{ {
u8 priority; u8 priority;
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
sprite->y2 = -10; sprite->y2 = -10;
priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
if (!IsContest()) if (!IsContest())
@@ -755,14 +752,14 @@ static void AnimHydroCannonBeam(struct Sprite *sprite)
else else
animType = FALSE; animType = FALSE;
if ((u8)gBattleAnimArgs[5] == 0) if ((u8)gBattleAnimArgs[5] == 0)
coordType = 3; coordType = BATTLER_COORD_Y_PIC_OFFSET;
else else
coordType = 1; coordType = 1;
InitSpritePosToAnimAttacker(sprite, animType); InitSpritePosToAnimAttacker(sprite, animType);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4]; sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3]; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3];
sprite->callback = StartAnimLinearTranslation; sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
@@ -1173,8 +1170,8 @@ static u8 GetWaterSpoutPowerForAnim(void)
static void CreateWaterSpoutLaunchDroplets(struct Task *task, u8 taskId) static void CreateWaterSpoutLaunchDroplets(struct Task *task, u8 taskId)
{ {
s16 i; s16 i;
s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
s16 trigIndex = 172; s16 trigIndex = 172;
u8 subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1; u8 subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
s16 increment = 4 - task->data[1]; s16 increment = 4 - task->data[1];
@@ -1347,8 +1344,8 @@ void AnimTask_WaterSport(u8 taskId)
{ {
struct Task *task = &gTasks[taskId]; struct Task *task = &gTasks[taskId];
task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1; task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1;
if (IsContest()) if (IsContest())
task->data[7] *= -1; task->data[7] *= -1;
@@ -1520,8 +1517,8 @@ static void AnimWaterPulseRingBubble(struct Sprite *sprite)
void AnimWaterPulseRing(struct Sprite *sprite) void AnimWaterPulseRing(struct Sprite *sprite)
{ {
InitSpritePosToAnimAttacker(sprite, TRUE); InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[3] = gBattleAnimArgs[2]; sprite->data[3] = gBattleAnimArgs[2];
sprite->data[4] = gBattleAnimArgs[3]; sprite->data[4] = gBattleAnimArgs[3];
sprite->callback = AnimWaterPulseRing_Step; sprite->callback = AnimWaterPulseRing_Step;
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -779,8 +779,8 @@ const u32 gBattleAnimSpriteGfx_Roots[] = INCBIN_U32("graphics/battle_anims/sprit
const u32 gBattleAnimSpritePal_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.gbapal.lz"); const u32 gBattleAnimSpritePal_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.gbapal.lz");
const u32 gBattleAnimSpriteGfx_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.4bpp.lz"); const u32 gBattleAnimSpriteGfx_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.4bpp.lz");
const u32 gBattleAnimSpritePal_TriForceTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.gbapal.lz"); const u32 gBattleAnimSpritePal_TriAttackTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.gbapal.lz");
const u32 gBattleAnimSpriteGfx_TriForceTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.4bpp.lz"); const u32 gBattleAnimSpriteGfx_TriAttackTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.4bpp.lz");
const u32 gBattleAnimSpritePal_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.gbapal.lz"); const u32 gBattleAnimSpritePal_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.gbapal.lz");
const u32 gBattleAnimSpriteGfx_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.4bpp.lz"); const u32 gBattleAnimSpriteGfx_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.4bpp.lz");