matching up battle_anim_special
This commit is contained in:
@@ -11051,7 +11051,7 @@ Special_BallThrow:: @ 81D64F9
|
|||||||
delay 0
|
delay 0
|
||||||
playsewithpan SE_NAGERU, 0
|
playsewithpan SE_NAGERU, 0
|
||||||
createvisualtask sub_80EF5AC, 2,
|
createvisualtask sub_80EF5AC, 2,
|
||||||
createvisualtask AnimTask_IsBallBlockedByTrainer, 2,
|
createvisualtask AnimTask_IsBallBlockedByTrainerOrDodged, 2,
|
||||||
jumpargeq 7, 65535, gUnknown_81D652D
|
jumpargeq 7, 65535, gUnknown_81D652D
|
||||||
jumpargeq 7, 65534, gUnknown_81D6555
|
jumpargeq 7, 65534, gUnknown_81D6555
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -546,8 +546,8 @@ struct BattleAnimationInfo
|
|||||||
u8 field_9_x80 : 1;
|
u8 field_9_x80 : 1;
|
||||||
u8 field_A;
|
u8 field_A;
|
||||||
u8 field_B;
|
u8 field_B;
|
||||||
u8 field_C;
|
s16 field_C;
|
||||||
u8 field_D;
|
//u8 field_D;
|
||||||
u8 field_E;
|
u8 field_E;
|
||||||
u8 field_F;
|
u8 field_F;
|
||||||
};
|
};
|
||||||
|
|||||||
+1
-1
@@ -210,7 +210,7 @@ struct Sprite
|
|||||||
/*0x2D*/ u8 animLoopCounter;
|
/*0x2D*/ u8 animLoopCounter;
|
||||||
|
|
||||||
// general purpose data fields
|
// general purpose data fields
|
||||||
/*0x2E*/ s16 data[8];
|
/*0x2E*/ s16 data[8]; //2e, 30, 32, 34, 36,
|
||||||
|
|
||||||
/*0x3E*/ u16 inUse:1; //1
|
/*0x3E*/ u16 inUse:1; //1
|
||||||
u16 coordOffsetEnabled:1; //2
|
u16 coordOffsetEnabled:1; //2
|
||||||
|
|||||||
+54
-41
@@ -65,6 +65,7 @@ static void LoadDefaultBg(void);
|
|||||||
static void Task_LoopAndPlaySE(u8 taskId);
|
static void Task_LoopAndPlaySE(u8 taskId);
|
||||||
static void Task_WaitAndPlaySE(u8 taskId);
|
static void Task_WaitAndPlaySE(u8 taskId);
|
||||||
static void sub_807331C(u8 taskId);
|
static void sub_807331C(u8 taskId);
|
||||||
|
static bool8 sub_807378C(u16 a);
|
||||||
|
|
||||||
static void ScriptCmd_loadspritegfx(void);
|
static void ScriptCmd_loadspritegfx(void);
|
||||||
static void ScriptCmd_unloadspritegfx(void);
|
static void ScriptCmd_unloadspritegfx(void);
|
||||||
@@ -2316,9 +2317,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
|
|||||||
|
|
||||||
void sub_80730C0(u16 a, u16 *b, s32 c, u8 d)
|
void sub_80730C0(u16 a, u16 *b, s32 c, u8 d)
|
||||||
{
|
{
|
||||||
s32 i, j;
|
u8 i, j;
|
||||||
s32 var;
|
u32 var;
|
||||||
s32 x;
|
|
||||||
|
|
||||||
if (d == 0)
|
if (d == 0)
|
||||||
var = 32;
|
var = 32;
|
||||||
@@ -2330,7 +2330,7 @@ void sub_80730C0(u16 a, u16 *b, s32 c, u8 d)
|
|||||||
{
|
{
|
||||||
for (j = 0; j < 32; j++)
|
for (j = 0; j < 32; j++)
|
||||||
{
|
{
|
||||||
b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c;
|
b[32 * i + j] = ((b[32 * i + j] & 0xFFF) | a) + c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2398,13 +2398,12 @@ static void ScriptCmd_clearmonbg(void)
|
|||||||
|
|
||||||
sBattleAnimScriptPtr++;
|
sBattleAnimScriptPtr++;
|
||||||
animBattlerId = sBattleAnimScriptPtr[0];
|
animBattlerId = sBattleAnimScriptPtr[0];
|
||||||
|
if (animBattlerId == 0)
|
||||||
|
animBattlerId = 2;
|
||||||
|
else if (animBattlerId == 1)
|
||||||
|
animBattlerId = 3;
|
||||||
|
|
||||||
if (animBattlerId == ANIM_ATTACKER)
|
if (animBattlerId == 0 || animBattlerId == 2)
|
||||||
animBattlerId = ANIM_ATK_PARTNER;
|
|
||||||
else if (animBattlerId == ANIM_TARGET)
|
|
||||||
animBattlerId = ANIM_DEF_PARTNER;
|
|
||||||
|
|
||||||
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
|
|
||||||
battlerId = gBattleAnimAttacker;
|
battlerId = gBattleAnimAttacker;
|
||||||
else
|
else
|
||||||
battlerId = gBattleAnimTarget;
|
battlerId = gBattleAnimTarget;
|
||||||
@@ -2425,24 +2424,27 @@ static void ScriptCmd_clearmonbg(void)
|
|||||||
|
|
||||||
static void sub_807331C(u8 taskId)
|
static void sub_807331C(u8 taskId)
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[1]++;
|
u8 toBG_2;
|
||||||
|
u8 position;
|
||||||
|
|
||||||
|
gTasks[taskId].data[1]++;
|
||||||
if (gTasks[taskId].data[1] != 1)
|
if (gTasks[taskId].data[1] != 1)
|
||||||
{
|
{
|
||||||
u8 to_BG2;
|
position = ((GetBattlerPosition((u8)gTasks[taskId].data[2]) << 0x18) + 0xFF000000) >> 0x18; //make human code
|
||||||
u8 position = GetBattlerPosition(gTasks[taskId].data[2]);
|
if (position <= B_POSITION_OPPONENT_LEFT)
|
||||||
to_BG2 = TRUE;
|
toBG_2 = FALSE;
|
||||||
if (position < B_POSITION_OPPONENT_LEFT)
|
else
|
||||||
to_BG2 = FALSE;
|
toBG_2 = TRUE;
|
||||||
|
|
||||||
if (sMonAnimTaskIdArray[0] != 0xFF)
|
if (sMonAnimTaskIdArray[0] != 0xFF)
|
||||||
{
|
{
|
||||||
sub_8073128(to_BG2);
|
sub_8073128(toBG_2);
|
||||||
DestroyTask(sMonAnimTaskIdArray[0]);
|
DestroyTask(sMonAnimTaskIdArray[0]);
|
||||||
sMonAnimTaskIdArray[0] = 0xFF;
|
sMonAnimTaskIdArray[0] = 0xFF;
|
||||||
}
|
}
|
||||||
if (gTasks[taskId].data[0] > 1)
|
if (gTasks[taskId].data[0] > 1)
|
||||||
{
|
{
|
||||||
sub_8073128(to_BG2 ^ 1);
|
sub_8073128(toBG_2 ^ 1);
|
||||||
DestroyTask(sMonAnimTaskIdArray[1]);
|
DestroyTask(sMonAnimTaskIdArray[1]);
|
||||||
sMonAnimTaskIdArray[1] = 0xFF;
|
sMonAnimTaskIdArray[1] = 0xFF;
|
||||||
}
|
}
|
||||||
@@ -2455,40 +2457,43 @@ static void ScriptCmd_monbg_22(void)
|
|||||||
bool8 toBG_2;
|
bool8 toBG_2;
|
||||||
u8 battlerId;
|
u8 battlerId;
|
||||||
u8 animBattlerId;
|
u8 animBattlerId;
|
||||||
|
u8 position;
|
||||||
|
|
||||||
sBattleAnimScriptPtr++;
|
sBattleAnimScriptPtr++;
|
||||||
|
|
||||||
animBattlerId = sBattleAnimScriptPtr[0];
|
animBattlerId = sBattleAnimScriptPtr[0];
|
||||||
|
if (animBattlerId == 0)
|
||||||
|
animBattlerId = 2;
|
||||||
|
else if (animBattlerId == 1)
|
||||||
|
animBattlerId = 3;
|
||||||
|
|
||||||
if (animBattlerId == ANIM_ATTACKER)
|
if (animBattlerId == 0 || animBattlerId == 2)
|
||||||
animBattlerId = ANIM_ATK_PARTNER;
|
|
||||||
else if (animBattlerId == ANIM_TARGET)
|
|
||||||
animBattlerId = ANIM_DEF_PARTNER;
|
|
||||||
|
|
||||||
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
|
|
||||||
battlerId = gBattleAnimAttacker;
|
battlerId = gBattleAnimAttacker;
|
||||||
else
|
else
|
||||||
battlerId = gBattleAnimTarget;
|
battlerId = gBattleAnimTarget;
|
||||||
|
|
||||||
if (IsBattlerSpriteVisible(battlerId))
|
if (IsBattlerSpriteVisible(battlerId))
|
||||||
{
|
{
|
||||||
u8 position = GetBattlerPosition(battlerId);
|
position = ((GetBattlerPosition(battlerId) << 0x18) + 0xFF000000) >> 0x18; //make human code
|
||||||
toBG_2 = TRUE;
|
if (position <= B_POSITION_OPPONENT_LEFT)
|
||||||
if (position < B_POSITION_OPPONENT_LEFT)
|
|
||||||
toBG_2 = FALSE;
|
toBG_2 = FALSE;
|
||||||
|
else
|
||||||
|
toBG_2 = TRUE;
|
||||||
|
|
||||||
MoveBattlerSpriteToBG(battlerId, toBG_2);
|
MoveBattlerSpriteToBG(battlerId, toBG_2);
|
||||||
|
gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
battlerId ^= BIT_FLANK;
|
battlerId ^= BIT_FLANK;
|
||||||
if (animBattlerId > 1 && IsBattlerSpriteVisible(battlerId))
|
if (animBattlerId > 1 && IsBattlerSpriteVisible(battlerId))
|
||||||
{
|
{
|
||||||
u8 position = GetBattlerPosition(battlerId);
|
position = ((GetBattlerPosition(battlerId) << 0x18) + 0xFF000000) >> 0x18; //make human code
|
||||||
toBG_2 = TRUE;
|
if (position <= B_POSITION_OPPONENT_LEFT)
|
||||||
if (position < B_POSITION_OPPONENT_LEFT)
|
|
||||||
toBG_2 = FALSE;
|
toBG_2 = FALSE;
|
||||||
|
else
|
||||||
|
toBG_2 = TRUE;
|
||||||
|
|
||||||
MoveBattlerSpriteToBG(battlerId, toBG_2);
|
MoveBattlerSpriteToBG(battlerId, toBG_2);
|
||||||
|
gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
sBattleAnimScriptPtr++;
|
sBattleAnimScriptPtr++;
|
||||||
@@ -2530,16 +2535,19 @@ static void ScriptCmd_clearmonbg_23(void)
|
|||||||
static void sub_8073558(u8 taskId)
|
static void sub_8073558(u8 taskId)
|
||||||
{
|
{
|
||||||
bool8 to_BG2;
|
bool8 to_BG2;
|
||||||
|
u8 position;
|
||||||
|
u8 battlerId;
|
||||||
|
|
||||||
gTasks[taskId].data[1]++;
|
gTasks[taskId].data[1]++;
|
||||||
if (gTasks[taskId].data[1] != 1)
|
if (gTasks[taskId].data[1] != 1)
|
||||||
{
|
{
|
||||||
bool8 toBG_2;
|
bool8 toBG_2;
|
||||||
u8 battlerId = gTasks[taskId].data[2];
|
battlerId = gTasks[taskId].data[2];
|
||||||
u8 position = GetBattlerPosition(battlerId);
|
position = ((GetBattlerPosition(battlerId) << 0x18) + 0xFF000000) >> 0x18; //make human code
|
||||||
to_BG2 = TRUE;
|
if (position <= B_POSITION_OPPONENT_LEFT)
|
||||||
if (position < B_POSITION_OPPONENT_LEFT)
|
toBG_2 = FALSE;
|
||||||
to_BG2 = FALSE;
|
else
|
||||||
|
toBG_2 = TRUE;
|
||||||
|
|
||||||
if (IsBattlerSpriteVisible(battlerId))
|
if (IsBattlerSpriteVisible(battlerId))
|
||||||
sub_8073128(toBG_2);
|
sub_8073128(toBG_2);
|
||||||
@@ -2625,6 +2633,7 @@ static void ScriptCmd_choosetwoturnanim(void)
|
|||||||
static void ScriptCmd_jumpifmoveturn(void)
|
static void ScriptCmd_jumpifmoveturn(void)
|
||||||
{
|
{
|
||||||
u8 toCheck;
|
u8 toCheck;
|
||||||
|
|
||||||
sBattleAnimScriptPtr++;
|
sBattleAnimScriptPtr++;
|
||||||
toCheck = sBattleAnimScriptPtr[0];
|
toCheck = sBattleAnimScriptPtr[0];
|
||||||
sBattleAnimScriptPtr++;
|
sBattleAnimScriptPtr++;
|
||||||
@@ -2641,13 +2650,18 @@ static void ScriptCmd_goto(void)
|
|||||||
sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
|
sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
//unused
|
|
||||||
bool8 IsContest(void)
|
bool8 IsContest(void)
|
||||||
{
|
{
|
||||||
if (!gMain.inBattle)
|
return FALSE;
|
||||||
return TRUE;
|
}
|
||||||
else
|
|
||||||
|
// Unused
|
||||||
|
static bool8 sub_807378C(u16 a)
|
||||||
|
{
|
||||||
|
if (a == 0xC9)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
else
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define tBackgroundId data[0]
|
#define tBackgroundId data[0]
|
||||||
@@ -3192,7 +3206,6 @@ static void ScriptCmd_jumpargeq(void)
|
|||||||
|
|
||||||
static void ScriptCmd_jumpifcontest(void)
|
static void ScriptCmd_jumpifcontest(void)
|
||||||
{
|
{
|
||||||
sBattleAnimScriptPtr++;
|
|
||||||
sBattleAnimScriptPtr += 5;
|
sBattleAnimScriptPtr += 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2215,6 +2215,7 @@ const struct SpriteTemplate gTauntFingerSpriteTemplate = //gUnknown_83E3AC4
|
|||||||
.callback = AnimTauntFinger,
|
.callback = AnimTauntFinger,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Functions
|
||||||
// Animates the falling particles that horizontally wave back and forth.
|
// Animates the falling particles that horizontally wave back and forth.
|
||||||
// Used by Sleep Powder, Stun Spore, and Poison Powder.
|
// Used by Sleep Powder, Stun Spore, and Poison Powder.
|
||||||
// arg 0: initial x pixel offset
|
// arg 0: initial x pixel offset
|
||||||
@@ -2734,7 +2735,7 @@ static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite)
|
|||||||
// arg 4: speedup frame (particles move faster at the end of the animation)
|
// arg 4: speedup frame (particles move faster at the end of the animation)
|
||||||
void AnimMoveTwisterParticle(struct Sprite* sprite)
|
void AnimMoveTwisterParticle(struct Sprite* sprite)
|
||||||
{
|
{
|
||||||
if (IsDoubleBattle() == TRUE)
|
if (!IsContest() && IsDoubleBattle() == TRUE)
|
||||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
|
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
|
||||||
|
|
||||||
sprite->pos1.y += 32;
|
sprite->pos1.y += 32;
|
||||||
@@ -2836,11 +2837,6 @@ void sub_80A2F0C(u8 taskId)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
|
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
|
||||||
gTasks[taskId].data[14] = gSprites[spriteId].oam.priority;
|
|
||||||
gSprites[spriteId].oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
|
|
||||||
spriteId = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER);
|
|
||||||
gTasks[taskId].data[15] = gSprites[spriteId].oam.priority;
|
|
||||||
gSprites[spriteId].oam.priority = GetBattlerSpriteBGPriority(BATTLE_PARTNER(gBattleAnimTarget));
|
|
||||||
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||||
gTasks[taskId].data[11] = 0x100;
|
gTasks[taskId].data[11] = 0x100;
|
||||||
@@ -2874,12 +2870,8 @@ static void AnimTask_DuplicateAndShrinkToPosStep2(u8 taskId)
|
|||||||
{
|
{
|
||||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
|
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||||
ResetSpriteRotScale(spriteId);
|
ResetSpriteRotScale(spriteId);
|
||||||
gSprites[spriteId].pos2.x = 0;
|
gSprites[spriteId].pos2.y = gSprites[spriteId].pos2.x = 0;
|
||||||
gSprites[spriteId].pos2.y = 0;
|
gTasks[taskId].data[0]++;
|
||||||
gSprites[spriteId].oam.priority = gTasks[taskId].data[14];
|
|
||||||
spriteId = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER);
|
|
||||||
gSprites[spriteId].oam.priority = gTasks[taskId].data[15];
|
|
||||||
gTasks[taskId].data[0]++;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ void AnimAngel(struct Sprite *);
|
|||||||
void AnimPinkHeart(struct Sprite *);
|
void AnimPinkHeart(struct Sprite *);
|
||||||
void AnimDevil(struct Sprite *);
|
void AnimDevil(struct Sprite *);
|
||||||
void AnimFurySwipes(struct Sprite *);
|
void AnimFurySwipes(struct Sprite *);
|
||||||
void AnimMovmentWaves(struct Sprite *);
|
void AnimMovementWaves(struct Sprite *);
|
||||||
void AnimJaggedMusicNote(struct Sprite *);
|
void AnimJaggedMusicNote(struct Sprite *);
|
||||||
void AnimPerishSongMusicNote2(struct Sprite *);
|
void AnimPerishSongMusicNote2(struct Sprite *);
|
||||||
void AnimPerishSongMusicNote(struct Sprite *);
|
void AnimPerishSongMusicNote(struct Sprite *);
|
||||||
@@ -98,7 +98,7 @@ static void HeartsBackground_Step(u8);
|
|||||||
static void ScaryFace_Step(u8);
|
static void ScaryFace_Step(u8);
|
||||||
static void AnimOrbitFastStep(struct Sprite *);
|
static void AnimOrbitFastStep(struct Sprite *);
|
||||||
static void AnimOrbitScatterStep(struct Sprite *);
|
static void AnimOrbitScatterStep(struct Sprite *);
|
||||||
static void AnimMovmentWaves_Step(struct Sprite *);
|
static void AnimMovementWaves_Step(struct Sprite *);
|
||||||
static void UproarDistortion_Step(u8);
|
static void UproarDistortion_Step(u8);
|
||||||
static void AnimJaggedMusicNote_Step(struct Sprite *);
|
static void AnimJaggedMusicNote_Step(struct Sprite *);
|
||||||
static void AnimPerishSongMusicNote_Step1(struct Sprite *);
|
static void AnimPerishSongMusicNote_Step1(struct Sprite *);
|
||||||
@@ -1152,7 +1152,7 @@ const struct SpriteTemplate gMovementWavesSpriteTemplate = //gUnknown_83E43F8
|
|||||||
.anims = gMovementWavesAnimTable,
|
.anims = gMovementWavesAnimTable,
|
||||||
.images = NULL,
|
.images = NULL,
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
.callback = AnimMovmentWaves,
|
.callback = AnimMovementWaves,
|
||||||
};
|
};
|
||||||
|
|
||||||
const union AffineAnimCmd gUnknown_08593B98[] =
|
const union AffineAnimCmd gUnknown_08593B98[] =
|
||||||
@@ -3241,6 +3241,9 @@ void AnimTask_HeartsBackground(u8 taskId)
|
|||||||
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBg_AttractTilemap);
|
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimBg_AttractTilemap);
|
||||||
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBg_AttractGfx, animBg.tilesOffset);
|
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBg_AttractGfx, animBg.tilesOffset);
|
||||||
LoadCompressedPalette(gBattleAnimBg_AttractPal, animBg.paletteId * 16, 32);
|
LoadCompressedPalette(gBattleAnimBg_AttractPal, animBg.paletteId * 16, 32);
|
||||||
|
if (IsContest())
|
||||||
|
sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||||
|
|
||||||
gTasks[taskId].func = HeartsBackground_Step;
|
gTasks[taskId].func = HeartsBackground_Step;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3326,6 +3329,9 @@ void AnimTask_ScaryFace(u8 taskId)
|
|||||||
|
|
||||||
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_ScaryFaceGfx, animBg.tilesOffset);
|
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnim_ScaryFaceGfx, animBg.tilesOffset);
|
||||||
LoadCompressedPalette(gBattleAnim_ScaryFacePal, animBg.paletteId * 16, 32);
|
LoadCompressedPalette(gBattleAnim_ScaryFacePal, animBg.paletteId * 16, 32);
|
||||||
|
if (IsContest())
|
||||||
|
sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||||
|
|
||||||
gTasks[taskId].func = ScaryFace_Step;
|
gTasks[taskId].func = ScaryFace_Step;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3596,7 +3602,7 @@ void AnimFurySwipes(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimMovmentWaves(struct Sprite *sprite)
|
void AnimMovementWaves(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (!gBattleAnimArgs[2])
|
if (!gBattleAnimArgs[2])
|
||||||
{
|
{
|
||||||
@@ -3623,11 +3629,11 @@ void AnimMovmentWaves(struct Sprite *sprite)
|
|||||||
sprite->data[0] = gBattleAnimArgs[2];
|
sprite->data[0] = gBattleAnimArgs[2];
|
||||||
sprite->data[1] = gBattleAnimArgs[1];
|
sprite->data[1] = gBattleAnimArgs[1];
|
||||||
StartSpriteAnim(sprite, sprite->data[1]);
|
StartSpriteAnim(sprite, sprite->data[1]);
|
||||||
sprite->callback = AnimMovmentWaves_Step;
|
sprite->callback = AnimMovementWaves_Step;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AnimMovmentWaves_Step(struct Sprite *sprite)
|
static void AnimMovementWaves_Step(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (sprite->animEnded)
|
if (sprite->animEnded)
|
||||||
{
|
{
|
||||||
|
|||||||
+25
-45
@@ -2365,6 +2365,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
|
|||||||
{
|
{
|
||||||
sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||||
gBattle_BG1_X = -56;
|
gBattle_BG1_X = -56;
|
||||||
|
gBattle_BG1_Y = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2372,15 +2373,17 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
|
|||||||
gBattle_BG1_X = -135;
|
gBattle_BG1_X = -135;
|
||||||
else
|
else
|
||||||
gBattle_BG1_X = -10;
|
gBattle_BG1_X = -10;
|
||||||
|
|
||||||
|
gBattle_BG1_Y = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattle_BG1_Y = 0;
|
|
||||||
gTasks[taskId].data[10] = gBattle_BG1_X;
|
gTasks[taskId].data[10] = gBattle_BG1_X;
|
||||||
gTasks[taskId].data[11] = gBattle_BG1_Y;
|
gTasks[taskId].data[11] = gBattle_BG1_Y;
|
||||||
|
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64));
|
PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64));
|
||||||
break;
|
break;
|
||||||
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (gTasks[taskId].data[4]++ > 0)
|
if (gTasks[taskId].data[4]++ > 0)
|
||||||
{
|
{
|
||||||
@@ -3890,18 +3893,9 @@ void AnimTask_GlareEyeDots(u8 taskId)
|
|||||||
{
|
{
|
||||||
struct Task *task = &gTasks[taskId];
|
struct Task *task = &gTasks[taskId];
|
||||||
|
|
||||||
if (IsContest())
|
task->data[5] = 12;
|
||||||
{
|
task->data[6] = 3;
|
||||||
task->data[5] = 8;
|
task->data[7] = 0;
|
||||||
task->data[6] = 3;
|
|
||||||
task->data[7] = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
task->data[5] = 12;
|
|
||||||
task->data[6] = 3;
|
|
||||||
task->data[7] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||||
task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4;
|
task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4;
|
||||||
@@ -4379,29 +4373,22 @@ void AnimTask_HelpingHandAttackerMovement(u8 taskId)
|
|||||||
struct Task *task = &gTasks[taskId];
|
struct Task *task = &gTasks[taskId];
|
||||||
|
|
||||||
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||||
if (!IsContest())
|
if (IsDoubleBattle() == TRUE)
|
||||||
{
|
{
|
||||||
if (IsDoubleBattle() == TRUE)
|
int x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||||
{
|
int y = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), 0);
|
||||||
int x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
if (x > y)
|
||||||
int y = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), 0);
|
task->data[14] = 1;
|
||||||
if (x > y)
|
else
|
||||||
task->data[14] = 1;
|
task->data[14] = -1;
|
||||||
else
|
}
|
||||||
task->data[14] = -1;
|
else
|
||||||
}
|
{
|
||||||
else
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||||
{
|
task->data[14] = -1;
|
||||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
else
|
||||||
task->data[14] = -1;
|
task->data[14] = 1;
|
||||||
else
|
}
|
||||||
task->data[14] = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
task->data[14] = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
task->func = AnimTask_HelpingHandAttackerMovementStep;
|
task->func = AnimTask_HelpingHandAttackerMovementStep;
|
||||||
}
|
}
|
||||||
@@ -4641,7 +4628,7 @@ void AnimMeteorMashStar(struct Sprite *sprite)
|
|||||||
s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); // unused local variable
|
s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); // unused local variable
|
||||||
s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); // unused local variable
|
s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); // unused local variable
|
||||||
|
|
||||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest())
|
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0];
|
sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0];
|
||||||
sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2];
|
sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2];
|
||||||
@@ -4831,12 +4818,6 @@ void AnimTask_OdorSleuthMovement(u8 taskId)
|
|||||||
{
|
{
|
||||||
s16 spriteId1, spriteId2;
|
s16 spriteId1, spriteId2;
|
||||||
|
|
||||||
if (IsContest())
|
|
||||||
{
|
|
||||||
DestroyAnimVisualTask(taskId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
spriteId1 = CloneBattlerSpriteWithBlend(ANIM_TARGET);
|
spriteId1 = CloneBattlerSpriteWithBlend(ANIM_TARGET);
|
||||||
if (spriteId1 < 0)
|
if (spriteId1 < 0)
|
||||||
{
|
{
|
||||||
@@ -5095,7 +5076,7 @@ void sub_80E3E84(struct Sprite *sprite)
|
|||||||
sprite->data[0] = -32;
|
sprite->data[0] = -32;
|
||||||
sprite->data[7]++;
|
sprite->data[7]++;
|
||||||
sprite->invisible = 0;
|
sprite->invisible = 0;
|
||||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT && !IsContest())
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
|
||||||
sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
|
sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -5239,7 +5220,6 @@ static void AnimTask_TeeterDanceMovementStep(u8 taskId)
|
|||||||
|
|
||||||
static void AnimKnockOffStrikeStep(struct Sprite *sprite)
|
static void AnimKnockOffStrikeStep(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
// These two cases are identical.
|
|
||||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
sprite->data[1] += sprite->data[0];
|
sprite->data[1] += sprite->data[0];
|
||||||
|
|||||||
+40
-28
@@ -40,13 +40,13 @@
|
|||||||
#define LOHALF(n) ((n) & 0xFFFF)
|
#define LOHALF(n) ((n) & 0xFFFF)
|
||||||
|
|
||||||
// IWRAM
|
// IWRAM
|
||||||
//EWRAM_DATA int gUnknown_3005424 = 0;
|
EWRAM_DATA u16 gUnknown_3005424 = 0;
|
||||||
//EWRAM_DATA u16 gUnknown_3005428 = 0;
|
EWRAM_DATA u16 gUnknown_3005428 = 0;
|
||||||
//EWRAM_DATA u16 gUnknown_300542C = 0;
|
EWRAM_DATA u16 gUnknown_300542C = 0;
|
||||||
|
|
||||||
extern u32 gUnknown_3005424;
|
//extern u32 gUnknown_3005424;
|
||||||
extern u32 gUnknown_3005428;
|
//extern u32 gUnknown_3005428;
|
||||||
extern u32 gUnknown_300542C;
|
//extern u32 gUnknown_300542C;
|
||||||
|
|
||||||
// Function Declarations
|
// Function Declarations
|
||||||
static void sub_80EEDF4(u8);
|
static void sub_80EEDF4(u8);
|
||||||
@@ -704,12 +704,20 @@ void sub_80EF4B8(u8 taskId)
|
|||||||
DestroyAnimVisualTask(taskId);
|
DestroyAnimVisualTask(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimTask_IsBallBlockedByTrainer(u8 taskId)
|
void AnimTask_IsBallBlockedByTrainerOrDodged(u8 taskId)
|
||||||
{
|
{
|
||||||
if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK)
|
switch (gBattleSpritesDataPtr->animationData->ballThrowCaseId)
|
||||||
gBattleAnimArgs[ARG_RET_ID] = -1;
|
{
|
||||||
else
|
case BALL_TRAINER_BLOCK:
|
||||||
gBattleAnimArgs[ARG_RET_ID] = 0;
|
gBattleAnimArgs[ARG_RET_ID] = -1;
|
||||||
|
break;
|
||||||
|
case BALL_GHOST_DODGE:
|
||||||
|
gBattleAnimArgs[ARG_RET_ID] = -2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gBattleAnimArgs[ARG_RET_ID] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
DestroyAnimVisualTask(taskId);
|
DestroyAnimVisualTask(taskId);
|
||||||
}
|
}
|
||||||
@@ -902,8 +910,8 @@ static void sub_80EFA0C(struct Sprite *sprite)
|
|||||||
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
|
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
|
||||||
gTasks[taskId].data[10] = 256;
|
gTasks[taskId].data[10] = 256;
|
||||||
gUnknown_3005424 = 28;
|
gUnknown_3005424 = 28;
|
||||||
gUnknown_300542C = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
|
gUnknown_300542C = (gSprites[spriteId].pos2.y + gSprites[spriteId].pos1.y) - (sprite->pos2.y + sprite->pos1.y);
|
||||||
gUnknown_3005428 = (u32)(gUnknown_300542C * 256) / 28;
|
gUnknown_3005428 = (gUnknown_300542C * 256) / 28;
|
||||||
gTasks[taskId].data[2] = gUnknown_3005428;
|
gTasks[taskId].data[2] = gUnknown_3005428;
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
break;
|
break;
|
||||||
@@ -1209,7 +1217,7 @@ static void sub_80EFFC4(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
else if (sprite->data[4] == 95)
|
else if (sprite->data[4] == 95)
|
||||||
{
|
{
|
||||||
gDoingBattleAnim = 0;
|
gDoingBattleAnim = FALSE;
|
||||||
UpdateOamPriorityInAllHealthboxes(1);
|
UpdateOamPriorityInAllHealthboxes(1);
|
||||||
m4aMPlayAllStop();
|
m4aMPlayAllStop();
|
||||||
PlaySE(MUS_FAN6);
|
PlaySE(MUS_FAN6);
|
||||||
@@ -1364,7 +1372,7 @@ static void sub_80F0378(struct Sprite *sprite)
|
|||||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2;
|
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2;
|
||||||
sprite->data[0] = 0;
|
sprite->data[0] = 0;
|
||||||
sprite->callback = sub_80F018C;
|
sprite->callback = sub_80F018C;
|
||||||
gDoingBattleAnim = 0;
|
gDoingBattleAnim = FALSE;
|
||||||
UpdateOamPriorityInAllHealthboxes(1);
|
UpdateOamPriorityInAllHealthboxes(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1397,7 +1405,7 @@ static void sub_80F04B4(struct Sprite *sprite)
|
|||||||
{
|
{
|
||||||
sprite->data[0] = 0;
|
sprite->data[0] = 0;
|
||||||
sprite->callback = sub_80F018C;
|
sprite->callback = sub_80F018C;
|
||||||
gDoingBattleAnim = 0;
|
gDoingBattleAnim = FALSE;
|
||||||
UpdateOamPriorityInAllHealthboxes(1);
|
UpdateOamPriorityInAllHealthboxes(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1405,18 +1413,13 @@ static void sub_80F04B4(struct Sprite *sprite)
|
|||||||
// GhostBallDodge
|
// GhostBallDodge
|
||||||
static void sub_80F052C(struct Sprite *sprite)
|
static void sub_80F052C(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
s16 x;
|
sprite->pos1.x += sprite->pos2.x;
|
||||||
s16 y;
|
sprite->pos1.y += sprite->pos2.y;
|
||||||
|
sprite->pos2.x = sprite->pos2.y = 0;
|
||||||
x = sprite->pos1.x + sprite->pos2.x;
|
|
||||||
sprite->pos1.x = x;
|
|
||||||
y = sprite->pos1.y + sprite->pos2.y;
|
|
||||||
sprite->pos1.y = y;
|
|
||||||
sprite->pos2.x = sprite->pos2.y = 0;
|
|
||||||
sprite->data[0] = 0x22;
|
sprite->data[0] = 0x22;
|
||||||
sprite->data[1] = x;
|
sprite->data[1] = sprite->pos1.x;
|
||||||
sprite->data[2] = x - 8;
|
sprite->data[2] = sprite->pos1.x - 8;
|
||||||
sprite->data[3] = y;
|
sprite->data[3] = sprite->pos1.y;
|
||||||
sprite->data[4] = 0x90;
|
sprite->data[4] = 0x90;
|
||||||
sprite->data[5] = 0x20;
|
sprite->data[5] = 0x20;
|
||||||
InitAnimArcTranslation(sprite);
|
InitAnimArcTranslation(sprite);
|
||||||
@@ -1426,7 +1429,16 @@ static void sub_80F052C(struct Sprite *sprite)
|
|||||||
|
|
||||||
static void sub_80F0574(struct Sprite *sprite)
|
static void sub_80F0574(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
//to do
|
if (!TranslateAnimVerticalArc(sprite))
|
||||||
|
{
|
||||||
|
if ((sprite->pos1.y + sprite->pos2.y) < 65)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sprite->data[0] = 0;
|
||||||
|
sprite->callback = sub_80F018C;
|
||||||
|
gDoingBattleAnim = FALSE;
|
||||||
|
UpdateOamPriorityInAllHealthboxes(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80F05B4(u8 ballId)
|
static void sub_80F05B4(u8 ballId)
|
||||||
|
|||||||
Reference in New Issue
Block a user