@@ -888,7 +888,7 @@ void sub_8099BD4(u8 taskId)
|
||||
gTasks[taskId].data[12] = 0;
|
||||
gTasks[taskId].data[10] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[11] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[7] = GetAnimBattlerSpriteId(1);
|
||||
gTasks[taskId].data[7] = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].pos2.x;
|
||||
gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].pos2.y;
|
||||
gTasks[taskId].data[0] = 0;
|
||||
|
||||
@@ -1393,7 +1393,7 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
|
||||
void AnimThrowProjectile(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
@@ -1409,7 +1409,7 @@ static void AnimThrowProjectile_Step(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_8075F0C(struct Sprite *sprite)
|
||||
void AnimSnoreZ(struct Sprite *sprite)
|
||||
{
|
||||
bool8 r4;
|
||||
u8 battlerId, coordType;
|
||||
@@ -1434,7 +1434,7 @@ void sub_8075F0C(struct Sprite *sprite)
|
||||
InitSpritePosToAnimTarget(sprite, r4);
|
||||
battlerId = gBattleAnimTarget;
|
||||
}
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
InitSpritePosToAnimTarget(sprite, r4);
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
@@ -2070,7 +2070,7 @@ u8 sub_8076E34(s32 battlerId, u8 spriteId, s32 species)
|
||||
void sub_8076ED8(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
@@ -2113,7 +2113,7 @@ void sub_8076F58(struct Sprite *sprite)
|
||||
void sub_8076FD0(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
@@ -2210,7 +2210,7 @@ void sub_807729C(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
if (!GetBattlerSide(gBattleAnimAttacker))
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
sprite->data[0] = 5;
|
||||
else
|
||||
sprite->data[0] = -10;
|
||||
@@ -2237,7 +2237,7 @@ void sub_8077350(struct Sprite *sprite)
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4];
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5];
|
||||
if (!GetBattlerSide(gBattleAnimTarget))
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
{
|
||||
x = (u16)gBattleAnimArgs[4] + 30;
|
||||
sprite->pos1.x += x;
|
||||
|
||||
@@ -309,7 +309,7 @@ void sub_80BACEC(u8 taskId)
|
||||
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||
spriteId = GetAnimBattlerSpriteId(0);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species);
|
||||
sub_80752A0(&animBgData);
|
||||
AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap);
|
||||
@@ -354,7 +354,7 @@ static void sub_80BAF38(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
sprite = &gSprites[GetAnimBattlerSpriteId(0)]; // unused
|
||||
sprite = &gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)]; // unused
|
||||
sprite = &gSprites[gTasks[taskId].data[0]];
|
||||
DestroySprite(sprite);
|
||||
sub_80752A0(&animBgData);
|
||||
|
||||
@@ -181,7 +181,7 @@ static void OakOldManBufferRunCommand(void)
|
||||
{
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sOakOldManBufferCommands))
|
||||
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sOakOldManBufferCommands))
|
||||
sOakOldManBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
else
|
||||
OakOldManBufferExecCompleted();
|
||||
@@ -463,7 +463,7 @@ static void sub_80E7CD8(void)
|
||||
|
||||
static void Task_GiveExpToMon(u8 taskId)
|
||||
{
|
||||
u32 monId = (u8)(gTasks[taskId].tExpTask_monId);
|
||||
u32 monId = (u8)gTasks[taskId].tExpTask_monId;
|
||||
u8 battlerId = gTasks[taskId].tExpTask_battler;
|
||||
s16 gainedExp = gTasks[taskId].tExpTask_gainedExp;
|
||||
|
||||
@@ -487,7 +487,7 @@ static void Task_GiveExpToMon(u8 taskId)
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBattler;
|
||||
if (IsDoubleBattle() == TRUE
|
||||
&& ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]))
|
||||
&& ((u16)monId == gBattlerPartyIndexes[battlerId] || (u16)monId == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]))
|
||||
gTasks[taskId].func = Task_LaunchLvlUpAnim;
|
||||
else
|
||||
gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter;
|
||||
|
||||
@@ -1497,7 +1497,7 @@ static void OpponentHandleStatusIconUpdate(void)
|
||||
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
|
||||
battlerId = gActiveBattler;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = FALSE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1003,7 +1003,6 @@ static void CompleteOnHealthbarDone(void)
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
if (hpValue != -1)
|
||||
{
|
||||
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
|
||||
@@ -2544,7 +2543,7 @@ static void PlayerHandleStatusIconUpdate(void)
|
||||
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
|
||||
battlerId = gActiveBattler;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = FALSE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -85,9 +85,9 @@ static void InitSinglePlayerBtlControllers(void)
|
||||
gBattleMainFunc = BeginBattleIntro;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)
|
||||
{
|
||||
gBattlerControllerFuncs[0] = SetControllerToPokeDude;
|
||||
gBattlerControllerFuncs[0] = SetControllerToPokedude;
|
||||
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
||||
gBattlerControllerFuncs[1] = SetControllerToPokeDude;
|
||||
gBattlerControllerFuncs[1] = SetControllerToPokedude;
|
||||
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
||||
gBattlersCount = 2;
|
||||
}
|
||||
@@ -110,13 +110,13 @@ static void InitSinglePlayerBtlControllers(void)
|
||||
gBattleMainFunc = BeginBattleIntro;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)
|
||||
{
|
||||
gBattlerControllerFuncs[0] = SetControllerToPokeDude;
|
||||
gBattlerControllerFuncs[0] = SetControllerToPokedude;
|
||||
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
||||
gBattlerControllerFuncs[1] = SetControllerToPokeDude;
|
||||
gBattlerControllerFuncs[1] = SetControllerToPokedude;
|
||||
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
||||
gBattlerControllerFuncs[2] = SetControllerToPokeDude;
|
||||
gBattlerControllerFuncs[2] = SetControllerToPokedude;
|
||||
gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
|
||||
gBattlerControllerFuncs[3] = SetControllerToPokeDude;
|
||||
gBattlerControllerFuncs[3] = SetControllerToPokedude;
|
||||
gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
|
||||
gBattlersCount = MAX_BATTLERS_COUNT;
|
||||
}
|
||||
|
||||
@@ -7064,7 +7064,7 @@ static void atk8F_forcerandomswitch(void)
|
||||
u8 valid;
|
||||
u8 val;
|
||||
|
||||
if (!GetBattlerSide(gBattlerTarget))
|
||||
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
|
||||
party = gPlayerParty;
|
||||
else
|
||||
party = gEnemyParty;
|
||||
|
||||
+1
-1
@@ -13,7 +13,6 @@
|
||||
#include "strings.h"
|
||||
#include "string_util.h"
|
||||
#include "event_data.h"
|
||||
#include "unk_8159F40.h"
|
||||
#include "map_obj_80688E4.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "event_scripts.h"
|
||||
@@ -28,6 +27,7 @@
|
||||
#include "battle.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_transition.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "constants/battle_setup.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
@@ -172,7 +172,7 @@ static const union AffineAnimCmd gUnknown_83E733C[] =
|
||||
AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 18),
|
||||
AFFINEANIMCMD_LOOP(0),
|
||||
AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(-0x5, -0x5, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 8),
|
||||
AFFINEANIMCMD_LOOP(5),
|
||||
AFFINEANIMCMD_END,
|
||||
@@ -202,7 +202,7 @@ static void sub_80B3FAC(struct Sprite *sprite)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
}
|
||||
else if (!GetBattlerSide(gBattleAnimTarget))
|
||||
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
@@ -226,7 +226,7 @@ static void sub_80B407C(struct Sprite *sprite)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
StartSpriteAffineAnim(sprite, 2);
|
||||
}
|
||||
else if (!GetBattlerSide(gBattleAnimTarget))
|
||||
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
@@ -283,12 +283,12 @@ static void sub_80B41C0(struct Sprite *sprite)
|
||||
static void sub_80B41F8(struct Sprite *sprite)
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
if (!GetBattlerSide(gBattleAnimTarget))
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
sprite->pos1.y += 8;
|
||||
sprite->callback = sub_80B4274;
|
||||
}
|
||||
@@ -356,7 +356,7 @@ static void AnimTranslateStinger(struct Sprite *sprite)
|
||||
{
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
}
|
||||
else if (GetBattlerSide(gBattleAnimAttacker))
|
||||
else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
@@ -399,7 +399,7 @@ static void AnimTranslateStinger(struct Sprite *sprite)
|
||||
static void AnimMissileArc(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
|
||||
+1272
File diff suppressed because it is too large
Load Diff
+971
@@ -0,0 +1,971 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "random.h"
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
|
||||
static void unc_080B08A0(struct Sprite *sprite);
|
||||
static void sub_80B08DC(struct Sprite *sprite);
|
||||
static void sub_80B0928(struct Sprite *sprite);
|
||||
static void AnimBasicFistOrFoot(struct Sprite *sprite);
|
||||
static void sub_80B09A4(struct Sprite *sprite);
|
||||
static void sub_80B0B80(struct Sprite *sprite);
|
||||
static void sub_80B0C28(struct Sprite *sprite);
|
||||
static void AnimSpinningKickOrPunch(struct Sprite *sprite);
|
||||
static void AnimStompFoot(struct Sprite *sprite);
|
||||
static void sub_80B0DF0(struct Sprite *sprite);
|
||||
static void sub_80B0E80(struct Sprite *sprite);
|
||||
static void sub_80B0F68(struct Sprite *sprite);
|
||||
static void sub_80B107C(struct Sprite *sprite);
|
||||
static void sub_80B1188(struct Sprite *sprite);
|
||||
static void sub_80B12E8(struct Sprite *sprite);
|
||||
static void sub_80B13F8(struct Sprite *sprite);
|
||||
static void sub_80B1484(struct Sprite *sprite);
|
||||
static void sub_80B14F0(struct Sprite *sprite);
|
||||
static void sub_80B0B2C(struct Sprite *sprite);
|
||||
static void sub_80B0BD8(struct Sprite *sprite);
|
||||
static void sub_80B0CB4(struct Sprite *sprite);
|
||||
static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite);
|
||||
static void AnimStompFootStep(struct Sprite *sprite);
|
||||
static void AnimStompFootEnd(struct Sprite *sprite);
|
||||
static void sub_80B0EF0(struct Sprite *sprite);
|
||||
static void sub_80B1050(struct Sprite *sprite);
|
||||
static void sub_80B111C(struct Sprite *sprite);
|
||||
static void sub_80B11E4(struct Sprite *sprite);
|
||||
static void sub_80B12A4(struct Sprite *sprite);
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E668C =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HUMANOID_FOOT,
|
||||
.paletteTag = ANIM_TAG_HUMANOID_FOOT,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = unc_080B08A0,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E66A4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E66AC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(16, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E66B4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E66BC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(48, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E66C4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(48, 1, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E66CC[] =
|
||||
{
|
||||
gUnknown_83E66A4,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E66D0[] =
|
||||
{
|
||||
gUnknown_83E66AC,
|
||||
gUnknown_83E66B4,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E66D8[] =
|
||||
{
|
||||
gUnknown_83E66BC,
|
||||
gUnknown_83E66C4,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E66E0 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E66CC,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B08DC,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E66F8 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E66CC,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B0928,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFistFootSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E66CC,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimBasicFistOrFoot,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6728 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E66CC,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B09A4,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6740 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E66D8,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B0B80,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6758 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E66D0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B0C28,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E6770[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 20, 1),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E6788[] =
|
||||
{
|
||||
gUnknown_83E6770,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E678C =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83ACA98,
|
||||
.anims = gUnknown_83E66CC,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6788,
|
||||
.callback = AnimSpinningKickOrPunch,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E67A4[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(-0x4, -0x4, 20, 1),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E67BC[] =
|
||||
{
|
||||
gUnknown_83E67A4,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gMegaPunchKickSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83ACA98,
|
||||
.anims = gUnknown_83E66CC,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E67BC,
|
||||
.callback = AnimSpinningKickOrPunch,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E67D8 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E66D0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimStompFoot,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E67F0 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_DUCK,
|
||||
.paletteTag = ANIM_TAG_DUCK,
|
||||
.oam = &gOamData_83AC9D0,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B0DF0,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6808 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_BLUE_LIGHT_WALL,
|
||||
.paletteTag = ANIM_TAG_BLUE_LIGHT_WALL,
|
||||
.oam = &gOamData_83ACB00,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B0E80,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6820 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_TORN_METAL,
|
||||
.paletteTag = ANIM_TAG_TORN_METAL,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B0F68,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E6838[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 64),
|
||||
AFFINEANIMCMD_FRAME(-0x6, -0x6, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 8),
|
||||
AFFINEANIMCMD_JUMP(2),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E6860[] =
|
||||
{
|
||||
gUnknown_83E6838,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6864 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
.paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
.oam = &gOamData_83ACBC0,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6860,
|
||||
.callback = sub_80B107C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E687C =
|
||||
{
|
||||
.tileTag = ANIM_TAG_FLAT_ROCK,
|
||||
.paletteTag = ANIM_TAG_FLAT_ROCK,
|
||||
.oam = &gOamData_83AC9D0,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B1188,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6894 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_METEOR,
|
||||
.paletteTag = ANIM_TAG_METEOR,
|
||||
.oam = &gOamData_83AC9E0,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B12E8,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E68AC =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E66CC,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B13F8,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E68C4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(16, 4),
|
||||
ANIMCMD_FRAME(32, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E68D4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4, .vFlip = TRUE),
|
||||
ANIMCMD_FRAME(16, 4, .vFlip = TRUE),
|
||||
ANIMCMD_FRAME(32, 4, .vFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E68E4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E68F4[] =
|
||||
{
|
||||
gUnknown_83E68C4,
|
||||
gUnknown_83E68D4,
|
||||
gUnknown_83E68E4,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6900 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_PURPLE_SCRATCH,
|
||||
.paletteTag = ANIM_TAG_PURPLE_SCRATCH,
|
||||
.oam = &gOamData_83AC9D8,
|
||||
.anims = gUnknown_83E68F4,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B1484,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E6918[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 6),
|
||||
ANIMCMD_FRAME(64, 6),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E6924[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 6, .vFlip = TRUE, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(64, 6, .vFlip = TRUE, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E6930[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 6, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(64, 6, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E693C[] =
|
||||
{
|
||||
gUnknown_83E6918,
|
||||
gUnknown_83E6924,
|
||||
gUnknown_83E6930,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6948 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_PURPLE_SWIPE,
|
||||
.paletteTag = ANIM_TAG_PURPLE_SWIPE,
|
||||
.oam = &gOamData_83AC9E0,
|
||||
.anims = gUnknown_83E693C,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B1484,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E6960[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(-0x20, -0x20, 0, 8),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E6978[] =
|
||||
{
|
||||
gUnknown_83E6960,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E697C =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_83ACA98,
|
||||
.anims = gUnknown_83E66CC,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6978,
|
||||
.callback = sub_80B14F0,
|
||||
};
|
||||
|
||||
static void unc_080B08A0(struct Sprite *sprite)
|
||||
{
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = 15;
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
static void sub_80B08DC(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[7] == 1 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
}
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[6]);
|
||||
gBattleAnimArgs[6] = 0;
|
||||
AnimSnoreZ(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B0928(struct Sprite *sprite)
|
||||
{
|
||||
if (IsContest())
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
}
|
||||
sub_80B08DC(sprite);
|
||||
}
|
||||
|
||||
// Displays a basic fist or foot sprite for a given duration.
|
||||
// Used by many fighting moves (and elemental "punch" moves).
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: duration
|
||||
// arg 3: ? (todo: related to initial pixel offsets)
|
||||
// arg 4: anim num
|
||||
static void AnimBasicFistOrFoot(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
|
||||
if (gBattleAnimArgs[3] == 0)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
static void sub_80B09A4(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler;
|
||||
s16 xMod, yMod;
|
||||
s16 x, y;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
if (gBattleAnimArgs[2] < 0)
|
||||
gBattleAnimArgs[2] = Random() % 5;
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
|
||||
xMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 2;
|
||||
yMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
|
||||
x = Random() % xMod;
|
||||
y = Random() % yMod;
|
||||
if (Random() & 1)
|
||||
x *= -1;
|
||||
if (Random() & 1)
|
||||
y *= -1;
|
||||
if ((gBattlerPositions[battler] & BIT_SIDE) == B_SIDE_PLAYER)
|
||||
y += 0xFFF0;
|
||||
sprite->pos1.x += x;
|
||||
sprite->pos1.y += y;
|
||||
sprite->data[0] = gBattleAnimArgs[1];
|
||||
sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
|
||||
if (sprite->data[7] != 64)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
|
||||
gSprites[sprite->data[7]].callback = SpriteCallbackDummy;
|
||||
}
|
||||
sprite->callback = sub_80B0B2C;
|
||||
}
|
||||
|
||||
static void sub_80B0B2C(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
if (sprite->data[7] != 64)
|
||||
{
|
||||
FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[sprite->data[7]]);
|
||||
}
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
--sprite->data[0];
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B0B80(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->data[0] = 30;
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x - 20;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x + 20;
|
||||
sprite->hFlip = 1;
|
||||
}
|
||||
sprite->data[4] = sprite->pos1.y - 20;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, sub_80B0BD8);
|
||||
}
|
||||
|
||||
static void sub_80B0BD8(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[5] == 11)
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x - sprite->pos2.x;
|
||||
sprite->data[4] = sprite->pos1.y - sprite->pos2.y;
|
||||
sprite->data[0] = 8;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B0C28(struct Sprite *sprite)
|
||||
{
|
||||
if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT)
|
||||
gBattleAnimArgs[0] *= -1;
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y;
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
sprite->data[6] = gBattleAnimArgs[4];
|
||||
sprite->data[7] = 0;
|
||||
sprite->callback = sub_80B0CB4;
|
||||
}
|
||||
|
||||
static void sub_80B0CB4(struct Sprite *sprite)
|
||||
{
|
||||
if (!AnimTranslateLinear(sprite))
|
||||
{
|
||||
sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
|
||||
sprite->data[7] += sprite->data[6];
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
// Animates the spinning, shrinking kick or punch, which then
|
||||
// reappears at full size. Used by moves such as MOVE_MEGA_PUNCH and MOVE_MEGA_KICK.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: anim num
|
||||
// arg 3: spin duration
|
||||
static void AnimSpinningKickOrPunch(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, AnimSpinningKickOrPunchFinish);
|
||||
}
|
||||
|
||||
static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, 0);
|
||||
sprite->affineAnimPaused = 1;
|
||||
sprite->data[0] = 20;
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Animates MOVE_STOMP's foot that slides downward.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: initial wait duration
|
||||
static void AnimStompFoot(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->callback = AnimStompFootStep;
|
||||
}
|
||||
|
||||
static void AnimStompFootStep(struct Sprite *sprite)
|
||||
{
|
||||
if (--sprite->data[0] == -1)
|
||||
{
|
||||
sprite->data[0] = 6;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, AnimStompFootEnd);
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimStompFootEnd(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 15;
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
static void sub_80B0DF0(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = gBattleAnimArgs[3];
|
||||
++sprite->data[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[4] >> 8;
|
||||
sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
|
||||
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
|
||||
if (sprite->data[3] > 100)
|
||||
sprite->invisible = sprite->data[3] % 2;
|
||||
if (sprite->data[3] > 120)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B0E80(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
}
|
||||
sprite->pos1.x += gBattleAnimArgs[1];
|
||||
sprite->pos1.y += gBattleAnimArgs[2];
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
sprite->data[3] = 0;
|
||||
sprite->callback = sub_80B0EF0;
|
||||
}
|
||||
|
||||
static void sub_80B0EF0(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (--sprite->data[1] == 0)
|
||||
{
|
||||
if (sprite->data[2] == 0)
|
||||
DestroyAnimSprite(sprite);
|
||||
else
|
||||
++sprite->data[0];
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++sprite->data[1] > 1)
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
++sprite->data[3];
|
||||
if (sprite->data[3] & 1)
|
||||
sprite->pos2.x = 2;
|
||||
else
|
||||
sprite->pos2.x = -2;
|
||||
}
|
||||
|
||||
if (--sprite->data[2] == 0)
|
||||
DestroyAnimSprite(sprite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B0F68(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
|
||||
}
|
||||
sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
|
||||
sprite->data[0] = 0;
|
||||
switch (gBattleAnimArgs[1])
|
||||
{
|
||||
case 0:
|
||||
sprite->data[6] = -3;
|
||||
sprite->data[7] = -3;
|
||||
break;
|
||||
case 1:
|
||||
sprite->data[6] = 3;
|
||||
sprite->data[7] = -3;
|
||||
break;
|
||||
case 2:
|
||||
sprite->data[6] = -3;
|
||||
sprite->data[7] = 3;
|
||||
break;
|
||||
case 3:
|
||||
sprite->data[6] = 3;
|
||||
sprite->data[7] = 3;
|
||||
break;
|
||||
default:
|
||||
DestroyAnimSprite(sprite);
|
||||
return;
|
||||
}
|
||||
sprite->callback = sub_80B1050;
|
||||
}
|
||||
|
||||
static void sub_80B1050(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += sprite->data[6];
|
||||
sprite->pos1.y += sprite->data[7];
|
||||
if (++sprite->data[0] > 40)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B107C(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
sprite->data[7] = gBattleAnimTarget;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
|
||||
sprite->data[7] = gBattleAnimAttacker;
|
||||
}
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 12;
|
||||
sprite->data[2] = 8;
|
||||
sprite->callback = sub_80B111C;
|
||||
}
|
||||
|
||||
static void sub_80B111C(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] == 180)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
sprite->data[0] = 16;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = sub_807563C;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B1188(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[0];
|
||||
sprite->pos1.y = 120;
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
|
||||
sprite->data[6] = gBattleAnimArgs[1];
|
||||
sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
|
||||
sprite->callback = sub_80B11E4;
|
||||
}
|
||||
|
||||
static void sub_80B11E4(struct Sprite *sprite)
|
||||
{
|
||||
void *var0;
|
||||
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
var0 = LoadPointerFromVars(sprite->data[4], sprite->data[5]);
|
||||
var0 -= sprite->data[6];
|
||||
StorePointerInVars(&sprite->data[4], &sprite->data[5], var0);
|
||||
var0 = (void *)(((intptr_t)var0) >> 8);
|
||||
sprite->pos1.y = (intptr_t)var0;
|
||||
if (sprite->pos1.y < -8)
|
||||
DestroyAnimSprite(sprite);
|
||||
else
|
||||
--sprite->data[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
|
||||
sprite->data[0] = pos2 - pos0;
|
||||
sprite->data[1] = pos3 - pos1;
|
||||
sprite->data[2] = sprite->pos1.x << 4;
|
||||
sprite->data[3] = sprite->pos1.y << 4;
|
||||
sprite->callback = sub_80B12A4;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B12A4(struct Sprite *sprite)
|
||||
{
|
||||
u16 edgeX;
|
||||
|
||||
sprite->data[2] += sprite->data[0];
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->pos1.x = sprite->data[2] >> 4;
|
||||
sprite->pos1.y = sprite->data[3] >> 4;
|
||||
edgeX = sprite->pos1.x + 8;
|
||||
if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B12E8(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
battler = gBattleAnimTarget;
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
}
|
||||
else
|
||||
{
|
||||
battler = gBattleAnimAttacker;
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
|
||||
}
|
||||
if (IsContest())
|
||||
sprite->oam.matrixNum |= ST_OAM_HFLIP;
|
||||
else if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP);
|
||||
sprite->data[0] = 16;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(battler, 3);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->callback = sub_807563C;
|
||||
}
|
||||
|
||||
static void sub_80B13D4(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == sprite->data[4])
|
||||
DestroyAnimSprite(sprite);
|
||||
++sprite->data[0];
|
||||
}
|
||||
|
||||
static void sub_80B13F8(struct Sprite *sprite)
|
||||
{
|
||||
u8 turn;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[1];
|
||||
sprite->data[4] = gBattleAnimArgs[2];
|
||||
turn = gAnimMoveTurn;
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
++turn;
|
||||
if (turn & 1)
|
||||
{
|
||||
sprite->data[2] = -sprite->data[2];
|
||||
++sprite->data[1];
|
||||
}
|
||||
StartSpriteAnim(sprite, sprite->data[1]);
|
||||
sprite->pos2.x = sprite->data[2];
|
||||
sprite->pos2.y = sprite->data[3];
|
||||
sprite->callback = sub_80B13D4;
|
||||
}
|
||||
|
||||
static void sub_80B1484(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
InitSpritePosToAnimAttacker(sprite, 0);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
if (IsContest())
|
||||
StartSpriteAnim(sprite, 2);
|
||||
else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
StartSpriteAnim(sprite, 1);
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
static void sub_80B14F0(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->affineAnimEnded)
|
||||
{
|
||||
sprite->data[1] = (sprite->data[1] + 40) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[1], 2);
|
||||
if (++sprite->data[0] > 40)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80B1530(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
sub_8075458(0);
|
||||
task->data[8] = gBattleAnimArgs[0];
|
||||
++task->data[0];
|
||||
break;
|
||||
case 1:
|
||||
if (--task->data[8] == -1)
|
||||
++task->data[0];
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
task->data[9] += 1280;
|
||||
break;
|
||||
}
|
||||
task->data[10] += 2816;
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
gBattle_BG3_X += task->data[9] >> 8;
|
||||
else
|
||||
gBattle_BG3_X -= task->data[9] >> 8;
|
||||
gBattle_BG3_Y += task->data[10] >> 8;
|
||||
task->data[9] &= 0xFF;
|
||||
task->data[10] &= 0xFF;
|
||||
if (gBattleAnimArgs[7] == -1)
|
||||
{
|
||||
gBattle_BG3_X = 0;
|
||||
gBattle_BG3_Y = 0;
|
||||
sub_8075458(1);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
+1193
File diff suppressed because it is too large
Load Diff
+15
-15
@@ -98,8 +98,8 @@ static const union AffineAnimCmd gUnknown_83E6B64[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10),
|
||||
AFFINEANIMCMD_FRAME(0x0, -0x20, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(-0x10, 0x20, 0, 10),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
@@ -232,9 +232,9 @@ static const union AffineAnimCmd gUnknown_83E6C9C[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(0xFFEC, 0x0, 0, 7),
|
||||
AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(0x0, -0x20, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(-0x14, 0x0, 0, 7),
|
||||
AFFINEANIMCMD_FRAME(-0x14, -0x14, 0, 5),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
@@ -280,8 +280,8 @@ static const union AffineAnimCmd gUnknown_83E6D14[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10),
|
||||
AFFINEANIMCMD_FRAME(0x0, -0x20, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(-0x10, 0x20, 0, 10),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
@@ -306,7 +306,7 @@ static const union AffineAnimCmd gUnknown_83E6D58[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 11),
|
||||
AFFINEANIMCMD_FRAME(0x0, -0x20, 0, 11),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
@@ -995,8 +995,8 @@ static void sub_80B2780(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, 0);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
if ((!gBattleAnimArgs[2] && !GetBattlerSide(gBattleAnimAttacker))
|
||||
|| (gBattleAnimArgs[2] == 1 && !GetBattlerSide(gBattleAnimTarget)))
|
||||
if ((!gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
|| (gBattleAnimArgs[2] == 1 && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER))
|
||||
sprite->pos1.x += 8;
|
||||
SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
|
||||
sprite->pos1.x -= 32;
|
||||
@@ -1048,7 +1048,7 @@ static void sub_80B2914(struct Sprite *sprite)
|
||||
{
|
||||
case 0:
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
gSprites[GetAnimBattlerSpriteId(0)].invisible = TRUE;
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE;
|
||||
++sprite->data[0];
|
||||
break;
|
||||
case 1:
|
||||
@@ -1076,7 +1076,7 @@ static void sub_80B2974(struct Sprite *sprite)
|
||||
sprite->pos2.y -= 10;
|
||||
if (sprite->pos1.y + sprite->pos2.y < -32)
|
||||
{
|
||||
gSprites[GetAnimBattlerSpriteId(0)].invisible = FALSE;
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
break;
|
||||
@@ -1089,7 +1089,7 @@ static void sub_80B2A08(struct Sprite *sprite)
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80B2A50;
|
||||
gSprites[GetAnimBattlerSpriteId(0)].invisible = TRUE;
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE;
|
||||
}
|
||||
|
||||
static void sub_80B2A50(struct Sprite *sprite)
|
||||
@@ -1275,13 +1275,13 @@ static void sub_80B2E64(u8 taskId)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(0);
|
||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(0);
|
||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
}
|
||||
|
||||
+6
-6
@@ -50,7 +50,7 @@ static void sub_80B71B0(struct Sprite *sprite);
|
||||
static const union AffineAnimCmd gUnknown_83E75A8[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x1E, 0x1E, 10, 5),
|
||||
AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 10, 5),
|
||||
AFFINEANIMCMD_FRAME(-0x1E, -0x1E, 10, 5),
|
||||
AFFINEANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
@@ -342,7 +342,7 @@ void sub_80B54E8(u8 taskId)
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
|
||||
spriteId = GetAnimBattlerSpriteId(0);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
|
||||
SetSpriteRotScale(spriteId, 128, 128, 0);
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
@@ -377,7 +377,7 @@ static void sub_80B55C8(u8 taskId)
|
||||
gTasks[taskId].data[1] -= 1;
|
||||
return;
|
||||
}
|
||||
spriteId = GetAnimBattlerSpriteId(0);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
gTasks[taskId].data[0] += 8;
|
||||
if (gTasks[taskId].data[0] <= 0xFF)
|
||||
{
|
||||
@@ -626,7 +626,7 @@ static void sub_80B5AD4(u8 taskId)
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
task->data[3] = 16;
|
||||
task->data[13] = GetAnimBattlerSpriteId(1);
|
||||
task->data[13] = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
task->data[4] = (gSprites[task->data[13]].oam.paletteNum + 16) * 16;
|
||||
if (position == 1)
|
||||
{
|
||||
@@ -711,7 +711,7 @@ static void sub_80B5DCC(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
gScanlineEffect.state = 3;
|
||||
task->data[14] = GetAnimBattlerSpriteId(1);
|
||||
task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
if (rank == 1)
|
||||
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
|
||||
else
|
||||
@@ -1288,7 +1288,7 @@ static void sub_80B6BE4(u8 taskId)
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
task->data[3] = 16;
|
||||
task->data[4] = GetAnimBattlerSpriteId(0);
|
||||
task->data[4] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
task->data[5] = gSprites[task->data[4]].oam.priority;
|
||||
task->data[6] = (gSprites[task->data[4]].oam.paletteNum + 16) << 4;
|
||||
gSprites[task->data[4]].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
|
||||
+4
-4
@@ -298,7 +298,7 @@ static void sub_80B8ED4(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[10] = GetAnimBattlerSpriteId(0);
|
||||
task->data[10] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
task->data[11] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
|
||||
if (task->data[11] == 1)
|
||||
{
|
||||
@@ -360,7 +360,7 @@ static void sub_80B8ED4(u8 taskId)
|
||||
|
||||
static void sub_80B908C(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(0);
|
||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
@@ -391,7 +391,7 @@ static void sub_80B912C(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[10] = GetAnimBattlerSpriteId(0);
|
||||
task->data[10] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
gSprites[task->data[10]].invisible = FALSE;
|
||||
gSprites[task->data[10]].pos2.x = 0;
|
||||
gSprites[task->data[10]].pos2.y = 160 - gSprites[task->data[10]].pos1.y;
|
||||
@@ -410,7 +410,7 @@ static void sub_80B91B0(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[10] = GetAnimBattlerSpriteId(0);
|
||||
task->data[10] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
task->data[11] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
|
||||
if (task->data[11] == 1)
|
||||
task->data[12] = gBattle_BG1_X;
|
||||
|
||||
+298
@@ -0,0 +1,298 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "trig.h"
|
||||
|
||||
static void sub_80B1620(struct Sprite *sprite);
|
||||
static void sub_80B16A0(struct Sprite *sprite);
|
||||
static void sub_80B1744(struct Sprite *sprite);
|
||||
static void sub_80B17C4(struct Sprite *sprite);
|
||||
static void AnimBubbleEffect(struct Sprite *sprite);
|
||||
static void sub_80B1684(struct Sprite *sprite);
|
||||
static void sub_80B1728(struct Sprite *sprite);
|
||||
static void sub_80B1798(struct Sprite *sprite);
|
||||
static void AnimBubbleEffectStep(struct Sprite *sprite);
|
||||
|
||||
static const union AnimCmd gUnknown_83E6994[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_FRAME(8, 5),
|
||||
ANIMCMD_FRAME(16, 5),
|
||||
ANIMCMD_FRAME(24, 5),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E69A8[] =
|
||||
{
|
||||
gUnknown_83E6994,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E69AC =
|
||||
{
|
||||
.tileTag = ANIM_TAG_TOXIC_BUBBLE,
|
||||
.paletteTag = ANIM_TAG_TOXIC_BUBBLE,
|
||||
.oam = &gOamData_83ACA18,
|
||||
.anims = gUnknown_83E69A8,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E69C4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E69CC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(4, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E69D4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(8, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E69DC[] =
|
||||
{
|
||||
gUnknown_83E69C4,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E69E0[] =
|
||||
{
|
||||
gUnknown_83E69CC,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E69E4[] =
|
||||
{
|
||||
gUnknown_83E69D4,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E69E8[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x160, 0x160, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(-0xA, -0xA, 0, 10),
|
||||
AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
|
||||
AFFINEANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E6A08[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xEC, 0xEC, 0, 0),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E6A18[] =
|
||||
{
|
||||
gUnknown_83E69E8,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E6A1C[] =
|
||||
{
|
||||
gUnknown_83E6A08,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6A20 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = &gOamData_83ACA90,
|
||||
.anims = gUnknown_83E69DC,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6A18,
|
||||
.callback = sub_80B1620,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6A38 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = &gOamData_83ACA90,
|
||||
.anims = gUnknown_83E69DC,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6A18,
|
||||
.callback = sub_80B16A0,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6A50 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = &gOamData_83ACA30,
|
||||
.anims = gUnknown_83E69E4,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6A1C,
|
||||
.callback = sub_80B1744,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E6A68[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(-0x10, 0x10, 0, 6),
|
||||
AFFINEANIMCMD_FRAME(0x10, -0x10, 0, 6),
|
||||
AFFINEANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E6A80[] =
|
||||
{
|
||||
gUnknown_83E6A68,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6A84 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = &gOamData_83ACA90,
|
||||
.anims = gUnknown_83E69E0,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6A80,
|
||||
.callback = sub_80B17C4,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E6A9C[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x9C, 0x9C, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 20),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E6AB4[] =
|
||||
{
|
||||
gUnknown_83E6A9C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gPoisonBubbleSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = &gOamData_83ACA30,
|
||||
.anims = gUnknown_83E69DC,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6AB4,
|
||||
.callback = AnimBubbleEffect,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gWaterBubbleSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SMALL_BUBBLES,
|
||||
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
|
||||
.oam = &gOamData_83ACB50,
|
||||
.anims = gUnknown_83E5A78,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E6AB4,
|
||||
.callback = AnimBubbleEffect,
|
||||
};
|
||||
|
||||
static void sub_80B1620(struct Sprite *sprite)
|
||||
{
|
||||
if (!gBattleAnimArgs[3])
|
||||
StartSpriteAnim(sprite, 2);
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[5] = -30;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = sub_80B1684;
|
||||
}
|
||||
|
||||
static void sub_80B1684(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B16A0(struct Sprite *sprite)
|
||||
{
|
||||
s16 l1, l2;
|
||||
|
||||
if (!gBattleAnimArgs[3])
|
||||
StartSpriteAnim(sprite, 2);
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &l1, &l2);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
gBattleAnimArgs[4] = -gBattleAnimArgs[4];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = l1 + gBattleAnimArgs[4];
|
||||
sprite->data[4] = l2 + gBattleAnimArgs[5];
|
||||
sprite->data[5] = -30;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = sub_80B1728;
|
||||
}
|
||||
|
||||
static void sub_80B1728(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B1744(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2];
|
||||
sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2];
|
||||
sprite->callback = sub_80B1798;
|
||||
}
|
||||
|
||||
static void sub_80B1798(struct Sprite *sprite)
|
||||
{
|
||||
TranslateSpriteLinearFixedPoint(sprite);
|
||||
sprite->data[1] -= sprite->data[5];
|
||||
sprite->data[2] -= sprite->data[6];
|
||||
if (!sprite->data[0])
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B17C4(struct Sprite *sprite)
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->pos1.y + sprite->data[0];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Animates a bubble by rising upward, swaying side to side, and
|
||||
// enlarging the sprite. This is used as an after-effect by poison-type
|
||||
// moves, along with MOVE_BUBBLE, and MOVE_BUBBLEBEAM.
|
||||
// arg 0: initial x pixel offset
|
||||
// arg 1: initial y pixel offset
|
||||
// arg 2: 0 = single-target, 1 = multi-target
|
||||
static void AnimBubbleEffect(struct Sprite *sprite)
|
||||
{
|
||||
if (!gBattleAnimArgs[2])
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
}
|
||||
sprite->callback = AnimBubbleEffectStep;
|
||||
}
|
||||
|
||||
static void AnimBubbleEffectStep(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[0], 4);
|
||||
sprite->data[1] += 0x30;
|
||||
sprite->pos2.y = -(sprite->data[1] >> 8);
|
||||
if (sprite->affineAnimEnded)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
+10
-10
@@ -2365,25 +2365,25 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | /*BATTLE_TYPE_BATTLE_TOWER |*/ BATTLE_TYPE_EREADER_TRAINER)))
|
||||
{
|
||||
if (FlagGet(FLAG_BADGE01_GET)
|
||||
&& !GetBattlerSide(battlerIdAtk))
|
||||
&& GetBattlerSide(battlerIdAtk) == B_SIDE_PLAYER)
|
||||
attack = (110 * attack) / 100;
|
||||
}
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | /*BATTLE_TYPE_BATTLE_TOWER |*/ BATTLE_TYPE_EREADER_TRAINER)))
|
||||
{
|
||||
if (FlagGet(FLAG_BADGE05_GET)
|
||||
&& !GetBattlerSide(battlerIdDef))
|
||||
&& GetBattlerSide(battlerIdDef) == B_SIDE_PLAYER)
|
||||
defense = (110 * defense) / 100;
|
||||
}
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | /*BATTLE_TYPE_BATTLE_TOWER |*/ BATTLE_TYPE_EREADER_TRAINER)))
|
||||
{
|
||||
if (FlagGet(FLAG_BADGE07_GET)
|
||||
&& !GetBattlerSide(battlerIdAtk))
|
||||
&& GetBattlerSide(battlerIdAtk) == B_SIDE_PLAYER)
|
||||
spAttack = (110 * spAttack) / 100;
|
||||
}
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | /*BATTLE_TYPE_BATTLE_TOWER |*/ BATTLE_TYPE_EREADER_TRAINER)))
|
||||
{
|
||||
if (FlagGet(FLAG_BADGE07_GET)
|
||||
&& !GetBattlerSide(battlerIdDef))
|
||||
&& GetBattlerSide(battlerIdDef) == B_SIDE_PLAYER)
|
||||
spDefense = (110 * spDefense) / 100;
|
||||
}
|
||||
|
||||
@@ -3917,7 +3917,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
if (gMain.inBattle)
|
||||
{
|
||||
gActiveBattler = gBattlerInMenuId;
|
||||
cmdIndex = (GetBattlerSide(gActiveBattler) != 0);
|
||||
cmdIndex = (GetBattlerSide(gActiveBattler) != B_SIDE_PLAYER);
|
||||
while (cmdIndex < gBattlersCount)
|
||||
{
|
||||
if (gBattlerPartyIndexes[cmdIndex] == partyIndex)
|
||||
@@ -4118,13 +4118,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
{
|
||||
gAbsentBattlerFlags &= ~gBitTable[sp34];
|
||||
CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlerPartyIndexes[sp34]));
|
||||
if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.numRevivesUsed < 255)
|
||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255)
|
||||
gBattleResults.numRevivesUsed++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gAbsentBattlerFlags &= ~gBitTable[gActiveBattler ^ 2];
|
||||
if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.numRevivesUsed < 255)
|
||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleResults.numRevivesUsed < 255)
|
||||
gBattleResults.numRevivesUsed++;
|
||||
}
|
||||
}
|
||||
@@ -4163,7 +4163,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
if (gMain.inBattle && sp34 != 4)
|
||||
{
|
||||
gBattleMons[sp34].hp = data;
|
||||
if (!(r10 & 0x10) && GetBattlerSide(gActiveBattler) == 0)
|
||||
if (!(r10 & 0x10) && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
{
|
||||
if (gBattleResults.numHealingItemsUsed < 255)
|
||||
gBattleResults.numHealingItemsUsed++;
|
||||
@@ -6039,11 +6039,11 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank)
|
||||
bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 battlerId)
|
||||
{
|
||||
u8 buffer[12];
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_GHOST && GetBattlerSide(bank))
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_GHOST && GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
{
|
||||
GetMonData(mon, MON_DATA_NICKNAME, buffer);
|
||||
StringGetEnd10(buffer);
|
||||
|
||||
+11
-11
@@ -30,7 +30,7 @@ static void sub_80B3D78(u8 taskId);
|
||||
static const union AffineAnimCmd gUnknown_83E6DDC[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0xFFFE, 0xFFFE, -10, 120),
|
||||
AFFINEANIMCMD_FRAME(-0x2, -0x2, -10, 120),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
@@ -305,7 +305,7 @@ const struct SpriteTemplate gUnknown_83E705C =
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E7074[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
|
||||
AFFINEANIMCMD_JUMP(0),
|
||||
};
|
||||
@@ -313,27 +313,27 @@ static const union AffineAnimCmd gUnknown_83E7074[] =
|
||||
static const union AffineAnimCmd gUnknown_83E708C[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 0, 6),
|
||||
AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 0, 2),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E70B4[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xD0, 0xD0, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 0, 4),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E70DC[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 0, 2),
|
||||
AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 0, 6),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
@@ -384,11 +384,11 @@ static const union AffineAnimCmd gUnknown_83E7160[] =
|
||||
AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 17),
|
||||
AFFINEANIMCMD_LOOP(0),
|
||||
AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 10),
|
||||
AFFINEANIMCMD_FRAME(-0x8, -0x8, 0, 10),
|
||||
AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 10),
|
||||
AFFINEANIMCMD_LOOP(4),
|
||||
AFFINEANIMCMD_LOOP(0),
|
||||
AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(-0x10, -0x10, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 5),
|
||||
AFFINEANIMCMD_LOOP(7),
|
||||
AFFINEANIMCMD_END,
|
||||
@@ -396,7 +396,7 @@ static const union AffineAnimCmd gUnknown_83E7160[] =
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E71B8[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xFFEC, 0x18, 0, 15),
|
||||
AFFINEANIMCMD_FRAME(-0x14, 0x18, 0, 15),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -31,10 +31,10 @@
|
||||
#include "wild_encounter.h"
|
||||
#include "help_system.h"
|
||||
#include "party_menu.h"
|
||||
#include "unk_8159F40.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "save.h"
|
||||
#include "link.h"
|
||||
#include "quest_log_815A008.h"
|
||||
#include "quest_log_8150454.h"
|
||||
#include "quest_log.h"
|
||||
#include "new_menu_helpers.h"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "event_data.h"
|
||||
#include "quest_log.h"
|
||||
#include "fieldmap.h"
|
||||
@@ -7,152 +6,6 @@
|
||||
#include "metatile_behavior.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/pokemon.h"
|
||||
|
||||
struct PokedudeBattlePartyInfo
|
||||
{
|
||||
u8 side;
|
||||
u8 level;
|
||||
u16 species;
|
||||
u16 moves[4];
|
||||
u8 nature;
|
||||
u8 gender;
|
||||
};
|
||||
|
||||
static const struct PokedudeBattlePartyInfo sParties_Battle[] = {
|
||||
{
|
||||
.side = 0,
|
||||
.level = 15,
|
||||
.species = SPECIES_RATTATA,
|
||||
.moves = {MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_HYPER_FANG, MOVE_QUICK_ATTACK},
|
||||
.nature = NATURE_LONELY,
|
||||
.gender = MALE
|
||||
},
|
||||
{
|
||||
.side = 1,
|
||||
.level = 18,
|
||||
.species = SPECIES_PIDGEY,
|
||||
.moves = {MOVE_TACKLE, MOVE_SAND_ATTACK, MOVE_GUST, MOVE_QUICK_ATTACK},
|
||||
.nature = NATURE_NAUGHTY,
|
||||
.gender = MALE
|
||||
},
|
||||
{0xFF}
|
||||
};
|
||||
|
||||
static const struct PokedudeBattlePartyInfo sParties_Status[] = {
|
||||
{
|
||||
.side = 0,
|
||||
.level = 15,
|
||||
.species = SPECIES_RATTATA,
|
||||
.moves = {MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_HYPER_FANG, MOVE_QUICK_ATTACK},
|
||||
.nature = NATURE_LONELY,
|
||||
.gender = MALE
|
||||
},
|
||||
{
|
||||
.side = 1,
|
||||
.level = 14,
|
||||
.species = SPECIES_ODDISH,
|
||||
.moves = {MOVE_ABSORB, MOVE_SWEET_SCENT, MOVE_POISON_POWDER},
|
||||
.nature = NATURE_RASH,
|
||||
.gender = MALE
|
||||
},
|
||||
{0xFF}
|
||||
};
|
||||
|
||||
static const struct PokedudeBattlePartyInfo sParties_Matchups[] = {
|
||||
{
|
||||
.side = 0,
|
||||
.level = 15,
|
||||
.species = SPECIES_POLIWAG,
|
||||
.moves = {MOVE_WATER_GUN, MOVE_HYPNOSIS, MOVE_BUBBLE},
|
||||
.nature = NATURE_RASH,
|
||||
.gender = MALE
|
||||
},
|
||||
{
|
||||
.side = 0,
|
||||
.level = 15,
|
||||
.species = SPECIES_BUTTERFREE,
|
||||
.moves = {MOVE_CONFUSION, MOVE_POISON_POWDER, MOVE_STUN_SPORE, MOVE_SLEEP_POWDER},
|
||||
.nature = NATURE_RASH,
|
||||
.gender = MALE
|
||||
},
|
||||
{
|
||||
.side = 1,
|
||||
.level = 14,
|
||||
.species = SPECIES_ODDISH,
|
||||
.moves = {MOVE_ABSORB, MOVE_SWEET_SCENT, MOVE_POISON_POWDER},
|
||||
.nature = NATURE_RASH,
|
||||
.gender = MALE
|
||||
},
|
||||
{0xFF}
|
||||
};
|
||||
|
||||
static const struct PokedudeBattlePartyInfo sParties_Catching[] = {
|
||||
{
|
||||
.side = 0,
|
||||
.level = 15,
|
||||
.species = SPECIES_BUTTERFREE,
|
||||
.moves = {MOVE_CONFUSION, MOVE_POISON_POWDER, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE},
|
||||
.nature = NATURE_RASH,
|
||||
.gender = MALE
|
||||
},
|
||||
{
|
||||
.side = 1,
|
||||
.level = 11,
|
||||
.species = SPECIES_JIGGLYPUFF,
|
||||
.moves = {MOVE_SING, MOVE_DEFENSE_CURL, MOVE_POUND},
|
||||
.nature = NATURE_CAREFUL,
|
||||
.gender = MALE
|
||||
},
|
||||
{0xFF}
|
||||
};
|
||||
|
||||
|
||||
static const struct PokedudeBattlePartyInfo *const sPokedudeBattlePartyPointers[] = {
|
||||
sParties_Battle,
|
||||
sParties_Status,
|
||||
sParties_Matchups,
|
||||
sParties_Catching
|
||||
};
|
||||
|
||||
void InitPokedudePartyAndOpponent(void)
|
||||
{
|
||||
s32 i, j;
|
||||
struct Pokemon * mon;
|
||||
s32 myIdx = 0;
|
||||
s32 opIdx = 0;
|
||||
const struct PokedudeBattlePartyInfo * data;
|
||||
|
||||
gBattleTypeFlags = BATTLE_TYPE_POKEDUDE;
|
||||
ZeroPlayerPartyMons();
|
||||
ZeroEnemyPartyMons();
|
||||
data = sPokedudeBattlePartyPointers[gSpecialVar_0x8004];
|
||||
|
||||
i = 0;
|
||||
do
|
||||
{
|
||||
if (data[i].side == 0)
|
||||
{
|
||||
mon = &gPlayerParty[myIdx];
|
||||
myIdx++;
|
||||
}
|
||||
else
|
||||
{
|
||||
mon = &gEnemyParty[opIdx];
|
||||
opIdx++;
|
||||
}
|
||||
CreateMonWithGenderNatureLetter(mon, data[i].species, data[i].level, 0, data[i].gender, data[i].nature, 0);
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
SetMonMoveSlot(mon, data[i].moves[j], j);
|
||||
}
|
||||
i++;
|
||||
} while (data[i].side != 0xFF);
|
||||
}
|
||||
|
||||
// file boundary?
|
||||
|
||||
void sub_815A008(struct QuestLog * questLog)
|
||||
{
|
||||
+4
-4
@@ -87,8 +87,8 @@ const struct SpriteTemplate gUnknown_83E73E4 =
|
||||
static const union AffineAnimCmd gUnknown_83E73FC[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x2, 0xFFFD, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(0xFFFE, 0x3, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(0x2, -0x3, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(-0x2, 0x3, 0, 5),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
@@ -152,7 +152,7 @@ static const struct Subsprite gUnknown_83E7468[] =
|
||||
|
||||
static const struct SubspriteTable gUnknown_83E7470[] =
|
||||
{
|
||||
{ ARRAY_COUNT(gUnknown_83E7468), gUnknown_83E7468 },
|
||||
{ NELEMS(gUnknown_83E7468), gUnknown_83E7468 },
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E7478[] =
|
||||
@@ -588,7 +588,7 @@ void sub_80B4BD0(u8 taskId)
|
||||
task->data[13] = pan1;
|
||||
task->data[14] = (pan2 - pan1) / task->data[8];
|
||||
task->data[1] = var4;
|
||||
task->data[15] = GetAnimBattlerSpriteId(0);
|
||||
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
task->func = sub_80B4D00;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -25,11 +25,11 @@
|
||||
#include "battle_transition.h"
|
||||
#include "battle_main.h"
|
||||
#include "battle.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "global.fieldmap.h"
|
||||
#include "teachy_tv.h"
|
||||
#include "help_system.h"
|
||||
#include "overworld.h"
|
||||
#include "unk_8159F40.h"
|
||||
#include "graphics.h"
|
||||
#include "fieldmap.h"
|
||||
#include "strings.h"
|
||||
|
||||
Reference in New Issue
Block a user