Merge branch 'master' into doc-playerpc
This commit is contained in:
+18
-11
@@ -30,7 +30,7 @@
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
/* Summary of Apprentice, because (as of writing at least) its not very well documented online
|
||||
/* Summary of Apprentice, because (as of writing at least) it's not very well documented online
|
||||
*
|
||||
* ## Basic info
|
||||
* In the Battle Tower lobby there is an NPC which asks to be taught by the player
|
||||
@@ -1107,17 +1107,24 @@ static void TrySetApprenticeHeldItem(void)
|
||||
|
||||
if (PLAYER_APPRENTICE.questionsAnswered < NUM_WHICH_MON_QUESTIONS)
|
||||
return;
|
||||
|
||||
for (count = 0, j = 0; j < APPRENTICE_MAX_QUESTIONS && PLAYER_APPRENTICE.questions[j].questionId != QUESTION_ID_WIN_SPEECH; count++, j++)
|
||||
;
|
||||
|
||||
// Make sure the item hasnt already been suggested in previous questions
|
||||
for (i = 0; i < count && i < CURRENT_QUESTION_NUM; i++)
|
||||
|
||||
count = 0;
|
||||
for (j = 0; j < APPRENTICE_MAX_QUESTIONS; j++)
|
||||
{
|
||||
do {} while(0);
|
||||
if (PLAYER_APPRENTICE.questions[i].questionId == QUESTION_ID_WHAT_ITEM
|
||||
&& PLAYER_APPRENTICE.questions[i].suggestedChange
|
||||
&& PLAYER_APPRENTICE.questions[i].data == gSpecialVar_0x8005)
|
||||
if (PLAYER_APPRENTICE.questions[j].questionId == QUESTION_ID_WIN_SPEECH)
|
||||
break;
|
||||
count++;
|
||||
}
|
||||
|
||||
// Make sure the item hasn't already been suggested in previous questions
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
if (i >= CURRENT_QUESTION_NUM)
|
||||
break;
|
||||
if (PLAYER_APPRENTICE.questions[i].questionId != QUESTION_ID_WHAT_ITEM ||
|
||||
PLAYER_APPRENTICE.questions[i].suggestedChange == 0)
|
||||
continue;
|
||||
if (PLAYER_APPRENTICE.questions[i].data == gSpecialVar_0x8005)
|
||||
{
|
||||
PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].suggestedChange = FALSE;
|
||||
PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].data = gSpecialVar_0x8005;
|
||||
|
||||
@@ -263,7 +263,10 @@ static const BattleAICmdFunc sBattleAICmdTable[] =
|
||||
Cmd_if_holds_item, // 0x62
|
||||
};
|
||||
|
||||
static const u16 sDiscouragedPowerfulMoveEffects[] =
|
||||
// For the purposes of determining the most powerful move in a moveset, these
|
||||
// moves are treated the same as having a power of 0 or 1
|
||||
#define IGNORED_MOVES_END 0xFFFF
|
||||
static const u16 sIgnoredPowerfulMoveEffects[] =
|
||||
{
|
||||
EFFECT_EXPLOSION,
|
||||
EFFECT_DREAM_EATER,
|
||||
@@ -277,7 +280,7 @@ static const u16 sDiscouragedPowerfulMoveEffects[] =
|
||||
EFFECT_SUPERPOWER,
|
||||
EFFECT_ERUPTION,
|
||||
EFFECT_OVERHEAT,
|
||||
0xFFFF
|
||||
IGNORED_MOVES_END
|
||||
};
|
||||
|
||||
// code
|
||||
@@ -1177,14 +1180,14 @@ static void Cmd_get_how_powerful_move_is(void)
|
||||
s32 i, checkedMove;
|
||||
s32 moveDmgs[MAX_MON_MOVES];
|
||||
|
||||
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
|
||||
for (i = 0; sIgnoredPowerfulMoveEffects[i] != IGNORED_MOVES_END; i++)
|
||||
{
|
||||
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
|
||||
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sIgnoredPowerfulMoveEffects[i])
|
||||
break;
|
||||
}
|
||||
|
||||
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
|
||||
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
|
||||
&& sIgnoredPowerfulMoveEffects[i] == IGNORED_MOVES_END)
|
||||
{
|
||||
gDynamicBasePower = 0;
|
||||
*(&gBattleStruct->dynamicMoveType) = 0;
|
||||
@@ -1192,16 +1195,18 @@ static void Cmd_get_how_powerful_move_is(void)
|
||||
gMoveResultFlags = 0;
|
||||
gCritMultiplier = 1;
|
||||
|
||||
// Considered move has power and is not in sIgnoredPowerfulMoveEffects
|
||||
// Check all other moves and calculate their power
|
||||
for (checkedMove = 0; checkedMove < MAX_MON_MOVES; checkedMove++)
|
||||
{
|
||||
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
|
||||
for (i = 0; sIgnoredPowerfulMoveEffects[i] != IGNORED_MOVES_END; i++)
|
||||
{
|
||||
if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
|
||||
if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sIgnoredPowerfulMoveEffects[i])
|
||||
break;
|
||||
}
|
||||
|
||||
if (gBattleMons[sBattler_AI].moves[checkedMove] != MOVE_NONE
|
||||
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
|
||||
&& sIgnoredPowerfulMoveEffects[i] == IGNORED_MOVES_END
|
||||
&& gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].power > 1)
|
||||
{
|
||||
gCurrentMove = gBattleMons[sBattler_AI].moves[checkedMove];
|
||||
@@ -1217,6 +1222,7 @@ static void Cmd_get_how_powerful_move_is(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Is the considered move the most powerful move available?
|
||||
for (checkedMove = 0; checkedMove < MAX_MON_MOVES; checkedMove++)
|
||||
{
|
||||
if (moveDmgs[checkedMove] > moveDmgs[AI_THINKING_STRUCT->movesetIndex])
|
||||
@@ -1224,13 +1230,14 @@ static void Cmd_get_how_powerful_move_is(void)
|
||||
}
|
||||
|
||||
if (checkedMove == MAX_MON_MOVES)
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_MOST_POWERFUL; // Is the most powerful.
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_MOST_POWERFUL;
|
||||
else
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_NOT_MOST_POWERFUL; // Not the most powerful.
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_NOT_MOST_POWERFUL;
|
||||
}
|
||||
else
|
||||
{
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_POWER_DISCOURAGED; // Highly discouraged in terms of power.
|
||||
// Move has a power of 0/1, or is in the group sIgnoredPowerfulMoveEffects
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_POWER_OTHER;
|
||||
}
|
||||
|
||||
gAIScriptPtr++;
|
||||
@@ -1761,7 +1768,11 @@ static void Cmd_if_cant_faint(void)
|
||||
|
||||
gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
|
||||
|
||||
// This macro is missing the damage 0 = 1 assumption.
|
||||
#ifdef BUGFIX
|
||||
// Moves always do at least 1 damage.
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
#endif
|
||||
|
||||
if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
|
||||
@@ -1877,9 +1888,14 @@ static void Cmd_if_has_move_with_effect(void)
|
||||
case AI_TARGET_PARTNER:
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
// UB: checks sBattler_AI instead of gBattlerTarget.
|
||||
// BUG: checks sBattler_AI instead of gBattlerTarget.
|
||||
#ifndef BUGFIX
|
||||
if (gBattleMons[sBattler_AI].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i]].effect == gAIScriptPtr[2])
|
||||
break;
|
||||
#else
|
||||
if (gBattleMons[gBattlerTarget].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i]].effect == gAIScriptPtr[2])
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
if (i == MAX_MON_MOVES)
|
||||
gAIScriptPtr += 7;
|
||||
@@ -2014,18 +2030,24 @@ static void Cmd_if_holds_item(void)
|
||||
{
|
||||
u8 battlerId = BattleAI_GetWantedBattler(gAIScriptPtr[1]);
|
||||
u16 item;
|
||||
u8 var1, var2;
|
||||
u8 itemLo, itemHi;
|
||||
|
||||
if ((battlerId & BIT_SIDE) == (sBattler_AI & BIT_SIDE))
|
||||
item = gBattleMons[battlerId].item;
|
||||
else
|
||||
item = BATTLE_HISTORY->itemEffects[battlerId];
|
||||
|
||||
// UB: doesn't properly read an unaligned u16
|
||||
var2 = gAIScriptPtr[2];
|
||||
var1 = gAIScriptPtr[3];
|
||||
itemHi = gAIScriptPtr[2];
|
||||
itemLo = gAIScriptPtr[3];
|
||||
|
||||
if ((var1 | var2) == item)
|
||||
#ifdef BUGFIX
|
||||
// This bug doesn't affect the vanilla game because this script command
|
||||
// is only used to check ITEM_PERSIM_BERRY, whose high byte happens to
|
||||
// be 0.
|
||||
if (((itemHi << 8) | itemLo) == item)
|
||||
#else
|
||||
if ((itemLo | itemHi) == item)
|
||||
#endif
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
|
||||
else
|
||||
gAIScriptPtr += 8;
|
||||
|
||||
+8
-8
@@ -2185,8 +2185,8 @@ static void sub_80A40F4(u8 taskId)
|
||||
|
||||
newTaskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
|
||||
gTasks[newTaskId].data[t2_BATTLER_SPRITE_ID] = battlerSpriteId;
|
||||
gTasks[newTaskId].data[1] = gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x;
|
||||
gTasks[newTaskId].data[2] = gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y;
|
||||
gTasks[newTaskId].data[1] = gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2;
|
||||
gTasks[newTaskId].data[2] = gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2;
|
||||
|
||||
if (!selfData[t1_MON_IN_BG2])
|
||||
{
|
||||
@@ -2310,11 +2310,11 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
|
||||
|
||||
battlerSpriteId = gBattlerSpriteIds[battlerId];
|
||||
|
||||
gBattle_BG1_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20;
|
||||
gBattle_BG1_X = -(gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2) + 0x20;
|
||||
if (IsContest() && IsSpeciesNotUnown(gContestResources->moveAnim->species))
|
||||
gBattle_BG1_X--;
|
||||
|
||||
gBattle_BG1_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20;
|
||||
gBattle_BG1_Y = -(gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2) + 0x20;
|
||||
if (setSpriteInvisible)
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||
|
||||
@@ -2347,8 +2347,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
|
||||
|
||||
battlerSpriteId = gBattlerSpriteIds[battlerId];
|
||||
|
||||
gBattle_BG2_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20;
|
||||
gBattle_BG2_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20;
|
||||
gBattle_BG2_X = -(gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2) + 0x20;
|
||||
gBattle_BG2_Y = -(gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2) + 0x20;
|
||||
|
||||
if (setSpriteInvisible)
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||
@@ -2436,8 +2436,8 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
|
||||
spriteId = gTasks[taskId].data[0];
|
||||
palIndex = gTasks[taskId].data[6];
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x);
|
||||
y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y);
|
||||
x = gTasks[taskId].data[1] - (gSprites[spriteId].x + gSprites[spriteId].x2);
|
||||
y = gTasks[taskId].data[2] - (gSprites[spriteId].y + gSprites[spriteId].y2);
|
||||
|
||||
if (gTasks[taskId].data[5] == 0)
|
||||
{
|
||||
|
||||
+23
-23
@@ -212,8 +212,8 @@ static void AnimMegahornHorn(struct Sprite *sprite)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
@@ -236,8 +236,8 @@ static void AnimLeechLifeNeedle(struct Sprite *sprite)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
@@ -261,8 +261,8 @@ static void AnimTranslateWebThread(struct Sprite *sprite)
|
||||
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
|
||||
if (!gBattleAnimArgs[4])
|
||||
{
|
||||
@@ -287,22 +287,22 @@ static void AnimTranslateWebThread_Step(struct Sprite *sprite)
|
||||
return;
|
||||
}
|
||||
|
||||
sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
|
||||
sprite->x2 += Sin(sprite->data[6], sprite->data[5]);
|
||||
sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
|
||||
}
|
||||
|
||||
// Second stage of String Shot
|
||||
static void AnimStringWrap(struct Sprite *sprite)
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
if (!GetBattlerSide(gBattleAnimTarget))
|
||||
sprite->pos1.y += 8;
|
||||
sprite->y += 8;
|
||||
|
||||
sprite->callback = AnimStringWrap_Step;
|
||||
}
|
||||
@@ -396,7 +396,7 @@ static void AnimTranslateStinger(struct Sprite *sprite)
|
||||
|
||||
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
|
||||
rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y);
|
||||
rot += 0xC000;
|
||||
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot);
|
||||
|
||||
@@ -444,10 +444,10 @@ static void AnimMissileArc_Step(struct Sprite *sprite)
|
||||
{
|
||||
s16 tempData[8];
|
||||
u16 *data = sprite->data;
|
||||
u16 x1 = sprite->pos1.x;
|
||||
s16 x2 = sprite->pos2.x;
|
||||
u16 y1 = sprite->pos1.y;
|
||||
s16 y2 = sprite->pos2.y;
|
||||
u16 x1 = sprite->x;
|
||||
s16 x2 = sprite->x2;
|
||||
u16 y1 = sprite->y;
|
||||
s16 y2 = sprite->y2;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
@@ -458,8 +458,8 @@ static void AnimMissileArc_Step(struct Sprite *sprite)
|
||||
|
||||
if (!TranslateAnimHorizontalArc(sprite))
|
||||
{
|
||||
u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
|
||||
sprite->pos1.y + sprite->pos2.y - y2);
|
||||
u16 rotation = ArcTan2Neg(sprite->x + sprite->x2 - x2,
|
||||
sprite->y + sprite->y2 - y2);
|
||||
rotation += 0xC000;
|
||||
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
|
||||
|
||||
@@ -473,13 +473,13 @@ static void AnimTailGlowOrb(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
|
||||
}
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
|
||||
+30
-30
@@ -287,18 +287,18 @@ static void AnimUnusedBagSteal_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
sprite->pos2.x = sprite->data[3] >> 8;
|
||||
sprite->pos2.y = sprite->data[4] >> 8;
|
||||
sprite->x2 = sprite->data[3] >> 8;
|
||||
sprite->y2 = sprite->data[4] >> 8;
|
||||
if (sprite->data[7] == 0)
|
||||
{
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
sprite->pos2.x = sprite->data[3] >> 8;
|
||||
sprite->pos2.y = sprite->data[4] >> 8;
|
||||
sprite->x2 = sprite->data[3] >> 8;
|
||||
sprite->y2 = sprite->data[4] >> 8;
|
||||
sprite->data[0]--;
|
||||
}
|
||||
|
||||
sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]);
|
||||
sprite->y2 += Sin(sprite->data[5], sprite->data[6]);
|
||||
sprite->data[5] = (sprite->data[5] + 3) & 0xFF;
|
||||
if (sprite->data[5] > 0x7F)
|
||||
{
|
||||
@@ -314,8 +314,8 @@ static void AnimUnusedBagSteal_Step(struct Sprite *sprite)
|
||||
// Move sprite inward for Bite/Crunch and Clamp
|
||||
static void AnimBite(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = gBattleAnimArgs[4];
|
||||
@@ -327,8 +327,8 @@ static void AnimBite_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[0];
|
||||
sprite->data[5] += sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[4] >> 8;
|
||||
sprite->pos2.y = sprite->data[5] >> 8;
|
||||
sprite->x2 = sprite->data[4] >> 8;
|
||||
sprite->y2 = sprite->data[5] >> 8;
|
||||
if (++sprite->data[3] == sprite->data[2])
|
||||
sprite->callback = AnimBite_Step2;
|
||||
}
|
||||
@@ -337,8 +337,8 @@ static void AnimBite_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] -= sprite->data[0];
|
||||
sprite->data[5] -= sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[4] >> 8;
|
||||
sprite->pos2.y = sprite->data[5] >> 8;
|
||||
sprite->x2 = sprite->data[4] >> 8;
|
||||
sprite->y2 = sprite->data[5] >> 8;
|
||||
if (--sprite->data[3] == 0)
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
@@ -360,30 +360,30 @@ static void AnimTearDrop(struct Sprite *sprite)
|
||||
switch (gBattleAnimArgs[1])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 8;
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 8;
|
||||
sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 14;
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
|
||||
sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 14;
|
||||
sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 8;
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 8;
|
||||
sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
xOffset = -20;
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 14;
|
||||
sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
|
||||
sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 14;
|
||||
sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
xOffset = -20;
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->data[0] = 32;
|
||||
sprite->data[2] = sprite->pos1.x + xOffset;
|
||||
sprite->data[4] = sprite->pos1.y + 12;
|
||||
sprite->data[2] = sprite->x + xOffset;
|
||||
sprite->data[4] = sprite->y + 12;
|
||||
sprite->data[5] = -12;
|
||||
|
||||
InitAnimArcTranslation(sprite);
|
||||
@@ -798,8 +798,8 @@ void sub_8114470(u8 taskId)
|
||||
// Animates a deep slash from a claw. Used by Metal Claw, Dragon Claw, and Crush Claw
|
||||
static void AnimClawSlash(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
@@ -865,12 +865,12 @@ void AnimTask_MetallicShine(u8 taskId)
|
||||
AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset);
|
||||
LoadCompressedPalette(gMetalShinePalette, animBg.paletteId * 16, 32);
|
||||
|
||||
gBattle_BG1_X = -gSprites[spriteId].pos1.x + 96;
|
||||
gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
|
||||
gBattle_BG1_X = -gSprites[spriteId].x + 96;
|
||||
gBattle_BG1_Y = -gSprites[spriteId].y + 32;
|
||||
paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
|
||||
|
||||
if (gBattleAnimArgs[1] == 0)
|
||||
SetGreyscaleOrOriginalPalette(paletteNum, FALSE);
|
||||
SetGrayscaleOrOriginalPalette(paletteNum, FALSE);
|
||||
else
|
||||
BlendPalette(paletteNum * 16, 16, 11, gBattleAnimArgs[2]);
|
||||
|
||||
@@ -900,7 +900,7 @@ static void AnimTask_MetallicShine_Step(u8 taskId)
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
|
||||
if (gTasks[taskId].data[1] == 0)
|
||||
SetGreyscaleOrOriginalPalette(paletteNum, TRUE);
|
||||
SetGrayscaleOrOriginalPalette(paletteNum, TRUE);
|
||||
|
||||
DestroySprite(&gSprites[gTasks[taskId].data[0]]);
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
@@ -925,10 +925,10 @@ static void AnimTask_MetallicShine_Step(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Changes battler's palette to either greyscale or original.
|
||||
// Changes battler's palette to either grayscale or original.
|
||||
// arg0: which battler
|
||||
// arg1: FALSE grayscale, TRUE original
|
||||
void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
|
||||
void AnimTask_SetGrayscaleOrOriginalPal(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
u8 battler;
|
||||
@@ -974,7 +974,7 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
|
||||
}
|
||||
|
||||
if (spriteId != SPRITE_NONE)
|
||||
SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]);
|
||||
SetGrayscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]);
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
+28
-28
@@ -189,20 +189,20 @@ const struct SpriteTemplate gOverheatFlameSpriteTemplate =
|
||||
|
||||
static void AnimOutrageFlame(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
gBattleAnimArgs[4] = -gBattleAnimArgs[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
}
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[3] = gBattleAnimArgs[4];
|
||||
@@ -219,15 +219,15 @@ static void StartDragonFireTranslation(struct Sprite *sprite)
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[1];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x -= gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[2] -= gBattleAnimArgs[2];
|
||||
sprite->data[4] += gBattleAnimArgs[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[2] += gBattleAnimArgs[2];
|
||||
sprite->data[4] += gBattleAnimArgs[3];
|
||||
StartSpriteAnim(sprite, 1);
|
||||
@@ -242,17 +242,17 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
}
|
||||
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[1]);
|
||||
sprite->pos1.y += gBattleAnimArgs[2];
|
||||
sprite->y += gBattleAnimArgs[2];
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
}
|
||||
@@ -270,8 +270,8 @@ static void AnimDragonDanceOrb(struct Sprite *sprite)
|
||||
{
|
||||
u16 r5;
|
||||
u16 r0;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = 1;
|
||||
sprite->data[6] = gBattleAnimArgs[0];
|
||||
@@ -281,8 +281,8 @@ static void AnimDragonDanceOrb(struct Sprite *sprite)
|
||||
sprite->data[7] = r5 / 2;
|
||||
else
|
||||
sprite->data[7] = r0 / 2;
|
||||
sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
|
||||
sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
|
||||
sprite->callback = AnimDragonDanceOrb_Step;
|
||||
}
|
||||
|
||||
@@ -292,8 +292,8 @@ static void AnimDragonDanceOrb_Step(struct Sprite *sprite)
|
||||
{
|
||||
case 0:
|
||||
sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
|
||||
sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
|
||||
sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
|
||||
if (++sprite->data[4] > 5)
|
||||
{
|
||||
sprite->data[4] = 0;
|
||||
@@ -310,8 +310,8 @@ static void AnimDragonDanceOrb_Step(struct Sprite *sprite)
|
||||
sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
|
||||
if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95)
|
||||
sprite->data[7] = 0x96;
|
||||
sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
|
||||
sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
|
||||
sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
|
||||
if (++sprite->data[4] > 5)
|
||||
{
|
||||
sprite->data[4] = 0;
|
||||
@@ -417,12 +417,12 @@ static void AnimOverheatFlame(struct Sprite *sprite)
|
||||
{
|
||||
int i;
|
||||
int yAmplitude = (gBattleAnimArgs[2] * 3) / 5;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
|
||||
sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
|
||||
sprite->data[2] = Sin(gBattleAnimArgs[1], yAmplitude);
|
||||
sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0];
|
||||
sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0];
|
||||
sprite->x += sprite->data[1] * gBattleAnimArgs[0];
|
||||
sprite->y += sprite->data[2] * gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[3];
|
||||
sprite->callback = AnimOverheatFlame_Step;
|
||||
for (i = 0; i < 7; i++)
|
||||
@@ -433,8 +433,8 @@ static void AnimOverheatFlame_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->data[5] += sprite->data[2];
|
||||
sprite->pos2.x = sprite->data[4] / 10;
|
||||
sprite->pos2.y = sprite->data[5] / 10;
|
||||
sprite->x2 = sprite->data[4] / 10;
|
||||
sprite->y2 = sprite->data[5] / 10;
|
||||
if (++sprite->data[0] > sprite->data[3])
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
+306
-306
File diff suppressed because it is too large
Load Diff
+193
-193
@@ -89,7 +89,7 @@ static void AnimPerishSongMusicNote_Step1(struct Sprite *);
|
||||
static void AnimPerishSongMusicNote_Step2(struct Sprite *);
|
||||
static void AnimGuardRing(struct Sprite *);
|
||||
static void AnimTask_Withdraw_Step(u8);
|
||||
static void AnimTask_GrowAndGreyscale_Step(u8);
|
||||
static void AnimTask_GrowAndGrayscale_Step(u8);
|
||||
static void AnimTask_Minimize_Step(u8);
|
||||
static void CreateMinimizeSprite(struct Task *, u8);
|
||||
static void ClonedMinizeSprite_Step(struct Sprite *);
|
||||
@@ -1266,7 +1266,7 @@ static void AnimCirclingFinger(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
sprite->data[3] = gBattleAnimArgs[5];
|
||||
@@ -1295,12 +1295,12 @@ static void AnimBouncingMusicNote_Step(struct Sprite *sprite)
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y -= 3;
|
||||
sprite->y2 -= 3;
|
||||
if (++sprite->data[1] == 6)
|
||||
sprite->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.y += 3;
|
||||
sprite->y2 += 3;
|
||||
if (--sprite->data[1] == 0)
|
||||
sprite->data[0]++;
|
||||
break;
|
||||
@@ -1314,12 +1314,12 @@ static void AnimBouncingMusicNote_Step(struct Sprite *sprite)
|
||||
static void AnimVibrateBattlerBack_Step(struct Sprite *sprite)
|
||||
{
|
||||
s16 temp;
|
||||
gSprites[sprite->data[2]].pos2.x += sprite->data[1];
|
||||
gSprites[sprite->data[2]].x2 += sprite->data[1];
|
||||
temp = sprite->data[1];
|
||||
sprite->data[1] = -temp;
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
gSprites[sprite->data[2]].pos2.x = 0;
|
||||
gSprites[sprite->data[2]].x2 = 0;
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
|
||||
@@ -1329,15 +1329,15 @@ static void AnimVibrateBattlerBack_Step(struct Sprite *sprite)
|
||||
static void AnimVibrateBattlerBack(struct Sprite *sprite)
|
||||
{
|
||||
u8 spriteId;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
spriteId = gBattlerSpriteIds[gBattleAnimTarget];
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = spriteId;
|
||||
@@ -1358,8 +1358,8 @@ static void AnimMovingClamp(struct Sprite *sprite)
|
||||
static void AnimMovingClamp_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = sprite->data[1];
|
||||
sprite->data[2] = sprite->pos1.x;
|
||||
sprite->data[4] = sprite->pos1.y + 15;
|
||||
sprite->data[2] = sprite->x;
|
||||
sprite->data[4] = sprite->y + 15;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, AnimMovingClamp_End);
|
||||
}
|
||||
@@ -1394,7 +1394,7 @@ static void AnimTask_Withdraw_Step(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] += 0xB0;
|
||||
// this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation()
|
||||
gSprites[spriteId].pos2.y++;
|
||||
gSprites[spriteId].y2++;
|
||||
}
|
||||
else if (gTasks[taskId].data[1] == 1)
|
||||
{
|
||||
@@ -1407,7 +1407,7 @@ static void AnimTask_Withdraw_Step(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] -= 0xB0;
|
||||
// this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation()
|
||||
gSprites[spriteId].pos2.y--;
|
||||
gSprites[spriteId].y2--;
|
||||
}
|
||||
|
||||
SetBattlerSpriteYOffsetFromRotation(spriteId);
|
||||
@@ -1433,11 +1433,11 @@ static void AnimKinesisZapEnergy(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->hFlip = 1;
|
||||
@@ -1467,8 +1467,8 @@ static void AnimSwordsDanceBlade(struct Sprite *sprite)
|
||||
static void AnimSwordsDanceBlade_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 6;
|
||||
sprite->data[2] = sprite->pos1.x;
|
||||
sprite->data[4] = sprite->pos1.y - 32;
|
||||
sprite->data[2] = sprite->x;
|
||||
sprite->data[4] = sprite->y - 32;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
@@ -1500,7 +1500,7 @@ static void AnimSonicBoomProjectile(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
targetXPos = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
|
||||
targetYPos = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y);
|
||||
rotation = ArcTan2Neg(targetXPos - sprite->x, targetYPos - sprite->y);
|
||||
rotation += 0xF000;
|
||||
if (IsContest())
|
||||
rotation -= 0x6000;
|
||||
@@ -1539,14 +1539,14 @@ static void AnimAirWaveProjectile_Step1(struct Sprite *sprite)
|
||||
sprite->data[1] += sprite->data[5];
|
||||
sprite->data[2] += sprite->data[6];
|
||||
if (1 & task->data[7])
|
||||
sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1;
|
||||
sprite->x2 = ((u16)sprite->data[1] >> 8) * -1;
|
||||
else
|
||||
sprite->pos2.x = (u16)sprite->data[1] >> 8;
|
||||
sprite->x2 = (u16)sprite->data[1] >> 8;
|
||||
|
||||
if (1 & task->data[8])
|
||||
sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1;
|
||||
sprite->y2 = ((u16)sprite->data[2] / 256u) * -1;
|
||||
else
|
||||
sprite->pos2.y = (u16)sprite->data[2] / 256u;
|
||||
sprite->y2 = (u16)sprite->data[2] / 256u;
|
||||
|
||||
if (sprite->data[0]-- <= 0)
|
||||
{
|
||||
@@ -1565,33 +1565,33 @@ static void AnimAirWaveProjectile(struct Sprite *sprite)
|
||||
sprite->data[1] += (-2 & task->data[7]);
|
||||
sprite->data[2] += (-2 & task->data[8]);
|
||||
if (1 & task->data[7])
|
||||
sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1;
|
||||
sprite->x2 = ((u16)sprite->data[1] >> 8) * -1;
|
||||
else
|
||||
sprite->pos2.x = (u16)sprite->data[1] >> 8;
|
||||
sprite->x2 = (u16)sprite->data[1] >> 8;
|
||||
|
||||
if (1 & task->data[8])
|
||||
sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1;
|
||||
sprite->y2 = ((u16)sprite->data[2] / 256u) * -1;
|
||||
else
|
||||
sprite->pos2.y = (u16)sprite->data[2] / 256u;
|
||||
sprite->y2 = (u16)sprite->data[2] / 256u;
|
||||
|
||||
if (sprite->data[0]-- <= 0)
|
||||
{
|
||||
sprite->data[0] = 8;
|
||||
task->data[5] = 4;
|
||||
a = MathUtil_Inv16(Q_8_8(16));
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
if (task->data[11] >= sprite->pos1.x)
|
||||
b = (task->data[11] - sprite->pos1.x) << 8;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
if (task->data[11] >= sprite->x)
|
||||
b = (task->data[11] - sprite->x) << 8;
|
||||
else
|
||||
b = (sprite->pos1.x - task->data[11]) << 8;
|
||||
b = (sprite->x - task->data[11]) << 8;
|
||||
|
||||
if (task->data[12] >= sprite->pos1.y)
|
||||
c = (task->data[12] - sprite->pos1.y) << 8;
|
||||
if (task->data[12] >= sprite->y)
|
||||
c = (task->data[12] - sprite->y) << 8;
|
||||
else
|
||||
c = (sprite->pos1.y - task->data[12]) << 8;
|
||||
c = (sprite->y - task->data[12]) << 8;
|
||||
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[1] = 0;
|
||||
@@ -1778,7 +1778,7 @@ static void AnimCoinThrow(struct Sprite *sprite)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
r6 += gBattleAnimArgs[2];
|
||||
var = ArcTan2Neg(r6 - sprite->pos1.x, r7 - sprite->pos1.y);
|
||||
var = ArcTan2Neg(r6 - sprite->x, r7 - sprite->y);
|
||||
var += 0xC000;
|
||||
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, var);
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
@@ -1791,18 +1791,18 @@ static void AnimCoinThrow(struct Sprite *sprite)
|
||||
static void AnimFallingCoin(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[2] = -16;
|
||||
sprite->pos1.y += 8;
|
||||
sprite->y += 8;
|
||||
sprite->callback = AnimFallingCoin_Step;
|
||||
}
|
||||
|
||||
static void AnimFallingCoin_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] += 0x80;
|
||||
sprite->pos2.x = sprite->data[0] >> 8;
|
||||
sprite->x2 = sprite->data[0] >> 8;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
sprite->pos2.x = -sprite->pos2.x;
|
||||
sprite->x2 = -sprite->x2;
|
||||
|
||||
sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]);
|
||||
sprite->y2 = Sin(sprite->data[1], sprite->data[2]);
|
||||
sprite->data[1] += 5;
|
||||
if (sprite->data[1] > 126)
|
||||
{
|
||||
@@ -1830,10 +1830,10 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite)
|
||||
u16 rand;
|
||||
s16* ptr;
|
||||
PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(63));
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
ptr = &sprite->data[7];
|
||||
for (i = 0; i < 8; i++)
|
||||
ptr[i - 7] = 0;
|
||||
@@ -1849,11 +1849,11 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite)
|
||||
static void AnimBulletSeed_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] += sprite->data[7];
|
||||
sprite->pos2.x = sprite->data[0] >> 8;
|
||||
sprite->x2 = sprite->data[0] >> 8;
|
||||
if (sprite->data[7] & 1)
|
||||
sprite->pos2.x = -sprite->pos2.x;
|
||||
sprite->x2 = -sprite->x2;
|
||||
|
||||
sprite->pos2.y = Sin(sprite->data[1], sprite->data[6]);
|
||||
sprite->y2 = Sin(sprite->data[1], sprite->data[6]);
|
||||
sprite->data[1] += 8;
|
||||
if (sprite->data[1] > 126)
|
||||
{
|
||||
@@ -1876,7 +1876,7 @@ static void AnimRazorWindTornado(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, FALSE);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
sprite->pos1.y += 16;
|
||||
sprite->y += 16;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
@@ -1905,8 +1905,8 @@ static void AnimViceGripPincer(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, 1);
|
||||
}
|
||||
|
||||
sprite->pos1.x += startXOffset;
|
||||
sprite->pos1.y += startYOffset;
|
||||
sprite->x += startXOffset;
|
||||
sprite->y += startYOffset;
|
||||
sprite->data[0] = 6;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
|
||||
@@ -1937,12 +1937,12 @@ static void AnimGuillotinePincer(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
|
||||
}
|
||||
|
||||
sprite->pos1.x += startXOffset;
|
||||
sprite->pos1.y += startYOffset;
|
||||
sprite->x += startXOffset;
|
||||
sprite->y += startYOffset;
|
||||
sprite->data[0] = 6;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->data[5] = gBattleAnimArgs[0];
|
||||
@@ -1956,10 +1956,10 @@ static void AnimGuillotinePincer_Step1(struct Sprite *sprite)
|
||||
{
|
||||
SeekSpriteAnim(sprite, 0);
|
||||
sprite->animPaused = 1;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.x = 2;
|
||||
sprite->pos2.y = -2;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->x2 = 2;
|
||||
sprite->y2 = -2;
|
||||
sprite->data[0] = sprite->data[6];
|
||||
sprite->data[1] ^= 1;
|
||||
sprite->data[2] ^= 1;
|
||||
@@ -1973,15 +1973,15 @@ static void AnimGuillotinePincer_Step2(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
sprite->pos2.x = -sprite->pos2.x;
|
||||
sprite->pos2.y = -sprite->pos2.y;
|
||||
sprite->x2 = -sprite->x2;
|
||||
sprite->y2 = -sprite->y2;
|
||||
}
|
||||
|
||||
sprite->data[3] ^= 1;
|
||||
if (++sprite->data[4] == 51)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[3] = 0;
|
||||
sprite->animPaused = 0;
|
||||
@@ -1996,26 +1996,26 @@ static void AnimGuillotinePincer_Step3(struct Sprite *sprite)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
// Scales up the target mon sprite, and sets the palette to greyscale.
|
||||
// Scales up the target mon sprite, and sets the palette to grayscale.
|
||||
// Used in MOVE_DISABLE.
|
||||
// No args.
|
||||
void AnimTask_GrowAndGreyscale(u8 taskId)
|
||||
void AnimTask_GrowAndGrayscale(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
|
||||
SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0);
|
||||
SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE);
|
||||
SetGrayscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE);
|
||||
gTasks[taskId].data[0] = 80;
|
||||
gTasks[taskId].func = AnimTask_GrowAndGreyscale_Step;
|
||||
gTasks[taskId].func = AnimTask_GrowAndGrayscale_Step;
|
||||
}
|
||||
|
||||
static void AnimTask_GrowAndGreyscale_Step(u8 taskId)
|
||||
static void AnimTask_GrowAndGrayscale_Step(u8 taskId)
|
||||
{
|
||||
if (--gTasks[taskId].data[0] == -1)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
ResetSpriteRotScale(spriteId);
|
||||
SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, TRUE);
|
||||
SetGrayscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, TRUE);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
@@ -2099,7 +2099,7 @@ static void AnimTask_Minimize_Step(u8 taskId)
|
||||
break;
|
||||
case 5:
|
||||
ResetSpriteRotScale(task->data[0]);
|
||||
gSprites[task->data[15]].pos2.y = 0;
|
||||
gSprites[task->data[15]].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -2176,7 +2176,7 @@ static void AnimTask_Splash_Step(u8 taskId)
|
||||
case 0:
|
||||
RunAffineAnimFromTaskData(task);
|
||||
task->data[4] += 3;
|
||||
gSprites[task->data[0]].pos2.y += task->data[4];
|
||||
gSprites[task->data[0]].y2 += task->data[4];
|
||||
if (++task->data[3] > 7)
|
||||
{
|
||||
task->data[3] = 0;
|
||||
@@ -2185,7 +2185,7 @@ static void AnimTask_Splash_Step(u8 taskId)
|
||||
break;
|
||||
case 1:
|
||||
RunAffineAnimFromTaskData(task);
|
||||
gSprites[task->data[0]].pos2.y += task->data[4];
|
||||
gSprites[task->data[0]].y2 += task->data[4];
|
||||
if (++task->data[3] > 7)
|
||||
{
|
||||
task->data[3] = 0;
|
||||
@@ -2195,7 +2195,7 @@ static void AnimTask_Splash_Step(u8 taskId)
|
||||
case 2:
|
||||
if (task->data[4] != 0)
|
||||
{
|
||||
gSprites[task->data[0]].pos2.y -= 2;
|
||||
gSprites[task->data[0]].y2 -= 2;
|
||||
task->data[4] -= 2;
|
||||
}
|
||||
else
|
||||
@@ -2206,7 +2206,7 @@ static void AnimTask_Splash_Step(u8 taskId)
|
||||
{
|
||||
if (--task->data[2] == 0)
|
||||
{
|
||||
gSprites[task->data[0]].pos2.y = 0;
|
||||
gSprites[task->data[0]].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
else
|
||||
@@ -2245,17 +2245,17 @@ static void AnimBreathPuff(struct Sprite *sprite)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
{
|
||||
StartSpriteAnim(sprite, 0);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32;
|
||||
sprite->data[1] = 64;
|
||||
}
|
||||
else
|
||||
{
|
||||
StartSpriteAnim(sprite, 1);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32;
|
||||
sprite->data[1] = -64;
|
||||
}
|
||||
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[0] = 52;
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[3] = 0;
|
||||
@@ -2279,10 +2279,10 @@ static void AnimAngerMark(struct Sprite *sprite)
|
||||
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
|
||||
gBattleAnimArgs[1] *= -1;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
|
||||
if (sprite->pos1.y < 8)
|
||||
sprite->pos1.y = 8;
|
||||
sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
|
||||
sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
|
||||
if (sprite->y < 8)
|
||||
sprite->y = 8;
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
@@ -2315,8 +2315,8 @@ void AnimTask_ThrashMoveMonVertical(u8 taskId)
|
||||
task->data[2] = 4;
|
||||
task->data[3] = 7;
|
||||
task->data[4] = 3;
|
||||
task->data[5] = gSprites[task->data[0]].pos1.x;
|
||||
task->data[6] = gSprites[task->data[0]].pos1.y;
|
||||
task->data[5] = gSprites[task->data[0]].x;
|
||||
task->data[6] = gSprites[task->data[0]].y;
|
||||
task->data[7] = 0;
|
||||
task->data[8] = 0;
|
||||
task->data[9] = 2;
|
||||
@@ -2334,14 +2334,14 @@ static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
|
||||
task->data[7] = 0;
|
||||
task->data[8]++;
|
||||
if (task->data[8] & 1)
|
||||
gSprites[task->data[0]].pos1.y += task->data[9];
|
||||
gSprites[task->data[0]].y += task->data[9];
|
||||
else
|
||||
gSprites[task->data[0]].pos1.y -= task->data[9];
|
||||
gSprites[task->data[0]].y -= task->data[9];
|
||||
}
|
||||
switch (task->data[1])
|
||||
{
|
||||
case 0:
|
||||
gSprites[task->data[0]].pos1.x += task->data[2];
|
||||
gSprites[task->data[0]].x += task->data[2];
|
||||
if (--task->data[3] == 0)
|
||||
{
|
||||
task->data[3] = 14;
|
||||
@@ -2349,7 +2349,7 @@ static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
gSprites[task->data[0]].pos1.x -= task->data[2];
|
||||
gSprites[task->data[0]].x -= task->data[2];
|
||||
if (--task->data[3] == 0)
|
||||
{
|
||||
task->data[3] = 7;
|
||||
@@ -2357,7 +2357,7 @@ static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
gSprites[task->data[0]].pos1.x += task->data[2];
|
||||
gSprites[task->data[0]].x += task->data[2];
|
||||
if (--task->data[3] == 0)
|
||||
{
|
||||
if (--task->data[4] != 0)
|
||||
@@ -2368,7 +2368,7 @@ static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
|
||||
else
|
||||
{
|
||||
if ((task->data[8] & 1) != 0)
|
||||
gSprites[task->data[0]].pos1.y -= task->data[9];
|
||||
gSprites[task->data[0]].y -= task->data[9];
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
@@ -2467,8 +2467,8 @@ static void AnimTask_SketchDrawMon_Step(u8 taskId)
|
||||
|
||||
static void AnimPencil(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) - 16;
|
||||
sprite->pos1.y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) - 16;
|
||||
sprite->y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16;
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[2] = 0;
|
||||
@@ -2499,7 +2499,7 @@ static void AnimPencil_Step(struct Sprite *sprite)
|
||||
if (++sprite->data[1] > 3 && sprite->data[2] < sprite->data[5])
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
sprite->pos1.y -= 1;
|
||||
sprite->y -= 1;
|
||||
sprite->data[2]++;
|
||||
if (sprite->data[2] % 10 == 0)
|
||||
PlaySE12WithPanning(SE_M_SKETCH, sprite->data[6]);
|
||||
@@ -2515,7 +2515,7 @@ static void AnimPencil_Step(struct Sprite *sprite)
|
||||
sprite->data[4] = -0x40 - sprite->data[4];
|
||||
sprite->data[3] *= -1;
|
||||
}
|
||||
sprite->pos2.x = sprite->data[4];
|
||||
sprite->x2 = sprite->data[4];
|
||||
if (sprite->data[5] == sprite->data[2])
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
@@ -2624,7 +2624,7 @@ static void AnimHyperVoiceRing(struct Sprite *sprite)
|
||||
r9 = GetBattlerSpriteCoord(battler1, r10) - gBattleAnimArgs[0];
|
||||
if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler1)))
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[battler1]].pos1.x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].pos1.x)
|
||||
if (gSprites[gBattlerSpriteIds[battler1]].x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].x)
|
||||
sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].subpriority + 1;
|
||||
else
|
||||
sprite->subpriority = gSprites[gBattlerSpriteIds[battler1]].subpriority - 1;
|
||||
@@ -2653,8 +2653,8 @@ static void AnimHyperVoiceRing(struct Sprite *sprite)
|
||||
sp0 -= gBattleAnimArgs[3];
|
||||
|
||||
sp1 += gBattleAnimArgs[4];
|
||||
sprite->pos1.x = sprite->data[1] = r9;
|
||||
sprite->pos1.y = sprite->data[3] = r6;
|
||||
sprite->x = sprite->data[1] = r9;
|
||||
sprite->y = sprite->data[3] = r6;
|
||||
sprite->data[2] = sp0;
|
||||
sprite->data[4] = sp1;
|
||||
sprite->data[0] = gBattleAnimArgs[0];
|
||||
@@ -2690,17 +2690,17 @@ static void AnimSoftBoiledEgg(struct Sprite *sprite)
|
||||
static void AnimSoftBoiledEgg_Step1(struct Sprite *sprite)
|
||||
{
|
||||
s16 add;
|
||||
sprite->pos2.y -= (sprite->data[0] >> 8);
|
||||
sprite->pos2.x = sprite->data[1] >> 8;
|
||||
sprite->y2 -= (sprite->data[0] >> 8);
|
||||
sprite->x2 = sprite->data[1] >> 8;
|
||||
sprite->data[0] -= 32;
|
||||
add = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160;
|
||||
sprite->data[1] += add;
|
||||
if (sprite->pos2.y > 0)
|
||||
if (sprite->y2 > 0)
|
||||
{
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[0] = 0;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
sprite->callback = AnimSoftBoiledEgg_Step2;
|
||||
@@ -2737,7 +2737,7 @@ static void AnimSoftBoiledEgg_Step3(struct Sprite *sprite)
|
||||
|
||||
static void AnimSoftBoiledEgg_Step3_Callback1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y -= 2;
|
||||
sprite->y2 -= 2;
|
||||
if (++sprite->data[0] == 9)
|
||||
{
|
||||
sprite->data[0] = 16;
|
||||
@@ -2793,7 +2793,7 @@ static void AnimTask_AttackerStretchAndDisappear_Step(u8 taskId)
|
||||
struct Task* task = &gTasks[taskId];
|
||||
if (!RunAffineAnimFromTaskData(task))
|
||||
{
|
||||
gSprites[task->data[0]].pos2.y = 0;
|
||||
gSprites[task->data[0]].y2 = 0;
|
||||
gSprites[task->data[0]].invisible = TRUE;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
@@ -2829,7 +2829,7 @@ static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
gSprites[task->data[15]].pos2.x += task->data[14];
|
||||
gSprites[task->data[15]].x2 += task->data[14];
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
task->data[3] = 0;
|
||||
@@ -2841,14 +2841,14 @@ static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId)
|
||||
task->data[1] = 0;
|
||||
task->data[2]++;
|
||||
if (task->data[2] & 1)
|
||||
gSprites[task->data[15]].pos2.x += 6;
|
||||
gSprites[task->data[15]].x2 += 6;
|
||||
else
|
||||
gSprites[task->data[15]].pos2.x -= 6;
|
||||
gSprites[task->data[15]].x2 -= 6;
|
||||
|
||||
if (++task->data[3] > 4)
|
||||
{
|
||||
if (task->data[2] & 1)
|
||||
gSprites[task->data[15]].pos2.x -= 6;
|
||||
gSprites[task->data[15]].x2 -= 6;
|
||||
|
||||
task->data[0]++;
|
||||
}
|
||||
@@ -2861,8 +2861,8 @@ static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
gSprites[task->data[15]].pos2.x += task->data[13];
|
||||
if (gSprites[task->data[15]].pos2.x == 0)
|
||||
gSprites[task->data[15]].x2 += task->data[13];
|
||||
if (gSprites[task->data[15]].x2 == 0)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -2975,8 +2975,8 @@ static void AnimTask_SpeedDust_Step(u8 taskId)
|
||||
{
|
||||
gSprites[spriteId].data[0] = taskId;
|
||||
gSprites[spriteId].data[1] = 13;
|
||||
gSprites[spriteId].pos2.x = gSpeedDustPosTable[task->data[2]][0];
|
||||
gSprites[spriteId].pos2.y = gSpeedDustPosTable[task->data[2]][1];
|
||||
gSprites[spriteId].x2 = gSpeedDustPosTable[task->data[2]][0];
|
||||
gSprites[spriteId].y2 = gSpeedDustPosTable[task->data[2]][1];
|
||||
task->data[13]++;
|
||||
if (++task->data[2] > 3)
|
||||
{
|
||||
@@ -3059,8 +3059,8 @@ static void AnimMagentaHeart(struct Sprite *sprite)
|
||||
if (++sprite->data[0] == 1)
|
||||
InitSpritePosToAnimAttacker(sprite, FALSE);
|
||||
|
||||
sprite->pos2.x = Sin(sprite->data[1], 8);
|
||||
sprite->pos2.y = sprite->data[2] >> 8;
|
||||
sprite->x2 = Sin(sprite->data[1], 8);
|
||||
sprite->y2 = sprite->data[2] >> 8;
|
||||
sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
|
||||
sprite->data[2] -= 0x80;
|
||||
if (sprite->data[0] == 60)
|
||||
@@ -3126,15 +3126,15 @@ void AnimTask_StretchTargetUp(u8 taskId)
|
||||
if (++gTasks[taskId].data[0] == 1)
|
||||
{
|
||||
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sAffineAnims_StretchBattlerUp);
|
||||
gSprites[spriteId].pos2.x = 4;
|
||||
gSprites[spriteId].x2 = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
|
||||
gSprites[spriteId].x2 = -gSprites[spriteId].x2;
|
||||
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
|
||||
{
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].pos2.y = 0;
|
||||
gSprites[spriteId].x2 = 0;
|
||||
gSprites[spriteId].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
@@ -3146,15 +3146,15 @@ void AnimTask_StretchAttackerUp(u8 taskId)
|
||||
if (++gTasks[taskId].data[0] == 1)
|
||||
{
|
||||
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sAffineAnims_StretchBattlerUp);
|
||||
gSprites[spriteId].pos2.x = 4;
|
||||
gSprites[spriteId].x2 = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
|
||||
gSprites[spriteId].x2 = -gSprites[spriteId].x2;
|
||||
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
|
||||
{
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].pos2.y = 0;
|
||||
gSprites[spriteId].x2 = 0;
|
||||
gSprites[spriteId].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
@@ -3164,9 +3164,9 @@ static void AnimRedHeartProjectile(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[0] = 95;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = AnimRedHeartProjectile_Step;
|
||||
@@ -3176,7 +3176,7 @@ static void AnimRedHeartProjectile_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (!AnimTranslateLinear(sprite))
|
||||
{
|
||||
sprite->pos2.y += Sin(sprite->data[5], 14);
|
||||
sprite->y2 += Sin(sprite->data[5], 14);
|
||||
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
|
||||
}
|
||||
else
|
||||
@@ -3196,8 +3196,8 @@ void AnimParticleBurst(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[4] >> 8;
|
||||
sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
|
||||
sprite->x2 = sprite->data[4] >> 8;
|
||||
sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
|
||||
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
|
||||
if (sprite->data[3] > 100)
|
||||
sprite->invisible = sprite->data[3] % 2;
|
||||
@@ -3209,8 +3209,8 @@ void AnimParticleBurst(struct Sprite *sprite)
|
||||
|
||||
static void AnimRedHeartRising(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[0];
|
||||
sprite->pos1.y = DISPLAY_HEIGHT;
|
||||
sprite->x = gBattleAnimArgs[0];
|
||||
sprite->y = DISPLAY_HEIGHT;
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[1];
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
@@ -3221,10 +3221,10 @@ static void AnimRedHeartRising_Step(struct Sprite *sprite)
|
||||
{
|
||||
s16 y;
|
||||
sprite->data[2] += sprite->data[1];
|
||||
sprite->pos2.y = -((u16)sprite->data[2] >> 8);
|
||||
sprite->pos2.x = Sin(sprite->data[3], 4);
|
||||
sprite->y2 = -((u16)sprite->data[2] >> 8);
|
||||
sprite->x2 = Sin(sprite->data[3], 4);
|
||||
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
|
||||
y = sprite->pos1.y + sprite->pos2.y;
|
||||
y = sprite->y + sprite->y2;
|
||||
if (y <= 72)
|
||||
{
|
||||
sprite->invisible = sprite->data[3] % 2;
|
||||
@@ -3402,8 +3402,8 @@ static void AnimTask_ScaryFace_Step(u8 taskId)
|
||||
// arg 1: initial wave offset
|
||||
static void AnimOrbitFast(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->affineAnimPaused = 1;
|
||||
sprite->data[0] = gBattleAnimArgs[0];
|
||||
sprite->data[1] = gBattleAnimArgs[1];
|
||||
@@ -3419,8 +3419,8 @@ static void AnimOrbitFast_Step(struct Sprite *sprite)
|
||||
else
|
||||
sprite->subpriority = sprite->data[7] - 1;
|
||||
|
||||
sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
|
||||
sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
|
||||
sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
|
||||
sprite->y2 = Cos(sprite->data[1], sprite->data[3] >> 8);
|
||||
sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
|
||||
switch (sprite->data[5])
|
||||
{
|
||||
@@ -3453,8 +3453,8 @@ static void AnimOrbitFast_Step(struct Sprite *sprite)
|
||||
// arg 0: initial wave offset
|
||||
static void AnimOrbitScatter(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
|
||||
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
|
||||
sprite->callback = AnimOrbitScatter_Step;
|
||||
@@ -3462,25 +3462,25 @@ static void AnimOrbitScatter(struct Sprite *sprite)
|
||||
|
||||
static void AnimOrbitScatter_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x += sprite->data[0];
|
||||
sprite->pos2.y += sprite->data[1];
|
||||
if (sprite->pos1.x + sprite->pos2.x + 16 > ((u32)DISPLAY_WIDTH + 32)
|
||||
|| sprite->pos1.y + sprite->pos2.y > DISPLAY_HEIGHT || sprite->pos1.y + sprite->pos2.y < -16)
|
||||
sprite->x2 += sprite->data[0];
|
||||
sprite->y2 += sprite->data[1];
|
||||
if (sprite->x + sprite->x2 + 16 > ((u32)DISPLAY_WIDTH + 32)
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void AnimSpitUpOrb_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x += sprite->data[0];
|
||||
sprite->pos2.y += sprite->data[1];
|
||||
sprite->x2 += sprite->data[0];
|
||||
sprite->y2 += sprite->data[1];
|
||||
if (sprite->data[3]++ >= sprite->data[2])
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
static void AnimSpitUpOrb(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
|
||||
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
@@ -3504,20 +3504,20 @@ static void AnimAngel(struct Sprite *sprite)
|
||||
s16 var0;
|
||||
if (!sprite->data[0])
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
sprite->data[0]++;
|
||||
var0 = (sprite->data[0] * 10) & 0xFF;
|
||||
sprite->pos2.x = Sin(var0, 80) >> 8;
|
||||
sprite->x2 = Sin(var0, 80) >> 8;
|
||||
if (sprite->data[0] < 80)
|
||||
sprite->pos2.y = (sprite->data[0] / 2) + (Cos(var0, 80) >> 8);
|
||||
sprite->y2 = (sprite->data[0] / 2) + (Cos(var0, 80) >> 8);
|
||||
|
||||
if (sprite->data[0] > 90)
|
||||
{
|
||||
sprite->data[2]++;
|
||||
sprite->pos2.x -= sprite->data[2] / 2;
|
||||
sprite->x2 -= sprite->data[2] / 2;
|
||||
}
|
||||
|
||||
if (sprite->data[0] > 100)
|
||||
@@ -3527,8 +3527,8 @@ static void AnimAngel(struct Sprite *sprite)
|
||||
static void AnimPinkHeart_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[5]++;
|
||||
sprite->pos2.x = Sin(sprite->data[3], 5);
|
||||
sprite->pos2.y = sprite->data[5] / 2;
|
||||
sprite->x2 = Sin(sprite->data[3], 5);
|
||||
sprite->y2 = sprite->data[5] / 2;
|
||||
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
|
||||
if (sprite->data[5] > 20)
|
||||
sprite->invisible = sprite->data[5] % 2;
|
||||
@@ -3548,16 +3548,16 @@ static void AnimPinkHeart(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[4] >> 8;
|
||||
sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
|
||||
sprite->x2 = sprite->data[4] >> 8;
|
||||
sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
|
||||
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
|
||||
if (sprite->data[3] > 70)
|
||||
{
|
||||
sprite->callback = AnimPinkHeart_Step;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->data[3] = Random2() % 180;
|
||||
}
|
||||
}
|
||||
@@ -3567,8 +3567,8 @@ static void AnimDevil(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3] == 0)
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
StartSpriteAnim(sprite, 0);
|
||||
sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1;
|
||||
sprite->data[2] = 1;
|
||||
@@ -3577,8 +3577,8 @@ static void AnimDevil(struct Sprite *sprite)
|
||||
sprite->data[1] = (sprite->data[0] * 4) % 256;
|
||||
if (sprite->data[1] < 0)
|
||||
sprite->data[1] = 0;
|
||||
sprite->pos2.x = Cos(sprite->data[1], 30 - sprite->data[0] / 4);
|
||||
sprite->pos2.y = Sin(sprite->data[1], 10 - sprite->data[0] / 8);
|
||||
sprite->x2 = Cos(sprite->data[1], 30 - sprite->data[0] / 4);
|
||||
sprite->y2 = Sin(sprite->data[1], 10 - sprite->data[0] / 8);
|
||||
if (sprite->data[1] > 128 && sprite->data[2] > 0)
|
||||
sprite->data[2] = -1;
|
||||
if (sprite->data[1] == 0 && sprite->data[2] < 0)
|
||||
@@ -3596,8 +3596,8 @@ static void AnimFurySwipes(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->data[0]++;
|
||||
}
|
||||
@@ -3617,19 +3617,19 @@ static void AnimMovementWaves(struct Sprite *sprite)
|
||||
{
|
||||
if (!gBattleAnimArgs[0])
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
}
|
||||
|
||||
if (!gBattleAnimArgs[1])
|
||||
sprite->pos1.x += 32;
|
||||
sprite->x += 32;
|
||||
else
|
||||
sprite->pos1.x -= 32;
|
||||
sprite->x -= 32;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[1];
|
||||
@@ -3671,11 +3671,11 @@ static void AnimJaggedMusicNote(struct Sprite *sprite)
|
||||
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
|
||||
gBattleAnimArgs[1] *= -1;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + gBattleAnimArgs[1];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[2];
|
||||
sprite->x = GetBattlerSpriteCoord(battler, 2) + gBattleAnimArgs[1];
|
||||
sprite->y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[2];
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = (u16)sprite->pos1.x << 3;
|
||||
sprite->data[2] = (u16)sprite->pos1.y << 3;
|
||||
sprite->data[1] = (u16)sprite->x << 3;
|
||||
sprite->data[2] = (u16)sprite->y << 3;
|
||||
|
||||
var1 = gBattleAnimArgs[1] << 3;
|
||||
if (var1 < 0)
|
||||
@@ -3695,8 +3695,8 @@ static void AnimJaggedMusicNote_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] += sprite->data[3];
|
||||
sprite->data[2] += sprite->data[4];
|
||||
sprite->pos1.x = sprite->data[1] >> 3;
|
||||
sprite->pos1.y = sprite->data[2] >> 3;
|
||||
sprite->x = sprite->data[1] >> 3;
|
||||
sprite->y = sprite->data[2] >> 3;
|
||||
if (++sprite->data[0] > 16)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
@@ -3710,7 +3710,7 @@ static void AnimPerishSongMusicNote2(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
if (++sprite->data[0] == sprite->data[1])
|
||||
SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0);
|
||||
SetGrayscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0);
|
||||
|
||||
if (sprite->data[0] == sprite->data[1] + 80)
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -3723,8 +3723,8 @@ static void AnimPerishSongMusicNote(struct Sprite *sprite)
|
||||
|
||||
if (!sprite->data[0])
|
||||
{
|
||||
sprite->pos1.x = 120;
|
||||
sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15;
|
||||
sprite->x = 120;
|
||||
sprite->y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15;
|
||||
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
|
||||
|
||||
@@ -3740,9 +3740,9 @@ static void AnimPerishSongMusicNote(struct Sprite *sprite)
|
||||
sprite->data[6] = (sprite->data[6] + 10) & 0xFF;
|
||||
|
||||
index &= var2;
|
||||
sprite->pos2.x = Cos(index, 100);
|
||||
sprite->x2 = Cos(index, 100);
|
||||
|
||||
sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4);
|
||||
sprite->y2 = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4);
|
||||
|
||||
if (sprite->data[0] > sprite->data[5])
|
||||
{
|
||||
@@ -3770,7 +3770,7 @@ static void AnimPerishSongMusicNote_Step1(struct Sprite *sprite)
|
||||
static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[3] += sprite->data[2];
|
||||
sprite->pos2.y = sprite->data[3];
|
||||
sprite->y2 = sprite->data[3];
|
||||
|
||||
sprite->data[2]++;
|
||||
|
||||
@@ -3797,20 +3797,20 @@ static void AnimGuardRing(struct Sprite *sprite)
|
||||
{
|
||||
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
sprite->pos1.y += 40;
|
||||
SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y);
|
||||
sprite->y += 40;
|
||||
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40;
|
||||
}
|
||||
|
||||
sprite->data[0] = 13;
|
||||
sprite->data[2] = sprite->pos1.x;
|
||||
sprite->data[4] = sprite->pos1.y - 72;
|
||||
sprite->data[2] = sprite->x;
|
||||
sprite->data[4] = sprite->y - 72;
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
|
||||
+277
-277
File diff suppressed because it is too large
Load Diff
+53
-53
@@ -459,11 +459,11 @@ const struct SpriteTemplate gShockWaveProgressingBoltSpriteTemplate =
|
||||
static void AnimLightning(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->callback = AnimLightning_Step;
|
||||
}
|
||||
|
||||
@@ -476,9 +476,9 @@ static void AnimLightning_Step(struct Sprite *sprite)
|
||||
static void AnimUnusedSpinningFist(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->callback = AnimUnusedSpinningFist_Step;
|
||||
}
|
||||
@@ -491,18 +491,18 @@ static void AnimUnusedSpinningFist_Step(struct Sprite *sprite)
|
||||
|
||||
static void AnimUnusedCirclingShock(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->pos1.y -= gBattleAnimArgs[1];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
sprite->y -= gBattleAnimArgs[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
@@ -543,17 +543,17 @@ static void AnimSparkElectricity(struct Sprite *sprite)
|
||||
|
||||
if (gBattleAnimArgs[5] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y);
|
||||
sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
|
||||
sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
|
||||
sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
|
||||
sprite->x2 = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
|
||||
sprite->y2 = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
|
||||
|
||||
if (gBattleAnimArgs[6] & 1)
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
|
||||
@@ -573,9 +573,9 @@ static void AnimZapCannonSpark(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, 1);
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->data[5] = gBattleAnimArgs[2];
|
||||
@@ -590,8 +590,8 @@ static void AnimZapCannonSpark_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (!AnimTranslateLinear(sprite))
|
||||
{
|
||||
sprite->pos2.x += Sin(sprite->data[7], sprite->data[5]);
|
||||
sprite->pos2.y += Cos(sprite->data[7], sprite->data[5]);
|
||||
sprite->x2 += Sin(sprite->data[7], sprite->data[5]);
|
||||
sprite->y2 += Cos(sprite->data[7], sprite->data[5]);
|
||||
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
|
||||
if(!(sprite->data[7] % 3))
|
||||
sprite->invisible ^= 1;
|
||||
@@ -616,8 +616,8 @@ static void AnimThunderboltOrb(struct Sprite *sprite)
|
||||
if (IsContest() || GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
|
||||
sprite->data[3] = gBattleAnimArgs[0];
|
||||
sprite->data[4] = gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[3];
|
||||
@@ -637,8 +637,8 @@ static void AnimSparkElectricityFlashing(struct Sprite *sprite)
|
||||
if (IsContest() || GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[4] = gBattleAnimArgs[7] & 0x7FFF;
|
||||
sprite->data[5] = gBattleAnimArgs[2];
|
||||
@@ -652,8 +652,8 @@ static void AnimSparkElectricityFlashing(struct Sprite *sprite)
|
||||
|
||||
static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[7], sprite->data[5]);
|
||||
sprite->pos2.y = Cos(sprite->data[7], sprite->data[5]);
|
||||
sprite->x2 = Sin(sprite->data[7], sprite->data[5]);
|
||||
sprite->y2 = Cos(sprite->data[7], sprite->data[5]);
|
||||
|
||||
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
|
||||
if (sprite->data[7] % sprite->data[4] == 0)
|
||||
@@ -778,9 +778,9 @@ static void AnimThunderWave(struct Sprite *sprite)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority);
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->x + 32, sprite->y, sprite->subpriority);
|
||||
gSprites[spriteId].oam.tileNum += 8;
|
||||
gAnimVisualTaskCount++;
|
||||
gSprites[spriteId].callback = AnimThunderWave_Step;
|
||||
@@ -840,13 +840,13 @@ static void AnimTask_ElectricChargingParticles_Step(u8 taskId)
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
sprite->pos1.x += sElectricChargingParticleCoordOffsets[task->data[9]][0];
|
||||
sprite->pos1.y += sElectricChargingParticleCoordOffsets[task->data[9]][1];
|
||||
sprite->x += sElectricChargingParticleCoordOffsets[task->data[9]][0];
|
||||
sprite->y += sElectricChargingParticleCoordOffsets[task->data[9]][1];
|
||||
|
||||
sprite->data[0] = 40 - task->data[8] * 5;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = task->data[14];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = task->data[15];
|
||||
sprite->data[5] = taskId;
|
||||
|
||||
@@ -892,13 +892,13 @@ static void AnimGrowingChargeOrb(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
@@ -910,17 +910,17 @@ static void AnimElectricPuff(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
|
||||
sprite->pos2.x = gBattleAnimArgs[1];
|
||||
sprite->pos2.y = gBattleAnimArgs[2];
|
||||
sprite->x2 = gBattleAnimArgs[1];
|
||||
sprite->y2 = gBattleAnimArgs[2];
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
}
|
||||
@@ -929,8 +929,8 @@ static void AnimElectricPuff(struct Sprite *sprite)
|
||||
static void AnimVoltTackleOrbSlide(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->data[6] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
sprite->data[7] = 16;
|
||||
|
||||
@@ -949,9 +949,9 @@ static void AnimVoltTackleOrbSlide_Step(struct Sprite *sprite)
|
||||
sprite->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.x += sprite->data[7];
|
||||
gSprites[sprite->data[6]].pos2.x += sprite->data[7];
|
||||
if ((u16)(sprite->pos1.x + 80) > 400)
|
||||
sprite->x += sprite->data[7];
|
||||
gSprites[sprite->data[6]].x2 += sprite->data[7];
|
||||
if ((u16)(sprite->x + 80) > 400)
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
}
|
||||
@@ -976,7 +976,7 @@ void AnimTask_VoltTackleAttackerReappear(u8 taskId)
|
||||
task->data[13] = -2;
|
||||
}
|
||||
|
||||
gSprites[task->data[15]].pos2.x = task->data[14];
|
||||
gSprites[task->data[15]].x2 = task->data[14];
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -988,7 +988,7 @@ void AnimTask_VoltTackleAttackerReappear(u8 taskId)
|
||||
if (task->data[14])
|
||||
{
|
||||
task->data[14] += task->data[13];
|
||||
gSprites[task->data[15]].pos2.x = task->data[14];
|
||||
gSprites[task->data[15]].x2 = task->data[14];
|
||||
}
|
||||
else
|
||||
task->data[0]++;
|
||||
@@ -1131,8 +1131,8 @@ static void AnimGrowingShockWaveOrb(struct Sprite *sprite)
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
StartSpriteAffineAnim(sprite, 2);
|
||||
sprite->data[0]++;
|
||||
break;
|
||||
|
||||
+60
-60
@@ -412,7 +412,7 @@ const struct SpriteTemplate gFocusPunchFistSpriteTemplate =
|
||||
static void AnimUnusedHumanoidFoot(struct Sprite *sprite)
|
||||
{
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = 15;
|
||||
sprite->callback = WaitAnimForDuration;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
@@ -478,8 +478,8 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
|
||||
gBattleAnimArgs[2] = Random2() % 5;
|
||||
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(battler, 3);
|
||||
|
||||
xMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 2;
|
||||
yMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
|
||||
@@ -495,11 +495,11 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
|
||||
if ((gBattlerPositions[battler] & BIT_SIDE) == B_SIDE_PLAYER)
|
||||
y += 0xFFF0;
|
||||
|
||||
sprite->pos1.x += x;
|
||||
sprite->pos1.y += y;
|
||||
sprite->x += x;
|
||||
sprite->y += y;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[1];
|
||||
sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
|
||||
sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1);
|
||||
if (sprite->data[7] != 64)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
|
||||
@@ -534,15 +534,15 @@ static void AnimCrossChopHand(struct Sprite *sprite)
|
||||
|
||||
if (gBattleAnimArgs[2] == 0)
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x - 20;
|
||||
sprite->data[2] = sprite->x - 20;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x + 20;
|
||||
sprite->data[2] = sprite->x + 20;
|
||||
sprite->hFlip = 1;
|
||||
}
|
||||
|
||||
sprite->data[4] = sprite->pos1.y - 20;
|
||||
sprite->data[4] = sprite->y - 20;
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, AnimCrossChopHand_Step);
|
||||
}
|
||||
@@ -551,13 +551,13 @@ static void AnimCrossChopHand_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[5] == 11)
|
||||
{
|
||||
sprite->data[2] = sprite->pos1.x - sprite->pos2.x;
|
||||
sprite->data[4] = sprite->pos1.y - sprite->pos2.y;
|
||||
sprite->data[2] = sprite->x - sprite->x2;
|
||||
sprite->data[4] = sprite->y - sprite->y2;
|
||||
sprite->data[0] = 8;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
@@ -576,10 +576,10 @@ static void AnimSlidingKick(struct Sprite *sprite)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = sprite->x + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = sprite->y;
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
|
||||
@@ -594,7 +594,7 @@ static void AnimSlidingKick_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (!AnimTranslateLinear(sprite))
|
||||
{
|
||||
sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
|
||||
sprite->y2 += Sin(sprite->data[7] >> 8, sprite->data[5]);
|
||||
sprite->data[7] += sprite->data[6];
|
||||
}
|
||||
else
|
||||
@@ -674,8 +674,8 @@ static void AnimDizzyPunchDuck(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[4] >> 8;
|
||||
sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
|
||||
sprite->x2 = sprite->data[4] >> 8;
|
||||
sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
|
||||
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
|
||||
|
||||
if (sprite->data[3] > 100)
|
||||
@@ -691,17 +691,17 @@ static void AnimBrickBreakWall(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
}
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[1];
|
||||
sprite->pos1.y += gBattleAnimArgs[2];
|
||||
sprite->x += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
@@ -729,9 +729,9 @@ static void AnimBrickBreakWall_Step(struct Sprite *sprite)
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[3]++;
|
||||
if (sprite->data[3] & 1)
|
||||
sprite->pos2.x = 2;
|
||||
sprite->x2 = 2;
|
||||
else
|
||||
sprite->pos2.x = -2;
|
||||
sprite->x2 = -2;
|
||||
}
|
||||
|
||||
if (--sprite->data[2] == 0)
|
||||
@@ -745,13 +745,13 @@ static void AnimBrickBreakWallShard(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
|
||||
}
|
||||
|
||||
sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
|
||||
@@ -785,8 +785,8 @@ static void AnimBrickBreakWallShard(struct Sprite *sprite)
|
||||
|
||||
static void AnimBrickBreakWallShard_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += sprite->data[6];
|
||||
sprite->pos1.y += sprite->data[7];
|
||||
sprite->x += sprite->data[6];
|
||||
sprite->y += sprite->data[7];
|
||||
|
||||
if (++sprite->data[0] > 40)
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -796,8 +796,8 @@ static void AnimSuperpowerOrb(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
sprite->data[7] = gBattleAnimTarget;
|
||||
}
|
||||
@@ -820,9 +820,9 @@ static void AnimSuperpowerOrb_Step(struct Sprite *sprite)
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
|
||||
sprite->data[0] = 16;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
@@ -834,11 +834,11 @@ static void AnimSuperpowerOrb_Step(struct Sprite *sprite)
|
||||
// Floating rock that flies off to hit the target. Used by Superpower
|
||||
static void AnimSuperpowerRock(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[0];
|
||||
sprite->pos1.y = 120;
|
||||
sprite->x = gBattleAnimArgs[0];
|
||||
sprite->y = 120;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
|
||||
StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->y << 8));
|
||||
|
||||
sprite->data[6] = gBattleAnimArgs[1];
|
||||
sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
|
||||
@@ -857,8 +857,8 @@ static void AnimSuperpowerRock_Step1(struct Sprite *sprite)
|
||||
StorePointerInVars(&sprite->data[4], &sprite->data[5], var0);
|
||||
|
||||
var0 = (void *)(((intptr_t)var0) >> 8);
|
||||
sprite->pos1.y = (intptr_t)var0;
|
||||
if (sprite->pos1.y < -8)
|
||||
sprite->y = (intptr_t)var0;
|
||||
if (sprite->y < -8)
|
||||
DestroyAnimSprite(sprite);
|
||||
else
|
||||
sprite->data[0]--;
|
||||
@@ -872,8 +872,8 @@ static void AnimSuperpowerRock_Step1(struct Sprite *sprite)
|
||||
|
||||
sprite->data[0] = pos2 - pos0;
|
||||
sprite->data[1] = pos3 - pos1;
|
||||
sprite->data[2] = sprite->pos1.x << 4;
|
||||
sprite->data[3] = sprite->pos1.y << 4;
|
||||
sprite->data[2] = sprite->x << 4;
|
||||
sprite->data[3] = sprite->y << 4;
|
||||
|
||||
sprite->callback = AnimSuperpowerRock_Step2;
|
||||
}
|
||||
@@ -885,11 +885,11 @@ static void AnimSuperpowerRock_Step2(struct Sprite *sprite)
|
||||
|
||||
sprite->data[2] += sprite->data[0];
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->pos1.x = sprite->data[2] >> 4;
|
||||
sprite->pos1.y = sprite->data[3] >> 4;
|
||||
sprite->x = sprite->data[2] >> 4;
|
||||
sprite->y = sprite->data[3] >> 4;
|
||||
|
||||
edgeX = sprite->pos1.x + 8;
|
||||
if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
|
||||
edgeX = sprite->x + 8;
|
||||
if (edgeX > 256 || sprite->y < -8 || sprite->y > 120)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
@@ -899,8 +899,8 @@ static void AnimSuperpowerFireball(struct Sprite *sprite)
|
||||
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
|
||||
battler = gBattleAnimTarget;
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
|
||||
}
|
||||
@@ -916,9 +916,9 @@ static void AnimSuperpowerFireball(struct Sprite *sprite)
|
||||
sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP);
|
||||
|
||||
sprite->data[0] = 16;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(battler, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(battler, 3);
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
@@ -938,8 +938,8 @@ static void AnimArmThrustHit(struct Sprite *sprite)
|
||||
{
|
||||
u8 turn;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[0];
|
||||
sprite->data[3] = gBattleAnimArgs[1];
|
||||
@@ -956,8 +956,8 @@ static void AnimArmThrustHit(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
StartSpriteAnim(sprite, sprite->data[1]);
|
||||
sprite->pos2.x = sprite->data[2];
|
||||
sprite->pos2.y = sprite->data[3];
|
||||
sprite->x2 = sprite->data[2];
|
||||
sprite->y2 = sprite->data[3];
|
||||
sprite->callback = AnimArmThrustHit_Step;
|
||||
}
|
||||
|
||||
@@ -987,7 +987,7 @@ static void AnimFocusPunchFist(struct Sprite *sprite)
|
||||
if (sprite->affineAnimEnded)
|
||||
{
|
||||
sprite->data[1] = (sprite->data[1] + 40) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[1], 2);
|
||||
sprite->x2 = Sin(sprite->data[1], 2);
|
||||
if (++sprite->data[0] > 40)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
+77
-77
@@ -481,7 +481,7 @@ static void AnimFireSpread(struct Sprite *sprite)
|
||||
{
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = gBattleAnimArgs[3];
|
||||
@@ -496,14 +496,14 @@ static void AnimFirePlume(struct Sprite *sprite)
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[2] = -gBattleAnimArgs[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
}
|
||||
|
||||
@@ -518,14 +518,14 @@ static void AnimLargeFlame(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[2] = -gBattleAnimArgs[4];
|
||||
}
|
||||
|
||||
@@ -540,8 +540,8 @@ static void AnimLargeFlame_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] < sprite->data[4])
|
||||
{
|
||||
sprite->pos2.x += sprite->data[2];
|
||||
sprite->pos2.y += sprite->data[3];
|
||||
sprite->x2 += sprite->data[2];
|
||||
sprite->y2 += sprite->data[3];
|
||||
}
|
||||
|
||||
if (sprite->data[0] == sprite->data[1])
|
||||
@@ -554,15 +554,15 @@ static void AnimUnusedSmallEmber(struct Sprite *sprite)
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->subpriority = 8;
|
||||
}
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
@@ -580,8 +580,8 @@ static void AnimUnusedSmallEmber_Step(struct Sprite *sprite)
|
||||
if(sprite->data[5] > 10000)
|
||||
sprite->subpriority = 1;
|
||||
|
||||
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
|
||||
sprite->pos2.y = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
|
||||
sprite->x2 = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
|
||||
sprite->y2 = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
|
||||
|
||||
sprite->data[0] += sprite->data[2];
|
||||
sprite->data[5] += sprite->data[4];
|
||||
@@ -602,8 +602,8 @@ static void AnimUnusedSmallEmber_Step(struct Sprite *sprite)
|
||||
// Sunlight from Sunny Day / sunny weather
|
||||
static void AnimSunlight(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = 0;
|
||||
sprite->pos1.y = 0;
|
||||
sprite->x = 0;
|
||||
sprite->y = 0;
|
||||
sprite->data[0] = 60;
|
||||
sprite->data[2] = 140;
|
||||
sprite->data[4] = 80;
|
||||
@@ -664,9 +664,9 @@ static void AnimFireRing_Step1(struct Sprite *sprite)
|
||||
if (++sprite->data[0] == 0x12)
|
||||
{
|
||||
sprite->data[0] = 0x19;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
@@ -681,18 +681,18 @@ static void AnimFireRing_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
|
||||
sprite->callback = AnimFireRing_Step3;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.x += Sin(sprite->data[7], 28);
|
||||
sprite->pos2.y += Cos(sprite->data[7], 28);
|
||||
sprite->x2 += Sin(sprite->data[7], 28);
|
||||
sprite->y2 += Cos(sprite->data[7], 28);
|
||||
|
||||
sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
|
||||
}
|
||||
@@ -708,8 +708,8 @@ static void AnimFireRing_Step3(struct Sprite *sprite)
|
||||
|
||||
static void UpdateFireRingCircleOffset(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[7], 28);
|
||||
sprite->pos2.y = Cos(sprite->data[7], 28);
|
||||
sprite->x2 = Sin(sprite->data[7], 28);
|
||||
sprite->y2 = Cos(sprite->data[7], 28);
|
||||
|
||||
sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
|
||||
}
|
||||
@@ -722,8 +722,8 @@ static void UpdateFireRingCircleOffset(struct Sprite *sprite)
|
||||
// AnimFireCross(struct Sprite *sprite)
|
||||
static void AnimFireCross(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
@@ -760,8 +760,8 @@ static void AnimFireSpiralOutward_Step1(struct Sprite *sprite)
|
||||
|
||||
static void AnimFireSpiralOutward_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
|
||||
sprite->pos2.y = Cos(sprite->data[1], sprite->data[2] >> 8);
|
||||
sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
|
||||
sprite->y2 = Cos(sprite->data[1], sprite->data[2] >> 8);
|
||||
|
||||
sprite->data[1] = (sprite->data[1] + 10) & 0xFF;
|
||||
sprite->data[2] += 0xD0;
|
||||
@@ -781,7 +781,7 @@ void AnimTask_EruptionLaunchRocks(u8 taskId)
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
task->data[3] = 0;
|
||||
task->data[4] = gSprites[task->data[15]].pos1.y;
|
||||
task->data[4] = gSprites[task->data[15]].y;
|
||||
task->data[5] = GetBattlerSide(gBattleAnimAttacker);
|
||||
task->data[6] = 0;
|
||||
|
||||
@@ -805,9 +805,9 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
|
||||
task->data[1] = 0;
|
||||
|
||||
if (++task->data[2] & 0x1)
|
||||
gSprites[task->data[15]].pos2.x = 3;
|
||||
gSprites[task->data[15]].x2 = 3;
|
||||
else
|
||||
gSprites[task->data[15]].pos2.x = -3;
|
||||
gSprites[task->data[15]].x2 = -3;
|
||||
}
|
||||
|
||||
if (task->data[5] != B_SIDE_PLAYER)
|
||||
@@ -815,14 +815,14 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
|
||||
if (++task->data[3] > 4)
|
||||
{
|
||||
task->data[3] = 0;
|
||||
gSprites[task->data[15]].pos1.y++;
|
||||
gSprites[task->data[15]].y++;
|
||||
}
|
||||
}
|
||||
|
||||
if(!UpdateEruptAnimTask(task))
|
||||
{
|
||||
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
|
||||
gSprites[task->data[15]].pos2.x = 0;
|
||||
gSprites[task->data[15]].x2 = 0;
|
||||
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
@@ -855,9 +855,9 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
|
||||
task->data[1] = 0;
|
||||
|
||||
if (++task->data[2] & 1)
|
||||
gSprites[task->data[15]].pos2.y += 3;
|
||||
gSprites[task->data[15]].y2 += 3;
|
||||
else
|
||||
gSprites[task->data[15]].pos2.y -= 3;
|
||||
gSprites[task->data[15]].y2 -= 3;
|
||||
}
|
||||
|
||||
if (++task->data[3] > 0x18)
|
||||
@@ -868,7 +868,7 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
|
||||
PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 8);
|
||||
|
||||
if (task->data[2] & 1)
|
||||
gSprites[task->data[15]].pos2.y -= 3;
|
||||
gSprites[task->data[15]].y2 -= 3;
|
||||
|
||||
task->data[1] = 0;
|
||||
task->data[2] = 0;
|
||||
@@ -878,11 +878,11 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
|
||||
break;
|
||||
case 5:
|
||||
if (task->data[5] != B_SIDE_PLAYER)
|
||||
gSprites[task->data[15]].pos1.y--;
|
||||
gSprites[task->data[15]].y--;
|
||||
|
||||
if (!UpdateEruptAnimTask(task))
|
||||
{
|
||||
gSprites[task->data[15]].pos1.y = task->data[4];
|
||||
gSprites[task->data[15]].y = task->data[4];
|
||||
ResetSpriteRotScale(task->data[15]);
|
||||
task->data[2] = 0;
|
||||
task->data[0]++;
|
||||
@@ -903,7 +903,7 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3)
|
||||
s8 sign;
|
||||
|
||||
u16 y = GetEruptionLaunchRockInitialYPos(spriteId);
|
||||
u16 x = gSprites[spriteId].pos1.x;
|
||||
u16 x = gSprites[spriteId].x;
|
||||
|
||||
if(!GetBattlerSide(gBattleAnimAttacker))
|
||||
{
|
||||
@@ -949,7 +949,7 @@ static void AnimEruptionLaunchRock(struct Sprite *sprite)
|
||||
|
||||
static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId)
|
||||
{
|
||||
s16 y = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
|
||||
s16 y = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY;
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
y += 74;
|
||||
@@ -963,8 +963,8 @@ static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[2] = (u16)sprite->pos1.x * 8;
|
||||
sprite->data[3] = (u16)sprite->pos1.y * 8;
|
||||
sprite->data[2] = (u16)sprite->x * 8;
|
||||
sprite->data[3] = (u16)sprite->y * 8;
|
||||
sprite->data[4] = x * 8;
|
||||
sprite->data[5] = y * 8;
|
||||
}
|
||||
@@ -981,18 +981,18 @@ static void UpdateEruptionLaunchRockPos(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
sprite->data[2] += sprite->data[4];
|
||||
sprite->pos1.x = sprite->data[2] >> 3;
|
||||
sprite->x = sprite->data[2] >> 3;
|
||||
sprite->data[3] += sprite->data[5];
|
||||
sprite->pos1.y = sprite->data[3] >> 3;
|
||||
sprite->y = sprite->data[3] >> 3;
|
||||
|
||||
if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
|
||||
if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120)
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
static void AnimEruptionFallingRock(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[0];
|
||||
sprite->pos1.y = gBattleAnimArgs[1];
|
||||
sprite->x = gBattleAnimArgs[0];
|
||||
sprite->y = gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 0;
|
||||
@@ -1018,10 +1018,10 @@ static void AnimEruptionFallingRock_Step(struct Sprite *sprite)
|
||||
sprite->data[0]++;
|
||||
// fall through
|
||||
case 1:
|
||||
sprite->pos1.y += 8;
|
||||
if (sprite->pos1.y >= sprite->data[7])
|
||||
sprite->y += 8;
|
||||
if (sprite->y >= sprite->data[7])
|
||||
{
|
||||
sprite->pos1.y = sprite->data[7];
|
||||
sprite->y = sprite->data[7];
|
||||
sprite->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -1031,11 +1031,11 @@ static void AnimEruptionFallingRock_Step(struct Sprite *sprite)
|
||||
sprite->data[1] = 0;
|
||||
if ((++sprite->data[2] & 1) != 0)
|
||||
{
|
||||
sprite->pos2.y = -3;
|
||||
sprite->y2 = -3;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.y = 3;
|
||||
sprite->y2 = 3;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1072,14 +1072,14 @@ static void AnimWillOWispOrb(struct Sprite *sprite)
|
||||
sprite->data[1] += 192;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos2.y = -(sprite->data[1] >> 8);
|
||||
sprite->y2 = -(sprite->data[1] >> 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.y = sprite->data[1] >> 8;
|
||||
sprite->y2 = sprite->data[1] >> 8;
|
||||
}
|
||||
|
||||
sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
|
||||
sprite->x2 = Sin(sprite->data[2], sprite->data[4]);
|
||||
sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
|
||||
|
||||
if (++sprite->data[3] == 1)
|
||||
@@ -1089,20 +1089,20 @@ static void AnimWillOWispOrb(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
|
||||
sprite->x2 = Sin(sprite->data[2], sprite->data[4]);
|
||||
sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
|
||||
|
||||
if (++sprite->data[3] == 31)
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
|
||||
sprite->data[0] = 256;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
@@ -1119,7 +1119,7 @@ static void AnimWillOWispOrb_Step(struct Sprite *sprite)
|
||||
|
||||
if (!AnimTranslateLinear(sprite))
|
||||
{
|
||||
sprite->pos2.x += Sin(sprite->data[5], 16);
|
||||
sprite->x2 += Sin(sprite->data[5], 16);
|
||||
initialData5 = sprite->data[5];
|
||||
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
|
||||
newData5 = sprite->data[5];
|
||||
@@ -1146,8 +1146,8 @@ static void AnimWillOWispFire(struct Sprite *sprite)
|
||||
sprite->data[3] += 0xC0 * 2;
|
||||
sprite->data[4] += 0xA0;
|
||||
|
||||
sprite->pos2.x = Sin(sprite->data[1], sprite->data[3] >> 8);
|
||||
sprite->pos2.y = Cos(sprite->data[1], sprite->data[4] >> 8);
|
||||
sprite->x2 = Sin(sprite->data[1], sprite->data[3] >> 8);
|
||||
sprite->y2 = Cos(sprite->data[1], sprite->data[4] >> 8);
|
||||
|
||||
sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
|
||||
|
||||
@@ -1205,7 +1205,7 @@ static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
|
||||
|
||||
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
|
||||
{
|
||||
gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
|
||||
gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
|
||||
}
|
||||
|
||||
if (++task->data[9] == 16)
|
||||
@@ -1228,7 +1228,7 @@ static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
|
||||
|
||||
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
|
||||
{
|
||||
gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
|
||||
gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
|
||||
}
|
||||
|
||||
if (++task->data[9] == 96)
|
||||
@@ -1253,7 +1253,7 @@ static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
|
||||
|
||||
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
|
||||
{
|
||||
gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
|
||||
gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
|
||||
}
|
||||
|
||||
if (++task->data[9] == 16)
|
||||
@@ -1264,7 +1264,7 @@ static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
|
||||
case 3:
|
||||
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
|
||||
{
|
||||
gSprites[task->data[task->data[3] + 14]].pos2.x = 0;
|
||||
gSprites[task->data[task->data[3] + 14]].x2 = 0;
|
||||
}
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -1312,14 +1312,14 @@ void AnimTask_ShakeTargetInPattern(u8 taskId)
|
||||
dir = sShakeDirsPattern1[gTasks[taskId].tShakeNum % 10];
|
||||
|
||||
if (gTasks[taskId].tVertical == TRUE)
|
||||
gSprites[spriteId].pos2.y = gBattleAnimArgs[1] * dir < 0 ? -(gBattleAnimArgs[1] * dir) : gBattleAnimArgs[1] * dir;
|
||||
gSprites[spriteId].y2 = gBattleAnimArgs[1] * dir < 0 ? -(gBattleAnimArgs[1] * dir) : gBattleAnimArgs[1] * dir;
|
||||
else
|
||||
gSprites[spriteId].pos2.x = gBattleAnimArgs[1] * dir;
|
||||
gSprites[spriteId].x2 = gBattleAnimArgs[1] * dir;
|
||||
|
||||
if (gTasks[taskId].tShakeNum == gTasks[taskId].tMaxShakes)
|
||||
{
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].pos2.y = 0;
|
||||
gSprites[spriteId].x2 = 0;
|
||||
gSprites[spriteId].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
+75
-75
@@ -353,7 +353,7 @@ const struct SpriteTemplate gSkyAttackBirdSpriteTemplate =
|
||||
static void AnimEllipticalGust(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
sprite->pos1.y += 20;
|
||||
sprite->y += 20;
|
||||
sprite->data[1] = 191;
|
||||
sprite->callback = AnimEllipticalGust_Step;
|
||||
sprite->callback(sprite);
|
||||
@@ -361,8 +361,8 @@ static void AnimEllipticalGust(struct Sprite *sprite)
|
||||
|
||||
static void AnimEllipticalGust_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[1], 32);
|
||||
sprite->pos2.y = Cos(sprite->data[1], 8);
|
||||
sprite->x2 = Sin(sprite->data[1], 32);
|
||||
sprite->y2 = Cos(sprite->data[1], 8);
|
||||
sprite->data[1] += 5;
|
||||
sprite->data[1] &= 0xFF;
|
||||
if (++sprite->data[0] == 71)
|
||||
@@ -412,9 +412,9 @@ static void AnimGustToTarget(struct Sprite *sprite)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
@@ -443,10 +443,10 @@ static void AnimAirWaveCrescent(struct Sprite *sprite)
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
|
||||
if (gBattleAnimArgs[6] == 0)
|
||||
@@ -485,10 +485,10 @@ static void AnimFlyBallUp_Step(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
sprite->data[2] += sprite->data[1];
|
||||
sprite->pos2.y -= (sprite->data[2] >> 8);
|
||||
sprite->y2 -= (sprite->data[2] >> 8);
|
||||
}
|
||||
|
||||
if (sprite->pos1.y + sprite->pos2.y < -32)
|
||||
if (sprite->y + sprite->y2 < -32)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
@@ -496,20 +496,20 @@ static void AnimFlyBallAttack(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x = DISPLAY_WIDTH + 32;
|
||||
sprite->pos1.y = -32;
|
||||
sprite->x = DISPLAY_WIDTH + 32;
|
||||
sprite->y = -32;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = -32;
|
||||
sprite->pos1.y = -32;
|
||||
sprite->x = -32;
|
||||
sprite->y = -32;
|
||||
}
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[0];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
@@ -522,14 +522,14 @@ static void AnimFlyBallAttack_Step(struct Sprite *sprite)
|
||||
AnimTranslateLinear(sprite);
|
||||
if (((u16)sprite->data[3] >> 8) > 200)
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[3] &= 0xFF;
|
||||
}
|
||||
|
||||
if (sprite->pos1.x + sprite->pos2.x < -32
|
||||
|| sprite->pos1.x + sprite->pos2.x > DISPLAY_WIDTH + 32
|
||||
|| sprite->pos1.y + sprite->pos2.y > DISPLAY_HEIGHT)
|
||||
if (sprite->x + sprite->x2 < -32
|
||||
|| sprite->x + sprite->x2 > DISPLAY_WIDTH + 32
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT)
|
||||
{
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -584,11 +584,11 @@ static void AnimFallingFeather(struct Sprite *sprite)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
|
||||
sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
|
||||
spriteCoord = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
|
||||
sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
|
||||
sprite->y = spriteCoord + gBattleAnimArgs[1];
|
||||
|
||||
data->unk8 = sprite->pos1.y << 8;
|
||||
data->unk8 = sprite->y << 8;
|
||||
data->unkE_1 = spriteCoord + gBattleAnimArgs[6];
|
||||
data->unk0_0c = 1;
|
||||
data->unk2 = gBattleAnimArgs[2] & 0xFF;
|
||||
@@ -631,10 +631,10 @@ static void AnimFallingFeather(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
data->unk0_1 = data->unk2 >> 6;
|
||||
sprite->pos2.x = (gSineTable[data->unk2] * data->unkC[0]) >> 8;
|
||||
sprite->x2 = (gSineTable[data->unk2] * data->unkC[0]) >> 8;
|
||||
matrixNum = sprite->oam.matrixNum;
|
||||
|
||||
sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
|
||||
sinIndex = (-sprite->x2 >> 1) + data->unkA;
|
||||
spriteCoord = gSineTable[sinIndex];
|
||||
|
||||
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
|
||||
@@ -867,10 +867,10 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->pos2.x = ((s32)data->unkC[data->unk0_0b] * gSineTable[data->unk2]) >> 8;
|
||||
sprite->x2 = ((s32)data->unkC[data->unk0_0b] * gSineTable[data->unk2]) >> 8;
|
||||
matrixNum = sprite->oam.matrixNum;
|
||||
|
||||
sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
|
||||
sinIndex = (-sprite->x2 >> 1) + data->unkA;
|
||||
sinVal = gSineTable[sinIndex];
|
||||
|
||||
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
|
||||
@@ -878,13 +878,13 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
|
||||
gOamMatrices[matrixNum].c = -sinVal;
|
||||
|
||||
data->unk8 += data->unk6;
|
||||
sprite->pos1.y = data->unk8 >> 8;
|
||||
sprite->y = data->unk8 >> 8;
|
||||
if (data->unk4 & 0x8000)
|
||||
data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF;
|
||||
else
|
||||
data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF;
|
||||
|
||||
if (sprite->pos1.y + sprite->pos2.y >= data->unkE_1)
|
||||
if (sprite->y + sprite->y2 >= data->unkE_1)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->callback = DestroyAnimSpriteAfterTimer;
|
||||
@@ -895,8 +895,8 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
|
||||
static void AnimUnusedBubbleThrow(struct Sprite *sprite)
|
||||
{
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
||||
}
|
||||
|
||||
@@ -913,16 +913,16 @@ static void AnimWhirlwindLine(struct Sprite * sprite)
|
||||
if ((gBattleAnimArgs[2] == ANIM_ATTACKER && !GetBattlerSide(gBattleAnimAttacker))
|
||||
|| (gBattleAnimArgs[2] == ANIM_TARGET && !GetBattlerSide(gBattleAnimTarget)))
|
||||
{
|
||||
sprite->pos1.x += 8;
|
||||
sprite->x += 8;
|
||||
}
|
||||
|
||||
SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
|
||||
sprite->pos1.x -= 32;
|
||||
sprite->x -= 32;
|
||||
sprite->data[1] = 0x0ccc;
|
||||
|
||||
offset = gBattleAnimArgs[4];
|
||||
mult = 12;
|
||||
sprite->pos2.x += mult * offset;
|
||||
sprite->x2 += mult * offset;
|
||||
sprite->data[0] = offset;
|
||||
sprite->data[7] = gBattleAnimArgs[3];
|
||||
sprite->callback = AnimWhirlwindLine_Step;
|
||||
@@ -930,12 +930,12 @@ static void AnimWhirlwindLine(struct Sprite * sprite)
|
||||
|
||||
static void AnimWhirlwindLine_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x += sprite->data[1] >> 8;
|
||||
sprite->x2 += sprite->data[1] >> 8;
|
||||
|
||||
if (++sprite->data[0] == 6)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x2 = 0;
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
|
||||
@@ -987,18 +987,18 @@ static void AnimBounceBallLand(struct Sprite *sprite)
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->pos2.y = -sprite->pos1.y - 32;
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->y2 = -sprite->y - 32;
|
||||
sprite->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.y += 10;
|
||||
if (sprite->pos2.y >= 0)
|
||||
sprite->y2 += 10;
|
||||
if (sprite->y2 >= 0)
|
||||
++sprite->data[0];
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.y -= 10;
|
||||
if (sprite->pos1.y + sprite->pos2.y < -32)
|
||||
sprite->y2 -= 10;
|
||||
if (sprite->y + sprite->y2 < -32)
|
||||
{
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -1022,10 +1022,10 @@ void AnimDiveBall_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0]--;
|
||||
}
|
||||
else if (sprite->pos1.y + sprite->pos2.y > -32)
|
||||
else if (sprite->y + sprite->y2 > -32)
|
||||
{
|
||||
sprite->data[2] += sprite->data[1];
|
||||
sprite->pos2.y -= (sprite->data[2] >> 8);
|
||||
sprite->y2 -= (sprite->data[2] >> 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1037,12 +1037,12 @@ void AnimDiveBall_Step1(struct Sprite *sprite)
|
||||
|
||||
static void AnimDiveBall_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y += sprite->data[2] >> 8;
|
||||
sprite->y2 += sprite->data[2] >> 8;
|
||||
|
||||
if (sprite->pos1.y + sprite->pos2.y > -32)
|
||||
if (sprite->y + sprite->y2 > -32)
|
||||
sprite->invisible = FALSE;
|
||||
|
||||
if (sprite->pos2.y > 0)
|
||||
if (sprite->y2 > 0)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
@@ -1056,13 +1056,13 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
|
||||
case 0:
|
||||
if (!gBattleAnimArgs[0])
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
}
|
||||
|
||||
sprite->data[1] = 0x200;
|
||||
@@ -1089,7 +1089,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
|
||||
t2 = 128;
|
||||
|
||||
t2 = (64 - t2) / 2;
|
||||
sprite->pos2.y = t2;
|
||||
sprite->y2 = t2;
|
||||
|
||||
if (sprite->data[2] == 24)
|
||||
{
|
||||
@@ -1123,13 +1123,13 @@ static void AnimSprayWaterDroplet(struct Sprite *sprite)
|
||||
|
||||
if (gBattleAnimArgs[1] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
|
||||
}
|
||||
|
||||
sprite->callback = AnimSprayWaterDroplet_Step;
|
||||
@@ -1139,13 +1139,13 @@ static void AnimSprayWaterDroplet_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[2] == 0)
|
||||
{
|
||||
sprite->pos2.x += sprite->data[0] >> 8;
|
||||
sprite->pos2.y -= sprite->data[1] >> 8;
|
||||
sprite->x2 += sprite->data[0] >> 8;
|
||||
sprite->y2 -= sprite->data[1] >> 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.x -= sprite->data[0] >> 8;
|
||||
sprite->pos2.y -= sprite->data[1] >> 8;
|
||||
sprite->x2 -= sprite->data[0] >> 8;
|
||||
sprite->y2 -= sprite->data[1] >> 8;
|
||||
}
|
||||
|
||||
sprite->data[0] = sprite->data[0];
|
||||
@@ -1187,19 +1187,19 @@ static void AnimUnusedFlashingLight_Step(struct Sprite *sprite)
|
||||
static void AnimSkyAttackBird(struct Sprite *sprite)
|
||||
{
|
||||
u16 rotation;
|
||||
s16 posx = sprite->pos1.x;
|
||||
s16 posy = sprite->pos1.y;
|
||||
s16 posx = sprite->x;
|
||||
s16 posy = sprite->y;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
|
||||
sprite->data[4] = sprite->pos1.x << 4;
|
||||
sprite->data[5] = sprite->pos1.y << 4;
|
||||
sprite->data[4] = sprite->x << 4;
|
||||
sprite->data[5] = sprite->y << 4;
|
||||
|
||||
sprite->data[6] = ((posx - sprite->pos1.x) << 4) / 12;
|
||||
sprite->data[7] = ((posy - sprite->pos1.y) << 4) / 12;
|
||||
sprite->data[6] = ((posx - sprite->x) << 4) / 12;
|
||||
sprite->data[7] = ((posy - sprite->y) << 4) / 12;
|
||||
|
||||
rotation = ArcTan2Neg(posx - sprite->pos1.x, posy - sprite->pos1.y);
|
||||
rotation = ArcTan2Neg(posx - sprite->x, posy - sprite->y);
|
||||
rotation -= 16384;
|
||||
|
||||
TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation);
|
||||
@@ -1212,11 +1212,11 @@ void AnimSkyAttackBird_Step(struct Sprite *sprite)
|
||||
sprite->data[4] += sprite->data[6];
|
||||
sprite->data[5] += sprite->data[7];
|
||||
|
||||
sprite->pos1.x = sprite->data[4] >> 4;
|
||||
sprite->pos1.y = sprite->data[5] >> 4;
|
||||
sprite->x = sprite->data[4] >> 4;
|
||||
sprite->y = sprite->data[5] >> 4;
|
||||
|
||||
if (sprite->pos1.x > 285 || sprite->pos1.x < -45
|
||||
|| sprite->pos1.y > 157 || sprite->pos1.y < -45)
|
||||
if (sprite->x > 285 || sprite->x < -45
|
||||
|| sprite->y > 157 || sprite->y < -45)
|
||||
DestroySpriteAndMatrix(sprite);
|
||||
}
|
||||
|
||||
|
||||
+48
-48
@@ -221,9 +221,9 @@ static void AnimConfuseRayBallBounce(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
sprite->callback = AnimConfuseRayBallBounce_Step1;
|
||||
@@ -243,8 +243,8 @@ static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite)
|
||||
return;
|
||||
}
|
||||
|
||||
sprite->pos2.x += Sin(sprite->data[5], 10);
|
||||
sprite->pos2.y += Cos(sprite->data[5], 15);
|
||||
sprite->x2 += Sin(sprite->data[5], 10);
|
||||
sprite->y2 += Cos(sprite->data[5], 15);
|
||||
r2 = sprite->data[5];
|
||||
sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
|
||||
r0 = sprite->data[5];
|
||||
@@ -261,8 +261,8 @@ static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite)
|
||||
s16 r0;
|
||||
sprite->data[0] = 1;
|
||||
AnimTranslateLinear(sprite);
|
||||
sprite->pos2.x += Sin(sprite->data[5], 10);
|
||||
sprite->pos2.y += Cos(sprite->data[5], 15);
|
||||
sprite->x2 += Sin(sprite->data[5], 10);
|
||||
sprite->y2 += Cos(sprite->data[5], 15);
|
||||
|
||||
r2 = sprite->data[5];
|
||||
sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
|
||||
@@ -318,8 +318,8 @@ static void AnimConfuseRayBallSpiral(struct Sprite *sprite)
|
||||
static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite)
|
||||
{
|
||||
u16 temp1;
|
||||
sprite->pos2.x = Sin(sprite->data[0], 32);
|
||||
sprite->pos2.y = Cos(sprite->data[0], 8);
|
||||
sprite->x2 = Sin(sprite->data[0], 32);
|
||||
sprite->y2 = Cos(sprite->data[0], 8);
|
||||
temp1 = sprite->data[0] - 65;
|
||||
if (temp1 <= 130)
|
||||
sprite->oam.priority = 2;
|
||||
@@ -327,7 +327,7 @@ static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite)
|
||||
sprite->oam.priority = 1;
|
||||
sprite->data[0] = (sprite->data[0] + 19) & 0xFF;
|
||||
sprite->data[2] += 80;
|
||||
sprite->pos2.y += sprite->data[2] >> 8;
|
||||
sprite->y2 += sprite->data[2] >> 8;
|
||||
sprite->data[7] += 1;
|
||||
if (sprite->data[7] == 61)
|
||||
DestroyAnimSprite(sprite);
|
||||
@@ -397,19 +397,19 @@ static void AnimTask_NightShadeClone_Step2(u8 taskId)
|
||||
// arg 2: duration step 3 (center -> target)
|
||||
static void AnimShadowBall(struct Sprite *sprite)
|
||||
{
|
||||
s16 oldPosX = sprite->pos1.x;
|
||||
s16 oldPosY = sprite->pos1.y;
|
||||
s16 oldPosX = sprite->x;
|
||||
s16 oldPosY = sprite->y;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = gBattleAnimArgs[0];
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
sprite->data[3] = gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->pos1.x << 4;
|
||||
sprite->data[5] = sprite->pos1.y << 4;
|
||||
sprite->data[6] = ((oldPosX - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1);
|
||||
sprite->data[7] = ((oldPosY - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1);
|
||||
sprite->data[4] = sprite->x << 4;
|
||||
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 = AnimShadowBall_Step;
|
||||
}
|
||||
|
||||
@@ -420,8 +420,8 @@ static void AnimShadowBall_Step(struct Sprite *sprite)
|
||||
case 0:
|
||||
sprite->data[4] += sprite->data[6];
|
||||
sprite->data[5] += sprite->data[7];
|
||||
sprite->pos1.x = sprite->data[4] >> 4;
|
||||
sprite->pos1.y = sprite->data[5] >> 4;
|
||||
sprite->x = sprite->data[4] >> 4;
|
||||
sprite->y = sprite->data[5] >> 4;
|
||||
sprite->data[1] -= 1;
|
||||
if (sprite->data[1] > 0)
|
||||
break;
|
||||
@@ -433,22 +433,22 @@ static void AnimShadowBall_Step(struct Sprite *sprite)
|
||||
break;
|
||||
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[4] = sprite->pos1.x << 4;
|
||||
sprite->data[5] = sprite->pos1.y << 4;
|
||||
sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3];
|
||||
sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3];
|
||||
sprite->data[4] = sprite->x << 4;
|
||||
sprite->data[5] = sprite->y << 4;
|
||||
sprite->data[6] = ((sprite->data[1] - sprite->x) << 4) / sprite->data[3];
|
||||
sprite->data[7] = ((sprite->data[2] - sprite->y) << 4) / sprite->data[3];
|
||||
sprite->data[0] += 1;
|
||||
break;
|
||||
case 2:
|
||||
sprite->data[4] += sprite->data[6];
|
||||
sprite->data[5] += sprite->data[7];
|
||||
sprite->pos1.x = sprite->data[4] >> 4;
|
||||
sprite->pos1.y = sprite->data[5] >> 4;
|
||||
sprite->x = sprite->data[4] >> 4;
|
||||
sprite->y = sprite->data[5] >> 4;
|
||||
sprite->data[3] -= 1;
|
||||
if (sprite->data[3] > 0)
|
||||
break;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
sprite->data[0] += 1;
|
||||
break;
|
||||
case 3:
|
||||
@@ -648,7 +648,7 @@ static void AnimTask_SpiteTargetShadow_Step1(u8 taskId)
|
||||
task->data[15]++;
|
||||
break;
|
||||
case 2:
|
||||
startLine = gSprites[task->data[13]].pos1.y + gSprites[task->data[13]].pos2.y - 32;
|
||||
startLine = gSprites[task->data[13]].y + gSprites[task->data[13]].y2 - 32;
|
||||
if (startLine < 0)
|
||||
startLine = 0;
|
||||
|
||||
@@ -770,8 +770,8 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite)
|
||||
sprite->data[6] = battler2Y;
|
||||
sprite->data[7] = sprite->data[4] / 2;
|
||||
sprite->oam.priority = 2;
|
||||
sprite->pos1.x = battler1X;
|
||||
sprite->pos1.y = battler1Y;
|
||||
sprite->x = battler1X;
|
||||
sprite->y = battler1Y;
|
||||
sprite->callback = AnimDestinyBondWhiteShadow_Step;
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
@@ -782,8 +782,8 @@ static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] += sprite->data[2];
|
||||
sprite->data[1] += sprite->data[3];
|
||||
sprite->pos1.x = sprite->data[0] >> 4;
|
||||
sprite->pos1.y = sprite->data[1] >> 4;
|
||||
sprite->x = sprite->data[0] >> 4;
|
||||
sprite->y = sprite->data[1] >> 4;
|
||||
if (--sprite->data[4] == 0)
|
||||
sprite->data[0] = 0;
|
||||
}
|
||||
@@ -1047,7 +1047,7 @@ static void AnimCurseNail(struct Sprite *sprite)
|
||||
xDelta2 = 2;
|
||||
}
|
||||
|
||||
sprite->pos1.x += xDelta;
|
||||
sprite->x += xDelta;
|
||||
sprite->data[1] = xDelta2;
|
||||
sprite->data[0] = 60;
|
||||
sprite->callback = AnimCurseNail_Step1;
|
||||
@@ -1063,12 +1063,12 @@ static void AnimCurseNail_Step1(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.x += sprite->data[1];
|
||||
var0 = sprite->pos2.x + 7;
|
||||
sprite->x2 += sprite->data[1];
|
||||
var0 = sprite->x2 + 7;
|
||||
if (var0 > 14)
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->x2 = 0;
|
||||
sprite->oam.tileNum += 8;
|
||||
if (++sprite->data[2] == 3)
|
||||
{
|
||||
@@ -1125,13 +1125,13 @@ static void AnimGhostStatusSprite(struct Sprite *sprite)
|
||||
u16 coeffB;
|
||||
u16 coeffA;
|
||||
|
||||
sprite->pos2.x = Sin(sprite->data[0], 12);
|
||||
sprite->x2 = Sin(sprite->data[0], 12);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos2.x = -sprite->pos2.x;
|
||||
sprite->x2 = -sprite->x2;
|
||||
|
||||
sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
|
||||
sprite->data[1] += 0x100;
|
||||
sprite->pos2.y = -(sprite->data[1] >> 8);
|
||||
sprite->y2 = -(sprite->data[1] >> 8);
|
||||
|
||||
sprite->data[7]++;
|
||||
if (sprite->data[7] == 1)
|
||||
@@ -1284,7 +1284,7 @@ static void AnimGrudgeFlame(struct Sprite *sprite)
|
||||
sprite->data[2] -= 2;
|
||||
|
||||
sprite->data[2] &= 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[2], sprite->data[3]);
|
||||
sprite->x2 = Sin(sprite->data[2], sprite->data[3]);
|
||||
|
||||
index = sprite->data[2] - 65;
|
||||
if (index < 127)
|
||||
@@ -1294,7 +1294,7 @@ static void AnimGrudgeFlame(struct Sprite *sprite)
|
||||
|
||||
sprite->data[5]++;
|
||||
sprite->data[6] = (sprite->data[5] * 8) & 0xFF;
|
||||
sprite->pos2.y = Sin(sprite->data[6], 7);
|
||||
sprite->y2 = Sin(sprite->data[6], 7);
|
||||
if (gTasks[sprite->data[0]].data[8])
|
||||
{
|
||||
gTasks[sprite->data[0]].data[7]--;
|
||||
@@ -1312,7 +1312,7 @@ static void AnimMonMoveCircular(struct Sprite *sprite)
|
||||
sprite->data[3] = gBattleAnimArgs[1];
|
||||
sprite->callback = AnimMonMoveCircular_Step;
|
||||
|
||||
gSprites[sprite->data[5]].pos1.y += 8;
|
||||
gSprites[sprite->data[5]].y += 8;
|
||||
}
|
||||
|
||||
static void AnimMonMoveCircular_Step(struct Sprite *sprite)
|
||||
@@ -1320,17 +1320,17 @@ static void AnimMonMoveCircular_Step(struct Sprite *sprite)
|
||||
if (sprite->data[3])
|
||||
{
|
||||
sprite->data[3]--;
|
||||
gSprites[sprite->data[5]].pos2.x = Sin(sprite->data[0], sprite->data[1]);
|
||||
gSprites[sprite->data[5]].pos2.y = Cos(sprite->data[0], sprite->data[1]);
|
||||
gSprites[sprite->data[5]].x2 = Sin(sprite->data[0], sprite->data[1]);
|
||||
gSprites[sprite->data[5]].y2 = Cos(sprite->data[0], sprite->data[1]);
|
||||
sprite->data[0] += sprite->data[2];
|
||||
if (sprite->data[0] > 255)
|
||||
sprite->data[0] -= 256;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[sprite->data[5]].pos2.x = 0;
|
||||
gSprites[sprite->data[5]].pos2.y = 0;
|
||||
gSprites[sprite->data[5]].pos1.y -= 8;
|
||||
gSprites[sprite->data[5]].x2 = 0;
|
||||
gSprites[sprite->data[5]].y2 = 0;
|
||||
gSprites[sprite->data[5]].y -= 8;
|
||||
sprite->callback = DestroySpriteAndMatrix;
|
||||
}
|
||||
}
|
||||
|
||||
+33
-33
@@ -141,8 +141,8 @@ const struct SpriteTemplate gDirtMoundSpriteTemplate =
|
||||
// a boomerang. After hitting the target mon, it comes back to the user.
|
||||
static void AnimBonemerangProjectile(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
sprite->data[0] = 20;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
@@ -155,10 +155,10 @@ static void AnimBonemerangProjectile_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[0] = 20;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
|
||||
@@ -234,16 +234,16 @@ static void AnimMudSportDirt(struct Sprite *sprite)
|
||||
sprite->oam.tileNum++;
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1;
|
||||
sprite->callback = AnimMudSportDirtRising;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[1];
|
||||
sprite->pos1.y = gBattleAnimArgs[2];
|
||||
sprite->pos2.y = -gBattleAnimArgs[2];
|
||||
sprite->x = gBattleAnimArgs[1];
|
||||
sprite->y = gBattleAnimArgs[2];
|
||||
sprite->y2 = -gBattleAnimArgs[2];
|
||||
sprite->callback = AnimMudSportDirtFalling;
|
||||
}
|
||||
}
|
||||
@@ -253,11 +253,11 @@ static void AnimMudSportDirtRising(struct Sprite *sprite)
|
||||
if (++sprite->data[1] > 1)
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
sprite->pos1.x += sprite->data[0];
|
||||
sprite->x += sprite->data[0];
|
||||
}
|
||||
|
||||
sprite->pos1.y -= 4;
|
||||
if (sprite->pos1.y < -4)
|
||||
sprite->y -= 4;
|
||||
if (sprite->y < -4)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
@@ -266,10 +266,10 @@ static void AnimMudSportDirtFalling(struct Sprite *sprite)
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y += 4;
|
||||
if (sprite->pos2.y >= 0)
|
||||
sprite->y2 += 4;
|
||||
if (sprite->y2 >= 0)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -353,7 +353,7 @@ static void AnimTask_DigBounceMovement(u8 taskId)
|
||||
else
|
||||
gBattle_BG2_Y = task->data[13] - task->data[5];
|
||||
|
||||
gSprites[task->data[10]].pos2.x = DISPLAY_WIDTH + 32 - gSprites[task->data[10]].pos1.x;
|
||||
gSprites[task->data[10]].x2 = DISPLAY_WIDTH + 32 - gSprites[task->data[10]].x;
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -372,8 +372,8 @@ static void AnimTask_DigEndBounceMovementSetInvisible(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].pos2.y = 0;
|
||||
gSprites[spriteId].x2 = 0;
|
||||
gSprites[spriteId].y2 = 0;
|
||||
|
||||
if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
|
||||
gBattle_BG1_Y = 0;
|
||||
@@ -404,8 +404,8 @@ static void AnimTask_DigSetVisibleUnderground(u8 taskId)
|
||||
case 0:
|
||||
task->data[10] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
gSprites[task->data[10]].invisible = FALSE;
|
||||
gSprites[task->data[10]].pos2.x = 0;
|
||||
gSprites[task->data[10]].pos2.y = DISPLAY_HEIGHT - gSprites[task->data[10]].pos1.y;
|
||||
gSprites[task->data[10]].x2 = 0;
|
||||
gSprites[task->data[10]].y2 = DISPLAY_HEIGHT - gSprites[task->data[10]].y;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -438,12 +438,12 @@ static void AnimTask_DigRiseUpFromHole(u8 taskId)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
gSprites[task->data[10]].pos2.y = 96;
|
||||
gSprites[task->data[10]].y2 = 96;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
gSprites[task->data[10]].pos2.y -= 8;
|
||||
if (gSprites[task->data[10]].pos2.y == 0)
|
||||
gSprites[task->data[10]].y2 -= 8;
|
||||
if (gSprites[task->data[10]].y2 == 0)
|
||||
{
|
||||
gScanlineEffect.state = 3;
|
||||
task->data[0]++;
|
||||
@@ -518,11 +518,11 @@ void AnimDirtPlumeParticle(struct Sprite *sprite)
|
||||
gBattleAnimArgs[2] *= -1;
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + xOffset;
|
||||
sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 30;
|
||||
sprite->x = GetBattlerSpriteCoord(battler, 2) + xOffset;
|
||||
sprite->y = GetBattlerYCoordWithElevation(battler) + 30;
|
||||
sprite->data[0] = gBattleAnimArgs[5];
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
|
||||
sprite->data[2] = sprite->x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[3];
|
||||
sprite->data[5] = gBattleAnimArgs[4];
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimDirtPlumeParticle_Step;
|
||||
@@ -549,8 +549,8 @@ static void AnimDigDirtMound(struct Sprite *sprite)
|
||||
else
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
|
||||
sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 32;
|
||||
sprite->x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
|
||||
sprite->y = GetBattlerYCoordWithElevation(battler) + 32;
|
||||
sprite->oam.tileNum += gBattleAnimArgs[1] * 8;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
@@ -698,7 +698,7 @@ static void AnimTask_ShakeBattlers(u8 taskId)
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < task->tNumBattlers; i++)
|
||||
gSprites[task->tbattlerSpriteIds(i)].pos2.x = 0;
|
||||
gSprites[task->tbattlerSpriteIds(i)].x2 = 0;
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
@@ -717,7 +717,7 @@ static void SetBattlersXOffsetForShake(struct Task *task)
|
||||
|
||||
for (i = 0; i < task->tNumBattlers; i++)
|
||||
{
|
||||
gSprites[task->tbattlerSpriteIds(i)].pos2.x = xOffset;
|
||||
gSprites[task->tbattlerSpriteIds(i)].x2 = xOffset;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+91
-91
@@ -550,8 +550,8 @@ static void AnimUnusedIceCrystalThrow(struct Sprite *sprite)
|
||||
attackerX += sprite->data[1], attackerY += sprite->data[2])
|
||||
;
|
||||
|
||||
sprite->pos1.x = attackerX;
|
||||
sprite->pos1.y = attackerY;
|
||||
sprite->x = attackerX;
|
||||
sprite->y = attackerY;
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = attackerX;
|
||||
sprite->data[2] = targetX;
|
||||
@@ -569,10 +569,10 @@ static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[5] += sprite->data[1];
|
||||
sprite->data[6] += sprite->data[2];
|
||||
sprite->pos2.x = sprite->data[5];
|
||||
sprite->pos2.y = sprite->data[6];
|
||||
sprite->pos2.x += Sin(sprite->data[7], sprite->data[3]);
|
||||
sprite->pos2.y += Sin(sprite->data[7], sprite->data[3]);
|
||||
sprite->x2 = sprite->data[5];
|
||||
sprite->y2 = sprite->data[6];
|
||||
sprite->x2 += Sin(sprite->data[7], sprite->data[3]);
|
||||
sprite->y2 += Sin(sprite->data[7], sprite->data[3]);
|
||||
sprite->data[7] = (sprite->data[7] + sprite->data[4]) & 0xFF;
|
||||
sprite->data[0]--;
|
||||
}
|
||||
@@ -631,12 +631,12 @@ static void AnimIceEffectParticle(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->x, &sprite->y);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, AnimFlickerIceEffectParticle);
|
||||
@@ -666,8 +666,8 @@ static void AnimSwirlingSnowball(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
|
||||
if (!gBattleAnimArgs[5])
|
||||
{
|
||||
@@ -696,16 +696,16 @@ static void AnimSwirlingSnowball(struct Sprite *sprite)
|
||||
sprite->data[0] = 1;
|
||||
AnimFastTranslateLinear(sprite);
|
||||
|
||||
if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > DISPLAY_WIDTH + 32
|
||||
|| sprite->pos1.y + sprite->pos2.y > DISPLAY_HEIGHT
|
||||
|| sprite->pos1.y + sprite->pos2.y < -16)
|
||||
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
sprite->data[i] = tempDataHolder[i];
|
||||
@@ -718,10 +718,10 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
|
||||
{
|
||||
s16 tempVar;
|
||||
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[0] = 128;
|
||||
|
||||
tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
|
||||
@@ -740,17 +740,17 @@ static void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
|
||||
|
||||
if (sprite->data[5] <= 31)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], tempVar) - sprite->data[3];
|
||||
sprite->pos2.y = Cos(sprite->data[0], 15) - sprite->data[4];
|
||||
sprite->x2 = Sin(sprite->data[0], tempVar) - sprite->data[3];
|
||||
sprite->y2 = Cos(sprite->data[0], 15) - sprite->data[4];
|
||||
sprite->data[0] = (sprite->data[0] + 16) & 0xFF;
|
||||
sprite->data[5] += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[3] = 0;
|
||||
sprite->callback = AnimSwirlingSnowball_End;
|
||||
@@ -762,9 +762,9 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite)
|
||||
sprite->data[0] = 1;
|
||||
AnimFastTranslateLinear(sprite);
|
||||
|
||||
if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > DISPLAY_WIDTH + 32
|
||||
|| sprite->pos1.y + sprite->pos2.y > 256
|
||||
|| sprite->pos1.y + sprite->pos2.y < -16)
|
||||
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
|
||||
|| sprite->y + sprite->y2 > 256
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
@@ -786,8 +786,8 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
|
||||
if (!gBattleAnimArgs[7])
|
||||
{
|
||||
@@ -816,16 +816,16 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 1;
|
||||
AnimFastTranslateLinear(sprite);
|
||||
if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > DISPLAY_WIDTH + 32
|
||||
|| sprite->pos1.y + sprite->pos2.y > DISPLAY_HEIGHT
|
||||
|| sprite->pos1.y + sprite->pos2.y < -16)
|
||||
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
sprite->data[i] = tempDataHolder[i];
|
||||
@@ -842,13 +842,13 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite)
|
||||
if (sprite->data[0] == 0)
|
||||
sprite->data[0] = 1;
|
||||
|
||||
sprite->pos2.y += Sin(sprite->data[7], sprite->data[5]);
|
||||
sprite->y2 += Sin(sprite->data[7], sprite->data[5]);
|
||||
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
|
||||
if (sprite->data[0] == 1)
|
||||
{
|
||||
if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > DISPLAY_WIDTH + 32
|
||||
|| sprite->pos1.y + sprite->pos2.y > DISPLAY_HEIGHT
|
||||
|| sprite->pos1.y + sprite->pos2.y < -16)
|
||||
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
|
||||
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|
||||
|| sprite->y + sprite->y2 < -16)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
@@ -867,13 +867,13 @@ static void AnimWaveFromCenterOfTarget(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
sprite->data[0]++;
|
||||
@@ -905,13 +905,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
battler = gBattleAnimAttacker;
|
||||
@@ -924,13 +924,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
|
||||
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
battler = gBattleAnimTarget;
|
||||
@@ -944,13 +944,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
|
||||
|
||||
sprite->data[6] = tempVar;
|
||||
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
|
||||
sprite->pos1.y += 8;
|
||||
sprite->y += 8;
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[2];
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
|
||||
@@ -964,8 +964,8 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite)
|
||||
{
|
||||
if (!AnimTranslateLinear(sprite))
|
||||
{
|
||||
sprite->pos2.x += Sin(sprite->data[5], sprite->data[6]);
|
||||
sprite->pos2.y += Cos(sprite->data[5], -6);
|
||||
sprite->x2 += Sin(sprite->data[5], sprite->data[6]);
|
||||
sprite->y2 += Cos(sprite->data[5], -6);
|
||||
|
||||
if ((u16)(sprite->data[5] - 64) <= 0x7F)
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
|
||||
@@ -1080,8 +1080,8 @@ static void AnimTask_HazeScrollingFog_Step(u8 taskId)
|
||||
// arg 5: ??? unknown (seems to vibrate target mon somehow)
|
||||
static void AnimThrowMistBall(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
|
||||
}
|
||||
|
||||
@@ -1200,21 +1200,21 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite)
|
||||
sprite->data[6] = 1;
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
if (gBattleAnimArgs[7])
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
|
||||
sprite->data[1] = sprite->x + gBattleAnimArgs[1];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[3];
|
||||
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->y + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[4];
|
||||
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
|
||||
sprite->data[1] = sprite->x + gBattleAnimArgs[1];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[3];
|
||||
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->y + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[4];
|
||||
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
|
||||
}
|
||||
@@ -1238,7 +1238,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
case 0:
|
||||
AnimTranslateLinear(sprite);
|
||||
value = gSineTable[sprite->data[5]];
|
||||
sprite->pos2.x += value >> 4;
|
||||
sprite->x2 += value >> 4;
|
||||
if (sprite->data[6])
|
||||
sprite->data[5] = (sprite->data[5] - 8) & 0xFF;
|
||||
else
|
||||
@@ -1247,12 +1247,12 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
if (sprite->data[0] <= 0)
|
||||
{
|
||||
sprite->data[0] = 80;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y + 29;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = sprite->x;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = sprite->y + 29;
|
||||
sprite->data[7]++;
|
||||
if (IsContest())
|
||||
sprite->data[5] = 80;
|
||||
@@ -1261,9 +1261,9 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
else
|
||||
sprite->data[5] = 80;
|
||||
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
value = gSineTable[sprite->data[5]];
|
||||
sprite->pos2.x = value >> 3;
|
||||
sprite->x2 = value >> 3;
|
||||
sprite->data[5] = (sprite->data[5] + 2) & 0xFF;
|
||||
InitAnimLinearTranslation(sprite);
|
||||
}
|
||||
@@ -1271,8 +1271,8 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
case 1:
|
||||
AnimTranslateLinear(sprite);
|
||||
value = gSineTable[sprite->data[5]];
|
||||
sprite->pos2.x += value >> 3;
|
||||
sprite->pos2.y += (gSineTable[sprite->data[5] + 0x40] * -3) >> 8;
|
||||
sprite->x2 += value >> 3;
|
||||
sprite->y2 += (gSineTable[sprite->data[5] + 0x40] * -3) >> 8;
|
||||
if (!IsContest())
|
||||
{
|
||||
u16 var0 = sprite->data[5] - 0x40;
|
||||
@@ -1297,9 +1297,9 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
if (sprite->data[0] <= 0)
|
||||
{
|
||||
sprite->data[0] = 0x300;
|
||||
sprite->data[1] = sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->data[3] = sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->data[4] = sprite->pos1.y + 4;
|
||||
sprite->data[1] = sprite->x += sprite->x2;
|
||||
sprite->data[3] = sprite->y += sprite->y2;
|
||||
sprite->data[4] = sprite->y + 4;
|
||||
if (IsContest())
|
||||
sprite->data[2] = -0x10;
|
||||
else if (GET_BATTLER_SIDE2(gBattleAnimTarget) != B_SIDE_PLAYER)
|
||||
@@ -1308,7 +1308,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
|
||||
sprite->data[2] = -0x10;
|
||||
|
||||
sprite->data[7]++;
|
||||
sprite->pos2.x = sprite->pos2.y = 0;
|
||||
sprite->x2 = sprite->y2 = 0;
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
}
|
||||
break;
|
||||
@@ -1442,10 +1442,10 @@ static void AnimHailBegin(struct Sprite *sprite)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
sprite->pos1.x += 4;
|
||||
sprite->pos1.y += 8;
|
||||
sprite->x += 4;
|
||||
sprite->y += 8;
|
||||
|
||||
if (sprite->pos1.x < sprite->data[3] && sprite->pos1.y < sprite->data[4])
|
||||
if (sprite->x < sprite->data[3] && sprite->y < sprite->data[4])
|
||||
return;
|
||||
|
||||
if (sprite->data[0] == 1 && sprite->data[5] == 0)
|
||||
@@ -1550,11 +1550,11 @@ static void AnimIceBallParticle(struct Sprite *sprite)
|
||||
sprite->data[4] += sprite->data[2];
|
||||
|
||||
if (sprite->data[1] & 1)
|
||||
sprite->pos2.x = -(sprite->data[3] >> 8);
|
||||
sprite->x2 = -(sprite->data[3] >> 8);
|
||||
else
|
||||
sprite->pos2.x = sprite->data[3] >> 8;
|
||||
sprite->x2 = sprite->data[3] >> 8;
|
||||
|
||||
sprite->pos2.y = sprite->data[4] >> 8;
|
||||
sprite->y2 = sprite->data[4] >> 8;
|
||||
|
||||
if (++sprite->data[0] == 21)
|
||||
DestroyAnimSprite(sprite);
|
||||
|
||||
@@ -99,8 +99,8 @@ void AnimTask_ShakeMon(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
|
||||
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];
|
||||
@@ -115,27 +115,27 @@ static void AnimTask_ShakeMon_Step(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
{
|
||||
if (gSprites[gTasks[taskId].data[0]].pos2.x == 0)
|
||||
if (gSprites[gTasks[taskId].data[0]].x2 == 0)
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x = gTasks[taskId].data[4];
|
||||
gSprites[gTasks[taskId].data[0]].x2 = gTasks[taskId].data[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x = 0;
|
||||
gSprites[gTasks[taskId].data[0]].x2 = 0;
|
||||
}
|
||||
if (gSprites[gTasks[taskId].data[0]].pos2.y == 0)
|
||||
if (gSprites[gTasks[taskId].data[0]].y2 == 0)
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y = gTasks[taskId].data[5];
|
||||
gSprites[gTasks[taskId].data[0]].y2 = gTasks[taskId].data[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y = 0;
|
||||
gSprites[gTasks[taskId].data[0]].y2 = 0;
|
||||
}
|
||||
gTasks[taskId].data[3] = gTasks[taskId].data[2];
|
||||
if (--gTasks[taskId].data[1] == 0)
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x = 0;
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y = 0;
|
||||
gSprites[gTasks[taskId].data[0]].x2 = 0;
|
||||
gSprites[gTasks[taskId].data[0]].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
@@ -203,8 +203,8 @@ void AnimTask_ShakeMon2(u8 taskId)
|
||||
return;
|
||||
}
|
||||
|
||||
gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
|
||||
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];
|
||||
@@ -219,21 +219,21 @@ static void AnimTask_ShakeMon2_Step(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
{
|
||||
if (gSprites[gTasks[taskId].data[0]].pos2.x == gTasks[taskId].data[4])
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x = -gTasks[taskId].data[4];
|
||||
if (gSprites[gTasks[taskId].data[0]].x2 == gTasks[taskId].data[4])
|
||||
gSprites[gTasks[taskId].data[0]].x2 = -gTasks[taskId].data[4];
|
||||
else
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x = gTasks[taskId].data[4];
|
||||
gSprites[gTasks[taskId].data[0]].x2 = gTasks[taskId].data[4];
|
||||
|
||||
if (gSprites[gTasks[taskId].data[0]].pos2.y == gTasks[taskId].data[5])
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y = -gTasks[taskId].data[5];
|
||||
if (gSprites[gTasks[taskId].data[0]].y2 == gTasks[taskId].data[5])
|
||||
gSprites[gTasks[taskId].data[0]].y2 = -gTasks[taskId].data[5];
|
||||
else
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y = gTasks[taskId].data[5];
|
||||
gSprites[gTasks[taskId].data[0]].y2 = gTasks[taskId].data[5];
|
||||
|
||||
gTasks[taskId].data[3] = gTasks[taskId].data[2];
|
||||
if (--gTasks[taskId].data[1] == 0)
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x = 0;
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y = 0;
|
||||
gSprites[gTasks[taskId].data[0]].x2 = 0;
|
||||
gSprites[gTasks[taskId].data[0]].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
@@ -261,8 +261,8 @@ void AnimTask_ShakeMonInPlace(u8 taskId)
|
||||
return;
|
||||
}
|
||||
|
||||
gSprites[spriteId].pos2.x += gBattleAnimArgs[1];
|
||||
gSprites[spriteId].pos2.y += gBattleAnimArgs[2];
|
||||
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];
|
||||
@@ -280,26 +280,26 @@ static void AnimTask_ShakeMonInPlace_Step(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[1] & 1)
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x += gTasks[taskId].data[5];
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y += gTasks[taskId].data[6];
|
||||
gSprites[gTasks[taskId].data[0]].x2 += gTasks[taskId].data[5];
|
||||
gSprites[gTasks[taskId].data[0]].y2 += gTasks[taskId].data[6];
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x -= gTasks[taskId].data[5];
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y -= gTasks[taskId].data[6];
|
||||
gSprites[gTasks[taskId].data[0]].x2 -= gTasks[taskId].data[5];
|
||||
gSprites[gTasks[taskId].data[0]].y2 -= gTasks[taskId].data[6];
|
||||
}
|
||||
gTasks[taskId].data[3] = gTasks[taskId].data[4];
|
||||
if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2])
|
||||
{
|
||||
if (gTasks[taskId].data[1] & 1)
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x += gTasks[taskId].data[5] / 2;
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y += gTasks[taskId].data[6] / 2;
|
||||
gSprites[gTasks[taskId].data[0]].x2 += gTasks[taskId].data[5] / 2;
|
||||
gSprites[gTasks[taskId].data[0]].y2 += gTasks[taskId].data[6] / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gTasks[taskId].data[0]].pos2.x -= gTasks[taskId].data[5] / 2;
|
||||
gSprites[gTasks[taskId].data[0]].pos2.y -= gTasks[taskId].data[6] / 2;
|
||||
gSprites[gTasks[taskId].data[0]].x2 -= gTasks[taskId].data[5] / 2;
|
||||
gSprites[gTasks[taskId].data[0]].y2 -= gTasks[taskId].data[6] / 2;
|
||||
}
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
@@ -320,7 +320,7 @@ static void AnimTask_ShakeMonInPlace_Step(u8 taskId)
|
||||
void AnimTask_ShakeAndSinkMon(u8 taskId)
|
||||
{
|
||||
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
|
||||
gSprites[spriteId].x2 = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[0] = spriteId;
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
@@ -339,15 +339,15 @@ static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
|
||||
if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++)
|
||||
{
|
||||
gTasks[taskId].data[8] = 0;
|
||||
if (gSprites[spriteId].pos2.x == x)
|
||||
if (gSprites[spriteId].x2 == x)
|
||||
x = -x;
|
||||
|
||||
gSprites[spriteId].pos2.x += x;
|
||||
gSprites[spriteId].x2 += x;
|
||||
}
|
||||
|
||||
gTasks[taskId].data[1] = x;
|
||||
gTasks[taskId].data[9] += gTasks[taskId].data[3];
|
||||
gSprites[spriteId].pos2.y = gTasks[taskId].data[9] >> 8;
|
||||
gSprites[spriteId].y2 = gTasks[taskId].data[9] >> 8;
|
||||
if (--gTasks[taskId].data[4] == 0)
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -390,9 +390,9 @@ void AnimTask_TranslateMonElliptical(u8 taskId)
|
||||
static void AnimTask_TranslateMonElliptical_Step(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[taskId].data[0];
|
||||
gSprites[spriteId].pos2.x = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]);
|
||||
gSprites[spriteId].pos2.y = -Cos(gTasks[taskId].data[5], gTasks[taskId].data[2]);
|
||||
gSprites[spriteId].pos2.y += gTasks[taskId].data[2];
|
||||
gSprites[spriteId].x2 = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]);
|
||||
gSprites[spriteId].y2 = -Cos(gTasks[taskId].data[5], gTasks[taskId].data[2]);
|
||||
gSprites[spriteId].y2 += gTasks[taskId].data[2];
|
||||
gTasks[taskId].data[5] += gTasks[taskId].data[4];
|
||||
gTasks[taskId].data[5] &= 0xff;
|
||||
|
||||
@@ -401,8 +401,8 @@ static void AnimTask_TranslateMonElliptical_Step(u8 taskId)
|
||||
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
{
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].pos2.y = 0;
|
||||
gSprites[spriteId].x2 = 0;
|
||||
gSprites[spriteId].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
@@ -493,15 +493,15 @@ static void SlideMonToOriginalPos(struct Sprite *sprite)
|
||||
monSpriteId = gBattlerSpriteIds[gBattleAnimTarget];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gSprites[monSpriteId].pos1.x + gSprites[monSpriteId].pos2.x;
|
||||
sprite->data[2] = gSprites[monSpriteId].pos1.x;
|
||||
sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y;
|
||||
sprite->data[4] = gSprites[monSpriteId].pos1.y;
|
||||
sprite->data[1] = gSprites[monSpriteId].x + gSprites[monSpriteId].x2;
|
||||
sprite->data[2] = gSprites[monSpriteId].x;
|
||||
sprite->data[3] = gSprites[monSpriteId].y + gSprites[monSpriteId].y2;
|
||||
sprite->data[4] = gSprites[monSpriteId].y;
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[3] = 0;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = gSprites[monSpriteId].pos2.x;
|
||||
sprite->data[6] = gSprites[monSpriteId].pos2.y;
|
||||
sprite->data[5] = gSprites[monSpriteId].x2;
|
||||
sprite->data[6] = gSprites[monSpriteId].y2;
|
||||
sprite->invisible = TRUE;
|
||||
|
||||
if (gBattleAnimArgs[1] == 1)
|
||||
@@ -526,10 +526,10 @@ static void SlideMonToOriginalPos_Step(struct Sprite *sprite)
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
if (lo < 2)
|
||||
monSprite->pos2.x = 0;
|
||||
monSprite->x2 = 0;
|
||||
|
||||
if (lo == 2 || lo == 0)
|
||||
monSprite->pos2.y = 0;
|
||||
monSprite->y2 = 0;
|
||||
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
@@ -538,8 +538,8 @@ static void SlideMonToOriginalPos_Step(struct Sprite *sprite)
|
||||
sprite->data[0]--;
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
monSprite->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5];
|
||||
monSprite->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6];
|
||||
monSprite->x2 = (s8)(sprite->data[3] >> 8) + sprite->data[5];
|
||||
monSprite->y2 = (s8)(sprite->data[4] >> 8) + sprite->data[6];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -571,10 +571,10 @@ static void SlideMonToOffset(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = gSprites[monSpriteId].pos1.x;
|
||||
sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1];
|
||||
sprite->data[3] = gSprites[monSpriteId].pos1.y;
|
||||
sprite->data[4] = gSprites[monSpriteId].pos1.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;
|
||||
@@ -605,13 +605,13 @@ static void SlideMonToOffsetAndBack(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
|
||||
sprite->data[1] = gSprites[spriteId].x + gSprites[spriteId].x2;
|
||||
sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1];
|
||||
sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
|
||||
sprite->data[3] = gSprites[spriteId].y + gSprites[spriteId].y2;
|
||||
sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2];
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[3] = gSprites[spriteId].pos2.x << 8;
|
||||
sprite->data[4] = gSprites[spriteId].pos2.y << 8;
|
||||
sprite->data[3] = gSprites[spriteId].x2 << 8;
|
||||
sprite->data[4] = gSprites[spriteId].y2 << 8;
|
||||
sprite->data[5] = spriteId;
|
||||
sprite->data[6] = gBattleAnimArgs[5];
|
||||
if (!gBattleAnimArgs[5])
|
||||
@@ -628,8 +628,8 @@ static void SlideMonToOffsetAndBack(struct Sprite *sprite)
|
||||
|
||||
static void SlideMonToOffsetAndBack_End(struct Sprite *sprite)
|
||||
{
|
||||
gSprites[sprite->data[5]].pos2.x = 0;
|
||||
gSprites[sprite->data[5]].pos2.y = 0;
|
||||
gSprites[sprite->data[5]].x2 = 0;
|
||||
gSprites[sprite->data[5]].y2 = 0;
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
@@ -667,8 +667,8 @@ static void AnimTask_WindUpLunge_Step1(u8 taskId)
|
||||
u8 spriteId;
|
||||
spriteId = gTasks[taskId].data[0];
|
||||
gTasks[taskId].data[11] += gTasks[taskId].data[1];
|
||||
gSprites[spriteId].pos2.x = gTasks[taskId].data[11] >> 8;
|
||||
gSprites[spriteId].pos2.y = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]);
|
||||
gSprites[spriteId].x2 = gTasks[taskId].data[11] >> 8;
|
||||
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)
|
||||
{
|
||||
@@ -687,7 +687,7 @@ static void AnimTask_WindUpLunge_Step2(u8 taskId)
|
||||
{
|
||||
spriteId = gTasks[taskId].data[0];
|
||||
gTasks[taskId].data[12] += gTasks[taskId].data[5];
|
||||
gSprites[spriteId].pos2.x = (gTasks[taskId].data[12] >> 8) + (gTasks[taskId].data[11] >> 8);
|
||||
gSprites[spriteId].x2 = (gTasks[taskId].data[12] >> 8) + (gTasks[taskId].data[11] >> 8);
|
||||
if (--gTasks[taskId].data[6] == 0)
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -741,8 +741,8 @@ void AnimTask_SlideOffScreen(u8 taskId)
|
||||
static void AnimTask_SlideOffScreen_Step(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[taskId].data[0];
|
||||
gSprites[spriteId].pos2.x += gTasks[taskId].data[1];
|
||||
if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x + 0x20 > 0x130u)
|
||||
gSprites[spriteId].x2 += gTasks[taskId].data[1];
|
||||
if (gSprites[spriteId].x2 + gSprites[spriteId].x + 0x20 > 0x130u)
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
@@ -794,17 +794,17 @@ static void AnimTask_SwayMonStep(u8 taskId)
|
||||
|
||||
if (gTasks[taskId].data[0] == 0)
|
||||
{
|
||||
gSprites[spriteId].pos2.x = sineValue;
|
||||
gSprites[spriteId].x2 = sineValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBattlerSide(gTasks[taskId].data[5]) == B_SIDE_PLAYER)
|
||||
{
|
||||
gSprites[spriteId].pos2.y = (sineValue >= 0) ? sineValue : -sineValue;
|
||||
gSprites[spriteId].y2 = (sineValue >= 0) ? sineValue : -sineValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[spriteId].pos2.y = (sineValue >= 0) ? -sineValue : sineValue;
|
||||
gSprites[spriteId].y2 = (sineValue >= 0) ? -sineValue : sineValue;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -815,8 +815,8 @@ static void AnimTask_SwayMonStep(u8 taskId)
|
||||
gTasks[taskId].data[12] ^= 1;
|
||||
if (--gTasks[taskId].data[3] == 0)
|
||||
{
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].pos2.y = 0;
|
||||
gSprites[spriteId].x2 = 0;
|
||||
gSprites[spriteId].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
@@ -1011,8 +1011,8 @@ void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId)
|
||||
gTasks[taskId].data[10] = gBattleAnimArgs[3];
|
||||
gTasks[taskId].data[11] = gBattleAnimArgs[4];
|
||||
gTasks[taskId].data[7] = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].pos2.x;
|
||||
gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].pos2.y;
|
||||
gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].x2;
|
||||
gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].y2;
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||
@@ -1030,28 +1030,28 @@ static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId)
|
||||
{
|
||||
if (task->data[12])
|
||||
{
|
||||
gSprites[task->data[7]].pos2.x = task->data[8] + task->data[13];
|
||||
gSprites[task->data[7]].x2 = task->data[8] + task->data[13];
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[task->data[7]].pos2.x = task->data[8] - task->data[14];
|
||||
gSprites[task->data[7]].x2 = task->data[8] - task->data[14];
|
||||
}
|
||||
}
|
||||
if (task->data[11])
|
||||
{
|
||||
if (task->data[12])
|
||||
{
|
||||
gSprites[task->data[7]].pos2.y = task->data[15];
|
||||
gSprites[task->data[7]].y2 = task->data[15];
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[task->data[7]].pos2.y = 0;
|
||||
gSprites[task->data[7]].y2 = 0;
|
||||
}
|
||||
}
|
||||
if (!--task->data[2])
|
||||
{
|
||||
gSprites[task->data[7]].pos2.x = 0;
|
||||
gSprites[task->data[7]].pos2.y = 0;
|
||||
gSprites[task->data[7]].x2 = 0;
|
||||
gSprites[task->data[7]].y2 = 0;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
+101
-101
@@ -432,8 +432,8 @@ void TranslateSpriteInCircleOverDuration(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
|
||||
sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->y2 = Cos(sprite->data[0], sprite->data[1]);
|
||||
sprite->data[0] += sprite->data[2];
|
||||
if (sprite->data[0] >= 0x100)
|
||||
sprite->data[0] -= 0x100;
|
||||
@@ -451,8 +451,8 @@ void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
|
||||
sprite->pos2.y = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
|
||||
sprite->x2 = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
|
||||
sprite->y2 = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
|
||||
sprite->data[0] += sprite->data[2];
|
||||
sprite->data[5] += sprite->data[4];
|
||||
if (sprite->data[0] >= 0x100)
|
||||
@@ -471,8 +471,8 @@ void sub_80A63C8(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->pos2.y = Cos(sprite->data[4], sprite->data[1]);
|
||||
sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->y2 = Cos(sprite->data[4], sprite->data[1]);
|
||||
sprite->data[0] += sprite->data[2];
|
||||
sprite->data[4] += sprite->data[5];
|
||||
if (sprite->data[0] >= 0x100)
|
||||
@@ -495,8 +495,8 @@ void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[3])
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->pos2.y = Cos(sprite->data[0], sprite->data[4]);
|
||||
sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->y2 = Cos(sprite->data[0], sprite->data[4]);
|
||||
sprite->data[0] += sprite->data[2];
|
||||
if (sprite->data[0] >= 0x100)
|
||||
sprite->data[0] -= 0x100;
|
||||
@@ -547,8 +547,8 @@ void TranslateSpriteLinear(struct Sprite *sprite)
|
||||
if (sprite->data[0] > 0)
|
||||
{
|
||||
sprite->data[0]--;
|
||||
sprite->pos2.x += sprite->data[1];
|
||||
sprite->pos2.y += sprite->data[2];
|
||||
sprite->x2 += sprite->data[1];
|
||||
sprite->y2 += sprite->data[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -563,8 +563,8 @@ void TranslateSpriteLinearFixedPoint(struct Sprite *sprite)
|
||||
sprite->data[0]--;
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
sprite->pos2.x = sprite->data[3] >> 8;
|
||||
sprite->pos2.y = sprite->data[4] >> 8;
|
||||
sprite->x2 = sprite->data[3] >> 8;
|
||||
sprite->y2 = sprite->data[4] >> 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -579,8 +579,8 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
|
||||
sprite->data[0]--;
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
sprite->pos2.x = sprite->data[3] >> 8;
|
||||
sprite->pos2.y = sprite->data[4] >> 8;
|
||||
sprite->x2 = sprite->data[3] >> 8;
|
||||
sprite->y2 = sprite->data[4] >> 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -592,8 +592,8 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
|
||||
|
||||
void sub_80A65EC(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
|
||||
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
|
||||
sprite->data[1] = sprite->x + sprite->x2;
|
||||
sprite->data[3] = sprite->y + sprite->y2;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->callback = sub_80A64D0;
|
||||
@@ -604,8 +604,8 @@ void TranslateMonSpriteLinear(struct Sprite *sprite)
|
||||
if (sprite->data[0] > 0)
|
||||
{
|
||||
sprite->data[0]--;
|
||||
gSprites[sprite->data[3]].pos2.x += sprite->data[1];
|
||||
gSprites[sprite->data[3]].pos2.y += sprite->data[2];
|
||||
gSprites[sprite->data[3]].x2 += sprite->data[1];
|
||||
gSprites[sprite->data[3]].y2 += sprite->data[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -620,8 +620,8 @@ void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite)
|
||||
sprite->data[0]--;
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
gSprites[sprite->data[5]].pos2.x = sprite->data[3] >> 8;
|
||||
gSprites[sprite->data[5]].pos2.y = sprite->data[4] >> 8;
|
||||
gSprites[sprite->data[5]].x2 = sprite->data[3] >> 8;
|
||||
gSprites[sprite->data[5]].y2 = sprite->data[4] >> 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -634,9 +634,9 @@ void TranslateSpriteLinearAndFlicker(struct Sprite *sprite)
|
||||
if (sprite->data[0] > 0)
|
||||
{
|
||||
sprite->data[0]--;
|
||||
sprite->pos2.x = sprite->data[2] >> 8;
|
||||
sprite->x2 = sprite->data[2] >> 8;
|
||||
sprite->data[2] += sprite->data[1];
|
||||
sprite->pos2.y = sprite->data[4] >> 8;
|
||||
sprite->y2 = sprite->data[4] >> 8;
|
||||
sprite->data[4] += sprite->data[3];
|
||||
if (sprite->data[0] % sprite->data[5] == 0)
|
||||
{
|
||||
@@ -658,8 +658,8 @@ void DestroySpriteAndMatrix(struct Sprite *sprite)
|
||||
|
||||
void sub_80A6760(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
|
||||
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
|
||||
sprite->data[1] = sprite->x + sprite->x2;
|
||||
sprite->data[3] = sprite->y + sprite->y2;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->callback = sub_80A64D0;
|
||||
@@ -699,8 +699,8 @@ void DestroyAnimVisualTaskAndDisableBlend(u8 taskId)
|
||||
|
||||
void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
|
||||
// Sets the initial x offset of the anim sprite depending on the horizontal orientation
|
||||
@@ -712,25 +712,25 @@ void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset)
|
||||
|
||||
if (attackerX > targetX)
|
||||
{
|
||||
sprite->pos1.x -= xOffset;
|
||||
sprite->x -= xOffset;
|
||||
}
|
||||
else if (attackerX < targetX)
|
||||
{
|
||||
sprite->pos1.x += xOffset;
|
||||
sprite->x += xOffset;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= xOffset;
|
||||
sprite->x -= xOffset;
|
||||
else
|
||||
sprite->pos1.x += xOffset;
|
||||
sprite->x += xOffset;
|
||||
}
|
||||
}
|
||||
|
||||
void InitAnimArcTranslation(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->data[6] = 0x8000 / sprite->data[0];
|
||||
sprite->data[7] = 0;
|
||||
@@ -741,7 +741,7 @@ bool8 TranslateAnimHorizontalArc(struct Sprite *sprite)
|
||||
if (AnimTranslateLinear(sprite))
|
||||
return TRUE;
|
||||
sprite->data[7] += sprite->data[6];
|
||||
sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
|
||||
sprite->y2 += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -750,16 +750,16 @@ bool8 TranslateAnimVerticalArc(struct Sprite *sprite)
|
||||
if (AnimTranslateLinear(sprite))
|
||||
return TRUE;
|
||||
sprite->data[7] += sprite->data[6];
|
||||
sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
|
||||
sprite->x2 += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
}
|
||||
|
||||
void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets)
|
||||
@@ -768,27 +768,27 @@ void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets
|
||||
// is why there is no else clause for the "respectMonPicOffsets" check.
|
||||
if (!respectMonPicOffsets)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y);
|
||||
}
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets)
|
||||
{
|
||||
if (!respectMonPicOffsets)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
u8 GetBattlerSide(u8 battlerId)
|
||||
@@ -986,8 +986,8 @@ void UpdateAnimBg3ScreenSize(bool8 largeScreenSize)
|
||||
|
||||
void TradeMenuBouncePartySprites(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->callback = TranslateSpriteLinearFixedPointIconFrame;
|
||||
sprite->callback(sprite);
|
||||
@@ -1033,8 +1033,8 @@ void InitAnimLinearTranslation(struct Sprite *sprite)
|
||||
|
||||
void StartAnimLinearTranslation(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = AnimTranslateLinear_WaitEnd;
|
||||
sprite->callback(sprite);
|
||||
@@ -1042,8 +1042,8 @@ void StartAnimLinearTranslation(struct Sprite *sprite)
|
||||
|
||||
void sub_80A6F14(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = sub_80A6FB4;
|
||||
sprite->callback(sprite);
|
||||
@@ -1064,14 +1064,14 @@ bool8 AnimTranslateLinear(struct Sprite *sprite)
|
||||
y += v2;
|
||||
|
||||
if (v1 & 1)
|
||||
sprite->pos2.x = -(x >> 8);
|
||||
sprite->x2 = -(x >> 8);
|
||||
else
|
||||
sprite->pos2.x = x >> 8;
|
||||
sprite->x2 = x >> 8;
|
||||
|
||||
if (v2 & 1)
|
||||
sprite->pos2.y = -(y >> 8);
|
||||
sprite->y2 = -(y >> 8);
|
||||
else
|
||||
sprite->pos2.y = y >> 8;
|
||||
sprite->y2 = y >> 8;
|
||||
|
||||
sprite->data[3] = x;
|
||||
sprite->data[4] = y;
|
||||
@@ -1101,8 +1101,8 @@ void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite)
|
||||
|
||||
void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
InitAnimLinearTranslationWithSpeed(sprite);
|
||||
sprite->callback = AnimTranslateLinear_WaitEnd;
|
||||
sprite->callback(sprite);
|
||||
@@ -1138,8 +1138,8 @@ static void InitAnimFastLinearTranslation(struct Sprite *sprite)
|
||||
|
||||
void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
InitAnimFastLinearTranslation(sprite);
|
||||
sprite->callback = AnimFastTranslateLinearWaitEnd;
|
||||
sprite->callback(sprite);
|
||||
@@ -1160,14 +1160,14 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite)
|
||||
y += v2;
|
||||
|
||||
if (v1 & 1)
|
||||
sprite->pos2.x = -(x >> 4);
|
||||
sprite->x2 = -(x >> 4);
|
||||
else
|
||||
sprite->pos2.x = x >> 4;
|
||||
sprite->x2 = x >> 4;
|
||||
|
||||
if (v2 & 1)
|
||||
sprite->pos2.y = -(y >> 4);
|
||||
sprite->y2 = -(y >> 4);
|
||||
else
|
||||
sprite->pos2.y = y >> 4;
|
||||
sprite->y2 = y >> 4;
|
||||
|
||||
sprite->data[3] = x;
|
||||
sprite->data[4] = y;
|
||||
@@ -1190,8 +1190,8 @@ void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
|
||||
|
||||
void InitAnimFastLinearTranslationWithSpeedAndPos(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[3] = sprite->y;
|
||||
InitAnimFastLinearTranslationWithSpeed(sprite);
|
||||
sprite->callback = AnimFastTranslateLinearWaitEnd;
|
||||
sprite->callback(sprite);
|
||||
@@ -1264,7 +1264,7 @@ void SetBattlerSpriteYOffsetFromRotation(u8 spriteId)
|
||||
if (c < 0)
|
||||
c = -c;
|
||||
|
||||
gSprites[spriteId].pos2.y = c >> 3;
|
||||
gSprites[spriteId].y2 = c >> 3;
|
||||
}
|
||||
|
||||
void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation)
|
||||
@@ -1310,7 +1310,7 @@ u16 ArcTan2Neg(s16 a, s16 b)
|
||||
return -var;
|
||||
}
|
||||
|
||||
void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor)
|
||||
void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor)
|
||||
{
|
||||
int i;
|
||||
struct PlttData *originalColor;
|
||||
@@ -1801,7 +1801,7 @@ bool8 RunAffineAnimFromTaskData(struct Task *task)
|
||||
task->data[7]++;
|
||||
break;
|
||||
case AFFINEANIMCMDTYPE_END:
|
||||
gSprites[task->data[15]].pos2.y = 0;
|
||||
gSprites[task->data[15]].y2 = 0;
|
||||
ResetSpriteRotScale(task->data[15]);
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1819,7 +1819,7 @@ void SetBattlerSpriteYOffsetFromYScale(u8 spriteId)
|
||||
|
||||
if (var2 > 128)
|
||||
var2 = 128;
|
||||
gSprites[spriteId].pos2.y = (var - var2) / 2;
|
||||
gSprites[spriteId].y2 = (var - var2) / 2;
|
||||
}
|
||||
|
||||
// Sets the sprite's y offset equal to the y displacement caused by another sprite
|
||||
@@ -1832,7 +1832,7 @@ void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId)
|
||||
|
||||
if (var2 > 128)
|
||||
var2 = 128;
|
||||
gSprites[spriteId].pos2.y = (var - var2) / 2;
|
||||
gSprites[spriteId].y2 = (var - var2) / 2;
|
||||
}
|
||||
|
||||
static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
|
||||
@@ -1927,7 +1927,7 @@ u8 UpdateEruptAnimTask(struct Task *task)
|
||||
if (task->data[8])
|
||||
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
|
||||
else
|
||||
gSprites[task->data[15]].pos2.y = 0;
|
||||
gSprites[task->data[15]].y2 = 0;
|
||||
return task->data[8];
|
||||
}
|
||||
|
||||
@@ -2078,8 +2078,8 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16
|
||||
|
||||
if (IsContest())
|
||||
{
|
||||
gSprites[spriteId].affineAnims = gUnknown_082FF6C0;
|
||||
StartSpriteAffineAnim(&gSprites[spriteId], 0);
|
||||
gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteContest;
|
||||
StartSpriteAffineAnim(&gSprites[spriteId], BATTLER_AFFINE_NORMAL);
|
||||
}
|
||||
return spriteId;
|
||||
}
|
||||
@@ -2273,20 +2273,20 @@ u8 CreateInvisibleSpriteCopy(int battlerId, u8 spriteId, int species)
|
||||
return newSpriteId;
|
||||
}
|
||||
|
||||
void AnimUnused_80A8A6C(struct Sprite *sprite)
|
||||
void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
sprite->hFlip = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
}
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[3] = gBattleAnimArgs[4];
|
||||
@@ -2296,18 +2296,18 @@ void AnimUnused_80A8A6C(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// Used by three different unused battle anim sprite templates.
|
||||
void AnimUnused_80A8AEC(struct Sprite *sprite)
|
||||
void AnimTranslateLinearAndFlicker(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
gBattleAnimArgs[3] *= -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
}
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[3] = gBattleAnimArgs[4];
|
||||
@@ -2322,10 +2322,10 @@ void AnimSpinningSparkle(struct Sprite *sprite)
|
||||
{
|
||||
SetSpriteCoordsToAnimAttackerCoords(sprite);
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
@@ -2343,7 +2343,7 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId)
|
||||
task->data[1] = ((GetBattlerSide(gBattleAnimAttacker)) != B_SIDE_PLAYER) ? -8 : 8;
|
||||
task->data[2] = 0;
|
||||
task->data[3] = 0;
|
||||
gSprites[task->data[0]].pos2.x -= task->data[0];
|
||||
gSprites[task->data[0]].x2 -= task->data[0];
|
||||
task->data[4] = AllocSpritePalette(ANIM_TAG_BENT_SPOON);
|
||||
task->data[5] = 0;
|
||||
|
||||
@@ -2366,7 +2366,7 @@ static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
sub_80A8D78(task, taskId);
|
||||
gSprites[task->data[0]].pos2.x += task->data[1];
|
||||
gSprites[task->data[0]].x2 += task->data[1];
|
||||
if (++task->data[3] == 5)
|
||||
{
|
||||
task->data[3]--;
|
||||
@@ -2375,10 +2375,10 @@ static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId)
|
||||
break;
|
||||
case 1:
|
||||
sub_80A8D78(task, taskId);
|
||||
gSprites[task->data[0]].pos2.x -= task->data[1];
|
||||
gSprites[task->data[0]].x2 -= task->data[1];
|
||||
if (--task->data[3] == 0)
|
||||
{
|
||||
gSprites[task->data[0]].pos2.x = 0;
|
||||
gSprites[task->data[0]].x2 = 0;
|
||||
task->data[2]++;
|
||||
}
|
||||
break;
|
||||
@@ -2402,7 +2402,7 @@ static void sub_80A8D78(struct Task *task, u8 taskId)
|
||||
gSprites[spriteId].data[0] = 8;
|
||||
gSprites[spriteId].data[1] = taskId;
|
||||
gSprites[spriteId].data[2] = spriteId;
|
||||
gSprites[spriteId].pos2.x = gSprites[task->data[0]].pos2.x;
|
||||
gSprites[spriteId].x2 = gSprites[task->data[0]].x2;
|
||||
gSprites[spriteId].callback = sub_80A8DFC;
|
||||
task->data[5]++;
|
||||
}
|
||||
@@ -2419,8 +2419,8 @@ static void sub_80A8DFC(struct Sprite *sprite)
|
||||
|
||||
void AnimWeatherBallUp(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
if (!GetBattlerSide(gBattleAnimAttacker))
|
||||
sprite->data[0] = 5;
|
||||
else
|
||||
@@ -2433,11 +2433,11 @@ static void AnimWeatherBallUp_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[2] += sprite->data[0];
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[2] / 10;
|
||||
sprite->pos2.y = sprite->data[3] / 10;
|
||||
sprite->x2 = sprite->data[2] / 10;
|
||||
sprite->y2 = sprite->data[3] / 10;
|
||||
if (sprite->data[1] < -20)
|
||||
sprite->data[1]++;
|
||||
if (sprite->pos1.y + sprite->pos2.y < -32)
|
||||
if (sprite->y + sprite->y2 < -32)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
@@ -2445,19 +2445,19 @@ void AnimWeatherBallDown(struct Sprite *sprite)
|
||||
{
|
||||
int x;
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4];
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5];
|
||||
sprite->data[2] = sprite->x + gBattleAnimArgs[4];
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[5];
|
||||
if (!GetBattlerSide(gBattleAnimTarget))
|
||||
{
|
||||
x = (u16)gBattleAnimArgs[4] + 30;
|
||||
sprite->pos1.x += x;
|
||||
sprite->pos1.y = gBattleAnimArgs[5] - 20;
|
||||
sprite->x += x;
|
||||
sprite->y = gBattleAnimArgs[5] - 20;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = (u16)gBattleAnimArgs[4] - 30;
|
||||
sprite->pos1.x += x;
|
||||
sprite->pos1.y = gBattleAnimArgs[5] - 80;
|
||||
sprite->x += x;
|
||||
sprite->y = gBattleAnimArgs[5] - 80;
|
||||
}
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
|
||||
+12
-12
@@ -261,8 +261,8 @@ const struct SpriteTemplate gPersistHitSplatSpriteTemplate =
|
||||
// arg 4: duration
|
||||
static void AnimConfusionDuck(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
@@ -283,8 +283,8 @@ static void AnimConfusionDuck(struct Sprite *sprite)
|
||||
|
||||
static void AnimConfusionDuck_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Cos(sprite->data[0], 30);
|
||||
sprite->pos2.y = Sin(sprite->data[0], 10);
|
||||
sprite->x2 = Cos(sprite->data[0], 30);
|
||||
sprite->y2 = Sin(sprite->data[0], 10);
|
||||
|
||||
if ((u16)sprite->data[0] < 128)
|
||||
sprite->oam.priority = 1;
|
||||
@@ -400,8 +400,8 @@ static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite)
|
||||
|
||||
static void AnimCirclingSparkle(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = 10;
|
||||
sprite->data[2] = 8;
|
||||
@@ -971,8 +971,8 @@ static void AnimHitSplatRandom(struct Sprite *sprite)
|
||||
else
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
|
||||
sprite->pos2.x += (Random2() % 48) - 24;
|
||||
sprite->pos2.y += (Random2() % 24) - 12;
|
||||
sprite->x2 += (Random2() % 48) - 24;
|
||||
sprite->y2 += (Random2() % 24) - 12;
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
@@ -981,10 +981,10 @@ static void AnimHitSplatRandom(struct Sprite *sprite)
|
||||
static void AnimHitSplatOnMonEdge(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
|
||||
sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x;
|
||||
sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + gSprites[sprite->data[0]].pos2.y;
|
||||
sprite->pos2.x = gBattleAnimArgs[1];
|
||||
sprite->pos2.y = gBattleAnimArgs[2];
|
||||
sprite->x = gSprites[sprite->data[0]].x + gSprites[sprite->data[0]].x2;
|
||||
sprite->y = gSprites[sprite->data[0]].y + gSprites[sprite->data[0]].y2;
|
||||
sprite->x2 = gBattleAnimArgs[1];
|
||||
sprite->y2 = gBattleAnimArgs[2];
|
||||
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
|
||||
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
|
||||
+14
-14
@@ -239,10 +239,10 @@ static void AnimAcidPoisonBubble_Step(struct Sprite *sprite)
|
||||
static void AnimSludgeBombHitParticle(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = sprite->x + gBattleAnimArgs[0];
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[1];
|
||||
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
|
||||
@@ -265,17 +265,17 @@ static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite)
|
||||
|
||||
static void AnimAcidPoisonDroplet(struct Sprite *sprite)
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->pos1.y + sprite->data[0];
|
||||
sprite->data[2] = sprite->x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->y + sprite->data[0];
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
@@ -295,13 +295,13 @@ static void AnimBubbleEffect(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
sprite->callback = AnimBubbleEffect_Step;
|
||||
@@ -310,9 +310,9 @@ static void AnimBubbleEffect(struct Sprite *sprite)
|
||||
static void AnimBubbleEffect_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[0], 4);
|
||||
sprite->x2 = Sin(sprite->data[0], 4);
|
||||
sprite->data[1] += 0x30;
|
||||
sprite->pos2.y = -(sprite->data[1] >> 8);
|
||||
sprite->y2 = -(sprite->data[1] >> 8);
|
||||
|
||||
if (sprite->affineAnimEnded)
|
||||
DestroyAnimSprite(sprite);
|
||||
|
||||
+37
-37
@@ -450,13 +450,13 @@ static void AnimDefensiveWall(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x = 72;
|
||||
sprite->pos1.y = 80;
|
||||
sprite->x = 72;
|
||||
sprite->y = 80;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = 176;
|
||||
sprite->pos1.y = 40;
|
||||
sprite->x = 176;
|
||||
sprite->y = 40;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -464,15 +464,15 @@ static void AnimDefensiveWall(struct Sprite *sprite)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1];
|
||||
}
|
||||
|
||||
sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16;
|
||||
|
||||
if (isContest)
|
||||
{
|
||||
sprite->pos1.y += 9;
|
||||
sprite->y += 9;
|
||||
sprite->callback = AnimDefensiveWall_Step2;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
@@ -592,13 +592,13 @@ static void AnimWallSparkle(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x = 72 - gBattleAnimArgs[0];
|
||||
sprite->pos1.y = gBattleAnimArgs[1] + 80;
|
||||
sprite->x = 72 - gBattleAnimArgs[0];
|
||||
sprite->y = gBattleAnimArgs[1] + 80;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[0] + 176;
|
||||
sprite->pos1.y = gBattleAnimArgs[1] + 40;
|
||||
sprite->x = gBattleAnimArgs[0] + 176;
|
||||
sprite->y = gBattleAnimArgs[1] + 40;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -620,20 +620,20 @@ static void AnimWallSparkle(struct Sprite *sprite)
|
||||
|
||||
static void AnimBentSpoon(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
StartSpriteAnim(sprite, 1);
|
||||
sprite->pos1.x -= 40;
|
||||
sprite->pos1.y += 10;
|
||||
sprite->x -= 40;
|
||||
sprite->y += 10;
|
||||
sprite->data[1] = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += 40;
|
||||
sprite->pos1.y -= 10;
|
||||
sprite->x += 40;
|
||||
sprite->y -= 10;
|
||||
sprite->data[1] = 1;
|
||||
}
|
||||
|
||||
@@ -650,11 +650,11 @@ static void AnimQuestionMark(struct Sprite *sprite)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
|
||||
x = -x;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
|
||||
|
||||
if (sprite->pos1.y < 16)
|
||||
sprite->pos1.y = 16;
|
||||
if (sprite->y < 16)
|
||||
sprite->y = 16;
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, AnimQuestionMark_Step1);
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
@@ -731,13 +731,13 @@ static void AnimTask_Teleport_Step(u8 taskId)
|
||||
case 1:
|
||||
if (task->data[3] != 0)
|
||||
{
|
||||
gSprites[task->data[0]].pos2.y -= 8;
|
||||
gSprites[task->data[0]].y2 -= 8;
|
||||
task->data[3]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[task->data[0]].invisible = TRUE;
|
||||
gSprites[task->data[0]].pos1.x = DISPLAY_WIDTH + 32;
|
||||
gSprites[task->data[0]].x = DISPLAY_WIDTH + 32;
|
||||
ResetSpriteRotScale(task->data[0]);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
@@ -785,20 +785,20 @@ static void AnimTask_ImprisonOrbs_Step(u8 taskId)
|
||||
switch (task->data[2])
|
||||
{
|
||||
case 0:
|
||||
gSprites[spriteId].pos2.x = task->data[12];
|
||||
gSprites[spriteId].pos2.y = -task->data[12];
|
||||
gSprites[spriteId].x2 = task->data[12];
|
||||
gSprites[spriteId].y2 = -task->data[12];
|
||||
break;
|
||||
case 1:
|
||||
gSprites[spriteId].pos2.x = -task->data[12];
|
||||
gSprites[spriteId].pos2.y = task->data[12];
|
||||
gSprites[spriteId].x2 = -task->data[12];
|
||||
gSprites[spriteId].y2 = task->data[12];
|
||||
break;
|
||||
case 2:
|
||||
gSprites[spriteId].pos2.x = task->data[12];
|
||||
gSprites[spriteId].pos2.y = task->data[12];
|
||||
gSprites[spriteId].x2 = task->data[12];
|
||||
gSprites[spriteId].y2 = task->data[12];
|
||||
break;
|
||||
case 3:
|
||||
gSprites[spriteId].pos2.x = -task->data[12];
|
||||
gSprites[spriteId].pos2.y = -task->data[12];
|
||||
gSprites[spriteId].x2 = -task->data[12];
|
||||
gSprites[spriteId].y2 = -task->data[12];
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -851,8 +851,8 @@ static void AnimRedX(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[1];
|
||||
@@ -1123,11 +1123,11 @@ static void AnimPsychoBoost(struct Sprite *sprite)
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
|
||||
|
||||
if (IsContest())
|
||||
sprite->pos1.y += 12;
|
||||
sprite->y += 12;
|
||||
|
||||
sprite->data[1] = 8;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
|
||||
@@ -1156,7 +1156,7 @@ static void AnimPsychoBoost(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
sprite->data[3] += 0x380;
|
||||
sprite->pos2.y -= sprite->data[3] >> 8;
|
||||
sprite->y2 -= sprite->data[3] >> 8;
|
||||
sprite->data[3] &= 0xFF;
|
||||
break;
|
||||
case 3:
|
||||
|
||||
+34
-34
@@ -297,10 +297,10 @@ const struct SpriteTemplate gWeatherBallRockDownSpriteTemplate =
|
||||
static void AnimFallingRock(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[3] != 0)
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
|
||||
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += 14;
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += 14;
|
||||
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
|
||||
AnimateSprite(sprite);
|
||||
@@ -319,7 +319,7 @@ static void AnimFallingRock(struct Sprite *sprite)
|
||||
|
||||
static void AnimFallingRock_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += sprite->data[5];
|
||||
sprite->x += sprite->data[5];
|
||||
|
||||
sprite->data[0] = 192;
|
||||
sprite->data[1] = sprite->data[5];
|
||||
@@ -339,17 +339,17 @@ static void AnimRockFragment(struct Sprite *sprite)
|
||||
AnimateSprite(sprite);
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
sprite->pos1.x -= gBattleAnimArgs[0];
|
||||
sprite->x -= gBattleAnimArgs[0];
|
||||
else
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = sprite->x + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[3];
|
||||
|
||||
InitSpriteDataForLinearTranslation(sprite);
|
||||
sprite->data[3] = 0;
|
||||
@@ -378,8 +378,8 @@ static void AnimParticleInVortex(struct Sprite *sprite)
|
||||
static void AnimParticleInVortex_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->pos2.y = -(sprite->data[4] >> 8);
|
||||
sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
|
||||
sprite->y2 = -(sprite->data[4] >> 8);
|
||||
sprite->x2 = Sin(sprite->data[5], sprite->data[3]);
|
||||
sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF;
|
||||
|
||||
if (--sprite->data[0] == -1)
|
||||
@@ -496,17 +496,17 @@ static void AnimFlyingSandCrescent(struct Sprite *sprite)
|
||||
{
|
||||
if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x = DISPLAY_WIDTH + 64;
|
||||
sprite->x = DISPLAY_WIDTH + 64;
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
sprite->data[5] = 1;
|
||||
sprite->oam.matrixNum = ST_OAM_HFLIP;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = -64;
|
||||
sprite->x = -64;
|
||||
}
|
||||
|
||||
sprite->pos1.y = gBattleAnimArgs[0];
|
||||
sprite->y = gBattleAnimArgs[0];
|
||||
SetSubspriteTables(sprite, sFlyingSandSubspriteTable);
|
||||
sprite->data[1] = gBattleAnimArgs[1];
|
||||
sprite->data[2] = gBattleAnimArgs[2];
|
||||
@@ -516,19 +516,19 @@ static void AnimFlyingSandCrescent(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
sprite->pos2.x += (sprite->data[3] >> 8);
|
||||
sprite->pos2.y += (sprite->data[4] >> 8);
|
||||
sprite->x2 += (sprite->data[3] >> 8);
|
||||
sprite->y2 += (sprite->data[4] >> 8);
|
||||
sprite->data[3] &= 0xFF;
|
||||
sprite->data[4] &= 0xFF;
|
||||
|
||||
if (sprite->data[5] == 0)
|
||||
{
|
||||
if (sprite->pos1.x + sprite->pos2.x > DISPLAY_WIDTH + 32)
|
||||
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 32)
|
||||
{
|
||||
sprite->callback = DestroyAnimSprite;
|
||||
}
|
||||
}
|
||||
else if (sprite->pos1.x + sprite->pos2.x < -32)
|
||||
else if (sprite->x + sprite->x2 < -32)
|
||||
{
|
||||
sprite->callback = DestroyAnimSprite;
|
||||
}
|
||||
@@ -547,8 +547,8 @@ static void AnimRaiseSprite(struct Sprite *sprite)
|
||||
InitSpritePosToAnimAttacker(sprite, 0);
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = sprite->pos1.x;
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
|
||||
sprite->data[2] = sprite->x;
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[2];
|
||||
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
@@ -618,8 +618,8 @@ static void AnimTask_Rollout_Step(u8 taskId)
|
||||
case 0:
|
||||
task->data[6] -= task->data[4];
|
||||
task->data[7] -= task->data[5];
|
||||
gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
|
||||
gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
|
||||
gSprites[task->data[15]].x2 = task->data[6] >> 3;
|
||||
gSprites[task->data[15]].y2 = task->data[7] >> 3;
|
||||
|
||||
if (++task->data[9] == 10)
|
||||
{
|
||||
@@ -646,8 +646,8 @@ static void AnimTask_Rollout_Step(u8 taskId)
|
||||
task->data[0]++;
|
||||
}
|
||||
|
||||
gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
|
||||
gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
|
||||
gSprites[task->data[15]].x2 = task->data[6] >> 3;
|
||||
gSprites[task->data[15]].y2 = task->data[7] >> 3;
|
||||
break;
|
||||
case 3:
|
||||
task->data[2] += task->data[4];
|
||||
@@ -748,7 +748,7 @@ static void AnimRockTomb(struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
|
||||
|
||||
sprite->pos2.x = gBattleAnimArgs[0];
|
||||
sprite->x2 = gBattleAnimArgs[0];
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
sprite->data[3] -= gBattleAnimArgs[2];
|
||||
sprite->data[0] = 3;
|
||||
@@ -762,7 +762,7 @@ static void AnimRockTomb_Step(struct Sprite *sprite)
|
||||
sprite->invisible = FALSE;
|
||||
if (sprite->data[3] != 0)
|
||||
{
|
||||
sprite->pos2.y = sprite->data[2] + sprite->data[3];
|
||||
sprite->y2 = sprite->data[2] + sprite->data[3];
|
||||
sprite->data[3] += sprite->data[0];
|
||||
sprite->data[0]++;
|
||||
if (sprite->data[3] > 0)
|
||||
@@ -787,10 +787,10 @@ static void AnimRockBlastRock(struct Sprite *sprite)
|
||||
|
||||
static void AnimRockScatter(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
|
||||
sprite->x += gBattleAnimArgs[0];
|
||||
sprite->y += gBattleAnimArgs[1];
|
||||
|
||||
sprite->data[1] = gBattleAnimArgs[0];
|
||||
sprite->data[2] = gBattleAnimArgs[1];
|
||||
@@ -806,8 +806,8 @@ static void AnimRockScatter_Step(struct Sprite *sprite)
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
|
||||
sprite->pos2.x += sprite->data[3] / 40;
|
||||
sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]);
|
||||
sprite->x2 += sprite->data[3] / 40;
|
||||
sprite->y2 -= Sin(sprite->data[0], sprite->data[5]);
|
||||
|
||||
if (sprite->data[0] > 140)
|
||||
DestroyAnimSprite(sprite);
|
||||
|
||||
@@ -135,8 +135,10 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
species = gContestResources->moveAnim->species;
|
||||
#ifndef UBFIX
|
||||
else
|
||||
DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task.
|
||||
DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice.
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -179,8 +181,10 @@ void SoundTask_PlayDoubleCry(u8 taskId)
|
||||
{
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
species = gContestResources->moveAnim->species;
|
||||
#ifndef UBFIX
|
||||
else
|
||||
DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task.
|
||||
DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice.
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -26,7 +26,7 @@ static void Task_DoStatusAnimation(u8 taskId);
|
||||
static void AnimFlashingCircleImpact(struct Sprite *sprite);
|
||||
static void AnimFlashingCircleImpact_Step(struct Sprite *sprite);
|
||||
|
||||
static const union AnimCmd sAnim_Unused_853EDE4[] =
|
||||
static const union AnimCmd sAnim_FlickeringOrb[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
ANIMCMD_FRAME(4, 3),
|
||||
@@ -35,33 +35,33 @@ static const union AnimCmd sAnim_Unused_853EDE4[] =
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_Unused_853EDF8[] =
|
||||
static const union AnimCmd *const sAnims_FlickeringOrb[] =
|
||||
{
|
||||
sAnim_Unused_853EDE4
|
||||
sAnim_FlickeringOrb
|
||||
};
|
||||
|
||||
// Unused
|
||||
const struct SpriteTemplate gUnusedSpriteTemplate_0853EDFC =
|
||||
static const struct SpriteTemplate sFlickeringOrbSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ORB,
|
||||
.paletteTag = ANIM_TAG_ORB,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_16x16,
|
||||
.anims = sAnims_Unused_853EDF8,
|
||||
.anims = sAnims_FlickeringOrb,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimUnused_80A8AEC,
|
||||
.callback = AnimTranslateLinearAndFlicker,
|
||||
};
|
||||
|
||||
// Unused
|
||||
const struct SpriteTemplate gUnusedSpriteTemplate_0853EE14 =
|
||||
static const struct SpriteTemplate sFlickeringOrbFlippedSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ORB,
|
||||
.paletteTag = ANIM_TAG_ORB,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_16x16,
|
||||
.anims = sAnims_Unused_853EDF8,
|
||||
.anims = sAnims_FlickeringOrb,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimUnused_80A8A6C,
|
||||
.callback = AnimTranslateLinearAndFlicker_Flipped,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_WeatherBallNormal[] =
|
||||
@@ -124,7 +124,7 @@ const struct SpriteTemplate gSpinningSparkleSpriteTemplate =
|
||||
};
|
||||
|
||||
// Unused
|
||||
const struct SpriteTemplate gUnusedSpriteTemplate_0853EE9C =
|
||||
static const struct SpriteTemplate sFlickeringFootSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_MONSTER_FOOT,
|
||||
.paletteTag = ANIM_TAG_MONSTER_FOOT,
|
||||
@@ -132,79 +132,79 @@ const struct SpriteTemplate gUnusedSpriteTemplate_0853EE9C =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimUnused_80A8AEC,
|
||||
.callback = AnimTranslateLinearAndFlicker,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_Unused_853EEB4[] =
|
||||
static const union AnimCmd sAnim_FlickeringImpact_0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_Unused_853EEBC[] =
|
||||
static const union AnimCmd sAnim_FlickeringImpact_1[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_Unused_853EEC4[] =
|
||||
static const union AnimCmd sAnim_FlickeringImpact_2[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_Unused_853EECC[] =
|
||||
static const union AnimCmd *const sAnims_FlickeringImpact[] =
|
||||
{
|
||||
sAnim_Unused_853EEB4,
|
||||
sAnim_Unused_853EEBC,
|
||||
sAnim_Unused_853EEC4,
|
||||
sAnim_FlickeringImpact_0,
|
||||
sAnim_FlickeringImpact_1,
|
||||
sAnim_FlickeringImpact_2,
|
||||
};
|
||||
|
||||
// Unused
|
||||
const struct SpriteTemplate gUnusedSpriteTemplate_0853EED8 =
|
||||
static const struct SpriteTemplate sFlickeringImpactSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_IMPACT,
|
||||
.paletteTag = ANIM_TAG_IMPACT,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sAnims_Unused_853EECC,
|
||||
.anims = sAnims_FlickeringImpact,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimUnused_80A8AEC,
|
||||
.callback = AnimTranslateLinearAndFlicker,
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_Unused_853EEF0[] =
|
||||
static const union AnimCmd sAnim_FlickeringShrinkOrb[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 15),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_Unused_853EEF8[] =
|
||||
static const union AnimCmd *const sAnims_FlickeringShrinkOrb[] =
|
||||
{
|
||||
sAnim_Unused_853EEF0
|
||||
sAnim_FlickeringShrinkOrb
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_Unused_853EEFC[] =
|
||||
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 sAffineAnims_Unused_853EEF8[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_FlickeringShrinkOrb[] =
|
||||
{
|
||||
sAffineAnim_Unused_853EEFC
|
||||
sAffineAnim_FlickeringShrinkOrb
|
||||
};
|
||||
|
||||
// Unused
|
||||
const struct SpriteTemplate gUnusedSpriteTemplate_0853EF18 =
|
||||
static const struct SpriteTemplate sFlickeringShrinkOrbSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_ORB,
|
||||
.paletteTag = ANIM_TAG_ORB,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_16x16,
|
||||
.anims = sAnims_Unused_853EEF8,
|
||||
.anims = sAnims_FlickeringShrinkOrb,
|
||||
.images = NULL,
|
||||
.affineAnims = sAffineAnims_Unused_853EEF8,
|
||||
.callback = AnimUnused_80A8A6C,
|
||||
.affineAnims = sAffineAnims_FlickeringShrinkOrb,
|
||||
.callback = AnimTranslateLinearAndFlicker_Flipped,
|
||||
};
|
||||
|
||||
static const struct Subsprite sFrozenIceCubeSubsprites[] =
|
||||
@@ -286,7 +286,7 @@ static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 red)
|
||||
gTasks[taskId].data[1] = RGB_RED;
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].pos1.x, gSprites[battlerSpriteId].pos1.y + 32, 0);
|
||||
spriteId = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y + 32, 0);
|
||||
gSprites[spriteId].data[0] = i * 51;
|
||||
gSprites[spriteId].data[1] = -256;
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
@@ -299,7 +299,7 @@ static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 red)
|
||||
gTasks[taskId].data[1] = RGB_BLUE;
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].pos1.x, gSprites[battlerSpriteId].pos1.y - 32, 0);
|
||||
spriteId = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y - 32, 0);
|
||||
gSprites[spriteId].data[0] = i * 51;
|
||||
gSprites[spriteId].data[1] = 256;
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
@@ -360,15 +360,15 @@ static void AnimFlashingCircleImpact(struct Sprite *sprite)
|
||||
|
||||
static void AnimFlashingCircleImpact_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Cos(sprite->data[0], 32);
|
||||
sprite->pos2.y = Sin(sprite->data[0], 8);
|
||||
sprite->x2 = Cos(sprite->data[0], 32);
|
||||
sprite->y2 = Sin(sprite->data[0], 8);
|
||||
if (sprite->data[0] < 128)
|
||||
sprite->subpriority = 29;
|
||||
else
|
||||
sprite->subpriority = 31;
|
||||
sprite->data[0] = (sprite->data[0] + 8) & 0xFF;
|
||||
sprite->data[5] += sprite->data[1];
|
||||
sprite->pos2.y += sprite->data[5] >> 8;
|
||||
sprite->y2 += sprite->data[5] >> 8;
|
||||
sprite->data[2]++;
|
||||
if (sprite->data[2] == 52)
|
||||
{
|
||||
|
||||
+61
-60
@@ -16,6 +16,7 @@
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
#include "util.h"
|
||||
#include "data.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/songs.h"
|
||||
@@ -472,8 +473,8 @@ void AnimTask_UnusedLevelUpHealthBox(u8 taskId)
|
||||
AnimLoadCompressedBgGfx(animBgData.bgId, UnusedLevelupAnimationGfx, animBgData.tilesOffset);
|
||||
LoadCompressedPalette(gCureBubblesPal, animBgData.paletteId << 4, 32);
|
||||
|
||||
gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
|
||||
gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32;
|
||||
gBattle_BG1_X = -gSprites[spriteId3].x + 32;
|
||||
gBattle_BG1_Y = -gSprites[spriteId3].y - 32;
|
||||
gTasks[taskId].data[1] = 640;
|
||||
gTasks[taskId].data[0] = spriteId3;
|
||||
gTasks[taskId].data[2] = spriteId4;
|
||||
@@ -856,9 +857,9 @@ static void SpriteCB_Ball_Throw(struct Sprite *sprite)
|
||||
u16 targetX = sprite->sTargetXArg;
|
||||
u16 targetY = sprite->sTargetYArg;
|
||||
|
||||
sprite->sOffsetX = sprite->pos1.x;
|
||||
sprite->sOffsetX = sprite->x;
|
||||
sprite->sTargetX = targetX;
|
||||
sprite->sOffsetY = sprite->pos1.y;
|
||||
sprite->sOffsetY = sprite->y;
|
||||
sprite->sTargetY = targetY;
|
||||
sprite->sAmplitude = -40;
|
||||
InitAnimArcTranslation(sprite);
|
||||
@@ -890,10 +891,10 @@ static void SpriteCB_Ball_Arc(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
StartSpriteAnim(sprite, 1);
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
sprite->data[i] = 0;
|
||||
@@ -905,7 +906,7 @@ static void SpriteCB_Ball_Arc(struct Sprite *sprite)
|
||||
switch (ballId)
|
||||
{
|
||||
case 0 ... POKEBALL_COUNT - 1:
|
||||
AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
|
||||
AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId);
|
||||
LaunchBallFadeMonTask(FALSE, gBattleAnimTarget, 14, ballId);
|
||||
break;
|
||||
}
|
||||
@@ -947,7 +948,7 @@ static void SpriteCB_Ball_MonShrink_Step(struct Sprite *sprite)
|
||||
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
|
||||
gTasks[taskId].data[10] = 256;
|
||||
gMonShrinkDuration = 28;
|
||||
gMonShrinkDistance = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
|
||||
gMonShrinkDistance = (gSprites[spriteId].y + gSprites[spriteId].y2) - (sprite->y + sprite->y2);
|
||||
gMonShrinkDelta = (u32)(gMonShrinkDistance * 256) / gMonShrinkDuration;
|
||||
gTasks[taskId].data[2] = gMonShrinkDelta;
|
||||
gTasks[taskId].tState++; // MON_SHRINK_STEP
|
||||
@@ -956,7 +957,7 @@ static void SpriteCB_Ball_MonShrink_Step(struct Sprite *sprite)
|
||||
gTasks[taskId].data[10] += 32;
|
||||
SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0);
|
||||
gTasks[taskId].data[3] += gTasks[taskId].data[2];
|
||||
gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8;
|
||||
gSprites[spriteId].y2 = -gTasks[taskId].data[3] >> 8;
|
||||
if (gTasks[taskId].data[10] >= 1152)
|
||||
gTasks[taskId].tState++; // MON_SHRINK_INVISIBLE
|
||||
break;
|
||||
@@ -996,8 +997,8 @@ static void SpriteCB_Ball_Bounce(struct Sprite *sprite)
|
||||
sprite->sAmplitude = 40;
|
||||
sprite->sPhase = 0;
|
||||
phase = 0;
|
||||
sprite->pos1.y += Cos(phase, 40);
|
||||
sprite->pos2.y = -Cos(phase, sprite->sAmplitude);
|
||||
sprite->y += Cos(phase, 40);
|
||||
sprite->y2 = -Cos(phase, sprite->sAmplitude);
|
||||
sprite->callback = SpriteCB_Ball_Bounce_Step;
|
||||
}
|
||||
}
|
||||
@@ -1031,7 +1032,7 @@ static void SpriteCB_Ball_Bounce_Step(struct Sprite *sprite)
|
||||
switch (DIRECTION(sprite->sState))
|
||||
{
|
||||
case BALL_FALLING:
|
||||
sprite->pos2.y = -Cos(sprite->sPhase, sprite->sAmplitude);
|
||||
sprite->y2 = -Cos(sprite->sPhase, sprite->sAmplitude);
|
||||
sprite->sPhase += PHASE_DELTA(sprite->sState) + 4;
|
||||
// Once the ball touches the ground
|
||||
if (sprite->sPhase >= 64)
|
||||
@@ -1061,7 +1062,7 @@ static void SpriteCB_Ball_Bounce_Step(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case BALL_RISING:
|
||||
sprite->pos2.y = -Cos(sprite->sPhase, sprite->sAmplitude);
|
||||
sprite->y2 = -Cos(sprite->sPhase, sprite->sAmplitude);
|
||||
sprite->sPhase -= PHASE_DELTA(sprite->sState) + 4;
|
||||
// Once ball reaches max height
|
||||
if (sprite->sPhase <= 0)
|
||||
@@ -1076,8 +1077,8 @@ static void SpriteCB_Ball_Bounce_Step(struct Sprite *sprite)
|
||||
if (lastBounce)
|
||||
{
|
||||
sprite->sState = 0;
|
||||
sprite->pos1.y += Cos(64, 40);
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y += Cos(64, 40);
|
||||
sprite->y2 = 0;
|
||||
if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES)
|
||||
{
|
||||
sprite->sTimer = 0;
|
||||
@@ -1142,7 +1143,7 @@ static void SpriteCB_Ball_Wobble_Step(struct Sprite *sprite)
|
||||
// Rolling effect: every frame in the rotation, the sprite shifts 176/256 of a pixel.
|
||||
if (gBattleSpritesDataPtr->animationData->ballSubpx > 255)
|
||||
{
|
||||
sprite->pos2.x += sprite->sDirection;
|
||||
sprite->x2 += sprite->sDirection;
|
||||
gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF;
|
||||
}
|
||||
else
|
||||
@@ -1176,7 +1177,7 @@ static void SpriteCB_Ball_Wobble_Step(struct Sprite *sprite)
|
||||
case BALL_ROLL_2:
|
||||
if (gBattleSpritesDataPtr->animationData->ballSubpx > 255)
|
||||
{
|
||||
sprite->pos2.x += sprite->sDirection;
|
||||
sprite->x2 += sprite->sDirection;
|
||||
gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF;
|
||||
}
|
||||
else
|
||||
@@ -1211,7 +1212,7 @@ static void SpriteCB_Ball_Wobble_Step(struct Sprite *sprite)
|
||||
case BALL_ROLL_3:
|
||||
if (gBattleSpritesDataPtr->animationData->ballSubpx > 0xFF)
|
||||
{
|
||||
sprite->pos2.x += sprite->sDirection;
|
||||
sprite->x2 += sprite->sDirection;
|
||||
gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF;
|
||||
}
|
||||
else
|
||||
@@ -1419,12 +1420,12 @@ static void MakeCaptureStars(struct Sprite *sprite)
|
||||
LoadBallParticleGfx(BALL_MASTER);
|
||||
for (i = 0; i < ARRAY_COUNT(sCaptureStars); i++)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sBallParticleSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority);
|
||||
u8 spriteId = CreateSprite(&sBallParticleSpriteTemplates[BALL_MASTER], sprite->x, sprite->y, subpriority);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].sDuration = 24;
|
||||
gSprites[spriteId].sTargetX = sprite->pos1.x + sCaptureStars[i].xOffset;
|
||||
gSprites[spriteId].sTargetY = sprite->pos1.y + sCaptureStars[i].yOffset;
|
||||
gSprites[spriteId].sTargetX = sprite->x + sCaptureStars[i].xOffset;
|
||||
gSprites[spriteId].sTargetY = sprite->y + sCaptureStars[i].yOffset;
|
||||
gSprites[spriteId].sAmplitude = sCaptureStars[i].amplitude;
|
||||
InitAnimArcTranslation(&gSprites[spriteId]);
|
||||
gSprites[spriteId].callback = SpriteCB_CaptureStar_Flicker;
|
||||
@@ -1464,14 +1465,14 @@ static void SpriteCB_Ball_Release_Step(struct Sprite *sprite)
|
||||
switch (ballId)
|
||||
{
|
||||
case 0 ... POKEBALL_COUNT - 1:
|
||||
AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
|
||||
AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId);
|
||||
LaunchBallFadeMonTask(TRUE, gBattleAnimTarget, 14, ballId);
|
||||
break;
|
||||
}
|
||||
|
||||
// Animate Pokémon emerging from Poké Ball
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = FALSE;
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1);
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], BATTLER_AFFINE_EMERGE);
|
||||
AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]);
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY = 4096;
|
||||
}
|
||||
@@ -1485,18 +1486,18 @@ static void SpriteCB_Ball_Release_Wait(struct Sprite *sprite)
|
||||
|
||||
if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0);
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], BATTLER_AFFINE_NORMAL);
|
||||
released = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY -= 288;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY >> 8;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].y2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY >> 8;
|
||||
}
|
||||
|
||||
if (sprite->animEnded && released)
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].y2 = 0;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->wildMonInvisible;
|
||||
sprite->sFrame = 0;
|
||||
sprite->callback = DestroySpriteAfterOneFrame;
|
||||
@@ -1512,10 +1513,10 @@ static void SpriteCB_Ball_Block(struct Sprite *sprite)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
for (i = 0; i < 6; i++)
|
||||
sprite->data[i] = 0;
|
||||
|
||||
@@ -1532,13 +1533,13 @@ static void SpriteCB_Ball_Block_Step(struct Sprite *sprite)
|
||||
{
|
||||
s16 dy = sprite->sDy + 0x800;
|
||||
s16 dx = sprite->sDx + 0x680;
|
||||
sprite->pos2.x -= dx >> 8;
|
||||
sprite->pos2.y += dy >> 8;
|
||||
sprite->x2 -= dx >> 8;
|
||||
sprite->y2 += dy >> 8;
|
||||
sprite->sDy = (sprite->sDy + 0x800) & 0xFF;
|
||||
sprite->sDx = (sprite->sDx + 0x680) & 0xFF;
|
||||
|
||||
if (sprite->pos1.y + sprite->pos2.y > DISPLAY_HEIGHT
|
||||
|| sprite->pos1.x + sprite->pos2.x < -8)
|
||||
if (sprite->y + sprite->y2 > DISPLAY_HEIGHT
|
||||
|| sprite->x + sprite->x2 < -8)
|
||||
{
|
||||
sprite->sFrame = 0;
|
||||
sprite->callback = DestroySpriteAfterOneFrame;
|
||||
@@ -1637,8 +1638,8 @@ static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite)
|
||||
|
||||
static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
|
||||
sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->y2 = Cos(sprite->data[0], sprite->data[1]);
|
||||
sprite->data[1] += 2;
|
||||
if (sprite->data[1] == 50)
|
||||
DestroyBallOpenAnimationParticle(sprite);
|
||||
@@ -1830,8 +1831,8 @@ static void GreatBallOpenParticleAnimation(u8 taskId)
|
||||
|
||||
static void FanOutBallOpenParticles_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]);
|
||||
sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->y2 = Cos(sprite->data[0], sprite->data[2]);
|
||||
sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF;
|
||||
sprite->data[1] += sprite->data[5];
|
||||
sprite->data[2] += sprite->data[6];
|
||||
@@ -1872,8 +1873,8 @@ static void RepeatBallOpenParticleAnimation(u8 taskId)
|
||||
|
||||
static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
|
||||
sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->y2 = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
|
||||
sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
|
||||
sprite->data[1]++;
|
||||
sprite->data[2]++;
|
||||
@@ -1960,8 +1961,8 @@ static void PremierBallOpenParticleAnimation(u8 taskId)
|
||||
|
||||
static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
|
||||
sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
|
||||
sprite->y2 = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
|
||||
sprite->data[0] = (sprite->data[0] + 10) & 0xFF;
|
||||
sprite->data[1]++;
|
||||
sprite->data[2]++;
|
||||
@@ -2110,12 +2111,12 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId)
|
||||
gTasks[taskId].data[11] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[0] += 0x500;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
|
||||
gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8;
|
||||
else
|
||||
gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
|
||||
gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8;
|
||||
|
||||
gTasks[taskId].data[0] &= 0xFF;
|
||||
x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32;
|
||||
x = gSprites[spriteId].x + gSprites[spriteId].x2 + 32;
|
||||
if (x > 304)
|
||||
gTasks[taskId].data[10]++;
|
||||
break;
|
||||
@@ -2126,24 +2127,24 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId)
|
||||
case 2:
|
||||
gTasks[taskId].data[0] += 0x500;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
|
||||
gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8;
|
||||
else
|
||||
gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
|
||||
gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8;
|
||||
|
||||
gTasks[taskId].data[0] &= 0xFF;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
if (gSprites[spriteId].pos2.x <= 0)
|
||||
if (gSprites[spriteId].x2 <= 0)
|
||||
{
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].x2 = 0;
|
||||
done = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSprites[spriteId].pos2.x >= 0)
|
||||
if (gSprites[spriteId].x2 >= 0)
|
||||
{
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].x2 = 0;
|
||||
done = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -2301,8 +2302,8 @@ static void Task_ShinyStars(u8 taskId)
|
||||
else
|
||||
{
|
||||
gSprites[spriteId].callback = SpriteCB_ShinyStars_Diagonal;
|
||||
gSprites[spriteId].pos2.x = -32;
|
||||
gSprites[spriteId].pos2.y = 32;
|
||||
gSprites[spriteId].x2 = -32;
|
||||
gSprites[spriteId].y2 = 32;
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
if (gTasks[taskId].tStarIdx == 0)
|
||||
{
|
||||
@@ -2342,8 +2343,8 @@ static void Task_ShinyStars_Wait(u8 taskId)
|
||||
|
||||
static void SpriteCB_ShinyStars_Encircle(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->sPhase, 24);
|
||||
sprite->pos2.y = Cos(sprite->sPhase, 24);
|
||||
sprite->x2 = Sin(sprite->sPhase, 24);
|
||||
sprite->y2 = Cos(sprite->sPhase, 24);
|
||||
sprite->sPhase += 12;
|
||||
if (sprite->sPhase > 255)
|
||||
{
|
||||
@@ -2361,9 +2362,9 @@ static void SpriteCB_ShinyStars_Diagonal(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
sprite->pos2.x += 5;
|
||||
sprite->pos2.y -= 5;
|
||||
if (sprite->pos2.x > 32)
|
||||
sprite->x2 += 5;
|
||||
sprite->y2 -= 5;
|
||||
if (sprite->x2 > 32)
|
||||
{
|
||||
gTasks[sprite->sTaskId].tNumStars--;
|
||||
FreeSpriteOamMatrix(sprite);
|
||||
|
||||
@@ -335,8 +335,8 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
|
||||
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnimMaskImage_Curse, animBgData.tilesOffset);
|
||||
LoadPalette(sCurseLinesPalette, animBgData.paletteId * 16 + 1, 2);
|
||||
|
||||
gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32;
|
||||
gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
|
||||
gBattle_BG1_X = -gSprites[spriteId].x + 32;
|
||||
gBattle_BG1_Y = -gSprites[spriteId].y + 32;
|
||||
gTasks[taskId].data[0] = newSpriteId;
|
||||
gTasks[taskId].data[6] = var0;
|
||||
gTasks[taskId].func = AnimTask_DrawFallingWhiteLinesOnAttacker_Step;
|
||||
|
||||
+61
-61
@@ -504,8 +504,8 @@ static void AnimRainDrop_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] <= 13)
|
||||
{
|
||||
sprite->pos2.x++;
|
||||
sprite->pos2.y += 4;
|
||||
sprite->x2++;
|
||||
sprite->y2 += 4;
|
||||
}
|
||||
if (sprite->animEnded)
|
||||
DestroySprite(sprite);
|
||||
@@ -518,28 +518,28 @@ static void AnimWaterBubbleProjectile(struct Sprite *sprite)
|
||||
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
|
||||
sprite->animPaused = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
|
||||
sprite->animPaused = TRUE;
|
||||
}
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[6];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
|
||||
sprite->data[5] = spriteId;
|
||||
sprite->pos1.x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]);
|
||||
sprite->pos1.y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]);
|
||||
sprite->x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]);
|
||||
sprite->y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]);
|
||||
gSprites[spriteId].data[0] = gBattleAnimArgs[2];
|
||||
gSprites[spriteId].data[1] = gBattleAnimArgs[3];
|
||||
gSprites[spriteId].data[2] = gBattleAnimArgs[5];
|
||||
@@ -557,8 +557,8 @@ static void AnimWaterBubbleProjectile_Step1(struct Sprite *sprite)
|
||||
|
||||
sprite->data[0] = 1;
|
||||
AnimTranslateLinear(sprite);
|
||||
sprite->pos2.x += Sin(trigIndex >> 8, gSprites[otherSpriteId].data[0]);
|
||||
sprite->pos2.y += Cos(trigIndex >> 8, gSprites[otherSpriteId].data[1]);
|
||||
sprite->x2 += Sin(trigIndex >> 8, gSprites[otherSpriteId].data[0]);
|
||||
sprite->y2 += Cos(trigIndex >> 8, gSprites[otherSpriteId].data[1]);
|
||||
gSprites[otherSpriteId].data[3] = trigIndex + gSprites[otherSpriteId].data[2];
|
||||
if (--timer != 0)
|
||||
{
|
||||
@@ -595,9 +595,9 @@ static void AnimAuroraBeamRings(struct Sprite *sprite)
|
||||
else
|
||||
unkArg = gBattleAnimArgs[2];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + unkArg;
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = AnimAuroraBeamRings_Step;
|
||||
@@ -650,9 +650,9 @@ static void AnimToTargetInSinWave(struct Sprite *sprite)
|
||||
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[0] = 30;
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[1] = sprite->x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[3] = sprite->y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->data[5] = 0xD200 / sprite->data[0];
|
||||
@@ -675,7 +675,7 @@ static void AnimToTargetInSinWave_Step(struct Sprite *sprite)
|
||||
{
|
||||
if (AnimTranslateLinear(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
sprite->pos2.y += Sin(sprite->data[6] >> 8, sprite->data[7]);
|
||||
sprite->y2 += Sin(sprite->data[6] >> 8, sprite->data[7]);
|
||||
if ((sprite->data[6] + sprite->data[5]) >> 8 > 127)
|
||||
{
|
||||
sprite->data[6] = 0;
|
||||
@@ -706,26 +706,26 @@ static void AnimHydroCannonCharge(struct Sprite *sprite)
|
||||
{
|
||||
u8 priority;
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->pos2.y = -10;
|
||||
sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
|
||||
sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
|
||||
sprite->y2 = -10;
|
||||
priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
|
||||
if (!IsContest())
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos2.x = 10;
|
||||
sprite->x2 = 10;
|
||||
sprite->subpriority = priority + 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.x = -10;
|
||||
sprite->x2 = -10;
|
||||
sprite->subpriority = priority - 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.x = -10;
|
||||
sprite->x2 = -10;
|
||||
sprite->subpriority = priority + 2;
|
||||
}
|
||||
sprite->callback = AnimHydroCannonCharge_Step;
|
||||
@@ -771,8 +771,8 @@ static void AnimWaterGunDroplet(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4];
|
||||
sprite->data[2] = sprite->x + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->y + gBattleAnimArgs[4];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
@@ -790,9 +790,9 @@ static void AnimSmallBubblePair(struct Sprite *sprite)
|
||||
static void AnimSmallBubblePair_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = (sprite->data[0] + 11) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[0], 4);
|
||||
sprite->x2 = Sin(sprite->data[0], 4);
|
||||
sprite->data[1] += 48;
|
||||
sprite->pos2.y = -(sprite->data[1] >> 8);
|
||||
sprite->y2 = -(sprite->data[1] >> 8);
|
||||
if (--sprite->data[7] == -1)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
@@ -1027,10 +1027,10 @@ static void AnimSmallDriftingBubbles_Step(struct Sprite *sprite)
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
if (sprite->data[1] & 1)
|
||||
sprite->pos2.x = -(sprite->data[3] >> 8);
|
||||
sprite->x2 = -(sprite->data[3] >> 8);
|
||||
else
|
||||
sprite->pos2.x = sprite->data[3] >> 8;
|
||||
sprite->pos2.y = sprite->data[4] >> 8;
|
||||
sprite->x2 = sprite->data[3] >> 8;
|
||||
sprite->y2 = sprite->data[4] >> 8;
|
||||
if (++sprite->data[0] == 21)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
@@ -1040,7 +1040,7 @@ void AnimTask_WaterSpoutLaunch(u8 taskId)
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
task->data[5] = gSprites[task->data[15]].pos1.y;
|
||||
task->data[5] = gSprites[task->data[15]].y;
|
||||
task->data[1] = GetWaterSpoutPowerForAnim();
|
||||
PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
|
||||
task->func = AnimTask_WaterSpoutLaunch_Step;
|
||||
@@ -1061,18 +1061,18 @@ static void AnimTask_WaterSpoutLaunch_Step(u8 taskId)
|
||||
task->data[3] = 0;
|
||||
if (++task->data[4] & 1)
|
||||
{
|
||||
gSprites[task->data[15]].pos2.x = 3;
|
||||
gSprites[task->data[15]].pos1.y++;
|
||||
gSprites[task->data[15]].x2 = 3;
|
||||
gSprites[task->data[15]].y++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[task->data[15]].pos2.x = -3;
|
||||
gSprites[task->data[15]].x2 = -3;
|
||||
}
|
||||
}
|
||||
if (UpdateEruptAnimTask(task) == 0)
|
||||
{
|
||||
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
|
||||
gSprites[task->data[15]].pos2.x = 0;
|
||||
gSprites[task->data[15]].x2 = 0;
|
||||
task->data[3] = 0;
|
||||
task->data[4] = 0;
|
||||
task->data[0]++;
|
||||
@@ -1102,9 +1102,9 @@ static void AnimTask_WaterSpoutLaunch_Step(u8 taskId)
|
||||
{
|
||||
task->data[3] = 0;
|
||||
if (++task->data[4] & 1)
|
||||
gSprites[task->data[15]].pos2.y += 2;
|
||||
gSprites[task->data[15]].y2 += 2;
|
||||
else
|
||||
gSprites[task->data[15]].pos2.y -= 2;
|
||||
gSprites[task->data[15]].y2 -= 2;
|
||||
if (task->data[4] == 10)
|
||||
{
|
||||
PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xE0, 0x100, 0x100, 8);
|
||||
@@ -1115,11 +1115,11 @@ static void AnimTask_WaterSpoutLaunch_Step(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
gSprites[task->data[15]].pos1.y--;
|
||||
gSprites[task->data[15]].y--;
|
||||
if (UpdateEruptAnimTask(task) == 0)
|
||||
{
|
||||
ResetSpriteRotScale(task->data[15]);
|
||||
gSprites[task->data[15]].pos1.y = task->data[5];
|
||||
gSprites[task->data[15]].y = task->data[5];
|
||||
task->data[4] = 0;
|
||||
task->data[0]++;
|
||||
}
|
||||
@@ -1209,9 +1209,9 @@ static void AnimSmallWaterOrb(struct Sprite *sprite)
|
||||
case 1:
|
||||
sprite->data[2] += sprite->data[4];
|
||||
sprite->data[3] += sprite->data[5];
|
||||
sprite->pos1.x = sprite->data[2] >> 4;
|
||||
sprite->pos1.y = sprite->data[3] >> 4;
|
||||
if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
|
||||
sprite->x = sprite->data[2] >> 4;
|
||||
sprite->y = sprite->data[3] >> 4;
|
||||
if (sprite->x < -8 || sprite->x > 248 || sprite->y < -8 || sprite->y > 120)
|
||||
{
|
||||
gTasks[sprite->data[6]].data[sprite->data[7]]--;
|
||||
DestroySprite(sprite);
|
||||
@@ -1306,11 +1306,11 @@ static void AnimWaterSpoutRain(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
sprite->pos1.y += 8;
|
||||
if (sprite->pos1.y >= sprite->data[5])
|
||||
sprite->y += 8;
|
||||
if (sprite->y >= sprite->data[5])
|
||||
{
|
||||
gTasks[sprite->data[6]].data[10] = 1;
|
||||
sprite->data[1] = CreateSprite(&gWaterHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, 1);
|
||||
sprite->data[1] = CreateSprite(&gWaterHitSplatSpriteTemplate, sprite->x, sprite->y, 1);
|
||||
if (sprite->data[1] != MAX_SPRITES)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[sprite->data[1]], 3);
|
||||
@@ -1449,11 +1449,11 @@ static void AnimWaterSportDroplet(struct Sprite *sprite)
|
||||
{
|
||||
if (TranslateAnimHorizontalArc(sprite))
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->data[0] = 6;
|
||||
sprite->data[2] = (Random2() & 0x1F) - 16 + sprite->pos1.x;
|
||||
sprite->data[4] = (Random2() & 0x1F) - 16 + sprite->pos1.y;
|
||||
sprite->data[2] = (Random2() & 0x1F) - 16 + sprite->x;
|
||||
sprite->data[4] = (Random2() & 0x1F) - 16 + sprite->y;
|
||||
sprite->data[5] = ~(Random2() & 7);
|
||||
InitAnimArcTranslation(sprite);
|
||||
sprite->callback = AnimWaterSportDroplet_Step;
|
||||
@@ -1480,8 +1480,8 @@ static void AnimWaterSportDroplet_Step(struct Sprite *sprite)
|
||||
|
||||
static void AnimWaterPulseBubble(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gBattleAnimArgs[0];
|
||||
sprite->pos1.y = gBattleAnimArgs[1];
|
||||
sprite->x = gBattleAnimArgs[0];
|
||||
sprite->y = gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->data[2] = gBattleAnimArgs[4];
|
||||
@@ -1492,9 +1492,9 @@ static void AnimWaterPulseBubble(struct Sprite *sprite)
|
||||
static void AnimWaterPulseBubble_Step(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[4] -= sprite->data[0];
|
||||
sprite->pos2.y = sprite->data[4] / 10;
|
||||
sprite->y2 = sprite->data[4] / 10;
|
||||
sprite->data[5] = (sprite->data[5] + sprite->data[1]) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[5], sprite->data[2]);
|
||||
sprite->x2 = Sin(sprite->data[5], sprite->data[2]);
|
||||
if (--sprite->data[3] == 0)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
@@ -1503,8 +1503,8 @@ static void AnimWaterPulseRingBubble(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->data[4] += sprite->data[2];
|
||||
sprite->pos2.x = sprite->data[3] >> 7;
|
||||
sprite->pos2.y = sprite->data[4] >> 7;
|
||||
sprite->x2 = sprite->data[3] >> 7;
|
||||
sprite->y2 = sprite->data[4] >> 7;
|
||||
if (--sprite->data[0] == 0)
|
||||
{
|
||||
FreeSpriteOamMatrix(sprite);
|
||||
@@ -1524,11 +1524,11 @@ void AnimWaterPulseRing(struct Sprite *sprite)
|
||||
|
||||
static void AnimWaterPulseRing_Step(struct Sprite *sprite)
|
||||
{
|
||||
int xDiff = sprite->data[1] - sprite->pos1.x;
|
||||
int yDiff = sprite->data[2] - sprite->pos1.y;
|
||||
int xDiff = sprite->data[1] - sprite->x;
|
||||
int yDiff = sprite->data[2] - sprite->y;
|
||||
|
||||
sprite->pos2.x = (sprite->data[0] * xDiff) / sprite->data[3];
|
||||
sprite->pos2.y = (sprite->data[0] * yDiff) / sprite->data[3];
|
||||
sprite->x2 = (sprite->data[0] * xDiff) / sprite->data[3];
|
||||
sprite->y2 = (sprite->data[0] * yDiff) / sprite->data[3];
|
||||
if (++sprite->data[5] == sprite->data[4])
|
||||
{
|
||||
sprite->data[5] = 0;
|
||||
@@ -1551,8 +1551,8 @@ static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yD
|
||||
u8 spriteId;
|
||||
|
||||
something = sprite->data[0] / 2;
|
||||
combinedX = sprite->pos1.x + sprite->pos2.x;
|
||||
combinedY = sprite->pos1.y + sprite->pos2.y;
|
||||
combinedX = sprite->x + sprite->x2;
|
||||
combinedY = sprite->y + sprite->y2;
|
||||
if (yDiff < 0)
|
||||
unusedVar *= -1; //Needed to match
|
||||
randomSomethingY = yDiff + (Random2() % 10) - 5;
|
||||
|
||||
+2
-2
@@ -1112,8 +1112,8 @@ void InitLinkBattleVsScreen(u8 taskId)
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.tileNum += 0x40;
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[0] = 0;
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[0] = 1;
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_V].pos1.x;
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_S].pos1.x;
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_V].x;
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_S].x;
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[2] = 0;
|
||||
gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[2] = 0;
|
||||
}
|
||||
|
||||
@@ -365,7 +365,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
|
||||
static void TryShinyAnimAfterMonAnim(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
&& gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
|
||||
{
|
||||
@@ -1134,7 +1134,7 @@ static void LinkOpponentHandleLoadMonSprite(void)
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
@@ -1302,7 +1302,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
@@ -1324,8 +1324,8 @@ static void LinkOpponentHandleTrainerSlide(void)
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, 0x1E);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x += 32;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
@@ -1342,7 +1342,7 @@ static void LinkOpponentHandleTrainerSlideBack(void)
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||
@@ -1703,7 +1703,7 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
|
||||
|
||||
@@ -265,7 +265,7 @@ static void Intro_ShowHealthbox(void)
|
||||
|
||||
static void WaitForMonAnimAfterLoad(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ static void CompleteOnHealthbarDone(void)
|
||||
|
||||
static void FreeMonSpriteAfterFaintAnim(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
|
||||
{
|
||||
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
|
||||
@@ -1021,7 +1021,7 @@ static void LinkPartnerHandleLoadMonSprite(void)
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
@@ -1144,7 +1144,7 @@ static void LinkPartnerHandleDrawTrainerPic(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
|
||||
@@ -1163,7 +1163,7 @@ static void LinkPartnerHandleTrainerSlideBack(void)
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||
@@ -1535,7 +1535,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
|
||||
@@ -379,7 +379,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
|
||||
|
||||
static void TryShinyAnimAfterMonAnim(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
|
||||
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
|
||||
@@ -1143,7 +1143,7 @@ static void OpponentHandleLoadMonSprite(void)
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
@@ -1310,7 +1310,7 @@ static void OpponentHandleDrawTrainerPic(void)
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
@@ -1379,8 +1379,8 @@ static void OpponentHandleTrainerSlide(void)
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, 0x1E);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x += 32;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
@@ -1396,7 +1396,7 @@ static void OpponentHandleTrainerSlideBack(void)
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||
@@ -1869,7 +1869,7 @@ static void OpponentHandleIntroTrainerBallThrow(void)
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
|
||||
|
||||
@@ -229,7 +229,7 @@ static void PlayerBufferRunCommand(void)
|
||||
|
||||
static void CompleteOnBankSpritePosX_0(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1316,7 +1316,7 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
|
||||
|
||||
static void FreeMonSpriteAfterFaintAnim(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
|
||||
{
|
||||
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
|
||||
@@ -2328,8 +2328,8 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].y2 = 48;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
@@ -2343,7 +2343,7 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
}
|
||||
@@ -2382,7 +2382,7 @@ static void PlayerHandleTrainerSlide(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 80, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, 30);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
|
||||
@@ -2396,7 +2396,7 @@ static void PlayerHandleTrainerSlideBack(void)
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
@@ -2953,7 +2953,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sBattlerId = gActiveBattler;
|
||||
|
||||
|
||||
@@ -277,7 +277,7 @@ static void Intro_ShowHealthbox(void)
|
||||
|
||||
static void WaitForMonAnimAfterLoad(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -472,7 +472,7 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
|
||||
|
||||
static void FreeMonSpriteAfterFaintAnim(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
|
||||
{
|
||||
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
|
||||
@@ -1205,7 +1205,7 @@ static void PlayerPartnerHandleLoadMonSprite(void)
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
@@ -1320,7 +1320,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
}
|
||||
@@ -1331,8 +1331,8 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].y2 = 48;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
@@ -1354,7 +1354,7 @@ static void PlayerPartnerHandleTrainerSlideBack(void)
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||
@@ -1784,7 +1784,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
|
||||
@@ -349,7 +349,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
|
||||
static void TryShinyAnimAfterMonAnim(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
|
||||
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
&& gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
|
||||
{
|
||||
@@ -1117,7 +1117,7 @@ static void RecordedOpponentHandleLoadMonSprite(void)
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
@@ -1249,7 +1249,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
@@ -1270,7 +1270,7 @@ static void RecordedOpponentHandleTrainerSlideBack(void)
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||
@@ -1643,7 +1643,7 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
|
||||
|
||||
@@ -342,7 +342,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
|
||||
|
||||
static void WaitForMonAnimAfterLoad(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -365,7 +365,7 @@ static void CompleteOnHealthbarDone(void)
|
||||
|
||||
static void FreeMonSpriteAfterFaintAnim(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
|
||||
{
|
||||
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
|
||||
@@ -1098,7 +1098,7 @@ static void RecordedPlayerHandleLoadMonSprite(void)
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
|
||||
@@ -1233,8 +1233,8 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].y2 = 48;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
@@ -1247,7 +1247,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
}
|
||||
@@ -1267,7 +1267,7 @@ static void RecordedPlayerHandleTrainerSlideBack(void)
|
||||
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
|
||||
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
|
||||
@@ -1668,7 +1668,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
|
||||
@@ -361,7 +361,7 @@ static void SafariHandleDrawTrainerPic(void)
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
|
||||
@@ -1041,7 +1041,7 @@ static void WallyHandleDrawTrainerPic(void)
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size),
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
@@ -1056,7 +1056,7 @@ static void WallyHandleTrainerSlide(void)
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size),
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2;
|
||||
@@ -1435,7 +1435,7 @@ static void WallyHandleIntroTrainerBallThrow(void)
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
|
||||
|
||||
|
||||
+61
-54
@@ -1211,8 +1211,8 @@ static const u8 gUnknown_0860D1A0[DOME_TOURNAMENT_TRAINERS_COUNT / 2][DOME_ROUND
|
||||
|
||||
static const u8 gUnknown_0860D1C0[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 15, 8, 7, 3, 12, 11, 4, 1, 14, 9, 6, 2, 13, 10, 5};
|
||||
|
||||
// Each tourney trainer has a text describing their potential to win, depending on their seed ranking for the current tourney
|
||||
// Dome Ace Tucker has their own separate potential text
|
||||
// The first line of text on a trainers info card. It describes their potential to win, based on their seed in the tournament tree.
|
||||
// Dome Ace Tucker has their own separate potential text.
|
||||
static const u8 *const sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT + 1] =
|
||||
{
|
||||
BattleDome_Text_Potential1, // Highest potential
|
||||
@@ -1234,7 +1234,7 @@ static const u8 *const sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT
|
||||
BattleDome_Text_PotentialDomeAceTucker,
|
||||
};
|
||||
|
||||
// The first line of text on a trainers info card that gives information about their battle style (dependent on their party's moves)
|
||||
// The second line of text on a trainers info card. It gives information about their battle style (dependent on their party's moves).
|
||||
static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] =
|
||||
{
|
||||
[DOME_BATTLE_STYLE_RISKY] = BattleDome_Text_StyleRiskDisaster,
|
||||
@@ -1271,7 +1271,7 @@ static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] =
|
||||
[DOME_BATTLE_STYLE_UNUSED4] = BattleDome_Text_StyleSampleMessage4,
|
||||
};
|
||||
|
||||
// The second line of text on a trainers info card that gives information about their party's stat spread
|
||||
// The third line of text on a trainers info card. It that gives information about their party's stat spread (based on their Pokémon's effort values and Nature).
|
||||
static const u8 *const sBattleDomeOpponentStatsTexts[] =
|
||||
{
|
||||
BattleDome_Text_EmphasizesHPAndAtk, // DOME_TEXT_TWO_GOOD_STATS and DOME_TEXT_HP start here
|
||||
@@ -2766,13 +2766,22 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
|
||||
}
|
||||
if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
|
||||
{
|
||||
// BUG: TYPE_x2 is not necessary and makes the condition always false if the ability is wonder guard.
|
||||
// BUG: the value of TYPE_x2 does not exist in gTypeEffectiveness, so if defAbility is ABILITY_WONDER_GUARD, the conditional always fails
|
||||
#ifndef BUGFIX
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == defType1)
|
||||
if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD)
|
||||
typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2)
|
||||
if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD)
|
||||
typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
|
||||
#else
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == defType1)
|
||||
if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD)
|
||||
typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2)
|
||||
if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD)
|
||||
typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
|
||||
#endif
|
||||
}
|
||||
i += 3;
|
||||
}
|
||||
@@ -3093,17 +3102,17 @@ static void Task_ShowTourneyInfoCard(u8 taskId)
|
||||
// That means that the sprite needs to move with the moving card in the opposite scrolling direction.
|
||||
static void SpriteCb_TrainerIconCardScrollUp(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.y += 4;
|
||||
sprite->y += 4;
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
if (sprite->pos1.y >= -32)
|
||||
if (sprite->y >= -32)
|
||||
sprite->invisible = FALSE;
|
||||
if (++sprite->data[1] == 40)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.y >= 192)
|
||||
if (sprite->y >= 192)
|
||||
{
|
||||
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
|
||||
FreeAndDestroyTrainerPicSprite(sprite->data[3]);
|
||||
@@ -3113,17 +3122,17 @@ static void SpriteCb_TrainerIconCardScrollUp(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCb_TrainerIconCardScrollDown(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.y -= 4;
|
||||
sprite->y -= 4;
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
if (sprite->pos1.y <= 192)
|
||||
if (sprite->y <= 192)
|
||||
sprite->invisible = FALSE;
|
||||
if (++sprite->data[1] == 40)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.y <= -32)
|
||||
if (sprite->y <= -32)
|
||||
{
|
||||
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
|
||||
FreeAndDestroyTrainerPicSprite(sprite->data[3]);
|
||||
@@ -3133,17 +3142,17 @@ static void SpriteCb_TrainerIconCardScrollDown(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCb_TrainerIconCardScrollLeft(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += 4;
|
||||
sprite->x += 4;
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
if (sprite->pos1.x >= -32)
|
||||
if (sprite->x >= -32)
|
||||
sprite->invisible = FALSE;
|
||||
if (++sprite->data[1] == 64)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.x >= DISPLAY_WIDTH + 32)
|
||||
if (sprite->x >= DISPLAY_WIDTH + 32)
|
||||
{
|
||||
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
|
||||
FreeAndDestroyTrainerPicSprite(sprite->data[3]);
|
||||
@@ -3153,17 +3162,17 @@ static void SpriteCb_TrainerIconCardScrollLeft(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCb_TrainerIconCardScrollRight(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x -= 4;
|
||||
sprite->x -= 4;
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
if (sprite->pos1.x <= DISPLAY_WIDTH + 32)
|
||||
if (sprite->x <= DISPLAY_WIDTH + 32)
|
||||
sprite->invisible = FALSE;
|
||||
if (++sprite->data[1] == 64)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.x <= -32)
|
||||
if (sprite->x <= -32)
|
||||
{
|
||||
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
|
||||
FreeAndDestroyTrainerPicSprite(sprite->data[3]);
|
||||
@@ -3183,17 +3192,17 @@ static void SpriteCb_MonIconCardScrollUp(struct Sprite *sprite)
|
||||
{
|
||||
if (!sprite->sMonIconStill)
|
||||
UpdateMonIconFrame(sprite);
|
||||
sprite->pos1.y += 4;
|
||||
sprite->y += 4;
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
if (sprite->pos1.y >= -16)
|
||||
if (sprite->y >= -16)
|
||||
sprite->invisible = FALSE;
|
||||
if (++sprite->data[1] == 40)
|
||||
sprite->callback = SpriteCb_MonIcon;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.y >= 176)
|
||||
if (sprite->y >= 176)
|
||||
{
|
||||
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
|
||||
FreeAndDestroyMonIconSprite(sprite);
|
||||
@@ -3205,17 +3214,17 @@ static void SpriteCb_MonIconCardScrollDown(struct Sprite *sprite)
|
||||
{
|
||||
if (!sprite->sMonIconStill)
|
||||
UpdateMonIconFrame(sprite);
|
||||
sprite->pos1.y -= 4;
|
||||
sprite->y -= 4;
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
if (sprite->pos1.y <= 176)
|
||||
if (sprite->y <= 176)
|
||||
sprite->invisible = FALSE;
|
||||
if (++sprite->data[1] == 40)
|
||||
sprite->callback = SpriteCb_MonIcon;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.y <= -16)
|
||||
if (sprite->y <= -16)
|
||||
{
|
||||
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
|
||||
FreeAndDestroyMonIconSprite(sprite);
|
||||
@@ -3227,17 +3236,17 @@ static void SpriteCb_MonIconCardScrollLeft(struct Sprite *sprite)
|
||||
{
|
||||
if (!sprite->sMonIconStill)
|
||||
UpdateMonIconFrame(sprite);
|
||||
sprite->pos1.x += 4;
|
||||
sprite->x += 4;
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
if (sprite->pos1.x >= -16)
|
||||
if (sprite->x >= -16)
|
||||
sprite->invisible = FALSE;
|
||||
if (++sprite->data[1] == 64)
|
||||
sprite->callback = SpriteCb_MonIcon;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.x >= DISPLAY_WIDTH + 16)
|
||||
if (sprite->x >= DISPLAY_WIDTH + 16)
|
||||
{
|
||||
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
|
||||
FreeAndDestroyMonIconSprite(sprite);
|
||||
@@ -3249,17 +3258,17 @@ static void SpriteCb_MonIconCardScrollRight(struct Sprite *sprite)
|
||||
{
|
||||
if (!sprite->sMonIconStill)
|
||||
UpdateMonIconFrame(sprite);
|
||||
sprite->pos1.x -= 4;
|
||||
sprite->x -= 4;
|
||||
if (sprite->data[0] != 0)
|
||||
{
|
||||
if (sprite->pos1.x <= DISPLAY_WIDTH + 16)
|
||||
if (sprite->x <= DISPLAY_WIDTH + 16)
|
||||
sprite->invisible = FALSE;
|
||||
if (++sprite->data[1] == 64)
|
||||
sprite->callback = SpriteCb_MonIcon;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.x <= -16)
|
||||
if (sprite->x <= -16)
|
||||
{
|
||||
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
|
||||
FreeAndDestroyMonIconSprite(sprite);
|
||||
@@ -5211,40 +5220,38 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
|
||||
}
|
||||
|
||||
j = bestId;
|
||||
goto LABEL;
|
||||
while (j != 0)
|
||||
do
|
||||
{
|
||||
for (j = 0, k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++)
|
||||
for (i = 0; i < roundId - 1; i++)
|
||||
{
|
||||
if (bestScore < moveScores[k])
|
||||
{
|
||||
j = k;
|
||||
bestScore = moveScores[k];
|
||||
}
|
||||
else if (bestScore == moveScores[k] && moveIds[j] < moveIds[k])
|
||||
{
|
||||
j = k;
|
||||
}
|
||||
}
|
||||
if (i == roundId - 1)
|
||||
break;
|
||||
LABEL:
|
||||
{
|
||||
for (i = 0; i < roundId - 1; i++)
|
||||
{
|
||||
if (gSaveBlock2Ptr->frontier.domeWinningMoves[sub_81953E8(winnerTournamentId, i)] == moveIds[j])
|
||||
break;
|
||||
}
|
||||
if (i == roundId - 1)
|
||||
if (gSaveBlock2Ptr->frontier.domeWinningMoves[sub_81953E8(winnerTournamentId, i)] == moveIds[j])
|
||||
break;
|
||||
|
||||
}
|
||||
if (i != roundId - 1)
|
||||
{
|
||||
moveScores[j] = 0;
|
||||
bestScore = 0;
|
||||
j = 0;
|
||||
for (k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++)
|
||||
j += moveScores[k];
|
||||
if (j == 0)
|
||||
break;
|
||||
j = 0;
|
||||
for (k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++)
|
||||
{
|
||||
if (bestScore < moveScores[k])
|
||||
{
|
||||
j = k;
|
||||
bestScore = moveScores[k];
|
||||
}
|
||||
else if (bestScore == moveScores[k] && moveIds[j] < moveIds[k]) // Yes, these conditions are redundant
|
||||
{
|
||||
j = k;
|
||||
bestScore = moveScores[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (i != roundId - 1);
|
||||
|
||||
if (moveScores[j] == 0)
|
||||
j = bestId;
|
||||
|
||||
@@ -38,7 +38,7 @@ static void GenerateInitialRentalMons(void);
|
||||
static void GetOpponentMostCommonMonType(void);
|
||||
static void GetOpponentBattleStyle(void);
|
||||
static void RestorePlayerPartyHeldItems(void);
|
||||
static u16 GetFactoryMonId(u8 lvlMode, u8 challengeNum, bool8 arg2);
|
||||
static u16 GetFactoryMonId(u8 lvlMode, u8 challengeNum, bool8 useBetterRange);
|
||||
static u8 GetMoveBattleStyle(u16 move);
|
||||
|
||||
// Number of moves needed on the team to be considered using a certain battle style
|
||||
|
||||
+55
-50
@@ -1307,7 +1307,7 @@ static void Select_InitAllSprites(void)
|
||||
Select_SetBallSpritePaletteNum(i);
|
||||
}
|
||||
cursorPos = sFactorySelectScreen->cursorPos;
|
||||
x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].pos1.x;
|
||||
x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].x;
|
||||
sFactorySelectScreen->cursorSpriteId = CreateSprite(&sSpriteTemplate_Select_Arrow, x, 88, 0);
|
||||
sFactorySelectScreen->menuCursor1SpriteId = CreateSprite(&sSpriteTemplate_Select_MenuHighlightLeft, 176, 112, 0);
|
||||
sFactorySelectScreen->menuCursor2SpriteId = CreateSprite(&sSpriteTemplate_Select_MenuHighlightRight, 176, 144, 0);
|
||||
@@ -1352,7 +1352,7 @@ static void Select_UpdateBallCursorPosition(s8 direction)
|
||||
}
|
||||
|
||||
cursorPos = sFactorySelectScreen->cursorPos;
|
||||
gSprites[sFactorySelectScreen->cursorSpriteId].pos1.x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].pos1.x;
|
||||
gSprites[sFactorySelectScreen->cursorSpriteId].x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].x;
|
||||
}
|
||||
|
||||
static void Select_UpdateMenuCursorPosition(s8 direction)
|
||||
@@ -1372,8 +1372,8 @@ static void Select_UpdateMenuCursorPosition(s8 direction)
|
||||
sFactorySelectScreen->menuCursorPos = ARRAY_COUNT(sSelect_MenuOptionFuncs) - 1;
|
||||
}
|
||||
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
|
||||
}
|
||||
|
||||
static void Select_UpdateYesNoCursorPosition(s8 direction)
|
||||
@@ -1393,8 +1393,8 @@ static void Select_UpdateYesNoCursorPosition(s8 direction)
|
||||
sFactorySelectScreen->yesNoCursorPos = 1;
|
||||
}
|
||||
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
|
||||
}
|
||||
|
||||
static void Select_HandleMonSelectionChange(void)
|
||||
@@ -1823,10 +1823,10 @@ static void Select_ShowMenuOptions(void)
|
||||
if (!sFactorySelectScreen->fromSummaryScreen)
|
||||
sFactorySelectScreen->menuCursorPos = 0;
|
||||
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.x = 176;
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.x = 208;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].x = 176;
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].x = 208;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
|
||||
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = FALSE;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = FALSE;
|
||||
@@ -1838,10 +1838,10 @@ static void Select_ShowYesNoOptions(void)
|
||||
{
|
||||
sFactorySelectScreen->yesNoCursorPos = 0;
|
||||
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.x = 176;
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.x = 208;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].x = 176;
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].y = 112;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].x = 208;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].y = 112;
|
||||
|
||||
gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = FALSE;
|
||||
gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = FALSE;
|
||||
@@ -2793,33 +2793,33 @@ static void Swap_Task_SlideCycleBalls(u8 taskId)
|
||||
{
|
||||
if (i != FRONTIER_PARTY_SIZE - 1)
|
||||
{
|
||||
u8 posX = lastX - gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
|
||||
u8 posX = lastX - gSprites[sFactorySwapScreen->ballSpriteIds[i]].x;
|
||||
if (posX == 16 || gTasks[taskId].tBallCycled(i + 1) == TRUE)
|
||||
{
|
||||
lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
|
||||
lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].x;
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].x += 10;
|
||||
}
|
||||
else if (posX > 16)
|
||||
{
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[i + 1]].pos1.x - 48;
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].x = gSprites[sFactorySwapScreen->ballSpriteIds[i + 1]].x - 48;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
|
||||
lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].x;
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].x += 10;
|
||||
}
|
||||
|
||||
if (gTasks[taskId].tBallCycled(i) == TRUE)
|
||||
{
|
||||
// New ball coming in from left, check if it has reached dest
|
||||
if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x > (i * 48) + 72)
|
||||
if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].x > (i * 48) + 72)
|
||||
{
|
||||
// Overshot dest, set x and finish
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = (i * 48) + 72;
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].x = (i * 48) + 72;
|
||||
finished = TRUE;
|
||||
}
|
||||
else if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x == (i * 48) + 72)
|
||||
else if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].x == (i * 48) + 72)
|
||||
{
|
||||
finished = TRUE;
|
||||
}
|
||||
@@ -2833,11 +2833,11 @@ static void Swap_Task_SlideCycleBalls(u8 taskId)
|
||||
finished = FALSE;
|
||||
}
|
||||
|
||||
if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x - 16 > DISPLAY_WIDTH)
|
||||
if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].x - 16 > DISPLAY_WIDTH)
|
||||
{
|
||||
// Ball is offscreen right, cycle its palette and move to left side of screen
|
||||
lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = -16;
|
||||
lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].x;
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].x = -16;
|
||||
if (sFactorySwapScreen->inEnemyScreen == TRUE)
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(PALTAG_BALL_SELECTED);
|
||||
else
|
||||
@@ -2881,7 +2881,7 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case SLIDE_BUTTON_PKMN:
|
||||
currPosX = gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][0]].pos1.x;
|
||||
currPosX = gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][0]].x;
|
||||
if (!gTasks[taskId].tSlidingOn)
|
||||
{
|
||||
// Sliding "Pkmn for Swap" offscreen
|
||||
@@ -2915,7 +2915,7 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
|
||||
for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); i++)
|
||||
{
|
||||
for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds); j++)
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][i]].pos1.x += deltaX;
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][i]].x += deltaX;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -2923,9 +2923,9 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
|
||||
// Set final position
|
||||
for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds); j++)
|
||||
{
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][0]].pos1.x = posX;
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][1]].pos1.x = posX + 16;
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][2]].pos1.x = posX + 48;
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][0]].x = posX;
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][1]].x = posX + 16;
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][2]].x = posX + 48;
|
||||
}
|
||||
prevTaskId = gTasks[taskId].tTaskId;
|
||||
gTasks[prevTaskId].tSlideFinishedPkmn = TRUE;
|
||||
@@ -2933,7 +2933,7 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case SLIDE_BUTTON_CANCEL:
|
||||
currPosX = gSprites[sFactorySwapScreen->cancelButtonSpriteIds[0][0]].pos1.x;
|
||||
currPosX = gSprites[sFactorySwapScreen->cancelButtonSpriteIds[0][0]].x;
|
||||
if (!gTasks[taskId].tSlidingOn)
|
||||
{
|
||||
// Sliding "Cancel" offscreen
|
||||
@@ -2967,7 +2967,7 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
|
||||
for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds); i++)
|
||||
{
|
||||
for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds[0]); j++)
|
||||
gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][i]].pos1.x += deltaX;
|
||||
gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][i]].x += deltaX;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -2975,8 +2975,8 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
|
||||
// Set final position
|
||||
for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds); j++)
|
||||
{
|
||||
gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][0]].pos1.x = posX;
|
||||
gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][1]].pos1.x = posX + 16;
|
||||
gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][0]].x = posX;
|
||||
gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][1]].x = posX + 16;
|
||||
}
|
||||
prevTaskId = gTasks[taskId].tTaskId;
|
||||
gTasks[prevTaskId].tSlideFinishedCancel = TRUE;
|
||||
@@ -3221,7 +3221,7 @@ static void Swap_Task_SwitchPartyScreen(u8 taskId)
|
||||
for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); i++)
|
||||
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][i]].invisible = TRUE;
|
||||
}
|
||||
gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x;
|
||||
gSprites[sFactorySwapScreen->cursorSpriteId].x = gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].x;
|
||||
gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Swap_Task_FadeSpeciesName;
|
||||
sFactorySwapScreen->fadeSpeciesNameCoeffDelay = 0;
|
||||
sFactorySwapScreen->fadeSpeciesNameCoeff = 6;
|
||||
@@ -3433,7 +3433,7 @@ static void Swap_InitAllSprites(void)
|
||||
sFactorySwapScreen->ballSpriteIds[i] = CreateSprite(&spriteTemplate, (48 * i) + 72, 64, 1);
|
||||
gSprites[sFactorySwapScreen->ballSpriteIds[i]].data[0] = 0;
|
||||
}
|
||||
sFactorySwapScreen->cursorSpriteId = CreateSprite(&sSpriteTemplate_Swap_Arrow, gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x, 88, 0);
|
||||
sFactorySwapScreen->cursorSpriteId = CreateSprite(&sSpriteTemplate_Swap_Arrow, gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].x, 88, 0);
|
||||
sFactorySwapScreen->menuCursor1SpriteId = CreateSprite(&sSpriteTemplate_Swap_MenuHighlightLeft, 176, 112, 0);
|
||||
sFactorySwapScreen->menuCursor2SpriteId = CreateSprite(&sSpriteTemplate_Swap_MenuHighlightRight, 176, 144, 0);
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
|
||||
@@ -3541,7 +3541,7 @@ static void Swap_HandleActionCursorChange(u8 cursorId)
|
||||
// Cursor is on one of the pokemon
|
||||
gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
|
||||
Swap_HideActionButtonHighlights();
|
||||
gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].pos1.x;
|
||||
gSprites[sFactorySwapScreen->cursorSpriteId].x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].x;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3618,8 +3618,8 @@ static void Swap_UpdateYesNoCursorPosition(s8 direction)
|
||||
sFactorySwapScreen->yesNoCursorPos = 1;
|
||||
}
|
||||
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
|
||||
}
|
||||
|
||||
static void Swap_UpdateMenuCursorPosition(s8 direction)
|
||||
@@ -3640,8 +3640,8 @@ static void Swap_UpdateMenuCursorPosition(s8 direction)
|
||||
sFactorySwapScreen->menuCursorPos = ARRAY_COUNT(sSwap_MenuOptionFuncs) - 1;
|
||||
}
|
||||
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
|
||||
}
|
||||
|
||||
static void Swap_HighlightActionButton(u8 actionId)
|
||||
@@ -3693,10 +3693,10 @@ static void Swap_ShowMenuOptions(void)
|
||||
else
|
||||
sFactorySwapScreen->menuCursorPos = 0;
|
||||
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.x = 176;
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.x = 208;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].x = 176;
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].x = 208;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
|
||||
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = FALSE;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = FALSE;
|
||||
@@ -3708,10 +3708,10 @@ static void Swap_ShowYesNoOptions(void)
|
||||
{
|
||||
sFactorySwapScreen->yesNoCursorPos = 0;
|
||||
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.x = 176;
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.x = 208;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].x = 176;
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].y = 112;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].x = 208;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].y = 112;
|
||||
|
||||
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = FALSE;
|
||||
gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = FALSE;
|
||||
@@ -4221,12 +4221,17 @@ static void Task_OpenMonPic(u8 taskId)
|
||||
return;
|
||||
break;
|
||||
default:
|
||||
#ifndef UBFIX
|
||||
DestroyTask(taskId);
|
||||
#endif
|
||||
// UB: Should not use the task after it has been deleted.
|
||||
if (gTasks[taskId].tIsSwapScreen == TRUE)
|
||||
Swap_CreateMonSprite();
|
||||
else
|
||||
Select_CreateMonSprite();
|
||||
#ifdef UBFIX
|
||||
DestroyTask(taskId);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
task->tState++;
|
||||
|
||||
+14
-14
@@ -40,7 +40,7 @@ extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
|
||||
static u8 GetBattlePalaceMoveGroup(u16 move);
|
||||
static u16 GetBattlePalaceTarget(void);
|
||||
static void SpriteCB_TrainerSlideVertical(struct Sprite *sprite);
|
||||
static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId);
|
||||
static bool8 ShouldAnimBeDoneRegardlessOfSubstitute(u8 animId);
|
||||
static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId);
|
||||
static void Task_ClearBitWhenSpecialAnimDone(u8 taskId);
|
||||
static void ClearSpritesBattlerHealthboxAnimData(void);
|
||||
@@ -376,10 +376,10 @@ void SpriteCB_TrainerSlideIn(struct Sprite *sprite)
|
||||
{
|
||||
if (!(gIntroSlideFlags & 1))
|
||||
{
|
||||
sprite->pos2.x += sprite->sSpeedX;
|
||||
if (sprite->pos2.x == 0)
|
||||
sprite->x2 += sprite->sSpeedX;
|
||||
if (sprite->x2 == 0)
|
||||
{
|
||||
if (sprite->pos2.y != 0)
|
||||
if (sprite->y2 != 0)
|
||||
sprite->callback = SpriteCB_TrainerSlideVertical;
|
||||
else
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
@@ -390,8 +390,8 @@ void SpriteCB_TrainerSlideIn(struct Sprite *sprite)
|
||||
// Slide up to 0 if necessary (used by multi battle intro)
|
||||
static void SpriteCB_TrainerSlideVertical(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y -= 2;
|
||||
if (sprite->pos2.y == 0)
|
||||
sprite->y2 -= 2;
|
||||
if (sprite->y2 == 0)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
|
||||
@@ -444,7 +444,7 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de
|
||||
return TRUE;
|
||||
}
|
||||
if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
|
||||
&& !ShouldAnimBeDoneRegardlessOfSubsitute(tableId))
|
||||
&& !ShouldAnimBeDoneRegardlessOfSubstitute(tableId))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -480,7 +480,7 @@ static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId)
|
||||
|
||||
#undef tBattlerId
|
||||
|
||||
static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
|
||||
static bool8 ShouldAnimBeDoneRegardlessOfSubstitute(u8 animId)
|
||||
{
|
||||
switch (animId)
|
||||
{
|
||||
@@ -914,7 +914,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
|
||||
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
|
||||
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
|
||||
}
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -989,7 +989,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
|
||||
gBattleMonForms[battlerAtk] = gBattleMonForms[battlerDef];
|
||||
}
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleMonForms[battlerAtk]);
|
||||
}
|
||||
}
|
||||
@@ -1038,9 +1038,9 @@ void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId)
|
||||
StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[battlerId]);
|
||||
|
||||
if (!loadMonSprite)
|
||||
gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(battlerId);
|
||||
gSprites[spriteId].y = GetSubstituteSpriteDefault_Y(battlerId);
|
||||
else
|
||||
gSprites[spriteId].pos1.y = GetBattlerSpriteDefault_Y(battlerId);
|
||||
gSprites[spriteId].y = GetBattlerSpriteDefault_Y(battlerId);
|
||||
}
|
||||
|
||||
void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move)
|
||||
@@ -1181,8 +1181,8 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
|
||||
if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute)
|
||||
invisible = TRUE;
|
||||
|
||||
shadowSprite->pos1.x = battlerSprite->pos1.x;
|
||||
shadowSprite->pos2.x = battlerSprite->pos2.x;
|
||||
shadowSprite->x = battlerSprite->x;
|
||||
shadowSprite->x2 = battlerSprite->x2;
|
||||
shadowSprite->invisible = invisible;
|
||||
}
|
||||
|
||||
|
||||
+49
-56
@@ -159,7 +159,7 @@ enum
|
||||
|
||||
// strings
|
||||
extern const u8 gText_Slash[];
|
||||
extern const u8 gText_HighlightDarkGrey[];
|
||||
extern const u8 gText_HighlightDarkGray[];
|
||||
extern const u8 gText_DynColor2[];
|
||||
extern const u8 gText_DynColor2Male[];
|
||||
extern const u8 gText_DynColor1Female[];
|
||||
@@ -975,33 +975,33 @@ static void SpriteCB_HealthBar(struct Sprite *sprite)
|
||||
switch (sprite->hBar_Data6)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos1.x = gSprites[healthboxSpriteId].pos1.x + 16;
|
||||
sprite->pos1.y = gSprites[healthboxSpriteId].pos1.y;
|
||||
sprite->x = gSprites[healthboxSpriteId].x + 16;
|
||||
sprite->y = gSprites[healthboxSpriteId].y;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.x = gSprites[healthboxSpriteId].pos1.x + 16;
|
||||
sprite->pos1.y = gSprites[healthboxSpriteId].pos1.y;
|
||||
sprite->x = gSprites[healthboxSpriteId].x + 16;
|
||||
sprite->y = gSprites[healthboxSpriteId].y;
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
sprite->pos1.x = gSprites[healthboxSpriteId].pos1.x + 8;
|
||||
sprite->pos1.y = gSprites[healthboxSpriteId].pos1.y;
|
||||
sprite->x = gSprites[healthboxSpriteId].x + 8;
|
||||
sprite->y = gSprites[healthboxSpriteId].y;
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->pos2.x = gSprites[healthboxSpriteId].pos2.x;
|
||||
sprite->pos2.y = gSprites[healthboxSpriteId].pos2.y;
|
||||
sprite->x2 = gSprites[healthboxSpriteId].x2;
|
||||
sprite->y2 = gSprites[healthboxSpriteId].y2;
|
||||
}
|
||||
|
||||
static void SpriteCB_HealthBoxOther(struct Sprite *sprite)
|
||||
{
|
||||
u8 healthboxMainSpriteId = sprite->hOther_HealthBoxSpriteId;
|
||||
|
||||
sprite->pos1.x = gSprites[healthboxMainSpriteId].pos1.x + 64;
|
||||
sprite->pos1.y = gSprites[healthboxMainSpriteId].pos1.y;
|
||||
sprite->x = gSprites[healthboxMainSpriteId].x + 64;
|
||||
sprite->y = gSprites[healthboxMainSpriteId].y;
|
||||
|
||||
sprite->pos2.x = gSprites[healthboxMainSpriteId].pos2.x;
|
||||
sprite->pos2.y = gSprites[healthboxMainSpriteId].pos2.y;
|
||||
sprite->x2 = gSprites[healthboxMainSpriteId].x2;
|
||||
sprite->y2 = gSprites[healthboxMainSpriteId].y2;
|
||||
}
|
||||
|
||||
void SetBattleBarStruct(u8 battlerId, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue)
|
||||
@@ -1029,8 +1029,8 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId)
|
||||
|
||||
static void UpdateSpritePos(u8 spriteId, s16 x, s16 y)
|
||||
{
|
||||
gSprites[spriteId].pos1.x = x;
|
||||
gSprites[spriteId].pos1.y = y;
|
||||
gSprites[spriteId].x = x;
|
||||
gSprites[spriteId].y = y;
|
||||
}
|
||||
|
||||
void DestoryHealthboxSprite(u8 healthboxSpriteId)
|
||||
@@ -1099,21 +1099,14 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
|
||||
u32 windowId, spriteTileNum;
|
||||
u8 *windowTileData;
|
||||
u8 text[16];
|
||||
u32 xPos, var1;
|
||||
void *objVram;
|
||||
u32 xPos;
|
||||
u8 *objVram;
|
||||
|
||||
text[0] = CHAR_EXTRA_SYMBOL;
|
||||
text[1] = CHAR_LV_2;
|
||||
|
||||
text[0] = 0xF9;
|
||||
text[1] = 5;
|
||||
|
||||
xPos = (u32) ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
// Alright, that part was unmatchable. It's basically doing:
|
||||
// xPos = 5 * (3 - (u32)(&text[2]));
|
||||
xPos--;
|
||||
xPos--;
|
||||
xPos -= ((u32)(text));
|
||||
var1 = (3 - xPos);
|
||||
xPos = 4 * var1;
|
||||
xPos += var1;
|
||||
objVram = ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
xPos = 5 * (3 - (objVram - (text + 2)));
|
||||
|
||||
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId);
|
||||
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
|
||||
@@ -1492,17 +1485,17 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
|
||||
|
||||
summaryBarSpriteId = CreateSprite(&sStatusSummaryBarSpriteTemplates[isOpponent], bar_X, bar_Y, 10);
|
||||
SetSubspriteTables(&gSprites[summaryBarSpriteId], sStatusSummaryBar_SubspriteTable);
|
||||
gSprites[summaryBarSpriteId].pos2.x = bar_pos2_X;
|
||||
gSprites[summaryBarSpriteId].x2 = bar_pos2_X;
|
||||
gSprites[summaryBarSpriteId].data[0] = bar_data0;
|
||||
|
||||
if (isOpponent)
|
||||
{
|
||||
gSprites[summaryBarSpriteId].pos1.x -= 96;
|
||||
gSprites[summaryBarSpriteId].x -= 96;
|
||||
gSprites[summaryBarSpriteId].oam.matrixNum = ST_OAM_HFLIP;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[summaryBarSpriteId].pos1.x += 96;
|
||||
gSprites[summaryBarSpriteId].x += 96;
|
||||
}
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
@@ -1514,23 +1507,23 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
|
||||
|
||||
if (!isOpponent)
|
||||
{
|
||||
gSprites[ballIconSpritesIds[i]].pos2.x = 0;
|
||||
gSprites[ballIconSpritesIds[i]].pos2.y = 0;
|
||||
gSprites[ballIconSpritesIds[i]].x2 = 0;
|
||||
gSprites[ballIconSpritesIds[i]].y2 = 0;
|
||||
}
|
||||
|
||||
gSprites[ballIconSpritesIds[i]].data[0] = summaryBarSpriteId;
|
||||
|
||||
if (!isOpponent)
|
||||
{
|
||||
gSprites[ballIconSpritesIds[i]].pos1.x += 10 * i + 24;
|
||||
gSprites[ballIconSpritesIds[i]].x += 10 * i + 24;
|
||||
gSprites[ballIconSpritesIds[i]].data[1] = i * 7 + 10;
|
||||
gSprites[ballIconSpritesIds[i]].pos2.x = 120;
|
||||
gSprites[ballIconSpritesIds[i]].x2 = 120;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[ballIconSpritesIds[i]].pos1.x -= 10 * (5 - i) + 24;
|
||||
gSprites[ballIconSpritesIds[i]].x -= 10 * (5 - i) + 24;
|
||||
gSprites[ballIconSpritesIds[i]].data[1] = (6 - i) * 7 + 10;
|
||||
gSprites[ballIconSpritesIds[i]].pos2.x = -120;
|
||||
gSprites[ballIconSpritesIds[i]].x2 = -120;
|
||||
}
|
||||
|
||||
gSprites[ballIconSpritesIds[i]].data[2] = isOpponent;
|
||||
@@ -1800,17 +1793,17 @@ static void sub_8073F98(u8 taskId)
|
||||
|
||||
static void SpriteCB_StatusSummaryBar(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos2.x != 0)
|
||||
sprite->pos2.x += sprite->data[0];
|
||||
if (sprite->x2 != 0)
|
||||
sprite->x2 += sprite->data[0];
|
||||
}
|
||||
|
||||
static void sub_8074090(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[1] += 32;
|
||||
if (sprite->data[0] > 0)
|
||||
sprite->pos2.x += sprite->data[1] >> 4;
|
||||
sprite->x2 += sprite->data[1] >> 4;
|
||||
else
|
||||
sprite->pos2.x -= sprite->data[1] >> 4;
|
||||
sprite->x2 -= sprite->data[1] >> 4;
|
||||
sprite->data[1] &= 0xF;
|
||||
}
|
||||
|
||||
@@ -1833,18 +1826,18 @@ static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite)
|
||||
|
||||
if (var1 != 0)
|
||||
{
|
||||
sprite->pos2.x += var2 >> 4;
|
||||
if (sprite->pos2.x > 0)
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x2 += var2 >> 4;
|
||||
if (sprite->x2 > 0)
|
||||
sprite->x2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.x -= var2 >> 4;
|
||||
if (sprite->pos2.x < 0)
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x2 -= var2 >> 4;
|
||||
if (sprite->x2 < 0)
|
||||
sprite->x2 = 0;
|
||||
}
|
||||
|
||||
if (sprite->pos2.x == 0)
|
||||
if (sprite->x2 == 0)
|
||||
{
|
||||
pan = SOUND_PAN_TARGET;
|
||||
if (var1 != 0)
|
||||
@@ -1874,11 +1867,11 @@ static void sub_8074158(struct Sprite *sprite)
|
||||
var2 += 56;
|
||||
sprite->data[3] = var2 & 0xFFF0;
|
||||
if (var1 != 0)
|
||||
sprite->pos2.x += var2 >> 4;
|
||||
sprite->x2 += var2 >> 4;
|
||||
else
|
||||
sprite->pos2.x -= var2 >> 4;
|
||||
if (sprite->pos2.x + sprite->pos1.x > 248
|
||||
|| sprite->pos2.x + sprite->pos1.x < -8)
|
||||
sprite->x2 -= var2 >> 4;
|
||||
if (sprite->x2 + sprite->x > 248
|
||||
|| sprite->x2 + sprite->x < -8)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
@@ -1889,8 +1882,8 @@ static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite)
|
||||
{
|
||||
u8 barSpriteId = sprite->data[0];
|
||||
|
||||
sprite->pos2.x = gSprites[barSpriteId].pos2.x;
|
||||
sprite->pos2.y = gSprites[barSpriteId].pos2.y;
|
||||
sprite->x2 = gSprites[barSpriteId].x2;
|
||||
sprite->y2 = gSprites[barSpriteId].y2;
|
||||
}
|
||||
|
||||
static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
|
||||
@@ -1902,7 +1895,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
|
||||
u16 species;
|
||||
u8 gender;
|
||||
|
||||
StringCopy(gDisplayedStringBattle, gText_HighlightDarkGrey);
|
||||
StringCopy(gDisplayedStringBattle, gText_HighlightDarkGray);
|
||||
GetMonData(mon, MON_DATA_NICKNAME, nickname);
|
||||
StringGetEnd10(nickname);
|
||||
ptr = StringAppend(gDisplayedStringBattle, nickname);
|
||||
|
||||
+24
-19
@@ -1961,10 +1961,10 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
|
||||
|
||||
if (gTrainers[trainerNum].doubleBattle == TRUE)
|
||||
personalityValue = 0x80;
|
||||
else if (gTrainers[trainerNum].encounterMusic_gender & 0x80)
|
||||
personalityValue = 0x78;
|
||||
else if (gTrainers[trainerNum].encounterMusic_gender & F_TRAINER_FEMALE)
|
||||
personalityValue = 0x78; // Use personality more likely to result in a female Pokémon
|
||||
else
|
||||
personalityValue = 0x88;
|
||||
personalityValue = 0x88; // Use personality more likely to result in a male Pokémon
|
||||
|
||||
for (j = 0; gTrainers[trainerNum].trainerName[j] != EOS; j++)
|
||||
nameHash += gTrainers[trainerNum].trainerName[j];
|
||||
@@ -2082,9 +2082,9 @@ void SpriteCB_VsLetterDummy(struct Sprite *sprite)
|
||||
static void SpriteCB_VsLetter(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] != 0)
|
||||
sprite->pos1.x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8);
|
||||
sprite->x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8);
|
||||
else
|
||||
sprite->pos1.x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8);
|
||||
sprite->x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8);
|
||||
|
||||
sprite->data[2] += 0x180;
|
||||
|
||||
@@ -2618,8 +2618,8 @@ static void SpriteCb_MoveWildMonToRight(struct Sprite *sprite)
|
||||
{
|
||||
if ((gIntroSlideFlags & 1) == 0)
|
||||
{
|
||||
sprite->pos2.x += 2;
|
||||
if (sprite->pos2.x == 0)
|
||||
sprite->x2 += 2;
|
||||
if (sprite->x2 == 0)
|
||||
{
|
||||
sprite->callback = SpriteCb_WildMonShowHealthbox;
|
||||
}
|
||||
@@ -2730,7 +2730,7 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite)
|
||||
if (--sprite->data[4] == 0)
|
||||
{
|
||||
sprite->data[4] = 2;
|
||||
sprite->pos2.y += 8; // Move the sprite down.
|
||||
sprite->y2 += 8; // Move the sprite down.
|
||||
if (--sprite->data[3] < 0)
|
||||
{
|
||||
FreeSpriteOamMatrix(sprite);
|
||||
@@ -2795,8 +2795,8 @@ static void SpriteCB_BattleSpriteSlideLeft(struct Sprite *sprite)
|
||||
{
|
||||
if (!(gIntroSlideFlags & 1))
|
||||
{
|
||||
sprite->pos2.x -= 2;
|
||||
if (sprite->pos2.x == 0)
|
||||
sprite->x2 -= 2;
|
||||
if (sprite->x2 == 0)
|
||||
{
|
||||
sprite->callback = SpriteCallbackDummy_3;
|
||||
sprite->data[1] = 0;
|
||||
@@ -2821,8 +2821,8 @@ void SpriteCB_FaintSlideAnim(struct Sprite *sprite)
|
||||
{
|
||||
if (!(gIntroSlideFlags & 1))
|
||||
{
|
||||
sprite->pos2.x += sprite->sSpeedX;
|
||||
sprite->pos2.y += sprite->sSpeedY;
|
||||
sprite->x2 += sprite->sSpeedX;
|
||||
sprite->y2 += sprite->sSpeedY;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2872,8 +2872,8 @@ void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude)
|
||||
gSprites[invisibleSpriteId].sAmplitude = amplitude;
|
||||
gSprites[invisibleSpriteId].sBouncerSpriteId = bouncerSpriteId;
|
||||
gSprites[invisibleSpriteId].sWhich = which;
|
||||
gSprites[bouncerSpriteId].pos2.x = 0;
|
||||
gSprites[bouncerSpriteId].pos2.y = 0;
|
||||
gSprites[bouncerSpriteId].x2 = 0;
|
||||
gSprites[bouncerSpriteId].y2 = 0;
|
||||
}
|
||||
|
||||
void EndBounceEffect(u8 battler, u8 which)
|
||||
@@ -2899,8 +2899,8 @@ void EndBounceEffect(u8 battler, u8 which)
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].battlerIsBouncing = 0;
|
||||
}
|
||||
|
||||
gSprites[bouncerSpriteId].pos2.x = 0;
|
||||
gSprites[bouncerSpriteId].pos2.y = 0;
|
||||
gSprites[bouncerSpriteId].x2 = 0;
|
||||
gSprites[bouncerSpriteId].y2 = 0;
|
||||
}
|
||||
|
||||
static void SpriteCB_BounceEffect(struct Sprite *sprite)
|
||||
@@ -2913,7 +2913,7 @@ static void SpriteCB_BounceEffect(struct Sprite *sprite)
|
||||
else
|
||||
index = sprite->sSinIndex;
|
||||
|
||||
gSprites[bouncerSpriteId].pos2.y = Sin(index, sprite->sAmplitude) + sprite->sAmplitude;
|
||||
gSprites[bouncerSpriteId].y2 = Sin(index, sprite->sAmplitude) + sprite->sAmplitude;
|
||||
sprite->sSinIndex = (sprite->sSinIndex + sprite->sDelta) & 0xFF;
|
||||
}
|
||||
|
||||
@@ -5039,7 +5039,7 @@ static void HandleEndTurn_FinishBattle(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
PutPokemonTodayCaughtOnAir();
|
||||
TryPutPokemonTodayOnAir();
|
||||
}
|
||||
|
||||
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
|
||||
@@ -5052,7 +5052,7 @@ static void HandleEndTurn_FinishBattle(void)
|
||||
| BATTLE_TYPE_WALLY_TUTORIAL))
|
||||
&& gBattleResults.shinyWildMon)
|
||||
{
|
||||
sub_80EE184();
|
||||
TryPutBreakingNewsOnAir();
|
||||
}
|
||||
|
||||
sub_8186444();
|
||||
@@ -5148,7 +5148,12 @@ static void ReturnFromBattleToOverworld(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
|
||||
{
|
||||
UpdateRoamerHPStatus(&gEnemyParty[0]);
|
||||
|
||||
#ifndef BUGFIX
|
||||
if ((gBattleOutcome & B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT)
|
||||
#else
|
||||
if ((gBattleOutcome == B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT) // Bug: When Roar is used by roamer, gBattleOutcome is B_OUTCOME_PLAYER_TELEPORTED (5).
|
||||
#endif // & with B_OUTCOME_WON (1) will return TRUE and deactivates the roamer.
|
||||
SetRoamerInactive();
|
||||
}
|
||||
|
||||
|
||||
@@ -383,7 +383,7 @@ static const u8 sText_ThrewPokeblockAtPkmn[] = _("{B_PLAYER_NAME} threw a {POKEB
|
||||
static const u8 sText_OutOfSafariBalls[] = _("{PLAY_SE SE_DING_DONG}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p");
|
||||
static const u8 sText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME} appeared!\p");
|
||||
static const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
|
||||
static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
|
||||
static const u8 sText_LegendaryPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
|
||||
static const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}");
|
||||
static const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p");
|
||||
static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p");
|
||||
@@ -1067,7 +1067,7 @@ const u16 gTransformUsedStringIds[] =
|
||||
[B_MSG_TRANSFORM_FAILED] = STRINGID_BUTITFAILED
|
||||
};
|
||||
|
||||
const u16 gSubsituteUsedStringIds[] =
|
||||
const u16 gSubstituteUsedStringIds[] =
|
||||
{
|
||||
[B_MSG_SET_SUBSTITUTE] = STRINGID_PKMNMADESUBSTITUTE,
|
||||
[B_MSG_SUBSTITUTE_FAILED] = STRINGID_TOOWEAKFORSUBSTITUTE
|
||||
@@ -1328,7 +1328,7 @@ static const u8 sText_SpaceIs[] = _(" is");
|
||||
static const u8 sText_ApostropheS[] = _("'s");
|
||||
|
||||
// For displaying names of invalid moves
|
||||
static const u8 sATypeMove_Table[][NUMBER_OF_MON_TYPES - 1] =
|
||||
static const u8 sATypeMove_Table[NUMBER_OF_MON_TYPES][17] =
|
||||
{
|
||||
[TYPE_NORMAL] = _("a NORMAL move"),
|
||||
[TYPE_FIGHTING] = _("a FIGHTING move"),
|
||||
@@ -2125,7 +2125,7 @@ void BufferStringBattle(u16 stringID)
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
|
||||
stringPtr = sText_WildPkmnAppeared2;
|
||||
stringPtr = sText_LegendaryPkmnAppeared;
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
|
||||
stringPtr = sText_TwoWildPkmnAppeared;
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
|
||||
|
||||
@@ -1399,8 +1399,12 @@ void GenerateBattlePyramidWildMon(void)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
SetMonMoveSlot(&gEnemyParty[0], wildMons[id].moves[i], i);
|
||||
|
||||
// BUG: Reading outside the array as lvl was used for mon level instead of frontier lvl mode.
|
||||
// UB: Reading outside the array as lvl was used for mon level instead of frontier lvl mode.
|
||||
#ifndef UBFIX
|
||||
if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] >= 140)
|
||||
#else
|
||||
if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[gSaveBlock2Ptr->frontier.lvlMode] >= 140)
|
||||
#endif
|
||||
{
|
||||
id = (Random() % 17) + 15;
|
||||
for (i = 0; i < NUM_STATS; i++)
|
||||
|
||||
+516
-468
File diff suppressed because it is too large
Load Diff
@@ -3269,7 +3269,7 @@ static void Cmd_getexp(void)
|
||||
|
||||
if (viaExpShare) // at least one mon is getting exp via exp share
|
||||
{
|
||||
*exp = calculatedExp / 2 / viaSentIn;
|
||||
*exp = SAFE_DIV(calculatedExp / 2, viaSentIn);
|
||||
if (*exp == 0)
|
||||
*exp = 1;
|
||||
|
||||
@@ -3279,7 +3279,7 @@ static void Cmd_getexp(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
*exp = calculatedExp / viaSentIn;
|
||||
*exp = SAFE_DIV(calculatedExp, viaSentIn);
|
||||
if (*exp == 0)
|
||||
*exp = 1;
|
||||
gExpShareExp = 0;
|
||||
@@ -3357,7 +3357,7 @@ static void Cmd_getexp(void)
|
||||
// get exp getter battlerId
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) && !(gAbsentBattlerFlags & gBitTable[2]))
|
||||
if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && !(gAbsentBattlerFlags & gBitTable[2]))
|
||||
gBattleStruct->expGetterBattlerId = 2;
|
||||
else
|
||||
{
|
||||
@@ -3431,14 +3431,13 @@ static void Cmd_getexp(void)
|
||||
gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
|
||||
gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
|
||||
gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
|
||||
// Why is this duplicated?
|
||||
// Speed is duplicated, likely due to a copy-paste error.
|
||||
gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
|
||||
gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
|
||||
|
||||
gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
|
||||
gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
|
||||
}
|
||||
// What is else if?
|
||||
|
||||
if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
|
||||
{
|
||||
gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL);
|
||||
@@ -3446,10 +3445,13 @@ static void Cmd_getexp(void)
|
||||
gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
|
||||
gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
|
||||
gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
|
||||
// Duplicated again, but this time there's no Sp Defense
|
||||
gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
|
||||
// Speed is duplicated again, but Special Defense is missing.
|
||||
#ifdef BUGFIX
|
||||
gBattleMons[2].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
|
||||
#else
|
||||
gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
|
||||
|
||||
#endif
|
||||
gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
|
||||
}
|
||||
gBattleScripting.getexpState = 5;
|
||||
@@ -6116,9 +6118,9 @@ static void PutMonIconOnLvlUpBox(void)
|
||||
|
||||
static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
|
||||
{
|
||||
sprite->pos2.x = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X;
|
||||
sprite->x2 = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X;
|
||||
|
||||
if (sprite->pos2.x != 0)
|
||||
if (sprite->x2 != 0)
|
||||
{
|
||||
sprite->sDestroy = TRUE;
|
||||
}
|
||||
@@ -6168,7 +6170,13 @@ static void Cmd_recordlastability(void)
|
||||
{
|
||||
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
|
||||
RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
|
||||
gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for battlerId argument.
|
||||
|
||||
#ifdef BUGFIX
|
||||
// This command occupies two bytes (one for the command id, and one for the battler id parameter).
|
||||
gBattlescriptCurrInstr += 2;
|
||||
#else
|
||||
gBattlescriptCurrInstr += 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
void BufferMoveToLearnIntoBattleTextBuff2(void)
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/easy_chat.h"
|
||||
#include "constants/tv.h"
|
||||
|
||||
extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_MaxieTrainer[];
|
||||
extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_TabithaTrainer[];
|
||||
|
||||
+34
-33
@@ -1323,6 +1323,12 @@ static bool8 Phase2_BigPokeball_Func1(struct Task *task)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \
|
||||
{ \
|
||||
u32 index = (posY) * 32 + posX; \
|
||||
ptr[index] = toStore; \
|
||||
}
|
||||
|
||||
static bool8 Phase2_BigPokeball_Func2(struct Task *task)
|
||||
{
|
||||
s16 i, j;
|
||||
@@ -1335,7 +1341,7 @@ static bool8 Phase2_BigPokeball_Func2(struct Task *task)
|
||||
{
|
||||
for (j = 0; j < 30; j++, BigPokeballMap++)
|
||||
{
|
||||
tilemap[i * 32 + j] = *BigPokeballMap | 0xF000;
|
||||
SOME_VRAM_STORE(tilemap, i, j, *BigPokeballMap | 0xF000);
|
||||
}
|
||||
}
|
||||
sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160);
|
||||
@@ -1675,12 +1681,6 @@ bool8 FldEff_Pokeball(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \
|
||||
{ \
|
||||
u32 index = (posY) * 32 + posX; \
|
||||
ptr[index] = toStore; \
|
||||
}
|
||||
|
||||
static void sub_814713C(struct Sprite *sprite)
|
||||
{
|
||||
s16 arr0[ARRAY_COUNT(sUnknown_085C8B96)];
|
||||
@@ -1692,10 +1692,10 @@ static void sub_814713C(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->pos1.x >= 0 && sprite->pos1.x <= DISPLAY_WIDTH)
|
||||
if (sprite->x >= 0 && sprite->x <= DISPLAY_WIDTH)
|
||||
{
|
||||
s16 posX = sprite->pos1.x >> 3;
|
||||
s16 posY = sprite->pos1.y >> 3;
|
||||
s16 posX = sprite->x >> 3;
|
||||
s16 posY = sprite->y >> 3;
|
||||
|
||||
if (posX != sprite->data[2])
|
||||
{
|
||||
@@ -1712,8 +1712,8 @@ static void sub_814713C(struct Sprite *sprite)
|
||||
SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001);
|
||||
}
|
||||
}
|
||||
sprite->pos1.x += arr0[sprite->data[0]];
|
||||
if (sprite->pos1.x < -15 || sprite->pos1.x > 255)
|
||||
sprite->x += arr0[sprite->data[0]];
|
||||
if (sprite->x < -15 || sprite->x > 255)
|
||||
FieldEffectStop(sprite, FLDEFF_POKEBALL);
|
||||
}
|
||||
}
|
||||
@@ -2142,7 +2142,7 @@ static bool8 Phase2_Mugshot_Func2(struct Task *task)
|
||||
{
|
||||
for (j = 0; j < 32; j++, mugshotsMap++)
|
||||
{
|
||||
tilemap[i * 32 + j] = *mugshotsMap | 0xF000;
|
||||
SOME_VRAM_STORE(tilemap, i, j, *mugshotsMap | 0xF000);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2438,10 +2438,10 @@ static bool8 TrainerPicCb_SetSlideOffsets(struct Sprite *sprite)
|
||||
// fast slide to around middle screen
|
||||
static bool8 TrainerPicCb_Slide1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x += sprite->sOffsetX;
|
||||
if (sprite->sSlideTableId && sprite->pos1.x < 133)
|
||||
sprite->x += sprite->sOffsetX;
|
||||
if (sprite->sSlideTableId && sprite->x < 133)
|
||||
sprite->sState++;
|
||||
else if (!sprite->sSlideTableId && sprite->pos1.x > 103)
|
||||
else if (!sprite->sSlideTableId && sprite->x > 103)
|
||||
sprite->sState++;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2450,7 +2450,7 @@ static bool8 TrainerPicCb_Slide1(struct Sprite *sprite)
|
||||
static bool8 TrainerPicCb_Slide2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->sOffsetX += sprite->sOffsetX2;
|
||||
sprite->pos1.x += sprite->sOffsetX;
|
||||
sprite->x += sprite->sOffsetX;
|
||||
if (sprite->sOffsetX == 0)
|
||||
{
|
||||
sprite->sState++;
|
||||
@@ -2464,8 +2464,8 @@ static bool8 TrainerPicCb_Slide2(struct Sprite *sprite)
|
||||
static bool8 TrainerPicCb_Slide3(struct Sprite *sprite)
|
||||
{
|
||||
sprite->sOffsetX += sprite->sOffsetX2;
|
||||
sprite->pos1.x += sprite->sOffsetX;
|
||||
if (sprite->pos1.x < -31 || sprite->pos1.x > 271)
|
||||
sprite->x += sprite->sOffsetX;
|
||||
if (sprite->x < -31 || sprite->x > 271)
|
||||
sprite->sState++;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2960,17 +2960,15 @@ static bool8 Phase2_RectangularSpiral_Func2(struct Task *task)
|
||||
|
||||
if (sub_8149048(gUnknown_085C8D38[j / 2], &sRectangularSpiralTransition[j]))
|
||||
{
|
||||
u32 one;
|
||||
done = FALSE;
|
||||
var = sRectangularSpiralTransition[j].field_2;
|
||||
one = 1;
|
||||
if ((j & 1) == one)
|
||||
if ((j % 2) == 1)
|
||||
var = 0x27D - var;
|
||||
|
||||
var2 = var % 32;
|
||||
var3 = var / 32 * 32;
|
||||
var3 = var / 32;
|
||||
|
||||
tilemap[var3 + var2] = 0xF002;
|
||||
SOME_VRAM_STORE(tilemap, var3, var2, 0xF002);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3285,8 +3283,8 @@ static bool8 Phase2_WhiteFade_Func2(struct Task *task)
|
||||
for (i = 0, posY = 0; i < 8; i++, posY += 0x14)
|
||||
{
|
||||
sprite = &gSprites[CreateInvisibleSprite(sub_8149864)];
|
||||
sprite->pos1.x = 0xF0;
|
||||
sprite->pos1.y = posY;
|
||||
sprite->x = 0xF0;
|
||||
sprite->y = posY;
|
||||
sprite->data[5] = arr1[i];
|
||||
}
|
||||
sprite->data[6]++;
|
||||
@@ -3375,21 +3373,21 @@ static void sub_8149864(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
u16 i;
|
||||
u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y];
|
||||
u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160];
|
||||
u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->y];
|
||||
u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->y + 160];
|
||||
for (i = 0; i < 20; i++)
|
||||
{
|
||||
ptr1[i] = sprite->data[0] >> 8;
|
||||
ptr2[i] = (u8)(sprite->pos1.x);
|
||||
ptr2[i] = (u8)(sprite->x);
|
||||
}
|
||||
if (sprite->pos1.x == 0 && sprite->data[0] == 0x1000)
|
||||
if (sprite->x == 0 && sprite->data[0] == 0x1000)
|
||||
sprite->data[1] = 1;
|
||||
|
||||
sprite->pos1.x -= 16;
|
||||
sprite->x -= 16;
|
||||
sprite->data[0] += 0x80;
|
||||
|
||||
if (sprite->pos1.x < 0)
|
||||
sprite->pos1.x = 0;
|
||||
if (sprite->x < 0)
|
||||
sprite->x = 0;
|
||||
if (sprite->data[0] > 0x1000)
|
||||
sprite->data[0] = 0x1000;
|
||||
|
||||
@@ -4328,7 +4326,10 @@ static bool8 Phase2_FrontierSquaresScroll_Func5(struct Task *task)
|
||||
BlendPalettes(PALETTES_ALL, 0x10, 0);
|
||||
|
||||
DestroyTask(FindTaskIdByFunc(task->func));
|
||||
|
||||
#ifndef UBFIX
|
||||
task->tState++; // UB: changing value of a destroyed task
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -243,7 +243,7 @@ static void SpriteCB_LogoCircleSlide(struct Sprite *sprite)
|
||||
{
|
||||
s16 *data = sprite->data;
|
||||
|
||||
if (sprite->pos1.x == data[0] && sprite->pos1.y == data[1])
|
||||
if (sprite->x == data[0] && sprite->y == data[1])
|
||||
{
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
@@ -251,7 +251,7 @@ static void SpriteCB_LogoCircleSlide(struct Sprite *sprite)
|
||||
{
|
||||
if (data[4] == data[6])
|
||||
{
|
||||
sprite->pos1.x += data[2];
|
||||
sprite->x += data[2];
|
||||
data[4] = 0;
|
||||
}
|
||||
else
|
||||
@@ -261,7 +261,7 @@ static void SpriteCB_LogoCircleSlide(struct Sprite *sprite)
|
||||
|
||||
if (data[5] == data[7])
|
||||
{
|
||||
sprite->pos1.y += data[3];
|
||||
sprite->y += data[3];
|
||||
data[5] = 0;
|
||||
}
|
||||
else
|
||||
@@ -305,8 +305,8 @@ static u8 CreateSpiralingLogoCircleSprite(s16 x, s16 y, s16 arg2, s16 arg3, s16
|
||||
|
||||
static void SpriteCB_LogoCircleSpiral(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = (Sin2(sprite->data[2]) * sprite->data[4]) >> 12; // div by 4096
|
||||
sprite->pos2.y = (Cos2(sprite->data[2]) * sprite->data[4]) >> 12; // div by 4096
|
||||
sprite->x2 = (Sin2(sprite->data[2]) * sprite->data[4]) >> 12; // div by 4096
|
||||
sprite->y2 = (Cos2(sprite->data[2]) * sprite->data[4]) >> 12; // div by 4096
|
||||
|
||||
sprite->data[2] = (sprite->data[2] + sprite->data[3]) % 360;
|
||||
|
||||
|
||||
+2
-2
@@ -1246,7 +1246,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
|
||||
break;
|
||||
case PTS_REFLECT:
|
||||
// If hit Reflect with damaging physical move
|
||||
if (type < TYPE_MYSTERY && power != 0 && tvPtr->side[defSide].reflectMonId != 0)
|
||||
if (IS_TYPE_PHYSICAL(type) && power != 0 && tvPtr->side[defSide].reflectMonId != 0)
|
||||
{
|
||||
u32 id = (tvPtr->side[defSide].reflectMonId - 1) * 4;
|
||||
movePoints->points[defSide][id + tvPtr->side[defSide].reflectMoveSlot] += sPointsArray[caseId][0];
|
||||
@@ -1254,7 +1254,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
|
||||
break;
|
||||
case PTS_LIGHT_SCREEN:
|
||||
// If hit Light Screen with damaging special move
|
||||
if (type >= TYPE_MYSTERY && power != 0 && tvPtr->side[defSide].lightScreenMonId != 0)
|
||||
if (!IS_TYPE_PHYSICAL(type) && power != 0 && tvPtr->side[defSide].lightScreenMonId != 0)
|
||||
{
|
||||
u32 id = (tvPtr->side[defSide].lightScreenMonId - 1) * 4;
|
||||
movePoints->points[defSide][id + tvPtr->side[defSide].lightScreenMoveSlot] += sPointsArray[caseId][0];
|
||||
|
||||
+12
-12
@@ -1162,8 +1162,8 @@ static void SpriteCB_Berry(struct Sprite* sprite)
|
||||
else
|
||||
PlaySE(SE_BALL_TRAY_EXIT);
|
||||
}
|
||||
sprite->pos1.x = sprite->sX;
|
||||
sprite->pos1.y = sprite->sY;
|
||||
sprite->x = sprite->sX;
|
||||
sprite->y = sprite->sY;
|
||||
}
|
||||
|
||||
static void SetBerrySpriteData(struct Sprite* sprite, s16 x, s16 y, s16 bounceSpeed, s16 xSpeed, s16 ySpeed)
|
||||
@@ -3163,8 +3163,8 @@ static void SpriteCB_Particle(struct Sprite* sprite)
|
||||
{
|
||||
sprite->data[2] += sprite->data[0];
|
||||
sprite->data[3] += sprite->data[1];
|
||||
sprite->pos2.x = sprite->data[2] / 8;
|
||||
sprite->pos2.y = sprite->data[3] / 8;
|
||||
sprite->x2 = sprite->data[2] / 8;
|
||||
sprite->y2 = sprite->data[3] / 8;
|
||||
|
||||
if (sprite->animEnded)
|
||||
DestroySprite(sprite);
|
||||
@@ -3197,7 +3197,7 @@ static void CreateParticleSprites(void)
|
||||
static void SpriteCB_ScoreSymbol(struct Sprite* sprite)
|
||||
{
|
||||
sprite->data[0]++;
|
||||
sprite->pos2.y = -(sprite->data[0] / 3);
|
||||
sprite->y2 = -(sprite->data[0] / 3);
|
||||
|
||||
if (sprite->animEnded)
|
||||
DestroySprite(sprite);
|
||||
@@ -3206,10 +3206,10 @@ static void SpriteCB_ScoreSymbol(struct Sprite* sprite)
|
||||
static void SpriteCB_ScoreSymbolBest(struct Sprite* sprite)
|
||||
{
|
||||
sprite->data[0]++;
|
||||
sprite->pos2.y = -(sprite->data[0] * 2);
|
||||
sprite->y2 = -(sprite->data[0] * 2);
|
||||
|
||||
if (sprite->pos2.y < -12)
|
||||
sprite->pos2.y = -12;
|
||||
if (sprite->y2 < -12)
|
||||
sprite->y2 = -12;
|
||||
if (sprite->animEnded)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
@@ -3264,7 +3264,7 @@ static void SpriteCB_CountdownNumber(struct Sprite* sprite)
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->pos2.y = sprite->sYPos;
|
||||
sprite->y2 = sprite->sYPos;
|
||||
}
|
||||
|
||||
#undef sState
|
||||
@@ -3300,7 +3300,7 @@ static void SpriteCB_Start(struct Sprite* sprite)
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->pos2.y = sprite->data[1];
|
||||
sprite->y2 = sprite->data[1];
|
||||
}
|
||||
|
||||
static void TryUpdateProgressBar(u16 current, u16 limit)
|
||||
@@ -3445,8 +3445,8 @@ static bool8 UpdateBlenderLandScreenShake(void)
|
||||
|
||||
static void SpriteCB_PlayerArrow(struct Sprite* sprite)
|
||||
{
|
||||
sprite->pos2.x = -(sBerryBlender->bg_X);
|
||||
sprite->pos2.y = -(sBerryBlender->bg_Y);
|
||||
sprite->x2 = -(sBerryBlender->bg_X);
|
||||
sprite->y2 = -(sBerryBlender->bg_Y);
|
||||
}
|
||||
|
||||
static void TryUpdateBerryBlenderRecord(void)
|
||||
|
||||
+27
-27
@@ -1387,8 +1387,8 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam
|
||||
gfx->berrySprites[i] = &gSprites[spriteId];
|
||||
gfx->berrySprites[i]->oam.priority = 3;
|
||||
gfx->berrySprites[i]->affineAnimPaused = TRUE;
|
||||
gfx->berrySprites[i]->pos1.x = gfx->playerCoords[i]->berryXOffset + 120;
|
||||
gfx->berrySprites[i]->pos1.y = -16;
|
||||
gfx->berrySprites[i]->x = gfx->playerCoords[i]->berryXOffset + 120;
|
||||
gfx->berrySprites[i]->y = -16;
|
||||
data = gfx->berrySprites[i]->data;
|
||||
speed = 512;
|
||||
sYSpeed = speed;
|
||||
@@ -1404,7 +1404,7 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam
|
||||
var2 = speed + 32;
|
||||
var2 = var2 / 2;
|
||||
var1 = MathUtil_Div16Shift(7, Q_8_8(63.5), var2);
|
||||
sX = (u16)gfx->berrySprites[i]->pos1.x * 128;
|
||||
sX = (u16)gfx->berrySprites[i]->x * 128;
|
||||
sXSpeed = MathUtil_Div16Shift(7, distance, var1);
|
||||
var1 = MathUtil_Mul16Shift(7, var1, 85);
|
||||
sSinIdx = 0;
|
||||
@@ -1420,21 +1420,21 @@ static void SpriteCB_DropBerryIntoCrusher(struct Sprite *sprite)
|
||||
s16 *data = sprite->data;
|
||||
|
||||
sYSpeed += sYAccel;
|
||||
sprite->pos2.y += sYSpeed >> 8;
|
||||
sprite->y2 += sYSpeed >> 8;
|
||||
if (sBitfield & F_MOVE_HORIZ)
|
||||
{
|
||||
sprite->sX += sXSpeed;
|
||||
sSinIdx += sSinSpeed;
|
||||
sprite->pos2.x = Sin(sSinIdx >> 7, sAmplitude);
|
||||
sprite->x2 = Sin(sSinIdx >> 7, sAmplitude);
|
||||
if ((sBitfield & F_MOVE_HORIZ) && (sSinIdx >> 7) > 126)
|
||||
{
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x2 = 0;
|
||||
sBitfield &= MASK_TARGET_Y;
|
||||
}
|
||||
}
|
||||
|
||||
sprite->pos1.x = sX >> 7;
|
||||
if (sprite->pos1.y + sprite->pos2.y >= (sBitfield & MASK_TARGET_Y))
|
||||
sprite->x = sX >> 7;
|
||||
if (sprite->y + sprite->y2 >= (sBitfield & MASK_TARGET_Y))
|
||||
{
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
FreeSpriteOamMatrix(sprite);
|
||||
@@ -1490,8 +1490,8 @@ static void UpdateInputEffects(struct BerryCrushGame *game, struct BerryCrushGam
|
||||
|
||||
gfx->impactSprites[i]->invisible = FALSE;
|
||||
gfx->impactSprites[i]->animPaused = FALSE;
|
||||
gfx->impactSprites[i]->pos2.x = sImpactCoords[(flags % (ARRAY_COUNT(sImpactCoords) + 1)) - 1][0];
|
||||
gfx->impactSprites[i]->pos2.y = sImpactCoords[(flags % (ARRAY_COUNT(sImpactCoords) + 1)) - 1][1];
|
||||
gfx->impactSprites[i]->x2 = sImpactCoords[(flags % (ARRAY_COUNT(sImpactCoords) + 1)) - 1][0];
|
||||
gfx->impactSprites[i]->y2 = sImpactCoords[(flags % (ARRAY_COUNT(sImpactCoords) + 1)) - 1][1];
|
||||
}
|
||||
|
||||
#undef flags
|
||||
@@ -1513,10 +1513,10 @@ static void UpdateInputEffects(struct BerryCrushGame *game, struct BerryCrushGam
|
||||
if (gfx->sparkleSprites[i]->invisible)
|
||||
{
|
||||
gfx->sparkleSprites[i]->callback = SpriteCB_Sparkle_Init;
|
||||
gfx->sparkleSprites[i]->pos1.x = sSparkleCoords[i][0] + 120;
|
||||
gfx->sparkleSprites[i]->pos1.y = sSparkleCoords[i][1] + 136 - (yModifier * 4);
|
||||
gfx->sparkleSprites[i]->pos2.x = sSparkleCoords[i][0] + (sSparkleCoords[i][0] / (xModifier * 4));
|
||||
gfx->sparkleSprites[i]->pos2.y = sSparkleCoords[i][1];
|
||||
gfx->sparkleSprites[i]->x = sSparkleCoords[i][0] + 120;
|
||||
gfx->sparkleSprites[i]->y = sSparkleCoords[i][1] + 136 - (yModifier * 4);
|
||||
gfx->sparkleSprites[i]->x2 = sSparkleCoords[i][0] + (sSparkleCoords[i][0] / (xModifier * 4));
|
||||
gfx->sparkleSprites[i]->y2 = sSparkleCoords[i][1];
|
||||
if (linkState->bigSparkle)
|
||||
StartSpriteAnim(gfx->sparkleSprites[i], 1);
|
||||
else
|
||||
@@ -2071,8 +2071,8 @@ static void SpriteCB_Sparkle_End(struct Sprite *sprite)
|
||||
u8 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sprite->data); i++)
|
||||
sprite->data[i] = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->invisible = TRUE;
|
||||
sprite->animPaused = TRUE;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
@@ -2097,20 +2097,20 @@ static void SpriteCB_Sparkle(struct Sprite *sprite)
|
||||
s16 *data = sprite->data;
|
||||
|
||||
sYSpeed += sYAccel;
|
||||
sprite->pos2.y += sYSpeed >> 8;
|
||||
sprite->y2 += sYSpeed >> 8;
|
||||
if (sBitfield & F_MOVE_HORIZ)
|
||||
{
|
||||
sprite->sX += sXSpeed;
|
||||
sSinIdx += sSinSpeed;
|
||||
sprite->pos2.x = Sin(sSinIdx >> 7, sAmplitude);
|
||||
sprite->x2 = Sin(sSinIdx >> 7, sAmplitude);
|
||||
if (sBitfield & F_MOVE_HORIZ && sSinIdx >> 7 > 126)
|
||||
{
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x2 = 0;
|
||||
sBitfield &= MASK_TARGET_Y;
|
||||
}
|
||||
}
|
||||
sprite->pos1.x = sX >> 7;
|
||||
if (sprite->pos1.y + sprite->pos2.y > (sBitfield & MASK_TARGET_Y))
|
||||
sprite->x = sX >> 7;
|
||||
if (sprite->y + sprite->y2 > (sBitfield & MASK_TARGET_Y))
|
||||
sprite->callback = SpriteCB_Sparkle_End;
|
||||
}
|
||||
|
||||
@@ -2125,17 +2125,17 @@ static void SpriteCB_Sparkle_Init(struct Sprite *sprite)
|
||||
sYSpeed = var;
|
||||
sYAccel = 32;
|
||||
sBitfield = 168; // Setting bits in MASK_TARGET_Y
|
||||
xMult = sprite->pos2.x * 128;
|
||||
xDiv = MathUtil_Div16Shift(7, (168 - sprite->pos1.y) << 7, (var + 32) >> 1);
|
||||
sprite->sX = sprite->pos1.x << 7;
|
||||
xMult = sprite->x2 * 128;
|
||||
xDiv = MathUtil_Div16Shift(7, (168 - sprite->y) << 7, (var + 32) >> 1);
|
||||
sprite->sX = sprite->x << 7;
|
||||
sXSpeed = MathUtil_Div16Shift(7, xMult, xDiv);
|
||||
var = MathUtil_Mul16Shift(7, xDiv, 85);
|
||||
sSinIdx = zero;
|
||||
sSinSpeed = MathUtil_Div16Shift(7, Q_8_8(63.5), var);
|
||||
sAmplitude = sprite->pos2.x / 4;
|
||||
sAmplitude = sprite->x2 / 4;
|
||||
sBitfield |= F_MOVE_HORIZ;
|
||||
sprite->pos2.y = zero;
|
||||
sprite->pos2.x = zero;
|
||||
sprite->y2 = zero;
|
||||
sprite->x2 = zero;
|
||||
sprite->callback = SpriteCB_Sparkle;
|
||||
sprite->animPaused = FALSE;
|
||||
sprite->invisible = FALSE;
|
||||
|
||||
@@ -674,9 +674,9 @@ static void Task_DisplayAnotherBerry(u8 taskId)
|
||||
else
|
||||
posY = data[0];
|
||||
|
||||
gSprites[sBerryTag->berrySpriteId].pos2.y = posY;
|
||||
gSprites[sBerryTag->berrySpriteId].y2 = posY;
|
||||
for (i = 0; i < FLAVOR_COUNT; i++)
|
||||
gSprites[sBerryTag->flavorCircleIds[i]].pos2.y = posY;
|
||||
gSprites[sBerryTag->flavorCircleIds[i]].y2 = posY;
|
||||
|
||||
ChangeBgY(1, 0x1000, data[1]);
|
||||
ChangeBgY(2, 0x1000, data[1]);
|
||||
|
||||
+13
-16
@@ -614,27 +614,24 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction)
|
||||
return;
|
||||
}
|
||||
collision = GetBikeCollision(direction);
|
||||
// TODO: Try to get rid of this goto
|
||||
if (collision == 0 || collision == COLLISION_WHEELIE_HOP)
|
||||
{
|
||||
goto derp;
|
||||
}
|
||||
else if (collision == COLLISION_LEDGE_JUMP)
|
||||
{
|
||||
PlayerLedgeHoppingWheelie(direction);
|
||||
}
|
||||
else if (collision < COLLISION_STOP_SURFING || collision > COLLISION_ROTATING_GATE)
|
||||
if (collision && collision != COLLISION_WHEELIE_HOP)
|
||||
{
|
||||
if (collision == COLLISION_LEDGE_JUMP)
|
||||
{
|
||||
PlayerLedgeHoppingWheelie(direction);
|
||||
return;
|
||||
}
|
||||
if (collision >= COLLISION_STOP_SURFING && collision <= COLLISION_ROTATING_GATE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (collision < COLLISION_VERTICAL_RAIL)
|
||||
{
|
||||
AcroBikeTransition_WheelieHoppingStanding(direction);
|
||||
}
|
||||
else
|
||||
{
|
||||
derp:
|
||||
PlayerMovingHoppingWheelie(direction);
|
||||
return;
|
||||
}
|
||||
}
|
||||
PlayerMovingHoppingWheelie(direction);
|
||||
}
|
||||
|
||||
static void AcroBikeTransition_SideJump(u8 direction)
|
||||
@@ -1056,7 +1053,7 @@ void Bike_HandleBumpySlopeJump(void)
|
||||
|
||||
bool32 IsRunningDisallowed(u8 metatile)
|
||||
{
|
||||
if (!(gMapHeader.flags & MAP_ALLOW_RUNNING) || IsRunningDisallowedByMetatile(metatile) == TRUE)
|
||||
if (!gMapHeader.allowRunning || IsRunningDisallowedByMetatile(metatile) == TRUE)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
+41
-41
@@ -596,13 +596,13 @@ static void SpriteCB_CableCar(struct Sprite *sprite)
|
||||
{
|
||||
if (!GOING_DOWN)
|
||||
{
|
||||
sprite->pos1.x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->pos1.y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->pos1.y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -617,20 +617,20 @@ static void SpriteCB_Player(struct Sprite *sprite)
|
||||
// Move along with cable car
|
||||
if (!GOING_DOWN)
|
||||
{
|
||||
sprite->pos1.x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->pos1.y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->pos1.y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
sprite->y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
|
||||
}
|
||||
|
||||
// Bounce up and down
|
||||
switch (sprite->sState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = 17;
|
||||
sprite->y2 = 17;
|
||||
if (sprite->sTimer++ > 9)
|
||||
{
|
||||
sprite->sTimer = 0;
|
||||
@@ -638,7 +638,7 @@ static void SpriteCB_Player(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
sprite->pos2.y = 16;
|
||||
sprite->y2 = 16;
|
||||
if (sprite->sTimer++ > 9)
|
||||
{
|
||||
sprite->sTimer = 0;
|
||||
@@ -660,8 +660,8 @@ static void SpriteCB_HikerGoingUp(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->sTimer == 0)
|
||||
{
|
||||
sprite->pos1.x += 2 * sprite->centerToCornerVecX;
|
||||
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->x += 2 * sprite->centerToCornerVecX;
|
||||
sprite->y += 16 + sprite->centerToCornerVecY;
|
||||
}
|
||||
|
||||
if (++sprite->sTimer >= sprite->sDelay)
|
||||
@@ -669,22 +669,22 @@ static void SpriteCB_HikerGoingUp(struct Sprite *sprite)
|
||||
switch (sprite->sSameDir)
|
||||
{
|
||||
case FALSE:
|
||||
sprite->pos1.x++;
|
||||
sprite->x++;
|
||||
if ((sprite->sTimer % 4) == 0)
|
||||
sprite->pos1.y++;
|
||||
sprite->y++;
|
||||
break;
|
||||
case TRUE:
|
||||
// Hiker moves slower if travelling with the Cable Car
|
||||
if ((sprite->sTimer % 2) != 0)
|
||||
{
|
||||
sprite->pos1.x++;
|
||||
if ((sprite->pos1.x % 4) == 0)
|
||||
sprite->pos1.y++;
|
||||
sprite->x++;
|
||||
if ((sprite->x % 4) == 0)
|
||||
sprite->y++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (sprite->pos1.y > DISPLAY_HEIGHT)
|
||||
if (sprite->y > DISPLAY_HEIGHT)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
@@ -692,29 +692,29 @@ static void SpriteCB_HikerGoingUp(struct Sprite *sprite)
|
||||
static void SpriteCB_HikerGoingDown(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->sTimer == 0)
|
||||
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->y += 16 + sprite->centerToCornerVecY;
|
||||
|
||||
if (++sprite->sTimer >= sprite->sDelay)
|
||||
{
|
||||
switch (sprite->sSameDir)
|
||||
{
|
||||
case FALSE:
|
||||
sprite->pos1.x--;
|
||||
sprite->x--;
|
||||
if ((sprite->sTimer % 4) == 0)
|
||||
sprite->pos1.y--;
|
||||
sprite->y--;
|
||||
break;
|
||||
case TRUE:
|
||||
// Hiker moves slower if travelling with the Cable Car
|
||||
if ((sprite->sTimer % 2) != 0)
|
||||
{
|
||||
sprite->pos1.x--;
|
||||
if ((sprite->pos1.x % 4) == 0)
|
||||
sprite->pos1.y--;
|
||||
sprite->x--;
|
||||
if ((sprite->x % 4) == 0)
|
||||
sprite->y--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (sprite->pos1.y < 80)
|
||||
if (sprite->y < 80)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
@@ -829,20 +829,20 @@ static void CreateCableCarSprites(void)
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].oam.priority = 2;
|
||||
gSprites[spriteId].pos2.x = 8;
|
||||
gSprites[spriteId].pos2.y = 16;
|
||||
gSprites[spriteId].x2 = 8;
|
||||
gSprites[spriteId].y2 = 16;
|
||||
gSprites[spriteId].sXPos = 200;
|
||||
gSprites[spriteId].sYPos = 73;
|
||||
}
|
||||
// Create car sprite
|
||||
spriteId = CreateSprite(&sSpriteTemplate_CableCar[0], 176, 43, 0x67);
|
||||
gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 32;
|
||||
gSprites[spriteId].x2 = gSprites[spriteId].y2 = 32;
|
||||
gSprites[spriteId].sXPos = 176;
|
||||
gSprites[spriteId].sYPos = 43;
|
||||
// Create door sprite
|
||||
spriteId = CreateSprite(&sSpriteTemplate_CableCar[1], 200, 99, 0x65);
|
||||
gSprites[spriteId].pos2.x = 8;
|
||||
gSprites[spriteId].pos2.y = 4;
|
||||
gSprites[spriteId].x2 = 8;
|
||||
gSprites[spriteId].y2 = 4;
|
||||
gSprites[spriteId].sXPos = 200;
|
||||
gSprites[spriteId].sYPos = 99;
|
||||
// Init weather
|
||||
@@ -857,20 +857,20 @@ static void CreateCableCarSprites(void)
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].oam.priority = 2;
|
||||
gSprites[spriteId].pos2.x = 8;
|
||||
gSprites[spriteId].pos2.y = 16;
|
||||
gSprites[spriteId].x2 = 8;
|
||||
gSprites[spriteId].y2 = 16;
|
||||
gSprites[spriteId].sXPos = 128;
|
||||
gSprites[spriteId].sYPos = 39;
|
||||
}
|
||||
// Create car sprite
|
||||
spriteId = CreateSprite(&sSpriteTemplate_CableCar[0], 104, 9, 0x67);
|
||||
gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 32;
|
||||
gSprites[spriteId].x2 = gSprites[spriteId].y2 = 32;
|
||||
gSprites[spriteId].sXPos = 104;
|
||||
gSprites[spriteId].sYPos = 9;
|
||||
// Create door sprite
|
||||
spriteId = CreateSprite(&sSpriteTemplate_CableCar[1], 128, 65, 0x65);
|
||||
gSprites[spriteId].pos2.x = 8;
|
||||
gSprites[spriteId].pos2.y = 4;
|
||||
gSprites[spriteId].x2 = 8;
|
||||
gSprites[spriteId].y2 = 4;
|
||||
gSprites[spriteId].sXPos = 128;
|
||||
gSprites[spriteId].sYPos = 65;
|
||||
// Init weather
|
||||
@@ -882,8 +882,8 @@ static void CreateCableCarSprites(void)
|
||||
for (i = 0; i < 9; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sSpriteTemplate_Cable, 16 * i + 96, 8 * i - 8, 0x68);
|
||||
gSprites[spriteId].pos2.x = 8;
|
||||
gSprites[spriteId].pos2.y = 8;
|
||||
gSprites[spriteId].x2 = 8;
|
||||
gSprites[spriteId].y2 = 8;
|
||||
}
|
||||
|
||||
// 1/64 chance for an NPC to appear hiking on the ground below the Cable Car
|
||||
@@ -894,8 +894,8 @@ static void CreateCableCarSprites(void)
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].oam.priority = 2;
|
||||
gSprites[spriteId].pos2.x = -gSprites[spriteId].centerToCornerVecX;
|
||||
gSprites[spriteId].pos2.y = -gSprites[spriteId].centerToCornerVecY;
|
||||
gSprites[spriteId].x2 = -gSprites[spriteId].centerToCornerVecX;
|
||||
gSprites[spriteId].y2 = -gSprites[spriteId].centerToCornerVecY;
|
||||
|
||||
// Randomly choose which direction the NPC is going
|
||||
if (!GOING_DOWN)
|
||||
@@ -905,7 +905,7 @@ static void CreateCableCarSprites(void)
|
||||
// Do walking west anim
|
||||
StartSpriteAnim(&gSprites[spriteId], 6);
|
||||
gSprites[spriteId].sSameDir = TRUE;
|
||||
gSprites[spriteId].pos1.y += 2;
|
||||
gSprites[spriteId].y += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -921,7 +921,7 @@ static void CreateCableCarSprites(void)
|
||||
// Do walking east anim
|
||||
StartSpriteAnim(&gSprites[spriteId], 7);
|
||||
gSprites[spriteId].sSameDir = TRUE;
|
||||
gSprites[spriteId].pos1.y += 2;
|
||||
gSprites[spriteId].y += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+89
-74
@@ -42,7 +42,6 @@
|
||||
#include "constants/moves.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/tv.h"
|
||||
|
||||
// This file's functions.
|
||||
static void LoadContestPalettes(void);
|
||||
@@ -259,6 +258,11 @@ enum {
|
||||
#define TAG_BLINK_EFFECT_CONTESTANT2 0x80EA
|
||||
#define TAG_BLINK_EFFECT_CONTESTANT3 0x80EB
|
||||
|
||||
#define TILE_FILLED_APPEAL_HEART 0x5012
|
||||
#define TILE_FILLED_JAM_HEART 0x5014
|
||||
#define TILE_EMPTY_APPEAL_HEART 0x5035
|
||||
#define TILE_EMPTY_JAM_HEART 0x5036
|
||||
|
||||
enum {
|
||||
SLIDER_HEART_ANIM_NORMAL,
|
||||
SLIDER_HEART_ANIM_DISAPPEAR,
|
||||
@@ -350,8 +354,8 @@ EWRAM_DATA u8 gHighestRibbonRank = 0;
|
||||
EWRAM_DATA struct ContestResources *gContestResources = NULL;
|
||||
EWRAM_DATA u8 sContestBgCopyFlags = 0;
|
||||
EWRAM_DATA struct ContestWinner gCurContestWinner = {0};
|
||||
EWRAM_DATA bool8 gUnknown_02039F5C = 0;
|
||||
EWRAM_DATA u8 gUnknown_02039F5D = 0;
|
||||
EWRAM_DATA bool8 gCurContestWinnerIsForArtist = 0;
|
||||
EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0;
|
||||
|
||||
// IWRAM common vars.
|
||||
u32 gContestRngValue;
|
||||
@@ -1034,7 +1038,7 @@ void LoadContestBgAfterMoveAnim(void)
|
||||
{
|
||||
u32 contestantWindowId = 5 + i;
|
||||
|
||||
LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId], 16 * (5 + gContestantTurnOrder[i]), sizeof((eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId])));
|
||||
LoadPalette(eContestTempSave.cachedWindowPalettes[contestantWindowId], 16 * (5 + gContestantTurnOrder[i]), sizeof((eContestTempSave.cachedWindowPalettes[contestantWindowId])));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1320,7 +1324,7 @@ static bool8 SetupContestGraphics(u8 *stateVar)
|
||||
CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0);
|
||||
CopyBgTilemapBufferToVram(2);
|
||||
// This is a bug, and copies random junk. savedJunk is never read.
|
||||
DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eUnknownHeap1A004.savedJunk, sizeof(eUnknownHeap1A004.savedJunk));
|
||||
DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eContestTempSave.savedJunk, sizeof(eContestTempSave.savedJunk));
|
||||
break;
|
||||
case 5:
|
||||
LoadCompressedPalette(gOldContestPalette, 0, 0x200);
|
||||
@@ -1328,7 +1332,7 @@ static bool8 SetupContestGraphics(u8 *stateVar)
|
||||
CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, tempPalette2, 16 * sizeof(u16));
|
||||
CpuCopy32(tempPalette2, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
|
||||
CpuCopy32(tempPalette1, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
|
||||
DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.cachedWindowPalettes, sizeof(eUnknownHeap1A004.cachedWindowPalettes));
|
||||
DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedWindowPalettes, sizeof(eContestTempSave.cachedWindowPalettes));
|
||||
LoadContestPalettes();
|
||||
break;
|
||||
case 6:
|
||||
@@ -1468,7 +1472,7 @@ static void Task_DisplayAppealNumberText(u8 taskId)
|
||||
gBattle_BG0_Y = 0;
|
||||
gBattle_BG2_Y = 0;
|
||||
ContestDebugDoPrint();
|
||||
DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.unk18204, PLTT_BUFFER_SIZE * 2);
|
||||
DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
|
||||
ConvertIntToDecimalStringN(gStringVar1, eContest.appealNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
|
||||
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
|
||||
StringCopy(gDisplayedStringBattle, gText_AppealNumWhichMoveWillBePlayed);
|
||||
@@ -1527,7 +1531,7 @@ static void Task_ShowMoveSelectScreen(u8 taskId)
|
||||
&& eContestantStatus[gContestPlayerMonIndex].hasJudgesAttention)
|
||||
{
|
||||
// Highlight the text because it's a combo move
|
||||
moveNameBuffer = StringCopy(moveName, gText_ColorLightShadowDarkGrey);
|
||||
moveNameBuffer = StringCopy(moveName, gText_ColorLightShadowDarkGray);
|
||||
}
|
||||
else if (move != MOVE_NONE
|
||||
&& eContestantStatus[gContestPlayerMonIndex].prevMove == move
|
||||
@@ -1667,8 +1671,8 @@ static void Task_HideMoveSelectScreen(u8 taskId)
|
||||
}
|
||||
Contest_SetBgCopyFlags(0);
|
||||
// This seems to be a bug; it should have just copied PLTT_BUFFER_SIZE.
|
||||
DmaCopy32Defvars(3, gPlttBufferFaded, eUnknownHeap1A004.unk18604, PLTT_BUFFER_SIZE * 2);
|
||||
LoadPalette(eUnknownHeap1A004.unk18204, 0, PLTT_BUFFER_SIZE * 2);
|
||||
DmaCopy32Defvars(3, gPlttBufferFaded, eContestTempSave.cachedPlttBufferFaded, PLTT_BUFFER_SIZE * 2);
|
||||
LoadPalette(eContestTempSave.cachedPlttBufferUnfaded, 0, PLTT_BUFFER_SIZE * 2);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].func = Task_HideApplauseMeterForAppealStart;
|
||||
@@ -1780,7 +1784,7 @@ static void Task_DoAppeals(u8 taskId)
|
||||
gContestMons[eContest.currentContestant].otId,
|
||||
gContestMons[eContest.currentContestant].personality,
|
||||
eContest.currentContestant);
|
||||
gSprites[spriteId].pos2.x = 120;
|
||||
gSprites[spriteId].x2 = 120;
|
||||
gSprites[spriteId].callback = SpriteCB_MonSlideIn;
|
||||
gTasks[taskId].tMonSpriteId = spriteId;
|
||||
gBattlerSpriteIds[gBattlerAttacker] = spriteId;
|
||||
@@ -2445,9 +2449,9 @@ static void Task_EndWaitForLink(u8 taskId)
|
||||
|
||||
static void SpriteCB_MonSlideIn(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos2.x != 0)
|
||||
if (sprite->x2 != 0)
|
||||
{
|
||||
sprite->pos2.x -= 2;
|
||||
sprite->x2 -= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2461,8 +2465,8 @@ static void SpriteCB_MonSlideIn(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCB_MonSlideOut(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x -= 6;
|
||||
if (sprite->pos1.x + sprite->pos2.x < -32)
|
||||
sprite->x2 -= 6;
|
||||
if (sprite->x + sprite->x2 < -32)
|
||||
{
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
sprite->invisible = TRUE;
|
||||
@@ -2554,7 +2558,7 @@ static void Task_WaitForHeartSliders(u8 taskId)
|
||||
|
||||
static void sub_80DA348(u8 taskId)
|
||||
{
|
||||
DmaCopy32Defvars(3, eUnknownHeap1A004.unk18204, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
|
||||
DmaCopy32Defvars(3, eContestTempSave.cachedPlttBufferUnfaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = 2;
|
||||
gTasks[taskId].func = Task_WaitPrintRoundResult;
|
||||
@@ -3133,10 +3137,10 @@ static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 ind
|
||||
gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum;
|
||||
gSprites[spriteId].data[2] = species;
|
||||
if (IsSpeciesNotUnown(species))
|
||||
gSprites[spriteId].affineAnims = gUnknown_082FF6C0;
|
||||
gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteContest;
|
||||
else
|
||||
gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteOpponentSide;
|
||||
StartSpriteAffineAnim(gSprites + spriteId, 0);
|
||||
StartSpriteAffineAnim(&gSprites[spriteId], BATTLER_AFFINE_NORMAL);
|
||||
|
||||
return spriteId;
|
||||
}
|
||||
@@ -3204,27 +3208,25 @@ static void PrintContestMoveDescription(u16 a)
|
||||
ContestBG_FillBoxWithIncrementingTile(0, categoryTile, 0x0b, 0x1f, 0x05, 0x01, 0x11, 0x01);
|
||||
ContestBG_FillBoxWithIncrementingTile(0, categoryTile + 0x10, 0x0b, 0x20, 0x05, 0x01, 0x11, 0x01);
|
||||
|
||||
// Appeal hearts
|
||||
if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF)
|
||||
numHearts = 0;
|
||||
else
|
||||
numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10;
|
||||
if (numHearts > 8)
|
||||
numHearts = 8;
|
||||
// Filled-in hearts
|
||||
ContestBG_FillBoxWithTile(0, 0x5035, 0x15, 0x1f, 0x08, 0x01, 0x11);
|
||||
// Empty hearts
|
||||
ContestBG_FillBoxWithTile(0, 0x5012, 0x15, 0x1f, numHearts, 0x01, 0x11);
|
||||
if (numHearts > MAX_CONTEST_MOVE_HEARTS)
|
||||
numHearts = MAX_CONTEST_MOVE_HEARTS;
|
||||
ContestBG_FillBoxWithTile(0, TILE_EMPTY_APPEAL_HEART, 0x15, 0x1f, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11);
|
||||
ContestBG_FillBoxWithTile(0, TILE_FILLED_APPEAL_HEART, 0x15, 0x1f, numHearts, 0x01, 0x11);
|
||||
|
||||
// Jam hearts
|
||||
if (gContestEffects[gContestMoves[a].effect].jam == 0xFF)
|
||||
numHearts = 0;
|
||||
else
|
||||
numHearts = gContestEffects[gContestMoves[a].effect].jam / 10;
|
||||
if (numHearts > 8)
|
||||
numHearts = 8;
|
||||
// Filled-in hearts
|
||||
ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11);
|
||||
// Empty hearts
|
||||
ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11);
|
||||
if (numHearts > MAX_CONTEST_MOVE_HEARTS)
|
||||
numHearts = MAX_CONTEST_MOVE_HEARTS;
|
||||
ContestBG_FillBoxWithTile(0, TILE_EMPTY_JAM_HEART, 0x15, 0x20, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11);
|
||||
ContestBG_FillBoxWithTile(0, TILE_FILLED_JAM_HEART, 0x15, 0x20, numHearts, 0x01, 0x11);
|
||||
|
||||
FillWindowPixelBuffer(WIN_MOVE_DESCRIPTION, PIXEL_FILL(0));
|
||||
Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
|
||||
@@ -3862,7 +3864,7 @@ static void UpdateHeartSlider(u8 contestant)
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gSprites[spriteId].sContestant = contestant;
|
||||
gSprites[spriteId].sTargetX = slideTarget;
|
||||
if (gSprites[spriteId].sTargetX > gSprites[spriteId].pos2.x)
|
||||
if (gSprites[spriteId].sTargetX > gSprites[spriteId].x2)
|
||||
gSprites[spriteId].sMoveX = 1;
|
||||
else
|
||||
gSprites[spriteId].sMoveX = -1;
|
||||
@@ -3894,14 +3896,14 @@ static bool8 SlidersDoneUpdating(void)
|
||||
|
||||
static void SpriteCB_UpdateHeartSlider(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos2.x == sprite->sTargetX)
|
||||
if (sprite->x2 == sprite->sTargetX)
|
||||
{
|
||||
eContestGfxState[sprite->sContestant].sliderUpdating = FALSE;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.x += sprite->sMoveX;
|
||||
sprite->x2 += sprite->sMoveX;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3915,7 +3917,7 @@ static void UpdateSliderHeartSpriteYPositions(void)
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
gSprites[eContestGfxState[i].sliderHeartSpriteId].pos1.y = sSliderHeartYPositions[gContestantTurnOrder[i]];
|
||||
gSprites[eContestGfxState[i].sliderHeartSpriteId].y = sSliderHeartYPositions[gContestantTurnOrder[i]];
|
||||
}
|
||||
|
||||
// Used to hide (or subsequently reshow) the bottom two slider hearts that get hidden by text windows by moving them offscreen
|
||||
@@ -3929,9 +3931,9 @@ static void SetBottomSliderHeartsInvisibility(bool8 invisible)
|
||||
if (gContestantTurnOrder[i] > 1)
|
||||
{
|
||||
if (!invisible)
|
||||
gSprites[eContestGfxState[i].sliderHeartSpriteId].pos1.x = 180;
|
||||
gSprites[eContestGfxState[i].sliderHeartSpriteId].x = 180;
|
||||
else
|
||||
gSprites[eContestGfxState[i].sliderHeartSpriteId].pos1.x = 256;
|
||||
gSprites[eContestGfxState[i].sliderHeartSpriteId].x = 256;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4412,7 +4414,7 @@ static void DrawContestantWindows(void)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
s32 windowId = i + 5;
|
||||
LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + 5) * 16, sizeof(eUnknownHeap1A004.cachedWindowPalettes[0]));
|
||||
LoadPalette(eContestTempSave.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + 5) * 16, sizeof(eContestTempSave.cachedWindowPalettes[0]));
|
||||
}
|
||||
DrawContestantWindowText();
|
||||
}
|
||||
@@ -4787,7 +4789,7 @@ static void Task_ApplauseOverflowAnimation(u8 taskId)
|
||||
static void SlideApplauseMeterIn(void)
|
||||
{
|
||||
CreateTask(Task_SlideApplauseMeterIn, 10);
|
||||
gSprites[eContest.applauseMeterSpriteId].pos2.x = -70;
|
||||
gSprites[eContest.applauseMeterSpriteId].x2 = -70;
|
||||
gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
|
||||
eContest.applauseMeterIsMoving = TRUE;
|
||||
}
|
||||
@@ -4797,11 +4799,11 @@ static void Task_SlideApplauseMeterIn(u8 taskId)
|
||||
struct Sprite *sprite = &gSprites[eContest.applauseMeterSpriteId];
|
||||
|
||||
gTasks[taskId].data[10] += 1664;
|
||||
sprite->pos2.x += gTasks[taskId].data[10] >> 8;
|
||||
sprite->x2 += gTasks[taskId].data[10] >> 8;
|
||||
gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
|
||||
if (sprite->pos2.x > 0)
|
||||
sprite->pos2.x = 0;
|
||||
if (sprite->pos2.x == 0)
|
||||
if (sprite->x2 > 0)
|
||||
sprite->x2 = 0;
|
||||
if (sprite->x2 == 0)
|
||||
{
|
||||
eContest.applauseMeterIsMoving = FALSE;
|
||||
DestroyTask(taskId);
|
||||
@@ -4817,7 +4819,7 @@ static void SlideApplauseMeterOut(void)
|
||||
else
|
||||
{
|
||||
CreateTask(Task_SlideApplauseMeterOut, 10);
|
||||
gSprites[eContest.applauseMeterSpriteId].pos2.x = 0;
|
||||
gSprites[eContest.applauseMeterSpriteId].x2 = 0;
|
||||
eContest.applauseMeterIsMoving = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -4827,11 +4829,11 @@ static void Task_SlideApplauseMeterOut(u8 taskId)
|
||||
struct Sprite *sprite = &gSprites[eContest.applauseMeterSpriteId];
|
||||
|
||||
gTasks[taskId].data[10] += 1664;
|
||||
sprite->pos2.x -= gTasks[taskId].data[10] >> 8;
|
||||
sprite->x2 -= gTasks[taskId].data[10] >> 8;
|
||||
gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
|
||||
if (sprite->pos2.x < -70)
|
||||
sprite->pos2.x = -70;
|
||||
if (sprite->pos2.x == -70)
|
||||
if (sprite->x2 < -70)
|
||||
sprite->x2 = -70;
|
||||
if (sprite->x2 == -70)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
eContest.applauseMeterIsMoving = FALSE;
|
||||
@@ -4876,7 +4878,7 @@ static void Task_ShowAndUpdateApplauseMeter(u8 taskId)
|
||||
// Unused.
|
||||
static void HideApplauseMeterNoAnim(void)
|
||||
{
|
||||
gSprites[eContest.applauseMeterSpriteId].pos2.x = 0;
|
||||
gSprites[eContest.applauseMeterSpriteId].x2 = 0;
|
||||
gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
|
||||
}
|
||||
|
||||
@@ -5015,7 +5017,7 @@ static void ShowHideNextTurnGfx(bool8 show)
|
||||
if (eContestantStatus[i].turnOrderMod != 0 && show)
|
||||
{
|
||||
CpuCopy32(GetTurnOrderNumberGfx(i), (void *)(OBJ_VRAM0 + (gSprites[eContestGfxState[i].nextTurnSpriteId].oam.tileNum + 6) * 32), 32);
|
||||
gSprites[eContestGfxState[i].nextTurnSpriteId].pos1.y = sNextTurnSpriteYPositions[gContestantTurnOrder[i]];
|
||||
gSprites[eContestGfxState[i].nextTurnSpriteId].y = sNextTurnSpriteYPositions[gContestantTurnOrder[i]];
|
||||
gSprites[eContestGfxState[i].nextTurnSpriteId].invisible = FALSE;
|
||||
}
|
||||
else
|
||||
@@ -5377,10 +5379,10 @@ static void SetBattleTargetSpritePosition(void)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[gBattlerSpriteIds[B_POSITION_OPPONENT_RIGHT]];
|
||||
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(B_POSITION_OPPONENT_RIGHT, BATTLER_COORD_X);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(B_POSITION_OPPONENT_RIGHT, BATTLER_COORD_Y);
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->x = GetBattlerSpriteCoord(B_POSITION_OPPONENT_RIGHT, BATTLER_COORD_X);
|
||||
sprite->y = GetBattlerSpriteCoord(B_POSITION_OPPONENT_RIGHT, BATTLER_COORD_Y);
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
@@ -5516,40 +5518,46 @@ void ResetContestLinkResults(void)
|
||||
gSaveBlock2Ptr->contestLinkResults[i][j] = 0;
|
||||
}
|
||||
|
||||
bool8 sub_80DEDA8(u8 rank)
|
||||
bool8 SaveContestWinner(u8 rank)
|
||||
{
|
||||
s32 i;
|
||||
u8 r7 = Random() % 3;
|
||||
u8 captionId = Random() % NUM_PAINTING_CAPTIONS;
|
||||
|
||||
// Get the index of the winner among the contestants
|
||||
for (i = 0; i < CONTESTANT_COUNT - 1; i++)
|
||||
{
|
||||
if (gContestFinalStandings[i] == 0)
|
||||
break;
|
||||
}
|
||||
if (rank == 0xFF && i != gContestPlayerMonIndex)
|
||||
|
||||
// Exit if attempting to save a Pokémon other than the player's to the museum
|
||||
if (rank == CONTEST_SAVE_FOR_MUSEUM && i != gContestPlayerMonIndex)
|
||||
return FALSE;
|
||||
|
||||
// Adjust the random painting caption depending on the category
|
||||
switch (gSpecialVar_ContestCategory)
|
||||
{
|
||||
case CONTEST_CATEGORY_COOL:
|
||||
r7 += 0;
|
||||
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL;
|
||||
break;
|
||||
case CONTEST_CATEGORY_BEAUTY:
|
||||
r7 += 3;
|
||||
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY;
|
||||
break;
|
||||
case CONTEST_CATEGORY_CUTE:
|
||||
r7 += 6;
|
||||
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE;
|
||||
break;
|
||||
case CONTEST_CATEGORY_SMART:
|
||||
r7 += 9;
|
||||
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART;
|
||||
break;
|
||||
case CONTEST_CATEGORY_TOUGH:
|
||||
r7 += 12;
|
||||
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH;
|
||||
break;
|
||||
}
|
||||
if (rank != 0xFE)
|
||||
{
|
||||
u8 id = sub_80DEFA8(rank, 1);
|
||||
|
||||
if (rank != CONTEST_SAVE_FOR_ARTIST)
|
||||
{
|
||||
// Save winner in the saveblock
|
||||
// Used to save any winner for the Contest Hall or the Museum
|
||||
// but excludes the temporary save used by the artist
|
||||
u8 id = GetContestWinnerSaveIdx(rank, TRUE);
|
||||
gSaveBlock1Ptr->contestWinners[id].personality = gContestMons[i].personality;
|
||||
gSaveBlock1Ptr->contestWinners[id].species = gContestMons[i].species;
|
||||
gSaveBlock1Ptr->contestWinners[id].trainerId = gContestMons[i].otId;
|
||||
@@ -5560,24 +5568,29 @@ bool8 sub_80DEDA8(u8 rank)
|
||||
else
|
||||
gSaveBlock1Ptr->contestWinners[id].contestRank = gSpecialVar_ContestRank;
|
||||
|
||||
if (rank != 0xFF)
|
||||
if (rank != CONTEST_SAVE_FOR_MUSEUM)
|
||||
gSaveBlock1Ptr->contestWinners[id].contestCategory = gSpecialVar_ContestCategory;
|
||||
else
|
||||
gSaveBlock1Ptr->contestWinners[id].contestCategory = r7;
|
||||
gSaveBlock1Ptr->contestWinners[id].contestCategory = captionId;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set the most recent winner so the artist can show the player their painting
|
||||
gCurContestWinner.personality = gContestMons[i].personality;
|
||||
gCurContestWinner.trainerId = gContestMons[i].otId;
|
||||
gCurContestWinner.species = gContestMons[i].species;
|
||||
StringCopy(gCurContestWinner.monName, gContestMons[i].nickname);
|
||||
StringCopy(gCurContestWinner.trainerName, gContestMons[i].trainerName);
|
||||
gCurContestWinner.contestCategory = r7;
|
||||
gCurContestWinner.contestCategory = captionId;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_80DEFA8(u8 rank, u8 b)
|
||||
// Rank is either a regular contest rank (for saving winners to show in the Contest Hall)
|
||||
// Or one of two special IDs listed below (for saving winners to show in Museum, or from the artist)
|
||||
// If just retrieving the index where the winner *would* go, shift is FALSE
|
||||
// If actually preparing to insert the winner into the saveblock, shift is TRUE
|
||||
u8 GetContestWinnerSaveIdx(u8 rank, bool8 shift)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -5587,13 +5600,15 @@ u8 sub_80DEFA8(u8 rank, u8 b)
|
||||
case CONTEST_RANK_SUPER:
|
||||
case CONTEST_RANK_HYPER:
|
||||
case CONTEST_RANK_MASTER:
|
||||
if (b != 0)
|
||||
if (shift)
|
||||
{
|
||||
for (i = NUM_CONTEST_HALL_WINNERS - 1; i >= 1; i--)
|
||||
for (i = NUM_CONTEST_HALL_WINNERS - 1; i > 0; i--)
|
||||
memcpy(&gSaveBlock1Ptr->contestWinners[i], &gSaveBlock1Ptr->contestWinners[i - 1], sizeof(struct ContestWinner));
|
||||
}
|
||||
return 0;
|
||||
return CONTEST_WINNER_HALL_1 - 1;
|
||||
default:
|
||||
// case CONTEST_SAVE_FOR_MUSEUM:
|
||||
// case CONTEST_SAVE_FOR_ARTIST:
|
||||
switch (gSpecialVar_ContestCategory)
|
||||
{
|
||||
case CONTEST_CATEGORY_COOL:
|
||||
@@ -5615,7 +5630,7 @@ void ClearContestWinnerPicsInContestHall(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < MUSEUM_CONTEST_WINNERS_START; i++)
|
||||
gSaveBlock1Ptr->contestWinners[i] = gDefaultContestWinners[i];
|
||||
}
|
||||
|
||||
|
||||
+130
-125
@@ -21,18 +21,16 @@
|
||||
#include "window.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
// IWRAM common
|
||||
u16 (*gContestMonPixels)[][32];
|
||||
struct ImageProcessingContext gImageProcessingContext;
|
||||
struct ContestWinner *gContestPaintingWinner;
|
||||
u16 *gContestPaintingMonPalette;
|
||||
|
||||
// IWRAM bss
|
||||
static u8 gContestPaintingState;
|
||||
static u16 gContestPaintingMosaicVal;
|
||||
static u16 gContestPaintingFadeCounter;
|
||||
static bool8 gUnknown_030011F6;
|
||||
static u8 gContestPaintingWindowId;
|
||||
static u8 sHoldState;
|
||||
static u16 sMosaicVal;
|
||||
static u16 sFadeCounter;
|
||||
static bool8 sVarsInitialized;
|
||||
static u8 sWindowId;
|
||||
|
||||
static void ShowContestPainting(void);
|
||||
static void HoldContestPainting(void);
|
||||
@@ -44,7 +42,7 @@ static void PrintContestPaintingCaption(u8, u8);
|
||||
static void VBlankCB_ContestPainting(void);
|
||||
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64]);
|
||||
|
||||
extern const u8 gContestPaintingCaption[];
|
||||
extern const u8 gContestHallPaintingCaption[];
|
||||
extern const u8 gContestCoolness[];
|
||||
extern const u8 gContestBeauty[];
|
||||
extern const u8 gContestCuteness[];
|
||||
@@ -71,39 +69,39 @@ extern const u8 gContestPaintingTough1[];
|
||||
extern const u8 gContestPaintingTough2[];
|
||||
extern const u8 gContestPaintingTough3[];
|
||||
|
||||
const u16 gPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
|
||||
const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl");
|
||||
const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl");
|
||||
const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl");
|
||||
const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl");
|
||||
const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl");
|
||||
const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl");
|
||||
const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl");
|
||||
const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl");
|
||||
const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl");
|
||||
const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
|
||||
const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
|
||||
const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
|
||||
static const u16 sPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
|
||||
static const u8 sPictureFrameTiles_Cool[] = INCBIN_U8("graphics/picture_frame/cool.4bpp.rl");
|
||||
static const u8 sPictureFrameTiles_Beauty[] = INCBIN_U8("graphics/picture_frame/beauty.4bpp.rl");
|
||||
static const u8 sPictureFrameTiles_Cute[] = INCBIN_U8("graphics/picture_frame/cute.4bpp.rl");
|
||||
static const u8 sPictureFrameTiles_Smart[] = INCBIN_U8("graphics/picture_frame/smart.4bpp.rl");
|
||||
static const u8 sPictureFrameTiles_Tough[] = INCBIN_U8("graphics/picture_frame/tough.4bpp.rl");
|
||||
static const u8 sPictureFrameTiles_HallLobby[] = INCBIN_U8("graphics/picture_frame/lobby.4bpp.rl");
|
||||
static const u8 sPictureFrameTilemap_Cool[] = INCBIN_U8("graphics/picture_frame/cool_map.bin.rl");
|
||||
static const u8 sPictureFrameTilemap_Beauty[] = INCBIN_U8("graphics/picture_frame/beauty_map.bin.rl");
|
||||
static const u8 sPictureFrameTilemap_Cute[] = INCBIN_U8("graphics/picture_frame/cute_map.bin.rl");
|
||||
static const u8 sPictureFrameTilemap_Smart[] = INCBIN_U8("graphics/picture_frame/smart_map.bin.rl");
|
||||
static const u8 sPictureFrameTilemap_Tough[] = INCBIN_U8("graphics/picture_frame/tough_map.bin.rl");
|
||||
static const u8 sPictureFrameTilemap_HallLobby[] = INCBIN_U8("graphics/picture_frame/lobby_map.bin.rl");
|
||||
|
||||
static const u8 *const sContestCategoryNames_Unused[] =
|
||||
{
|
||||
gContestCoolness,
|
||||
gContestBeauty,
|
||||
gContestCuteness,
|
||||
gContestSmartness,
|
||||
gContestToughness,
|
||||
[CONTEST_CATEGORY_COOL] = gContestCoolness,
|
||||
[CONTEST_CATEGORY_BEAUTY] = gContestBeauty,
|
||||
[CONTEST_CATEGORY_CUTE] = gContestCuteness,
|
||||
[CONTEST_CATEGORY_SMART] = gContestSmartness,
|
||||
[CONTEST_CATEGORY_TOUGH] = gContestToughness,
|
||||
};
|
||||
|
||||
static const u8 *const sContestRankNames[] =
|
||||
{
|
||||
gContestRankNormal,
|
||||
gContestRankSuper,
|
||||
gContestRankHyper,
|
||||
gContestRankMaster,
|
||||
gContestLink,
|
||||
[CONTEST_RANK_NORMAL] = gContestRankNormal,
|
||||
[CONTEST_RANK_SUPER] = gContestRankSuper,
|
||||
[CONTEST_RANK_HYPER] = gContestRankHyper,
|
||||
[CONTEST_RANK_MASTER] = gContestRankMaster,
|
||||
[CONTEST_RANK_LINK] = gContestLink,
|
||||
};
|
||||
|
||||
static const struct BgTemplate sContestPaintingBgTemplates[] =
|
||||
static const struct BgTemplate sBgTemplates[] =
|
||||
{
|
||||
{
|
||||
.bg = 1,
|
||||
@@ -116,7 +114,7 @@ static const struct BgTemplate sContestPaintingBgTemplates[] =
|
||||
},
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sContestPaintingWindowTemplate =
|
||||
static const struct WindowTemplate sWindowTemplate =
|
||||
{
|
||||
.bg = 1,
|
||||
.tilemapLeft = 2,
|
||||
@@ -127,23 +125,23 @@ static const struct WindowTemplate sContestPaintingWindowTemplate =
|
||||
.baseBlock = 1,
|
||||
};
|
||||
|
||||
static const u8 *const sContestPaintingDescriptionPointers[] =
|
||||
static const u8 *const sMuseumCaptions[NUM_PAINTING_CAPTIONS * CONTEST_CATEGORIES_COUNT] =
|
||||
{
|
||||
gContestPaintingCool1,
|
||||
gContestPaintingCool2,
|
||||
gContestPaintingCool3,
|
||||
gContestPaintingBeauty1,
|
||||
gContestPaintingBeauty2,
|
||||
gContestPaintingBeauty3,
|
||||
gContestPaintingCute1,
|
||||
gContestPaintingCute2,
|
||||
gContestPaintingCute3,
|
||||
gContestPaintingSmart1,
|
||||
gContestPaintingSmart2,
|
||||
gContestPaintingSmart3,
|
||||
gContestPaintingTough1,
|
||||
gContestPaintingTough2,
|
||||
gContestPaintingTough3,
|
||||
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool1,
|
||||
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool2,
|
||||
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool3,
|
||||
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty1,
|
||||
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty2,
|
||||
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty3,
|
||||
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute1,
|
||||
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute2,
|
||||
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute3,
|
||||
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart1,
|
||||
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart2,
|
||||
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart3,
|
||||
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough1,
|
||||
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough2,
|
||||
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough3,
|
||||
};
|
||||
|
||||
static const struct OamData sContestPaintingMonOamData =
|
||||
@@ -161,15 +159,15 @@ static const struct OamData sContestPaintingMonOamData =
|
||||
.paletteNum = 0,
|
||||
};
|
||||
|
||||
const u16 gUnknown_085B0838[] = {RGB(0, 0, 0), RGB(0, 0, 0)};
|
||||
static const u16 sBgPalette[] = {RGB_BLACK, RGB_BLACK};
|
||||
|
||||
void SetContestWinnerForPainting(int contestWinnerId)
|
||||
{
|
||||
u8 *ptr1 = &gUnknown_02039F5D;
|
||||
u8 *ptr2 = &gUnknown_02039F5C;
|
||||
u8 *saveIdx = &gCurContestWinnerSaveIdx;
|
||||
u8 *isForArtist = &gCurContestWinnerIsForArtist;
|
||||
gCurContestWinner = gSaveBlock1Ptr->contestWinners[contestWinnerId - 1];
|
||||
*ptr1 = contestWinnerId - 1;
|
||||
*ptr2 = FALSE;
|
||||
*saveIdx = contestWinnerId - 1;
|
||||
*isForArtist = FALSE;
|
||||
}
|
||||
|
||||
void CB2_ContestPainting(void)
|
||||
@@ -189,7 +187,7 @@ static void CB2_QuitContestPainting(void)
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
FREE_AND_SET_NULL(gContestPaintingMonPalette);
|
||||
FREE_AND_SET_NULL(gContestMonPixels);
|
||||
RemoveWindow(gContestPaintingWindowId);
|
||||
RemoveWindow(sWindowId);
|
||||
Free(GetBgTilemapBuffer(1));
|
||||
FreeMonSpritesGfx();
|
||||
}
|
||||
@@ -203,13 +201,13 @@ static void ShowContestPainting(void)
|
||||
SetVBlankCallback(NULL);
|
||||
AllocateMonSpritesGfx();
|
||||
gContestPaintingWinner = &gCurContestWinner;
|
||||
InitContestPaintingVars(1);
|
||||
InitContestPaintingVars(TRUE);
|
||||
InitContestPaintingBg();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
ResetPaletteFade();
|
||||
DmaFillLarge32(3, 0, (void *)BG_VRAM, 0x18000, 0x1000);
|
||||
DmaFillLarge32(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
|
||||
ResetSpriteData();
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -220,16 +218,16 @@ static void ShowContestPainting(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
CreateContestPaintingPicture(gUnknown_02039F5D, gUnknown_02039F5C);
|
||||
CreateContestPaintingPicture(gCurContestWinnerSaveIdx, gCurContestWinnerIsForArtist);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
PrintContestPaintingCaption(gUnknown_02039F5D, gUnknown_02039F5C);
|
||||
LoadPalette(gUnknown_085B0838, 0, 1 * 2);
|
||||
PrintContestPaintingCaption(gCurContestWinnerSaveIdx, gCurContestWinnerIsForArtist);
|
||||
LoadPalette(sBgPalette, 0, 1 * 2);
|
||||
DmaClear32(3, PLTT, PLTT_SIZE);
|
||||
BeginFastPaletteFade(2);
|
||||
SetVBlankCallback(VBlankCB_ContestPainting);
|
||||
gContestPaintingState = 0;
|
||||
sHoldState = 0;
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
|
||||
SetMainCallback2(CB2_HoldContestPainting);
|
||||
break;
|
||||
@@ -238,29 +236,29 @@ static void ShowContestPainting(void)
|
||||
|
||||
static void HoldContestPainting(void)
|
||||
{
|
||||
switch (gContestPaintingState)
|
||||
switch (sHoldState)
|
||||
{
|
||||
case 0:
|
||||
if (!gPaletteFade.active)
|
||||
gContestPaintingState = 1;
|
||||
if (gUnknown_030011F6 && gContestPaintingFadeCounter)
|
||||
gContestPaintingFadeCounter--;
|
||||
sHoldState = 1;
|
||||
if (sVarsInitialized && sFadeCounter)
|
||||
sFadeCounter--;
|
||||
break;
|
||||
case 1:
|
||||
if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
|
||||
{
|
||||
gContestPaintingState++;
|
||||
sHoldState++;
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB(0, 0, 0));
|
||||
}
|
||||
|
||||
if (gUnknown_030011F6)
|
||||
gContestPaintingFadeCounter = 0;
|
||||
if (sVarsInitialized)
|
||||
sFadeCounter = 0;
|
||||
break;
|
||||
case 2:
|
||||
if (!gPaletteFade.active)
|
||||
SetMainCallback2(CB2_QuitContestPainting);
|
||||
if (gUnknown_030011F6 && gContestPaintingFadeCounter < 30)
|
||||
gContestPaintingFadeCounter++;
|
||||
if (sVarsInitialized && sFadeCounter < 30)
|
||||
sFadeCounter++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -268,45 +266,48 @@ static void HoldContestPainting(void)
|
||||
static void InitContestPaintingWindow(void)
|
||||
{
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, sContestPaintingBgTemplates, ARRAY_COUNT(sContestPaintingBgTemplates));
|
||||
InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
|
||||
ChangeBgX(1, 0, 0);
|
||||
ChangeBgY(1, 0, 0);
|
||||
SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
|
||||
gContestPaintingWindowId = AddWindow(&sContestPaintingWindowTemplate);
|
||||
sWindowId = AddWindow(&sWindowTemplate);
|
||||
DeactivateAllTextPrinters();
|
||||
FillWindowPixelBuffer(gContestPaintingWindowId, PIXEL_FILL(0));
|
||||
PutWindowTilemap(gContestPaintingWindowId);
|
||||
CopyWindowToVram(gContestPaintingWindowId, 3);
|
||||
FillWindowPixelBuffer(sWindowId, PIXEL_FILL(0));
|
||||
PutWindowTilemap(sWindowId);
|
||||
CopyWindowToVram(sWindowId, 3);
|
||||
ShowBg(1);
|
||||
}
|
||||
|
||||
static void PrintContestPaintingCaption(u8 contestType, bool8 arg1)
|
||||
static void PrintContestPaintingCaption(u8 contestType, bool8 isForArtist)
|
||||
{
|
||||
int x;
|
||||
u8 category;
|
||||
|
||||
if (arg1 == TRUE)
|
||||
// Artist's painting has no caption
|
||||
if (isForArtist == TRUE)
|
||||
return;
|
||||
|
||||
category = gContestPaintingWinner->contestCategory;
|
||||
if (contestType < 8)
|
||||
if (contestType < MUSEUM_CONTEST_WINNERS_START)
|
||||
{
|
||||
// Contest Hall caption
|
||||
BufferContestName(gStringVar1, category);
|
||||
StringAppend(gStringVar1, gText_Space);
|
||||
StringAppend(gStringVar1, sContestRankNames[gContestPaintingWinner->contestRank]);
|
||||
StringCopy(gStringVar2, gContestPaintingWinner->trainerName);
|
||||
sub_81DB5AC(gStringVar2);
|
||||
ConvertInternationalContestantName(gStringVar2);
|
||||
StringCopy(gStringVar3, gContestPaintingWinner->monName);
|
||||
StringExpandPlaceholders(gStringVar4, gContestPaintingCaption);
|
||||
StringExpandPlaceholders(gStringVar4, gContestHallPaintingCaption);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Museum caption
|
||||
StringCopy(gStringVar1, gContestPaintingWinner->monName);
|
||||
StringExpandPlaceholders(gStringVar4, sContestPaintingDescriptionPointers[category]);
|
||||
StringExpandPlaceholders(gStringVar4, sMuseumCaptions[category]);
|
||||
}
|
||||
|
||||
x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
|
||||
AddTextPrinterParameterized(gContestPaintingWindowId, 1, gStringVar4, x, 1, 0, 0);
|
||||
AddTextPrinterParameterized(sWindowId, 1, gStringVar4, x, 1, 0, 0);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
}
|
||||
|
||||
@@ -321,33 +322,34 @@ static void InitContestPaintingBg(void)
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
}
|
||||
|
||||
static void InitContestPaintingVars(bool8 arg0)
|
||||
static void InitContestPaintingVars(bool8 reset)
|
||||
{
|
||||
if (arg0 == FALSE)
|
||||
if (reset == FALSE)
|
||||
{
|
||||
gUnknown_030011F6 = FALSE;
|
||||
gContestPaintingMosaicVal = 0;
|
||||
gContestPaintingFadeCounter = 0;
|
||||
// Never reached
|
||||
sVarsInitialized = FALSE;
|
||||
sMosaicVal = 0;
|
||||
sFadeCounter = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_030011F6 = TRUE;
|
||||
gContestPaintingMosaicVal = 15;
|
||||
gContestPaintingFadeCounter = 30;
|
||||
sVarsInitialized = TRUE;
|
||||
sMosaicVal = 15;
|
||||
sFadeCounter = 30;
|
||||
}
|
||||
}
|
||||
|
||||
static void UpdateContestPaintingMosaicEffect(void)
|
||||
{
|
||||
if (!gUnknown_030011F6)
|
||||
if (!sVarsInitialized)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_MOSAIC, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
|
||||
gContestPaintingMosaicVal = gContestPaintingFadeCounter / 2;
|
||||
SetGpuReg(REG_OFFSET_MOSAIC, (gContestPaintingMosaicVal << 12) | (gContestPaintingMosaicVal << 8) | (gContestPaintingMosaicVal << 4) | (gContestPaintingMosaicVal << 0));
|
||||
sMosaicVal = sFadeCounter / 2;
|
||||
SetGpuReg(REG_OFFSET_MOSAIC, (sMosaicVal << 12) | (sMosaicVal << 8) | (sMosaicVal << 4) | (sMosaicVal << 0));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -414,34 +416,35 @@ static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)
|
||||
|
||||
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
|
||||
|
||||
static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 arg1)
|
||||
static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 isForArtist)
|
||||
{
|
||||
u8 x, y;
|
||||
|
||||
LoadPalette(gPictureFramePalettes, 0, 0x100);
|
||||
if (arg1 == TRUE)
|
||||
LoadPalette(sPictureFramePalettes, 0, 0x100);
|
||||
if (isForArtist == TRUE)
|
||||
{
|
||||
switch (gContestPaintingWinner->contestCategory / 3)
|
||||
// Load Artist's frame
|
||||
switch (gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS)
|
||||
{
|
||||
case CONTEST_CATEGORY_COOL:
|
||||
RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
|
||||
RLUnCompWram(gPictureFrameTilemap_0, gContestMonPixels);
|
||||
RLUnCompVram(sPictureFrameTiles_Cool, (void *)VRAM);
|
||||
RLUnCompWram(sPictureFrameTilemap_Cool, gContestMonPixels);
|
||||
break;
|
||||
case CONTEST_CATEGORY_BEAUTY:
|
||||
RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
|
||||
RLUnCompWram(gPictureFrameTilemap_1, gContestMonPixels);
|
||||
RLUnCompVram(sPictureFrameTiles_Beauty, (void *)VRAM);
|
||||
RLUnCompWram(sPictureFrameTilemap_Beauty, gContestMonPixels);
|
||||
break;
|
||||
case CONTEST_CATEGORY_CUTE:
|
||||
RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
|
||||
RLUnCompWram(gPictureFrameTilemap_2, gContestMonPixels);
|
||||
RLUnCompVram(sPictureFrameTiles_Cute, (void *)VRAM);
|
||||
RLUnCompWram(sPictureFrameTilemap_Cute, gContestMonPixels);
|
||||
break;
|
||||
case CONTEST_CATEGORY_SMART:
|
||||
RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
|
||||
RLUnCompWram(gPictureFrameTilemap_3, gContestMonPixels);
|
||||
RLUnCompVram(sPictureFrameTiles_Smart, (void *)VRAM);
|
||||
RLUnCompWram(sPictureFrameTilemap_Smart, gContestMonPixels);
|
||||
break;
|
||||
case CONTEST_CATEGORY_TOUGH:
|
||||
RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
|
||||
RLUnCompWram(gPictureFrameTilemap_4, gContestMonPixels);
|
||||
RLUnCompVram(sPictureFrameTiles_Tough, (void *)VRAM);
|
||||
RLUnCompWram(sPictureFrameTilemap_Tough, gContestMonPixels);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -463,34 +466,36 @@ static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 arg1)
|
||||
for (x = 0; x < 16; x++)
|
||||
VRAM_PICTURE_DATA(x + 7, 2) = (*gContestMonPixels)[2][7];
|
||||
}
|
||||
else if (contestWinnerId < 8)
|
||||
else if (contestWinnerId < MUSEUM_CONTEST_WINNERS_START)
|
||||
{
|
||||
RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
|
||||
RLUnCompVram(gPictureFrameTilemap_5, (void *)(BG_SCREEN_ADDR(12)));
|
||||
// Load Contest Hall lobby frame
|
||||
RLUnCompVram(sPictureFrameTiles_HallLobby, (void *)VRAM);
|
||||
RLUnCompVram(sPictureFrameTilemap_HallLobby, (void *)(BG_SCREEN_ADDR(12)));
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (gContestPaintingWinner->contestCategory / 3)
|
||||
// Load Museum frame
|
||||
switch (gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS)
|
||||
{
|
||||
case CONTEST_CATEGORY_COOL:
|
||||
RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
|
||||
RLUnCompVram(gPictureFrameTilemap_0, (void *)(BG_SCREEN_ADDR(12)));
|
||||
RLUnCompVram(sPictureFrameTiles_Cool, (void *)VRAM);
|
||||
RLUnCompVram(sPictureFrameTilemap_Cool, (void *)(BG_SCREEN_ADDR(12)));
|
||||
break;
|
||||
case CONTEST_CATEGORY_BEAUTY:
|
||||
RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
|
||||
RLUnCompVram(gPictureFrameTilemap_1, (void *)(BG_SCREEN_ADDR(12)));
|
||||
RLUnCompVram(sPictureFrameTiles_Beauty, (void *)VRAM);
|
||||
RLUnCompVram(sPictureFrameTilemap_Beauty, (void *)(BG_SCREEN_ADDR(12)));
|
||||
break;
|
||||
case CONTEST_CATEGORY_CUTE:
|
||||
RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
|
||||
RLUnCompVram(gPictureFrameTilemap_2, (void *)(BG_SCREEN_ADDR(12)));
|
||||
RLUnCompVram(sPictureFrameTiles_Cute, (void *)VRAM);
|
||||
RLUnCompVram(sPictureFrameTilemap_Cute, (void *)(BG_SCREEN_ADDR(12)));
|
||||
break;
|
||||
case CONTEST_CATEGORY_SMART:
|
||||
RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
|
||||
RLUnCompVram(gPictureFrameTilemap_3, (void *)(BG_SCREEN_ADDR(12)));
|
||||
RLUnCompVram(sPictureFrameTiles_Smart, (void *)VRAM);
|
||||
RLUnCompVram(sPictureFrameTilemap_Smart, (void *)(BG_SCREEN_ADDR(12)));
|
||||
break;
|
||||
case CONTEST_CATEGORY_TOUGH:
|
||||
RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
|
||||
RLUnCompVram(gPictureFrameTilemap_4, (void *)(BG_SCREEN_ADDR(12)));
|
||||
RLUnCompVram(sPictureFrameTiles_Tough, (void *)VRAM);
|
||||
RLUnCompVram(sPictureFrameTilemap_Tough, (void *)(BG_SCREEN_ADDR(12)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -519,10 +524,10 @@ static u8 GetImageEffectForContestWinner(u8 contestWinnerId)
|
||||
{
|
||||
u8 contestCategory;
|
||||
|
||||
if (contestWinnerId < 8)
|
||||
if (contestWinnerId < MUSEUM_CONTEST_WINNERS_START)
|
||||
contestCategory = gContestPaintingWinner->contestCategory;
|
||||
else
|
||||
contestCategory = gContestPaintingWinner->contestCategory / 3;
|
||||
contestCategory = gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS;
|
||||
|
||||
switch (contestCategory)
|
||||
{
|
||||
@@ -584,12 +589,12 @@ static void DoContestPaintingImageProcessing(u8 imageEffect)
|
||||
LoadPalette(gContestPaintingMonPalette, 0x100, 0x200);
|
||||
}
|
||||
|
||||
static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 arg1)
|
||||
static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 isForArtist)
|
||||
{
|
||||
AllocPaintingResources();
|
||||
InitContestMonPixels(gContestPaintingWinner->species, 0);
|
||||
DoContestPaintingImageProcessing(GetImageEffectForContestWinner(contestWinnerId));
|
||||
InitPaintingMonOamData(contestWinnerId);
|
||||
LoadContestPaintingFrame(contestWinnerId, arg1);
|
||||
LoadContestPaintingFrame(contestWinnerId, isForArtist);
|
||||
}
|
||||
|
||||
|
||||
+196
-162
@@ -44,7 +44,6 @@
|
||||
#include "constants/game_stat.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/tv.h"
|
||||
#include "contest.h"
|
||||
|
||||
enum {
|
||||
@@ -61,10 +60,29 @@ enum {
|
||||
|
||||
#define GET_CONTEST_WINNER_ID(i) { for ((i) = 0; (i) < CONTESTANT_COUNT && gContestFinalStandings[(i)] != 0; (i)++); }
|
||||
|
||||
// Gfx/pal tags for the text window sprites on the contest results screen.
|
||||
// Both types of text windows are made up of 4 individual sprites
|
||||
// These tags are used by the spritesheets, and implicitly in the loop in CreateResultsTextWindowSprites
|
||||
#define TAG_TEXT_WINDOW_BASE 3009
|
||||
enum {
|
||||
TAG_RESULTS_TEXT_WINDOW_LEFT = TAG_TEXT_WINDOW_BASE,
|
||||
TAG_RESULTS_TEXT_WINDOW_MIDLEFT,
|
||||
TAG_RESULTS_TEXT_WINDOW_MIDRIGHT,
|
||||
TAG_RESULTS_TEXT_WINDOW_RIGHT,
|
||||
TAG_LINK_TEXT_WINDOW_LEFT,
|
||||
TAG_LINK_TEXT_WINDOW_MIDLEFT,
|
||||
TAG_LINK_TEXT_WINDOW_MIDRIGHT,
|
||||
TAG_LINK_TEXT_WINDOW_RIGHT, // 3016
|
||||
};
|
||||
#define TAG_CONFETTI 3017
|
||||
#define TAG_WIRELESS_INDICATOR_WINDOW 22222
|
||||
|
||||
#define MAX_BAR_LENGTH 87
|
||||
|
||||
// Starting x/y for the sliding results screen text box
|
||||
#define TEXT_BOX_X (DISPLAY_WIDTH + 32)
|
||||
#define TEXT_BOX_Y (DISPLAY_HEIGHT - 16)
|
||||
|
||||
struct ContestResultsInternal
|
||||
{
|
||||
u8 slidingTextBoxSpriteId;
|
||||
@@ -105,14 +123,14 @@ struct ContestResults
|
||||
static EWRAM_DATA struct ContestResults *sContestResults = NULL;
|
||||
|
||||
static void LoadAllContestMonIconPalettes(void);
|
||||
static void LoadContestResultsTilemaps(void);
|
||||
static void LoadContestResultsTitleBarTilemaps(void);
|
||||
static u8 GetNumPreliminaryPoints(u8, bool8);
|
||||
static s8 GetNumRound2Points(u8, bool8);
|
||||
static void AddContestTextPrinter(int, u8 *, int);
|
||||
static void AllocContestResults(void);
|
||||
static void FreeContestResults(void);
|
||||
static void LoadAllContestMonIcons(u8, u8);
|
||||
static void LoadContestResultSprites(void);
|
||||
static void CreateResultsTextWindowSprites(void);
|
||||
static void TryCreateWirelessSprites(void);
|
||||
static void Task_StartShowContestResults(u8 taskId);
|
||||
static void CB2_StartShowContestResults(void);
|
||||
@@ -166,11 +184,11 @@ static void SpriteCB_Confetti(struct Sprite *sprite);
|
||||
static void Task_ShowContestEntryMonPic(u8 taskId);
|
||||
static void Task_LinkContestWaitForConnection(u8 taskId);
|
||||
|
||||
static const u16 sUnknown_0858D6B0[] = INCBIN_U16("graphics/unknown/unknown_58D6B0.gbapal");
|
||||
static const u8 sUnknown_0858D6D0[] = INCBIN_U8("graphics/unknown/unknown_58D6D0.4bpp");
|
||||
static const u16 sResultsTextWindow_Pal[] = INCBIN_U16("graphics/contest/results_screen/text_window.gbapal");
|
||||
static const u8 sResultsTextWindow_Gfx[] = INCBIN_U8("graphics/contest/results_screen/text_window.4bpp");
|
||||
static const u16 sMiscBlank_Pal[] = INCBIN_U16("graphics/interface/blank.gbapal");
|
||||
|
||||
static const struct OamData sOamData_858D7F0 =
|
||||
static const struct OamData sOamData_ResultsTextWindow =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
@@ -187,33 +205,33 @@ static const struct OamData sOamData_858D7F0 =
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_858D7F8 =
|
||||
static const struct SpriteTemplate sSpriteTemplate_ResultsTextWindow =
|
||||
{
|
||||
.tileTag = 3009,
|
||||
.paletteTag = 3009,
|
||||
.oam = &sOamData_858D7F0,
|
||||
.tileTag = TAG_TEXT_WINDOW_BASE,
|
||||
.paletteTag = TAG_TEXT_WINDOW_BASE,
|
||||
.oam = &sOamData_ResultsTextWindow,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sUnknown_0858D810[] =
|
||||
static const struct SpriteSheet sSpriteSheets_ResultsTextWindow[] =
|
||||
{
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3009 },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3010 },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3011 },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3012 },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3013 },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3014 },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3015 },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3016 },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_LEFT },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_MIDLEFT },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_MIDRIGHT },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_RIGHT },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_LEFT },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_MIDLEFT },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_MIDRIGHT },
|
||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_RIGHT },
|
||||
};
|
||||
|
||||
static const struct SpritePalette sUnknown_0858D850 =
|
||||
static const struct SpritePalette sSpritePalette_ResultsTextWindow =
|
||||
{
|
||||
.data = sMiscBlank_Pal,
|
||||
.tag = 3009,
|
||||
.tag = TAG_TEXT_WINDOW_BASE,
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_Confetti =
|
||||
@@ -339,7 +357,7 @@ static const struct WindowTemplate sWindowTemplates[] =
|
||||
DUMMY_WIN_TEMPLATE,
|
||||
};
|
||||
|
||||
static const struct OamData sUnknown_0858D8C0 =
|
||||
static const struct OamData sOamData_WirelessIndicatorWindow =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
@@ -357,22 +375,22 @@ static const struct OamData sUnknown_0858D8C0 =
|
||||
};
|
||||
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_858D8C8 =
|
||||
static const struct SpriteTemplate sSpriteTemplate_WirelessIndicatorWindow =
|
||||
{
|
||||
.tileTag = 22222,
|
||||
.tileTag = TAG_WIRELESS_INDICATOR_WINDOW,
|
||||
.paletteTag = 0,
|
||||
.oam = &sUnknown_0858D8C0,
|
||||
.oam = &sOamData_WirelessIndicatorWindow,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sUnknown_0858D8E0 =
|
||||
static const struct SpriteSheet sSpriteSheet_WirelessIndicatorWindow =
|
||||
{
|
||||
.data = gMiscBlank_Gfx,
|
||||
.size = 0x200,
|
||||
.tag = 22222
|
||||
.tag = TAG_WIRELESS_INDICATOR_WINDOW
|
||||
};
|
||||
|
||||
static const u8 sContestLinkTextColors[4] = {TEXT_COLOR_WHITE, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5};
|
||||
@@ -430,12 +448,12 @@ static void LoadContestResultsBgGfx(void)
|
||||
u16 tile1, tile2;
|
||||
|
||||
LZDecompressVram(gContestResults_Gfx, (void *)BG_CHAR_ADDR(0));
|
||||
CopyToBgTilemapBuffer(3, gUnknown_08C1A12C, 0, 0);
|
||||
CopyToBgTilemapBuffer(2, gUnknown_08C1A000, 0, 0);
|
||||
CopyToBgTilemapBuffer(0, gUnknown_08C19EEC, 0, 0);
|
||||
LoadContestResultsTilemaps();
|
||||
CopyToBgTilemapBuffer(3, gContestResults_Bg_Tilemap, 0, 0);
|
||||
CopyToBgTilemapBuffer(2, gContestResults_Interface_Tilemap, 0, 0);
|
||||
CopyToBgTilemapBuffer(0, gContestResults_WinnerBanner_Tilemap, 0, 0);
|
||||
LoadContestResultsTitleBarTilemaps();
|
||||
LoadCompressedPalette(gContestResults_Pal, 0, 0x200);
|
||||
LoadPalette(sUnknown_0858D6B0, 0xF0, 0x20);
|
||||
LoadPalette(sResultsTextWindow_Pal, 0xF0, sizeof(sResultsTextWindow_Pal));
|
||||
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
@@ -479,7 +497,7 @@ static void LoadContestMonName(u8 monIndex)
|
||||
struct ContestPokemon *mon = &gContestMons[monIndex];
|
||||
u8 *str = gDisplayedStringBattle;
|
||||
if (monIndex == gContestPlayerMonIndex)
|
||||
str = StringCopy(gDisplayedStringBattle, gText_ColorDarkGrey);
|
||||
str = StringCopy(gDisplayedStringBattle, gText_ColorDarkGray);
|
||||
|
||||
StringCopy(str, mon->nickname);
|
||||
AddContestTextPrinter(monIndex, gDisplayedStringBattle, 0);
|
||||
@@ -515,14 +533,14 @@ static void CB2_StartShowContestResults(void)
|
||||
LoadAllContestMonNames();
|
||||
memset(sContestResults->data, 0, sizeof(*sContestResults->data));
|
||||
memset(sContestResults->monResults, 0, sizeof(*sContestResults->monResults));
|
||||
LoadContestResultSprites();
|
||||
CreateResultsTextWindowSprites();
|
||||
TryCreateWirelessSprites();
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
|
||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||
sContestResults->data->showResultsTaskId = CreateTask(Task_ShowContestResults, 5);
|
||||
SetMainCallback2(CB2_ShowContestResults);
|
||||
gBattle_WIN1H = WIN_RANGE(0, DISPLAY_WIDTH);
|
||||
gBattle_WIN1V = WIN_RANGE(128, DISPLAY_HEIGHT);
|
||||
gBattle_WIN1V = WIN_RANGE(DISPLAY_HEIGHT - 32, DISPLAY_HEIGHT);
|
||||
CreateTask(Task_SlideContestResultsBg, 20);
|
||||
CalculateContestantsResultData();
|
||||
if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
|
||||
@@ -587,10 +605,10 @@ static void Task_ShowContestResults(u8 taskId)
|
||||
}
|
||||
|
||||
TryGainNewFanFromCounter(FANCOUNTER_FINISHED_CONTEST);
|
||||
sub_80DEDA8(gSpecialVar_ContestRank);
|
||||
sub_80DEDA8(0xFE);
|
||||
gUnknown_02039F5C = TRUE;
|
||||
gUnknown_02039F5D = sub_80DEFA8(0xFE, 0);
|
||||
SaveContestWinner(gSpecialVar_ContestRank); // Save for lobby painting
|
||||
SaveContestWinner(CONTEST_SAVE_FOR_ARTIST);
|
||||
gCurContestWinnerIsForArtist = TRUE;
|
||||
gCurContestWinnerSaveIdx = GetContestWinnerSaveIdx(CONTEST_SAVE_FOR_ARTIST, FALSE);
|
||||
var = VarGet(VAR_CONTEST_HALL_STATE);
|
||||
VarSet(VAR_CONTEST_HALL_STATE, 0);
|
||||
SetContinueGameWarpStatusToDynamicWarp();
|
||||
@@ -637,10 +655,10 @@ static void Task_ShowContestResults(u8 taskId)
|
||||
if (gContestFinalStandings[gContestPlayerMonIndex] == 0)
|
||||
IncrementGameStat(GAME_STAT_WON_CONTEST);
|
||||
|
||||
sub_80DEDA8(gSpecialVar_ContestRank);
|
||||
sub_80DEDA8(0xFE);
|
||||
gUnknown_02039F5C = TRUE;
|
||||
gUnknown_02039F5D = sub_80DEFA8(0xFE, 0);
|
||||
SaveContestWinner(gSpecialVar_ContestRank); // Save for lobby painting
|
||||
SaveContestWinner(CONTEST_SAVE_FOR_ARTIST);
|
||||
gCurContestWinnerIsForArtist = TRUE;
|
||||
gCurContestWinnerSaveIdx = GetContestWinnerSaveIdx(CONTEST_SAVE_FOR_ARTIST, FALSE);
|
||||
TryGainNewFanFromCounter(FANCOUNTER_FINISHED_CONTEST);
|
||||
gTasks[taskId].func = Task_AnnouncePreliminaryResults;
|
||||
}
|
||||
@@ -679,7 +697,7 @@ static void Task_AnnouncePreliminaryResults(u8 taskId)
|
||||
{
|
||||
CreateTask(Task_FlashStarsAndHearts, 20);
|
||||
x = DrawResultsTextWindow(gText_AnnouncingResults, sContestResults->data->slidingTextBoxSpriteId);
|
||||
StartTextBoxSlideIn(x, DISPLAY_HEIGHT - 16, 120, 1088);
|
||||
StartTextBoxSlideIn(x, TEXT_BOX_Y, 120, 1088);
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
else if (gTasks[taskId].tState == 1)
|
||||
@@ -702,7 +720,7 @@ static void Task_AnnouncePreliminaryResults(u8 taskId)
|
||||
else if (gTasks[taskId].tState == 3)
|
||||
{
|
||||
x = DrawResultsTextWindow(gText_PreliminaryResults, sContestResults->data->slidingTextBoxSpriteId);
|
||||
StartTextBoxSlideIn(x, DISPLAY_HEIGHT - 16, -1, 1088);
|
||||
StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
else if (gTasks[taskId].tState == 4)
|
||||
@@ -752,7 +770,7 @@ static void Task_AnnounceRound2Results(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].tTimer = 0;
|
||||
x = DrawResultsTextWindow(gText_Round2Results, sContestResults->data->slidingTextBoxSpriteId);
|
||||
StartTextBoxSlideIn(x, DISPLAY_HEIGHT - 16, -1, 1088);
|
||||
StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
|
||||
}
|
||||
}
|
||||
else if (sContestResults->data->slidingTextBoxState == SLIDING_TEXT_ARRIVED)
|
||||
@@ -837,11 +855,11 @@ static void Task_AnnounceWinner(u8 taskId)
|
||||
gTasks[taskId].tTimer = 0;
|
||||
GET_CONTEST_WINNER_ID(i);
|
||||
StringCopy(gStringVar1, gContestMons[i].trainerName);
|
||||
sub_81DB5AC(gStringVar1);
|
||||
ConvertInternationalContestantName(gStringVar1);
|
||||
StringCopy(gStringVar2, gContestMons[i].nickname);
|
||||
StringExpandPlaceholders(winnerTextBuffer, gText_ContestantsMonWon);
|
||||
x = DrawResultsTextWindow(winnerTextBuffer, sContestResults->data->slidingTextBoxSpriteId);
|
||||
StartTextBoxSlideIn(x, DISPLAY_HEIGHT - 16, -1, 1088);
|
||||
StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
@@ -892,7 +910,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
|
||||
LoadCompressedSpritePalette(pokePal);
|
||||
SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT);
|
||||
gMultiuseSpriteTemplate.paletteTag = pokePal->tag;
|
||||
spriteId = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH + 32, 80, 10);
|
||||
spriteId = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH + 32, DISPLAY_HEIGHT / 2, 10);
|
||||
gSprites[spriteId].data[1] = species;
|
||||
gSprites[spriteId].oam.priority = 0;
|
||||
gSprites[spriteId].callback = SpriteCB_WinnerMonSlideIn;
|
||||
@@ -1136,9 +1154,9 @@ static void TryCreateWirelessSprites(void)
|
||||
LoadWirelessStatusIndicatorSpriteGfx();
|
||||
CreateWirelessStatusIndicatorSprite(8, 8);
|
||||
gSprites[gWirelessStatusIndicatorSpriteId].subpriority = 1;
|
||||
sheet = LoadSpriteSheet(&sUnknown_0858D8E0);
|
||||
sheet = LoadSpriteSheet(&sSpriteSheet_WirelessIndicatorWindow);
|
||||
RequestDma3Fill(0xFFFFFFFF, (void *)BG_CHAR_ADDR(4) + sheet * 0x20, 0x80, 1);
|
||||
spriteId = CreateSprite(&sSpriteTemplate_858D8C8, 8, 8, 0);
|
||||
spriteId = CreateSprite(&sSpriteTemplate_WirelessIndicatorWindow, 8, 8, 0);
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW;
|
||||
}
|
||||
}
|
||||
@@ -1150,14 +1168,13 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
|
||||
int strWidth;
|
||||
u8 *spriteTilePtrs[4];
|
||||
u8 *dst;
|
||||
{
|
||||
struct WindowTemplate windowTemplate;
|
||||
memset(&windowTemplate, 0, sizeof(windowTemplate));
|
||||
windowTemplate.width = 30;
|
||||
windowTemplate.height = 2;
|
||||
windowId = AddWindow(&windowTemplate);
|
||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
||||
}
|
||||
|
||||
struct WindowTemplate windowTemplate;
|
||||
memset(&windowTemplate, 0, sizeof(windowTemplate));
|
||||
windowTemplate.width = 30;
|
||||
windowTemplate.height = 2;
|
||||
windowId = AddWindow(&windowTemplate);
|
||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
||||
|
||||
origWidth = GetStringWidth(1, text, 0);
|
||||
strWidth = (origWidth + 9) / 8;
|
||||
@@ -1169,16 +1186,16 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
|
||||
s32 i;
|
||||
struct Sprite *sprite;
|
||||
const u8 *src, *windowTilesPtr;
|
||||
windowTilesPtr = (u8 *)(GetWindowAttribute(windowId, WINDOW_TILE_DATA));
|
||||
src = (u8 *)(sUnknown_0858D6D0);
|
||||
windowTilesPtr = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
|
||||
src = (u8 *)sResultsTextWindow_Gfx;
|
||||
|
||||
sprite = &gSprites[spriteId];
|
||||
spriteTilePtrs[0] = (u8 *)(sprite->oam.tileNum * 32 + OBJ_VRAM0);
|
||||
|
||||
for (i = 1; i < 4; i++)
|
||||
for (i = 1; i < (int)ARRAY_COUNT(spriteTilePtrs); i++)
|
||||
spriteTilePtrs[i] = (void*)(gSprites[sprite->data[i - 1]].oam.tileNum * 32 + OBJ_VRAM0);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < (int)ARRAY_COUNT(spriteTilePtrs); i++)
|
||||
CpuFill32(0, spriteTilePtrs[i], 0x400);
|
||||
|
||||
dst = spriteTilePtrs[0];
|
||||
@@ -1208,27 +1225,31 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
|
||||
return (DISPLAY_WIDTH - (strWidth + 2) * 8) / 2;
|
||||
}
|
||||
|
||||
static void LoadContestResultSprites(void)
|
||||
static void CreateResultsTextWindowSprites(void)
|
||||
{
|
||||
int i;
|
||||
struct SpriteTemplate template;
|
||||
u8 spriteIds[ARRAY_COUNT(sUnknown_0858D810)];
|
||||
u8 spriteIds[ARRAY_COUNT(sSpriteSheets_ResultsTextWindow)];
|
||||
|
||||
template = sSpriteTemplate_858D7F8;
|
||||
for (i = 0; i < (int)ARRAY_COUNT(sUnknown_0858D810); i++)
|
||||
LoadSpriteSheet(&sUnknown_0858D810[i]);
|
||||
template = sSpriteTemplate_ResultsTextWindow;
|
||||
for (i = 0; i < (int)ARRAY_COUNT(sSpriteSheets_ResultsTextWindow); i++)
|
||||
LoadSpriteSheet(&sSpriteSheets_ResultsTextWindow[i]);
|
||||
|
||||
LoadSpritePalette(&sUnknown_0858D850);
|
||||
for (i = 0; i < (int)ARRAY_COUNT(sUnknown_0858D810); i++)
|
||||
LoadSpritePalette(&sSpritePalette_ResultsTextWindow);
|
||||
|
||||
// Create sprites for the two window types, each made up of 4 sprites
|
||||
for (i = 0; i < (int)ARRAY_COUNT(sSpriteSheets_ResultsTextWindow); i++)
|
||||
{
|
||||
spriteIds[i] = CreateSprite(&template, DISPLAY_WIDTH + 32, DISPLAY_HEIGHT - 16, 10);
|
||||
spriteIds[i] = CreateSprite(&template, TEXT_BOX_X, TEXT_BOX_Y, 10);
|
||||
template.tileTag++;
|
||||
}
|
||||
|
||||
// Save sprite ids of the sliding text box onto its leftmost sprite
|
||||
gSprites[spriteIds[0]].data[0] = spriteIds[1];
|
||||
gSprites[spriteIds[0]].data[1] = spriteIds[2];
|
||||
gSprites[spriteIds[0]].data[2] = spriteIds[3];
|
||||
|
||||
// Save sprite ids of the link text box onto its leftmost sprite
|
||||
gSprites[spriteIds[4]].data[0] = spriteIds[5];
|
||||
gSprites[spriteIds[4]].data[1] = spriteIds[6];
|
||||
gSprites[spriteIds[4]].data[2] = spriteIds[7];
|
||||
@@ -1248,10 +1269,10 @@ static void LoadContestResultSprites(void)
|
||||
static void StartTextBoxSlideIn(s16 x, u16 y, u16 slideOutTimer, u16 slideIncrement)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[sContestResults->data->slidingTextBoxSpriteId];
|
||||
sprite->pos1.x = DISPLAY_WIDTH + 32;
|
||||
sprite->pos1.y = y;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x = TEXT_BOX_X;
|
||||
sprite->y = y;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->sTargetX = x + 32;
|
||||
sprite->sSlideOutTimer = slideOutTimer;
|
||||
sprite->sSlideIncrement = slideIncrement;
|
||||
@@ -1263,10 +1284,10 @@ static void StartTextBoxSlideIn(s16 x, u16 y, u16 slideOutTimer, u16 slideIncrem
|
||||
static void StartTextBoxSlideOut(u16 slideIncrement)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[sContestResults->data->slidingTextBoxSpriteId];
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->sSlideIncrement = slideIncrement;
|
||||
sprite->sDistance = 0;
|
||||
sprite->callback = SpriteCB_TextBoxSlideOut;
|
||||
@@ -1275,10 +1296,10 @@ static void StartTextBoxSlideOut(u16 slideIncrement)
|
||||
|
||||
static void EndTextBoxSlideOut(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = DISPLAY_WIDTH + 32;
|
||||
sprite->pos1.y = DISPLAY_HEIGHT - 16;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x = TEXT_BOX_X;
|
||||
sprite->y = TEXT_BOX_Y;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
sContestResults->data->slidingTextBoxState = SLIDING_TEXT_OFFSCREEN;
|
||||
}
|
||||
@@ -1288,21 +1309,21 @@ static void SpriteCB_TextBoxSlideIn(struct Sprite *sprite)
|
||||
int i;
|
||||
|
||||
s16 delta = sprite->sDistance + sprite->sSlideIncrement;
|
||||
sprite->pos1.x -= delta >> 8;
|
||||
sprite->x -= delta >> 8;
|
||||
sprite->sDistance += sprite->sSlideIncrement;
|
||||
sprite->sDistance &= 0xFF;
|
||||
|
||||
// Prevent overshooting target
|
||||
if (sprite->pos1.x < sprite->sTargetX)
|
||||
sprite->pos1.x = sprite->sTargetX;
|
||||
if (sprite->x < sprite->sTargetX)
|
||||
sprite->x = sprite->sTargetX;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
|
||||
sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
|
||||
sprite2->x = sprite->x + sprite->x2 + (i + 1) * 64;
|
||||
}
|
||||
|
||||
if (sprite->pos1.x == sprite->sTargetX)
|
||||
if (sprite->x == sprite->sTargetX)
|
||||
sprite->callback = SpriteCB_EndTextBoxSlideIn;
|
||||
}
|
||||
|
||||
@@ -1322,16 +1343,16 @@ static void SpriteCB_TextBoxSlideOut(struct Sprite *sprite)
|
||||
s16 delta;
|
||||
|
||||
delta = sprite->sDistance + sprite->sSlideIncrement;
|
||||
sprite->pos1.x -= delta >> 8;
|
||||
sprite->x -= delta >> 8;
|
||||
sprite->sDistance += sprite->sSlideIncrement;
|
||||
sprite->sDistance &= 0xFF;
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
|
||||
sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
|
||||
sprite2->x = sprite->x + sprite->x2 + (i + 1) * 64;
|
||||
}
|
||||
|
||||
if (sprite->pos1.x + sprite->pos2.x < -224)
|
||||
if (sprite->x + sprite->x2 < -224)
|
||||
EndTextBoxSlideOut(sprite);
|
||||
}
|
||||
|
||||
@@ -1343,18 +1364,18 @@ static void ShowLinkResultsTextBox(const u8 *text)
|
||||
|
||||
x = DrawResultsTextWindow(text, sContestResults->data->linkTextBoxSpriteId);
|
||||
sprite = &gSprites[sContestResults->data->linkTextBoxSpriteId];
|
||||
sprite->pos1.x = x + 32;
|
||||
sprite->pos1.y = 80;
|
||||
sprite->x = x + 32;
|
||||
sprite->y = 80;
|
||||
sprite->invisible = FALSE;
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
gSprites[sprite->data[i]].pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
|
||||
gSprites[sprite->data[i]].pos1.y = sprite->pos1.y;
|
||||
gSprites[sprite->data[i]].x = sprite->x + sprite->x2 + (i + 1) * 64;
|
||||
gSprites[sprite->data[i]].y = sprite->y;
|
||||
gSprites[sprite->data[i]].invisible = FALSE;
|
||||
}
|
||||
|
||||
gBattle_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH);
|
||||
gBattle_WIN0V = WIN_RANGE(sprite->pos1.y - 16, sprite->pos1.y + 16);
|
||||
gBattle_WIN0V = WIN_RANGE(sprite->y - 16, sprite->y + 16);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR
|
||||
| WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR);
|
||||
}
|
||||
@@ -1377,7 +1398,7 @@ static void HideLinkResultsTextBox(void)
|
||||
| WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
|
||||
}
|
||||
|
||||
static void LoadContestResultsTilemaps(void)
|
||||
static void LoadContestResultsTitleBarTilemaps(void)
|
||||
{
|
||||
u8 palette;
|
||||
int x, y;
|
||||
@@ -1386,58 +1407,58 @@ static void LoadContestResultsTilemaps(void)
|
||||
y = 1;
|
||||
if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
|
||||
{
|
||||
CopyToBgTilemapBufferRect(2, gLinkContestResults_Tilemap, 5, 1, 5, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Link_Tilemap, 5, 1, 5, 2);
|
||||
x = 10;
|
||||
}
|
||||
else if (gSpecialVar_ContestRank == CONTEST_RANK_NORMAL)
|
||||
{
|
||||
CopyToBgTilemapBufferRect(2, gNormalContestResults_Tilemap, 5, 1, 10, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Normal_Tilemap, 5, 1, 10, 2);
|
||||
x = 15;
|
||||
}
|
||||
else if (gSpecialVar_ContestRank == CONTEST_RANK_SUPER)
|
||||
{
|
||||
CopyToBgTilemapBufferRect(2, gSuperContestResults_Tilemap, 5, 1, 10, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Super_Tilemap, 5, 1, 10, 2);
|
||||
x = 15;
|
||||
}
|
||||
else if (gSpecialVar_ContestRank == CONTEST_RANK_HYPER)
|
||||
{
|
||||
CopyToBgTilemapBufferRect(2, gHyperContestResults_Tilemap, 5, 1, 10, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Hyper_Tilemap, 5, 1, 10, 2);
|
||||
x = 15;
|
||||
}
|
||||
else // CONTEST_RANK_MASTER
|
||||
{
|
||||
CopyToBgTilemapBufferRect(2, gMasterContestResults_Tilemap, 5, 1, 10, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Master_Tilemap, 5, 1, 10, 2);
|
||||
x = 15;
|
||||
}
|
||||
|
||||
if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_COOL)
|
||||
{
|
||||
palette = 0;
|
||||
CopyToBgTilemapBufferRect(2, gCoolContestResults_Tilemap, x, y, 5, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Cool_Tilemap, x, y, 5, 2);
|
||||
}
|
||||
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_BEAUTY)
|
||||
{
|
||||
palette = 1;
|
||||
CopyToBgTilemapBufferRect(2, gBeautyContestResults_Tilemap, x, y, 5, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Beauty_Tilemap, x, y, 5, 2);
|
||||
}
|
||||
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_CUTE)
|
||||
{
|
||||
palette = 2;
|
||||
CopyToBgTilemapBufferRect(2, gCuteContestResults_Tilemap, x, y, 5, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Cute_Tilemap, x, y, 5, 2);
|
||||
}
|
||||
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_SMART)
|
||||
{
|
||||
palette = 3;
|
||||
CopyToBgTilemapBufferRect(2, gSmartContestResults_Tilemap, x, y, 5, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Smart_Tilemap, x, y, 5, 2);
|
||||
}
|
||||
else // CONTEST_CATEGORY_TOUGH
|
||||
{
|
||||
palette = 4;
|
||||
CopyToBgTilemapBufferRect(2, gToughContestResults_Tilemap, x, y, 5, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Tough_Tilemap, x, y, 5, 2);
|
||||
}
|
||||
|
||||
x += 5;
|
||||
CopyToBgTilemapBufferRect(2, gContestResults_Tilemap, x, y, 6, 2);
|
||||
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Tilemap, x, y, 6, 2);
|
||||
CopyToBgTilemapBufferRect_ChangePalette(2, sContestResults->tilemapBuffers[2], 0, 0, 32, 4, palette);
|
||||
}
|
||||
|
||||
@@ -1564,13 +1585,13 @@ static void SpriteCB_WinnerMonSlideIn(struct Sprite *sprite)
|
||||
else
|
||||
{
|
||||
s16 delta = sprite->data[1] + 0x600;
|
||||
sprite->pos1.x -= delta >> 8;
|
||||
sprite->x -= delta >> 8;
|
||||
sprite->data[1] += 0x600;
|
||||
sprite->data[1] &= 0xFF;
|
||||
if (sprite->pos1.x < 120)
|
||||
sprite->pos1.x = 120;
|
||||
if (sprite->x < DISPLAY_WIDTH / 2)
|
||||
sprite->x = DISPLAY_WIDTH / 2;
|
||||
|
||||
if (sprite->pos1.x == 120)
|
||||
if (sprite->x == DISPLAY_WIDTH / 2)
|
||||
{
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
sprite->data[1] = 0;
|
||||
@@ -1582,10 +1603,10 @@ static void SpriteCB_WinnerMonSlideIn(struct Sprite *sprite)
|
||||
static void SpriteCB_WinnerMonSlideOut(struct Sprite *sprite)
|
||||
{
|
||||
s16 delta = sprite->data[1] + 0x600;
|
||||
sprite->pos1.x -= delta >> 8;
|
||||
sprite->x -= delta >> 8;
|
||||
sprite->data[1] += + 0x600;
|
||||
sprite->data[1] &= 0xFF;
|
||||
if (sprite->pos1.x < -32)
|
||||
if (sprite->x < -32)
|
||||
{
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
sprite->invisible = TRUE;
|
||||
@@ -1618,17 +1639,17 @@ static void SpriteCB_Confetti(struct Sprite *sprite)
|
||||
s16 delta;
|
||||
|
||||
sprite->data[3] += sprite->data[0];
|
||||
sprite->pos2.x = Sin(sprite->data[3] >> 8, sprite->data[1]);
|
||||
sprite->x2 = Sin(sprite->data[3] >> 8, sprite->data[1]);
|
||||
delta = sprite->data[4] + sprite->data[2];
|
||||
sprite->pos1.x += delta >> 8;
|
||||
sprite->x += delta >> 8;
|
||||
sprite->data[4] += sprite->data[2];
|
||||
sprite->data[4] &= 0xff;
|
||||
|
||||
sprite->pos1.y++;
|
||||
sprite->y++;
|
||||
if (sContestResults->data->destroyConfetti)
|
||||
sprite->invisible = TRUE;
|
||||
|
||||
if (sprite->pos1.x > 248 || sprite->pos1.y > 116)
|
||||
if (sprite->x > DISPLAY_WIDTH + 8 || sprite->y > 116)
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
sContestResults->data->confettiCount--;
|
||||
@@ -2035,7 +2056,7 @@ void GiveMonContestRibbon(void)
|
||||
void BufferContestantTrainerName(void)
|
||||
{
|
||||
StringCopy(gStringVar1, gContestMons[gSpecialVar_0x8006].trainerName);
|
||||
sub_81DB5AC(gStringVar1);
|
||||
ConvertInternationalContestantName(gStringVar1);
|
||||
}
|
||||
|
||||
void BufferContestantMonNickname(void)
|
||||
@@ -2074,7 +2095,7 @@ void BufferContestWinnerTrainerName(void)
|
||||
u8 i;
|
||||
GET_CONTEST_WINNER_ID(i);
|
||||
StringCopy(gStringVar3, gContestMons[i].trainerName);
|
||||
sub_81DB5AC(gStringVar3);
|
||||
ConvertInternationalContestantName(gStringVar3);
|
||||
}
|
||||
|
||||
void BufferContestWinnerMonName(void)
|
||||
@@ -2257,6 +2278,10 @@ static void Task_LinkContest_WaitDisconnect(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
A section of contest script functions starts here
|
||||
*/
|
||||
|
||||
void SetContestTrainerGfxIds(void)
|
||||
{
|
||||
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId;
|
||||
@@ -2265,27 +2290,27 @@ void SetContestTrainerGfxIds(void)
|
||||
}
|
||||
|
||||
// Unused
|
||||
void sub_80F8814(void)
|
||||
void GetNpcContestantLocalId(void)
|
||||
{
|
||||
u16 var1;
|
||||
u8 var0 = gSpecialVar_0x8005;
|
||||
switch (var0)
|
||||
u16 localId;
|
||||
u8 contestant = gSpecialVar_0x8005;
|
||||
switch (contestant)
|
||||
{
|
||||
case 0:
|
||||
var1 = 3;
|
||||
localId = 3;
|
||||
break;
|
||||
case 1:
|
||||
var1 = 4;
|
||||
localId = 4;
|
||||
break;
|
||||
case 2:
|
||||
var1 = 5;
|
||||
localId = 5;
|
||||
break;
|
||||
default:
|
||||
var1 = 100;
|
||||
default: // Invalid
|
||||
localId = 100;
|
||||
break;
|
||||
}
|
||||
|
||||
gSpecialVar_0x8004 = var1;
|
||||
gSpecialVar_0x8004 = localId;
|
||||
}
|
||||
|
||||
void BufferContestTrainerAndMonNames(void)
|
||||
@@ -2296,26 +2321,26 @@ void BufferContestTrainerAndMonNames(void)
|
||||
}
|
||||
|
||||
// Unused
|
||||
void DoesContestCategoryHaveWinner(void)
|
||||
void DoesContestCategoryHaveMuseumPainting(void)
|
||||
{
|
||||
int contestWinner;
|
||||
switch (gSpecialVar_ContestCategory)
|
||||
{
|
||||
case CONTEST_CATEGORY_COOL:
|
||||
contestWinner = 8;
|
||||
contestWinner = CONTEST_WINNER_MUSEUM_COOL - 1;
|
||||
break;
|
||||
case CONTEST_CATEGORY_BEAUTY:
|
||||
contestWinner = 9;
|
||||
contestWinner = CONTEST_WINNER_MUSEUM_BEAUTY - 1;
|
||||
break;
|
||||
case CONTEST_CATEGORY_CUTE:
|
||||
contestWinner = 10;
|
||||
contestWinner = CONTEST_WINNER_MUSEUM_CUTE - 1;
|
||||
break;
|
||||
case CONTEST_CATEGORY_SMART:
|
||||
contestWinner = 11;
|
||||
contestWinner = CONTEST_WINNER_MUSEUM_SMART - 1;
|
||||
break;
|
||||
case CONTEST_CATEGORY_TOUGH:
|
||||
default:
|
||||
contestWinner = 12;
|
||||
contestWinner = CONTEST_WINNER_MUSEUM_TOUGH - 1;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2327,7 +2352,7 @@ void DoesContestCategoryHaveWinner(void)
|
||||
|
||||
void SaveMuseumContestPainting(void)
|
||||
{
|
||||
sub_80DEDA8(0xFF);
|
||||
SaveContestWinner(CONTEST_SAVE_FOR_MUSEUM);
|
||||
}
|
||||
|
||||
void ShouldReadyContestArtist(void)
|
||||
@@ -2344,14 +2369,14 @@ void ShouldReadyContestArtist(void)
|
||||
}
|
||||
}
|
||||
|
||||
u8 CountPlayerContestPaintings(void)
|
||||
u8 CountPlayerMuseumPaintings(void)
|
||||
{
|
||||
int i;
|
||||
u8 count = 0;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
for (i = 0; i < NUM_CONTEST_WINNERS - MUSEUM_CONTEST_WINNERS_START; i++)
|
||||
{
|
||||
if (gSaveBlock1Ptr->contestWinners[8 + i].species)
|
||||
if (gSaveBlock1Ptr->contestWinners[MUSEUM_CONTEST_WINNERS_START + i].species)
|
||||
count++;
|
||||
}
|
||||
|
||||
@@ -2359,19 +2384,21 @@ u8 CountPlayerContestPaintings(void)
|
||||
}
|
||||
|
||||
// Unused
|
||||
void sub_80F8970(void)
|
||||
void GetContestantNamesAtRank(void)
|
||||
{
|
||||
s16 conditions[CONTESTANT_COUNT];
|
||||
int i, j;
|
||||
s16 condition;
|
||||
s8 var0;
|
||||
u8 var2;
|
||||
u8 r8;
|
||||
u8 r7;
|
||||
s8 numAtCondition;
|
||||
u8 contestantOffset;
|
||||
u8 tieRank;
|
||||
u8 rank;
|
||||
|
||||
// Get round 1 points
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
conditions[i] = gContestMonRound1Points[i];
|
||||
|
||||
// Sort round 1 points
|
||||
for (i = 0; i < CONTESTANT_COUNT - 1; i++)
|
||||
{
|
||||
for (j = CONTESTANT_COUNT - 1; j > i; j--)
|
||||
@@ -2384,58 +2411,65 @@ void sub_80F8970(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Get round 1 points at specified rank
|
||||
condition = conditions[gSpecialVar_0x8006];
|
||||
var0 = 0;
|
||||
r8 = 0;
|
||||
|
||||
// Count number of contestants with the same number of points
|
||||
numAtCondition = 0;
|
||||
tieRank = 0;
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (conditions[i] == condition)
|
||||
{
|
||||
var0++;
|
||||
numAtCondition++;
|
||||
if (i == gSpecialVar_0x8006)
|
||||
r8 = var0;
|
||||
tieRank = numAtCondition;
|
||||
}
|
||||
}
|
||||
|
||||
// Get rank of first contestant with the same number of points
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (conditions[i] == condition)
|
||||
break;
|
||||
}
|
||||
rank = i;
|
||||
|
||||
r7 = i;
|
||||
var2 = r8;
|
||||
// Get contestant id of player at rank (taking ties into account)
|
||||
contestantOffset = tieRank;
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (condition == gContestMonRound1Points[i])
|
||||
{
|
||||
if (var2 == 1)
|
||||
if (contestantOffset == 1)
|
||||
break;
|
||||
var2--;
|
||||
contestantOffset--;
|
||||
}
|
||||
}
|
||||
|
||||
// Use contestant id to get names
|
||||
StringCopy(gStringVar1, gContestMons[i].nickname);
|
||||
StringCopy(gStringVar2, gContestMons[i].trainerName);
|
||||
sub_81DB5AC(gStringVar2);
|
||||
ConvertInternationalContestantName(gStringVar2);
|
||||
|
||||
if (var0 == 1)
|
||||
gSpecialVar_0x8006 = r7;
|
||||
else if (r8 == var0)
|
||||
gSpecialVar_0x8006 = r7;
|
||||
// Return adjusted rank
|
||||
if (numAtCondition == 1)
|
||||
gSpecialVar_0x8006 = rank;
|
||||
else if (tieRank == numAtCondition)
|
||||
gSpecialVar_0x8006 = rank;
|
||||
else
|
||||
gSpecialVar_0x8006 = r7 + 4;
|
||||
gSpecialVar_0x8006 = rank + CONTESTANT_COUNT;
|
||||
}
|
||||
|
||||
static void ExitContestWinnerPainting(void)
|
||||
static void ExitContestPainting(void)
|
||||
{
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
void ShowContestWinnerPainting(void)
|
||||
void ShowContestPainting(void)
|
||||
{
|
||||
SetMainCallback2(CB2_ContestPainting);
|
||||
gMain.savedCallback = ExitContestWinnerPainting;
|
||||
gMain.savedCallback = ExitContestPainting;
|
||||
}
|
||||
|
||||
void SetLinkContestPlayerGfx(void)
|
||||
|
||||
+41
-41
@@ -1103,10 +1103,10 @@ static void SetBikeScene(u8 scene, u8 taskId)
|
||||
case SCENE_OCEAN_MORNING:
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = DISPLAY_WIDTH + 32;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = DISPLAY_WIDTH + 32;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].x = DISPLAY_WIDTH + 32;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].x = DISPLAY_WIDTH + 32;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
|
||||
gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8);
|
||||
@@ -1114,10 +1114,10 @@ static void SetBikeScene(u8 scene, u8 taskId)
|
||||
case SCENE_OCEAN_SUNSET:
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = 120;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = DISPLAY_WIDTH + 32;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].x = 120;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].x = DISPLAY_WIDTH + 32;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
|
||||
gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8);
|
||||
@@ -1125,10 +1125,10 @@ static void SetBikeScene(u8 scene, u8 taskId)
|
||||
case SCENE_FOREST_RIVAL_ARRIVE:
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = 120;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = DISPLAY_WIDTH + 32;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].x = 120;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].x = DISPLAY_WIDTH + 32;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
|
||||
gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8);
|
||||
@@ -1136,10 +1136,10 @@ static void SetBikeScene(u8 scene, u8 taskId)
|
||||
case SCENE_FOREST_CATCH_RIVAL:
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = 120;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = -32;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].x = 120;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].x = -32;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
|
||||
gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8);
|
||||
@@ -1147,10 +1147,10 @@ static void SetBikeScene(u8 scene, u8 taskId)
|
||||
case SCENE_CITY_NIGHT:
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.x = 88;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.x = 152;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].pos1.y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].x = 88;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].x = 152;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
|
||||
gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
|
||||
gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(2, 0x2000, 0x200, 8);
|
||||
@@ -1359,8 +1359,8 @@ static void SpriteCB_Player(struct Sprite *sprite)
|
||||
break;
|
||||
case 1:
|
||||
StartSpriteAnimIfDifferent(sprite, 1);
|
||||
if (sprite->pos1.x > -32)
|
||||
sprite->pos1.x--;
|
||||
if (sprite->x > -32)
|
||||
sprite->x--;
|
||||
break;
|
||||
case 2:
|
||||
StartSpriteAnimIfDifferent(sprite, 2);
|
||||
@@ -1370,13 +1370,13 @@ static void SpriteCB_Player(struct Sprite *sprite)
|
||||
break;
|
||||
case 4:
|
||||
StartSpriteAnimIfDifferent(sprite, 0);
|
||||
if (sprite->pos1.x > 120)
|
||||
sprite->pos1.x--;
|
||||
if (sprite->x > 120)
|
||||
sprite->x--;
|
||||
break;
|
||||
case 5:
|
||||
StartSpriteAnimIfDifferent(sprite, 0);
|
||||
if (sprite->pos1.x > -32)
|
||||
sprite->pos1.x--;
|
||||
if (sprite->x > -32)
|
||||
sprite->x--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1392,28 +1392,28 @@ static void SpriteCB_Rival(struct Sprite *sprite)
|
||||
switch (sprite->sState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
StartSpriteAnimIfDifferent(sprite, 0);
|
||||
break;
|
||||
case 1:
|
||||
if (sprite->pos1.x > 200)
|
||||
if (sprite->x > 200)
|
||||
StartSpriteAnimIfDifferent(sprite, 1);
|
||||
else
|
||||
StartSpriteAnimIfDifferent(sprite, 2);
|
||||
if (sprite->pos1.x > -32)
|
||||
sprite->pos1.x -= 2;
|
||||
sprite->pos2.y = -gIntroCredits_MovingSceneryVOffset;
|
||||
if (sprite->x > -32)
|
||||
sprite->x -= 2;
|
||||
sprite->y2 = -gIntroCredits_MovingSceneryVOffset;
|
||||
break;
|
||||
case 2:
|
||||
sprite->data[7]++;
|
||||
StartSpriteAnimIfDifferent(sprite, 0);
|
||||
if ((sprite->data[7] & 3) == 0)
|
||||
sprite->pos1.x++;
|
||||
sprite->x++;
|
||||
break;
|
||||
case 3:
|
||||
StartSpriteAnimIfDifferent(sprite, 0);
|
||||
if (sprite->pos1.x > -32)
|
||||
sprite->pos1.x--;
|
||||
if (sprite->x > -32)
|
||||
sprite->x--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1455,15 +1455,15 @@ static void SpriteCB_CreditsMon(struct Sprite *sprite)
|
||||
{
|
||||
case POS_LEFT + 1:
|
||||
if ((sprite->data[7] & 3) == 0)
|
||||
sprite->pos1.y++;
|
||||
sprite->pos1.x -= 2;
|
||||
sprite->y++;
|
||||
sprite->x -= 2;
|
||||
break;
|
||||
case POS_CENTER + 1:
|
||||
break;
|
||||
case POS_RIGHT + 1:
|
||||
if ((sprite->data[7] & 3) == 0)
|
||||
sprite->pos1.y++;
|
||||
sprite->pos1.x += 2;
|
||||
sprite->y++;
|
||||
sprite->x += 2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -1522,7 +1522,7 @@ static u8 CreateCreditsMonSprite(u16 nationalDexNum, s16 x, s16 y, u16 position)
|
||||
gSprites[monSpriteId].callback = SpriteCB_CreditsMon;
|
||||
gSprites[monSpriteId].sSpriteId = monSpriteId;
|
||||
|
||||
bgSpriteId = CreateSprite(&sSpriteTemplate_CreditsMonBg, gSprites[monSpriteId].pos1.x, gSprites[monSpriteId].pos1.y, 1);
|
||||
bgSpriteId = CreateSprite(&sSpriteTemplate_CreditsMonBg, gSprites[monSpriteId].x, gSprites[monSpriteId].y, 1);
|
||||
gSprites[bgSpriteId].sMonSpriteId = monSpriteId;
|
||||
|
||||
StartSpriteAnimIfDifferent(&gSprites[bgSpriteId], position);
|
||||
@@ -1544,8 +1544,8 @@ static void SpriteCB_CreditsMonBg(struct Sprite *sprite)
|
||||
sprite->oam.objMode = gSprites[sprite->sMonSpriteId].oam.objMode;
|
||||
sprite->oam.affineMode = gSprites[sprite->sMonSpriteId].oam.affineMode;
|
||||
sprite->oam.matrixNum = gSprites[sprite->sMonSpriteId].oam.matrixNum;
|
||||
sprite->pos1.x = gSprites[sprite->sMonSpriteId].pos1.x;
|
||||
sprite->pos1.y = gSprites[sprite->sMonSpriteId].pos1.y;
|
||||
sprite->x = gSprites[sprite->sMonSpriteId].x;
|
||||
sprite->y = gSprites[sprite->sMonSpriteId].y;
|
||||
}
|
||||
|
||||
static void DeterminePokemonToShow(void)
|
||||
|
||||
+85
-192
@@ -124,172 +124,178 @@ static const union AnimCmd sAnim_GeneralFrame3[] =
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF548[] =
|
||||
// Many of these affine anims seem to go unused, and
|
||||
// instead SetSpriteRotScale is used to manipulate
|
||||
// the battler sprites directly (for instance, in AnimTask_SwitchOutShrinkMon).
|
||||
// Those with explicit indexes are referenced elsewhere.
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_Normal[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0100, 0x0100, 0x00, 0x00),
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF558[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_Flipped[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xff00, 0x0100, 0x00, 0x00),
|
||||
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF568[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_Emerge[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0028, 0x0028, 0x00, 0x00),
|
||||
AFFINEANIMCMD_FRAME(0x0012, 0x0012, 0x00, 0x0c),
|
||||
AFFINEANIMCMD_FRAME(0x28, 0x28, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0x12, 0x12, 0, 12),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF580[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_Return[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xfffe, 0xfffe, 0x00, 0x12),
|
||||
AFFINEANIMCMD_FRAME(0xfff0, 0xfff0, 0x00, 0x0f),
|
||||
AFFINEANIMCMD_FRAME( -0x2, -0x2, 0, 18),
|
||||
AFFINEANIMCMD_FRAME(-0x10, -0x10, 0, 15),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF598[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_HorizontalSquishLoop[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x00a0, 0x0100, 0x00, 0x00),
|
||||
AFFINEANIMCMD_FRAME(0x0004, 0x0000, 0x00, 0x08),
|
||||
AFFINEANIMCMD_FRAME(0xfffc, 0x0000, 0x00, 0x08),
|
||||
AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME( 0x4, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(-0x4, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF5B8[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_Grow[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0002, 0x0002, 0x00, 0x14),
|
||||
AFFINEANIMCMD_FRAME(0x2, 0x2, 0, 20),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF5C8[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_Shrink[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xfffe, 0xfffe, 0x00, 0x14),
|
||||
AFFINEANIMCMD_FRAME(-0x2, -0x2, 0, 20),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF5D8[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_BigToSmall[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0100, 0x0100, 0x00, 0000),
|
||||
AFFINEANIMCMD_FRAME(0xfff0, 0xfff0, 0x00, 0x09),
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(-0x10, -0x10, 0, 9),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF5F0[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_GrowLarge[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0004, 0x0004, 0x00, 0x3f),
|
||||
AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 63),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF600[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_TipRight[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfd, 0x05),
|
||||
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x03, 0x05),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, -3, 5),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 3, 5),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AffineAnimCmd *const gAffineAnims_BattleSpritePlayerSide[] =
|
||||
{
|
||||
gUnknown_082FF548,
|
||||
gUnknown_082FF568,
|
||||
gUnknown_082FF580,
|
||||
gUnknown_082FF598,
|
||||
gUnknown_082FF5B8,
|
||||
gUnknown_082FF5C8,
|
||||
gUnknown_082FF5F0,
|
||||
gUnknown_082FF600,
|
||||
gUnknown_082FF5D8,
|
||||
[BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Normal,
|
||||
[BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
|
||||
[BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
|
||||
sAffineAnim_Battler_HorizontalSquishLoop,
|
||||
sAffineAnim_Battler_Grow,
|
||||
sAffineAnim_Battler_Shrink,
|
||||
sAffineAnim_Battler_GrowLarge,
|
||||
sAffineAnim_Battler_TipRight,
|
||||
sAffineAnim_Battler_BigToSmall,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF63C[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_SpinShrink[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xfffc, 0xfffc, 0x04, 0x3f),
|
||||
AFFINEANIMCMD_FRAME(-0x4, -0x4, 4, 63),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF64C[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_TipLeft[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x03, 0x05),
|
||||
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfd, 0x05),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 3, 5),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, -3, 5),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF664[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_RotateUpAndBack[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfb, 0x14),
|
||||
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x00, 0x14),
|
||||
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x05, 0x14),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, -5, 20),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 20),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gUnknown_082FF684[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Battler_Spin[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x09, 0x6e),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 9, 110),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[] =
|
||||
{
|
||||
gUnknown_082FF548,
|
||||
gUnknown_082FF568,
|
||||
gUnknown_082FF580,
|
||||
gUnknown_082FF598,
|
||||
gUnknown_082FF5B8,
|
||||
gUnknown_082FF5C8,
|
||||
gUnknown_082FF63C,
|
||||
gUnknown_082FF64C,
|
||||
gUnknown_082FF664,
|
||||
gUnknown_082FF5D8,
|
||||
gUnknown_082FF684,
|
||||
[BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Normal,
|
||||
[BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
|
||||
[BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
|
||||
sAffineAnim_Battler_HorizontalSquishLoop,
|
||||
sAffineAnim_Battler_Grow,
|
||||
sAffineAnim_Battler_Shrink,
|
||||
sAffineAnim_Battler_SpinShrink,
|
||||
sAffineAnim_Battler_TipLeft,
|
||||
sAffineAnim_Battler_RotateUpAndBack,
|
||||
sAffineAnim_Battler_BigToSmall,
|
||||
sAffineAnim_Battler_Spin,
|
||||
};
|
||||
|
||||
const union AffineAnimCmd *const gUnknown_082FF6C0[] =
|
||||
const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[] =
|
||||
{
|
||||
gUnknown_082FF558,
|
||||
gUnknown_082FF568,
|
||||
gUnknown_082FF580,
|
||||
gUnknown_082FF598,
|
||||
gUnknown_082FF5B8,
|
||||
gUnknown_082FF5C8,
|
||||
gUnknown_082FF63C,
|
||||
gUnknown_082FF64C,
|
||||
gUnknown_082FF664,
|
||||
gUnknown_082FF5D8,
|
||||
gUnknown_082FF684,
|
||||
[BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Flipped,
|
||||
[BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
|
||||
[BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
|
||||
sAffineAnim_Battler_HorizontalSquishLoop,
|
||||
sAffineAnim_Battler_Grow,
|
||||
sAffineAnim_Battler_Shrink,
|
||||
sAffineAnim_Battler_SpinShrink,
|
||||
sAffineAnim_Battler_TipLeft,
|
||||
sAffineAnim_Battler_RotateUpAndBack,
|
||||
sAffineAnim_Battler_BigToSmall,
|
||||
sAffineAnim_Battler_Spin,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_082FF6EC[] =
|
||||
|
||||
static const union AnimCmd sAnim_MonPic_0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 0),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_082FF6F4[] =
|
||||
static const union AnimCmd sAnim_MonPic_1[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 0),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_082FF6FC[] =
|
||||
static const union AnimCmd sAnim_MonPic_2[] =
|
||||
{
|
||||
ANIMCMD_FRAME(2, 0),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd gUnknown_082FF704[] =
|
||||
static const union AnimCmd sAnim_MonPic_3[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 0),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gUnknown_082FF70C[] =
|
||||
const union AnimCmd *const gAnims_MonPic[] =
|
||||
{
|
||||
gUnknown_082FF6EC,
|
||||
gUnknown_082FF6F4,
|
||||
gUnknown_082FF6FC,
|
||||
gUnknown_082FF704,
|
||||
sAnim_MonPic_0,
|
||||
sAnim_MonPic_1,
|
||||
sAnim_MonPic_2,
|
||||
sAnim_MonPic_3,
|
||||
};
|
||||
|
||||
#define SPECIES_SPRITE(species, sprite) [SPECIES_##species] = {sprite, MON_PIC_SIZE, SPECIES_##species}
|
||||
@@ -313,120 +319,7 @@ const union AnimCmd *const gUnknown_082FF70C[] =
|
||||
#include "data/pokemon_graphics/enemy_mon_elevation.h"
|
||||
#include "data/pokemon_graphics/front_pic_anims.h"
|
||||
#include "data/pokemon_graphics/front_pic_table.h"
|
||||
|
||||
static const u32 sUnused[] =
|
||||
{
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000088, 0x00000888, 0x00000888, 0x00000886,
|
||||
0x00000888, 0x00000886, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000886, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000886, 0x00000886,
|
||||
0x00000888, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000888, 0x00000886, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000886, 0x00000886,
|
||||
0x00000888, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000886, 0x00000886, 0x00000088,
|
||||
0x00000886, 0x00000886, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000886, 0x00000888, 0x00000088, 0x00000088,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000886,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000886,
|
||||
0x00000886, 0x00000886, 0x00000886, 0x00000886,
|
||||
0x00000886, 0x00000886, 0x00000888, 0x00000888,
|
||||
0x00000886, 0x00000886, 0x00000886, 0x00000886,
|
||||
0x00000886, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000886, 0x00000886, 0x00000888,
|
||||
0x00000886, 0x00000886, 0x00000888, 0x00000888,
|
||||
0x00000088, 0x00000088, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000886, 0x00000886, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000088, 0x00000886,
|
||||
0x00000888, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000888, 0x00000886, 0x00000888,
|
||||
0x00000088, 0x00000088, 0x00000886, 0x00000886,
|
||||
0x00000088, 0x00000088, 0x00000888, 0x00000886,
|
||||
0x00000886, 0x00000888, 0x00000888, 0x00000088,
|
||||
0x00000888, 0x00000886, 0x00000886, 0x00000888,
|
||||
0x00000886, 0x00000888, 0x00000888, 0x00000886,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000088, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000088, 0x00000888, 0x00000888, 0x00000886,
|
||||
0x00000886, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000886,
|
||||
0x00000888, 0x00000886, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000888, 0x00000088, 0x00000888,
|
||||
0x00000888, 0x00000088, 0x00000088, 0x00000888,
|
||||
0x00000886, 0x00000888, 0x00000886, 0x00000886,
|
||||
0x00000886, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000088, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000088, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000088, 0x00000088,
|
||||
0x00000886, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000088, 0x00000888,
|
||||
0x00000886, 0x00000888, 0x00000088, 0x00000088,
|
||||
0x00000888, 0x00000888, 0x00000088, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000088,
|
||||
0x00000888, 0x00000888, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000888, 0x00000088, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000886, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000886, 0x00000886, 0x00000886,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000886,
|
||||
0x00000088, 0x00000886, 0x00000886, 0x00000886,
|
||||
0x00000088, 0x00000886, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000886,
|
||||
0x00000886, 0x00000886, 0x00000888, 0x00000888,
|
||||
0x00000886, 0x00000886, 0x00000886, 0x00000886,
|
||||
0x00000088, 0x00000088, 0x00000886, 0x00000886,
|
||||
0x00001882, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000886, 0x00000886, 0x00000886,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000886, 0x00000088, 0x00000886, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000886, 0x00000886,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000886,
|
||||
0x00000886, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000886, 0x00000088,
|
||||
0x00000088, 0x00000886, 0x00000886, 0x00000886,
|
||||
0x00000886, 0x00000886, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000886,
|
||||
0x00000886, 0x00000886, 0x00000886, 0x00000088,
|
||||
0x00000886, 0x00000088, 0x00000886, 0x00000886,
|
||||
0x00000886, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000886, 0x00000886,
|
||||
0x00000886, 0x00000888, 0x00000886, 0x00000886,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000886, 0x00000886, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000088, 0x00000088, 0x00000088,
|
||||
0x00000088, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
0x00000888, 0x00000888, 0x00000888, 0x00000888,
|
||||
};
|
||||
#include "data/pokemon_graphics/unknown_table.h"
|
||||
|
||||
#include "data/trainer_parties.h"
|
||||
#include "data/text/trainer_class_names.h"
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
const struct ContestWinner gDefaultContestWinners[] =
|
||||
{
|
||||
{
|
||||
[CONTEST_WINNER_HALL_1 - 1] = {
|
||||
.personality = 0,
|
||||
.trainerId = 0xFFFF,
|
||||
.species = SPECIES_ELECTRIKE,
|
||||
@@ -147,7 +147,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
||||
.trainerName = _("EZRA"),
|
||||
.contestRank = CONTEST_RANK_NORMAL
|
||||
},
|
||||
{
|
||||
[CONTEST_WINNER_HALL_2 - 1] = {
|
||||
.personality = 0,
|
||||
.trainerId = 0xFFFF,
|
||||
.species = SPECIES_TROPIUS,
|
||||
@@ -156,7 +156,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
||||
.trainerName = _("ALLAN"),
|
||||
.contestRank = CONTEST_RANK_HYPER
|
||||
},
|
||||
{
|
||||
[CONTEST_WINNER_HALL_3 - 1] = {
|
||||
.personality = 0,
|
||||
.trainerId = 0xFFFF,
|
||||
.species = SPECIES_XATU,
|
||||
@@ -165,7 +165,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
||||
.trainerName = _("JULIET"),
|
||||
.contestRank = CONTEST_RANK_NORMAL
|
||||
},
|
||||
{
|
||||
[CONTEST_WINNER_HALL_4 - 1] = {
|
||||
.personality = 0,
|
||||
.trainerId = 0xFFFF,
|
||||
.species = SPECIES_PLUSLE,
|
||||
@@ -174,7 +174,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
||||
.trainerName = _("BAILY"),
|
||||
.contestRank = CONTEST_RANK_MASTER
|
||||
},
|
||||
{
|
||||
[CONTEST_WINNER_HALL_5 - 1] = {
|
||||
.personality = 0,
|
||||
.trainerId = 0xFFFF,
|
||||
.species = SPECIES_SHUPPET,
|
||||
@@ -183,7 +183,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
||||
.trainerName = _("MELANY"),
|
||||
.contestRank = CONTEST_RANK_SUPER
|
||||
},
|
||||
{
|
||||
[CONTEST_WINNER_HALL_6 - 1] = {
|
||||
.personality = 0,
|
||||
.trainerId = 0xFFFF,
|
||||
.species = SPECIES_ZANGOOSE,
|
||||
@@ -192,7 +192,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
||||
.trainerName = _("HANA"),
|
||||
.contestRank = CONTEST_RANK_HYPER
|
||||
},
|
||||
{
|
||||
[CONTEST_WINNER_HALL_UNUSED_1 - 1] = {
|
||||
.personality = 0,
|
||||
.trainerId = 0xFFFF,
|
||||
.species = SPECIES_LOUDRED,
|
||||
@@ -201,7 +201,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
||||
.trainerName = _("BRYANT"),
|
||||
.contestRank = CONTEST_RANK_HYPER
|
||||
},
|
||||
{
|
||||
[CONTEST_WINNER_HALL_UNUSED_2 - 1] = {
|
||||
.personality = 0,
|
||||
.trainerId = 0xFFFF,
|
||||
.species = SPECIES_DELCATTY,
|
||||
|
||||
@@ -0,0 +1,444 @@
|
||||
// Unknown and unused
|
||||
static const u32 sUnused[] =
|
||||
{
|
||||
[SPECIES_NONE] = 0x888,
|
||||
[SPECIES_BULBASAUR] = 0x888,
|
||||
[SPECIES_IVYSAUR] = 0x888,
|
||||
[SPECIES_VENUSAUR] = 0x888,
|
||||
[SPECIES_CHARMANDER] = 0x88,
|
||||
[SPECIES_CHARMELEON] = 0x888,
|
||||
[SPECIES_CHARIZARD] = 0x888,
|
||||
[SPECIES_SQUIRTLE] = 0x886,
|
||||
[SPECIES_WARTORTLE] = 0x888,
|
||||
[SPECIES_BLASTOISE] = 0x886,
|
||||
[SPECIES_CATERPIE] = 0x888,
|
||||
[SPECIES_METAPOD] = 0x888,
|
||||
[SPECIES_BUTTERFREE] = 0x888,
|
||||
[SPECIES_WEEDLE] = 0x888,
|
||||
[SPECIES_KAKUNA] = 0x888,
|
||||
[SPECIES_BEEDRILL] = 0x888,
|
||||
[SPECIES_PIDGEY] = 0x886,
|
||||
[SPECIES_PIDGEOTTO] = 0x888,
|
||||
[SPECIES_PIDGEOT] = 0x888,
|
||||
[SPECIES_RATTATA] = 0x888,
|
||||
[SPECIES_RATICATE] = 0x888,
|
||||
[SPECIES_SPEAROW] = 0x888,
|
||||
[SPECIES_FEAROW] = 0x886,
|
||||
[SPECIES_EKANS] = 0x886,
|
||||
[SPECIES_ARBOK] = 0x888,
|
||||
[SPECIES_PIKACHU] = 0x88,
|
||||
[SPECIES_RAICHU] = 0x88,
|
||||
[SPECIES_SANDSHREW] = 0x88,
|
||||
[SPECIES_SANDSLASH] = 0x88,
|
||||
[SPECIES_NIDORAN_F] = 0x888,
|
||||
[SPECIES_NIDORINA] = 0x886,
|
||||
[SPECIES_NIDOQUEEN] = 0x888,
|
||||
[SPECIES_NIDORAN_M] = 0x888,
|
||||
[SPECIES_NIDORINO] = 0x888,
|
||||
[SPECIES_NIDOKING] = 0x886,
|
||||
[SPECIES_CLEFAIRY] = 0x886,
|
||||
[SPECIES_CLEFABLE] = 0x888,
|
||||
[SPECIES_VULPIX] = 0x88,
|
||||
[SPECIES_NINETALES] = 0x88,
|
||||
[SPECIES_JIGGLYPUFF] = 0x88,
|
||||
[SPECIES_WIGGLYTUFF] = 0x88,
|
||||
[SPECIES_ZUBAT] = 0x886,
|
||||
[SPECIES_GOLBAT] = 0x886,
|
||||
[SPECIES_ODDISH] = 0x88,
|
||||
[SPECIES_GLOOM] = 0x886,
|
||||
[SPECIES_VILEPLUME] = 0x886,
|
||||
[SPECIES_PARAS] = 0x888,
|
||||
[SPECIES_PARASECT] = 0x888,
|
||||
[SPECIES_VENONAT] = 0x888,
|
||||
[SPECIES_VENOMOTH] = 0x888,
|
||||
[SPECIES_DIGLETT] = 0x888,
|
||||
[SPECIES_DUGTRIO] = 0x888,
|
||||
[SPECIES_MEOWTH] = 0x886,
|
||||
[SPECIES_PERSIAN] = 0x888,
|
||||
[SPECIES_PSYDUCK] = 0x88,
|
||||
[SPECIES_GOLDUCK] = 0x88,
|
||||
[SPECIES_MANKEY] = 0x888,
|
||||
[SPECIES_PRIMEAPE] = 0x888,
|
||||
[SPECIES_GROWLITHE] = 0x888,
|
||||
[SPECIES_ARCANINE] = 0x886,
|
||||
[SPECIES_POLIWAG] = 0x888,
|
||||
[SPECIES_POLIWHIRL] = 0x888,
|
||||
[SPECIES_POLIWRATH] = 0x888,
|
||||
[SPECIES_ABRA] = 0x886,
|
||||
[SPECIES_KADABRA] = 0x886,
|
||||
[SPECIES_ALAKAZAM] = 0x886,
|
||||
[SPECIES_MACHOP] = 0x886,
|
||||
[SPECIES_MACHOKE] = 0x886,
|
||||
[SPECIES_MACHAMP] = 0x886,
|
||||
[SPECIES_BELLSPROUT] = 0x886,
|
||||
[SPECIES_WEEPINBELL] = 0x888,
|
||||
[SPECIES_VICTREEBEL] = 0x888,
|
||||
[SPECIES_TENTACOOL] = 0x886,
|
||||
[SPECIES_TENTACRUEL] = 0x886,
|
||||
[SPECIES_GEODUDE] = 0x886,
|
||||
[SPECIES_GRAVELER] = 0x886,
|
||||
[SPECIES_GOLEM] = 0x886,
|
||||
[SPECIES_PONYTA] = 0x888,
|
||||
[SPECIES_RAPIDASH] = 0x888,
|
||||
[SPECIES_SLOWPOKE] = 0x888,
|
||||
[SPECIES_SLOWBRO] = 0x888,
|
||||
[SPECIES_MAGNEMITE] = 0x886,
|
||||
[SPECIES_MAGNETON] = 0x886,
|
||||
[SPECIES_FARFETCHD] = 0x888,
|
||||
[SPECIES_DODUO] = 0x886,
|
||||
[SPECIES_DODRIO] = 0x886,
|
||||
[SPECIES_SEEL] = 0x888,
|
||||
[SPECIES_DEWGONG] = 0x888,
|
||||
[SPECIES_GRIMER] = 0x88,
|
||||
[SPECIES_MUK] = 0x88,
|
||||
[SPECIES_SHELLDER] = 0x888,
|
||||
[SPECIES_CLOYSTER] = 0x888,
|
||||
[SPECIES_GASTLY] = 0x888,
|
||||
[SPECIES_HAUNTER] = 0x888,
|
||||
[SPECIES_GENGAR] = 0x888,
|
||||
[SPECIES_ONIX] = 0x888,
|
||||
[SPECIES_DROWZEE] = 0x888,
|
||||
[SPECIES_HYPNO] = 0x888,
|
||||
[SPECIES_KRABBY] = 0x888,
|
||||
[SPECIES_KINGLER] = 0x888,
|
||||
[SPECIES_VOLTORB] = 0x886,
|
||||
[SPECIES_ELECTRODE] = 0x886,
|
||||
[SPECIES_EXEGGCUTE] = 0x888,
|
||||
[SPECIES_EXEGGUTOR] = 0x888,
|
||||
[SPECIES_CUBONE] = 0x888,
|
||||
[SPECIES_MAROWAK] = 0x888,
|
||||
[SPECIES_HITMONLEE] = 0x88,
|
||||
[SPECIES_HITMONCHAN] = 0x886,
|
||||
[SPECIES_LICKITUNG] = 0x888,
|
||||
[SPECIES_KOFFING] = 0x88,
|
||||
[SPECIES_WEEZING] = 0x88,
|
||||
[SPECIES_RHYHORN] = 0x88,
|
||||
[SPECIES_RHYDON] = 0x88,
|
||||
[SPECIES_CHANSEY] = 0x888,
|
||||
[SPECIES_TANGELA] = 0x886,
|
||||
[SPECIES_KANGASKHAN] = 0x888,
|
||||
[SPECIES_HORSEA] = 0x88,
|
||||
[SPECIES_SEADRA] = 0x88,
|
||||
[SPECIES_GOLDEEN] = 0x886,
|
||||
[SPECIES_SEAKING] = 0x886,
|
||||
[SPECIES_STARYU] = 0x88,
|
||||
[SPECIES_STARMIE] = 0x88,
|
||||
[SPECIES_MR_MIME] = 0x888,
|
||||
[SPECIES_SCYTHER] = 0x886,
|
||||
[SPECIES_JYNX] = 0x886,
|
||||
[SPECIES_ELECTABUZZ] = 0x888,
|
||||
[SPECIES_MAGMAR] = 0x888,
|
||||
[SPECIES_PINSIR] = 0x88,
|
||||
[SPECIES_TAUROS] = 0x888,
|
||||
[SPECIES_MAGIKARP] = 0x886,
|
||||
[SPECIES_GYARADOS] = 0x886,
|
||||
[SPECIES_LAPRAS] = 0x888,
|
||||
[SPECIES_DITTO] = 0x886,
|
||||
[SPECIES_EEVEE] = 0x888,
|
||||
[SPECIES_VAPOREON] = 0x888,
|
||||
[SPECIES_JOLTEON] = 0x886,
|
||||
[SPECIES_FLAREON] = 0x888,
|
||||
[SPECIES_PORYGON] = 0x888,
|
||||
[SPECIES_OMANYTE] = 0x888,
|
||||
[SPECIES_OMASTAR] = 0x888,
|
||||
[SPECIES_KABUTO] = 0x888,
|
||||
[SPECIES_KABUTOPS] = 0x888,
|
||||
[SPECIES_AERODACTYL] = 0x888,
|
||||
[SPECIES_SNORLAX] = 0x888,
|
||||
[SPECIES_ARTICUNO] = 0x888,
|
||||
[SPECIES_ZAPDOS] = 0x888,
|
||||
[SPECIES_MOLTRES] = 0x888,
|
||||
[SPECIES_DRATINI] = 0x888,
|
||||
[SPECIES_DRAGONAIR] = 0x888,
|
||||
[SPECIES_DRAGONITE] = 0x888,
|
||||
[SPECIES_MEWTWO] = 0x88,
|
||||
[SPECIES_MEW] = 0x888,
|
||||
[SPECIES_CHIKORITA] = 0x888,
|
||||
[SPECIES_BAYLEEF] = 0x888,
|
||||
[SPECIES_MEGANIUM] = 0x888,
|
||||
[SPECIES_CYNDAQUIL] = 0x888,
|
||||
[SPECIES_QUILAVA] = 0x88,
|
||||
[SPECIES_TYPHLOSION] = 0x888,
|
||||
[SPECIES_TOTODILE] = 0x888,
|
||||
[SPECIES_CROCONAW] = 0x886,
|
||||
[SPECIES_FERALIGATR] = 0x886,
|
||||
[SPECIES_SENTRET] = 0x888,
|
||||
[SPECIES_FURRET] = 0x888,
|
||||
[SPECIES_HOOTHOOT] = 0x888,
|
||||
[SPECIES_NOCTOWL] = 0x888,
|
||||
[SPECIES_LEDYBA] = 0x888,
|
||||
[SPECIES_LEDIAN] = 0x888,
|
||||
[SPECIES_SPINARAK] = 0x886,
|
||||
[SPECIES_ARIADOS] = 0x888,
|
||||
[SPECIES_CROBAT] = 0x886,
|
||||
[SPECIES_CHINCHOU] = 0x88,
|
||||
[SPECIES_LANTURN] = 0x88,
|
||||
[SPECIES_PICHU] = 0x88,
|
||||
[SPECIES_CLEFFA] = 0x888,
|
||||
[SPECIES_IGGLYBUFF] = 0x88,
|
||||
[SPECIES_TOGEPI] = 0x888,
|
||||
[SPECIES_TOGETIC] = 0x888,
|
||||
[SPECIES_NATU] = 0x88,
|
||||
[SPECIES_XATU] = 0x88,
|
||||
[SPECIES_MAREEP] = 0x888,
|
||||
[SPECIES_FLAAFFY] = 0x886,
|
||||
[SPECIES_AMPHAROS] = 0x888,
|
||||
[SPECIES_BELLOSSOM] = 0x886,
|
||||
[SPECIES_MARILL] = 0x886,
|
||||
[SPECIES_AZUMARILL] = 0x886,
|
||||
[SPECIES_SUDOWOODO] = 0x888,
|
||||
[SPECIES_POLITOED] = 0x888,
|
||||
[SPECIES_HOPPIP] = 0x888,
|
||||
[SPECIES_SKIPLOOM] = 0x88,
|
||||
[SPECIES_JUMPLUFF] = 0x888,
|
||||
[SPECIES_AIPOM] = 0x888,
|
||||
[SPECIES_SUNKERN] = 0x888,
|
||||
[SPECIES_SUNFLORA] = 0x88,
|
||||
[SPECIES_YANMA] = 0x888,
|
||||
[SPECIES_WOOPER] = 0x888,
|
||||
[SPECIES_QUAGSIRE] = 0x888,
|
||||
[SPECIES_ESPEON] = 0x888,
|
||||
[SPECIES_UMBREON] = 0x888,
|
||||
[SPECIES_MURKROW] = 0x888,
|
||||
[SPECIES_SLOWKING] = 0x888,
|
||||
[SPECIES_MISDREAVUS] = 0x888,
|
||||
[SPECIES_UNOWN] = 0x888,
|
||||
[SPECIES_WOBBUFFET] = 0x88,
|
||||
[SPECIES_GIRAFARIG] = 0x88,
|
||||
[SPECIES_PINECO] = 0x886,
|
||||
[SPECIES_FORRETRESS] = 0x888,
|
||||
[SPECIES_DUNSPARCE] = 0x888,
|
||||
[SPECIES_GLIGAR] = 0x888,
|
||||
[SPECIES_STEELIX] = 0x888,
|
||||
[SPECIES_SNUBBULL] = 0x888,
|
||||
[SPECIES_GRANBULL] = 0x888,
|
||||
[SPECIES_QWILFISH] = 0x888,
|
||||
[SPECIES_SCIZOR] = 0x888,
|
||||
[SPECIES_SHUCKLE] = 0x888,
|
||||
[SPECIES_HERACROSS] = 0x88,
|
||||
[SPECIES_SNEASEL] = 0x888,
|
||||
[SPECIES_TEDDIURSA] = 0x886,
|
||||
[SPECIES_URSARING] = 0x888,
|
||||
[SPECIES_SLUGMA] = 0x88,
|
||||
[SPECIES_MAGCARGO] = 0x88,
|
||||
[SPECIES_SWINUB] = 0x888,
|
||||
[SPECIES_PILOSWINE] = 0x888,
|
||||
[SPECIES_CORSOLA] = 0x88,
|
||||
[SPECIES_REMORAID] = 0x888,
|
||||
[SPECIES_OCTILLERY] = 0x888,
|
||||
[SPECIES_DELIBIRD] = 0x888,
|
||||
[SPECIES_MANTINE] = 0x888,
|
||||
[SPECIES_SKARMORY] = 0x88,
|
||||
[SPECIES_HOUNDOUR] = 0x888,
|
||||
[SPECIES_HOUNDOOM] = 0x888,
|
||||
[SPECIES_KINGDRA] = 0x88,
|
||||
[SPECIES_PHANPY] = 0x88,
|
||||
[SPECIES_DONPHAN] = 0x88,
|
||||
[SPECIES_PORYGON2] = 0x888,
|
||||
[SPECIES_STANTLER] = 0x88,
|
||||
[SPECIES_SMEARGLE] = 0x888,
|
||||
[SPECIES_TYROGUE] = 0x888,
|
||||
[SPECIES_HITMONTOP] = 0x888,
|
||||
[SPECIES_SMOOCHUM] = 0x888,
|
||||
[SPECIES_ELEKID] = 0x888,
|
||||
[SPECIES_MAGBY] = 0x888,
|
||||
[SPECIES_MILTANK] = 0x888,
|
||||
[SPECIES_BLISSEY] = 0x888,
|
||||
[SPECIES_RAIKOU] = 0x888,
|
||||
[SPECIES_ENTEI] = 0x888,
|
||||
[SPECIES_SUICUNE] = 0x888,
|
||||
[SPECIES_LARVITAR] = 0x888,
|
||||
[SPECIES_PUPITAR] = 0x888,
|
||||
[SPECIES_TYRANITAR] = 0x888,
|
||||
[SPECIES_LUGIA] = 0x886,
|
||||
[SPECIES_HO_OH] = 0x888,
|
||||
[SPECIES_CELEBI] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_B] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_C] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_D] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_E] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_F] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_G] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_H] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_I] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_J] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_K] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_L] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_M] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_N] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_O] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_P] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_Q] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_R] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_S] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_T] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_U] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_V] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_W] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_X] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_Y] = 0x888,
|
||||
[SPECIES_OLD_UNOWN_Z] = 0x888,
|
||||
[SPECIES_TREECKO] = 0x886,
|
||||
[SPECIES_GROVYLE] = 0x886,
|
||||
[SPECIES_SCEPTILE] = 0x886,
|
||||
[SPECIES_TORCHIC] = 0x88,
|
||||
[SPECIES_COMBUSKEN] = 0x88,
|
||||
[SPECIES_BLAZIKEN] = 0x88,
|
||||
[SPECIES_MUDKIP] = 0x886,
|
||||
[SPECIES_MARSHTOMP] = 0x88,
|
||||
[SPECIES_SWAMPERT] = 0x886,
|
||||
[SPECIES_POOCHYENA] = 0x886,
|
||||
[SPECIES_MIGHTYENA] = 0x886,
|
||||
[SPECIES_ZIGZAGOON] = 0x88,
|
||||
[SPECIES_LINOONE] = 0x886,
|
||||
[SPECIES_WURMPLE] = 0x88,
|
||||
[SPECIES_SILCOON] = 0x88,
|
||||
[SPECIES_BEAUTIFLY] = 0x88,
|
||||
[SPECIES_CASCOON] = 0x88,
|
||||
[SPECIES_DUSTOX] = 0x88,
|
||||
[SPECIES_LOTAD] = 0x886,
|
||||
[SPECIES_LOMBRE] = 0x886,
|
||||
[SPECIES_LUDICOLO] = 0x886,
|
||||
[SPECIES_SEEDOT] = 0x888,
|
||||
[SPECIES_NUZLEAF] = 0x888,
|
||||
[SPECIES_SHIFTRY] = 0x886,
|
||||
[SPECIES_NINCADA] = 0x886,
|
||||
[SPECIES_NINJASK] = 0x886,
|
||||
[SPECIES_SHEDINJA] = 0x886,
|
||||
[SPECIES_TAILLOW] = 0x88,
|
||||
[SPECIES_SWELLOW] = 0x88,
|
||||
[SPECIES_SHROOMISH] = 0x886,
|
||||
[SPECIES_BRELOOM] = 0x886,
|
||||
[SPECIES_SPINDA] = 0x1882,
|
||||
[SPECIES_WINGULL] = 0x88,
|
||||
[SPECIES_PELIPPER] = 0x88,
|
||||
[SPECIES_SURSKIT] = 0x88,
|
||||
[SPECIES_MASQUERAIN] = 0x88,
|
||||
[SPECIES_WAILMER] = 0x886,
|
||||
[SPECIES_WAILORD] = 0x886,
|
||||
[SPECIES_SKITTY] = 0x886,
|
||||
[SPECIES_DELCATTY] = 0x88,
|
||||
[SPECIES_KECLEON] = 0x88,
|
||||
[SPECIES_BALTOY] = 0x88,
|
||||
[SPECIES_CLAYDOL] = 0x88,
|
||||
[SPECIES_NOSEPASS] = 0x886,
|
||||
[SPECIES_TORKOAL] = 0x88,
|
||||
[SPECIES_SABLEYE] = 0x886,
|
||||
[SPECIES_BARBOACH] = 0x88,
|
||||
[SPECIES_WHISCASH] = 0x88,
|
||||
[SPECIES_LUVDISC] = 0x88,
|
||||
[SPECIES_CORPHISH] = 0x88,
|
||||
[SPECIES_CRAWDAUNT] = 0x88,
|
||||
[SPECIES_FEEBAS] = 0x88,
|
||||
[SPECIES_MILOTIC] = 0x88,
|
||||
[SPECIES_CARVANHA] = 0x886,
|
||||
[SPECIES_SHARPEDO] = 0x886,
|
||||
[SPECIES_TRAPINCH] = 0x88,
|
||||
[SPECIES_VIBRAVA] = 0x88,
|
||||
[SPECIES_FLYGON] = 0x88,
|
||||
[SPECIES_MAKUHITA] = 0x886,
|
||||
[SPECIES_HARIYAMA] = 0x886,
|
||||
[SPECIES_ELECTRIKE] = 0x88,
|
||||
[SPECIES_MANECTRIC] = 0x88,
|
||||
[SPECIES_NUMEL] = 0x88,
|
||||
[SPECIES_CAMERUPT] = 0x88,
|
||||
[SPECIES_SPHEAL] = 0x88,
|
||||
[SPECIES_SEALEO] = 0x88,
|
||||
[SPECIES_WALREIN] = 0x88,
|
||||
[SPECIES_CACNEA] = 0x88,
|
||||
[SPECIES_CACTURNE] = 0x88,
|
||||
[SPECIES_SNORUNT] = 0x88,
|
||||
[SPECIES_GLALIE] = 0x88,
|
||||
[SPECIES_LUNATONE] = 0x88,
|
||||
[SPECIES_SOLROCK] = 0x88,
|
||||
[SPECIES_AZURILL] = 0x886,
|
||||
[SPECIES_SPOINK] = 0x88,
|
||||
[SPECIES_GRUMPIG] = 0x88,
|
||||
[SPECIES_PLUSLE] = 0x886,
|
||||
[SPECIES_MINUN] = 0x886,
|
||||
[SPECIES_MAWILE] = 0x886,
|
||||
[SPECIES_MEDITITE] = 0x886,
|
||||
[SPECIES_MEDICHAM] = 0x886,
|
||||
[SPECIES_SWABLU] = 0x88,
|
||||
[SPECIES_ALTARIA] = 0x88,
|
||||
[SPECIES_WYNAUT] = 0x88,
|
||||
[SPECIES_DUSKULL] = 0x88,
|
||||
[SPECIES_DUSCLOPS] = 0x88,
|
||||
[SPECIES_ROSELIA] = 0x886,
|
||||
[SPECIES_SLAKOTH] = 0x886,
|
||||
[SPECIES_VIGOROTH] = 0x886,
|
||||
[SPECIES_SLAKING] = 0x886,
|
||||
[SPECIES_GULPIN] = 0x88,
|
||||
[SPECIES_SWALOT] = 0x886,
|
||||
[SPECIES_TROPIUS] = 0x88,
|
||||
[SPECIES_WHISMUR] = 0x886,
|
||||
[SPECIES_LOUDRED] = 0x886,
|
||||
[SPECIES_EXPLOUD] = 0x886,
|
||||
[SPECIES_CLAMPERL] = 0x88,
|
||||
[SPECIES_HUNTAIL] = 0x88,
|
||||
[SPECIES_GOREBYSS] = 0x88,
|
||||
[SPECIES_ABSOL] = 0x88,
|
||||
[SPECIES_SHUPPET] = 0x88,
|
||||
[SPECIES_BANETTE] = 0x88,
|
||||
[SPECIES_SEVIPER] = 0x88,
|
||||
[SPECIES_ZANGOOSE] = 0x88,
|
||||
[SPECIES_RELICANTH] = 0x88,
|
||||
[SPECIES_ARON] = 0x886,
|
||||
[SPECIES_LAIRON] = 0x886,
|
||||
[SPECIES_AGGRON] = 0x886,
|
||||
[SPECIES_CASTFORM] = 0x888,
|
||||
[SPECIES_VOLBEAT] = 0x886,
|
||||
[SPECIES_ILLUMISE] = 0x886,
|
||||
[SPECIES_LILEEP] = 0x88,
|
||||
[SPECIES_CRADILY] = 0x88,
|
||||
[SPECIES_ANORITH] = 0x88,
|
||||
[SPECIES_ARMALDO] = 0x88,
|
||||
[SPECIES_RALTS] = 0x886,
|
||||
[SPECIES_KIRLIA] = 0x886,
|
||||
[SPECIES_GARDEVOIR] = 0x88,
|
||||
[SPECIES_BAGON] = 0x88,
|
||||
[SPECIES_SHELGON] = 0x88,
|
||||
[SPECIES_SALAMENCE] = 0x88,
|
||||
[SPECIES_BELDUM] = 0x88,
|
||||
[SPECIES_METANG] = 0x88,
|
||||
[SPECIES_METAGROSS] = 0x88,
|
||||
[SPECIES_REGIROCK] = 0x88,
|
||||
[SPECIES_REGICE] = 0x88,
|
||||
[SPECIES_REGISTEEL] = 0x88,
|
||||
[SPECIES_KYOGRE] = 0x88,
|
||||
[SPECIES_GROUDON] = 0x88,
|
||||
[SPECIES_RAYQUAZA] = 0x88,
|
||||
[SPECIES_LATIAS] = 0x88,
|
||||
[SPECIES_LATIOS] = 0x88,
|
||||
[SPECIES_JIRACHI] = 0x88,
|
||||
[SPECIES_DEOXYS] = 0x88,
|
||||
[SPECIES_CHIMECHO] = 0x88,
|
||||
[SPECIES_EGG] = 0x88,
|
||||
[SPECIES_UNOWN_B] = 0x888,
|
||||
[SPECIES_UNOWN_C] = 0x888,
|
||||
[SPECIES_UNOWN_D] = 0x888,
|
||||
[SPECIES_UNOWN_E] = 0x888,
|
||||
[SPECIES_UNOWN_F] = 0x888,
|
||||
[SPECIES_UNOWN_G] = 0x888,
|
||||
[SPECIES_UNOWN_H] = 0x888,
|
||||
[SPECIES_UNOWN_I] = 0x888,
|
||||
[SPECIES_UNOWN_J] = 0x888,
|
||||
[SPECIES_UNOWN_K] = 0x888,
|
||||
[SPECIES_UNOWN_L] = 0x888,
|
||||
[SPECIES_UNOWN_M] = 0x888,
|
||||
[SPECIES_UNOWN_N] = 0x888,
|
||||
[SPECIES_UNOWN_O] = 0x888,
|
||||
[SPECIES_UNOWN_P] = 0x888,
|
||||
[SPECIES_UNOWN_Q] = 0x888,
|
||||
[SPECIES_UNOWN_R] = 0x888,
|
||||
[SPECIES_UNOWN_S] = 0x888,
|
||||
[SPECIES_UNOWN_T] = 0x888,
|
||||
[SPECIES_UNOWN_U] = 0x888,
|
||||
[SPECIES_UNOWN_V] = 0x888,
|
||||
[SPECIES_UNOWN_W] = 0x888,
|
||||
[SPECIES_UNOWN_X] = 0x888,
|
||||
[SPECIES_UNOWN_Y] = 0x888,
|
||||
[SPECIES_UNOWN_Z] = 0x888,
|
||||
[SPECIES_UNOWN_EMARK] = 0x888,
|
||||
[SPECIES_UNOWN_QMARK] = 0x888,
|
||||
};
|
||||
+256
-246
@@ -1,3 +1,17 @@
|
||||
#define GFXTAG_MENU_TEXT 200 // Used as a base tag in CB2_CreateTradeMenu and CB2_ReturnToTradeMenu
|
||||
#define GFXTAG_CURSOR 300
|
||||
#define GFXTAG_LINK_MON_GLOW 5550
|
||||
#define GFXTAG_LINK_MON_SHADOW 5552
|
||||
#define GFXTAG_CABLE_END 5554
|
||||
#define GFXTAG_GBA_SCREEN 5556
|
||||
#define GFXTAG_POKEBALL 5557
|
||||
|
||||
#define PALTAG_CURSOR 2345
|
||||
#define PALTAG_MENU_TEXT 4925
|
||||
#define PALTAG_LINK_MON 5551
|
||||
#define PALTAG_GBA 5555
|
||||
#define PALTAG_POKEBALL 5558
|
||||
|
||||
// Exists unused in RS as well
|
||||
static const u32 sUnusedStructSizes[] =
|
||||
{
|
||||
@@ -25,7 +39,7 @@ static const u8 sText_Slash[] = _("/");
|
||||
static const u8 sText_Lv[] = _("Lv. ");
|
||||
static const u8 sText_ThreeDashes[] = _("---");
|
||||
static const u8 sText_FourQuestionMarks[] = _("????");
|
||||
static const u8 sText_832DAE4[] = _("");
|
||||
static const u8 sText_UnusedEmpty[] = _("");
|
||||
static const u8 sText_IsThisTradeOkay[] = _("Is this trade okay?");
|
||||
static const u8 sText_Cancel[] = _("CANCEL");
|
||||
static const u8 sText_ChooseAPkmn[] = _("Choose a POKéMON.");
|
||||
@@ -48,107 +62,113 @@ static const struct OamData sTradeOamData_32x16 =
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
static const struct OamData sTradeOamData_64x32 =
|
||||
static const struct OamData sOamData_Cursor =
|
||||
{
|
||||
.shape = SPRITE_SHAPE(64x32),
|
||||
.size = SPRITE_SIZE(64x32),
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_832DC24[] =
|
||||
static const union AnimCmd sAnim_Cursor_Normal[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_832DC2C[] =
|
||||
static const union AnimCmd sAnim_Cursor_OnCancel[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_832DC34[] =
|
||||
{
|
||||
gSpriteAnim_832DC24,
|
||||
gSpriteAnim_832DC2C
|
||||
enum {
|
||||
CURSOR_ANIM_NORMAL,
|
||||
CURSOR_ANIM_ON_CANCEL,
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sTradeButtonsSpriteSheet =
|
||||
static const union AnimCmd *const sAnims_Cursor[] =
|
||||
{
|
||||
.data = gTradeButtons_Gfx,
|
||||
[CURSOR_ANIM_NORMAL] = sAnim_Cursor_Normal,
|
||||
[CURSOR_ANIM_ON_CANCEL] = sAnim_Cursor_OnCancel
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sCursor_SpriteSheet =
|
||||
{
|
||||
.data = gTradeCursor_Gfx,
|
||||
.size = 0x800,
|
||||
.tag = 300
|
||||
.tag = GFXTAG_CURSOR
|
||||
};
|
||||
|
||||
static const struct SpritePalette gUnknown_0832DC44 =
|
||||
static const struct SpritePalette sCursor_SpritePalette =
|
||||
{
|
||||
.data = gUnknown_08DDB444,
|
||||
.tag = 2345
|
||||
.data = gTradeCursor_Pal,
|
||||
.tag = PALTAG_CURSOR
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_832DC4C[] =
|
||||
static const union AnimCmd sAnim_MenuText_0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_832DC54[] =
|
||||
static const union AnimCmd sAnim_MenuText_1[] =
|
||||
{
|
||||
ANIMCMD_FRAME(8, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_832DC5C[] =
|
||||
static const union AnimCmd sAnim_MenuText_2[] =
|
||||
{
|
||||
ANIMCMD_FRAME(16, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_832DC64[] =
|
||||
static const union AnimCmd sAnim_MenuText_3[] =
|
||||
{
|
||||
ANIMCMD_FRAME(24, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_832DC6C[] =
|
||||
static const union AnimCmd sAnim_MenuText_4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_832DC74[] =
|
||||
static const union AnimCmd sAnim_MenuText_5[] =
|
||||
{
|
||||
ANIMCMD_FRAME(40, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_832DC7C[] =
|
||||
// These anims are not used
|
||||
static const union AnimCmd *const sAnims_MenuText[] =
|
||||
{
|
||||
gSpriteAnim_832DC4C,
|
||||
gSpriteAnim_832DC54,
|
||||
gSpriteAnim_832DC5C,
|
||||
gSpriteAnim_832DC64,
|
||||
gSpriteAnim_832DC6C,
|
||||
gSpriteAnim_832DC74
|
||||
sAnim_MenuText_0,
|
||||
sAnim_MenuText_1,
|
||||
sAnim_MenuText_2,
|
||||
sAnim_MenuText_3,
|
||||
sAnim_MenuText_4,
|
||||
sAnim_MenuText_5
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gSpriteTemplate_832DC94 =
|
||||
static const struct SpriteTemplate sSpriteTemplate_Cursor =
|
||||
{
|
||||
.tileTag = 300,
|
||||
.paletteTag = 2345,
|
||||
.oam = &sTradeOamData_64x32,
|
||||
.anims = gSpriteAnimTable_832DC34,
|
||||
.tileTag = GFXTAG_CURSOR,
|
||||
.paletteTag = PALTAG_CURSOR,
|
||||
.oam = &sOamData_Cursor,
|
||||
.anims = sAnims_Cursor,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gSpriteTemplate_832DCAC =
|
||||
static const struct SpriteTemplate sSpriteTemplate_MenuText =
|
||||
{
|
||||
.tileTag = 200,
|
||||
.paletteTag = 4925,
|
||||
.tileTag = GFXTAG_MENU_TEXT,
|
||||
.paletteTag = PALTAG_MENU_TEXT,
|
||||
.oam = &sTradeOamData_32x16,
|
||||
.anims = gSpriteAnimTable_832DC7C,
|
||||
.anims = sAnims_MenuText,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy,
|
||||
@@ -158,7 +178,7 @@ static const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbap
|
||||
static const struct SpritePalette gSpritePalette_TradeScreenText =
|
||||
{
|
||||
.data = TradeScreenTextPalette,
|
||||
.tag = 4925
|
||||
.tag = PALTAG_MENU_TEXT
|
||||
};
|
||||
|
||||
// This is used to determine the next mon to select when the D-Pad is
|
||||
@@ -337,26 +357,26 @@ static const u8 sTradeMonBoxCoords[][2][2] =
|
||||
},
|
||||
};
|
||||
|
||||
static const u8 sUnref_0832DE6E[] =
|
||||
static const u8 sUnusedCoords[][2] =
|
||||
{
|
||||
0x00, 0x0e,
|
||||
0x0f, 0x1d,
|
||||
0x03, 0x05,
|
||||
0x03, 0x07,
|
||||
0x12, 0x05,
|
||||
0x12, 0x07,
|
||||
0x08, 0x07,
|
||||
0x16, 0x0c,
|
||||
0x08, 0x07,
|
||||
0x16, 0x0c,
|
||||
0x06, 0x07,
|
||||
0x18, 0x0c,
|
||||
0x06, 0x07,
|
||||
0x18, 0x0c,
|
||||
0x08, 0x07,
|
||||
0x16, 0x0c,
|
||||
0x07, 0x07,
|
||||
0x17, 0x0c
|
||||
{ 0, 14},
|
||||
{15, 29},
|
||||
{ 3, 5},
|
||||
{ 3, 7},
|
||||
{18, 5},
|
||||
{18, 7},
|
||||
{ 8, 7},
|
||||
{22, 12},
|
||||
{ 8, 7},
|
||||
{22, 12},
|
||||
{ 6, 7},
|
||||
{24, 12},
|
||||
{ 6, 7},
|
||||
{24, 12},
|
||||
{ 8, 7},
|
||||
{22, 12},
|
||||
{ 7, 7},
|
||||
{23, 12}
|
||||
};
|
||||
|
||||
static const u8 *const sTradeActionTexts[] =
|
||||
@@ -620,42 +640,42 @@ static const u8 sTradeMenuPartyMonBoxDimensions[3][2] =
|
||||
[TRADE_PARTNER] = {19, 3}
|
||||
};
|
||||
|
||||
static const u16 sTradePal_PokeBall[] = INCBIN_U16("graphics/trade/pokeball.gbapal");
|
||||
static const u8 sTradeGfx_PokeBall[] = INCBIN_U8("graphics/trade/pokeball.4bpp");
|
||||
static const u8 sTradeGfx_PokeBallSymbol[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp"); // unused?
|
||||
static const u16 sTradeTilemap_Cable[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin");
|
||||
static const u16 sPokeball_Pal[] = INCBIN_U16("graphics/trade/pokeball.gbapal");
|
||||
static const u8 sPokeball_Gfx[] = INCBIN_U8("graphics/trade/pokeball.4bpp");
|
||||
static const u8 sPokeballSymbol_Gfx[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp"); // unused
|
||||
static const u16 sCrossingHighlightCable_Tilemap[] = INCBIN_U16("graphics/trade/crossing_highlight_cable.bin");
|
||||
static const u16 sTradeTilemap_PokeBallSymbol[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin"); // unused?
|
||||
static const u16 sUnref_083308C0[] = INCBIN_U16("graphics/trade/unknown_3308C0.gbapal");
|
||||
static const u16 sTradePal_Gba[] = INCBIN_U16("graphics/trade/gba.gbapal");
|
||||
static const u16 sTradePal_ShadowUnused[] = INCBIN_U16("graphics/trade/shadow.gbapal");
|
||||
static const u16 sTradePal_BlackUnused[] = INCBIN_U16("graphics/trade/black.gbapal");
|
||||
static const u16 sTradePal_Misc[] = INCBIN_U16("graphics/trade/misc.gbapal");
|
||||
static const u8 sTradeGfx_Glow1[] = INCBIN_U8("graphics/trade/glow1.4bpp");
|
||||
static const u8 sTradeGfx_Glow2[] = INCBIN_U8("graphics/trade/glow2.4bpp");
|
||||
static const u8 sTradeGfx_CableEnd[] = INCBIN_U8("graphics/trade/cable_end.4bpp");
|
||||
static const u8 sTradeGfx_GbaScreen[] = INCBIN_U8("graphics/trade/gba_screen.4bpp");
|
||||
const u16 gUnknown_08331F60[] = INCBIN_U16("graphics/trade/shadow_map.bin");
|
||||
static const u8 sTradeAffine_Gba[] = INCBIN_U8("graphics/trade/gba_affine.8bpp");
|
||||
static const u8 sFiller_08335760[64] = {};
|
||||
static const u8 sTradeAffineMap_GbaCable[] = INCBIN_U8("graphics/trade/gba_affine_map_cable.bin");
|
||||
static const u8 sTradeAffineMap_GbaWireless[] = INCBIN_U8("graphics/trade/gba_affine_map_wireless.bin");
|
||||
static const u16 sTradeTilemap_GbaWireless[] = INCBIN_U16("graphics/trade/gba_map_wireless.bin");
|
||||
static const u16 sTradeTilemap_GbaCable[] = INCBIN_U16("graphics/trade/gba_map_cable.bin");
|
||||
static const u32 gUnknown_083379A0[] = INCBIN_U32("graphics/trade/unknown_3379A0.bin.lz"); //some wireless tilemap
|
||||
static const u16 sTradePal_WirelessSignalSend[] = INCBIN_U16("graphics/trade/wireless_signal_send.gbapal");
|
||||
static const u16 sTradePal_WirelessSignalReceive[] = INCBIN_U16("graphics/trade/wireless_signal_receive.gbapal");
|
||||
static const u16 sTradePal_Black[] = INCBIN_U16("graphics/trade/black.gbapal");
|
||||
static const u32 sTradeGfx_WirelessSignal[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz");
|
||||
static const u32 sTradeTilemap_WirelessSignal[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz");
|
||||
static const u16 sUnusedPal1[] = INCBIN_U16("graphics/trade/unused1.gbapal");
|
||||
static const u16 sGba_Pal[] = INCBIN_U16("graphics/trade/gba.gbapal");
|
||||
static const u16 sUnusedPal2[] = INCBIN_U16("graphics/trade/unused2.gbapal");
|
||||
static const u16 sWirelessSignalNone_Pal_Unused[] = INCBIN_U16("graphics/trade/wireless_signal_none.gbapal");
|
||||
static const u16 sLinkMon_Pal[] = INCBIN_U16("graphics/trade/link_mon.gbapal");
|
||||
static const u8 sLinkMonGlow_Gfx[] = INCBIN_U8("graphics/trade/link_mon_glow.4bpp");
|
||||
static const u8 sLinkMonShadow_Gfx[] = INCBIN_U8("graphics/trade/link_mon_shadow.4bpp");
|
||||
static const u8 sCableEnd_Gfx[] = INCBIN_U8("graphics/trade/cable_end.4bpp");
|
||||
static const u8 sGbaScreen_Gfx[] = INCBIN_U8("graphics/trade/gba_screen.4bpp");
|
||||
const u16 gTradePlatform_Tilemap[] = INCBIN_U16("graphics/trade/platform.bin");
|
||||
static const u8 sGbaAffine_Gfx[] = INCBIN_U8("graphics/trade/gba_affine.8bpp"); // Only the gfx for when the GBA is zooming in/out
|
||||
static const u8 sEmptyGfx[64] = {};
|
||||
static const u8 sGbaCable_AffineTilemap[] = INCBIN_U8("graphics/trade/gba_affine_map_cable.bin");
|
||||
static const u8 sGbaWireless_AffineTilemap[] = INCBIN_U8("graphics/trade/gba_affine_map_wireless.bin");
|
||||
static const u16 sGbaWireless_Tilemap[] = INCBIN_U16("graphics/trade/gba_map_wireless.bin");
|
||||
static const u16 sGbaCable_Tilemap[] = INCBIN_U16("graphics/trade/gba_map_cable.bin");
|
||||
static const u32 sCrossingHighlightWireless_Tilemap[] = INCBIN_U32("graphics/trade/crossing_highlight_wireless.bin.lz");
|
||||
static const u16 sWirelessSignalSend_Pal[] = INCBIN_U16("graphics/trade/wireless_signal_send.gbapal");
|
||||
static const u16 sWirelessSignalRecv_Pal[] = INCBIN_U16("graphics/trade/wireless_signal_receive.gbapal");
|
||||
static const u16 sWirelessSignalNone_Pal[] = INCBIN_U16("graphics/trade/wireless_signal_none.gbapal");
|
||||
static const u32 sWirelessSignal_Gfx[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz");
|
||||
static const u32 sWirelessSignal_Tilemap[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz");
|
||||
|
||||
static const struct OamData sTradeOamData_16x16 =
|
||||
static const struct OamData sOamData_Pokeball =
|
||||
{
|
||||
.affineMode = ST_OAM_AFFINE_NORMAL,
|
||||
.shape = SPRITE_SHAPE(16x16),
|
||||
.size = SPRITE_SIZE(16x16)
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8338C4C[] =
|
||||
static const union AnimCmd sAnim_Pokeball_SpinOnce[] =
|
||||
{
|
||||
ANIMCMD_FRAME( 0, 3),
|
||||
ANIMCMD_FRAME( 4, 3),
|
||||
@@ -674,7 +694,7 @@ static const union AnimCmd gSpriteAnim_8338C4C[] =
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8338C88[] =
|
||||
static const union AnimCmd sAnim_Pokeball_SpinTwice[] =
|
||||
{
|
||||
ANIMCMD_FRAME( 0, 3),
|
||||
ANIMCMD_FRAME( 4, 3),
|
||||
@@ -693,25 +713,25 @@ static const union AnimCmd gSpriteAnim_8338C88[] =
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8338C88[] =
|
||||
static const union AnimCmd *const sAnims_Pokeball[] =
|
||||
{
|
||||
gSpriteAnim_8338C4C,
|
||||
gSpriteAnim_8338C88
|
||||
sAnim_Pokeball_SpinOnce,
|
||||
sAnim_Pokeball_SpinTwice
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gSpriteAffineAnim_8338CCC[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Pokeball_Normal[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0, 0, 0, 1),
|
||||
AFFINEANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gSpriteAffineAnim_8338CDC[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Pokeball_Squish[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(-8, 0, 0, 20),
|
||||
AFFINEANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gSpriteAffineAnim_8338CEC[] =
|
||||
static const union AffineAnimCmd sAffineAnim_Pokeball_Unsquish[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x60, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME( 0, 0, 0, 5),
|
||||
@@ -719,38 +739,38 @@ static const union AffineAnimCmd gSpriteAffineAnim_8338CEC[] =
|
||||
AFFINEANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D0C[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_Pokeball[] =
|
||||
{
|
||||
gSpriteAffineAnim_8338CCC,
|
||||
gSpriteAffineAnim_8338CDC,
|
||||
gSpriteAffineAnim_8338CEC
|
||||
sAffineAnim_Pokeball_Normal,
|
||||
sAffineAnim_Pokeball_Squish,
|
||||
sAffineAnim_Pokeball_Unsquish
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sPokeBallSpriteSheet =
|
||||
{
|
||||
.data = sTradeGfx_PokeBall,
|
||||
.data = sPokeball_Gfx,
|
||||
.size = 0x600,
|
||||
.tag = 5557
|
||||
.tag = GFXTAG_POKEBALL
|
||||
};
|
||||
|
||||
static const struct SpritePalette sPokeBallSpritePalette =
|
||||
{
|
||||
.data = sTradePal_PokeBall,
|
||||
.tag = 5558
|
||||
.data = sPokeball_Pal,
|
||||
.tag = PALTAG_POKEBALL
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gSpriteTemplate_8338D28 =
|
||||
static const struct SpriteTemplate sSpriteTemplate_Pokeball =
|
||||
{
|
||||
.tileTag = 5557,
|
||||
.paletteTag = 5558,
|
||||
.oam = &sTradeOamData_16x16,
|
||||
.anims = gSpriteAnimTable_8338C88,
|
||||
.tileTag = GFXTAG_POKEBALL,
|
||||
.paletteTag = PALTAG_POKEBALL,
|
||||
.oam = &sOamData_Pokeball,
|
||||
.anims = sAnims_Pokeball,
|
||||
.images = NULL,
|
||||
.affineAnims = gSpriteAffineAnimTable_8338D0C,
|
||||
.callback = sub_807E55C
|
||||
.affineAnims = sAffineAnims_Pokeball,
|
||||
.callback = SpriteCB_BouncingPokeball
|
||||
};
|
||||
|
||||
static const struct OamData sTradeOamData_32x32 =
|
||||
static const struct OamData sOamData_LinkMonGlow =
|
||||
{
|
||||
.affineMode = ST_OAM_AFFINE_NORMAL,
|
||||
.objMode = ST_OAM_OBJ_BLEND,
|
||||
@@ -759,146 +779,151 @@ static const struct OamData sTradeOamData_32x32 =
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8338D48[] =
|
||||
static const union AnimCmd sAnim_LinkMonGlow[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE),
|
||||
ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE), // ? The graphic is a perfect circle, no need to flip
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8338D50[] =
|
||||
static const union AnimCmd *const sAnims_LinkMonGlow[] =
|
||||
{
|
||||
gSpriteAnim_8338D48
|
||||
sAnim_LinkMonGlow
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd gSpriteAffineAnim_8338D54[] =
|
||||
static const union AffineAnimCmd sAffineAnim_LinkMonGlow[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(-10, -10, 0, 5),
|
||||
AFFINEANIMCMD_FRAME(10, 10, 0, 5),
|
||||
AFFINEANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D6C[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_LinkMonGlow[] =
|
||||
{
|
||||
gSpriteAffineAnim_8338D54
|
||||
sAffineAnim_LinkMonGlow
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sGlow1SpriteSheet =
|
||||
static const struct SpriteSheet sSpriteSheet_LinkMonGlow =
|
||||
{
|
||||
.data = sTradeGfx_Glow1,
|
||||
.data = sLinkMonGlow_Gfx,
|
||||
.size = 0x200,
|
||||
.tag = 5550
|
||||
.tag = GFXTAG_LINK_MON_GLOW
|
||||
};
|
||||
|
||||
static const struct SpritePalette sMiscTradeSpritePalette =
|
||||
static const struct SpritePalette sSpritePalette_LinkMon =
|
||||
{
|
||||
.data = sTradePal_Misc,
|
||||
.tag = 5551
|
||||
.data = sLinkMon_Pal,
|
||||
.tag = PALTAG_LINK_MON
|
||||
};
|
||||
|
||||
static const struct SpritePalette sGbaSpritePalette =
|
||||
static const struct SpritePalette sSpritePalette_Gba =
|
||||
{
|
||||
.data = sTradePal_Gba,
|
||||
.tag = 5555
|
||||
.data = sGba_Pal,
|
||||
.tag = PALTAG_GBA
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_08338D88 =
|
||||
static const struct SpriteTemplate sSpriteTemplate_LinkMonGlow =
|
||||
{
|
||||
.tileTag = 5550,
|
||||
.paletteTag = 5551,
|
||||
.oam = &sTradeOamData_32x32,
|
||||
.anims = gSpriteAnimTable_8338D50,
|
||||
.tileTag = GFXTAG_LINK_MON_GLOW,
|
||||
.paletteTag = PALTAG_LINK_MON,
|
||||
.oam = &sOamData_LinkMonGlow,
|
||||
.anims = sAnims_LinkMonGlow,
|
||||
.images = NULL,
|
||||
.affineAnims = gSpriteAffineAnimTable_8338D6C,
|
||||
.callback = sub_807AA28
|
||||
.affineAnims = sAffineAnims_LinkMonGlow,
|
||||
.callback = SpriteCB_LinkMonGlow
|
||||
};
|
||||
|
||||
static const struct OamData sTradeOamData_16x32 =
|
||||
static const struct OamData sOamData_LinkMonShadow =
|
||||
{
|
||||
.shape = SPRITE_SHAPE(16x32),
|
||||
.size = SPRITE_SIZE(16x32),
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8338DA8[] =
|
||||
static const union AnimCmd sAnim_LinkMonShadow_Big[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5, .vFlip = TRUE, .hFlip = TRUE),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8338DB0[] =
|
||||
static const union AnimCmd sAnim_LinkMonShadow_Small[] =
|
||||
{
|
||||
ANIMCMD_FRAME(8, 5, .vFlip = TRUE, .hFlip = TRUE),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8338DB8[] =
|
||||
{
|
||||
gSpriteAnim_8338DA8,
|
||||
gSpriteAnim_8338DB0
|
||||
enum {
|
||||
ANIM_LINKMON_BIG,
|
||||
ANIM_LINKMON_SMALL,
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sGlow2SpriteSheet =
|
||||
static const union AnimCmd *const sAnims_LinkMonShadow[] =
|
||||
{
|
||||
.data = sTradeGfx_Glow2,
|
||||
[ANIM_LINKMON_BIG] = sAnim_LinkMonShadow_Big,
|
||||
[ANIM_LINKMON_SMALL] = sAnim_LinkMonShadow_Small
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sSpriteSheet_LinkMonShadow =
|
||||
{
|
||||
.data = sLinkMonShadow_Gfx,
|
||||
.size = 0x300,
|
||||
.tag = 5552
|
||||
.tag = GFXTAG_LINK_MON_SHADOW
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sGlowBallSpriteTemplate =
|
||||
static const struct SpriteTemplate sSpriteTemplate_LinkMonShadow =
|
||||
{
|
||||
.tileTag = 5552,
|
||||
.paletteTag = 5551,
|
||||
.oam = &sTradeOamData_16x32,
|
||||
.anims = gSpriteAnimTable_8338DB8,
|
||||
.tileTag = GFXTAG_LINK_MON_SHADOW,
|
||||
.paletteTag = PALTAG_LINK_MON,
|
||||
.oam = &sOamData_LinkMonShadow,
|
||||
.anims = sAnims_LinkMonShadow,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_807AA7C
|
||||
.callback = SpriteCB_LinkMonShadow
|
||||
};
|
||||
|
||||
static const struct OamData sTradeOamData_16x32_2 =
|
||||
static const struct OamData sOamData_CableEnd =
|
||||
{
|
||||
.shape = SPRITE_SHAPE(16x32),
|
||||
.size = SPRITE_SIZE(16x32),
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8338DE8[] =
|
||||
static const union AnimCmd sAnim_CableEnd[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 10),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8338DF0[] =
|
||||
static const union AnimCmd *const sAnims_CableEnd[] =
|
||||
{
|
||||
gSpriteAnim_8338DE8
|
||||
sAnim_CableEnd
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sCableEndSpriteSheet =
|
||||
static const struct SpriteSheet sSpriteSheet_CableEnd =
|
||||
{
|
||||
.data = sTradeGfx_CableEnd,
|
||||
.data = sCableEnd_Gfx,
|
||||
.size = 0x100,
|
||||
.tag = 5554
|
||||
.tag = GFXTAG_CABLE_END
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gSpriteTemplate_8338DFC =
|
||||
static const struct SpriteTemplate sSpriteTemplate_CableEnd =
|
||||
{
|
||||
.tileTag = 5554,
|
||||
.paletteTag = 5555,
|
||||
.oam = &sTradeOamData_16x32_2,
|
||||
.anims = gSpriteAnimTable_8338DF0,
|
||||
.tileTag = GFXTAG_CABLE_END,
|
||||
.paletteTag = PALTAG_GBA,
|
||||
.oam = &sOamData_CableEnd,
|
||||
.anims = sAnims_CableEnd,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_807AABC
|
||||
.callback = SpriteCB_CableEndSending
|
||||
};
|
||||
|
||||
static const struct OamData sTradeOamData_64x32_2 =
|
||||
static const struct OamData sOamData_GbaScreen =
|
||||
{
|
||||
.shape = SPRITE_SHAPE(64x32),
|
||||
.size = SPRITE_SIZE(64x32),
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8338E1C[] =
|
||||
static const union AnimCmd sAnim_GbaScreen_Long[] =
|
||||
{
|
||||
ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE),
|
||||
@@ -911,7 +936,7 @@ static const union AnimCmd gSpriteAnim_8338E1C[] =
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8338E40[] =
|
||||
static const union AnimCmd sAnim_GbaScreen_Short[] =
|
||||
{
|
||||
ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE),
|
||||
ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE),
|
||||
@@ -924,56 +949,56 @@ static const union AnimCmd gSpriteAnim_8338E40[] =
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8338E64[] =
|
||||
static const union AnimCmd *const sAnims_GbaScreen_Long[] =
|
||||
{
|
||||
gSpriteAnim_8338E1C
|
||||
sAnim_GbaScreen_Long
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8338E68[] =
|
||||
static const union AnimCmd *const sAnims_GbaScreen_Short[] =
|
||||
{
|
||||
gSpriteAnim_8338E40
|
||||
sAnim_GbaScreen_Short
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sGbaScreenSpriteSheet =
|
||||
static const struct SpriteSheet sSpriteSheet_GbaScreen =
|
||||
{
|
||||
.data = sTradeGfx_GbaScreen,
|
||||
.data = sGbaScreen_Gfx,
|
||||
.size = 0x1000,
|
||||
.tag = 5556
|
||||
.tag = GFXTAG_GBA_SCREEN
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gSpriteTemplate_8338E74 =
|
||||
static const struct SpriteTemplate sSpriteTemplate_GbaScreenFlash_Long =
|
||||
{
|
||||
.tileTag = 5556,
|
||||
.paletteTag = 5555,
|
||||
.oam = &sTradeOamData_64x32_2,
|
||||
.anims = gSpriteAnimTable_8338E64,
|
||||
.tileTag = GFXTAG_GBA_SCREEN,
|
||||
.paletteTag = PALTAG_GBA,
|
||||
.oam = &sOamData_GbaScreen,
|
||||
.anims = sAnims_GbaScreen_Long,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_807AB04
|
||||
.callback = SpriteCB_GbaScreen
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gSpriteTemplate_8338E8C =
|
||||
static const struct SpriteTemplate sSpriteTemplate_GbaScreenFlash_Short =
|
||||
{
|
||||
.tileTag = 5556,
|
||||
.paletteTag = 5555,
|
||||
.oam = &sTradeOamData_64x32_2,
|
||||
.anims = gSpriteAnimTable_8338E68,
|
||||
.tileTag = GFXTAG_GBA_SCREEN,
|
||||
.paletteTag = PALTAG_GBA,
|
||||
.oam = &sOamData_GbaScreen,
|
||||
.anims = sAnims_GbaScreen_Short,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_807AB04
|
||||
.callback = SpriteCB_GbaScreen
|
||||
};
|
||||
|
||||
static const u16 gUnknown_08338EA4[] = INCBIN_U16("graphics/trade/unknown_338EA4.gbapal");
|
||||
static const u16 sLinkMonShadow_Pal[] = INCBIN_U16("graphics/trade/link_mon_shadow.gbapal");
|
||||
|
||||
static const union AffineAnimCmd gSpriteAffineAnim_8338EBC[] =
|
||||
static const union AffineAnimCmd sAffineAnim_CrossingMonPic[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338ECC[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_CrossingMonPics[] =
|
||||
{
|
||||
gSpriteAffineAnim_8338EBC
|
||||
sAffineAnim_CrossingMonPic
|
||||
};
|
||||
|
||||
static const struct InGameTrade sIngameTrades[] =
|
||||
@@ -1146,69 +1171,54 @@ static const struct BgTemplate sTradeSequenceBgTemplates[] =
|
||||
|
||||
static const s8 sTradeBallVerticalVelocityTable[] =
|
||||
{
|
||||
0, 0, 1, 0,
|
||||
1, 0, 1, 1,
|
||||
1, 1, 2, 2,
|
||||
2, 2, 3, 3,
|
||||
3, 3, 4, 4,
|
||||
4, 4, -4, -4,
|
||||
-4, -3, -3, -3,
|
||||
-3, -2, -2, -2,
|
||||
-2, -1, -1, -1,
|
||||
-1, 0, -1, 0,
|
||||
-1, 0, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
1, 0, 1, 1,
|
||||
1, 1, 2, 2,
|
||||
2, 2, 3, 3,
|
||||
3, 3, 4, 4,
|
||||
4, 4, -4, -3,
|
||||
-3, -2, -2, -1,
|
||||
-1, -1, 0, -1,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
1, 1, 1, 2,
|
||||
2, 3, 3, 4,
|
||||
-4, -3, -2, -1,
|
||||
-1, -1, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
1, 1, 2, 3
|
||||
0, 0, 1, 0, 1, 0, 1, 1, 1,
|
||||
1, 2, 2, 2, 2, 3, 3, 3, 3,
|
||||
4, 4, 4, 4, -4, -4, -4, -3, -3,
|
||||
-3, -3, -2, -2, -2, -2, -1, -1, -1,
|
||||
-1, 0, -1, 0, -1, 0, 0, 0, 0,
|
||||
0, 1, 0, 1, 0, 1, 1, 1, 1,
|
||||
2, 2, 2, 2, 3, 3, 3, 3, 4,
|
||||
4, 4, 4, -4, -3, -3, -2, -2, -1,
|
||||
-1, -1, 0, -1, 0, 0, 0, 0, 0,
|
||||
0, 1, 0, 1, 1, 1, 2, 2, 3,
|
||||
3, 4, -4, -3, -2, -1, -1, -1, 0,
|
||||
0, 0, 0, 1, 0, 1, 1, 2, 3
|
||||
};
|
||||
|
||||
static const u8 sWirelessSignalTiming[][2] =
|
||||
{
|
||||
{0, 1},
|
||||
{1, 1},
|
||||
{2, 1},
|
||||
{3, 1},
|
||||
{4, 1},
|
||||
{5, 2},
|
||||
{6, 2},
|
||||
{7, 2},
|
||||
{8, 2},
|
||||
{9, 2},
|
||||
{10, 3},
|
||||
{11, 3},
|
||||
{12, 3},
|
||||
{13, 4},
|
||||
{14, 5},
|
||||
{15, 2},
|
||||
{0, 1},
|
||||
{1, 1},
|
||||
{2, 1},
|
||||
{3, 1},
|
||||
{4, 1},
|
||||
{5, 2},
|
||||
{6, 2},
|
||||
{7, 2},
|
||||
{8, 2},
|
||||
{9, 2},
|
||||
{10, 3},
|
||||
{11, 3},
|
||||
{12, 3},
|
||||
{13, 4},
|
||||
{14, 5},
|
||||
{16, 1},
|
||||
{16, 255},
|
||||
{0, 0}
|
||||
{ 0, 1},
|
||||
{ 1, 1},
|
||||
{ 2, 1},
|
||||
{ 3, 1},
|
||||
{ 4, 1},
|
||||
{ 5, 2},
|
||||
{ 6, 2},
|
||||
{ 7, 2},
|
||||
{ 8, 2},
|
||||
{ 9, 2},
|
||||
{10, 3},
|
||||
{11, 3},
|
||||
{12, 3},
|
||||
{13, 4},
|
||||
{14, 5},
|
||||
{15, 2},
|
||||
{ 0, 1},
|
||||
{ 1, 1},
|
||||
{ 2, 1},
|
||||
{ 3, 1},
|
||||
{ 4, 1},
|
||||
{ 5, 2},
|
||||
{ 6, 2},
|
||||
{ 7, 2},
|
||||
{ 8, 2},
|
||||
{ 9, 2},
|
||||
{10, 3},
|
||||
{11, 3},
|
||||
{12, 3},
|
||||
{13, 4},
|
||||
{14, 5},
|
||||
{16, 1},
|
||||
{16, -1},
|
||||
{}
|
||||
};
|
||||
|
||||
+8
-10
@@ -23,11 +23,13 @@
|
||||
#include "constants/moves.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
|
||||
extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
|
||||
|
||||
// this file's functions
|
||||
static void ClearDaycareMonMail(struct DayCareMail *mail);
|
||||
static void ClearDaycareMonMail(struct DaycareMail *mail);
|
||||
static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
|
||||
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
|
||||
static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y);
|
||||
static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y);
|
||||
|
||||
// RAM buffers used to assist with BuildEggMoveset()
|
||||
EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
|
||||
@@ -120,7 +122,7 @@ u8 CountPokemonInDaycare(struct DayCare *daycare)
|
||||
return count;
|
||||
}
|
||||
|
||||
void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail)
|
||||
void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *daycareMail)
|
||||
{
|
||||
u8 i;
|
||||
u8 numDaycareMons = 0;
|
||||
@@ -131,13 +133,9 @@ void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDay
|
||||
{
|
||||
numDaycareMons++;
|
||||
if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM) == ITEM_NONE)
|
||||
{
|
||||
daycareMail->holdsItem[i] = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
daycareMail->holdsItem[i] = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -154,7 +152,7 @@ static s8 Daycare_FindEmptySpot(struct DayCare *daycare)
|
||||
|
||||
for (i = 0; i < DAYCARE_MON_COUNT; i++)
|
||||
{
|
||||
if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) == 0)
|
||||
if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) == SPECIES_NONE)
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -349,7 +347,7 @@ u8 GetNumLevelsGainedFromDaycare(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ClearDaycareMonMail(struct DayCareMail *mail)
|
||||
static void ClearDaycareMonMail(struct DaycareMail *mail)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -1228,7 +1226,7 @@ static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycare
|
||||
DaycareAddTextPrinter(windowId, lvlText, x, y);
|
||||
}
|
||||
|
||||
static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
|
||||
static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y)
|
||||
{
|
||||
if (daycareSlotId < (unsigned) DAYCARE_MON_COUNT)
|
||||
{
|
||||
|
||||
+19
-19
@@ -147,7 +147,7 @@ static void ReturnToActionsMenuFromCategories(u8 taskId);
|
||||
static void ExitTraderDecorationMenu(u8 taskId);
|
||||
static void CopyDecorationMenuItemName(u8 *dest, u16 decoration);
|
||||
static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct ListMenu *menu);
|
||||
static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex, u8 y);
|
||||
static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, u32 itemIndex, u8 y);
|
||||
static void ShowDecorationItemsWindow(u8 taskId);
|
||||
static void HandleDecorationItemsMenuInput(u8 taskId);
|
||||
static void PrintDecorationItemDescription(s32 itemIndex);
|
||||
@@ -912,9 +912,9 @@ static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct L
|
||||
PrintDecorationItemDescription(itemIndex);
|
||||
}
|
||||
|
||||
static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex, u8 y)
|
||||
static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, u32 itemIndex, u8 y)
|
||||
{
|
||||
if (itemIndex != -2)
|
||||
if (itemIndex != LIST_CANCEL)
|
||||
{
|
||||
if (IsDecorationIndexInSecretBase(itemIndex + 1) == TRUE)
|
||||
BlitMenuInfoIcon(windowId, MENU_INFO_ICON_BALL_RED, 92, y + 2);
|
||||
@@ -1382,8 +1382,8 @@ static void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGrap
|
||||
gFieldCamera.spriteId = gpu_pal_decompress_alloc_tag_and_upload(data, decor);
|
||||
gSprites[gFieldCamera.spriteId].oam.priority = 1;
|
||||
gSprites[gFieldCamera.spriteId].callback = InitializePuttingAwayCursorSprite;
|
||||
gSprites[gFieldCamera.spriteId].pos1.x = sDecorationMovementInfo[data->decoration->shape].cameraX;
|
||||
gSprites[gFieldCamera.spriteId].pos1.y = sDecorationMovementInfo[data->decoration->shape].cameraY;
|
||||
gSprites[gFieldCamera.spriteId].x = sDecorationMovementInfo[data->decoration->shape].cameraX;
|
||||
gSprites[gFieldCamera.spriteId].y = sDecorationMovementInfo[data->decoration->shape].cameraY;
|
||||
}
|
||||
|
||||
static void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data)
|
||||
@@ -1650,9 +1650,9 @@ static void PlaceDecoration(u8 taskId)
|
||||
ScriptContext1_SetupScript(SecretBase_EventScript_SetDecoration);
|
||||
}
|
||||
|
||||
gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx1].y += 2;
|
||||
if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
|
||||
TV_PutSecretBaseVisitOnTheAir();
|
||||
TryPutSecretBaseVisitOnAir();
|
||||
|
||||
CancelDecorating_(taskId);
|
||||
}
|
||||
@@ -2121,8 +2121,8 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
|
||||
if (spriteId == MAX_SPRITES)
|
||||
return MAX_SPRITES;
|
||||
|
||||
gSprites[spriteId].pos2.x = x + 4;
|
||||
gSprites[spriteId].pos2.y = y + 4;
|
||||
gSprites[spriteId].x2 = x + 4;
|
||||
gSprites[spriteId].y2 = y + 4;
|
||||
}
|
||||
else if (gDecorIconTable[decor][0] == NULL)
|
||||
{
|
||||
@@ -2130,11 +2130,11 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
|
||||
if (spriteId == MAX_SPRITES)
|
||||
return MAX_SPRITES;
|
||||
|
||||
gSprites[spriteId].pos2.x = x;
|
||||
gSprites[spriteId].x2 = x;
|
||||
if (decor == DECOR_SILVER_SHIELD || decor == DECOR_GOLD_SHIELD)
|
||||
gSprites[spriteId].pos2.y = y - 4;
|
||||
gSprites[spriteId].y2 = y - 4;
|
||||
else
|
||||
gSprites[spriteId].pos2.y = y;
|
||||
gSprites[spriteId].y2 = y;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2142,8 +2142,8 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
|
||||
if (spriteId == MAX_SPRITES)
|
||||
return MAX_SPRITES;
|
||||
|
||||
gSprites[spriteId].pos2.x = x + 4;
|
||||
gSprites[spriteId].pos2.y = y + 4;
|
||||
gSprites[spriteId].x2 = x + 4;
|
||||
gSprites[spriteId].y2 = y + 4;
|
||||
}
|
||||
|
||||
gSprites[spriteId].oam.priority = priority;
|
||||
@@ -2260,7 +2260,7 @@ static void Task_PutAwayDecoration(u8 taskId)
|
||||
StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC);
|
||||
DisplayItemMessageOnField(taskId, gStringVar4, ContinuePuttingAwayDecorationsPrompt);
|
||||
if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
|
||||
TV_PutSecretBaseVisitOnTheAir();
|
||||
TryPutSecretBaseVisitOnAir();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2332,8 +2332,8 @@ static void ContinuePuttingAwayDecorations(u8 taskId)
|
||||
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx1].callback = InitializeCameraSprite1;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = 136;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = 72;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].x = 136;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].y = 72;
|
||||
gTasks[taskId].tButton = 0;
|
||||
gTasks[taskId].func = Task_SelectLocation;
|
||||
}
|
||||
@@ -2449,8 +2449,8 @@ static void SetCameraSpritePosition(u8 x, u8 y)
|
||||
{
|
||||
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = TRUE;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = x * 16 + 136;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = y * 16 + 72;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].x = x * 16 + 136;
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].y = y * 16 + 72;
|
||||
}
|
||||
|
||||
static bool8 DecorationIsUnderCursor(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data)
|
||||
|
||||
+13
-13
@@ -3913,11 +3913,11 @@ static u32 DoDodrioMissedAnim(struct Sprite *sprite)
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->pos1.x += x;
|
||||
sprite->x += x;
|
||||
if (++sprite->sTimer >= 40)
|
||||
{
|
||||
sprite->sState = 0;
|
||||
sprite->pos1.x = GetDodrioXPos(0, GetNumPlayers());
|
||||
sprite->x = GetDodrioXPos(0, GetNumPlayers());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3995,8 +3995,8 @@ static void InitStatusBarPos(void)
|
||||
for (i = 0; i < NUM_STATUS_SQUARES; i++)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[sStatusBar->spriteIds[i]];
|
||||
sprite->pos1.x = (i * 16) + 48;
|
||||
sprite->pos1.y = -8 - (i * 8);
|
||||
sprite->x = (i * 16) + 48;
|
||||
sprite->y = -8 - (i * 8);
|
||||
sStatusBar->entered[i] = FALSE;
|
||||
}
|
||||
}
|
||||
@@ -4057,11 +4057,11 @@ static bool32 DoStatusBarIntro(void)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[sStatusBar->spriteIds[i]];
|
||||
sStatusBar->yChange[i] = 2;
|
||||
if (sStatusBar->entered[i] && sprite->pos1.y == 8)
|
||||
if (sStatusBar->entered[i] && sprite->y == 8)
|
||||
continue;
|
||||
|
||||
animActive = TRUE;
|
||||
if (sprite->pos1.y == 8)
|
||||
if (sprite->y == 8)
|
||||
{
|
||||
if (sStatusBar->entered[i])
|
||||
continue;
|
||||
@@ -4072,7 +4072,7 @@ static bool32 DoStatusBarIntro(void)
|
||||
sStatusBar->yChange[i] = -16;
|
||||
PlaySE(SE_CLICK);
|
||||
}
|
||||
sprite->pos1.y += sStatusBar->yChange[i];
|
||||
sprite->y += sStatusBar->yChange[i];
|
||||
}
|
||||
|
||||
if (animActive)
|
||||
@@ -4245,7 +4245,7 @@ static void SetBerryIconsInvisibility(bool8 invisible)
|
||||
|
||||
static void SetBerryYPos(u8 id, u8 y)
|
||||
{
|
||||
gSprites[*sBerrySpriteIds[id]].pos1.y = y * 8;
|
||||
gSprites[*sBerrySpriteIds[id]].y = y * 8;
|
||||
}
|
||||
|
||||
static void SetBerryAnim(u16 id, u8 animNum)
|
||||
@@ -4256,8 +4256,8 @@ static void SetBerryAnim(u16 id, u8 animNum)
|
||||
// Unused
|
||||
static void UnusedSetSpritePos(u8 spriteId)
|
||||
{
|
||||
gSprites[spriteId].pos1.x = 20 * spriteId + 50;
|
||||
gSprites[spriteId].pos1.y = 50;
|
||||
gSprites[spriteId].x = 20 * spriteId + 50;
|
||||
gSprites[spriteId].y = 50;
|
||||
}
|
||||
|
||||
// Gamefreak made a mistake there and goes out of bounds for the data array as it holds 8 elements
|
||||
@@ -4279,7 +4279,7 @@ static void SpriteCB_Cloud(struct Sprite *sprite)
|
||||
{
|
||||
if (++sCloudSpriteIds[i][1] > moveDelays[i])
|
||||
{
|
||||
sprite->pos1.x--;
|
||||
sprite->x--;
|
||||
sCloudSpriteIds[i][1] = 0;
|
||||
}
|
||||
}
|
||||
@@ -4332,8 +4332,8 @@ static void ResetCloudPos(void)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[*sCloudSpriteIds[i]];
|
||||
sprite->sFrozen = TRUE;
|
||||
sprite->pos1.x = sCloudStartCoords[i][0];
|
||||
sprite->pos1.y = sCloudStartCoords[i][1];
|
||||
sprite->x = sCloudStartCoords[i][0];
|
||||
sprite->y = sCloudStartCoords[i][1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+41
-41
@@ -1474,8 +1474,8 @@ void ShowEasyChatScreen(void)
|
||||
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006];
|
||||
displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
|
||||
break;
|
||||
case EASY_CHAT_TYPE_UNK_8:
|
||||
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words;
|
||||
case EASY_CHAT_TYPE_DUMMY_SHOW:
|
||||
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].dummy.words;
|
||||
displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
|
||||
break;
|
||||
case EASY_CHAT_TYPE_TRENDY_PHRASE:
|
||||
@@ -4635,17 +4635,17 @@ static void SpriteCB_Cursor(struct Sprite *sprite)
|
||||
if (++sprite->sDelayTimer > 2)
|
||||
{
|
||||
sprite->sDelayTimer = 0;
|
||||
if (++sprite->pos2.x > 0)
|
||||
sprite->pos2.x = -6;
|
||||
if (++sprite->x2 > 0)
|
||||
sprite->x2 = -6;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void SetMainCursorPos(u8 x, u8 y)
|
||||
{
|
||||
sScreenControl->mainCursorSprite->pos1.x = x;
|
||||
sScreenControl->mainCursorSprite->pos1.y = y;
|
||||
sScreenControl->mainCursorSprite->pos2.x = 0;
|
||||
sScreenControl->mainCursorSprite->x = x;
|
||||
sScreenControl->mainCursorSprite->y = y;
|
||||
sScreenControl->mainCursorSprite->x2 = 0;
|
||||
sScreenControl->mainCursorSprite->sDelayTimer = 0;
|
||||
}
|
||||
|
||||
@@ -4653,7 +4653,7 @@ static void StopMainCursorAnim(void)
|
||||
{
|
||||
sScreenControl->mainCursorSprite->sDelayTimer = 0;
|
||||
sScreenControl->mainCursorSprite->sAnimateCursor = FALSE;
|
||||
sScreenControl->mainCursorSprite->pos2.x = 0;
|
||||
sScreenControl->mainCursorSprite->x2 = 0;
|
||||
}
|
||||
|
||||
static void StartMainCursorAnim(void)
|
||||
@@ -4665,11 +4665,11 @@ static void CreateRectangleCursorSprites(void)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_RectangleCursor, 0, 0, 3);
|
||||
sScreenControl->rectangleCursorSpriteRight = &gSprites[spriteId];
|
||||
sScreenControl->rectangleCursorSpriteRight->pos2.x = 32;
|
||||
sScreenControl->rectangleCursorSpriteRight->x2 = 32;
|
||||
|
||||
spriteId = CreateSprite(&sSpriteTemplate_RectangleCursor, 0, 0, 3);
|
||||
sScreenControl->rectangleCursorSpriteLeft = &gSprites[spriteId];
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos2.x = -32;
|
||||
sScreenControl->rectangleCursorSpriteLeft->x2 = -32;
|
||||
|
||||
sScreenControl->rectangleCursorSpriteRight->hFlip = TRUE;
|
||||
UpdateRectangleCursorPos();
|
||||
@@ -4705,23 +4705,23 @@ static void SetRectangleCursorPos_GroupMode(s8 column, s8 row)
|
||||
{
|
||||
// In group name window
|
||||
StartSpriteAnim(sScreenControl->rectangleCursorSpriteRight, RECTCURSOR_ANIM_ON_GROUP);
|
||||
sScreenControl->rectangleCursorSpriteRight->pos1.x = column * 84 + 58;
|
||||
sScreenControl->rectangleCursorSpriteRight->pos1.y = row * 16 + 96;
|
||||
sScreenControl->rectangleCursorSpriteRight->x = column * 84 + 58;
|
||||
sScreenControl->rectangleCursorSpriteRight->y = row * 16 + 96;
|
||||
|
||||
StartSpriteAnim(sScreenControl->rectangleCursorSpriteLeft, RECTCURSOR_ANIM_ON_GROUP);
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos1.x = column * 84 + 58;
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos1.y = row * 16 + 96;
|
||||
sScreenControl->rectangleCursorSpriteLeft->x = column * 84 + 58;
|
||||
sScreenControl->rectangleCursorSpriteLeft->y = row * 16 + 96;
|
||||
}
|
||||
else
|
||||
{
|
||||
// In button window
|
||||
StartSpriteAnim(sScreenControl->rectangleCursorSpriteRight, RECTCURSOR_ANIM_ON_BUTTON);
|
||||
sScreenControl->rectangleCursorSpriteRight->pos1.x = 216;
|
||||
sScreenControl->rectangleCursorSpriteRight->pos1.y = row * 16 + 112;
|
||||
sScreenControl->rectangleCursorSpriteRight->x = 216;
|
||||
sScreenControl->rectangleCursorSpriteRight->y = row * 16 + 112;
|
||||
|
||||
StartSpriteAnim(sScreenControl->rectangleCursorSpriteLeft, RECTCURSOR_ANIM_ON_BUTTON);
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos1.x = 216;
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos1.y = row * 16 + 112;
|
||||
sScreenControl->rectangleCursorSpriteLeft->x = 216;
|
||||
sScreenControl->rectangleCursorSpriteLeft->y = row * 16 + 112;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4748,23 +4748,23 @@ static void SetRectangleCursorPos_AlphabetMode(s8 column, s8 row)
|
||||
}
|
||||
|
||||
StartSpriteAnim(sScreenControl->rectangleCursorSpriteRight, anim);
|
||||
sScreenControl->rectangleCursorSpriteRight->pos1.x = x;
|
||||
sScreenControl->rectangleCursorSpriteRight->pos1.y = y;
|
||||
sScreenControl->rectangleCursorSpriteRight->x = x;
|
||||
sScreenControl->rectangleCursorSpriteRight->y = y;
|
||||
|
||||
StartSpriteAnim(sScreenControl->rectangleCursorSpriteLeft, anim);
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos1.x = x;
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos1.y = y;
|
||||
sScreenControl->rectangleCursorSpriteLeft->x = x;
|
||||
sScreenControl->rectangleCursorSpriteLeft->y = y;
|
||||
}
|
||||
else
|
||||
{
|
||||
// In button window
|
||||
StartSpriteAnim(sScreenControl->rectangleCursorSpriteRight, RECTCURSOR_ANIM_ON_BUTTON);
|
||||
sScreenControl->rectangleCursorSpriteRight->pos1.x = 216;
|
||||
sScreenControl->rectangleCursorSpriteRight->pos1.y = row * 16 + 112;
|
||||
sScreenControl->rectangleCursorSpriteRight->x = 216;
|
||||
sScreenControl->rectangleCursorSpriteRight->y = row * 16 + 112;
|
||||
|
||||
StartSpriteAnim(sScreenControl->rectangleCursorSpriteLeft, RECTCURSOR_ANIM_ON_BUTTON);
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos1.x = 216;
|
||||
sScreenControl->rectangleCursorSpriteLeft->pos1.y = row * 16 + 112;
|
||||
sScreenControl->rectangleCursorSpriteLeft->x = 216;
|
||||
sScreenControl->rectangleCursorSpriteLeft->y = row * 16 + 112;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4784,8 +4784,8 @@ static void SpriteCB_WordSelectCursor(struct Sprite *sprite)
|
||||
if (++sprite->sDelayTimer > 2)
|
||||
{
|
||||
sprite->sDelayTimer = 0;
|
||||
if (++sprite->pos2.x > 0)
|
||||
sprite->pos2.x = -6;
|
||||
if (++sprite->x2 > 0)
|
||||
sprite->x2 = -6;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4804,9 +4804,9 @@ static void SetWordSelectCursorPos(u8 x, u8 y)
|
||||
{
|
||||
if (sScreenControl->wordSelectCursorSprite)
|
||||
{
|
||||
sScreenControl->wordSelectCursorSprite->pos1.x = x;
|
||||
sScreenControl->wordSelectCursorSprite->pos1.y = y;
|
||||
sScreenControl->wordSelectCursorSprite->pos2.x = 0;
|
||||
sScreenControl->wordSelectCursorSprite->x = x;
|
||||
sScreenControl->wordSelectCursorSprite->y = y;
|
||||
sScreenControl->wordSelectCursorSprite->x2 = 0;
|
||||
sScreenControl->wordSelectCursorSprite->sDelayTimer = 0;
|
||||
}
|
||||
}
|
||||
@@ -4824,7 +4824,7 @@ static void CreateSideWindowSprites(void)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&sSpriteTemplate_ButtonWindow, 208, 128, 6);
|
||||
sScreenControl->buttonWindowSprite = &gSprites[spriteId];
|
||||
sScreenControl->buttonWindowSprite->pos2.x = -64;
|
||||
sScreenControl->buttonWindowSprite->x2 = -64;
|
||||
|
||||
spriteId = CreateSprite(&sSpriteTemplate_ModeWindow, 208, 80, 5);
|
||||
sScreenControl->modeWindowSprite = &gSprites[spriteId];
|
||||
@@ -4839,10 +4839,10 @@ static bool8 ShowSideWindow(void)
|
||||
return FALSE;
|
||||
case 0:
|
||||
// Slide button window on
|
||||
sScreenControl->buttonWindowSprite->pos2.x += 8;
|
||||
if (sScreenControl->buttonWindowSprite->pos2.x >= 0)
|
||||
sScreenControl->buttonWindowSprite->x2 += 8;
|
||||
if (sScreenControl->buttonWindowSprite->x2 >= 0)
|
||||
{
|
||||
sScreenControl->buttonWindowSprite->pos2.x = 0;
|
||||
sScreenControl->buttonWindowSprite->x2 = 0;
|
||||
|
||||
// Set mode window anim
|
||||
if (!GetInAlphabetMode())
|
||||
@@ -4881,8 +4881,8 @@ static bool8 DestroySideWindowSprites(void)
|
||||
sScreenControl->modeWindowState = 1;
|
||||
break;
|
||||
case 1:
|
||||
sScreenControl->buttonWindowSprite->pos2.x -= 8;
|
||||
if (sScreenControl->buttonWindowSprite->pos2.x <= -64)
|
||||
sScreenControl->buttonWindowSprite->x2 -= 8;
|
||||
if (sScreenControl->buttonWindowSprite->x2 <= -64)
|
||||
{
|
||||
DestroySprite(sScreenControl->modeWindowSprite);
|
||||
DestroySprite(sScreenControl->buttonWindowSprite);
|
||||
@@ -4947,14 +4947,14 @@ static void SetScrollIndicatorXPos(bool32 inWordSelect)
|
||||
if (!inWordSelect)
|
||||
{
|
||||
// Keyboard (only relevant for group mode, can't scroll in alphabet mode)
|
||||
sScreenControl->scrollIndicatorUpSprite->pos1.x = 96;
|
||||
sScreenControl->scrollIndicatorDownSprite->pos1.x = 96;
|
||||
sScreenControl->scrollIndicatorUpSprite->x = 96;
|
||||
sScreenControl->scrollIndicatorDownSprite->x = 96;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Word select
|
||||
sScreenControl->scrollIndicatorUpSprite->pos1.x = 120;
|
||||
sScreenControl->scrollIndicatorDownSprite->pos1.x = 120;
|
||||
sScreenControl->scrollIndicatorUpSprite->x = 120;
|
||||
sScreenControl->scrollIndicatorDownSprite->x = 120;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+15
-12
@@ -54,7 +54,7 @@ struct EggHatchData
|
||||
u8 textColor[3];
|
||||
};
|
||||
|
||||
extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
|
||||
extern const u32 gTradePlatform_Tilemap[];
|
||||
extern const u8 gText_HatchedFromEgg[];
|
||||
extern const u8 gText_NicknameHatchPrompt[];
|
||||
|
||||
@@ -546,7 +546,7 @@ static void CB2_EggHatch_0(void)
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
||||
LoadPalette(gTradeGba2_Pal, 0x10, 0xA0);
|
||||
LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0);
|
||||
CopyToBgTilemapBuffer(1, gUnknown_08331F60, 0x1000, 0);
|
||||
CopyToBgTilemapBuffer(1, gTradePlatform_Tilemap, 0x1000, 0);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -584,6 +584,9 @@ static void Task_EggHatchPlayBGM(u8 taskID)
|
||||
PlayBGM(MUS_EVOLUTION);
|
||||
DestroyTask(taskID);
|
||||
// UB: task is destroyed, yet the value is incremented
|
||||
#ifdef UBFIX
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
gTasks[taskID].data[0]++;
|
||||
}
|
||||
@@ -713,7 +716,7 @@ static void SpriteCB_Egg_0(struct Sprite* sprite)
|
||||
else
|
||||
{
|
||||
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[1], 1);
|
||||
sprite->x2 = Sin(sprite->data[1], 1);
|
||||
if (sprite->data[0] == 15)
|
||||
{
|
||||
PlaySE(SE_BALL);
|
||||
@@ -736,7 +739,7 @@ static void SpriteCB_Egg_1(struct Sprite* sprite)
|
||||
else
|
||||
{
|
||||
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[1], 2);
|
||||
sprite->x2 = Sin(sprite->data[1], 2);
|
||||
if (sprite->data[0] == 15)
|
||||
{
|
||||
PlaySE(SE_BALL);
|
||||
@@ -757,13 +760,13 @@ static void SpriteCB_Egg_2(struct Sprite* sprite)
|
||||
sprite->callback = SpriteCB_Egg_3;
|
||||
sprite->data[0] = 0;
|
||||
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
|
||||
gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0;
|
||||
gSprites[sEggHatchData->pokeSpriteID].pos2.y = 0;
|
||||
gSprites[sEggHatchData->pokeSpriteID].x2 = 0;
|
||||
gSprites[sEggHatchData->pokeSpriteID].y2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data[1], 2);
|
||||
sprite->x2 = Sin(sprite->data[1], 2);
|
||||
if (sprite->data[0] == 15)
|
||||
{
|
||||
PlaySE(SE_BALL);
|
||||
@@ -811,12 +814,12 @@ static void SpriteCB_Egg_5(struct Sprite* sprite)
|
||||
if (sprite->data[0] == 0)
|
||||
{
|
||||
gSprites[sEggHatchData->pokeSpriteID].invisible = FALSE;
|
||||
StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1);
|
||||
StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], BATTLER_AFFINE_EMERGE);
|
||||
}
|
||||
if (sprite->data[0] == 8)
|
||||
BeginNormalPaletteFade(PALETTES_ALL, -1, 0x10, 0, RGB_WHITEALPHA);
|
||||
if (sprite->data[0] <= 9)
|
||||
gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1;
|
||||
gSprites[sEggHatchData->pokeSpriteID].y -= 1;
|
||||
if (sprite->data[0] > 40)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
sprite->data[0]++;
|
||||
@@ -827,12 +830,12 @@ static void SpriteCB_EggShard(struct Sprite* sprite)
|
||||
sprite->data[4] += sprite->data[1];
|
||||
sprite->data[5] += sprite->data[2];
|
||||
|
||||
sprite->pos2.x = sprite->data[4] / 256;
|
||||
sprite->pos2.y = sprite->data[5] / 256;
|
||||
sprite->x2 = sprite->data[4] / 256;
|
||||
sprite->y2 = sprite->data[5] / 256;
|
||||
|
||||
sprite->data[2] += sprite->data[3];
|
||||
|
||||
if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0)
|
||||
if (sprite->y + sprite->y2 > sprite->y + 20 && sprite->data[2] > 0)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
|
||||
+269
-241
@@ -14,34 +14,64 @@
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/trainer_hill.h"
|
||||
|
||||
struct Unknown030012C8
|
||||
{
|
||||
u8 unk0[8];
|
||||
u32 *unk8;
|
||||
int unkC;
|
||||
int unk10;
|
||||
int unk14;
|
||||
enum {
|
||||
EREADER_XFR_STATE_INIT = 0,
|
||||
EREADER_XFR_STATE_HANDSHAKE,
|
||||
EREADER_XFR_STATE_START,
|
||||
EREADER_XFR_STATE_TRANSFER,
|
||||
EREADER_XFR_STATE_TRANSFER_DONE,
|
||||
EREADER_XFR_STATE_CHECKSUM,
|
||||
EREADER_XFR_STATE_DONE
|
||||
};
|
||||
|
||||
static void sub_81D4170(void);
|
||||
static u16 sub_81D3EE8(u8);
|
||||
static void sub_81D413C(void);
|
||||
static void sub_81D414C(void);
|
||||
static void sub_81D3F1C(u32, u32*, u32*);
|
||||
static void sub_81D3F68(void);
|
||||
#define EREADER_XFER_EXE 1
|
||||
#define EREADER_XFER_CHK 2
|
||||
#define EREADER_XFER_SHIFT 0
|
||||
#define EREADER_XFER_MASK 3
|
||||
|
||||
static struct Unknown030012C8 gUnknown_030012C8;
|
||||
static u16 gUnknown_030012E0;
|
||||
static u16 gUnknown_030012E2;
|
||||
static u16 gUnknown_030012E4;
|
||||
static u16 gUnknown_030012E6;
|
||||
static u32 gUnknown_030012E8;
|
||||
static u16 gUnknown_030012EC;
|
||||
static u16 gUnknown_030012EE;
|
||||
static u16 gUnknown_030012F0;
|
||||
static u16 gUnknown_030012F2;
|
||||
static u16 gUnknown_030012F4;
|
||||
#define EREADER_CANCEL_TIMEOUT 1
|
||||
#define EREADER_CANCEL_KEY 2
|
||||
#define EREADER_CANCEL_MASK 0xC
|
||||
#define EREADER_CANCEL_SHIFT 2
|
||||
|
||||
#define EREADER_CHECKSUM_OK 1
|
||||
#define EREADER_CHECKSUM_ERR 2
|
||||
#define EREADER_CHECKSUM_MASK 0x30
|
||||
#define EREADER_CHECKSUM_SHIFT 4
|
||||
|
||||
struct SendRecvMgr
|
||||
{
|
||||
bool8 isParent;
|
||||
u8 state; // EREADER_XFR_STATE_*
|
||||
u8 xferState; // EREADER_XFER_*
|
||||
u8 checksumResult; // EREADER_CHECKSUM_*
|
||||
u8 cancellationReason; // EREADER_CANCEL_*
|
||||
u32 *data; // Payload source or destination
|
||||
int cursor; // Index of the next word
|
||||
int size; // Last word index
|
||||
int checksum;
|
||||
};
|
||||
|
||||
static void GetKeyInput(void);
|
||||
static u16 DetermineSendRecvState(u8);
|
||||
static void EnableSio(void);
|
||||
static void DisableTm3(void);
|
||||
static void SetUpTransferManager(size_t, const void *, void *);
|
||||
static void StartTm3(void);
|
||||
|
||||
static struct SendRecvMgr sSendRecvMgr;
|
||||
static u16 sJoyNewOrRepeated;
|
||||
static u16 sJoyNew;
|
||||
static u16 sSendRecvStatus;
|
||||
static u16 sCounter1;
|
||||
static u32 sCounter2;
|
||||
static u16 sSavedIme;
|
||||
static u16 sSavedIe;
|
||||
static u16 sSavedTm3Cnt;
|
||||
static u16 sSavedSioCnt;
|
||||
static u16 sSavedRCnt;
|
||||
|
||||
static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = {
|
||||
[0] = {
|
||||
@@ -390,217 +420,217 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static u8 sub_81D38D4(void)
|
||||
static u8 GetTrainerHillUnkVal(void)
|
||||
{
|
||||
return (gSaveBlock1Ptr->trainerHill.unused + 1) % 256;
|
||||
}
|
||||
|
||||
static bool32 Struct_EReaderTrainerHillTrainer_ValidateChecksum(struct EReaderTrainerHillTrainer *arg0)
|
||||
static bool32 ValidateTrainerChecksum(struct EReaderTrainerHillTrainer * hillTrainer)
|
||||
{
|
||||
int checksum = CalcByteArraySum((u8 *)arg0, 0x270);
|
||||
if (checksum != arg0->checksum)
|
||||
int checksum = CalcByteArraySum((u8 *)hillTrainer, offsetof(typeof(*hillTrainer), checksum));
|
||||
if (checksum != hillTrainer->checksum)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer)
|
||||
bool8 ValidateTrainerHillData(struct EReaderTrainerHillSet * hillSet)
|
||||
{
|
||||
u32 i;
|
||||
u32 checksum;
|
||||
int var0 = buffer->count;
|
||||
if (var0 < 1 || var0 > 8)
|
||||
int numTrainers = hillSet->numTrainers;
|
||||
|
||||
// Validate number of trainers
|
||||
if (numTrainers < 1 || numTrainers > NUM_TRAINER_HILL_TRAINERS)
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < var0; i++)
|
||||
// Validate trainers
|
||||
for (i = 0; i < numTrainers; i++)
|
||||
{
|
||||
if (!Struct_EReaderTrainerHillTrainer_ValidateChecksum(&buffer->unk_8[i]))
|
||||
if (!ValidateTrainerChecksum(&hillSet->trainers[i]))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
checksum = CalcByteArraySum((u8 *)buffer->unk_8, var0 * sizeof(struct EReaderTrainerHillTrainer));
|
||||
if (checksum != buffer->checksum)
|
||||
// Validate checksum
|
||||
checksum = CalcByteArraySum((u8 *)hillSet->trainers, numTrainers * sizeof(struct EReaderTrainerHillTrainer));
|
||||
if (checksum != hillSet->checksum)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
|
||||
static bool32 ValidateTrainerHillChecksum(struct EReaderTrainerHillSet *hillSet)
|
||||
{
|
||||
u32 checksum;
|
||||
int var0 = buffer->count;
|
||||
if (var0 < 1 || var0 > 8)
|
||||
int numTrainers = hillSet->numTrainers;
|
||||
if (numTrainers < 1 || numTrainers > NUM_TRAINER_HILL_TRAINERS)
|
||||
return FALSE;
|
||||
|
||||
checksum = CalcByteArraySum((u8 *)buffer->unk_8, sizeof(struct EReaderTrainerHillSet) - offsetof(struct EReaderTrainerHillSet, unk_8));
|
||||
if (checksum != buffer->checksum)
|
||||
checksum = CalcByteArraySum((u8 *)hillSet->trainers, sizeof(struct EReaderTrainerHillSet) - offsetof(struct EReaderTrainerHillSet, trainers));
|
||||
if (checksum != hillSet->checksum)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *ttdata, struct TrHillTag *buffer2)
|
||||
static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrHillTag * hillTag)
|
||||
{
|
||||
int i;
|
||||
|
||||
AGB_ASSERT_EX(ttdata->dummy == 0, "cereader_tool.c", 450);
|
||||
AGB_ASSERT_EX(ttdata->id == 0, "cereader_tool.c", 452);
|
||||
AGB_ASSERT_EX(hillSet->dummy == 0, "cereader_tool.c", 450);
|
||||
AGB_ASSERT_EX(hillSet->id == 0, "cereader_tool.c", 452);
|
||||
|
||||
memset(buffer2, 0, 0x1000);
|
||||
buffer2->numTrainers = ttdata->count;
|
||||
buffer2->unused1 = sub_81D38D4();
|
||||
buffer2->numFloors = (ttdata->count + 1) / 2;
|
||||
memset(hillTag, 0, SECTOR_SIZE);
|
||||
hillTag->numTrainers = hillSet->numTrainers;
|
||||
hillTag->unused1 = GetTrainerHillUnkVal();
|
||||
hillTag->numFloors = (hillSet->numTrainers + 1) / TRAINER_HILL_TRAINERS_PER_FLOOR;
|
||||
|
||||
for (i = 0; i < ttdata->count; i++)
|
||||
for (i = 0; i < hillSet->numTrainers; i++)
|
||||
{
|
||||
if (!(i & 1))
|
||||
{
|
||||
buffer2->floors[i / 2].trainerNum1 = ttdata->unk_8[i].unk0;
|
||||
buffer2->floors[i / 2].display = ttdata->unk_8[i].unk14C;
|
||||
buffer2->floors[i / 2].trainers[0] = ttdata->unk_8[i].unk4;
|
||||
hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum1 = hillSet->trainers[i].trainerNum;
|
||||
hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].display = hillSet->trainers[i].display;
|
||||
hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[0] = hillSet->trainers[i].trainer;
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer2->floors[i / 2].trainerNum2 = ttdata->unk_8[i].unk0;
|
||||
buffer2->floors[i / 2].trainers[1] = ttdata->unk_8[i].unk4;
|
||||
hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum2 = hillSet->trainers[i].trainerNum;
|
||||
hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = hillSet->trainers[i].trainer;
|
||||
}
|
||||
}
|
||||
|
||||
if (i & 1)
|
||||
{
|
||||
buffer2->floors[i / 2].trainers[1] = sTrainerHillTrainerTemplates_JP[i / 2];
|
||||
hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = sTrainerHillTrainerTemplates_JP[i / TRAINER_HILL_TRAINERS_PER_FLOOR];
|
||||
}
|
||||
|
||||
buffer2->checksum = CalcByteArraySum((u8 *)buffer2->floors, 4 * sizeof(struct TrHillFloor));
|
||||
if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != SAVE_STATUS_OK)
|
||||
hillTag->checksum = CalcByteArraySum((u8 *)hillTag->floors, NUM_TRAINER_HILL_FLOORS * sizeof(struct TrHillFloor));
|
||||
if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)hillTag) != SAVE_STATUS_OK)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0)
|
||||
bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet * hillSet)
|
||||
{
|
||||
void *var0 = AllocZeroed(0x1000);
|
||||
bool32 result = TryWriteTrainerHill_r(arg0, var0);
|
||||
Free(var0);
|
||||
void *buffer = AllocZeroed(SECTOR_SIZE);
|
||||
bool32 result = TryWriteTrainerHill_Internal(hillSet, buffer);
|
||||
Free(buffer);
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool32 TryReadTrainerHill_r(struct EReaderTrainerHillSet *dst, u8 *buffer)
|
||||
static bool32 TryReadTrainerHill_Internal(struct EReaderTrainerHillSet * dest, u8 * buffer)
|
||||
{
|
||||
if (TryReadSpecialSaveSection(SECTOR_ID_TRAINER_HILL, buffer) != SAVE_STATUS_OK)
|
||||
return FALSE;
|
||||
|
||||
memcpy(dst, buffer, sizeof(struct EReaderTrainerHillSet));
|
||||
if (!TrainerHill_VerifyChecksum(dst))
|
||||
memcpy(dest, buffer, sizeof(struct EReaderTrainerHillSet));
|
||||
if (!ValidateTrainerHillChecksum(dest))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool32 TryReadTrainerHill(struct EReaderTrainerHillSet *arg0)
|
||||
static bool32 TryReadTrainerHill(struct EReaderTrainerHillSet * hillSet)
|
||||
{
|
||||
u8 *var0 = AllocZeroed(0x1000);
|
||||
bool32 result = TryReadTrainerHill_r(arg0, var0);
|
||||
Free(var0);
|
||||
u8 *buffer = AllocZeroed(SECTOR_SIZE);
|
||||
bool32 result = TryReadTrainerHill_Internal(hillSet, buffer);
|
||||
Free(buffer);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool32 ReadTrainerHillAndValidate(void)
|
||||
{
|
||||
struct EReaderTrainerHillSet *var0 = AllocZeroed(0x1000);
|
||||
bool32 result = TryReadTrainerHill(var0);
|
||||
Free(var0);
|
||||
struct EReaderTrainerHillSet *hillSet = AllocZeroed(SECTOR_SIZE);
|
||||
bool32 result = TryReadTrainerHill(hillSet);
|
||||
Free(hillSet);
|
||||
return result;
|
||||
}
|
||||
|
||||
int EReader_Send(int arg0, u32 *arg1)
|
||||
int EReader_Send(int size, const void * src)
|
||||
{
|
||||
int result;
|
||||
u16 var0;
|
||||
int var1;
|
||||
int sendStatus;
|
||||
|
||||
EReaderHelper_SaveRegsState();
|
||||
while (1)
|
||||
{
|
||||
sub_81D4170();
|
||||
if (gUnknown_030012E2 & 2)
|
||||
GetKeyInput();
|
||||
if (sJoyNew & B_BUTTON)
|
||||
gShouldAdvanceLinkState = 2;
|
||||
|
||||
var1 = EReaderHandleTransfer(1, arg0, arg1, NULL);
|
||||
gUnknown_030012E4 = var1;
|
||||
if ((gUnknown_030012E4 & 0x13) == 0x10)
|
||||
sendStatus = EReaderHandleTransfer(1, size, src, NULL);
|
||||
sSendRecvStatus = sendStatus;
|
||||
if ((sSendRecvStatus & 0x13) == 0x10)
|
||||
{
|
||||
result = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gUnknown_030012E4 & 0x8)
|
||||
else if (sSendRecvStatus & 0x8)
|
||||
{
|
||||
result = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
var0 = gUnknown_030012E4 & 0x4;
|
||||
if (var0)
|
||||
else if (sSendRecvStatus & 0x4)
|
||||
{
|
||||
result = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
gShouldAdvanceLinkState = var0;
|
||||
VBlankIntrWait();
|
||||
else
|
||||
{
|
||||
gShouldAdvanceLinkState = 0;
|
||||
VBlankIntrWait();
|
||||
}
|
||||
}
|
||||
|
||||
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
|
||||
CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
|
||||
EReaderHelper_RestoreRegsState();
|
||||
return result;
|
||||
}
|
||||
|
||||
int EReader_Recv(u32 *arg0)
|
||||
int EReader_Recv(void * dest)
|
||||
{
|
||||
int result;
|
||||
u16 var0;
|
||||
int var1;
|
||||
int recvStatus;
|
||||
|
||||
EReaderHelper_SaveRegsState();
|
||||
while (1)
|
||||
{
|
||||
sub_81D4170();
|
||||
if (gUnknown_030012E2 & 2)
|
||||
GetKeyInput();
|
||||
if (sJoyNew & B_BUTTON)
|
||||
gShouldAdvanceLinkState = 2;
|
||||
|
||||
var1 = EReaderHandleTransfer(0, 0, NULL, arg0);
|
||||
gUnknown_030012E4 = var1;
|
||||
if ((gUnknown_030012E4 & 0x13) == 0x10)
|
||||
recvStatus = EReaderHandleTransfer(0, 0, NULL, dest);
|
||||
sSendRecvStatus = recvStatus;
|
||||
if ((sSendRecvStatus & 0x13) == 0x10)
|
||||
{
|
||||
result = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gUnknown_030012E4 & 0x8)
|
||||
else if (sSendRecvStatus & 0x8)
|
||||
{
|
||||
result = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
var0 = gUnknown_030012E4 & 0x4;
|
||||
if (var0)
|
||||
else if (sSendRecvStatus & 0x4)
|
||||
{
|
||||
result = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
gShouldAdvanceLinkState = var0;
|
||||
VBlankIntrWait();
|
||||
else
|
||||
{
|
||||
gShouldAdvanceLinkState = 0;
|
||||
VBlankIntrWait();
|
||||
}
|
||||
}
|
||||
|
||||
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
|
||||
CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
|
||||
EReaderHelper_RestoreRegsState();
|
||||
return result;
|
||||
}
|
||||
|
||||
static void sub_81D3C7C(void)
|
||||
static void CloseSerial(void)
|
||||
{
|
||||
REG_IME = 0;
|
||||
REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
|
||||
@@ -610,7 +640,7 @@ static void sub_81D3C7C(void)
|
||||
REG_IF = INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL;
|
||||
}
|
||||
|
||||
static void sub_81D3CBC(void)
|
||||
static void OpenSerialMulti(void)
|
||||
{
|
||||
REG_IME = 0;
|
||||
REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
|
||||
@@ -622,273 +652,271 @@ static void sub_81D3CBC(void)
|
||||
REG_IE |= INTR_FLAG_SERIAL;
|
||||
REG_IME = 1;
|
||||
|
||||
if (!gUnknown_030012C8.unk0[1])
|
||||
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
|
||||
if (sSendRecvMgr.state == 0)
|
||||
CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
|
||||
}
|
||||
|
||||
static void sub_81D3D34(void)
|
||||
static void OpenSerial32(void)
|
||||
{
|
||||
REG_RCNT = 0;
|
||||
REG_SIOCNT = SIO_32BIT_MODE | SIO_INTR_ENABLE;
|
||||
REG_SIOCNT |= SIO_MULTI_SD;
|
||||
gShouldAdvanceLinkState = 0;
|
||||
gUnknown_030012E6 = 0;
|
||||
gUnknown_030012E8 = 0;
|
||||
sCounter1 = 0;
|
||||
sCounter2 = 0;
|
||||
}
|
||||
|
||||
int EReaderHandleTransfer(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
|
||||
int EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBuffer)
|
||||
{
|
||||
switch (gUnknown_030012C8.unk0[1])
|
||||
switch (sSendRecvMgr.state)
|
||||
{
|
||||
case 0:
|
||||
sub_81D3CBC();
|
||||
gUnknown_030012C8.unk0[2] = 1;
|
||||
gUnknown_030012C8.unk0[1] = 1;
|
||||
case EREADER_XFR_STATE_INIT:
|
||||
OpenSerialMulti();
|
||||
sSendRecvMgr.xferState = EREADER_XFER_EXE;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_HANDSHAKE;
|
||||
break;
|
||||
case 1:
|
||||
if (sub_81D3EE8(arg0))
|
||||
sub_81D413C();
|
||||
case EREADER_XFR_STATE_HANDSHAKE:
|
||||
if (DetermineSendRecvState(mode))
|
||||
EnableSio();
|
||||
|
||||
if (gShouldAdvanceLinkState == 2)
|
||||
{
|
||||
gUnknown_030012C8.unk0[4] = 2;
|
||||
gUnknown_030012C8.unk0[1] = 6;
|
||||
sSendRecvMgr.cancellationReason = EREADER_CANCEL_KEY;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sub_81D3D34();
|
||||
sub_81D3F1C(arg1, arg2, arg3);
|
||||
gUnknown_030012C8.unk0[1] = 3;
|
||||
case EREADER_XFR_STATE_START:
|
||||
OpenSerial32();
|
||||
SetUpTransferManager(size, data, recvBuffer);
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_TRANSFER;
|
||||
// fall through
|
||||
case 3:
|
||||
case EREADER_XFR_STATE_TRANSFER:
|
||||
if (gShouldAdvanceLinkState == 2)
|
||||
{
|
||||
gUnknown_030012C8.unk0[4] = 2;
|
||||
gUnknown_030012C8.unk0[1] = 6;
|
||||
sSendRecvMgr.cancellationReason = EREADER_CANCEL_KEY;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_030012E6++;
|
||||
gUnknown_030012E8++;
|
||||
if (!gUnknown_030012C8.unk0[0] && gUnknown_030012E8 > 60)
|
||||
sCounter1++;
|
||||
sCounter2++;
|
||||
if (!sSendRecvMgr.isParent && sCounter2 > 60)
|
||||
{
|
||||
gUnknown_030012C8.unk0[4] = 1;
|
||||
gUnknown_030012C8.unk0[1] = 6;
|
||||
sSendRecvMgr.cancellationReason = EREADER_CANCEL_TIMEOUT;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
|
||||
if (gUnknown_030012C8.unk0[2] != 2)
|
||||
if (sSendRecvMgr.xferState != EREADER_XFER_CHK)
|
||||
{
|
||||
if (gUnknown_030012C8.unk0[0] && gUnknown_030012E6 > 2)
|
||||
if (sSendRecvMgr.isParent && sCounter1 > 2)
|
||||
{
|
||||
sub_81D413C();
|
||||
gUnknown_030012C8.unk0[2] = 2;
|
||||
EnableSio();
|
||||
sSendRecvMgr.xferState = EREADER_XFER_CHK;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_81D413C();
|
||||
gUnknown_030012C8.unk0[2] = 2;
|
||||
EnableSio();
|
||||
sSendRecvMgr.xferState = EREADER_XFER_CHK;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
sub_81D3CBC();
|
||||
gUnknown_030012C8.unk0[1] = 5;
|
||||
case EREADER_XFR_STATE_TRANSFER_DONE:
|
||||
OpenSerialMulti();
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_CHECKSUM;
|
||||
break;
|
||||
case 5:
|
||||
if (gUnknown_030012C8.unk0[0] == 1 && gUnknown_030012E6 > 2)
|
||||
sub_81D413C();
|
||||
case EREADER_XFR_STATE_CHECKSUM:
|
||||
if (sSendRecvMgr.isParent == TRUE && sCounter1 > 2)
|
||||
EnableSio();
|
||||
|
||||
if (++gUnknown_030012E6 > 60)
|
||||
if (++sCounter1 > 60)
|
||||
{
|
||||
gUnknown_030012C8.unk0[4] = 1;
|
||||
gUnknown_030012C8.unk0[1] = 6;
|
||||
sSendRecvMgr.cancellationReason = EREADER_CANCEL_TIMEOUT;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (gUnknown_030012C8.unk0[2])
|
||||
case EREADER_XFR_STATE_DONE:
|
||||
if (sSendRecvMgr.xferState)
|
||||
{
|
||||
sub_81D3C7C();
|
||||
gUnknown_030012C8.unk0[2] = 0;
|
||||
CloseSerial();
|
||||
sSendRecvMgr.xferState = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return gUnknown_030012C8.unk0[2] | (gUnknown_030012C8.unk0[4] << 2) | (gUnknown_030012C8.unk0[3] << 4);
|
||||
return (sSendRecvMgr.xferState << EREADER_XFER_SHIFT)
|
||||
| (sSendRecvMgr.cancellationReason << EREADER_CANCEL_SHIFT)
|
||||
| (sSendRecvMgr.checksumResult << EREADER_CHECKSUM_SHIFT);
|
||||
}
|
||||
|
||||
static u16 sub_81D3EE8(u8 arg0)
|
||||
static u16 DetermineSendRecvState(u8 mode)
|
||||
{
|
||||
u16 terminal = (*(vu32 *)REG_ADDR_SIOCNT) & (SIO_MULTI_SI | SIO_MULTI_SD);
|
||||
if (terminal == SIO_MULTI_SD && arg0)
|
||||
{
|
||||
gUnknown_030012C8.unk0[0] = 1;
|
||||
return 1;
|
||||
}
|
||||
bool16 resp;
|
||||
if ((*(vu32 *)REG_ADDR_SIOCNT & (SIO_MULTI_SI | SIO_MULTI_SD)) == SIO_MULTI_SD && mode)
|
||||
resp = sSendRecvMgr.isParent = TRUE;
|
||||
else
|
||||
{
|
||||
gUnknown_030012C8.unk0[0] = 0;
|
||||
return 0;
|
||||
}
|
||||
resp = sSendRecvMgr.isParent = FALSE;
|
||||
return resp;
|
||||
}
|
||||
|
||||
static void sub_81D3F1C(u32 arg0, u32 *arg1, u32 *arg2)
|
||||
static void SetUpTransferManager(size_t size, const void * data, void * recvBuffer)
|
||||
{
|
||||
if (gUnknown_030012C8.unk0[0])
|
||||
if (sSendRecvMgr.isParent)
|
||||
{
|
||||
REG_SIOCNT |= SIO_38400_BPS;
|
||||
gUnknown_030012C8.unk8 = arg1;
|
||||
REG_SIODATA32 = arg0;
|
||||
gUnknown_030012C8.unk10 = arg0 / 4 + 1;
|
||||
sub_81D3F68();
|
||||
sSendRecvMgr.data = (void *)data;
|
||||
REG_SIODATA32 = size;
|
||||
sSendRecvMgr.size = size / 4 + 1;
|
||||
StartTm3();
|
||||
}
|
||||
else
|
||||
{
|
||||
REG_SIOCNT = REG_SIOCNT;
|
||||
gUnknown_030012C8.unk8 = arg2;
|
||||
sSendRecvMgr.data = recvBuffer;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81D3F68(void)
|
||||
static void StartTm3(void)
|
||||
{
|
||||
REG_TM3CNT_L = 0xFDA7;
|
||||
REG_TM3CNT_L = -601;
|
||||
REG_TM3CNT_H = TIMER_INTR_ENABLE;
|
||||
REG_IME = 0;
|
||||
REG_IE |= INTR_FLAG_TIMER3;
|
||||
REG_IME = 1;
|
||||
}
|
||||
|
||||
void sub_81D3F9C(void)
|
||||
void EReaderHelper_Timer3Callback(void)
|
||||
{
|
||||
sub_81D414C();
|
||||
sub_81D413C();
|
||||
DisableTm3();
|
||||
EnableSio();
|
||||
}
|
||||
|
||||
void sub_81D3FAC(void)
|
||||
void EReaderHelper_SerialCallback(void)
|
||||
{
|
||||
u16 i, playerCount, k;
|
||||
u32 value;
|
||||
u16 var0;
|
||||
u16 recvBuffer[4];
|
||||
u16 i, cnt1, cnt2;
|
||||
u32 recv32;
|
||||
u16 recv[4];
|
||||
|
||||
switch (gUnknown_030012C8.unk0[1])
|
||||
switch (sSendRecvMgr.state)
|
||||
{
|
||||
case 1:
|
||||
case EREADER_XFR_STATE_HANDSHAKE:
|
||||
REG_SIOMLT_SEND = 0xCCD0; // Handshake id
|
||||
*(u64 *)recvBuffer = REG_SIOMLT_RECV;
|
||||
for (i = 0, playerCount = 0, k = 0; i < 4; i++)
|
||||
*(u64 *)recv = REG_SIOMLT_RECV;
|
||||
for (i = 0, cnt1 = 0, cnt2 = 0; i < 4; i++)
|
||||
{
|
||||
if (recvBuffer[i] == 0xCCD0)
|
||||
playerCount++;
|
||||
else if (recvBuffer[i] != 0xFFFF)
|
||||
k++;
|
||||
if (recv[i] == 0xCCD0)
|
||||
cnt1++;
|
||||
else if (recv[i] != 0xFFFF)
|
||||
cnt2++;
|
||||
}
|
||||
|
||||
if (playerCount == 2 && k == 0)
|
||||
gUnknown_030012C8.unk0[1] = 2;
|
||||
if (cnt1 == 2 && cnt2 == 0)
|
||||
sSendRecvMgr.state = 2;
|
||||
break;
|
||||
case 3:
|
||||
value = REG_SIODATA32;
|
||||
if (!gUnknown_030012C8.unkC && !gUnknown_030012C8.unk0[0])
|
||||
gUnknown_030012C8.unk10 = value / 4 + 1;
|
||||
case EREADER_XFR_STATE_TRANSFER:
|
||||
recv32 = REG_SIODATA32;
|
||||
// The first value sent by the EReader is the payload size
|
||||
if (!sSendRecvMgr.cursor && !sSendRecvMgr.isParent)
|
||||
sSendRecvMgr.size = recv32 / 4 + 1;
|
||||
|
||||
if (gUnknown_030012C8.unk0[0] == 1)
|
||||
if (sSendRecvMgr.isParent == TRUE)
|
||||
{
|
||||
if (gUnknown_030012C8.unkC < gUnknown_030012C8.unk10)
|
||||
// Send mode
|
||||
if (sSendRecvMgr.cursor < sSendRecvMgr.size)
|
||||
{
|
||||
REG_SIODATA32 = gUnknown_030012C8.unk8[gUnknown_030012C8.unkC];
|
||||
gUnknown_030012C8.unk14 += gUnknown_030012C8.unk8[gUnknown_030012C8.unkC];
|
||||
REG_SIODATA32 = sSendRecvMgr.data[sSendRecvMgr.cursor];
|
||||
sSendRecvMgr.checksum += sSendRecvMgr.data[sSendRecvMgr.cursor];
|
||||
}
|
||||
else
|
||||
{
|
||||
REG_SIODATA32 = gUnknown_030012C8.unk14;
|
||||
REG_SIODATA32 = sSendRecvMgr.checksum;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_030012C8.unkC > 0 && gUnknown_030012C8.unkC < gUnknown_030012C8.unk10 + 1)
|
||||
// Receive mode
|
||||
if (sSendRecvMgr.cursor > 0 && sSendRecvMgr.cursor < sSendRecvMgr.size + 1)
|
||||
{
|
||||
gUnknown_030012C8.unk8[gUnknown_030012C8.unkC - 1] = value;
|
||||
gUnknown_030012C8.unk14 += value;
|
||||
sSendRecvMgr.data[sSendRecvMgr.cursor - 1] = recv32;
|
||||
sSendRecvMgr.checksum += recv32;
|
||||
}
|
||||
else if (gUnknown_030012C8.unkC)
|
||||
else if (sSendRecvMgr.cursor)
|
||||
{
|
||||
if (gUnknown_030012C8.unk14 == value)
|
||||
gUnknown_030012C8.unk0[3] = 1;
|
||||
if (sSendRecvMgr.checksum == recv32)
|
||||
sSendRecvMgr.checksumResult = EREADER_CHECKSUM_OK;
|
||||
else
|
||||
gUnknown_030012C8.unk0[3] = 2;
|
||||
sSendRecvMgr.checksumResult = EREADER_CHECKSUM_ERR;
|
||||
}
|
||||
|
||||
gUnknown_030012E8 = 0;
|
||||
sCounter2 = 0;
|
||||
}
|
||||
|
||||
if (++gUnknown_030012C8.unkC < gUnknown_030012C8.unk10 + 2)
|
||||
if (++sSendRecvMgr.cursor < sSendRecvMgr.size + 2)
|
||||
{
|
||||
if (gUnknown_030012C8.unk0[0])
|
||||
if (sSendRecvMgr.isParent)
|
||||
REG_TM3CNT_H |= TIMER_ENABLE;
|
||||
else
|
||||
sub_81D413C();
|
||||
EnableSio();
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_030012C8.unk0[1] = 4;
|
||||
gUnknown_030012E6 = 0;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_TRANSFER_DONE;
|
||||
sCounter1 = 0;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (!gUnknown_030012C8.unk0[0])
|
||||
REG_SIOMLT_SEND = gUnknown_030012C8.unk0[3];
|
||||
case EREADER_XFR_STATE_CHECKSUM:
|
||||
if (!sSendRecvMgr.isParent)
|
||||
REG_SIOMLT_SEND = sSendRecvMgr.checksumResult;
|
||||
|
||||
*(u64 *)recvBuffer = REG_SIOMLT_RECV;
|
||||
var0 = recvBuffer[1] - 1;
|
||||
if (var0 < 2)
|
||||
*(vu64 *)recv = REG_SIOMLT_RECV;
|
||||
if (recv[1] == EREADER_CHECKSUM_OK || recv[1] == EREADER_CHECKSUM_ERR)
|
||||
{
|
||||
if (gUnknown_030012C8.unk0[0] == 1)
|
||||
gUnknown_030012C8.unk0[3] = recvBuffer[1];
|
||||
if (sSendRecvMgr.isParent == TRUE)
|
||||
sSendRecvMgr.checksumResult = recv[1]; // EReader has (in)validated the payload
|
||||
|
||||
gUnknown_030012C8.unk0[1] = 6;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81D413C(void)
|
||||
static void EnableSio(void)
|
||||
{
|
||||
REG_SIOCNT |= SIO_ENABLE;
|
||||
}
|
||||
|
||||
static void sub_81D414C(void)
|
||||
static void DisableTm3(void)
|
||||
{
|
||||
REG_TM3CNT_H &= ~TIMER_ENABLE;
|
||||
REG_TM3CNT_L = 0xFDA7;
|
||||
}
|
||||
|
||||
static void sub_81D4170(void)
|
||||
static void GetKeyInput(void)
|
||||
{
|
||||
int keysMask = REG_KEYINPUT ^ KEYS_MASK;
|
||||
gUnknown_030012E2 = keysMask & ~gUnknown_030012E0;
|
||||
gUnknown_030012E0 = keysMask;
|
||||
int rawKeys = REG_KEYINPUT ^ KEYS_MASK;
|
||||
sJoyNew = rawKeys & ~sJoyNewOrRepeated;
|
||||
sJoyNewOrRepeated = rawKeys;
|
||||
}
|
||||
|
||||
void EReaderHelper_SaveRegsState(void)
|
||||
{
|
||||
gUnknown_030012EC = REG_IME;
|
||||
gUnknown_030012EE = REG_IE;
|
||||
gUnknown_030012F0 = REG_TM3CNT_H;
|
||||
gUnknown_030012F2 = REG_SIOCNT;
|
||||
gUnknown_030012F4 = REG_RCNT;
|
||||
sSavedIme = REG_IME;
|
||||
sSavedIe = REG_IE;
|
||||
sSavedTm3Cnt = REG_TM3CNT_H;
|
||||
sSavedSioCnt = REG_SIOCNT;
|
||||
sSavedRCnt = REG_RCNT;
|
||||
}
|
||||
|
||||
void EReaderHelper_RestoreRegsState(void)
|
||||
{
|
||||
REG_IME = gUnknown_030012EC;
|
||||
REG_IE = gUnknown_030012EE;
|
||||
REG_TM3CNT_H = gUnknown_030012F0;
|
||||
REG_SIOCNT = gUnknown_030012F2;
|
||||
REG_RCNT = gUnknown_030012F4;
|
||||
REG_IME = sSavedIme;
|
||||
REG_IE = sSavedIe;
|
||||
REG_TM3CNT_H = sSavedTm3Cnt;
|
||||
REG_SIOCNT = sSavedSioCnt;
|
||||
REG_RCNT = sSavedRCnt;
|
||||
}
|
||||
|
||||
void sub_81D4238(void)
|
||||
void EReaderHelper_ClearSendRecvMgr(void)
|
||||
{
|
||||
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
|
||||
CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
|
||||
}
|
||||
|
||||
@@ -47,10 +47,10 @@ static void sub_81D4D50(struct Unk03006370 *arg0, int arg1, u32 *arg2)
|
||||
{
|
||||
volatile u16 backupIME = REG_IME;
|
||||
REG_IME = 0;
|
||||
gIntrTable[1] = sub_81D3FAC;
|
||||
gIntrTable[2] = sub_81D3F9C;
|
||||
gIntrTable[1] = EReaderHelper_SerialCallback;
|
||||
gIntrTable[2] = EReaderHelper_Timer3Callback;
|
||||
EReaderHelper_SaveRegsState();
|
||||
sub_81D4238();
|
||||
EReaderHelper_ClearSendRecvMgr();
|
||||
REG_IE |= INTR_FLAG_VCOUNT;
|
||||
REG_IME = backupIME;
|
||||
arg0->unk0 = 0;
|
||||
@@ -62,7 +62,7 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
|
||||
{
|
||||
volatile u16 backupIME = REG_IME;
|
||||
REG_IME = 0;
|
||||
sub_81D4238();
|
||||
EReaderHelper_ClearSendRecvMgr();
|
||||
EReaderHelper_RestoreRegsState();
|
||||
RestoreSerialTimer3IntrHandlers();
|
||||
REG_IME = backupIME;
|
||||
@@ -401,7 +401,7 @@ static void sub_81D5084(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
data->unkE = EReader_IsReceivedDataValid((struct EReaderTrainerHillSet *)gDecompressionBuffer);
|
||||
data->unkE = ValidateTrainerHillData((struct EReaderTrainerHillSet *)gDecompressionBuffer);
|
||||
SetCloseLinkCallbackAndType(data->unkE);
|
||||
data->unk8 = 16;
|
||||
break;
|
||||
|
||||
@@ -40,7 +40,7 @@ bool8 IsFreezePlayerFinished(void)
|
||||
}
|
||||
|
||||
|
||||
void ScriptFreezeObjectEvents(void)
|
||||
void FreezeObjects_WaitForPlayer(void)
|
||||
{
|
||||
FreezeObjectEvents();
|
||||
CreateTask(Task_FreezePlayer, 80);
|
||||
@@ -82,7 +82,9 @@ bool8 IsFreezeSelectedObjectAndPlayerFinished(void)
|
||||
}
|
||||
}
|
||||
|
||||
void LockSelectedObjectEvent(void)
|
||||
// Freeze all objects immediately except the selected object and the player.
|
||||
// The selected object and player are frozen once their movement is finished.
|
||||
void FreezeObjects_WaitForPlayerAndSelected(void)
|
||||
{
|
||||
u8 taskId;
|
||||
FreezeObjectEventsExceptOne(gSelectedObjectEvent);
|
||||
@@ -144,6 +146,8 @@ static void Task_FreezeObjectAndPlayer(u8 taskId)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
// Freeze all objects immediately except the player and the approaching trainers.
|
||||
// The approaching trainers and player are frozen once their movement is finished
|
||||
void FreezeForApproachingTrainers(void)
|
||||
{
|
||||
u8 trainerObjectId1, trainerObjectId2, taskId;
|
||||
|
||||
+80
-80
@@ -1415,11 +1415,11 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
|
||||
}
|
||||
|
||||
sprite = &gSprites[spriteId];
|
||||
GetMapCoordsFromSpritePos(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->pos1.x, &sprite->pos1.y);
|
||||
GetMapCoordsFromSpritePos(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->x, &sprite->y);
|
||||
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
|
||||
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
|
||||
sprite->pos1.x += 8;
|
||||
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->x += 8;
|
||||
sprite->y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->oam.paletteNum = paletteSlot;
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->sObjEventId = objectEventId;
|
||||
@@ -1569,7 +1569,7 @@ u8 CreateObjectSprite(u8 graphicsId, u8 objectEventId, s16 x, s16 y, u8 z, u8 di
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
|
||||
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
|
||||
sprite->pos1.y += sprite->centerToCornerVecY;
|
||||
sprite->y += sprite->centerToCornerVecY;
|
||||
sprite->oam.paletteNum = graphicsInfo->paletteSlot;
|
||||
if (sprite->oam.paletteNum >= 16)
|
||||
{
|
||||
@@ -1726,11 +1726,11 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y)
|
||||
if (i != MAX_SPRITES)
|
||||
{
|
||||
sprite = &gSprites[i];
|
||||
GetMapCoordsFromSpritePos(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
|
||||
GetMapCoordsFromSpritePos(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->x, &sprite->y);
|
||||
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
|
||||
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
|
||||
sprite->pos1.x += 8;
|
||||
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->x += 8;
|
||||
sprite->y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->images = graphicsInfo->images;
|
||||
if (objectEvent->movementType == MOVEMENT_TYPE_PLAYER)
|
||||
{
|
||||
@@ -1803,11 +1803,11 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
|
||||
sprite->oam.paletteNum = paletteSlot;
|
||||
objectEvent->inanimate = graphicsInfo->inanimate;
|
||||
objectEvent->graphicsId = graphicsId;
|
||||
SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y);
|
||||
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
|
||||
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
|
||||
sprite->pos1.x += 8;
|
||||
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->x += 8;
|
||||
sprite->y += 16 + sprite->centerToCornerVecY;
|
||||
if (objectEvent->trackedByCamera)
|
||||
{
|
||||
CameraObjectReset1();
|
||||
@@ -1969,8 +1969,8 @@ void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup,
|
||||
if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId))
|
||||
{
|
||||
sprite = &gSprites[gObjectEvents[objectEventId].spriteId];
|
||||
sprite->pos2.x = x;
|
||||
sprite->pos2.y = y;
|
||||
sprite->x2 = x;
|
||||
sprite->y2 = y;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2105,11 +2105,11 @@ void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y)
|
||||
sprite = &gSprites[objectEvent->spriteId];
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
SetObjectEventCoords(objectEvent, x, y);
|
||||
SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y);
|
||||
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
|
||||
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
|
||||
sprite->pos1.x += 8;
|
||||
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
|
||||
sprite->x += 8;
|
||||
sprite->y += 16 + sprite->centerToCornerVecY;
|
||||
ResetObjectEventFldEffData(objectEvent);
|
||||
if (objectEvent->trackedByCamera)
|
||||
CameraObjectReset1();
|
||||
@@ -2211,8 +2211,8 @@ static void SpriteCB_CameraObject(struct Sprite *sprite)
|
||||
|
||||
static void CameraObject_0(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gSprites[sprite->sLinkedSpriteId].pos1.x;
|
||||
sprite->pos1.y = gSprites[sprite->sLinkedSpriteId].pos1.y;
|
||||
sprite->x = gSprites[sprite->sLinkedSpriteId].x;
|
||||
sprite->y = gSprites[sprite->sLinkedSpriteId].y;
|
||||
sprite->invisible = TRUE;
|
||||
sprite->sState = 1;
|
||||
CameraObject_1(sprite);
|
||||
@@ -2220,19 +2220,19 @@ static void CameraObject_0(struct Sprite *sprite)
|
||||
|
||||
static void CameraObject_1(struct Sprite *sprite)
|
||||
{
|
||||
s16 x = gSprites[sprite->sLinkedSpriteId].pos1.x;
|
||||
s16 y = gSprites[sprite->sLinkedSpriteId].pos1.y;
|
||||
s16 x = gSprites[sprite->sLinkedSpriteId].x;
|
||||
s16 y = gSprites[sprite->sLinkedSpriteId].y;
|
||||
|
||||
sprite->data[2] = x - sprite->pos1.x;
|
||||
sprite->data[3] = y - sprite->pos1.y;
|
||||
sprite->pos1.x = x;
|
||||
sprite->pos1.y = y;
|
||||
sprite->data[2] = x - sprite->x;
|
||||
sprite->data[3] = y - sprite->y;
|
||||
sprite->x = x;
|
||||
sprite->y = y;
|
||||
}
|
||||
|
||||
static void CameraObject_2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gSprites[sprite->sLinkedSpriteId].pos1.x;
|
||||
sprite->pos1.y = gSprites[sprite->sLinkedSpriteId].pos1.y;
|
||||
sprite->x = gSprites[sprite->sLinkedSpriteId].x;
|
||||
sprite->y = gSprites[sprite->sLinkedSpriteId].y;
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[3] = 0;
|
||||
}
|
||||
@@ -2311,8 +2311,8 @@ u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
|
||||
if (!gSprites[i].inUse)
|
||||
{
|
||||
gSprites[i] = *sprite;
|
||||
gSprites[i].pos1.x = x;
|
||||
gSprites[i].pos1.y = y;
|
||||
gSprites[i].x = x;
|
||||
gSprites[i].y = y;
|
||||
gSprites[i].subpriority = subpriority;
|
||||
break;
|
||||
}
|
||||
@@ -2329,8 +2329,8 @@ u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
|
||||
if (!gSprites[i].inUse)
|
||||
{
|
||||
gSprites[i] = *sprite;
|
||||
gSprites[i].pos1.x = x;
|
||||
gSprites[i].pos1.y = y;
|
||||
gSprites[i].x = x;
|
||||
gSprites[i].y = y;
|
||||
gSprites[i].subpriority = subpriority;
|
||||
return i;
|
||||
}
|
||||
@@ -7361,14 +7361,14 @@ bool8 MovementAction_Levitate_Step0(struct ObjectEvent *objectEvent, struct Spri
|
||||
bool8 MovementAction_StopLevitate_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
DestroyLevitateMovementTask(objectEvent->warpArrowSpriteId);
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->sActionFuncId = 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 MovementAction_StopLevitateAtTop_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos2.y == 0)
|
||||
if (sprite->y2 == 0)
|
||||
{
|
||||
DestroyLevitateMovementTask(objectEvent->warpArrowSpriteId);
|
||||
sprite->sActionFuncId = 1;
|
||||
@@ -7423,13 +7423,13 @@ static void UpdateObjectEventOffscreen(struct ObjectEvent *objectEvent, struct S
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
if (sprite->coordOffsetEnabled)
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
|
||||
x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
|
||||
y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
|
||||
}
|
||||
x2 = graphicsInfo->width;
|
||||
x2 += x;
|
||||
@@ -7843,7 +7843,7 @@ void ObjectEventUpdateZCoord(struct ObjectEvent *objEvent)
|
||||
void SetObjectSubpriorityByZCoord(u8 elevation, struct Sprite *sprite, u8 subpriority)
|
||||
{
|
||||
s32 tmp = sprite->centerToCornerVecY;
|
||||
u32 tmpa = *(u16 *)&sprite->pos1.y;
|
||||
u32 tmpa = *(u16 *)&sprite->y;
|
||||
u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
|
||||
s32 tmp2 = (tmpa - tmp) + tmpb;
|
||||
u16 tmp3 = (16 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
|
||||
@@ -8250,32 +8250,32 @@ void UnfreezeObjectEvents(void)
|
||||
|
||||
static void Step1(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += sDirectionToVectors[dir].x;
|
||||
sprite->pos1.y += sDirectionToVectors[dir].y;
|
||||
sprite->x += sDirectionToVectors[dir].x;
|
||||
sprite->y += sDirectionToVectors[dir].y;
|
||||
}
|
||||
|
||||
static void Step2(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x;
|
||||
sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y;
|
||||
sprite->x += 2 * (u16) sDirectionToVectors[dir].x;
|
||||
sprite->y += 2 * (u16) sDirectionToVectors[dir].y;
|
||||
}
|
||||
|
||||
static void Step3(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x;
|
||||
sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y;
|
||||
sprite->x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x;
|
||||
sprite->y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y;
|
||||
}
|
||||
|
||||
static void Step4(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += 4 * (u16) sDirectionToVectors[dir].x;
|
||||
sprite->pos1.y += 4 * (u16) sDirectionToVectors[dir].y;
|
||||
sprite->x += 4 * (u16) sDirectionToVectors[dir].x;
|
||||
sprite->y += 4 * (u16) sDirectionToVectors[dir].y;
|
||||
}
|
||||
|
||||
static void Step8(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x;
|
||||
sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y;
|
||||
sprite->x += 8 * (u16) sDirectionToVectors[dir].x;
|
||||
sprite->y += 8 * (u16) sDirectionToVectors[dir].y;
|
||||
}
|
||||
|
||||
#define sTimer data[5]
|
||||
@@ -8445,20 +8445,20 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
|
||||
switch(sprite->data[7])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.x += GetFigure8XOffset(sprite->data[6]);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->data[6]);
|
||||
sprite->x2 += GetFigure8XOffset(sprite->data[6]);
|
||||
sprite->y2 += GetFigure8YOffset(sprite->data[6]);
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
sprite->x2 -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x -= GetFigure8XOffset(sprite->data[6]);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->data[6]);
|
||||
sprite->x2 -= GetFigure8XOffset(sprite->data[6]);
|
||||
sprite->y2 += GetFigure8YOffset(sprite->data[6]);
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
sprite->x2 += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
|
||||
break;
|
||||
}
|
||||
if (++sprite->data[6] == FIGURE_8_LENGTH)
|
||||
@@ -8468,8 +8468,8 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
|
||||
}
|
||||
if (sprite->data[7] == 4)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
finished = TRUE;
|
||||
}
|
||||
return finished;
|
||||
@@ -8521,7 +8521,7 @@ static u8 DoJumpSpriteMovement(struct Sprite *sprite)
|
||||
if (sprite->sSpeed)
|
||||
Step1(sprite, sprite->sDirection);
|
||||
|
||||
sprite->pos2.y = GetJumpY(sprite->sTimer >> speedToShift[sprite->sSpeed], sprite->sJumpType);
|
||||
sprite->y2 = GetJumpY(sprite->sTimer >> speedToShift[sprite->sSpeed], sprite->sJumpType);
|
||||
|
||||
sprite->sTimer++;
|
||||
|
||||
@@ -8530,7 +8530,7 @@ static u8 DoJumpSpriteMovement(struct Sprite *sprite)
|
||||
|
||||
if (sprite->sTimer >= speedToTime[sprite->sSpeed])
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
result = JUMP_FINISHED;
|
||||
}
|
||||
|
||||
@@ -8546,7 +8546,7 @@ static u8 DoJumpSpecialSpriteMovement(struct Sprite *sprite)
|
||||
if (sprite->sSpeed && !(sprite->sTimer & 1))
|
||||
Step1(sprite, sprite->sDirection);
|
||||
|
||||
sprite->pos2.y = GetJumpY(sprite->sTimer >> speedToShift[sprite->sSpeed], sprite->sJumpType);
|
||||
sprite->y2 = GetJumpY(sprite->sTimer >> speedToShift[sprite->sSpeed], sprite->sJumpType);
|
||||
|
||||
sprite->sTimer++;
|
||||
|
||||
@@ -8555,7 +8555,7 @@ static u8 DoJumpSpecialSpriteMovement(struct Sprite *sprite)
|
||||
|
||||
if (sprite->sTimer >= speedToTime[sprite->sSpeed])
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
result = JUMP_FINISHED;
|
||||
}
|
||||
|
||||
@@ -8603,13 +8603,13 @@ void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible)
|
||||
|
||||
if (sprite->coordOffsetEnabled)
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
|
||||
x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
|
||||
y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
|
||||
}
|
||||
|
||||
x2 = x - (sprite->centerToCornerVecX >> 1);
|
||||
@@ -8735,13 +8735,13 @@ static void MoveUnionRoomObjectUp(struct Sprite *sprite)
|
||||
switch(sprite->sAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->sAnimState++;
|
||||
case 1:
|
||||
sprite->pos2.y -= 8;
|
||||
if (sprite->pos2.y == -DISPLAY_HEIGHT)
|
||||
sprite->y2 -= 8;
|
||||
if (sprite->y2 == -DISPLAY_HEIGHT)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->sInvisible = TRUE;
|
||||
sprite->sAnimNum = 0;
|
||||
sprite->sAnimState = 0;
|
||||
@@ -8754,11 +8754,11 @@ static void MoveUnionRoomObjectDown(struct Sprite *sprite)
|
||||
switch(sprite->sAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = -DISPLAY_HEIGHT;
|
||||
sprite->y2 = -DISPLAY_HEIGHT;
|
||||
sprite->sAnimState++;
|
||||
case 1:
|
||||
sprite->pos2.y += 8;
|
||||
if(sprite->pos2.y == 0)
|
||||
sprite->y2 += 8;
|
||||
if(sprite->y2 == 0)
|
||||
{
|
||||
sprite->sAnimNum = 0;
|
||||
sprite->sAnimState = 0;
|
||||
@@ -8815,8 +8815,8 @@ static void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
|
||||
static void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
gFieldEffectArguments[0] = sprite->pos1.x;
|
||||
gFieldEffectArguments[1] = sprite->pos1.y + (graphicsInfo->height >> 1) - 2;
|
||||
gFieldEffectArguments[0] = sprite->x;
|
||||
gFieldEffectArguments[1] = sprite->y + (graphicsInfo->height >> 1) - 2;
|
||||
gFieldEffectArguments[2] = 151;
|
||||
gFieldEffectArguments[3] = 3;
|
||||
FieldEffectStart(FLDEFF_RIPPLE);
|
||||
@@ -8950,7 +8950,7 @@ static void ApplyLevitateMovement(u8 taskId)
|
||||
sprite = &gSprites[objectEvent->spriteId];
|
||||
|
||||
if(!(task->data[2] & 3))
|
||||
sprite->pos2.y += task->data[3];
|
||||
sprite->y2 += task->data[3];
|
||||
|
||||
if(!(task->data[2] & 15))
|
||||
task->data[3] = -task->data[3];
|
||||
@@ -8982,32 +8982,32 @@ void FreezeObjectEventsExceptTwo(u8 objectEventId1, u8 objectEventId2)
|
||||
|
||||
u8 MovementAction_FlyUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->sActionFuncId++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 MovementAction_FlyUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y -= 8;
|
||||
sprite->y2 -= 8;
|
||||
|
||||
if(sprite->pos2.y == -DISPLAY_HEIGHT)
|
||||
if(sprite->y2 == -DISPLAY_HEIGHT)
|
||||
sprite->sActionFuncId++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 MovementAction_FlyDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = -DISPLAY_HEIGHT;
|
||||
sprite->y2 = -DISPLAY_HEIGHT;
|
||||
sprite->sActionFuncId++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 MovementAction_FlyDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y += 8;
|
||||
sprite->y2 += 8;
|
||||
|
||||
if(!sprite->pos2.y)
|
||||
if(!sprite->y2)
|
||||
sprite->sActionFuncId++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+14
-14
@@ -115,18 +115,18 @@ static void SetEvoSparklesMatrices(void)
|
||||
|
||||
static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite)
|
||||
{
|
||||
if (sprite->pos1.y > 8)
|
||||
if (sprite->y > 8)
|
||||
{
|
||||
u8 matrixNum;
|
||||
|
||||
sprite->pos1.y = 88 - (sprite->data[7] * sprite->data[7]) / 80;
|
||||
sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
|
||||
sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->y = 88 - (sprite->data[7] * sprite->data[7]) / 80;
|
||||
sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
|
||||
sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->data[6] += 4;
|
||||
if (sprite->data[7] & 1)
|
||||
sprite->data[5]--;
|
||||
sprite->data[7]++;
|
||||
if (sprite->pos2.y > 0)
|
||||
if (sprite->y2 > 0)
|
||||
sprite->subpriority = 1;
|
||||
else
|
||||
sprite->subpriority = 20;
|
||||
@@ -155,11 +155,11 @@ static void CreateSparkle_SpiralUpward(u8 arg0)
|
||||
|
||||
static void SpriteCB_Sparkle_ArcDown(struct Sprite* sprite)
|
||||
{
|
||||
if (sprite->pos1.y < 88)
|
||||
if (sprite->y < 88)
|
||||
{
|
||||
sprite->pos1.y = 8 + (sprite->data[7] * sprite->data[7]) / 5;
|
||||
sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
|
||||
sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->y = 8 + (sprite->data[7] * sprite->data[7]) / 5;
|
||||
sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
|
||||
sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->data[5] = 8 + Sin((u8)(sprite->data[7] * 4), 40);
|
||||
sprite->data[7]++;
|
||||
}
|
||||
@@ -186,8 +186,8 @@ static void SpriteCB_Sparkle_CircleInward(struct Sprite* sprite)
|
||||
{
|
||||
if (sprite->data[5] > 8)
|
||||
{
|
||||
sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->data[5] -= sprite->data[3];
|
||||
sprite->data[6] += 4;
|
||||
}
|
||||
@@ -214,13 +214,13 @@ static void CreateSparkle_CircleInward(u8 arg0, u8 arg1)
|
||||
static void SpriteCB_Sparkle_Spray(struct Sprite* sprite)
|
||||
{
|
||||
if (!(sprite->data[7] & 3))
|
||||
sprite->pos1.y++;
|
||||
sprite->y++;
|
||||
if (sprite->data[6] < 128)
|
||||
{
|
||||
u8 matrixNum;
|
||||
|
||||
sprite->pos2.y = -Sin((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->pos1.x = 120 + (sprite->data[3] * sprite->data[7]) / 3;
|
||||
sprite->y2 = -Sin((u8)(sprite->data[6]), sprite->data[5]);
|
||||
sprite->x = 120 + (sprite->data[3] * sprite->data[7]) / 3;
|
||||
sprite->data[6]++;
|
||||
matrixNum = 31 - (sprite->data[6] * 12 / 128);
|
||||
if (sprite->data[6] > 64)
|
||||
|
||||
@@ -34,6 +34,8 @@
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
extern struct Evolution gEvolutionTable[][EVOS_PER_MON];
|
||||
|
||||
struct EvoInfo
|
||||
{
|
||||
u8 preEvoSpriteId;
|
||||
@@ -550,8 +552,6 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
|
||||
{
|
||||
s32 i;
|
||||
struct Pokemon* shedinja = &gPlayerParty[gPlayerPartyCount];
|
||||
const struct Evolution *evos;
|
||||
const struct Evolution *evos2;
|
||||
|
||||
CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &gEvolutionTable[preEvoSpecies][1].targetSpecies);
|
||||
@@ -572,12 +572,8 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
|
||||
CalculateMonStats(&gPlayerParty[gPlayerPartyCount]);
|
||||
CalculatePlayerPartyCount();
|
||||
|
||||
// can't match it otherwise, ehh
|
||||
evos2 = gEvolutionTable[0];
|
||||
evos = evos2 + EVOS_PER_MON * preEvoSpecies;
|
||||
|
||||
GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos[1].targetSpecies), FLAG_SET_SEEN);
|
||||
GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos[1].targetSpecies), FLAG_SET_CAUGHT);
|
||||
GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), FLAG_SET_SEEN);
|
||||
GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), FLAG_SET_CAUGHT);
|
||||
|
||||
if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA
|
||||
&& GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE
|
||||
|
||||
@@ -38,7 +38,7 @@ static const s16 sFarawayIslandRockCoords[4][2] =
|
||||
static u8 GetMewObjectEventId(void)
|
||||
{
|
||||
u8 objectEventId;
|
||||
TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
TryGetObjectEventIdByLocalIdAndMap(LOCALID_FARAWAY_ISLAND_MEW, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
return objectEventId;
|
||||
}
|
||||
|
||||
|
||||
+89
-89
@@ -1118,8 +1118,8 @@ static u8 CreateGlowingPokeballsEffect(s16 numMons, s16 x, s16 y, bool16 playHea
|
||||
struct Sprite *sprite;
|
||||
spriteId = CreateInvisibleSprite(SpriteCB_PokeballGlowEffect);
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->pos2.x = x;
|
||||
sprite->pos2.y = y;
|
||||
sprite->x2 = x;
|
||||
sprite->y2 = y;
|
||||
sprite->sPlayHealSe = playHealSe;
|
||||
sprite->sNumMons = numMons;
|
||||
sprite->sSpriteId = spriteId;
|
||||
@@ -1137,7 +1137,7 @@ static void PokeballGlowEffect_PlaceBalls(struct Sprite *sprite)
|
||||
if (sprite->sTimer == 0 || (--sprite->sTimer) == 0)
|
||||
{
|
||||
sprite->sTimer = 25;
|
||||
spriteId = CreateSpriteAtEnd(&sSpriteTemplate_PokeballGlow, sPokeballCoordOffsets[sprite->sCounter].x + sprite->pos2.x, sPokeballCoordOffsets[sprite->sCounter].y + sprite->pos2.y, 0);
|
||||
spriteId = CreateSpriteAtEnd(&sSpriteTemplate_PokeballGlow, sPokeballCoordOffsets[sprite->sCounter].x + sprite->x2, sPokeballCoordOffsets[sprite->sCounter].y + sprite->y2, 0);
|
||||
gSprites[spriteId].oam.priority = 2;
|
||||
gSprites[spriteId].sEffectSpriteId = sprite->sSpriteId;
|
||||
sprite->sCounter++;
|
||||
@@ -1461,7 +1461,7 @@ static bool8 FallWarpEffect_StartFall(struct Task *task)
|
||||
s16 centerToCornerVecY;
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
|
||||
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
|
||||
sprite->y2 = -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
|
||||
task->tFallOffset = 1;
|
||||
task->tTotalFall = 0;
|
||||
gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
|
||||
@@ -1477,7 +1477,7 @@ static bool8 FallWarpEffect_Fall(struct Task *task)
|
||||
|
||||
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
sprite->pos2.y += task->tFallOffset;
|
||||
sprite->y2 += task->tFallOffset;
|
||||
if (task->tFallOffset < 8)
|
||||
{
|
||||
task->tTotalFall += task->tFallOffset;
|
||||
@@ -1485,19 +1485,19 @@ static bool8 FallWarpEffect_Fall(struct Task *task)
|
||||
if (task->tTotalFall & 0xf)
|
||||
task->tFallOffset <<= 1;
|
||||
}
|
||||
if (task->tSetTrigger == FALSE && sprite->pos2.y >= -16)
|
||||
if (task->tSetTrigger == FALSE && sprite->y2 >= -16)
|
||||
{
|
||||
task->tSetTrigger++;
|
||||
objectEvent->fixedPriority = 0;
|
||||
sprite->subspriteMode = task->tSubsprMode;
|
||||
objectEvent->triggerGroundEffectsOnMove = 1;
|
||||
}
|
||||
if (sprite->pos2.y >= 0)
|
||||
if (sprite->y2 >= 0)
|
||||
{
|
||||
PlaySE(SE_M_STRENGTH);
|
||||
objectEvent->triggerGroundEffectsOnStop = 1;
|
||||
objectEvent->landingJump = 1;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
task->tState++;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -1635,8 +1635,8 @@ static void RideUpEscalatorOut(struct Task *task)
|
||||
{
|
||||
struct Sprite *sprite;
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
sprite->pos2.x = Cos(0x84, task->data[2]);
|
||||
sprite->pos2.y = Sin(0x94, task->data[2]);
|
||||
sprite->x2 = Cos(0x84, task->data[2]);
|
||||
sprite->y2 = Sin(0x94, task->data[2]);
|
||||
task->data[3]++;
|
||||
if (task->data[3] & 1)
|
||||
{
|
||||
@@ -1648,8 +1648,8 @@ static void RideDownEscalatorOut(struct Task *task)
|
||||
{
|
||||
struct Sprite *sprite;
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
sprite->pos2.x = Cos(0x7c, task->data[2]);
|
||||
sprite->pos2.y = Sin(0x76, task->data[2]);
|
||||
sprite->x2 = Cos(0x7c, task->data[2]);
|
||||
sprite->y2 = Sin(0x76, task->data[2]);
|
||||
task->data[3]++;
|
||||
if (task->data[3] & 1)
|
||||
{
|
||||
@@ -1729,8 +1729,8 @@ static bool8 EscalatorWarpIn_Down_Init(struct Task *task)
|
||||
{
|
||||
struct Sprite *sprite;
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
sprite->pos2.x = Cos(0x84, task->data[1]);
|
||||
sprite->pos2.y = Sin(0x94, task->data[1]);
|
||||
sprite->x2 = Cos(0x84, task->data[1]);
|
||||
sprite->y2 = Sin(0x94, task->data[1]);
|
||||
task->tState++;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1739,8 +1739,8 @@ static bool8 EscalatorWarpIn_Down_Ride(struct Task *task)
|
||||
{
|
||||
struct Sprite *sprite;
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
sprite->pos2.x = Cos(0x84, task->data[1]);
|
||||
sprite->pos2.y = Sin(0x94, task->data[1]);
|
||||
sprite->x2 = Cos(0x84, task->data[1]);
|
||||
sprite->y2 = Sin(0x94, task->data[1]);
|
||||
task->data[2]++;
|
||||
if (task->data[2] & 1)
|
||||
{
|
||||
@@ -1748,8 +1748,8 @@ static bool8 EscalatorWarpIn_Down_Ride(struct Task *task)
|
||||
}
|
||||
if (task->data[1] == 0)
|
||||
{
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
task->tState = 5;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -1759,8 +1759,8 @@ static bool8 EscalatorWarpIn_Up_Init(struct Task *task)
|
||||
{
|
||||
struct Sprite *sprite;
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
sprite->pos2.x = Cos(0x7c, task->data[1]);
|
||||
sprite->pos2.y = Sin(0x76, task->data[1]);
|
||||
sprite->x2 = Cos(0x7c, task->data[1]);
|
||||
sprite->y2 = Sin(0x76, task->data[1]);
|
||||
task->tState++;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1769,8 +1769,8 @@ static bool8 EscalatorWarpIn_Up_Ride(struct Task *task)
|
||||
{
|
||||
struct Sprite *sprite;
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
sprite->pos2.x = Cos(0x7c, task->data[1]);
|
||||
sprite->pos2.y = Sin(0x76, task->data[1]);
|
||||
sprite->x2 = Cos(0x7c, task->data[1]);
|
||||
sprite->y2 = Sin(0x76, task->data[1]);
|
||||
task->data[2]++;
|
||||
if (task->data[2] & 1)
|
||||
{
|
||||
@@ -1778,8 +1778,8 @@ static bool8 EscalatorWarpIn_Up_Ride(struct Task *task)
|
||||
}
|
||||
if (task->data[1] == 0)
|
||||
{
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
task->tState++;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -1972,7 +1972,7 @@ static bool8 LavaridgeGymB1FWarpEffect_CameraShake(struct Task *task, struct Obj
|
||||
|
||||
static bool8 LavaridgeGymB1FWarpEffect_Launch(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
task->data[3] = 1;
|
||||
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
|
||||
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
|
||||
@@ -2001,9 +2001,9 @@ static bool8 LavaridgeGymB1FWarpEffect_Rise(struct Task *task, struct ObjectEven
|
||||
if (task->data[2] > 6)
|
||||
{
|
||||
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
|
||||
if (sprite->pos2.y > -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY))
|
||||
if (sprite->y2 > -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY))
|
||||
{
|
||||
sprite->pos2.y -= task->data[3];
|
||||
sprite->y2 -= task->data[3];
|
||||
if (task->data[3] <= 7)
|
||||
{
|
||||
task->data[3]++;
|
||||
@@ -2013,7 +2013,7 @@ static bool8 LavaridgeGymB1FWarpEffect_Rise(struct Task *task, struct ObjectEven
|
||||
task->data[4] = 1;
|
||||
}
|
||||
}
|
||||
if (task->data[5] == 0 && sprite->pos2.y < -0x10)
|
||||
if (task->data[5] == 0 && sprite->y2 < -0x10)
|
||||
{
|
||||
task->data[5]++;
|
||||
objectEvent->fixedPriority = 1;
|
||||
@@ -2396,7 +2396,7 @@ static void TeleportWarpOutFieldEffect_SpinExit(struct Task *task)
|
||||
task->data[1] = 4;
|
||||
ObjectEventTurn(objectEvent, spinDirections[objectEvent->facingDirection]);
|
||||
}
|
||||
sprite->pos1.y -= task->data[3];
|
||||
sprite->y -= task->data[3];
|
||||
task->data[4] += task->data[3];
|
||||
if ((--task->data[2]) <= 0 && (task->data[2] = 4, task->data[3] < 8))
|
||||
{
|
||||
@@ -2466,7 +2466,7 @@ static void TeleportWarpInFieldEffect_Init(struct Task *task)
|
||||
{
|
||||
sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
|
||||
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
|
||||
sprite->y2 = -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
|
||||
gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
|
||||
task->data[0]++;
|
||||
task->data[1] = 8;
|
||||
@@ -2482,7 +2482,7 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task)
|
||||
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
|
||||
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
if ((sprite->pos2.y += task->data[1]) >= -8)
|
||||
if ((sprite->y2 += task->data[1]) >= -8)
|
||||
{
|
||||
if (task->data[13] == 0)
|
||||
{
|
||||
@@ -2498,7 +2498,7 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task)
|
||||
sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
|
||||
}
|
||||
}
|
||||
if (sprite->pos2.y >= -0x30 && task->data[1] > 1 && !(sprite->pos2.y & 1))
|
||||
if (sprite->y2 >= -0x30 && task->data[1] > 1 && !(sprite->y2 & 1))
|
||||
{
|
||||
task->data[1]--;
|
||||
}
|
||||
@@ -2507,9 +2507,9 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task)
|
||||
task->data[2] = 4;
|
||||
ObjectEventTurn(objectEvent, spinDirections[objectEvent->facingDirection]);
|
||||
}
|
||||
if (sprite->pos2.y >= 0)
|
||||
if (sprite->y2 >= 0)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
task->data[0]++;
|
||||
task->data[1] = 1;
|
||||
task->data[2] = 0;
|
||||
@@ -2929,9 +2929,9 @@ static u8 InitFieldMoveMonSprite(u32 species, u32 otId, u32 personality)
|
||||
|
||||
static void SpriteCB_FieldMoveMonSlideOnscreen(struct Sprite *sprite)
|
||||
{
|
||||
if ((sprite->pos1.x -= 20) <= DISPLAY_WIDTH / 2)
|
||||
if ((sprite->x -= 20) <= DISPLAY_WIDTH / 2)
|
||||
{
|
||||
sprite->pos1.x = DISPLAY_WIDTH / 2;
|
||||
sprite->x = DISPLAY_WIDTH / 2;
|
||||
sprite->sOnscreenTimer = 30;
|
||||
sprite->callback = SpriteCB_FieldMoveMonWaitAfterCry;
|
||||
if (sprite->data[6])
|
||||
@@ -2953,10 +2953,10 @@ static void SpriteCB_FieldMoveMonWaitAfterCry(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCB_FieldMoveMonSlideOffscreen(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos1.x < -64)
|
||||
if (sprite->x < -64)
|
||||
sprite->sSlidOffscreen = TRUE;
|
||||
else
|
||||
sprite->pos1.x -= 20;
|
||||
sprite->x -= 20;
|
||||
}
|
||||
|
||||
#undef tState
|
||||
@@ -3078,7 +3078,7 @@ u8 FldEff_RayquazaSpotlight(void)
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[3] = -1;
|
||||
sprite->data[4] = sprite->pos1.y;
|
||||
sprite->data[4] = sprite->y;
|
||||
sprite->data[5] = 0;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(14, 14));
|
||||
@@ -3120,17 +3120,17 @@ static void SpriteCB_NPCFlyOut(struct Sprite *sprite)
|
||||
{
|
||||
struct Sprite *npcSprite;
|
||||
|
||||
sprite->pos2.x = Cos(sprite->data[2], 0x8c);
|
||||
sprite->pos2.y = Sin(sprite->data[2], 0x48);
|
||||
sprite->x2 = Cos(sprite->data[2], 0x8c);
|
||||
sprite->y2 = Sin(sprite->data[2], 0x48);
|
||||
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
|
||||
if (sprite->data[0])
|
||||
{
|
||||
npcSprite = &gSprites[sprite->data[1]];
|
||||
npcSprite->coordOffsetEnabled = FALSE;
|
||||
npcSprite->pos1.x = sprite->pos1.x + sprite->pos2.x;
|
||||
npcSprite->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
|
||||
npcSprite->pos2.x = 0;
|
||||
npcSprite->pos2.y = 0;
|
||||
npcSprite->x = sprite->x + sprite->x2;
|
||||
npcSprite->y = sprite->y + sprite->y2 - 8;
|
||||
npcSprite->x2 = 0;
|
||||
npcSprite->y2 = 0;
|
||||
}
|
||||
|
||||
if (sprite->data[2] >= 0x80)
|
||||
@@ -3306,10 +3306,10 @@ static void StartFlyBirdSwoopDown(u8 spriteId)
|
||||
struct Sprite *sprite;
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->callback = SpriteCB_FlyBirdSwoopDown;
|
||||
sprite->pos1.x = DISPLAY_WIDTH / 2;
|
||||
sprite->pos1.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x = DISPLAY_WIDTH / 2;
|
||||
sprite->y = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
memset(&sprite->data[0], 0, 8 * sizeof(u16) /* zero all data cells */);
|
||||
sprite->sPlayerSpriteId = MAX_SPRITES;
|
||||
}
|
||||
@@ -3346,15 +3346,15 @@ static void SpriteCB_FlyBirdLeaveBall(struct Sprite *sprite)
|
||||
sprite->affineAnims = sAffineAnims_FlyBird;
|
||||
InitSpriteAffineAnim(sprite);
|
||||
StartSpriteAffineAnim(sprite, 0);
|
||||
sprite->pos1.x = 0x76;
|
||||
sprite->pos1.y = -0x30;
|
||||
sprite->x = 0x76;
|
||||
sprite->y = -0x30;
|
||||
sprite->data[0]++;
|
||||
sprite->data[1] = 0x40;
|
||||
sprite->data[2] = 0x100;
|
||||
}
|
||||
sprite->data[1] += (sprite->data[2] >> 8);
|
||||
sprite->pos2.x = Cos(sprite->data[1], 0x78);
|
||||
sprite->pos2.y = Sin(sprite->data[1], 0x78);
|
||||
sprite->x2 = Cos(sprite->data[1], 0x78);
|
||||
sprite->y2 = Sin(sprite->data[1], 0x78);
|
||||
if (sprite->data[2] < 0x800)
|
||||
{
|
||||
sprite->data[2] += 0x60;
|
||||
@@ -3371,17 +3371,17 @@ static void SpriteCB_FlyBirdLeaveBall(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCB_FlyBirdSwoopDown(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Cos(sprite->data[2], 0x8c);
|
||||
sprite->pos2.y = Sin(sprite->data[2], 0x48);
|
||||
sprite->x2 = Cos(sprite->data[2], 0x8c);
|
||||
sprite->y2 = Sin(sprite->data[2], 0x48);
|
||||
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
|
||||
if (sprite->sPlayerSpriteId != MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite1 = &gSprites[sprite->sPlayerSpriteId];
|
||||
sprite1->coordOffsetEnabled = FALSE;
|
||||
sprite1->pos1.x = sprite->pos1.x + sprite->pos2.x;
|
||||
sprite1->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
|
||||
sprite1->pos2.x = 0;
|
||||
sprite1->pos2.y = 0;
|
||||
sprite1->x = sprite->x + sprite->x2;
|
||||
sprite1->y = sprite->y + sprite->y2 - 8;
|
||||
sprite1->x2 = 0;
|
||||
sprite1->y2 = 0;
|
||||
}
|
||||
if (sprite->data[2] >= 0x80)
|
||||
{
|
||||
@@ -3399,8 +3399,8 @@ static void SpriteCB_FlyBirdReturnToBall(struct Sprite *sprite)
|
||||
sprite->affineAnims = sAffineAnims_FlyBird;
|
||||
InitSpriteAffineAnim(sprite);
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
sprite->pos1.x = 0x5e;
|
||||
sprite->pos1.y = -0x20;
|
||||
sprite->x = 0x5e;
|
||||
sprite->y = -0x20;
|
||||
sprite->data[0]++;
|
||||
sprite->data[1] = 0xf0;
|
||||
sprite->data[2] = 0x800;
|
||||
@@ -3409,8 +3409,8 @@ static void SpriteCB_FlyBirdReturnToBall(struct Sprite *sprite)
|
||||
sprite->data[1] += sprite->data[2] >> 8;
|
||||
sprite->data[3] += sprite->data[2] >> 8;
|
||||
sprite->data[1] &= 0xff;
|
||||
sprite->pos2.x = Cos(sprite->data[1], 0x20);
|
||||
sprite->pos2.y = Sin(sprite->data[1], 0x78);
|
||||
sprite->x2 = Cos(sprite->data[1], 0x20);
|
||||
sprite->y2 = Sin(sprite->data[1], 0x78);
|
||||
if (sprite->data[2] > 0x100)
|
||||
{
|
||||
sprite->data[2] -= sprite->data[4];
|
||||
@@ -3495,10 +3495,10 @@ static void FlyInFieldEffect_FlyInWithBird(struct Task *task)
|
||||
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
sprite = &gSprites[objectEvent->spriteId];
|
||||
SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, MAX_SPRITES);
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
task->tState++;
|
||||
task->tTimer = 0;
|
||||
}
|
||||
@@ -3527,7 +3527,7 @@ static void FlyInFieldEffect_JumpOffBird(struct Task *task)
|
||||
8
|
||||
};
|
||||
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
|
||||
sprite->pos2.y = sYPositions[task->tTimer];
|
||||
sprite->y2 = sYPositions[task->tTimer];
|
||||
|
||||
if ((++task->tTimer) >= (int)ARRAY_COUNT(sYPositions))
|
||||
task->tState++;
|
||||
@@ -3543,8 +3543,8 @@ static void FlyInFieldEffect_FieldMovePose(struct Task *task)
|
||||
sprite = &gSprites[objectEvent->spriteId];
|
||||
objectEvent->inanimate = FALSE;
|
||||
MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y);
|
||||
sprite->pos2.x = 0;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->x2 = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
SetPlayerAvatarFieldMove();
|
||||
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
|
||||
@@ -3780,8 +3780,8 @@ static const struct SpriteTemplate sSpriteTemplate_DeoxysRockFragment = {
|
||||
static void CreateDeoxysRockFragments(struct Sprite* sprite)
|
||||
{
|
||||
int i;
|
||||
int xPos = (s16)gTotalCameraPixelOffsetX + sprite->pos1.x + sprite->pos2.x;
|
||||
int yPos = (s16)gTotalCameraPixelOffsetY + sprite->pos1.y + sprite->pos2.y - 4;
|
||||
int xPos = (s16)gTotalCameraPixelOffsetX + sprite->x + sprite->x2;
|
||||
int yPos = (s16)gTotalCameraPixelOffsetY + sprite->y + sprite->y2 - 4;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
@@ -3801,23 +3801,23 @@ static void SpriteCB_DeoxysRockFragment(struct Sprite* sprite)
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos1.x -= 16;
|
||||
sprite->pos1.y -= 12;
|
||||
sprite->x -= 16;
|
||||
sprite->y -= 12;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.x += 16;
|
||||
sprite->pos1.y -= 12;
|
||||
sprite->x += 16;
|
||||
sprite->y -= 12;
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos1.x -= 16;
|
||||
sprite->pos1.y += 12;
|
||||
sprite->x -= 16;
|
||||
sprite->y += 12;
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos1.x += 16;
|
||||
sprite->pos1.y += 12;
|
||||
sprite->x += 16;
|
||||
sprite->y += 12;
|
||||
break;
|
||||
}
|
||||
if ((u16)(sprite->pos1.x + 4) > DISPLAY_WIDTH + 8 || sprite->pos1.y < -4 || sprite->pos1.y > DISPLAY_HEIGHT + 4)
|
||||
if ((u16)(sprite->x + 4) > DISPLAY_WIDTH + 8 || sprite->y < -4 || sprite->y > DISPLAY_HEIGHT + 4)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
@@ -3837,8 +3837,8 @@ bool8 FldEff_MoveDeoxysRock(struct Sprite* sprite)
|
||||
ShiftObjectEventCoords(object, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7);
|
||||
taskId = CreateTask(Task_MoveDeoxysRock, 80);
|
||||
gTasks[taskId].data[1] = object->spriteId;
|
||||
gTasks[taskId].data[2] = gSprites[object->spriteId].pos1.x + xPos;
|
||||
gTasks[taskId].data[3] = gSprites[object->spriteId].pos1.y + yPos;
|
||||
gTasks[taskId].data[2] = gSprites[object->spriteId].x + xPos;
|
||||
gTasks[taskId].data[3] = gSprites[object->spriteId].y + yPos;
|
||||
gTasks[taskId].data[8] = gFieldEffectArguments[5];
|
||||
gTasks[taskId].data[9] = objectEventIdBuffer;
|
||||
}
|
||||
@@ -3852,8 +3852,8 @@ static void Task_MoveDeoxysRock(u8 taskId)
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
data[4] = sprite->pos1.x << 4;
|
||||
data[5] = sprite->pos1.y << 4;
|
||||
data[4] = sprite->x << 4;
|
||||
data[5] = sprite->y << 4;
|
||||
data[6] = SAFE_DIV(data[2] * 16 - data[4], data[8]);
|
||||
data[7] = SAFE_DIV(data[3] * 16 - data[5], data[8]);
|
||||
data[0]++;
|
||||
@@ -3863,14 +3863,14 @@ static void Task_MoveDeoxysRock(u8 taskId)
|
||||
data[8]--;
|
||||
data[4] += data[6];
|
||||
data[5] += data[7];
|
||||
sprite->pos1.x = data[4] >> 4;
|
||||
sprite->pos1.y = data[5] >> 4;
|
||||
sprite->x = data[4] >> 4;
|
||||
sprite->y = data[5] >> 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
struct ObjectEvent *object = &gObjectEvents[data[9]];
|
||||
sprite->pos1.x = data[2];
|
||||
sprite->pos1.y = data[3];
|
||||
sprite->x = data[2];
|
||||
sprite->y = data[3];
|
||||
ShiftStillObjectEventCoords(object);
|
||||
object->triggerGroundEffectsOnStop = TRUE;
|
||||
FieldEffectActiveListRemove(FLDEFF_MOVE_DEOXYS_ROCK);
|
||||
|
||||
+66
-66
@@ -44,7 +44,7 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo
|
||||
{
|
||||
struct Sprite *reflectionSprite;
|
||||
|
||||
reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
|
||||
reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)];
|
||||
reflectionSprite->callback = UpdateObjectReflectionSprite;
|
||||
reflectionSprite->oam.priority = 3;
|
||||
reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum];
|
||||
@@ -142,12 +142,12 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
|
||||
reflectionSprite->subspriteTables = mainSprite->subspriteTables;
|
||||
reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum;
|
||||
reflectionSprite->invisible = mainSprite->invisible;
|
||||
reflectionSprite->pos1.x = mainSprite->pos1.x;
|
||||
reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset;
|
||||
reflectionSprite->x = mainSprite->x;
|
||||
reflectionSprite->y = mainSprite->y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset;
|
||||
reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX;
|
||||
reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY;
|
||||
reflectionSprite->pos2.x = mainSprite->pos2.x;
|
||||
reflectionSprite->pos2.y = -mainSprite->pos2.y;
|
||||
reflectionSprite->x2 = mainSprite->x2;
|
||||
reflectionSprite->y2 = -mainSprite->y2;
|
||||
reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled;
|
||||
|
||||
if (objectEvent->hideReflection == TRUE)
|
||||
@@ -204,8 +204,8 @@ void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y)
|
||||
{
|
||||
SetSpritePosToMapCoords(x, y, &x2, &y2);
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->pos1.x = x2 + 8;
|
||||
sprite->pos1.y = y2 + 8;
|
||||
sprite->x = x2 + 8;
|
||||
sprite->y = y2 + 8;
|
||||
sprite->invisible = FALSE;
|
||||
sprite->data[0] = x;
|
||||
sprite->data[1] = y;
|
||||
@@ -262,8 +262,8 @@ void UpdateShadowFieldEffect(struct Sprite *sprite)
|
||||
objectEvent = &gObjectEvents[objectEventId];
|
||||
linkedSprite = &gSprites[objectEvent->spriteId];
|
||||
sprite->oam.priority = linkedSprite->oam.priority;
|
||||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3];
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = linkedSprite->y + sprite->data[3];
|
||||
if (!objectEvent->active || !objectEvent->hasShadow
|
||||
|| MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior)
|
||||
|| MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior)
|
||||
@@ -517,8 +517,8 @@ u32 FldEff_ShortGrass(void)
|
||||
sprite->data[0] = gFieldEffectArguments[0];
|
||||
sprite->data[1] = gFieldEffectArguments[1];
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].y;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -539,8 +539,8 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
|
||||
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
|
||||
y = linkedSprite->pos1.y;
|
||||
x = linkedSprite->pos1.x;
|
||||
y = linkedSprite->y;
|
||||
x = linkedSprite->x;
|
||||
if (x != sprite->data[3] || y != sprite->data[4])
|
||||
{
|
||||
sprite->data[3] = x;
|
||||
@@ -550,9 +550,9 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
}
|
||||
sprite->pos1.x = x;
|
||||
sprite->pos1.y = y;
|
||||
sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
|
||||
sprite->x = x;
|
||||
sprite->y = y;
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 8;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
sprite->oam.priority = linkedSprite->oam.priority;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, linkedSprite->invisible);
|
||||
@@ -665,7 +665,7 @@ u32 FldEff_Splash(void)
|
||||
sprite->data[0] = gFieldEffectArguments[0];
|
||||
sprite->data[1] = gFieldEffectArguments[1];
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 4;
|
||||
PlaySE(SE_PUDDLE);
|
||||
}
|
||||
return 0;
|
||||
@@ -681,8 +681,8 @@ void UpdateSplashFieldEffect(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = gSprites[gObjectEvents[objectEventId].spriteId].pos1.x;
|
||||
sprite->pos1.y = gSprites[gObjectEvents[objectEventId].spriteId].pos1.y;
|
||||
sprite->x = gSprites[gObjectEvents[objectEventId].spriteId].x;
|
||||
sprite->y = gSprites[gObjectEvents[objectEventId].spriteId].y;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
}
|
||||
@@ -746,7 +746,7 @@ u32 FldEff_FeetInFlowingWater(void)
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->data[3] = -1;
|
||||
sprite->data[4] = -1;
|
||||
sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 4;
|
||||
StartSpriteAnim(sprite, 1);
|
||||
}
|
||||
return 0;
|
||||
@@ -766,8 +766,8 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
objectEvent = &gObjectEvents[objectEventId];
|
||||
linkedSprite = &gSprites[objectEvent->spriteId];
|
||||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = linkedSprite->pos1.y;
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = linkedSprite->y;
|
||||
sprite->subpriority = linkedSprite->subpriority;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4])
|
||||
@@ -816,8 +816,8 @@ u32 FldEff_HotSpringsWater(void)
|
||||
sprite->data[0] = gFieldEffectArguments[0];
|
||||
sprite->data[1] = gFieldEffectArguments[1];
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].y;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -836,8 +836,8 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
|
||||
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
|
||||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8;
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
@@ -1092,7 +1092,7 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit
|
||||
u8 i;
|
||||
s16 x = playerObj->currentCoords.x;
|
||||
s16 y = playerObj->currentCoords.y;
|
||||
s32 spriteY = sprite->pos2.y;
|
||||
s32 spriteY = sprite->y2;
|
||||
|
||||
if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7]))
|
||||
{
|
||||
@@ -1120,7 +1120,7 @@ static void UpdateBobbingEffect(struct ObjectEvent *playerObj, struct Sprite *pl
|
||||
// Update bobbing position of surf blob
|
||||
if (((u16)(++sprite->data[4]) & intervals[sprite->data[5]]) == 0)
|
||||
{
|
||||
sprite->pos2.y += sprite->data[3];
|
||||
sprite->y2 += sprite->data[3];
|
||||
}
|
||||
if ((sprite->data[4] & 15) == 0)
|
||||
{
|
||||
@@ -1130,11 +1130,11 @@ static void UpdateBobbingEffect(struct ObjectEvent *playerObj, struct Sprite *pl
|
||||
{
|
||||
// Update bobbing position of player
|
||||
if (!GetSurfBlob_HasPlayerOffset(sprite))
|
||||
playerSprite->pos2.y = sprite->pos2.y;
|
||||
playerSprite->y2 = sprite->y2;
|
||||
else
|
||||
playerSprite->pos2.y = sprite->tPlayerOffset + sprite->pos2.y;
|
||||
sprite->pos1.x = playerSprite->pos1.x;
|
||||
sprite->pos1.y = playerSprite->pos1.y + 8;
|
||||
playerSprite->y2 = sprite->tPlayerOffset + sprite->y2;
|
||||
sprite->x = playerSprite->x;
|
||||
sprite->y = playerSprite->y + 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1167,7 +1167,7 @@ static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite)
|
||||
blobSprite = &gSprites[sprite->sSpriteId];
|
||||
if (((sprite->sTimer++) & 3) == 0)
|
||||
{
|
||||
blobSprite->pos2.y += sprite->sBobY;
|
||||
blobSprite->y2 += sprite->sBobY;
|
||||
}
|
||||
if ((sprite->sTimer & 15) == 0)
|
||||
{
|
||||
@@ -1217,9 +1217,9 @@ u32 FldEff_SandPile(void)
|
||||
sprite->data[0] = gFieldEffectArguments[0];
|
||||
sprite->data[1] = gFieldEffectArguments[1];
|
||||
sprite->data[2] = gFieldEffectArguments[2];
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
|
||||
sprite->pos2.y = (graphicsInfo->height >> 1) - 2;
|
||||
sprite->data[3] = gSprites[objectEvent->spriteId].x;
|
||||
sprite->data[4] = gSprites[objectEvent->spriteId].y;
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 2;
|
||||
SeekSpriteAnim(sprite, 2);
|
||||
}
|
||||
return 0;
|
||||
@@ -1237,8 +1237,8 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
y = gSprites[gObjectEvents[objectEventId].spriteId].pos1.y;
|
||||
x = gSprites[gObjectEvents[objectEventId].spriteId].pos1.x;
|
||||
y = gSprites[gObjectEvents[objectEventId].spriteId].y;
|
||||
x = gSprites[gObjectEvents[objectEventId].spriteId].x;
|
||||
if (x != sprite->data[3] || y != sprite->data[4])
|
||||
{
|
||||
sprite->data[3] = x;
|
||||
@@ -1248,8 +1248,8 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
}
|
||||
sprite->pos1.x = x;
|
||||
sprite->pos1.y = y;
|
||||
sprite->x = x;
|
||||
sprite->y = y;
|
||||
sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
@@ -1275,7 +1275,7 @@ void UpdateBubblesFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] += 0x80;
|
||||
sprite->data[0] &= 0x100;
|
||||
sprite->pos1.y -= sprite->data[0] >> 8;
|
||||
sprite->y -= sprite->data[0] >> 8;
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (sprite->invisible || sprite->animEnded)
|
||||
{
|
||||
@@ -1359,8 +1359,8 @@ void UpdateDisguiseFieldEffect(struct Sprite *sprite)
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
|
||||
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
|
||||
sprite->invisible = linkedSprite->invisible;
|
||||
sprite->pos1.x = linkedSprite->pos1.x;
|
||||
sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16;
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 16;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
|
||||
if (sprite->sState == 1)
|
||||
@@ -1468,25 +1468,25 @@ static bool8 AnimateRayquazaInFigure8(struct Sprite *sprite)
|
||||
switch (sprite->sAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.x += GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
sprite->x2 += GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->y2 += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->x2 -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x -= GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
sprite->x2 -= GetFigure8XOffset(sprite->sAnimCounter);
|
||||
sprite->y2 += GetFigure8YOffset(sprite->sAnimCounter);
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->x2 += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
|
||||
break;
|
||||
}
|
||||
|
||||
// Update spotlight to sweep left and right with Rayquaza
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->pos2.x);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->x2);
|
||||
|
||||
if (++sprite->sAnimCounter == FIGURE_8_LENGTH)
|
||||
{
|
||||
@@ -1495,8 +1495,8 @@ static bool8 AnimateRayquazaInFigure8(struct Sprite *sprite)
|
||||
}
|
||||
if (sprite->sAnimState == 4)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->y2 = 0;
|
||||
sprite->x2 = 0;
|
||||
finished = TRUE;
|
||||
}
|
||||
|
||||
@@ -1528,7 +1528,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.y = (gSineTable[sprite->sTimer / 3] >> 2) + sprite->sStartY;
|
||||
sprite->y = (gSineTable[sprite->sTimer / 3] >> 2) + sprite->sStartY;
|
||||
if (sprite->sTimer == 189)
|
||||
{
|
||||
sprite->sState = 2;
|
||||
@@ -1549,7 +1549,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sprite->pos2.y == 0)
|
||||
if (sprite->y2 == 0)
|
||||
{
|
||||
sprite->sTimer = 0;
|
||||
sprite->sState++;
|
||||
@@ -1557,10 +1557,10 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
if (sprite->sTimer == 5)
|
||||
{
|
||||
sprite->sTimer = 0;
|
||||
if (sprite->pos2.y > 0)
|
||||
sprite->pos2.y--;
|
||||
if (sprite->y2 > 0)
|
||||
sprite->y2--;
|
||||
else
|
||||
sprite->pos2.y++;
|
||||
sprite->y2++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
@@ -1614,7 +1614,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
|
||||
if (sprite->sState == 1)
|
||||
{
|
||||
if ((sprite->data[1] & 7) == 0)
|
||||
sprite->pos2.y += sprite->data[3];
|
||||
sprite->y2 += sprite->data[3];
|
||||
if ((sprite->data[1] & 15) == 0)
|
||||
sprite->data[3] = -sprite->data[3];
|
||||
sprite->data[1]++;
|
||||
@@ -1667,13 +1667,13 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 of
|
||||
{
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
linkedSprite = &gSprites[objectEvent->spriteId];
|
||||
xhi = sprite->pos1.x + sprite->centerToCornerVecX;
|
||||
var = sprite->pos1.x - sprite->centerToCornerVecX;
|
||||
if (xhi < linkedSprite->pos1.x && var > linkedSprite->pos1.x)
|
||||
xhi = sprite->x + sprite->centerToCornerVecX;
|
||||
var = sprite->x - sprite->centerToCornerVecX;
|
||||
if (xhi < linkedSprite->x && var > linkedSprite->x)
|
||||
{
|
||||
lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
|
||||
var = linkedSprite->pos1.y;
|
||||
ylo = sprite->pos1.y - sprite->centerToCornerVecY;
|
||||
lyhi = linkedSprite->y + linkedSprite->centerToCornerVecY;
|
||||
var = linkedSprite->y;
|
||||
ylo = sprite->y - sprite->centerToCornerVecY;
|
||||
yhi = ylo + linkedSprite->centerToCornerVecY;
|
||||
if ((lyhi < yhi || lyhi < ylo) && var > yhi && sprite->subpriority <= linkedSprite->subpriority)
|
||||
{
|
||||
|
||||
+21
-21
@@ -1933,8 +1933,8 @@ static bool8 Fishing_StartEncounter(struct Task *task)
|
||||
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
SetSurfBlob_PlayerOffset(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, FALSE, 0);
|
||||
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
|
||||
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
|
||||
gSprites[gPlayerAvatar.spriteId].x2 = 0;
|
||||
gSprites[gPlayerAvatar.spriteId].y2 = 0;
|
||||
ClearDialogWindowAndFrame(0, TRUE);
|
||||
task->tFrameCounter++;
|
||||
return FALSE;
|
||||
@@ -1990,8 +1990,8 @@ static bool8 Fishing_PutRodAway(struct Task *task)
|
||||
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
SetSurfBlob_PlayerOffset(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, FALSE, 0);
|
||||
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
|
||||
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
|
||||
gSprites[gPlayerAvatar.spriteId].x2 = 0;
|
||||
gSprites[gPlayerAvatar.spriteId].y2 = 0;
|
||||
task->tStep++;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -2023,8 +2023,8 @@ static void AlignFishingAnimationFrames(void)
|
||||
u8 animType;
|
||||
|
||||
AnimateSprite(playerSprite);
|
||||
playerSprite->pos2.x = 0;
|
||||
playerSprite->pos2.y = 0;
|
||||
playerSprite->x2 = 0;
|
||||
playerSprite->y2 = 0;
|
||||
animCmdIndex = playerSprite->animCmdIndex;
|
||||
if (playerSprite->anims[playerSprite->animNum][animCmdIndex].type == -1)
|
||||
{
|
||||
@@ -2039,16 +2039,16 @@ static void AlignFishingAnimationFrames(void)
|
||||
animType = playerSprite->anims[playerSprite->animNum][animCmdIndex].type;
|
||||
if (animType == 1 || animType == 2 || animType == 3)
|
||||
{
|
||||
playerSprite->pos2.x = 8;
|
||||
playerSprite->x2 = 8;
|
||||
if (GetPlayerFacingDirection() == 3)
|
||||
playerSprite->pos2.x = -8;
|
||||
playerSprite->x2 = -8;
|
||||
}
|
||||
if (animType == 5)
|
||||
playerSprite->pos2.y = -8;
|
||||
playerSprite->y2 = -8;
|
||||
if (animType == 10 || animType == 11)
|
||||
playerSprite->pos2.y = 8;
|
||||
playerSprite->y2 = 8;
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||
SetSurfBlob_PlayerOffset(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, TRUE, playerSprite->pos2.y);
|
||||
SetSurfBlob_PlayerOffset(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, TRUE, playerSprite->y2);
|
||||
}
|
||||
|
||||
void SetSpinStartFacingDir(u8 direction)
|
||||
@@ -2090,8 +2090,8 @@ static void Task_DoPlayerSpinExit(u8 taskId)
|
||||
SetSpinStartFacingDir(object->facingDirection);
|
||||
tSpinDelayTimer = 0;
|
||||
tSpeed = 1;
|
||||
tCurY = (u16)(sprite->pos1.y + sprite->pos2.y) << 4;
|
||||
sprite->pos2.y = 0;
|
||||
tCurY = (u16)(sprite->y + sprite->y2) << 4;
|
||||
sprite->y2 = 0;
|
||||
CameraObjectReset2();
|
||||
object->fixedPriority = TRUE;
|
||||
sprite->oam.priority = 0;
|
||||
@@ -2104,10 +2104,10 @@ static void Task_DoPlayerSpinExit(u8 taskId)
|
||||
// Rise and accelerate
|
||||
tCurY -= tSpeed;
|
||||
tSpeed += 3;
|
||||
sprite->pos1.y = tCurY >> 4;
|
||||
sprite->y = tCurY >> 4;
|
||||
|
||||
// Check if offscreen
|
||||
if (sprite->pos1.y + (s16)gTotalCameraPixelOffsetY < -32)
|
||||
if (sprite->y + (s16)gTotalCameraPixelOffsetY < -32)
|
||||
tState++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -2156,11 +2156,11 @@ static void Task_DoPlayerSpinEntrance(u8 taskId)
|
||||
ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(sSpinDirections[tStartDir]));
|
||||
tSpinDelayTimer = 0;
|
||||
tSpeed = 116;
|
||||
tDestY = sprite->pos1.y;
|
||||
tDestY = sprite->y;
|
||||
tPriority = sprite->oam.priority;
|
||||
tSubpriority = sprite->subpriority;
|
||||
tCurY = -((u16)sprite->pos2.y + 32) * 16;
|
||||
sprite->pos2.y = 0;
|
||||
tCurY = -((u16)sprite->y2 + 32) * 16;
|
||||
sprite->y2 = 0;
|
||||
CameraObjectReset2();
|
||||
object->fixedPriority = TRUE;
|
||||
sprite->oam.priority = 1;
|
||||
@@ -2175,12 +2175,12 @@ static void Task_DoPlayerSpinEntrance(u8 taskId)
|
||||
tSpeed -= 3;
|
||||
if (tSpeed < 4)
|
||||
tSpeed = 4;
|
||||
sprite->pos1.y = tCurY >> 4;
|
||||
sprite->y = tCurY >> 4;
|
||||
|
||||
// Check if reached dest
|
||||
if (sprite->pos1.y >= tDestY)
|
||||
if (sprite->y >= tDestY)
|
||||
{
|
||||
sprite->pos1.y = tDestY;
|
||||
sprite->y = tDestY;
|
||||
tGroundTimer = 0;
|
||||
tState++;
|
||||
}
|
||||
|
||||
+15
-15
@@ -72,12 +72,12 @@ void Task_Truck1(u8 taskId)
|
||||
s16 cameraXpan = 0, cameraYpan = 0;
|
||||
s16 box1, box2, box3;
|
||||
|
||||
box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box.
|
||||
SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
|
||||
box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box.
|
||||
SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
|
||||
box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box.
|
||||
SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
|
||||
box1 = GetTruckBoxMovement(data[0] + 30) * 4;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
|
||||
box2 = GetTruckBoxMovement(data[0]) * 2;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
|
||||
box3 = GetTruckBoxMovement(data[0]) * 4;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
|
||||
|
||||
if (++data[0] == SECONDS(500)) // this will never run
|
||||
data[0] = 0; // reset the timer if it gets stuck.
|
||||
@@ -116,11 +116,11 @@ void Task_Truck2(u8 taskId)
|
||||
cameraYpan = GetTruckCameraBobbingY(data[2]);
|
||||
SetCameraPanning(cameraXpan, cameraYpan);
|
||||
box1 = GetTruckBoxMovement(data[2] + 30) * 4;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
|
||||
box2 = GetTruckBoxMovement(data[2]) * 2;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
|
||||
box3 = GetTruckBoxMovement(data[2]) * 4;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,9 +147,9 @@ static void Task_Truck3(u8 taskId)
|
||||
cameraXpan = gTruckCamera_HorizontalTable[data[1]];
|
||||
cameraYpan = 0;
|
||||
SetCameraPanning(cameraXpan, 0);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,9 +242,9 @@ void EndTruckSequence(u8 taskId)
|
||||
{
|
||||
if (!FuncIsActiveTask(Task_HandleTruckSequence))
|
||||
{
|
||||
SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+19
-20
@@ -57,7 +57,6 @@
|
||||
#include "constants/map_types.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/mevent.h"
|
||||
#include "constants/tv.h"
|
||||
#include "constants/script_menu.h"
|
||||
#include "constants/slot_machine.h"
|
||||
#include "constants/songs.h"
|
||||
@@ -1622,7 +1621,7 @@ void BufferLottoTicketNumber(void)
|
||||
{
|
||||
if (gSpecialVar_Result >= 10000)
|
||||
{
|
||||
TV_PrintIntToStringVar(0, gSpecialVar_Result);
|
||||
ConvertIntToDecimalString(0, gSpecialVar_Result);
|
||||
}
|
||||
else if (gSpecialVar_Result >= 1000)
|
||||
{
|
||||
@@ -3118,8 +3117,8 @@ static void ShowFrontierExchangeCornerItemIcon(u16 item)
|
||||
if (sScrollableMultichoice_ItemSpriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[sScrollableMultichoice_ItemSpriteId].oam.priority = 0;
|
||||
gSprites[sScrollableMultichoice_ItemSpriteId].pos1.x = 36;
|
||||
gSprites[sScrollableMultichoice_ItemSpriteId].pos1.y = 92;
|
||||
gSprites[sScrollableMultichoice_ItemSpriteId].x = 36;
|
||||
gSprites[sScrollableMultichoice_ItemSpriteId].y = 92;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3430,7 +3429,7 @@ static void ChangeDeoxysRockLevel(u8 rockLevel)
|
||||
{
|
||||
u8 objectEventId;
|
||||
LoadPalette(&sDeoxysRockPalettes[rockLevel], 0x1A0, 8);
|
||||
TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
TryGetObjectEventIdByLocalIdAndMap(LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
|
||||
if (rockLevel == 0)
|
||||
PlaySE(SE_M_CONFUSE_RAY);
|
||||
@@ -3438,9 +3437,9 @@ static void ChangeDeoxysRockLevel(u8 rockLevel)
|
||||
PlaySE(SE_RG_DEOXYS_MOVE);
|
||||
|
||||
CreateTask(WaitForDeoxysRockMovement, 8);
|
||||
gFieldEffectArguments[0] = 1;
|
||||
gFieldEffectArguments[1] = 58;
|
||||
gFieldEffectArguments[2] = 26;
|
||||
gFieldEffectArguments[0] = LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK;
|
||||
gFieldEffectArguments[1] = MAP_NUM(BIRTH_ISLAND_EXTERIOR);
|
||||
gFieldEffectArguments[2] = MAP_GROUP(BIRTH_ISLAND_EXTERIOR);
|
||||
gFieldEffectArguments[3] = sDeoxysRockCoords[rockLevel][0];
|
||||
gFieldEffectArguments[4] = sDeoxysRockCoords[rockLevel][1];
|
||||
|
||||
@@ -3687,18 +3686,18 @@ u32 GetMartEmployeeObjectEventId(void)
|
||||
{
|
||||
static const u8 sPokeMarts[][3] =
|
||||
{
|
||||
{ MAP_GROUP(OLDALE_TOWN_MART), MAP_NUM(OLDALE_TOWN_MART), 1 },
|
||||
{ MAP_GROUP(LAVARIDGE_TOWN_MART), MAP_NUM(LAVARIDGE_TOWN_MART), 1 },
|
||||
{ MAP_GROUP(FALLARBOR_TOWN_MART), MAP_NUM(FALLARBOR_TOWN_MART), 1 },
|
||||
{ MAP_GROUP(VERDANTURF_TOWN_MART), MAP_NUM(VERDANTURF_TOWN_MART), 1 },
|
||||
{ MAP_GROUP(PETALBURG_CITY_MART), MAP_NUM(PETALBURG_CITY_MART), 1 },
|
||||
{ MAP_GROUP(SLATEPORT_CITY_MART), MAP_NUM(SLATEPORT_CITY_MART), 1 },
|
||||
{ MAP_GROUP(MAUVILLE_CITY_MART), MAP_NUM(MAUVILLE_CITY_MART), 1 },
|
||||
{ MAP_GROUP(RUSTBORO_CITY_MART), MAP_NUM(RUSTBORO_CITY_MART), 1 },
|
||||
{ MAP_GROUP(FORTREE_CITY_MART), MAP_NUM(FORTREE_CITY_MART), 1 },
|
||||
{ MAP_GROUP(MOSSDEEP_CITY_MART), MAP_NUM(MOSSDEEP_CITY_MART), 1 },
|
||||
{ MAP_GROUP(SOOTOPOLIS_CITY_MART), MAP_NUM(SOOTOPOLIS_CITY_MART), 1 },
|
||||
{ MAP_GROUP(BATTLE_FRONTIER_MART), MAP_NUM(BATTLE_FRONTIER_MART), 1 }
|
||||
{ MAP_GROUP(OLDALE_TOWN_MART), MAP_NUM(OLDALE_TOWN_MART), LOCALID_OLDALE_MART_CLERK },
|
||||
{ MAP_GROUP(LAVARIDGE_TOWN_MART), MAP_NUM(LAVARIDGE_TOWN_MART), LOCALID_LAVARIDGE_MART_CLERK },
|
||||
{ MAP_GROUP(FALLARBOR_TOWN_MART), MAP_NUM(FALLARBOR_TOWN_MART), LOCALID_FALLARBOR_MART_CLERK },
|
||||
{ MAP_GROUP(VERDANTURF_TOWN_MART), MAP_NUM(VERDANTURF_TOWN_MART), LOCALID_VERDANTURF_MART_CLERK },
|
||||
{ MAP_GROUP(PETALBURG_CITY_MART), MAP_NUM(PETALBURG_CITY_MART), LOCALID_PETALBURG_MART_CLERK },
|
||||
{ MAP_GROUP(SLATEPORT_CITY_MART), MAP_NUM(SLATEPORT_CITY_MART), LOCALID_SLATEPORT_MART_CLERK },
|
||||
{ MAP_GROUP(MAUVILLE_CITY_MART), MAP_NUM(MAUVILLE_CITY_MART), LOCALID_MAUVILLE_MART_CLERK },
|
||||
{ MAP_GROUP(RUSTBORO_CITY_MART), MAP_NUM(RUSTBORO_CITY_MART), LOCALID_RUSTBORO_MART_CLERK },
|
||||
{ MAP_GROUP(FORTREE_CITY_MART), MAP_NUM(FORTREE_CITY_MART), LOCALID_FORTREE_MART_CLERK },
|
||||
{ MAP_GROUP(MOSSDEEP_CITY_MART), MAP_NUM(MOSSDEEP_CITY_MART), LOCALID_MOSSDEEP_MART_CLERK },
|
||||
{ MAP_GROUP(SOOTOPOLIS_CITY_MART), MAP_NUM(SOOTOPOLIS_CITY_MART), LOCALID_SOOTOPOLIS_MART_CLERK },
|
||||
{ MAP_GROUP(BATTLE_FRONTIER_MART), MAP_NUM(BATTLE_FRONTIER_MART), LOCALID_BATTLE_FRONTIER_MART_CLERK }
|
||||
};
|
||||
|
||||
u8 i;
|
||||
|
||||
+54
-54
@@ -189,7 +189,7 @@ static void CreateCloudSprites(void)
|
||||
{
|
||||
gWeatherPtr->sprites.s1.cloudSprites[i] = &gSprites[spriteId];
|
||||
sprite = gWeatherPtr->sprites.s1.cloudSprites[i];
|
||||
SetSpritePosToMapCoords(sCloudSpriteMapCoords[i].x + 7, sCloudSpriteMapCoords[i].y + 7, &sprite->pos1.x, &sprite->pos1.y);
|
||||
SetSpritePosToMapCoords(sCloudSpriteMapCoords[i].x + 7, sCloudSpriteMapCoords[i].y + 7, &sprite->x, &sprite->y);
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
}
|
||||
else
|
||||
@@ -223,7 +223,7 @@ static void UpdateCloudSprite(struct Sprite *sprite)
|
||||
// Move 1 pixel left every 2 frames.
|
||||
sprite->data[0] = (sprite->data[0] + 1) & 1;
|
||||
if (sprite->data[0])
|
||||
sprite->pos1.x--;
|
||||
sprite->x--;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -593,12 +593,12 @@ static void UpdateRainSprite(struct Sprite *sprite)
|
||||
// Raindrop is in its "falling" motion.
|
||||
sprite->tPosX += sRainSpriteMovement[gWeatherPtr->isDownpour][0];
|
||||
sprite->tPosY += sRainSpriteMovement[gWeatherPtr->isDownpour][1];
|
||||
sprite->pos1.x = sprite->tPosX >> 4;
|
||||
sprite->pos1.y = sprite->tPosY >> 4;
|
||||
sprite->x = sprite->tPosX >> 4;
|
||||
sprite->y = sprite->tPosY >> 4;
|
||||
|
||||
if (sprite->tActive
|
||||
&& (sprite->pos1.x >= -8 && sprite->pos1.x <= 248)
|
||||
&& sprite->pos1.y >= -16 && sprite->pos1.y <= 176)
|
||||
&& (sprite->x >= -8 && sprite->x <= 248)
|
||||
&& sprite->y >= -16 && sprite->y <= 176)
|
||||
sprite->invisible = FALSE;
|
||||
else
|
||||
sprite->invisible = TRUE;
|
||||
@@ -608,8 +608,8 @@ static void UpdateRainSprite(struct Sprite *sprite)
|
||||
// Make raindrop splash on the ground
|
||||
StartSpriteAnim(sprite, gWeatherPtr->isDownpour + 1);
|
||||
sprite->tState = 1;
|
||||
sprite->pos1.x -= gSpriteCoordOffsetX;
|
||||
sprite->pos1.y -= gSpriteCoordOffsetY;
|
||||
sprite->x -= gSpriteCoordOffsetX;
|
||||
sprite->y -= gSpriteCoordOffsetY;
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -925,10 +925,10 @@ static void InitSnowflakeSpriteMovement(struct Sprite *sprite)
|
||||
u16 rand;
|
||||
u16 x = ((sprite->tSnowflakeId * 5) & 7) * 30 + (Random() % 30);
|
||||
|
||||
sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
|
||||
sprite->pos1.x = x - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
|
||||
sprite->tPosY = sprite->pos1.y * 128;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
|
||||
sprite->x = x - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
|
||||
sprite->tPosY = sprite->y * 128;
|
||||
sprite->x2 = 0;
|
||||
rand = Random();
|
||||
sprite->tDeltaY = (rand & 3) * 5 + 64;
|
||||
sprite->tDeltaY2 = sprite->tDeltaY;
|
||||
@@ -946,8 +946,8 @@ static void WaitSnowflakeSprite(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible = FALSE;
|
||||
sprite->callback = UpdateSnowflakeSprite;
|
||||
sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
|
||||
sprite->tPosY = sprite->pos1.y * 128;
|
||||
sprite->y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
|
||||
sprite->tPosY = sprite->y * 128;
|
||||
gWeatherPtr->snowflakeTimer = 0;
|
||||
}
|
||||
}
|
||||
@@ -958,32 +958,32 @@ static void UpdateSnowflakeSprite(struct Sprite *sprite)
|
||||
s16 y;
|
||||
|
||||
sprite->tPosY += sprite->tDeltaY;
|
||||
sprite->pos1.y = sprite->tPosY >> 7;
|
||||
sprite->y = sprite->tPosY >> 7;
|
||||
sprite->tWaveIndex += sprite->tWaveDelta;
|
||||
sprite->tWaveIndex &= 0xFF;
|
||||
sprite->pos2.x = gSineTable[sprite->tWaveIndex] / 64;
|
||||
sprite->x2 = gSineTable[sprite->tWaveIndex] / 64;
|
||||
|
||||
x = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF;
|
||||
x = (sprite->x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF;
|
||||
if (x & 0x100)
|
||||
x |= -0x100;
|
||||
|
||||
if (x < -3)
|
||||
sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
|
||||
sprite->x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
|
||||
else if (x > 242)
|
||||
sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
|
||||
sprite->x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
|
||||
|
||||
y = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF;
|
||||
y = (sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF;
|
||||
if (y > 163 && y < 171)
|
||||
{
|
||||
sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
|
||||
sprite->tPosY = sprite->pos1.y * 128;
|
||||
sprite->y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
|
||||
sprite->tPosY = sprite->y * 128;
|
||||
sprite->tFallCounter = 0;
|
||||
sprite->tFallDuration = 220;
|
||||
}
|
||||
else if (y > 242 && y < 250)
|
||||
{
|
||||
sprite->pos1.y = 163;
|
||||
sprite->tPosY = sprite->pos1.y * 128;
|
||||
sprite->y = 163;
|
||||
sprite->tPosY = sprite->y * 128;
|
||||
sprite->tFallCounter = 0;
|
||||
sprite->tFallDuration = 220;
|
||||
sprite->invisible = TRUE;
|
||||
@@ -993,7 +993,7 @@ static void UpdateSnowflakeSprite(struct Sprite *sprite)
|
||||
if (++sprite->tFallCounter == sprite->tFallDuration)
|
||||
{
|
||||
InitSnowflakeSpriteMovement(sprite);
|
||||
sprite->pos1.y = 250;
|
||||
sprite->y = 250;
|
||||
sprite->invisible = TRUE;
|
||||
sprite->callback = WaitSnowflakeSprite;
|
||||
}
|
||||
@@ -1441,12 +1441,12 @@ bool8 FogHorizontal_Finish(void)
|
||||
|
||||
static void FogHorizontalSpriteCallback(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = (u8)gSpriteCoordOffsetY;
|
||||
sprite->pos1.x = gWeatherPtr->fogHScrollPosX + 32 + sprite->tSpriteColumn * 64;
|
||||
if (sprite->pos1.x > 271)
|
||||
sprite->y2 = (u8)gSpriteCoordOffsetY;
|
||||
sprite->x = gWeatherPtr->fogHScrollPosX + 32 + sprite->tSpriteColumn * 64;
|
||||
if (sprite->x > 271)
|
||||
{
|
||||
sprite->pos1.x = 480 + gWeatherPtr->fogHScrollPosX - (4 - sprite->tSpriteColumn) * 64;
|
||||
sprite->pos1.x &= 0x1FF;
|
||||
sprite->x = 480 + gWeatherPtr->fogHScrollPosX - (4 - sprite->tSpriteColumn) * 64;
|
||||
sprite->x &= 0x1FF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1471,8 +1471,8 @@ static void CreateFogHorizontalSprites(void)
|
||||
{
|
||||
sprite = &gSprites[spriteId];
|
||||
sprite->tSpriteColumn = i % 5;
|
||||
sprite->pos1.x = (i % 5) * 64 + 32;
|
||||
sprite->pos1.y = (i / 5) * 64 + 32;
|
||||
sprite->x = (i % 5) * 64 + 32;
|
||||
sprite->y = (i / 5) * 64 + 32;
|
||||
gWeatherPtr->sprites.s2.fogHSprites[i] = sprite;
|
||||
}
|
||||
else
|
||||
@@ -1700,12 +1700,12 @@ static void UpdateAshSprite(struct Sprite *sprite)
|
||||
sprite->tOffsetY++;
|
||||
}
|
||||
|
||||
sprite->pos1.y = gSpriteCoordOffsetY + sprite->tOffsetY;
|
||||
sprite->pos1.x = gWeatherPtr->ashBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
|
||||
if (sprite->pos1.x > 271)
|
||||
sprite->y = gSpriteCoordOffsetY + sprite->tOffsetY;
|
||||
sprite->x = gWeatherPtr->ashBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
|
||||
if (sprite->x > 271)
|
||||
{
|
||||
sprite->pos1.x = gWeatherPtr->ashBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
|
||||
sprite->pos1.x &= 0x1FF;
|
||||
sprite->x = gWeatherPtr->ashBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
|
||||
sprite->x &= 0x1FF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1910,12 +1910,12 @@ static void DestroyFogDiagonalSprites(void)
|
||||
|
||||
static void UpdateFogDiagonalSprite(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = gWeatherPtr->fogDPosY;
|
||||
sprite->pos1.x = gWeatherPtr->fogDBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
|
||||
if (sprite->pos1.x > 271)
|
||||
sprite->y2 = gWeatherPtr->fogDPosY;
|
||||
sprite->x = gWeatherPtr->fogDBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
|
||||
if (sprite->x > 271)
|
||||
{
|
||||
sprite->pos1.x = gWeatherPtr->fogDBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
|
||||
sprite->pos1.x &= 0x1FF;
|
||||
sprite->x = gWeatherPtr->fogDBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
|
||||
sprite->x &= 0x1FF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2186,12 +2186,12 @@ static void CreateSwirlSandstormSprites(void)
|
||||
|
||||
static void UpdateSandstormSprite(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = gWeatherPtr->sandstormPosY;
|
||||
sprite->pos1.x = gWeatherPtr->sandstormBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
|
||||
if (sprite->pos1.x > 271)
|
||||
sprite->y2 = gWeatherPtr->sandstormPosY;
|
||||
sprite->x = gWeatherPtr->sandstormBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
|
||||
if (sprite->x > 271)
|
||||
{
|
||||
sprite->pos1.x = gWeatherPtr->sandstormBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
|
||||
sprite->pos1.x &= 0x1FF;
|
||||
sprite->x = gWeatherPtr->sandstormBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
|
||||
sprite->x &= 0x1FF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2205,16 +2205,16 @@ static void UpdateSandstormSwirlSprite(struct Sprite *sprite)
|
||||
{
|
||||
u32 x, y;
|
||||
|
||||
if (--sprite->pos1.y < -48)
|
||||
if (--sprite->y < -48)
|
||||
{
|
||||
sprite->pos1.y = 208;
|
||||
sprite->y = 208;
|
||||
sprite->tRadius = 4;
|
||||
}
|
||||
|
||||
x = sprite->tRadius * gSineTable[sprite->tWaveIndex];
|
||||
y = sprite->tRadius * gSineTable[sprite->tWaveIndex + 0x40];
|
||||
sprite->pos2.x = x >> 8;
|
||||
sprite->pos2.y = y >> 8;
|
||||
sprite->x2 = x >> 8;
|
||||
sprite->y2 = y >> 8;
|
||||
sprite->tWaveIndex = (sprite->tWaveIndex + 10) & 0xFF;
|
||||
if (++sprite->tRadiusCounter > 8)
|
||||
{
|
||||
@@ -2404,17 +2404,17 @@ static void UpdateBubbleSprite(struct Sprite *sprite)
|
||||
sprite->tScrollXCounter = 0;
|
||||
if (sprite->tScrollXDir == 0)
|
||||
{
|
||||
if (++sprite->pos2.x > 4)
|
||||
if (++sprite->x2 > 4)
|
||||
sprite->tScrollXDir = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (--sprite->pos2.x <= 0)
|
||||
if (--sprite->x2 <= 0)
|
||||
sprite->tScrollXDir = 0;
|
||||
}
|
||||
}
|
||||
|
||||
sprite->pos1.y -= 3;
|
||||
sprite->y -= 3;
|
||||
if (++sprite->tCounter >= 120)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
+2
-2
@@ -555,8 +555,8 @@ static void CutGrassSpriteCallback1(struct Sprite *sprite)
|
||||
|
||||
static void CutGrassSpriteCallback2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]);
|
||||
sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]);
|
||||
sprite->x2 = Sin(sprite->data[2], sprite->data[0]);
|
||||
sprite->y2 = Cos(sprite->data[2], sprite->data[0]);
|
||||
|
||||
sprite->data[2] = (sprite->data[2] + 8) & 0xFF;
|
||||
sprite->data[0] += 1 + (sprite->data[3] >> 2); // right shift by 2 is dividing by 4
|
||||
|
||||
+3
-4
@@ -22,7 +22,6 @@
|
||||
#include "constants/metatile_behaviors.h"
|
||||
#include "constants/metatile_labels.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/tv.h"
|
||||
|
||||
|
||||
EWRAM_DATA struct MapPosition gPlayerFacingPosition = {0};
|
||||
@@ -1298,10 +1297,10 @@ u8 CreateRecordMixingLights(void)
|
||||
else
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
GetMapCoordsFromSpritePos(16, 13, &sprite->pos1.x, &sprite->pos1.y);
|
||||
GetMapCoordsFromSpritePos(16, 13, &sprite->x, &sprite->y);
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->pos1.x += 16;
|
||||
sprite->pos1.y += 2;
|
||||
sprite->x += 16;
|
||||
sprite->y += 2;
|
||||
}
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
+24
-24
@@ -928,8 +928,8 @@ static bool32 TryCallPassAreaFunction(u8 taskId, u8 cursorArea)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
sPassData->cursorX = sPassGfx->cursorSprite->pos1.x;
|
||||
sPassData->cursorY = sPassGfx->cursorSprite->pos1.y;
|
||||
sPassData->cursorX = sPassGfx->cursorSprite->x;
|
||||
sPassData->cursorY = sPassGfx->cursorSprite->y;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -937,33 +937,33 @@ static void Task_HandleFrontierPassInput(u8 taskId)
|
||||
{
|
||||
u8 var = FALSE; // Reused, first informs whether the cursor moves, then used as the new cursor area.
|
||||
|
||||
if (JOY_HELD(DPAD_UP) && sPassGfx->cursorSprite->pos1.y >= 9)
|
||||
if (JOY_HELD(DPAD_UP) && sPassGfx->cursorSprite->y >= 9)
|
||||
{
|
||||
sPassGfx->cursorSprite->pos1.y -= 2;
|
||||
if (sPassGfx->cursorSprite->pos1.y <= 7)
|
||||
sPassGfx->cursorSprite->pos1.y = 2;
|
||||
sPassGfx->cursorSprite->y -= 2;
|
||||
if (sPassGfx->cursorSprite->y <= 7)
|
||||
sPassGfx->cursorSprite->y = 2;
|
||||
var = TRUE;
|
||||
}
|
||||
if (JOY_HELD(DPAD_DOWN) && sPassGfx->cursorSprite->pos1.y <= 135)
|
||||
if (JOY_HELD(DPAD_DOWN) && sPassGfx->cursorSprite->y <= 135)
|
||||
{
|
||||
sPassGfx->cursorSprite->pos1.y += 2;
|
||||
if (sPassGfx->cursorSprite->pos1.y >= 137)
|
||||
sPassGfx->cursorSprite->pos1.y = 136;
|
||||
sPassGfx->cursorSprite->y += 2;
|
||||
if (sPassGfx->cursorSprite->y >= 137)
|
||||
sPassGfx->cursorSprite->y = 136;
|
||||
var = TRUE;
|
||||
}
|
||||
|
||||
if (JOY_HELD(DPAD_LEFT) && sPassGfx->cursorSprite->pos1.x >= 6)
|
||||
if (JOY_HELD(DPAD_LEFT) && sPassGfx->cursorSprite->x >= 6)
|
||||
{
|
||||
sPassGfx->cursorSprite->pos1.x -= 2;
|
||||
if (sPassGfx->cursorSprite->pos1.x <= 4)
|
||||
sPassGfx->cursorSprite->pos1.x = 5;
|
||||
sPassGfx->cursorSprite->x -= 2;
|
||||
if (sPassGfx->cursorSprite->x <= 4)
|
||||
sPassGfx->cursorSprite->x = 5;
|
||||
var = TRUE;
|
||||
}
|
||||
if (JOY_HELD(DPAD_RIGHT) && sPassGfx->cursorSprite->pos1.x <= 231)
|
||||
if (JOY_HELD(DPAD_RIGHT) && sPassGfx->cursorSprite->x <= 231)
|
||||
{
|
||||
sPassGfx->cursorSprite->pos1.x += 2;
|
||||
if (sPassGfx->cursorSprite->pos1.x >= 233)
|
||||
sPassGfx->cursorSprite->pos1.x = 232;
|
||||
sPassGfx->cursorSprite->x += 2;
|
||||
if (sPassGfx->cursorSprite->x >= 233)
|
||||
sPassGfx->cursorSprite->x = 232;
|
||||
var = TRUE;
|
||||
}
|
||||
|
||||
@@ -998,7 +998,7 @@ static void Task_HandleFrontierPassInput(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
var = GetCursorAreaFromCoords(sPassGfx->cursorSprite->pos1.x - 5, sPassGfx->cursorSprite->pos1.y + 5);
|
||||
var = GetCursorAreaFromCoords(sPassGfx->cursorSprite->x - 5, sPassGfx->cursorSprite->y + 5);
|
||||
if (sPassData->cursorArea != var)
|
||||
{
|
||||
PrintAreaDescription(var);
|
||||
@@ -1475,7 +1475,7 @@ static void Task_HandleFrontierMap(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
sMapData->cursorSprite->pos1.y += 4;
|
||||
sMapData->cursorSprite->y += 4;
|
||||
data[1]++;
|
||||
}
|
||||
return;
|
||||
@@ -1488,7 +1488,7 @@ static void Task_HandleFrontierMap(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
sMapData->cursorSprite->pos1.y -= 4;
|
||||
sMapData->cursorSprite->y -= 4;
|
||||
data[1]++;
|
||||
}
|
||||
return;
|
||||
@@ -1670,11 +1670,11 @@ static void HandleFrontierMapCursorMove(u8 direction)
|
||||
AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (oldCursorPos * 16) + 1, sTextColors[1], 0, sMapLandmarks[oldCursorPos].name);
|
||||
AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (sMapData->cursorPos * 16) + 1, sTextColors[2], 0, sMapLandmarks[sMapData->cursorPos].name);
|
||||
|
||||
sMapData->cursorSprite->pos1.y = (sMapData->cursorPos * 16) + 8;
|
||||
sMapData->cursorSprite->y = (sMapData->cursorPos * 16) + 8;
|
||||
|
||||
StartSpriteAnim(sMapData->mapIndicatorSprite, sMapLandmarks[sMapData->cursorPos].animNum);
|
||||
sMapData->mapIndicatorSprite->pos1.x = sMapLandmarks[sMapData->cursorPos].x;
|
||||
sMapData->mapIndicatorSprite->pos1.y = sMapLandmarks[sMapData->cursorPos].y;
|
||||
sMapData->mapIndicatorSprite->x = sMapLandmarks[sMapData->cursorPos].x;
|
||||
sMapData->mapIndicatorSprite->y = sMapLandmarks[sMapData->cursorPos].y;
|
||||
FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, PIXEL_FILL(0));
|
||||
AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, sTextColors[0], 0, sMapLandmarks[sMapData->cursorPos].description);
|
||||
|
||||
|
||||
+13
-13
@@ -1552,16 +1552,16 @@ static void CheckPutFrontierTVShowOnAir(void)
|
||||
switch (battleMode)
|
||||
{
|
||||
case FRONTIER_MODE_SINGLES:
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 1);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_TOWER_SINGLES);
|
||||
break;
|
||||
case FRONTIER_MODE_DOUBLES:
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 2);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_TOWER_DOUBLES);
|
||||
break;
|
||||
case FRONTIER_MODE_MULTIS:
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 3);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_TOWER_MULTIS);
|
||||
break;
|
||||
case FRONTIER_MODE_LINK_MULTIS:
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 4);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_TOWER_LINK_MULTIS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1575,9 +1575,9 @@ static void CheckPutFrontierTVShowOnAir(void)
|
||||
&& ShouldAirFrontierTVShow())
|
||||
{
|
||||
if (battleMode == FRONTIER_MODE_SINGLES)
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], 5);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_DOME_SINGLES);
|
||||
else
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], 6);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_DOME_DOUBLES);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1589,9 +1589,9 @@ static void CheckPutFrontierTVShowOnAir(void)
|
||||
&& ShouldAirFrontierTVShow())
|
||||
{
|
||||
if (battleMode == FRONTIER_MODE_SINGLES)
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], 11);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_PALACE_SINGLES);
|
||||
else
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], 12);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_PALACE_DOUBLES);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1602,7 +1602,7 @@ static void CheckPutFrontierTVShowOnAir(void)
|
||||
if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > 1
|
||||
&& ShouldAirFrontierTVShow())
|
||||
{
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode], 10);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode], FRONTIER_SHOW_ARENA);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1615,9 +1615,9 @@ static void CheckPutFrontierTVShowOnAir(void)
|
||||
&& ShouldAirFrontierTVShow())
|
||||
{
|
||||
if (battleMode == FRONTIER_MODE_SINGLES)
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], 7);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_FACTORY_SINGLES);
|
||||
else
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], 8);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_FACTORY_DOUBLES);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1628,7 +1628,7 @@ static void CheckPutFrontierTVShowOnAir(void)
|
||||
if (gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] > 1
|
||||
&& ShouldAirFrontierTVShow())
|
||||
{
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode], 9);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode], FRONTIER_SHOW_PIKE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1639,7 +1639,7 @@ static void CheckPutFrontierTVShowOnAir(void)
|
||||
if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > 1
|
||||
&& ShouldAirFrontierTVShow())
|
||||
{
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode], 13);
|
||||
TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode], FRONTIER_SHOW_PYRAMID);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
+18
-18
@@ -471,11 +471,11 @@ const u8 gContestSliderHeart_Gfx[] = INCBIN_U8("graphics/contest/slider_heart.4b
|
||||
const u32 gUnknownGfx_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.4bpp.lz");
|
||||
const u32 gUnknownPal_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.gbapal.lz");
|
||||
|
||||
const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen.4bpp.lz");
|
||||
const u32 gUnknown_08C19EEC[] = INCBIN_U32("graphics/contest/misc_2_tilemap_1.bin.lz");
|
||||
const u32 gUnknown_08C1A000[] = INCBIN_U32("graphics/contest/misc_2_tilemap_2.bin.lz");
|
||||
const u32 gUnknown_08C1A12C[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bin.lz");
|
||||
const u32 gContestResults_Pal[] = INCBIN_U32("graphics/contest/results_screen.gbapal.lz");
|
||||
const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen/tiles.4bpp.lz");
|
||||
const u32 gContestResults_WinnerBanner_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/winner_banner.bin.lz");
|
||||
const u32 gContestResults_Interface_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/interface.bin.lz");
|
||||
const u32 gContestResults_Bg_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/bg.bin.lz");
|
||||
const u32 gContestResults_Pal[] = INCBIN_U32("graphics/contest/results_screen/tiles.gbapal.lz");
|
||||
|
||||
const u32 gBattleAnimSpriteGfx_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.4bpp.lz");
|
||||
const u32 gBattleAnimSpritePal_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.gbapal.lz");
|
||||
@@ -1296,17 +1296,17 @@ const u8 gBagMenuHMIcon_Gfx[] = INCBIN_U8("graphics/interface/hm.4bpp");
|
||||
|
||||
// contest results screen
|
||||
|
||||
const u16 gNormalContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_normal.bin");
|
||||
const u16 gSuperContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_super.bin");
|
||||
const u16 gHyperContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_hyper.bin");
|
||||
const u16 gMasterContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_master.bin");
|
||||
const u16 gLinkContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_link.bin");
|
||||
const u16 gCoolContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_cool.bin");
|
||||
const u16 gBeautyContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_beauty.bin");
|
||||
const u16 gCuteContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_cute.bin");
|
||||
const u16 gSmartContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_smart.bin");
|
||||
const u16 gToughContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_tough.bin");
|
||||
const u16 gContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen.bin");
|
||||
const u16 gContestResultsTitle_Normal_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_normal.bin");
|
||||
const u16 gContestResultsTitle_Super_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_super.bin");
|
||||
const u16 gContestResultsTitle_Hyper_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_hyper.bin");
|
||||
const u16 gContestResultsTitle_Master_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_master.bin");
|
||||
const u16 gContestResultsTitle_Link_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_link.bin");
|
||||
const u16 gContestResultsTitle_Cool_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_cool.bin");
|
||||
const u16 gContestResultsTitle_Beauty_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_beauty.bin");
|
||||
const u16 gContestResultsTitle_Cute_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_cute.bin");
|
||||
const u16 gContestResultsTitle_Smart_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_smart.bin");
|
||||
const u16 gContestResultsTitle_Tough_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_tough.bin");
|
||||
const u16 gContestResultsTitle_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title.bin");
|
||||
|
||||
// pokenav
|
||||
|
||||
@@ -1474,9 +1474,9 @@ static const u16 sEmptyPal[16] = {0};
|
||||
|
||||
// Trade
|
||||
const u16 gTradeMenu_Pal[] = INCBIN_U16("graphics/trade/menu.gbapal");
|
||||
const u16 gUnknown_08DDB444[] = INCBIN_U16("graphics/trade/unknown_DDB444.gbapal");
|
||||
const u16 gTradeCursor_Pal[] = INCBIN_U16("graphics/trade/cursor.gbapal");
|
||||
const u8 gTradeMenu_Gfx[] = INCBIN_U8("graphics/trade/menu.4bpp");
|
||||
const u8 gTradeButtons_Gfx[] = INCBIN_U8("graphics/trade/buttons.4bpp");
|
||||
const u8 gTradeCursor_Gfx[] = INCBIN_U8("graphics/trade/cursor.4bpp");
|
||||
const u16 gUnused_DDCEE4[] = INCBIN_U16("graphics/unused/unused_DDCEE4.bin");
|
||||
const u16 gUnknown_08DDCF04[] = INCBIN_U16("graphics/trade/unknown_DDCF04.bin");
|
||||
const u16 gTradeMenuMonBox_Tilemap[] = INCBIN_U16("graphics/trade/menu_mon_box.bin");
|
||||
|
||||
+30
-25
@@ -66,13 +66,12 @@ static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void ClearVramOamPltt_LoadHofPal(void);
|
||||
static void LoadHofGfx(void);
|
||||
static void InitHofBgs(void);
|
||||
static bool8 CreateHofConfettiSprite(void);
|
||||
static void StartCredits(void);
|
||||
static bool8 sub_8175024(void);
|
||||
static bool8 LoadHofBgs(void);
|
||||
static void Task_Hof_InitMonData(u8 taskId);
|
||||
static void Task_Hof_InitTeamSaveData(u8 taskId);
|
||||
static void Task_Hof_SetMonDisplayTask(u8 taskId);
|
||||
@@ -104,7 +103,6 @@ static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2);
|
||||
static void Task_DoDomeConfetti(u8 taskId);
|
||||
static void SpriteCB_HofConfetti(struct Sprite* sprite);
|
||||
|
||||
// const rom data
|
||||
static const struct BgTemplate sHof_BgTemplates[] =
|
||||
{
|
||||
{
|
||||
@@ -136,12 +134,19 @@ static const struct BgTemplate sHof_BgTemplates[] =
|
||||
},
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sHof_WindowTemplate = {0, 2, 2, 0xE, 6, 0xE, 1};
|
||||
static const struct WindowTemplate sHof_WindowTemplate = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
.width = 14,
|
||||
.height = 6,
|
||||
.paletteNum = 14,
|
||||
.baseBlock = 1
|
||||
};
|
||||
|
||||
static const u8 sMonInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY};
|
||||
static const u8 sPlayerInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
|
||||
|
||||
static const u8 sUnused_085E538C[] = {4, 5, 0, 0};
|
||||
static const u8 sUnusedTextColors[4] = {TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_TRANSPARENT};
|
||||
|
||||
static const struct CompressedSpriteSheet sSpriteSheet_Confetti[] =
|
||||
{
|
||||
@@ -383,7 +388,7 @@ static bool8 InitHallOfFameScreen(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
if (!sub_8175024())
|
||||
if (!LoadHofBgs())
|
||||
{
|
||||
SetVBlankCallback(VBlankCB_HallOfFame);
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
|
||||
@@ -712,9 +717,9 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].tFrameCount--;
|
||||
}
|
||||
else if (gSprites[gTasks[taskId].tPlayerSpriteID].pos1.x != 192)
|
||||
else if (gSprites[gTasks[taskId].tPlayerSpriteID].x != 192)
|
||||
{
|
||||
gSprites[gTasks[taskId].tPlayerSpriteID].pos1.x++;
|
||||
gSprites[gTasks[taskId].tPlayerSpriteID].x++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -819,7 +824,7 @@ void CB2_DoHallOfFamePC(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
if (!sub_8175024())
|
||||
if (!LoadHofBgs())
|
||||
{
|
||||
struct HallofFameTeam *fameTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
|
||||
fameTeam->mon[0] = sDummyFameMon;
|
||||
@@ -1301,7 +1306,7 @@ static void InitHofBgs(void)
|
||||
ChangeBgY(3, 0, 0);
|
||||
}
|
||||
|
||||
static bool8 sub_8175024(void)
|
||||
static bool8 LoadHofBgs(void)
|
||||
{
|
||||
switch (sHofGfxPtr->state)
|
||||
{
|
||||
@@ -1340,18 +1345,18 @@ static bool8 sub_8175024(void)
|
||||
|
||||
static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos1.x != sprite->tDestinationX
|
||||
|| sprite->pos1.y != sprite->tDestinationY)
|
||||
if (sprite->x != sprite->tDestinationX
|
||||
|| sprite->y != sprite->tDestinationY)
|
||||
{
|
||||
if (sprite->pos1.x < sprite->tDestinationX)
|
||||
sprite->pos1.x += 15;
|
||||
if (sprite->pos1.x > sprite->tDestinationX)
|
||||
sprite->pos1.x -= 15;
|
||||
if (sprite->x < sprite->tDestinationX)
|
||||
sprite->x += 15;
|
||||
if (sprite->x > sprite->tDestinationX)
|
||||
sprite->x -= 15;
|
||||
|
||||
if (sprite->pos1.y < sprite->tDestinationY)
|
||||
sprite->pos1.y += 10;
|
||||
if (sprite->pos1.y > sprite->tDestinationY)
|
||||
sprite->pos1.y -= 10;
|
||||
if (sprite->y < sprite->tDestinationY)
|
||||
sprite->y += 10;
|
||||
if (sprite->y > sprite->tDestinationY)
|
||||
sprite->y -= 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1373,7 +1378,7 @@ static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCB_HofConfetti(struct Sprite* sprite)
|
||||
{
|
||||
if (sprite->pos2.y > 120)
|
||||
if (sprite->y2 > 120)
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
@@ -1382,12 +1387,12 @@ static void SpriteCB_HofConfetti(struct Sprite* sprite)
|
||||
u16 rand;
|
||||
u8 sineIdx;
|
||||
|
||||
sprite->pos2.y++;
|
||||
sprite->pos2.y += sprite->sExtraY;
|
||||
sprite->y2++;
|
||||
sprite->y2 += sprite->sExtraY;
|
||||
|
||||
sineIdx = sprite->sSineIdx;
|
||||
rand = (Random() % 4) + 8;
|
||||
sprite->pos2.x = rand * gSineTable[sineIdx] / 256;
|
||||
sprite->x2 = rand * gSineTable[sineIdx] / 256;
|
||||
|
||||
sprite->sSineIdx += 4;
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ void ConvertInternationalPlayerNameStripChar(u8 *str, u8 removeChar)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81DB5AC(u8 *str)
|
||||
void ConvertInternationalContestantName(u8 *str)
|
||||
{
|
||||
if (*str++ == EXT_CTRL_CODE_BEGIN && *str++ == EXT_CTRL_CODE_JPN)
|
||||
{
|
||||
|
||||
+104
-104
@@ -1490,8 +1490,8 @@ static void SpriteCB_Volbeat(struct Sprite *sprite)
|
||||
sprite->sState++;
|
||||
// fallthrough
|
||||
case VOLBEAT_ENTER:
|
||||
sprite->pos1.x -= 4;
|
||||
if (sprite->pos1.x == 60)
|
||||
sprite->x -= 4;
|
||||
if (sprite->x == 60)
|
||||
{
|
||||
sprite->sState = VOLBEAT_WAIT_STATE;
|
||||
sprite->sStateDelay = 20;
|
||||
@@ -1499,9 +1499,9 @@ static void SpriteCB_Volbeat(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case VOLBEAT_ZIP_BACKWARD:
|
||||
sprite->pos1.x += 8;
|
||||
sprite->pos1.y -= 2;
|
||||
if (sprite->pos1.x == 124)
|
||||
sprite->x += 8;
|
||||
sprite->y -= 2;
|
||||
if (sprite->x == 124)
|
||||
{
|
||||
sprite->sState = VOLBEAT_WAIT_STATE;
|
||||
sprite->sStateDelay = 20;
|
||||
@@ -1509,8 +1509,8 @@ static void SpriteCB_Volbeat(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case VOLBEAT_ZIP_DOWN:
|
||||
sprite->pos1.y += 4;
|
||||
if (sprite->pos1.y == 80)
|
||||
sprite->y += 4;
|
||||
if (sprite->y == 80)
|
||||
{
|
||||
sprite->sState = VOLBEAT_WAIT_STATE;
|
||||
sprite->sStateDelay = 10;
|
||||
@@ -1518,9 +1518,9 @@ static void SpriteCB_Volbeat(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case VOLBEAT_ZIP_FORWARD:
|
||||
sprite->pos1.x -= 8;
|
||||
sprite->pos1.y -= 2;
|
||||
if (sprite->pos1.x == 60)
|
||||
sprite->x -= 8;
|
||||
sprite->y -= 2;
|
||||
if (sprite->x == 60)
|
||||
{
|
||||
sprite->sState = VOLBEAT_WAIT_STATE;
|
||||
sprite->sStateDelay = 10;
|
||||
@@ -1528,15 +1528,15 @@ static void SpriteCB_Volbeat(struct Sprite *sprite)
|
||||
}
|
||||
break;
|
||||
case VOLBEAT_INIT_FIGURE_8:
|
||||
sprite->pos1.x += 60;
|
||||
sprite->x += 60;
|
||||
sprite->sSinXIdx = 0xC0;
|
||||
sprite->sSinYIdx = 0x80;
|
||||
sprite->sFig8Loops = 3;
|
||||
sprite->sState++;
|
||||
// fallthrough
|
||||
case VOLBEAT_FIGURE_8:
|
||||
sprite->pos2.x = Sin((u8)sprite->sSinXIdx, 0x3C);
|
||||
sprite->pos2.y = Sin((u8)sprite->sSinYIdx, 0x14);
|
||||
sprite->x2 = Sin((u8)sprite->sSinXIdx, 0x3C);
|
||||
sprite->y2 = Sin((u8)sprite->sSinYIdx, 0x14);
|
||||
sprite->sSinXIdx += 2;
|
||||
sprite->sSinYIdx += 4;
|
||||
if ((sprite->sSinXIdx & 0xFF) == 64)
|
||||
@@ -1544,22 +1544,22 @@ static void SpriteCB_Volbeat(struct Sprite *sprite)
|
||||
sprite->hFlip = FALSE;
|
||||
if (--sprite->sFig8Loops == 0)
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->x2 = 0;
|
||||
sprite->sState++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case VOLBEAT_EXIT:
|
||||
sprite->pos1.x -= 2;
|
||||
sprite->pos2.y = Sin((u8)sprite->sSinYIdx, 0x14);
|
||||
sprite->x -= 2;
|
||||
sprite->y2 = Sin((u8)sprite->sSinYIdx, 0x14);
|
||||
sprite->sSinYIdx += 4;
|
||||
if (sprite->pos1.x < -16)
|
||||
if (sprite->x < -16)
|
||||
DestroySprite(sprite);
|
||||
break;
|
||||
case VOLBEAT_WAIT_STATE:
|
||||
// Wait for state progression, fly idly until then
|
||||
sprite->pos2.y = Cos((u8)sprite->sCosYIdx, 2);
|
||||
sprite->y2 = Cos((u8)sprite->sCosYIdx, 2);
|
||||
if (!--sprite->sStateDelay)
|
||||
sprite->sState = sprite->sNextState;
|
||||
break;
|
||||
@@ -1598,7 +1598,7 @@ static void SpriteCB_Torchic(struct Sprite *sprite)
|
||||
sprite->sMoveTimer += 64;
|
||||
if (sprite->sMoveTimer & 0xFF00)
|
||||
{
|
||||
sprite->pos1.x--;
|
||||
sprite->x--;
|
||||
sprite->sMoveTimer &= 0xFF;
|
||||
}
|
||||
}
|
||||
@@ -1609,7 +1609,7 @@ static void SpriteCB_Torchic(struct Sprite *sprite)
|
||||
sprite->sMoveTimer += 32;
|
||||
if (sprite->sMoveTimer & 0xFF00)
|
||||
{
|
||||
sprite->pos1.x++;
|
||||
sprite->x++;
|
||||
sprite->sMoveTimer &= 0xFF;
|
||||
}
|
||||
}
|
||||
@@ -1626,7 +1626,7 @@ static void SpriteCB_Torchic(struct Sprite *sprite)
|
||||
sprite->sMoveTimer += 64;
|
||||
if (sprite->sMoveTimer & 0xFF00)
|
||||
{
|
||||
sprite->pos1.x--;
|
||||
sprite->x--;
|
||||
sprite->sMoveTimer &= 0xFF;
|
||||
}
|
||||
}
|
||||
@@ -1638,9 +1638,9 @@ static void SpriteCB_Torchic(struct Sprite *sprite)
|
||||
break;
|
||||
case 4:
|
||||
if (sprite->animEnded)
|
||||
sprite->pos1.x += 4;
|
||||
sprite->x += 4;
|
||||
|
||||
if (sprite->pos1.x > 336)
|
||||
if (sprite->x > 336)
|
||||
{
|
||||
StartSpriteAnim(sprite, TORCHIC_ANIM_RUN);
|
||||
sprite->sState++;
|
||||
@@ -1648,7 +1648,7 @@ static void SpriteCB_Torchic(struct Sprite *sprite)
|
||||
break;
|
||||
case 5:
|
||||
if (gIntroFrameCounter >= TIMER_TORCHIC_EXIT)
|
||||
sprite->pos1.x -= 2;
|
||||
sprite->x -= 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1668,18 +1668,18 @@ static void SpriteCB_Manectric(struct Sprite *sprite)
|
||||
sprite->sState++;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.x -= 2;
|
||||
sprite->x -= 2;
|
||||
if (gIntroFrameCounter != TIMER_MANECTRIC_RUN_CIRCULAR)
|
||||
break;
|
||||
|
||||
// Initialize circular pattern running
|
||||
sprite->pos1.y -= 12;
|
||||
sprite->y -= 12;
|
||||
sprite->sSinIdx = 0x80;
|
||||
sprite->sCosIdx = 0;
|
||||
sprite->sState++;
|
||||
// fallthrough
|
||||
case 2:
|
||||
if (sprite->pos1.x + sprite->pos2.x <= -32)
|
||||
if (sprite->x + sprite->x2 <= -32)
|
||||
{
|
||||
// Manectric is offscreen now, destroy it
|
||||
DestroySprite(sprite);
|
||||
@@ -1689,16 +1689,16 @@ static void SpriteCB_Manectric(struct Sprite *sprite)
|
||||
// Run in circular pattern
|
||||
if ((sprite->sSinIdx & 0xFF) < 64)
|
||||
{
|
||||
sprite->pos2.x = Sin((u8)sprite->sSinIdx, 16);
|
||||
sprite->x2 = Sin((u8)sprite->sSinIdx, 16);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((sprite->sSinIdx & 0xFF) == 64)
|
||||
sprite->pos1.x -= 48;
|
||||
sprite->pos2.x = Sin((u8)sprite->sSinIdx, 64);
|
||||
sprite->x -= 48;
|
||||
sprite->x2 = Sin((u8)sprite->sSinIdx, 64);
|
||||
}
|
||||
sprite->sSinIdx++;
|
||||
sprite->pos2.y = Cos((u8)sprite->sCosIdx, 12);
|
||||
sprite->y2 = Cos((u8)sprite->sCosIdx, 12);
|
||||
sprite->sCosIdx++;
|
||||
}
|
||||
break;
|
||||
@@ -2001,14 +2001,14 @@ static void SpriteCB_GroudonRocks(struct Sprite *sprite)
|
||||
// Introduce some wobble to the floating
|
||||
sprite->sTimer++;
|
||||
if (sprite->sTimer % 2 == 0)
|
||||
sprite->pos2.y ^= 3;
|
||||
sprite->y2 ^= 3;
|
||||
|
||||
switch(sprite->sState)
|
||||
{
|
||||
case 0:
|
||||
// Rock floats up
|
||||
sprite->sSpeed += sGroudonRockData[sprite->sRockId][2];
|
||||
sprite->pos1.y -= (sprite->sSpeed & 0xFF00) >> 8;
|
||||
sprite->y -= (sprite->sSpeed & 0xFF00) >> 8;
|
||||
sprite->sSpeed &= 0xFF;
|
||||
|
||||
// Check if Groudon scene is ending
|
||||
@@ -2017,15 +2017,15 @@ static void SpriteCB_GroudonRocks(struct Sprite *sprite)
|
||||
break;
|
||||
case 1:
|
||||
// Scene zooms in, move rock offscreen
|
||||
if (sprite->pos1.x < DISPLAY_WIDTH / 2)
|
||||
sprite->pos1.x -= 2;
|
||||
if (sprite->x < DISPLAY_WIDTH / 2)
|
||||
sprite->x -= 2;
|
||||
else
|
||||
sprite->pos1.x += 2;
|
||||
sprite->x += 2;
|
||||
|
||||
if (sprite->pos1.y < DISPLAY_HEIGHT / 2)
|
||||
sprite->pos1.y -= 2;
|
||||
if (sprite->y < DISPLAY_HEIGHT / 2)
|
||||
sprite->y -= 2;
|
||||
else
|
||||
sprite->pos1.y += 2;
|
||||
sprite->y += 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2275,9 +2275,9 @@ static void SpriteCB_KyogreBubbles(struct Sprite *sprite)
|
||||
{
|
||||
// Animation has started, float bubbles up
|
||||
sprite->sSinIdx = (sprite->sSinIdx + 11) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->sSinIdx, 4);
|
||||
sprite->x2 = Sin(sprite->sSinIdx, 4);
|
||||
sprite->sBaseY += 48;
|
||||
sprite->pos2.y = -(sprite->sBaseY >> 8);
|
||||
sprite->y2 = -(sprite->sBaseY >> 8);
|
||||
if (sprite->animEnded)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
@@ -2295,17 +2295,17 @@ static void SpriteCB_KyogreBubbles(struct Sprite *sprite)
|
||||
break;
|
||||
case 1:
|
||||
// Scene zooms in, move bubbles offscreen
|
||||
if (sprite->pos1.x < DISPLAY_WIDTH / 2)
|
||||
sprite->pos1.x -= 3;
|
||||
if (sprite->x < DISPLAY_WIDTH / 2)
|
||||
sprite->x -= 3;
|
||||
else
|
||||
sprite->pos1.x += 3;
|
||||
sprite->x += 3;
|
||||
|
||||
if (sprite->pos1.y < DISPLAY_HEIGHT / 2)
|
||||
sprite->pos1.y -= 3;
|
||||
if (sprite->y < DISPLAY_HEIGHT / 2)
|
||||
sprite->y -= 3;
|
||||
else
|
||||
sprite->pos1.y += 3;
|
||||
sprite->y += 3;
|
||||
|
||||
if ((u16)(sprite->pos1.y - 20) > DISPLAY_HEIGHT - 20)
|
||||
if ((u16)(sprite->y - 20) > DISPLAY_HEIGHT - 20)
|
||||
DestroySprite(sprite);
|
||||
break;
|
||||
}
|
||||
@@ -2853,8 +2853,8 @@ static void SpriteCB_WaterDropHalf(struct Sprite *sprite)
|
||||
if (gSprites[sprite->data[7]].data[7] != 0)
|
||||
{
|
||||
sprite->invisible = TRUE;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
StartSpriteAnim(sprite, DROP_ANIM_RIPPLE);
|
||||
sprite->data[2] = 1024;
|
||||
sprite->data[3] = 8 * (sprite->data[1] & 3);
|
||||
@@ -2865,10 +2865,10 @@ static void SpriteCB_WaterDropHalf(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.x = gSprites[sprite->data[7]].pos2.x;
|
||||
sprite->pos2.y = gSprites[sprite->data[7]].pos2.y;
|
||||
sprite->pos1.x = gSprites[sprite->data[7]].pos1.x;
|
||||
sprite->pos1.y = gSprites[sprite->data[7]].pos1.y;
|
||||
sprite->x2 = gSprites[sprite->data[7]].x2;
|
||||
sprite->y2 = gSprites[sprite->data[7]].y2;
|
||||
sprite->x = gSprites[sprite->data[7]].x;
|
||||
sprite->y = gSprites[sprite->data[7]].y;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2881,12 +2881,12 @@ static void SpriteCB_WaterDrop(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCB_WaterDrop_Slide(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos1.x <= 116)
|
||||
if (sprite->x <= 116)
|
||||
{
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos1.x += 4;
|
||||
sprite->pos2.x = -4;
|
||||
sprite->y += sprite->y2;
|
||||
sprite->y2 = 0;
|
||||
sprite->x += 4;
|
||||
sprite->x2 = -4;
|
||||
sprite->data[4] = 128;
|
||||
sprite->callback = SpriteCB_WaterDrop_ReachLeafEnd;
|
||||
}
|
||||
@@ -2909,10 +2909,10 @@ static void SpriteCB_WaterDrop_Slide(struct Sprite *sprite)
|
||||
sin1 = gSineTable[(u8)data4];
|
||||
sin2 = gSineTable[(u8)(data4 + 64)];
|
||||
sprite->data[4] += 2;
|
||||
sprite->pos2.y = sin1 / 32;
|
||||
sprite->pos1.x--;
|
||||
if (sprite->pos1.x & 1)
|
||||
sprite->pos1.y++;
|
||||
sprite->y2 = sin1 / 32;
|
||||
sprite->x--;
|
||||
if (sprite->x & 1)
|
||||
sprite->y++;
|
||||
temp = -sin2 / 16;
|
||||
data2 = sprite->data[2];
|
||||
data3 = sprite->data[3];
|
||||
@@ -2938,8 +2938,8 @@ static void SpriteCB_WaterDrop_ReachLeafEnd(struct Sprite *sprite)
|
||||
u16 sinIdx;
|
||||
sprite->data[4] -= 8;
|
||||
sinIdx = sprite->data[4];
|
||||
sprite->pos2.x = gSineTable[(u8)(sinIdx + 64)] / 64;
|
||||
sprite->pos2.y = gSineTable[(u8)sinIdx] / 64;
|
||||
sprite->x2 = gSineTable[(u8)(sinIdx + 64)] / 64;
|
||||
sprite->y2 = gSineTable[(u8)sinIdx] / 64;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2956,8 +2956,8 @@ static void SpriteCB_WaterDrop_DangleFromLeaf(struct Sprite *sprite)
|
||||
|
||||
sprite->data[4] += 8;
|
||||
r2 = gSineTable[(u8)sprite->data[4]] / 16 + 64;
|
||||
sprite->pos2.x = gSineTable[(u8)(r2 + 64)] / 64;
|
||||
sprite->pos2.y = gSineTable[(u8)r2] / 64;
|
||||
sprite->x2 = gSineTable[(u8)(r2 + 64)] / 64;
|
||||
sprite->y2 = gSineTable[(u8)r2] / 64;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2967,16 +2967,16 @@ static void SpriteCB_WaterDrop_DangleFromLeaf(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCB_WaterDrop_Fall(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos1.y < sprite->data[5])
|
||||
if (sprite->y < sprite->data[5])
|
||||
{
|
||||
sprite->pos1.y += 4;
|
||||
sprite->y += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[7] = 1;
|
||||
sprite->invisible = TRUE;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
StartSpriteAnim(sprite, DROP_ANIM_RIPPLE);
|
||||
sprite->data[2] = 1024;
|
||||
sprite->data[3] = 8 * (sprite->data[1] & 3);
|
||||
@@ -2991,16 +2991,16 @@ static void SpriteCB_WaterDrop_Fall(struct Sprite *sprite)
|
||||
// Used by the 2nd and 3rd water drops to skip the leaf slide
|
||||
static void SpriteCB_WaterDropShort(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos1.y < sprite->data[5])
|
||||
if (sprite->y < sprite->data[5])
|
||||
{
|
||||
sprite->pos1.y += 4;
|
||||
sprite->y += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[7] = 1;
|
||||
sprite->invisible = TRUE;
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos1.y += sprite->pos2.y;
|
||||
sprite->x += sprite->x2;
|
||||
sprite->y += sprite->y2;
|
||||
StartSpriteAnim(sprite, DROP_ANIM_RIPPLE);
|
||||
sprite->data[2] = 1024;
|
||||
sprite->data[3] = 8 * (sprite->data[1] & 3);
|
||||
@@ -3071,27 +3071,27 @@ static void SpriteCB_PlayerOnBicycle(struct Sprite *sprite)
|
||||
case 0:
|
||||
// Move forwards
|
||||
StartSpriteAnimIfDifferent(sprite, 0);
|
||||
sprite->pos1.x--;
|
||||
sprite->x--;
|
||||
break;
|
||||
case 1:
|
||||
// Drift backwards slowly
|
||||
StartSpriteAnimIfDifferent(sprite, 0);
|
||||
if (gIntroFrameCounter & 7)
|
||||
return;
|
||||
sprite->pos1.x++;
|
||||
sprite->x++;
|
||||
break;
|
||||
case 2:
|
||||
// Move backwards
|
||||
if (sprite->pos1.x <= 120 || gIntroFrameCounter & 7)
|
||||
sprite->pos1.x++;
|
||||
if (sprite->x <= 120 || gIntroFrameCounter & 7)
|
||||
sprite->x++;
|
||||
break;
|
||||
case 3:
|
||||
// Bike in place
|
||||
break;
|
||||
case 4:
|
||||
// Exit to the left
|
||||
if (sprite->pos1.x > -32)
|
||||
sprite->pos1.x -= 2;
|
||||
if (sprite->x > -32)
|
||||
sprite->x -= 2;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3099,10 +3099,10 @@ static void SpriteCB_PlayerOnBicycle(struct Sprite *sprite)
|
||||
return;
|
||||
|
||||
// Adjust y position
|
||||
if (sprite->pos2.y != 0)
|
||||
if (sprite->y2 != 0)
|
||||
{
|
||||
// Return to neutral after wobble
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3110,14 +3110,14 @@ static void SpriteCB_PlayerOnBicycle(struct Sprite *sprite)
|
||||
switch (Random() & 3)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = -1;
|
||||
sprite->y2 = -1;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.y = 1;
|
||||
sprite->y2 = 1;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
sprite->pos2.y = 0;
|
||||
sprite->y2 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3133,23 +3133,23 @@ static void SpriteCB_Flygon(struct Sprite *sprite)
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
if (sprite->pos2.x + sprite->pos1.x < DISPLAY_WIDTH + 64)
|
||||
sprite->pos2.x += 8;
|
||||
if (sprite->x2 + sprite->x < DISPLAY_WIDTH + 64)
|
||||
sprite->x2 += 8;
|
||||
else
|
||||
sprite->sState = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (sprite->pos2.x + sprite->pos1.x > 120)
|
||||
sprite->pos2.x -= 1;
|
||||
if (sprite->x2 + sprite->x > 120)
|
||||
sprite->x2 -= 1;
|
||||
else
|
||||
sprite->sState = 3;
|
||||
break;
|
||||
case 3:
|
||||
if (sprite->pos2.x > 0)
|
||||
sprite->pos2.x -= 2;
|
||||
if (sprite->x2 > 0)
|
||||
sprite->x2 -= 2;
|
||||
break;
|
||||
}
|
||||
sprite->pos2.y = Sin((u8)sprite->sSinIdx, 8) - sFlygonYOffset;
|
||||
sprite->y2 = Sin((u8)sprite->sSinIdx, 8) - sFlygonYOffset;
|
||||
sprite->sSinIdx += 4;
|
||||
}
|
||||
|
||||
@@ -3249,12 +3249,12 @@ static void SpriteCB_LogoLetter(struct Sprite *sprite)
|
||||
case 5:
|
||||
// Spread the letters out as they grow
|
||||
sprite->sLetterX += sGameFreakLettersMoveSpeed[sprite->sLetterId];
|
||||
sprite->pos2.x = (sprite->sLetterX & 0xFF00) >> 8;
|
||||
sprite->x2 = (sprite->sLetterX & 0xFF00) >> 8;
|
||||
if (sprite->sLetterId < 4)
|
||||
{
|
||||
// Is in first 4 letters, i.e. "Game"
|
||||
s16 temp = sprite->pos2.x;
|
||||
sprite->pos2.x = -temp;
|
||||
s16 temp = sprite->x2;
|
||||
sprite->x2 = -temp;
|
||||
}
|
||||
if (sprite->affineAnimEnded)
|
||||
DestroySprite(sprite);
|
||||
@@ -3358,24 +3358,24 @@ static void SpriteCB_FlygonSilhouette(struct Sprite *sprite)
|
||||
sprite->data[3] = 0;
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x = -Sin((u8)sprite->data[3], 140);
|
||||
sprite->pos2.y = -Sin((u8)sprite->data[3], 120);
|
||||
sprite->x2 = -Sin((u8)sprite->data[3], 140);
|
||||
sprite->y2 = -Sin((u8)sprite->data[3], 120);
|
||||
sprite->data[1] += 7;
|
||||
sprite->data[3] += 3;
|
||||
if (sprite->pos1.x + sprite->pos2.x <= -16)
|
||||
if (sprite->x + sprite->x2 <= -16)
|
||||
{
|
||||
sprite->oam.priority = 3;
|
||||
sprite->sState++;
|
||||
sprite->pos1.x = 20;
|
||||
sprite->pos1.y = 40;
|
||||
sprite->x = 20;
|
||||
sprite->y = 40;
|
||||
sprite->data[1] = 0x200;
|
||||
sprite->data[2] = 0;
|
||||
sprite->data[3] = 0x10;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x = Sin((u8)sprite->data[3], 34);
|
||||
sprite->pos2.y = -Cos((u8)sprite->data[3], 60);
|
||||
sprite->x2 = Sin((u8)sprite->data[3], 34);
|
||||
sprite->y2 = -Cos((u8)sprite->data[3], 60);
|
||||
sprite->data[1] += 2;
|
||||
if (sprite->data[7] % 5 == 0)
|
||||
sprite->data[3]++;
|
||||
|
||||
@@ -1048,15 +1048,15 @@ static void SpriteCB_MovingScenery(struct Sprite *sprite)
|
||||
DestroySprite(sprite);
|
||||
break;
|
||||
case INTROCRED_SCENERY_NORMAL:
|
||||
x = ((sprite->pos1.x << 16) | (u16)sprite->tXPos) + (u16)sprite->tXOffset;
|
||||
sprite->pos1.x = x >> 16;
|
||||
x = ((sprite->x << 16) | (u16)sprite->tXPos) + (u16)sprite->tXOffset;
|
||||
sprite->x = x >> 16;
|
||||
sprite->tXPos = x;
|
||||
if (sprite->pos1.x > 255)
|
||||
sprite->pos1.x = -32;
|
||||
if (sprite->x > 255)
|
||||
sprite->x = -32;
|
||||
if (sprite->tHasVerticalMove)
|
||||
sprite->pos2.y = -(gIntroCredits_MovingSceneryVBase + gIntroCredits_MovingSceneryVOffset);
|
||||
sprite->y2 = -(gIntroCredits_MovingSceneryVBase + gIntroCredits_MovingSceneryVOffset);
|
||||
else
|
||||
sprite->pos2.y = -gIntroCredits_MovingSceneryVBase;
|
||||
sprite->y2 = -gIntroCredits_MovingSceneryVBase;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1110,10 +1110,10 @@ static void SpriteCB_Player(struct Sprite *sprite)
|
||||
static void SpriteCB_Bicycle(struct Sprite* sprite)
|
||||
{
|
||||
sprite->invisible = gSprites[sprite->sPlayerSpriteId].invisible;
|
||||
sprite->pos1.x = gSprites[sprite->sPlayerSpriteId].pos1.x;
|
||||
sprite->pos1.y = gSprites[sprite->sPlayerSpriteId].pos1.y + 8;
|
||||
sprite->pos2.x = gSprites[sprite->sPlayerSpriteId].pos2.x;
|
||||
sprite->pos2.y = gSprites[sprite->sPlayerSpriteId].pos2.y;
|
||||
sprite->x = gSprites[sprite->sPlayerSpriteId].x;
|
||||
sprite->y = gSprites[sprite->sPlayerSpriteId].y + 8;
|
||||
sprite->x2 = gSprites[sprite->sPlayerSpriteId].x2;
|
||||
sprite->y2 = gSprites[sprite->sPlayerSpriteId].y2;
|
||||
}
|
||||
|
||||
u8 CreateIntroBrendanSprite(s16 x, s16 y)
|
||||
@@ -1143,9 +1143,9 @@ static void SpriteCB_FlygonLeftHalf(struct Sprite *sprite)
|
||||
static void SpriteCB_FlygonRightHalf(struct Sprite* sprite)
|
||||
{
|
||||
sprite->invisible = gSprites[sprite->sLeftSpriteId].invisible;
|
||||
sprite->pos1.y = gSprites[sprite->sLeftSpriteId].pos1.y;
|
||||
sprite->pos2.x = gSprites[sprite->sLeftSpriteId].pos2.x;
|
||||
sprite->pos2.y = gSprites[sprite->sLeftSpriteId].pos2.y;
|
||||
sprite->y = gSprites[sprite->sLeftSpriteId].y;
|
||||
sprite->x2 = gSprites[sprite->sLeftSpriteId].x2;
|
||||
sprite->y2 = gSprites[sprite->sLeftSpriteId].y2;
|
||||
}
|
||||
|
||||
// In RS these were for Latios/Latias. In Emerald both are replaced with Flygon and now only 1 is used
|
||||
|
||||
+7
-14
@@ -14,7 +14,6 @@
|
||||
#include "battle_pyramid_bag.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/hold_effects.h"
|
||||
#include "constants/tv.h"
|
||||
|
||||
extern u16 gUnknown_0203CF30[];
|
||||
|
||||
@@ -281,10 +280,6 @@ bool8 AddBagItem(u16 itemId, u16 count)
|
||||
{
|
||||
// successfully added to already existing item's count
|
||||
SetBagItemQuantity(&newItems[i].quantity, ownedCount + count);
|
||||
|
||||
// goto SUCCESS_ADD_ITEM;
|
||||
// is equivalent but won't match
|
||||
|
||||
memcpy(itemPocket->itemSlots, newItems, itemPocket->capacity * sizeof(struct ItemSlot));
|
||||
Free(newItems);
|
||||
return TRUE;
|
||||
@@ -304,7 +299,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
|
||||
// don't create another instance of the item if it's at max slot capacity and count is equal to 0
|
||||
if (count == 0)
|
||||
{
|
||||
goto SUCCESS_ADD_ITEM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -335,7 +330,8 @@ bool8 AddBagItem(u16 itemId, u16 count)
|
||||
{
|
||||
// created a new slot and added quantity
|
||||
SetBagItemQuantity(&newItems[i].quantity, count);
|
||||
goto SUCCESS_ADD_ITEM;
|
||||
count = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -346,11 +342,9 @@ bool8 AddBagItem(u16 itemId, u16 count)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
SUCCESS_ADD_ITEM:
|
||||
memcpy(itemPocket->itemSlots, newItems, itemPocket->capacity * sizeof(struct ItemSlot));
|
||||
Free(newItems);
|
||||
return TRUE;
|
||||
memcpy(itemPocket->itemSlots, newItems, itemPocket->capacity * sizeof(struct ItemSlot));
|
||||
Free(newItems);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -554,7 +548,6 @@ bool8 AddPCItem(u16 itemId, u16 count)
|
||||
|
||||
void RemovePCItem(u8 index, u16 count)
|
||||
{
|
||||
// UB: should use GetPCItemQuantity and SetPCItemQuantity functions
|
||||
gSaveBlock1Ptr->pcItems[index].quantity -= count;
|
||||
if (gSaveBlock1Ptr->pcItems[index].quantity == 0)
|
||||
{
|
||||
@@ -820,7 +813,7 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count)
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
|
||||
i = gPyramidBagCursorData.cursorPosition + gPyramidBagCursorData.scrollPosition;
|
||||
i = gPyramidBagMenuState.cursorPosition + gPyramidBagMenuState.scrollPosition;
|
||||
if (items[i] == itemId && quantities[i] >= count)
|
||||
{
|
||||
quantities[i] -= count;
|
||||
|
||||
+9
-10
@@ -133,7 +133,7 @@ void UpdatePocketScrollPositions(void);
|
||||
u8 CreateBagInputHandlerTask(u8);
|
||||
void sub_81AC23C(u8);
|
||||
void BagMenu_MoveCursorCallback(s32 a, bool8 b, struct ListMenu*);
|
||||
void BagMenu_ItemPrintCallback(u8 windowId, s32 itemIndex, u8 a);
|
||||
void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 a);
|
||||
void ItemMenu_UseOutOfBattle(u8 taskId);
|
||||
void ItemMenu_Toss(u8 taskId);
|
||||
void ItemMenu_Register(u8 taskId);
|
||||
@@ -509,7 +509,6 @@ EWRAM_DATA u16 gSpecialVar_ItemId = 0;
|
||||
static EWRAM_DATA struct TempWallyStruct *sTempWallyBag = 0;
|
||||
|
||||
extern u8 *const gPocketNamesStringsTable[];
|
||||
extern u8* gReturnToXStringsTable[];
|
||||
extern const u8 EventScript_SelectWithoutRegisteredItem[];
|
||||
extern const u16 gUnknown_0860F074[];
|
||||
|
||||
@@ -530,7 +529,7 @@ void CB2_BagMenuFromBattle(void)
|
||||
if (!InBattlePyramid())
|
||||
GoToBagMenu(ITEMMENULOCATION_BATTLE, POCKETS_COUNT, CB2_SetUpReshowBattleScreenAfterMenu2);
|
||||
else
|
||||
GoToBattlePyramidBagMenu(1, CB2_SetUpReshowBattleScreenAfterMenu2);
|
||||
GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_BATTLE, CB2_SetUpReshowBattleScreenAfterMenu2);
|
||||
}
|
||||
|
||||
// Choosing berry to plant
|
||||
@@ -894,7 +893,7 @@ void BagMenu_MoveCursorCallback(s32 itemIndex, bool8 onInit, struct ListMenu *li
|
||||
}
|
||||
}
|
||||
|
||||
void BagMenu_ItemPrintCallback(u8 windowId, s32 itemIndex, u8 y)
|
||||
void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 y)
|
||||
{
|
||||
u16 itemId;
|
||||
u16 itemQuantity;
|
||||
@@ -947,7 +946,7 @@ void BagMenu_PrintDescription(int itemIndex)
|
||||
}
|
||||
else
|
||||
{
|
||||
StringCopy(gStringVar1, gReturnToXStringsTable[gBagPositionStruct.location]);
|
||||
StringCopy(gStringVar1, gBagMenu_ReturnToStrings[gBagPositionStruct.location]);
|
||||
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
|
||||
str = gStringVar4;
|
||||
}
|
||||
@@ -1458,7 +1457,7 @@ void sub_81AC590(u8 taskId)
|
||||
gTasks[taskId].func = Task_BagMenu_HandleInput;
|
||||
}
|
||||
|
||||
void OpenContextMenu(u8 unused)
|
||||
static void OpenContextMenu(u8 unused)
|
||||
{
|
||||
switch (gBagPositionStruct.location)
|
||||
{
|
||||
@@ -1604,8 +1603,8 @@ void sub_81ACAF8(u8 a)
|
||||
|
||||
void sub_81ACB54(u8 a, u8 b, u8 c)
|
||||
{
|
||||
sub_8198DBC(a, 7, 8, 1, 0x38, b, c, sItemMenuActions, gBagMenu->contextMenuItemsPtr);
|
||||
sub_8199944(a, 0x38, b, c, 0);
|
||||
PrintMenuActionGrid(a, 7, 8, 1, 0x38, b, c, sItemMenuActions, gBagMenu->contextMenuItemsPtr);
|
||||
InitMenuActionGrid(a, 0x38, b, c, 0);
|
||||
}
|
||||
|
||||
void Task_ItemContext_FieldOrBattle(u8 taskId)
|
||||
@@ -1850,7 +1849,7 @@ void ItemMenu_Register(u8 taskId)
|
||||
void ItemMenu_Give(u8 taskId)
|
||||
{
|
||||
BagMenu_RemoveSomeWindow();
|
||||
if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
|
||||
if (!IsWritingMailAllowed(gSpecialVar_ItemId))
|
||||
{
|
||||
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
|
||||
}
|
||||
@@ -1925,7 +1924,7 @@ void CB2_ReturnToBagMenuPocket(void)
|
||||
|
||||
void Task_ItemContext_FieldGive(u8 taskId)
|
||||
{
|
||||
if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
|
||||
if (!IsWritingMailAllowed(gSpecialVar_ItemId))
|
||||
{
|
||||
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ static const struct OamData sBerryPicRotatingOamData =
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_857FBD8[] =
|
||||
static const union AnimCmd sAnim_BerryPic[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 0),
|
||||
ANIMCMD_END
|
||||
@@ -252,7 +252,7 @@ static const union AnimCmd sSpriteAnim_857FBD8[] =
|
||||
|
||||
static const union AnimCmd *const sBerryPicSpriteAnimTable[] =
|
||||
{
|
||||
sSpriteAnim_857FBD8
|
||||
sAnim_BerryPic
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sBerryPicSpriteImageTable[] =
|
||||
@@ -432,7 +432,7 @@ void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
|
||||
struct Sprite *sprite = &gSprites[gBagMenu->spriteId[0]];
|
||||
if (isSwitchingPockets)
|
||||
{
|
||||
sprite->pos2.y = -5;
|
||||
sprite->y2 = -5;
|
||||
sprite->callback = SpriteCB_BagVisualSwitchingPockets;
|
||||
sprite->data[0] = bagPocketId + 1;
|
||||
StartSpriteAnim(sprite, 0);
|
||||
@@ -445,9 +445,9 @@ void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
|
||||
|
||||
static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->pos2.y != 0)
|
||||
if (sprite->y2 != 0)
|
||||
{
|
||||
sprite->pos2.y++;
|
||||
sprite->y2++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -526,8 +526,8 @@ void AddBagItemIconSprite(u16 itemId, u8 id)
|
||||
if (iconSpriteId != MAX_SPRITES)
|
||||
{
|
||||
*spriteId = iconSpriteId;
|
||||
gSprites[iconSpriteId].pos2.x = 24;
|
||||
gSprites[iconSpriteId].pos2.y = 88;
|
||||
gSprites[iconSpriteId].x2 = 24;
|
||||
gSprites[iconSpriteId].y2 = 88;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+10
-10
@@ -109,8 +109,8 @@ static void SetUpItemUseCallback(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
gPyramidBagResources->callback2 = sItemUseCallbacks[type];
|
||||
CloseBattlePyramidBagAndSetCallback(taskId);
|
||||
gPyramidBagMenu->exitCallback = sItemUseCallbacks[type];
|
||||
CloseBattlePyramidBag(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -822,8 +822,8 @@ static void RemoveUsedItem(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_81C5924();
|
||||
sub_81C59BC();
|
||||
UpdatePyramidBagList();
|
||||
UpdatePyramidBagCursorPos();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -910,7 +910,7 @@ static void ItemUseOnFieldCB_EscapeRope(u8 taskId)
|
||||
|
||||
bool8 CanUseDigOrEscapeRopeOnCurMap(void)
|
||||
{
|
||||
if (gMapHeader.flags & MAP_ALLOW_ESCAPING)
|
||||
if (gMapHeader.allowEscaping)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -943,7 +943,7 @@ void ItemUseInBattle_PokeBall(u8 taskId)
|
||||
if (!InBattlePyramid())
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
else
|
||||
CloseBattlePyramidBagAndSetCallback(taskId);
|
||||
CloseBattlePyramidBag(taskId);
|
||||
}
|
||||
else if (!InBattlePyramid())
|
||||
{
|
||||
@@ -960,7 +960,7 @@ static void Task_CloseStatIncreaseMessage(u8 taskId)
|
||||
if (!InBattlePyramid())
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
else
|
||||
CloseBattlePyramidBagAndSetCallback(taskId);
|
||||
CloseBattlePyramidBag(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1005,8 +1005,8 @@ static void ItemUseInBattle_ShowPartyMenu(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
gPyramidBagResources->callback2 = ChooseMonForInBattleItem;
|
||||
CloseBattlePyramidBagAndSetCallback(taskId);
|
||||
gPyramidBagMenu->exitCallback = ChooseMonForInBattleItem;
|
||||
CloseBattlePyramidBag(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1039,7 +1039,7 @@ void ItemUseInBattle_Escape(u8 taskId)
|
||||
if (!InBattlePyramid())
|
||||
DisplayItemMessage(taskId, 1, gStringVar4, Task_FadeAndCloseBagMenu);
|
||||
else
|
||||
DisplayItemMessageInBattlePyramid(taskId, gStringVar4, CloseBattlePyramidBagAndSetCallback);
|
||||
DisplayItemMessageInBattlePyramid(taskId, gStringVar4, CloseBattlePyramidBag);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+2
-2
@@ -880,8 +880,8 @@ void UpdateWirelessStatusIndicatorSprite(void)
|
||||
sprite->sFrameDelay++;
|
||||
}
|
||||
gMain.oamBuffer[125] = sWirelessStatusIndicatorOamData;
|
||||
gMain.oamBuffer[125].x = sprite->pos1.x + sprite->centerToCornerVecX;
|
||||
gMain.oamBuffer[125].y = sprite->pos1.y + sprite->centerToCornerVecY;
|
||||
gMain.oamBuffer[125].x = sprite->x + sprite->centerToCornerVecX;
|
||||
gMain.oamBuffer[125].y = sprite->y + sprite->centerToCornerVecY;
|
||||
gMain.oamBuffer[125].paletteNum = sprite->oam.paletteNum;
|
||||
gMain.oamBuffer[125].tileNum = sprite->sTileStart + sprite->anims[sprite->sCurrAnimNum][sprite->sFrameIdx].frame.imageValue;
|
||||
CpuCopy16(gMain.oamBuffer + 125, (struct OamData *)OAM + 125, sizeof(struct OamData));
|
||||
|
||||
+9
-9
@@ -1024,11 +1024,11 @@ static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite)
|
||||
{
|
||||
case 0:
|
||||
multiplier = sprite->tMultiplier;
|
||||
sprite->pos2.x = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
|
||||
sprite->x2 = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
|
||||
break;
|
||||
case 1:
|
||||
multiplier = sprite->tMultiplier;
|
||||
sprite->pos2.y = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
|
||||
sprite->y2 = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
|
||||
break;
|
||||
}
|
||||
sprite->tSinePos += sprite->tFrequency;
|
||||
@@ -1364,8 +1364,8 @@ static void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y)
|
||||
{
|
||||
struct RedOutlineCursor *data = (void*) gTasks[taskId].data;
|
||||
|
||||
gSprites[data->spriteId].pos1.x = x + 120;
|
||||
gSprites[data->spriteId].pos1.y = y + 120;
|
||||
gSprites[data->spriteId].x = x + 120;
|
||||
gSprites[data->spriteId].y = y + 120;
|
||||
}
|
||||
|
||||
static void ListMenuRemoveRedOutlineCursorObject(u8 taskId)
|
||||
@@ -1385,7 +1385,7 @@ static void ListMenuRemoveRedOutlineCursorObject(u8 taskId)
|
||||
|
||||
static void SpriteCallback_RedArrowCursor(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = gSineTable[(u8)(sprite->data[0])] / 64;
|
||||
sprite->x2 = gSineTable[(u8)(sprite->data[0])] / 64;
|
||||
sprite->data[0] += 8;
|
||||
}
|
||||
|
||||
@@ -1429,8 +1429,8 @@ static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor)
|
||||
spriteTemplate.paletteTag = cursor->palTag;
|
||||
|
||||
data->spriteId = CreateSprite(&spriteTemplate, cursor->left, cursor->top, 0);
|
||||
gSprites[data->spriteId].pos2.x = 8;
|
||||
gSprites[data->spriteId].pos2.y = 8;
|
||||
gSprites[data->spriteId].x2 = 8;
|
||||
gSprites[data->spriteId].y2 = 8;
|
||||
|
||||
if (cursor->palTag == SPRITE_INVALID_TAG)
|
||||
{
|
||||
@@ -1444,8 +1444,8 @@ static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y)
|
||||
{
|
||||
struct RedArrowCursor *data = (void*) gTasks[taskId].data;
|
||||
|
||||
gSprites[data->spriteId].pos1.x = x;
|
||||
gSprites[data->spriteId].pos1.y = y;
|
||||
gSprites[data->spriteId].x = x;
|
||||
gSprites[data->spriteId].y = y;
|
||||
}
|
||||
|
||||
static void ListMenuRemoveRedArrowCursorObject(u8 taskId)
|
||||
|
||||
@@ -1525,6 +1525,10 @@ void ply_xwave(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
|
||||
{
|
||||
u32 wav;
|
||||
|
||||
#ifdef UBFIX
|
||||
wav = 0;
|
||||
#endif
|
||||
|
||||
READ_XCMD_BYTE(wav, 0) // UB: uninitialized variable
|
||||
READ_XCMD_BYTE(wav, 1)
|
||||
READ_XCMD_BYTE(wav, 2)
|
||||
@@ -1592,6 +1596,10 @@ void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tra
|
||||
{
|
||||
u32 unk;
|
||||
|
||||
#ifdef UBFIX
|
||||
unk = 0;
|
||||
#endif
|
||||
|
||||
READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable
|
||||
READ_XCMD_BYTE(unk, 1)
|
||||
|
||||
@@ -1611,6 +1619,7 @@ void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tra
|
||||
void ply_xcmd_0D(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
|
||||
{
|
||||
u32 unk;
|
||||
|
||||
#ifdef UBFIX
|
||||
unk = 0;
|
||||
#endif
|
||||
@@ -1703,14 +1712,14 @@ void SetPokemonCryProgress(u32 val)
|
||||
gPokemonCrySong.unkCmd0DParam = val;
|
||||
}
|
||||
|
||||
int IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo)
|
||||
bool32 IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo)
|
||||
{
|
||||
struct MusicPlayerTrack *track = mplayInfo->tracks;
|
||||
|
||||
if (track->chan && track->chan->track == track)
|
||||
return 1;
|
||||
return TRUE;
|
||||
else
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void SetPokemonCryChorus(s8 val)
|
||||
|
||||
+29
-34
@@ -1306,8 +1306,8 @@ static void Task_NewGameBirchSpeech_WaitToShowBirch(u8 taskId)
|
||||
else
|
||||
{
|
||||
spriteId = gTasks[taskId].tBirchSpriteId;
|
||||
gSprites[spriteId].pos1.x = 136;
|
||||
gSprites[spriteId].pos1.y = 60;
|
||||
gSprites[spriteId].x = 136;
|
||||
gSprites[spriteId].y = 60;
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 10);
|
||||
@@ -1369,8 +1369,8 @@ static void Task_NewGameBirchSpeechSub_InitPokeBall(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[sBirchSpeechMainTaskId].tLotadSpriteId;
|
||||
|
||||
gSprites[spriteId].pos1.x = 100;
|
||||
gSprites[spriteId].pos1.y = 75;
|
||||
gSprites[spriteId].x = 100;
|
||||
gSprites[spriteId].y = 75;
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gSprites[spriteId].data[0] = 0;
|
||||
|
||||
@@ -1387,11 +1387,9 @@ static void Task_NewGameBirchSpeechSub_WaitForLotad(u8 taskId)
|
||||
switch (tState)
|
||||
{
|
||||
case 0:
|
||||
if (sprite->callback == SpriteCallbackDummy)
|
||||
{
|
||||
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
goto incrementStateAndTimer;
|
||||
}
|
||||
if (sprite->callback != SpriteCallbackDummy)
|
||||
return;
|
||||
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
break;
|
||||
case 1:
|
||||
if (gTasks[sBirchSpeechMainTaskId].tTimer >= 96)
|
||||
@@ -1400,14 +1398,11 @@ static void Task_NewGameBirchSpeechSub_WaitForLotad(u8 taskId)
|
||||
if (gTasks[sBirchSpeechMainTaskId].tTimer < 0x4000)
|
||||
gTasks[sBirchSpeechMainTaskId].tTimer++;
|
||||
}
|
||||
break;
|
||||
incrementStateAndTimer:
|
||||
default:
|
||||
tState++;
|
||||
if (gTasks[sBirchSpeechMainTaskId].tTimer < 0x4000)
|
||||
gTasks[sBirchSpeechMainTaskId].tTimer++;
|
||||
break;
|
||||
return;
|
||||
}
|
||||
tState++;
|
||||
if (gTasks[sBirchSpeechMainTaskId].tTimer < 0x4000)
|
||||
gTasks[sBirchSpeechMainTaskId].tTimer++;
|
||||
}
|
||||
|
||||
#undef tState
|
||||
@@ -1464,8 +1459,8 @@ static void Task_NewGameBirchSpeech_StartPlayerFadeIn(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[taskId].tBrendanSpriteId;
|
||||
|
||||
gSprites[spriteId].pos1.x = 180;
|
||||
gSprites[spriteId].pos1.y = 60;
|
||||
gSprites[spriteId].x = 180;
|
||||
gSprites[spriteId].y = 60;
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
gTasks[taskId].tPlayerSpriteId = spriteId;
|
||||
@@ -1538,7 +1533,7 @@ static void Task_NewGameBirchSpeech_SlideOutOldGenderSprite(u8 taskId)
|
||||
u8 spriteId = gTasks[taskId].tPlayerSpriteId;
|
||||
if (gTasks[taskId].tIsDoneFadingSprites == 0)
|
||||
{
|
||||
gSprites[spriteId].pos1.x += 4;
|
||||
gSprites[spriteId].x += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1547,8 +1542,8 @@ static void Task_NewGameBirchSpeech_SlideOutOldGenderSprite(u8 taskId)
|
||||
spriteId = gTasks[taskId].tMaySpriteId;
|
||||
else
|
||||
spriteId = gTasks[taskId].tBrendanSpriteId;
|
||||
gSprites[spriteId].pos1.x = DISPLAY_WIDTH;
|
||||
gSprites[spriteId].pos1.y = 60;
|
||||
gSprites[spriteId].x = DISPLAY_WIDTH;
|
||||
gSprites[spriteId].y = 60;
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gTasks[taskId].tPlayerSpriteId = spriteId;
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
@@ -1561,13 +1556,13 @@ static void Task_NewGameBirchSpeech_SlideInNewGenderSprite(u8 taskId)
|
||||
{
|
||||
u8 spriteId = gTasks[taskId].tPlayerSpriteId;
|
||||
|
||||
if (gSprites[spriteId].pos1.x > 180)
|
||||
if (gSprites[spriteId].x > 180)
|
||||
{
|
||||
gSprites[spriteId].pos1.x -= 4;
|
||||
gSprites[spriteId].x -= 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[spriteId].pos1.x = 180;
|
||||
gSprites[spriteId].x = 180;
|
||||
if (gTasks[taskId].tIsDoneFadingSprites)
|
||||
{
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
|
||||
@@ -1668,13 +1663,13 @@ static void Task_NewGameBirchSpeech_ReshowBirchLotad(u8 taskId)
|
||||
gSprites[gTasks[taskId].tBrendanSpriteId].invisible = TRUE;
|
||||
gSprites[gTasks[taskId].tMaySpriteId].invisible = TRUE;
|
||||
spriteId = gTasks[taskId].tBirchSpriteId;
|
||||
gSprites[spriteId].pos1.x = 136;
|
||||
gSprites[spriteId].pos1.y = 60;
|
||||
gSprites[spriteId].x = 136;
|
||||
gSprites[spriteId].y = 60;
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
spriteId = gTasks[taskId].tLotadSpriteId;
|
||||
gSprites[spriteId].pos1.x = 100;
|
||||
gSprites[spriteId].pos1.y = 75;
|
||||
gSprites[spriteId].x = 100;
|
||||
gSprites[spriteId].y = 75;
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 2);
|
||||
@@ -1721,8 +1716,8 @@ static void Task_NewGameBirchSpeech_AreYouReady(u8 taskId)
|
||||
spriteId = gTasks[taskId].tMaySpriteId;
|
||||
else
|
||||
spriteId = gTasks[taskId].tBrendanSpriteId;
|
||||
gSprites[spriteId].pos1.x = 120;
|
||||
gSprites[spriteId].pos1.y = 60;
|
||||
gSprites[spriteId].x = 120;
|
||||
gSprites[spriteId].y = 60;
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
gTasks[taskId].tPlayerSpriteId = spriteId;
|
||||
@@ -1838,8 +1833,8 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void)
|
||||
gTasks[taskId].tPlayerGender = MALE;
|
||||
spriteId = gTasks[taskId].tBrendanSpriteId;
|
||||
}
|
||||
gSprites[spriteId].pos1.x = 180;
|
||||
gSprites[spriteId].pos1.y = 60;
|
||||
gSprites[spriteId].x = 180;
|
||||
gSprites[spriteId].y = 60;
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gTasks[taskId].tPlayerSpriteId = spriteId;
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, -60);
|
||||
@@ -1874,8 +1869,8 @@ static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite *sprite)
|
||||
{
|
||||
u32 y;
|
||||
|
||||
y = (sprite->pos1.y << 16) + sprite->data[0] + 0xC000;
|
||||
sprite->pos1.y = y >> 16;
|
||||
y = (sprite->y << 16) + sprite->data[0] + 0xC000;
|
||||
sprite->y = y >> 16;
|
||||
sprite->data[0] = y;
|
||||
}
|
||||
|
||||
|
||||
+25
-27
@@ -680,45 +680,43 @@ void ScrSpecial_SetMauvilleOldManObjEventGfx(void)
|
||||
|
||||
// Language fixers?
|
||||
|
||||
void sub_8120B70(union OldMan * oldMan)
|
||||
void SanitizeMauvilleOldManForRuby(union OldMan * oldMan)
|
||||
{
|
||||
s32 i;
|
||||
u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
|
||||
switch (oldMan->common.id)
|
||||
{
|
||||
case MAUVILLE_MAN_TRADER:
|
||||
case MAUVILLE_MAN_TRADER:
|
||||
{
|
||||
struct MauvilleOldManTrader * trader = &oldMan->trader;
|
||||
for (i = 0; i < NUM_TRADER_ITEMS; i++)
|
||||
{
|
||||
struct MauvilleOldManTrader * trader = &oldMan->trader;
|
||||
for (i = 0; i < NUM_TRADER_ITEMS; i++)
|
||||
if (trader->language[i] == LANGUAGE_JAPANESE)
|
||||
ConvertInternationalString(trader->playerNames[i], LANGUAGE_JAPANESE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MAUVILLE_MAN_STORYTELLER:
|
||||
{
|
||||
struct MauvilleManStoryteller * storyteller = &oldMan->storyteller;
|
||||
for (i = 0; i < NUM_STORYTELLER_TALES; i++)
|
||||
{
|
||||
if (storyteller->gameStatIDs[i] != 0)
|
||||
{
|
||||
if (trader->language[i] == LANGUAGE_JAPANESE)
|
||||
memcpy(playerName, storyteller->trainerNames[i], PLAYER_NAME_LENGTH);
|
||||
playerName[PLAYER_NAME_LENGTH] = EOS;
|
||||
if (IsStringJapanese(playerName))
|
||||
{
|
||||
ConvertInternationalString(trader->playerNames[i], LANGUAGE_JAPANESE);
|
||||
memset(playerName, CHAR_SPACE, PLAYER_NAME_LENGTH + 1);
|
||||
StringCopy(playerName, gText_Friend);
|
||||
memcpy(storyteller->trainerNames[i], playerName, PLAYER_NAME_LENGTH);
|
||||
storyteller->language[i] = GAME_LANGUAGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MAUVILLE_MAN_STORYTELLER:
|
||||
{
|
||||
struct MauvilleManStoryteller * storyteller = &oldMan->storyteller;
|
||||
for (i = 0; i < NUM_STORYTELLER_TALES; i++)
|
||||
{
|
||||
if (storyteller->gameStatIDs[i] != 0)
|
||||
{
|
||||
memcpy(playerName, storyteller->trainerNames[i], PLAYER_NAME_LENGTH);
|
||||
playerName[PLAYER_NAME_LENGTH] = EOS;
|
||||
if (IsStringJapanese(playerName))
|
||||
{
|
||||
memset(playerName, CHAR_SPACE, PLAYER_NAME_LENGTH + 1);
|
||||
StringCopy(playerName, gText_Friend);
|
||||
memcpy(storyteller->trainerNames[i], playerName, PLAYER_NAME_LENGTH);
|
||||
storyteller->language[i] = GAME_LANGUAGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user