Merge branch 'master' of https://github.com/pret/pokefirered into sync-rfu2
This commit is contained in:
@@ -189,7 +189,7 @@ static const struct WindowTemplate sWindowTemplates[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static const u8 sUnused_8453174[] = {16, 8, 4};
|
||||
static const u8 sUnused[] = {16, 8, 4};
|
||||
|
||||
static EWRAM_DATA u8 sOpenWindows[11] = {};
|
||||
|
||||
@@ -202,9 +202,9 @@ void InitBagWindows(void)
|
||||
else
|
||||
InitWindows(sDefaultBagWindowsDeposit);
|
||||
DeactivateAllTextPrinters();
|
||||
TextWindow_SetUserSelectedFrame(0, 0x64, 0xE0);
|
||||
TextWindow_LoadResourcesStdFrame0(0, 0x6D, 0xD0);
|
||||
TextWindow_SetStdFrame0_WithPal(0, 0x81, 0xC0);
|
||||
LoadUserWindowGfx(0, 0x64, 0xE0);
|
||||
LoadMenuMessageWindowGfx(0, 0x6D, 0xD0);
|
||||
LoadStdWindowGfx(0, 0x81, 0xC0);
|
||||
LoadPalette(sBagWindowPalF, 0xF0, 0x20);
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
|
||||
@@ -269,7 +269,7 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
|
||||
|
||||
// Items are allowed to use in ONLY trainer battles.
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
&& (gTrainerBattleOpponent_A != SECRET_BASE_OPPONENT)
|
||||
&& (gTrainerBattleOpponent_A != TRAINER_SECRET_BASE)
|
||||
&& !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_LINK))
|
||||
)
|
||||
{
|
||||
@@ -339,7 +339,7 @@ void BattleAI_SetupAIData(void)
|
||||
AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_ROAMING;
|
||||
return;
|
||||
}
|
||||
else if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)) && (gTrainerBattleOpponent_A != SECRET_BASE_OPPONENT))
|
||||
else if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)) && (gTrainerBattleOpponent_A != TRAINER_SECRET_BASE))
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_WILD_SCRIPTED)
|
||||
{
|
||||
@@ -1714,13 +1714,13 @@ static void Cmd_if_random_safari_flee(void)
|
||||
{
|
||||
u8 safariFleeRate;
|
||||
|
||||
if (gBattleStruct->safariGoNearCounter)
|
||||
if (gBattleStruct->safariRockThrowCounter)
|
||||
{
|
||||
safariFleeRate = gBattleStruct->safariEscapeFactor * 2;
|
||||
if (safariFleeRate > 20)
|
||||
safariFleeRate = 20;
|
||||
}
|
||||
else if (gBattleStruct->safariPkblThrowCounter != 0)
|
||||
else if (gBattleStruct->safariBaitThrowCounter != 0)
|
||||
{
|
||||
safariFleeRate = gBattleStruct->safariEscapeFactor / 4;
|
||||
if (safariFleeRate == 0)
|
||||
|
||||
+200
-1811
File diff suppressed because it is too large
Load Diff
@@ -6,16 +6,16 @@
|
||||
static void AnimMegahornHorn(struct Sprite *sprite);
|
||||
static void AnimLeechLifeNeedle(struct Sprite *sprite);
|
||||
static void AnimTranslateWebThread(struct Sprite *sprite);
|
||||
static void AnimTranslateWebThread_Step(struct Sprite *sprite);
|
||||
static void AnimStringWrap(struct Sprite *sprite);
|
||||
static void AnimStringWrap_Step(struct Sprite *sprite);
|
||||
static void AnimSpiderWeb(struct Sprite *sprite);
|
||||
static void AnimSpiderWeb_Step(struct Sprite *sprite);
|
||||
static void AnimSpiderWeb_End(struct Sprite *sprite);
|
||||
static void AnimTranslateStinger(struct Sprite *sprite);
|
||||
static void AnimMissileArc(struct Sprite *sprite);
|
||||
static void AnimMissileArc_Step(struct Sprite *sprite);
|
||||
static void AnimTailGlowOrb(struct Sprite *sprite);
|
||||
static void sub_80B41C0(struct Sprite *sprite);
|
||||
static void sub_80B4274(struct Sprite *sprite);
|
||||
static void sub_80B42E8(struct Sprite *sprite);
|
||||
static void sub_80B4344(struct Sprite *sprite);
|
||||
static void AnimMissileArcStep(struct Sprite *sprite);
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_MegahornHorn_0[] =
|
||||
{
|
||||
@@ -210,11 +210,11 @@ static void AnimMegahornHorn(struct Sprite *sprite)
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
}
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
@@ -231,11 +231,11 @@ static void AnimLeechLifeNeedle(struct Sprite *sprite)
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
}
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
@@ -257,19 +257,19 @@ static void AnimTranslateWebThread(struct Sprite *sprite)
|
||||
sprite->data[3] = sprite->y;
|
||||
if (!gBattleAnimArgs[4])
|
||||
{
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
|
||||
}
|
||||
BattleAnim_InitLinearTranslationWithDuration(sprite);
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
sprite->data[5] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80B41C0;
|
||||
sprite->callback = AnimTranslateWebThread_Step;
|
||||
}
|
||||
|
||||
static void sub_80B41C0(struct Sprite *sprite)
|
||||
static void AnimTranslateWebThread_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (AnimTranslateLinear(sprite))
|
||||
{
|
||||
@@ -290,10 +290,10 @@ static void AnimStringWrap(struct Sprite *sprite)
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
sprite->y += 8;
|
||||
sprite->callback = sub_80B4274;
|
||||
sprite->callback = AnimStringWrap_Step;
|
||||
}
|
||||
|
||||
static void sub_80B4274(struct Sprite *sprite)
|
||||
static void AnimStringWrap_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] == 3)
|
||||
{
|
||||
@@ -311,10 +311,10 @@ static void AnimSpiderWeb(struct Sprite *sprite)
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
|
||||
sprite->data[0] = 16;
|
||||
sprite->callback = sub_80B42E8;
|
||||
sprite->callback = AnimSpiderWeb_Step;
|
||||
}
|
||||
|
||||
static void sub_80B42E8(struct Sprite *sprite)
|
||||
static void AnimSpiderWeb_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[2] < 20)
|
||||
{
|
||||
@@ -328,12 +328,12 @@ static void sub_80B42E8(struct Sprite *sprite)
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = sub_80B4344;
|
||||
sprite->callback = AnimSpiderWeb_End;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B4344(struct Sprite *sprite)
|
||||
static void AnimSpiderWeb_End(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
@@ -377,8 +377,8 @@ static void AnimTranslateStinger(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y);
|
||||
rot += 0xC000;
|
||||
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot);
|
||||
@@ -402,15 +402,15 @@ static void AnimMissileArc(struct Sprite *sprite)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimMissileArcStep;
|
||||
sprite->callback = AnimMissileArc_Step;
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
static void AnimMissileArcStep(struct Sprite *sprite)
|
||||
static void AnimMissileArc_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
|
||||
@@ -447,15 +447,15 @@ static void AnimMissileArcStep(struct Sprite *sprite)
|
||||
|
||||
static void AnimTailGlowOrb(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + 18;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 18;
|
||||
}
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
@@ -6,23 +6,24 @@
|
||||
#include "trig.h"
|
||||
#include "util.h"
|
||||
|
||||
static void sub_80B7ACC(struct Sprite *sprite);
|
||||
static void AnimUnusedBagSteal(struct Sprite *sprite);
|
||||
static void AnimUnusedBagSteal_Step(struct Sprite *sprite);
|
||||
static void AnimBite(struct Sprite *sprite);
|
||||
static void AnimTearDrop(struct Sprite *sprite);
|
||||
static void AnimClawSlash(struct Sprite *sprite);
|
||||
static void AnimTask_AttackerFadeToInvisible_Step(u8 taskId);
|
||||
static void AnimTask_AttackerFadeFromInvisible_Step(u8 taskId);
|
||||
static void sub_80B7B48(struct Sprite *sprite);
|
||||
static void sub_80B7C10(struct Sprite *sprite);
|
||||
static void sub_80B7C50(struct Sprite *sprite);
|
||||
static void sub_80B7D88(struct Sprite *sprite);
|
||||
static void sub_80B856C(u8 priority);
|
||||
static void sub_80B7F58(u8 taskId);
|
||||
static void sub_80B843C(struct Task *task);
|
||||
static void sub_80B82C0(u8 taskId);
|
||||
static void sub_80B8920(u8 taskId);
|
||||
static void AnimBite_Step1(struct Sprite *sprite);
|
||||
static void AnimBite_Step2(struct Sprite *sprite);
|
||||
static void AnimTearDrop_Step(struct Sprite *sprite);
|
||||
static void SetAllBattlersSpritePriority(u8 priority);
|
||||
static void AnimTask_MoveAttackerMementoShadow_Step(u8 taskId);
|
||||
static void DoMementoShadowEffect(struct Task *task);
|
||||
static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId);
|
||||
static void AnimTask_MetallicShine_Step(u8 taskId);
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E7878 =
|
||||
// Unused
|
||||
const struct SpriteTemplate sUnusedBagStealSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_TIED_BAG,
|
||||
.paletteTag = ANIM_TAG_TIED_BAG,
|
||||
@@ -30,7 +31,7 @@ const struct SpriteTemplate gUnknown_83E7878 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B7ACC,
|
||||
.callback = AnimUnusedBagSteal,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_Bite_0[] =
|
||||
@@ -265,7 +266,7 @@ void AnimTask_InitAttackerFadeFromInvisible(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
static void sub_80B7ACC(struct Sprite *sprite)
|
||||
static void AnimUnusedBagSteal(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
@@ -276,11 +277,11 @@ static void sub_80B7ACC(struct Sprite *sprite)
|
||||
sprite->data[3] = -sprite->data[1];
|
||||
sprite->data[4] = -sprite->data[2];
|
||||
sprite->data[6] = 0xFFD8;
|
||||
sprite->callback = sub_80B7B48;
|
||||
sprite->callback = AnimUnusedBagSteal_Step;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B7B48(struct Sprite *sprite)
|
||||
static void AnimUnusedBagSteal_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
@@ -306,6 +307,7 @@ static void sub_80B7B48(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Move sprite inward for Bite/Crunch and Clamp
|
||||
static void AnimBite(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
@@ -314,20 +316,20 @@ static void AnimBite(struct Sprite *sprite)
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = gBattleAnimArgs[5];
|
||||
sprite->callback = sub_80B7C10;
|
||||
sprite->callback = AnimBite_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B7C10(struct Sprite *sprite)
|
||||
static void AnimBite_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[0];
|
||||
sprite->data[5] += sprite->data[1];
|
||||
sprite->x2 = sprite->data[4] >> 8;
|
||||
sprite->y2 = sprite->data[5] >> 8;
|
||||
if (++sprite->data[3] == sprite->data[2])
|
||||
sprite->callback = sub_80B7C50;
|
||||
sprite->callback = AnimBite_Step2;
|
||||
}
|
||||
|
||||
static void sub_80B7C50(struct Sprite *sprite)
|
||||
static void AnimBite_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] -= sprite->data[0];
|
||||
sprite->data[5] -= sprite->data[1];
|
||||
@@ -337,12 +339,13 @@ static void sub_80B7C50(struct Sprite *sprite)
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
|
||||
// Launches a tear drop away from the battler. Used by Fake Tears
|
||||
static void AnimTearDrop(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler;
|
||||
s8 xOffset;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battler = gBattleAnimTarget;
|
||||
@@ -376,10 +379,10 @@ static void AnimTearDrop(struct Sprite *sprite)
|
||||
sprite->data[4] = sprite->y + 12;
|
||||
sprite->data[5] = -12;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = sub_80B7D88;
|
||||
sprite->callback = AnimTearDrop_Step;
|
||||
}
|
||||
|
||||
static void sub_80B7D88(struct Sprite *sprite)
|
||||
static void AnimTearDrop_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
@@ -416,7 +419,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
|
||||
scanlineParams.dmaDest = ®_BG1VOFS;
|
||||
var0 = WINOUT_WIN01_BG1;
|
||||
if (!IsContest())
|
||||
gBattle_BG2_X += 240;
|
||||
gBattle_BG2_X += DISPLAY_WIDTH;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -426,7 +429,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
|
||||
scanlineParams.dmaDest = ®_BG2VOFS;
|
||||
var0 = WINOUT_WIN01_BG2;
|
||||
if (!IsContest())
|
||||
gBattle_BG1_X += 240;
|
||||
gBattle_BG1_X += DISPLAY_WIDTH;
|
||||
}
|
||||
scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
|
||||
scanlineParams.initState = 1;
|
||||
@@ -436,7 +439,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
|
||||
task->data[0] = 0;
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
sub_80B856C(3);
|
||||
SetAllBattlersSpritePriority(3);
|
||||
for (i = 0; i < 112; ++i)
|
||||
{
|
||||
gScanlineEffectRegBuffers[0][i] = task->data[10];
|
||||
@@ -446,12 +449,12 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | (var0 ^ (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR)));
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
|
||||
gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
|
||||
gBattle_WIN0V = 160;
|
||||
gBattle_WIN0V = DISPLAY_HEIGHT;
|
||||
|
||||
task->func = sub_80B7F58;
|
||||
task->func = AnimTask_MoveAttackerMementoShadow_Step;
|
||||
}
|
||||
|
||||
static void sub_80B7F58(u8 taskId)
|
||||
static void AnimTask_MoveAttackerMementoShadow_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -477,13 +480,13 @@ static void sub_80B7F58(u8 taskId)
|
||||
break;
|
||||
case 1:
|
||||
task->data[4] -= 8;
|
||||
sub_80B843C(task);
|
||||
DoMementoShadowEffect(task);
|
||||
if (task->data[4] < task->data[8])
|
||||
++task->data[0];
|
||||
break;
|
||||
case 2:
|
||||
task->data[4] -= 8;
|
||||
sub_80B843C(task);
|
||||
DoMementoShadowEffect(task);
|
||||
task->data[14] += 4;
|
||||
task->data[15] -= 4;
|
||||
if (task->data[14] >= task->data[15])
|
||||
@@ -527,12 +530,12 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId)
|
||||
if (task->data[3] == 1)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
|
||||
gBattle_BG2_X += 240;
|
||||
gBattle_BG2_X += DISPLAY_WIDTH;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2);
|
||||
gBattle_BG1_X += 240;
|
||||
gBattle_BG1_X += DISPLAY_WIDTH;
|
||||
}
|
||||
++task->data[0];
|
||||
}
|
||||
@@ -549,7 +552,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId)
|
||||
task->data[10] = gBattle_BG2_Y;
|
||||
FillPalette(RGB_BLACK, 9 * 16, 32);
|
||||
}
|
||||
sub_80B856C(3);
|
||||
SetAllBattlersSpritePriority(3);
|
||||
++task->data[0];
|
||||
break;
|
||||
case 2:
|
||||
@@ -592,17 +595,17 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
|
||||
gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
|
||||
gBattle_WIN0V = 160;
|
||||
gBattle_WIN0V = DISPLAY_HEIGHT;
|
||||
task->data[0] = 0;
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8));
|
||||
task->func = sub_80B82C0;
|
||||
task->func = AnimTask_MoveTargetMementoShadow_Step;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B82C0(u8 taskId)
|
||||
static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId)
|
||||
{
|
||||
u8 pos;
|
||||
u16 i;
|
||||
@@ -614,7 +617,7 @@ static void sub_80B82C0(u8 taskId)
|
||||
task->data[5] += 8;
|
||||
if (task->data[5] >= task->data[7])
|
||||
task->data[5] = task->data[7];
|
||||
sub_80B843C(task);
|
||||
DoMementoShadowEffect(task);
|
||||
if (task->data[5] == task->data[7])
|
||||
++task->data[0];
|
||||
break;
|
||||
@@ -632,7 +635,7 @@ static void sub_80B82C0(u8 taskId)
|
||||
task->data[4] += 8;
|
||||
if (task->data[4] >= task->data[6])
|
||||
task->data[4] = task->data[6];
|
||||
sub_80B843C(task);
|
||||
DoMementoShadowEffect(task);
|
||||
if (task->data[4] == task->data[6] && task->data[1])
|
||||
{
|
||||
task->data[1] = 0;
|
||||
@@ -672,7 +675,7 @@ static void sub_80B82C0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B843C(struct Task *task)
|
||||
static void DoMementoShadowEffect(struct Task *task)
|
||||
{
|
||||
s32 var0, var1, var4;
|
||||
s16 var2, i;
|
||||
@@ -711,15 +714,14 @@ static void sub_80B843C(struct Task *task)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B856C(u8 priority)
|
||||
static void SetAllBattlersSpritePriority(u8 priority)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(i);
|
||||
|
||||
if (spriteId != 0xFF)
|
||||
if (spriteId != SPRITE_NONE)
|
||||
gSprites[spriteId].oam.priority = priority;
|
||||
}
|
||||
}
|
||||
@@ -738,7 +740,7 @@ void AnimTask_InitMementoShadow(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80B8664(u8 taskId)
|
||||
void AnimTask_MementoHandleBg(u8 taskId)
|
||||
{
|
||||
bool8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? TRUE : FALSE;
|
||||
|
||||
@@ -748,6 +750,7 @@ void sub_80B8664(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
// Animates a deep slash from a claw. Used by Metal Claw, Dragon Claw, and Crush Claw
|
||||
static void AnimClawSlash(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
@@ -799,7 +802,7 @@ void AnimTask_MetallicShine(u8 taskId)
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
newSpriteId = CreateCloneOfSpriteInWindowMode(gBattleAnimAttacker, spriteId, species);
|
||||
newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species);
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap);
|
||||
AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset);
|
||||
@@ -816,10 +819,10 @@ void AnimTask_MetallicShine(u8 taskId)
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[6] = priorityChanged;
|
||||
gTasks[taskId].func = sub_80B8920;
|
||||
gTasks[taskId].func = AnimTask_MetallicShine_Step;
|
||||
}
|
||||
|
||||
static void sub_80B8920(u8 taskId)
|
||||
static void AnimTask_MetallicShine_Step(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
u16 paletteNum;
|
||||
@@ -863,7 +866,7 @@ static void sub_80B8920(u8 taskId)
|
||||
// Changes battler's palette to either greyscale or original.
|
||||
// arg0: which battler
|
||||
// arg1: 0 grayscale, 1 original
|
||||
void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
|
||||
void AnimTask_SetGrayscaleOrOriginalPal(u8 taskId)
|
||||
{
|
||||
u8 spriteId, battler;
|
||||
bool8 calcSpriteId = FALSE;
|
||||
@@ -871,10 +874,10 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
|
||||
|
||||
switch (gBattleAnimArgs[0])
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case ANIM_ATTACKER:
|
||||
case ANIM_TARGET:
|
||||
case ANIM_ATK_PARTNER:
|
||||
case ANIM_DEF_PARTNER:
|
||||
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
break;
|
||||
case 4:
|
||||
@@ -894,7 +897,7 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
|
||||
calcSpriteId = TRUE;
|
||||
break;
|
||||
default:
|
||||
spriteId = 0xFF;
|
||||
spriteId = SPRITE_NONE;
|
||||
break;
|
||||
}
|
||||
if (calcSpriteId)
|
||||
@@ -903,9 +906,9 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
|
||||
if (IsBattlerSpriteVisible(battler))
|
||||
spriteId = gBattlerSpriteIds[battler];
|
||||
else
|
||||
spriteId = 0xFF;
|
||||
spriteId = SPRITE_NONE;
|
||||
}
|
||||
if (spriteId != 0xFF)
|
||||
if (spriteId != SPRITE_NONE)
|
||||
SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
@@ -913,8 +916,8 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
|
||||
void GetIsDoomDesireHitTurn(u8 taskId)
|
||||
{
|
||||
if (gAnimMoveTurn < 2)
|
||||
gBattleAnimArgs[7] = 0;
|
||||
gBattleAnimArgs[ARG_RET_ID] = FALSE;
|
||||
if (gAnimMoveTurn == 2)
|
||||
gBattleAnimArgs[7] = 1;
|
||||
gBattleAnimArgs[ARG_RET_ID] = TRUE;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
@@ -4,19 +4,19 @@
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
|
||||
static void sub_80B725C(struct Sprite *sprite);
|
||||
static void AnimOutrageFlame(struct Sprite *sprite);
|
||||
static void AnimDragonFireToTarget(struct Sprite *sprite);
|
||||
static void AnimDragonRageFirePlume(struct Sprite *sprite);
|
||||
static void AnimDragonDanceOrb(struct Sprite *sprite);
|
||||
static void AnimOverheatFlame(struct Sprite *sprite);
|
||||
static void sub_80B74D8(struct Sprite *sprite);
|
||||
static void sub_80B76B0(u8 taskId);
|
||||
static void sub_80B776C(struct Task *task);
|
||||
static void sub_80B7894(struct Sprite *sprite);
|
||||
static void AnimDragonDanceOrb_Step(struct Sprite *sprite);
|
||||
static void AnimTask_DragonDanceWaver_Step(u8 taskId);
|
||||
static void UpdateDragonDanceScanlineEffect(struct Task *task);
|
||||
static void AnimOverheatFlame_Step(struct Sprite *sprite);
|
||||
|
||||
static EWRAM_DATA u16 gUnknown_20399A4[7] = {0};
|
||||
static EWRAM_DATA u16 sUnusedOverheatData[7] = {0};
|
||||
|
||||
static const union AnimCmd gUnknown_83E7710[] =
|
||||
static const union AnimCmd sAnim_OutrageOverheatFire_0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(16, 4),
|
||||
@@ -26,9 +26,9 @@ static const union AnimCmd gUnknown_83E7710[] =
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E7728[] =
|
||||
static const union AnimCmd *const sAnims_OutrageOverheatFire[] =
|
||||
{
|
||||
gUnknown_83E7710,
|
||||
sAnim_OutrageOverheatFire_0,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gOutrageFlameSpriteTemplate =
|
||||
@@ -36,10 +36,10 @@ const struct SpriteTemplate gOutrageFlameSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_SMALL_EMBER,
|
||||
.paletteTag = ANIM_TAG_SMALL_EMBER,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gUnknown_83E7728,
|
||||
.anims = sAnims_OutrageOverheatFire,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B725C,
|
||||
.callback = AnimOutrageFlame,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_DragonBreathFire_0[] =
|
||||
@@ -180,16 +180,16 @@ const struct SpriteTemplate gOverheatFlameSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_SMALL_EMBER,
|
||||
.paletteTag = ANIM_TAG_SMALL_EMBER,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gUnknown_83E7728,
|
||||
.anims = sAnims_OutrageOverheatFire,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimOverheatFlame,
|
||||
};
|
||||
|
||||
static void sub_80B725C(struct Sprite *sprite)
|
||||
static void AnimOutrageFlame(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
@@ -210,11 +210,11 @@ static void sub_80B725C(struct Sprite *sprite)
|
||||
sprite->callback = TranslateSpriteLinearAndFlicker;
|
||||
}
|
||||
|
||||
static void sub_80B72F8(struct Sprite *sprite)
|
||||
static void StartDragonFireTranslation(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->x -= gBattleAnimArgs[1];
|
||||
@@ -239,13 +239,13 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||
}
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[1]);
|
||||
sprite->y += gBattleAnimArgs[2];
|
||||
@@ -253,11 +253,12 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
}
|
||||
|
||||
// For Dragon Breath and Dragon Rage
|
||||
static void AnimDragonFireToTarget(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
sub_80B72F8(sprite);
|
||||
StartDragonFireTranslation(sprite);
|
||||
}
|
||||
|
||||
static void AnimDragonDanceOrb(struct Sprite *sprite)
|
||||
@@ -265,8 +266,8 @@ static void AnimDragonDanceOrb(struct Sprite *sprite)
|
||||
u16 r5;
|
||||
u16 r0;
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = 1;
|
||||
sprite->data[6] = gBattleAnimArgs[0];
|
||||
@@ -278,10 +279,10 @@ static void AnimDragonDanceOrb(struct Sprite *sprite)
|
||||
sprite->data[7] = r0 / 2;
|
||||
sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
|
||||
sprite->callback = sub_80B74D8;
|
||||
sprite->callback = AnimDragonDanceOrb_Step;
|
||||
}
|
||||
|
||||
static void sub_80B74D8(struct Sprite *sprite)
|
||||
static void AnimDragonDanceOrb_Step(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
@@ -319,26 +320,28 @@ static void sub_80B74D8(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// Wavers the attacker back and forth. Progressing vertical wave of scanline shifts
|
||||
// Used by Dragon Dance
|
||||
void AnimTask_DragonDanceWaver(u8 taskId)
|
||||
{
|
||||
struct ScanlineEffectParams sp;
|
||||
struct ScanlineEffectParams scanlineParams;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
u16 i;
|
||||
u8 r1;
|
||||
|
||||
if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
|
||||
{
|
||||
sp.dmaDest = ®_BG1HOFS;
|
||||
scanlineParams.dmaDest = ®_BG1HOFS;
|
||||
task->data[2] = gBattle_BG1_X;
|
||||
}
|
||||
else
|
||||
{
|
||||
sp.dmaDest = ®_BG2HOFS;
|
||||
scanlineParams.dmaDest = ®_BG2HOFS;
|
||||
task->data[2] = gBattle_BG2_X;
|
||||
}
|
||||
sp.dmaControl = 0xA2600001;
|
||||
sp.initState = 1;
|
||||
sp.unused9 = 0;
|
||||
scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
|
||||
scanlineParams.initState = 1;
|
||||
scanlineParams.unused9 = 0;
|
||||
r1 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[3] = r1 - 32;
|
||||
task->data[4] = r1 + 32;
|
||||
@@ -349,11 +352,11 @@ void AnimTask_DragonDanceWaver(u8 taskId)
|
||||
gScanlineEffectRegBuffers[0][i] = task->data[2];
|
||||
gScanlineEffectRegBuffers[1][i] = task->data[2];
|
||||
}
|
||||
ScanlineEffect_SetParams(sp);
|
||||
task->func = sub_80B76B0;
|
||||
ScanlineEffect_SetParams(scanlineParams);
|
||||
task->func = AnimTask_DragonDanceWaver_Step;
|
||||
}
|
||||
|
||||
static void sub_80B76B0(u8 taskId)
|
||||
static void AnimTask_DragonDanceWaver_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -366,12 +369,12 @@ static void sub_80B76B0(u8 taskId)
|
||||
if (++task->data[6] == 3)
|
||||
++task->data[0];
|
||||
}
|
||||
sub_80B776C(task);
|
||||
UpdateDragonDanceScanlineEffect(task);
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[1] > 0x3C)
|
||||
++task->data[0];
|
||||
sub_80B776C(task);
|
||||
UpdateDragonDanceScanlineEffect(task);
|
||||
break;
|
||||
case 2:
|
||||
if (++task->data[7] > 1)
|
||||
@@ -380,7 +383,7 @@ static void sub_80B76B0(u8 taskId)
|
||||
if (--task->data[6] == 0)
|
||||
++task->data[0];
|
||||
}
|
||||
sub_80B776C(task);
|
||||
UpdateDragonDanceScanlineEffect(task);
|
||||
break;
|
||||
case 3:
|
||||
gScanlineEffect.state = 3;
|
||||
@@ -392,7 +395,7 @@ static void sub_80B76B0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B776C(struct Task *task)
|
||||
static void UpdateDragonDanceScanlineEffect(struct Task *task)
|
||||
{
|
||||
u16 i, r3 = task->data[5];
|
||||
|
||||
@@ -406,21 +409,21 @@ static void sub_80B776C(struct Task *task)
|
||||
|
||||
static void AnimOverheatFlame(struct Sprite *sprite)
|
||||
{
|
||||
s32 i, r6 = (gBattleAnimArgs[2] * 3) / 5;
|
||||
s32 i, yAmplitude = (gBattleAnimArgs[2] * 3) / 5;
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[4];
|
||||
sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
|
||||
sprite->data[2] = Sin(gBattleAnimArgs[1], r6);
|
||||
sprite->data[2] = Sin(gBattleAnimArgs[1], yAmplitude);
|
||||
sprite->x += sprite->data[1] * gBattleAnimArgs[0];
|
||||
sprite->y += sprite->data[2] * gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80B7894;
|
||||
sprite->callback = AnimOverheatFlame_Step;
|
||||
for (i = 0; i < 7; ++i)
|
||||
gUnknown_20399A4[i] = sprite->data[i];
|
||||
sUnusedOverheatData[i] = sprite->data[i];
|
||||
}
|
||||
|
||||
static void sub_80B7894(struct Sprite *sprite)
|
||||
static void AnimOverheatFlame_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->data[5] += sprite->data[2];
|
||||
+500
-433
File diff suppressed because it is too large
Load Diff
+257
-204
File diff suppressed because it is too large
Load Diff
+372
-255
File diff suppressed because it is too large
Load Diff
@@ -5,9 +5,9 @@
|
||||
#include "constants/songs.h"
|
||||
|
||||
static void AnimLightning(struct Sprite *sprite);
|
||||
static void sub_80ADC58(struct Sprite *sprite);
|
||||
static void sub_80ADCB8(struct Sprite *sprite);
|
||||
static void sub_80ADD4C(struct Sprite *sprite);
|
||||
static void AnimUnusedSpinningFist(struct Sprite *sprite);
|
||||
static void AnimUnusedCirclingShock(struct Sprite *sprite);
|
||||
static void AnimSparkElectricity(struct Sprite *sprite);
|
||||
static void AnimZapCannonSpark(struct Sprite *sprite);
|
||||
static void AnimThunderboltOrb(struct Sprite *sprite);
|
||||
static void AnimSparkElectricityFlashing(struct Sprite *sprite);
|
||||
@@ -20,19 +20,19 @@ static void AnimVoltTackleOrbSlide(struct Sprite *sprite);
|
||||
static void AnimVoltTackleBolt(struct Sprite *sprite);
|
||||
static void AnimGrowingShockWaveOrb(struct Sprite *sprite);
|
||||
static void AnimShockWaveProgressingBolt(struct Sprite *sprite);
|
||||
static void sub_80ADC3C(struct Sprite *sprite);
|
||||
static void sub_80ADC9C(struct Sprite *sprite);
|
||||
static void sub_80ADF38(struct Sprite *sprite);
|
||||
static void sub_80AE130(struct Sprite *sprite);
|
||||
static void sub_80AE278(u8 taskId);
|
||||
static void sub_80AE4F4(struct Sprite *sprite);
|
||||
static void sub_80AE5BC(u8 taskId);
|
||||
static void sub_80AE704(struct Sprite *sprite);
|
||||
static void sub_80AE83C(struct Sprite *sprite);
|
||||
static bool8 sub_80AEB98(struct Task *task, u8 taskId);
|
||||
static bool8 sub_80AEE74(struct Task *task, u8 taskId);
|
||||
static bool8 sub_80AF058(struct Task *task, u8 taskId);
|
||||
static void sub_80AF0C8(struct Sprite *sprite);
|
||||
static void AnimLightning_Step(struct Sprite *sprite);
|
||||
static void AnimUnusedSpinningFist_Step(struct Sprite *sprite);
|
||||
static void AnimZapCannonSpark_Step(struct Sprite *sprite);
|
||||
static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite);
|
||||
static void AnimTask_ElectricBolt_Step(u8 taskId);
|
||||
static void AnimThunderWave_Step(struct Sprite *sprite);
|
||||
static void AnimTask_ElectricChargingParticles_Step(u8 taskId);
|
||||
static void AnimElectricChargingParticles(struct Sprite *sprite);
|
||||
static void AnimVoltTackleOrbSlide_Step(struct Sprite *sprite);
|
||||
static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId);
|
||||
static bool8 CreateShockWaveBoltSprite(struct Task *task, u8 taskId);
|
||||
static bool8 CreateShockWaveLightningSprite(struct Task *task, u8 taskId);
|
||||
static void AnimShockWaveLightning(struct Sprite *sprite);
|
||||
|
||||
static const union AnimCmd sAnim_Lightning[] =
|
||||
{
|
||||
@@ -60,7 +60,7 @@ const struct SpriteTemplate gLightningSpriteTemplate =
|
||||
.callback = AnimLightning,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E5F50[] =
|
||||
static const union AffineAnimCmd sAffineAnim_UnusedSpinningFist[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
|
||||
@@ -68,23 +68,23 @@ static const union AffineAnimCmd gUnknown_83E5F50[] =
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E5F70[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_UnusedSpinningFist[] =
|
||||
{
|
||||
gUnknown_83E5F50,
|
||||
sAffineAnim_UnusedSpinningFist,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E5F74 =
|
||||
static const struct SpriteTemplate sUnusedSpinningFistSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gUnknown_83E5F70,
|
||||
.callback = sub_80ADC58,
|
||||
.affineAnims = sAffineAnims_UnusedSpinningFist,
|
||||
.callback = AnimUnusedSpinningFist,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E5F8C[] =
|
||||
static const union AnimCmd sAnim_UnusedCirclingShock[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_FRAME(16, 5),
|
||||
@@ -95,20 +95,20 @@ static const union AnimCmd gUnknown_83E5F8C[] =
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E5FA8[] =
|
||||
static const union AnimCmd *const sAnims_UnusedCirclingShock[] =
|
||||
{
|
||||
gUnknown_83E5F8C,
|
||||
sAnim_UnusedCirclingShock,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E5FAC =
|
||||
static const struct SpriteTemplate sUnusedCirclingShockSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SHOCK,
|
||||
.paletteTag = ANIM_TAG_SHOCK,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gUnknown_83E5FA8,
|
||||
.anims = sAnims_UnusedCirclingShock,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80ADCB8,
|
||||
.callback = AnimUnusedCirclingShock,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSparkElectricitySpriteTemplate =
|
||||
@@ -119,7 +119,7 @@ const struct SpriteTemplate gSparkElectricitySpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80ADD4C,
|
||||
.callback = AnimSparkElectricity,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gZapCannonBallSpriteTemplate =
|
||||
@@ -458,31 +458,31 @@ static void AnimLightning(struct Sprite *sprite)
|
||||
else
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->callback = sub_80ADC3C;
|
||||
sprite->callback = AnimLightning_Step;
|
||||
}
|
||||
|
||||
static void sub_80ADC3C(struct Sprite *sprite)
|
||||
static void AnimLightning_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void sub_80ADC58(struct Sprite *sprite)
|
||||
static void AnimUnusedSpinningFist(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->callback = sub_80ADC9C;
|
||||
sprite->callback = AnimUnusedSpinningFist_Step;
|
||||
}
|
||||
|
||||
static void sub_80ADC9C(struct Sprite *sprite)
|
||||
static void AnimUnusedSpinningFist_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->affineAnimEnded)
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
|
||||
static void sub_80ADCB8(struct Sprite *sprite)
|
||||
static void AnimUnusedCirclingShock(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
@@ -501,10 +501,10 @@ static void sub_80ADCB8(struct Sprite *sprite)
|
||||
sprite->data[2] = gBattleAnimArgs[3];
|
||||
sprite->data[3] = gBattleAnimArgs[4];
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = TranslateSpriteInCircleOverDuration;
|
||||
sprite->callback = TranslateSpriteInCircle;
|
||||
}
|
||||
|
||||
static void sub_80ADD4C(struct Sprite *sprite)
|
||||
static void AnimSparkElectricity(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler;
|
||||
u32 matrixNum;
|
||||
@@ -512,20 +512,20 @@ static void sub_80ADD4C(struct Sprite *sprite)
|
||||
|
||||
switch (gBattleAnimArgs[4])
|
||||
{
|
||||
case 0:
|
||||
case ANIM_ATTACKER:
|
||||
battler = gBattleAnimAttacker;
|
||||
break;
|
||||
case 1:
|
||||
case ANIM_TARGET:
|
||||
default:
|
||||
battler = gBattleAnimTarget;
|
||||
break;
|
||||
case 2:
|
||||
case ANIM_ATK_PARTNER:
|
||||
if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battler = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||
break;
|
||||
case 3:
|
||||
case ANIM_DEF_PARTNER:
|
||||
if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
|
||||
battler = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
else
|
||||
@@ -568,11 +568,11 @@ static void AnimZapCannonSpark(struct Sprite *sprite)
|
||||
sprite->data[6] = gBattleAnimArgs[5];
|
||||
sprite->data[7] = gBattleAnimArgs[4];
|
||||
sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
|
||||
sprite->callback = sub_80ADF38;
|
||||
sprite->callback = AnimZapCannonSpark_Step;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80ADF38(struct Sprite *sprite)
|
||||
static void AnimZapCannonSpark_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (!AnimTranslateLinear(sprite))
|
||||
{
|
||||
@@ -588,7 +588,7 @@ static void sub_80ADF38(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80ADFB0(struct Sprite *sprite)
|
||||
static void AnimThunderboltOrb_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (--sprite->data[5] == -1)
|
||||
{
|
||||
@@ -608,7 +608,7 @@ static void AnimThunderboltOrb(struct Sprite *sprite)
|
||||
sprite->data[3] = gBattleAnimArgs[0];
|
||||
sprite->data[4] = gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80ADFB0;
|
||||
sprite->callback = AnimThunderboltOrb_Step;
|
||||
}
|
||||
|
||||
static void AnimSparkElectricityFlashing(struct Sprite *sprite)
|
||||
@@ -629,11 +629,11 @@ static void AnimSparkElectricityFlashing(struct Sprite *sprite)
|
||||
sprite->data[6] = gBattleAnimArgs[5];
|
||||
sprite->data[7] = gBattleAnimArgs[4];
|
||||
sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
|
||||
sprite->callback = sub_80AE130;
|
||||
sprite->callback = AnimSparkElectricityFlashing_Step;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80AE130(struct Sprite *sprite)
|
||||
static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x2 = Sin(sprite->data[7], sprite->data[5]);
|
||||
sprite->y2 = Cos(sprite->data[7], sprite->data[5]);
|
||||
@@ -644,6 +644,7 @@ static void sub_80AE130(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Electricity arcs around the target. Used for Paralysis and various electric move hits
|
||||
static void AnimElectricity(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
@@ -657,15 +658,16 @@ static void AnimElectricity(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// The vertical falling thunder bolt used in Thunder Wave/Shock/Bolt
|
||||
void AnimTask_ElectricBolt(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].func = sub_80AE278;
|
||||
gTasks[taskId].func = AnimTask_ElectricBolt_Step;
|
||||
}
|
||||
|
||||
static void sub_80AE278(u8 taskId)
|
||||
static void AnimTask_ElectricBolt_Step(u8 taskId)
|
||||
{
|
||||
u16 r8;
|
||||
u16 r2;
|
||||
@@ -735,18 +737,19 @@ static void AnimElectricBoltSegment(struct Sprite *sprite)
|
||||
{
|
||||
if (!sprite->data[0])
|
||||
{
|
||||
sprite->oam.shape = ST_OAM_V_RECTANGLE;
|
||||
sprite->oam.size = ST_OAM_SIZE_0;
|
||||
sprite->oam.shape = SPRITE_SHAPE(8x16);
|
||||
sprite->oam.size = SPRITE_SIZE(8x16);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->oam.shape = ST_OAM_SQUARE;
|
||||
sprite->oam.size = ST_OAM_SIZE_1;
|
||||
sprite->oam.shape = SPRITE_SHAPE(16x16);
|
||||
sprite->oam.size = SPRITE_SIZE(16x16);
|
||||
}
|
||||
if (++sprite->data[1] == 15)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
// The horizontal bands of electricity used in Thunder Wave
|
||||
static void AnimThunderWave(struct Sprite *sprite)
|
||||
{
|
||||
u8 spriteId;
|
||||
@@ -756,11 +759,11 @@ static void AnimThunderWave(struct Sprite *sprite)
|
||||
spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->x + 32, sprite->y, sprite->subpriority);
|
||||
gSprites[spriteId].oam.tileNum += 8;
|
||||
++gAnimVisualTaskCount;
|
||||
gSprites[spriteId].callback = sub_80AE4F4;
|
||||
sprite->callback = sub_80AE4F4;
|
||||
gSprites[spriteId].callback = AnimThunderWave_Step;
|
||||
sprite->callback = AnimThunderWave_Step;
|
||||
}
|
||||
|
||||
static void sub_80AE4F4(struct Sprite *sprite)
|
||||
static void AnimThunderWave_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] == 3)
|
||||
{
|
||||
@@ -771,6 +774,7 @@ static void sub_80AE4F4(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Animates small electric orbs moving from around the battler inward. For Charge/Shock Wave
|
||||
void AnimTask_ElectricChargingParticles(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -793,10 +797,10 @@ void AnimTask_ElectricChargingParticles(u8 taskId)
|
||||
task->data[11] = gBattleAnimArgs[3];
|
||||
task->data[12] = 0;
|
||||
task->data[13] = gBattleAnimArgs[2];
|
||||
task->func = sub_80AE5BC;
|
||||
task->func = AnimTask_ElectricChargingParticles_Step;
|
||||
}
|
||||
|
||||
static void sub_80AE5BC(u8 taskId)
|
||||
static void AnimTask_ElectricChargingParticles_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -821,7 +825,7 @@ static void sub_80AE5BC(u8 taskId)
|
||||
sprite->data[4] = task->data[15];
|
||||
sprite->data[5] = taskId;
|
||||
InitAnimLinearTranslation(sprite);
|
||||
StoreSpriteCallbackInData6(sprite, sub_80AE704);
|
||||
StoreSpriteCallbackInData6(sprite, AnimElectricChargingParticles);
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
if (++task->data[9] > 15)
|
||||
task->data[9] = 0;
|
||||
@@ -842,7 +846,7 @@ static void sub_80AE5BC(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80AE6D0(struct Sprite *sprite)
|
||||
static void AnimElectricChargingParticles_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (AnimTranslateLinear(sprite))
|
||||
{
|
||||
@@ -851,15 +855,15 @@ static void sub_80AE6D0(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80AE704(struct Sprite *sprite)
|
||||
static void AnimElectricChargingParticles(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, 1);
|
||||
sprite->callback = sub_80AE6D0;
|
||||
sprite->callback = AnimElectricChargingParticles_Step;
|
||||
}
|
||||
|
||||
static void AnimGrowingChargeOrb(struct Sprite *sprite)
|
||||
{
|
||||
if (!gBattleAnimArgs[0])
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
@@ -873,9 +877,10 @@ static void AnimGrowingChargeOrb(struct Sprite *sprite)
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
}
|
||||
|
||||
// The quick electric burst at the end of Charge / during the Volt Tackle hit
|
||||
static void AnimElectricPuff(struct Sprite *sprite)
|
||||
{
|
||||
if (!gBattleAnimArgs[0])
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
@@ -891,6 +896,7 @@ static void AnimElectricPuff(struct Sprite *sprite)
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
}
|
||||
|
||||
// Creates an orb of electricity that grows then slides off-screen. The attacker slides with it
|
||||
static void AnimVoltTackleOrbSlide(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
@@ -900,10 +906,10 @@ static void AnimVoltTackleOrbSlide(struct Sprite *sprite)
|
||||
sprite->data[7] = 16;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
|
||||
sprite->data[7] *= -1;
|
||||
sprite->callback = sub_80AE83C;
|
||||
sprite->callback = AnimVoltTackleOrbSlide_Step;
|
||||
}
|
||||
|
||||
static void sub_80AE83C(struct Sprite *sprite)
|
||||
static void AnimVoltTackleOrbSlide_Step(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
@@ -975,6 +981,7 @@ void AnimTask_VoltTackleAttackerReappear(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// The horizontal bolts of electricity for Volt Tackle
|
||||
void AnimTask_VoltTackleBolt(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -1036,7 +1043,7 @@ void AnimTask_VoltTackleBolt(u8 taskId)
|
||||
if (++task->data[2] > 0)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
if (sub_80AEB98(task, taskId) || sub_80AEB98(task, taskId))
|
||||
if (CreateVoltTackleBolt(task, taskId) || CreateVoltTackleBolt(task, taskId))
|
||||
++task->data[0];
|
||||
}
|
||||
break;
|
||||
@@ -1047,7 +1054,7 @@ void AnimTask_VoltTackleBolt(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 sub_80AEB98(struct Task *task, u8 taskId)
|
||||
static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gVoltTackleBoltSpriteTemplate, task->data[3], task->data[5], 35);
|
||||
|
||||
@@ -1112,7 +1119,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId)
|
||||
task->data[4] = 7;
|
||||
task->data[5] = -1;
|
||||
task->data[11] = 12;
|
||||
task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76);
|
||||
task->data[12] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
||||
task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
|
||||
task->data[14] = task->data[12];
|
||||
task->data[15] = (task->data[13] - task->data[12]) / 3;
|
||||
@@ -1122,7 +1129,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId)
|
||||
if (++task->data[1] > 0)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if (sub_80AEE74(task, taskId))
|
||||
if (CreateShockWaveBoltSprite(task, taskId))
|
||||
{
|
||||
if (task->data[2] == 5)
|
||||
task->data[0] = 3;
|
||||
@@ -1172,7 +1179,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 sub_80AEE74(struct Task *task, u8 taskId)
|
||||
static bool8 CreateShockWaveBoltSprite(struct Task *task, u8 taskId)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sShockWaveProgressingBoltSpriteTemplate, task->data[6], task->data[7], 35);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
@@ -1206,6 +1213,7 @@ static bool8 sub_80AEE74(struct Task *task, u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Just runs timer for sprite. See AnimTask_ShockWaveProgressingBolt
|
||||
static void AnimShockWaveProgressingBolt(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] > 12)
|
||||
@@ -1234,7 +1242,7 @@ void AnimTask_ShockWaveLightning(u8 taskId)
|
||||
if (++task->data[1] > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if (sub_80AF058(task, taskId))
|
||||
if (CreateShockWaveLightningSprite(task, taskId))
|
||||
++task->data[0];
|
||||
}
|
||||
break;
|
||||
@@ -1245,13 +1253,13 @@ void AnimTask_ShockWaveLightning(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 sub_80AF058(struct Task *task, u8 taskId)
|
||||
static bool8 CreateShockWaveLightningSprite(struct Task *task, u8 taskId)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gLightningSpriteTemplate, task->data[13], task->data[14], task->data[12]);
|
||||
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].callback = sub_80AF0C8;
|
||||
gSprites[spriteId].callback = AnimShockWaveLightning;
|
||||
gSprites[spriteId].data[6] = taskId;
|
||||
gSprites[spriteId].data[7] = 10;
|
||||
++task->data[10];
|
||||
@@ -1262,7 +1270,7 @@ static bool8 sub_80AF058(struct Task *task, u8 taskId)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_80AF0C8(struct Sprite *sprite)
|
||||
static void AnimShockWaveLightning(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
|
||||
static void unc_080B08A0(struct Sprite *sprite);
|
||||
static void AnimUnusedHumanoidFoot(struct Sprite *sprite);
|
||||
static void AnimSlideHandOrFootToTarget(struct Sprite *sprite);
|
||||
static void AnimJumpKick(struct Sprite *sprite);
|
||||
static void AnimBasicFistOrFoot(struct Sprite *sprite);
|
||||
@@ -23,19 +23,19 @@ static void AnimSuperpowerFireball(struct Sprite *sprite);
|
||||
static void AnimArmThrustHit(struct Sprite *sprite);
|
||||
static void AnimRevengeScratch(struct Sprite *sprite);
|
||||
static void AnimFocusPunchFist(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 AnimFistOrFootRandomPos_Step(struct Sprite *sprite);
|
||||
static void AnimCrossChopHand_Step(struct Sprite *sprite);
|
||||
static void AnimSlidingKick_Step(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);
|
||||
static void AnimBrickBreakWall_Step(struct Sprite *sprite);
|
||||
static void AnimBrickBreakWallShard_Step(struct Sprite *sprite);
|
||||
static void AnimSuperpowerOrb_Step(struct Sprite *sprite);
|
||||
static void AnimSuperpowerRock_Step1(struct Sprite *sprite);
|
||||
static void AnimSuperpowerRock_Step2(struct Sprite *sprite);
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E668C =
|
||||
static const struct SpriteTemplate sUnusedHumanoidFootSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HUMANOID_FOOT,
|
||||
.paletteTag = ANIM_TAG_HUMANOID_FOOT,
|
||||
@@ -43,54 +43,46 @@ const struct SpriteTemplate gUnknown_83E668C =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = unc_080B08A0,
|
||||
.callback = AnimUnusedHumanoidFoot,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_HandOrFoot[] =
|
||||
static const union AnimCmd sAnim_Fist[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_SlidingKick_0[] =
|
||||
static const union AnimCmd sAnim_FootWide[] =
|
||||
{
|
||||
ANIMCMD_FRAME(16, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_SlidingKick_1[] =
|
||||
static const union AnimCmd sAnim_FootTall[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_CrossChopHand_0[] =
|
||||
static const union AnimCmd sAnim_HandLeft[] =
|
||||
{
|
||||
ANIMCMD_FRAME(48, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_CrossChopHand_1[] =
|
||||
static const union AnimCmd sAnim_HandRight[] =
|
||||
{
|
||||
ANIMCMD_FRAME(48, 1, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_HandOrFoot[] =
|
||||
static const union AnimCmd *const sAnims_HandsAndFeet[] =
|
||||
{
|
||||
sAnim_HandOrFoot,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_SlidingKick[] =
|
||||
{
|
||||
sAnim_SlidingKick_0,
|
||||
sAnim_SlidingKick_1,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_CrossChopHand[] =
|
||||
{
|
||||
sAnim_CrossChopHand_0,
|
||||
sAnim_CrossChopHand_1,
|
||||
sAnim_Fist,
|
||||
sAnim_FootWide,
|
||||
sAnim_FootTall,
|
||||
sAnim_HandLeft,
|
||||
sAnim_HandRight,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gKarateChopSpriteTemplate =
|
||||
@@ -98,7 +90,7 @@ const struct SpriteTemplate gKarateChopSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_HandOrFoot,
|
||||
.anims = sAnims_HandsAndFeet,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimSlideHandOrFootToTarget,
|
||||
@@ -109,7 +101,7 @@ const struct SpriteTemplate gJumpKickSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_HandOrFoot,
|
||||
.anims = sAnims_HandsAndFeet,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimJumpKick,
|
||||
@@ -120,7 +112,7 @@ const struct SpriteTemplate gFistFootSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_HandOrFoot,
|
||||
.anims = sAnims_HandsAndFeet,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimBasicFistOrFoot,
|
||||
@@ -131,7 +123,7 @@ const struct SpriteTemplate gFistFootRandomPosSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_HandOrFoot,
|
||||
.anims = sAnims_HandsAndFeet,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimFistOrFootRandomPos,
|
||||
@@ -142,7 +134,7 @@ const struct SpriteTemplate gCrossChopHandSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_CrossChopHand,
|
||||
.anims = &sAnims_HandsAndFeet[3],
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimCrossChopHand,
|
||||
@@ -153,7 +145,7 @@ const struct SpriteTemplate gSlidingKickSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_SlidingKick,
|
||||
.anims = &sAnims_HandsAndFeet[1],
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimSlidingKick,
|
||||
@@ -171,12 +163,13 @@ static const union AffineAnimCmd *const sAffineAnims_SpinningHandOrFoot[] =
|
||||
sAffineAnim_SpinningHandOrFoot,
|
||||
};
|
||||
|
||||
// Blaze Kick / Meteor Mash
|
||||
const struct SpriteTemplate gSpinningHandOrFootSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_32x32,
|
||||
.anims = sAnims_HandOrFoot,
|
||||
.anims = sAnims_HandsAndFeet,
|
||||
.images = NULL,
|
||||
.affineAnims = sAffineAnims_SpinningHandOrFoot,
|
||||
.callback = AnimSpinningKickOrPunch,
|
||||
@@ -199,7 +192,7 @@ const struct SpriteTemplate gMegaPunchKickSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_32x32,
|
||||
.anims = sAnims_HandOrFoot,
|
||||
.anims = sAnims_HandsAndFeet,
|
||||
.images = NULL,
|
||||
.affineAnims = sAffineAnims_MegaPunchKick,
|
||||
.callback = AnimSpinningKickOrPunch,
|
||||
@@ -210,7 +203,7 @@ const struct SpriteTemplate gStompFootSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_SlidingKick,
|
||||
.anims = &sAnims_HandsAndFeet[1],
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimStompFoot,
|
||||
@@ -301,7 +294,7 @@ const struct SpriteTemplate gArmThrustHandSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_HandOrFoot,
|
||||
.anims = sAnims_HandsAndFeet,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimArmThrustHit,
|
||||
@@ -405,13 +398,13 @@ const struct SpriteTemplate gFocusPunchFistSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_32x32,
|
||||
.anims = sAnims_HandOrFoot,
|
||||
.anims = sAnims_HandsAndFeet,
|
||||
.images = NULL,
|
||||
.affineAnims = sAffineAnims_FocusPunchFist,
|
||||
.callback = AnimFocusPunchFist,
|
||||
};
|
||||
|
||||
static void unc_080B08A0(struct Sprite *sprite)
|
||||
static void AnimUnusedHumanoidFoot(struct Sprite *sprite)
|
||||
{
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
@@ -429,7 +422,7 @@ static void AnimSlideHandOrFootToTarget(struct Sprite *sprite)
|
||||
}
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[6]);
|
||||
gBattleAnimArgs[6] = 0;
|
||||
AnimSnoreZ(sprite);
|
||||
AnimTravelDiagonally(sprite);
|
||||
}
|
||||
|
||||
static void AnimJumpKick(struct Sprite *sprite)
|
||||
@@ -475,8 +468,8 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
|
||||
if (gBattleAnimArgs[2] < 0)
|
||||
gBattleAnimArgs[2] = Random() % 5;
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->x = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(battler, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
xMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 2;
|
||||
yMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
|
||||
x = Random() % xMod;
|
||||
@@ -491,19 +484,19 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
|
||||
sprite->y += y;
|
||||
sprite->data[0] = gBattleAnimArgs[1];
|
||||
sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1);
|
||||
if (sprite->data[7] != 64)
|
||||
if (sprite->data[7] != MAX_SPRITES)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
|
||||
gSprites[sprite->data[7]].callback = SpriteCallbackDummy;
|
||||
}
|
||||
sprite->callback = sub_80B0B2C;
|
||||
sprite->callback = AnimFistOrFootRandomPos_Step;
|
||||
}
|
||||
|
||||
static void sub_80B0B2C(struct Sprite *sprite)
|
||||
static void AnimFistOrFootRandomPos_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
if (sprite->data[7] != 64)
|
||||
if (sprite->data[7] != MAX_SPRITES)
|
||||
{
|
||||
FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[sprite->data[7]]);
|
||||
@@ -531,10 +524,10 @@ static void AnimCrossChopHand(struct Sprite *sprite)
|
||||
}
|
||||
sprite->data[4] = sprite->y - 20;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, sub_80B0BD8);
|
||||
StoreSpriteCallbackInData6(sprite, AnimCrossChopHand_Step);
|
||||
}
|
||||
|
||||
static void sub_80B0BD8(struct Sprite *sprite)
|
||||
static void AnimCrossChopHand_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[5] == 11)
|
||||
{
|
||||
@@ -550,6 +543,7 @@ static void sub_80B0BD8(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// Rolling Kick / Low Kick
|
||||
static void AnimSlidingKick(struct Sprite *sprite)
|
||||
{
|
||||
if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT)
|
||||
@@ -566,10 +560,10 @@ static void AnimSlidingKick(struct Sprite *sprite)
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
sprite->data[6] = gBattleAnimArgs[4];
|
||||
sprite->data[7] = 0;
|
||||
sprite->callback = sub_80B0CB4;
|
||||
sprite->callback = AnimSlidingKick_Step;
|
||||
}
|
||||
|
||||
static void sub_80B0CB4(struct Sprite *sprite)
|
||||
static void AnimSlidingKick_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (!AnimTranslateLinear(sprite))
|
||||
{
|
||||
@@ -622,8 +616,8 @@ 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->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, AnimStompFootEnd);
|
||||
}
|
||||
@@ -658,17 +652,18 @@ static void AnimDizzyPunchDuck(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// The wall that appears when Brick Break is going to shatter the target's defensive wall
|
||||
static void AnimBrickBreakWall(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||
}
|
||||
sprite->x += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[2];
|
||||
@@ -676,10 +671,10 @@ static void AnimBrickBreakWall(struct Sprite *sprite)
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
sprite->data[3] = 0;
|
||||
sprite->callback = sub_80B0EF0;
|
||||
sprite->callback = AnimBrickBreakWall_Step;
|
||||
}
|
||||
|
||||
static void sub_80B0EF0(struct Sprite *sprite)
|
||||
static void AnimBrickBreakWall_Step(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
@@ -709,17 +704,18 @@ static void sub_80B0EF0(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// Piece of shattered defensive wall flies off. Used by Brick Break when the target has a defensive wall
|
||||
static void AnimBrickBreakWallShard(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[2];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[2];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[3];
|
||||
}
|
||||
sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
|
||||
sprite->data[0] = 0;
|
||||
@@ -745,10 +741,10 @@ static void AnimBrickBreakWallShard(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
return;
|
||||
}
|
||||
sprite->callback = sub_80B1050;
|
||||
sprite->callback = AnimBrickBreakWallShard_Step;
|
||||
}
|
||||
|
||||
static void sub_80B1050(struct Sprite *sprite)
|
||||
static void AnimBrickBreakWallShard_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x += sprite->data[6];
|
||||
sprite->y += sprite->data[7];
|
||||
@@ -760,8 +756,8 @@ static void AnimSuperpowerOrb(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
sprite->data[7] = gBattleAnimTarget;
|
||||
}
|
||||
@@ -773,25 +769,26 @@ static void AnimSuperpowerOrb(struct Sprite *sprite)
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 12;
|
||||
sprite->data[2] = 8;
|
||||
sprite->callback = sub_80B111C;
|
||||
sprite->callback = AnimSuperpowerOrb_Step;
|
||||
}
|
||||
|
||||
static void sub_80B111C(struct Sprite *sprite)
|
||||
static void AnimSuperpowerOrb_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] == 180)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
sprite->data[0] = 16;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6;
|
||||
sprite->callback = AnimTranslateLinear_WithFollowup;
|
||||
}
|
||||
}
|
||||
|
||||
// Floating rock that flies off to hit the target. Used by Superpower
|
||||
static void AnimSuperpowerRock(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = gBattleAnimArgs[0];
|
||||
@@ -800,10 +797,10 @@ static void AnimSuperpowerRock(struct Sprite *sprite)
|
||||
StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->y << 8));
|
||||
sprite->data[6] = gBattleAnimArgs[1];
|
||||
sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
|
||||
sprite->callback = sub_80B11E4;
|
||||
sprite->callback = AnimSuperpowerRock_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B11E4(struct Sprite *sprite)
|
||||
static void AnimSuperpowerRock_Step1(struct Sprite *sprite)
|
||||
{
|
||||
void *var0;
|
||||
|
||||
@@ -821,20 +818,20 @@ static void sub_80B11E4(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
|
||||
sprite->data[0] = pos2 - pos0;
|
||||
sprite->data[1] = pos3 - pos1;
|
||||
sprite->data[2] = sprite->x << 4;
|
||||
sprite->data[3] = sprite->y << 4;
|
||||
sprite->callback = sub_80B12A4;
|
||||
sprite->callback = AnimSuperpowerRock_Step2;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B12A4(struct Sprite *sprite)
|
||||
static void AnimSuperpowerRock_Step2(struct Sprite *sprite)
|
||||
{
|
||||
u16 edgeX;
|
||||
|
||||
@@ -851,10 +848,10 @@ static void AnimSuperpowerFireball(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
battler = gBattleAnimTarget;
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
}
|
||||
@@ -869,15 +866,15 @@ static void AnimSuperpowerFireball(struct Sprite *sprite)
|
||||
sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP);
|
||||
sprite->data[0] = 16;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(battler, 3);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6;
|
||||
sprite->callback = AnimTranslateLinear_WithFollowup;
|
||||
}
|
||||
|
||||
static void sub_80B13D4(struct Sprite *sprite)
|
||||
static void AnimArmThrustHit_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == sprite->data[4])
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -888,8 +885,8 @@ static void AnimArmThrustHit(struct Sprite *sprite)
|
||||
{
|
||||
u8 turn;
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[1];
|
||||
@@ -905,12 +902,12 @@ static void AnimArmThrustHit(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, sprite->data[1]);
|
||||
sprite->x2 = sprite->data[2];
|
||||
sprite->y2 = sprite->data[3];
|
||||
sprite->callback = sub_80B13D4;
|
||||
sprite->callback = AnimArmThrustHit_Step;
|
||||
}
|
||||
|
||||
static void AnimRevengeScratch(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
|
||||
InitSpritePosToAnimAttacker(sprite, 0);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
@@ -922,6 +919,7 @@ static void AnimRevengeScratch(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Fist shrinks toward target and shakes
|
||||
static void AnimFocusPunchFist(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->affineAnimEnded)
|
||||
+279
-190
@@ -10,8 +10,8 @@ static void AnimFireSpiralInward(struct Sprite *sprite);
|
||||
static void AnimFireSpread(struct Sprite *sprite);
|
||||
static void AnimLargeFlame(struct Sprite *sprite);
|
||||
static void AnimFirePlume(struct Sprite *sprite);
|
||||
static void sub_80ACAA8(struct Sprite *sprite);
|
||||
static void sub_80ACBB0(struct Sprite *sprite);
|
||||
static void AnimUnusedSmallEmber(struct Sprite *sprite);
|
||||
static void AnimSunlight(struct Sprite *sprite);
|
||||
static void AnimEmberFlare(struct Sprite *sprite);
|
||||
static void AnimBurnFlame(struct Sprite *sprite);
|
||||
static void AnimFireRing(struct Sprite *sprite);
|
||||
@@ -21,22 +21,22 @@ static void AnimEruptionLaunchRock(struct Sprite *sprite);
|
||||
static void AnimEruptionFallingRock(struct Sprite *sprite);
|
||||
static void AnimWillOWispOrb(struct Sprite *sprite);
|
||||
static void AnimWillOWispFire(struct Sprite *sprite);
|
||||
static void sub_80ACA6C(struct Sprite *sprite);
|
||||
static void sub_80ACB1C(struct Sprite *sprite);
|
||||
static void AnimLargeFlame_Step(struct Sprite *sprite);
|
||||
static void AnimUnusedSmallEmber_Step(struct Sprite *sprite);
|
||||
static void AnimFireRing_Step1(struct Sprite *sprite);
|
||||
static void AnimFireRing_Step2(struct Sprite *sprite);
|
||||
static void AnimFireRing_Step3(struct Sprite *sprite);
|
||||
static void UpdateFireRingCircleOffset(struct Sprite *sprite);
|
||||
static void sub_80ACE28(struct Sprite *sprite);
|
||||
static void sub_80ACE50(struct Sprite *sprite);
|
||||
static void AnimFireSpiralOutward_Step1(struct Sprite *sprite);
|
||||
static void AnimFireSpiralOutward_Step2(struct Sprite *sprite);
|
||||
static void AnimTask_EruptionLaunchRocks_Step(u8 taskId);
|
||||
static void sub_80AD1F8(u8 spriteId, u8 taskId, u8 a3);
|
||||
static u16 sub_80AD374(u8 spriteId);
|
||||
static void sub_80AD3C8(struct Sprite *sprite, s16 x, s16 y);
|
||||
static void sub_80AD3E4(struct Sprite *sprite);
|
||||
static void sub_80AD4A8(struct Sprite *sprite);
|
||||
static void sub_80AD690(struct Sprite *sprite);
|
||||
static void sub_80AD870(u8 taskId);
|
||||
static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3);
|
||||
static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId);
|
||||
static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y);
|
||||
static void UpdateEruptionLaunchRockPos(struct Sprite *sprite);
|
||||
static void AnimEruptionFallingRock_Step(struct Sprite *sprite);
|
||||
static void AnimWillOWispOrb_Step(struct Sprite *sprite);
|
||||
static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId);
|
||||
|
||||
static const union AnimCmd sAnim_FireSpiralSpread_0[] =
|
||||
{
|
||||
@@ -160,7 +160,7 @@ const struct SpriteTemplate gFirePlumeSpriteTemplate =
|
||||
.callback = AnimFirePlume,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E5CB8 =
|
||||
static const struct SpriteTemplate sUnusedEmberFirePlumeSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SMALL_EMBER,
|
||||
.paletteTag = ANIM_TAG_SMALL_EMBER,
|
||||
@@ -171,7 +171,7 @@ const struct SpriteTemplate gUnknown_83E5CB8 =
|
||||
.callback = AnimFirePlume,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E5CD0[] =
|
||||
static const union AnimCmd sAnim_UnusedSmallEmber[] =
|
||||
{
|
||||
ANIMCMD_FRAME(16, 6),
|
||||
ANIMCMD_FRAME(32, 6),
|
||||
@@ -179,20 +179,20 @@ static const union AnimCmd gUnknown_83E5CD0[] =
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E5CE0[] =
|
||||
static const union AnimCmd *const sAnims_UnusedSmallEmber[] =
|
||||
{
|
||||
gUnknown_83E5CD0,
|
||||
sAnim_UnusedSmallEmber,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E5CE4 =
|
||||
static const struct SpriteTemplate sUnusedSmallEmberSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SMALL_EMBER,
|
||||
.paletteTag = ANIM_TAG_SMALL_EMBER,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gUnknown_83E5CE0,
|
||||
.anims = sAnims_UnusedSmallEmber,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80ACAA8,
|
||||
.callback = AnimUnusedSmallEmber,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_SunlightRay[] =
|
||||
@@ -215,7 +215,7 @@ const struct SpriteTemplate gSunlightRaySpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = sAffineAnims_SunlightRay,
|
||||
.callback = sub_80ACBB0,
|
||||
.callback = AnimSunlight,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_BasicFire[] =
|
||||
@@ -289,22 +289,22 @@ static const union AnimCmd *const sAnims_FireBlastCross[] =
|
||||
sAnim_FireBlastCross,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E5DBC[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Unused_0[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_83E5DCC[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Unused_1[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gUnknown_83E5DDC[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_Unused[] =
|
||||
{
|
||||
gUnknown_83E5DBC,
|
||||
gUnknown_83E5DCC,
|
||||
sAffineAnim_Unused_0,
|
||||
sAffineAnim_Unused_1,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFireBlastCrossSpriteTemplate =
|
||||
@@ -351,7 +351,7 @@ static const struct SpriteTemplate gEruptionLaunchRockSpriteTemplate =
|
||||
.callback = AnimEruptionLaunchRock,
|
||||
};
|
||||
|
||||
static const s16 sEruptionLaunchRockCoords[][2] =
|
||||
static const s16 sEruptionLaunchRockSpeeds[][2] =
|
||||
{
|
||||
{-2, -5},
|
||||
{-1, -1},
|
||||
@@ -457,6 +457,7 @@ static const s8 sShakeDirsPattern1[16] =
|
||||
-1, 0, 1, 0, -1, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1,
|
||||
};
|
||||
|
||||
// For the first stage of Fire Punch
|
||||
static void AnimFireSpiralInward(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = gBattleAnimArgs[0];
|
||||
@@ -465,10 +466,11 @@ static void AnimFireSpiralInward(struct Sprite *sprite)
|
||||
sprite->data[3] = 0x1E;
|
||||
sprite->data[4] = 0xFE00;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->callback = TranslateSpriteInGrowingCircleOverDuration;
|
||||
sprite->callback = TranslateSpriteInGrowingCircle;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
// For the impact spread of fire sprites for moves like Blaze Kick or Fire Punch
|
||||
static void AnimFireSpread(struct Sprite *sprite)
|
||||
{
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
@@ -498,7 +500,7 @@ static void AnimFirePlume(struct Sprite *sprite)
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
sprite->data[4] = gBattleAnimArgs[3];
|
||||
sprite->data[3] = gBattleAnimArgs[5];
|
||||
sprite->callback = sub_80ACA6C;
|
||||
sprite->callback = AnimLargeFlame_Step;
|
||||
}
|
||||
|
||||
static void AnimLargeFlame(struct Sprite *sprite)
|
||||
@@ -518,10 +520,10 @@ static void AnimLargeFlame(struct Sprite *sprite)
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
sprite->data[4] = gBattleAnimArgs[3];
|
||||
sprite->data[3] = gBattleAnimArgs[5];
|
||||
sprite->callback = sub_80ACA6C;
|
||||
sprite->callback = AnimLargeFlame_Step;
|
||||
}
|
||||
|
||||
static void sub_80ACA6C(struct Sprite *sprite)
|
||||
static void AnimLargeFlame_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] < sprite->data[4])
|
||||
{
|
||||
@@ -532,7 +534,7 @@ static void sub_80ACA6C(struct Sprite *sprite)
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
|
||||
static void sub_80ACAA8(struct Sprite *sprite)
|
||||
static void AnimUnusedSmallEmber(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
@@ -551,10 +553,10 @@ static void sub_80ACAA8(struct Sprite *sprite)
|
||||
sprite->data[3] = gBattleAnimArgs[5];
|
||||
sprite->data[4] = gBattleAnimArgs[6];
|
||||
sprite->data[5] = 0;
|
||||
sprite->callback = sub_80ACB1C;
|
||||
sprite->callback = AnimUnusedSmallEmber_Step;
|
||||
}
|
||||
|
||||
static void sub_80ACB1C(struct Sprite *sprite)
|
||||
static void AnimUnusedSmallEmber_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
@@ -576,8 +578,8 @@ static void sub_80ACB1C(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
//sunlight
|
||||
static void sub_80ACBB0(struct Sprite *sprite)
|
||||
// Sunlight from Sunny Day / sunny weather
|
||||
static void AnimSunlight(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = 0;
|
||||
sprite->y = 0;
|
||||
@@ -588,8 +590,6 @@ static void sub_80ACBB0(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
//fire 2
|
||||
|
||||
// Animates the secondary effect of MOVE_EMBER, where the flames grow and slide
|
||||
// horizontally a bit.
|
||||
// arg 0: initial x pixel offset
|
||||
@@ -605,7 +605,7 @@ static void AnimEmberFlare(struct Sprite *sprite)
|
||||
&& (gBattleAnimAttacker == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)
|
||||
|| gBattleAnimAttacker == GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)))
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->callback = AnimSnoreZ;
|
||||
sprite->callback = AnimTravelDiagonally;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
@@ -613,7 +613,7 @@ static void AnimBurnFlame(struct Sprite *sprite)
|
||||
{
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->callback = AnimSnoreZ;
|
||||
sprite->callback = AnimTravelDiagonally;
|
||||
}
|
||||
|
||||
// Animates the a fire sprite in the first-half of the MOVE_FIRE_BLAST
|
||||
@@ -626,7 +626,7 @@ static void AnimBurnFlame(struct Sprite *sprite)
|
||||
//void AnimFireRing(struct Sprite *sprite)
|
||||
static void AnimFireRing(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[7] = gBattleAnimArgs[2];
|
||||
sprite->data[0] = 0;
|
||||
sprite->callback = AnimFireRing_Step1;
|
||||
@@ -640,9 +640,9 @@ static void AnimFireRing_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 0x19;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = AnimFireRing_Step2;
|
||||
}
|
||||
@@ -654,8 +654,8 @@ static void AnimFireRing_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x2 = sprite->y2 = 0;
|
||||
sprite->callback = AnimFireRing_Step3;
|
||||
sprite->callback(sprite);
|
||||
@@ -706,19 +706,19 @@ static void AnimFireSpiralOutward(struct Sprite *sprite)
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, sub_80ACE28);
|
||||
StoreSpriteCallbackInData6(sprite, AnimFireSpiralOutward_Step1);
|
||||
}
|
||||
|
||||
static void sub_80ACE28(struct Sprite *sprite)
|
||||
static void AnimFireSpiralOutward_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
sprite->data[0] = sprite->data[1];
|
||||
sprite->data[1] = 0;
|
||||
sprite->callback = sub_80ACE50;
|
||||
sprite->callback = AnimFireSpiralOutward_Step2;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80ACE50(struct Sprite *sprite)
|
||||
static void AnimFireSpiralOutward_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
|
||||
sprite->y2 = Cos(sprite->data[1], sprite->data[2] >> 8);
|
||||
@@ -728,258 +728,337 @@ static void sub_80ACE50(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void AnimTask_EruptionLaunchRocks(u8 taskId) // initialize animation task for Move_ERUPTION?
|
||||
#define IDX_ACTIVE_SPRITES 6 // Used by the sprite callback to modify the number of active sprites
|
||||
|
||||
#define tState data[0]
|
||||
#define tTimer1 data[1]
|
||||
#define tTimer2 data[2]
|
||||
#define tTimer3 data[3]
|
||||
#define tAttackerY data[4]
|
||||
#define tAttackerSide data[5]
|
||||
#define tActiveSprites data[IDX_ACTIVE_SPRITES]
|
||||
// data[8]-data[15] used by BattleAnimHelper_SetSpriteSquashParams / BattleAnimHelper_RunSpriteSquash
|
||||
#define tAttackerSpriteId data[15]
|
||||
|
||||
#define sSpeedDelay data[0]
|
||||
#define sLaunchStage data[1]
|
||||
#define sX data[2]
|
||||
#define sY data[3]
|
||||
#define sSpeedX data[4]
|
||||
#define sSpeedY data[5]
|
||||
#define sTaskId data[6]
|
||||
#define sActiveSpritesIdx data[7]
|
||||
|
||||
// Animates first stage of Eruption where the attacker squishes and launches rocks away from themself
|
||||
void AnimTask_EruptionLaunchRocks(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
task->data[0] = 0;
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
task->data[3] = 0;
|
||||
task->data[4] = gSprites[task->data[15]].y;
|
||||
task->data[5] = GetBattlerSide(gBattleAnimAttacker);
|
||||
task->data[6] = 0;
|
||||
task->tAttackerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
task->tState = 0;
|
||||
task->tTimer1 = 0;
|
||||
task->tTimer2 = 0;
|
||||
task->tTimer3 = 0;
|
||||
task->tAttackerY = gSprites[task->tAttackerSpriteId].y;
|
||||
task->tAttackerSide = GetBattlerSide(gBattleAnimAttacker);
|
||||
task->tActiveSprites = 0;
|
||||
PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
|
||||
task->func = AnimTask_EruptionLaunchRocks_Step;
|
||||
}
|
||||
|
||||
static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) // animate Move_ERUPTION?
|
||||
static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
switch (task->tState)
|
||||
{
|
||||
case 0:
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 0x20);
|
||||
++task->data[0];
|
||||
// fall through
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x100, 0x100, 0xE0, 0x200, 32);
|
||||
task->tState++;
|
||||
case 1:
|
||||
if (++task->data[1] > 1)
|
||||
if (++task->tTimer1 > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if (++task->data[2] & 0x1)
|
||||
gSprites[task->data[15]].x2 = 3;
|
||||
task->tTimer1 = 0;
|
||||
|
||||
if (++task->tTimer2 & 1)
|
||||
gSprites[task->tAttackerSpriteId].x2 = 3;
|
||||
else
|
||||
gSprites[task->data[15]].x2 = -3;
|
||||
gSprites[task->tAttackerSpriteId].x2 = -3;
|
||||
}
|
||||
if (task->data[5])
|
||||
|
||||
if (task->tAttackerSide != B_SIDE_PLAYER)
|
||||
{
|
||||
if (++task->data[3] > 4)
|
||||
if (++task->tTimer3 > 4)
|
||||
{
|
||||
task->data[3] = 0;
|
||||
++gSprites[task->data[15]].y;
|
||||
task->tTimer3 = 0;
|
||||
gSprites[task->tAttackerSpriteId].y++;
|
||||
}
|
||||
}
|
||||
|
||||
if(!BattleAnimHelper_RunSpriteSquash(task))
|
||||
{
|
||||
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
|
||||
gSprites[task->data[15]].x2 = 0;
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
task->data[3] = 0;
|
||||
++task->data[0];
|
||||
SetBattlerSpriteYOffsetFromYScale(task->tAttackerSpriteId);
|
||||
gSprites[task->tAttackerSpriteId].x2 = 0;
|
||||
|
||||
task->tTimer1 = 0;
|
||||
task->tTimer2 = 0;
|
||||
task->tTimer3 = 0;
|
||||
task->tState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (++task->data[1] > 4)
|
||||
if (++task->tTimer1 > 4)
|
||||
{
|
||||
if (task->data[5])
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 0x6);
|
||||
if (task->tAttackerSide != B_SIDE_PLAYER)
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xF0, 6);
|
||||
else
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 0x6);
|
||||
task->data[1] = 0;
|
||||
++task->data[0];
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xC0, 6);
|
||||
|
||||
task->tTimer1 = 0;
|
||||
task->tState++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!BattleAnimHelper_RunSpriteSquash(task))
|
||||
{
|
||||
sub_80AD1F8(task->data[15], taskId, 6);
|
||||
++task->data[0];
|
||||
CreateEruptionLaunchRocks(task->tAttackerSpriteId, taskId, IDX_ACTIVE_SPRITES);
|
||||
task->tState++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (++task->data[1] > 1)
|
||||
if (++task->tTimer1 > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if (++task->data[2] & 1)
|
||||
gSprites[task->data[15]].y2 += 3;
|
||||
task->tTimer1 = 0;
|
||||
|
||||
if (++task->tTimer2 & 1)
|
||||
gSprites[task->tAttackerSpriteId].y2 += 3;
|
||||
else
|
||||
gSprites[task->data[15]].y2 -= 3;
|
||||
gSprites[task->tAttackerSpriteId].y2 -= 3;
|
||||
}
|
||||
if (++task->data[3] > 0x18)
|
||||
|
||||
if (++task->tTimer3 > 24)
|
||||
{
|
||||
if (task->data[5])
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 0x8);
|
||||
if (task->tAttackerSide != B_SIDE_PLAYER)
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x180, 0xF0, 0x100, 0x100, 8);
|
||||
else
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 0x8);
|
||||
if (task->data[2] & 1)
|
||||
gSprites[task->data[15]].y2 -= 3;
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
task->data[3] = 0;
|
||||
++task->data[0];
|
||||
BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x180, 0xC0, 0x100, 0x100, 8);
|
||||
|
||||
if (task->tTimer2 & 1)
|
||||
gSprites[task->tAttackerSpriteId].y2 -= 3;
|
||||
|
||||
task->tTimer1 = 0;
|
||||
task->tTimer2 = 0;
|
||||
task->tTimer3 = 0;
|
||||
task->tState++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (task->data[5])
|
||||
--gSprites[task->data[15]].y;
|
||||
if (task->tAttackerSide != B_SIDE_PLAYER)
|
||||
gSprites[task->tAttackerSpriteId].y--;
|
||||
|
||||
if (!BattleAnimHelper_RunSpriteSquash(task))
|
||||
{
|
||||
gSprites[task->data[15]].y = task->data[4];
|
||||
ResetSpriteRotScale(task->data[15]);
|
||||
|
||||
task->data[2] = 0;
|
||||
++task->data[0];
|
||||
gSprites[task->tAttackerSpriteId].y = task->tAttackerY;
|
||||
ResetSpriteRotScale(task->tAttackerSpriteId);
|
||||
task->tTimer2 = 0;
|
||||
task->tState++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (!task->data[6])
|
||||
if (task->tActiveSprites == 0)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80AD1F8(u8 spriteId, u8 taskId, u8 a3)
|
||||
static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesIdx)
|
||||
{
|
||||
u16 i, j;
|
||||
s8 sign;
|
||||
u16 y = sub_80AD374(spriteId);
|
||||
|
||||
u16 y = GetEruptionLaunchRockInitialYPos(spriteId);
|
||||
u16 x = gSprites[spriteId].x;
|
||||
|
||||
if(GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
if(!GetBattlerSide(gBattleAnimAttacker))
|
||||
{
|
||||
x -= 0xC;
|
||||
x -= 12;
|
||||
sign = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
x += 0x10;
|
||||
x += 16;
|
||||
sign = -1;
|
||||
}
|
||||
for (i = 0, j = 0; i <= 6; ++i)
|
||||
|
||||
for (i = 0, j = 0; i <= 6; i++)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gEruptionLaunchRockSpriteTemplate, x, y, 2);
|
||||
|
||||
if (spriteId != 0x40)
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].oam.tileNum += j * 4 + 0x40;
|
||||
|
||||
if (++j >= 5)
|
||||
j = 0;
|
||||
sub_80AD3C8(&gSprites[spriteId], sEruptionLaunchRockCoords[i][0] * sign, sEruptionLaunchRockCoords[i][1]);
|
||||
gSprites[spriteId].data[6] = taskId;
|
||||
gSprites[spriteId].data[7] = a3;
|
||||
++gTasks[taskId].data[a3];
|
||||
|
||||
InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockSpeeds[i][0] * sign, sEruptionLaunchRockSpeeds[i][1]);
|
||||
gSprites[spriteId].sTaskId = taskId;
|
||||
gSprites[spriteId].sActiveSpritesIdx = activeSpritesIdx;
|
||||
|
||||
gTasks[taskId].data[activeSpritesIdx]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimEruptionLaunchRock(struct Sprite *sprite)
|
||||
{
|
||||
sub_80AD3E4(sprite);
|
||||
UpdateEruptionLaunchRockPos(sprite);
|
||||
|
||||
if (sprite->invisible)
|
||||
{
|
||||
--gTasks[sprite->data[6]].data[sprite->data[7]];
|
||||
gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--;
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static u16 sub_80AD374(u8 spriteId)
|
||||
static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId)
|
||||
{
|
||||
u16 var1 = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY;
|
||||
s16 y = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY;
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
var1 = ((var1 << 16) + 0x4A0000) >> 16;
|
||||
y += 74;
|
||||
else
|
||||
var1 = ((var1 << 16) + 0x2C0000) >> 16;
|
||||
return var1;
|
||||
y += 44;
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
static void sub_80AD3C8(struct Sprite *sprite, s16 x, s16 y)
|
||||
static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 speedX, s16 speedY)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[2] = (u16)sprite->x * 8;
|
||||
sprite->data[3] = (u16)sprite->y * 8;
|
||||
sprite->data[4] = x * 8;
|
||||
sprite->data[5] = y * 8;
|
||||
sprite->sSpeedDelay = 0;
|
||||
sprite->sLaunchStage = 0;
|
||||
sprite->sX = (u16)sprite->x * 8;
|
||||
sprite->sY = (u16)sprite->y * 8;
|
||||
sprite->sSpeedX = speedX * 8;
|
||||
sprite->sSpeedY = speedY * 8;
|
||||
}
|
||||
|
||||
static void sub_80AD3E4(struct Sprite *sprite)
|
||||
static void UpdateEruptionLaunchRockPos(struct Sprite *sprite)
|
||||
{
|
||||
s32 var1;
|
||||
|
||||
if (++sprite->data[0] > 2)
|
||||
int extraLaunchSpeed;
|
||||
if (++sprite->sSpeedDelay > 2)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
++sprite->data[1];
|
||||
var1 = (u16)sprite->data[1] * (u16)sprite->data[1];
|
||||
sprite->data[3] += var1;
|
||||
sprite->sSpeedDelay = 0;
|
||||
++sprite->sLaunchStage;
|
||||
extraLaunchSpeed = (u16)sprite->sLaunchStage * (u16)sprite->sLaunchStage;
|
||||
sprite->sY += extraLaunchSpeed;
|
||||
}
|
||||
sprite->data[2] += sprite->data[4];
|
||||
sprite->x = sprite->data[2] >> 3;
|
||||
sprite->data[3] += sprite->data[5];
|
||||
sprite->y = sprite->data[3] >> 3;
|
||||
if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120)
|
||||
|
||||
sprite->sX += sprite->sSpeedX;
|
||||
sprite->x = sprite->sX >> 3;
|
||||
sprite->sY += sprite->sSpeedY;
|
||||
sprite->y = sprite->sY >> 3;
|
||||
|
||||
if (sprite->x < -8 || sprite->x > DISPLAY_WIDTH + 8 || sprite->y < -8 || sprite->y > 120)
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
#undef IDX_ACTIVE_SPRITES
|
||||
#undef tState
|
||||
#undef tTimer1
|
||||
#undef tTimer2
|
||||
#undef tTimer3
|
||||
#undef tAttackerY
|
||||
#undef tAttackerSide
|
||||
#undef tActiveSprites
|
||||
#undef tAttackerSpriteId
|
||||
#undef sSpeedDelay
|
||||
#undef sLaunchStage
|
||||
#undef sX
|
||||
#undef sY
|
||||
#undef sSpeedX
|
||||
#undef sSpeedY
|
||||
#undef sTaskId
|
||||
#undef sActiveSpritesIdx
|
||||
|
||||
#define sState data[0]
|
||||
#define sBounceTimer data[1]
|
||||
#define sBounceDir data[2]
|
||||
#define sEndTimer data[3]
|
||||
#define sFallDelay data[6]
|
||||
#define sTargetY data[7]
|
||||
|
||||
static void AnimEruptionFallingRock(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = gBattleAnimArgs[0];
|
||||
sprite->y = gBattleAnimArgs[1];
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[6] = gBattleAnimArgs[2];
|
||||
sprite->data[7] = gBattleAnimArgs[3];
|
||||
|
||||
sprite->sState = 0;
|
||||
sprite->sBounceTimer = 0;
|
||||
sprite->sBounceDir = 0;
|
||||
sprite->sFallDelay = gBattleAnimArgs[2];
|
||||
sprite->sTargetY = gBattleAnimArgs[3];
|
||||
|
||||
sprite->oam.tileNum += gBattleAnimArgs[4] * 16;
|
||||
sprite->callback = sub_80AD4A8;
|
||||
sprite->callback = AnimEruptionFallingRock_Step;
|
||||
}
|
||||
|
||||
static void sub_80AD4A8(struct Sprite *sprite)
|
||||
static void AnimEruptionFallingRock_Step(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
switch (sprite->sState)
|
||||
{
|
||||
case 0:
|
||||
if (sprite->data[6] != 0)
|
||||
// Wait to begin falling
|
||||
if (sprite->sFallDelay != 0)
|
||||
{
|
||||
--sprite->data[6];
|
||||
sprite->sFallDelay--;
|
||||
return;
|
||||
}
|
||||
++sprite->data[0];
|
||||
|
||||
sprite->sState++;
|
||||
// fall through
|
||||
case 1:
|
||||
// Rock is falling
|
||||
sprite->y += 8;
|
||||
if (sprite->y >= sprite->data[7])
|
||||
if (sprite->y >= sprite->sTargetY)
|
||||
{
|
||||
sprite->y = sprite->data[7];
|
||||
++sprite->data[0];
|
||||
sprite->y = sprite->sTargetY;
|
||||
sprite->sState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (++sprite->data[1] > 1)
|
||||
// Bounce up and down on landing spot
|
||||
if (++sprite->sBounceTimer > 1)
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
if ((++sprite->data[2] & 1) != 0)
|
||||
sprite->sBounceTimer = 0;
|
||||
if ((++sprite->sBounceDir & 1) != 0)
|
||||
sprite->y2 = -3;
|
||||
else
|
||||
sprite->y2 = 3;
|
||||
}
|
||||
if (++sprite->data[3] > 16)
|
||||
|
||||
if (++sprite->sEndTimer > 16)
|
||||
DestroyAnimSprite(sprite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#undef sState
|
||||
#undef sBounceTimer
|
||||
#undef sBounceDir
|
||||
#undef sEndTimer
|
||||
#undef sFallDelay
|
||||
#undef sTargetY
|
||||
|
||||
//wisp orb
|
||||
static void AnimWillOWispOrb(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
InitSpritePosToAnimAttacker(sprite, 0);
|
||||
InitSpritePosToAnimAttacker(sprite, FALSE);
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->data[7] = gBattleAnimArgs[2];
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
@@ -1013,17 +1092,17 @@ static void AnimWillOWispOrb(struct Sprite *sprite)
|
||||
sprite->x2 = sprite->y2 = 0;
|
||||
sprite->data[0] = 256;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
BattleAnim_InitLinearTranslationWithDuration(sprite);
|
||||
sprite->callback = sub_80AD690;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
sprite->callback = AnimWillOWispOrb_Step;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80AD690(struct Sprite *sprite)
|
||||
static void AnimWillOWispOrb_Step(struct Sprite *sprite)
|
||||
{
|
||||
s16 initialData5, newData5;
|
||||
|
||||
@@ -1034,7 +1113,7 @@ static void sub_80AD690(struct Sprite *sprite)
|
||||
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
|
||||
newData5 = sprite->data[5];
|
||||
if ((initialData5 == 0 || initialData5 > 196) && newData5 > 0 && sprite->data[7] == 0)
|
||||
PlaySE12WithPanning(SE_M_FLAME_WHEEL, gUnknown_2037F24);
|
||||
PlaySE12WithPanning(SE_M_FLAME_WHEEL, gAnimCustomPanning);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1042,7 +1121,6 @@ static void sub_80AD690(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
//wisp fire
|
||||
static void AnimWillOWispFire(struct Sprite *sprite)
|
||||
{
|
||||
if (!sprite->data[0])
|
||||
@@ -1083,10 +1161,10 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId)
|
||||
task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK) + 1;
|
||||
task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER);
|
||||
task->func = sub_80AD870;
|
||||
task->func = AnimTask_MoveHeatWaveTargets_Step;
|
||||
}
|
||||
|
||||
static void sub_80AD870(u8 taskId)
|
||||
static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -1153,7 +1231,7 @@ static void sub_80AD870(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Used to add a color mask to the battle interface / HUD in Heat Wave.
|
||||
// Used to add a color mask to the battle background.
|
||||
// arg 0: opacity
|
||||
// arg 1: color code
|
||||
void AnimTask_BlendBackground(u8 taskId)
|
||||
@@ -1165,29 +1243,40 @@ void AnimTask_BlendBackground(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
#define tShakeNum data[0]
|
||||
#define tMaxShakes data[1]
|
||||
#define tShakeOffset data[2] // Never read, gBattleAnimArgs[1] is used directly instead
|
||||
#define tVertical data[3]
|
||||
#define tPatternId data[4]
|
||||
|
||||
// Shakes target horizontally or vertically tMaxShakes times, following a set pattern of alternations
|
||||
void AnimTask_ShakeTargetInPattern(u8 taskId)
|
||||
{
|
||||
s8 unk;
|
||||
s8 dir;
|
||||
u8 spriteId;
|
||||
|
||||
if (gTasks[taskId].data[0] == 0)
|
||||
if (gTasks[taskId].tShakeNum == 0)
|
||||
{
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].tMaxShakes = gBattleAnimArgs[0];
|
||||
gTasks[taskId].tShakeOffset = gBattleAnimArgs[1];
|
||||
gTasks[taskId].tVertical = gBattleAnimArgs[2];
|
||||
gTasks[taskId].tPatternId = gBattleAnimArgs[3];
|
||||
}
|
||||
++gTasks[taskId].data[0];
|
||||
gTasks[taskId].tShakeNum++;
|
||||
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimTarget];
|
||||
if (!gTasks[taskId].data[4])
|
||||
unk = sShakeDirsPattern0[gTasks[taskId].data[0] % 10];
|
||||
|
||||
if (gTasks[taskId].tPatternId == 0)
|
||||
dir = sShakeDirsPattern0[gTasks[taskId].tShakeNum % 10];
|
||||
else
|
||||
unk = sShakeDirsPattern1[gTasks[taskId].data[0] % 10];
|
||||
if (gTasks[taskId].data[3] == 1)
|
||||
gSprites[spriteId].y2 = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk;
|
||||
dir = sShakeDirsPattern1[gTasks[taskId].tShakeNum % 10];
|
||||
|
||||
if (gTasks[taskId].tVertical == TRUE)
|
||||
gSprites[spriteId].y2 = gBattleAnimArgs[1] * dir < 0 ? -(gBattleAnimArgs[1] * dir) : gBattleAnimArgs[1] * dir;
|
||||
else
|
||||
gSprites[spriteId].x2 = gBattleAnimArgs[1] * unk;
|
||||
if (gTasks[taskId].data[0] == gTasks[taskId].data[1])
|
||||
gSprites[spriteId].x2 = gBattleAnimArgs[1] * dir;
|
||||
|
||||
if (gTasks[taskId].tShakeNum == gTasks[taskId].tMaxShakes)
|
||||
{
|
||||
gSprites[spriteId].x2 = 0;
|
||||
gSprites[spriteId].y2 = 0;
|
||||
@@ -11,29 +11,29 @@ static void AnimAirWaveCrescent(struct Sprite *sprite);
|
||||
static void AnimFlyBallUp(struct Sprite *sprite);
|
||||
static void AnimFlyBallAttack(struct Sprite *sprite);
|
||||
static void AnimFallingFeather(struct Sprite *sprite);
|
||||
static void sub_80B24C0(struct Sprite *sprite);
|
||||
static void sub_80B2514(struct Sprite *sprite);
|
||||
static void AnimUnusedBubbleThrow(struct Sprite *sprite);
|
||||
static void AnimUnusedFeather(struct Sprite *sprite);
|
||||
static void AnimWhirlwindLine(struct Sprite *sprite);
|
||||
static void AnimBounceBallShrink(struct Sprite *sprite);
|
||||
static void AnimBounceBallLand(struct Sprite *sprite);
|
||||
static void AnimDiveBall(struct Sprite *sprite);
|
||||
static void AnimDiveWaterSplash(struct Sprite *sprite);
|
||||
static void AnimSprayWaterDroplet(struct Sprite *sprite);
|
||||
static void sub_80B2CE4(struct Sprite *sprite);
|
||||
static void AnimUnusedFlashingLight(struct Sprite *sprite);
|
||||
static void AnimSkyAttackBird(struct Sprite *sprite);
|
||||
static void sub_80B190C(struct Sprite *sprite);
|
||||
static void sub_80B198C(u8 taskId);
|
||||
static void sub_80B1A9C(struct Sprite *sprite);
|
||||
static void sub_80B1BF8(struct Sprite *sprite);
|
||||
static void sub_80B1CC0(struct Sprite *sprite);
|
||||
static void AnimEllipticalGust_Step(struct Sprite *sprite);
|
||||
static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId);
|
||||
static void AnimGustToTarget_Step(struct Sprite *sprite);
|
||||
static void AnimFlyBallUp_Step(struct Sprite *sprite);
|
||||
static void AnimFlyBallAttack_Step(struct Sprite *sprite);
|
||||
static void AnimFallingFeather_Step(struct Sprite *sprite);
|
||||
static void sub_80B268C(struct Sprite *sprite);
|
||||
static void sub_80B2820(struct Sprite *sprite);
|
||||
static void sub_80B2A50(struct Sprite *sprite);
|
||||
static void sub_80B2AB0(struct Sprite *sprite);
|
||||
static void sub_80B2C88(struct Sprite *sprite);
|
||||
static void sub_80B2CF8(struct Sprite *sprite);
|
||||
static void sub_80B2E20(struct Sprite *sprite);
|
||||
static void AnimUnusedFeather_Step(struct Sprite *sprite);
|
||||
static void AnimWhirlwindLine_Step(struct Sprite *sprite);
|
||||
static void AnimDiveBall_Step1(struct Sprite *sprite);
|
||||
static void AnimDiveBall_Step2(struct Sprite *sprite);
|
||||
static void AnimSprayWaterDroplet_Step(struct Sprite *sprite);
|
||||
static void AnimUnusedFlashingLight_Step(struct Sprite *sprite);
|
||||
static void AnimSkyAttackBird_Step(struct Sprite *sprite);
|
||||
|
||||
const struct SpriteTemplate gEllipticalGustSpriteTemplate =
|
||||
{
|
||||
@@ -177,10 +177,9 @@ const struct SpriteTemplate gFallingFeatherSpriteTemplate =
|
||||
.callback = AnimFallingFeather,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const u16 gUnknown_83E6C18[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal");
|
||||
static const u16 sUnusedPal[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal");
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6C38 =
|
||||
static const struct SpriteTemplate sUnusedBubbleThrowSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SMALL_BUBBLES,
|
||||
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
|
||||
@@ -188,10 +187,10 @@ const struct SpriteTemplate gUnknown_83E6C38 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B24C0,
|
||||
.callback = AnimUnusedBubbleThrow,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6C50 =
|
||||
static const struct SpriteTemplate sUnusedFeatherSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_WHITE_FEATHER,
|
||||
.paletteTag = ANIM_TAG_WHITE_FEATHER,
|
||||
@@ -199,7 +198,7 @@ const struct SpriteTemplate gUnknown_83E6C50 =
|
||||
.anims = sAnims_FallingFeather,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B2514,
|
||||
.callback = AnimUnusedFeather,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_WhirlwindLines[] =
|
||||
@@ -301,8 +300,7 @@ const struct SpriteTemplate gDiveBallSpriteTemplate =
|
||||
.callback = AnimDiveBall,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const union AffineAnimCmd gUnknown_83E6D58[] =
|
||||
static const union AffineAnimCmd sAnim_Unused[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12),
|
||||
@@ -310,10 +308,9 @@ static const union AffineAnimCmd gUnknown_83E6D58[] =
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const union AffineAnimCmd *const gUnknown_83E6D80[] =
|
||||
static const union AffineAnimCmd *const sAnims_Unused[] =
|
||||
{
|
||||
gUnknown_83E6D58,
|
||||
sAnim_Unused,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gDiveWaterSplashSpriteTemplate =
|
||||
@@ -338,7 +335,7 @@ const struct SpriteTemplate gSprayWaterDropletSpriteTemplate =
|
||||
.callback = AnimSprayWaterDroplet,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6DAC =
|
||||
static const struct SpriteTemplate sUnusedFlashingLightSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
.paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
@@ -346,7 +343,7 @@ const struct SpriteTemplate gUnknown_83E6DAC =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B2CE4,
|
||||
.callback = AnimUnusedFlashingLight,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSkyAttackBirdSpriteTemplate =
|
||||
@@ -365,11 +362,11 @@ static void AnimEllipticalGust(struct Sprite *sprite)
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
sprite->y += 20;
|
||||
sprite->data[1] = 191;
|
||||
sprite->callback = sub_80B190C;
|
||||
sprite->callback = AnimEllipticalGust_Step;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B190C(struct Sprite *sprite)
|
||||
static void AnimEllipticalGust_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x2 = Sin(sprite->data[1], 32);
|
||||
sprite->y2 = Cos(sprite->data[1], 8);
|
||||
@@ -379,15 +376,16 @@ static void sub_80B190C(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Animates the palette on the gust tornado to make it look like its spinning
|
||||
void AnimTask_AnimateGustTornadoPalette(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST);
|
||||
gTasks[taskId].func = sub_80B198C;
|
||||
gTasks[taskId].func = AnimTask_AnimateGustTornadoPalette_Step;
|
||||
}
|
||||
|
||||
static void sub_80B198C(u8 taskId)
|
||||
static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId)
|
||||
{
|
||||
u8 data2;
|
||||
u16 temp;
|
||||
@@ -423,10 +421,10 @@ static void AnimGustToTarget(struct Sprite *sprite)
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, sub_80B1A9C);
|
||||
StoreSpriteCallbackInData6(sprite, AnimGustToTarget_Step);
|
||||
}
|
||||
|
||||
static void sub_80B1A9C(struct Sprite *sprite)
|
||||
static void AnimGustToTarget_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (AnimTranslateLinear(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -472,11 +470,11 @@ static void AnimFlyBallUp(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80B1BF8;
|
||||
sprite->callback = AnimFlyBallUp_Step;
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE;
|
||||
}
|
||||
|
||||
static void sub_80B1BF8(struct Sprite *sprite)
|
||||
static void AnimFlyBallUp_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] > 0)
|
||||
{
|
||||
@@ -495,7 +493,7 @@ static void AnimFlyBallAttack(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->x = 272;
|
||||
sprite->x = DISPLAY_WIDTH + 32;
|
||||
sprite->y = -32;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
}
|
||||
@@ -510,10 +508,10 @@ static void AnimFlyBallAttack(struct Sprite *sprite)
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = sub_80B1CC0;
|
||||
sprite->callback = AnimFlyBallAttack_Step;
|
||||
}
|
||||
|
||||
static void sub_80B1CC0(struct Sprite *sprite)
|
||||
static void AnimFlyBallAttack_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 1;
|
||||
AnimTranslateLinear(sprite);
|
||||
@@ -524,8 +522,8 @@ static void sub_80B1CC0(struct Sprite *sprite)
|
||||
sprite->data[3] &= 0xFF;
|
||||
}
|
||||
if (sprite->x + sprite->x2 < -32
|
||||
|| sprite->x + sprite->x2 > 272
|
||||
|| sprite->y + sprite->y2 > 160)
|
||||
|| sprite->x + sprite->x2 > DISPLAY_WIDTH + 32
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT)
|
||||
{
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -539,7 +537,7 @@ void DestroyAnimSpriteAfterTimer(struct Sprite *sprite)
|
||||
if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
|
||||
{
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
sprite->oam.affineMode = 0;
|
||||
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
}
|
||||
DestroySprite(sprite);
|
||||
--gAnimVisualTaskCount;
|
||||
@@ -883,15 +881,15 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B24C0(struct Sprite *sprite)
|
||||
static void AnimUnusedBubbleThrow(struct Sprite *sprite)
|
||||
{
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
||||
}
|
||||
|
||||
static void sub_80B2514(struct Sprite *sprite)
|
||||
static void AnimUnusedFeather(struct Sprite *sprite)
|
||||
{
|
||||
u8 matrixNum;
|
||||
s16 rn, sinVal;
|
||||
@@ -935,10 +933,10 @@ static void sub_80B2514(struct Sprite *sprite)
|
||||
sprite->animNum = 1;
|
||||
sprite->hFlip = TRUE;
|
||||
}
|
||||
sprite->callback = sub_80B268C;
|
||||
sprite->callback = AnimUnusedFeather_Step;
|
||||
}
|
||||
|
||||
static void sub_80B268C(struct Sprite *sprite)
|
||||
static void AnimUnusedFeather_Step(struct Sprite *sprite)
|
||||
{
|
||||
struct FeatherDanceData fData;
|
||||
struct FeatherDanceData *tData = (struct FeatherDanceData *)sprite->data;
|
||||
@@ -992,12 +990,12 @@ static void AnimWhirlwindLine(struct Sprite *sprite)
|
||||
u16 arg;
|
||||
u8 mult;
|
||||
|
||||
if (!gBattleAnimArgs[2])
|
||||
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
|
||||
InitSpritePosToAnimAttacker(sprite, 0);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
if ((!gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
|| (gBattleAnimArgs[2] == 1 && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER))
|
||||
if ((gBattleAnimArgs[2] == ANIM_ATTACKER && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
|| (gBattleAnimArgs[2] == ANIM_TARGET && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER))
|
||||
sprite->x += 8;
|
||||
SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
|
||||
sprite->x -= 32;
|
||||
@@ -1007,10 +1005,10 @@ static void AnimWhirlwindLine(struct Sprite *sprite)
|
||||
sprite->x2 += mult * arg;
|
||||
sprite->data[0] = arg;
|
||||
sprite->data[7] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80B2820;
|
||||
sprite->callback = AnimWhirlwindLine_Step;
|
||||
}
|
||||
|
||||
static void sub_80B2820(struct Sprite *sprite)
|
||||
static void AnimWhirlwindLine_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x2 += sprite->data[1] >> 8;
|
||||
if (++sprite->data[0] == 6)
|
||||
@@ -1034,8 +1032,8 @@ void AnimTask_DrillPeckHitSplats(u8 taskId)
|
||||
gBattleAnimArgs[2] = 1;
|
||||
gBattleAnimArgs[3] = 3;
|
||||
CreateSpriteAndAnimate(&gFlashingHitSplatSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gBattleAnimTarget, 2),
|
||||
GetBattlerSpriteCoord(gBattleAnimTarget, 3),
|
||||
GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET),
|
||||
3);
|
||||
}
|
||||
gTasks[taskId].data[0] += 8;
|
||||
@@ -1064,7 +1062,7 @@ static void AnimBounceBallLand(struct Sprite *sprite)
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||
sprite->y2 = -sprite->y - 32;
|
||||
++sprite->data[0];
|
||||
break;
|
||||
@@ -1089,11 +1087,11 @@ static void AnimDiveBall(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80B2A50;
|
||||
sprite->callback = AnimDiveBall_Step1;
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE;
|
||||
}
|
||||
|
||||
static void sub_80B2A50(struct Sprite *sprite)
|
||||
static void AnimDiveBall_Step1(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] > 0)
|
||||
{
|
||||
@@ -1108,11 +1106,11 @@ static void sub_80B2A50(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
if (sprite->data[3]++ > 20)
|
||||
sprite->callback = sub_80B2AB0;
|
||||
sprite->callback = AnimDiveBall_Step2;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B2AB0(struct Sprite *sprite)
|
||||
static void AnimDiveBall_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->y2 += sprite->data[2] >> 8;
|
||||
if (sprite->y + sprite->y2 > -32)
|
||||
@@ -1131,13 +1129,13 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
|
||||
case 0:
|
||||
if (!gBattleAnimArgs[0])
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||
}
|
||||
sprite->data[1] = 512;
|
||||
TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
|
||||
@@ -1166,6 +1164,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// Launches a water droplet away from the specified battler. Used by Astonish and Dive
|
||||
static void AnimSprayWaterDroplet(struct Sprite *sprite)
|
||||
{
|
||||
s32 v1 = 0x1FF & Random();
|
||||
@@ -1185,18 +1184,18 @@ static void AnimSprayWaterDroplet(struct Sprite *sprite)
|
||||
sprite->oam.matrixNum = ST_OAM_HFLIP;
|
||||
if (gBattleAnimArgs[1] == 0)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 32;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 32;
|
||||
}
|
||||
sprite->callback = sub_80B2C88;
|
||||
sprite->callback = AnimSprayWaterDroplet_Step;
|
||||
}
|
||||
|
||||
static void sub_80B2C88(struct Sprite *sprite)
|
||||
static void AnimSprayWaterDroplet_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[2] == 0)
|
||||
{
|
||||
@@ -1216,14 +1215,14 @@ static void sub_80B2C88(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B2CE4(struct Sprite *sprite)
|
||||
static void AnimUnusedFlashingLight(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[6] = 0;
|
||||
sprite->data[7] = 64;
|
||||
sprite->callback = sub_80B2CF8;
|
||||
sprite->callback = AnimUnusedFlashingLight_Step;
|
||||
}
|
||||
|
||||
static void sub_80B2CF8(struct Sprite *sprite)
|
||||
static void AnimUnusedFlashingLight_Step(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
@@ -1248,8 +1247,8 @@ static void AnimSkyAttackBird(struct Sprite *sprite)
|
||||
s16 posx = sprite->x;
|
||||
s16 posy = sprite->y;
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[4] = sprite->x << 4;
|
||||
sprite->data[5] = sprite->y << 4;
|
||||
sprite->data[6] = ((posx - sprite->x) << 4) / 12;
|
||||
@@ -1257,22 +1256,22 @@ static void AnimSkyAttackBird(struct Sprite *sprite)
|
||||
rotation = ArcTan2Neg(posx - sprite->x, posy - sprite->y);
|
||||
rotation += 49152;
|
||||
TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation);
|
||||
sprite->callback = sub_80B2E20;
|
||||
sprite->callback = AnimSkyAttackBird_Step;
|
||||
}
|
||||
|
||||
static void sub_80B2E20(struct Sprite *sprite)
|
||||
static void AnimSkyAttackBird_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[6];
|
||||
sprite->data[5] += sprite->data[7];
|
||||
sprite->x = sprite->data[4] >> 4;
|
||||
sprite->y = sprite->data[5] >> 4;
|
||||
if (sprite->x > 285 || sprite->x < -45
|
||||
if (sprite->x > DISPLAY_WIDTH + 45 || sprite->x < -45
|
||||
|| sprite->y > 157 || sprite->y < -45)
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_80B2E64(u8 taskId)
|
||||
// Unused
|
||||
static void AnimTask_SetAttackerVisibility(u8 taskId)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
@@ -9,39 +9,39 @@
|
||||
#include "constants/songs.h"
|
||||
|
||||
static void AnimConfuseRayBallBounce(struct Sprite *sprite);
|
||||
static void sub_80B52D0(struct Sprite *sprite);
|
||||
static void sub_80B5344(struct Sprite *sprite);
|
||||
static void sub_80B53C0(struct Sprite *sprite);
|
||||
static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite);
|
||||
static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite);
|
||||
static void UpdateConfuseRayBallBlend(struct Sprite *sprite);
|
||||
static void AnimConfuseRayBallSpiral(struct Sprite *sprite);
|
||||
static void sub_80B5470(struct Sprite *sprite);
|
||||
static void sub_80B5570(u8 taskId);
|
||||
static void sub_80B55C8(u8 taskId);
|
||||
static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite);
|
||||
static void AnimTask_NightShadeClone_Step1(u8 taskId);
|
||||
static void AnimTask_NightShadeClone_Step2(u8 taskId);
|
||||
static void AnimShadowBall(struct Sprite *sprite);
|
||||
static void AnimShadowBallStep(struct Sprite *sprite);
|
||||
static void AnimShadowBall_Step(struct Sprite *sprite);
|
||||
static void AnimLick(struct Sprite *sprite);
|
||||
static void sub_80B5810(struct Sprite *sprite);
|
||||
static void sub_80B59D4(u8 taskId);
|
||||
static void sub_80B5AD4(u8 taskId);
|
||||
static void sub_80B5D38(u8 taskId);
|
||||
static void sub_80B5DCC(u8 taskId);
|
||||
static void AnimLick_Step(struct Sprite *sprite);
|
||||
static void AnimTask_NightmareClone_Step(u8 taskId);
|
||||
static void AnimTask_SpiteTargetShadow_Step1(u8 taskId);
|
||||
static void AnimTask_SpiteTargetShadow_Step2(u8 taskId);
|
||||
static void AnimTask_SpiteTargetShadow_Step3(u8 taskId);
|
||||
static void AnimDestinyBondWhiteShadow(struct Sprite *sprite);
|
||||
static void sub_80B5FE0(struct Sprite *sprite);
|
||||
static void sub_80B623C(u8 taskId);
|
||||
static void sub_80B6468(u8 taskId);
|
||||
static void sub_80B65F0(u8 taskId);
|
||||
static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite);
|
||||
static void AnimTask_DestinyBondWhiteShadow_Step(u8 taskId);
|
||||
static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId);
|
||||
static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId);
|
||||
static void AnimCurseNail(struct Sprite *sprite);
|
||||
static void sub_80B66A8(struct Sprite *sprite);
|
||||
static void sub_80B6728(struct Sprite *sprite);
|
||||
static void sub_80B67A0(struct Sprite *sprite);
|
||||
static void AnimCurseNail_Step1(struct Sprite *sprite);
|
||||
static void AnimCurseNail_Step2(struct Sprite *sprite);
|
||||
static void AnimCurseNail_End(struct Sprite *sprite);
|
||||
static void AnimGhostStatusSprite(struct Sprite *sprite);
|
||||
static void sub_80B68A8(struct Sprite *sprite);
|
||||
static void sub_80B696C(u8 taskId);
|
||||
static void AnimGhostStatusSprite_End(struct Sprite *sprite);
|
||||
static void AnimTask_GrudgeFlames_Step(u8 taskId);
|
||||
static void AnimGrudgeFlame(struct Sprite *sprite);
|
||||
static void sub_80B7158(struct Sprite *sprite);
|
||||
static void sub_80B6BE4(u8 taskId);
|
||||
static void sub_80B6F30(u8 taskId);
|
||||
static void sub_80B6FC4(u8 taskId);
|
||||
static void sub_80B71B0(struct Sprite *sprite);
|
||||
static void AnimMonMoveCircular(struct Sprite *sprite);
|
||||
static void AnimTask_GhostGetOut_Step1(u8 taskId);
|
||||
static void AnimTask_GhostGetOut_Step2(u8 taskId);
|
||||
static void AnimTask_GhostGetOut_Step3(u8 taskId);
|
||||
static void AnimMonMoveCircular_Step(struct Sprite *sprite);
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_ConfuseRayBallBounce[] =
|
||||
{
|
||||
@@ -125,17 +125,15 @@ const struct SpriteTemplate gLickSpriteTemplate =
|
||||
.callback = AnimLick,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const union AffineAnimCmd gUnknown_83E7654[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Unused[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const union AffineAnimCmd *const gUnknown_83E7664[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_Unused[] =
|
||||
{
|
||||
gUnknown_83E7654,
|
||||
sAffineAnim_Unused,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gDestinyBondWhiteShadowSpriteTemplate =
|
||||
@@ -207,7 +205,8 @@ const struct SpriteTemplate gGrudgeFlameSpriteTemplate =
|
||||
.callback = AnimGrudgeFlame,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E76F8 =
|
||||
// Unused
|
||||
static const struct SpriteTemplate sMonMoveCircularSpriteTemplate =
|
||||
{
|
||||
.tileTag = 0,
|
||||
.paletteTag = 0,
|
||||
@@ -215,7 +214,7 @@ const struct SpriteTemplate gUnknown_83E76F8 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B7158,
|
||||
.callback = AnimMonMoveCircular,
|
||||
};
|
||||
|
||||
static void AnimConfuseRayBallBounce(struct Sprite *sprite)
|
||||
@@ -223,24 +222,24 @@ static void AnimConfuseRayBallBounce(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
BattleAnim_InitLinearTranslationWithDuration(sprite);
|
||||
sprite->callback = sub_80B52D0;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
sprite->callback = AnimConfuseRayBallBounce_Step1;
|
||||
sprite->data[6] = 16;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[6]);
|
||||
}
|
||||
|
||||
static void sub_80B52D0(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite)
|
||||
{
|
||||
s16 r0, r2;
|
||||
|
||||
sub_80B53C0(sprite);
|
||||
UpdateConfuseRayBallBlend(sprite);
|
||||
if (AnimTranslateLinear(sprite))
|
||||
{
|
||||
sprite->callback = sub_80B5344;
|
||||
sprite->callback = AnimConfuseRayBallBounce_Step2;
|
||||
return;
|
||||
}
|
||||
sprite->x2 += Sin(sprite->data[5], 10);
|
||||
@@ -252,10 +251,10 @@ static void sub_80B52D0(struct Sprite *sprite)
|
||||
return;
|
||||
if (r0 <= 0)
|
||||
return;
|
||||
PlaySE12WithPanning(SE_M_CONFUSE_RAY, gUnknown_2037F24);
|
||||
PlaySE12WithPanning(SE_M_CONFUSE_RAY, gAnimCustomPanning);
|
||||
}
|
||||
|
||||
static void sub_80B5344(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite)
|
||||
{
|
||||
s16 r2, r0;
|
||||
|
||||
@@ -275,11 +274,11 @@ static void sub_80B5344(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80B53C0(sprite);
|
||||
UpdateConfuseRayBallBlend(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B53C0(struct Sprite *sprite)
|
||||
static void UpdateConfuseRayBallBlend(struct Sprite *sprite)
|
||||
{
|
||||
s16 r0;
|
||||
|
||||
@@ -309,11 +308,11 @@ static void sub_80B53C0(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallSpiral(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->callback = sub_80B5470;
|
||||
sprite->callback = AnimConfuseRayBallSpiral_Step;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B5470(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite)
|
||||
{
|
||||
u16 temp1;
|
||||
|
||||
@@ -332,6 +331,7 @@ static void sub_80B5470(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Creates a large transparent clone of the attacker centered on their position which shrinks to original size
|
||||
void AnimTask_NightShadeClone(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
@@ -346,10 +346,10 @@ void AnimTask_NightShadeClone(u8 taskId)
|
||||
gTasks[taskId].data[1] = *gBattleAnimArgs;
|
||||
gTasks[taskId].data[2] = 0;
|
||||
gTasks[taskId].data[3] = 16;
|
||||
gTasks[taskId].func = sub_80B5570;
|
||||
gTasks[taskId].func = AnimTask_NightShadeClone_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B5570(u8 taskId)
|
||||
static void AnimTask_NightShadeClone_Step1(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[10] += 1;
|
||||
if (gTasks[taskId].data[10] == 3)
|
||||
@@ -360,11 +360,11 @@ static void sub_80B5570(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[2], gTasks[taskId].data[3]));
|
||||
if (gTasks[taskId].data[2] != 9)
|
||||
return;
|
||||
gTasks[taskId].func = sub_80B55C8;
|
||||
gTasks[taskId].func = AnimTask_NightShadeClone_Step2;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B55C8(u8 taskId)
|
||||
static void AnimTask_NightShadeClone_Step2(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
@@ -398,8 +398,8 @@ static void AnimShadowBall(struct Sprite *sprite)
|
||||
s16 oldPosX = sprite->x;
|
||||
s16 oldPosY = sprite->y;
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = gBattleAnimArgs[0];
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
@@ -408,10 +408,10 @@ static void AnimShadowBall(struct Sprite *sprite)
|
||||
sprite->data[5] = sprite->y << 4;
|
||||
sprite->data[6] = ((oldPosX - sprite->x) << 4) / (gBattleAnimArgs[0] << 1);
|
||||
sprite->data[7] = ((oldPosY - sprite->y) << 4) / (gBattleAnimArgs[0] << 1);
|
||||
sprite->callback = AnimShadowBallStep;
|
||||
sprite->callback = AnimShadowBall_Step;
|
||||
}
|
||||
|
||||
static void AnimShadowBallStep(struct Sprite *sprite)
|
||||
static void AnimShadowBall_Step(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
@@ -429,8 +429,8 @@ static void AnimShadowBallStep(struct Sprite *sprite)
|
||||
sprite->data[2] -= 1;
|
||||
if (sprite->data[2] > 0)
|
||||
break;
|
||||
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[4] = sprite->x << 4;
|
||||
sprite->data[5] = sprite->y << 4;
|
||||
sprite->data[6] = ((sprite->data[1] - sprite->x) << 4) / sprite->data[3];
|
||||
@@ -445,8 +445,8 @@ static void AnimShadowBallStep(struct Sprite *sprite)
|
||||
sprite->data[3] -= 1;
|
||||
if (sprite->data[3] > 0)
|
||||
break;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[0] += 1;
|
||||
break;
|
||||
case 3:
|
||||
@@ -458,10 +458,10 @@ static void AnimShadowBallStep(struct Sprite *sprite)
|
||||
static void AnimLick(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->callback = sub_80B5810;
|
||||
sprite->callback = AnimLick_Step;
|
||||
}
|
||||
|
||||
static void sub_80B5810(struct Sprite *sprite)
|
||||
static void AnimLick_Step(struct Sprite *sprite)
|
||||
{
|
||||
bool8 r5 = FALSE;
|
||||
bool8 r6 = FALSE;
|
||||
@@ -507,12 +507,13 @@ static void sub_80B5810(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// Creates a transparent clone of the target which drifts up and away to the side
|
||||
void AnimTask_NightmareClone(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
|
||||
task = &gTasks[taskId];
|
||||
task->data[0] = CloneBattlerSpriteWithBlend(1);
|
||||
task->data[0] = CloneBattlerSpriteWithBlend(ANIM_TARGET);
|
||||
if (task->data[0] < 0)
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -539,10 +540,10 @@ void AnimTask_NightmareClone(u8 taskId)
|
||||
gSprites[task->data[0]].data[4] = 0;
|
||||
StoreSpriteCallbackInData6(&gSprites[task->data[0]], SpriteCallbackDummy);
|
||||
gSprites[task->data[0]].callback = TranslateSpriteLinearFixedPoint;
|
||||
task->func = sub_80B59D4;
|
||||
task->func = AnimTask_NightmareClone_Step;
|
||||
}
|
||||
|
||||
static void sub_80B59D4(u8 taskId)
|
||||
static void AnimTask_NightmareClone_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
|
||||
@@ -563,7 +564,7 @@ static void sub_80B59D4(u8 taskId)
|
||||
break;
|
||||
if (task->data[1] <= 80)
|
||||
break;
|
||||
obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
|
||||
DestroySpriteWithActiveSheet(&gSprites[task->data[0]]);
|
||||
task->data[4] = 1;
|
||||
break;
|
||||
case 1:
|
||||
@@ -579,17 +580,18 @@ static void sub_80B59D4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Creates a blended copy of the target that wavers in front of them
|
||||
void AnimTask_SpiteTargetShadow(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
|
||||
task = &gTasks[taskId];
|
||||
task->data[15] = 0;
|
||||
task->func = sub_80B5AD4;
|
||||
task->func = AnimTask_SpiteTargetShadow_Step1;
|
||||
task->func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80B5AD4(u8 taskId)
|
||||
static void AnimTask_SpiteTargetShadow_Step1(u8 taskId)
|
||||
{
|
||||
s16 startLine;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -670,7 +672,7 @@ static void sub_80B5AD4(u8 taskId)
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
|
||||
else
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
|
||||
task->func = sub_80B5D38;
|
||||
task->func = AnimTask_SpiteTargetShadow_Step2;
|
||||
++task->data[15];
|
||||
break;
|
||||
default:
|
||||
@@ -679,7 +681,7 @@ static void sub_80B5AD4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B5D38(u8 taskId)
|
||||
static void AnimTask_SpiteTargetShadow_Step2(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -693,12 +695,12 @@ static void sub_80B5D38(u8 taskId)
|
||||
if (task->data[1] == 128)
|
||||
{
|
||||
task->data[15] = 0;
|
||||
task->func = sub_80B5DCC;
|
||||
task->func = AnimTask_SpiteTargetShadow_Step3;
|
||||
task->func(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B5DCC(u8 taskId)
|
||||
static void AnimTask_SpiteTargetShadow_Step3(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
u8 rank = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
|
||||
@@ -718,7 +720,7 @@ static void sub_80B5DCC(u8 taskId)
|
||||
break;
|
||||
case 2:
|
||||
gSprites[task->data[14]].invisible = TRUE;
|
||||
obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
|
||||
DestroySpriteWithActiveSheet(&gSprites[task->data[0]]);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
@@ -740,17 +742,17 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite)
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28;
|
||||
battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28;
|
||||
battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 28;
|
||||
battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 28;
|
||||
}
|
||||
else
|
||||
{
|
||||
battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28;
|
||||
battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28;
|
||||
battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 28;
|
||||
battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 28;
|
||||
}
|
||||
yDiff = battler2Y - battler1Y;
|
||||
sprite->data[0] = battler1X * 16;
|
||||
@@ -764,11 +766,11 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite)
|
||||
sprite->oam.priority = 2;
|
||||
sprite->x = battler1X;
|
||||
sprite->y = battler1Y;
|
||||
sprite->callback = sub_80B5FE0;
|
||||
sprite->callback = AnimDestinyBondWhiteShadow_Step;
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
static void sub_80B5FE0(struct Sprite *sprite)
|
||||
static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[4])
|
||||
{
|
||||
@@ -798,11 +800,11 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
||||
task->data[8] = 0;
|
||||
task->data[9] = 16;
|
||||
task->data[10] = gBattleAnimArgs[0];
|
||||
baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM);
|
||||
if (!IsContest())
|
||||
{
|
||||
for (battler = 0; battler < 4; ++battler)
|
||||
for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler)
|
||||
{
|
||||
if (battler != gBattleAnimAttacker
|
||||
&& battler != (gBattleAnimAttacker ^ 2)
|
||||
@@ -811,7 +813,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
||||
spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
x = GetBattlerSpriteCoord(battler, 2);
|
||||
x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
|
||||
y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_BOTTOM);
|
||||
gSprites[spriteId].data[0] = baseX << 4;
|
||||
gSprites[spriteId].data[1] = baseY << 4;
|
||||
@@ -820,7 +822,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
||||
gSprites[spriteId].data[4] = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].data[5] = x;
|
||||
gSprites[spriteId].data[6] = y;
|
||||
gSprites[spriteId].callback = sub_80B5FE0;
|
||||
gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step;
|
||||
task->data[task->data[12] + 13] = spriteId;
|
||||
++task->data[12];
|
||||
}
|
||||
@@ -841,15 +843,15 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
||||
gSprites[spriteId].data[4] = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].data[5] = x;
|
||||
gSprites[spriteId].data[6] = y;
|
||||
gSprites[spriteId].callback = sub_80B5FE0;
|
||||
gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step;
|
||||
task->data[13] = spriteId;
|
||||
task->data[12] = 1;
|
||||
}
|
||||
}
|
||||
task->func = sub_80B623C;
|
||||
task->func = AnimTask_DestinyBondWhiteShadow_Step;
|
||||
}
|
||||
|
||||
static void sub_80B623C(u8 taskId)
|
||||
static void AnimTask_DestinyBondWhiteShadow_Step(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -933,7 +935,7 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_WINOUT, ((WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) |
|
||||
(WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR)));
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN));
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0x10);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 16);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest())
|
||||
startX = 40;
|
||||
else
|
||||
@@ -951,10 +953,10 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId)
|
||||
gTasks[taskId].data[4] = bottomDistance;
|
||||
gTasks[taskId].data[5] = startX;
|
||||
gTasks[taskId].data[6] = startY;
|
||||
gTasks[taskId].func = sub_80B6468;
|
||||
gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B6468(u8 taskId)
|
||||
static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId)
|
||||
{
|
||||
s16 step, leftDistance, rightDistance, topDistance, bottomDistance, startX, startY;
|
||||
u16 left, right, top, bottom, selectedPalettes;
|
||||
@@ -980,15 +982,15 @@ static void sub_80B6468(u8 taskId)
|
||||
right = 240;
|
||||
top = 0;
|
||||
bottom = 112;
|
||||
selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0);
|
||||
selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
|
||||
BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0));
|
||||
gTasks[taskId].func = sub_80B65F0;
|
||||
gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step2;
|
||||
}
|
||||
gBattle_WIN0H = WIN_RANGE(left, right);
|
||||
gBattle_WIN0V = WIN_RANGE(top, bottom);
|
||||
}
|
||||
|
||||
static void sub_80B65F0(u8 taskId)
|
||||
static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
@@ -1023,10 +1025,10 @@ static void AnimCurseNail(struct Sprite *sprite)
|
||||
sprite->x += xDelta;
|
||||
sprite->data[1] = xDelta2;
|
||||
sprite->data[0] = 60;
|
||||
sprite->callback = sub_80B66A8;
|
||||
sprite->callback = AnimCurseNail_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B66A8(struct Sprite *sprite)
|
||||
static void AnimCurseNail_Step1(struct Sprite *sprite)
|
||||
{
|
||||
u16 var0;
|
||||
|
||||
@@ -1047,7 +1049,7 @@ static void sub_80B66A8(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 30;
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, sub_80B6728);
|
||||
StoreSpriteCallbackInData6(sprite, AnimCurseNail_Step2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1057,7 +1059,7 @@ static void sub_80B66A8(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B6728(struct Sprite *sprite)
|
||||
static void AnimCurseNail_Step2(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
@@ -1079,12 +1081,12 @@ static void sub_80B6728(struct Sprite *sprite)
|
||||
if (sprite->data[2] == 16)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = sub_80B67A0;
|
||||
sprite->callback = AnimCurseNail_End;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B67A0(struct Sprite *sprite)
|
||||
static void AnimCurseNail_End(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
@@ -1125,12 +1127,12 @@ static void AnimGhostStatusSprite(struct Sprite *sprite)
|
||||
if (coeffB == 16 && coeffA == 0)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = sub_80B68A8;
|
||||
sprite->callback = AnimGhostStatusSprite_End;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B68A8(struct Sprite *sprite)
|
||||
static void AnimGhostStatusSprite_End(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
@@ -1143,7 +1145,7 @@ void AnimTask_GrudgeFlames(u8 taskId)
|
||||
|
||||
task->data[0] = 0;
|
||||
task->data[1] = 16;
|
||||
task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
task->data[10] = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
|
||||
task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2) + 8;
|
||||
task->data[7] = 0;
|
||||
@@ -1154,10 +1156,10 @@ void AnimTask_GrudgeFlames(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
|
||||
task->data[8] = 0;
|
||||
task->func = sub_80B696C;
|
||||
task->func = AnimTask_GrudgeFlames_Step;
|
||||
}
|
||||
|
||||
static void sub_80B696C(u8 taskId)
|
||||
static void AnimTask_GrudgeFlames_Step(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
u8 spriteId;
|
||||
@@ -1260,16 +1262,18 @@ static void AnimGrudgeFlame(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80B6BBC(u8 taskId)
|
||||
// Used by the ghost Marowak when it hasn't been revealed by the Silph Scope.
|
||||
// Animates a shimmering copy of the attacker (the ghost) accompanied by the 'Scary Face' graphics
|
||||
void AnimTask_GhostGetOut(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
task->data[15] = 0;
|
||||
task->func = sub_80B6BE4;
|
||||
sub_80B6BE4(taskId);
|
||||
task->func = AnimTask_GhostGetOut_Step1;
|
||||
task->func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80B6BE4(u8 taskId)
|
||||
static void AnimTask_GhostGetOut_Step1(u8 taskId)
|
||||
{
|
||||
s16 y;
|
||||
struct BattleAnimBgData animBgData;
|
||||
@@ -1365,14 +1369,14 @@ static void sub_80B6BE4(u8 taskId)
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
|
||||
else
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
|
||||
task->func = sub_80B6F30;
|
||||
task->func = AnimTask_GhostGetOut_Step2;
|
||||
task->data[15] = 0;
|
||||
break;
|
||||
}
|
||||
++task->data[15];
|
||||
}
|
||||
|
||||
static void sub_80B6F30(u8 taskId)
|
||||
static void AnimTask_GhostGetOut_Step2(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -1386,12 +1390,12 @@ static void sub_80B6F30(u8 taskId)
|
||||
if (task->data[1] == 128)
|
||||
{
|
||||
task->data[15] = 0;
|
||||
task->func = sub_80B6FC4;
|
||||
sub_80B6FC4(taskId);
|
||||
task->func = AnimTask_GhostGetOut_Step3;
|
||||
task->func(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B6FC4(u8 taskId)
|
||||
static void AnimTask_GhostGetOut_Step3(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -1447,7 +1451,7 @@ static void sub_80B6FC4(u8 taskId)
|
||||
++task->data[15];
|
||||
}
|
||||
|
||||
static void sub_80B7158(struct Sprite *sprite)
|
||||
static void AnimMonMoveCircular(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
@@ -1455,11 +1459,11 @@ static void sub_80B7158(struct Sprite *sprite)
|
||||
sprite->data[1] = 10;
|
||||
sprite->data[2] = gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[1];
|
||||
sprite->callback = sub_80B71B0;
|
||||
sprite->callback = AnimMonMoveCircular_Step;
|
||||
gSprites[sprite->data[5]].y += 8;
|
||||
}
|
||||
|
||||
static void sub_80B71B0(struct Sprite *sprite)
|
||||
static void AnimMonMoveCircular_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
@@ -9,22 +9,22 @@ static void AnimBonemerangProjectile(struct Sprite *sprite);
|
||||
static void AnimBoneHitProjectile(struct Sprite *sprite);
|
||||
static void AnimDirtScatter(struct Sprite *sprite);
|
||||
static void AnimMudSportDirt(struct Sprite *sprite);
|
||||
static void AnimFissureDirtPlumeParticle(struct Sprite *sprite);
|
||||
static void AnimDirtPlumeParticle(struct Sprite *sprite);
|
||||
static void AnimDigDirtMound(struct Sprite *sprite);
|
||||
static void AnimBonemerangProjectileStep(struct Sprite *sprite);
|
||||
static void AnimBonemerangProjectileEnd(struct Sprite *sprite);
|
||||
static void AnimBonemerangProjectile_Step(struct Sprite *sprite);
|
||||
static void AnimBonemerangProjectile_End(struct Sprite *sprite);
|
||||
static void AnimMudSportDirtRising(struct Sprite *sprite);
|
||||
static void AnimMudSportDirtFalling(struct Sprite *sprite);
|
||||
static void sub_80B8ED4(u8 taskId);
|
||||
static void sub_80B908C(u8 taskId);
|
||||
static void sub_80B92B8(u8 useBg1, s16 y, s16 endY);
|
||||
static void sub_80B912C(u8 taskId);
|
||||
static void sub_80B91B0(u8 taskId);
|
||||
static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite);
|
||||
static void sub_80B9584(u8 taskId);
|
||||
static void sub_80B967C(u8 taskId);
|
||||
static void sub_80B9760(struct Task *task);
|
||||
static void sub_80B98A8(u8 taskId);
|
||||
static void AnimTask_DigBounceMovement(u8 taskId);
|
||||
static void AnimTask_DigDisappear(u8 taskId);
|
||||
static void SetDigScanlineEffect(u8 useBg1, s16 y, s16 endY);
|
||||
static void AnimTask_DigSetVisibleUnderground(u8 taskId);
|
||||
static void AnimTask_DigRiseUpFromHole(u8 taskId);
|
||||
static void AnimDirtPlumeParticle_Step(struct Sprite *sprite);
|
||||
static void AnimTask_ShakeTerrain(u8 taskId);
|
||||
static void AnimTask_ShakeBattlers(u8 taskId);
|
||||
static void SetBattlersXOffsetForShake(struct Task *task);
|
||||
static void WaitForFissureCompletion(u8 taskId);
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_Bonemerang[] =
|
||||
{
|
||||
@@ -122,7 +122,7 @@ const struct SpriteTemplate gDirtPlumeSpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimFissureDirtPlumeParticle,
|
||||
.callback = AnimDirtPlumeParticle,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gDirtMoundSpriteTemplate =
|
||||
@@ -140,17 +140,17 @@ const struct SpriteTemplate gDirtMoundSpriteTemplate =
|
||||
// a boomerang. After hitting the target mon, it comes back to the user.
|
||||
static void AnimBonemerangProjectile(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[0] = 20;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[5] = -40;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimBonemerangProjectileStep;
|
||||
sprite->callback = AnimBonemerangProjectile_Step;
|
||||
}
|
||||
|
||||
static void AnimBonemerangProjectileStep(struct Sprite *sprite)
|
||||
static void AnimBonemerangProjectile_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
{
|
||||
@@ -159,15 +159,15 @@ static void AnimBonemerangProjectileStep(struct Sprite *sprite)
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[0] = 20;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[5] = 40;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimBonemerangProjectileEnd;
|
||||
sprite->callback = AnimBonemerangProjectile_End;
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimBonemerangProjectileEnd(struct Sprite *sprite)
|
||||
static void AnimBonemerangProjectile_End(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -186,8 +186,8 @@ static void AnimBoneHitProjectile(struct Sprite *sprite)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
@@ -204,8 +204,8 @@ static void AnimDirtScatter(struct Sprite *sprite)
|
||||
s16 xOffset, yOffset;
|
||||
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2);
|
||||
targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3);
|
||||
targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
xOffset = Random() & 0x1F;
|
||||
yOffset = Random() & 0x1F;
|
||||
if (xOffset > 16)
|
||||
@@ -229,8 +229,8 @@ static void AnimMudSportDirt(struct Sprite *sprite)
|
||||
++sprite->oam.tileNum;
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1;
|
||||
sprite->callback = AnimMudSportDirtRising;
|
||||
}
|
||||
@@ -283,14 +283,14 @@ void AnimTask_DigDownMovement(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
task->func = sub_80B8ED4;
|
||||
if (gBattleAnimArgs[0] == FALSE)
|
||||
task->func = AnimTask_DigBounceMovement;
|
||||
else
|
||||
task->func = sub_80B908C;
|
||||
task->func = AnimTask_DigDisappear;
|
||||
task->func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80B8ED4(u8 taskId)
|
||||
static void AnimTask_DigBounceMovement(u8 taskId)
|
||||
{
|
||||
u8 var0;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -319,7 +319,7 @@ static void sub_80B8ED4(u8 taskId)
|
||||
++task->data[0];
|
||||
break;
|
||||
case 1:
|
||||
sub_80B92B8(task->data[11], task->data[14], task->data[15]);
|
||||
SetDigScanlineEffect(task->data[11], task->data[14], task->data[15]);
|
||||
++task->data[0];
|
||||
break;
|
||||
case 2:
|
||||
@@ -358,7 +358,7 @@ static void sub_80B8ED4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B908C(u8 taskId)
|
||||
static void AnimTask_DigDisappear(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
|
||||
@@ -376,15 +376,15 @@ void AnimTask_DigUpMovement(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
task->func = sub_80B912C;
|
||||
if (gBattleAnimArgs[0] == FALSE)
|
||||
task->func = AnimTask_DigSetVisibleUnderground;
|
||||
else
|
||||
task->func = sub_80B91B0;
|
||||
task->func = AnimTask_DigRiseUpFromHole;
|
||||
|
||||
task->func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80B912C(u8 taskId)
|
||||
static void AnimTask_DigSetVisibleUnderground(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -394,7 +394,7 @@ static void sub_80B912C(u8 taskId)
|
||||
task->data[10] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
gSprites[task->data[10]].invisible = FALSE;
|
||||
gSprites[task->data[10]].x2 = 0;
|
||||
gSprites[task->data[10]].y2 = 160 - gSprites[task->data[10]].y;
|
||||
gSprites[task->data[10]].y2 = DISPLAY_HEIGHT - gSprites[task->data[10]].y;
|
||||
++task->data[0];
|
||||
break;
|
||||
case 1:
|
||||
@@ -402,7 +402,7 @@ static void sub_80B912C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B91B0(u8 taskId)
|
||||
static void AnimTask_DigRiseUpFromHole(u8 taskId)
|
||||
{
|
||||
u8 var0;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -422,7 +422,7 @@ static void sub_80B91B0(u8 taskId)
|
||||
++task->data[0];
|
||||
break;
|
||||
case 1:
|
||||
sub_80B92B8(task->data[11], 0, task->data[15]);
|
||||
SetDigScanlineEffect(task->data[11], 0, task->data[15]);
|
||||
++task->data[0];
|
||||
break;
|
||||
case 2:
|
||||
@@ -443,7 +443,7 @@ static void sub_80B91B0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B92B8(u8 useBG1, s16 y, s16 endY)
|
||||
static void SetDigScanlineEffect(u8 useBG1, s16 y, s16 endY)
|
||||
{
|
||||
s16 bgX;
|
||||
struct ScanlineEffectParams scanlineParams;
|
||||
@@ -485,7 +485,7 @@ static void sub_80B92B8(u8 useBG1, s16 y, s16 endY)
|
||||
// arg 3: target y offset
|
||||
// arg 4: wave amplitude
|
||||
// arg 5: duration
|
||||
static void AnimFissureDirtPlumeParticle(struct Sprite *sprite)
|
||||
static void AnimDirtPlumeParticle(struct Sprite *sprite)
|
||||
{
|
||||
s8 battler;
|
||||
s16 xOffset;
|
||||
@@ -500,17 +500,17 @@ static void AnimFissureDirtPlumeParticle(struct Sprite *sprite)
|
||||
xOffset *= -1;
|
||||
gBattleAnimArgs[2] *= -1;
|
||||
}
|
||||
sprite->x = GetBattlerSpriteCoord(battler, 2) + xOffset;
|
||||
sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + xOffset;
|
||||
sprite->y = GetBattlerYCoordWithElevation(battler) + 30;
|
||||
sprite->data[0] = gBattleAnimArgs[5];
|
||||
sprite->data[2] = sprite->x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[4];
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimFissureDirtPlumeParticleStep;
|
||||
sprite->callback = AnimDirtPlumeParticle_Step;
|
||||
}
|
||||
|
||||
static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite)
|
||||
static void AnimDirtPlumeParticle_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -530,7 +530,7 @@ static void AnimDigDirtMound(struct Sprite *sprite)
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battler = gBattleAnimTarget;
|
||||
sprite->x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
|
||||
sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X) - 16 + (gBattleAnimArgs[1] * 32);
|
||||
sprite->y = GetBattlerYCoordWithElevation(battler) + 32;
|
||||
sprite->oam.tileNum += gBattleAnimArgs[1] * 8;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
@@ -538,151 +538,178 @@ static void AnimDigDirtMound(struct Sprite *sprite)
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
}
|
||||
|
||||
#define tState data[0]
|
||||
#define tDelay data[1]
|
||||
#define tTimer data[2]
|
||||
#define tMaxTime data[3]
|
||||
#define tbattlerSpriteIds(i) data[9 + (i)]
|
||||
#define tNumBattlers data[13] // AnimTask_ShakeBattlers
|
||||
#define tInitialX data[13] // AnimTask_ShakeTerrain
|
||||
#define tHorizOffset data[14]
|
||||
#define tInitHorizOffset data[15]
|
||||
|
||||
// Shakes battler(s) or the battle terrain back and forth horizontally. Used by e.g. Earthquake, Eruption
|
||||
// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the terrain
|
||||
// arg1: Shake intensity, used to calculate horizontal pixel offset (if 0, use move power instead)
|
||||
// arg2: Length of time to shake for
|
||||
void AnimTask_HorizontalShake(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
if (gBattleAnimArgs[1])
|
||||
task->data[14] = task->data[15] = gBattleAnimArgs[1] + 3;
|
||||
if (gBattleAnimArgs[1] != 0)
|
||||
task->tHorizOffset = task->tInitHorizOffset = gBattleAnimArgs[1] + 3;
|
||||
else
|
||||
task->data[14] = task->data[15] = (gAnimMovePower / 10) + 3;
|
||||
task->tHorizOffset = task->tInitHorizOffset = (gAnimMovePower / 10) + 3;
|
||||
|
||||
task->data[3] = gBattleAnimArgs[2];
|
||||
task->tMaxTime = gBattleAnimArgs[2];
|
||||
switch (gBattleAnimArgs[0])
|
||||
{
|
||||
case 5:
|
||||
task->data[13] = gBattle_BG3_X;
|
||||
task->func = sub_80B9584;
|
||||
case MAX_BATTLERS_COUNT + 1: // Shake terrain
|
||||
task->tInitialX = gBattle_BG3_X;
|
||||
task->func = AnimTask_ShakeTerrain;
|
||||
break;
|
||||
case 4:
|
||||
task->data[13] = 0;
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
||||
case MAX_BATTLERS_COUNT: // Shake all battlers
|
||||
task->tNumBattlers = 0;
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
if (IsBattlerSpriteVisible(i))
|
||||
{
|
||||
task->data[task->data[13] + 9] = gBattlerSpriteIds[i];
|
||||
++task->data[13];
|
||||
task->tbattlerSpriteIds(task->tNumBattlers) = gBattlerSpriteIds[i];
|
||||
task->tNumBattlers++;
|
||||
}
|
||||
}
|
||||
task->func = sub_80B967C;
|
||||
task->func = AnimTask_ShakeBattlers;
|
||||
break;
|
||||
default:
|
||||
task->data[9] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
if (task->data[9] == 0xFF)
|
||||
default: // Shake specific battler
|
||||
task->tbattlerSpriteIds(0) = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
if (task->tbattlerSpriteIds(0) == SPRITE_NONE)
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
task->data[13] = 1;
|
||||
task->func = sub_80B967C;
|
||||
task->tNumBattlers = 1;
|
||||
task->func = AnimTask_ShakeBattlers;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B9584(u8 taskId)
|
||||
static void AnimTask_ShakeTerrain(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
switch (task->tState)
|
||||
{
|
||||
case 0:
|
||||
if (++task->data[1] > 1)
|
||||
if (++task->tDelay > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if ((task->data[2] & 1) == 0)
|
||||
gBattle_BG3_X = task->data[13] + task->data[15];
|
||||
task->tDelay = 0;
|
||||
if ((task->tTimer & 1) == 0)
|
||||
gBattle_BG3_X = task->tInitialX + task->tInitHorizOffset;
|
||||
else
|
||||
gBattle_BG3_X = task->data[13] - task->data[15];
|
||||
gBattle_BG3_X = task->tInitialX - task->tInitHorizOffset;
|
||||
|
||||
if (++task->data[2] == task->data[3])
|
||||
if (++task->tTimer == task->tMaxTime)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
--task->data[14];
|
||||
++task->data[0];
|
||||
task->tTimer = 0;
|
||||
task->tHorizOffset--;
|
||||
task->tState++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[1] > 1)
|
||||
if (++task->tDelay > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
if ((task->data[2] & 1) == 0)
|
||||
gBattle_BG3_X = task->data[13] + task->data[14];
|
||||
task->tDelay = 0;
|
||||
if ((task->tTimer & 1) == 0)
|
||||
gBattle_BG3_X = task->tInitialX + task->tHorizOffset;
|
||||
else
|
||||
gBattle_BG3_X = task->data[13] - task->data[14];
|
||||
gBattle_BG3_X = task->tInitialX - task->tHorizOffset;
|
||||
|
||||
if (++task->data[2] == 4)
|
||||
if (++task->tTimer == 4)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
if (--task->data[14] == 0)
|
||||
++task->data[0];
|
||||
task->tTimer = 0;
|
||||
if (--task->tHorizOffset == 0)
|
||||
task->tState++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
gBattle_BG3_X = task->data[13];
|
||||
gBattle_BG3_X = task->tInitialX;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B967C(u8 taskId)
|
||||
static void AnimTask_ShakeBattlers(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
switch (task->tState)
|
||||
{
|
||||
case 0:
|
||||
if (++task->data[1] > 1)
|
||||
if (++task->tDelay > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
sub_80B9760(task);
|
||||
if (++task->data[2] == task->data[3])
|
||||
task->tDelay = 0;
|
||||
SetBattlersXOffsetForShake(task);
|
||||
if (++task->tTimer == task->tMaxTime)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
--task->data[14];
|
||||
++task->data[0];
|
||||
task->tTimer = 0;
|
||||
task->tHorizOffset--;
|
||||
task->tState++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++task->data[1] > 1)
|
||||
if (++task->tDelay > 1)
|
||||
{
|
||||
task->data[1] = 0;
|
||||
sub_80B9760(task);
|
||||
if (++task->data[2] == 4)
|
||||
task->tDelay = 0;
|
||||
SetBattlersXOffsetForShake(task);
|
||||
if (++task->tTimer == 4)
|
||||
{
|
||||
task->data[2] = 0;
|
||||
if (--task->data[14] == 0)
|
||||
++task->data[0];
|
||||
task->tTimer = 0;
|
||||
if (--task->tHorizOffset == 0)
|
||||
task->tState++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < task->data[13]; ++i)
|
||||
gSprites[task->data[9 + i]].x2 = 0;
|
||||
for (i = 0; i < task->tNumBattlers; i++)
|
||||
gSprites[task->tbattlerSpriteIds(i)].x2 = 0;
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B9760(struct Task *task)
|
||||
static void SetBattlersXOffsetForShake(struct Task *task)
|
||||
{
|
||||
u16 i, xOffset;
|
||||
|
||||
if ((task->data[2] & 1) == 0)
|
||||
xOffset = (task->data[14] / 2) + (task->data[14] & 1);
|
||||
if ((task->tTimer & 1) == 0)
|
||||
xOffset = (task->tHorizOffset / 2) + (task->tHorizOffset & 1);
|
||||
else
|
||||
xOffset = -(task->data[14] / 2);
|
||||
for (i = 0; i < task->data[13]; ++i)
|
||||
gSprites[task->data[9 + i]].x2 = xOffset;
|
||||
xOffset = -(task->tHorizOffset / 2);
|
||||
|
||||
for (i = 0; i < task->tNumBattlers; i++)
|
||||
{
|
||||
gSprites[task->tbattlerSpriteIds(i)].x2 = xOffset;
|
||||
}
|
||||
}
|
||||
|
||||
#undef tState
|
||||
#undef tDelay
|
||||
#undef tTimer
|
||||
#undef tMaxTime
|
||||
#undef tbattlerSpriteIds
|
||||
#undef tNumBattlers
|
||||
#undef tInitialX
|
||||
#undef tHorizOffset
|
||||
#undef tInitHorizOffset
|
||||
|
||||
void AnimTask_IsPowerOver99(u8 taskId)
|
||||
{
|
||||
gBattleAnimArgs[15] = gAnimMovePower > 99;
|
||||
@@ -696,19 +723,21 @@ void AnimTask_PositionFissureBgOnBattler(u8 taskId)
|
||||
|
||||
if (gBattleAnimArgs[0] > 1)
|
||||
battler ^= BIT_FLANK;
|
||||
newTask = &gTasks[CreateTask(sub_80B98A8, gBattleAnimArgs[1])];
|
||||
newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, 2)) & 0x1FF;
|
||||
newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, 3)) & 0xFF;
|
||||
newTask = &gTasks[CreateTask(WaitForFissureCompletion, gBattleAnimArgs[1])];
|
||||
newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2)) & 0x1FF;
|
||||
newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET)) & 0xFF;
|
||||
gBattle_BG3_X = newTask->data[1];
|
||||
gBattle_BG3_Y = newTask->data[2];
|
||||
newTask->data[3] = gBattleAnimArgs[2];
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
static void sub_80B98A8(u8 taskId)
|
||||
static void WaitForFissureCompletion(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
// Holds the BG3 offsets until gBattleAnimArgs[7]
|
||||
// is set to a special terminator value.
|
||||
if (gBattleAnimArgs[7] == task->data[3])
|
||||
{
|
||||
gBattle_BG3_X = 0;
|
||||
@@ -9,21 +9,21 @@
|
||||
|
||||
struct HailStruct
|
||||
{
|
||||
s32 unk0:10;
|
||||
s32 unk1:10;
|
||||
s32 unk2:8;
|
||||
s32 x:10;
|
||||
s32 y:10;
|
||||
s32 bPosition:8;
|
||||
s32 unk3:4;
|
||||
};
|
||||
|
||||
static void sub_80AF108(struct Sprite *sprite);
|
||||
static void sub_80AF28C(struct Sprite *sprite);
|
||||
static void AnimUnusedIceCrystalThrow(struct Sprite *sprite);
|
||||
static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite);
|
||||
static void AnimIcePunchSwirlingParticle(struct Sprite *sprite);
|
||||
static void AnimIceBeamParticle(struct Sprite *sprite);
|
||||
static void AnimIceEffectParticle(struct Sprite *sprite);
|
||||
static void AnimFlickerIceEffectParticle(struct Sprite *sprite);
|
||||
static void AnimSwirlingSnowball(struct Sprite *sprite);
|
||||
static void AnimSwirlingSnowball_Step1(struct Sprite *sprite);
|
||||
static void AnimSwirlingSnowball_Step2(struct Sprite *sprite);
|
||||
static void AnimSwirlingSnowball_Step3(struct Sprite *sprite);
|
||||
static void AnimSwirlingSnowball_End(struct Sprite *sprite);
|
||||
static void AnimMoveParticleBeyondTarget(struct Sprite *sprite);
|
||||
static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite);
|
||||
@@ -39,25 +39,24 @@ static void InitIceBallAnim(struct Sprite *sprite);
|
||||
static void AnimThrowIceBall(struct Sprite *sprite);
|
||||
static void InitIceBallParticle(struct Sprite *sprite);
|
||||
static void AnimIceBallParticle(struct Sprite *sprite);
|
||||
static void AnimTask_Haze2(u8 taskId);
|
||||
static void AnimTask_OverlayFogTiles(u8 taskId);
|
||||
static void AnimTask_HazeScrollingFog_Step(u8 taskId);
|
||||
static void AnimTask_MistBallFog_Step(u8 taskId);
|
||||
static void AnimTask_Hail2(u8 taskId);
|
||||
static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
|
||||
|
||||
static const union AnimCmd gUnknown_83E62C0[] =
|
||||
static const union AnimCmd sAnim_Unused[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(1, 5, .hFlip = TRUE),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E62CC[] =
|
||||
static const union AnimCmd *const sAnims_Unused[] =
|
||||
{
|
||||
gUnknown_83E62C0,
|
||||
sAnim_Unused,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const struct SpriteTemplate gUnknown_83E62D0 =
|
||||
static const struct SpriteTemplate sUnusedIceCrystalThrowSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ICE_CRYSTALS,
|
||||
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
|
||||
@@ -65,10 +64,10 @@ static const struct SpriteTemplate gUnknown_83E62D0 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80AF108,
|
||||
.callback = AnimUnusedIceCrystalThrow,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E62E8[] =
|
||||
static const union AnimCmd sAnim_IceCrystalLargeChunk[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
@@ -105,10 +104,10 @@ static const union AnimCmd sAnim_SmallBubblePair[] =
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
// unused
|
||||
static const union AnimCmd *const gUnknown_83E631C[] =
|
||||
// Unused, contains just the top left corner of the large ice crystal
|
||||
static const union AnimCmd *const sAnims_IceCrystalLargeChunk[] =
|
||||
{
|
||||
gUnknown_83E62E8,
|
||||
sAnim_IceCrystalLargeChunk,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_IceCrystalLarge[] =
|
||||
@@ -245,7 +244,7 @@ const struct SpriteTemplate gSwirlingSnowballSpriteTemplate =
|
||||
.anims = sAnims_Snowball,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimSwirlingSnowball_Step1,
|
||||
.callback = AnimSwirlingSnowball,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gBlizzardIceCrystalSpriteTemplate =
|
||||
@@ -332,7 +331,7 @@ const struct SpriteTemplate gSmogCloudSpriteTemplate =
|
||||
.callback = InitSwirlingFogAnim,
|
||||
};
|
||||
|
||||
static const u8 gUnknown_83E64D4[] =
|
||||
static const u8 sHazeBlendAmounts[] =
|
||||
{
|
||||
0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9,
|
||||
};
|
||||
@@ -348,7 +347,7 @@ const struct SpriteTemplate gMistBallSpriteTemplate =
|
||||
.callback = AnimThrowMistBall,
|
||||
};
|
||||
|
||||
static const u8 gUnknown_83E6500[] =
|
||||
static const u8 sMistBlendAmounts[] =
|
||||
{
|
||||
0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5,
|
||||
};
|
||||
@@ -366,16 +365,16 @@ const struct SpriteTemplate gPoisonGasCloudSpriteTemplate =
|
||||
|
||||
static const struct HailStruct sHailCoordData[] =
|
||||
{
|
||||
{100, 120, 0, 2},
|
||||
{85, 120, 0, 0},
|
||||
{242, 120, 1, 1},
|
||||
{66, 120, 2, 1},
|
||||
{182, 120, 3, 0},
|
||||
{60, 120, 0, 2},
|
||||
{214, 120, 1, 0},
|
||||
{113, 120, 0, 1},
|
||||
{210, 120, 3, 1},
|
||||
{38, 120, 2, 0},
|
||||
{.x = 100, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 2},
|
||||
{.x = 85, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 0},
|
||||
{.x = 242, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .unk3 = 1},
|
||||
{.x = 66, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .unk3 = 1},
|
||||
{.x = 182, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .unk3 = 0},
|
||||
{.x = 60, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 2},
|
||||
{.x = 214, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .unk3 = 0},
|
||||
{.x = 113, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 1},
|
||||
{.x = 210, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .unk3 = 1},
|
||||
{.x = 38, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .unk3 = 0},
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_HailParticle_0[] =
|
||||
@@ -518,8 +517,7 @@ const struct SpriteTemplate gIceBallImpactShardSpriteTemplate =
|
||||
.callback = InitIceBallParticle,
|
||||
};
|
||||
|
||||
// not used
|
||||
static void sub_80AF108(struct Sprite *sprite)
|
||||
static void AnimUnusedIceCrystalThrow(struct Sprite *sprite)
|
||||
{
|
||||
s16 targetX, targetY, attackerX, attackerY;
|
||||
|
||||
@@ -533,13 +531,15 @@ static void sub_80AF108(struct Sprite *sprite)
|
||||
sprite->data[2] = gBattleAnimArgs[2] + targetX;
|
||||
sprite->data[3] = gBattleAnimArgs[1] + attackerY;
|
||||
sprite->data[4] = gBattleAnimArgs[3] + targetY;
|
||||
SetupLinearTranslationWithFixedDuration(sprite);
|
||||
ConvertPosDataToTranslateLinearData(sprite);
|
||||
// won't match with while loop
|
||||
for (; (targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192); targetX += sprite->data[1], targetY += sprite->data[2])
|
||||
for (; (targetX >= -32 && targetX <= DISPLAY_WIDTH + 32) && (targetY >= -32 && targetY <= DISPLAY_HEIGHT + 32);
|
||||
targetX += sprite->data[1], targetY += sprite->data[2])
|
||||
;
|
||||
sprite->data[1] = -sprite->data[1];
|
||||
sprite->data[2] = -sprite->data[2];
|
||||
for (; (attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192); attackerX += sprite->data[1], attackerY += sprite->data[2])
|
||||
for (; (attackerX >= -32 && attackerX <= DISPLAY_WIDTH + 32) && (attackerY >= -32 && attackerY <= DISPLAY_HEIGHT + 32);
|
||||
attackerX += sprite->data[1], attackerY += sprite->data[2])
|
||||
;
|
||||
sprite->x = attackerX;
|
||||
sprite->y = attackerY;
|
||||
@@ -548,14 +548,13 @@ static void sub_80AF108(struct Sprite *sprite)
|
||||
sprite->data[2] = targetX;
|
||||
sprite->data[3] = attackerY;
|
||||
sprite->data[4] = targetY;
|
||||
SetupLinearTranslationWithFixedDuration(sprite);
|
||||
ConvertPosDataToTranslateLinearData(sprite);
|
||||
sprite->data[3] = gBattleAnimArgs[5];
|
||||
sprite->data[4] = gBattleAnimArgs[6];
|
||||
sprite->callback = sub_80AF28C;
|
||||
sprite->callback = AnimUnusedIceCrystalThrow_Step;
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_80AF28C(struct Sprite *sprite)
|
||||
static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
@@ -584,7 +583,7 @@ static void AnimIcePunchSwirlingParticle(struct Sprite *sprite)
|
||||
sprite->data[3] = 30;
|
||||
sprite->data[4] = -512;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->callback = TranslateSpriteInGrowingCircleOverDuration;
|
||||
sprite->callback = TranslateSpriteInGrowingCircle;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
@@ -645,7 +644,7 @@ static void AnimFlickerIceEffectParticle(struct Sprite *sprite)
|
||||
// arg 3: target y offset
|
||||
// arg 4: particle speed
|
||||
// arg 5: multiple targets? (boolean)
|
||||
static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
||||
static void AnimSwirlingSnowball(struct Sprite *sprite)
|
||||
{
|
||||
s32 i;
|
||||
s16 tempDataHolder[8];
|
||||
@@ -676,8 +675,9 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 1;
|
||||
AnimFastTranslateLinear(sprite);
|
||||
if ((u32)(sprite->x + sprite->x2 + 16) > 272
|
||||
|| sprite->y + sprite->y2 > 160
|
||||
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|
||||
|| sprite->x + sprite->x2 < -16
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
break;
|
||||
}
|
||||
@@ -686,11 +686,11 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
||||
sprite->x2 = sprite->y2 = 0;
|
||||
for (i = 0; i < 8; ++i)
|
||||
sprite->data[i] = tempDataHolder[i];
|
||||
sprite->callback = InitAndStartAnimFastLinearTranslationWithSpeed;
|
||||
StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step2);
|
||||
sprite->callback = InitAnimFastLinearTranslationWithSpeedAndPos;
|
||||
StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step1);
|
||||
}
|
||||
|
||||
static void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
|
||||
static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
||||
{
|
||||
s16 tempVar;
|
||||
|
||||
@@ -703,11 +703,11 @@ static void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
|
||||
sprite->data[3] = Sin(sprite->data[0], tempVar);
|
||||
sprite->data[4] = Cos(sprite->data[0], 0xF);
|
||||
sprite->data[5] = 0;
|
||||
sprite->callback = AnimSwirlingSnowball_Step3;
|
||||
sprite->callback = AnimSwirlingSnowball_Step2;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void AnimSwirlingSnowball_Step3(struct Sprite *sprite)
|
||||
static void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
|
||||
{
|
||||
s16 tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
|
||||
|
||||
@@ -780,8 +780,9 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 1;
|
||||
AnimFastTranslateLinear(sprite);
|
||||
if ((u32)(sprite->x + sprite->x2 + 16) > 272
|
||||
|| sprite->y + sprite->y2 > 160
|
||||
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|
||||
|| sprite->x + sprite->x2 < -16
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
break;
|
||||
}
|
||||
@@ -806,8 +807,9 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite)
|
||||
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
|
||||
if (sprite->data[0] == 1)
|
||||
{
|
||||
if ((u32)(sprite->x + sprite->x2 + 16) > 272
|
||||
|| sprite->y + sprite->y2 > 160
|
||||
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|
||||
|| sprite->x + sprite->x2 < -16
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
@@ -927,7 +929,7 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// Fades mons to black and places foggy overlay in Haze.
|
||||
void AnimTask_Haze1(u8 taskId)
|
||||
void AnimTask_HazeScrollingFog(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
|
||||
@@ -947,10 +949,10 @@ void AnimTask_Haze1(u8 taskId)
|
||||
LoadPalette(&gDefaultWeatherSpritePalette, animBg.paletteId * 16, 32);
|
||||
if (IsContest())
|
||||
RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||
gTasks[taskId].func = AnimTask_Haze2;
|
||||
gTasks[taskId].func = AnimTask_HazeScrollingFog_Step;
|
||||
}
|
||||
|
||||
static void AnimTask_Haze2(u8 taskId)
|
||||
static void AnimTask_HazeScrollingFog_Step(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
|
||||
@@ -962,7 +964,7 @@ static void AnimTask_Haze2(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[10] = 0;
|
||||
++gTasks[taskId].data[9];
|
||||
gTasks[taskId].data[11] = gUnknown_83E64D4[gTasks[taskId].data[9]];
|
||||
gTasks[taskId].data[11] = sHazeBlendAmounts[gTasks[taskId].data[9]];
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
|
||||
if (gTasks[taskId].data[11] == 9)
|
||||
{
|
||||
@@ -1024,8 +1026,7 @@ static void AnimThrowMistBall(struct Sprite *sprite)
|
||||
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
||||
}
|
||||
|
||||
// Displays misty background in Mist Ball.
|
||||
void AnimTask_LoadMistTiles(u8 taskId)
|
||||
void AnimTask_MistBallFog(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
|
||||
@@ -1046,10 +1047,10 @@ void AnimTask_LoadMistTiles(u8 taskId)
|
||||
if (IsContest())
|
||||
RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0);
|
||||
gTasks[taskId].data[15] = -1;
|
||||
gTasks[taskId].func = AnimTask_OverlayFogTiles;
|
||||
gTasks[taskId].func = AnimTask_MistBallFog_Step;
|
||||
}
|
||||
|
||||
static void AnimTask_OverlayFogTiles(u8 taskId)
|
||||
static void AnimTask_MistBallFog_Step(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
|
||||
@@ -1058,7 +1059,7 @@ static void AnimTask_OverlayFogTiles(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
gTasks[taskId].data[9] += 1;
|
||||
gTasks[taskId].data[11] = gUnknown_83E6500[gTasks[taskId].data[9]];
|
||||
gTasks[taskId].data[11] = sMistBlendAmounts[gTasks[taskId].data[9]];
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 17 - gTasks[taskId].data[11]));
|
||||
if (gTasks[taskId].data[11] == 5)
|
||||
{
|
||||
@@ -1230,7 +1231,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
sprite->data[2] = -0x10;
|
||||
++sprite->data[7];
|
||||
sprite->x2 = sprite->y2 = 0;
|
||||
BattleAnim_InitLinearTranslationWithDuration(sprite);
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
@@ -1249,7 +1250,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// Creates Hail.
|
||||
void AnimTask_Hail1(u8 taskId)
|
||||
void AnimTask_Hail(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -1310,7 +1311,7 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId,
|
||||
|
||||
if (unk != 2)
|
||||
{
|
||||
id = GetBattlerAtPosition(sHailCoordData[hailStructId].unk2);
|
||||
id = GetBattlerAtPosition(sHailCoordData[hailStructId].bPosition);
|
||||
if (IsBattlerSpriteVisible(id))
|
||||
{
|
||||
possibleBool = TRUE;
|
||||
@@ -1330,14 +1331,14 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId,
|
||||
}
|
||||
else
|
||||
{
|
||||
battlerX = (sHailCoordData[hailStructId].unk0);
|
||||
battlerY = (sHailCoordData[hailStructId].unk1);
|
||||
battlerX = sHailCoordData[hailStructId].x;
|
||||
battlerY = sHailCoordData[hailStructId].y;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
battlerX = (sHailCoordData[hailStructId].unk0);
|
||||
battlerY = (sHailCoordData[hailStructId].unk1);
|
||||
battlerX = sHailCoordData[hailStructId].x;
|
||||
battlerY = sHailCoordData[hailStructId].y;
|
||||
}
|
||||
spriteX = battlerX - ((battlerY + 8) / 2);
|
||||
id = CreateSprite(&sHailParticleSpriteTemplate, spriteX, -8, 18);
|
||||
+117
-114
@@ -7,27 +7,27 @@
|
||||
#undef abs
|
||||
#define abs(x) ((x) < 0 ? -(x) : (x))
|
||||
|
||||
static void AnimTask_ShakeMonStep(u8 taskId);
|
||||
static void AnimTask_ShakeMon_Step(u8 taskId);
|
||||
static void AnimTask_ShakeMon2Step(u8 taskId);
|
||||
static void AnimTask_ShakeMonInPlaceStep(u8 taskId);
|
||||
static void AnimTask_ShakeAndSinkMonStep(u8 taskId);
|
||||
static void AnimTask_TranslateMonEllipticalStep(u8 taskId);
|
||||
static void AnimTask_ShakeMonInPlace_Step(u8 taskId);
|
||||
static void AnimTask_ShakeAndSinkMon_Step(u8 taskId);
|
||||
static void AnimTask_TranslateMonElliptical_Step(u8 taskId);
|
||||
static void DoHorizontalLunge(struct Sprite *sprite);
|
||||
static void ReverseHorizontalLungeDirection(struct Sprite *sprite);
|
||||
static void DoVerticalDip(struct Sprite *sprite);
|
||||
static void ReverseVerticalDipDirection(struct Sprite *sprite);
|
||||
static void SlideMonToOriginalPos(struct Sprite *sprite);
|
||||
static void SlideMonToOriginalPosStep(struct Sprite *sprite);
|
||||
static void SlideMonToOriginalPos_Step(struct Sprite *sprite);
|
||||
static void SlideMonToOffset(struct Sprite *sprite);
|
||||
static void sub_8099394(struct Sprite *sprite);
|
||||
static void sub_809946C(struct Sprite *sprite);
|
||||
static void AnimTask_WindUpLungePart1(u8 taskId);
|
||||
static void AnimTask_WindUpLungePart2(u8 taskId);
|
||||
static void sub_80996B8(u8 taskId);
|
||||
static void AnimTask_SwayMonStep(u8 taskId);
|
||||
static void AnimTask_ScaleMonAndRestoreStep(u8 taskId);
|
||||
static void sub_8099B54(u8 taskId);
|
||||
static void sub_8099CB8(u8 taskId);
|
||||
static void SlideMonToOffsetAndBack(struct Sprite *sprite);
|
||||
static void SlideMonToOffsetAndBack_End(struct Sprite *sprite);
|
||||
static void AnimTask_WindUpLunge_Step1(u8 taskId);
|
||||
static void AnimTask_WindUpLunge_Step2(u8 taskId);
|
||||
static void AnimTask_SlideOffScreen_Step(u8 taskId);
|
||||
static void AnimTask_SwayMon_Step(u8 taskId);
|
||||
static void AnimTask_ScaleMonAndRestore_Step(u8 taskId);
|
||||
static void AnimTask_RotateMonSpriteToSide_Step(u8 taskId);
|
||||
static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId);
|
||||
|
||||
const struct SpriteTemplate gHorizontalLungeSpriteTemplate =
|
||||
{
|
||||
@@ -81,7 +81,7 @@ const struct SpriteTemplate gSlideMonToOffsetAndBackSpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8099394,
|
||||
.callback = SlideMonToOffsetAndBack,
|
||||
};
|
||||
|
||||
// Task to facilitate simple shaking of a pokemon's picture in battle.
|
||||
@@ -95,24 +95,24 @@ void AnimTask_ShakeMon(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
|
||||
if (spriteId == 0xFF)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
else
|
||||
if (spriteId == SPRITE_NONE)
|
||||
{
|
||||
gSprites[spriteId].x2 = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].y2 = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].func = AnimTask_ShakeMonStep;
|
||||
gTasks[taskId].func(taskId);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
gSprites[spriteId].x2 = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].y2 = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].func = AnimTask_ShakeMon_Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void AnimTask_ShakeMonStep(u8 taskId)
|
||||
static void AnimTask_ShakeMon_Step(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
{
|
||||
@@ -152,7 +152,7 @@ void AnimTask_ShakeMon2(u8 taskId)
|
||||
if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
|
||||
{
|
||||
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
if (spriteId == 0xFF)
|
||||
if (spriteId == SPRITE_NONE)
|
||||
abort = TRUE;
|
||||
}
|
||||
else if (gBattleAnimArgs[0] != 8)
|
||||
@@ -178,21 +178,23 @@ void AnimTask_ShakeMon2(u8 taskId)
|
||||
}
|
||||
else
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
|
||||
if (abort)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
else
|
||||
{
|
||||
gSprites[spriteId].x2 = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].y2 = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].func = AnimTask_ShakeMon2Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
gSprites[spriteId].x2 = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].y2 = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].func = AnimTask_ShakeMon2Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void AnimTask_ShakeMon2Step(u8 taskId)
|
||||
@@ -231,25 +233,25 @@ void AnimTask_ShakeMonInPlace(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
|
||||
if (spriteId == 0xFF)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
else
|
||||
if (spriteId == SPRITE_NONE)
|
||||
{
|
||||
gSprites[spriteId].x2 += gBattleAnimArgs[1];
|
||||
gSprites[spriteId].y2 += gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2;
|
||||
gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2;
|
||||
gTasks[taskId].func = AnimTask_ShakeMonInPlaceStep;
|
||||
gTasks[taskId].func(taskId);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
gSprites[spriteId].x2 += gBattleAnimArgs[1];
|
||||
gSprites[spriteId].y2 += gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2;
|
||||
gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2;
|
||||
gTasks[taskId].func = AnimTask_ShakeMonInPlace_Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void AnimTask_ShakeMonInPlaceStep(u8 taskId)
|
||||
static void AnimTask_ShakeMonInPlace_Step(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
{
|
||||
@@ -299,22 +301,22 @@ void AnimTask_ShakeAndSinkMon(u8 taskId)
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].func = AnimTask_ShakeAndSinkMonStep;
|
||||
gTasks[taskId].func = AnimTask_ShakeAndSinkMon_Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void AnimTask_ShakeAndSinkMonStep(u8 taskId)
|
||||
static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[taskId].data[0];
|
||||
s16 data1 = gTasks[taskId].data[1];
|
||||
s16 x = gTasks[taskId].data[1];
|
||||
if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++)
|
||||
{
|
||||
gTasks[taskId].data[8] = 0;
|
||||
if (gSprites[spriteId].x2 == data1)
|
||||
data1 = -data1;
|
||||
gSprites[spriteId].x2 += data1;
|
||||
if (gSprites[spriteId].x2 == x)
|
||||
x = -x;
|
||||
gSprites[spriteId].x2 += x;
|
||||
}
|
||||
gTasks[taskId].data[1] = data1;
|
||||
gTasks[taskId].data[1] = x;
|
||||
gTasks[taskId].data[9] += gTasks[taskId].data[3];
|
||||
gSprites[spriteId].y2 = gTasks[taskId].data[9] >> 8;
|
||||
if (--gTasks[taskId].data[4] == 0)
|
||||
@@ -342,11 +344,11 @@ void AnimTask_TranslateMonElliptical(u8 taskId)
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[4] = wavePeriod;
|
||||
gTasks[taskId].func = AnimTask_TranslateMonEllipticalStep;
|
||||
gTasks[taskId].func = AnimTask_TranslateMonElliptical_Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void AnimTask_TranslateMonEllipticalStep(u8 taskId)
|
||||
static void AnimTask_TranslateMonElliptical_Step(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[taskId].data[0];
|
||||
gSprites[spriteId].x2 = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]);
|
||||
@@ -395,14 +397,14 @@ static void DoHorizontalLunge(struct Sprite *sprite)
|
||||
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
|
||||
sprite->data[4] = gBattleAnimArgs[0];
|
||||
StoreSpriteCallbackInData6(sprite, ReverseHorizontalLungeDirection);
|
||||
sprite->callback = TranslateMonSpriteLinear;
|
||||
sprite->callback = TranslateSpriteLinearById;
|
||||
}
|
||||
|
||||
static void ReverseHorizontalLungeDirection(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = sprite->data[4];
|
||||
sprite->data[1] = -sprite->data[1];
|
||||
sprite->callback = TranslateMonSpriteLinear;
|
||||
sprite->callback = TranslateSpriteLinearById;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
@@ -422,14 +424,14 @@ static void DoVerticalDip(struct Sprite *sprite)
|
||||
sprite->data[3] = spriteId;
|
||||
sprite->data[4] = gBattleAnimArgs[0];
|
||||
StoreSpriteCallbackInData6(sprite, ReverseVerticalDipDirection);
|
||||
sprite->callback = TranslateMonSpriteLinear;
|
||||
sprite->callback = TranslateSpriteLinearById;
|
||||
}
|
||||
|
||||
static void ReverseVerticalDipDirection(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = sprite->data[4];
|
||||
sprite->data[2] = -sprite->data[2];
|
||||
sprite->callback = TranslateMonSpriteLinear;
|
||||
sprite->callback = TranslateSpriteLinearById;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
@@ -462,19 +464,19 @@ static void SlideMonToOriginalPos(struct Sprite *sprite)
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[7] = gBattleAnimArgs[1];
|
||||
sprite->data[7] |= spriteId << 8;
|
||||
sprite->callback = SlideMonToOriginalPosStep;
|
||||
sprite->callback = SlideMonToOriginalPos_Step;
|
||||
}
|
||||
|
||||
static void SlideMonToOriginalPosStep(struct Sprite *sprite)
|
||||
static void SlideMonToOriginalPos_Step(struct Sprite *sprite)
|
||||
{
|
||||
u8 data7 = sprite->data[7];
|
||||
struct Sprite *otherSprite = &gSprites[sprite->data[7] >> 8];
|
||||
struct Sprite *monSprite = &gSprites[sprite->data[7] >> 8];
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
if (data7 == 1 || data7 == 0)
|
||||
otherSprite->x2 = 0;
|
||||
monSprite->x2 = 0;
|
||||
if (data7 == 2 || data7 == 0)
|
||||
otherSprite->y2 = 0;
|
||||
monSprite->y2 = 0;
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
else
|
||||
@@ -482,8 +484,8 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite)
|
||||
sprite->data[0]--;
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
otherSprite->x2 = (sprite->data[3] >> 8) + sprite->data[5];
|
||||
otherSprite->y2 = (sprite->data[4] >> 8) + sprite->data[6];
|
||||
monSprite->x2 = (sprite->data[3] >> 8) + sprite->data[5];
|
||||
monSprite->y2 = (sprite->data[4] >> 8) + sprite->data[6];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -498,12 +500,12 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite)
|
||||
static void SlideMonToOffset(struct Sprite *sprite)
|
||||
{
|
||||
u8 battlerId;
|
||||
u8 spriteId;
|
||||
u8 monSpriteId;
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
spriteId = gBattlerSpriteIds[battlerId];
|
||||
monSpriteId = gBattlerSpriteIds[battlerId];
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
@@ -511,25 +513,25 @@ static void SlideMonToOffset(struct Sprite *sprite)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
}
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = gSprites[spriteId].x;
|
||||
sprite->data[2] = gSprites[spriteId].x + gBattleAnimArgs[1];
|
||||
sprite->data[3] = gSprites[spriteId].y;
|
||||
sprite->data[4] = gSprites[spriteId].y + gBattleAnimArgs[2];
|
||||
sprite->data[1] = gSprites[monSpriteId].x;
|
||||
sprite->data[2] = gSprites[monSpriteId].x + gBattleAnimArgs[1];
|
||||
sprite->data[3] = gSprites[monSpriteId].y;
|
||||
sprite->data[4] = gSprites[monSpriteId].y + gBattleAnimArgs[2];
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[3] = 0;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = spriteId;
|
||||
sprite->data[5] = monSpriteId;
|
||||
sprite->invisible = TRUE;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->callback = TranslateMonSpriteLinearFixedPoint;
|
||||
sprite->callback = TranslateSpriteLinearByIdFixedPoint;
|
||||
}
|
||||
|
||||
static void sub_8099394(struct Sprite *sprite)
|
||||
static void SlideMonToOffsetAndBack(struct Sprite *sprite)
|
||||
{
|
||||
u8 battlerId;
|
||||
u8 spriteId;
|
||||
sprite->invisible = TRUE;
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
@@ -553,11 +555,11 @@ static void sub_8099394(struct Sprite *sprite)
|
||||
if (gBattleAnimArgs[5] == 0)
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
else
|
||||
StoreSpriteCallbackInData6(sprite, sub_809946C);
|
||||
sprite->callback = TranslateMonSpriteLinearFixedPoint;
|
||||
StoreSpriteCallbackInData6(sprite, SlideMonToOffsetAndBack_End);
|
||||
sprite->callback = TranslateSpriteLinearByIdFixedPoint;
|
||||
}
|
||||
|
||||
static void sub_809946C(struct Sprite *sprite)
|
||||
static void SlideMonToOffsetAndBack_End(struct Sprite *sprite)
|
||||
{
|
||||
gSprites[sprite->data[5]].x2 = 0;
|
||||
gSprites[sprite->data[5]].y2 = 0;
|
||||
@@ -590,10 +592,10 @@ void AnimTask_WindUpLunge(u8 taskId)
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[5] * 256 / gBattleAnimArgs[6];
|
||||
gTasks[taskId].data[6] = gBattleAnimArgs[6];
|
||||
gTasks[taskId].data[7] = wavePeriod;
|
||||
gTasks[taskId].func = AnimTask_WindUpLungePart1;
|
||||
gTasks[taskId].func = AnimTask_WindUpLunge_Step1;
|
||||
}
|
||||
|
||||
static void AnimTask_WindUpLungePart1(u8 taskId)
|
||||
static void AnimTask_WindUpLunge_Step1(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[taskId].data[0];
|
||||
gTasks[taskId].data[11] += gTasks[taskId].data[1];
|
||||
@@ -601,10 +603,10 @@ static void AnimTask_WindUpLungePart1(u8 taskId)
|
||||
gSprites[spriteId].y2 = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]);
|
||||
gTasks[taskId].data[10] += gTasks[taskId].data[7];
|
||||
if (--gTasks[taskId].data[3] == 0)
|
||||
gTasks[taskId].func = AnimTask_WindUpLungePart2;
|
||||
gTasks[taskId].func = AnimTask_WindUpLunge_Step2;
|
||||
}
|
||||
|
||||
static void AnimTask_WindUpLungePart2(u8 taskId)
|
||||
static void AnimTask_WindUpLunge_Step2(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
@@ -620,17 +622,18 @@ static void AnimTask_WindUpLungePart2(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// To move a mon off-screen when pushed out by Roar/Whirlwind
|
||||
void AnimTask_SlideOffScreen(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
switch (gBattleAnimArgs[0])
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case ANIM_ATTACKER:
|
||||
case ANIM_TARGET:
|
||||
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
break;
|
||||
case 2:
|
||||
case ANIM_ATK_PARTNER:
|
||||
if (!IsBattlerSpriteVisible(gBattleAnimAttacker ^ BIT_FLANK))
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -638,7 +641,7 @@ void AnimTask_SlideOffScreen(u8 taskId)
|
||||
}
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimAttacker ^ BIT_FLANK];
|
||||
break;
|
||||
case 3:
|
||||
case ANIM_DEF_PARTNER:
|
||||
if (!IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK))
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -655,14 +658,14 @@ void AnimTask_SlideOffScreen(u8 taskId)
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
else
|
||||
gTasks[taskId].data[1] = -gBattleAnimArgs[1];
|
||||
gTasks[taskId].func = sub_80996B8;
|
||||
gTasks[taskId].func = AnimTask_SlideOffScreen_Step;
|
||||
}
|
||||
|
||||
static void sub_80996B8(u8 taskId)
|
||||
static void AnimTask_SlideOffScreen_Step(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[taskId].data[0];
|
||||
gSprites[spriteId].x2 += gTasks[taskId].data[1];
|
||||
if (gSprites[spriteId].x2 + gSprites[spriteId].x < -0x20 || gSprites[spriteId].x2 + gSprites[spriteId].x > 0x110)
|
||||
if (gSprites[spriteId].x2 + gSprites[spriteId].x < -32 || gSprites[spriteId].x2 + gSprites[spriteId].x > DISPLAY_WIDTH + 32)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
@@ -690,10 +693,10 @@ void AnimTask_SwayMon(u8 taskId)
|
||||
else
|
||||
gTasks[taskId].data[5] = gBattleAnimTarget;
|
||||
gTasks[taskId].data[12] = 1;
|
||||
gTasks[taskId].func = AnimTask_SwayMonStep;
|
||||
gTasks[taskId].func = AnimTask_SwayMon_Step;
|
||||
}
|
||||
|
||||
static void AnimTask_SwayMonStep(u8 taskId)
|
||||
static void AnimTask_SwayMon_Step(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
u32 waveIndex;
|
||||
@@ -745,10 +748,10 @@ void AnimTask_ScaleMonAndRestore(u8 taskId)
|
||||
gTasks[taskId].data[4] = spriteId;
|
||||
gTasks[taskId].data[10] = 0x100;
|
||||
gTasks[taskId].data[11] = 0x100;
|
||||
gTasks[taskId].func = AnimTask_ScaleMonAndRestoreStep;
|
||||
gTasks[taskId].func = AnimTask_ScaleMonAndRestore_Step;
|
||||
}
|
||||
|
||||
static void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
|
||||
static void AnimTask_ScaleMonAndRestore_Step(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
gTasks[taskId].data[10] += gTasks[taskId].data[0];
|
||||
@@ -789,7 +792,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId)
|
||||
gTasks[taskId].data[7] = 1;
|
||||
else
|
||||
{
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
|
||||
gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : 0;
|
||||
else
|
||||
gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER ? 1 : 0;
|
||||
@@ -802,16 +805,17 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId)
|
||||
tmp = gTasks[taskId].data[4];
|
||||
gTasks[taskId].data[4] = -tmp;
|
||||
}
|
||||
gTasks[taskId].func = sub_8099B54;
|
||||
gTasks[taskId].func = AnimTask_RotateMonSpriteToSide_Step;
|
||||
}
|
||||
|
||||
// Rotates mon to side and back to original position. For Peck and when a held item activates
|
||||
void AnimTask_RotateMonToSideAndRestore(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
|
||||
PrepareBattlerSpriteForRotScale(spriteId, 0);
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[0];
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
@@ -831,16 +835,15 @@ void AnimTask_RotateMonToSideAndRestore(u8 taskId)
|
||||
gTasks[taskId].data[7] = 1;
|
||||
if (gTasks[taskId].data[7] )
|
||||
{
|
||||
s16 tmp;
|
||||
tmp = gTasks[taskId].data[3];
|
||||
s16 tmp = gTasks[taskId].data[3];
|
||||
gTasks[taskId].data[3] = -tmp;
|
||||
tmp = gTasks[taskId].data[4];
|
||||
gTasks[taskId].data[4] = -tmp;
|
||||
}
|
||||
gTasks[taskId].func = sub_8099B54;
|
||||
gTasks[taskId].func = AnimTask_RotateMonSpriteToSide_Step;
|
||||
}
|
||||
|
||||
static void sub_8099B54(u8 taskId)
|
||||
static void AnimTask_RotateMonSpriteToSide_Step(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[3] += gTasks[taskId].data[4];
|
||||
SetSpriteRotScale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]);
|
||||
@@ -895,10 +898,10 @@ void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId)
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].func = sub_8099CB8;
|
||||
gTasks[taskId].func = AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step;
|
||||
}
|
||||
|
||||
static void sub_8099CB8(u8 taskId)
|
||||
static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
if (++task->data[0] > task->data[1])
|
||||
|
||||
+349
-238
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@
|
||||
static void AnimConfusionDuck(struct Sprite *sprite);
|
||||
static void AnimSimplePaletteBlend(struct Sprite *sprite);
|
||||
static void AnimComplexPaletteBlend(struct Sprite *sprite);
|
||||
static void sub_80B9B8C(struct Sprite *sprite);
|
||||
static void AnimCirclingSparkle(struct Sprite *sprite);
|
||||
static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite);
|
||||
static void AnimHitSplatBasic(struct Sprite *sprite);
|
||||
static void AnimHitSplatHandleInvert(struct Sprite *sprite);
|
||||
@@ -17,22 +17,22 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite);
|
||||
static void AnimCrossImpact(struct Sprite *sprite);
|
||||
static void AnimFlashingHitSplat(struct Sprite *sprite);
|
||||
static void AnimHitSplatPersistent(struct Sprite *sprite);
|
||||
static void AnimConfusionDuckStep(struct Sprite *sprite);
|
||||
static void AnimSimplePaletteBlendStep(struct Sprite *sprite);
|
||||
static void sub_80B9AD0(struct Sprite *sprite);
|
||||
static void sub_80B9B5C(struct Sprite *sprite);
|
||||
static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
|
||||
static void sub_80B9C7C(u8 taskId);
|
||||
static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
|
||||
static void sub_80B9DF0(u8 taskId);
|
||||
static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
|
||||
static void sub_80B9F04(u8 taskId);
|
||||
static void sub_80B9FD8(u8 taskId);
|
||||
static void sub_80BA090(u8 taskId);
|
||||
static void sub_80BA3CC(void);
|
||||
static void sub_80BA320(struct Sprite *sprite);
|
||||
static void sub_80BA4D0(u8 taskId);
|
||||
static void sub_80BA7BC(struct Sprite *sprite);
|
||||
static void AnimConfusionDuck_Step(struct Sprite *sprite);
|
||||
static void AnimSimplePaletteBlend_Step(struct Sprite *sprite);
|
||||
static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite);
|
||||
static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite);
|
||||
static void BlendColorCycle(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
|
||||
static void AnimTask_BlendColorCycleLoop(u8 taskId);
|
||||
static void BlendColorCycleExclude(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
|
||||
static void AnimTask_BlendColorCycleExcludeLoop(u8 taskId);
|
||||
static void BlendColorCycleByTag(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
|
||||
static void AnimTask_BlendColorCycleByTagLoop(u8 taskId);
|
||||
static void AnimTask_FlashAnimTagWithColor_Step1(u8 taskId);
|
||||
static void AnimTask_FlashAnimTagWithColor_Step2(u8 taskId);
|
||||
static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void);
|
||||
static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite);
|
||||
static void AnimTask_ShakeBattleTerrain_Step(u8 taskId);
|
||||
static void AnimFlashingHitSplat_Step(struct Sprite *sprite);
|
||||
|
||||
|
||||
static const union AnimCmd sAnim_ConfusionDuck_0[] =
|
||||
@@ -92,7 +92,7 @@ const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate =
|
||||
.callback = AnimComplexPaletteBlend,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_83E7B54[] =
|
||||
static const union AnimCmd sAnim_CirclingSparkle[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
ANIMCMD_FRAME(16, 3),
|
||||
@@ -102,20 +102,21 @@ static const union AnimCmd gUnknown_83E7B54[] =
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gUnknown_83E7B6C[] =
|
||||
static const union AnimCmd *const sAnims_CirclingSparkle[] =
|
||||
{
|
||||
gUnknown_83E7B54,
|
||||
sAnim_CirclingSparkle,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E7B70 =
|
||||
// Unused
|
||||
static const struct SpriteTemplate sCirclingSparkleSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SPARKLE_4,
|
||||
.paletteTag = ANIM_TAG_SPARKLE_4,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gUnknown_83E7B6C,
|
||||
.anims = sAnims_CirclingSparkle,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_80B9B8C,
|
||||
.callback = AnimCirclingSparkle,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate =
|
||||
@@ -275,11 +276,11 @@ static void AnimConfusionDuck(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, 1);
|
||||
}
|
||||
sprite->data[3] = gBattleAnimArgs[4];
|
||||
sprite->callback = AnimConfusionDuckStep;
|
||||
sprite->callback = AnimConfusionDuck_Step;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void AnimConfusionDuckStep(struct Sprite *sprite)
|
||||
static void AnimConfusionDuck_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x2 = Cos(sprite->data[0], 30);
|
||||
sprite->y2 = Sin(sprite->data[0], 10);
|
||||
@@ -300,36 +301,36 @@ static void AnimConfusionDuckStep(struct Sprite *sprite)
|
||||
// arg 4: blend color
|
||||
static void AnimSimplePaletteBlend(struct Sprite *sprite)
|
||||
{
|
||||
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
|
||||
u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]);
|
||||
|
||||
BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]);
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = AnimSimplePaletteBlendStep;
|
||||
sprite->callback = AnimSimplePaletteBlend_Step;
|
||||
}
|
||||
|
||||
// Unpacks a bitfield and returns a bitmask of its selected palettes.
|
||||
// Bits 0-6 of the selector parameter result in the following palettes being selected:
|
||||
// 0: battle background palettes (BG palettes 1, 2, and 3)
|
||||
// 1: gBattleAnimAttacker OBJ palette
|
||||
// 2: gBattleAnimTarget OBJ palette
|
||||
// 3: gBattleAnimAttacker partner OBJ palette
|
||||
// 4: gBattleAnimTarget partner OBJ palette
|
||||
// 5: BG palette 4
|
||||
// 6: BG palette 5
|
||||
u32 UnpackSelectedBattleAnimPalettes(s16 selector)
|
||||
// 0: F_PAL_BG, battle background palettes (BG palettes 1, 2, and 3)
|
||||
// 1: F_PAL_ATTACKER, gBattleAnimAttacker OBJ palette
|
||||
// 2: F_PAL_TARGET, gBattleAnimTarget OBJ palette
|
||||
// 3: F_PAL_ATK_PARTNER, gBattleAnimAttacker partner OBJ palette
|
||||
// 4: F_PAL_DEF_PARTNER, gBattleAnimTarget partner OBJ palette
|
||||
// 5: F_PAL_ANIM_1, BG palette 8
|
||||
// 6: F_PAL_ANIM_2, BG palette 9
|
||||
u32 UnpackSelectedBattlePalettes(s16 selector)
|
||||
{
|
||||
u8 battleBackground = selector & 1;
|
||||
u8 attacker = (selector >> 1) & 1;
|
||||
u8 target = (selector >> 2) & 1;
|
||||
u8 attackerPartner = (selector >> 3) & 1;
|
||||
u8 targetPartner = (selector >> 4) & 1;
|
||||
u8 arg5 = (selector >> 5) & 1;
|
||||
u8 arg6 = (selector >> 6) & 1;
|
||||
u8 anim1 = (selector >> 5) & 1;
|
||||
u8 anim2 = (selector >> 6) & 1;
|
||||
|
||||
return SelectBattleAnimSpriteAndBgPalettes(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6);
|
||||
return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, anim1, anim2);
|
||||
}
|
||||
|
||||
static void AnimSimplePaletteBlendStep(struct Sprite *sprite)
|
||||
static void AnimSimplePaletteBlend_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -347,13 +348,13 @@ static void AnimComplexPaletteBlend(struct Sprite *sprite)
|
||||
sprite->data[5] = gBattleAnimArgs[5];
|
||||
sprite->data[6] = gBattleAnimArgs[6];
|
||||
sprite->data[7] = gBattleAnimArgs[0];
|
||||
selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
|
||||
selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]);
|
||||
BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]);
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = sub_80B9AD0;
|
||||
sprite->callback = AnimComplexPaletteBlend_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B9AD0(struct Sprite *sprite)
|
||||
static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite)
|
||||
{
|
||||
u32 selectedPalettes;
|
||||
|
||||
@@ -366,10 +367,10 @@ static void sub_80B9AD0(struct Sprite *sprite)
|
||||
return;
|
||||
if (sprite->data[2] == 0)
|
||||
{
|
||||
sprite->callback = sub_80B9B5C;
|
||||
sprite->callback = AnimComplexPaletteBlend_Step2;
|
||||
return;
|
||||
}
|
||||
selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
|
||||
selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]);
|
||||
if (sprite->data[1] & 0x100)
|
||||
BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]);
|
||||
else
|
||||
@@ -379,19 +380,19 @@ static void sub_80B9AD0(struct Sprite *sprite)
|
||||
--sprite->data[2];
|
||||
}
|
||||
|
||||
static void sub_80B9B5C(struct Sprite *sprite)
|
||||
static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite)
|
||||
{
|
||||
u32 selectedPalettes;
|
||||
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
|
||||
selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]);
|
||||
BlendPalettes(selectedPalettes, 0, 0);
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B9B8C(struct Sprite *sprite)
|
||||
static void AnimCirclingSparkle(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
@@ -402,57 +403,75 @@ static void sub_80B9B8C(struct Sprite *sprite)
|
||||
sprite->data[4] = 112;
|
||||
sprite->data[5] = 0;
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = TranslateSpriteInGrowingCircleOverDuration;
|
||||
sprite->callback = TranslateSpriteInGrowingCircle;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
void AnimTask_CurseBlendEffect(u8 taskId)
|
||||
// Task data for AnimTask_BlendColorCycle, AnimTask_BlendColorCycleExclude, and AnimTask_BlendColorCycleByTag
|
||||
#define tPalSelector data[0] // AnimTask_BlendColorCycle
|
||||
#define tPalTag data[0] // AnimTask_BlendColorCycleByTag
|
||||
#define tDelay data[1]
|
||||
#define tNumBlends data[2]
|
||||
#define tInitialBlendY data[3]
|
||||
#define tTargetBlendY data[4]
|
||||
#define tBlendColor data[5]
|
||||
#define tRestoreBlend data[8]
|
||||
#define tPalSelectorHi data[9]
|
||||
#define tPalSelectorLo data[10]
|
||||
|
||||
// Blends mon/screen to designated color or back alternately tNumBlends times
|
||||
// Many uses of this task only set a tNumBlends of 2, which has the effect of blending to a color and back once
|
||||
void AnimTask_BlendColorCycle(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[5];
|
||||
gTasks[taskId].data[8] = 0;
|
||||
sub_80B9C2C(taskId, 0, gTasks[taskId].data[4]);
|
||||
gTasks[taskId].func = sub_80B9C7C;
|
||||
gTasks[taskId].tPalSelector = gBattleAnimArgs[0];
|
||||
gTasks[taskId].tDelay = gBattleAnimArgs[1];
|
||||
gTasks[taskId].tNumBlends = gBattleAnimArgs[2];
|
||||
gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3];
|
||||
gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4];
|
||||
gTasks[taskId].tBlendColor = gBattleAnimArgs[5];
|
||||
gTasks[taskId].tRestoreBlend = FALSE;
|
||||
BlendColorCycle(taskId, 0, gTasks[taskId].tTargetBlendY);
|
||||
gTasks[taskId].func = AnimTask_BlendColorCycleLoop;
|
||||
}
|
||||
|
||||
static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
|
||||
static void BlendColorCycle(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount)
|
||||
{
|
||||
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]);
|
||||
|
||||
BeginNormalPaletteFade(selectedPalettes,
|
||||
gTasks[taskId].data[1],
|
||||
initialBlendAmount,
|
||||
targetBlendAmount,
|
||||
gTasks[taskId].data[5]);
|
||||
--gTasks[taskId].data[2];
|
||||
gTasks[taskId].data[8] ^= 1;
|
||||
u32 selectedPalettes = UnpackSelectedBattlePalettes(gTasks[taskId].tPalSelector);
|
||||
BeginNormalPaletteFade(
|
||||
selectedPalettes,
|
||||
gTasks[taskId].tDelay,
|
||||
startBlendAmount,
|
||||
targetBlendAmount,
|
||||
gTasks[taskId].tBlendColor);
|
||||
|
||||
gTasks[taskId].tNumBlends--;
|
||||
gTasks[taskId].tRestoreBlend ^= 1;
|
||||
}
|
||||
|
||||
static void sub_80B9C7C(u8 taskId)
|
||||
static void AnimTask_BlendColorCycleLoop(u8 taskId)
|
||||
{
|
||||
u8 initialBlendAmount, targetBlendAmount;
|
||||
|
||||
u8 startBlendAmount, targetBlendAmount;
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (gTasks[taskId].data[2] > 0)
|
||||
if (gTasks[taskId].tNumBlends > 0)
|
||||
{
|
||||
if (gTasks[taskId].data[8] == 0)
|
||||
if (!gTasks[taskId].tRestoreBlend)
|
||||
{
|
||||
initialBlendAmount = gTasks[taskId].data[3];
|
||||
targetBlendAmount = gTasks[taskId].data[4];
|
||||
// Blend to designated color
|
||||
startBlendAmount = gTasks[taskId].tInitialBlendY;
|
||||
targetBlendAmount = gTasks[taskId].tTargetBlendY;
|
||||
}
|
||||
else
|
||||
{
|
||||
initialBlendAmount = gTasks[taskId].data[4];
|
||||
targetBlendAmount = gTasks[taskId].data[3];
|
||||
// Blend back to original color
|
||||
startBlendAmount = gTasks[taskId].tTargetBlendY;
|
||||
targetBlendAmount = gTasks[taskId].tInitialBlendY;
|
||||
}
|
||||
if (gTasks[taskId].data[2] == 1)
|
||||
|
||||
if (gTasks[taskId].tNumBlends == 1)
|
||||
targetBlendAmount = 0;
|
||||
sub_80B9C2C(taskId, initialBlendAmount, targetBlendAmount);
|
||||
|
||||
BlendColorCycle(taskId, startBlendAmount, targetBlendAmount);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -461,64 +480,73 @@ static void sub_80B9C7C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// See AnimTask_BlendColorCycle. Same, but excludes Attacker and Target
|
||||
void AnimTask_BlendColorCycleExclude(u8 taskId)
|
||||
{
|
||||
s32 battler;
|
||||
int battler;
|
||||
u32 selectedPalettes = 0;
|
||||
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[5];
|
||||
gTasks[taskId].data[8] = 0;
|
||||
for (battler = 0; battler < gBattlersCount; ++battler)
|
||||
gTasks[taskId].tDelay = gBattleAnimArgs[1];
|
||||
gTasks[taskId].tNumBlends = gBattleAnimArgs[2];
|
||||
gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3];
|
||||
gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4];
|
||||
gTasks[taskId].tBlendColor = gBattleAnimArgs[5];
|
||||
gTasks[taskId].tRestoreBlend = 0;
|
||||
|
||||
for (battler = 0; battler < gBattlersCount; battler++)
|
||||
{
|
||||
if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget)
|
||||
selectedPalettes |= 1 << (battler + 16);
|
||||
}
|
||||
|
||||
if (gBattleAnimArgs[0] == 1)
|
||||
selectedPalettes |= 0xE;
|
||||
gTasks[taskId].data[9] = selectedPalettes >> 16;
|
||||
gTasks[taskId].data[10] = selectedPalettes & 0xFF;
|
||||
sub_80B9DA0(taskId, 0, gTasks[taskId].data[4]);
|
||||
gTasks[taskId].func = sub_80B9DF0;
|
||||
|
||||
gTasks[taskId].tPalSelectorHi = selectedPalettes >> 16;
|
||||
gTasks[taskId].tPalSelectorLo = selectedPalettes & 0xFF;
|
||||
BlendColorCycleExclude(taskId, 0, gTasks[taskId].tTargetBlendY);
|
||||
gTasks[taskId].func = AnimTask_BlendColorCycleExcludeLoop;
|
||||
}
|
||||
|
||||
static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
|
||||
static void BlendColorCycleExclude(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount)
|
||||
{
|
||||
u32 selectedPalettes = ((u16)gTasks[taskId].data[9] << 16) | (u16)gTasks[taskId].data[10];
|
||||
|
||||
BeginNormalPaletteFade(selectedPalettes,
|
||||
gTasks[taskId].data[1],
|
||||
initialBlendAmount,
|
||||
targetBlendAmount,
|
||||
gTasks[taskId].data[5]);
|
||||
--gTasks[taskId].data[2];
|
||||
gTasks[taskId].data[8] ^= 1;
|
||||
u32 selectedPalettes = ((u16)gTasks[taskId].tPalSelectorHi << 16) | (u16)gTasks[taskId].tPalSelectorLo;
|
||||
BeginNormalPaletteFade(
|
||||
selectedPalettes,
|
||||
gTasks[taskId].tDelay,
|
||||
startBlendAmount,
|
||||
targetBlendAmount,
|
||||
gTasks[taskId].tBlendColor);
|
||||
|
||||
gTasks[taskId].tNumBlends--;
|
||||
gTasks[taskId].tRestoreBlend ^= 1;
|
||||
}
|
||||
|
||||
static void sub_80B9DF0(u8 taskId)
|
||||
static void AnimTask_BlendColorCycleExcludeLoop(u8 taskId)
|
||||
{
|
||||
u8 initialBlendAmount, targetBlendAmount;
|
||||
|
||||
u8 startBlendAmount, targetBlendAmount;
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (gTasks[taskId].data[2] > 0)
|
||||
if (gTasks[taskId].tNumBlends > 0)
|
||||
{
|
||||
if (gTasks[taskId].data[8] == 0)
|
||||
if (!gTasks[taskId].tRestoreBlend)
|
||||
{
|
||||
initialBlendAmount = gTasks[taskId].data[3];
|
||||
targetBlendAmount = gTasks[taskId].data[4];
|
||||
// Blend to designated color
|
||||
startBlendAmount = gTasks[taskId].tInitialBlendY;
|
||||
targetBlendAmount = gTasks[taskId].tTargetBlendY;
|
||||
}
|
||||
else
|
||||
{
|
||||
initialBlendAmount = gTasks[taskId].data[4];
|
||||
targetBlendAmount = gTasks[taskId].data[3];
|
||||
// Blend back to original color
|
||||
startBlendAmount = gTasks[taskId].tTargetBlendY;
|
||||
targetBlendAmount = gTasks[taskId].tInitialBlendY;
|
||||
}
|
||||
|
||||
if (gTasks[taskId].data[2] == 1)
|
||||
if (gTasks[taskId].tNumBlends == 1)
|
||||
targetBlendAmount = 0;
|
||||
sub_80B9DA0(taskId, initialBlendAmount, targetBlendAmount);
|
||||
|
||||
BlendColorCycleExclude(taskId, startBlendAmount, targetBlendAmount);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -527,56 +555,59 @@ static void sub_80B9DF0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// See AnimTask_BlendColorCycle. Same, but selects palette by ANIM_TAG_*
|
||||
void AnimTask_BlendColorCycleByTag(u8 taskId)
|
||||
{
|
||||
u8 paletteIndex;
|
||||
gTasks[taskId].tPalTag = gBattleAnimArgs[0];
|
||||
gTasks[taskId].tDelay = gBattleAnimArgs[1];
|
||||
gTasks[taskId].tNumBlends = gBattleAnimArgs[2];
|
||||
gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3];
|
||||
gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4];
|
||||
gTasks[taskId].tBlendColor = gBattleAnimArgs[5];
|
||||
gTasks[taskId].tRestoreBlend = FALSE;
|
||||
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[5] = gBattleAnimArgs[5];
|
||||
gTasks[taskId].data[8] = 0;
|
||||
sub_80B9EA8(taskId, 0, gTasks[taskId].data[4]);
|
||||
gTasks[taskId].func = sub_80B9F04;
|
||||
BlendColorCycleByTag(taskId, 0, gTasks[taskId].tTargetBlendY);
|
||||
gTasks[taskId].func = AnimTask_BlendColorCycleByTagLoop;
|
||||
}
|
||||
|
||||
static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
|
||||
static void BlendColorCycleByTag(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount)
|
||||
{
|
||||
u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].data[0]);
|
||||
|
||||
BeginNormalPaletteFade(1 << (paletteIndex + 16),
|
||||
gTasks[taskId].data[1],
|
||||
initialBlendAmount,
|
||||
targetBlendAmount,
|
||||
gTasks[taskId].data[5]);
|
||||
--gTasks[taskId].data[2];
|
||||
gTasks[taskId].data[8] ^= 1;
|
||||
u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].tPalTag);
|
||||
BeginNormalPaletteFade(
|
||||
1 << (paletteIndex + 16),
|
||||
gTasks[taskId].tDelay,
|
||||
startBlendAmount,
|
||||
targetBlendAmount,
|
||||
gTasks[taskId].tBlendColor);
|
||||
|
||||
gTasks[taskId].tNumBlends--;
|
||||
gTasks[taskId].tRestoreBlend ^= 1;
|
||||
}
|
||||
|
||||
static void sub_80B9F04(u8 taskId)
|
||||
static void AnimTask_BlendColorCycleByTagLoop(u8 taskId)
|
||||
{
|
||||
u8 initialBlendAmount, targetBlendAmount;
|
||||
|
||||
u8 startBlendAmount, targetBlendAmount;
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (gTasks[taskId].data[2] > 0)
|
||||
if (gTasks[taskId].tNumBlends > 0)
|
||||
{
|
||||
if (gTasks[taskId].data[8] == 0)
|
||||
if (!gTasks[taskId].tRestoreBlend)
|
||||
{
|
||||
initialBlendAmount = gTasks[taskId].data[3];
|
||||
targetBlendAmount = gTasks[taskId].data[4];
|
||||
// Blend to designated color
|
||||
startBlendAmount = gTasks[taskId].tInitialBlendY;
|
||||
targetBlendAmount = gTasks[taskId].tTargetBlendY;
|
||||
}
|
||||
else
|
||||
{
|
||||
initialBlendAmount = gTasks[taskId].data[4];
|
||||
targetBlendAmount = gTasks[taskId].data[3];
|
||||
// Blend back to original color
|
||||
startBlendAmount = gTasks[taskId].tTargetBlendY;
|
||||
targetBlendAmount = gTasks[taskId].tInitialBlendY;
|
||||
}
|
||||
|
||||
if (gTasks[taskId].data[2] == 1)
|
||||
if (gTasks[taskId].tNumBlends == 1)
|
||||
targetBlendAmount = 0;
|
||||
sub_80B9EA8(taskId, initialBlendAmount, targetBlendAmount);
|
||||
|
||||
BlendColorCycleByTag(taskId, startBlendAmount, targetBlendAmount);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -585,6 +616,18 @@ static void sub_80B9F04(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
#undef tPalSelector
|
||||
#undef tPalTag
|
||||
#undef tDelay
|
||||
#undef tNumBlends
|
||||
#undef tInitialBlendY
|
||||
#undef tTargetBlendY
|
||||
#undef tBlendColor
|
||||
#undef tRestoreBlend
|
||||
#undef tPalSelectorHi
|
||||
#undef tPalSelectorLo
|
||||
|
||||
// Flashes the specified anim tag with given color. Used e.g. to flash the particles red in Hyper Beam
|
||||
void AnimTask_FlashAnimTagWithColor(u8 taskId)
|
||||
{
|
||||
u8 paletteIndex;
|
||||
@@ -603,10 +646,10 @@ void AnimTask_FlashAnimTagWithColor(u8 taskId)
|
||||
gBattleAnimArgs[4],
|
||||
gBattleAnimArgs[4],
|
||||
gBattleAnimArgs[3]);
|
||||
gTasks[taskId].func = sub_80B9FD8;
|
||||
gTasks[taskId].func = AnimTask_FlashAnimTagWithColor_Step1;
|
||||
}
|
||||
|
||||
static void sub_80B9FD8(u8 taskId)
|
||||
static void AnimTask_FlashAnimTagWithColor_Step1(u8 taskId)
|
||||
{
|
||||
u32 selectedPalettes;
|
||||
|
||||
@@ -619,7 +662,7 @@ static void sub_80B9FD8(u8 taskId)
|
||||
return;
|
||||
if (gTasks[taskId].data[2] == 0)
|
||||
{
|
||||
gTasks[taskId].func = sub_80BA090;
|
||||
gTasks[taskId].func = AnimTask_FlashAnimTagWithColor_Step2;
|
||||
return;
|
||||
}
|
||||
selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16);
|
||||
@@ -640,7 +683,7 @@ static void sub_80B9FD8(u8 taskId)
|
||||
--gTasks[taskId].data[2];
|
||||
}
|
||||
|
||||
static void sub_80BA090(u8 taskId)
|
||||
static void AnimTask_FlashAnimTagWithColor_Step2(u8 taskId)
|
||||
{
|
||||
u32 selectedPalettes;
|
||||
|
||||
@@ -659,7 +702,7 @@ void AnimTask_InvertScreenColor(u8 taskId)
|
||||
u8 targetBattler = gBattleAnimTarget;
|
||||
|
||||
if (gBattleAnimArgs[0] & 0x100)
|
||||
selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0);
|
||||
selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
|
||||
if (gBattleAnimArgs[1] & 0x100)
|
||||
selectedPalettes |= (0x10000 << attackerBattler);
|
||||
if (gBattleAnimArgs[2] & 0x100)
|
||||
@@ -668,8 +711,16 @@ void AnimTask_InvertScreenColor(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_80BA16C(u8 taskId)
|
||||
// Unused
|
||||
#define tTimer data[0]
|
||||
#define tLength data[1]
|
||||
#define tFlagsScenery data[2]
|
||||
#define tFlagsAttacker data[3]
|
||||
#define tFlagsTarget data[4]
|
||||
#define tColorR data[5]
|
||||
#define tColorG data[6]
|
||||
#define tColorB data[7]
|
||||
static void AnimTask_TintPalettes(u8 taskId)
|
||||
{
|
||||
u8 attackerBattler;
|
||||
u8 targetBattler;
|
||||
@@ -708,6 +759,15 @@ static void sub_80BA16C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
#undef tTimer
|
||||
#undef tLength
|
||||
#undef tFlagsScenery
|
||||
#undef tFlagsAttacker
|
||||
#undef tFlagsTarget
|
||||
#undef tColorR
|
||||
#undef tColorG
|
||||
#undef tColorB
|
||||
|
||||
static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite)
|
||||
{
|
||||
u16 var0;
|
||||
@@ -737,11 +797,11 @@ static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite)
|
||||
sprite->data[5] = gBattleAnimArgs[3];
|
||||
var0 = sprite->data[5] - 2;
|
||||
if (var0 < 2)
|
||||
sub_80BA3CC();
|
||||
sprite->callback = sub_80BA320;
|
||||
AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled();
|
||||
sprite->callback = AnimShakeMonOrBattleTerrain_Step;
|
||||
}
|
||||
|
||||
static void sub_80BA320(struct Sprite *sprite)
|
||||
static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite)
|
||||
{
|
||||
u8 i;
|
||||
u16 var0;
|
||||
@@ -766,58 +826,70 @@ static void sub_80BA320(struct Sprite *sprite)
|
||||
var0 = sprite->data[5] - 2;
|
||||
if (var0 < 2)
|
||||
for (i = 0; i < gBattlersCount; ++i)
|
||||
gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0;
|
||||
gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = FALSE;
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80BA3CC(void)
|
||||
static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void)
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = FALSE;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = FALSE;
|
||||
if (gBattleAnimArgs[4] == 2)
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = TRUE;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleAnimArgs[4] == 0)
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = TRUE;
|
||||
else
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// Task data for AnimTask_ShakeBattleTerrain
|
||||
#define tXOffset data[0]
|
||||
#define tYOffset data[1]
|
||||
#define tNumShakes data[2]
|
||||
#define tTimer data[3]
|
||||
#define tShakeDelay data[8]
|
||||
|
||||
// Can shake battle terrain back and forth on the X or down and back to original pos on Y (cant shake up from orig pos)
|
||||
// arg0: x offset of shake
|
||||
// arg1: y offset of shake
|
||||
// arg2: number of shakes
|
||||
// arg3: time between shakes
|
||||
void AnimTask_ShakeBattleTerrain(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[8] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].tXOffset = gBattleAnimArgs[0];
|
||||
gTasks[taskId].tYOffset = gBattleAnimArgs[1];
|
||||
gTasks[taskId].tNumShakes = gBattleAnimArgs[2];
|
||||
gTasks[taskId].tTimer = gBattleAnimArgs[3];
|
||||
gTasks[taskId].tShakeDelay = gBattleAnimArgs[3];
|
||||
gBattle_BG3_X = gBattleAnimArgs[0];
|
||||
gBattle_BG3_Y = gBattleAnimArgs[1];
|
||||
gTasks[taskId].func = sub_80BA4D0;
|
||||
gTasks[taskId].func = AnimTask_ShakeBattleTerrain_Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80BA4D0(u8 taskId)
|
||||
static void AnimTask_ShakeBattleTerrain_Step(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
if (gTasks[taskId].tTimer == 0)
|
||||
{
|
||||
if (gBattle_BG3_X == gTasks[taskId].data[0])
|
||||
gBattle_BG3_X = -gTasks[taskId].data[0];
|
||||
if (gBattle_BG3_X == gTasks[taskId].tXOffset)
|
||||
gBattle_BG3_X = -gTasks[taskId].tXOffset;
|
||||
else
|
||||
gBattle_BG3_X = gTasks[taskId].data[0];
|
||||
gBattle_BG3_X = gTasks[taskId].tXOffset;
|
||||
|
||||
if (gBattle_BG3_Y == -gTasks[taskId].data[1])
|
||||
if (gBattle_BG3_Y == -gTasks[taskId].tYOffset)
|
||||
gBattle_BG3_Y = 0;
|
||||
else
|
||||
gBattle_BG3_Y = -gTasks[taskId].data[1];
|
||||
gBattle_BG3_Y = -gTasks[taskId].tYOffset;
|
||||
|
||||
gTasks[taskId].data[3] = gTasks[taskId].data[8];
|
||||
if (--gTasks[taskId].data[2] == 0)
|
||||
gTasks[taskId].tTimer = gTasks[taskId].tShakeDelay;
|
||||
if (--gTasks[taskId].tNumShakes == 0)
|
||||
{
|
||||
gBattle_BG3_X = 0;
|
||||
gBattle_BG3_Y = 0;
|
||||
@@ -826,26 +898,33 @@ static void sub_80BA4D0(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
--gTasks[taskId].data[3];
|
||||
gTasks[taskId].tTimer--;
|
||||
}
|
||||
}
|
||||
|
||||
#undef tXOffset
|
||||
#undef tYOffset
|
||||
#undef tNumShakes
|
||||
#undef tTimer
|
||||
#undef tShakeDelay
|
||||
|
||||
static void AnimHitSplatBasic(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
// Same as basic hit splat but takes a length of time to persist for (arg4)
|
||||
static void AnimHitSplatPersistent(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
@@ -853,6 +932,8 @@ static void AnimHitSplatPersistent(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSpriteAfterTimer);
|
||||
}
|
||||
|
||||
// For paired hit splats whose position is inverted when used by the opponent on the player.
|
||||
// Used by Twineedle and Spike Cannon
|
||||
static void AnimHitSplatHandleInvert(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest())
|
||||
@@ -865,8 +946,8 @@ static void AnimHitSplatRandom(struct Sprite *sprite)
|
||||
if (gBattleAnimArgs[1] == -1)
|
||||
gBattleAnimArgs[1] = Random() & 3;
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]);
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
InitSpritePosToAnimAttacker(sprite, 0);
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
InitSpritePosToAnimAttacker(sprite, FALSE);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
sprite->x2 += (Random() % 48) - 24;
|
||||
@@ -889,8 +970,8 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite)
|
||||
|
||||
static void AnimCrossImpact(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
@@ -901,14 +982,14 @@ static void AnimCrossImpact(struct Sprite *sprite)
|
||||
static void AnimFlashingHitSplat(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->callback = sub_80BA7BC;
|
||||
sprite->callback = AnimFlashingHitSplat_Step;
|
||||
}
|
||||
|
||||
static void sub_80BA7BC(struct Sprite *sprite)
|
||||
static void AnimFlashingHitSplat_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible ^= 1;
|
||||
if (sprite->data[0]++ > 12)
|
||||
@@ -7,10 +7,10 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite);
|
||||
static void AnimSludgeBombHitParticle(struct Sprite *sprite);
|
||||
static void AnimAcidPoisonDroplet(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 void AnimSludgeProjectile_Step(struct Sprite *sprite);
|
||||
static void AnimAcidPoisonBubble_Step(struct Sprite *sprite);
|
||||
static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite);
|
||||
static void AnimBubbleEffect_Step(struct Sprite *sprite);
|
||||
|
||||
static const union AnimCmd sAnim_ToxicBubble[] =
|
||||
{
|
||||
@@ -190,14 +190,14 @@ static void AnimSludgeProjectile(struct Sprite *sprite)
|
||||
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[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[5] = -30;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = sub_80B1684;
|
||||
sprite->callback = AnimSludgeProjectile_Step;
|
||||
}
|
||||
|
||||
static void sub_80B1684(struct Sprite *sprite)
|
||||
static void AnimSludgeProjectile_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -218,10 +218,10 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite)
|
||||
sprite->data[4] = l2 + gBattleAnimArgs[5];
|
||||
sprite->data[5] = -30;
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = sub_80B1728;
|
||||
sprite->callback = AnimAcidPoisonBubble_Step;
|
||||
}
|
||||
|
||||
static void sub_80B1728(struct Sprite *sprite)
|
||||
static void AnimAcidPoisonBubble_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -237,10 +237,10 @@ static void AnimSludgeBombHitParticle(struct Sprite *sprite)
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2];
|
||||
sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2];
|
||||
sprite->callback = sub_80B1798;
|
||||
sprite->callback = AnimSludgeBombHitParticle_Step;
|
||||
}
|
||||
|
||||
static void sub_80B1798(struct Sprite *sprite)
|
||||
static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite)
|
||||
{
|
||||
TranslateSpriteLinearFixedPoint(sprite);
|
||||
sprite->data[1] -= sprite->data[5];
|
||||
@@ -284,10 +284,10 @@ static void AnimBubbleEffect(struct Sprite *sprite)
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
sprite->callback = AnimBubbleEffectStep;
|
||||
sprite->callback = AnimBubbleEffect_Step;
|
||||
}
|
||||
|
||||
static void AnimBubbleEffectStep(struct Sprite *sprite)
|
||||
static void AnimBubbleEffect_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
|
||||
sprite->x2 = Sin(sprite->data[0], 4);
|
||||
@@ -12,18 +12,18 @@ static void AnimQuestionMark(struct Sprite *sprite);
|
||||
static void AnimRedX(struct Sprite *sprite);
|
||||
static void AnimSkillSwapOrb(struct Sprite *sprite);
|
||||
static void AnimPsychoBoost(struct Sprite *sprite);
|
||||
static void sub_80B300C(struct Sprite *sprite);
|
||||
static void sub_80B3044(struct Sprite *sprite);
|
||||
static void sub_80B30B0(struct Sprite *sprite);
|
||||
static void sub_80B3168(struct Sprite *sprite);
|
||||
static void sub_80B3384(struct Sprite *sprite);
|
||||
static void sub_80B33B8(struct Sprite *sprite);
|
||||
static void sub_80B3454(u8 taskId);
|
||||
static void sub_80B34DC(u8 taskId);
|
||||
static void sub_80B3618(u8 taskId);
|
||||
static void sub_80B3980(u8 taskId);
|
||||
static void sub_80B3B78(u8 taskId);
|
||||
static void sub_80B3D78(u8 taskId);
|
||||
static void AnimDefensiveWall_Step2(struct Sprite *sprite);
|
||||
static void AnimDefensiveWall_Step3(struct Sprite *sprite);
|
||||
static void AnimDefensiveWall_Step4(struct Sprite *sprite);
|
||||
static void AnimDefensiveWall_Step5(struct Sprite *sprite);
|
||||
static void AnimQuestionMark_Step1(struct Sprite *sprite);
|
||||
static void AnimQuestionMark_Step2(struct Sprite *sprite);
|
||||
static void AnimTask_MeditateStretchAttacker_Step(u8 taskId);
|
||||
static void AnimTask_Teleport_Step(u8 taskId);
|
||||
static void AnimTask_ImprisonOrbs_Step(u8 taskId);
|
||||
static void AnimTask_SkillSwap_Step(u8 taskId);
|
||||
static void AnimTask_ExtrasensoryDistortion_Step(u8 taskId);
|
||||
static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId);
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_PsychUpSpiral[] =
|
||||
{
|
||||
@@ -415,6 +415,7 @@ const struct SpriteTemplate gPsychoBoostOrbSpriteTemplate =
|
||||
.callback = AnimPsychoBoost,
|
||||
};
|
||||
|
||||
// For the rectangular wall sprite used by Reflect, Mirror Coat, etc
|
||||
static void AnimDefensiveWall(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest())
|
||||
@@ -459,20 +460,22 @@ static void AnimDefensiveWall(struct Sprite *sprite)
|
||||
if (IsContest())
|
||||
sprite->y += 9;
|
||||
sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16;
|
||||
sprite->callback = sub_80B300C;
|
||||
sub_80B300C(sprite);
|
||||
sprite->callback = AnimDefensiveWall_Step2;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B300C(struct Sprite *sprite)
|
||||
// AnimDefensiveWall_Step1 is removed in FRLG from the removal of Contest handling
|
||||
|
||||
static void AnimDefensiveWall_Step2(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3]));
|
||||
if (sprite->data[3] == 13)
|
||||
sprite->callback = sub_80B3044;
|
||||
sprite->callback = AnimDefensiveWall_Step3;
|
||||
else
|
||||
++sprite->data[3];
|
||||
}
|
||||
|
||||
static void sub_80B3044(struct Sprite *sprite)
|
||||
static void AnimDefensiveWall_Step3(struct Sprite *sprite)
|
||||
{
|
||||
u16 color;
|
||||
u16 startOffset;
|
||||
@@ -487,11 +490,11 @@ static void sub_80B3044(struct Sprite *sprite)
|
||||
gPlttBufferFaded[startOffset + i] = gPlttBufferFaded[startOffset + i - 1];
|
||||
gPlttBufferFaded[startOffset + 1] = color;
|
||||
if (++sprite->data[2] == 16)
|
||||
sprite->callback = sub_80B30B0;
|
||||
sprite->callback = AnimDefensiveWall_Step4;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B30B0(struct Sprite *sprite)
|
||||
static void AnimDefensiveWall_Step4(struct Sprite *sprite)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3]));
|
||||
if (--sprite->data[3] == -1)
|
||||
@@ -508,11 +511,11 @@ static void sub_80B30B0(struct Sprite *sprite)
|
||||
gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
|
||||
}
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = sub_80B3168;
|
||||
sprite->callback = AnimDefensiveWall_Step5;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B3168(struct Sprite *sprite)
|
||||
static void AnimDefensiveWall_Step5(struct Sprite *sprite)
|
||||
{
|
||||
if (!IsContest())
|
||||
{
|
||||
@@ -531,13 +534,14 @@ static void sub_80B3168(struct Sprite *sprite)
|
||||
sprite->callback = DestroyAnimSprite;
|
||||
}
|
||||
|
||||
// Animates the sparkle that appears during Reflect or Light Screen/Mirror Coat
|
||||
static void AnimWallSparkle(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
int arg3 = gBattleAnimArgs[3];
|
||||
bool32 ignoreOffsets = gBattleAnimArgs[3];
|
||||
bool8 respectMonPicOffsets = FALSE;
|
||||
if (arg3 == 0)
|
||||
if (!ignoreOffsets)
|
||||
respectMonPicOffsets = TRUE;
|
||||
if (!IsContest() && IsDoubleBattle())
|
||||
{
|
||||
@@ -589,6 +593,7 @@ static void AnimBentSpoon(struct Sprite *sprite)
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
}
|
||||
|
||||
// Used by Amnesia
|
||||
static void AnimQuestionMark(struct Sprite *sprite)
|
||||
{
|
||||
s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2;
|
||||
@@ -596,24 +601,24 @@ static void AnimQuestionMark(struct Sprite *sprite)
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
|
||||
x = -x;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + x;
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + y;
|
||||
if (sprite->y < 16)
|
||||
sprite->y = 16;
|
||||
StoreSpriteCallbackInData6(sprite, sub_80B3384);
|
||||
StoreSpriteCallbackInData6(sprite, AnimQuestionMark_Step1);
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
}
|
||||
|
||||
static void sub_80B3384(struct Sprite *sprite)
|
||||
static void AnimQuestionMark_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
sprite->affineAnims = sAffineAnims_QuestionMark;
|
||||
sprite->data[0] = 0;
|
||||
InitSpriteAffineAnim(sprite);
|
||||
sprite->callback = sub_80B33B8;
|
||||
sprite->callback = AnimQuestionMark_Step2;
|
||||
}
|
||||
|
||||
static void sub_80B33B8(struct Sprite *sprite)
|
||||
static void AnimQuestionMark_Step2(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
@@ -640,10 +645,10 @@ void AnimTask_MeditateStretchAttacker(u8 taskId)
|
||||
|
||||
task->data[0] = spriteId;
|
||||
PrepareAffineAnimInTaskData(task, spriteId, sAffineAnim_MeditateStretchAttacker);
|
||||
task->func = sub_80B3454;
|
||||
task->func = AnimTask_MeditateStretchAttacker_Step;
|
||||
}
|
||||
|
||||
static void sub_80B3454(u8 taskId)
|
||||
static void AnimTask_MeditateStretchAttacker_Step(u8 taskId)
|
||||
{
|
||||
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -659,10 +664,10 @@ void AnimTask_Teleport(u8 taskId)
|
||||
task->data[2] = 0;
|
||||
task->data[3] = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 4 : 8;
|
||||
PrepareAffineAnimInTaskData(task, task->data[0], sAffineAnim_Teleport);
|
||||
task->func = sub_80B34DC;
|
||||
task->func = AnimTask_Teleport_Step;
|
||||
}
|
||||
|
||||
static void sub_80B34DC(u8 taskId)
|
||||
static void AnimTask_Teleport_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -682,7 +687,7 @@ static void sub_80B34DC(u8 taskId)
|
||||
else
|
||||
{
|
||||
gSprites[task->data[0]].invisible = TRUE;
|
||||
gSprites[task->data[0]].x = 272;
|
||||
gSprites[task->data[0]].x = DISPLAY_WIDTH + 32;
|
||||
ResetSpriteRotScale(task->data[0]);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
@@ -704,10 +709,10 @@ void AnimTask_ImprisonOrbs(u8 taskId)
|
||||
task->data[12] = var0 > var1 ? var0 : var1;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
|
||||
task->func = sub_80B3618;
|
||||
task->func = AnimTask_ImprisonOrbs_Step;
|
||||
}
|
||||
|
||||
static void sub_80B3618(u8 taskId)
|
||||
static void AnimTask_ImprisonOrbs_Step(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
u8 spriteId;
|
||||
@@ -757,7 +762,7 @@ static void sub_80B3618(u8 taskId)
|
||||
if (++task->data[1] == 32)
|
||||
{
|
||||
for (i = 8; i < 13; ++i)
|
||||
if (task->data[i] != 64)
|
||||
if (task->data[i] != MAX_SPRITES)
|
||||
DestroySprite(&gSprites[task->data[i]]);
|
||||
++task->data[0];
|
||||
}
|
||||
@@ -773,7 +778,7 @@ static void sub_80B3618(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B37A4(struct Sprite *sprite)
|
||||
static void AnimRedX_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[1] > sprite->data[0] - 10)
|
||||
sprite->invisible = sprite->data[1] & 1;
|
||||
@@ -790,7 +795,7 @@ static void AnimRedX(struct Sprite *sprite)
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
sprite->data[0] = gBattleAnimArgs[1];
|
||||
sprite->callback = sub_80B37A4;
|
||||
sprite->callback = AnimRedX_Step;
|
||||
}
|
||||
|
||||
void AnimTask_SkillSwap(u8 taskId)
|
||||
@@ -799,7 +804,7 @@ void AnimTask_SkillSwap(u8 taskId)
|
||||
|
||||
if (IsContest())
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 1)
|
||||
if (gBattleAnimArgs[0] == ANIM_TARGET)
|
||||
{
|
||||
task->data[10] = -10;
|
||||
task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_RIGHT) - 8;
|
||||
@@ -836,10 +841,10 @@ void AnimTask_SkillSwap(u8 taskId)
|
||||
}
|
||||
}
|
||||
task->data[1] = 6;
|
||||
task->func = sub_80B3980;
|
||||
task->func = AnimTask_SkillSwap_Step;
|
||||
}
|
||||
|
||||
static void sub_80B3980(u8 taskId)
|
||||
static void AnimTask_SkillSwap_Step(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -881,6 +886,8 @@ static void AnimSkillSwapOrb(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// The scanline effect that distorts the target during Extrasensory by segmenting the mon vertically and shifting the slices
|
||||
// arg0: Stage. Stage 0 is a slight right distortion, 1 is a medium left distortion, and 2 is a severe right distortion
|
||||
void AnimTask_ExtrasensoryDistortion(u8 taskId)
|
||||
{
|
||||
s16 i;
|
||||
@@ -932,10 +939,10 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId)
|
||||
scanlineParams.initState = 1;
|
||||
scanlineParams.unused9 = 0;
|
||||
ScanlineEffect_SetParams(scanlineParams);
|
||||
task->func = sub_80B3B78;
|
||||
task->func = AnimTask_ExtrasensoryDistortion_Step;
|
||||
}
|
||||
|
||||
static void sub_80B3B78(u8 taskId)
|
||||
static void AnimTask_ExtrasensoryDistortion_Step(u8 taskId)
|
||||
{
|
||||
s16 sineIndex, i;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -969,6 +976,8 @@ static void sub_80B3B78(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Creates a cloned transparent sprite of the battler that grows and then shrinks back to original size. Used by Extrasensory
|
||||
// arg0: battler
|
||||
void AnimTask_TransparentCloneGrowAndShrink(u8 taskId)
|
||||
{
|
||||
s16 spriteId;
|
||||
@@ -998,10 +1007,10 @@ void AnimTask_TransparentCloneGrowAndShrink(u8 taskId)
|
||||
task->data[13] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
task->data[14] = matrixNum;
|
||||
task->data[15] = spriteId;
|
||||
task->func = sub_80B3D78;
|
||||
task->func = AnimTask_TransparentCloneGrowAndShrink_Step;
|
||||
}
|
||||
|
||||
static void sub_80B3D78(u8 taskId)
|
||||
static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -1024,7 +1033,7 @@ static void sub_80B3D78(u8 taskId)
|
||||
++task->data[0];
|
||||
break;
|
||||
case 2:
|
||||
obj_delete_but_dont_free_vram(&gSprites[task->data[15]]);
|
||||
DestroySpriteWithActiveSheet(&gSprites[task->data[15]]);
|
||||
++task->data[0];
|
||||
break;
|
||||
case 3:
|
||||
@@ -8,21 +8,21 @@
|
||||
|
||||
static void AnimFallingRock(struct Sprite *sprite);
|
||||
static void AnimRockFragment(struct Sprite *sprite);
|
||||
static void AnimDirtParticleAcrossScreen(struct Sprite *sprite);
|
||||
static void AnimFlyingSandCrescent(struct Sprite *sprite);
|
||||
static void AnimRaiseSprite(struct Sprite *sprite);
|
||||
static void sub_80B4D00(u8 taskId);
|
||||
static void AnimTask_Rollout_Step(u8 taskId);
|
||||
static void AnimRolloutParticle(struct Sprite *sprite);
|
||||
static void AnimRockTomb(struct Sprite *sprite);
|
||||
static void AnimRockBlastRock(struct Sprite *sprite);
|
||||
static void AnimRockScatter(struct Sprite *sprite);
|
||||
static void AnimParticleInVortex(struct Sprite *sprite);
|
||||
static void sub_80B46B4(struct Sprite *sprite);
|
||||
static void sub_80B47C4(struct Sprite *sprite);
|
||||
static void sub_80B490C(u8 taskId);
|
||||
static void sub_80B4E70(struct Task *task);
|
||||
static u8 sub_80B4FB8(void);
|
||||
static void sub_80B5024(struct Sprite *sprite);
|
||||
static void sub_80B50F8(struct Sprite *sprite);
|
||||
static void AnimFallingRock_Step(struct Sprite *sprite);
|
||||
static void AnimParticleInVortex_Step(struct Sprite *sprite);
|
||||
static void AnimTask_LoadSandstormBackground_Step(u8 taskId);
|
||||
static void CreateRolloutDirtSprite(struct Task *task);
|
||||
static u8 GetRolloutCounter(void);
|
||||
static void AnimRockTomb_Step(struct Sprite *sprite);
|
||||
static void AnimRockScatter_Step(struct Sprite *sprite);
|
||||
|
||||
static const union AnimCmd sAnim_FlyingRock_0[] =
|
||||
{
|
||||
@@ -125,7 +125,7 @@ const struct SpriteTemplate gFlyingSandCrescentSpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimDirtParticleAcrossScreen,
|
||||
.callback = AnimFlyingSandCrescent,
|
||||
};
|
||||
|
||||
static const struct Subsprite sFlyingSandSubsprites[] =
|
||||
@@ -133,16 +133,16 @@ static const struct Subsprite sFlyingSandSubsprites[] =
|
||||
{
|
||||
.x = -16,
|
||||
.y = 0,
|
||||
.shape = ST_OAM_H_RECTANGLE,
|
||||
.size = 2,
|
||||
.shape = SPRITE_SHAPE(32x16),
|
||||
.size = SPRITE_SIZE(32x16),
|
||||
.tileOffset = 0,
|
||||
.priority = 1,
|
||||
},
|
||||
{
|
||||
.x = 16,
|
||||
.y = 0,
|
||||
.shape = ST_OAM_H_RECTANGLE,
|
||||
.size = 2,
|
||||
.shape = SPRITE_SHAPE(32x16),
|
||||
.size = SPRITE_SIZE(32x16),
|
||||
.tileOffset = 8,
|
||||
.priority = 1,
|
||||
},
|
||||
@@ -153,37 +153,37 @@ static const struct SubspriteTable sFlyingSandSubspriteTable[] =
|
||||
{ NELEMS(sFlyingSandSubsprites), sFlyingSandSubsprites },
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_BasicRock_0[] =
|
||||
static const union AnimCmd sAnim_Rock_Biggest[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_BasicRock_1[] =
|
||||
static const union AnimCmd sAnim_Rock_Bigger[] =
|
||||
{
|
||||
ANIMCMD_FRAME(16, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_WeatherBallRockDown_0[] =
|
||||
static const union AnimCmd sAnim_Rock_Big[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_WeatherBallRockDown_1[] =
|
||||
static const union AnimCmd sAnim_Rock_Small[] =
|
||||
{
|
||||
ANIMCMD_FRAME(48, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_TwisterRock_0[] =
|
||||
static const union AnimCmd sAnim_Rock_Smaller[] =
|
||||
{
|
||||
ANIMCMD_FRAME(64, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_TwisterRock_1[] =
|
||||
static const union AnimCmd sAnim_Rock_Smallest[] =
|
||||
{
|
||||
ANIMCMD_FRAME(80, 1),
|
||||
ANIMCMD_END,
|
||||
@@ -191,20 +191,12 @@ static const union AnimCmd sAnim_TwisterRock_1[] =
|
||||
|
||||
static const union AnimCmd *const sAnims_BasicRock[] =
|
||||
{
|
||||
sAnim_BasicRock_0,
|
||||
sAnim_BasicRock_1,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_WeatherBallRockDown[] =
|
||||
{
|
||||
sAnim_WeatherBallRockDown_0,
|
||||
sAnim_WeatherBallRockDown_1,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_TwisterRock[] =
|
||||
{
|
||||
sAnim_TwisterRock_0,
|
||||
sAnim_TwisterRock_1,
|
||||
sAnim_Rock_Biggest,
|
||||
sAnim_Rock_Bigger,
|
||||
sAnim_Rock_Big,
|
||||
sAnim_Rock_Small,
|
||||
sAnim_Rock_Smaller,
|
||||
sAnim_Rock_Smallest,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gAncientPowerRockSpriteTemplate =
|
||||
@@ -229,7 +221,7 @@ const struct SpriteTemplate gRolloutMudSpriteTemplate =
|
||||
.callback = AnimRolloutParticle,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E74F0 =
|
||||
const struct SpriteTemplate gRolloutRockSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ROCKS,
|
||||
.paletteTag = ANIM_TAG_ROCKS,
|
||||
@@ -296,7 +288,7 @@ const struct SpriteTemplate gTwisterRockSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_ROCKS,
|
||||
.paletteTag = ANIM_TAG_ROCKS,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_TwisterRock,
|
||||
.anims = &sAnims_BasicRock[4],
|
||||
.images = NULL,
|
||||
.affineAnims = sAffineAnims_BasicRock,
|
||||
.callback = AnimMoveTwisterParticle,
|
||||
@@ -307,7 +299,7 @@ const struct SpriteTemplate gWeatherBallRockDownSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_ROCKS,
|
||||
.paletteTag = ANIM_TAG_ROCKS,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
|
||||
.anims = sAnims_WeatherBallRockDown,
|
||||
.anims = &sAnims_BasicRock[2],
|
||||
.images = NULL,
|
||||
.affineAnims = sAffineAnims_BasicRock,
|
||||
.callback = AnimWeatherBallDown,
|
||||
@@ -327,12 +319,12 @@ static void AnimFallingRock(struct Sprite *sprite)
|
||||
sprite->data[3] = 16;
|
||||
sprite->data[4] = -70;
|
||||
sprite->data[5] = gBattleAnimArgs[2];
|
||||
StoreSpriteCallbackInData6(sprite, sub_80B46B4);
|
||||
sprite->callback = TranslateSpriteInEllipseOverDuration;
|
||||
StoreSpriteCallbackInData6(sprite, AnimFallingRock_Step);
|
||||
sprite->callback = TranslateSpriteInEllipse;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_80B46B4(struct Sprite *sprite)
|
||||
static void AnimFallingRock_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x += sprite->data[5];
|
||||
sprite->data[0] = 192;
|
||||
@@ -341,10 +333,11 @@ static void sub_80B46B4(struct Sprite *sprite)
|
||||
sprite->data[3] = 32;
|
||||
sprite->data[4] = -24;
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = TranslateSpriteInEllipseOverDuration;
|
||||
sprite->callback = TranslateSpriteInEllipse;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
// Animates the rock particles that are shown on the impact for Rock Blast / Rock Smash
|
||||
static void AnimRockFragment(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[5]);
|
||||
@@ -366,6 +359,7 @@ static void AnimRockFragment(struct Sprite *sprite)
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
}
|
||||
|
||||
// Swirls particle in vortex. Used for moves like Fire Spin or Sand Tomb
|
||||
static void AnimParticleInVortex(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[6] == 0)
|
||||
@@ -376,10 +370,10 @@ static void AnimParticleInVortex(struct Sprite *sprite)
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
sprite->data[3] = gBattleAnimArgs[5];
|
||||
sprite->callback = sub_80B47C4;
|
||||
sprite->callback = AnimParticleInVortex_Step;
|
||||
}
|
||||
|
||||
static void sub_80B47C4(struct Sprite *sprite)
|
||||
static void AnimParticleInVortex_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->y2 = -(sprite->data[4] >> 8);
|
||||
@@ -416,10 +410,10 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
|
||||
if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
var0 = 1;
|
||||
gTasks[taskId].data[0] = var0;
|
||||
gTasks[taskId].func = sub_80B490C;
|
||||
gTasks[taskId].func = AnimTask_LoadSandstormBackground_Step;
|
||||
}
|
||||
|
||||
static void sub_80B490C(u8 taskId)
|
||||
static void AnimTask_LoadSandstormBackground_Step(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
|
||||
@@ -487,7 +481,7 @@ static void sub_80B490C(u8 taskId)
|
||||
// arg 1: projectile speed
|
||||
// arg 2: y pixel drop
|
||||
// arg 3: ??? unknown (possibly a color bit)
|
||||
static void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
|
||||
static void AnimFlyingSandCrescent(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
@@ -518,7 +512,7 @@ static void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
|
||||
sprite->data[4] &= 0xFF;
|
||||
if (sprite->data[5] == 0)
|
||||
{
|
||||
if (sprite->x + sprite->x2 > 272)
|
||||
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 32)
|
||||
{
|
||||
sprite->callback = DestroyAnimSprite;
|
||||
}
|
||||
@@ -550,23 +544,23 @@ static void AnimRaiseSprite(struct Sprite *sprite)
|
||||
void AnimTask_Rollout(u8 taskId)
|
||||
{
|
||||
u16 var0, var1, var2, var3;
|
||||
u8 var4;
|
||||
u8 rolloutCounter;
|
||||
s32 var5;
|
||||
s16 pan1, pan2;
|
||||
struct Task *task;
|
||||
|
||||
task = &gTasks[taskId];
|
||||
var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24;
|
||||
var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24;
|
||||
var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 24;
|
||||
var2 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
var3 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 24;
|
||||
if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget)
|
||||
var3 = var1;
|
||||
var4 = sub_80B4FB8();
|
||||
if (var4 == 1)
|
||||
rolloutCounter = GetRolloutCounter();
|
||||
if (rolloutCounter == 1)
|
||||
task->data[8] = 32;
|
||||
else
|
||||
task->data[8] = 48 - (var4 * 8);
|
||||
task->data[8] = 48 - (rolloutCounter * 8);
|
||||
task->data[0] = 0;
|
||||
task->data[11] = 0;
|
||||
task->data[9] = 0;
|
||||
@@ -585,12 +579,12 @@ void AnimTask_Rollout(u8 taskId)
|
||||
pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
|
||||
task->data[13] = pan1;
|
||||
task->data[14] = (pan2 - pan1) / task->data[8];
|
||||
task->data[1] = var4;
|
||||
task->data[1] = rolloutCounter;
|
||||
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
task->func = sub_80B4D00;
|
||||
task->func = AnimTask_Rollout_Step;
|
||||
}
|
||||
|
||||
static void sub_80B4D00(u8 taskId)
|
||||
static void AnimTask_Rollout_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
|
||||
@@ -634,7 +628,7 @@ static void sub_80B4D00(u8 taskId)
|
||||
if (++task->data[9] >= task->data[10])
|
||||
{
|
||||
task->data[9] = 0;
|
||||
sub_80B4E70(task);
|
||||
CreateRolloutDirtSprite(task);
|
||||
task->data[13] += task->data[14];
|
||||
PlaySE12WithPanning(SE_M_DIG, task->data[13]);
|
||||
}
|
||||
@@ -650,10 +644,10 @@ static void sub_80B4D00(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B4E70(struct Task *task)
|
||||
static void CreateRolloutDirtSprite(struct Task *task)
|
||||
{
|
||||
const struct SpriteTemplate *spriteTemplate;
|
||||
s32 var0;
|
||||
s32 tileOffset;
|
||||
u16 x, y;
|
||||
u8 spriteId;
|
||||
|
||||
@@ -661,20 +655,20 @@ static void sub_80B4E70(struct Task *task)
|
||||
{
|
||||
case 1:
|
||||
spriteTemplate = &gRolloutMudSpriteTemplate;
|
||||
var0 = 0;
|
||||
tileOffset = 0;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
spriteTemplate = &gUnknown_83E74F0;
|
||||
var0 = 80;
|
||||
spriteTemplate = &gRolloutRockSpriteTemplate;
|
||||
tileOffset = 80;
|
||||
break;
|
||||
case 4:
|
||||
spriteTemplate = &gUnknown_83E74F0;
|
||||
var0 = 64;
|
||||
spriteTemplate = &gRolloutRockSpriteTemplate;
|
||||
tileOffset = 64;
|
||||
break;
|
||||
case 5:
|
||||
spriteTemplate = &gUnknown_83E74F0;
|
||||
var0 = 48;
|
||||
spriteTemplate = &gRolloutRockSpriteTemplate;
|
||||
tileOffset = 48;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
@@ -689,7 +683,7 @@ static void sub_80B4E70(struct Task *task)
|
||||
gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3);
|
||||
gSprites[spriteId].data[4] = y;
|
||||
gSprites[spriteId].data[5] = -16 - (task->data[1] * 2);
|
||||
gSprites[spriteId].oam.tileNum += var0;
|
||||
gSprites[spriteId].oam.tileNum += tileOffset;
|
||||
InitAnimArcTranslation(&gSprites[spriteId]);
|
||||
++task->data[11];
|
||||
}
|
||||
@@ -700,15 +694,15 @@ static void AnimRolloutParticle(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(sub_80B4D00);
|
||||
u8 taskId = FindTaskIdByFunc(AnimTask_Rollout_Step);
|
||||
|
||||
if (taskId != TAIL_SENTINEL)
|
||||
if (taskId != TASK_NONE)
|
||||
--gTasks[taskId].data[11];
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_80B4FB8(void)
|
||||
static u8 GetRolloutCounter(void)
|
||||
{
|
||||
u8 retVal = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer;
|
||||
u8 var0 = retVal - 1;
|
||||
@@ -726,11 +720,11 @@ static void AnimRockTomb(struct Sprite *sprite)
|
||||
sprite->data[3] -= gBattleAnimArgs[2];
|
||||
sprite->data[0] = 3;
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_80B5024;
|
||||
sprite->callback = AnimRockTomb_Step;
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
static void sub_80B5024(struct Sprite *sprite)
|
||||
static void AnimRockTomb_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
if (sprite->data[3] != 0)
|
||||
@@ -758,18 +752,18 @@ static void AnimRockBlastRock(struct Sprite *sprite)
|
||||
|
||||
static void AnimRockScatter(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[1] = gBattleAnimArgs[0];
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
sprite->data[5] = gBattleAnimArgs[2];
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
|
||||
sprite->callback = sub_80B50F8;
|
||||
sprite->callback = AnimRockScatter_Step;
|
||||
}
|
||||
|
||||
static void sub_80B50F8(struct Sprite *sprite)
|
||||
static void AnimRockScatter_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] += 8;
|
||||
sprite->data[3] += sprite->data[1];
|
||||
@@ -783,11 +777,11 @@ static void sub_80B50F8(struct Sprite *sprite)
|
||||
void AnimTask_GetSeismicTossDamageLevel(u8 taskId)
|
||||
{
|
||||
if (gAnimMoveDmg < 33)
|
||||
gBattleAnimArgs[7] = 0;
|
||||
gBattleAnimArgs[ARG_RET_ID] = 0;
|
||||
if ((u32)gAnimMoveDmg - 33 < 33)
|
||||
gBattleAnimArgs[7] = 1;
|
||||
gBattleAnimArgs[ARG_RET_ID] = 1;
|
||||
if (gAnimMoveDmg > 65)
|
||||
gBattleAnimArgs[7] = 2;
|
||||
gBattleAnimArgs[ARG_RET_ID] = 2;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,197 @@
|
||||
#include "global.h"
|
||||
#include "battle_gfx_sfx_util.h"
|
||||
#include "decompress.h"
|
||||
#include "graphics.h"
|
||||
#include "util.h"
|
||||
|
||||
#define TAG_SMOKESCREEN 55019
|
||||
|
||||
#define PALTAG_SHADOW 55039
|
||||
#define GFXTAG_SHADOW 55129
|
||||
|
||||
static void SpriteCB_SmokescreenImpactMain(struct Sprite *);
|
||||
static void SpriteCB_SmokescreenImpact(struct Sprite *);
|
||||
|
||||
static const struct CompressedSpriteSheet sSmokescreenImpactSpriteSheet =
|
||||
{
|
||||
.data = gSmokescreenImpactTiles, .size = 0x180, .tag = TAG_SMOKESCREEN
|
||||
};
|
||||
|
||||
static const struct CompressedSpritePalette sSmokescreenImpactSpritePalette =
|
||||
{
|
||||
.data = gSmokescreenImpactPalette, .tag = TAG_SMOKESCREEN
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_SmokescreenImpact =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = FALSE,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(16x16),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(16x16),
|
||||
.tileNum = 0,
|
||||
.priority = 1,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_SmokescreenImpact_0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(4, 4),
|
||||
ANIMCMD_FRAME(8, 4),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_SmokescreenImpact_1[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(4, 4, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(8, 4, .hFlip = TRUE),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_SmokescreenImpact_2[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4, .vFlip = TRUE),
|
||||
ANIMCMD_FRAME(4, 4, .vFlip = TRUE),
|
||||
ANIMCMD_FRAME(8, 4, .vFlip = TRUE),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_SmokescreenImpact_3[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4, .hFlip = TRUE, .vFlip = TRUE),
|
||||
ANIMCMD_FRAME(4, 4, .hFlip = TRUE, .vFlip = TRUE),
|
||||
ANIMCMD_FRAME(8, 4, .hFlip = TRUE, .vFlip = TRUE),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_SmokescreenImpact[] =
|
||||
{
|
||||
sAnim_SmokescreenImpact_0,
|
||||
sAnim_SmokescreenImpact_1,
|
||||
sAnim_SmokescreenImpact_2,
|
||||
sAnim_SmokescreenImpact_3,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sSmokescreenImpactSpriteTemplate =
|
||||
{
|
||||
.tileTag = TAG_SMOKESCREEN,
|
||||
.paletteTag = TAG_SMOKESCREEN,
|
||||
.oam = &sOamData_SmokescreenImpact,
|
||||
.anims = sAnims_SmokescreenImpact,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_SmokescreenImpact
|
||||
};
|
||||
|
||||
const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow =
|
||||
{
|
||||
.data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = GFXTAG_SHADOW
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_EnemyShadow =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = FALSE,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(32x8),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(32x8),
|
||||
.tileNum = 0,
|
||||
.priority = 3,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_EnemyShadow =
|
||||
{
|
||||
.tileTag = GFXTAG_SHADOW,
|
||||
.paletteTag = PALTAG_SHADOW,
|
||||
.oam = &sOamData_EnemyShadow,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_SetInvisible
|
||||
};
|
||||
|
||||
#define sActiveSprites data[0]
|
||||
#define sPersist data[1]
|
||||
|
||||
#define sMainSpriteId data[0]
|
||||
|
||||
u8 SmokescreenImpact(s16 x, s16 y, bool8 persist)
|
||||
{
|
||||
u8 mainSpriteId;
|
||||
u8 spriteId1, spriteId2, spriteId3, spriteId4;
|
||||
struct Sprite *mainSprite;
|
||||
|
||||
if (GetSpriteTileStartByTag(sSmokescreenImpactSpriteSheet.tag) == 0xFFFF)
|
||||
{
|
||||
LoadCompressedSpriteSheetUsingHeap(&sSmokescreenImpactSpriteSheet);
|
||||
LoadCompressedSpritePaletteUsingHeap(&sSmokescreenImpactSpritePalette);
|
||||
}
|
||||
|
||||
mainSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_SmokescreenImpactMain);
|
||||
mainSprite = &gSprites[mainSpriteId];
|
||||
mainSprite->sPersist = persist;
|
||||
|
||||
// Top left sprite
|
||||
spriteId1 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y - 16, 2);
|
||||
gSprites[spriteId1].sMainSpriteId = mainSpriteId;
|
||||
mainSprite->sActiveSprites++;
|
||||
AnimateSprite(&gSprites[spriteId1]);
|
||||
|
||||
// Top right sprite
|
||||
spriteId2 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y - 16, 2);
|
||||
gSprites[spriteId2].sMainSpriteId = mainSpriteId;
|
||||
mainSprite->sActiveSprites++;
|
||||
StartSpriteAnim(&gSprites[spriteId2], 1);
|
||||
AnimateSprite(&gSprites[spriteId2]);
|
||||
|
||||
// Bottom left sprite
|
||||
spriteId3 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y, 2);
|
||||
gSprites[spriteId3].sMainSpriteId = mainSpriteId;
|
||||
mainSprite->sActiveSprites++;
|
||||
StartSpriteAnim(&gSprites[spriteId3], 2);
|
||||
AnimateSprite(&gSprites[spriteId3]);
|
||||
|
||||
// Bottom right sprite
|
||||
spriteId4 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y, 2);
|
||||
gSprites[spriteId4].sMainSpriteId = mainSpriteId;
|
||||
mainSprite->sActiveSprites++;
|
||||
StartSpriteAnim(&gSprites[spriteId4], 3);
|
||||
AnimateSprite(&gSprites[spriteId4]);
|
||||
|
||||
return mainSpriteId;
|
||||
}
|
||||
|
||||
static void SpriteCB_SmokescreenImpactMain(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->sActiveSprites == 0)
|
||||
{
|
||||
FreeSpriteTilesByTag(sSmokescreenImpactSpriteSheet.tag);
|
||||
FreeSpritePaletteByTag(sSmokescreenImpactSpritePalette.tag);
|
||||
if (!sprite->sPersist)
|
||||
DestroySprite(sprite);
|
||||
else
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_SmokescreenImpact(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
gSprites[sprite->sMainSpriteId].sActiveSprites--;
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
@@ -6,14 +6,21 @@
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/sound.h"
|
||||
|
||||
static void sub_80DCE78(u8 taskId);
|
||||
static void sub_80DCEE4(u8 taskId);
|
||||
static void sub_80DCFE8(u8 taskId);
|
||||
static void sub_80DD270(u8 taskId);
|
||||
static void sub_80DD390(u8 taskId);
|
||||
static void sub_80DD4D4(u8 taskId);
|
||||
static void SoundTask_FireBlast_Step1(u8 taskId);
|
||||
static void SoundTask_FireBlast_Step2(u8 taskId);
|
||||
static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId);
|
||||
static void SoundTask_PlayDoubleCry_Step(u8 taskId);
|
||||
static void SoundTask_PlayCryWithEcho_Step(u8 taskId);
|
||||
static void SoundTask_AdjustPanningVar_Step(u8 taskId);
|
||||
|
||||
void sub_80DCE10(u8 taskId)
|
||||
// Loops the specified sound effect and pans from the
|
||||
// attacker to the target. The second specified sound effect
|
||||
// is played at the very end. This task is effectively
|
||||
// hardcoded to the move FIRE_BLAST due to the baked-in
|
||||
// durations.
|
||||
// arg 0: looped sound effect
|
||||
// arg 1: ending sound effect
|
||||
void SoundTask_FireBlast(u8 taskId)
|
||||
{
|
||||
s8 pan1, pan2, panIncrement;
|
||||
|
||||
@@ -26,10 +33,10 @@ void sub_80DCE10(u8 taskId)
|
||||
gTasks[taskId].data[3] = pan2;
|
||||
gTasks[taskId].data[4] = panIncrement;
|
||||
gTasks[taskId].data[10] = 10;
|
||||
gTasks[taskId].func = sub_80DCE78;
|
||||
gTasks[taskId].func = SoundTask_FireBlast_Step1;
|
||||
}
|
||||
|
||||
static void sub_80DCE78(u8 taskId)
|
||||
static void SoundTask_FireBlast_Step1(u8 taskId)
|
||||
{
|
||||
s16 pan = gTasks[taskId].data[2];
|
||||
s8 panIncrement = gTasks[taskId].data[4];
|
||||
@@ -38,7 +45,7 @@ static void sub_80DCE78(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[10] = 5;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
gTasks[taskId].func = sub_80DCEE4;
|
||||
gTasks[taskId].func = SoundTask_FireBlast_Step2;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -52,7 +59,7 @@ static void sub_80DCE78(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80DCEE4(u8 taskId)
|
||||
static void SoundTask_FireBlast_Step2(u8 taskId)
|
||||
{
|
||||
if (++gTasks[taskId].data[10] == 6)
|
||||
{
|
||||
@@ -88,11 +95,11 @@ void SoundTask_LoopSEAdjustPanning(u8 taskId)
|
||||
gTasks[taskId].data[10] = 0;
|
||||
gTasks[taskId].data[11] = sourcePan;
|
||||
gTasks[taskId].data[12] = r9;
|
||||
gTasks[taskId].func = sub_80DCFE8;
|
||||
sub_80DCFE8(taskId);
|
||||
gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80DCFE8(u8 taskId)
|
||||
static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6])
|
||||
{
|
||||
@@ -131,6 +138,7 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||
else
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
|
||||
// Check if battler is visible.
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
|
||||
&& !IsBattlerSpriteVisible(battlerId))
|
||||
@@ -182,7 +190,7 @@ void SoundTask_PlayDoubleCry(u8 taskId)
|
||||
PlayCry_ByMode(species, pan, CRY_MODE_GROWL_1);
|
||||
else // DOUBLE_CRY_ROAR
|
||||
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_1);
|
||||
gTasks[taskId].func = sub_80DD270;
|
||||
gTasks[taskId].func = SoundTask_PlayDoubleCry_Step;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -190,7 +198,7 @@ void SoundTask_PlayDoubleCry(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80DD270(u8 taskId)
|
||||
static void SoundTask_PlayDoubleCry_Step(u8 taskId)
|
||||
{
|
||||
u16 species = gTasks[taskId].data[1];
|
||||
s8 pan = gTasks[taskId].data[2];
|
||||
@@ -199,7 +207,7 @@ static void sub_80DD270(u8 taskId)
|
||||
{
|
||||
++gTasks[taskId].data[9];
|
||||
}
|
||||
else if (gTasks[taskId].data[0] == TAIL_SENTINEL)
|
||||
else if (gTasks[taskId].data[0] == DOUBLE_CRY_GROWL)
|
||||
{
|
||||
if (!IsCryPlaying())
|
||||
{
|
||||
@@ -207,10 +215,13 @@ static void sub_80DD270(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
else if (!IsCryPlaying())
|
||||
else // DOUBLE_CRY_ROAR
|
||||
{
|
||||
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
if (!IsCryPlaying())
|
||||
{
|
||||
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,19 +233,21 @@ void SoundTask_WaitForCry(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80DD334(u8 taskId)
|
||||
#define tSpecies data[1]
|
||||
#define tPan data[2]
|
||||
#define tState data[9]
|
||||
|
||||
void SoundTask_PlayCryWithEcho(u8 taskId)
|
||||
{
|
||||
u16 species;
|
||||
s8 pan;
|
||||
|
||||
pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
||||
s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
|
||||
species = gAnimBattlerSpecies[gBattleAnimAttacker];
|
||||
gTasks[taskId].data[1] = species;
|
||||
gTasks[taskId].data[2] = pan;
|
||||
gTasks[taskId].tSpecies = species;
|
||||
gTasks[taskId].tPan = pan;
|
||||
if (species != SPECIES_NONE)
|
||||
{
|
||||
PlayCry_ByMode(species, pan, CRY_MODE_ECHO_START);
|
||||
gTasks[taskId].func = sub_80DD390;
|
||||
gTasks[taskId].func = SoundTask_PlayCryWithEcho_Step;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -242,23 +255,27 @@ void sub_80DD334(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80DD390(u8 taskId)
|
||||
static void SoundTask_PlayCryWithEcho_Step(u8 taskId)
|
||||
{
|
||||
|
||||
if (gTasks[taskId].data[9] < 2)
|
||||
if (gTasks[taskId].tState < 2)
|
||||
{
|
||||
++gTasks[taskId].data[9];
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
else if (!IsCryPlaying())
|
||||
{
|
||||
u16 species = gTasks[taskId].data[1];
|
||||
s8 pan = gTasks[taskId].data[2];
|
||||
u16 species = gTasks[taskId].tSpecies;
|
||||
s8 pan = gTasks[taskId].tPan;
|
||||
|
||||
PlayCry_ByMode(species, pan, CRY_MODE_ECHO_END);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
#undef tSpecies
|
||||
#undef tPan
|
||||
#undef tState
|
||||
|
||||
void SoundTask_PlaySE1WithPanning(u8 taskId)
|
||||
{
|
||||
u16 songId = gBattleAnimArgs[0];
|
||||
@@ -277,6 +294,8 @@ void SoundTask_PlaySE2WithPanning(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
// Adjusts panning and assigns it to gAnimCustomPanning. Doesnt play sound.
|
||||
// Used by Confuse Ray and Will-O-Wisp (see uses of gAnimCustomPanning)
|
||||
void SoundTask_AdjustPanningVar(u8 taskId)
|
||||
{
|
||||
s8 targetPan = gBattleAnimArgs[1];
|
||||
@@ -292,11 +311,11 @@ void SoundTask_AdjustPanningVar(u8 taskId)
|
||||
gTasks[taskId].data[5] = r9;
|
||||
gTasks[taskId].data[10] = 0;
|
||||
gTasks[taskId].data[11] = sourcePan;
|
||||
gTasks[taskId].func = sub_80DD4D4;
|
||||
sub_80DD4D4(taskId);
|
||||
gTasks[taskId].func = SoundTask_AdjustPanningVar_Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80DD4D4(u8 taskId)
|
||||
static void SoundTask_AdjustPanningVar_Step(u8 taskId)
|
||||
{
|
||||
u16 oldPan, panIncrement = gTasks[taskId].data[3];
|
||||
|
||||
@@ -307,7 +326,7 @@ static void sub_80DD4D4(u8 taskId)
|
||||
gTasks[taskId].data[11] = panIncrement + oldPan;
|
||||
gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
|
||||
}
|
||||
gUnknown_2037F24 = gTasks[taskId].data[11];
|
||||
gAnimCustomPanning = gTasks[taskId].data[11];
|
||||
if (gTasks[taskId].data[11] == gTasks[taskId].data[2])
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
+15
-12
@@ -3,6 +3,7 @@
|
||||
#include "battle.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_main.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_interface.h"
|
||||
#include "decompress.h"
|
||||
@@ -34,9 +35,9 @@
|
||||
#define TAG_HEALTHBOX_PALS_2 55050
|
||||
|
||||
// RAM
|
||||
UNUSED u32 gMonShrinkDuration;
|
||||
UNUSED u16 gMonShrinkDelta;
|
||||
UNUSED u16 gMonShrinkDistance;
|
||||
u32 gMonShrinkDuration;
|
||||
u16 gMonShrinkDelta;
|
||||
u16 gMonShrinkDistance;
|
||||
|
||||
// Function Declarations
|
||||
static void AnimTask_UnusedLevelUpHealthBox_Step(u8);
|
||||
@@ -408,7 +409,9 @@ const struct SpriteTemplate gSafariRockTemplate =
|
||||
};
|
||||
|
||||
// Functions
|
||||
UNUSED void AnimTask_UnusedLevelUpHealthBox(u8 taskId)
|
||||
|
||||
// Unused
|
||||
void AnimTask_LevelUpHealthBox(u8 taskId)
|
||||
{
|
||||
struct BattleAnimBgData animBgData;
|
||||
u8 healthBoxSpriteId;
|
||||
@@ -442,8 +445,8 @@ UNUSED void AnimTask_UnusedLevelUpHealthBox(u8 taskId)
|
||||
gSprites[spriteId3].callback = SpriteCallbackDummy;
|
||||
gSprites[spriteId4].callback = SpriteCallbackDummy;
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
AnimLoadCompressedBgTilemap(animBgData.bgId, gUnknown_D2EC24_Tilemap);
|
||||
AnimLoadCompressedBgGfx(animBgData.bgId, gUnknown_D2EC24_Gfx, animBgData.tilesOffset);
|
||||
AnimLoadCompressedBgTilemap(animBgData.bgId, gUnusedLevelupAnimationTilemap);
|
||||
AnimLoadCompressedBgGfx(animBgData.bgId, gUnusedLevelupAnimationGfx, animBgData.tilesOffset);
|
||||
LoadCompressedPalette(gCureBubblesPal, animBgData.paletteId << 4, 32);
|
||||
gBattle_BG1_X = -gSprites[spriteId3].x + 32;
|
||||
gBattle_BG1_Y = -gSprites[spriteId3].y - 32;
|
||||
@@ -660,7 +663,7 @@ void AnimTask_SwitchOutBallEffect(u8 taskId)
|
||||
priority = gSprites[spriteId].oam.priority;
|
||||
subpriority = gSprites[spriteId].subpriority;
|
||||
gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId);
|
||||
selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0);
|
||||
selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0);
|
||||
gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
@@ -2037,7 +2040,7 @@ void AnimTask_IsAttackerBehindSubstitute(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void AnimTask_TargetToEffectBattler(u8 taskId)
|
||||
void AnimTask_SetTargetToEffectBattler(u8 taskId)
|
||||
{
|
||||
gBattleAnimTarget = gEffectBattler;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -2079,7 +2082,7 @@ void TryShinyAnimation(u8 battler, struct Pokemon *mon)
|
||||
}
|
||||
}
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = TRUE;
|
||||
}
|
||||
|
||||
static void AnimTask_ShinySparkles(u8 taskId)
|
||||
@@ -2162,7 +2165,7 @@ static void AnimTask_ShinySparkles_WaitSparkles(u8 taskId)
|
||||
if (gTasks[taskId].data[1] == TRUE)
|
||||
{
|
||||
battler = gTasks[taskId].data[0];
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = TRUE;
|
||||
}
|
||||
|
||||
DestroyTask(taskId);
|
||||
@@ -2204,7 +2207,7 @@ static void SpriteCB_ShinySparkles_2(struct Sprite *sprite)
|
||||
|
||||
void AnimTask_LoadBaitGfx(u8 taskId)
|
||||
{
|
||||
UNUSED u8 paletteIndex;
|
||||
u8 paletteIndex;
|
||||
|
||||
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_SAFARI_BAIT - ANIM_SPRITES_START]);
|
||||
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_SAFARI_BAIT - ANIM_SPRITES_START]);
|
||||
@@ -2278,7 +2281,7 @@ void AnimTask_SafariOrGhost_DecideAnimSides(u8 taskId)
|
||||
|
||||
void AnimTask_SafariGetReaction(u8 taskId)
|
||||
{
|
||||
if (gBattleCommunication[MULTISTRING_CHOOSER] > 2)
|
||||
if (gBattleCommunication[MULTISTRING_CHOOSER] >= NUM_SAFARI_REACTIONS)
|
||||
gBattleAnimArgs[7] = 0;
|
||||
else
|
||||
gBattleAnimArgs[7] = gBattleCommunication[MULTISTRING_CHOOSER];
|
||||
|
||||
@@ -9,19 +9,17 @@
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/pokemon.h"
|
||||
|
||||
// Function Declarations
|
||||
static u8 sub_8078178(u8 battlerId, bool8 b);
|
||||
static void sub_80782BC(u8 taskId);
|
||||
static void sub_80784D8(u8 taskId);
|
||||
static void sub_8078528(u8 taskId);
|
||||
static void sub_80785D8(u8 taskId);
|
||||
static void sub_807862C(u8 taskId);
|
||||
static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 b);
|
||||
static void Task_UpdateFlashingCircleImpacts(u8 taskId);
|
||||
static void AnimTask_FrozenIceCube_Step1(u8 taskId);
|
||||
static void AnimTask_FrozenIceCube_Step2(u8 taskId);
|
||||
static void AnimTask_FrozenIceCube_Step3(u8 taskId);
|
||||
static void AnimTask_FrozenIceCube_Step4(u8 taskId);
|
||||
static void Task_DoStatusAnimation(u8 taskId);
|
||||
static void sub_807834C(struct Sprite *sprite);
|
||||
static void sub_8078380(struct Sprite *sprite);
|
||||
static void AnimFlashingCircleImpact(struct Sprite *sprite);
|
||||
static void AnimFlashingCircleImpact_Step(struct Sprite *sprite);
|
||||
|
||||
// Data
|
||||
static const union AnimCmd sUnknown_83BF3E0[] =
|
||||
static const union AnimCmd sAnim_FlickeringOrb[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
ANIMCMD_FRAME(4, 3),
|
||||
@@ -30,42 +28,44 @@ static const union AnimCmd sUnknown_83BF3E0[] =
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_83BF3F4[] =
|
||||
static const union AnimCmd *const sAnims_FlickeringOrb[] =
|
||||
{
|
||||
sUnknown_83BF3E0
|
||||
sAnim_FlickeringOrb
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_83BF3F8 =
|
||||
// Unused
|
||||
static const struct SpriteTemplate sFlickeringOrbSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ORB,
|
||||
.paletteTag = ANIM_TAG_ORB,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_16x16,
|
||||
.anims = sSpriteAnimTable_83BF3F4,
|
||||
.anims = sAnims_FlickeringOrb,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2,
|
||||
.callback = AnimTranslateLinearAndFlicker,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_83BF410 =
|
||||
// Unused
|
||||
static const struct SpriteTemplate sFlickeringOrbFlippedSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ORB,
|
||||
.paletteTag = ANIM_TAG_ORB,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_16x16,
|
||||
.anims = sSpriteAnimTable_83BF3F4,
|
||||
.anims = sAnims_FlickeringOrb,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker,
|
||||
.callback = AnimTranslateLinearAndFlicker_Flipped,
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF428[] =
|
||||
static const union AnimCmd sAnim_WeatherBallNormal[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_83BF430[] =
|
||||
static const union AnimCmd *const sAnims_WeatherBallNormal[] =
|
||||
{
|
||||
sUnknown_83BF428
|
||||
sAnim_WeatherBallNormal
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gWeatherBallUpSpriteTemplate =
|
||||
@@ -73,10 +73,10 @@ const struct SpriteTemplate gWeatherBallUpSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_WEATHER_BALL,
|
||||
.paletteTag = ANIM_TAG_WEATHER_BALL,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sSpriteAnimTable_83BF430,
|
||||
.anims = sAnims_WeatherBallNormal,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_WeatherBallUp,
|
||||
.callback = AnimWeatherBallUp,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gWeatherBallNormalDownSpriteTemplate =
|
||||
@@ -84,13 +84,13 @@ const struct SpriteTemplate gWeatherBallNormalDownSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_WEATHER_BALL,
|
||||
.paletteTag = ANIM_TAG_WEATHER_BALL,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sSpriteAnimTable_83BF430,
|
||||
.anims = sAnims_WeatherBallNormal,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimWeatherBallDown,
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF464[] =
|
||||
static const union AnimCmd sAnim_SpinningSparkle[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
ANIMCMD_FRAME(16, 3),
|
||||
@@ -100,23 +100,24 @@ static const union AnimCmd sUnknown_83BF464[] =
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_83BF47C[] =
|
||||
static const union AnimCmd *const sAnims_SpinningSparkle[] =
|
||||
{
|
||||
sUnknown_83BF464
|
||||
sAnim_SpinningSparkle
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_83BF480 =
|
||||
const struct SpriteTemplate gSpinningSparkleSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SPARKLE_4,
|
||||
.paletteTag = ANIM_TAG_SPARKLE_4,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sSpriteAnimTable_83BF47C,
|
||||
.anims = sAnims_SpinningSparkle,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_TrackOffsetFromAttackerAndWaitAnim,
|
||||
.callback = AnimSpinningSparkle,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_83BF498 =
|
||||
// Unused
|
||||
static const struct SpriteTemplate sFlickeringFootSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_MONSTER_FOOT,
|
||||
.paletteTag = ANIM_TAG_MONSTER_FOOT,
|
||||
@@ -124,95 +125,98 @@ const struct SpriteTemplate gSpriteTemplate_83BF498 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2,
|
||||
.callback = AnimTranslateLinearAndFlicker,
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF4B0[] =
|
||||
static const union AnimCmd sAnim_FlickeringImpact_0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF4B8[] =
|
||||
static const union AnimCmd sAnim_FlickeringImpact_1[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF4C0[] =
|
||||
static const union AnimCmd sAnim_FlickeringImpact_2[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAniimTable_83BF4C8[] =
|
||||
static const union AnimCmd *const sAnims_FlickeringImpact[] =
|
||||
{
|
||||
sUnknown_83BF4B0,
|
||||
sUnknown_83BF4B8,
|
||||
sUnknown_83BF4C0
|
||||
sAnim_FlickeringImpact_0,
|
||||
sAnim_FlickeringImpact_1,
|
||||
sAnim_FlickeringImpact_2
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_83BF4D4 =
|
||||
// Unused
|
||||
static const struct SpriteTemplate sFlickeringImpactSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_IMPACT,
|
||||
.paletteTag = ANIM_TAG_IMPACT,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sSpriteAniimTable_83BF4C8,
|
||||
.anims = sAnims_FlickeringImpact,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2,
|
||||
.callback = AnimTranslateLinearAndFlicker,
|
||||
};
|
||||
|
||||
static const union AnimCmd sUnknown_83BF4EC[] =
|
||||
static const union AnimCmd sAnim_FlickeringShrinkOrb[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 15),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_83BF4F4[] =
|
||||
static const union AnimCmd *const sAnims_FlickeringShrinkOrb[] =
|
||||
{
|
||||
sUnknown_83BF4EC
|
||||
sAnim_FlickeringShrinkOrb
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sUnknown_83BF4F8[] =
|
||||
static const union AffineAnimCmd sAffineAnim_FlickeringShrinkOrb[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(96, 96, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(2, 2, 0, 1),
|
||||
AFFINEANIMCMD_JUMP(1)
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const sSpriteAffineAnimTable_83BF510[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_FlickeringShrinkOrb[] =
|
||||
{
|
||||
sUnknown_83BF4F8
|
||||
sAffineAnim_FlickeringShrinkOrb
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_83BF514 =
|
||||
// Unused
|
||||
static const struct SpriteTemplate sFlickeringShrinkOrbSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ORB,
|
||||
.paletteTag = ANIM_TAG_ORB,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_16x16,
|
||||
.anims = sSpriteAnimTable_83BF4F4,
|
||||
.anims = sAnims_FlickeringShrinkOrb,
|
||||
.images = NULL,
|
||||
.affineAnims = sSpriteAffineAnimTable_83BF510,
|
||||
.callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker,
|
||||
.affineAnims = sAffineAnims_FlickeringShrinkOrb,
|
||||
.callback = AnimTranslateLinearAndFlicker_Flipped,
|
||||
};
|
||||
|
||||
static const u8 sUnknown_83BF52C[] = _("TASK OVER\nタスクがオ-バ-しました");
|
||||
// Presumably some debug text
|
||||
static const u8 sText_TaskOver[] = _("TASK OVER\nタスクがオ-バ-しました");
|
||||
|
||||
static const struct Subsprite sSubsprites_83BF544[] =
|
||||
static const struct Subsprite sFrozenIceCubeSubsprites[] =
|
||||
{
|
||||
{.x = -16, .y = -16, .shape = SPRITE_SHAPE(8x8), .size = 3, .tileOffset = 0, .priority = 2},
|
||||
{.x = -16, .y = 48, .shape = SPRITE_SHAPE(16x8), .size = 3, .tileOffset = 64, .priority = 2},
|
||||
{.x = 48, .y = -16, .shape = SPRITE_SHAPE(8x16), .size = 3, .tileOffset = 96, .priority = 2},
|
||||
{.x = 48, .y = 48, .shape = SPRITE_SHAPE(8x8), .size = 2, .tileOffset = 128, .priority = 2},
|
||||
{.x = -16, .y = -16, .shape = SPRITE_SHAPE(64x64), .size = SPRITE_SIZE(64x64), .tileOffset = 0, .priority = 2},
|
||||
{.x = -16, .y = 48, .shape = SPRITE_SHAPE(64x32), .size = SPRITE_SIZE(64x32), .tileOffset = 64, .priority = 2},
|
||||
{.x = 48, .y = -16, .shape = SPRITE_SHAPE(32x64), .size = SPRITE_SIZE(32x64), .tileOffset = 96, .priority = 2},
|
||||
{.x = 48, .y = 48, .shape = SPRITE_SHAPE(32x32), .size = SPRITE_SIZE(32x32), .tileOffset = 128, .priority = 2},
|
||||
};
|
||||
|
||||
static const struct SubspriteTable sUnknown_83BF554[] =
|
||||
static const struct SubspriteTable sFrozenIceCubeSubspriteTable[] =
|
||||
{
|
||||
{NELEMS(sSubsprites_83BF544), sSubsprites_83BF544},
|
||||
{NELEMS(sFrozenIceCubeSubsprites), sFrozenIceCubeSubsprites},
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sUnknown_83BF55C =
|
||||
static const struct SpriteTemplate sFrozenIceCubeSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ICE_CUBE,
|
||||
.paletteTag = ANIM_TAG_ICE_CUBE,
|
||||
@@ -223,7 +227,7 @@ static const struct SpriteTemplate sUnknown_83BF55C =
|
||||
.callback = SpriteCallbackDummy,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sUnknown_83BF574 =
|
||||
static const struct SpriteTemplate sFlashingCircleImpactSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_CIRCLE_IMPACT,
|
||||
.paletteTag = ANIM_TAG_CIRCLE_IMPACT,
|
||||
@@ -231,14 +235,14 @@ static const struct SpriteTemplate sUnknown_83BF574 =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_807834C,
|
||||
.callback = AnimFlashingCircleImpact,
|
||||
};
|
||||
|
||||
// Functions
|
||||
static u8 sub_8078178(u8 battlerId, bool8 b)
|
||||
// Unused
|
||||
static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 b)
|
||||
{
|
||||
u8 battlerSpriteId = gBattlerSpriteIds[battlerId];
|
||||
u8 taskId = CreateTask(sub_80782BC, 10);
|
||||
u8 taskId = CreateTask(Task_UpdateFlashingCircleImpacts, 10);
|
||||
u8 spriteId2;
|
||||
u8 i;
|
||||
|
||||
@@ -250,7 +254,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b)
|
||||
gTasks[taskId].data[1] = RGB_RED;
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
spriteId2 = CreateSprite(&sUnknown_83BF574, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y + 32, 0);
|
||||
spriteId2 = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y + 32, 0);
|
||||
gSprites[spriteId2].data[0] = i * 51;
|
||||
gSprites[spriteId2].data[1] = -256;
|
||||
gSprites[spriteId2].invisible = TRUE;
|
||||
@@ -263,7 +267,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b)
|
||||
gTasks[taskId].data[1] = RGB_BLUE;
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
spriteId2 = CreateSprite(&sUnknown_83BF574, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y - 32, 0);
|
||||
spriteId2 = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y - 32, 0);
|
||||
gSprites[spriteId2].data[0] = i * 51;
|
||||
gSprites[spriteId2].data[1] = 256;
|
||||
gSprites[spriteId2].invisible = TRUE;
|
||||
@@ -275,7 +279,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b)
|
||||
return taskId;
|
||||
}
|
||||
|
||||
static void sub_80782BC(u8 taskId)
|
||||
static void Task_UpdateFlashingCircleImpacts(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[2] == 2)
|
||||
{
|
||||
@@ -308,13 +312,13 @@ static void sub_80782BC(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_807834C(struct Sprite *sprite)
|
||||
static void AnimFlashingCircleImpact(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[6] == 0)
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
sprite->callback = sub_8078380;
|
||||
sub_8078380(sprite);
|
||||
sprite->callback = AnimFlashingCircleImpact_Step;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -322,7 +326,7 @@ static void sub_807834C(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8078380(struct Sprite *sprite)
|
||||
static void AnimFlashingCircleImpact_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x2 = Cos(sprite->data[0], 32);
|
||||
sprite->y2 = Sin(sprite->data[0], 8);
|
||||
@@ -354,21 +358,21 @@ void AnimTask_FrozenIceCube(u8 taskId)
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
|
||||
spriteId = CreateSprite(&sUnknown_83BF55C, x, y, 4);
|
||||
if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == TAG_NONE)
|
||||
spriteId = CreateSprite(&sFrozenIceCubeSpriteTemplate, x, y, 4);
|
||||
if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF)
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
|
||||
SetSubspriteTables(&gSprites[spriteId], sUnknown_83BF554);
|
||||
SetSubspriteTables(&gSprites[spriteId], sFrozenIceCubeSubspriteTable);
|
||||
gTasks[taskId].data[15] = spriteId;
|
||||
gTasks[taskId].func = sub_80784D8;
|
||||
gTasks[taskId].func = AnimTask_FrozenIceCube_Step1;
|
||||
}
|
||||
|
||||
static void sub_80784D8(u8 taskId)
|
||||
static void AnimTask_FrozenIceCube_Step1(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[1]++;
|
||||
if (gTasks[taskId].data[1] == 10)
|
||||
{
|
||||
gTasks[taskId].func = sub_8078528;
|
||||
gTasks[taskId].func = AnimTask_FrozenIceCube_Step2;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
}
|
||||
else
|
||||
@@ -379,7 +383,7 @@ static void sub_80784D8(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8078528(u8 taskId)
|
||||
static void AnimTask_FrozenIceCube_Step2(u8 taskId)
|
||||
{
|
||||
u8 palIndex = IndexOfSpritePaletteTag(ANIM_TAG_ICE_CUBE);
|
||||
|
||||
@@ -405,19 +409,19 @@ static void sub_8078528(u8 taskId)
|
||||
if (gTasks[taskId].data[4] == 2)
|
||||
{
|
||||
gTasks[taskId].data[1] = 9;
|
||||
gTasks[taskId].func = sub_80785D8;
|
||||
gTasks[taskId].func = AnimTask_FrozenIceCube_Step3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80785D8(u8 taskId)
|
||||
static void AnimTask_FrozenIceCube_Step3(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[1]--;
|
||||
if (gTasks[taskId].data[1] == -1)
|
||||
{
|
||||
gTasks[taskId].func = sub_807862C;
|
||||
gTasks[taskId].func = AnimTask_FrozenIceCube_Step4;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
}
|
||||
else
|
||||
@@ -428,7 +432,7 @@ static void sub_80785D8(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_807862C(u8 taskId)
|
||||
static void AnimTask_FrozenIceCube_Step4(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[1]++;
|
||||
if (gTasks[taskId].data[1] == 37)
|
||||
|
||||
@@ -18,22 +18,22 @@ struct AnimStatsChangeData
|
||||
|
||||
static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes);
|
||||
static void AnimTask_BlendSpriteColor_Step2(u8 taskId);
|
||||
static void Task_WaitHardwarePaletteFade(u8 taskId);
|
||||
static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId);
|
||||
static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite);
|
||||
static void AnimTask_HardwarePaletteFade_Step(u8 taskId);
|
||||
static void AnimTask_TraceMonBlended_Step(u8 taskId);
|
||||
static void AnimMonTrace(struct Sprite *sprite);
|
||||
static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId);
|
||||
static void StatsChangeAnimation_Step1(u8 taskId);
|
||||
static void StatsChangeAnimation_Step2(u8 taskId);
|
||||
static void StatsChangeAnimation_Step3(u8 taskId);
|
||||
static void sub_80BB6CC(u8 taskId);
|
||||
static void sub_80BB790(u32 selectedPalettes, u16 color);
|
||||
static void sub_80BB8A4(u8 taskId);
|
||||
static void sub_80BBC2C(u8 taskId);
|
||||
static void sub_80BC19C(u8 taskId);
|
||||
static void AnimTask_Flash_Step(u8 taskId);
|
||||
static void SetPalettesToColor(u32 selectedPalettes, u16 color);
|
||||
static void AnimTask_UpdateSlidingBg(u8 taskId);
|
||||
static void UpdateMonScrollingBgMask(u8 taskId);
|
||||
static void AnimTask_WaitAndRestoreVisibility(u8 taskId);
|
||||
|
||||
static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = NULL;
|
||||
|
||||
static const u16 sRgbWhite[] = { RGB(31, 31, 31) };
|
||||
static const u16 sRgbWhite[] = { RGB_WHITE };
|
||||
const u8 gBattleAnimRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
|
||||
const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
|
||||
|
||||
@@ -50,11 +50,11 @@ const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, RE
|
||||
// 8: Player battler right
|
||||
// 9: Enemy battler left
|
||||
// 10: Enemy battler right
|
||||
void AnimTask_BlendSelected(u8 taskId)
|
||||
void AnimTask_BlendBattleAnimPal(u8 taskId)
|
||||
{
|
||||
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
|
||||
u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]);
|
||||
|
||||
selectedPalettes |= SelectBattlerSpritePalettes(
|
||||
selectedPalettes |= GetBattleMonSpritePalettesMask(
|
||||
(gBattleAnimArgs[0] >> 7) & 1,
|
||||
(gBattleAnimArgs[0] >> 8) & 1,
|
||||
(gBattleAnimArgs[0] >> 9) & 1,
|
||||
@@ -72,26 +72,26 @@ void AnimTask_BlendSelected(u8 taskId)
|
||||
// 5: Blend all
|
||||
// 6: Neither bg nor attacker's partner
|
||||
// 7: Neither bg nor target's partner
|
||||
void AnimTask_BlendExcept(u8 taskId)
|
||||
void AnimTask_BlendBattleAnimPalExclude(u8 taskId)
|
||||
{
|
||||
u8 battler;
|
||||
u32 selectedPalettes;
|
||||
u8 animBattlers[2];
|
||||
|
||||
animBattlers[1] = 0xFF;
|
||||
selectedPalettes = UnpackSelectedBattleAnimPalettes(1);
|
||||
selectedPalettes = UnpackSelectedBattlePalettes(1);
|
||||
switch (gBattleAnimArgs[0])
|
||||
{
|
||||
case 2:
|
||||
selectedPalettes = 0;
|
||||
// fall through
|
||||
case 0:
|
||||
case ANIM_ATTACKER:
|
||||
animBattlers[0] = gBattleAnimAttacker;
|
||||
break;
|
||||
case 3:
|
||||
selectedPalettes = 0;
|
||||
// fall through
|
||||
case 1:
|
||||
case ANIM_TARGET:
|
||||
animBattlers[0] = gBattleAnimTarget;
|
||||
break;
|
||||
case 4:
|
||||
@@ -122,7 +122,7 @@ void AnimTask_BlendExcept(u8 taskId)
|
||||
|
||||
void AnimTask_SetCamouflageBlend(u8 taskId)
|
||||
{
|
||||
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
|
||||
u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]);
|
||||
|
||||
switch (gBattleTerrain)
|
||||
{
|
||||
@@ -217,16 +217,17 @@ void AnimTask_HardwarePaletteFade(u8 taskId)
|
||||
gBattleAnimArgs[2],
|
||||
gBattleAnimArgs[3],
|
||||
gBattleAnimArgs[4]);
|
||||
gTasks[taskId].func = Task_WaitHardwarePaletteFade;
|
||||
gTasks[taskId].func = AnimTask_HardwarePaletteFade_Step;
|
||||
}
|
||||
|
||||
static void Task_WaitHardwarePaletteFade(u8 taskId)
|
||||
static void AnimTask_HardwarePaletteFade_Step(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId)
|
||||
// Used to leave blended traces of a mon, usually to imply speed as in Agility or Aerial Ace
|
||||
void AnimTask_TraceMonBlended(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -236,9 +237,9 @@ void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId)
|
||||
task->data[3] = gBattleAnimArgs[2];
|
||||
task->data[4] = gBattleAnimArgs[3];
|
||||
task->data[5] = 0;
|
||||
task->func = Task_DoCloneBattlerSpriteWithBlend;
|
||||
task->func = AnimTask_TraceMonBlended_Step;
|
||||
}
|
||||
static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId)
|
||||
static void AnimTask_TraceMonBlended_Step(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -257,7 +258,7 @@ static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId)
|
||||
gSprites[task->data[6]].data[0] = task->data[3];
|
||||
gSprites[task->data[6]].data[1] = taskId;
|
||||
gSprites[task->data[6]].data[2] = 5;
|
||||
gSprites[task->data[6]].callback = Task_FinishCloneBattlerSpriteWithBlend;
|
||||
gSprites[task->data[6]].callback = AnimMonTrace;
|
||||
++task->data[5];
|
||||
}
|
||||
--task->data[4];
|
||||
@@ -270,7 +271,7 @@ static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite)
|
||||
static void AnimMonTrace(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0])
|
||||
{
|
||||
@@ -279,11 +280,12 @@ static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
--gTasks[sprite->data[1]].data[sprite->data[2]];
|
||||
obj_delete_but_dont_free_vram(sprite);
|
||||
DestroySpriteWithActiveSheet(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void AnimTask_SetUpCurseBackground(u8 taskId)
|
||||
// Only used by Curse for non-Ghost mons
|
||||
void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
|
||||
{
|
||||
u16 species;
|
||||
s32 newSpriteId;
|
||||
@@ -330,7 +332,7 @@ void AnimTask_SetUpCurseBackground(u8 taskId)
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
newSpriteId = CreateCloneOfSpriteInWindowMode(gBattleAnimAttacker, spriteId, species);
|
||||
newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species);
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap);
|
||||
if (IsContest())
|
||||
@@ -446,11 +448,11 @@ static void StatsChangeAnimation_Step2(u8 taskId)
|
||||
u8 battlerSpriteId;
|
||||
|
||||
battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1];
|
||||
spriteId = CreateCloneOfSpriteInWindowMode(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species);
|
||||
spriteId = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species);
|
||||
if (sAnimStatsChangeData->data[3])
|
||||
{
|
||||
battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
|
||||
newSpriteId = CreateCloneOfSpriteInWindowMode(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species);
|
||||
newSpriteId = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species);
|
||||
}
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
if (sAnimStatsChangeData->data[0] == 0)
|
||||
@@ -580,19 +582,19 @@ static void StatsChangeAnimation_Step3(u8 taskId)
|
||||
|
||||
void AnimTask_Flash(u8 taskId)
|
||||
{
|
||||
u32 selectedPalettes = SelectBattlerSpritePalettes(1, 1, 1, 1);
|
||||
u32 selectedPalettes = GetBattleMonSpritePalettesMask(1, 1, 1, 1);
|
||||
|
||||
sub_80BB790(selectedPalettes, 0);
|
||||
SetPalettesToColor(selectedPalettes, 0);
|
||||
gTasks[taskId].data[14] = selectedPalettes >> 16;
|
||||
selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
|
||||
sub_80BB790(selectedPalettes, 0xFFFF);
|
||||
selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
|
||||
SetPalettesToColor(selectedPalettes, 0xFFFF);
|
||||
gTasks[taskId].data[15] = selectedPalettes;
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].func = sub_80BB6CC;
|
||||
gTasks[taskId].func = AnimTask_Flash_Step;
|
||||
}
|
||||
|
||||
static void sub_80BB6CC(u8 taskId)
|
||||
static void AnimTask_Flash_Step(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
@@ -637,7 +639,7 @@ static void sub_80BB6CC(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80BB790(u32 selectedPalettes, u16 color)
|
||||
static void SetPalettesToColor(u32 selectedPalettes, u16 color)
|
||||
{
|
||||
u16 i, curOffset, paletteOffset;
|
||||
|
||||
@@ -665,7 +667,7 @@ void AnimTask_StartSlidingBg(u8 taskId)
|
||||
u8 newTaskId;
|
||||
|
||||
ToggleBg3Mode(0);
|
||||
newTaskId = CreateTask(sub_80BB8A4, 5);
|
||||
newTaskId = CreateTask(AnimTask_UpdateSlidingBg, 5);
|
||||
if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
@@ -678,7 +680,7 @@ void AnimTask_StartSlidingBg(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
static void sub_80BB8A4(u8 taskId)
|
||||
static void AnimTask_UpdateSlidingBg(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[10] += gTasks[taskId].data[1];
|
||||
gTasks[taskId].data[11] += gTasks[taskId].data[2];
|
||||
@@ -713,6 +715,7 @@ void AnimTask_GetTargetIsAttackerPartner(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
// For hiding or subsequently revealing all other battlers
|
||||
void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId)
|
||||
{
|
||||
u16 battler;
|
||||
@@ -723,7 +726,7 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette)
|
||||
void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 scrollSpeed, u8 battler1, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette)
|
||||
{
|
||||
u16 species;
|
||||
u8 spriteId, newSpriteId = 0;
|
||||
@@ -731,8 +734,8 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar
|
||||
struct BattleAnimBgData animBgData;
|
||||
u8 battler2 = BATTLE_PARTNER(battler1);
|
||||
|
||||
if (IsContest() || (arg4 && !IsBattlerSpriteVisible(battler2)))
|
||||
arg4 = 0;
|
||||
if (IsContest() || (includePartner && !IsBattlerSpriteVisible(battler2)))
|
||||
includePartner = FALSE;
|
||||
gBattle_WIN0H = 0;
|
||||
gBattle_WIN0V = 0;
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
|
||||
@@ -753,9 +756,9 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar
|
||||
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
|
||||
else
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
|
||||
spriteId = CreateCloneOfSpriteInWindowMode(battler1, gBattlerSpriteIds[battler1], species);
|
||||
if (arg4)
|
||||
newSpriteId = CreateCloneOfSpriteInWindowMode(battler2, gBattlerSpriteIds[battler2], species);
|
||||
spriteId = CreateInvisibleSpriteCopy(battler1, gBattlerSpriteIds[battler1], species);
|
||||
if (includePartner)
|
||||
newSpriteId = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species);
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap);
|
||||
if (IsContest())
|
||||
@@ -764,17 +767,17 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar
|
||||
LoadCompressedPalette(palette, animBgData.paletteId * 16, 32);
|
||||
gBattle_BG1_X = 0;
|
||||
gBattle_BG1_Y = 0;
|
||||
gTasks[taskId].data[1] = arg2;
|
||||
gTasks[taskId].data[4] = arg5;
|
||||
gTasks[taskId].data[5] = arg7;
|
||||
gTasks[taskId].data[6] = arg6;
|
||||
gTasks[taskId].data[1] = scrollSpeed;
|
||||
gTasks[taskId].data[4] = numFadeSteps;
|
||||
gTasks[taskId].data[5] = duration;
|
||||
gTasks[taskId].data[6] = fadeStepDelay;
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[2] = arg4;
|
||||
gTasks[taskId].data[2] = includePartner;
|
||||
gTasks[taskId].data[3] = newSpriteId;
|
||||
gTasks[taskId].func = sub_80BBC2C;
|
||||
gTasks[taskId].func = UpdateMonScrollingBgMask;
|
||||
}
|
||||
|
||||
static void sub_80BBC2C(u8 taskId)
|
||||
static void UpdateMonScrollingBgMask(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1];
|
||||
if (gTasks[taskId].data[1] < 0)
|
||||
@@ -856,7 +859,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId)
|
||||
s32 paletteIndex = 0;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0);
|
||||
for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
|
||||
(selectedPalettes & 1) == 0;
|
||||
++paletteIndex)
|
||||
selectedPalettes >>= 1;
|
||||
@@ -874,7 +877,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId)
|
||||
s32 paletteIndex = 0;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0);
|
||||
for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
|
||||
(selectedPalettes & 1) == 0;
|
||||
++paletteIndex)
|
||||
selectedPalettes >>= 1;
|
||||
@@ -892,7 +895,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId)
|
||||
s32 paletteIndex = 0;
|
||||
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0);
|
||||
for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
|
||||
(selectedPalettes & 1) == 0;
|
||||
++paletteIndex)
|
||||
selectedPalettes >>= 1;
|
||||
@@ -907,9 +910,9 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId)
|
||||
void AnimTask_IsContest(u8 taskId)
|
||||
{
|
||||
if (IsContest())
|
||||
gBattleAnimArgs[7] = 1;
|
||||
gBattleAnimArgs[ARG_RET_ID] = TRUE;
|
||||
else
|
||||
gBattleAnimArgs[7] = 0;
|
||||
gBattleAnimArgs[ARG_RET_ID] = FALSE;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
@@ -923,9 +926,9 @@ void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId)
|
||||
void AnimTask_IsTargetSameSide(u8 taskId)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
|
||||
gBattleAnimArgs[7] = 1;
|
||||
gBattleAnimArgs[ARG_RET_ID] = TRUE;
|
||||
else
|
||||
gBattleAnimArgs[7] = 0;
|
||||
gBattleAnimArgs[ARG_RET_ID] = FALSE;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
@@ -952,12 +955,12 @@ void AnimTask_SetAttackerInvisibleWaitForSignal(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible;
|
||||
gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1;
|
||||
gTasks[taskId].func = sub_80BC19C;
|
||||
gTasks[taskId].func = AnimTask_WaitAndRestoreVisibility;
|
||||
--gAnimVisualTaskCount;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80BC19C(u8 taskId)
|
||||
static void AnimTask_WaitAndRestoreVisibility(u8 taskId)
|
||||
{
|
||||
if (gBattleAnimArgs[7] == 0x1000)
|
||||
{
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
#include "trig.h"
|
||||
#include "util.h"
|
||||
|
||||
#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345)
|
||||
|
||||
static void AnimRainDrop(struct Sprite *);
|
||||
static void AnimRainDrop_Step(struct Sprite *);
|
||||
static void AnimWaterBubbleProjectile(struct Sprite *);
|
||||
@@ -55,9 +53,8 @@ static void AnimTask_WaterSport_Step(u8);
|
||||
static void CreateWaterSportDroplet(struct Task *);
|
||||
static void CreateWaterPulseRingBubbles(struct Sprite *, s32, s32);
|
||||
|
||||
// Both unused? Comment copied from pokeemerald
|
||||
static const u8 gUnknown_83E44F4[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp");
|
||||
static const u8 gUnknown_83E4874[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin");
|
||||
static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp");
|
||||
static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin");
|
||||
|
||||
static const union AnimCmd sAnim_RainDrop[] =
|
||||
{
|
||||
@@ -488,8 +485,8 @@ void AnimTask_CreateRaindrops(u8 taskId)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1)
|
||||
{
|
||||
x = Random() % 240;
|
||||
y = Random() % 80;
|
||||
x = Random() % DISPLAY_WIDTH;
|
||||
y = Random() % (DISPLAY_HEIGHT / 2);
|
||||
CreateSprite(&gRainDropSpriteTemplate, x, y, 4);
|
||||
}
|
||||
if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
|
||||
@@ -521,23 +518,23 @@ static void AnimWaterBubbleProjectile(struct Sprite *sprite)
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
|
||||
sprite->animPaused = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
|
||||
sprite->animPaused = TRUE;
|
||||
}
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[6];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
|
||||
sprite->data[5] = spriteId;
|
||||
@@ -599,9 +596,9 @@ static void AnimAuroraBeamRings(struct Sprite *sprite)
|
||||
unkArg = gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + unkArg;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + unkArg;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = AnimAuroraBeamRings_Step;
|
||||
sprite->affineAnimPaused = TRUE;
|
||||
@@ -653,9 +650,9 @@ static void AnimToTargetInSinWave(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[0] = 30;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->data[5] = 0xD200 / sprite->data[0];
|
||||
sprite->data[7] = gBattleAnimArgs[3];
|
||||
@@ -708,8 +705,8 @@ static void AnimHydroCannonCharge(struct Sprite *sprite)
|
||||
{
|
||||
u8 priority;
|
||||
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
sprite->y2 = -10;
|
||||
priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
|
||||
if (!IsContest())
|
||||
@@ -755,14 +752,14 @@ static void AnimHydroCannonBeam(struct Sprite *sprite)
|
||||
else
|
||||
animType = FALSE;
|
||||
if ((u8)gBattleAnimArgs[5] == 0)
|
||||
coordType = 3;
|
||||
coordType = BATTLER_COORD_Y_PIC_OFFSET;
|
||||
else
|
||||
coordType = 1;
|
||||
InitSpritePosToAnimAttacker(sprite, animType);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
@@ -1173,8 +1170,8 @@ static u8 GetWaterSpoutPowerForAnim(void)
|
||||
static void CreateWaterSpoutLaunchDroplets(struct Task *task, u8 taskId)
|
||||
{
|
||||
s16 i;
|
||||
s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
s16 trigIndex = 172;
|
||||
u8 subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
|
||||
s16 increment = 4 - task->data[1];
|
||||
@@ -1347,8 +1344,8 @@ void AnimTask_WaterSport(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1;
|
||||
if (IsContest())
|
||||
task->data[7] *= -1;
|
||||
@@ -1520,8 +1517,8 @@ static void AnimWaterPulseRingBubble(struct Sprite *sprite)
|
||||
void AnimWaterPulseRing(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[3] = gBattleAnimArgs[2];
|
||||
sprite->data[4] = gBattleAnimArgs[3];
|
||||
sprite->callback = AnimWaterPulseRing_Step;
|
||||
+7
-5
@@ -588,7 +588,8 @@ static const struct {
|
||||
{MAP_BATTLE_SCENE_LINK, BATTLE_TERRAIN_LINK}
|
||||
};
|
||||
|
||||
UNUSED void CreateUnknownDebugSprite(void)
|
||||
// Unused
|
||||
void CreateUnknownDebugSprite(void)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
@@ -634,7 +635,8 @@ static void LoadBattleTerrainEntryGfx(u16 terrain)
|
||||
LZDecompressVram(sBattleTerrainTable[terrain].entryTilemap, (void *)BG_SCREEN_ADDR(28));
|
||||
}
|
||||
|
||||
UNUSED void GetBattleTerrainGfxPtrs(u8 terrain, const u32 **tilesPtr, const u32 **mapPtr, const u32 **palPtr)
|
||||
// Unused
|
||||
void GetBattleTerrainGfxPtrs(u8 terrain, const u32 **tilesPtr, const u32 **mapPtr, const u32 **palPtr)
|
||||
{
|
||||
if (terrain > BATTLE_TERRAIN_PLAIN)
|
||||
terrain = BATTLE_TERRAIN_PLAIN;
|
||||
@@ -663,8 +665,8 @@ void InitBattleBgsVideo(void)
|
||||
|
||||
void LoadBattleMenuWindowGfx(void)
|
||||
{
|
||||
TextWindow_SetUserSelectedFrame(2, 0x012, 0x10);
|
||||
TextWindow_SetUserSelectedFrame(2, 0x022, 0x10);
|
||||
LoadUserWindowGfx(2, 0x012, 0x10);
|
||||
LoadUserWindowGfx(2, 0x022, 0x10);
|
||||
gPlttBufferUnfaded[0x5C] = RGB( 9, 9, 9);
|
||||
gPlttBufferUnfaded[0x5D] = RGB( 9, 9, 9);
|
||||
gPlttBufferUnfaded[0x5E] = RGB(31, 31, 31);
|
||||
@@ -673,7 +675,7 @@ void LoadBattleMenuWindowGfx(void)
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_POKEDUDE))
|
||||
{
|
||||
Menu_LoadStdPalAt(0x70);
|
||||
TextWindow_LoadResourcesStdFrame0(0, 0x030, 0x70);
|
||||
LoadMenuMessageWindowGfx(0, 0x030, 0x70);
|
||||
gPlttBufferUnfaded[0x76] = RGB( 0, 0, 0);
|
||||
CpuCopy16(&gPlttBufferUnfaded[0x76], &gPlttBufferFaded[0x76], 2);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_interface.h"
|
||||
#include "battle_message.h"
|
||||
#include "gflib.h"
|
||||
#include "data.h"
|
||||
#include "link.h"
|
||||
@@ -6,11 +11,6 @@
|
||||
#include "pokeball.h"
|
||||
#include "task.h"
|
||||
#include "util.h"
|
||||
#include "battle.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_interface.h"
|
||||
#include "battle_message.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/sound.h"
|
||||
@@ -53,12 +53,12 @@ static void LinkOpponentHandleTwoReturnValues(void);
|
||||
static void LinkOpponentHandleChosenMonReturnValue(void);
|
||||
static void LinkOpponentHandleOneReturnValue(void);
|
||||
static void LinkOpponentHandleOneReturnValue_Duplicate(void);
|
||||
static void LinkOpponentHandleCmd37(void);
|
||||
static void LinkOpponentHandleCmd38(void);
|
||||
static void LinkOpponentHandleCmd39(void);
|
||||
static void LinkOpponentHandleCmd40(void);
|
||||
static void LinkOpponentHandleClearUnkVar(void);
|
||||
static void LinkOpponentHandleSetUnkVar(void);
|
||||
static void LinkOpponentHandleClearUnkFlag(void);
|
||||
static void LinkOpponentHandleToggleUnkFlag(void);
|
||||
static void LinkOpponentHandleHitAnimation(void);
|
||||
static void LinkOpponentHandleCmd42(void);
|
||||
static void LinkOpponentHandleCantSwitch(void);
|
||||
static void LinkOpponentHandlePlaySE(void);
|
||||
static void LinkOpponentHandlePlayFanfare(void);
|
||||
static void LinkOpponentHandleFaintingCry(void);
|
||||
@@ -71,83 +71,82 @@ static void LinkOpponentHandleSpriteInvisibility(void);
|
||||
static void LinkOpponentHandleBattleAnimation(void);
|
||||
static void LinkOpponentHandleLinkStandbyMsg(void);
|
||||
static void LinkOpponentHandleResetActionMoveSelection(void);
|
||||
static void LinkOpponentHandleCmd55(void);
|
||||
static void LinkOpponentHandleEndLinkBattle(void);
|
||||
static void LinkOpponentCmdEnd(void);
|
||||
|
||||
static void LinkOpponentBufferRunCommand(void);
|
||||
static void LinkOpponentBufferExecCompleted(void);
|
||||
static void SwitchIn_HandleSoundAndEnd(void);
|
||||
static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst);
|
||||
static void SetLinkOpponentMonData(u8 monId);
|
||||
static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
|
||||
static void DoSwitchOutAnimation(void);
|
||||
static void LinkOpponentDoMoveAnimation(void);
|
||||
static void SwitchIn_HandleSoundAndEnd(void);
|
||||
static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
|
||||
static void Task_StartSendOutAnim(u8 taskId);
|
||||
static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
|
||||
static void EndDrawPartyStatusSummary(void);
|
||||
|
||||
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
{
|
||||
LinkOpponentHandleGetMonData,
|
||||
LinkOpponentHandleGetRawMonData,
|
||||
LinkOpponentHandleSetMonData,
|
||||
LinkOpponentHandleSetRawMonData,
|
||||
LinkOpponentHandleLoadMonSprite,
|
||||
LinkOpponentHandleSwitchInAnim,
|
||||
LinkOpponentHandleReturnMonToBall,
|
||||
LinkOpponentHandleDrawTrainerPic,
|
||||
LinkOpponentHandleTrainerSlide,
|
||||
LinkOpponentHandleTrainerSlideBack,
|
||||
LinkOpponentHandleFaintAnimation,
|
||||
LinkOpponentHandlePaletteFade,
|
||||
LinkOpponentHandleSuccessBallThrowAnim,
|
||||
LinkOpponentHandleBallThrowAnim,
|
||||
LinkOpponentHandlePause,
|
||||
LinkOpponentHandleMoveAnimation,
|
||||
LinkOpponentHandlePrintString,
|
||||
LinkOpponentHandlePrintSelectionString,
|
||||
LinkOpponentHandleChooseAction,
|
||||
LinkOpponentHandleUnknownYesNoBox,
|
||||
LinkOpponentHandleChooseMove,
|
||||
LinkOpponentHandleChooseItem,
|
||||
LinkOpponentHandleChoosePokemon,
|
||||
LinkOpponentHandleCmd23,
|
||||
LinkOpponentHandleHealthBarUpdate,
|
||||
LinkOpponentHandleExpUpdate,
|
||||
LinkOpponentHandleStatusIconUpdate,
|
||||
LinkOpponentHandleStatusAnimation,
|
||||
LinkOpponentHandleStatusXor,
|
||||
LinkOpponentHandleDataTransfer,
|
||||
LinkOpponentHandleDMA3Transfer,
|
||||
LinkOpponentHandlePlayBGM,
|
||||
LinkOpponentHandleCmd32,
|
||||
LinkOpponentHandleTwoReturnValues,
|
||||
LinkOpponentHandleChosenMonReturnValue,
|
||||
LinkOpponentHandleOneReturnValue,
|
||||
LinkOpponentHandleOneReturnValue_Duplicate,
|
||||
LinkOpponentHandleCmd37,
|
||||
LinkOpponentHandleCmd38,
|
||||
LinkOpponentHandleCmd39,
|
||||
LinkOpponentHandleCmd40,
|
||||
LinkOpponentHandleHitAnimation,
|
||||
LinkOpponentHandleCmd42,
|
||||
LinkOpponentHandlePlaySE,
|
||||
LinkOpponentHandlePlayFanfare,
|
||||
LinkOpponentHandleFaintingCry,
|
||||
LinkOpponentHandleIntroSlide,
|
||||
LinkOpponentHandleIntroTrainerBallThrow,
|
||||
LinkOpponentHandleDrawPartyStatusSummary,
|
||||
LinkOpponentHandleHidePartyStatusSummary,
|
||||
LinkOpponentHandleEndBounceEffect,
|
||||
LinkOpponentHandleSpriteInvisibility,
|
||||
LinkOpponentHandleBattleAnimation,
|
||||
LinkOpponentHandleLinkStandbyMsg,
|
||||
LinkOpponentHandleResetActionMoveSelection,
|
||||
LinkOpponentHandleCmd55,
|
||||
LinkOpponentCmdEnd
|
||||
[CONTROLLER_GETMONDATA] = LinkOpponentHandleGetMonData,
|
||||
[CONTROLLER_GETRAWMONDATA] = LinkOpponentHandleGetRawMonData,
|
||||
[CONTROLLER_SETMONDATA] = LinkOpponentHandleSetMonData,
|
||||
[CONTROLLER_SETRAWMONDATA] = LinkOpponentHandleSetRawMonData,
|
||||
[CONTROLLER_LOADMONSPRITE] = LinkOpponentHandleLoadMonSprite,
|
||||
[CONTROLLER_SWITCHINANIM] = LinkOpponentHandleSwitchInAnim,
|
||||
[CONTROLLER_RETURNMONTOBALL] = LinkOpponentHandleReturnMonToBall,
|
||||
[CONTROLLER_DRAWTRAINERPIC] = LinkOpponentHandleDrawTrainerPic,
|
||||
[CONTROLLER_TRAINERSLIDE] = LinkOpponentHandleTrainerSlide,
|
||||
[CONTROLLER_TRAINERSLIDEBACK] = LinkOpponentHandleTrainerSlideBack,
|
||||
[CONTROLLER_FAINTANIMATION] = LinkOpponentHandleFaintAnimation,
|
||||
[CONTROLLER_PALETTEFADE] = LinkOpponentHandlePaletteFade,
|
||||
[CONTROLLER_SUCCESSBALLTHROWANIM] = LinkOpponentHandleSuccessBallThrowAnim,
|
||||
[CONTROLLER_BALLTHROWANIM] = LinkOpponentHandleBallThrowAnim,
|
||||
[CONTROLLER_PAUSE] = LinkOpponentHandlePause,
|
||||
[CONTROLLER_MOVEANIMATION] = LinkOpponentHandleMoveAnimation,
|
||||
[CONTROLLER_PRINTSTRING] = LinkOpponentHandlePrintString,
|
||||
[CONTROLLER_PRINTSTRINGPLAYERONLY] = LinkOpponentHandlePrintSelectionString,
|
||||
[CONTROLLER_CHOOSEACTION] = LinkOpponentHandleChooseAction,
|
||||
[CONTROLLER_UNKNOWNYESNOBOX] = LinkOpponentHandleUnknownYesNoBox,
|
||||
[CONTROLLER_CHOOSEMOVE] = LinkOpponentHandleChooseMove,
|
||||
[CONTROLLER_OPENBAG] = LinkOpponentHandleChooseItem,
|
||||
[CONTROLLER_CHOOSEPOKEMON] = LinkOpponentHandleChoosePokemon,
|
||||
[CONTROLLER_23] = LinkOpponentHandleCmd23,
|
||||
[CONTROLLER_HEALTHBARUPDATE] = LinkOpponentHandleHealthBarUpdate,
|
||||
[CONTROLLER_EXPUPDATE] = LinkOpponentHandleExpUpdate,
|
||||
[CONTROLLER_STATUSICONUPDATE] = LinkOpponentHandleStatusIconUpdate,
|
||||
[CONTROLLER_STATUSANIMATION] = LinkOpponentHandleStatusAnimation,
|
||||
[CONTROLLER_STATUSXOR] = LinkOpponentHandleStatusXor,
|
||||
[CONTROLLER_DATATRANSFER] = LinkOpponentHandleDataTransfer,
|
||||
[CONTROLLER_DMA3TRANSFER] = LinkOpponentHandleDMA3Transfer,
|
||||
[CONTROLLER_PLAYBGM] = LinkOpponentHandlePlayBGM,
|
||||
[CONTROLLER_32] = LinkOpponentHandleCmd32,
|
||||
[CONTROLLER_TWORETURNVALUES] = LinkOpponentHandleTwoReturnValues,
|
||||
[CONTROLLER_CHOSENMONRETURNVALUE] = LinkOpponentHandleChosenMonReturnValue,
|
||||
[CONTROLLER_ONERETURNVALUE] = LinkOpponentHandleOneReturnValue,
|
||||
[CONTROLLER_ONERETURNVALUE_DUPLICATE] = LinkOpponentHandleOneReturnValue_Duplicate,
|
||||
[CONTROLLER_CLEARUNKVAR] = LinkOpponentHandleClearUnkVar,
|
||||
[CONTROLLER_SETUNKVAR] = LinkOpponentHandleSetUnkVar,
|
||||
[CONTROLLER_CLEARUNKFLAG] = LinkOpponentHandleClearUnkFlag,
|
||||
[CONTROLLER_TOGGLEUNKFLAG] = LinkOpponentHandleToggleUnkFlag,
|
||||
[CONTROLLER_HITANIMATION] = LinkOpponentHandleHitAnimation,
|
||||
[CONTROLLER_CANTSWITCH] = LinkOpponentHandleCantSwitch,
|
||||
[CONTROLLER_PLAYSE] = LinkOpponentHandlePlaySE,
|
||||
[CONTROLLER_PLAYFANFARE] = LinkOpponentHandlePlayFanfare,
|
||||
[CONTROLLER_FAINTINGCRY] = LinkOpponentHandleFaintingCry,
|
||||
[CONTROLLER_INTROSLIDE] = LinkOpponentHandleIntroSlide,
|
||||
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkOpponentHandleIntroTrainerBallThrow,
|
||||
[CONTROLLER_DRAWPARTYSTATUSSUMMARY] = LinkOpponentHandleDrawPartyStatusSummary,
|
||||
[CONTROLLER_HIDEPARTYSTATUSSUMMARY] = LinkOpponentHandleHidePartyStatusSummary,
|
||||
[CONTROLLER_ENDBOUNCE] = LinkOpponentHandleEndBounceEffect,
|
||||
[CONTROLLER_SPRITEINVISIBILITY] = LinkOpponentHandleSpriteInvisibility,
|
||||
[CONTROLLER_BATTLEANIMATION] = LinkOpponentHandleBattleAnimation,
|
||||
[CONTROLLER_LINKSTANDBYMSG] = LinkOpponentHandleLinkStandbyMsg,
|
||||
[CONTROLLER_RESETACTIONMOVESELECTION] = LinkOpponentHandleResetActionMoveSelection,
|
||||
[CONTROLLER_ENDLINKBATTLE] = LinkOpponentHandleEndLinkBattle,
|
||||
[CONTROLLER_TERMINATOR_NOP] = LinkOpponentCmdEnd
|
||||
};
|
||||
|
||||
|
||||
static void LinkOpponentDummy(void)
|
||||
{
|
||||
}
|
||||
@@ -161,7 +160,7 @@ static void LinkOpponentBufferRunCommand(void)
|
||||
{
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sLinkOpponentBufferCommands))
|
||||
if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkOpponentBufferCommands))
|
||||
sLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
else
|
||||
LinkOpponentBufferExecCompleted();
|
||||
@@ -188,7 +187,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
|
||||
static void Intro_DelayAndEnd(void)
|
||||
{
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
LinkOpponentBufferExecCompleted();
|
||||
@@ -197,31 +196,34 @@ static void Intro_DelayAndEnd(void)
|
||||
|
||||
static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
{
|
||||
bool8 var = FALSE;
|
||||
bool32 healthboxAnimDone = FALSE;
|
||||
|
||||
if (!IsDoubleBattle() || ((IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))))
|
||||
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
|
||||
{
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
var = TRUE;
|
||||
healthboxAnimDone = TRUE;
|
||||
}
|
||||
else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == gSprites[gHealthboxSpriteIds[gActiveBattler]].callback)
|
||||
{
|
||||
var = TRUE;
|
||||
healthboxAnimDone = TRUE;
|
||||
}
|
||||
|
||||
if (IsCryPlayingOrClearCrySongs())
|
||||
var = FALSE;
|
||||
if (var)
|
||||
healthboxAnimDone = FALSE;
|
||||
|
||||
if (healthboxAnimDone)
|
||||
{
|
||||
if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||
|| !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
|| !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
return;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
}
|
||||
@@ -287,8 +289,8 @@ static void TryShinyAnimAfterMonAnim(void)
|
||||
}
|
||||
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
@@ -301,6 +303,7 @@ 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);
|
||||
else
|
||||
@@ -330,7 +333,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -347,9 +350,9 @@ static void DoHitAnimBlinkSpriteEffect(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(gSprites[spriteId].data[1] % 4))
|
||||
if ((gSprites[spriteId].data[1] % 4) == 0)
|
||||
gSprites[spriteId].invisible ^= 1;
|
||||
++gSprites[spriteId].data[1];
|
||||
gSprites[spriteId].data[1]++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -359,6 +362,7 @@ static void SwitchIn_ShowSubstitute(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
|
||||
}
|
||||
}
|
||||
@@ -376,11 +380,14 @@ static void SwitchIn_ShowHealthbox(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
|
||||
StartHealthboxSlideIn(gActiveBattler);
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
@@ -392,11 +399,13 @@ static void SwitchIn_ShowHealthbox(void)
|
||||
static void SwitchIn_TryShinyAnim(void)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
|
||||
{
|
||||
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
|
||||
}
|
||||
|
||||
if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
{
|
||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
|
||||
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
@@ -439,21 +448,21 @@ static void LinkOpponentHandleGetMonData(void)
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
if (!gBattleBufferA[gActiveBattler][2])
|
||||
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||
{
|
||||
size += CopyLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler], monData);
|
||||
}
|
||||
else
|
||||
{
|
||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||
for (i = 0; i < PARTY_SIZE; ++i)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (monToCheck & 1)
|
||||
size += CopyLinkOpponentMonData(i, monData + size);
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -472,7 +481,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
|
||||
case REQUEST_ALL_BATTLE:
|
||||
battleMon.species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES);
|
||||
battleMon.item = GetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM);
|
||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
||||
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||
{
|
||||
battleMon.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size);
|
||||
battleMon.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
||||
@@ -503,7 +512,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
|
||||
StringCopy_Nickname(battleMon.nickname, nickname);
|
||||
GetMonData(&gEnemyParty[monId], MON_DATA_OT_NAME, battleMon.otName);
|
||||
src = (u8 *)&battleMon;
|
||||
for (size = 0; size < sizeof(battleMon); ++size)
|
||||
for (size = 0; size < sizeof(battleMon); size++)
|
||||
dst[size] = src[size];
|
||||
break;
|
||||
case REQUEST_SPECIES_BATTLE:
|
||||
@@ -519,14 +528,14 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
|
||||
size = 2;
|
||||
break;
|
||||
case REQUEST_MOVES_PP_BATTLE:
|
||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
||||
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||
{
|
||||
moveData.moves[size] = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + size);
|
||||
moveData.pp[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
||||
}
|
||||
moveData.ppBonuses = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES);
|
||||
src = (u8 *)(&moveData);
|
||||
for (size = 0; size < sizeof(moveData); ++size)
|
||||
for (size = 0; size < sizeof(moveData); size++)
|
||||
dst[size] = src[size];
|
||||
break;
|
||||
case REQUEST_MOVE1_BATTLE:
|
||||
@@ -539,10 +548,10 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
|
||||
size = 2;
|
||||
break;
|
||||
case REQUEST_PP_DATA_BATTLE:
|
||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
||||
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||
dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + size);
|
||||
dst[size] = GetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES);
|
||||
++size;
|
||||
size++;
|
||||
break;
|
||||
case REQUEST_PPMOVE1_BATTLE:
|
||||
case REQUEST_PPMOVE2_BATTLE:
|
||||
@@ -772,14 +781,14 @@ static void LinkOpponentHandleSetMonData(void)
|
||||
u8 monToCheck;
|
||||
u8 i;
|
||||
|
||||
if (!gBattleBufferA[gActiveBattler][2])
|
||||
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||
{
|
||||
SetLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler]);
|
||||
}
|
||||
else
|
||||
{
|
||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||
for (i = 0; i < PARTY_SIZE; ++i)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (monToCheck & 1)
|
||||
SetLinkOpponentMonData(i);
|
||||
@@ -803,7 +812,7 @@ static void SetLinkOpponentMonData(u8 monId)
|
||||
|
||||
SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &battlePokemon->species);
|
||||
SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item);
|
||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
|
||||
SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]);
|
||||
@@ -842,7 +851,7 @@ static void SetLinkOpponentMonData(u8 monId)
|
||||
SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
|
||||
break;
|
||||
case REQUEST_MOVES_PP_BATTLE:
|
||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]);
|
||||
SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]);
|
||||
@@ -1010,8 +1019,9 @@ static void LinkOpponentHandleSetRawMonData(void)
|
||||
u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
|
||||
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
|
||||
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1021,15 +1031,19 @@ static void LinkOpponentHandleLoadMonSprite(void)
|
||||
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
|
||||
SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
|
||||
}
|
||||
|
||||
@@ -1051,22 +1065,27 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
GetBattlerSpriteSubpriority(battlerId));
|
||||
|
||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
|
||||
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
|
||||
|
||||
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleReturnMonToBall(void)
|
||||
{
|
||||
if (!gBattleBufferA[gActiveBattler][1])
|
||||
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
|
||||
@@ -1102,6 +1121,8 @@ static void DoSwitchOutAnimation(void)
|
||||
}
|
||||
}
|
||||
|
||||
#define sSpeedX data[0]
|
||||
|
||||
static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
{
|
||||
s16 xPos;
|
||||
@@ -1109,10 +1130,11 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
if (GetBattlerPosition(gActiveBattler) & BIT_FLANK) // second mon
|
||||
if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
|
||||
xPos = 152;
|
||||
else // first mon
|
||||
xPos = 200;
|
||||
|
||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
@@ -1134,7 +1156,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
else
|
||||
{
|
||||
xPos = 176;
|
||||
if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
|
||||
if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM)
|
||||
{
|
||||
trainerPicId = GetUnionRoomTrainerPic();
|
||||
}
|
||||
@@ -1162,13 +1184,14 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
xPos,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
@@ -1177,6 +1200,8 @@ static void LinkOpponentHandleTrainerSlide(void)
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
#undef sSpeedX
|
||||
|
||||
static void LinkOpponentHandleTrainerSlideBack(void)
|
||||
{
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
@@ -1194,7 +1219,7 @@ static void LinkOpponentHandleFaintAnimation(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||
++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1262,7 +1287,7 @@ static void LinkOpponentDoMoveAnimation(void)
|
||||
{
|
||||
case 0:
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||
{
|
||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||
@@ -1272,7 +1297,7 @@ static void LinkOpponentDoMoveAnimation(void)
|
||||
case 1:
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(0);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||
DoMoveAnim(move);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||
}
|
||||
@@ -1281,7 +1306,7 @@ static void LinkOpponentDoMoveAnimation(void)
|
||||
gAnimScriptCallback();
|
||||
if (!gAnimScriptActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(1);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||
{
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||
@@ -1358,6 +1383,7 @@ static void LinkOpponentHandleHealthBarUpdate(void)
|
||||
|
||||
LoadBattleBarGfx(0);
|
||||
hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
||||
|
||||
if (hpVal != INSTANT_HP_BAR_DROP)
|
||||
{
|
||||
u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
@@ -1371,6 +1397,7 @@ static void LinkOpponentHandleHealthBarUpdate(void)
|
||||
|
||||
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
|
||||
}
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
|
||||
}
|
||||
|
||||
@@ -1447,27 +1474,27 @@ static void LinkOpponentHandleOneReturnValue_Duplicate(void)
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleCmd37(void)
|
||||
static void LinkOpponentHandleClearUnkVar(void)
|
||||
{
|
||||
gUnknown_2022870.field_0 = 0;
|
||||
gUnusedControllerStruct.unk = 0;
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleCmd38(void)
|
||||
static void LinkOpponentHandleSetUnkVar(void)
|
||||
{
|
||||
gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1];
|
||||
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleCmd39(void)
|
||||
static void LinkOpponentHandleClearUnkFlag(void)
|
||||
{
|
||||
gUnknown_2022870.flag_x80 = 0;
|
||||
gUnusedControllerStruct.flag = 0;
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleCmd40(void)
|
||||
static void LinkOpponentHandleToggleUnkFlag(void)
|
||||
{
|
||||
gUnknown_2022870.flag_x80 ^= 1;
|
||||
gUnusedControllerStruct.flag ^= 1;
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1486,7 +1513,7 @@ static void LinkOpponentHandleHitAnimation(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleCmd42(void)
|
||||
static void LinkOpponentHandleCantSwitch(void)
|
||||
{
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
@@ -1499,6 +1526,7 @@ static void LinkOpponentHandlePlaySE(void)
|
||||
pan = SOUND_PAN_ATTACKER;
|
||||
else
|
||||
pan = SOUND_PAN_TARGET;
|
||||
|
||||
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
@@ -1526,18 +1554,23 @@ static void LinkOpponentHandleIntroSlide(void)
|
||||
|
||||
static void LinkOpponentHandleIntroTrainerBallThrow(void)
|
||||
{
|
||||
u8 paletteNum, taskId;
|
||||
u8 taskId;
|
||||
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
|
||||
|
||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDummy;
|
||||
}
|
||||
@@ -1576,19 +1609,19 @@ static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite)
|
||||
|
||||
static void LinkOpponentHandleDrawPartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
{
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
|
||||
|
||||
if (gBattleBufferA[gActiveBattler][2])
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
|
||||
{
|
||||
++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay++;
|
||||
return;
|
||||
}
|
||||
else
|
||||
@@ -1596,17 +1629,20 @@ static void LinkOpponentHandleDrawPartyStatusSummary(void)
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay = 0;
|
||||
}
|
||||
}
|
||||
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||
if (gBattleBufferA[gActiveBattler][2])
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0x5D;
|
||||
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
|
||||
}
|
||||
}
|
||||
|
||||
static void EndDrawPartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 0x5C)
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 92)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||
LinkOpponentBufferExecCompleted();
|
||||
@@ -1659,12 +1695,13 @@ static void LinkOpponentHandleResetActionMoveSelection(void)
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleCmd55(void)
|
||||
static void LinkOpponentHandleEndLinkBattle(void)
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][1] == B_OUTCOME_DREW)
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
else
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW;
|
||||
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
|
||||
@@ -51,12 +51,12 @@ static void LinkPartnerHandleTwoReturnValues(void);
|
||||
static void LinkPartnerHandleChosenMonReturnValue(void);
|
||||
static void LinkPartnerHandleOneReturnValue(void);
|
||||
static void LinkPartnerHandleOneReturnValue_Duplicate(void);
|
||||
static void LinkPartnerHandleCmd37(void);
|
||||
static void LinkPartnerHandleCmd38(void);
|
||||
static void LinkPartnerHandleCmd39(void);
|
||||
static void LinkPartnerHandleCmd40(void);
|
||||
static void LinkPartnerHandleClearUnkVar(void);
|
||||
static void LinkPartnerHandleSetUnkVar(void);
|
||||
static void LinkPartnerHandleClearUnkFlag(void);
|
||||
static void LinkPartnerHandleToggleUnkFlag(void);
|
||||
static void LinkPartnerHandleHitAnimation(void);
|
||||
static void LinkPartnerHandleCmd42(void);
|
||||
static void LinkPartnerHandleCantSwitch(void);
|
||||
static void LinkPartnerHandlePlaySE(void);
|
||||
static void LinkPartnerHandlePlayFanfare(void);
|
||||
static void LinkPartnerHandleFaintingCry(void);
|
||||
@@ -69,7 +69,7 @@ static void LinkPartnerHandleSpriteInvisibility(void);
|
||||
static void LinkPartnerHandleBattleAnimation(void);
|
||||
static void LinkPartnerHandleLinkStandbyMsg(void);
|
||||
static void LinkPartnerHandleResetActionMoveSelection(void);
|
||||
static void LinkPartnerHandleCmd55(void);
|
||||
static void LinkPartnerHandleEndLinkBattle(void);
|
||||
static void LinkPartnerCmdEnd(void);
|
||||
|
||||
static void LinkPartnerBufferRunCommand(void);
|
||||
@@ -85,63 +85,63 @@ static void EndDrawPartyStatusSummary(void);
|
||||
|
||||
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
{
|
||||
LinkPartnerHandleGetMonData,
|
||||
LinkPartnerHandleGetRawMonData,
|
||||
LinkPartnerHandleSetMonData,
|
||||
LinkPartnerHandleSetRawMonData,
|
||||
LinkPartnerHandleLoadMonSprite,
|
||||
LinkPartnerHandleSwitchInAnim,
|
||||
LinkPartnerHandleReturnMonToBall,
|
||||
LinkPartnerHandleDrawTrainerPic,
|
||||
LinkPartnerHandleTrainerSlide,
|
||||
LinkPartnerHandleTrainerSlideBack,
|
||||
LinkPartnerHandleFaintAnimation,
|
||||
LinkPartnerHandlePaletteFade,
|
||||
LinkPartnerHandleSuccessBallThrowAnim,
|
||||
LinkPartnerHandleBallThrowAnim,
|
||||
LinkPartnerHandlePause,
|
||||
LinkPartnerHandleMoveAnimation,
|
||||
LinkPartnerHandlePrintString,
|
||||
LinkPartnerHandlePrintSelectionString,
|
||||
LinkPartnerHandleChooseAction,
|
||||
LinkPartnerHandleUnknownYesNoBox,
|
||||
LinkPartnerHandleChooseMove,
|
||||
LinkPartnerHandleChooseItem,
|
||||
LinkPartnerHandleChoosePokemon,
|
||||
LinkPartnerHandleCmd23,
|
||||
LinkPartnerHandleHealthBarUpdate,
|
||||
LinkPartnerHandleExpUpdate,
|
||||
LinkPartnerHandleStatusIconUpdate,
|
||||
LinkPartnerHandleStatusAnimation,
|
||||
LinkPartnerHandleStatusXor,
|
||||
LinkPartnerHandleDataTransfer,
|
||||
LinkPartnerHandleDMA3Transfer,
|
||||
LinkPartnerHandlePlayBGM,
|
||||
LinkPartnerHandleCmd32,
|
||||
LinkPartnerHandleTwoReturnValues,
|
||||
LinkPartnerHandleChosenMonReturnValue,
|
||||
LinkPartnerHandleOneReturnValue,
|
||||
LinkPartnerHandleOneReturnValue_Duplicate,
|
||||
LinkPartnerHandleCmd37,
|
||||
LinkPartnerHandleCmd38,
|
||||
LinkPartnerHandleCmd39,
|
||||
LinkPartnerHandleCmd40,
|
||||
LinkPartnerHandleHitAnimation,
|
||||
LinkPartnerHandleCmd42,
|
||||
LinkPartnerHandlePlaySE,
|
||||
LinkPartnerHandlePlayFanfare,
|
||||
LinkPartnerHandleFaintingCry,
|
||||
LinkPartnerHandleIntroSlide,
|
||||
LinkPartnerHandleIntroTrainerBallThrow,
|
||||
LinkPartnerHandleDrawPartyStatusSummary,
|
||||
LinkPartnerHandleHidePartyStatusSummary,
|
||||
LinkPartnerHandleEndBounceEffect,
|
||||
LinkPartnerHandleSpriteInvisibility,
|
||||
LinkPartnerHandleBattleAnimation,
|
||||
LinkPartnerHandleLinkStandbyMsg,
|
||||
LinkPartnerHandleResetActionMoveSelection,
|
||||
LinkPartnerHandleCmd55,
|
||||
LinkPartnerCmdEnd
|
||||
[CONTROLLER_GETMONDATA] = LinkPartnerHandleGetMonData,
|
||||
[CONTROLLER_GETRAWMONDATA] = LinkPartnerHandleGetRawMonData,
|
||||
[CONTROLLER_SETMONDATA] = LinkPartnerHandleSetMonData,
|
||||
[CONTROLLER_SETRAWMONDATA] = LinkPartnerHandleSetRawMonData,
|
||||
[CONTROLLER_LOADMONSPRITE] = LinkPartnerHandleLoadMonSprite,
|
||||
[CONTROLLER_SWITCHINANIM] = LinkPartnerHandleSwitchInAnim,
|
||||
[CONTROLLER_RETURNMONTOBALL] = LinkPartnerHandleReturnMonToBall,
|
||||
[CONTROLLER_DRAWTRAINERPIC] = LinkPartnerHandleDrawTrainerPic,
|
||||
[CONTROLLER_TRAINERSLIDE] = LinkPartnerHandleTrainerSlide,
|
||||
[CONTROLLER_TRAINERSLIDEBACK] = LinkPartnerHandleTrainerSlideBack,
|
||||
[CONTROLLER_FAINTANIMATION] = LinkPartnerHandleFaintAnimation,
|
||||
[CONTROLLER_PALETTEFADE] = LinkPartnerHandlePaletteFade,
|
||||
[CONTROLLER_SUCCESSBALLTHROWANIM] = LinkPartnerHandleSuccessBallThrowAnim,
|
||||
[CONTROLLER_BALLTHROWANIM] = LinkPartnerHandleBallThrowAnim,
|
||||
[CONTROLLER_PAUSE] = LinkPartnerHandlePause,
|
||||
[CONTROLLER_MOVEANIMATION] = LinkPartnerHandleMoveAnimation,
|
||||
[CONTROLLER_PRINTSTRING] = LinkPartnerHandlePrintString,
|
||||
[CONTROLLER_PRINTSTRINGPLAYERONLY] = LinkPartnerHandlePrintSelectionString,
|
||||
[CONTROLLER_CHOOSEACTION] = LinkPartnerHandleChooseAction,
|
||||
[CONTROLLER_UNKNOWNYESNOBOX] = LinkPartnerHandleUnknownYesNoBox,
|
||||
[CONTROLLER_CHOOSEMOVE] = LinkPartnerHandleChooseMove,
|
||||
[CONTROLLER_OPENBAG] = LinkPartnerHandleChooseItem,
|
||||
[CONTROLLER_CHOOSEPOKEMON] = LinkPartnerHandleChoosePokemon,
|
||||
[CONTROLLER_23] = LinkPartnerHandleCmd23,
|
||||
[CONTROLLER_HEALTHBARUPDATE] = LinkPartnerHandleHealthBarUpdate,
|
||||
[CONTROLLER_EXPUPDATE] = LinkPartnerHandleExpUpdate,
|
||||
[CONTROLLER_STATUSICONUPDATE] = LinkPartnerHandleStatusIconUpdate,
|
||||
[CONTROLLER_STATUSANIMATION] = LinkPartnerHandleStatusAnimation,
|
||||
[CONTROLLER_STATUSXOR] = LinkPartnerHandleStatusXor,
|
||||
[CONTROLLER_DATATRANSFER] = LinkPartnerHandleDataTransfer,
|
||||
[CONTROLLER_DMA3TRANSFER] = LinkPartnerHandleDMA3Transfer,
|
||||
[CONTROLLER_PLAYBGM] = LinkPartnerHandlePlayBGM,
|
||||
[CONTROLLER_32] = LinkPartnerHandleCmd32,
|
||||
[CONTROLLER_TWORETURNVALUES] = LinkPartnerHandleTwoReturnValues,
|
||||
[CONTROLLER_CHOSENMONRETURNVALUE] = LinkPartnerHandleChosenMonReturnValue,
|
||||
[CONTROLLER_ONERETURNVALUE] = LinkPartnerHandleOneReturnValue,
|
||||
[CONTROLLER_ONERETURNVALUE_DUPLICATE] = LinkPartnerHandleOneReturnValue_Duplicate,
|
||||
[CONTROLLER_CLEARUNKVAR] = LinkPartnerHandleClearUnkVar,
|
||||
[CONTROLLER_SETUNKVAR] = LinkPartnerHandleSetUnkVar,
|
||||
[CONTROLLER_CLEARUNKFLAG] = LinkPartnerHandleClearUnkFlag,
|
||||
[CONTROLLER_TOGGLEUNKFLAG] = LinkPartnerHandleToggleUnkFlag,
|
||||
[CONTROLLER_HITANIMATION] = LinkPartnerHandleHitAnimation,
|
||||
[CONTROLLER_CANTSWITCH] = LinkPartnerHandleCantSwitch,
|
||||
[CONTROLLER_PLAYSE] = LinkPartnerHandlePlaySE,
|
||||
[CONTROLLER_PLAYFANFARE] = LinkPartnerHandlePlayFanfare,
|
||||
[CONTROLLER_FAINTINGCRY] = LinkPartnerHandleFaintingCry,
|
||||
[CONTROLLER_INTROSLIDE] = LinkPartnerHandleIntroSlide,
|
||||
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkPartnerHandleIntroTrainerBallThrow,
|
||||
[CONTROLLER_DRAWPARTYSTATUSSUMMARY] = LinkPartnerHandleDrawPartyStatusSummary,
|
||||
[CONTROLLER_HIDEPARTYSTATUSSUMMARY] = LinkPartnerHandleHidePartyStatusSummary,
|
||||
[CONTROLLER_ENDBOUNCE] = LinkPartnerHandleEndBounceEffect,
|
||||
[CONTROLLER_SPRITEINVISIBILITY] = LinkPartnerHandleSpriteInvisibility,
|
||||
[CONTROLLER_BATTLEANIMATION] = LinkPartnerHandleBattleAnimation,
|
||||
[CONTROLLER_LINKSTANDBYMSG] = LinkPartnerHandleLinkStandbyMsg,
|
||||
[CONTROLLER_RESETACTIONMOVESELECTION] = LinkPartnerHandleResetActionMoveSelection,
|
||||
[CONTROLLER_ENDLINKBATTLE] = LinkPartnerHandleEndLinkBattle,
|
||||
[CONTROLLER_TERMINATOR_NOP] = LinkPartnerCmdEnd
|
||||
};
|
||||
|
||||
static void LinkPartnerDummy(void)
|
||||
@@ -157,7 +157,7 @@ static void LinkPartnerBufferRunCommand(void)
|
||||
{
|
||||
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sLinkPartnerBufferCommands))
|
||||
if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkPartnerBufferCommands))
|
||||
sLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
|
||||
else
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -174,7 +174,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
BattleGfxSfxDummy3(0);
|
||||
BattleGfxSfxDummy3(MALE);
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -183,7 +183,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
|
||||
static void Intro_DelayAndEnd(void)
|
||||
{
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -192,21 +192,23 @@ static void Intro_DelayAndEnd(void)
|
||||
|
||||
static void Intro_WaitForHealthbox(void)
|
||||
{
|
||||
bool32 var = FALSE;
|
||||
bool32 finished = FALSE;
|
||||
|
||||
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
|
||||
{
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
var = TRUE;
|
||||
finished = TRUE;
|
||||
}
|
||||
else if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
|
||||
{
|
||||
var = TRUE;
|
||||
finished = TRUE;
|
||||
}
|
||||
|
||||
if (IsCryPlayingOrClearCrySongs())
|
||||
var = FALSE;
|
||||
if (var)
|
||||
finished = FALSE;
|
||||
|
||||
if (finished)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
|
||||
gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
|
||||
@@ -216,29 +218,33 @@ static void Intro_WaitForHealthbox(void)
|
||||
static void Intro_ShowHealthbox(void)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive
|
||||
&& ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay != 1)
|
||||
{
|
||||
if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay != 1)
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
|
||||
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
{
|
||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
|
||||
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
|
||||
HEALTHBOX_ALL);
|
||||
StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
|
||||
}
|
||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
|
||||
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
|
||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK],
|
||||
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]],
|
||||
HEALTHBOX_ALL);
|
||||
StartHealthboxSlideIn(gActiveBattler);
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
gBattleSpritesDataPtr->animationData->introAnimActive = FALSE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForHealthbox;
|
||||
|
||||
StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
|
||||
}
|
||||
|
||||
DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler],
|
||||
&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]],
|
||||
HEALTHBOX_ALL);
|
||||
StartHealthboxSlideIn(gActiveBattler);
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
gBattleSpritesDataPtr->animationData->introAnimActive = FALSE;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForHealthbox;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -253,6 +259,7 @@ 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);
|
||||
@@ -288,7 +295,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -305,9 +312,9 @@ static void DoHitAnimBlinkSpriteEffect(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(gSprites[spriteId].data[1] % 4))
|
||||
if ((gSprites[spriteId].data[1] % 4) == 0)
|
||||
gSprites[spriteId].invisible ^= 1;
|
||||
++gSprites[spriteId].data[1];
|
||||
gSprites[spriteId].data[1]++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -317,6 +324,7 @@ static void SwitchIn_ShowSubstitute(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = SwitchIn_WaitAndEnd;
|
||||
}
|
||||
}
|
||||
@@ -324,17 +332,21 @@ static void SwitchIn_ShowSubstitute(void)
|
||||
static void SwitchIn_WaitAndEnd(void)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
||||
static void SwitchIn_ShowHealthbox(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
|
||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||
@@ -349,8 +361,11 @@ static void SwitchIn_ShowHealthbox(void)
|
||||
static void SwitchIn_TryShinyAnim(void)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
{
|
||||
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
|
||||
}
|
||||
|
||||
if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
{
|
||||
@@ -394,21 +409,21 @@ static void LinkPartnerHandleGetMonData(void)
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
if (!gBattleBufferA[gActiveBattler][2])
|
||||
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||
{
|
||||
size += CopyLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler], monData);
|
||||
}
|
||||
else
|
||||
{
|
||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||
for (i = 0; i < PARTY_SIZE; ++i)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (monToCheck & 1)
|
||||
size += CopyLinkPartnerMonData(i, monData + size);
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -427,7 +442,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
case REQUEST_ALL_BATTLE:
|
||||
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
|
||||
battleMon.item = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM);
|
||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
||||
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||
{
|
||||
battleMon.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size);
|
||||
battleMon.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
||||
@@ -458,7 +473,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
StringCopy_Nickname(battleMon.nickname, nickname);
|
||||
GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName);
|
||||
src = (u8 *)&battleMon;
|
||||
for (size = 0; size < sizeof(battleMon); ++size)
|
||||
for (size = 0; size < sizeof(battleMon); size++)
|
||||
dst[size] = src[size];
|
||||
break;
|
||||
case REQUEST_SPECIES_BATTLE:
|
||||
@@ -474,14 +489,14 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
size = 2;
|
||||
break;
|
||||
case REQUEST_MOVES_PP_BATTLE:
|
||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
||||
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||
{
|
||||
moveData.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size);
|
||||
moveData.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
||||
}
|
||||
moveData.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES);
|
||||
src = (u8 *)(&moveData);
|
||||
for (size = 0; size < sizeof(moveData); ++size)
|
||||
for (size = 0; size < sizeof(moveData); size++)
|
||||
dst[size] = src[size];
|
||||
break;
|
||||
case REQUEST_MOVE1_BATTLE:
|
||||
@@ -494,10 +509,10 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
size = 2;
|
||||
break;
|
||||
case REQUEST_PP_DATA_BATTLE:
|
||||
for (size = 0; size < MAX_MON_MOVES; ++size)
|
||||
for (size = 0; size < MAX_MON_MOVES; size++)
|
||||
dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size);
|
||||
dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES);
|
||||
++size;
|
||||
size++;
|
||||
break;
|
||||
case REQUEST_PPMOVE1_BATTLE:
|
||||
case REQUEST_PPMOVE2_BATTLE:
|
||||
@@ -714,6 +729,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
|
||||
size = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -727,14 +743,14 @@ static void LinkPartnerHandleSetMonData(void)
|
||||
u8 monToCheck;
|
||||
u8 i;
|
||||
|
||||
if (!gBattleBufferA[gActiveBattler][2])
|
||||
if (gBattleBufferA[gActiveBattler][2] == 0)
|
||||
{
|
||||
SetLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler]);
|
||||
}
|
||||
else
|
||||
{
|
||||
monToCheck = gBattleBufferA[gActiveBattler][2];
|
||||
for (i = 0; i < PARTY_SIZE; ++i)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (monToCheck & 1)
|
||||
SetLinkPartnerMonData(i);
|
||||
@@ -758,7 +774,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
||||
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species);
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item);
|
||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]);
|
||||
@@ -797,7 +813,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
|
||||
break;
|
||||
case REQUEST_MOVES_PP_BATTLE:
|
||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]);
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]);
|
||||
@@ -958,6 +974,7 @@ static void SetLinkPartnerMonData(u8 monId)
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
|
||||
break;
|
||||
}
|
||||
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
}
|
||||
|
||||
@@ -966,8 +983,9 @@ static void LinkPartnerHandleSetRawMonData(void)
|
||||
u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
|
||||
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
|
||||
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -978,11 +996,12 @@ static void LinkPartnerHandleLoadMonSprite(void)
|
||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
@@ -1007,23 +1026,29 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
GetBattlerSpriteSubpriority(battlerId));
|
||||
|
||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId;
|
||||
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]);
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
|
||||
|
||||
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleReturnMonToBall(void)
|
||||
{
|
||||
if (!gBattleBufferA[gActiveBattler][1])
|
||||
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
|
||||
@@ -1044,6 +1069,7 @@ static void DoSwitchOutAnimation(void)
|
||||
case 0:
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
|
||||
break;
|
||||
case 1:
|
||||
@@ -1057,6 +1083,8 @@ static void DoSwitchOutAnimation(void)
|
||||
}
|
||||
}
|
||||
|
||||
#define sSpeedX data[0]
|
||||
|
||||
static void LinkPartnerHandleDrawTrainerPic(void)
|
||||
{
|
||||
s16 xPos;
|
||||
@@ -1066,22 +1094,32 @@ static void LinkPartnerHandleDrawTrainerPic(void)
|
||||
xPos = 90;
|
||||
else // First mon, on the left.
|
||||
xPos = 32;
|
||||
|
||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 2;
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
}
|
||||
else
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0;
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
|
||||
}
|
||||
|
||||
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
#undef sSpeedX
|
||||
|
||||
static void LinkPartnerHandleTrainerSlide(void)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -1098,13 +1136,16 @@ static void LinkPartnerHandleTrainerSlideBack(void)
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||
}
|
||||
|
||||
#define sSpeedX data[1]
|
||||
#define sSpeedY data[2]
|
||||
|
||||
static void LinkPartnerHandleFaintAnimation(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||
++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1113,14 +1154,17 @@ static void LinkPartnerHandleFaintAnimation(void)
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedY = 5;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#undef sSpeedX
|
||||
#undef sSpeedY
|
||||
|
||||
static void LinkPartnerHandlePaletteFade(void)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -1175,7 +1219,7 @@ static void LinkPartnerDoMoveAnimation(void)
|
||||
{
|
||||
case 0:
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
|
||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||
&& !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
|
||||
{
|
||||
gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
|
||||
@@ -1185,7 +1229,7 @@ static void LinkPartnerDoMoveAnimation(void)
|
||||
case 1:
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(0);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||
DoMoveAnim(move);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||
}
|
||||
@@ -1194,7 +1238,7 @@ static void LinkPartnerDoMoveAnimation(void)
|
||||
gAnimScriptCallback();
|
||||
if (!gAnimScriptActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(1);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||
{
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||
@@ -1271,6 +1315,7 @@ static void LinkPartnerHandleHealthBarUpdate(void)
|
||||
|
||||
LoadBattleBarGfx(0);
|
||||
hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
||||
|
||||
if (hpVal != INSTANT_HP_BAR_DROP)
|
||||
{
|
||||
u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
|
||||
@@ -1284,6 +1329,7 @@ static void LinkPartnerHandleHealthBarUpdate(void)
|
||||
|
||||
SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
|
||||
}
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
|
||||
}
|
||||
|
||||
@@ -1360,27 +1406,27 @@ static void LinkPartnerHandleOneReturnValue_Duplicate(void)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd37(void)
|
||||
static void LinkPartnerHandleClearUnkVar(void)
|
||||
{
|
||||
gUnknown_2022870.field_0 = 0;
|
||||
gUnusedControllerStruct.unk = 0;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd38(void)
|
||||
static void LinkPartnerHandleSetUnkVar(void)
|
||||
{
|
||||
gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1];
|
||||
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd39(void)
|
||||
static void LinkPartnerHandleClearUnkFlag(void)
|
||||
{
|
||||
gUnknown_2022870.flag_x80 = 0;
|
||||
gUnusedControllerStruct.flag = 0;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd40(void)
|
||||
static void LinkPartnerHandleToggleUnkFlag(void)
|
||||
{
|
||||
gUnknown_2022870.flag_x80 ^= 1;
|
||||
gUnusedControllerStruct.flag ^= 1;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1399,7 +1445,7 @@ static void LinkPartnerHandleHitAnimation(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd42(void)
|
||||
static void LinkPartnerHandleCantSwitch(void)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
@@ -1412,6 +1458,7 @@ static void LinkPartnerHandlePlaySE(void)
|
||||
pan = SOUND_PAN_ATTACKER;
|
||||
else
|
||||
pan = SOUND_PAN_TARGET;
|
||||
|
||||
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
@@ -1444,26 +1491,38 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
|
||||
u32 trainerPicId;
|
||||
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
|
||||
paletteNum = AllocSpritePalette(0xD6F9);
|
||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 2;
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_EMERALD)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
}
|
||||
else
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + 0;
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
|
||||
}
|
||||
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||
|
||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDummy;
|
||||
}
|
||||
@@ -1472,7 +1531,7 @@ static void Task_StartSendOutAnim(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[1] < 24)
|
||||
{
|
||||
++gTasks[taskId].data[1];
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1502,7 +1561,7 @@ static void Task_StartSendOutAnim(u8 taskId)
|
||||
|
||||
static void LinkPartnerHandleDrawPartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
@@ -1512,7 +1571,7 @@ static void LinkPartnerHandleDrawPartyStatusSummary(void)
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||
|
||||
if (gBattleBufferA[gActiveBattler][2]) // Skip delay on battle start
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0) // Skip delay on battle start
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
|
||||
@@ -1574,7 +1633,7 @@ static void LinkPartnerHandleResetActionMoveSelection(void)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd55(void)
|
||||
static void LinkPartnerHandleEndLinkBattle(void)
|
||||
{
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
FadeOutMapMusic(5);
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include "battle_interface.h"
|
||||
#include "battle_message.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "battle_string_ids.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
@@ -442,10 +441,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||
@@ -987,7 +986,7 @@ static void OakOldManHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
OakOldManBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1575,24 +1574,24 @@ static void OakOldManHandleDrawTrainerPic(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
30);
|
||||
}
|
||||
else
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_OLDMAN, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_OLDMAN, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_OLD_MAN, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_OLD_MAN, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_OLDMAN].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_OLD_MAN].size) * 4 + 80,
|
||||
30);
|
||||
}
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
@@ -1602,20 +1601,20 @@ static void OakOldManHandleTrainerSlide(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_RED + gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
30);
|
||||
}
|
||||
else
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_OLDMAN, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_OLDMAN, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_OLD_MAN, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_OLD_MAN, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_OLDMAN].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_OLD_MAN].size) * 4 + 80,
|
||||
30);
|
||||
}
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
@@ -1662,7 +1661,7 @@ static void OakOldManHandleSuccessBallThrowAnim(void)
|
||||
{
|
||||
gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
|
||||
gDoingBattleAnim = TRUE;
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
|
||||
}
|
||||
|
||||
@@ -1672,7 +1671,7 @@ static void OakOldManHandleBallThrowAnim(void)
|
||||
|
||||
gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId;
|
||||
gDoingBattleAnim = TRUE;
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
|
||||
}
|
||||
|
||||
@@ -2087,14 +2086,14 @@ static void OakOldManHandleIntroTrainerBallThrow(void)
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
paletteNum = AllocSpritePalette(0xD6F8);
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[BACK_PIC_RED + gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2114,7 +2113,7 @@ static void StartSendOutAnim(u8 battlerId)
|
||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
GetBattlerSpriteSubpriority(battlerId));
|
||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||
|
||||
@@ -151,8 +151,8 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
OpponentCmdEnd
|
||||
};
|
||||
|
||||
// not used
|
||||
static const u8 gUnknown_8250B18[] = { 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20 };
|
||||
// unknown unused data
|
||||
static const u8 sUnused[] = { 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20 };
|
||||
|
||||
static void OpponentDummy(void)
|
||||
{
|
||||
@@ -200,7 +200,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
|
||||
static void Intro_DelayAndEnd(void)
|
||||
{
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
OpponentBufferExecCompleted();
|
||||
@@ -225,10 +225,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
var = FALSE;
|
||||
if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
@@ -281,8 +281,8 @@ static void TryShinyAnimAfterMonAnim(void)
|
||||
}
|
||||
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
OpponentBufferExecCompleted();
|
||||
@@ -382,8 +382,8 @@ static void SwitchIn_ShowHealthbox(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
|
||||
@@ -447,7 +447,7 @@ static void OpponentHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -765,7 +765,7 @@ static void OpponentHandleGetRawMonData(void)
|
||||
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||
dst[i] = src[i];
|
||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1026,8 +1026,8 @@ static void OpponentHandleLoadMonSprite(void)
|
||||
{
|
||||
DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
y = GetGhostSpriteDefault_Y(gActiveBattler);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = TRUE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1036,10 +1036,10 @@ static void OpponentHandleLoadMonSprite(void)
|
||||
}
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||
y,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
@@ -1068,7 +1068,7 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
GetBattlerSpriteSubpriority(battlerId));
|
||||
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
|
||||
@@ -1122,7 +1122,7 @@ static void OpponentHandleDrawTrainerPic(void)
|
||||
{
|
||||
u32 trainerPicId;
|
||||
|
||||
if (gTrainerBattleOpponent_A == 0x400)
|
||||
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||
trainerPicId = GetSecretBaseTrainerPicIndex();
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||
trainerPicId = GetBattleTowerTrainerFrontSpriteId();
|
||||
@@ -1138,7 +1138,7 @@ static void OpponentHandleDrawTrainerPic(void)
|
||||
176,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
@@ -1152,7 +1152,7 @@ static void OpponentHandleTrainerSlide(void)
|
||||
{
|
||||
u32 trainerPicId;
|
||||
|
||||
if (gTrainerBattleOpponent_A == 0x400)
|
||||
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||
trainerPicId = GetSecretBaseTrainerPicIndex();
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||
trainerPicId = GetBattleTowerTrainerFrontSpriteId();
|
||||
@@ -1274,7 +1274,7 @@ static void OpponentDoMoveAnimation(void)
|
||||
case 1:
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(0);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||
DoMoveAnim(move);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||
}
|
||||
@@ -1283,7 +1283,7 @@ static void OpponentDoMoveAnimation(void)
|
||||
gAnimScriptCallback();
|
||||
if (!gAnimScriptActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(1);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||
{
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||
@@ -1548,25 +1548,25 @@ static void OpponentHandleOneReturnValue_Duplicate(void)
|
||||
|
||||
static void OpponentHandleCmd37(void)
|
||||
{
|
||||
gUnknown_2022870.field_0 = 0;
|
||||
gUnusedControllerStruct.unk = 0;
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void OpponentHandleCmd38(void)
|
||||
{
|
||||
gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1];
|
||||
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void OpponentHandleCmd39(void)
|
||||
{
|
||||
gUnknown_2022870.flag_x80 = 0;
|
||||
gUnusedControllerStruct.flag = 0;
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void OpponentHandleCmd40(void)
|
||||
{
|
||||
gUnknown_2022870.flag_x80 ^= 1;
|
||||
gUnusedControllerStruct.flag ^= 1;
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1682,7 +1682,7 @@ static void OpponentHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
|
||||
if (gBattleBufferA[gActiveBattler][2])
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2)
|
||||
|
||||
@@ -170,10 +170,10 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
|
||||
static const u8 sTargetIdentities[] = { B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT };
|
||||
|
||||
// not used
|
||||
static const u8 gUnknown_8250984[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 };
|
||||
// unknown unused data
|
||||
static const u8 sUnused[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 };
|
||||
|
||||
void PlayerDummy(void)
|
||||
void BattleControllerDummy(void)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -309,7 +309,8 @@ static void HandleInputChooseAction(void)
|
||||
}
|
||||
}
|
||||
|
||||
UNUSED static void UnusedEndBounceEffect(void)
|
||||
// Unused
|
||||
static void EndBounceEffect2(void)
|
||||
{
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_MON);
|
||||
@@ -863,7 +864,7 @@ static void FreeTrainerSpriteAfterSlide(void)
|
||||
|
||||
static void Intro_DelayAndEnd(void)
|
||||
{
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == 0xFF)
|
||||
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
|
||||
PlayerBufferExecCompleted();
|
||||
@@ -890,10 +891,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
@@ -941,8 +942,8 @@ static void SwitchIn_CleanShinyAnimShowSubstitute(void)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
@@ -1369,7 +1370,7 @@ static void MoveSelectionDisplayMoveNames(void)
|
||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
||||
{
|
||||
MoveSelectionDestroyCursorAt(i);
|
||||
StringCopy(gDisplayedStringBattle, gUnknown_83FE770);
|
||||
StringCopy(gDisplayedStringBattle, gText_MoveInterfaceDynamicColors);
|
||||
StringAppend(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, i + 3);
|
||||
if (moveInfo->moves[i] != MOVE_NONE)
|
||||
@@ -1407,7 +1408,7 @@ static void MoveSelectionDisplayMoveType(void)
|
||||
*txtPtr++ = EXT_CTRL_CODE_BEGIN;
|
||||
*txtPtr++ = 6;
|
||||
*txtPtr++ = 1;
|
||||
txtPtr = StringCopy(txtPtr, gUnknown_83FE770);
|
||||
txtPtr = StringCopy(txtPtr, gText_MoveInterfaceDynamicColors);
|
||||
StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE);
|
||||
}
|
||||
@@ -1505,7 +1506,7 @@ static void PlayerHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1824,7 +1825,7 @@ void PlayerHandleGetRawMonData(void)
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
|
||||
dst[i] = src[i];
|
||||
|
||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -2105,7 +2106,7 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
GetBattlerSpriteSubpriority(battlerId));
|
||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||
@@ -2176,13 +2177,13 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE
|
||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_EMERALD)
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RS_BRENDAN;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
else
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RED;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender;
|
||||
}
|
||||
else
|
||||
{
|
||||
trainerPicId = gSaveBlock2Ptr->playerGender + BACK_PIC_RED;
|
||||
trainerPicId = gSaveBlock2Ptr->playerGender;
|
||||
}
|
||||
DecompressTrainerBackPalette(trainerPicId, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
@@ -2191,7 +2192,7 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
(8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
@@ -2339,7 +2340,7 @@ static void PlayerDoMoveAnimation(void)
|
||||
case 1:
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(0);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||
DoMoveAnim(move);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||
}
|
||||
@@ -2348,7 +2349,7 @@ static void PlayerDoMoveAnimation(void)
|
||||
gAnimScriptCallback();
|
||||
if (!gAnimScriptActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(1);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
|
||||
{
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||
@@ -2523,7 +2524,7 @@ static void PlayerHandleExpUpdate(void)
|
||||
gTasks[taskId].tExpTask_monId = monId;
|
||||
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
|
||||
gTasks[taskId].tExpTask_battler = gActiveBattler;
|
||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2626,25 +2627,25 @@ static void PlayerHandleOneReturnValue_Duplicate(void)
|
||||
|
||||
static void PlayerHandleCmd37(void)
|
||||
{
|
||||
gUnknown_2022870.field_0 = 0;
|
||||
gUnusedControllerStruct.unk = 0;
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void PlayerHandleCmd38(void)
|
||||
{
|
||||
gUnknown_2022870.field_0 = gBattleBufferA[gActiveBattler][1];
|
||||
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void PlayerHandleCmd39(void)
|
||||
{
|
||||
gUnknown_2022870.flag_x80 = 0;
|
||||
gUnusedControllerStruct.flag = 0;
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void PlayerHandleCmd40(void)
|
||||
{
|
||||
gUnknown_2022870.flag_x80 ^= 1;
|
||||
gUnusedControllerStruct.flag ^= 1;
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -2720,7 +2721,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
|
||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
|
||||
}
|
||||
|
||||
void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite)
|
||||
@@ -2774,7 +2775,7 @@ static void PlayerHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE;
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_interface.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle_string_ids.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "teachy_tv.h"
|
||||
#include "constants/songs.h"
|
||||
@@ -182,8 +181,8 @@ static void (*const sPokedudeBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
PokedudeCmdEnd,
|
||||
};
|
||||
|
||||
// not used
|
||||
static const u8 gUnknown_8479000[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 };
|
||||
// unknown unused data
|
||||
static const u8 sUnused[] = { 0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58 };
|
||||
|
||||
#define pdHealthboxPal1 simulatedInputState[0]
|
||||
#define pdHealthboxPal2 simulatedInputState[1]
|
||||
@@ -239,8 +238,8 @@ static void CompleteOnBattlerSpritePosX_0(void)
|
||||
}
|
||||
else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
PokedudeBufferExecCompleted();
|
||||
@@ -279,8 +278,8 @@ static void SwitchIn_CleanShinyAnimShowSubstitute(void)
|
||||
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
@@ -423,10 +422,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
|
||||
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
|
||||
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
|
||||
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
|
||||
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
|
||||
@@ -730,7 +729,7 @@ static void PokedudeHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
PokedudeBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1307,10 +1306,10 @@ static void PokedudeHandleLoadMonSprite(void)
|
||||
y = GetBattlerSpriteDefault_Y(gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteCoord(gActiveBattler, BATTLER_COORD_X_2),
|
||||
y,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
@@ -1351,13 +1350,13 @@ static void PokedudeHandleDrawTrainerPic(void)
|
||||
{
|
||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_POKEDUDE, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_POKEDUDE, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
@@ -1371,7 +1370,7 @@ static void PokedudeHandleDrawTrainerPic(void)
|
||||
176,
|
||||
(8 - gTrainerFrontPicCoords[tranerPicid].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[tranerPicid].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
|
||||
@@ -1384,11 +1383,11 @@ static void PokedudeHandleDrawTrainerPic(void)
|
||||
|
||||
static void PokedudeHandleTrainerSlide(void)
|
||||
{
|
||||
DecompressTrainerBackPalette(BACK_PIC_POKEDUDE, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||
DecompressTrainerBackPalette(TRAINER_BACK_PIC_POKEDUDE, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_POKEDUDE, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_POKEDUDE].size) * 4 + 80,
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
|
||||
@@ -1497,7 +1496,7 @@ static void PokedudeDoMoveAnimation(void)
|
||||
case 1:
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(0);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
|
||||
DoMoveAnim(move);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
|
||||
}
|
||||
@@ -1506,7 +1505,7 @@ static void PokedudeDoMoveAnimation(void)
|
||||
gAnimScriptCallback();
|
||||
if (!gAnimScriptActive)
|
||||
{
|
||||
SetBattlerSpriteAffineMode(1);
|
||||
SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
|
||||
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
|
||||
@@ -1859,7 +1858,7 @@ static void PokedudeHandleIntroTrainerBallThrow(void)
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
paletteNum = AllocSpritePalette(0xD6F8);
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[BACK_PIC_POKEDUDE].data, 0x100 + paletteNum * 16, 32);
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[TRAINER_BACK_PIC_POKEDUDE].data, 0x100 + paletteNum * 16, 32);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||
taskId = CreateTask(Task_StartSendOutAnim, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
@@ -1879,7 +1878,7 @@ static void StartSendOutAnim(u8 battlerId)
|
||||
gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
GetBattlerSpriteSubpriority(battlerId));
|
||||
gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
|
||||
|
||||
@@ -346,7 +346,7 @@ static void SafariHandleDrawTrainerPic(void)
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
@@ -376,7 +376,7 @@ static void SafariHandleSuccessBallThrowAnim(void)
|
||||
{
|
||||
gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
|
||||
gDoingBattleAnim = TRUE;
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
|
||||
}
|
||||
|
||||
@@ -386,7 +386,7 @@ static void SafariHandleBallThrowAnim(void)
|
||||
|
||||
gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId;
|
||||
gDoingBattleAnim = TRUE;
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
|
||||
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
|
||||
}
|
||||
|
||||
@@ -439,7 +439,7 @@ static void SafariHandleChooseAction(void)
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
|
||||
BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG);
|
||||
BattlePutTextOnWindow(gUnknown_83FE747, B_WIN_ACTION_MENU);
|
||||
BattlePutTextOnWindow(gText_SafariZoneMenu, B_WIN_ACTION_MENU);
|
||||
for (i = 0; i < 4; ++i)
|
||||
ActionSelectionDestroyCursorAt(i);
|
||||
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
|
||||
|
||||
+160
-118
@@ -1,25 +1,22 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "battle_main.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_util.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_message.h"
|
||||
#include "cable_club.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
#include "cable_club.h"
|
||||
#include "party_menu.h"
|
||||
#include "task.h"
|
||||
#include "util.h"
|
||||
#include "constants/abilities.h"
|
||||
#include "constants/battle.h"
|
||||
|
||||
static EWRAM_DATA u8 sLinkSendTaskId = 0;
|
||||
static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
|
||||
static EWRAM_DATA u8 gUnknown_202286E = 0;
|
||||
EWRAM_DATA struct UnusedControllerStruct gUnknown_2022870 = {0};
|
||||
static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {0};
|
||||
static EWRAM_DATA u8 sUnused = 0; // Debug? Never read
|
||||
EWRAM_DATA struct UnusedControllerStruct gUnusedControllerStruct = {}; // Debug? Unused code that writes to it, never read
|
||||
static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {};
|
||||
|
||||
static void CreateTasksForSendRecvLinkBuffers(void);
|
||||
static void InitLinkBtlControllers(void);
|
||||
@@ -36,7 +33,7 @@ void HandleLinkBattleSetup(void)
|
||||
SetWirelessCommType1();
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
OpenLink();
|
||||
CreateTask(Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout, 0);
|
||||
CreateTask(Task_WaitForLinkPlayerConnection, 0);
|
||||
CreateTasksForSendRecvLinkBuffers();
|
||||
}
|
||||
}
|
||||
@@ -45,24 +42,28 @@ void SetUpBattleVars(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
gBattleMainFunc = BattleDummy;
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
||||
gBattleMainFunc = BeginBattleIntroDummy;
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
gBattlerControllerFuncs[i] = PlayerDummy;
|
||||
gBattlerControllerFuncs[i] = BattleControllerDummy;
|
||||
gBattlerPositions[i] = 0xFF;
|
||||
gActionSelectionCursor[i] = 0;
|
||||
gMoveSelectionCursor[i] = 0;
|
||||
}
|
||||
|
||||
HandleLinkBattleSetup();
|
||||
gBattleControllerExecFlags = 0;
|
||||
ClearBattleAnimationVars();
|
||||
ClearBattleMonForms();
|
||||
BattleAI_HandleItemUseBeforeAISetup();
|
||||
gUnknown_2022B54 = 0;
|
||||
gUnknown_2023DDC = 0;
|
||||
|
||||
// Below are never read
|
||||
gUnusedFirstBattleVar1 = 0;
|
||||
gUnusedFirstBattleVar2 = 0;
|
||||
}
|
||||
|
||||
void InitBtlControllers(void)
|
||||
void InitBattleControllers(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -70,10 +71,14 @@ void InitBtlControllers(void)
|
||||
InitLinkBtlControllers();
|
||||
else
|
||||
InitSinglePlayerBtlControllers();
|
||||
|
||||
SetBattlePartyIds();
|
||||
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
for (i = 0; i < gBattlersCount; ++i)
|
||||
{
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
BufferBattlePartyCurrentOrderBySide(i, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void InitSinglePlayerBtlControllers(void)
|
||||
@@ -143,55 +148,71 @@ static void InitLinkBtlControllers(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
||||
{
|
||||
gBattleMainFunc = BeginBattleIntro;
|
||||
|
||||
gBattlerControllerFuncs[0] = SetControllerToPlayer;
|
||||
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
||||
|
||||
gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
|
||||
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
||||
|
||||
gBattlersCount = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattlerControllerFuncs[1] = SetControllerToPlayer;
|
||||
gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
|
||||
|
||||
gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
|
||||
gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
|
||||
|
||||
gBattlersCount = 2;
|
||||
}
|
||||
}
|
||||
else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
|
||||
else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
||||
{
|
||||
gBattleMainFunc = BeginBattleIntro;
|
||||
|
||||
gBattlerControllerFuncs[0] = SetControllerToPlayer;
|
||||
gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
|
||||
|
||||
gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
|
||||
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
|
||||
|
||||
gBattlerControllerFuncs[2] = SetControllerToPlayer;
|
||||
gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
|
||||
|
||||
gBattlerControllerFuncs[3] = SetControllerToLinkOpponent;
|
||||
gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
|
||||
|
||||
gBattlersCount = MAX_BATTLERS_COUNT;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattlerControllerFuncs[1] = SetControllerToPlayer;
|
||||
gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
|
||||
|
||||
gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
|
||||
gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
|
||||
|
||||
gBattlerControllerFuncs[3] = SetControllerToPlayer;
|
||||
gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
|
||||
|
||||
gBattlerControllerFuncs[2] = SetControllerToLinkOpponent;
|
||||
gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
|
||||
|
||||
gBattlersCount = MAX_BATTLERS_COUNT;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
multiplayerId = GetMultiplayerId();
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)
|
||||
gBattleMainFunc = BeginBattleIntro;
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
switch (gLinkPlayers[i].id)
|
||||
{
|
||||
@@ -204,6 +225,7 @@ static void InitLinkBtlControllers(void)
|
||||
BufferBattlePartyCurrentOrderBySide(gLinkPlayers[i].id, 1);
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == multiplayerId)
|
||||
{
|
||||
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToPlayer;
|
||||
@@ -223,7 +245,8 @@ static void InitLinkBtlControllers(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1)) || ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1)))
|
||||
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1))
|
||||
|| ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1)))
|
||||
{
|
||||
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToLinkPartner;
|
||||
switch (gLinkPlayers[i].id)
|
||||
@@ -259,6 +282,7 @@ static void InitLinkBtlControllers(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gBattlersCount = MAX_BATTLERS_COUNT;
|
||||
}
|
||||
}
|
||||
@@ -269,7 +293,7 @@ static void SetBattlePartyIds(void)
|
||||
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
{
|
||||
for (i = 0; i < gBattlersCount; ++i)
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
for (j = 0; j < PARTY_SIZE; ++j)
|
||||
{
|
||||
@@ -342,12 +366,12 @@ static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size)
|
||||
{
|
||||
switch (bufferId)
|
||||
{
|
||||
case 0:
|
||||
for (i = 0; i < size; ++data, ++i)
|
||||
case BUFFER_A:
|
||||
for (i = 0; i < size; data++, i++)
|
||||
gBattleBufferA[gActiveBattler][i] = *data;
|
||||
break;
|
||||
case 1:
|
||||
for (i = 0; i < size; ++data, ++i)
|
||||
case BUFFER_B:
|
||||
for (i = 0; i < size; data++, i++)
|
||||
gBattleBufferB[gActiveBattler][i] = *data;
|
||||
break;
|
||||
}
|
||||
@@ -362,12 +386,14 @@ static void CreateTasksForSendRecvLinkBuffers(void)
|
||||
gTasks[sLinkSendTaskId].data[13] = 0;
|
||||
gTasks[sLinkSendTaskId].data[14] = 0;
|
||||
gTasks[sLinkSendTaskId].data[15] = 0;
|
||||
|
||||
sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0);
|
||||
gTasks[sLinkReceiveTaskId].data[12] = 0;
|
||||
gTasks[sLinkReceiveTaskId].data[13] = 0;
|
||||
gTasks[sLinkReceiveTaskId].data[14] = 0;
|
||||
gTasks[sLinkReceiveTaskId].data[15] = 0;
|
||||
gUnknown_202286E = 0;
|
||||
|
||||
sUnused = 0;
|
||||
}
|
||||
|
||||
enum
|
||||
@@ -380,12 +406,13 @@ enum
|
||||
LINK_BUFF_SIZE_HI,
|
||||
LINK_BUFF_ABSENT_BATTLER_FLAGS,
|
||||
LINK_BUFF_EFFECT_BATTLER,
|
||||
LINK_BUFF_DATA
|
||||
LINK_BUFF_DATA,
|
||||
};
|
||||
|
||||
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
|
||||
{
|
||||
s32 alignedSize, i;
|
||||
s32 alignedSize;
|
||||
s32 i;
|
||||
|
||||
alignedSize = size - size % 4 + 4;
|
||||
if (gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE)
|
||||
@@ -401,8 +428,10 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
|
||||
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
|
||||
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags;
|
||||
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler;
|
||||
for (i = 0; i < size; ++i)
|
||||
|
||||
for (i = 0; i < size; i++)
|
||||
gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_DATA + i] = data[i];
|
||||
|
||||
gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA;
|
||||
}
|
||||
|
||||
@@ -415,12 +444,13 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
gTasks[taskId].data[10] = 100;
|
||||
++gTasks[taskId].data[11];
|
||||
gTasks[taskId].data[11]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!--gTasks[taskId].data[10])
|
||||
gTasks[taskId].data[10]--;
|
||||
if (gTasks[taskId].data[10] == 0)
|
||||
{
|
||||
++gTasks[taskId].data[11];
|
||||
gTasks[taskId].data[11]++;
|
||||
if (gReceivedRemoteLinkPlayers)
|
||||
gTasks[taskId].data[11] = 3;
|
||||
}
|
||||
@@ -432,18 +462,18 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
||||
if (IsLinkMaster())
|
||||
{
|
||||
CheckShouldAdvanceLinkState();
|
||||
++gTasks[taskId].data[11];
|
||||
gTasks[taskId].data[11]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
++gTasks[taskId].data[11];
|
||||
gTasks[taskId].data[11]++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
|
||||
{
|
||||
if (!gTasks[taskId].data[13])
|
||||
if (gTasks[taskId].data[13] == 0)
|
||||
{
|
||||
if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
|
||||
&& gTasks[taskId].data[15] == gTasks[taskId].data[12])
|
||||
@@ -452,12 +482,12 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
||||
gTasks[taskId].data[15] = 0;
|
||||
}
|
||||
blockSize = (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8)) + LINK_BUFF_DATA;
|
||||
SendBlock(bitmask_all_link_players_but_self(), &gLinkBattleSendBuffer[gTasks[taskId].data[15]], blockSize);
|
||||
++gTasks[taskId].data[11];
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), &gLinkBattleSendBuffer[gTasks[taskId].data[15]], blockSize);
|
||||
gTasks[taskId].data[11]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
--gTasks[taskId].data[13];
|
||||
gTasks[taskId].data[13]--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -472,7 +502,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (!--gTasks[taskId].data[13])
|
||||
if (--gTasks[taskId].data[13] == 0)
|
||||
{
|
||||
gTasks[taskId].data[13] = 5;
|
||||
gTasks[taskId].data[11] = 3;
|
||||
@@ -487,10 +517,10 @@ void TryReceiveLinkBattleData(void)
|
||||
s32 j;
|
||||
u8 *recvBuffer;
|
||||
|
||||
if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE) && (gLinkPlayers[0].linkType == 0x2211))
|
||||
if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE) && (gLinkPlayers[0].linkType == 0x2211))
|
||||
{
|
||||
LinkRfu_DestroyIdleTask();
|
||||
for (i = 0; i < GetLinkPlayerCount(); ++i)
|
||||
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
if (GetBlockReceivedStatus() & gBitTable[i])
|
||||
{
|
||||
@@ -498,18 +528,21 @@ void TryReceiveLinkBattleData(void)
|
||||
recvBuffer = (u8 *)gBlockRecvBuffer[i];
|
||||
{
|
||||
u8 *dest, *src;
|
||||
u16 r6 = gBlockRecvBuffer[i][2];
|
||||
u16 dataSize = gBlockRecvBuffer[i][2];
|
||||
|
||||
if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000)
|
||||
if (gTasks[sLinkReceiveTaskId].data[14] + 9 + dataSize > 0x1000)
|
||||
{
|
||||
gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
|
||||
gTasks[sLinkReceiveTaskId].data[14] = 0;
|
||||
}
|
||||
|
||||
dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
|
||||
src = recvBuffer;
|
||||
for (j = 0; j < r6 + 8; ++j)
|
||||
|
||||
for (j = 0; j < dataSize + 8; j++)
|
||||
dest[j] = src[j];
|
||||
gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8;
|
||||
|
||||
gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + dataSize + 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -532,13 +565,16 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
|
||||
}
|
||||
battlerId = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BATTLER];
|
||||
blockSize = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
|
||||
|
||||
switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0])
|
||||
{
|
||||
case 0:
|
||||
if (gBattleControllerExecFlags & gBitTable[battlerId])
|
||||
return;
|
||||
|
||||
memcpy(gBattleBufferA[battlerId], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA], blockSize);
|
||||
MarkBattlerReceivedLinkData(battlerId);
|
||||
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
|
||||
{
|
||||
gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ATTACKER];
|
||||
@@ -555,6 +591,7 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
|
||||
gBattleControllerExecFlags &= ~(gBitTable[battlerId] << (var * 4));
|
||||
break;
|
||||
}
|
||||
|
||||
gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA;
|
||||
}
|
||||
}
|
||||
@@ -568,7 +605,7 @@ void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA;
|
||||
@@ -585,12 +622,12 @@ void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 b
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA;
|
||||
sBattleBuffersTransferData[1] = requestId;
|
||||
sBattleBuffersTransferData[2] = monToCheck;
|
||||
for (i = 0; i < bytes; ++i)
|
||||
for (i = 0; i < bytes; i++)
|
||||
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
|
||||
{
|
||||
s32 i;
|
||||
@@ -598,7 +635,7 @@ static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, voi
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA;
|
||||
sBattleBuffersTransferData[1] = monId;
|
||||
sBattleBuffersTransferData[2] = bytes;
|
||||
for (i = 0; i < bytes; ++i)
|
||||
for (i = 0; i < bytes; i++)
|
||||
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, bytes + 3);
|
||||
}
|
||||
@@ -664,7 +701,7 @@ void BtlController_EmitFaintAnimation(u8 bufferId)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitPaletteFade(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE;
|
||||
@@ -674,7 +711,7 @@ static void BtlController_EmitPaletteFade(u8 bufferId)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitSuccessBallThrowAnim(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM;
|
||||
@@ -691,14 +728,14 @@ void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PAUSE;
|
||||
sBattleBuffersTransferData[1] = toWait;
|
||||
for (i = 0; i < toWait * 3; ++i)
|
||||
for (i = 0; i < toWait * 3; i++)
|
||||
sBattleBuffersTransferData[2 + i] = *(u8 *)(data++);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2);
|
||||
}
|
||||
@@ -742,6 +779,7 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
|
||||
sBattleBuffersTransferData[1] = gBattleOutcome;
|
||||
sBattleBuffersTransferData[2] = stringID;
|
||||
sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
|
||||
|
||||
stringInfo = (struct BattleMsgData *)(&sBattleBuffersTransferData[4]);
|
||||
stringInfo->currentMove = gCurrentMove;
|
||||
stringInfo->originallyUsedMove = gChosenMove;
|
||||
@@ -752,9 +790,10 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
|
||||
stringInfo->hpScale = gBattleStruct->hpScale;
|
||||
stringInfo->itemEffectBattler = gPotentialItemEffectBattler;
|
||||
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
stringInfo->abilities[i] = gBattleMons[i].ability;
|
||||
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i)
|
||||
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
|
||||
{
|
||||
stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
|
||||
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
|
||||
@@ -772,6 +811,7 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY;
|
||||
sBattleBuffersTransferData[2] = stringID;
|
||||
sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
|
||||
|
||||
stringInfo = (struct BattleMsgData *)(&sBattleBuffersTransferData[4]);
|
||||
stringInfo->currentMove = gCurrentMove;
|
||||
stringInfo->originallyUsedMove = gChosenMove;
|
||||
@@ -779,9 +819,10 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
||||
stringInfo->lastAbility = gLastUsedAbility;
|
||||
stringInfo->scrActive = gBattleScripting.battler;
|
||||
stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx;
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
stringInfo->abilities[i] = gBattleMons[i].ability;
|
||||
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i)
|
||||
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
|
||||
{
|
||||
stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
|
||||
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
|
||||
@@ -790,16 +831,17 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
|
||||
// itemId only relevant for B_ACTION_USE_ITEM
|
||||
void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION;
|
||||
sBattleBuffersTransferData[1] = arg1;
|
||||
sBattleBuffersTransferData[2] = arg2;
|
||||
sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[1] = action;
|
||||
sBattleBuffersTransferData[2] = itemId;
|
||||
sBattleBuffersTransferData[3] = (itemId & 0xFF00) >> 8;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitUnknownYesNoBox(u8 bufferId, u32 arg1) // TODO: Does the function name make sense for pokefirered?
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_UNKNOWNYESNOBOX;
|
||||
@@ -815,35 +857,35 @@ void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpN
|
||||
sBattleBuffersTransferData[1] = isDoubleBattle;
|
||||
sBattleBuffersTransferData[2] = NoPpNumber;
|
||||
sBattleBuffersTransferData[3] = 0;
|
||||
for (i = 0; i < sizeof(*movePpData); ++i)
|
||||
for (i = 0; i < sizeof(*movePpData); i++)
|
||||
sBattleBuffersTransferData[4 + i] = *((u8 *)(movePpData) + i);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
|
||||
void BtlController_EmitChooseItem(u8 bufferId, u8 *battlePartyOrder)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG;
|
||||
for (i = 0; i < 3; ++i)
|
||||
sBattleBuffersTransferData[1 + i] = arg1[i];
|
||||
for (i = 0; i < PARTY_SIZE / 2; i++)
|
||||
sBattleBuffersTransferData[1 + i] = battlePartyOrder[i];
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8 *arg4)
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *data)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON;
|
||||
sBattleBuffersTransferData[1] = caseId;
|
||||
sBattleBuffersTransferData[2] = arg2;
|
||||
sBattleBuffersTransferData[2] = slotId;
|
||||
sBattleBuffersTransferData[3] = abilityId;
|
||||
for (i = 0; i < 3; ++i)
|
||||
sBattleBuffersTransferData[4 + i] = arg4[i];
|
||||
for (i = 0; i < 3; i++)
|
||||
sBattleBuffersTransferData[4 + i] = data[i];
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written.
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitCmd23(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_23;
|
||||
@@ -896,7 +938,7 @@ void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 6);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitStatusXor(u8 bufferId, u8 b)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR;
|
||||
@@ -912,12 +954,12 @@ void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data)
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_DATATRANSFER;
|
||||
sBattleBuffersTransferData[2] = size;
|
||||
sBattleBuffersTransferData[3] = (size & 0xFF00) >> 8;
|
||||
for (i = 0; i < size; ++i)
|
||||
for (i = 0; i < size; i++)
|
||||
sBattleBuffersTransferData[4 + i] = *(u8 *)(data++);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
|
||||
{
|
||||
s32 i;
|
||||
@@ -929,7 +971,7 @@ static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, voi
|
||||
sBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24;
|
||||
sBattleBuffersTransferData[5] = size;
|
||||
sBattleBuffersTransferData[6] = (size & 0xFF00) >> 8;
|
||||
for (i = 0; i < size; ++i)
|
||||
for (i = 0; i < size; i++)
|
||||
sBattleBuffersTransferData[7 + i] = *(u8 *)(data++);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7);
|
||||
}
|
||||
@@ -945,12 +987,12 @@ static void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data)
|
||||
|
||||
// Nonsense loop using songId as a size
|
||||
// Would go out of bounds for any song id after SE_DEOXYS_MOVE (253)
|
||||
for (i = 0; i < songId; ++i)
|
||||
for (i = 0; i < songId; i++)
|
||||
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
|
||||
}
|
||||
|
||||
// not used
|
||||
// Unused
|
||||
static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data)
|
||||
{
|
||||
s32 i;
|
||||
@@ -958,84 +1000,84 @@ static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data)
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_32;
|
||||
sBattleBuffersTransferData[1] = size;
|
||||
sBattleBuffersTransferData[2] = (size & 0xFF00) >> 8;
|
||||
for (i = 0; i < size; ++i)
|
||||
for (i = 0; i < size; i++)
|
||||
sBattleBuffersTransferData[3 + i] = *(u8 *)(data++);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3);
|
||||
}
|
||||
|
||||
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
|
||||
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 ret8, u16 ret16)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES;
|
||||
sBattleBuffersTransferData[1] = arg1;
|
||||
sBattleBuffersTransferData[2] = arg2;
|
||||
sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[1] = ret8;
|
||||
sBattleBuffersTransferData[2] = ret16;
|
||||
sBattleBuffersTransferData[3] = (ret16 & 0xFF00) >> 8;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c)
|
||||
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battlePartyOrder)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE;
|
||||
sBattleBuffersTransferData[1] = b;
|
||||
for (i = 0; i < 3; ++i)
|
||||
sBattleBuffersTransferData[2 + i] = c[i];
|
||||
sBattleBuffersTransferData[1] = partyId;
|
||||
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
|
||||
sBattleBuffersTransferData[2 + i] = battlePartyOrder[i];
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5);
|
||||
}
|
||||
|
||||
void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1)
|
||||
void BtlController_EmitOneReturnValue(u8 bufferId, u16 ret)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE;
|
||||
sBattleBuffersTransferData[1] = arg1;
|
||||
sBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[1] = ret;
|
||||
sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[3] = 0;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b)
|
||||
void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE;
|
||||
sBattleBuffersTransferData[1] = b;
|
||||
sBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[1] = ret;
|
||||
sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[3] = 0;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
// not used
|
||||
static void BtlController_EmitCmd37(u8 bufferId)
|
||||
// Unused
|
||||
static void BtlController_EmitClearUnkVar(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_37;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_37;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_37;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_37;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKVAR;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKVAR;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_CLEARUNKVAR;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_CLEARUNKVAR;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
// not used
|
||||
static void BtlController_EmitCmd38(u8 bufferId, u8 b)
|
||||
// Unused
|
||||
static void BtlController_EmitSetUnkVar(u8 bufferId, u8 b)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_38;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_SETUNKVAR;
|
||||
sBattleBuffersTransferData[1] = b;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
// not used
|
||||
static void BtlController_EmitCmd39(u8 bufferId)
|
||||
// Unused
|
||||
static void BtlController_EmitClearUnkFlag(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_39;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_39;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_39;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_39;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKFLAG;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKFLAG;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_CLEARUNKFLAG;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_CLEARUNKFLAG;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
// not used
|
||||
static void BtlController_EmitCmd40(u8 bufferId)
|
||||
// Unused
|
||||
static void BtlController_EmitToggleUnkFlag(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_40;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_40;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_40;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_40;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_TOGGLEUNKFLAG;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_TOGGLEUNKFLAG;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_TOGGLEUNKFLAG;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_TOGGLEUNKFLAG;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
@@ -1050,16 +1092,16 @@ void BtlController_EmitHitAnimation(u8 bufferId)
|
||||
|
||||
void BtlController_EmitCantSwitch(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_42;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_42;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_42;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_42;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_CANTSWITCH;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_CANTSWITCH;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_CANTSWITCH;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_CANTSWITCH;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PLAYSE;
|
||||
sBattleBuffersTransferData[1] = songId;
|
||||
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[3] = 0;
|
||||
@@ -1068,7 +1110,7 @@ void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
|
||||
|
||||
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFARE;
|
||||
sBattleBuffersTransferData[1] = songId;
|
||||
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[3] = 0;
|
||||
@@ -1108,7 +1150,7 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* h
|
||||
sBattleBuffersTransferData[1] = flags & ~PARTY_SUMM_SKIP_DRAW_DELAY; // If true, skip player side
|
||||
sBattleBuffersTransferData[2] = (flags & PARTY_SUMM_SKIP_DRAW_DELAY) >> 7; // If true, skip delay after drawing. True during intro
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
|
||||
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); ++i)
|
||||
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); i++)
|
||||
sBattleBuffersTransferData[4 + i] = *(i + (u8 *)(hpAndStatus));
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * PARTY_SIZE + 4);
|
||||
}
|
||||
|
||||
@@ -146,8 +146,8 @@ void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
// not used
|
||||
UNUSED static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 arg1)
|
||||
// Unused
|
||||
static void DoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 arg1)
|
||||
{
|
||||
sprite->animPaused = 1;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
@@ -452,7 +452,7 @@ void DecompressTrainerBackPalette(u16 index, u8 palette)
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[index].data, (palette + 16) * 16, 0x20);
|
||||
}
|
||||
|
||||
void BattleGfxSfxDummy3(u8 a1)
|
||||
void BattleGfxSfxDummy3(u8 gender)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -894,12 +894,12 @@ void LoadAndCreateEnemyShadowSprites(void)
|
||||
|
||||
LoadCompressedSpriteSheetUsingHeap(&gSpriteSheet_EnemyShadow);
|
||||
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X), GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 29, 0xC8);
|
||||
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
|
||||
if (IsDoubleBattle())
|
||||
{
|
||||
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X), GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 29, 0xC8);
|
||||
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1473,7 +1473,7 @@ void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
|
||||
|
||||
ptr = StringCopy(gDisplayedStringBattle, gUnknown_8260556);
|
||||
GetMonData(mon, MON_DATA_NICKNAME, nickname);
|
||||
StringGetEnd10(nickname);
|
||||
StringGet_Nickname(nickname);
|
||||
ptr = StringCopy(ptr, nickname);
|
||||
*ptr++ = EXT_CTRL_CODE_BEGIN;
|
||||
*ptr++ = EXT_CTRL_CODE_COLOR;
|
||||
|
||||
+2
-2
@@ -479,8 +479,8 @@ void CopyBattlerSpriteToBg(s32 bgId, u8 x, u8 y, u8 battlerPosition, u8 palno, u
|
||||
LoadBgTilemap(bgId, tilemapDest, BG_SCREEN_SIZE, 0);
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_80BCFCC(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
|
||||
// Unused
|
||||
static void DrawBattlerOnBgDMA(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
|
||||
{
|
||||
s32 i, j, offset;
|
||||
|
||||
|
||||
+53
-48
@@ -9,7 +9,6 @@
|
||||
#include "battle_message.h"
|
||||
#include "battle_scripts.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_string_ids.h"
|
||||
#include "berry.h"
|
||||
#include "data.h"
|
||||
#include "decompress.h"
|
||||
@@ -77,7 +76,7 @@ static void CB2_EndLinkBattle(void);
|
||||
static void EndLinkBattleInSteps(void);
|
||||
static void SpriteCB_MoveWildMonToRight(struct Sprite *sprite);
|
||||
static void SpriteCB_WildMonShowHealthbox(struct Sprite *sprite);
|
||||
static void SpriteCB_Unused_8011E28_Step(struct Sprite *sprite);
|
||||
static void SpriteCB_Flicker(struct Sprite *sprite);
|
||||
static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite);
|
||||
static void SpriteCB_BlinkVisible(struct Sprite *sprite);
|
||||
static void oac_poke_ally_(struct Sprite *sprite);
|
||||
@@ -133,7 +132,7 @@ EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0};
|
||||
static EWRAM_DATA u32 sFlickerArray[25] = {0};
|
||||
EWRAM_DATA u32 gBattleTypeFlags = 0;
|
||||
EWRAM_DATA u8 gBattleTerrain = 0;
|
||||
EWRAM_DATA u32 gUnknown_2022B54 = 0;
|
||||
EWRAM_DATA u32 gUnusedFirstBattleVar1 = 0;
|
||||
EWRAM_DATA struct MultiBattlePokemonTx gMultiPartnerParty[3] = {0};
|
||||
EWRAM_DATA u8 *gBattleAnimBgTileBuffer = NULL;
|
||||
EWRAM_DATA u8 *gBattleAnimBgTilemapBuffer = NULL;
|
||||
@@ -185,7 +184,7 @@ EWRAM_DATA u8 gMoveResultFlags = 0;
|
||||
EWRAM_DATA u32 gHitMarker = 0;
|
||||
static EWRAM_DATA u8 sUnusedBattlersArray[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA u8 gUnknown_2023DDC = 0;
|
||||
EWRAM_DATA u8 gUnusedFirstBattleVar2 = 0;
|
||||
EWRAM_DATA u16 gSideStatuses[2] = {0};
|
||||
EWRAM_DATA struct SideTimer gSideTimers[2] = {0};
|
||||
EWRAM_DATA u32 gStatuses3[MAX_BATTLERS_COUNT] = {0};
|
||||
@@ -974,7 +973,7 @@ static void CB2_HandleStartBattle(void)
|
||||
*(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureHi) = 2;
|
||||
BufferPartyVsScreenHealth_AtStart();
|
||||
SetPlayerBerryDataInBattleStruct();
|
||||
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader));
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader));
|
||||
gBattleCommunication[MULTIUSE_STATE] = 2;
|
||||
}
|
||||
if (gWirelessCommType != 0)
|
||||
@@ -1009,7 +1008,7 @@ static void CB2_HandleStartBattle(void)
|
||||
case 3:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2);
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
}
|
||||
break;
|
||||
@@ -1024,7 +1023,7 @@ static void CB2_HandleStartBattle(void)
|
||||
case 7:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon) * 2);
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty + 2, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
}
|
||||
break;
|
||||
@@ -1039,7 +1038,7 @@ static void CB2_HandleStartBattle(void)
|
||||
case 11:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(struct Pokemon) * 2);
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty + 4, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
}
|
||||
break;
|
||||
@@ -1058,7 +1057,7 @@ static void CB2_HandleStartBattle(void)
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
InitBtlControllers();
|
||||
InitBattleControllers();
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
|
||||
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
|
||||
@@ -1141,7 +1140,7 @@ static void CB2_PreInitMultiBattle(void)
|
||||
if (gReceivedRemoteLinkPlayers && IsLinkTaskFinished())
|
||||
{
|
||||
PrepareOwnMultiPartnerBuffer();
|
||||
SendBlock(bitmask_all_link_players_but_self(), gBattleStruct->multiBuffer.multiBattleMons, sizeof(gBattleStruct->multiBuffer.multiBattleMons));
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), gBattleStruct->multiBuffer.multiBattleMons, sizeof(gBattleStruct->multiBuffer.multiBattleMons));
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
}
|
||||
break;
|
||||
@@ -1230,7 +1229,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
*(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureHi) = 2;
|
||||
BufferPartyVsScreenHealth_AtStart();
|
||||
SetPlayerBerryDataInBattleStruct();
|
||||
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader));
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader));
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
}
|
||||
if (gWirelessCommType)
|
||||
@@ -1281,7 +1280,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
case 3:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer, sizeof(struct Pokemon) * 2);
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), gDecompressionBuffer, sizeof(struct Pokemon) * 2);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
}
|
||||
break;
|
||||
@@ -1344,7 +1343,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
case 7:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer + sizeof(struct Pokemon) * 2, sizeof(struct Pokemon));
|
||||
SendBlock(BitmaskAllOtherLinkPlayers(), gDecompressionBuffer + sizeof(struct Pokemon) * 2, sizeof(struct Pokemon));
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
}
|
||||
break;
|
||||
@@ -1417,7 +1416,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
InitBtlControllers();
|
||||
InitBattleControllers();
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
|
||||
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
|
||||
@@ -1918,24 +1917,26 @@ void SpriteCallbackDummy_2(struct Sprite *sprite)
|
||||
{
|
||||
}
|
||||
|
||||
// not used
|
||||
UNUSED static void SpriteCB_Unused_8011E28(struct Sprite *sprite)
|
||||
#define sNumFlickers data[3]
|
||||
#define sDelay data[4]
|
||||
|
||||
// Unused
|
||||
static void SpriteCB_InitFlicker(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[3] = 6;
|
||||
sprite->data[4] = 1;
|
||||
sprite->callback = SpriteCB_Unused_8011E28_Step;
|
||||
sprite->sNumFlickers = 6;
|
||||
sprite->sDelay = 1;
|
||||
sprite->callback = SpriteCB_Flicker;
|
||||
}
|
||||
|
||||
// not used
|
||||
static void SpriteCB_Unused_8011E28_Step(struct Sprite *sprite)
|
||||
static void SpriteCB_Flicker(struct Sprite *sprite)
|
||||
{
|
||||
--sprite->data[4];
|
||||
if (sprite->data[4] == 0)
|
||||
sprite->sDelay--;
|
||||
if (sprite->sDelay == 0)
|
||||
{
|
||||
sprite->data[4] = 8;
|
||||
sprite->sDelay = 8;
|
||||
sprite->invisible ^= 1;
|
||||
--sprite->data[3];
|
||||
if (sprite->data[3] == 0)
|
||||
sprite->sNumFlickers--;
|
||||
if (sprite->sNumFlickers == 0)
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
sprite->callback = SpriteCallbackDummy_2;
|
||||
@@ -1944,6 +1945,9 @@ static void SpriteCB_Unused_8011E28_Step(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
#undef sNumFlickers
|
||||
#undef sDelay
|
||||
|
||||
void SpriteCB_FaintOpponentMon(struct Sprite *sprite)
|
||||
{
|
||||
u8 battler = sprite->sBattler;
|
||||
@@ -2184,8 +2188,9 @@ static void SpriteCB_PlayerThrowUpdate(struct Sprite *sprite)
|
||||
sprite->callback = SpriteCB_Idle;
|
||||
}
|
||||
|
||||
void BattleDummy(void)
|
||||
void BeginBattleIntroDummy(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void BeginBattleIntro(void)
|
||||
@@ -2274,8 +2279,8 @@ static void BattleStartClearSetData(void)
|
||||
gLeveledUpInBattle = 0;
|
||||
gAbsentBattlerFlags = 0;
|
||||
gBattleStruct->runTries = 0;
|
||||
gBattleStruct->safariGoNearCounter = 0;
|
||||
gBattleStruct->safariPkblThrowCounter = 0;
|
||||
gBattleStruct->safariRockThrowCounter = 0;
|
||||
gBattleStruct->safariBaitThrowCounter = 0;
|
||||
*(&gBattleStruct->safariCatchFactor) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275;
|
||||
*(&gBattleStruct->safariEscapeFactor) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].safariZoneFleeRate * 100 / 1275;
|
||||
if (gBattleStruct->safariEscapeFactor <= 1)
|
||||
@@ -4331,32 +4336,32 @@ static void HandleAction_WatchesCarefully(void)
|
||||
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
|
||||
gBattle_BG0_X = 0;
|
||||
gBattle_BG0_Y = 0;
|
||||
if (gBattleStruct->safariGoNearCounter != 0)
|
||||
if (gBattleStruct->safariRockThrowCounter != 0)
|
||||
{
|
||||
--gBattleStruct->safariGoNearCounter;
|
||||
if (gBattleStruct->safariGoNearCounter == 0)
|
||||
--gBattleStruct->safariRockThrowCounter;
|
||||
if (gBattleStruct->safariRockThrowCounter == 0)
|
||||
{
|
||||
*(&gBattleStruct->safariCatchFactor) = gBaseStats[GetMonData(gEnemyParty, MON_DATA_SPECIES)].catchRate * 100 / 1275;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_ANGRY;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleStruct->safariPkblThrowCounter != 0)
|
||||
if (gBattleStruct->safariBaitThrowCounter != 0)
|
||||
{
|
||||
--gBattleStruct->safariPkblThrowCounter;
|
||||
if (gBattleStruct->safariPkblThrowCounter == 0)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||
--gBattleStruct->safariBaitThrowCounter;
|
||||
if (gBattleStruct->safariBaitThrowCounter == 0)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING;
|
||||
else
|
||||
gBattleCommunication[5] = 2;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_EATING;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING;
|
||||
}
|
||||
}
|
||||
gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0];
|
||||
@@ -4379,10 +4384,10 @@ static void HandleAction_ThrowBait(void)
|
||||
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
|
||||
gBattle_BG0_X = 0;
|
||||
gBattle_BG0_Y = 0;
|
||||
gBattleStruct->safariPkblThrowCounter += Random() % 5 + 2;
|
||||
if (gBattleStruct->safariPkblThrowCounter > 6)
|
||||
gBattleStruct->safariPkblThrowCounter = 6;
|
||||
gBattleStruct->safariGoNearCounter = 0;
|
||||
gBattleStruct->safariBaitThrowCounter += Random() % 5 + 2;
|
||||
if (gBattleStruct->safariBaitThrowCounter > 6)
|
||||
gBattleStruct->safariBaitThrowCounter = 6;
|
||||
gBattleStruct->safariRockThrowCounter = 0;
|
||||
gBattleStruct->safariCatchFactor >>= 1;
|
||||
if (gBattleStruct->safariCatchFactor <= 2)
|
||||
gBattleStruct->safariCatchFactor = 3;
|
||||
@@ -4395,10 +4400,10 @@ static void HandleAction_ThrowRock(void)
|
||||
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
|
||||
gBattle_BG0_X = 0;
|
||||
gBattle_BG0_Y = 0;
|
||||
gBattleStruct->safariGoNearCounter += Random() % 5 + 2;
|
||||
if (gBattleStruct->safariGoNearCounter > 6)
|
||||
gBattleStruct->safariGoNearCounter = 6;
|
||||
gBattleStruct->safariPkblThrowCounter = 0;
|
||||
gBattleStruct->safariRockThrowCounter += Random() % 5 + 2;
|
||||
if (gBattleStruct->safariRockThrowCounter > 6)
|
||||
gBattleStruct->safariRockThrowCounter = 6;
|
||||
gBattleStruct->safariBaitThrowCounter = 0;
|
||||
gBattleStruct->safariCatchFactor <<= 1;
|
||||
if (gBattleStruct->safariCatchFactor > 20)
|
||||
gBattleStruct->safariCatchFactor = 20;
|
||||
|
||||
+697
-358
File diff suppressed because it is too large
Load Diff
@@ -109,7 +109,7 @@ static void MainCB2_SetUp(void)
|
||||
break;
|
||||
case 3:
|
||||
LoadFrameGfxOnBg(3);
|
||||
LoadPalette(stdpal_get(0), 0xF0, 0x20);
|
||||
LoadPalette(GetTextWindowPalette(0), 0xF0, 0x20);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
@@ -440,7 +440,7 @@ static void UpdateBattleOutcomeOnTrainerCards(s32 battlerId)
|
||||
}
|
||||
}
|
||||
|
||||
void TryRecordLinkBattleOutcome(s32 battlerId)
|
||||
void UpdatePlayerLinkBattleRecords(s32 battlerId)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNION_ROOM) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNION_ROOM))
|
||||
{
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include "battle_anim.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_scripts.h"
|
||||
#include "battle_string_ids.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_interface.h"
|
||||
@@ -674,7 +673,7 @@ static const u8 sRubyLevelUpStatBoxStats[] =
|
||||
static const struct OamData sOamData_MonIconOnLvlUpBanner =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = 0,
|
||||
.mosaic = FALSE,
|
||||
.bpp = 0,
|
||||
@@ -814,8 +813,8 @@ static const u8 sBallCatchBonuses[] =
|
||||
[ITEM_SAFARI_BALL - ITEM_ULTRA_BALL] = 15
|
||||
};
|
||||
|
||||
// not used
|
||||
static const u32 gUnknown_8250898 = 0xFF7EAE60;
|
||||
// unknown unused data
|
||||
static const u32 sUnused = 0xFF7EAE60;
|
||||
|
||||
static void Cmd_attackcanceler(void)
|
||||
{
|
||||
@@ -6125,7 +6124,7 @@ static void Cmd_various(void)
|
||||
gHitMarker &= ~HITMARKER_PLAYER_FAINTED;
|
||||
}
|
||||
break;
|
||||
case VARIOUS_CASE_8:
|
||||
case VARIOUS_GET_BATTLERS_FOR_RECALL:
|
||||
i = 0; // redundant
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||
gActiveBattler = 1;
|
||||
|
||||
+21
-21
@@ -236,7 +236,7 @@ void StartWildBattle(void)
|
||||
|
||||
static void DoStandardWildBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
StopPlayerAvatar();
|
||||
gMain.savedCallback = CB2_EndWildBattle;
|
||||
@@ -248,7 +248,7 @@ static void DoStandardWildBattle(void)
|
||||
|
||||
void StartRoamerBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
StopPlayerAvatar();
|
||||
gMain.savedCallback = CB2_EndWildBattle;
|
||||
@@ -260,7 +260,7 @@ void StartRoamerBattle(void)
|
||||
|
||||
static void DoSafariBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
StopPlayerAvatar();
|
||||
gMain.savedCallback = CB2_EndSafariBattle;
|
||||
@@ -270,7 +270,7 @@ static void DoSafariBattle(void)
|
||||
|
||||
static void DoGhostBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
StopPlayerAvatar();
|
||||
gMain.savedCallback = CB2_EndWildBattle;
|
||||
@@ -291,7 +291,7 @@ static void DoTrainerBattle(void)
|
||||
void StartOldManTutorialBattle(void)
|
||||
{
|
||||
CreateMaleMon(&gEnemyParty[0], SPECIES_WEEDLE, 5);
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic;
|
||||
gBattleTypeFlags = BATTLE_TYPE_OLD_MAN_TUTORIAL;
|
||||
CreateBattleStartTask(B_TRANSITION_SLICED_SCREEN, 0);
|
||||
@@ -299,7 +299,7 @@ void StartOldManTutorialBattle(void)
|
||||
|
||||
void StartScriptedWildBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_WILD_SCRIPTED;
|
||||
CreateBattleStartTask(GetWildBattleTransition(), 0);
|
||||
@@ -309,7 +309,7 @@ void StartScriptedWildBattle(void)
|
||||
|
||||
void StartMarowakBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gMain.savedCallback = CB2_EndMarowakBattle;
|
||||
if (CheckBagHasItem(ITEM_SILPH_SCOPE, 1))
|
||||
{
|
||||
@@ -328,7 +328,7 @@ void StartMarowakBattle(void)
|
||||
|
||||
void StartSouthernIslandBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
|
||||
CreateBattleStartTask(GetWildBattleTransition(), 0);
|
||||
@@ -340,7 +340,7 @@ void StartLegendaryBattle(void)
|
||||
{
|
||||
u16 species;
|
||||
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_LEGENDARY_FRLG;
|
||||
species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES);
|
||||
@@ -369,7 +369,7 @@ void StartLegendaryBattle(void)
|
||||
|
||||
void StartGroudonKyogreBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
|
||||
if (gGameVersion == VERSION_FIRE_RED)
|
||||
@@ -382,7 +382,7 @@ void StartGroudonKyogreBattle(void)
|
||||
|
||||
void StartRegiBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
|
||||
CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RS_VS_TRAINER);
|
||||
@@ -390,20 +390,20 @@ void StartRegiBattle(void)
|
||||
IncrementGameStat(GAME_STAT_WILD_BATTLES);
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_807FAF8(void)
|
||||
// Unused
|
||||
static void EndPokedudeBattle(void)
|
||||
{
|
||||
LoadPlayerParty();
|
||||
CB2_EndWildBattle();
|
||||
}
|
||||
|
||||
// not used
|
||||
static void sub_807FB08(void)
|
||||
// Unused
|
||||
static void StartPokedudeBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
StopPlayerAvatar();
|
||||
gMain.savedCallback = sub_807FAF8;
|
||||
gMain.savedCallback = EndPokedudeBattle;
|
||||
SavePlayerParty();
|
||||
InitPokedudePartyAndOpponent();
|
||||
CreateBattleStartTask(GetWildBattleTransition(), 0);
|
||||
@@ -823,8 +823,8 @@ void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerSc
|
||||
gSelectedObjectEvent = trainerEventObjId;
|
||||
gSpecialVar_LastTalked = gObjectEvents[trainerEventObjId].localId;
|
||||
BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
|
||||
ScriptContext1_SetupScript(EventScript_DoTrainerBattleFromApproach);
|
||||
ScriptContext2_Enable();
|
||||
ScriptContext_SetupScript(EventScript_DoTrainerBattleFromApproach);
|
||||
LockPlayerFieldControls();
|
||||
}
|
||||
|
||||
bool32 GetTrainerFlagFromScriptPointer(const u8 *data)
|
||||
@@ -889,7 +889,7 @@ void StartTrainerBattle(void)
|
||||
gBattleTypeFlags |= BATTLE_TYPE_FIRST_BATTLE;
|
||||
gMain.savedCallback = CB2_EndTrainerBattle;
|
||||
DoTrainerBattle();
|
||||
ScriptContext1_Stop();
|
||||
ScriptContext_Stop();
|
||||
}
|
||||
|
||||
static void CB2_EndTrainerBattle(void)
|
||||
@@ -964,7 +964,7 @@ void StartRematchBattle(void)
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER;
|
||||
gMain.savedCallback = CB2_EndRematchBattle;
|
||||
DoTrainerBattle();
|
||||
ScriptContext1_Stop();
|
||||
ScriptContext_Stop();
|
||||
}
|
||||
|
||||
void ShowTrainerIntroSpeech(void)
|
||||
|
||||
+14
-13
@@ -41,13 +41,14 @@ static u16 GetCurrentBattleTowerWinStreak(u8 levelType);
|
||||
static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer * eReaderTrainer);
|
||||
static void PrintEReaderTrainerFarewellMessage(void);
|
||||
|
||||
const u8 unref_83FFAAC[] = {
|
||||
0x05, 0x04, 0x01, 0x10, 0x04, 0x02, 0x05, 0x06,
|
||||
0x03, 0x10, 0x06, 0x04, 0x00, 0x01, 0x02, 0x03,
|
||||
0x00, 0x02, 0x03
|
||||
// unknown unused data
|
||||
static const u8 sUnused[] = {
|
||||
5, 4, 1, 16, 4, 2, 5, 6,
|
||||
3, 16, 6, 4, 0, 1, 2, 3,
|
||||
0, 2, 3
|
||||
};
|
||||
|
||||
const u8 unref_83FFABF[] = _("100");
|
||||
static const u8 sText_100[] = _("100");
|
||||
|
||||
static const struct BattleTowerTrainer sBattleTowerTrainers[] =
|
||||
{
|
||||
@@ -717,21 +718,21 @@ static u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count)
|
||||
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
|
||||
{
|
||||
if (count == 0)
|
||||
StringAppend(gStringVar1, gUnknown_83FE859);
|
||||
StringAppend(gStringVar1, gText_BattleTowerBan_Space);
|
||||
count++;
|
||||
StringAppend(gStringVar1, gSpeciesNames[species]);
|
||||
switch (count)
|
||||
{
|
||||
case 2:
|
||||
StringAppend(gStringVar1, gUnknown_83FE85E);
|
||||
StringAppend(gStringVar1, gText_BattleTowerBan_Newline2);
|
||||
break;
|
||||
case 5:
|
||||
case 8:
|
||||
case 11:
|
||||
StringAppend(gStringVar1, gUnknown_83FE85C);
|
||||
StringAppend(gStringVar1, gText_BattleTowerBan_Newline1);
|
||||
break;
|
||||
default:
|
||||
StringAppend(gStringVar1, gUnknown_83FE859);
|
||||
StringAppend(gStringVar1, gText_BattleTowerBan_Space);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -815,9 +816,9 @@ void CheckPartyBattleTowerBanlist(void)
|
||||
i = StringLength(gStringVar1);
|
||||
gStringVar1[i - 1] = EOS;
|
||||
if (counter < 3)
|
||||
StringAppend(gStringVar1, gUnknown_83FE860);
|
||||
StringAppend(gStringVar1, gText_BattleTowerBan_Is1);
|
||||
else
|
||||
StringAppend(gStringVar1, gUnknown_83FE864);
|
||||
StringAppend(gStringVar1, gText_BattleTowerBan_Is2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1119,7 +1120,7 @@ static void SetPlayerBattleTowerRecord(void)
|
||||
playerRecord->trainerClass = trainerClass;
|
||||
|
||||
CopyTrainerId(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId);
|
||||
StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName);
|
||||
StringCopy_PlayerName(playerRecord->name, gSaveBlock2Ptr->playerName);
|
||||
|
||||
playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
|
||||
|
||||
@@ -1310,7 +1311,7 @@ static void Debug_FillEReaderTrainerWithPlayerData(void)
|
||||
}
|
||||
|
||||
CopyTrainerId(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId);
|
||||
StringCopy7(ereaderTrainer->name, gSaveBlock2Ptr->playerName);
|
||||
StringCopy_PlayerName(ereaderTrainer->name, gSaveBlock2Ptr->playerName);
|
||||
|
||||
ereaderTrainer->winStreak = 1;
|
||||
|
||||
|
||||
@@ -478,7 +478,7 @@ static const struct SpriteTemplate sSpriteTemplate_SlidingPokeball =
|
||||
static const struct OamData sOamData_Unused =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = 0,
|
||||
.mosaic = FALSE,
|
||||
.bpp = 0,
|
||||
@@ -1076,7 +1076,7 @@ bool8 FldEff_Pokeball(void)
|
||||
u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_SlidingPokeball, gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
|
||||
|
||||
gSprites[spriteId].oam.priority = 0;
|
||||
gSprites[spriteId].oam.affineMode = 1;
|
||||
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[spriteId].data[0] = gFieldEffectArguments[2];
|
||||
gSprites[spriteId].data[1] = gFieldEffectArguments[3];
|
||||
gSprites[spriteId].data[2] = -1;
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include "battle_message.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_string_ids.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "constants/battle.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
+25
-25
@@ -659,7 +659,7 @@ static const u32 sBg_Tilemap[] = INCBIN_U32("graphics/berry_crush/bg.bin.lz");
|
||||
|
||||
// Takes the number of players - 2 and a player id and returns the
|
||||
// index into sPlayerCoords where that player should be seated
|
||||
static const u8 gUnknown_846F280[MAX_RFU_PLAYERS - 1][MAX_RFU_PLAYERS] = {
|
||||
static const u8 sPlayerIdToPosId[MAX_RFU_PLAYERS - 1][MAX_RFU_PLAYERS] = {
|
||||
{1, 3},
|
||||
{0, 1, 3},
|
||||
{1, 3, 2, 4},
|
||||
@@ -932,7 +932,7 @@ static const struct DigitObjUtilTemplate sDigitObjTemplates[] = {
|
||||
};
|
||||
|
||||
static const u8 *const sBCRankingHeaders[] = {
|
||||
[RESULTS_PAGE_PRESSES] = gText_SpaceTimes,
|
||||
[RESULTS_PAGE_PRESSES] = gText_SpaceTimes2,
|
||||
[RESULTS_PAGE_RANDOM] = gText_XDotY,
|
||||
[RESULTS_PAGE_CRUSHING] = gText_StrVar1Berry,
|
||||
|
||||
@@ -1299,21 +1299,21 @@ static u32 Cmd_PrintMessage(struct BerryCrushGame * game, u8 *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_ShowGameDisplay(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_ShowGameDisplay(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
if (ShowGameDisplay())
|
||||
RunOrScheduleCommand(game->nextCmd, RUN_CMD, game->commandParams);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_HideGameDisplay(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_HideGameDisplay(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
if (HideGameDisplay())
|
||||
RunOrScheduleCommand(game->nextCmd, RUN_CMD, game->commandParams);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_SignalReadyToBegin(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_SignalReadyToBegin(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
switch (game->cmdState)
|
||||
{
|
||||
@@ -1356,7 +1356,7 @@ static u32 Cmd_AskPickBerry(struct BerryCrushGame * game, u8 *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_GoToBerryPouch(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_GoToBerryPouch(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
game->cmdCallback = NULL;
|
||||
SetMainCallback2(ChooseBerry);
|
||||
@@ -1415,7 +1415,7 @@ static u32 Cmd_WaitForOthersToPickBerries(struct BerryCrushGame * game, u8 *args
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_DropBerriesIntoCrusher(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_DropBerriesIntoCrusher(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
switch (game->cmdState)
|
||||
{
|
||||
@@ -1470,7 +1470,7 @@ static u32 Cmd_DropBerriesIntoCrusher(struct BerryCrushGame * game, UNUSED u8 *a
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_DropLid(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_DropLid(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
switch (game->cmdState)
|
||||
{
|
||||
@@ -1517,7 +1517,7 @@ static u32 Cmd_DropLid(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_Countdown(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_Countdown(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
switch (game-> cmdState)
|
||||
{
|
||||
@@ -1822,7 +1822,7 @@ static void RecvLinkData(struct BerryCrushGame * game)
|
||||
game->endGame = TRUE;
|
||||
}
|
||||
|
||||
static u32 Cmd_PlayGame_Leader(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_PlayGame_Leader(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
memset(&game->localState, 0, sizeof(game->localState));
|
||||
memset(&game->recvCmd, 0, sizeof(game->recvCmd));
|
||||
@@ -1855,7 +1855,7 @@ static u32 Cmd_PlayGame_Leader(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
}
|
||||
}
|
||||
|
||||
static u32 Cmd_PlayGame_Member(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_PlayGame_Member(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
memset(&game->localState, 0, sizeof(game->localState));
|
||||
memset(&game->recvCmd, 0, sizeof(game->recvCmd));
|
||||
@@ -1886,7 +1886,7 @@ static u32 Cmd_PlayGame_Member(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
}
|
||||
|
||||
// Game was 'won', crusher was pushed down fully before time was up
|
||||
static u32 Cmd_FinishGame(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_FinishGame(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
switch (game->cmdState)
|
||||
{
|
||||
@@ -1983,7 +1983,7 @@ static u32 Cmd_HandleTimeUp(struct BerryCrushGame * game, u8 *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_TabulateResults(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_TabulateResults(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
u8 i, j, tempPlayerId;
|
||||
s32 temp1, temp2;
|
||||
@@ -2283,7 +2283,7 @@ static u32 Cmd_AskPlayAgain(struct BerryCrushGame * game, u8 *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_CommunicatePlayAgainResponses(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_CommunicatePlayAgainResponses(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
u8 i = 0;
|
||||
|
||||
@@ -2330,7 +2330,7 @@ static u32 Cmd_CommunicatePlayAgainResponses(struct BerryCrushGame * game, UNUSE
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_PlayAgain(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_PlayAgain(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
switch (game->cmdState)
|
||||
{
|
||||
@@ -2360,7 +2360,7 @@ static u32 Cmd_PlayAgain(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_StopGame(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_StopGame(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
switch (game->cmdState)
|
||||
{
|
||||
@@ -2391,7 +2391,7 @@ static u32 Cmd_StopGame(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_CloseLink(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_CloseLink(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
switch (game->cmdState)
|
||||
{
|
||||
@@ -2415,7 +2415,7 @@ static u32 Cmd_CloseLink(struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 Cmd_Quit(UNUSED struct BerryCrushGame * game, UNUSED u8 *args)
|
||||
static u32 Cmd_Quit(struct BerryCrushGame * game, u8 *args)
|
||||
{
|
||||
QuitBerryCrush(NULL);
|
||||
return 0;
|
||||
@@ -2766,7 +2766,7 @@ static void SpriteCB_DropBerryIntoCrusher(struct Sprite *sprite)
|
||||
#undef MASK_TARGET_Y
|
||||
#undef F_MOVE_HORIZ
|
||||
|
||||
static void BerryCrushFreeBerrySpriteGfx(struct BerryCrushGame * game, UNUSED struct BerryCrushGame_Gfx * gfx)
|
||||
static void BerryCrushFreeBerrySpriteGfx(struct BerryCrushGame * game, struct BerryCrushGame_Gfx * gfx)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < game->playerCount; i++)
|
||||
@@ -3046,7 +3046,7 @@ static bool32 OpenResultsWindow(struct BerryCrushGame * game, struct BerryCrushG
|
||||
FillWindowPixelBuffer(spriteManager->resultsWindowId, PIXEL_FILL(0));
|
||||
break;
|
||||
case 2:
|
||||
TextWindow_SetStdFrame0_WithPal(spriteManager->resultsWindowId, 0x21D, 0xD0);
|
||||
LoadStdWindowGfx(spriteManager->resultsWindowId, 0x21D, 0xD0);
|
||||
DrawStdFrameWithCustomTileAndPalette(spriteManager->resultsWindowId, FALSE, 541, 13);
|
||||
break;
|
||||
case 3:
|
||||
@@ -3105,7 +3105,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId)
|
||||
tWindowId = AddWindow(&sWindowTemplate_BerryCrushRankings);
|
||||
PutWindowTilemap(tWindowId);
|
||||
FillWindowPixelBuffer(tWindowId, PIXEL_FILL(0));
|
||||
TextWindow_SetStdFrame0_WithPal(tWindowId, 0x21D, 0xD0);
|
||||
LoadStdWindowGfx(tWindowId, 0x21D, 0xD0);
|
||||
DrawStdFrameWithCustomTileAndPalette(tWindowId, 0, 0x21D, 0xD);
|
||||
break;
|
||||
case 1:
|
||||
@@ -3178,8 +3178,8 @@ static void Task_ShowBerryCrushRankings(u8 taskId)
|
||||
ClearWindowTilemap(tWindowId);
|
||||
RemoveWindow(tWindowId);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
ScriptContext2_Disable();
|
||||
ScriptContext_Enable();
|
||||
UnlockPlayerFieldControls();
|
||||
tState = 0;
|
||||
return;
|
||||
}
|
||||
@@ -3190,7 +3190,7 @@ void ShowBerryCrushRankings(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
taskId = CreateTask(Task_ShowBerryCrushRankings, 0);
|
||||
gTasks[taskId].tPressingSpeeds(0) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[0];
|
||||
gTasks[taskId].tPressingSpeeds(1) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[1];
|
||||
@@ -3221,7 +3221,7 @@ static void CreatePlayerNameWindows(struct BerryCrushGame * game)
|
||||
|
||||
for (i = 0; i < game->playerCount; ++i)
|
||||
{
|
||||
game->gfx.playerCoords[i] = &sPlayerCoords[gUnknown_846F280[game->playerCount - 2][i]];
|
||||
game->gfx.playerCoords[i] = &sPlayerCoords[sPlayerIdToPosId[game->playerCount - 2][i]];
|
||||
game->gfx.nameWindowIds[i] = AddWindow(&sWindowTemplates_PlayerNames[game->gfx.playerCoords[i]->playerId]);
|
||||
PutWindowTilemap(game->gfx.nameWindowIds[i]);
|
||||
FillWindowPixelBuffer(game->gfx.nameWindowIds[i], PIXEL_FILL(0));
|
||||
|
||||
+99
-82
@@ -9,51 +9,64 @@
|
||||
#include "help_system.h"
|
||||
#include "m4a.h"
|
||||
|
||||
// Static type declarations
|
||||
enum {
|
||||
SCENE_ENSURE_CONNECT,
|
||||
SCENE_TURN_OFF_POWER,
|
||||
SCENE_TRANSMITTING,
|
||||
SCENE_FOLLOW_INSTRUCT,
|
||||
SCENE_TRANSMIT_FAILED,
|
||||
SCENE_BEGIN,
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
u8 state;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
struct MultiBootParam mb;
|
||||
} berryfix_t;
|
||||
enum {
|
||||
STATE_BEGIN,
|
||||
STATE_CONNECT,
|
||||
STATE_TURN_OFF_POWER,
|
||||
STATE_UNUSED,
|
||||
STATE_INIT_MULTIBOOT,
|
||||
STATE_MULTIBOOT,
|
||||
STATE_TRANSMIT,
|
||||
STATE_SUCCEEDED,
|
||||
STATE_EXIT,
|
||||
STATE_FAILED,
|
||||
STATE_RETRY,
|
||||
};
|
||||
|
||||
// Static RAM declarations
|
||||
const void *gMultibootStart;
|
||||
int gMultibootStatus;
|
||||
size_t gMultibootSize;
|
||||
struct MultiBootParam gMultibootParam;
|
||||
|
||||
const void *gUnknown_3005EF0;
|
||||
int gUnknown_3005EF4;
|
||||
size_t gUnknown_3005EF8;
|
||||
struct MultiBootParam gUnknown_3005F00;
|
||||
static void CB2_BerryFix(void);
|
||||
static void Task_BerryFixMain(u8 taskId);
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
static void mb_berry_fix_maincb(void);
|
||||
static void mb_berry_fix_task(u8 taskId);
|
||||
|
||||
// .rodata
|
||||
|
||||
static const void *const gUnknown_847A890[][3] = {
|
||||
{
|
||||
static const void *const sBerryFixGraphics[][3] = {
|
||||
[SCENE_ENSURE_CONNECT] = {
|
||||
gBerryFixGameboy_Gfx,
|
||||
gBerryFixGameboy_Tilemap,
|
||||
gBerryFixGameboy_Pal
|
||||
}, {
|
||||
},
|
||||
[SCENE_TURN_OFF_POWER] = {
|
||||
gBerryFixGameboyLogo_Gfx,
|
||||
gBerryFixGameboyLogo_Tilemap,
|
||||
gBerryFixGameboyLogo_Pal
|
||||
}, {
|
||||
},
|
||||
[SCENE_TRANSMITTING] = {
|
||||
gBerryFixGbaTransfer_Gfx,
|
||||
gBerryFixGbaTransfer_Tilemap,
|
||||
gBerryFixGbaTransfer_Pal
|
||||
}, {
|
||||
},
|
||||
[SCENE_FOLLOW_INSTRUCT] = {
|
||||
gBerryFixGbaTransferHighlight_Gfx,
|
||||
gBerryFixGbaTransferHighlight_Tilemap,
|
||||
gBerryFixGbaTransferHighlight_Pal
|
||||
}, {
|
||||
},
|
||||
[SCENE_TRANSMIT_FAILED] = {
|
||||
gBerryFixGbaTransferError_Gfx,
|
||||
gBerryFixGbaTransferError_Tilemap,
|
||||
gBerryFixGbaTransferError_Pal
|
||||
}, {
|
||||
},
|
||||
[SCENE_BEGIN] = {
|
||||
gBerryFixWindow_Gfx,
|
||||
gBerryFixWindow_Tilemap,
|
||||
gBerryFixWindow_Pal
|
||||
@@ -63,22 +76,23 @@ static const void *const gUnknown_847A890[][3] = {
|
||||
extern const u8 gMultiBootProgram_BerryGlitchFix_Start[0x3BF4];
|
||||
extern const u8 gMultiBootProgram_BerryGlitchFix_End[];
|
||||
|
||||
// .text
|
||||
|
||||
static void mb_berry_fix_print(int scene)
|
||||
static void SetScene(int scene)
|
||||
{
|
||||
REG_DISPCNT = 0;
|
||||
REG_BG0HOFS = 0;
|
||||
REG_BG0VOFS = 0;
|
||||
REG_BLDCNT = 0;
|
||||
LZ77UnCompVram(gUnknown_847A890[scene][0], (void *)BG_CHAR_ADDR(0));
|
||||
LZ77UnCompVram(gUnknown_847A890[scene][1], (void *)BG_SCREEN_ADDR(31));
|
||||
CpuCopy16(gUnknown_847A890[scene][2], (void *)BG_PLTT, 0x200);
|
||||
LZ77UnCompVram(sBerryFixGraphics[scene][0], (void *)BG_CHAR_ADDR(0));
|
||||
LZ77UnCompVram(sBerryFixGraphics[scene][1], (void *)BG_SCREEN_ADDR(31));
|
||||
CpuCopy16(sBerryFixGraphics[scene][2], (void *)BG_PLTT, 0x200);
|
||||
REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(31) | BGCNT_TXT256x256;
|
||||
REG_DISPCNT = DISPCNT_BG0_ON;
|
||||
}
|
||||
|
||||
void mb_berry_fix_serve(void) // noreturn
|
||||
#define tState data[0]
|
||||
#define tTimer data[1]
|
||||
|
||||
void CB2_InitBerryFixProgram(void)
|
||||
{
|
||||
u8 taskId;
|
||||
DisableInterrupts(0xFFFF);
|
||||
@@ -91,96 +105,99 @@ void mb_berry_fix_serve(void) // noreturn
|
||||
ResetTasks();
|
||||
ScanlineEffect_Stop();
|
||||
gHelpSystemEnabled = FALSE;
|
||||
taskId = CreateTask(mb_berry_fix_task, 0);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
SetMainCallback2(mb_berry_fix_maincb);
|
||||
taskId = CreateTask(Task_BerryFixMain, 0);
|
||||
gTasks[taskId].tState = STATE_BEGIN;
|
||||
SetMainCallback2(CB2_BerryFix);
|
||||
}
|
||||
|
||||
static void mb_berry_fix_maincb(void)
|
||||
static void CB2_BerryFix(void)
|
||||
{
|
||||
RunTasks();
|
||||
}
|
||||
|
||||
static void mb_berry_fix_task(u8 taskId)
|
||||
static void Task_BerryFixMain(u8 taskId)
|
||||
{
|
||||
s16 * data = gTasks[taskId].data;
|
||||
|
||||
switch (data[0])
|
||||
switch (tState)
|
||||
{
|
||||
case 0:
|
||||
mb_berry_fix_print(5);
|
||||
data[0] = 1;
|
||||
case STATE_BEGIN:
|
||||
SetScene(SCENE_BEGIN);
|
||||
tState = STATE_CONNECT;
|
||||
break;
|
||||
case 1:
|
||||
case STATE_CONNECT:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
mb_berry_fix_print(0);
|
||||
data[0] = 2;
|
||||
SetScene(SCENE_ENSURE_CONNECT);
|
||||
tState = STATE_TURN_OFF_POWER;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case STATE_TURN_OFF_POWER:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
mb_berry_fix_print(1);
|
||||
data[0] = 4;
|
||||
SetScene(SCENE_TURN_OFF_POWER);
|
||||
tState = STATE_INIT_MULTIBOOT;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_3005EF0 = gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gUnknown_3005EF8 = gMultiBootProgram_BerryGlitchFix_End - gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gUnknown_3005F00.masterp = (void *)gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gUnknown_3005F00.server_type = MULTIBOOT_SERVER_TYPE_NORMAL;
|
||||
MultiBootInit(&gUnknown_3005F00);
|
||||
data[1] = 0;
|
||||
data[0] = 5;
|
||||
case STATE_INIT_MULTIBOOT:
|
||||
gMultibootStart = gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gMultibootSize = gMultiBootProgram_BerryGlitchFix_End - gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gMultibootParam.masterp = (void *)gMultiBootProgram_BerryGlitchFix_Start;
|
||||
gMultibootParam.server_type = MULTIBOOT_SERVER_TYPE_NORMAL;
|
||||
MultiBootInit(&gMultibootParam);
|
||||
tTimer = 0;
|
||||
tState = STATE_MULTIBOOT;
|
||||
break;
|
||||
case 5:
|
||||
if (gUnknown_3005F00.probe_count == 0 && gUnknown_3005F00.response_bit & 0x2 && gUnknown_3005F00.client_bit & 0x2)
|
||||
case STATE_MULTIBOOT:
|
||||
if (gMultibootParam.probe_count == 0 && gMultibootParam.response_bit & 0x2 && gMultibootParam.client_bit & 0x2)
|
||||
{
|
||||
data[1]++;
|
||||
if (data[1] > 180)
|
||||
if (++tTimer > 180)
|
||||
{
|
||||
mb_berry_fix_print(2);
|
||||
MultiBootStartMaster(&gUnknown_3005F00, gUnknown_3005EF0 + MULTIBOOT_HEADER_SIZE, gUnknown_3005EF8 - MULTIBOOT_HEADER_SIZE, 4, 1);
|
||||
data[1] = 0;
|
||||
data[0] = 6;
|
||||
SetScene(SCENE_TRANSMITTING);
|
||||
MultiBootStartMaster(&gMultibootParam, gMultibootStart + MULTIBOOT_HEADER_SIZE, gMultibootSize - MULTIBOOT_HEADER_SIZE, 4, 1);
|
||||
tTimer = 0;
|
||||
tState = STATE_TRANSMIT;
|
||||
}
|
||||
else
|
||||
gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
|
||||
{
|
||||
gMultibootStatus = MultiBootMain(&gMultibootParam);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
data[1] = 0;
|
||||
gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
|
||||
tTimer = 0;
|
||||
gMultibootStatus = MultiBootMain(&gMultibootParam);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_3005EF4 = MultiBootMain(&gUnknown_3005F00);
|
||||
if (MultiBootCheckComplete(&gUnknown_3005F00))
|
||||
case STATE_TRANSMIT:
|
||||
gMultibootStatus = MultiBootMain(&gMultibootParam);
|
||||
if (MultiBootCheckComplete(&gMultibootParam))
|
||||
{
|
||||
mb_berry_fix_print(3);
|
||||
data[0] = 7;
|
||||
SetScene(SCENE_FOLLOW_INSTRUCT);
|
||||
tState = STATE_SUCCEEDED;
|
||||
}
|
||||
else if (!(gMultibootParam.client_bit & 2))
|
||||
{
|
||||
tState = STATE_FAILED;
|
||||
}
|
||||
else if (!(gUnknown_3005F00.client_bit & 2))
|
||||
data[0] = 9;
|
||||
break;
|
||||
case 7:
|
||||
data[0] = 8;
|
||||
case STATE_SUCCEEDED:
|
||||
tState = STATE_EXIT;
|
||||
break;
|
||||
case 8:
|
||||
case STATE_EXIT:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
DoSoftReset();
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
mb_berry_fix_print(4);
|
||||
data[0] = 10;
|
||||
case STATE_FAILED:
|
||||
SetScene(SCENE_TRANSMIT_FAILED);
|
||||
tState = STATE_RETRY;
|
||||
break;
|
||||
case 10:
|
||||
case STATE_RETRY:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
data[0] = 0;
|
||||
tState = STATE_BEGIN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+9
-9
@@ -685,7 +685,7 @@ static void SetUpListMenuTemplate(void)
|
||||
static void GetBerryNameAndIndexForMenu(u8 * dest, u16 itemId)
|
||||
{
|
||||
StringCopy(gStringVar4, gText_FontSize0);
|
||||
StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01);
|
||||
StringAppend(gStringVar4, gText_NumberClear01);
|
||||
ConvertIntToDecimalStringN(gStringVar1, itemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
|
||||
StringAppend(gStringVar4, gStringVar1);
|
||||
CopyItemName(itemId, gStringVar1);
|
||||
@@ -709,9 +709,9 @@ static void BerryPouchMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMen
|
||||
}
|
||||
DestroyItemMenuIcon(sResources->itemMenuIconId ^ 1);
|
||||
if (sResources->listMenuNumItems != itemIndex)
|
||||
sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), sResources->itemMenuIconId);
|
||||
CreateBerryPouchItemIcon(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), sResources->itemMenuIconId);
|
||||
else
|
||||
sub_80989A0(ITEM_N_A, sResources->itemMenuIconId);
|
||||
CreateBerryPouchItemIcon(ITEMS_COUNT, sResources->itemMenuIconId);
|
||||
sResources->itemMenuIconId ^= 1;
|
||||
PrintSelectedBerryDescription(itemIndex);
|
||||
}
|
||||
@@ -1074,7 +1074,7 @@ static void Task_BerryPouch_Use(u8 taskId)
|
||||
else
|
||||
ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId);
|
||||
}
|
||||
else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1)
|
||||
else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == ITEM_TYPE_PARTY_MENU)
|
||||
Task_Give_PrintThereIsNoPokemon(taskId);
|
||||
else
|
||||
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
|
||||
@@ -1258,7 +1258,7 @@ static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId)
|
||||
|
||||
static void Task_ContextMenu_FromPokemonPC(u8 taskId)
|
||||
{
|
||||
sResources->exitCallback = Cb2_ReturnToPSS;
|
||||
sResources->exitCallback = CB2_ReturnToPokeStorage;
|
||||
gTasks[taskId].func = BerryPouch_StartFadeToExitCallback;
|
||||
}
|
||||
|
||||
@@ -1411,10 +1411,10 @@ static void BerryPouchInitWindows(void)
|
||||
u8 i;
|
||||
InitWindows(sWindowTemplates_Main);
|
||||
DeactivateAllTextPrinters();
|
||||
TextWindow_SetUserSelectedFrame(0, 0x001, 0xE0);
|
||||
TextWindow_LoadResourcesStdFrame0(0, 0x013, 0xD0);
|
||||
TextWindow_SetStdFrame0_WithPal(0, 0x00A, 0xC0);
|
||||
LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20);
|
||||
LoadUserWindowGfx(0, 0x001, 0xE0);
|
||||
LoadMenuMessageWindowGfx(0, 0x013, 0xD0);
|
||||
LoadStdWindowGfx(0, 0x00A, 0xC0);
|
||||
LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
|
||||
for (i = 0; i < 3; i++)
|
||||
FillWindowPixelBuffer(i, PIXEL_FILL(0));
|
||||
PutWindowTilemap(0);
|
||||
|
||||
+1
-1
@@ -119,7 +119,7 @@ void DisplayBerryPowderVendorMenu(void)
|
||||
sBerryPowderVendorWindowId = AddWindow(&template);
|
||||
FillWindowPixelBuffer(sBerryPowderVendorWindowId, 0);
|
||||
PutWindowTilemap(sBerryPowderVendorWindowId);
|
||||
TextWindow_SetStdFrame0_WithPal(sBerryPowderVendorWindowId, 0x21D, 0xD0);
|
||||
LoadStdWindowGfx(sBerryPowderVendorWindowId, 0x21D, 0xD0);
|
||||
DrawPlayerPowderAmount(sBerryPowderVendorWindowId, 0x21D, 0xD, GetBerryPowder());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -600,58 +600,58 @@ u32 ChangeBgX(u8 bg, u32 value, u8 op)
|
||||
|
||||
switch (op)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
sGpuBgConfigs2[bg].bg_x = value;
|
||||
break;
|
||||
case 1:
|
||||
sGpuBgConfigs2[bg].bg_x += value;
|
||||
break;
|
||||
case 2:
|
||||
sGpuBgConfigs2[bg].bg_x -= value;
|
||||
break;
|
||||
case BG_COORD_SET:
|
||||
default:
|
||||
sGpuBgConfigs2[bg].bg_x = value;
|
||||
break;
|
||||
case BG_COORD_ADD:
|
||||
sGpuBgConfigs2[bg].bg_x += value;
|
||||
break;
|
||||
case BG_COORD_SUB:
|
||||
sGpuBgConfigs2[bg].bg_x -= value;
|
||||
break;
|
||||
}
|
||||
|
||||
mode = GetBgMode();
|
||||
|
||||
switch (bg)
|
||||
{
|
||||
case 0:
|
||||
temp1 = sGpuBgConfigs2[0].bg_x >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, temp1);
|
||||
break;
|
||||
case 1:
|
||||
temp1 = sGpuBgConfigs2[1].bg_x >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, temp1);
|
||||
break;
|
||||
case 2:
|
||||
if (mode == 0)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[2].bg_x >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, temp1);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[2].bg_x >> 0x10;
|
||||
temp2 = sGpuBgConfigs2[2].bg_x & 0xFFFF;
|
||||
SetGpuReg(REG_OFFSET_BG2X_H, temp1);
|
||||
SetGpuReg(REG_OFFSET_BG2X_L, temp2);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mode == 0)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[3].bg_x >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG3HOFS, temp1);
|
||||
}
|
||||
else if (mode == 2)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[3].bg_x >> 0x10;
|
||||
temp2 = sGpuBgConfigs2[3].bg_x & 0xFFFF;
|
||||
SetGpuReg(REG_OFFSET_BG3X_H, temp1);
|
||||
SetGpuReg(REG_OFFSET_BG3X_L, temp2);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
temp1 = sGpuBgConfigs2[0].bg_x >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, temp1);
|
||||
break;
|
||||
case 1:
|
||||
temp1 = sGpuBgConfigs2[1].bg_x >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, temp1);
|
||||
break;
|
||||
case 2:
|
||||
if (mode == 0)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[2].bg_x >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, temp1);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[2].bg_x >> 0x10;
|
||||
temp2 = sGpuBgConfigs2[2].bg_x & 0xFFFF;
|
||||
SetGpuReg(REG_OFFSET_BG2X_H, temp1);
|
||||
SetGpuReg(REG_OFFSET_BG2X_L, temp2);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mode == 0)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[3].bg_x >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG3HOFS, temp1);
|
||||
}
|
||||
else if (mode == 2)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[3].bg_x >> 0x10;
|
||||
temp2 = sGpuBgConfigs2[3].bg_x & 0xFFFF;
|
||||
SetGpuReg(REG_OFFSET_BG3X_H, temp1);
|
||||
SetGpuReg(REG_OFFSET_BG3X_L, temp2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return sGpuBgConfigs2[bg].bg_x;
|
||||
@@ -679,58 +679,58 @@ u32 ChangeBgY(u8 bg, u32 value, u8 op)
|
||||
|
||||
switch (op)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
sGpuBgConfigs2[bg].bg_y = value;
|
||||
break;
|
||||
case 1:
|
||||
sGpuBgConfigs2[bg].bg_y += value;
|
||||
break;
|
||||
case 2:
|
||||
sGpuBgConfigs2[bg].bg_y -= value;
|
||||
break;
|
||||
case BG_COORD_SET:
|
||||
default:
|
||||
sGpuBgConfigs2[bg].bg_y = value;
|
||||
break;
|
||||
case BG_COORD_ADD:
|
||||
sGpuBgConfigs2[bg].bg_y += value;
|
||||
break;
|
||||
case BG_COORD_SUB:
|
||||
sGpuBgConfigs2[bg].bg_y -= value;
|
||||
break;
|
||||
}
|
||||
|
||||
mode = GetBgMode();
|
||||
|
||||
switch (bg)
|
||||
{
|
||||
case 0:
|
||||
temp1 = sGpuBgConfigs2[0].bg_y >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, temp1);
|
||||
break;
|
||||
case 1:
|
||||
temp1 = sGpuBgConfigs2[1].bg_y >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, temp1);
|
||||
break;
|
||||
case 2:
|
||||
if (mode == 0)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[2].bg_y >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, temp1);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[2].bg_y >> 0x10;
|
||||
temp2 = sGpuBgConfigs2[2].bg_y & 0xFFFF;
|
||||
SetGpuReg(REG_OFFSET_BG2Y_H, temp1);
|
||||
SetGpuReg(REG_OFFSET_BG2Y_L, temp2);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mode == 0)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[3].bg_y >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG3VOFS, temp1);
|
||||
}
|
||||
else if (mode == 2)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[3].bg_y >> 0x10;
|
||||
temp2 = sGpuBgConfigs2[3].bg_y & 0xFFFF;
|
||||
SetGpuReg(REG_OFFSET_BG3Y_H, temp1);
|
||||
SetGpuReg(REG_OFFSET_BG3Y_L, temp2);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
temp1 = sGpuBgConfigs2[0].bg_y >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, temp1);
|
||||
break;
|
||||
case 1:
|
||||
temp1 = sGpuBgConfigs2[1].bg_y >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, temp1);
|
||||
break;
|
||||
case 2:
|
||||
if (mode == 0)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[2].bg_y >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, temp1);
|
||||
}
|
||||
else
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[2].bg_y >> 0x10;
|
||||
temp2 = sGpuBgConfigs2[2].bg_y & 0xFFFF;
|
||||
SetGpuReg(REG_OFFSET_BG2Y_H, temp1);
|
||||
SetGpuReg(REG_OFFSET_BG2Y_L, temp2);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (mode == 0)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[3].bg_y >> 0x8;
|
||||
SetGpuReg(REG_OFFSET_BG3VOFS, temp1);
|
||||
}
|
||||
else if (mode == 2)
|
||||
{
|
||||
temp1 = sGpuBgConfigs2[3].bg_y >> 0x10;
|
||||
temp2 = sGpuBgConfigs2[3].bg_y & 0xFFFF;
|
||||
SetGpuReg(REG_OFFSET_BG3Y_H, temp1);
|
||||
SetGpuReg(REG_OFFSET_BG3Y_L, temp2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return sGpuBgConfigs2[bg].bg_y;
|
||||
|
||||
+7
-7
@@ -100,7 +100,7 @@ static u8 BikeInputHandler_Normal(u8 *direction_p, u16 newKeys, u16 heldKeys)
|
||||
}
|
||||
}
|
||||
|
||||
static u8 BikeInputHandler_Turning(u8 *direction_p, UNUSED u16 newKeys, UNUSED u16 heldKeys)
|
||||
static u8 BikeInputHandler_Turning(u8 *direction_p, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
*direction_p = gPlayerAvatar.newDirBackup;
|
||||
gPlayerAvatar.runningState = TURN_DIRECTION;
|
||||
@@ -187,21 +187,21 @@ static void BikeTransition_MoveDirection(u8 direction)
|
||||
{
|
||||
|
||||
if (collision == COLLISION_COUNT)
|
||||
PlayerGoSpeed2(direction);
|
||||
PlayerWalkFast(direction);
|
||||
else if (PlayerIsMovingOnRockStairs(direction))
|
||||
PlayerGoSpeed2(direction);
|
||||
PlayerWalkFast(direction);
|
||||
else
|
||||
PlayerRideWaterCurrent(direction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void BikeTransition_Downhill(UNUSED u8 v)
|
||||
static void BikeTransition_Downhill(u8 v)
|
||||
{
|
||||
u8 collision = GetBikeCollision(DIR_SOUTH);
|
||||
|
||||
if (collision == COLLISION_NONE)
|
||||
PlayerGoSpeed4(DIR_SOUTH);
|
||||
PlayerWalkFaster(DIR_SOUTH);
|
||||
else if (collision == COLLISION_LEDGE_JUMP)
|
||||
PlayerJumpLedge(DIR_SOUTH);
|
||||
}
|
||||
@@ -209,7 +209,7 @@ static void BikeTransition_Downhill(UNUSED u8 v)
|
||||
static void BikeTransition_Uphill(u8 direction)
|
||||
{
|
||||
if (GetBikeCollision(direction) == COLLISION_NONE)
|
||||
PlayerGoSpeed1(direction);
|
||||
PlayerWalkNormal(direction);
|
||||
}
|
||||
|
||||
static u8 GetBikeCollision(u8 direction)
|
||||
@@ -266,7 +266,7 @@ static bool8 MetatileBehaviorForbidsBiking(u8 metatileBehavior)
|
||||
return TRUE;
|
||||
if (!MetatileBehavior_IsFortreeBridge(metatileBehavior))
|
||||
return FALSE;
|
||||
if (PlayerGetZCoord() & 1)
|
||||
if (PlayerGetElevation() & 1)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1,212 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "bg.h"
|
||||
#include "box_party_pokemon_dropdown.h"
|
||||
#include "malloc.h"
|
||||
|
||||
struct BPPD_MapRect
|
||||
{
|
||||
s16 destX;
|
||||
s16 destY;
|
||||
u16 width;
|
||||
u16 height;
|
||||
s16 destX2;
|
||||
s16 destY2;
|
||||
};
|
||||
|
||||
struct BPPD_Struct
|
||||
{
|
||||
struct BPPD_MapRect map1Rect;
|
||||
struct BPPD_MapRect map2Rect;
|
||||
const void *src1;
|
||||
const void *src2;
|
||||
u16 src1Height;
|
||||
u16 src1Width;
|
||||
u16 src2Width;
|
||||
u16 src2Height;
|
||||
u16 bytesPerRow;
|
||||
u8 mapSize;
|
||||
u8 bgId;
|
||||
bool8 bgUpdateScheduled;
|
||||
};
|
||||
|
||||
static EWRAM_DATA struct BPPD_Struct * sBoxPartyPokemonDropdownPtr = NULL;
|
||||
static EWRAM_DATA u16 sBoxPartyPokemonDropdownCount = 0;
|
||||
|
||||
static void PushMap1(u8 idx);
|
||||
static void PushMap2(u8 idx);
|
||||
|
||||
static const struct {
|
||||
u16 height;
|
||||
u16 width;
|
||||
} sBGdims[2][4] = {
|
||||
{
|
||||
{0x0100, 0x0100},
|
||||
{0x0200, 0x0100},
|
||||
{0x0100, 0x0200},
|
||||
{0x0200, 0x0200}
|
||||
}, {
|
||||
{0x0080, 0x0080},
|
||||
{0x0100, 0x0100},
|
||||
{0x0200, 0x0200},
|
||||
{0x0400, 0x0400}
|
||||
}
|
||||
};
|
||||
|
||||
void AllocBoxPartyPokemonDropdowns(u8 num)
|
||||
{
|
||||
u16 i;
|
||||
sBoxPartyPokemonDropdownPtr = Alloc(num * sizeof(struct BPPD_Struct));
|
||||
sBoxPartyPokemonDropdownCount = sBoxPartyPokemonDropdownPtr == NULL ? 0 : num;
|
||||
for (i = 0; i < sBoxPartyPokemonDropdownCount; i++)
|
||||
{
|
||||
sBoxPartyPokemonDropdownPtr[i].src1 = NULL;
|
||||
sBoxPartyPokemonDropdownPtr[i].bgUpdateScheduled = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void FreeBoxPartyPokemonDropdowns(void)
|
||||
{
|
||||
Free(sBoxPartyPokemonDropdownPtr);
|
||||
}
|
||||
|
||||
void CopyAllBoxPartyPokemonDropdownsToVram(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < sBoxPartyPokemonDropdownCount; i++)
|
||||
{
|
||||
if (sBoxPartyPokemonDropdownPtr[i].bgUpdateScheduled == TRUE)
|
||||
CopyBoxPartyPokemonDropdownToBgTilemapBuffer(i);
|
||||
}
|
||||
}
|
||||
|
||||
void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void *src, u16 width, u16 height)
|
||||
{
|
||||
u16 screenSize;
|
||||
u16 bgType;
|
||||
|
||||
if (idx < sBoxPartyPokemonDropdownCount)
|
||||
{
|
||||
sBoxPartyPokemonDropdownPtr[idx].src1 = NULL;
|
||||
sBoxPartyPokemonDropdownPtr[idx].src2 = src;
|
||||
sBoxPartyPokemonDropdownPtr[idx].bgId = bgId;
|
||||
sBoxPartyPokemonDropdownPtr[idx].src2Width = width;
|
||||
sBoxPartyPokemonDropdownPtr[idx].src2Height = height;
|
||||
screenSize = GetBgAttribute(bgId, BG_ATTR_SCREENSIZE);
|
||||
bgType = GetBgAttribute(bgId, BG_ATTR_BGTYPE);
|
||||
sBoxPartyPokemonDropdownPtr[idx].src1Height = sBGdims[bgType][screenSize].height;
|
||||
sBoxPartyPokemonDropdownPtr[idx].src1Width = sBGdims[bgType][screenSize].width;
|
||||
if (bgType != 0)
|
||||
sBoxPartyPokemonDropdownPtr[idx].mapSize = 1;
|
||||
else
|
||||
sBoxPartyPokemonDropdownPtr[idx].mapSize = 2;
|
||||
sBoxPartyPokemonDropdownPtr[idx].bytesPerRow = width * sBoxPartyPokemonDropdownPtr[idx].mapSize;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = 0;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = 0;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 = 0;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 = 0;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect;
|
||||
sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void *src)
|
||||
{
|
||||
if (idx < sBoxPartyPokemonDropdownCount)
|
||||
{
|
||||
sBoxPartyPokemonDropdownPtr[idx].src1 = src;
|
||||
sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y)
|
||||
{
|
||||
if (idx < sBoxPartyPokemonDropdownCount)
|
||||
{
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 = x;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 = y;
|
||||
sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height)
|
||||
{
|
||||
if (idx < sBoxPartyPokemonDropdownCount)
|
||||
{
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = x;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = y;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height;
|
||||
sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void AdjustBoxPartyPokemonDropdownPos(u8 idx, u8 op, s8 param)
|
||||
{
|
||||
if (idx < sBoxPartyPokemonDropdownCount)
|
||||
{
|
||||
switch (op)
|
||||
{
|
||||
case BPPD_MOVE_INNER_LEFT:
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.width -= param;
|
||||
break;
|
||||
case BPPD_MOVE_OUTER_LEFT:
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX += param;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.width += param;
|
||||
break;
|
||||
case BPPD_MOVE_INNER_TOP:
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.height -= param;
|
||||
break;
|
||||
case BPPD_MOVE_OUTER_TOP:
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY -= param;
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.height += param;
|
||||
break;
|
||||
case BPPD_MOVE_INNER_X:
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param;
|
||||
break;
|
||||
case BPPD_MOVE_INNER_Y:
|
||||
sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param;
|
||||
break;
|
||||
}
|
||||
sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx)
|
||||
{
|
||||
if (idx < sBoxPartyPokemonDropdownCount)
|
||||
{
|
||||
if (sBoxPartyPokemonDropdownPtr[idx].src1 != NULL)
|
||||
PushMap1(idx);
|
||||
PushMap2(idx);
|
||||
sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect;
|
||||
}
|
||||
}
|
||||
|
||||
static void PushMap1(u8 idx)
|
||||
{
|
||||
int i;
|
||||
int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src1Height;
|
||||
const void *addr = sBoxPartyPokemonDropdownPtr[idx].src1 + run * sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2 * sBoxPartyPokemonDropdownPtr[idx].mapSize;
|
||||
for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map1Rect.height; i++)
|
||||
{
|
||||
CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map1Rect.width, 1);
|
||||
addr += run;
|
||||
}
|
||||
}
|
||||
|
||||
static void PushMap2(u8 idx)
|
||||
{
|
||||
int i;
|
||||
int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src2Width;
|
||||
const void *addr = sBoxPartyPokemonDropdownPtr[idx].src2 + run * sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX * sBoxPartyPokemonDropdownPtr[idx].mapSize;
|
||||
for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map2Rect.height; i++)
|
||||
{
|
||||
CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map2Rect.width, 1);
|
||||
addr += run;
|
||||
}
|
||||
}
|
||||
+8
-4
@@ -4,7 +4,11 @@
|
||||
#include "text.h"
|
||||
#include "sound.h"
|
||||
|
||||
static const u8 gUnknown_846FB08[] = {1, 2, 4};
|
||||
static const u8 sScrollDistances[] = {
|
||||
[OPTIONS_TEXT_SPEED_SLOW] = 1,
|
||||
[OPTIONS_TEXT_SPEED_MID] = 2,
|
||||
[OPTIONS_TEXT_SPEED_FAST] = 4,
|
||||
};
|
||||
static const u16 sFont6BrailleGlyphs[] = INCBIN_U16("graphics/fonts/font6.fwjpnfont");
|
||||
|
||||
static void DecompressGlyphFont6(u16);
|
||||
@@ -163,15 +167,15 @@ u16 Font6Func(struct TextPrinter *textPrinter)
|
||||
case 4:
|
||||
if (textPrinter->scrollDistance)
|
||||
{
|
||||
if (textPrinter->scrollDistance < gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed])
|
||||
if (textPrinter->scrollDistance < sScrollDistances[gSaveBlock2Ptr->optionsTextSpeed])
|
||||
{
|
||||
ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
|
||||
textPrinter->scrollDistance = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ScrollWindow(textPrinter->printerTemplate.windowId, 0, gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor));
|
||||
textPrinter->scrollDistance -= gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed];
|
||||
ScrollWindow(textPrinter->printerTemplate.windowId, 0, sScrollDistances[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor));
|
||||
textPrinter->scrollDistance -= sScrollDistances[gSaveBlock2Ptr->optionsTextSpeed];
|
||||
}
|
||||
CopyWindowToVram(textPrinter->printerTemplate.windowId, COPYWIN_GFX);
|
||||
}
|
||||
|
||||
@@ -162,9 +162,9 @@ void BuyMenuInitWindows(bool32 isSellingTM)
|
||||
else
|
||||
InitWindows(sShopBuyMenuWindowTemplatesTM);
|
||||
DeactivateAllTextPrinters();
|
||||
TextWindow_SetUserSelectedFrame(0, 0x1, 0xD0);
|
||||
TextWindow_LoadResourcesStdFrame0(0, 0x13, 0xE0);
|
||||
TextWindow_SetStdFrame0_WithPal(0, 0xA, 0xF0);
|
||||
LoadUserWindowGfx(0, 0x1, 0xD0);
|
||||
LoadMenuMessageWindowGfx(0, 0x13, 0xE0);
|
||||
LoadStdWindowGfx(0, 0xA, 0xF0);
|
||||
PutWindowTilemap(0);
|
||||
PutWindowTilemap(4);
|
||||
PutWindowTilemap(5);
|
||||
|
||||
+397
-335
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -10,7 +10,7 @@
|
||||
// The trainer tower data exceeds SECTOR_DATA_SIZE. They're allowed to use the full save sector up to the counter field.
|
||||
STATIC_ASSERT(SEC30_SIZE + SEC31_SIZE <= SECTOR_COUNTER_OFFSET * 2, EReaderTrainerTowerSetFreeSpace);
|
||||
|
||||
u8 sub_815D654(void)
|
||||
static u8 GetTrainerHillUnkVal(void)
|
||||
{
|
||||
return (gSaveBlock1Ptr->trainerTower[0].unk9 + 1) % 256;
|
||||
}
|
||||
@@ -49,7 +49,7 @@ static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerTowerSet * tt
|
||||
|
||||
memset(buffer, 0, SECTOR_SIZE);
|
||||
memcpy(buffer, ttdata, SEC30_SIZE);
|
||||
buffer[1] = sub_815D654();
|
||||
buffer[1] = GetTrainerHillUnkVal();
|
||||
if (TryWriteSpecialSaveSector(SECTOR_ID_TRAINER_TOWER_1, buffer) != TRUE)
|
||||
return FALSE;
|
||||
memset(buffer, 0, SECTOR_SIZE);
|
||||
|
||||
@@ -101,12 +101,12 @@ static void Task_DrawClearSaveDataScreen(u8 taskId)
|
||||
SaveClearScreen_GpuInit();
|
||||
break;
|
||||
case 3:
|
||||
TextWindow_SetStdFrame0_WithPal(0, 0x001, 0xF0);
|
||||
TextWindow_SetStdFrame0_WithPal(1, 0x001, 0xF0);
|
||||
LoadStdWindowGfx(0, 0x001, 0xF0);
|
||||
LoadStdWindowGfx(1, 0x001, 0xF0);
|
||||
break;
|
||||
case 4:
|
||||
DrawStdFrameWithCustomTileAndPalette(1, TRUE, 0x001, 0xF);
|
||||
AddTextPrinterParameterized4(1, FONT_2, 0, 3, 1, 1, sTextColor, 0, gUnknown_841B69E);
|
||||
AddTextPrinterParameterized4(1, FONT_2, 0, 3, 1, 1, sTextColor, 0, gText_ClearAllSaveData);
|
||||
CopyWindowToVram(1, COPYWIN_GFX);
|
||||
break;
|
||||
case 5:
|
||||
@@ -138,7 +138,7 @@ static void Task_HandleYesNoMenu(u8 taskId)
|
||||
case 0:
|
||||
PlaySE(SE_SELECT);
|
||||
FillWindowPixelBuffer(1, PIXEL_FILL(1));
|
||||
AddTextPrinterParameterized4(1, FONT_2, 0, 3, 1, 1, sTextColor, 0, gUnknown_841B6B9);
|
||||
AddTextPrinterParameterized4(1, FONT_2, 0, 3, 1, 1, sTextColor, 0, gText_ClearingData);
|
||||
CopyWindowToVram(1, COPYWIN_FULL);
|
||||
ClearSaveData();
|
||||
break;
|
||||
|
||||
+4
-3
@@ -49,14 +49,15 @@ bool8 RemoveCoins(u16 toSub)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void PrintCoinsString_Parameterized(u8 windowId, u32 coinAmount, u8 x, u8 y, u8 speed)
|
||||
static void PrintCoinsString_Parameterized(u8 windowId, u32 coinAmount, u8 x, u8 y, u8 speed)
|
||||
{
|
||||
ConvertIntToDecimalStringN(gStringVar1, coinAmount, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||
StringExpandPlaceholders(gStringVar4, gText_Coins);
|
||||
AddTextPrinterParameterized(windowId, FONT_0, gStringVar4, x, y, speed, NULL);
|
||||
}
|
||||
|
||||
void sub_80D0674(u8 windowId, u16 tileStart, u8 palette, u32 coinAmount)
|
||||
// Unused
|
||||
static void ShowCoinsWindow_Parameterized(u8 windowId, u16 tileStart, u8 palette, u32 coinAmount)
|
||||
{
|
||||
DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, palette);
|
||||
AddTextPrinterParameterized(windowId, FONT_2, gText_Coins_2, 0, 0, 0xFF, 0);
|
||||
@@ -83,7 +84,7 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
|
||||
sCoinsWindowId = AddWindow(&template);
|
||||
FillWindowPixelBuffer(sCoinsWindowId, 0);
|
||||
PutWindowTilemap(sCoinsWindowId);
|
||||
TextWindow_SetStdFrame0_WithPal(sCoinsWindowId, 0x21D, 0xD0);
|
||||
LoadStdWindowGfx(sCoinsWindowId, 0x21D, 0xD0);
|
||||
DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x21D, 0xD);
|
||||
AddTextPrinterParameterized(sCoinsWindowId, FONT_2, gText_Coins_2, 0, 0, 0xFF, 0);
|
||||
PrintCoinsString(coinAmount);
|
||||
|
||||
+2
-2
@@ -346,7 +346,7 @@ static const u32 sWindow2Map_Blastoise[] = INCBIN_U32("graphics/credits/unk_840F
|
||||
static const u32 sWindow1Map_Pikachu[] = INCBIN_U32("graphics/credits/unk_8410198.bin.lz");
|
||||
static const u32 sWindow2Map_Pikachu[] = INCBIN_U32("graphics/credits/unk_84105B4.bin.lz");
|
||||
|
||||
static const u32 filler_8410AFC = 0xF0;
|
||||
static const u32 sUnused = 0xF0;
|
||||
|
||||
static const u16 sTheEndGfxPal[] = INCBIN_U16("graphics/credits/unk_8410B20.gbapal");
|
||||
static const u8 sTheEndGfxTiles[] = INCBIN_U8("graphics/credits/unk_8410B20.4bpp.lz");
|
||||
@@ -776,7 +776,7 @@ static void DestroyCreditsWindow(void)
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 DoOverworldMapScrollScene(UNUSED u8 unused)
|
||||
static bool32 DoOverworldMapScrollScene(u8 whichMon)
|
||||
{
|
||||
switch (sCreditsMgr->subseqno)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,379 @@
|
||||
static const void *const sItemIconTable[ITEMS_COUNT + 1][2] =
|
||||
{
|
||||
[ITEM_NONE] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_MASTER_BALL] = {gFile_graphics_items_icons_master_ball_sheet, gFile_graphics_items_icon_palettes_master_ball_palette},
|
||||
[ITEM_ULTRA_BALL] = {gFile_graphics_items_icons_ultra_ball_sheet, gFile_graphics_items_icon_palettes_ultra_ball_palette},
|
||||
[ITEM_GREAT_BALL] = {gFile_graphics_items_icons_great_ball_sheet, gFile_graphics_items_icon_palettes_great_ball_palette},
|
||||
[ITEM_POKE_BALL] = {gFile_graphics_items_icons_poke_ball_sheet, gFile_graphics_items_icon_palettes_poke_ball_palette},
|
||||
[ITEM_SAFARI_BALL] = {gFile_graphics_items_icons_safari_ball_sheet, gFile_graphics_items_icon_palettes_safari_ball_palette},
|
||||
[ITEM_NET_BALL] = {gFile_graphics_items_icons_net_ball_sheet, gFile_graphics_items_icon_palettes_net_ball_palette},
|
||||
[ITEM_DIVE_BALL] = {gFile_graphics_items_icons_dive_ball_sheet, gFile_graphics_items_icon_palettes_dive_ball_palette},
|
||||
[ITEM_NEST_BALL] = {gFile_graphics_items_icons_nest_ball_sheet, gFile_graphics_items_icon_palettes_nest_ball_palette},
|
||||
[ITEM_REPEAT_BALL] = {gFile_graphics_items_icons_repeat_ball_sheet, gFile_graphics_items_icon_palettes_repeat_ball_palette},
|
||||
[ITEM_TIMER_BALL] = {gFile_graphics_items_icons_timer_ball_sheet, gFile_graphics_items_icon_palettes_repeat_ball_palette},
|
||||
[ITEM_LUXURY_BALL] = {gFile_graphics_items_icons_luxury_ball_sheet, gFile_graphics_items_icon_palettes_luxury_ball_palette},
|
||||
[ITEM_PREMIER_BALL] = {gFile_graphics_items_icons_premier_ball_sheet, gFile_graphics_items_icon_palettes_luxury_ball_palette},
|
||||
[ITEM_POTION] = {gFile_graphics_items_icons_potion_sheet, gFile_graphics_items_icon_palettes_potion_palette},
|
||||
[ITEM_ANTIDOTE] = {gFile_graphics_items_icons_antidote_sheet, gFile_graphics_items_icon_palettes_antidote_palette},
|
||||
[ITEM_BURN_HEAL] = {gFile_graphics_items_icons_status_heal_sheet, gFile_graphics_items_icon_palettes_burn_heal_palette},
|
||||
[ITEM_ICE_HEAL] = {gFile_graphics_items_icons_status_heal_sheet, gFile_graphics_items_icon_palettes_ice_heal_palette},
|
||||
[ITEM_AWAKENING] = {gFile_graphics_items_icons_status_heal_sheet, gFile_graphics_items_icon_palettes_awakening_palette},
|
||||
[ITEM_PARALYZE_HEAL] = {gFile_graphics_items_icons_status_heal_sheet, gFile_graphics_items_icon_palettes_paralyze_heal_palette},
|
||||
[ITEM_FULL_RESTORE] = {gFile_graphics_items_icons_large_potion_sheet, gFile_graphics_items_icon_palettes_full_restore_palette},
|
||||
[ITEM_MAX_POTION] = {gFile_graphics_items_icons_large_potion_sheet, gFile_graphics_items_icon_palettes_max_potion_palette},
|
||||
[ITEM_HYPER_POTION] = {gFile_graphics_items_icons_potion_sheet, gFile_graphics_items_icon_palettes_hyper_potion_palette},
|
||||
[ITEM_SUPER_POTION] = {gFile_graphics_items_icons_potion_sheet, gFile_graphics_items_icon_palettes_super_potion_palette},
|
||||
[ITEM_FULL_HEAL] = {gFile_graphics_items_icons_full_heal_sheet, gFile_graphics_items_icon_palettes_full_heal_palette},
|
||||
[ITEM_REVIVE] = {gFile_graphics_items_icons_revive_sheet, gFile_graphics_items_icon_palettes_revive_palette},
|
||||
[ITEM_MAX_REVIVE] = {gFile_graphics_items_icons_max_revive_sheet, gFile_graphics_items_icon_palettes_revive_palette},
|
||||
[ITEM_FRESH_WATER] = {gFile_graphics_items_icons_fresh_water_sheet, gFile_graphics_items_icon_palettes_fresh_water_palette},
|
||||
[ITEM_SODA_POP] = {gFile_graphics_items_icons_soda_pop_sheet, gFile_graphics_items_icon_palettes_soda_pop_palette},
|
||||
[ITEM_LEMONADE] = {gFile_graphics_items_icons_lemonade_sheet, gFile_graphics_items_icon_palettes_lemonade_palette},
|
||||
[ITEM_MOOMOO_MILK] = {gFile_graphics_items_icons_moomoo_milk_sheet, gFile_graphics_items_icon_palettes_moomoo_milk_palette},
|
||||
[ITEM_ENERGY_POWDER] = {gFile_graphics_items_icons_powder_sheet, gFile_graphics_items_icon_palettes_energy_powder_palette},
|
||||
[ITEM_ENERGY_ROOT] = {gFile_graphics_items_icons_energy_root_sheet, gFile_graphics_items_icon_palettes_energy_root_palette},
|
||||
[ITEM_HEAL_POWDER] = {gFile_graphics_items_icons_powder_sheet, gFile_graphics_items_icon_palettes_heal_powder_palette},
|
||||
[ITEM_REVIVAL_HERB] = {gFile_graphics_items_icons_revival_herb_sheet, gFile_graphics_items_icon_palettes_revival_herb_palette},
|
||||
[ITEM_ETHER] = {gFile_graphics_items_icons_ether_sheet, gFile_graphics_items_icon_palettes_ether_palette},
|
||||
[ITEM_MAX_ETHER] = {gFile_graphics_items_icons_ether_sheet, gFile_graphics_items_icon_palettes_max_ether_palette},
|
||||
[ITEM_ELIXIR] = {gFile_graphics_items_icons_ether_sheet, gFile_graphics_items_icon_palettes_elixir_palette},
|
||||
[ITEM_MAX_ELIXIR] = {gFile_graphics_items_icons_ether_sheet, gFile_graphics_items_icon_palettes_max_elixir_palette},
|
||||
[ITEM_LAVA_COOKIE] = {gFile_graphics_items_icons_lava_cookie_sheet, gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette},
|
||||
[ITEM_BLUE_FLUTE] = {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_blue_flute_palette},
|
||||
[ITEM_YELLOW_FLUTE] = {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_yellow_flute_palette},
|
||||
[ITEM_RED_FLUTE] = {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_red_flute_palette},
|
||||
[ITEM_BLACK_FLUTE] = {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_black_flute_palette},
|
||||
[ITEM_WHITE_FLUTE] = {gFile_graphics_items_icons_flute_sheet, gFile_graphics_items_icon_palettes_white_flute_palette},
|
||||
[ITEM_BERRY_JUICE] = {gFile_graphics_items_icons_berry_juice_sheet, gFile_graphics_items_icon_palettes_berry_juice_palette},
|
||||
[ITEM_SACRED_ASH] = {gFile_graphics_items_icons_sacred_ash_sheet, gFile_graphics_items_icon_palettes_sacred_ash_palette},
|
||||
[ITEM_SHOAL_SALT] = {gFile_graphics_items_icons_powder_sheet, gFile_graphics_items_icon_palettes_shoal_salt_palette},
|
||||
[ITEM_SHOAL_SHELL] = {gFile_graphics_items_icons_shoal_shell_sheet, gFile_graphics_items_icon_palettes_shell_palette},
|
||||
[ITEM_RED_SHARD] = {gFile_graphics_items_icons_shard_sheet, gFile_graphics_items_icon_palettes_red_shard_palette},
|
||||
[ITEM_BLUE_SHARD] = {gFile_graphics_items_icons_shard_sheet, gFile_graphics_items_icon_palettes_blue_shard_palette},
|
||||
[ITEM_YELLOW_SHARD] = {gFile_graphics_items_icons_shard_sheet, gFile_graphics_items_icon_palettes_yellow_shard_palette},
|
||||
[ITEM_GREEN_SHARD] = {gFile_graphics_items_icons_shard_sheet, gFile_graphics_items_icon_palettes_green_shard_palette},
|
||||
[ITEM_034] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_035] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_036] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_037] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_038] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_039] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_03A] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_03B] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_03C] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_03D] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_03E] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_HP_UP] = {gFile_graphics_items_icons_hp_up_sheet, gFile_graphics_items_icon_palettes_hp_up_palette},
|
||||
[ITEM_PROTEIN] = {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_protein_palette},
|
||||
[ITEM_IRON] = {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_iron_palette},
|
||||
[ITEM_CARBOS] = {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_carbos_palette},
|
||||
[ITEM_CALCIUM] = {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_calcium_palette},
|
||||
[ITEM_RARE_CANDY] = {gFile_graphics_items_icons_rare_candy_sheet, gFile_graphics_items_icon_palettes_rare_candy_palette},
|
||||
[ITEM_PP_UP] = {gFile_graphics_items_icons_pp_up_sheet, gFile_graphics_items_icon_palettes_pp_up_palette},
|
||||
[ITEM_ZINC] = {gFile_graphics_items_icons_vitamin_sheet, gFile_graphics_items_icon_palettes_zinc_palette},
|
||||
[ITEM_PP_MAX] = {gFile_graphics_items_icons_pp_max_sheet, gFile_graphics_items_icon_palettes_pp_max_palette},
|
||||
[ITEM_048] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_GUARD_SPEC] = {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_guard_spec_palette},
|
||||
[ITEM_DIRE_HIT] = {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_dire_hit_palette},
|
||||
[ITEM_X_ATTACK] = {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_attack_palette},
|
||||
[ITEM_X_DEFEND] = {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_defend_palette},
|
||||
[ITEM_X_SPEED] = {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_speed_palette},
|
||||
[ITEM_X_ACCURACY] = {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_accuracy_palette},
|
||||
[ITEM_X_SPECIAL] = {gFile_graphics_items_icons_battle_stat_item_sheet, gFile_graphics_items_icon_palettes_x_special_palette},
|
||||
[ITEM_POKE_DOLL] = {gFile_graphics_items_icons_poke_doll_sheet, gFile_graphics_items_icon_palettes_poke_doll_palette},
|
||||
[ITEM_FLUFFY_TAIL] = {gFile_graphics_items_icons_fluffy_tail_sheet, gFile_graphics_items_icon_palettes_fluffy_tail_palette},
|
||||
[ITEM_052] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_SUPER_REPEL] = {gFile_graphics_items_icons_repel_sheet, gFile_graphics_items_icon_palettes_super_repel_palette},
|
||||
[ITEM_MAX_REPEL] = {gFile_graphics_items_icons_repel_sheet, gFile_graphics_items_icon_palettes_max_repel_palette},
|
||||
[ITEM_ESCAPE_ROPE] = {gFile_graphics_items_icons_escape_rope_sheet, gFile_graphics_items_icon_palettes_escape_rope_palette},
|
||||
[ITEM_REPEL] = {gFile_graphics_items_icons_repel_sheet, gFile_graphics_items_icon_palettes_repel_palette},
|
||||
[ITEM_057] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_058] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_059] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_05A] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_05B] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_05C] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_SUN_STONE] = {gFile_graphics_items_icons_sun_stone_sheet, gFile_graphics_items_icon_palettes_sun_stone_palette},
|
||||
[ITEM_MOON_STONE] = {gFile_graphics_items_icons_moon_stone_sheet, gFile_graphics_items_icon_palettes_moon_stone_palette},
|
||||
[ITEM_FIRE_STONE] = {gFile_graphics_items_icons_fire_stone_sheet, gFile_graphics_items_icon_palettes_fire_stone_palette},
|
||||
[ITEM_THUNDER_STONE] = {gFile_graphics_items_icons_thunder_stone_sheet, gFile_graphics_items_icon_palettes_thunder_stone_palette},
|
||||
[ITEM_WATER_STONE] = {gFile_graphics_items_icons_water_stone_sheet, gFile_graphics_items_icon_palettes_water_stone_palette},
|
||||
[ITEM_LEAF_STONE] = {gFile_graphics_items_icons_leaf_stone_sheet, gFile_graphics_items_icon_palettes_leaf_stone_palette},
|
||||
[ITEM_063] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_064] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_065] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_066] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_TINY_MUSHROOM] = {gFile_graphics_items_icons_tiny_mushroom_sheet, gFile_graphics_items_icon_palettes_mushroom_palette},
|
||||
[ITEM_BIG_MUSHROOM] = {gFile_graphics_items_icons_big_mushroom_sheet, gFile_graphics_items_icon_palettes_mushroom_palette},
|
||||
[ITEM_069] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_PEARL] = {gFile_graphics_items_icons_pearl_sheet, gFile_graphics_items_icon_palettes_pearl_palette},
|
||||
[ITEM_BIG_PEARL] = {gFile_graphics_items_icons_big_pearl_sheet, gFile_graphics_items_icon_palettes_pearl_palette},
|
||||
[ITEM_STARDUST] = {gFile_graphics_items_icons_stardust_sheet, gFile_graphics_items_icon_palettes_star_palette},
|
||||
[ITEM_STAR_PIECE] = {gFile_graphics_items_icons_star_piece_sheet, gFile_graphics_items_icon_palettes_star_palette},
|
||||
[ITEM_NUGGET] = {gFile_graphics_items_icons_nugget_sheet, gFile_graphics_items_icon_palettes_nugget_palette},
|
||||
[ITEM_HEART_SCALE] = {gFile_graphics_items_icons_heart_scale_sheet, gFile_graphics_items_icon_palettes_heart_scale_palette},
|
||||
[ITEM_070] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_071] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_072] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_073] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_074] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_075] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_076] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_077] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_078] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_ORANGE_MAIL] = {gFile_graphics_items_icons_orange_mail_sheet, gFile_graphics_items_icon_palettes_orange_mail_palette},
|
||||
[ITEM_HARBOR_MAIL] = {gFile_graphics_items_icons_harbor_mail_sheet, gFile_graphics_items_icon_palettes_harbor_mail_palette},
|
||||
[ITEM_GLITTER_MAIL] = {gFile_graphics_items_icons_glitter_mail_sheet, gFile_graphics_items_icon_palettes_glitter_mail_palette},
|
||||
[ITEM_MECH_MAIL] = {gFile_graphics_items_icons_mech_mail_sheet, gFile_graphics_items_icon_palettes_mech_mail_palette},
|
||||
[ITEM_WOOD_MAIL] = {gFile_graphics_items_icons_wood_mail_sheet, gFile_graphics_items_icon_palettes_wood_mail_palette},
|
||||
[ITEM_WAVE_MAIL] = {gFile_graphics_items_icons_wave_mail_sheet, gFile_graphics_items_icon_palettes_wave_mail_palette},
|
||||
[ITEM_BEAD_MAIL] = {gFile_graphics_items_icons_bead_mail_sheet, gFile_graphics_items_icon_palettes_bead_mail_palette},
|
||||
[ITEM_SHADOW_MAIL] = {gFile_graphics_items_icons_shadow_mail_sheet, gFile_graphics_items_icon_palettes_shadow_mail_palette},
|
||||
[ITEM_TROPIC_MAIL] = {gFile_graphics_items_icons_tropic_mail_sheet, gFile_graphics_items_icon_palettes_tropic_mail_palette},
|
||||
[ITEM_DREAM_MAIL] = {gFile_graphics_items_icons_dream_mail_sheet, gFile_graphics_items_icon_palettes_dream_mail_palette},
|
||||
[ITEM_FAB_MAIL] = {gFile_graphics_items_icons_fab_mail_sheet, gFile_graphics_items_icon_palettes_fab_mail_palette},
|
||||
[ITEM_RETRO_MAIL] = {gFile_graphics_items_icons_retro_mail_sheet, gFile_graphics_items_icon_palettes_retro_mail_palette},
|
||||
[ITEM_CHERI_BERRY] = {gFile_graphics_items_icons_cheri_berry_sheet, gFile_graphics_items_icon_palettes_cheri_berry_palette},
|
||||
[ITEM_CHESTO_BERRY] = {gFile_graphics_items_icons_chesto_berry_sheet, gFile_graphics_items_icon_palettes_chesto_berry_palette},
|
||||
[ITEM_PECHA_BERRY] = {gFile_graphics_items_icons_pecha_berry_sheet, gFile_graphics_items_icon_palettes_pecha_berry_palette},
|
||||
[ITEM_RAWST_BERRY] = {gFile_graphics_items_icons_rawst_berry_sheet, gFile_graphics_items_icon_palettes_rawst_berry_palette},
|
||||
[ITEM_ASPEAR_BERRY] = {gFile_graphics_items_icons_aspear_berry_sheet, gFile_graphics_items_icon_palettes_aspear_berry_palette},
|
||||
[ITEM_LEPPA_BERRY] = {gFile_graphics_items_icons_leppa_berry_sheet, gFile_graphics_items_icon_palettes_leppa_berry_palette},
|
||||
[ITEM_ORAN_BERRY] = {gFile_graphics_items_icons_oran_berry_sheet, gFile_graphics_items_icon_palettes_oran_berry_palette},
|
||||
[ITEM_PERSIM_BERRY] = {gFile_graphics_items_icons_persim_berry_sheet, gFile_graphics_items_icon_palettes_persim_berry_palette},
|
||||
[ITEM_LUM_BERRY] = {gFile_graphics_items_icons_lum_berry_sheet, gFile_graphics_items_icon_palettes_lum_berry_palette},
|
||||
[ITEM_SITRUS_BERRY] = {gFile_graphics_items_icons_sitrus_berry_sheet, gFile_graphics_items_icon_palettes_sitrus_berry_palette},
|
||||
[ITEM_FIGY_BERRY] = {gFile_graphics_items_icons_figy_berry_sheet, gFile_graphics_items_icon_palettes_figy_berry_palette},
|
||||
[ITEM_WIKI_BERRY] = {gFile_graphics_items_icons_wiki_berry_sheet, gFile_graphics_items_icon_palettes_wiki_berry_palette},
|
||||
[ITEM_MAGO_BERRY] = {gFile_graphics_items_icons_mago_berry_sheet, gFile_graphics_items_icon_palettes_mago_berry_palette},
|
||||
[ITEM_AGUAV_BERRY] = {gFile_graphics_items_icons_aguav_berry_sheet, gFile_graphics_items_icon_palettes_aguav_berry_palette},
|
||||
[ITEM_IAPAPA_BERRY] = {gFile_graphics_items_icons_iapapa_berry_sheet, gFile_graphics_items_icon_palettes_iapapa_berry_palette},
|
||||
[ITEM_RAZZ_BERRY] = {gFile_graphics_items_icons_razz_berry_sheet, gFile_graphics_items_icon_palettes_razz_berry_palette},
|
||||
[ITEM_BLUK_BERRY] = {gFile_graphics_items_icons_bluk_berry_sheet, gFile_graphics_items_icon_palettes_bluk_berry_palette},
|
||||
[ITEM_NANAB_BERRY] = {gFile_graphics_items_icons_nanab_berry_sheet, gFile_graphics_items_icon_palettes_nanab_berry_palette},
|
||||
[ITEM_WEPEAR_BERRY] = {gFile_graphics_items_icons_wepear_berry_sheet, gFile_graphics_items_icon_palettes_wepear_berry_palette},
|
||||
[ITEM_PINAP_BERRY] = {gFile_graphics_items_icons_pinap_berry_sheet, gFile_graphics_items_icon_palettes_pinap_berry_palette},
|
||||
[ITEM_POMEG_BERRY] = {gFile_graphics_items_icons_pomeg_berry_sheet, gFile_graphics_items_icon_palettes_pomeg_berry_palette},
|
||||
[ITEM_KELPSY_BERRY] = {gFile_graphics_items_icons_kelpsy_berry_sheet, gFile_graphics_items_icon_palettes_kelpsy_berry_palette},
|
||||
[ITEM_QUALOT_BERRY] = {gFile_graphics_items_icons_qualot_berry_sheet, gFile_graphics_items_icon_palettes_qualot_berry_palette},
|
||||
[ITEM_HONDEW_BERRY] = {gFile_graphics_items_icons_hondew_berry_sheet, gFile_graphics_items_icon_palettes_hondew_berry_palette},
|
||||
[ITEM_GREPA_BERRY] = {gFile_graphics_items_icons_grepa_berry_sheet, gFile_graphics_items_icon_palettes_grepa_berry_palette},
|
||||
[ITEM_TAMATO_BERRY] = {gFile_graphics_items_icons_tamato_berry_sheet, gFile_graphics_items_icon_palettes_tamato_berry_palette},
|
||||
[ITEM_CORNN_BERRY] = {gFile_graphics_items_icons_cornn_berry_sheet, gFile_graphics_items_icon_palettes_cornn_berry_palette},
|
||||
[ITEM_MAGOST_BERRY] = {gFile_graphics_items_icons_magost_berry_sheet, gFile_graphics_items_icon_palettes_magost_berry_palette},
|
||||
[ITEM_RABUTA_BERRY] = {gFile_graphics_items_icons_rabuta_berry_sheet, gFile_graphics_items_icon_palettes_rabuta_berry_palette},
|
||||
[ITEM_NOMEL_BERRY] = {gFile_graphics_items_icons_nomel_berry_sheet, gFile_graphics_items_icon_palettes_nomel_berry_palette},
|
||||
[ITEM_SPELON_BERRY] = {gFile_graphics_items_icons_spelon_berry_sheet, gFile_graphics_items_icon_palettes_spelon_berry_palette},
|
||||
[ITEM_PAMTRE_BERRY] = {gFile_graphics_items_icons_pamtre_berry_sheet, gFile_graphics_items_icon_palettes_pamtre_berry_palette},
|
||||
[ITEM_WATMEL_BERRY] = {gFile_graphics_items_icons_watmel_berry_sheet, gFile_graphics_items_icon_palettes_watmel_berry_palette},
|
||||
[ITEM_DURIN_BERRY] = {gFile_graphics_items_icons_durin_berry_sheet, gFile_graphics_items_icon_palettes_durin_berry_palette},
|
||||
[ITEM_BELUE_BERRY] = {gFile_graphics_items_icons_belue_berry_sheet, gFile_graphics_items_icon_palettes_belue_berry_palette},
|
||||
[ITEM_LIECHI_BERRY] = {gFile_graphics_items_icons_liechi_berry_sheet, gFile_graphics_items_icon_palettes_liechi_berry_palette},
|
||||
[ITEM_GANLON_BERRY] = {gFile_graphics_items_icons_ganlon_berry_sheet, gFile_graphics_items_icon_palettes_ganlon_berry_palette},
|
||||
[ITEM_SALAC_BERRY] = {gFile_graphics_items_icons_salac_berry_sheet, gFile_graphics_items_icon_palettes_salac_berry_palette},
|
||||
[ITEM_PETAYA_BERRY] = {gFile_graphics_items_icons_petaya_berry_sheet, gFile_graphics_items_icon_palettes_petaya_berry_palette},
|
||||
[ITEM_APICOT_BERRY] = {gFile_graphics_items_icons_apicot_berry_sheet, gFile_graphics_items_icon_palettes_apicot_berry_palette},
|
||||
[ITEM_LANSAT_BERRY] = {gFile_graphics_items_icons_lansat_berry_sheet, gFile_graphics_items_icon_palettes_lansat_berry_palette},
|
||||
[ITEM_STARF_BERRY] = {gFile_graphics_items_icons_starf_berry_sheet, gFile_graphics_items_icon_palettes_starf_berry_palette},
|
||||
[ITEM_ENIGMA_BERRY] = {gFile_graphics_items_icons_enigma_berry_sheet, gFile_graphics_items_icon_palettes_enigma_berry_palette},
|
||||
[ITEM_0B0] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0B1] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0B2] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_BRIGHT_POWDER] = {gFile_graphics_items_icons_bright_powder_sheet, gFile_graphics_items_icon_palettes_bright_powder_palette},
|
||||
[ITEM_WHITE_HERB] = {gFile_graphics_items_icons_in_battle_herb_sheet, gFile_graphics_items_icon_palettes_white_herb_palette},
|
||||
[ITEM_MACHO_BRACE] = {gFile_graphics_items_icons_macho_brace_sheet, gFile_graphics_items_icon_palettes_macho_brace_palette},
|
||||
[ITEM_EXP_SHARE] = {gFile_graphics_items_icons_exp_share_sheet, gFile_graphics_items_icon_palettes_exp_share_palette},
|
||||
[ITEM_QUICK_CLAW] = {gFile_graphics_items_icons_quick_claw_sheet, gFile_graphics_items_icon_palettes_quick_claw_palette},
|
||||
[ITEM_SOOTHE_BELL] = {gFile_graphics_items_icons_soothe_bell_sheet, gFile_graphics_items_icon_palettes_soothe_bell_palette},
|
||||
[ITEM_MENTAL_HERB] = {gFile_graphics_items_icons_in_battle_herb_sheet, gFile_graphics_items_icon_palettes_mental_herb_palette},
|
||||
[ITEM_CHOICE_BAND] = {gFile_graphics_items_icons_choice_band_sheet, gFile_graphics_items_icon_palettes_choice_band_palette},
|
||||
[ITEM_KINGS_ROCK] = {gFile_graphics_items_icons_kings_rock_sheet, gFile_graphics_items_icon_palettes_kings_rock_palette},
|
||||
[ITEM_SILVER_POWDER] = {gFile_graphics_items_icons_silver_powder_sheet, gFile_graphics_items_icon_palettes_silver_powder_palette},
|
||||
[ITEM_AMULET_COIN] = {gFile_graphics_items_icons_amulet_coin_sheet, gFile_graphics_items_icon_palettes_amulet_coin_palette},
|
||||
[ITEM_CLEANSE_TAG] = {gFile_graphics_items_icons_cleanse_tag_sheet, gFile_graphics_items_icon_palettes_cleanse_tag_palette},
|
||||
[ITEM_SOUL_DEW] = {gFile_graphics_items_icons_soul_dew_sheet, gFile_graphics_items_icon_palettes_soul_dew_palette},
|
||||
[ITEM_DEEP_SEA_TOOTH] = {gFile_graphics_items_icons_deep_sea_tooth_sheet, gFile_graphics_items_icon_palettes_deep_sea_tooth_palette},
|
||||
[ITEM_DEEP_SEA_SCALE] = {gFile_graphics_items_icons_deep_sea_scale_sheet, gFile_graphics_items_icon_palettes_deep_sea_scale_palette},
|
||||
[ITEM_SMOKE_BALL] = {gFile_graphics_items_icons_smoke_ball_sheet, gFile_graphics_items_icon_palettes_smoke_ball_palette},
|
||||
[ITEM_EVERSTONE] = {gFile_graphics_items_icons_everstone_sheet, gFile_graphics_items_icon_palettes_everstone_palette},
|
||||
[ITEM_FOCUS_BAND] = {gFile_graphics_items_icons_focus_band_sheet, gFile_graphics_items_icon_palettes_focus_band_palette},
|
||||
[ITEM_LUCKY_EGG] = {gFile_graphics_items_icons_lucky_egg_sheet, gFile_graphics_items_icon_palettes_lucky_egg_palette},
|
||||
[ITEM_SCOPE_LENS] = {gFile_graphics_items_icons_scope_lens_sheet, gFile_graphics_items_icon_palettes_scope_lens_palette},
|
||||
[ITEM_METAL_COAT] = {gFile_graphics_items_icons_metal_coat_sheet, gFile_graphics_items_icon_palettes_metal_coat_palette},
|
||||
[ITEM_LEFTOVERS] = {gFile_graphics_items_icons_leftovers_sheet, gFile_graphics_items_icon_palettes_leftovers_palette},
|
||||
[ITEM_DRAGON_SCALE] = {gFile_graphics_items_icons_dragon_scale_sheet, gFile_graphics_items_icon_palettes_dragon_scale_palette},
|
||||
[ITEM_LIGHT_BALL] = {gFile_graphics_items_icons_light_ball_sheet, gFile_graphics_items_icon_palettes_light_ball_palette},
|
||||
[ITEM_SOFT_SAND] = {gFile_graphics_items_icons_soft_sand_sheet, gFile_graphics_items_icon_palettes_soft_sand_palette},
|
||||
[ITEM_HARD_STONE] = {gFile_graphics_items_icons_hard_stone_sheet, gFile_graphics_items_icon_palettes_hard_stone_palette},
|
||||
[ITEM_MIRACLE_SEED] = {gFile_graphics_items_icons_miracle_seed_sheet, gFile_graphics_items_icon_palettes_miracle_seed_palette},
|
||||
[ITEM_BLACK_GLASSES] = {gFile_graphics_items_icons_black_glasses_sheet, gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette},
|
||||
[ITEM_BLACK_BELT] = {gFile_graphics_items_icons_black_belt_sheet, gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette},
|
||||
[ITEM_MAGNET] = {gFile_graphics_items_icons_magnet_sheet, gFile_graphics_items_icon_palettes_magnet_palette},
|
||||
[ITEM_MYSTIC_WATER] = {gFile_graphics_items_icons_mystic_water_sheet, gFile_graphics_items_icon_palettes_mystic_water_palette},
|
||||
[ITEM_SHARP_BEAK] = {gFile_graphics_items_icons_sharp_beak_sheet, gFile_graphics_items_icon_palettes_sharp_beak_palette},
|
||||
[ITEM_POISON_BARB] = {gFile_graphics_items_icons_poison_barb_sheet, gFile_graphics_items_icon_palettes_poison_barb_palette},
|
||||
[ITEM_NEVER_MELT_ICE] = {gFile_graphics_items_icons_never_melt_ice_sheet, gFile_graphics_items_icon_palettes_never_melt_ice_palette},
|
||||
[ITEM_SPELL_TAG] = {gFile_graphics_items_icons_spell_tag_sheet, gFile_graphics_items_icon_palettes_spell_tag_palette},
|
||||
[ITEM_TWISTED_SPOON] = {gFile_graphics_items_icons_twisted_spoon_sheet, gFile_graphics_items_icon_palettes_twisted_spoon_palette},
|
||||
[ITEM_CHARCOAL] = {gFile_graphics_items_icons_charcoal_sheet, gFile_graphics_items_icon_palettes_charcoal_palette},
|
||||
[ITEM_DRAGON_FANG] = {gFile_graphics_items_icons_dragon_fang_sheet, gFile_graphics_items_icon_palettes_dragon_fang_palette},
|
||||
[ITEM_SILK_SCARF] = {gFile_graphics_items_icons_silk_scarf_sheet, gFile_graphics_items_icon_palettes_silk_scarf_palette},
|
||||
[ITEM_UP_GRADE] = {gFile_graphics_items_icons_up_grade_sheet, gFile_graphics_items_icon_palettes_up_grade_palette},
|
||||
[ITEM_SHELL_BELL] = {gFile_graphics_items_icons_shell_bell_sheet, gFile_graphics_items_icon_palettes_shell_palette},
|
||||
[ITEM_SEA_INCENSE] = {gFile_graphics_items_icons_sea_incense_sheet, gFile_graphics_items_icon_palettes_sea_incense_palette},
|
||||
[ITEM_LAX_INCENSE] = {gFile_graphics_items_icons_lax_incense_sheet, gFile_graphics_items_icon_palettes_lax_incense_palette},
|
||||
[ITEM_LUCKY_PUNCH] = {gFile_graphics_items_icons_lucky_punch_sheet, gFile_graphics_items_icon_palettes_lucky_punch_palette},
|
||||
[ITEM_METAL_POWDER] = {gFile_graphics_items_icons_metal_powder_sheet, gFile_graphics_items_icon_palettes_metal_powder_palette},
|
||||
[ITEM_THICK_CLUB] = {gFile_graphics_items_icons_thick_club_sheet, gFile_graphics_items_icon_palettes_thick_club_palette},
|
||||
[ITEM_STICK] = {gFile_graphics_items_icons_stick_sheet, gFile_graphics_items_icon_palettes_stick_palette},
|
||||
[ITEM_0E2] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0E3] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0E4] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0E5] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0E6] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0E7] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0E8] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0E9] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0EA] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0EB] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0EC] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0ED] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0EE] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0EF] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F0] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F1] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F2] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F3] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F4] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F5] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F6] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F7] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F8] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0F9] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0FA] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0FB] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0FC] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_0FD] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_RED_SCARF] = {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_red_scarf_palette},
|
||||
[ITEM_BLUE_SCARF] = {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_blue_scarf_palette},
|
||||
[ITEM_PINK_SCARF] = {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_pink_scarf_palette},
|
||||
[ITEM_GREEN_SCARF] = {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_green_scarf_palette},
|
||||
[ITEM_YELLOW_SCARF] = {gFile_graphics_items_icons_scarf_sheet, gFile_graphics_items_icon_palettes_yellow_scarf_palette},
|
||||
[ITEM_MACH_BIKE] = {gFile_graphics_items_icons_mach_bike_sheet, gFile_graphics_items_icon_palettes_mach_bike_palette},
|
||||
[ITEM_COIN_CASE] = {gFile_graphics_items_icons_coin_case_sheet, gFile_graphics_items_icon_palettes_coin_case_palette},
|
||||
[ITEM_ITEMFINDER] = {gFile_graphics_items_icons_itemfinder_sheet, gFile_graphics_items_icon_palettes_itemfinder_palette},
|
||||
[ITEM_OLD_ROD] = {gFile_graphics_items_icons_old_rod_sheet, gFile_graphics_items_icon_palettes_old_rod_palette},
|
||||
[ITEM_GOOD_ROD] = {gFile_graphics_items_icons_good_rod_sheet, gFile_graphics_items_icon_palettes_good_rod_palette},
|
||||
[ITEM_SUPER_ROD] = {gFile_graphics_items_icons_super_rod_sheet, gFile_graphics_items_icon_palettes_super_rod_palette},
|
||||
[ITEM_SS_TICKET] = {gFile_graphics_items_icons_ss_ticket_sheet, gFile_graphics_items_icon_palettes_ss_ticket_palette},
|
||||
[ITEM_CONTEST_PASS] = {gFile_graphics_items_icons_contest_pass_sheet, gFile_graphics_items_icon_palettes_contest_pass_palette},
|
||||
[ITEM_10B] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_WAILMER_PAIL] = {gFile_graphics_items_icons_wailmer_pail_sheet, gFile_graphics_items_icon_palettes_wailmer_pail_palette},
|
||||
[ITEM_DEVON_GOODS] = {gFile_graphics_items_icons_devon_goods_sheet, gFile_graphics_items_icon_palettes_devon_goods_palette},
|
||||
[ITEM_SOOT_SACK] = {gFile_graphics_items_icons_soot_sack_sheet, gFile_graphics_items_icon_palettes_soot_sack_palette},
|
||||
[ITEM_BASEMENT_KEY] = {gFile_graphics_items_icons_basement_key_sheet, gFile_graphics_items_icon_palettes_old_key_palette},
|
||||
[ITEM_ACRO_BIKE] = {gFile_graphics_items_icons_acro_bike_sheet, gFile_graphics_items_icon_palettes_acro_bike_palette},
|
||||
[ITEM_POKEBLOCK_CASE] = {gFile_graphics_items_icons_pokeblock_case_sheet, gFile_graphics_items_icon_palettes_pokeblock_case_palette},
|
||||
[ITEM_LETTER] = {gFile_graphics_items_icons_letter_sheet, gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette},
|
||||
[ITEM_EON_TICKET] = {gFile_graphics_items_icons_eon_ticket_sheet, gFile_graphics_items_icon_palettes_eon_ticket_palette},
|
||||
[ITEM_RED_ORB] = {gFile_graphics_items_icons_orb_sheet, gFile_graphics_items_icon_palettes_red_orb_palette},
|
||||
[ITEM_BLUE_ORB] = {gFile_graphics_items_icons_orb_sheet, gFile_graphics_items_icon_palettes_blue_orb_palette},
|
||||
[ITEM_SCANNER] = {gFile_graphics_items_icons_scanner_sheet, gFile_graphics_items_icon_palettes_scanner_palette},
|
||||
[ITEM_GO_GOGGLES] = {gFile_graphics_items_icons_go_goggles_sheet, gFile_graphics_items_icon_palettes_go_goggles_palette},
|
||||
[ITEM_METEORITE] = {gFile_graphics_items_icons_meteorite_sheet, gFile_graphics_items_icon_palettes_meteorite_palette},
|
||||
[ITEM_ROOM_1_KEY] = {gFile_graphics_items_icons_room1_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
|
||||
[ITEM_ROOM_2_KEY] = {gFile_graphics_items_icons_room2_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
|
||||
[ITEM_ROOM_4_KEY] = {gFile_graphics_items_icons_room4_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
|
||||
[ITEM_ROOM_6_KEY] = {gFile_graphics_items_icons_room6_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
|
||||
[ITEM_STORAGE_KEY] = {gFile_graphics_items_icons_storage_key_sheet, gFile_graphics_items_icon_palettes_old_key_palette},
|
||||
[ITEM_ROOT_FOSSIL] = {gFile_graphics_items_icons_root_fossil_sheet, gFile_graphics_items_icon_palettes_hoenn_fossil_palette},
|
||||
[ITEM_CLAW_FOSSIL] = {gFile_graphics_items_icons_claw_fossil_sheet, gFile_graphics_items_icon_palettes_hoenn_fossil_palette},
|
||||
[ITEM_DEVON_SCOPE] = {gFile_graphics_items_icons_devon_scope_sheet, gFile_graphics_items_icon_palettes_devon_scope_palette},
|
||||
[ITEM_TM01] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fighting_tm_hm_palette},
|
||||
[ITEM_TM02] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dragon_tm_hm_palette},
|
||||
[ITEM_TM03] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
|
||||
[ITEM_TM04] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
|
||||
[ITEM_TM05] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM06] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_poison_tm_hm_palette},
|
||||
[ITEM_TM07] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ice_tm_hm_palette},
|
||||
[ITEM_TM08] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fighting_tm_hm_palette},
|
||||
[ITEM_TM09] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_grass_tm_hm_palette},
|
||||
[ITEM_TM10] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM11] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fire_tm_hm_palette},
|
||||
[ITEM_TM12] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dark_tm_hm_palette},
|
||||
[ITEM_TM13] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ice_tm_hm_palette},
|
||||
[ITEM_TM14] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ice_tm_hm_palette},
|
||||
[ITEM_TM15] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM16] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
|
||||
[ITEM_TM17] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM18] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
|
||||
[ITEM_TM19] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_grass_tm_hm_palette},
|
||||
[ITEM_TM20] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM21] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM22] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_grass_tm_hm_palette},
|
||||
[ITEM_TM23] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_steel_tm_hm_palette},
|
||||
[ITEM_TM24] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_electric_tm_hm_palette},
|
||||
[ITEM_TM25] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_electric_tm_hm_palette},
|
||||
[ITEM_TM26] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ground_tm_hm_palette},
|
||||
[ITEM_TM27] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM28] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ground_tm_hm_palette},
|
||||
[ITEM_TM29] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
|
||||
[ITEM_TM30] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_ghost_tm_hm_palette},
|
||||
[ITEM_TM31] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fighting_tm_hm_palette},
|
||||
[ITEM_TM32] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM33] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
|
||||
[ITEM_TM34] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_electric_tm_hm_palette},
|
||||
[ITEM_TM35] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fire_tm_hm_palette},
|
||||
[ITEM_TM36] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_poison_tm_hm_palette},
|
||||
[ITEM_TM37] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_rock_tm_hm_palette},
|
||||
[ITEM_TM38] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fire_tm_hm_palette},
|
||||
[ITEM_TM39] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_rock_tm_hm_palette},
|
||||
[ITEM_TM40] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_flying_tm_hm_palette},
|
||||
[ITEM_TM41] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dark_tm_hm_palette},
|
||||
[ITEM_TM42] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM43] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM44] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
|
||||
[ITEM_TM45] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_TM46] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dark_tm_hm_palette},
|
||||
[ITEM_TM47] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_steel_tm_hm_palette},
|
||||
[ITEM_TM48] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_psychic_tm_hm_palette},
|
||||
[ITEM_TM49] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_dark_tm_hm_palette},
|
||||
[ITEM_TM50] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fire_tm_hm_palette},
|
||||
[ITEM_HM01] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_HM02] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_flying_tm_hm_palette},
|
||||
[ITEM_HM03] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
|
||||
[ITEM_HM04] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_HM05] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_normal_tm_hm_palette},
|
||||
[ITEM_HM06] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_fighting_tm_hm_palette},
|
||||
[ITEM_HM07] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
|
||||
[ITEM_HM08] = {gFile_graphics_items_icons_tm_sheet, gFile_graphics_items_icon_palettes_water_tm_hm_palette},
|
||||
[ITEM_15B] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_15C] = {gFile_graphics_items_icons_question_mark_sheet, gFile_graphics_items_icon_palettes_question_mark_palette},
|
||||
[ITEM_OAKS_PARCEL] = {gFile_graphics_items_icons_oaks_parcel_sheet, gFile_graphics_items_icon_palettes_oaks_parcel_palette},
|
||||
[ITEM_POKE_FLUTE] = {gFile_graphics_items_icons_poke_flute_sheet, gFile_graphics_items_icon_palettes_poke_flute_palette},
|
||||
[ITEM_SECRET_KEY] = {gFile_graphics_items_icons_secret_key_sheet, gFile_graphics_items_icon_palettes_secret_key_palette},
|
||||
[ITEM_BIKE_VOUCHER] = {gFile_graphics_items_icons_bike_voucher_sheet, gFile_graphics_items_icon_palettes_bike_voucher_palette},
|
||||
[ITEM_GOLD_TEETH] = {gFile_graphics_items_icons_gold_teeth_sheet, gFile_graphics_items_icon_palettes_gold_teeth_palette},
|
||||
[ITEM_OLD_AMBER] = {gFile_graphics_items_icons_old_amber_sheet, gFile_graphics_items_icon_palettes_old_amber_palette},
|
||||
[ITEM_CARD_KEY] = {gFile_graphics_items_icons_card_key_sheet, gFile_graphics_items_icon_palettes_card_key_palette},
|
||||
[ITEM_LIFT_KEY] = {gFile_graphics_items_icons_lift_key_sheet, gFile_graphics_items_icon_palettes_key_palette},
|
||||
[ITEM_HELIX_FOSSIL] = {gFile_graphics_items_icons_helix_fossil_sheet, gFile_graphics_items_icon_palettes_kanto_fossil_palette},
|
||||
[ITEM_DOME_FOSSIL] = {gFile_graphics_items_icons_dome_fossil_sheet, gFile_graphics_items_icon_palettes_kanto_fossil_palette},
|
||||
[ITEM_SILPH_SCOPE] = {gFile_graphics_items_icons_silph_scope_sheet, gFile_graphics_items_icon_palettes_silph_scope_palette},
|
||||
[ITEM_BICYCLE] = {gFile_graphics_items_icons_bicycle_sheet, gFile_graphics_items_icon_palettes_bicycle_palette},
|
||||
[ITEM_TOWN_MAP] = {gFile_graphics_items_icons_town_map_sheet, gFile_graphics_items_icon_palettes_town_map_palette},
|
||||
[ITEM_VS_SEEKER] = {gFile_graphics_items_icons_vs_seeker_sheet, gFile_graphics_items_icon_palettes_vs_seeker_palette},
|
||||
[ITEM_FAME_CHECKER] = {gFile_graphics_items_icons_fame_checker_sheet, gFile_graphics_items_icon_palettes_fame_checker_palette},
|
||||
[ITEM_TM_CASE] = {gFile_graphics_items_icons_tm_case_sheet, gFile_graphics_items_icon_palettes_tm_case_palette},
|
||||
[ITEM_BERRY_POUCH] = {gFile_graphics_items_icons_berry_pouch_sheet, gFile_graphics_items_icon_palettes_berry_pouch_palette},
|
||||
[ITEM_TEACHY_TV] = {gFile_graphics_items_icons_teachy_tv_sheet, gFile_graphics_items_icon_palettes_teachy_tv_palette},
|
||||
[ITEM_TRI_PASS] = {gFile_graphics_items_icons_tri_pass_sheet, gFile_graphics_items_icon_palettes_tri_pass_palette},
|
||||
[ITEM_RAINBOW_PASS] = {gFile_graphics_items_icons_rainbow_pass_sheet, gFile_graphics_items_icon_palettes_rainbow_pass_palette},
|
||||
[ITEM_TEA] = {gFile_graphics_items_icons_tea_sheet, gFile_graphics_items_icon_palettes_tea_palette},
|
||||
[ITEM_MYSTIC_TICKET] = {gFile_graphics_items_icons_mystic_ticket_sheet, gFile_graphics_items_icon_palettes_mystic_ticket_palette},
|
||||
[ITEM_AURORA_TICKET] = {gFile_graphics_items_icons_aurora_ticket_sheet, gFile_graphics_items_icon_palettes_aurora_ticket_palette},
|
||||
[ITEM_POWDER_JAR] = {gFile_graphics_items_icons_powder_jar_sheet, gFile_graphics_items_icon_palettes_powder_jar_palette},
|
||||
[ITEM_RUBY] = {gFile_graphics_items_icons_gem_sheet, gFile_graphics_items_icon_palettes_ruby_palette},
|
||||
[ITEM_SAPPHIRE] = {gFile_graphics_items_icons_gem_sheet, gFile_graphics_items_icon_palettes_sapphire_palette},
|
||||
[ITEMS_COUNT] = {gFile_graphics_items_icons_return_to_field_arrow_sheet, gFile_graphics_items_icon_palettes_return_to_field_arrow_palette}
|
||||
};
|
||||
+396
-396
File diff suppressed because it is too large
Load Diff
@@ -134,7 +134,7 @@ static bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, stru
|
||||
static bool8 MovementType_Buried_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
static bool8 MovementType_WalkInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
static bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
static bool8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
static bool8 MovementType_WalkInPlaceFast_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
static bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
static bool8 MovementType_JogInPlace_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
static bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
@@ -580,8 +580,8 @@ u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct ObjectEvent *, struct Sprite
|
||||
MovementType_MoveInPlace_Step1,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSlowlyInPlace[])(struct ObjectEvent *, struct Sprite *) = {
|
||||
MovementType_WalkSlowlyInPlace_Step0,
|
||||
u8 (*const gMovementTypeFuncs_WalkInPlaceFast[])(struct ObjectEvent *, struct Sprite *) = {
|
||||
MovementType_WalkInPlaceFast_Step0,
|
||||
MovementType_MoveInPlace_Step1,
|
||||
};
|
||||
|
||||
|
||||
@@ -191,9 +191,9 @@ const u16 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U16("graphics/field_effe
|
||||
const u16 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U16("graphics/field_effects/pics/shadow_large.4bpp");
|
||||
const u16 gFieldEffectObjectPic_ShadowExtraLarge[] = INCBIN_U16("graphics/field_effects/pics/shadow_extra_large.4bpp");
|
||||
const u16 filler_8398188[0x90] = {};
|
||||
const u16 gUnknown_8398648[] = INCBIN_U16("graphics/field_effects/fldeff_cut.4bpp");
|
||||
const u16 gUnknown_8398668[] = INCBIN_U16("graphics/field_effects/fldeff_cut.4bpp");
|
||||
const u16 gUnknown_8398688[] = INCBIN_U16("graphics/field_effects/fldeff_cut.gbapal");
|
||||
const u16 gFieldEffectObjectPic_CutGrass[] = INCBIN_U16("graphics/field_effects/fldeff_cut.4bpp");
|
||||
const u16 gFieldEffectObjectPic_CutGrass2[] = INCBIN_U16("graphics/field_effects/fldeff_cut.4bpp"); // Unused
|
||||
const u16 gFieldEffectPal_CutGrass[] = INCBIN_U16("graphics/field_effects/fldeff_cut.gbapal");
|
||||
const u16 gFieldEffectObjectPic_Ripple[] = INCBIN_U16("graphics/field_effects/pics/ripple.4bpp");
|
||||
const u16 gFieldEffectObjectPic_Ash[] = INCBIN_U16("graphics/field_effects/pics/ash.4bpp");
|
||||
const u16 gFieldEffectObjectPic_Arrow[] = INCBIN_U16("graphics/field_effects/pics/arrow.4bpp");
|
||||
@@ -201,9 +201,9 @@ const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/field_effects/pale
|
||||
const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/field_effects/palettes/general_1.gbapal");
|
||||
const u16 filler_8398FE8[16] = {0};
|
||||
const u16 gFieldEffectObjectPic_GroundImpactDust[] = INCBIN_U16("graphics/field_effects/pics/ground_impact_dust.4bpp");
|
||||
UNUSED const u16 gFieldEffectObjectPic_UnusedGrass3[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_3.4bpp");
|
||||
const u16 gFieldEffectObjectPic_UnusedGrass3[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_3.4bpp"); // Unused
|
||||
const u16 gFieldEffectObjectPic_JumpTallGrass[] = INCBIN_U16("graphics/field_effects/pics/jump_tall_grass.4bpp");
|
||||
UNUSED const u16 gFieldEffectObjectPic_UnusedGrass4[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_4.4bpp");
|
||||
const u16 gFieldEffectObjectPic_UnusedGrass4[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_4.4bpp"); // Unused
|
||||
const u16 gFieldEffectObjectPic_JumpLongGrass[] = INCBIN_U16("graphics/field_effects/pics/jump_long_grass.4bpp");
|
||||
const u16 gFieldEffectObjectPic_UnusedGrass[] = INCBIN_U16("graphics/field_effects/pics/unused_grass.4bpp");
|
||||
const u16 gFieldEffectObjectPic_UnusedGrass2[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_2.4bpp");
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+90
-98
@@ -48,7 +48,7 @@ static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] =
|
||||
38, 36, 24, 8, // HP
|
||||
53, 36, 24, 8, // Max HP
|
||||
24, 35, 48, 3 // HP bar
|
||||
},
|
||||
},
|
||||
12, 34, 64, 16 // Description text (e.g. NO USE)
|
||||
},
|
||||
[PARTY_BOX_RIGHT_COLUMN] =
|
||||
@@ -71,6 +71,7 @@ static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] =
|
||||
{
|
||||
[PARTY_LAYOUT_SINGLE] =
|
||||
{
|
||||
// pokemon coords, held item coords, status coords, pokeball coords
|
||||
{ 16, 40, 20, 50, 56, 52, 16, 34},
|
||||
{104, 18, 108, 28, 144, 27, 102, 25},
|
||||
{104, 42, 108, 52, 144, 51, 102, 49},
|
||||
@@ -537,7 +538,7 @@ static const struct WindowTemplate sWindowTemplate_FirstBattleOakVoiceover =
|
||||
.baseBlock = 0x1DF,
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_845A178 =
|
||||
static const struct WindowTemplate sFieldMoveDescriptionWindowTemplate =
|
||||
{
|
||||
.bg = 2,
|
||||
.tilemapLeft = 0,
|
||||
@@ -572,32 +573,23 @@ static const u8 sMainSlotTileNums_Egg[] =
|
||||
|
||||
static const u8 sOtherSlotsTileNums[] =
|
||||
{
|
||||
43, 44, 44, 44, 44, 44, 44, 44, 44, 44,
|
||||
44, 44, 44, 44, 44, 44, 44, 45, 49, 33,
|
||||
33, 33, 33, 33, 33, 33, 33, 52, 53, 51,
|
||||
51, 51, 51, 51, 51, 54, 55, 56, 56, 56,
|
||||
56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
|
||||
56, 56, 56, 57,
|
||||
43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45,
|
||||
49, 33, 33, 33, 33, 33, 33, 33, 33, 52, 53, 51, 51, 51, 51, 51, 51, 54,
|
||||
55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57,
|
||||
};
|
||||
|
||||
static const u8 sOtherSlotsTileNums_Egg[] =
|
||||
{
|
||||
43, 44, 44, 44, 44, 44, 44, 44, 44, 44,
|
||||
44, 44, 44, 44, 44, 44, 44, 45, 49, 33,
|
||||
33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
|
||||
33, 33, 33, 33, 33, 50, 55, 56, 56, 56,
|
||||
56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
|
||||
56, 56, 56, 57,
|
||||
43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45,
|
||||
49, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 50,
|
||||
55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57,
|
||||
};
|
||||
|
||||
static const u8 sEmptySlotTileNums[] =
|
||||
{
|
||||
21, 22, 22, 22, 22, 22, 22, 22, 22, 22,
|
||||
22, 22, 22, 22, 22, 22, 22, 23, 30, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 31, 37, 38, 38, 38,
|
||||
38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
|
||||
38, 38, 38, 39,
|
||||
21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,
|
||||
30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
|
||||
37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39,
|
||||
};
|
||||
|
||||
static const u8 sGenderPalOffsets[] = {11, 12};
|
||||
@@ -687,20 +679,20 @@ static const u8 *const sDescriptionStringTable[] =
|
||||
[PARTYBOX_DESC_LEARNED] = gText_Learned,
|
||||
};
|
||||
|
||||
static const u8 *const sHMDescriptionTable[] =
|
||||
static const u8 *const sFieldMoveDescriptionTable[] =
|
||||
{
|
||||
gText_LightUpDarkness,
|
||||
gText_CutATreeOrGrass,
|
||||
gText_FlyToAKnownTown,
|
||||
gText_MoveHeavyBoulders,
|
||||
gText_TravelOnWater,
|
||||
gText_ShatterACrackedRock,
|
||||
gText_ClimbAWaterfall,
|
||||
gText_ReturnToAHealingSpot,
|
||||
gText_EscapeFromHere,
|
||||
gText_ShareHp,
|
||||
gText_ShareHp,
|
||||
gText_LureWildPokemon,
|
||||
[FIELD_MOVE_FLASH] = gText_LightUpDarkness,
|
||||
[FIELD_MOVE_CUT] = gText_CutATreeOrGrass,
|
||||
[FIELD_MOVE_FLY] = gText_FlyToAKnownTown,
|
||||
[FIELD_MOVE_STRENGTH] = gText_MoveHeavyBoulders,
|
||||
[FIELD_MOVE_SURF] = gText_TravelOnWater,
|
||||
[FIELD_MOVE_ROCK_SMASH] = gText_ShatterACrackedRock,
|
||||
[FIELD_MOVE_WATERFALL] = gText_ClimbAWaterfall,
|
||||
[FIELD_MOVE_TELEPORT] = gText_ReturnToAHealingSpot,
|
||||
[FIELD_MOVE_DIG] = gText_EscapeFromHere,
|
||||
[FIELD_MOVE_MILK_DRINK] = gText_ShareHp,
|
||||
[FIELD_MOVE_SOFT_BOILED] = gText_ShareHp,
|
||||
[FIELD_MOVE_SWEET_SCENT] = gText_LureWildPokemon,
|
||||
};
|
||||
|
||||
static const u32 sHeldItemGfx[] = INCBIN_U32("graphics/interface/hold_icons.4bpp");
|
||||
@@ -709,7 +701,7 @@ static const u16 sHeldItemPalette[] = INCBIN_U16("graphics/interface/hold_icons.
|
||||
static const struct OamData sOamData_HeldItem =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = 0,
|
||||
.mosaic = FALSE,
|
||||
.bpp = 0,
|
||||
@@ -765,7 +757,7 @@ static const struct SpriteTemplate sSpriteTemplate_HeldItem =
|
||||
static const struct OamData sOamData_MenuPokeball =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = 0,
|
||||
.mosaic = FALSE,
|
||||
.bpp = 0,
|
||||
@@ -822,7 +814,7 @@ static const struct SpriteTemplate sSpriteTemplate_MenuPokeball =
|
||||
static const struct OamData sOamData_MenuPokeballSmall =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = 0,
|
||||
.mosaic = FALSE,
|
||||
.bpp = 0,
|
||||
@@ -903,7 +895,7 @@ static const struct SpriteTemplate sSpriteTemplate_MenuPokeballSmall =
|
||||
static const struct OamData sOamData_StatusCondition =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = 0,
|
||||
.mosaic = FALSE,
|
||||
.bpp = 0,
|
||||
@@ -1073,25 +1065,25 @@ static const u16 sTMHMMoves_Duplicate[] =
|
||||
|
||||
enum
|
||||
{
|
||||
MENU_SUMMARY,
|
||||
MENU_SWITCH,
|
||||
MENU_CANCEL1,
|
||||
MENU_ITEM,
|
||||
MENU_GIVE,
|
||||
MENU_TAKE_ITEM,
|
||||
MENU_MAIL,
|
||||
MENU_TAKE_MAIL,
|
||||
MENU_READ,
|
||||
MENU_CANCEL2,
|
||||
MENU_SHIFT,
|
||||
MENU_SEND_OUT,
|
||||
MENU_ENTER,
|
||||
MENU_NO_ENTRY,
|
||||
MENU_STORE,
|
||||
MENU_REGISTER,
|
||||
MENU_TRADE1,
|
||||
MENU_TRADE2,
|
||||
MENU_FIELD_MOVES,
|
||||
CURSOR_OPTION_SUMMARY,
|
||||
CURSOR_OPTION_SWITCH,
|
||||
CURSOR_OPTION_CANCEL1,
|
||||
CURSOR_OPTION_ITEM,
|
||||
CURSOR_OPTION_GIVE,
|
||||
CURSOR_OPTION_TAKE_ITEM,
|
||||
CURSOR_OPTION_MAIL,
|
||||
CURSOR_OPTION_TAKE_MAIL,
|
||||
CURSOR_OPTION_READ,
|
||||
CURSOR_OPTION_CANCEL2,
|
||||
CURSOR_OPTION_SHIFT,
|
||||
CURSOR_OPTION_SEND_OUT,
|
||||
CURSOR_OPTION_ENTER,
|
||||
CURSOR_OPTION_NO_ENTRY,
|
||||
CURSOR_OPTION_STORE,
|
||||
CURSOR_OPTION_REGISTER,
|
||||
CURSOR_OPTION_TRADE1,
|
||||
CURSOR_OPTION_TRADE2,
|
||||
CURSOR_OPTION_FIELD_MOVES,
|
||||
};
|
||||
|
||||
static struct
|
||||
@@ -1100,50 +1092,50 @@ static struct
|
||||
TaskFunc func;
|
||||
} const sCursorOptions[] =
|
||||
{
|
||||
[MENU_SUMMARY] = {gText_Summary5, CursorCB_Summary},
|
||||
[MENU_SWITCH] = {gText_Switch2, CursorCB_Switch},
|
||||
[MENU_CANCEL1] = {gFameCheckerText_Cancel, CursorCB_Cancel1},
|
||||
[MENU_ITEM] = {gText_Item, CursorCB_Item},
|
||||
[MENU_GIVE] = {gOtherText_Give, CursorCB_Give},
|
||||
[MENU_TAKE_ITEM] = {gText_Take, CursorCB_TakeItem},
|
||||
[MENU_MAIL] = {gText_Mail, CursorCB_Mail},
|
||||
[MENU_TAKE_MAIL] = {gText_Take2, CursorCB_TakeMail},
|
||||
[MENU_READ] = {gText_Read2, CursorCB_Read},
|
||||
[MENU_CANCEL2] = {gFameCheckerText_Cancel, CursorCB_Cancel2},
|
||||
[MENU_SHIFT] = {gText_Shift, CursorCB_SendMon},
|
||||
[MENU_SEND_OUT] = {gText_SendOut, CursorCB_SendMon},
|
||||
[MENU_ENTER] = {gText_Enter, CursorCB_Enter},
|
||||
[MENU_NO_ENTRY] = {gText_NoEntry, CursorCB_NoEntry},
|
||||
[MENU_STORE] = {gText_Store, CursorCB_Store},
|
||||
[MENU_REGISTER] = {gText_Register, CursorCB_Register},
|
||||
[MENU_TRADE1] = {gText_Trade4, CursorCB_Trade1},
|
||||
[MENU_TRADE2] = {gText_Trade4, CursorCB_Trade2},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_FLASH] = {gMoveNames[MOVE_FLASH], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_CUT] = {gMoveNames[MOVE_CUT], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_FLY] = {gMoveNames[MOVE_FLY], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_STRENGTH] = {gMoveNames[MOVE_STRENGTH], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_SURF] = {gMoveNames[MOVE_SURF], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_ROCK_SMASH] = {gMoveNames[MOVE_ROCK_SMASH], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_WATERFALL] = {gMoveNames[MOVE_WATERFALL], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_TELEPORT] = {gMoveNames[MOVE_TELEPORT], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_DIG] = {gMoveNames[MOVE_DIG], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_MILK_DRINK] = {gMoveNames[MOVE_MILK_DRINK], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_SOFT_BOILED] = {gMoveNames[MOVE_SOFT_BOILED], CursorCB_FieldMove},
|
||||
[MENU_FIELD_MOVES + FIELD_MOVE_SWEET_SCENT] = {gMoveNames[MOVE_SWEET_SCENT], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_SUMMARY] = {gText_Summary5, CursorCB_Summary },
|
||||
[CURSOR_OPTION_SWITCH] = {gText_Switch2, CursorCB_Switch },
|
||||
[CURSOR_OPTION_CANCEL1] = {gFameCheckerText_Cancel, CursorCB_Cancel1 },
|
||||
[CURSOR_OPTION_ITEM] = {gText_Item, CursorCB_Item },
|
||||
[CURSOR_OPTION_GIVE] = {gOtherText_Give, CursorCB_Give },
|
||||
[CURSOR_OPTION_TAKE_ITEM] = {gText_Take, CursorCB_TakeItem },
|
||||
[CURSOR_OPTION_MAIL] = {gText_Mail, CursorCB_Mail },
|
||||
[CURSOR_OPTION_TAKE_MAIL] = {gText_Take2, CursorCB_TakeMail },
|
||||
[CURSOR_OPTION_READ] = {gText_Read2, CursorCB_Read },
|
||||
[CURSOR_OPTION_CANCEL2] = {gFameCheckerText_Cancel, CursorCB_Cancel2 },
|
||||
[CURSOR_OPTION_SHIFT] = {gText_Shift, CursorCB_SendMon },
|
||||
[CURSOR_OPTION_SEND_OUT] = {gText_SendOut, CursorCB_SendMon },
|
||||
[CURSOR_OPTION_ENTER] = {gText_Enter, CursorCB_Enter },
|
||||
[CURSOR_OPTION_NO_ENTRY] = {gText_NoEntry, CursorCB_NoEntry },
|
||||
[CURSOR_OPTION_STORE] = {gText_Store, CursorCB_Store },
|
||||
[CURSOR_OPTION_REGISTER] = {gText_Register, CursorCB_Register },
|
||||
[CURSOR_OPTION_TRADE1] = {gText_Trade4, CursorCB_Trade1 },
|
||||
[CURSOR_OPTION_TRADE2] = {gText_Trade4, CursorCB_Trade2 },
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_FLASH] = {gMoveNames[MOVE_FLASH], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_CUT] = {gMoveNames[MOVE_CUT], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_FLY] = {gMoveNames[MOVE_FLY], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_STRENGTH] = {gMoveNames[MOVE_STRENGTH], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_SURF] = {gMoveNames[MOVE_SURF], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_ROCK_SMASH] = {gMoveNames[MOVE_ROCK_SMASH], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_WATERFALL] = {gMoveNames[MOVE_WATERFALL], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_TELEPORT] = {gMoveNames[MOVE_TELEPORT], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_DIG] = {gMoveNames[MOVE_DIG], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_MILK_DRINK] = {gMoveNames[MOVE_MILK_DRINK], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_SOFT_BOILED] = {gMoveNames[MOVE_SOFT_BOILED], CursorCB_FieldMove},
|
||||
[CURSOR_OPTION_FIELD_MOVES + FIELD_MOVE_SWEET_SCENT] = {gMoveNames[MOVE_SWEET_SCENT], CursorCB_FieldMove},
|
||||
};
|
||||
|
||||
static const u8 sPartyMenuAction_SummarySwitchCancel[] = {MENU_SUMMARY, MENU_SWITCH, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_ShiftSummaryCancel[] = {MENU_SHIFT, MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_SendOutSummaryCancel[] = {MENU_SEND_OUT, MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_SummaryCancel[] = {MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_EnterSummaryCancel[] = {MENU_ENTER, MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_NoEntrySummaryCancel[] = {MENU_NO_ENTRY, MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_StoreSummaryCancel[] = {MENU_STORE, MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_GiveTakeItemCancel[] = {MENU_GIVE, MENU_TAKE_ITEM, MENU_CANCEL2};
|
||||
static const u8 sPartyMenuAction_ReadTakeMailCancel[] = {MENU_READ, MENU_TAKE_MAIL, MENU_CANCEL2};
|
||||
static const u8 sPartyMenuAction_RegisterSummaryCancel[] = {MENU_REGISTER, MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_TradeSummaryCancel1[] = {MENU_TRADE1, MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_TradeSummaryCancel2[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1};
|
||||
static const u8 sPartyMenuAction_SummarySwitchCancel[] = {CURSOR_OPTION_SUMMARY, CURSOR_OPTION_SWITCH, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_ShiftSummaryCancel[] = {CURSOR_OPTION_SHIFT, CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_SendOutSummaryCancel[] = {CURSOR_OPTION_SEND_OUT, CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_SummaryCancel[] = {CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_EnterSummaryCancel[] = {CURSOR_OPTION_ENTER, CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_NoEntrySummaryCancel[] = {CURSOR_OPTION_NO_ENTRY, CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_StoreSummaryCancel[] = {CURSOR_OPTION_STORE, CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_GiveTakeItemCancel[] = {CURSOR_OPTION_GIVE, CURSOR_OPTION_TAKE_ITEM, CURSOR_OPTION_CANCEL2};
|
||||
static const u8 sPartyMenuAction_ReadTakeMailCancel[] = {CURSOR_OPTION_READ, CURSOR_OPTION_TAKE_MAIL, CURSOR_OPTION_CANCEL2};
|
||||
static const u8 sPartyMenuAction_RegisterSummaryCancel[] = {CURSOR_OPTION_REGISTER, CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_TradeSummaryCancel1[] = {CURSOR_OPTION_TRADE1, CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
static const u8 sPartyMenuAction_TradeSummaryCancel2[] = {CURSOR_OPTION_TRADE2, CURSOR_OPTION_SUMMARY, CURSOR_OPTION_CANCEL1};
|
||||
|
||||
// IDs for the action lists that appear when a party mon is selected
|
||||
enum
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
static const u8 sRegionMapSections_Kanto[LAYER_COUNT][MAP_HEIGHT][MAP_WIDTH] = {
|
||||
[LAYER_MAP] =
|
||||
{
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_ROUTE_25, MAPSEC_ROUTE_25, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_INDIGO_PLATEAU, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_4_POKECENTER, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_CERULEAN_CITY, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_10_POKECENTER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_PEWTER_CITY, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_5, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_5, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_CELADON_CITY, MAPSEC_ROUTE_7, MAPSEC_ROUTE_7, MAPSEC_SAFFRON_CITY, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_LAVENDER_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_22, MAPSEC_ROUTE_22, MAPSEC_VIRIDIAN_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VERMILION_CITY, MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PALLET_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_14, MAPSEC_ROUTE_13, MAPSEC_ROUTE_13, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_FUCHSIA_CITY, MAPSEC_ROUTE_15, MAPSEC_ROUTE_15, MAPSEC_ROUTE_14, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_19, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CINNABAR_ISLAND, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_19, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
},
|
||||
[LAYER_DUNGEON] =
|
||||
{
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_MOON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CERULEAN_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROCK_TUNNEL, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_VICTORY_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POWER_PLANT, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VIRIDIAN_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_SAFARI_ZONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_MANSION, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEAFOAM_ISLANDS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,38 @@
|
||||
static const u8 sRegionMapSections_Sevii123[LAYER_COUNT][MAP_HEIGHT][MAP_WIDTH] = {
|
||||
[LAYER_MAP] =
|
||||
{
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_ONE_ISLAND, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TWO_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_THREE_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_THREE_ISLE_PORT, MAPSEC_THREE_ISLE_PORT, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
|
||||
},
|
||||
[LAYER_DUNGEON] =
|
||||
{
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_EMBER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BERRY_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,38 @@
|
||||
static const u8 sRegionMapSections_Sevii45[LAYER_COUNT][MAP_HEIGHT][MAP_WIDTH] = {
|
||||
[LAYER_MAP] =
|
||||
{
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FOUR_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NAVEL_ROCK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLAND, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
|
||||
},
|
||||
[LAYER_DUNGEON] =
|
||||
{
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ICEFALL_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LOST_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,38 @@
|
||||
static const u8 sRegionMapSections_Sevii67[LAYER_COUNT][MAP_HEIGHT][MAP_WIDTH] = {
|
||||
[LAYER_MAP] =
|
||||
{
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SIX_ISLAND, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVEN_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CANYON_ENTRANCE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BIRTH_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
|
||||
},
|
||||
[LAYER_DUNGEON] =
|
||||
{
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ALTERING_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PATTERN_BUSH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DOTTED_HOLE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_CHAMBERS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
|
||||
{MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
{{ doNotModifyHeader }}
|
||||
#ifndef GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
|
||||
#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
|
||||
|
||||
## for map_section in map_sections
|
||||
{% if isEmptyString(getVar(map_section.name)) and not existsIn(map_section, "name_clone") %}{{ setVar(map_section.name, map_section.map_section) }}{% endif %}
|
||||
## endfor
|
||||
|
||||
static const u8 *const sMapNames[] = {
|
||||
## for map_section in map_sections
|
||||
[{{ map_section.map_section }} - MAPSECS_KANTO] = sMapsecName_{{ cleanString(map_section.name) }}{% if existsIn(map_section, "name_clone") %}_Clone{% endif %},
|
||||
## endfor
|
||||
};
|
||||
|
||||
static const u16 sMapSectionTopLeftCorners[MAPSEC_COUNT][2] = {
|
||||
## for map_section in map_sections
|
||||
[{{ map_section.map_section }} - MAPSECS_KANTO] = { {{ map_section.x }}, {{ map_section.y }} },
|
||||
## endfor
|
||||
};
|
||||
|
||||
static const u16 sMapSectionDimensions[MAPSEC_COUNT][2] = {
|
||||
## for map_section in map_sections
|
||||
[{{ map_section.map_section }} - MAPSECS_KANTO] = { {{ map_section.width }}, {{ map_section.height }} },
|
||||
## endfor
|
||||
};
|
||||
|
||||
#endif // GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
|
||||
@@ -0,0 +1,880 @@
|
||||
{
|
||||
"map_sections": [
|
||||
{
|
||||
"map_section": "MAPSEC_PALLET_TOWN",
|
||||
"name": "PALLET TOWN",
|
||||
"x": 4,
|
||||
"y": 11,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_VIRIDIAN_CITY",
|
||||
"name": "VIRIDIAN CITY",
|
||||
"x": 4,
|
||||
"y": 8,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_PEWTER_CITY",
|
||||
"name": "PEWTER CITY",
|
||||
"x": 4,
|
||||
"y": 4,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_CERULEAN_CITY",
|
||||
"name": "CERULEAN CITY",
|
||||
"x": 14,
|
||||
"y": 3,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_LAVENDER_TOWN",
|
||||
"name": "LAVENDER TOWN",
|
||||
"x": 18,
|
||||
"y": 6,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_VERMILION_CITY",
|
||||
"name": "VERMILION CITY",
|
||||
"x": 14,
|
||||
"y": 9,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_CELADON_CITY",
|
||||
"name": "CELADON CITY",
|
||||
"x": 11,
|
||||
"y": 6,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_FUCHSIA_CITY",
|
||||
"name": "FUCHSIA CITY",
|
||||
"x": 12,
|
||||
"y": 12,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_CINNABAR_ISLAND",
|
||||
"name": "CINNABAR ISLAND",
|
||||
"x": 4,
|
||||
"y": 14,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_INDIGO_PLATEAU",
|
||||
"name": "INDIGO PLATEAU",
|
||||
"x": 2,
|
||||
"y": 3,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SAFFRON_CITY",
|
||||
"name": "SAFFRON CITY",
|
||||
"x": 14,
|
||||
"y": 6,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_4_POKECENTER",
|
||||
"name": "ROUTE 4",
|
||||
"name_clone": true,
|
||||
"x": 8,
|
||||
"y": 3,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_10_POKECENTER",
|
||||
"name": "ROUTE 10",
|
||||
"name_clone": true,
|
||||
"x": 18,
|
||||
"y": 3,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_1",
|
||||
"name": "ROUTE 1",
|
||||
"x": 4,
|
||||
"y": 9,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_2",
|
||||
"name": "ROUTE 2",
|
||||
"x": 4,
|
||||
"y": 5,
|
||||
"width": 1,
|
||||
"height": 3
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_3",
|
||||
"name": "ROUTE 3",
|
||||
"x": 5,
|
||||
"y": 4,
|
||||
"width": 4,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_4",
|
||||
"name": "ROUTE 4",
|
||||
"x": 8,
|
||||
"y": 3,
|
||||
"width": 6,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_5",
|
||||
"name": "ROUTE 5",
|
||||
"x": 14,
|
||||
"y": 4,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_6",
|
||||
"name": "ROUTE 6",
|
||||
"x": 14,
|
||||
"y": 7,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_7",
|
||||
"name": "ROUTE 7",
|
||||
"x": 12,
|
||||
"y": 6,
|
||||
"width": 2,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_8",
|
||||
"name": "ROUTE 8",
|
||||
"x": 15,
|
||||
"y": 6,
|
||||
"width": 3,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_9",
|
||||
"name": "ROUTE 9",
|
||||
"x": 15,
|
||||
"y": 3,
|
||||
"width": 3,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_10",
|
||||
"name": "ROUTE 10",
|
||||
"x": 18,
|
||||
"y": 3,
|
||||
"width": 1,
|
||||
"height": 3
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_11",
|
||||
"name": "ROUTE 11",
|
||||
"x": 15,
|
||||
"y": 9,
|
||||
"width": 3,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_12",
|
||||
"name": "ROUTE 12",
|
||||
"x": 18,
|
||||
"y": 7,
|
||||
"width": 1,
|
||||
"height": 5
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_13",
|
||||
"name": "ROUTE 13",
|
||||
"x": 16,
|
||||
"y": 11,
|
||||
"width": 2,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_14",
|
||||
"name": "ROUTE 14",
|
||||
"x": 15,
|
||||
"y": 11,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_15",
|
||||
"name": "ROUTE 15",
|
||||
"x": 13,
|
||||
"y": 12,
|
||||
"width": 2,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_16",
|
||||
"name": "ROUTE 16",
|
||||
"x": 7,
|
||||
"y": 6,
|
||||
"width": 4,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_17",
|
||||
"name": "ROUTE 17",
|
||||
"x": 7,
|
||||
"y": 7,
|
||||
"width": 1,
|
||||
"height": 5
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_18",
|
||||
"name": "ROUTE 18",
|
||||
"x": 7,
|
||||
"y": 12,
|
||||
"width": 5,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_19",
|
||||
"name": "ROUTE 19",
|
||||
"x": 12,
|
||||
"y": 13,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_20",
|
||||
"name": "ROUTE 20",
|
||||
"x": 5,
|
||||
"y": 14,
|
||||
"width": 7,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_21",
|
||||
"name": "ROUTE 21",
|
||||
"x": 4,
|
||||
"y": 12,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_22",
|
||||
"name": "ROUTE 22",
|
||||
"x": 2,
|
||||
"y": 8,
|
||||
"width": 2,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_23",
|
||||
"name": "ROUTE 23",
|
||||
"x": 2,
|
||||
"y": 4,
|
||||
"width": 1,
|
||||
"height": 4
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_24",
|
||||
"name": "ROUTE 24",
|
||||
"x": 14,
|
||||
"y": 1,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROUTE_25",
|
||||
"name": "ROUTE 25",
|
||||
"x": 15,
|
||||
"y": 1,
|
||||
"width": 2,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_VIRIDIAN_FOREST",
|
||||
"name": "VIRIDIAN FOREST",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_MT_MOON",
|
||||
"name": "MT. MOON",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_S_S_ANNE",
|
||||
"name": "S.S. ANNE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_UNDERGROUND_PATH",
|
||||
"name": "UNDERGROUND PATH",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_UNDERGROUND_PATH_2",
|
||||
"name": "UNDERGROUND PATH",
|
||||
"name_clone": true,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_DIGLETTS_CAVE",
|
||||
"name": "DIGLETT'S CAVE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_KANTO_VICTORY_ROAD",
|
||||
"name": "VICTORY ROAD",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROCKET_HIDEOUT",
|
||||
"name": "ROCKET HIDEOUT",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SILPH_CO",
|
||||
"name": "SILPH CO.",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_POKEMON_MANSION",
|
||||
"name": "POKéMON MANSION",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_KANTO_SAFARI_ZONE",
|
||||
"name": "SAFARI ZONE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_POKEMON_LEAGUE",
|
||||
"name": "POKéMON LEAGUE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROCK_TUNNEL",
|
||||
"name": "ROCK TUNNEL",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEAFOAM_ISLANDS",
|
||||
"name": "SEAFOAM ISLANDS",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_POKEMON_TOWER",
|
||||
"name": "POKéMON TOWER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_CERULEAN_CAVE",
|
||||
"name": "CERULEAN CAVE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_POWER_PLANT",
|
||||
"name": "POWER PLANT",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ONE_ISLAND",
|
||||
"name": "ONE ISLAND",
|
||||
"x": 1,
|
||||
"y": 8,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_TWO_ISLAND",
|
||||
"name": "TWO ISLAND",
|
||||
"x": 9,
|
||||
"y": 9,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_THREE_ISLAND",
|
||||
"name": "THREE ISLAND",
|
||||
"x": 18,
|
||||
"y": 12,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_FOUR_ISLAND",
|
||||
"name": "FOUR ISLAND",
|
||||
"x": 3,
|
||||
"y": 4,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_FIVE_ISLAND",
|
||||
"name": "FIVE ISLAND",
|
||||
"x": 16,
|
||||
"y": 11,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVEN_ISLAND",
|
||||
"name": "SEVEN ISLAND",
|
||||
"x": 5,
|
||||
"y": 8,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SIX_ISLAND",
|
||||
"name": "SIX ISLAND",
|
||||
"x": 17,
|
||||
"y": 5,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_KINDLE_ROAD",
|
||||
"name": "KINDLE ROAD",
|
||||
"x": 2,
|
||||
"y": 3,
|
||||
"width": 1,
|
||||
"height": 6
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_TREASURE_BEACH",
|
||||
"name": "TREASURE BEACH",
|
||||
"x": 1,
|
||||
"y": 9,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_CAPE_BRINK",
|
||||
"name": "CAPE BRINK",
|
||||
"x": 9,
|
||||
"y": 7,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_BOND_BRIDGE",
|
||||
"name": "BOND BRIDGE",
|
||||
"x": 13,
|
||||
"y": 12,
|
||||
"width": 4,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_THREE_ISLE_PORT",
|
||||
"name": "THREE ISLE PORT",
|
||||
"x": 18,
|
||||
"y": 13,
|
||||
"width": 2,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVII_ISLE_6",
|
||||
"name": "SEVII ISLE 6",
|
||||
"x": 4,
|
||||
"y": 3,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVII_ISLE_7",
|
||||
"name": "SEVII ISLE 7",
|
||||
"x": 5,
|
||||
"y": 4,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVII_ISLE_8",
|
||||
"name": "SEVII ISLE 8",
|
||||
"x": 1,
|
||||
"y": 4,
|
||||
"width": 3,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVII_ISLE_9",
|
||||
"name": "SEVII ISLE 9",
|
||||
"x": 4,
|
||||
"y": 5,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_RESORT_GORGEOUS",
|
||||
"name": "RESORT GORGEOUS",
|
||||
"x": 16,
|
||||
"y": 9,
|
||||
"width": 3,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_WATER_LABYRINTH",
|
||||
"name": "WATER LABYRINTH",
|
||||
"x": 14,
|
||||
"y": 10,
|
||||
"width": 3,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_FIVE_ISLE_MEADOW",
|
||||
"name": "FIVE ISLE MEADOW",
|
||||
"x": 17,
|
||||
"y": 10,
|
||||
"width": 1,
|
||||
"height": 3
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_MEMORIAL_PILLAR",
|
||||
"name": "MEMORIAL PILLAR",
|
||||
"x": 18,
|
||||
"y": 12,
|
||||
"width": 1,
|
||||
"height": 3
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_OUTCAST_ISLAND",
|
||||
"name": "OUTCAST ISLAND",
|
||||
"x": 15,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 3
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_GREEN_PATH",
|
||||
"name": "GREEN PATH",
|
||||
"x": 15,
|
||||
"y": 3,
|
||||
"width": 3,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_WATER_PATH",
|
||||
"name": "WATER PATH",
|
||||
"x": 18,
|
||||
"y": 3,
|
||||
"width": 1,
|
||||
"height": 5
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_RUIN_VALLEY",
|
||||
"name": "RUIN VALLEY",
|
||||
"x": 16,
|
||||
"y": 7,
|
||||
"width": 2,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_TRAINER_TOWER",
|
||||
"name": "TRAINER TOWER",
|
||||
"x": 5,
|
||||
"y": 6,
|
||||
"width": 1,
|
||||
"height": 2
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_CANYON_ENTRANCE",
|
||||
"name": "CANYON ENTRANCE",
|
||||
"x": 5,
|
||||
"y": 9,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVAULT_CANYON",
|
||||
"name": "SEVAULT CANYON",
|
||||
"x": 6,
|
||||
"y": 9,
|
||||
"width": 1,
|
||||
"height": 3
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_TANOBY_RUINS",
|
||||
"name": "TANOBY RUINS",
|
||||
"x": 3,
|
||||
"y": 12,
|
||||
"width": 7,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVII_ISLE_22",
|
||||
"name": "SEVII ISLE 22",
|
||||
"x": 9,
|
||||
"y": 12,
|
||||
"width": 1,
|
||||
"height": 3
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVII_ISLE_23",
|
||||
"name": "SEVII ISLE 23",
|
||||
"x": 3,
|
||||
"y": 14,
|
||||
"width": 6,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SEVII_ISLE_24",
|
||||
"name": "SEVII ISLE 24",
|
||||
"x": 2,
|
||||
"y": 12,
|
||||
"width": 1,
|
||||
"height": 3
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_NAVEL_ROCK",
|
||||
"name": "NAVEL ROCK",
|
||||
"x": 10,
|
||||
"y": 8,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_MT_EMBER",
|
||||
"name": "MT. EMBER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_BERRY_FOREST",
|
||||
"name": "BERRY FOREST",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ICEFALL_CAVE",
|
||||
"name": "ICEFALL CAVE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ROCKET_WAREHOUSE",
|
||||
"name": "ROCKET WAREHOUSE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_TRAINER_TOWER_2",
|
||||
"name": "TRAINER TOWER",
|
||||
"name_clone": true,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_DOTTED_HOLE",
|
||||
"name": "DOTTED HOLE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_LOST_CAVE",
|
||||
"name": "LOST CAVE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_PATTERN_BUSH",
|
||||
"name": "PATTERN BUSH",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_ALTERING_CAVE",
|
||||
"name": "ALTERING CAVE",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_TANOBY_CHAMBERS",
|
||||
"name": "TANOBY CHAMBERS",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_THREE_ISLE_PATH",
|
||||
"name": "THREE ISLE PATH",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_TANOBY_KEY",
|
||||
"name": "TANOBY KEY",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_BIRTH_ISLAND",
|
||||
"name": "BIRTH ISLAND",
|
||||
"x": 18,
|
||||
"y": 13,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_MONEAN_CHAMBER",
|
||||
"name": "MONEAN CHAMBER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_LIPTOO_CHAMBER",
|
||||
"name": "LIPTOO CHAMBER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_WEEPTH_CHAMBER",
|
||||
"name": "WEEPTH CHAMBER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_DILFORD_CHAMBER",
|
||||
"name": "DILFORD CHAMBER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SCUFIB_CHAMBER",
|
||||
"name": "SCUFIB CHAMBER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_RIXY_CHAMBER",
|
||||
"name": "RIXY CHAMBER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_VIAPOIS_CHAMBER",
|
||||
"name": "VIAPOIS CHAMBER",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_EMBER_SPA",
|
||||
"name": "EMBER SPA",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 1,
|
||||
"height": 1
|
||||
},
|
||||
{
|
||||
"map_section": "MAPSEC_SPECIAL_AREA",
|
||||
"name": "CELADON DEPT.",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 0,
|
||||
"height": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{{ doNotModifyHeader }}
|
||||
#ifndef GUARD_DATA_REGION_MAP_REGION_MAP_ENTRY_STRINGS_H
|
||||
#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRY_STRINGS_H
|
||||
|
||||
## for map_section in map_sections
|
||||
{% if isEmptyString(getVar(map_section.name)) and not existsIn(map_section, "name_clone") %}{{ setVar(map_section.name, map_section.map_section) }}{% endif %}
|
||||
## endfor
|
||||
|
||||
## for map_section in map_sections
|
||||
{% if getVar(map_section.name) == map_section.map_section %}
|
||||
static const u8 sMapsecName_{{ cleanString(map_section.name) }}[] = _("{{ map_section.name }}");
|
||||
{% endif %}
|
||||
{% if existsIn(map_section, "name_clone") %}
|
||||
static const u8 sMapsecName_{{ cleanString(map_section.name) }}_Clone[] = _("{{ map_section.name }}");
|
||||
{% endif %}
|
||||
## endfor
|
||||
|
||||
#endif // GUARD_DATA_REGION_MAP_REGION_MAP_ENTRY_STRINGS_H
|
||||
@@ -1,109 +0,0 @@
|
||||
const u8 gMapSecName_PalletTown[] = _("PALLET TOWN");
|
||||
const u8 gMapSecName_ViridianCity[] = _("VIRIDIAN CITY");
|
||||
const u8 gMapSecName_PewterCity[] = _("PEWTER CITY");
|
||||
const u8 gMapSecName_CeruleanCity[] = _("CERULEAN CITY");
|
||||
const u8 gMapSecName_LavenderTown[] = _("LAVENDER TOWN");
|
||||
const u8 gMapSecName_VermilionCity[] = _("VERMILION CITY");
|
||||
const u8 gMapSecName_CeladonCity[] = _("CELADON CITY");
|
||||
const u8 gMapSecName_FuchsiaCity[] = _("FUCHSIA CITY");
|
||||
const u8 gMapSecName_CinnabarIsland[] = _("CINNABAR ISLAND");
|
||||
const u8 gMapSecName_IndigoPlateau[] = _("INDIGO PLATEAU");
|
||||
const u8 gMapSecName_SaffronCity[] = _("SAFFRON CITY");
|
||||
const u8 gMapSecName_Route4[] = _("ROUTE 4");
|
||||
const u8 gMapSecName_Route10[] = _("ROUTE 10");
|
||||
const u8 gMapSecName_Route1[] = _("ROUTE 1");
|
||||
const u8 gMapSecName_Route2[] = _("ROUTE 2");
|
||||
const u8 gMapSecName_Route3[] = _("ROUTE 3");
|
||||
const u8 gMapSecName_Route4_2[] = _("ROUTE 4");
|
||||
const u8 gMapSecName_Route5[] = _("ROUTE 5");
|
||||
const u8 gMapSecName_Route6[] = _("ROUTE 6");
|
||||
const u8 gMapSecName_Route7[] = _("ROUTE 7");
|
||||
const u8 gMapSecName_Route8[] = _("ROUTE 8");
|
||||
const u8 gMapSecName_Route9[] = _("ROUTE 9");
|
||||
const u8 gMapSecName_Route10_2[] = _("ROUTE 10");
|
||||
const u8 gMapSecName_Route11[] = _("ROUTE 11");
|
||||
const u8 gMapSecName_Route12[] = _("ROUTE 12");
|
||||
const u8 gMapSecName_Route13[] = _("ROUTE 13");
|
||||
const u8 gMapSecName_Route14[] = _("ROUTE 14");
|
||||
const u8 gMapSecName_Route15[] = _("ROUTE 15");
|
||||
const u8 gMapSecName_Route16[] = _("ROUTE 16");
|
||||
const u8 gMapSecName_Route17[] = _("ROUTE 17");
|
||||
const u8 gMapSecName_Route18[] = _("ROUTE 18");
|
||||
const u8 gMapSecName_Route19[] = _("ROUTE 19");
|
||||
const u8 gMapSecName_Route20[] = _("ROUTE 20");
|
||||
const u8 gMapSecName_Route21[] = _("ROUTE 21");
|
||||
const u8 gMapSecName_Route22[] = _("ROUTE 22");
|
||||
const u8 gMapSecName_Route23[] = _("ROUTE 23");
|
||||
const u8 gMapSecName_Route24[] = _("ROUTE 24");
|
||||
const u8 gMapSecName_Route25[] = _("ROUTE 25");
|
||||
const u8 gMapSecName_ViridianForest[] = _("VIRIDIAN FOREST");
|
||||
const u8 gMapSecName_MtMoon[] = _("MT. MOON");
|
||||
const u8 gMapSecName_SSAnne[] = _("S.S. ANNE");
|
||||
const u8 gMapSecName_UndergroundPath[] = _("UNDERGROUND PATH");
|
||||
const u8 gMapSecName_UndergroundPath_2[] = _("UNDERGROUND PATH");
|
||||
const u8 gMapSecName_DiglettsCave[] = _("DIGLETT'S CAVE");
|
||||
const u8 gMapSecName_VictoryRoad[] = _("VICTORY ROAD");
|
||||
const u8 gMapSecName_RocketHideout[] = _("ROCKET HIDEOUT");
|
||||
const u8 gMapSecName_SilphCo[] = _("SILPH CO.");
|
||||
const u8 gMapSecName_PokemonMansion[] = _("POKéMON MANSION");
|
||||
const u8 gMapSecName_SafariZone[] = _("SAFARI ZONE");
|
||||
const u8 gMapSecName_PokemonLeague[] = _("POKéMON LEAGUE");
|
||||
const u8 gMapSecName_RockTunnel[] = _("ROCK TUNNEL");
|
||||
const u8 gMapSecName_SeafoamIslands[] = _("SEAFOAM ISLANDS");
|
||||
const u8 gMapSecName_PokemonTower[] = _("POKéMON TOWER");
|
||||
const u8 gMapSecName_CeruleanCave[] = _("CERULEAN CAVE");
|
||||
const u8 gMapSecName_PowerPlant[] = _("POWER PLANT");
|
||||
const u8 gMapSecName_OneIsland[] = _("ONE ISLAND");
|
||||
const u8 gMapSecName_TwoIsland[] = _("TWO ISLAND");
|
||||
const u8 gMapSecName_ThreeIsland[] = _("THREE ISLAND");
|
||||
const u8 gMapSecName_FourIsland[] = _("FOUR ISLAND");
|
||||
const u8 gMapSecName_FiveIsland[] = _("FIVE ISLAND");
|
||||
const u8 gMapSecName_SevenIsland[] = _("SEVEN ISLAND");
|
||||
const u8 gMapSecName_SixIsland[] = _("SIX ISLAND");
|
||||
const u8 gMapSecName_KindleRoad[] = _("KINDLE ROAD");
|
||||
const u8 gMapSecName_TreasureBeach[] = _("TREASURE BEACH");
|
||||
const u8 gMapSecName_CapeBrink[] = _("CAPE BRINK");
|
||||
const u8 gMapSecName_BondBridge[] = _("BOND BRIDGE");
|
||||
const u8 gMapSecName_ThreeIslePort[] = _("THREE ISLE PORT");
|
||||
const u8 gMapSecName_SeviiIsle6[] = _("SEVII ISLE 6");
|
||||
const u8 gMapSecName_SeviiIsle7[] = _("SEVII ISLE 7");
|
||||
const u8 gMapSecName_SeviiIsle8[] = _("SEVII ISLE 8");
|
||||
const u8 gMapSecName_SeviiIsle9[] = _("SEVII ISLE 9");
|
||||
const u8 gMapSecName_ResortGorgeous[] = _("RESORT GORGEOUS");
|
||||
const u8 gMapSecName_WaterLabyrinth[] = _("WATER LABYRINTH");
|
||||
const u8 gMapSecName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW");
|
||||
const u8 gMapSecName_MemorialPillar[] = _("MEMORIAL PILLAR");
|
||||
const u8 gMapSecName_OutcastIsland[] = _("OUTCAST ISLAND");
|
||||
const u8 gMapSecName_GreenPath[] = _("GREEN PATH");
|
||||
const u8 gMapSecName_WaterPath[] = _("WATER PATH");
|
||||
const u8 gMapSecName_RuinValley[] = _("RUIN VALLEY");
|
||||
const u8 gMapSecName_TrainerTower[] = _("TRAINER TOWER");
|
||||
const u8 gMapSecName_CanyonEntrance[] = _("CANYON ENTRANCE");
|
||||
const u8 gMapSecName_SevaultCanyon[] = _("SEVAULT CANYON");
|
||||
const u8 gMapSecName_TanobyRuins[] = _("TANOBY RUINS");
|
||||
const u8 gMapSecName_SeviiIsle22[] = _("SEVII ISLE 22");
|
||||
const u8 gMapSecName_SeviiIsle23[] = _("SEVII ISLE 23");
|
||||
const u8 gMapSecName_SeviiIsle24[] = _("SEVII ISLE 24");
|
||||
const u8 gMapSecName_NavelRock[] = _("NAVEL ROCK");
|
||||
const u8 gMapSecName_MtEmber[] = _("MT. EMBER");
|
||||
const u8 gMapSecName_BerryForest[] = _("BERRY FOREST");
|
||||
const u8 gMapSecName_IcefallCave[] = _("ICEFALL CAVE");
|
||||
const u8 gMapSecName_RocketWarehouse[] = _("ROCKET WAREHOUSE");
|
||||
const u8 gMapSecName_TrainerTower_2[] = _("TRAINER TOWER");
|
||||
const u8 gMapSecName_DottedHole[] = _("DOTTED HOLE");
|
||||
const u8 gMapSecName_LostCave[] = _("LOST CAVE");
|
||||
const u8 gMapSecName_PatternBush[] = _("PATTERN BUSH");
|
||||
const u8 gMapSecName_AlteringCave[] = _("ALTERING CAVE");
|
||||
const u8 gMapSecName_TanobyChambers[] = _("TANOBY CHAMBERS");
|
||||
const u8 gMapSecName_ThreeIslePath[] = _("THREE ISLE PATH");
|
||||
const u8 gMapSecName_TanobyKey[] = _("TANOBY KEY");
|
||||
const u8 gMapSecName_BirthIsland[] = _("BIRTH ISLAND");
|
||||
const u8 gMapSecName_MoneanChamber[] = _("MONEAN CHAMBER");
|
||||
const u8 gMapSecName_LiptooChamber[] = _("LIPTOO CHAMBER");
|
||||
const u8 gMapSecName_WeepthChamber[] = _("WEEPTH CHAMBER");
|
||||
const u8 gMapSecName_DilfordChamber[] = _("DILFORD CHAMBER");
|
||||
const u8 gMapSecName_ScufibChamber[] = _("SCUFIB CHAMBER");
|
||||
const u8 gMapSecName_RixyChamber[] = _("RIXY CHAMBER");
|
||||
const u8 gMapSecName_ViapoisChamber[] = _("VIAPOIS CHAMBER");
|
||||
const u8 gMapSecName_EmberSpa[] = _("EMBER SPA");
|
||||
const u8 gMapSecName_CeladonDept[] = _("CELADON DEPT.");
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,748 @@
|
||||
const struct Tileset gTileset_General =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = FALSE,
|
||||
.tiles = gTilesetTiles_General,
|
||||
.palettes = gTilesetPalettes_General,
|
||||
.metatiles = gMetatiles_General,
|
||||
.metatileAttributes = gMetatileAttributes_General,
|
||||
.callback = InitTilesetAnim_General,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_PalletTown =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_PalletTown,
|
||||
.palettes = gTilesetPalettes_PalletTown,
|
||||
.metatiles = gMetatiles_PalletTown,
|
||||
.metatileAttributes = gMetatileAttributes_PalletTown,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_ViridianCity =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_ViridianCity,
|
||||
.palettes = gTilesetPalettes_ViridianCity,
|
||||
.metatiles = gMetatiles_ViridianCity,
|
||||
.metatileAttributes = gMetatileAttributes_ViridianCity,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_PewterCity =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_PewterCity,
|
||||
.palettes = gTilesetPalettes_PewterCity,
|
||||
.metatiles = gMetatiles_PewterCity,
|
||||
.metatileAttributes = gMetatileAttributes_PewterCity,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_CeruleanCity =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_CeruleanCity,
|
||||
.palettes = gTilesetPalettes_CeruleanCity,
|
||||
.metatiles = gMetatiles_CeruleanCity,
|
||||
.metatileAttributes = gMetatileAttributes_CeruleanCity,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_LavenderTown =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_LavenderTown,
|
||||
.palettes = gTilesetPalettes_LavenderTown,
|
||||
.metatiles = gMetatiles_LavenderTown,
|
||||
.metatileAttributes = gMetatileAttributes_LavenderTown,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_VermilionCity =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_VermilionCity,
|
||||
.palettes = gTilesetPalettes_VermilionCity,
|
||||
.metatiles = gMetatiles_VermilionCity,
|
||||
.metatileAttributes = gMetatileAttributes_VermilionCity,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_CeladonCity =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_CeladonCity,
|
||||
.palettes = gTilesetPalettes_CeladonCity,
|
||||
.metatiles = gMetatiles_CeladonCity,
|
||||
.metatileAttributes = gMetatileAttributes_CeladonCity,
|
||||
.callback = InitTilesetAnim_CeladonCity,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_FuchsiaCity =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_FuchsiaCity,
|
||||
.palettes = gTilesetPalettes_FuchsiaCity,
|
||||
.metatiles = gMetatiles_FuchsiaCity,
|
||||
.metatileAttributes = gMetatileAttributes_FuchsiaCity,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_CinnabarIsland =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_CinnabarIsland,
|
||||
.palettes = gTilesetPalettes_CinnabarIsland,
|
||||
.metatiles = gMetatiles_CinnabarIsland,
|
||||
.metatileAttributes = gMetatileAttributes_CinnabarIsland,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_IndigoPlateau =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_IndigoPlateau,
|
||||
.palettes = gTilesetPalettes_IndigoPlateau,
|
||||
.metatiles = gMetatiles_IndigoPlateau,
|
||||
.metatileAttributes = gMetatileAttributes_IndigoPlateau,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SaffronCity =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SaffronCity,
|
||||
.palettes = gTilesetPalettes_SaffronCity,
|
||||
.metatiles = gMetatiles_SaffronCity,
|
||||
.metatileAttributes = gMetatileAttributes_SaffronCity,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Building =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = FALSE,
|
||||
.tiles = gTilesetTiles_Building,
|
||||
.palettes = gTilesetPalettes_Building,
|
||||
.metatiles = gMetatiles_Building,
|
||||
.metatileAttributes = gMetatileAttributes_Building,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Mart =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_Mart,
|
||||
.palettes = gTilesetPalettes_Mart,
|
||||
.metatiles = gMetatiles_Mart,
|
||||
.metatileAttributes = gMetatileAttributes_Mart,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_PokemonCenter =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_PokemonCenter,
|
||||
.palettes = gTilesetPalettes_PokemonCenter,
|
||||
.metatiles = gMetatiles_PokemonCenter,
|
||||
.metatileAttributes = gMetatileAttributes_PokemonCenter,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Cave =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_Cave,
|
||||
.palettes = gTilesetPalettes_Cave,
|
||||
.metatiles = gMetatiles_Cave,
|
||||
.metatileAttributes = gMetatileAttributes_Cave,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Dummy1 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_Dummy1,
|
||||
.palettes = gTilesetPalettes_Dummy1,
|
||||
.metatiles = gMetatiles_Dummy1,
|
||||
.metatileAttributes = gMetatileAttributes_Dummy1,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Museum =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_Museum,
|
||||
.palettes = gTilesetPalettes_Museum,
|
||||
.metatiles = gMetatiles_Museum,
|
||||
.metatileAttributes = gMetatileAttributes_Museum,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_CableClub =
|
||||
{
|
||||
.isCompressed = FALSE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_CableClub,
|
||||
.palettes = gTilesetPalettes_CableClub,
|
||||
.metatiles = gMetatiles_CableClub,
|
||||
.metatileAttributes = gMetatileAttributes_CableClub,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_BikeShop =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_BikeShop,
|
||||
.palettes = gTilesetPalettes_BikeShop,
|
||||
.metatiles = gMetatiles_BikeShop,
|
||||
.metatileAttributes = gMetatileAttributes_BikeShop,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_GenericBuilding1 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_GenericBuilding1,
|
||||
.palettes = gTilesetPalettes_GenericBuilding1,
|
||||
.metatiles = gMetatiles_GenericBuilding1,
|
||||
.metatileAttributes = gMetatileAttributes_GenericBuilding1,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Lab =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_Lab,
|
||||
.palettes = gTilesetPalettes_Lab,
|
||||
.metatiles = gMetatiles_Lab,
|
||||
.metatileAttributes = gMetatileAttributes_Lab,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_FuchsiaGym =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_FuchsiaGym,
|
||||
.palettes = gTilesetPalettes_FuchsiaGym,
|
||||
.metatiles = gMetatiles_FuchsiaGym,
|
||||
.metatileAttributes = gMetatileAttributes_FuchsiaGym,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_ViridianGym =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_ViridianGym,
|
||||
.palettes = gTilesetPalettes_ViridianGym,
|
||||
.metatiles = gMetatiles_ViridianGym,
|
||||
.metatileAttributes = gMetatileAttributes_ViridianGym,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_HoennBuilding =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_HoennBuilding,
|
||||
.palettes = gTilesetPalettes_HoennBuilding,
|
||||
.metatiles = gMetatiles_HoennBuilding,
|
||||
.metatileAttributes = gMetatileAttributes_HoennBuilding,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_GameCorner =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_GameCorner,
|
||||
.palettes = gTilesetPalettes_GameCorner,
|
||||
.metatiles = gMetatiles_GameCorner,
|
||||
.metatileAttributes = gMetatileAttributes_GameCorner,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_PewterGym =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_PewterGym,
|
||||
.palettes = gTilesetPalettes_PewterGym,
|
||||
.metatiles = gMetatiles_PewterGym,
|
||||
.metatileAttributes = gMetatileAttributes_PewterGym,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_CeruleanGym =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_CeruleanGym,
|
||||
.palettes = gTilesetPalettes_CeruleanGym,
|
||||
.metatiles = gMetatiles_CeruleanGym,
|
||||
.metatileAttributes = gMetatileAttributes_CeruleanGym,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_VermilionGym =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_VermilionGym,
|
||||
.palettes = gTilesetPalettes_VermilionGym,
|
||||
.metatiles = gMetatiles_VermilionGym,
|
||||
.metatileAttributes = gMetatileAttributes_VermilionGym,
|
||||
.callback = InitTilesetAnim_VermilionGym,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_CeladonGym =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_CeladonGym,
|
||||
.palettes = gTilesetPalettes_CeladonGym,
|
||||
.metatiles = gMetatiles_CeladonGym,
|
||||
.metatileAttributes = gMetatileAttributes_CeladonGym,
|
||||
.callback = InitTilesetAnim_CeladonGym,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SaffronGym =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SaffronGym,
|
||||
.palettes = gTilesetPalettes_SaffronGym,
|
||||
.metatiles = gMetatiles_SaffronGym,
|
||||
.metatileAttributes = gMetatileAttributes_SaffronGym,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_CinnabarGym =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_CinnabarGym,
|
||||
.palettes = gTilesetPalettes_CinnabarGym,
|
||||
.metatiles = gMetatiles_CinnabarGym,
|
||||
.metatileAttributes = gMetatileAttributes_CinnabarGym,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SSAnne =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SSAnne,
|
||||
.palettes = gTilesetPalettes_SSAnne,
|
||||
.metatiles = gMetatiles_SSAnne,
|
||||
.metatileAttributes = gMetatileAttributes_SSAnne,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Dummy2 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_Dummy2,
|
||||
.palettes = gTilesetPalettes_Dummy2,
|
||||
.metatiles = gMetatiles_Dummy2,
|
||||
.metatileAttributes = gMetatileAttributes_Dummy2,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_ViridianForest =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_ViridianForest,
|
||||
.palettes = gTilesetPalettes_ViridianForest,
|
||||
.metatiles = gMetatiles_ViridianForest,
|
||||
.metatileAttributes = gMetatileAttributes_ViridianForest,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_UnusedGatehouse1 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_UnusedGatehouse1,
|
||||
.palettes = gTilesetPalettes_UnusedGatehouse1,
|
||||
.metatiles = gMetatiles_UnusedGatehouse1,
|
||||
.metatileAttributes = gMetatileAttributes_UnusedGatehouse1,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_RockTunnel =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_RockTunnel,
|
||||
.palettes = gTilesetPalettes_RockTunnel,
|
||||
.metatiles = gMetatiles_RockTunnel,
|
||||
.metatileAttributes = gMetatileAttributes_RockTunnel,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_DiglettsCave =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_DiglettsCave,
|
||||
.palettes = gTilesetPalettes_DiglettsCave,
|
||||
.metatiles = gMetatiles_DiglettsCave,
|
||||
.metatileAttributes = gMetatileAttributes_DiglettsCave,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SeafoamIslands =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SeafoamIslands,
|
||||
.palettes = gTilesetPalettes_SeafoamIslands,
|
||||
.metatiles = gMetatiles_SeafoamIslands,
|
||||
.metatileAttributes = gMetatileAttributes_SeafoamIslands,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_UnusedGatehouse2 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_UnusedGatehouse2,
|
||||
.palettes = gTilesetPalettes_UnusedGatehouse2,
|
||||
.metatiles = gMetatiles_UnusedGatehouse2,
|
||||
.metatileAttributes = gMetatileAttributes_UnusedGatehouse2,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_CeruleanCave =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_CeruleanCave,
|
||||
.palettes = gTilesetPalettes_CeruleanCave,
|
||||
.metatiles = gMetatiles_CeruleanCave,
|
||||
.metatileAttributes = gMetatileAttributes_CeruleanCave,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_DepartmentStore =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_DepartmentStore,
|
||||
.palettes = gTilesetPalettes_DepartmentStore,
|
||||
.metatiles = gMetatiles_DepartmentStore,
|
||||
.metatileAttributes = gMetatileAttributes_DepartmentStore,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_GenericBuilding2 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_GenericBuilding2,
|
||||
.palettes = gTilesetPalettes_GenericBuilding2,
|
||||
.metatiles = gMetatiles_GenericBuilding2,
|
||||
.metatileAttributes = gMetatileAttributes_GenericBuilding2,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_PowerPlant =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_PowerPlant,
|
||||
.palettes = gTilesetPalettes_PowerPlant,
|
||||
.metatiles = gMetatiles_PowerPlant,
|
||||
.metatileAttributes = gMetatileAttributes_PowerPlant,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SeaCottage =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SeaCottage,
|
||||
.palettes = gTilesetPalettes_SeaCottage,
|
||||
.metatiles = gMetatiles_SeaCottage,
|
||||
.metatileAttributes = gMetatileAttributes_SeaCottage,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SilphCo =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SilphCo,
|
||||
.palettes = gTilesetPalettes_SilphCo,
|
||||
.metatiles = gMetatiles_SilphCo,
|
||||
.metatileAttributes = gMetatileAttributes_SilphCo,
|
||||
.callback = InitTilesetAnim_SilphCo,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_UndergroundPath =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_UndergroundPath,
|
||||
.palettes = gTilesetPalettes_UndergroundPath,
|
||||
.metatiles = gMetatiles_UndergroundPath,
|
||||
.metatileAttributes = gMetatileAttributes_UndergroundPath,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_PokemonTower =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_PokemonTower,
|
||||
.palettes = gTilesetPalettes_PokemonTower,
|
||||
.metatiles = gMetatiles_PokemonTower,
|
||||
.metatileAttributes = gMetatileAttributes_PokemonTower,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SafariZoneBuilding =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SafariZoneBuilding,
|
||||
.palettes = gTilesetPalettes_SafariZoneBuilding,
|
||||
.metatiles = gMetatiles_SafariZoneBuilding,
|
||||
.metatileAttributes = gMetatileAttributes_SafariZoneBuilding,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_PokemonMansion =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_PokemonMansion,
|
||||
.palettes = gTilesetPalettes_PokemonMansion,
|
||||
.metatiles = gMetatiles_PokemonMansion,
|
||||
.metatileAttributes = gMetatileAttributes_PokemonMansion,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_RestaurantHotel =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_RestaurantHotel,
|
||||
.palettes = gTilesetPalettes_RestaurantHotel,
|
||||
.metatiles = gMetatiles_RestaurantHotel,
|
||||
.metatileAttributes = gMetatileAttributes_RestaurantHotel,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_School =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_School,
|
||||
.palettes = gTilesetPalettes_School,
|
||||
.metatiles = gMetatiles_School,
|
||||
.metatileAttributes = gMetatileAttributes_School,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_FanClubDaycare =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_FanClubDaycare,
|
||||
.palettes = gTilesetPalettes_FanClubDaycare,
|
||||
.metatiles = gMetatiles_FanClubDaycare,
|
||||
.metatileAttributes = gMetatileAttributes_FanClubDaycare,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Condominiums =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SilphCo,
|
||||
.palettes = gTilesetPalettes_SilphCo,
|
||||
.metatiles = gMetatiles_Condominiums,
|
||||
.metatileAttributes = gMetatileAttributes_Condominiums,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_BurgledHouse =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_BurgledHouse,
|
||||
.palettes = gTilesetPalettes_BurgledHouse,
|
||||
.metatiles = gMetatiles_BurgledHouse,
|
||||
.metatileAttributes = gMetatileAttributes_BurgledHouse,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Dummy3 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_Dummy3,
|
||||
.palettes = gTilesetPalettes_Dummy3,
|
||||
.metatiles = gMetatiles_Dummy3,
|
||||
.metatileAttributes = gMetatileAttributes_Dummy3,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_Dummy4 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_Dummy4,
|
||||
.palettes = gTilesetPalettes_Dummy4,
|
||||
.metatiles = gMetatiles_Dummy4,
|
||||
.metatileAttributes = gMetatileAttributes_Dummy4,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_MtEmber =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_MtEmber,
|
||||
.palettes = gTilesetPalettes_MtEmber,
|
||||
.metatiles = gMetatiles_MtEmber,
|
||||
.metatileAttributes = gMetatileAttributes_MtEmber,
|
||||
.callback = InitTilesetAnim_MtEmber,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_BerryForest =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_BerryForest,
|
||||
.palettes = gTilesetPalettes_BerryForest,
|
||||
.metatiles = gMetatiles_BerryForest,
|
||||
.metatileAttributes = gMetatileAttributes_BerryForest,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_NavelRock =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_NavelRock,
|
||||
.palettes = gTilesetPalettes_NavelRock,
|
||||
.metatiles = gMetatiles_NavelRock,
|
||||
.metatileAttributes = gMetatileAttributes_NavelRock,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_TanobyRuins =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_TanobyRuins,
|
||||
.palettes = gTilesetPalettes_TanobyRuins,
|
||||
.metatiles = gMetatiles_TanobyRuins,
|
||||
.metatileAttributes = gMetatileAttributes_TanobyRuins,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SeviiIslands123 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SeviiIslands123,
|
||||
.palettes = gTilesetPalettes_SeviiIslands123,
|
||||
.metatiles = gMetatiles_SeviiIslands123,
|
||||
.metatileAttributes = gMetatileAttributes_SeviiIslands123,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SeviiIslands45 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SeviiIslands45,
|
||||
.palettes = gTilesetPalettes_SeviiIslands45,
|
||||
.metatiles = gMetatiles_SeviiIslands45,
|
||||
.metatileAttributes = gMetatileAttributes_SeviiIslands45,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_SeviiIslands67 =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_SeviiIslands67,
|
||||
.palettes = gTilesetPalettes_SeviiIslands67,
|
||||
.metatiles = gMetatiles_SeviiIslands67,
|
||||
.metatileAttributes = gMetatileAttributes_SeviiIslands67,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_TrainerTower =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_TrainerTower,
|
||||
.palettes = gTilesetPalettes_TrainerTower,
|
||||
.metatiles = gMetatiles_TrainerTower,
|
||||
.metatileAttributes = gMetatileAttributes_TrainerTower,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_IslandHarbor =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_IslandHarbor,
|
||||
.palettes = gTilesetPalettes_IslandHarbor,
|
||||
.metatiles = gMetatiles_IslandHarbor,
|
||||
.metatileAttributes = gMetatileAttributes_IslandHarbor,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_PokemonLeague =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_PokemonLeague,
|
||||
.palettes = gTilesetPalettes_PokemonLeague,
|
||||
.metatiles = gMetatiles_PokemonLeague,
|
||||
.metatileAttributes = gMetatileAttributes_PokemonLeague,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
const struct Tileset gTileset_HallOfFame =
|
||||
{
|
||||
.isCompressed = TRUE,
|
||||
.isSecondary = TRUE,
|
||||
.tiles = gTilesetTiles_HallOfFame,
|
||||
.palettes = gTilesetPalettes_HallOfFame,
|
||||
.metatiles = gMetatiles_HallOfFame,
|
||||
.metatileAttributes = gMetatileAttributes_HallOfFame,
|
||||
.callback = NULL,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
const u16 gMetatiles_General[] = INCBIN_U16("data/tilesets/primary/general/metatiles.bin");
|
||||
const u32 gMetatileAttributes_General[] = INCBIN_U32("data/tilesets/primary/general/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_PalletTown[] = INCBIN_U16("data/tilesets/secondary/pallet_town/metatiles.bin");
|
||||
const u32 gMetatileAttributes_PalletTown[] = INCBIN_U32("data/tilesets/secondary/pallet_town/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_ViridianCity[] = INCBIN_U16("data/tilesets/secondary/viridian_city/metatiles.bin");
|
||||
const u32 gMetatileAttributes_ViridianCity[] = INCBIN_U32("data/tilesets/secondary/viridian_city/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_PewterCity[] = INCBIN_U16("data/tilesets/secondary/pewter_city/metatiles.bin");
|
||||
const u32 gMetatileAttributes_PewterCity[] = INCBIN_U32("data/tilesets/secondary/pewter_city/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_CeruleanCity[] = INCBIN_U16("data/tilesets/secondary/cerulean_city/metatiles.bin");
|
||||
const u32 gMetatileAttributes_CeruleanCity[] = INCBIN_U32("data/tilesets/secondary/cerulean_city/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_LavenderTown[] = INCBIN_U16("data/tilesets/secondary/lavender_town/metatiles.bin");
|
||||
const u32 gMetatileAttributes_LavenderTown[] = INCBIN_U32("data/tilesets/secondary/lavender_town/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_VermilionCity[] = INCBIN_U16("data/tilesets/secondary/vermilion_city/metatiles.bin");
|
||||
const u32 gMetatileAttributes_VermilionCity[] = INCBIN_U32("data/tilesets/secondary/vermilion_city/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_CeladonCity[] = INCBIN_U16("data/tilesets/secondary/celadon_city/metatiles.bin");
|
||||
const u32 gMetatileAttributes_CeladonCity[] = INCBIN_U32("data/tilesets/secondary/celadon_city/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_FuchsiaCity[] = INCBIN_U16("data/tilesets/secondary/fuchsia_city/metatiles.bin");
|
||||
const u32 gMetatileAttributes_FuchsiaCity[] = INCBIN_U32("data/tilesets/secondary/fuchsia_city/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_CinnabarIsland[] = INCBIN_U16("data/tilesets/secondary/cinnabar_island/metatiles.bin");
|
||||
const u32 gMetatileAttributes_CinnabarIsland[] = INCBIN_U32("data/tilesets/secondary/cinnabar_island/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_IndigoPlateau[] = INCBIN_U16("data/tilesets/secondary/indigo_plateau/metatiles.bin");
|
||||
const u32 gMetatileAttributes_IndigoPlateau[] = INCBIN_U32("data/tilesets/secondary/indigo_plateau/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SaffronCity[] = INCBIN_U16("data/tilesets/secondary/saffron_city/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SaffronCity[] = INCBIN_U32("data/tilesets/secondary/saffron_city/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_PewterGym[] = INCBIN_U16("data/tilesets/secondary/pewter_gym/metatiles.bin");
|
||||
const u32 gMetatileAttributes_PewterGym[] = INCBIN_U32("data/tilesets/secondary/pewter_gym/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_CeruleanGym[] = INCBIN_U16("data/tilesets/secondary/cerulean_gym/metatiles.bin");
|
||||
const u32 gMetatileAttributes_CeruleanGym[] = INCBIN_U32("data/tilesets/secondary/cerulean_gym/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_VermilionGym[] = INCBIN_U16("data/tilesets/secondary/vermilion_gym/metatiles.bin");
|
||||
const u32 gMetatileAttributes_VermilionGym[] = INCBIN_U32("data/tilesets/secondary/vermilion_gym/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_CeladonGym[] = INCBIN_U16("data/tilesets/secondary/celadon_gym/metatiles.bin");
|
||||
const u32 gMetatileAttributes_CeladonGym[] = INCBIN_U32("data/tilesets/secondary/celadon_gym/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_FuchsiaGym[] = INCBIN_U16("data/tilesets/secondary/fuchsia_gym/metatiles.bin");
|
||||
const u32 gMetatileAttributes_FuchsiaGym[] = INCBIN_U32("data/tilesets/secondary/fuchsia_gym/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SaffronGym[] = INCBIN_U16("data/tilesets/secondary/saffron_gym/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SaffronGym[] = INCBIN_U32("data/tilesets/secondary/saffron_gym/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_CinnabarGym[] = INCBIN_U16("data/tilesets/secondary/cinnabar_gym/metatiles.bin");
|
||||
const u32 gMetatileAttributes_CinnabarGym[] = INCBIN_U32("data/tilesets/secondary/cinnabar_gym/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_ViridianGym[] = INCBIN_U16("data/tilesets/secondary/viridian_gym/metatiles.bin");
|
||||
const u32 gMetatileAttributes_ViridianGym[] = INCBIN_U32("data/tilesets/secondary/viridian_gym/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Building[] = INCBIN_U16("data/tilesets/primary/building/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Building[] = INCBIN_U32("data/tilesets/primary/building/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Dummy1[] = INCBIN_U16("data/tilesets/secondary/dummy_1/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Dummy1[] = INCBIN_U32("data/tilesets/secondary/dummy_1/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_HoennBuilding[] = INCBIN_U16("data/tilesets/secondary/hoenn_building/metatiles.bin");
|
||||
const u32 gMetatileAttributes_HoennBuilding[] = INCBIN_U32("data/tilesets/secondary/hoenn_building/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_BikeShop[] = INCBIN_U16("data/tilesets/secondary/bike_shop/metatiles.bin");
|
||||
const u32 gMetatileAttributes_BikeShop[] = INCBIN_U32("data/tilesets/secondary/bike_shop/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Mart[] = INCBIN_U16("data/tilesets/secondary/mart/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Mart[] = INCBIN_U32("data/tilesets/secondary/mart/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_PokemonCenter[] = INCBIN_U16("data/tilesets/secondary/pokemon_center/metatiles.bin");
|
||||
const u32 gMetatileAttributes_PokemonCenter[] = INCBIN_U32("data/tilesets/secondary/pokemon_center/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_GenericBuilding1[] = INCBIN_U16("data/tilesets/secondary/generic_building_1/metatiles.bin");
|
||||
const u32 gMetatileAttributes_GenericBuilding1[] = INCBIN_U32("data/tilesets/secondary/generic_building_1/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Cave[] = INCBIN_U16("data/tilesets/secondary/cave/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Cave[] = INCBIN_U32("data/tilesets/secondary/cave/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_GameCorner[] = INCBIN_U16("data/tilesets/secondary/game_corner/metatiles.bin");
|
||||
const u32 gMetatileAttributes_GameCorner[] = INCBIN_U32("data/tilesets/secondary/game_corner/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Lab[] = INCBIN_U16("data/tilesets/secondary/lab/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Lab[] = INCBIN_U32("data/tilesets/secondary/lab/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SSAnne[] = INCBIN_U16("data/tilesets/secondary/ss_anne/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SSAnne[] = INCBIN_U32("data/tilesets/secondary/ss_anne/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Dummy2[] = INCBIN_U16("data/tilesets/secondary/dummy_2/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Dummy2[] = INCBIN_U32("data/tilesets/secondary/dummy_2/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_ViridianForest[] = INCBIN_U16("data/tilesets/secondary/viridian_forest/metatiles.bin");
|
||||
const u32 gMetatileAttributes_ViridianForest[] = INCBIN_U32("data/tilesets/secondary/viridian_forest/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_UnusedGatehouse1[] = INCBIN_U16("data/tilesets/secondary/unused_gatehouse_1/metatiles.bin");
|
||||
const u32 gMetatileAttributes_UnusedGatehouse1[] = INCBIN_U32("data/tilesets/secondary/unused_gatehouse_1/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_RockTunnel[] = INCBIN_U16("data/tilesets/secondary/rock_tunnel/metatiles.bin");
|
||||
const u32 gMetatileAttributes_RockTunnel[] = INCBIN_U32("data/tilesets/secondary/rock_tunnel/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_DiglettsCave[] = INCBIN_U16("data/tilesets/secondary/digletts_cave/metatiles.bin");
|
||||
const u32 gMetatileAttributes_DiglettsCave[] = INCBIN_U32("data/tilesets/secondary/digletts_cave/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SeafoamIslands[] = INCBIN_U16("data/tilesets/secondary/seafoam_islands/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SeafoamIslands[] = INCBIN_U32("data/tilesets/secondary/seafoam_islands/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_UnusedGatehouse2[] = INCBIN_U16("data/tilesets/secondary/unused_gatehouse_2/metatiles.bin");
|
||||
const u32 gMetatileAttributes_UnusedGatehouse2[] = INCBIN_U32("data/tilesets/secondary/unused_gatehouse_2/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_CeruleanCave[] = INCBIN_U16("data/tilesets/secondary/cerulean_cave/metatiles.bin");
|
||||
const u32 gMetatileAttributes_CeruleanCave[] = INCBIN_U32("data/tilesets/secondary/cerulean_cave/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_DepartmentStore[] = INCBIN_U16("data/tilesets/secondary/department_store/metatiles.bin");
|
||||
const u32 gMetatileAttributes_DepartmentStore[] = INCBIN_U32("data/tilesets/secondary/department_store/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_GenericBuilding2[] = INCBIN_U16("data/tilesets/secondary/generic_building_2/metatiles.bin");
|
||||
const u32 gMetatileAttributes_GenericBuilding2[] = INCBIN_U32("data/tilesets/secondary/generic_building_2/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_PowerPlant[] = INCBIN_U16("data/tilesets/secondary/power_plant/metatiles.bin");
|
||||
const u32 gMetatileAttributes_PowerPlant[] = INCBIN_U32("data/tilesets/secondary/power_plant/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SeaCottage[] = INCBIN_U16("data/tilesets/secondary/sea_cottage/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SeaCottage[] = INCBIN_U32("data/tilesets/secondary/sea_cottage/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SilphCo[] = INCBIN_U16("data/tilesets/secondary/silph_co/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SilphCo[] = INCBIN_U32("data/tilesets/secondary/silph_co/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_UndergroundPath[] = INCBIN_U16("data/tilesets/secondary/underground_path/metatiles.bin");
|
||||
const u32 gMetatileAttributes_UndergroundPath[] = INCBIN_U32("data/tilesets/secondary/underground_path/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_PokemonTower[] = INCBIN_U16("data/tilesets/secondary/pokemon_tower/metatiles.bin");
|
||||
const u32 gMetatileAttributes_PokemonTower[] = INCBIN_U32("data/tilesets/secondary/pokemon_tower/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SafariZoneBuilding[] = INCBIN_U16("data/tilesets/secondary/safari_zone_building/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SafariZoneBuilding[] = INCBIN_U32("data/tilesets/secondary/safari_zone_building/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_PokemonMansion[] = INCBIN_U16("data/tilesets/secondary/pokemon_mansion/metatiles.bin");
|
||||
const u32 gMetatileAttributes_PokemonMansion[] = INCBIN_U32("data/tilesets/secondary/pokemon_mansion/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Museum[] = INCBIN_U16("data/tilesets/secondary/museum/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Museum[] = INCBIN_U32("data/tilesets/secondary/museum/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_CableClub[] = INCBIN_U16("data/tilesets/secondary/cable_club/metatiles.bin");
|
||||
const u32 gMetatileAttributes_CableClub[] = INCBIN_U32("data/tilesets/secondary/cable_club/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_RestaurantHotel[] = INCBIN_U16("data/tilesets/secondary/restaurant_hotel/metatiles.bin");
|
||||
const u32 gMetatileAttributes_RestaurantHotel[] = INCBIN_U32("data/tilesets/secondary/restaurant_hotel/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_School[] = INCBIN_U16("data/tilesets/secondary/school/metatiles.bin");
|
||||
const u32 gMetatileAttributes_School[] = INCBIN_U32("data/tilesets/secondary/school/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_FanClubDaycare[] = INCBIN_U16("data/tilesets/secondary/fan_club_daycare/metatiles.bin");
|
||||
const u32 gMetatileAttributes_FanClubDaycare[] = INCBIN_U32("data/tilesets/secondary/fan_club_daycare/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Condominiums[] = INCBIN_U16("data/tilesets/secondary/condominiums/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Condominiums[] = INCBIN_U32("data/tilesets/secondary/condominiums/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_BurgledHouse[] = INCBIN_U16("data/tilesets/secondary/burgled_house/metatiles.bin");
|
||||
const u32 gMetatileAttributes_BurgledHouse[] = INCBIN_U32("data/tilesets/secondary/burgled_house/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Dummy3[] = INCBIN_U16("data/tilesets/secondary/dummy_3/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Dummy3[] = INCBIN_U32("data/tilesets/secondary/dummy_3/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_Dummy4[] = INCBIN_U16("data/tilesets/secondary/dummy_4/metatiles.bin");
|
||||
const u32 gMetatileAttributes_Dummy4[] = INCBIN_U32("data/tilesets/secondary/dummy_4/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_MtEmber[] = INCBIN_U16("data/tilesets/secondary/mt_ember/metatiles.bin");
|
||||
const u32 gMetatileAttributes_MtEmber[] = INCBIN_U32("data/tilesets/secondary/mt_ember/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_BerryForest[] = INCBIN_U16("data/tilesets/secondary/berry_forest/metatiles.bin");
|
||||
const u32 gMetatileAttributes_BerryForest[] = INCBIN_U32("data/tilesets/secondary/berry_forest/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_NavelRock[] = INCBIN_U16("data/tilesets/secondary/navel_rock/metatiles.bin");
|
||||
const u32 gMetatileAttributes_NavelRock[] = INCBIN_U32("data/tilesets/secondary/navel_rock/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_TanobyRuins[] = INCBIN_U16("data/tilesets/secondary/tanoby_ruins/metatiles.bin");
|
||||
const u32 gMetatileAttributes_TanobyRuins[] = INCBIN_U32("data/tilesets/secondary/tanoby_ruins/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SeviiIslands123[] = INCBIN_U16("data/tilesets/secondary/sevii_islands_123/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SeviiIslands123[] = INCBIN_U32("data/tilesets/secondary/sevii_islands_123/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SeviiIslands45[] = INCBIN_U16("data/tilesets/secondary/sevii_islands_45/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SeviiIslands45[] = INCBIN_U32("data/tilesets/secondary/sevii_islands_45/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_SeviiIslands67[] = INCBIN_U16("data/tilesets/secondary/sevii_islands_67/metatiles.bin");
|
||||
const u32 gMetatileAttributes_SeviiIslands67[] = INCBIN_U32("data/tilesets/secondary/sevii_islands_67/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_TrainerTower[] = INCBIN_U16("data/tilesets/secondary/trainer_tower/metatiles.bin");
|
||||
const u32 gMetatileAttributes_TrainerTower[] = INCBIN_U32("data/tilesets/secondary/trainer_tower/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_IslandHarbor[] = INCBIN_U16("data/tilesets/secondary/island_harbor/metatiles.bin");
|
||||
const u32 gMetatileAttributes_IslandHarbor[] = INCBIN_U32("data/tilesets/secondary/island_harbor/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_PokemonLeague[] = INCBIN_U16("data/tilesets/secondary/pokemon_league/metatiles.bin");
|
||||
const u32 gMetatileAttributes_PokemonLeague[] = INCBIN_U32("data/tilesets/secondary/pokemon_league/metatile_attributes.bin");
|
||||
|
||||
const u16 gMetatiles_HallOfFame[] = INCBIN_U16("data/tilesets/secondary/hall_of_fame/metatiles.bin");
|
||||
const u32 gMetatileAttributes_HallOfFame[] = INCBIN_U32("data/tilesets/secondary/hall_of_fame/metatile_attributes.bin");
|
||||
@@ -1,10 +1,10 @@
|
||||
const struct MonCoords gTrainerBackPicCoords[] = {
|
||||
{.size = 8, .y_offset = 5},
|
||||
{.size = 8, .y_offset = 5},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4},
|
||||
{.size = 8, .y_offset = 4}
|
||||
[TRAINER_BACK_PIC_RED] = {.size = 8, .y_offset = 5},
|
||||
[TRAINER_BACK_PIC_LEAF] = {.size = 8, .y_offset = 5},
|
||||
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {.size = 8, .y_offset = 4},
|
||||
[TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {.size = 8, .y_offset = 4},
|
||||
[TRAINER_BACK_PIC_POKEDUDE] = {.size = 8, .y_offset = 4},
|
||||
[TRAINER_BACK_PIC_OLD_MAN] = {.size = 8, .y_offset = 4}
|
||||
};
|
||||
|
||||
const struct CompressedSpriteSheet gTrainerBackPicTable[] = {
|
||||
|
||||
@@ -24,8 +24,11 @@
|
||||
|
||||
|
||||
## for encounter in wild_encounter_group.encounters
|
||||
{% if contains(encounter.base_label, "LeafGreen") %}#ifdef LEAFGREEN
|
||||
{% else if contains(encounter.base_label, "FireRed") %}#ifdef FIRERED{% endif %}
|
||||
{% if contains(encounter.base_label, "LeafGreen") %}
|
||||
#ifdef LEAFGREEN
|
||||
{% else if contains(encounter.base_label, "FireRed") %}
|
||||
#ifdef FIRERED
|
||||
{% endif %}
|
||||
{% if existsIn(encounter, "land_mons") %}
|
||||
const struct WildPokemon {{ encounter.base_label }}_LandMons[] =
|
||||
{
|
||||
@@ -66,15 +69,20 @@ const struct WildPokemon {{ encounter.base_label }}_FishingMons[] =
|
||||
|
||||
const struct WildPokemonInfo {{ encounter.base_label }}_FishingMonsInfo = { {{encounter.fishing_mons.encounter_rate}}, {{ encounter.base_label }}_FishingMons };
|
||||
{% endif %}
|
||||
{% if contains(encounter.base_label, "FireRed") or contains(encounter.base_label, "LeafGreen") %}#endif{% endif %}
|
||||
{% if contains(encounter.base_label, "FireRed") or contains(encounter.base_label, "LeafGreen") %}
|
||||
#endif
|
||||
{% endif %}
|
||||
|
||||
## endfor
|
||||
|
||||
const struct WildPokemonHeader {{ wild_encounter_group.label }}[] =
|
||||
{
|
||||
## for encounter in wild_encounter_group.encounters
|
||||
{% if contains(encounter.base_label, "LeafGreen") %}#ifdef LEAFGREEN
|
||||
{% else if contains(encounter.base_label, "FireRed") %}#ifdef FIRERED{% endif %}
|
||||
{% if contains(encounter.base_label, "LeafGreen") %}
|
||||
#ifdef LEAFGREEN
|
||||
{% else if contains(encounter.base_label, "FireRed") %}
|
||||
#ifdef FIRERED
|
||||
{% endif %}
|
||||
{
|
||||
.mapGroup = {% if wild_encounter_group.for_maps %}MAP_GROUP({{ removePrefix(encounter.map, "MAP_") }}){% else %}0{% endif %},
|
||||
.mapNum = {% if wild_encounter_group.for_maps %}MAP_NUM({{ removePrefix(encounter.map, "MAP_") }}){% else %}{{ loop.index1 }}{% endif %},
|
||||
@@ -83,7 +91,9 @@ const struct WildPokemonHeader {{ wild_encounter_group.label }}[] =
|
||||
.rockSmashMonsInfo = {% if existsIn(encounter, "rock_smash_mons") %}&{{ encounter.base_label }}_RockSmashMonsInfo{% else %}NULL{% endif %},
|
||||
.fishingMonsInfo = {% if existsIn(encounter, "fishing_mons") %}&{{ encounter.base_label }}_FishingMonsInfo{% else %}NULL{% endif %},
|
||||
},
|
||||
{% if contains(encounter.base_label, "FireRed") or contains(encounter.base_label, "LeafGreen") %}#endif{% endif %}
|
||||
{% if contains(encounter.base_label, "FireRed") or contains(encounter.base_label, "LeafGreen") %}
|
||||
#endif
|
||||
{% endif %}
|
||||
## endfor
|
||||
{
|
||||
.mapGroup = MAP_GROUP(UNDEFINED),
|
||||
|
||||
+6
-6
@@ -141,7 +141,7 @@ static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
|
||||
static const struct OamData sOamData_EggHatch =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = 0,
|
||||
.mosaic = FALSE,
|
||||
.bpp = 0,
|
||||
@@ -221,7 +221,7 @@ static const struct SpriteTemplate sSpriteTemplate_EggHatch =
|
||||
static const struct OamData sOamData_EggShard =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = 0,
|
||||
.mosaic = FALSE,
|
||||
.bpp = 0,
|
||||
@@ -1515,7 +1515,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
|
||||
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
|
||||
RemoveWindow(gTasks[taskId].tWindowId);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
ScriptContext_Enable();
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1524,7 +1524,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
|
||||
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
|
||||
RemoveWindow(gTasks[taskId].tWindowId);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
ScriptContext_Enable();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1756,7 +1756,7 @@ static void VBlankCB_EggHatch(void)
|
||||
|
||||
void EggHatch(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
CreateTask(Task_EggHatch, 10);
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, 0);
|
||||
HelpSystem_Disable();
|
||||
@@ -1956,7 +1956,7 @@ static void CB2_EggHatch_1(void)
|
||||
case 9:
|
||||
if (!IsTextPrinterActive(sEggHatchData->windowId))
|
||||
{
|
||||
LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0);
|
||||
LoadUserWindowGfx2(sEggHatchData->windowId, 0x140, 0xE0);
|
||||
CreateYesNoMenu(&sYesNoWinTemplate, FONT_3, 0, 2, 0x140, 0xE, 0);
|
||||
sEggHatchData->CB2_state++;
|
||||
}
|
||||
|
||||
+1
-1
@@ -116,7 +116,7 @@ static void Unused_LZDecompressWramIndirect(const void **src, void *dest)
|
||||
LZ77UnCompWram(*src, dest);
|
||||
}
|
||||
|
||||
static void sub_800EDDC(s32 object_size, s32 object_count, u8 *src_tiles, u8 *dest_tiles)
|
||||
static void StitchObjectsOn8x8Canvas(s32 object_size, s32 object_count, u8 *src_tiles, u8 *dest_tiles)
|
||||
{
|
||||
/*
|
||||
This function appears to emulate behaviour found in the GB(C) versions regarding how the Pokemon images
|
||||
|
||||
@@ -64,9 +64,9 @@ static const u8 sTilesPerImage[4][4] =
|
||||
}
|
||||
};
|
||||
|
||||
const u16 gUnknown_8479668[] = INCBIN_U16("graphics/misc/unk_8479688.gbapal");
|
||||
const u32 gUnknown_8479688[] = INCBIN_U32("graphics/misc/unk_8479688.4bpp.lz");
|
||||
const u32 gUnknown_8479748[] = INCBIN_U32("graphics/misc/unk_8479748.4bpp.lz");
|
||||
const u16 gMinigameDigits_Pal[] = INCBIN_U16("graphics/misc/minigame_digits.gbapal");
|
||||
const u32 gMinigameDigits_Gfx[] = INCBIN_U32("graphics/misc/minigame_digits.4bpp.lz");
|
||||
static const u32 sUnusedMinigameDigits_Gfx[] = INCBIN_U32("graphics/misc/minigame_digits_unused.4bpp.lz");
|
||||
|
||||
// code
|
||||
bool32 DigitObjUtil_Init(u32 count)
|
||||
|
||||
+102
-101
@@ -12,40 +12,54 @@
|
||||
|
||||
struct Diploma
|
||||
{
|
||||
u8 state;
|
||||
u8 gfxStep;
|
||||
u8 callbackStep;
|
||||
u8 mainState;
|
||||
u8 gfxState;
|
||||
u8 initState;
|
||||
u16 tilemapBuffer[0x800];
|
||||
};
|
||||
|
||||
static EWRAM_DATA struct Diploma *gDiploma = NULL;
|
||||
enum {
|
||||
WIN_TEXT,
|
||||
WIN_COUNT
|
||||
};
|
||||
|
||||
static void DiplomaBgInit(void);
|
||||
enum {
|
||||
BG_TEXT,
|
||||
BG_DIPLOMA,
|
||||
};
|
||||
|
||||
static EWRAM_DATA struct Diploma *sDiploma = NULL;
|
||||
|
||||
static void DiplomaReset(void);
|
||||
static void DiplomaPrintText(void);
|
||||
static u8 DiplomaLoadGfx(void);
|
||||
static void DiplomaVblankHandler(void);
|
||||
static bool8 DiplomaLoadGfx(void);
|
||||
static void DiplomaInitScreen(void);
|
||||
static void CB2_Diploma(void);
|
||||
static void Task_WaitForExit(u8);
|
||||
static void Task_HandleDiplomaInput(u8);
|
||||
static void Task_DiplomaInit(u8);
|
||||
static void Task_DiplomaReturnToOverworld(u8);
|
||||
static void Task_DiplomaExit(u8);
|
||||
|
||||
static const u32 sDiplomaGfx[] = INCBIN_U32("graphics/diploma/diploma.4bpp.lz");
|
||||
static const u32 sDiplomaTilemap[] = INCBIN_U32("graphics/diploma/diploma.bin.lz");
|
||||
static const u16 sDiplomaPal[] = INCBIN_U16("graphics/diploma/diploma.gbapal");
|
||||
|
||||
static const u8 gUnknown_8415994[] = _("{HIGHLIGHT TRANSPARENT}プレイヤー");
|
||||
static const u8 gUnknown_841599D[] = _("{HIGHLIGHT TRANSPARENT}さま");
|
||||
static const u8 gUnknown_84159A3[] = _("{HIGHLIGHT TRANSPARENT}ホウエン");
|
||||
static const u8 gUnknown_84159AB[] = _("{HIGHLIGHT TRANSPARENT}ぜんこく");
|
||||
static const u8 gUnknown_84159B3[] = _("{HIGHLIGHT TRANSPARENT} ポケモンずかんを\nみごと かんせい させた\nいだいなこうせきを たたえ\nここに しょうめい します");
|
||||
static const u8 gUnknown_84159ED[] = _("{COLOR DARK_GRAY}{HIGHLIGHT TRANSPARENT}ゲームフリーク");
|
||||
static const u8 gUnknown_84159FB[] = _("{COLOR DARK_GRAY}{HIGHLIGHT TRANSPARENT}");
|
||||
// Leftover text from RSE (some of which is also unused there)
|
||||
static const u8 sText_Player[] = _("{HIGHLIGHT TRANSPARENT}プレイヤー");
|
||||
static const u8 sText_Sama[] = _("{HIGHLIGHT TRANSPARENT}さま");
|
||||
static const u8 sText_Hoenn[] = _("{HIGHLIGHT TRANSPARENT}ホウエン");
|
||||
static const u8 sText_National[] = _("{HIGHLIGHT TRANSPARENT}ぜんこく");
|
||||
static const u8 sText_CertifiesPokedexComplete[] = _("{HIGHLIGHT TRANSPARENT} ポケモンずかんを\n"
|
||||
"みごと かんせい させた\n"
|
||||
"いだいなこうせきを たたえ\n"
|
||||
"ここに しょうめい します");
|
||||
static const u8 sText_GameFreak[] = _("{COLOR DARK_GRAY}{HIGHLIGHT TRANSPARENT}ゲームフリーク");
|
||||
static const u8 sText_Empty[] = _("{COLOR DARK_GRAY}{HIGHLIGHT TRANSPARENT}");
|
||||
|
||||
static const ALIGNED(4) u8 gUnknown_8415A04[3] = {0, 2, 3};
|
||||
static const ALIGNED(4) u8 sTextColors[3] = {0, 2, 3};
|
||||
|
||||
static const struct BgTemplate gUnknown_8415A08[] = {
|
||||
static const struct BgTemplate sBgTemplates[] = {
|
||||
{
|
||||
.bg = 0,
|
||||
.bg = BG_TEXT,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 31,
|
||||
.screenSize = 0,
|
||||
@@ -53,7 +67,7 @@ static const struct BgTemplate gUnknown_8415A08[] = {
|
||||
.priority = 0,
|
||||
.baseTile = 1,
|
||||
}, {
|
||||
.bg = 1,
|
||||
.bg = BG_DIPLOMA,
|
||||
.charBaseIndex = 1,
|
||||
.mapBaseIndex = 29,
|
||||
.screenSize = 1,
|
||||
@@ -63,19 +77,20 @@ static const struct BgTemplate gUnknown_8415A08[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct WindowTemplate gUnknown_8415A10[] = {
|
||||
{
|
||||
.bg = 0,
|
||||
static const struct WindowTemplate sWindowTemplates[WIN_COUNT + 1] = {
|
||||
[WIN_TEXT] = {
|
||||
.bg = BG_TEXT,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 2,
|
||||
.width = 29,
|
||||
.height = 16,
|
||||
.paletteNum = 15,
|
||||
.baseBlock = 0x000
|
||||
}, DUMMY_WIN_TEMPLATE
|
||||
},
|
||||
[WIN_COUNT] = DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
static void VCBC_DiplomaOam(void)
|
||||
static void VBlankCB_Diploma(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
@@ -84,11 +99,11 @@ static void VCBC_DiplomaOam(void)
|
||||
|
||||
void CB2_ShowDiploma(void)
|
||||
{
|
||||
gDiploma = AllocZeroed(sizeof(*gDiploma));
|
||||
gDiploma->state = 0;
|
||||
gDiploma->gfxStep = 0;
|
||||
gDiploma->callbackStep = 0;
|
||||
DiplomaBgInit();
|
||||
sDiploma = AllocZeroed(sizeof(*sDiploma));
|
||||
sDiploma->mainState = 0;
|
||||
sDiploma->gfxState = 0;
|
||||
sDiploma->initState = 0;
|
||||
DiplomaReset();
|
||||
CreateTask(Task_DiplomaInit, 0);
|
||||
SetMainCallback2(CB2_Diploma);
|
||||
}
|
||||
@@ -103,91 +118,81 @@ static void CB2_Diploma(void)
|
||||
|
||||
static void Task_DiplomaInit(u8 taskId)
|
||||
{
|
||||
switch (gDiploma->callbackStep)
|
||||
switch (sDiploma->initState)
|
||||
{
|
||||
case 0:
|
||||
SetVBlankCallback(NULL);
|
||||
break;
|
||||
case 1:
|
||||
DiplomaVblankHandler();
|
||||
DiplomaInitScreen();
|
||||
break;
|
||||
case 2:
|
||||
if (!DiplomaLoadGfx())
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
CopyToBgTilemapBuffer(1, sDiplomaTilemap, 0, 0);
|
||||
CopyToBgTilemapBuffer(BG_DIPLOMA, sDiplomaTilemap, 0, 0);
|
||||
break;
|
||||
case 4:
|
||||
if (HasAllMons())
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0x100);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
DiplomaPrintText();
|
||||
break;
|
||||
case 6:
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
CopyBgTilemapBufferToVram(BG_TEXT);
|
||||
CopyBgTilemapBufferToVram(BG_DIPLOMA);
|
||||
break;
|
||||
case 7:
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
|
||||
break;
|
||||
case 8:
|
||||
SetVBlankCallback(VCBC_DiplomaOam);
|
||||
SetVBlankCallback(VBlankCB_Diploma);
|
||||
break;
|
||||
default:
|
||||
if (gPaletteFade.active)
|
||||
{
|
||||
break;
|
||||
}
|
||||
PlayFanfareByFanfareNum(FANFARE_OBTAIN_BADGE);
|
||||
gTasks[taskId].func = Task_WaitForExit;
|
||||
gTasks[taskId].func = Task_HandleDiplomaInput;
|
||||
}
|
||||
gDiploma->callbackStep++;
|
||||
sDiploma->initState++;
|
||||
}
|
||||
|
||||
static void Task_WaitForExit(u8 taskId)
|
||||
static void Task_HandleDiplomaInput(u8 taskId)
|
||||
{
|
||||
switch (gDiploma->state)
|
||||
switch (sDiploma->mainState)
|
||||
{
|
||||
case 0:
|
||||
if (WaitFanfare(0))
|
||||
{
|
||||
gDiploma->state++;
|
||||
}
|
||||
if (WaitFanfare(FALSE))
|
||||
sDiploma->mainState++;
|
||||
break;
|
||||
case 1:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
|
||||
gDiploma->state++;
|
||||
sDiploma->mainState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
Task_DiplomaReturnToOverworld(taskId);
|
||||
Task_DiplomaExit(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_DiplomaReturnToOverworld(u8 taskId)
|
||||
static void Task_DiplomaExit(u8 taskId)
|
||||
{
|
||||
if (gPaletteFade.active)
|
||||
return;
|
||||
DestroyTask(taskId);
|
||||
FreeAllWindowBuffers();
|
||||
FREE_AND_SET_NULL(gDiploma);
|
||||
FREE_AND_SET_NULL(sDiploma);
|
||||
SetMainCallback2(CB2_ReturnToFieldFromDiploma);
|
||||
}
|
||||
|
||||
static void DiplomaBgInit(void)
|
||||
static void DiplomaReset(void)
|
||||
{
|
||||
ResetSpriteData();
|
||||
ResetPaletteFade();
|
||||
@@ -196,7 +201,7 @@ static void DiplomaBgInit(void)
|
||||
ScanlineEffect_Stop();
|
||||
}
|
||||
|
||||
static void DiplomaVblankHandler(void)
|
||||
static void DiplomaInitScreen(void)
|
||||
{
|
||||
void *vram = (void *)VRAM;
|
||||
DmaClearLarge16(3, vram, VRAM_SIZE, 0x1000);
|
||||
@@ -204,71 +209,67 @@ static void DiplomaVblankHandler(void)
|
||||
DmaClear16(3, (void *)PLTT, PLTT_SIZE);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, gUnknown_8415A08, 2);
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
ChangeBgX(1, 0, 0);
|
||||
ChangeBgY(1, 0, 0);
|
||||
ChangeBgX(2, 0, 0);
|
||||
ChangeBgY(2, 0, 0);
|
||||
ChangeBgX(3, 0, 0);
|
||||
ChangeBgY(3, 0, 0);
|
||||
InitWindows(gUnknown_8415A10);
|
||||
InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
|
||||
ChangeBgX(0, 0, BG_COORD_SET);
|
||||
ChangeBgY(0, 0, BG_COORD_SET);
|
||||
ChangeBgX(1, 0, BG_COORD_SET);
|
||||
ChangeBgY(1, 0, BG_COORD_SET);
|
||||
ChangeBgX(2, 0, BG_COORD_SET);
|
||||
ChangeBgY(2, 0, BG_COORD_SET);
|
||||
ChangeBgX(3, 0, BG_COORD_SET);
|
||||
ChangeBgY(3, 0, BG_COORD_SET);
|
||||
InitWindows(sWindowTemplates);
|
||||
DeactivateAllTextPrinters();
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
|
||||
SetBgTilemapBuffer(1, gDiploma->tilemapBuffer);
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
|
||||
FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20);
|
||||
SetBgTilemapBuffer(BG_DIPLOMA, sDiploma->tilemapBuffer);
|
||||
ShowBg(BG_TEXT);
|
||||
ShowBg(BG_DIPLOMA);
|
||||
FillBgTilemapBufferRect_Palette0(BG_TEXT, 0, 0, 0, 30, 20);
|
||||
FillBgTilemapBufferRect_Palette0(BG_DIPLOMA, 0, 0, 0, 30, 20);
|
||||
}
|
||||
|
||||
static u8 DiplomaLoadGfx(void)
|
||||
static bool8 DiplomaLoadGfx(void)
|
||||
{
|
||||
switch (gDiploma->gfxStep)
|
||||
switch (sDiploma->gfxState)
|
||||
{
|
||||
case 0:
|
||||
ResetTempTileDataBuffers();
|
||||
break;
|
||||
case 1:
|
||||
DecompressAndCopyTileDataToVram(1, sDiplomaGfx, 0, 0, 0);
|
||||
DecompressAndCopyTileDataToVram(BG_DIPLOMA, sDiplomaGfx, 0, 0, 0);
|
||||
break;
|
||||
case 2:
|
||||
if (!(FreeTempTileDataBuffersIfPossible() == 1))
|
||||
{
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
if (FreeTempTileDataBuffersIfPossible() == TRUE)
|
||||
return FALSE;
|
||||
break;
|
||||
case 3:
|
||||
LoadPalette(sDiplomaPal, 0, 0x40);
|
||||
LoadPalette(sDiplomaPal, 0, sizeof(sDiplomaPal));
|
||||
// fallthrough
|
||||
default:
|
||||
return 1;
|
||||
// Finished
|
||||
return TRUE;
|
||||
}
|
||||
gDiploma->gfxStep++;
|
||||
return 0;
|
||||
sDiploma->gfxState++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void DiplomaPrintText(void)
|
||||
{
|
||||
u8 arr[160];
|
||||
u8 str[160];
|
||||
u32 width;
|
||||
DynamicPlaceholderTextUtil_Reset();
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
|
||||
if (HasAllMons())
|
||||
{
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B68F);
|
||||
}
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gText_Diploma_National);
|
||||
else
|
||||
{
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B698);
|
||||
}
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B60E);
|
||||
width = GetStringWidth(FONT_2, arr, -1);
|
||||
AddTextPrinterParameterized3(0, FONT_2, 120 - (width / 2), 4, gUnknown_8415A04, -1, arr);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B619);
|
||||
width = GetStringWidth(FONT_2, arr, -1);
|
||||
AddTextPrinterParameterized3(0, FONT_2, 120 - (width / 2), 0x1E, gUnknown_8415A04, -1, arr);
|
||||
AddTextPrinterParameterized3(0, FONT_2, 120, 105, gUnknown_8415A04, 0, gUnknown_841B684);
|
||||
PutWindowTilemap(0);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gText_Diploma_Kanto);
|
||||
FillWindowPixelBuffer(WIN_TEXT, PIXEL_FILL(0));
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(str, gText_Diploma_Player);
|
||||
width = GetStringWidth(FONT_2, str, -1);
|
||||
AddTextPrinterParameterized3(WIN_TEXT, FONT_2, 120 - (width / 2), 4, sTextColors, TEXT_SKIP_DRAW, str);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(str, gText_Diploma_ThisDocument);
|
||||
width = GetStringWidth(FONT_2, str, -1);
|
||||
AddTextPrinterParameterized3(WIN_TEXT, FONT_2, 120 - (width / 2), 30, sTextColors, TEXT_SKIP_DRAW, str);
|
||||
AddTextPrinterParameterized3(WIN_TEXT, FONT_2, 120, 105, sTextColors, 0, gText_Diploma_GameFreak);
|
||||
PutWindowTilemap(WIN_TEXT);
|
||||
}
|
||||
|
||||
@@ -2984,7 +2984,7 @@ static void Task_ShowDodrioBerryPickingRecords(u8 taskId)
|
||||
{
|
||||
RemoveWindow(tWindowId);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
ScriptContext_Enable();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -3002,7 +3002,7 @@ static void PrintRecordsText(u8 windowId)
|
||||
recordNums[1] = gSaveBlock2Ptr->berryPick.bestScore;
|
||||
recordNums[2] = gSaveBlock2Ptr->berryPick.berriesPickedInRow;
|
||||
|
||||
TextWindow_SetStdFrame0_WithPal(windowId, 0x21D, 0xD0);
|
||||
LoadStdWindowGfx(windowId, 0x21D, 0xD0);
|
||||
DrawTextBorderOuter(windowId, 0x21D, 0xD);
|
||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
||||
AddTextPrinterParameterized(windowId, FONT_2, sRecordsTexts[0], 1, 1, TEXT_SKIP_DRAW, NULL);
|
||||
@@ -4160,13 +4160,13 @@ static void ResetBerryAndStatusBarSprites(void)
|
||||
|
||||
static void LoadWindowFrameGfx(u8 frameId)
|
||||
{
|
||||
LoadBgTiles(BG_INTERFACE, GetWindowFrameTilesPal(frameId)->tiles, 0x120, 1);
|
||||
LoadPalette(GetWindowFrameTilesPal(frameId)->palette, 0xA0, 0x20);
|
||||
LoadBgTiles(BG_INTERFACE, GetUserWindowGraphics(frameId)->tiles, 0x120, 1);
|
||||
LoadPalette(GetUserWindowGraphics(frameId)->palette, 0xA0, 0x20);
|
||||
}
|
||||
|
||||
static void LoadUserWindowFrameGfx(void)
|
||||
static void DBP_LoadStdWindowGfx(void)
|
||||
{
|
||||
TextWindow_SetStdFrame0_WithPal(0, 0xA, 0xB0);
|
||||
LoadStdWindowGfx(0, 0xA, 0xB0);
|
||||
}
|
||||
|
||||
static void ResetGfxState(void)
|
||||
@@ -4341,7 +4341,7 @@ static void LoadGfx(void)
|
||||
break;
|
||||
case 4:
|
||||
LoadWindowFrameGfx(gSaveBlock2Ptr->optionsWindowFrameType);
|
||||
LoadUserWindowFrameGfx();
|
||||
DBP_LoadStdWindowGfx();
|
||||
sGfx->state++;
|
||||
break;
|
||||
default:
|
||||
@@ -4942,7 +4942,7 @@ static bool32 LoadBgGfx(void)
|
||||
return FALSE;
|
||||
break;
|
||||
case 5:
|
||||
LoadPalette(stdpal_get(3), 0xD0, 0x20);
|
||||
LoadPalette(GetTextWindowPalette(3), 0xD0, 0x20);
|
||||
break;
|
||||
default:
|
||||
sGfx->loadState = 0;
|
||||
|
||||
+50
-50
@@ -312,98 +312,98 @@ static const struct EasyChatScreenTemplate sEasyChatScreenTemplates[] = {
|
||||
.numColumns = 2,
|
||||
.numRows = 2,
|
||||
.frameId = 0,
|
||||
.titleText = gUnknown_8418A2B,
|
||||
.instructionsText1 = gUnknown_84186D1,
|
||||
.instructionsText2 = gUnknown_84186EF,
|
||||
.confirmText1 = gUnknown_841880E,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.titleText = gText_Profile,
|
||||
.instructionsText1 = gText_CombineFourWordsOrPhrases,
|
||||
.instructionsText2 = gText_AndMakeYourProfile,
|
||||
.confirmText1 = gText_YourProfile,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_BATTLE_START,
|
||||
.numColumns = 2,
|
||||
.numRows = 3,
|
||||
.frameId = 1,
|
||||
.titleText = gUnknown_8418A33,
|
||||
.instructionsText1 = gUnknown_8418706,
|
||||
.instructionsText2 = gUnknown_8418725,
|
||||
.confirmText1 = gUnknown_841881B,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.titleText = gText_AtTheBattlesStart,
|
||||
.instructionsText1 = gText_MakeMessageSixPhrases,
|
||||
.instructionsText2 = gText_MaxTwoTwelveLetterPhrases,
|
||||
.confirmText1 = gText_YourFeelingAtTheBattlesStart,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_BATTLE_WON,
|
||||
.numColumns = 2,
|
||||
.numRows = 3,
|
||||
.frameId = 1,
|
||||
.titleText = gUnknown_8418A4A,
|
||||
.instructionsText1 = gUnknown_8418706,
|
||||
.instructionsText2 = gUnknown_8418725,
|
||||
.confirmText1 = gUnknown_841883E,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.titleText = gText_UponWinningABattle,
|
||||
.instructionsText1 = gText_MakeMessageSixPhrases,
|
||||
.instructionsText2 = gText_MaxTwoTwelveLetterPhrases,
|
||||
.confirmText1 = gText_WhatYouSayIfYouWin,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_BATTLE_LOST,
|
||||
.numColumns = 2,
|
||||
.numRows = 3,
|
||||
.frameId = 1,
|
||||
.titleText = gUnknown_8418A61,
|
||||
.instructionsText1 = gUnknown_8418706,
|
||||
.instructionsText2 = gUnknown_8418725,
|
||||
.confirmText1 = gUnknown_841885F,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.titleText = gText_UponLosingABattle,
|
||||
.instructionsText1 = gText_MakeMessageSixPhrases,
|
||||
.instructionsText2 = gText_MaxTwoTwelveLetterPhrases,
|
||||
.confirmText1 = gText_WhatYouSayIfYouLose,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_MAIL,
|
||||
.numColumns = 2,
|
||||
.numRows = 5,
|
||||
.frameId = 2,
|
||||
.titleText = NULL,
|
||||
.instructionsText1 = gUnknown_8418780,
|
||||
.instructionsText2 = gUnknown_841879E,
|
||||
.confirmText1 = gUnknown_841888C,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.instructionsText1 = gText_CombineNineWordsOrPhrases,
|
||||
.instructionsText2 = gText_AndMakeAMessage,
|
||||
.confirmText1 = gText_TheMailMessage,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_MAIL_NO_CONFIRM,
|
||||
.numColumns = 2,
|
||||
.numRows = 2,
|
||||
.frameId = 0,
|
||||
.instructionsText1 = gUnknown_8418780,
|
||||
.instructionsText2 = gUnknown_841879E,
|
||||
.instructionsText1 = gText_CombineNineWordsOrPhrases,
|
||||
.instructionsText2 = gText_AndMakeAMessage,
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_BARD_SONG,
|
||||
.numColumns = 2,
|
||||
.numRows = 3,
|
||||
.frameId = 1,
|
||||
.titleText = gUnknown_8418A77,
|
||||
.instructionsText1 = gUnknown_84187B2,
|
||||
.instructionsText2 = gUnknown_84187D1,
|
||||
.confirmText1 = gUnknown_84188AC,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.titleText = gText_TheBardsSong,
|
||||
.instructionsText1 = gText_ChangeJustOneWordOrPhrase,
|
||||
.instructionsText2 = gText_AndImproveTheBardsSong,
|
||||
.confirmText1 = gText_TheNewSong,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_INTERVIEW,
|
||||
.numColumns = 2,
|
||||
.numRows = 3,
|
||||
.frameId = 1,
|
||||
.titleText = gUnknown_8418AA1,
|
||||
.instructionsText1 = gUnknown_8418745,
|
||||
.instructionsText2 = gUnknown_8418763,
|
||||
.confirmText1 = gUnknown_8418881,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.titleText = gText_Interview,
|
||||
.instructionsText1 = gText_FindWordsThatDescribeYour,
|
||||
.instructionsText2 = gText_FeelingsRightNow,
|
||||
.confirmText1 = gText_TheAnswer,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_TRENDY_PHRASE,
|
||||
.numColumns = 2,
|
||||
.numRows = 1,
|
||||
.frameId = 3,
|
||||
.titleText = gUnknown_8418A87,
|
||||
.instructionsText1 = gUnknown_84188B9,
|
||||
.instructionsText2 = gUnknown_84188D6,
|
||||
.confirmText1 = gUnknown_84188F0,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.titleText = gText_WhatsHipAndHappening,
|
||||
.instructionsText1 = gText_CombineTwoWordsOrPhrases,
|
||||
.instructionsText2 = gText_AndMakeATrendySaying,
|
||||
.confirmText1 = gText_TheTrendySaying,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}, {
|
||||
.type = EASY_CHAT_TYPE_QUESTIONNAIRE,
|
||||
.numColumns = 2,
|
||||
.numRows = 2,
|
||||
.frameId = 0,
|
||||
.titleText = gUnknown_8418AB2,
|
||||
.instructionsText1 = gUnknown_84186D1,
|
||||
.instructionsText2 = gUnknown_84187EE,
|
||||
.confirmText1 = gUnknown_8418881,
|
||||
.confirmText2 = gUnknown_8418902
|
||||
.titleText = gText_Questionnaire,
|
||||
.instructionsText1 = gText_CombineFourWordsOrPhrases,
|
||||
.instructionsText2 = gText_AndFillOutTheQuestionnaire,
|
||||
.confirmText1 = gText_TheAnswer,
|
||||
.confirmText2 = gText_IsAsShownOkay
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1235,11 +1235,11 @@ void GetEasyChatConfirmCancelText(const u8 **str1, const u8 **str2)
|
||||
switch (sEasyChatScreen->type)
|
||||
{
|
||||
case EASY_CHAT_TYPE_MAIL:
|
||||
*str1 = gUnknown_84189EE;
|
||||
*str1 = gText_StopGivingPkmnMail;
|
||||
*str2 = NULL;
|
||||
break;
|
||||
default:
|
||||
*str1 = gUnknown_84189E0;
|
||||
*str1 = gText_QuitEditing;
|
||||
*str2 = NULL;
|
||||
break;
|
||||
}
|
||||
@@ -1248,8 +1248,8 @@ void GetEasyChatConfirmCancelText(const u8 **str1, const u8 **str2)
|
||||
|
||||
void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
|
||||
{
|
||||
*str1 = gUnknown_8418937;
|
||||
*str2 = gUnknown_8418956;
|
||||
*str1 = gText_AllTextBeingEditedWill;
|
||||
*str2 = gText_BeDeletedThatOkay;
|
||||
}
|
||||
|
||||
void GetECSelectGroupCursorCoords(u8 *Xp, u8 *Yp)
|
||||
|
||||
+6
-6
@@ -275,10 +275,10 @@ static const u8 gUnknown_843F8D8[] = _("{UNDERSCORE}");
|
||||
static const u8 sText_Clear17[] = _("{CLEAR 17}");
|
||||
|
||||
static const u8 *const sEasyChatKeyboardText[] = {
|
||||
gUnknown_847A8D8,
|
||||
gUnknown_847A8FA,
|
||||
gUnknown_847A913,
|
||||
gUnknown_847A934
|
||||
gText_EasyChatKeyboard_ABCDEFothers,
|
||||
gText_EasyChatKeyboard_GHIJKL,
|
||||
gText_EasyChatKeyboard_MNOPQRS,
|
||||
gText_EasyChatKeyboard_TUVWXYZ
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sEasyChatSpriteSheets[] = {
|
||||
@@ -1347,7 +1347,7 @@ static void EC_AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *st
|
||||
static void PrintECInstructionsText(void)
|
||||
{
|
||||
FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17);
|
||||
TextWindow_SetUserSelectedFrame(1, 1, 0xE0);
|
||||
LoadUserWindowGfx(1, 1, 0xE0);
|
||||
DrawTextBorderOuter(1, 1, 14);
|
||||
PrintECInterfaceTextById(0);
|
||||
PutWindowTilemap(1);
|
||||
@@ -2295,6 +2295,6 @@ static void CreateFooterWindow(void)
|
||||
template.baseBlock = 0x030;
|
||||
windowId = AddWindow(&template);
|
||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
||||
EC_AddTextPrinterParameterized(windowId, FONT_1, gUnknown_841EE2B, 0, 0, 0, NULL);
|
||||
EC_AddTextPrinterParameterized(windowId, FONT_1, gText_DelAllCancelOk, 0, 0, 0, NULL);
|
||||
PutWindowTilemap(windowId);
|
||||
}
|
||||
|
||||
+51
-40
@@ -5,6 +5,14 @@
|
||||
|
||||
static bool8 IsFlagOrVarStoredInQuestLog(u16 idx, u8 a1);
|
||||
|
||||
#define NUM_SPECIAL_FLAGS (SPECIAL_FLAGS_END - SPECIAL_FLAGS_START + 1)
|
||||
#define NUM_TEMP_FLAGS (TEMP_FLAGS_END - TEMP_FLAGS_START + 1)
|
||||
#define NUM_TEMP_VARS (TEMP_VARS_END - TEMP_VARS_START + 1)
|
||||
|
||||
#define SPECIAL_FLAGS_SIZE (NUM_SPECIAL_FLAGS / 8) // 8 flags per byte
|
||||
#define TEMP_FLAGS_SIZE (NUM_TEMP_FLAGS / 8)
|
||||
#define TEMP_VARS_SIZE (NUM_TEMP_VARS * 2) // 1/2 var per byte
|
||||
|
||||
EWRAM_DATA u16 gSpecialVar_0x8000 = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_0x8001 = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_0x8002 = 0;
|
||||
@@ -25,7 +33,7 @@ EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_TextColor = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_PrevTextColor = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_0x8014 = 0;
|
||||
EWRAM_DATA u8 sSpecialFlags[SPECIAL_FLAGS_COUNT] = {};
|
||||
EWRAM_DATA u8 sSpecialFlags[SPECIAL_FLAGS_SIZE] = {};
|
||||
|
||||
u16 gLastQuestLogStoredFlagOrVarIdx;
|
||||
|
||||
@@ -33,15 +41,15 @@ extern u16 *const gSpecialVars[];
|
||||
|
||||
void InitEventData(void)
|
||||
{
|
||||
memset(gSaveBlock1Ptr->flags, 0, NUM_FLAG_BYTES);
|
||||
memset(gSaveBlock1Ptr->vars, 0, VARS_COUNT * 2);
|
||||
memset(sSpecialFlags, 0, SPECIAL_FLAGS_COUNT);
|
||||
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
|
||||
memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars));
|
||||
memset(sSpecialFlags, 0, sizeof(sSpecialFlags));
|
||||
}
|
||||
|
||||
void ClearTempFieldEventData(void)
|
||||
{
|
||||
memset(gSaveBlock1Ptr->flags, 0, 4);
|
||||
memset(gSaveBlock1Ptr->vars, 0, 16 * 2);
|
||||
memset(gSaveBlock1Ptr->flags + (TEMP_FLAGS_START / 8), 0, TEMP_FLAGS_SIZE);
|
||||
memset(gSaveBlock1Ptr->vars + ((TEMP_VARS_START - VARS_START) * 2), 0, TEMP_VARS_SIZE);
|
||||
FlagClear(FLAG_SYS_WHITE_FLUTE_ACTIVE);
|
||||
FlagClear(FLAG_SYS_BLACK_FLUTE_ACTIVE);
|
||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||
@@ -49,37 +57,41 @@ void ClearTempFieldEventData(void)
|
||||
FlagClear(FLAG_SYS_INFORMED_OF_LOCAL_WIRELESS_PLAYER);
|
||||
}
|
||||
|
||||
void sub_806E168(void) // Unused
|
||||
// Unused
|
||||
static void DisableNationalPokedex_RSE(void)
|
||||
{
|
||||
u16 *ptr = GetVarPointer(VAR_0x403C);
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
|
||||
gSaveBlock2Ptr->pokedex.unused = 0;
|
||||
*ptr = 0;
|
||||
FlagClear(FLAG_0x838);
|
||||
}
|
||||
|
||||
void sub_806E190(void)
|
||||
// The magic numbers used here (0xDA and 0x0302) correspond to those
|
||||
// used in RSE for enabling the national Pokedex
|
||||
void EnableNationalPokedex_RSE(void)
|
||||
{
|
||||
// Note: the var, struct member, and flag are never used
|
||||
u16 *ptr = GetVarPointer(VAR_0x403C);
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0xDA;
|
||||
gSaveBlock2Ptr->pokedex.unused = 0xDA;
|
||||
*ptr = 0x0302;
|
||||
FlagSet(FLAG_0x838);
|
||||
}
|
||||
|
||||
bool32 sub_806E1C0(void) // Unused
|
||||
// Unused
|
||||
static bool32 IsNationalPokedexEnabled_RSE(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->pokedex.nationalMagic != 0xDA)
|
||||
return FALSE;
|
||||
if (VarGet(VAR_0x403C) != 0x0302)
|
||||
return FALSE;
|
||||
if (!FlagGet(FLAG_0x838))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
if (gSaveBlock2Ptr->pokedex.unused == 0xDA
|
||||
&& VarGet(VAR_0x403C) == 0x0302
|
||||
&& FlagGet(FLAG_0x838))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void DisableNationalPokedex(void)
|
||||
{
|
||||
u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX);
|
||||
gSaveBlock2Ptr->pokedex.unknown2 = 0;
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
|
||||
*nationalDexVar = 0;
|
||||
FlagClear(FLAG_SYS_NATIONAL_DEX);
|
||||
}
|
||||
@@ -87,20 +99,19 @@ void DisableNationalPokedex(void)
|
||||
void EnableNationalPokedex(void)
|
||||
{
|
||||
u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX);
|
||||
gSaveBlock2Ptr->pokedex.unknown2 = 0xB9;
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0xB9;
|
||||
*nationalDexVar = 0x6258;
|
||||
FlagSet(FLAG_SYS_NATIONAL_DEX);
|
||||
}
|
||||
|
||||
bool32 IsNationalPokedexEnabled(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->pokedex.unknown2 != 0xB9)
|
||||
return FALSE;
|
||||
if (VarGet(VAR_NATIONAL_DEX) != 0x6258)
|
||||
return FALSE;
|
||||
if (!FlagGet(FLAG_SYS_NATIONAL_DEX))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
if (gSaveBlock2Ptr->pokedex.nationalMagic == 0xB9
|
||||
&& VarGet(VAR_NATIONAL_DEX) == 0x6258
|
||||
&& FlagGet(FLAG_SYS_NATIONAL_DEX))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void DisableMysteryGift(void)
|
||||
@@ -141,33 +152,33 @@ void ResetMysteryEventFlags(void)
|
||||
void ResetMysteryEventVars(void)
|
||||
{
|
||||
VarSet(VAR_EVENT_PICHU_SLOT, 0);
|
||||
VarSet(VAR_0x40B6, 0);
|
||||
VarSet(VAR_0x40B7, 0);
|
||||
VarSet(VAR_0x40B8, 0);
|
||||
VarSet(VAR_0x40B9, 0);
|
||||
VarSet(VAR_0x40BA, 0);
|
||||
VarSet(VAR_0x40BB, 0);
|
||||
VarSet(VAR_0x40BC, 0);
|
||||
VarSet(VAR_MYSTERY_GIFT_1, 0);
|
||||
VarSet(VAR_MYSTERY_GIFT_2, 0);
|
||||
VarSet(VAR_MYSTERY_GIFT_3, 0);
|
||||
VarSet(VAR_MYSTERY_GIFT_4, 0);
|
||||
VarSet(VAR_MYSTERY_GIFT_5, 0);
|
||||
VarSet(VAR_MYSTERY_GIFT_6, 0);
|
||||
VarSet(VAR_MYSTERY_GIFT_7, 0);
|
||||
VarSet(VAR_ALTERING_CAVE_WILD_SET, 0);
|
||||
}
|
||||
|
||||
void DisableResetRTC(void)
|
||||
{
|
||||
VarSet(VAR_0x4032, 0);
|
||||
FlagClear(FLAG_0x837);
|
||||
VarSet(VAR_RESET_RTC_ENABLE, 0);
|
||||
FlagClear(FLAG_SYS_RESET_RTC_ENABLE);
|
||||
}
|
||||
|
||||
void EnableResetRTC(void)
|
||||
{
|
||||
VarSet(VAR_0x4032, 0x0920);
|
||||
FlagSet(FLAG_0x837);
|
||||
VarSet(VAR_RESET_RTC_ENABLE, 0x0920);
|
||||
FlagSet(FLAG_SYS_RESET_RTC_ENABLE);
|
||||
}
|
||||
|
||||
bool32 CanResetRTC(void)
|
||||
{
|
||||
if (!FlagGet(FLAG_0x837))
|
||||
if (!FlagGet(FLAG_SYS_RESET_RTC_ENABLE))
|
||||
return FALSE;
|
||||
if (VarGet(VAR_0x4032) != 0x0920)
|
||||
if (VarGet(VAR_RESET_RTC_ENABLE) != 0x0920)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+410
-452
File diff suppressed because it is too large
Load Diff
@@ -79,7 +79,7 @@ static const u16 sEvolutionSparkleMatrixScales[12] = {
|
||||
0x100
|
||||
};
|
||||
|
||||
static const s16 sUnref_841EF28[][2] = {
|
||||
static const s16 sUnused[][2] = {
|
||||
{-4, 0x10},
|
||||
{-3, 0x30},
|
||||
{-2, 0x50},
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include "task.h"
|
||||
#include "text_window.h"
|
||||
#include "trig.h"
|
||||
#include "battle_string_ids.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/pokemon.h"
|
||||
@@ -73,9 +72,9 @@ static const u16 sBgAnim_Pal[] = INCBIN_U16("graphics/evolution_scene/transition
|
||||
|
||||
static const u8 sText_ShedinjaJapaneseName[] = _("ヌケニン");
|
||||
|
||||
static const u8 unref_83F8445[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}");
|
||||
static const u8 sText_UnusedColors[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}");
|
||||
|
||||
static const u8 unref_83F844F[][10] = {
|
||||
static const u8 sText_UnusedArrows[][10] = {
|
||||
_("▶\n "),
|
||||
_(" \n▶"),
|
||||
_(" \n ")
|
||||
@@ -1332,7 +1331,7 @@ static void Task_TradeEvolutionScene(u8 taskId)
|
||||
case T_MVSTATE_PRINT_YES_NO:
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
LoadUserWindowBorderGfx(0, 0xA8, 0xE0);
|
||||
LoadUserWindowGfx2(0, 0xA8, 0xE0);
|
||||
CreateYesNoMenu(&gTradeEvolutionSceneYesNoWindowTemplate, FONT_3, 0, 2, 0xA8, 0xE, 0);
|
||||
sEvoCursorPos = 0;
|
||||
gTasks[taskId].tLearnMoveState++;
|
||||
|
||||
+3
-3
@@ -530,7 +530,7 @@ static const struct SpriteTemplate sSpriteTemplate_SelectorCursor = {
|
||||
SPRITETAG_SELECTOR_CURSOR, SPRITETAG_SELECTOR_CURSOR, &sSelectorCursorOamData, sSelectorCursorAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
};
|
||||
|
||||
static const u8 filler_845FC5C[8] = {}; // ???
|
||||
static const u8 sUnused[8] = {}; // ???
|
||||
|
||||
static const struct OamData sQuestionMarkTileOamData = {
|
||||
.shape = ST_OAM_V_RECTANGLE,
|
||||
@@ -667,7 +667,7 @@ static void MainCB2_LoadFameChecker(void)
|
||||
LoadPalette(gFameCheckerBgPals + 0x10, 0x10, 0x20);
|
||||
CopyToBgTilemapBufferRect(2, gFameCheckerBg2Tilemap, 0, 0, 32, 32);
|
||||
CopyToBgTilemapBufferRect_ChangePalette(1, sFameCheckerTilemap, 30, 0, 32, 32, 0x11);
|
||||
LoadPalette(stdpal_get(2), 0xF0, 0x20);
|
||||
LoadPalette(GetTextWindowPalette(2), 0xF0, 0x20);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
@@ -1104,7 +1104,7 @@ static bool8 CreateAllFlavorTextIcons(u8 who)
|
||||
{
|
||||
if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[who]].flavorTextFlags >> i) & 1)
|
||||
{
|
||||
sFameCheckerData->spriteIds[i] = sub_805EB44(
|
||||
sFameCheckerData->spriteIds[i] = CreateFameCheckerObject(
|
||||
sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[who] * 6 + i],
|
||||
i,
|
||||
47 * (i % 3) + 0x72,
|
||||
|
||||
+36
-36
@@ -34,7 +34,7 @@ static void CameraPanningCB_PanAhead(void);
|
||||
static struct FieldCameraOffset sFieldCameraOffset;
|
||||
static s16 sHorizontalCameraPan;
|
||||
static s16 sVerticalCameraPan;
|
||||
static u8 gUnknown_3000E9C;
|
||||
static u8 sBikeCameraPanFlag;
|
||||
static void (*sFieldCameraPanningCallback)(void);
|
||||
|
||||
struct CameraObject gFieldCamera;
|
||||
@@ -211,13 +211,13 @@ void CurrentMapDrawMetatileAt(int x, int y)
|
||||
}
|
||||
}
|
||||
|
||||
void DrawDoorMetatileAt(int x, int y, const u16 *arr)
|
||||
void DrawDoorMetatileAt(int x, int y, const u16 *tiles)
|
||||
{
|
||||
int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y);
|
||||
|
||||
if (offset >= 0)
|
||||
{
|
||||
DrawMetatile(1, arr, offset);
|
||||
DrawMetatile(1, tiles, offset);
|
||||
// sFieldCameraOffset.copyBGToVRAM = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -225,7 +225,7 @@ void DrawDoorMetatileAt(int x, int y, const u16 *arr)
|
||||
static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 offset, int x, int y)
|
||||
{
|
||||
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
u16 *metatiles;
|
||||
const u16 *metatiles;
|
||||
|
||||
if (metatileId > NUM_METATILES_TOTAL)
|
||||
metatileId = 0;
|
||||
@@ -239,16 +239,16 @@ static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 offset, int x,
|
||||
DrawMetatile(MapGridGetMetatileLayerTypeAt(x, y), metatiles + metatileId * 8, offset);
|
||||
}
|
||||
|
||||
static void DrawMetatile(s32 metatileLayerType, const u16 *metatiles, u16 offset)
|
||||
static void DrawMetatile(s32 metatileLayerType, const u16 *tiles, u16 offset)
|
||||
{
|
||||
switch (metatileLayerType)
|
||||
{
|
||||
case 2: // LAYER_TYPE_
|
||||
case METATILE_LAYER_TYPE_SPLIT:
|
||||
// Draw metatile's bottom layer to the bottom background layer.
|
||||
gBGTilemapBuffers3[offset] = metatiles[0];
|
||||
gBGTilemapBuffers3[offset + 1] = metatiles[1];
|
||||
gBGTilemapBuffers3[offset + 0x20] = metatiles[2];
|
||||
gBGTilemapBuffers3[offset + 0x21] = metatiles[3];
|
||||
gBGTilemapBuffers3[offset] = tiles[0];
|
||||
gBGTilemapBuffers3[offset + 1] = tiles[1];
|
||||
gBGTilemapBuffers3[offset + 0x20] = tiles[2];
|
||||
gBGTilemapBuffers3[offset + 0x21] = tiles[3];
|
||||
|
||||
// Draw transparent tiles to the middle background layer.
|
||||
gBGTilemapBuffers1[offset] = 0;
|
||||
@@ -257,23 +257,23 @@ static void DrawMetatile(s32 metatileLayerType, const u16 *metatiles, u16 offset
|
||||
gBGTilemapBuffers1[offset + 0x21] = 0;
|
||||
|
||||
// Draw metatile's top layer to the top background layer.
|
||||
gBGTilemapBuffers2[offset] = metatiles[4];
|
||||
gBGTilemapBuffers2[offset + 1] = metatiles[5];
|
||||
gBGTilemapBuffers2[offset + 0x20] = metatiles[6];
|
||||
gBGTilemapBuffers2[offset + 0x21] = metatiles[7];
|
||||
gBGTilemapBuffers2[offset] = tiles[4];
|
||||
gBGTilemapBuffers2[offset + 1] = tiles[5];
|
||||
gBGTilemapBuffers2[offset + 0x20] = tiles[6];
|
||||
gBGTilemapBuffers2[offset + 0x21] = tiles[7];
|
||||
break;
|
||||
case 1: // LAYER_TYPE_COVERED_BY_OBJECTS
|
||||
case METATILE_LAYER_TYPE_COVERED:
|
||||
// Draw metatile's bottom layer to the bottom background layer.
|
||||
gBGTilemapBuffers3[offset] = metatiles[0];
|
||||
gBGTilemapBuffers3[offset + 1] = metatiles[1];
|
||||
gBGTilemapBuffers3[offset + 0x20] = metatiles[2];
|
||||
gBGTilemapBuffers3[offset + 0x21] = metatiles[3];
|
||||
gBGTilemapBuffers3[offset] = tiles[0];
|
||||
gBGTilemapBuffers3[offset + 1] = tiles[1];
|
||||
gBGTilemapBuffers3[offset + 0x20] = tiles[2];
|
||||
gBGTilemapBuffers3[offset + 0x21] = tiles[3];
|
||||
|
||||
// Draw metatile's top layer to the middle background layer.
|
||||
gBGTilemapBuffers1[offset] = metatiles[4];
|
||||
gBGTilemapBuffers1[offset + 1] = metatiles[5];
|
||||
gBGTilemapBuffers1[offset + 0x20] = metatiles[6];
|
||||
gBGTilemapBuffers1[offset + 0x21] = metatiles[7];
|
||||
gBGTilemapBuffers1[offset] = tiles[4];
|
||||
gBGTilemapBuffers1[offset + 1] = tiles[5];
|
||||
gBGTilemapBuffers1[offset + 0x20] = tiles[6];
|
||||
gBGTilemapBuffers1[offset + 0x21] = tiles[7];
|
||||
|
||||
// Draw transparent tiles to the top background layer.
|
||||
gBGTilemapBuffers2[offset] = 0;
|
||||
@@ -281,7 +281,7 @@ static void DrawMetatile(s32 metatileLayerType, const u16 *metatiles, u16 offset
|
||||
gBGTilemapBuffers2[offset + 0x20] = 0;
|
||||
gBGTilemapBuffers2[offset + 0x21] = 0;
|
||||
break;
|
||||
case 0: // LAYER_TYPE_NORMAL
|
||||
case METATILE_LAYER_TYPE_NORMAL:
|
||||
// Draw garbage to the bottom background layer.
|
||||
gBGTilemapBuffers3[offset] = 0x3014;
|
||||
gBGTilemapBuffers3[offset + 1] = 0x3014;
|
||||
@@ -289,16 +289,16 @@ static void DrawMetatile(s32 metatileLayerType, const u16 *metatiles, u16 offset
|
||||
gBGTilemapBuffers3[offset + 0x21] = 0x3014;
|
||||
|
||||
// Draw metatile's bottom layer to the middle background layer.
|
||||
gBGTilemapBuffers1[offset] = metatiles[0];
|
||||
gBGTilemapBuffers1[offset + 1] = metatiles[1];
|
||||
gBGTilemapBuffers1[offset + 0x20] = metatiles[2];
|
||||
gBGTilemapBuffers1[offset + 0x21] = metatiles[3];
|
||||
gBGTilemapBuffers1[offset] = tiles[0];
|
||||
gBGTilemapBuffers1[offset + 1] = tiles[1];
|
||||
gBGTilemapBuffers1[offset + 0x20] = tiles[2];
|
||||
gBGTilemapBuffers1[offset + 0x21] = tiles[3];
|
||||
|
||||
// Draw metatile's top layer to the top background layer, which covers object event sprites.
|
||||
gBGTilemapBuffers2[offset] = metatiles[4];
|
||||
gBGTilemapBuffers2[offset + 1] = metatiles[5];
|
||||
gBGTilemapBuffers2[offset + 0x20] = metatiles[6];
|
||||
gBGTilemapBuffers2[offset + 0x21] = metatiles[7];
|
||||
gBGTilemapBuffers2[offset] = tiles[4];
|
||||
gBGTilemapBuffers2[offset + 1] = tiles[5];
|
||||
gBGTilemapBuffers2[offset + 0x20] = tiles[6];
|
||||
gBGTilemapBuffers2[offset + 0x21] = tiles[7];
|
||||
break;
|
||||
}
|
||||
ScheduleBgCopyTilemapToVram(1);
|
||||
@@ -513,7 +513,7 @@ void SetCameraPanning(s16 a, s16 b)
|
||||
void InstallCameraPanAheadCallback(void)
|
||||
{
|
||||
sFieldCameraPanningCallback = CameraPanningCB_PanAhead;
|
||||
gUnknown_3000E9C = 0;
|
||||
sBikeCameraPanFlag = FALSE;
|
||||
sHorizontalCameraPan = 0;
|
||||
sVerticalCameraPan = 32;
|
||||
}
|
||||
@@ -540,13 +540,13 @@ static void CameraPanningCB_PanAhead(void)
|
||||
// this code is never reached.
|
||||
if (gPlayerAvatar.tileTransitionState == 1)
|
||||
{
|
||||
gUnknown_3000E9C ^= 1;
|
||||
if (gUnknown_3000E9C == 0)
|
||||
sBikeCameraPanFlag ^= 1;
|
||||
if (sBikeCameraPanFlag == FALSE)
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_3000E9C = 0;
|
||||
sBikeCameraPanFlag = FALSE;
|
||||
}
|
||||
|
||||
var = GetPlayerMovementDirection();
|
||||
|
||||
+45
-45
@@ -97,7 +97,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
|
||||
u8 tileTransitionState = gPlayerAvatar.tileTransitionState;
|
||||
bool8 forcedMove = MetatileBehavior_IsForcedMovementTile(GetPlayerCurMetatileBehavior());
|
||||
|
||||
if (!ScriptContext1_IsScriptSetUp() && IsQuestLogInputDpad() == TRUE)
|
||||
if (!ScriptContext_IsEnabled() && IsQuestLogInputDpad() == TRUE)
|
||||
{
|
||||
QuestLogOverrideJoyVars(input, &newKeys, &heldKeys);
|
||||
}
|
||||
@@ -197,10 +197,10 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
|
||||
u16 metatileBehavior;
|
||||
u32 metatileAttributes;
|
||||
|
||||
ResetFacingNpcOrSignPostVars();
|
||||
ResetFacingNpcOrSignpostVars();
|
||||
playerDirection = GetPlayerFacingDirection();
|
||||
GetPlayerPosition(&position);
|
||||
metatileAttributes = MapGridGetMetatileAttributeAt(position.x, position.y, 0xFF);
|
||||
metatileAttributes = MapGridGetMetatileAttributeAt(position.x, position.y, METATILE_ATTRIBUTES_ALL);
|
||||
metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
|
||||
|
||||
FieldClearPlayerInput(&gInputToStoreInQuestLogMaybe);
|
||||
@@ -300,7 +300,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
|
||||
|
||||
void FieldInput_HandleCancelSignpost(struct FieldInput * input)
|
||||
{
|
||||
if (ScriptContext1_IsScriptSetUp() == TRUE)
|
||||
if (ScriptContext_IsEnabled() == TRUE)
|
||||
{
|
||||
if (gWalkAwayFromSignInhibitTimer != 0)
|
||||
gWalkAwayFromSignInhibitTimer--;
|
||||
@@ -318,13 +318,13 @@ void FieldInput_HandleCancelSignpost(struct FieldInput * input)
|
||||
RegisterQuestLogInput(QL_INPUT_LEFT);
|
||||
else if (input->dpadDirection == DIR_EAST)
|
||||
RegisterQuestLogInput(QL_INPUT_RIGHT);
|
||||
ScriptContext1_SetupScript(EventScript_CancelMessageBox);
|
||||
ScriptContext2_Enable();
|
||||
ScriptContext_SetupScript(EventScript_CancelMessageBox);
|
||||
LockPlayerFieldControls();
|
||||
}
|
||||
else if (input->pressedStartButton)
|
||||
{
|
||||
ScriptContext1_SetupScript(EventScript_CancelMessageBox);
|
||||
ScriptContext2_Enable();
|
||||
ScriptContext_SetupScript(EventScript_CancelMessageBox);
|
||||
LockPlayerFieldControls();
|
||||
if (!FuncIsActiveTask(Task_QuestLogPlayback_OpenStartMenu))
|
||||
CreateTask(Task_QuestLogPlayback_OpenStartMenu, 8);
|
||||
}
|
||||
@@ -334,7 +334,7 @@ void FieldInput_HandleCancelSignpost(struct FieldInput * input)
|
||||
|
||||
static void Task_QuestLogPlayback_OpenStartMenu(u8 taskId)
|
||||
{
|
||||
if (!ScriptContext2_IsEnabled())
|
||||
if (!ArePlayerFieldControlsLocked())
|
||||
{
|
||||
PlaySE(SE_WIN_OPEN);
|
||||
ShowStartMenu();
|
||||
@@ -345,7 +345,7 @@ static void Task_QuestLogPlayback_OpenStartMenu(u8 taskId)
|
||||
static void GetPlayerPosition(struct MapPosition *position)
|
||||
{
|
||||
PlayerGetDestCoords(&position->x, &position->y);
|
||||
position->height = PlayerGetZCoord();
|
||||
position->elevation = PlayerGetElevation();
|
||||
}
|
||||
|
||||
static void GetInFrontOfPlayerPosition(struct MapPosition *position)
|
||||
@@ -354,10 +354,10 @@ static void GetInFrontOfPlayerPosition(struct MapPosition *position)
|
||||
|
||||
GetXYCoordsOneStepInFrontOfPlayer(&position->x, &position->y);
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (MapGridGetZCoordAt(x, y) != 0)
|
||||
position->height = PlayerGetZCoord();
|
||||
if (MapGridGetElevationAt(x, y) != 0)
|
||||
position->elevation = PlayerGetElevation();
|
||||
else
|
||||
position->height = 0;
|
||||
position->elevation = 0;
|
||||
}
|
||||
|
||||
static u16 GetPlayerCurMetatileBehavior(void)
|
||||
@@ -379,7 +379,7 @@ static bool8 TryStartInteractionScript(struct MapPosition *position, u16 metatil
|
||||
&& script != EventScript_PC)
|
||||
PlaySE(SE_SELECT);
|
||||
|
||||
ScriptContext1_SetupScript(script);
|
||||
ScriptContext_SetupScript(script);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -410,9 +410,9 @@ const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatil
|
||||
s32 i;
|
||||
|
||||
if (!MetatileBehavior_IsCounter(MapGridGetMetatileBehaviorAt(position->x, position->y)))
|
||||
objectEventId = GetObjectEventIdByXYZ(position->x, position->y, position->height);
|
||||
objectEventId = GetObjectEventIdByPosition(position->x, position->y, position->elevation);
|
||||
else
|
||||
objectEventId = GetObjectEventIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
|
||||
objectEventId = GetObjectEventIdByPosition(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->elevation);
|
||||
|
||||
if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
|
||||
return NULL;
|
||||
@@ -434,14 +434,14 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8
|
||||
u8 objectEventId;
|
||||
const u8 *script;
|
||||
|
||||
objectEventId = GetObjectEventIdByXYZ(position->x, position->y, position->height);
|
||||
objectEventId = GetObjectEventIdByPosition(position->x, position->y, position->elevation);
|
||||
if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
|
||||
{
|
||||
if (MetatileBehavior_IsCounter(metatileBehavior) != TRUE)
|
||||
return NULL;
|
||||
|
||||
// Look for an object event on the other side of the counter.
|
||||
objectEventId = GetObjectEventIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
|
||||
objectEventId = GetObjectEventIdByPosition(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->elevation);
|
||||
if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
|
||||
return NULL;
|
||||
}
|
||||
@@ -462,7 +462,7 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8
|
||||
static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
|
||||
{
|
||||
u8 signpostType;
|
||||
const struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
|
||||
const struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
|
||||
|
||||
if (bgEvent == NULL)
|
||||
return NULL;
|
||||
@@ -507,7 +507,7 @@ static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position
|
||||
}
|
||||
|
||||
if (signpostType != SIGNPOST_NA)
|
||||
MsgSetSignPost();
|
||||
MsgSetSignpost();
|
||||
gSpecialVar_Facing = direction;
|
||||
return bgEvent->bgUnion.script;
|
||||
}
|
||||
@@ -577,22 +577,22 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me
|
||||
return CableClub_EventScript_ShowBattleRecords;
|
||||
if (MetatileBehavior_IsIndigoPlateauSign1(metatileBehavior) == TRUE)
|
||||
{
|
||||
MsgSetSignPost();
|
||||
MsgSetSignpost();
|
||||
return EventScript_Indigo_UltimateGoal;
|
||||
}
|
||||
if (MetatileBehavior_IsIndigoPlateauSign2(metatileBehavior) == TRUE)
|
||||
{
|
||||
MsgSetSignPost();
|
||||
MsgSetSignpost();
|
||||
return EventScript_Indigo_HighestAuthority;
|
||||
}
|
||||
if (MetatileBehavior_IsPlayerFacingPokeMartSign(metatileBehavior, direction) == TRUE)
|
||||
{
|
||||
MsgSetSignPost();
|
||||
MsgSetSignpost();
|
||||
return EventScript_PokemartSign;
|
||||
}
|
||||
if (MetatileBehavior_IsPlayerFacingPokemonCenterSign(metatileBehavior, direction) == TRUE)
|
||||
{
|
||||
MsgSetSignPost();
|
||||
MsgSetSignpost();
|
||||
return EventScript_PokecenterSign;
|
||||
}
|
||||
return NULL;
|
||||
@@ -632,11 +632,11 @@ static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileB
|
||||
|
||||
static bool8 TryStartCoordEventScript(struct MapPosition *position)
|
||||
{
|
||||
const u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
|
||||
const u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
|
||||
|
||||
if (script == NULL)
|
||||
return FALSE;
|
||||
ScriptContext1_SetupScript(script);
|
||||
ScriptContext_SetupScript(script);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -659,18 +659,18 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
|
||||
{
|
||||
if (UpdateVsSeekerStepCounter() == TRUE)
|
||||
{
|
||||
ScriptContext1_SetupScript(EventScript_VsSeekerChargingDone);
|
||||
ScriptContext_SetupScript(EventScript_VsSeekerChargingDone);
|
||||
return TRUE;
|
||||
}
|
||||
else if (UpdatePoisonStepCounter() == TRUE)
|
||||
{
|
||||
ScriptContext1_SetupScript(EventScript_FieldPoison);
|
||||
ScriptContext_SetupScript(EventScript_FieldPoison);
|
||||
return TRUE;
|
||||
}
|
||||
else if (ShouldEggHatch())
|
||||
{
|
||||
IncrementGameStat(GAME_STAT_HATCHED_EGGS);
|
||||
ScriptContext1_SetupScript(EventScript_EggHatch);
|
||||
ScriptContext_SetupScript(EventScript_EggHatch);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -807,14 +807,14 @@ static u8 GetFacingSignpostType(u16 metatileBehavior, u8 playerDirection)
|
||||
static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection)
|
||||
{
|
||||
gSpecialVar_Facing = playerDirection;
|
||||
ScriptContext1_SetupScript(script);
|
||||
ScriptContext_SetupScript(script);
|
||||
SetWalkingIntoSignVars();
|
||||
MsgSetSignPost();
|
||||
MsgSetSignpost();
|
||||
}
|
||||
|
||||
static const u8 *GetSignpostScriptAtMapPosition(struct MapPosition * position)
|
||||
{
|
||||
const struct BgEvent * event = GetBackgroundEventAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
|
||||
const struct BgEvent * event = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
|
||||
if (event == NULL)
|
||||
return NULL;
|
||||
if (event->bgUnion.script != NULL)
|
||||
@@ -889,7 +889,7 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB
|
||||
if (MetatileBehavior_IsFallWarp(metatileBehavior) == TRUE)
|
||||
{
|
||||
ResetInitialPlayerAvatarState();
|
||||
ScriptContext1_SetupScript(EventScript_1C1361);
|
||||
ScriptContext_SetupScript(EventScript_DoFallWarp);
|
||||
return TRUE;
|
||||
}
|
||||
DoWarp();
|
||||
@@ -959,7 +959,7 @@ static bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 direction)
|
||||
|
||||
static s8 GetWarpEventAtMapPosition(struct MapHeader *mapHeader, struct MapPosition *position)
|
||||
{
|
||||
return GetWarpEventAtPosition(mapHeader, position->x - 7, position->y - 7, position->height);
|
||||
return GetWarpEventAtPosition(mapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
|
||||
}
|
||||
|
||||
static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPosition *position)
|
||||
@@ -968,7 +968,7 @@ static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPositi
|
||||
|
||||
warpEvent = &gMapHeader.events->warps[warpEventId];
|
||||
|
||||
if (warpEvent->mapNum == MAP_NUM(NONE))
|
||||
if (warpEvent->mapNum == MAP_NUM(DYNAMIC))
|
||||
{
|
||||
SetWarpDestinationToDynamicWarp(warpEvent->warpId);
|
||||
}
|
||||
@@ -979,7 +979,7 @@ static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPositi
|
||||
SetWarpDestinationToMapWarp(warpEvent->mapGroup, warpEvent->mapNum, warpEvent->warpId);
|
||||
UpdateEscapeWarp(position->x, position->y);
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->mapGroup, warpEvent->mapNum);
|
||||
if (mapHeader->events->warps[warpEvent->warpId].mapNum == MAP_NUM(NONE))
|
||||
if (mapHeader->events->warps[warpEvent->warpId].mapNum == MAP_NUM(DYNAMIC))
|
||||
SetDynamicWarp(mapHeader->events->warps[warpEventId].warpId, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, warpEventId);
|
||||
}
|
||||
}
|
||||
@@ -1033,7 +1033,7 @@ static const u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent)
|
||||
}
|
||||
if (coordEvent->trigger == 0)
|
||||
{
|
||||
ScriptContext2_RunNewScript(coordEvent->script);
|
||||
RunScriptImmediately(coordEvent->script);
|
||||
return NULL;
|
||||
}
|
||||
if (VarGet(coordEvent->trigger) == (u8)coordEvent->index)
|
||||
@@ -1083,11 +1083,11 @@ void HandleBoulderActivateVictoryRoadSwitch(u16 x, u16 y)
|
||||
{
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
if (events[i].x + 7 == x && events[i].y + 7 == y)
|
||||
if (events[i].x + MAP_OFFSET == x && events[i].y + MAP_OFFSET == y)
|
||||
{
|
||||
QuestLog_CutRecording();
|
||||
ScriptContext1_SetupScript(events[i].script);
|
||||
ScriptContext2_Enable();
|
||||
ScriptContext_SetupScript(events[i].script);
|
||||
LockPlayerFieldControls();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1095,7 +1095,7 @@ void HandleBoulderActivateVictoryRoadSwitch(u16 x, u16 y)
|
||||
|
||||
const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position)
|
||||
{
|
||||
return GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
|
||||
return GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation);
|
||||
}
|
||||
|
||||
static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
|
||||
@@ -1119,7 +1119,7 @@ bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
|
||||
{
|
||||
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
|
||||
{
|
||||
if (SetDiveWarpEmerge(position->x - 7, position->y - 7))
|
||||
if (SetDiveWarpEmerge(position->x - MAP_OFFSET, position->y - MAP_OFFSET))
|
||||
{
|
||||
StoreInitialPlayerAvatarState();
|
||||
DoDiveWarp();
|
||||
@@ -1129,7 +1129,7 @@ bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
|
||||
}
|
||||
else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
|
||||
{
|
||||
if (SetDiveWarpDive(position->x - 7, position->y - 7))
|
||||
if (SetDiveWarpDive(position->x - MAP_OFFSET, position->y - MAP_OFFSET))
|
||||
{
|
||||
StoreInitialPlayerAvatarState();
|
||||
DoDiveWarp();
|
||||
@@ -1149,12 +1149,12 @@ static u8 TrySetDiveWarp(void)
|
||||
metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
|
||||
{
|
||||
if (SetDiveWarpEmerge(x - 7, y - 7) == TRUE)
|
||||
if (SetDiveWarpEmerge(x - MAP_OFFSET, y - MAP_OFFSET) == TRUE)
|
||||
return 1;
|
||||
}
|
||||
else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
|
||||
{
|
||||
if (SetDiveWarpDive(x - 7, y - 7) == TRUE)
|
||||
if (SetDiveWarpDive(x - MAP_OFFSET, y - MAP_OFFSET) == TRUE)
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
|
||||
+24
-26
@@ -1071,7 +1071,7 @@ static void FieldCallback_UseFly(void)
|
||||
{
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_UseFly, 0);
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
gFieldCallback = NULL;
|
||||
}
|
||||
@@ -1108,7 +1108,7 @@ static void FieldCallback_FlyIntoMap(void)
|
||||
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_WEST);
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
gFieldCallback = NULL;
|
||||
}
|
||||
@@ -1126,7 +1126,7 @@ static void Task_FlyIntoMap(u8 taskId)
|
||||
}
|
||||
if (!FieldEffectActiveListContains(FLDEFF_FLY_IN))
|
||||
{
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
UnfreezeObjectEvents();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -1156,7 +1156,7 @@ void FieldCB_FallWarpExit(void)
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
CreateTask(Task_FallWarpFieldEffect, 0);
|
||||
gFieldCallback = NULL;
|
||||
@@ -1274,7 +1274,7 @@ static bool8 FallWarpEffect_7(struct Task *task)
|
||||
{
|
||||
s16 x, y;
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
CameraObjectReset1();
|
||||
UnfreezeObjectEvents();
|
||||
InstallCameraPanAheadCallback();
|
||||
@@ -1459,7 +1459,7 @@ static void FieldCB_EscalatorWarpIn(void)
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
CreateTask(Task_EscalatorWarpInFieldEffect, 0);
|
||||
gFieldCallback = NULL;
|
||||
@@ -1576,7 +1576,7 @@ static bool8 EscalatorWarpInEffect_7(struct Task *task)
|
||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
CameraObjectReset1();
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
UnfreezeObjectEvents();
|
||||
ObjectEventSetHeldMovement(objectEvent, GetWalkNormalMovementAction(DIR_EAST));
|
||||
DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpInFieldEffect));
|
||||
@@ -1617,7 +1617,7 @@ static void Task_UseWaterfall(u8 taskId)
|
||||
|
||||
static bool8 waterfall_0_setup(struct Task *task, struct ObjectEvent * playerObj)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
task->data[0]++;
|
||||
return FALSE;
|
||||
@@ -1625,7 +1625,7 @@ static bool8 waterfall_0_setup(struct Task *task, struct ObjectEvent * playerObj
|
||||
|
||||
static bool8 waterfall_1_do_anim_probably(struct Task *task, struct ObjectEvent * playerObj)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
if (!ObjectEventIsMovementOverridden(playerObj))
|
||||
{
|
||||
ObjectEventClearHeldMovementIfFinished(playerObj);
|
||||
@@ -1660,7 +1660,7 @@ static bool8 waterfall_4_wait_player_move_probably(struct Task *task, struct Obj
|
||||
task->data[0] = 3;
|
||||
return TRUE;
|
||||
}
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
DestroyTask(FindTaskIdByFunc(Task_UseWaterfall));
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL);
|
||||
@@ -1702,7 +1702,7 @@ static bool8 DiveFieldEffect_Init(struct Task *task)
|
||||
|
||||
static bool8 DiveFieldEffect_ShowMon(struct Task *task)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gFieldEffectArguments[0] = task->data[15];
|
||||
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
|
||||
task->data[0]++;
|
||||
@@ -1869,7 +1869,7 @@ static void FieldCB_LavaridgeGymB1FWarpExit(void)
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gFieldCallback = NULL;
|
||||
CreateTask(Task_LavaridgeGymB1FWarpExit, 0);
|
||||
}
|
||||
@@ -1922,7 +1922,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task *task, struct ObjectEve
|
||||
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
|
||||
{
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
UnfreezeObjectEvents();
|
||||
DestroyTask(FindTaskIdByFunc(Task_LavaridgeGymB1FWarpExit));
|
||||
}
|
||||
@@ -1998,7 +1998,7 @@ static bool8 LavaridgeGym1FWarpEffect_2(struct Task *task, struct ObjectEvent *
|
||||
} else
|
||||
{
|
||||
task->data[1]++;
|
||||
ObjectEventSetHeldMovement(objectEvent, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection));
|
||||
ObjectEventSetHeldMovement(objectEvent, GetWalkInPlaceFasterMovementAction(objectEvent->facingDirection));
|
||||
PlaySE(SE_LAVARIDGE_FALL_WARP);
|
||||
}
|
||||
}
|
||||
@@ -2084,7 +2084,7 @@ static void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *task) =
|
||||
|
||||
void StartEscapeRopeFieldEffect(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
CreateTask(Task_EscapeRopeWarpOut, 80);
|
||||
}
|
||||
@@ -2270,7 +2270,7 @@ static void FieldCallback_EscapeRopeExit(void)
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
gFieldCallback = NULL;
|
||||
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
|
||||
@@ -2311,7 +2311,7 @@ static void EscapeRopeWarpInEffect_Spin(struct Task *task)
|
||||
{
|
||||
playerObj->invisible = FALSE;
|
||||
playerObj->fixedPriority = FALSE;
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
UnfreezeObjectEvents();
|
||||
DestroyTask(FindTaskIdByFunc(Task_EscapeRopeWarpIn));
|
||||
}
|
||||
@@ -2360,7 +2360,7 @@ static void Task_DoTeleportFieldEffect(u8 taskId)
|
||||
|
||||
static void TeleportFieldEffectTask1(struct Task *task)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
CameraObjectReset2();
|
||||
task->data[15] = GetPlayerFacingDirection();
|
||||
@@ -2447,7 +2447,7 @@ static void FieldCallback_TeleportIn(void)
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
gFieldCallback = NULL;
|
||||
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
|
||||
@@ -2528,7 +2528,7 @@ static void TeleportInFieldEffectTask3(struct Task *task)
|
||||
task->data[1] = 8;
|
||||
if ((++task->data[2]) > 4 && task->data[14] == objectEvent->facingDirection)
|
||||
{
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
CameraObjectReset1();
|
||||
UnfreezeObjectEvents();
|
||||
DestroyTask(FindTaskIdByFunc(Task_DoTeleportInFieldEffect));
|
||||
@@ -2740,9 +2740,7 @@ static void LoadFieldMoveStreaksTilemapToVram(u16 screenbase)
|
||||
u16 *dest;
|
||||
dest = (u16 *)(VRAM + (10 * 32) + screenbase);
|
||||
for (i = 0; i < (10 * 32); i++, dest++)
|
||||
{
|
||||
*dest = sFieldMoveStreaksOutdoors_Tilemap[i] | METATILE_ELEVATION_MASK;
|
||||
}
|
||||
*dest = sFieldMoveStreaksOutdoors_Tilemap[i] | 0xF000;
|
||||
}
|
||||
|
||||
static void (*const sShowMonIndoorsEffectFuncs[])(struct Task *) = {
|
||||
@@ -2997,7 +2995,7 @@ static void Task_FldEffUseSurf(u8 taskId)
|
||||
|
||||
static void UseSurfEffect_1(struct Task *task)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
|
||||
@@ -3058,7 +3056,7 @@ static void UseSurfEffect_5(struct Task *task)
|
||||
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection));
|
||||
SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_PLAYER_AND_MON);
|
||||
UnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_SURF);
|
||||
DestroyTask(FindTaskIdByFunc(Task_FldEffUseSurf));
|
||||
SetHelpContext(HELPCONTEXT_SURFING);
|
||||
@@ -3093,7 +3091,7 @@ static void Task_FldEffUseVsSeeker(u8 taskId)
|
||||
|
||||
static void UseVsSeekerEffect_1(struct Task *task)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
task->data[0]++;
|
||||
|
||||
+17
-17
@@ -331,7 +331,7 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite)
|
||||
if (sprite->animCmdIndex == 0)
|
||||
metatileBehavior = 4;
|
||||
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
UpdateGrassFieldEffectSubpriority(sprite, sprite->data[0], metatileBehavior);
|
||||
}
|
||||
}
|
||||
@@ -387,7 +387,7 @@ u32 FldEff_LongGrass(void)
|
||||
{
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]);
|
||||
sprite->oam.priority = ElevationToPriority(gFieldEffectArguments[2]);
|
||||
sprite->data[0] = gFieldEffectArguments[2];
|
||||
sprite->data[1] = gFieldEffectArguments[0];
|
||||
sprite->data[2] = gFieldEffectArguments[1];
|
||||
@@ -434,7 +434,7 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[7] = TRUE;
|
||||
}
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
UpdateGrassFieldEffectSubpriority(sprite, sprite->data[0], 0);
|
||||
}
|
||||
}
|
||||
@@ -513,7 +513,7 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 8;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
sprite->oam.priority = linkedSprite->oam.priority;
|
||||
UpdateObjectEventSpriteVisibility(sprite, linkedSprite->invisible);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, linkedSprite->invisible);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -587,14 +587,14 @@ static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite)
|
||||
if (++sprite->data[1] > 40)
|
||||
sprite->data[0] = 1;
|
||||
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
|
||||
static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible ^= 1;
|
||||
sprite->data[1]++;
|
||||
UpdateObjectEventSpriteVisibility(sprite, sprite->invisible);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, sprite->invisible);
|
||||
if (sprite->data[1] > 56)
|
||||
{
|
||||
FieldEffectStop(sprite, sprite->data[7]);
|
||||
@@ -641,7 +641,7 @@ void UpdateSplashFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = gSprites[gObjectEvents[objectEventId].spriteId].x;
|
||||
sprite->y = gSprites[gObjectEvents[objectEventId].spriteId].y;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -727,7 +727,7 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = linkedSprite->y;
|
||||
sprite->subpriority = linkedSprite->subpriority;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4])
|
||||
{
|
||||
sprite->data[3] = objectEvent->currentCoords.x;
|
||||
@@ -797,7 +797,7 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -935,7 +935,7 @@ static void UpdateAshFieldEffect_Step1(struct Sprite *sprite)
|
||||
|
||||
static void UpdateAshFieldEffect_Step2(struct Sprite *sprite)
|
||||
{
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (sprite->animEnded)
|
||||
FieldEffectStop(sprite, FLDEFF_ASH);
|
||||
}
|
||||
@@ -1041,7 +1041,7 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObject, struct Sprite *su
|
||||
for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = surfBlobSprite->data[6], y = surfBlobSprite->data[7])
|
||||
{
|
||||
MoveCoords(i, &x, &y);
|
||||
if (MapGridGetZCoordAt(x, y) == 3)
|
||||
if (MapGridGetElevationAt(x, y) == 3)
|
||||
{
|
||||
surfBlobSprite->data[5]++;
|
||||
break;
|
||||
@@ -1187,7 +1187,7 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
|
||||
sprite->x = x;
|
||||
sprite->y = y;
|
||||
sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1212,7 +1212,7 @@ void UpdateBubblesFieldEffect(struct Sprite *sprite)
|
||||
sprite->data[0] += 0x80;
|
||||
sprite->data[0] &= 0x100;
|
||||
sprite->y -= sprite->data[0] >> 8;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (sprite->invisible || sprite->animEnded)
|
||||
{
|
||||
FieldEffectStop(sprite, FLDEFF_BUBBLES);
|
||||
@@ -1380,8 +1380,8 @@ void UpdateJumpImpactEffect(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
SetObjectSubpriorityByZCoord(sprite->data[0], sprite, 0);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
SetObjectSubpriorityByElevation(sprite->data[0], sprite, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1390,7 +1390,7 @@ void WaitFieldEffectSpriteAnim(struct Sprite *sprite)
|
||||
if (sprite->animEnded)
|
||||
FieldEffectStop(sprite, sprite->data[0]);
|
||||
else
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
|
||||
static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 offset)
|
||||
@@ -1400,7 +1400,7 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 of
|
||||
const struct ObjectEventGraphicsInfo * graphicsInfo; // Unused Variable
|
||||
struct Sprite *linkedSprite;
|
||||
|
||||
SetObjectSubpriorityByZCoord(z, sprite, offset);
|
||||
SetObjectSubpriorityByElevation(z, sprite, offset);
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
struct ObjectEvent * objectEvent = &gObjectEvents[i];
|
||||
|
||||
+40
-40
@@ -137,7 +137,7 @@ static void Task_ContinueScriptUnionRoom(u8 taskId)
|
||||
|
||||
void FieldCB_ContinueScriptUnionRoom(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_ContinueScriptUnionRoom, 10);
|
||||
@@ -148,13 +148,13 @@ static void Task_ContinueScript(u8 taskId)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
ScriptContext_Enable();
|
||||
}
|
||||
}
|
||||
|
||||
void FieldCB_ContinueScriptHandleMusic(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_ContinueScript, 10);
|
||||
@@ -162,7 +162,7 @@ void FieldCB_ContinueScriptHandleMusic(void)
|
||||
|
||||
void FieldCB_ContinueScript(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_ContinueScript, 10);
|
||||
}
|
||||
@@ -173,7 +173,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[1] = CreateTask_ReestablishLinkInCableClubRoom();
|
||||
task->data[1] = CreateTask_ReestablishCableClubLink();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -186,7 +186,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId)
|
||||
case 2:
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
@@ -195,7 +195,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId)
|
||||
|
||||
void FieldCB_ReturnToFieldCableLink(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
palette_bg_faded_fill_black();
|
||||
CreateTask(Task_ReturnToFieldCableLink, 10);
|
||||
@@ -221,7 +221,7 @@ static void Task_ReturnToFieldRecordMixing(u8 taskId)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
StartSendingKeysToLink();
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
@@ -230,7 +230,7 @@ static void Task_ReturnToFieldRecordMixing(u8 taskId)
|
||||
|
||||
void FieldCB_ReturnToFieldWirelessLink(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
palette_bg_faded_fill_black();
|
||||
CreateTask(Task_ReturnToFieldRecordMixing, 10);
|
||||
@@ -290,7 +290,7 @@ void FieldCB_DefaultWarpExit(void)
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
SetUpWarpExitTask(FALSE);
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
}
|
||||
|
||||
void FieldCB_WarpExitFadeFromBlack(void)
|
||||
@@ -298,7 +298,7 @@ void FieldCB_WarpExitFadeFromBlack(void)
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
SetUpWarpExitTask(TRUE);
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
}
|
||||
|
||||
static void FieldCB_TeleportWarpIn(void)
|
||||
@@ -308,7 +308,7 @@ static void FieldCB_TeleportWarpIn(void)
|
||||
QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode();
|
||||
PlaySE(SE_WARP_OUT);
|
||||
CreateTask(Task_TeleportWarpIn, 10);
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
}
|
||||
|
||||
static void Task_ExitDoor(u8 taskId)
|
||||
@@ -393,7 +393,7 @@ static void Task_ExitDoor(u8 taskId)
|
||||
break;
|
||||
case 4:
|
||||
UnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -429,7 +429,7 @@ static void Task_ExitNonAnimDoor(u8 taskId)
|
||||
break;
|
||||
case 3:
|
||||
UnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -441,14 +441,14 @@ static void Task_ExitNonDoor(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
FreezeObjectEvents();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished())
|
||||
{
|
||||
UnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
@@ -461,7 +461,7 @@ static void Task_TeleportWarpIn(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
FreezeObjectEvents();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
StartTeleportInPlayerAnim();
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
@@ -469,7 +469,7 @@ static void Task_TeleportWarpIn(u8 taskId)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() && WaitTeleportInPlayerAnim() != TRUE)
|
||||
{
|
||||
UnfreezeObjectEvents();
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
@@ -489,7 +489,7 @@ void FadeTransition_FadeInOnReturnToStartMenu(void)
|
||||
{
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_WaitFadeAndCreateStartMenuTask, 80);
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
}
|
||||
|
||||
bool8 FieldCB_ReturnToFieldOpenStartMenu(void)
|
||||
@@ -502,7 +502,7 @@ static void Task_SafariZoneRanOutOfBalls(u8 taskId)
|
||||
{
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTask(taskId);
|
||||
ClearPlayerHeldMovementAndUnfreezeObjectEvents();
|
||||
}
|
||||
@@ -510,7 +510,7 @@ static void Task_SafariZoneRanOutOfBalls(u8 taskId)
|
||||
|
||||
void FieldCB_SafariZoneRanOutOfBalls(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_SafariZoneRanOutOfBalls, 10);
|
||||
@@ -531,7 +531,7 @@ bool32 FieldFadeTransitionBackgroundEffectIsFinished(void)
|
||||
|
||||
void DoWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
@@ -542,7 +542,7 @@ void DoWarp(void)
|
||||
|
||||
void DoDiveWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
@@ -560,21 +560,21 @@ void DoStairWarp(u16 metatileBehavior, u16 delay)
|
||||
|
||||
void DoDoorWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gFieldCallback = FieldCB_DefaultWarpExit;
|
||||
CreateTask(Task_DoorWarp, 10);
|
||||
}
|
||||
|
||||
void DoTeleport2Warp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
CreateTask(Task_Teleport2Warp, 10);
|
||||
gFieldCallback = FieldCB_TeleportWarpIn;
|
||||
}
|
||||
|
||||
void DoUnionRoomWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
gFieldCallback = FieldCB_DefaultWarpExit;
|
||||
CreateTask(Task_TeleportWarp, 10);
|
||||
}
|
||||
@@ -587,25 +587,25 @@ void DoFallWarp(void)
|
||||
|
||||
void DoEscalatorWarp(u8 metatileBehavior)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
StartEscalatorWarp(metatileBehavior, 10);
|
||||
}
|
||||
|
||||
void DoLavaridgeGymB1FWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
StartLavaridgeGymB1FWarp(10);
|
||||
}
|
||||
|
||||
void DoLavaridgeGym1FWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
StartLavaridgeGym1FWarp(10);
|
||||
}
|
||||
|
||||
void DoTeleportWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
TryFadeOutOldMapMusic();
|
||||
CreateTask(Task_TeleportWarp, 10);
|
||||
gFieldCallback = FieldCB_TeleportWarpIn;
|
||||
@@ -613,10 +613,10 @@ void DoTeleportWarp(void)
|
||||
|
||||
static void DoPortholeWarp(void) // Unused
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
WarpFadeOutScreen();
|
||||
CreateTask(Task_Teleport2Warp, 10);
|
||||
gFieldCallback = nullsub_60;
|
||||
gFieldCallback = FieldCB_ShowPortholeView;
|
||||
}
|
||||
|
||||
static void Task_CableClubWarp(u8 taskId)
|
||||
@@ -625,7 +625,7 @@ static void Task_CableClubWarp(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -642,7 +642,7 @@ static void Task_CableClubWarp(u8 taskId)
|
||||
|
||||
void DoCableClubWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeOutScreen();
|
||||
PlaySE(SE_EXIT);
|
||||
@@ -691,7 +691,7 @@ static void Task_Teleport2Warp(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
FreezeObjectEvents();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -713,7 +713,7 @@ static void Task_TeleportWarp(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
FreezeObjectEvents();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
PlaySE(SE_WARP_IN);
|
||||
StartTeleportWarpOutPlayerAnim();
|
||||
task->data[0]++;
|
||||
@@ -796,7 +796,7 @@ static void Task_StairWarp(u8 taskId)
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
FreezeObjectEvents();
|
||||
CameraObjectReset2();
|
||||
data[0]++;
|
||||
@@ -898,14 +898,14 @@ static void Task_ExitStairs(u8 taskId)
|
||||
if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE)
|
||||
{
|
||||
CameraObjectReset1();
|
||||
ScriptContext2_Disable();
|
||||
UnlockPlayerFieldControls();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
WarpFadeInScreen();
|
||||
ScriptContext2_Enable();
|
||||
LockPlayerFieldControls();
|
||||
ExitStairsMovement(&data[1], &data[2], &data[3], &data[4], &data[5]);
|
||||
data[0]++;
|
||||
break;
|
||||
@@ -928,7 +928,7 @@ static void ExitStairsMovement(s16 *speedX, s16 *speedY, s16 *offsetX, s16 *offs
|
||||
direction = DIR_WEST;
|
||||
else
|
||||
direction = DIR_EAST;
|
||||
ObjectEventForceSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetWalkInPlaceSlowMovementAction(direction));
|
||||
ObjectEventForceSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetWalkInPlaceFastMovementAction(direction));
|
||||
GetStairsMovementDirection(metatileBehavior, speedX, speedY);
|
||||
*offsetX = *speedX * 16;
|
||||
*offsetY = *speedY * 16;
|
||||
|
||||
+4
-11
@@ -1,18 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "field_message_box.h"
|
||||
#include "gflib.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "quest_log.h"
|
||||
#include "script.h"
|
||||
#include "text_window.h"
|
||||
|
||||
enum
|
||||
{
|
||||
FIELD_MESSAGE_BOX_HIDDEN,
|
||||
FIELD_MESSAGE_BOX_UNUSED,
|
||||
FIELD_MESSAGE_BOX_NORMAL,
|
||||
FIELD_MESSAGE_BOX_AUTO_SCROLL,
|
||||
};
|
||||
|
||||
static EWRAM_DATA u8 sMessageBoxType = 0;
|
||||
|
||||
static void ExpandStringAndStartDrawFieldMessageBox(const u8 *str);
|
||||
@@ -35,12 +28,12 @@ static void Task_DrawFieldMessageBox(u8 taskId)
|
||||
if (gQuestLogState == QL_STATE_PLAYBACK)
|
||||
{
|
||||
gTextFlags.autoScroll = TRUE;
|
||||
TextWindow_LoadTilesStdFrame1(0, 0x200);
|
||||
LoadQuestLogWindowTiles(0, 0x200);
|
||||
}
|
||||
else if (!IsMsgSignPost())
|
||||
else if (!IsMsgSignpost())
|
||||
LoadStdWindowFrameGfx();
|
||||
else
|
||||
LoadSignPostWindowFrameGfx();
|
||||
LoadSignpostWindowFrameGfx();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user